feat(web): 申请单预览编辑器增强与报销流程细节适配

- useApplicationPreviewEditor 扩展字段编辑与校验,useTravelReimbursementApplicationPreviewDateEditor 微调日期处理
- travelReimbursementExpenseQueryModel/reimbursements 服务/expenseApplicationPreview 适配工号/邮箱字段与关联动作
- useWorkbenchAiApplicationPreviewFlow/usePersonalWorkbenchAiMode 接入关联门控后的预览流转
- TravelReimbursementCreateView 调整入口,TravelReimbursementMessageItem 适配
- 新增 expense-application-fast-preview 测试,更新 attachment-association-confirmation、review-drawer-switch 测试
This commit is contained in:
caoxiaozhu
2026-06-22 15:56:06 +08:00
parent ba444a514f
commit ded8b39ccb
12 changed files with 468 additions and 43 deletions

View File

@@ -1,5 +1,9 @@
import { watch } from 'vue'
function isApplicationPreviewDateField(fieldKey = '') {
return ['time', 'time_return'].includes(String(fieldKey || '').trim())
}
export function useTravelReimbursementApplicationPreviewDateEditor({
applicationPreviewEditor,
cancelApplicationPreviewEditor,
@@ -17,7 +21,7 @@ export function useTravelReimbursementApplicationPreviewDateEditor({
}) {
function applyLinkedApplicationPreviewDateSelection(selection) {
const editor = applicationPreviewEditor.value
if (editor.fieldKey !== 'time' || !editor.messageId) {
if (!isApplicationPreviewDateField(editor.fieldKey) || !editor.messageId) {
return false
}
@@ -51,13 +55,13 @@ export function useTravelReimbursementApplicationPreviewDateEditor({
function openApplicationPreviewEditorFromUi(message, fieldKey, value) {
openApplicationPreviewEditor(message, fieldKey, value)
if (fieldKey === 'time' && isApplicationPreviewEditing(message, 'time')) {
if (isApplicationPreviewDateField(fieldKey) && isApplicationPreviewEditing(message, fieldKey)) {
syncComposerDateFromApplicationEditor()
}
}
watch(composerDatePickerOpen, (open, previousOpen) => {
if (!open && previousOpen && applicationPreviewEditor.value.fieldKey === 'time') {
if (!open && previousOpen && isApplicationPreviewDateField(applicationPreviewEditor.value.fieldKey)) {
cancelApplicationPreviewEditor()
}
})