diff --git a/src/api/mold/ticketManagement/index.ts b/src/api/mold/ticketManagement/index.ts index 11370a49..e85bc695 100644 --- a/src/api/mold/ticketManagement/index.ts +++ b/src/api/mold/ticketManagement/index.ts @@ -6,11 +6,13 @@ export interface TicketManagementVO { planId?: string planNo?: string deviceName?: string + moldName?: string planType?: string | number configName?: string jobStatus?: string | number jobResult?: string jobUser?: string + operatorName?: string taskTime?: string taskEndTime?: string cancelReason?: string diff --git a/src/locales/en.ts b/src/locales/en.ts index d8b1bc93..bf2d5f15 100644 --- a/src/locales/en.ts +++ b/src/locales/en.ts @@ -2856,6 +2856,9 @@ edit: 'Edit', approve: 'Approve', unapprove: 'Unapprove', + submit: 'Submit', + auditApprove: 'Pass', + auditReject: 'Reject', delete: 'Delete', export: 'Export', add: 'Add', @@ -2898,6 +2901,12 @@ unapproveConfirm: 'Confirm unapprove this stock in order?', approveSuccess: 'Approve successful', unapproveSuccess: 'Unapprove successful', + submitConfirm: 'Confirm submit this stock in order?', + submitSuccess: 'Submit successful', + auditApproveConfirm: 'Confirm pass this stock in order?', + auditRejectConfirm: 'Confirm reject this stock in order?', + auditApproveSuccess: 'Pass successful', + auditRejectSuccess: 'Reject successful', subMoldList: 'Sub Mold List', moldGroupList: 'Mold Group & Sub Mold List', moldGroupListTitle: 'Stock In Mold Group List' @@ -2918,6 +2927,9 @@ edit: 'Edit', approve: 'Approve', unapprove: 'Unapprove', + submit: 'Submit', + auditApprove: 'Pass', + auditReject: 'Reject', delete: 'Delete', export: 'Export', add: 'Add', @@ -2956,6 +2968,12 @@ validatorItemWarehouseRequired: 'Warehouse can not be empty', validatorItemMoldRequired: 'Mold can not be empty', validatorItemCountRequired: 'Quantity can not be empty', + submitConfirm: 'Confirm submit this stock out order?', + submitSuccess: 'Submit successful', + auditApproveConfirm: 'Confirm pass this stock out order?', + auditRejectConfirm: 'Confirm reject this stock out order?', + auditApproveSuccess: 'Pass successful', + auditRejectSuccess: 'Reject successful', moldGroupListTitle: 'Stock Out Mold Group List' }, @@ -3236,6 +3254,7 @@ MoldWorkOrderInquiry: { moduleName: 'Work Order Inquiry', + basicInfo: 'Basic Information', planNo: 'Order No', planType: 'Type', planTypeInspect: 'Inspection', diff --git a/src/locales/zh-CN.ts b/src/locales/zh-CN.ts index ab128d65..4ae28bfc 100644 --- a/src/locales/zh-CN.ts +++ b/src/locales/zh-CN.ts @@ -2342,6 +2342,9 @@ edit: '编辑', approve: '审批', unapprove: '反审批', + submit: '提交', + auditApprove: '通过', + auditReject: '不通过', delete: '删除', export: '导出', add: '新增', @@ -2384,6 +2387,12 @@ unapproveConfirm: '确定反审批该入库单吗?', approveSuccess: '审批成功', unapproveSuccess: '反审批成功', + submitConfirm: '确定提交该入库单吗?', + submitSuccess: '提交成功', + auditApproveConfirm: '确定通过该入库单吗?', + auditRejectConfirm: '确定不通过该入库单吗?', + auditApproveSuccess: '通过成功', + auditRejectSuccess: '不通过成功', subMoldList: '子模具列表', moldGroupList: '模具组及子模具列表', moldGroupListTitle: '入库模具组清单' @@ -2404,6 +2413,9 @@ edit: '编辑', approve: '审批', unapprove: '反审批', + submit: '提交', + auditApprove: '通过', + auditReject: '不通过', delete: '删除', export: '导出', add: '新增', @@ -2442,6 +2454,12 @@ validatorItemWarehouseRequired: '仓库不能为空', validatorItemMoldRequired: '模具不能为空', validatorItemCountRequired: '数量不能为空', + submitConfirm: '确定提交该出库单吗?', + submitSuccess: '提交成功', + auditApproveConfirm: '确定通过该出库单吗?', + auditRejectConfirm: '确定不通过该出库单吗?', + auditApproveSuccess: '通过成功', + auditRejectSuccess: '不通过成功', moldGroupListTitle: '出库模具组清单' }, @@ -2722,6 +2740,7 @@ MoldWorkOrderInquiry: { moduleName: '工单查询', + basicInfo: '基本信息', planNo: '单号', planType: '类型', planTypeInspect: '点检', diff --git a/src/views/erp/mold/MoldBrandForm.vue b/src/views/erp/mold/MoldBrandForm.vue index 25e0adfe..6a860c54 100644 --- a/src/views/erp/mold/MoldBrandForm.vue +++ b/src/views/erp/mold/MoldBrandForm.vue @@ -63,7 +63,7 @@ - + @@ -253,6 +253,7 @@ const formData = ref({ const manualFileTypes = ['pdf', 'doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'txt'] const videoFileTypes = ['mp4', 'avi', 'mov', 'wmv', 'flv', 'mkv', 'webm'] +const drawingFileTypes = ['dwg', 'dxf', 'step', 'stp', 'igs', 'iges'] const splitAssetValue = (value: unknown): string[] => { if (!value) return [] @@ -277,9 +278,23 @@ const splitAssetValue = (value: unknown): string[] => { const normalizeAssetString = (value: unknown) => splitAssetValue(value).join(',') +// 图纸字段专用处理函数,支持 JSON 格式 +const parseDrawingValue = (value: unknown): string => { + if (!value) return '' + if (typeof value === 'string') { + const trimmed = value.trim() + if (trimmed.startsWith('{') || trimmed.startsWith('[')) { + return trimmed + } + // 旧格式,直接返回 + return trimmed + } + return JSON.stringify(value) +} + const drawingsValue = computed({ - get: () => splitAssetValue((formData.value as any).drawings), - set: (value: any) => { ;(formData.value as any).drawings = normalizeAssetString(value) } + get: () => parseDrawingValue((formData.value as any).drawings), + set: (value: any) => { (formData.value as any).drawings = parseDrawingValue(value) } }) const operationManualValue = computed({ @@ -455,7 +470,7 @@ const submitForm = async () => { const payload: MoldBrandVO = { ...formData.value, productIds: Array.isArray(formData.value.productIds) ? formData.value.productIds : [], - drawings: normalizeAssetString((formData.value as any).drawings), + drawings: (formData.value as any).drawings, operationManual: normalizeAssetString((formData.value as any).operationManual), operationVideo: normalizeAssetString((formData.value as any).operationVideo), isEnable: Boolean(formData.value.isEnable) diff --git a/src/views/erp/mold/detail/brand.vue b/src/views/erp/mold/detail/brand.vue index 0991d41d..5c3510c4 100644 --- a/src/views/erp/mold/detail/brand.vue +++ b/src/views/erp/mold/detail/brand.vue @@ -305,15 +305,11 @@ - + @@ -469,6 +465,33 @@ const getAssetName = (url: string) => { } const parseAssetRows = (value: any) => { + if (!value) return [] + + const text = String(value).trim() + if (text.startsWith('{') || text.startsWith('[')) { + try { + const parsed = JSON.parse(text) + if (Array.isArray(parsed)) { + return parsed.map((item) => { + if (item && typeof item === 'object' && item.fileUrl) { + return { + url: String(item.fileUrl), + name: item.fileName ? String(item.fileName) : getAssetName(item.fileUrl) + } + } + return null + }).filter(Boolean) + } + if (parsed && typeof parsed === 'object' && parsed.fileUrl) { + return [{ + url: String(parsed.fileUrl), + name: parsed.fileName ? String(parsed.fileName) : getAssetName(parsed.fileUrl) + }] + } + } catch {} + } + + // 旧格式处理 return parseAssetUrls(value).map((url) => ({ url, name: getAssetName(url) diff --git a/src/views/erp/stock/out/StockOutForm.vue b/src/views/erp/stock/out/StockOutForm.vue index 060ab113..a87d67b8 100644 --- a/src/views/erp/stock/out/StockOutForm.vue +++ b/src/views/erp/stock/out/StockOutForm.vue @@ -192,7 +192,7 @@ const formRules = reactive({ const disabled = computed(() => formType.value === 'detail') const formRef = ref() // 表单 Ref const userList = ref([]) // 经办人列表 -const WAREHOUSE_DOCUMENT_TYPES = 'warehouse_document_types' +const WAREHOUSE_DOCUMENT_TYPES = 'warehouse_document_out_types' const options = computed(() => getStrDictOptions(WAREHOUSE_DOCUMENT_TYPES)) watch(options, (items) => { if (formType.value === 'create' && !formData.value.outType && items.length) { diff --git a/src/views/erp/stock/out/index.vue b/src/views/erp/stock/out/index.vue index 96650d7f..cdd0ca71 100644 --- a/src/views/erp/stock/out/index.vue +++ b/src/views/erp/stock/out/index.vue @@ -359,7 +359,7 @@ const queryParams = reactive({ outType: undefined, creator: undefined }) -const WAREHOUSE_DOCUMENT_TYPES = 'warehouse_document_types' +const WAREHOUSE_DOCUMENT_TYPES = 'warehouse_document_out_types' const stockOutTypeOptions = computed(() => getStrDictOptions(WAREHOUSE_DOCUMENT_TYPES)) const outTypeToInfoKey = (outType: string) => { const map: Record = { diff --git a/src/views/mes/moldget/index.vue b/src/views/mes/moldget/index.vue index ef523c16..c57dee35 100644 --- a/src/views/mes/moldget/index.vue +++ b/src/views/mes/moldget/index.vue @@ -206,7 +206,7 @@ - + - +