From 8d7bf383f40ca6874e44e0011ad5eab82893a5e3 Mon Sep 17 00:00:00 2001 From: wuxw <928255095@qq.com> Date: Mon, 27 Oct 2025 13:29:01 +0800 Subject: [PATCH] v1.9 优化工作单相关bug --- src/api/oa/doWorkApi.js | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/upload/uploadFile.vue | 5 +++++ src/router/oaRouter.js | 15 ++++++++++----- src/views/oa/addWorkList.vue | 3 ++- src/views/oa/copyWorkList.vue | 4 ++-- src/views/oa/doCopyWork.vue | 359 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/oa/doWorkLang.js | 104 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/oa/editWorkList.vue | 21 ++++++++++++--------- src/views/oa/workTaskDetailList.vue | 5 +++-- 9 files changed, 549 insertions(+), 19 deletions(-) create mode 100644 src/views/oa/doCopyWork.vue diff --git a/src/api/oa/doWorkApi.js b/src/api/oa/doWorkApi.js index e724395..a91aebf 100644 --- a/src/api/oa/doWorkApi.js +++ b/src/api/oa/doWorkApi.js @@ -17,4 +17,56 @@ export function queryTaskWork(params) { reject(error) }) }) +} + +// 查询工单详情 +export function getWorkInfo(params) { + return new Promise((resolve, reject) => { + request({ + url: '/work.listWorkPool', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res.data) + }).catch(error => { + reject(error) + }) + }) +} + +// 查询工单任务明细 +export function getWorkTaskItems(params) { + return new Promise((resolve, reject) => { + request({ + url: '/task.listWorkTaskItem', + method: 'get', + params + }).then(response => { + const res = response.data + resolve(res.data) + }).catch(error => { + reject(error) + }) + }) +} + +// 完成抄送工单 +export function finishWorkCopy(data) { + return new Promise((resolve, reject) => { + request({ + url: '/work.finishWorkCopy', + method: 'post', + data + }).then(response => { + const res = response.data + if (res.code === 0) { + resolve(res) + } else { + reject(new Error(res.msg || '操作失败')) + } + }).catch(error => { + reject(error) + }) + }) } \ No newline at end of file diff --git a/src/components/upload/uploadFile.vue b/src/components/upload/uploadFile.vue index 33cd9cf..17780bd 100644 --- a/src/components/upload/uploadFile.vue +++ b/src/components/upload/uploadFile.vue @@ -57,6 +57,11 @@ export default { this.fileName = file.name this.doUpload(file.raw) }, + setFilePath(fileName) { + this.fileName = fileName + this.realFileName = fileName + this.progress = 100 + }, async doUpload(file) { const formData = new FormData() formData.append('uploadFile', file) diff --git a/src/router/oaRouter.js b/src/router/oaRouter.js index be2e821..d02ce0b 100644 --- a/src/router/oaRouter.js +++ b/src/router/oaRouter.js @@ -269,9 +269,14 @@ export default [ name:'/pages/property/visitFinish', component: () => import('@/views/oa/visitFinishList.vue') }, - { - path:'/pages/oa/workTaskDetail', - name:'/pages/oa/workTaskDetail', - component: () => import('@/views/oa/workTaskDetailList.vue') - }, + { + path:'/pages/oa/workTaskDetail', + name:'/pages/oa/workTaskDetail', + component: () => import('@/views/oa/workTaskDetailList.vue') + }, + { + path: '/views/oa/doCopyWork', + name: '/views/oa/doCopyWork', + component: () => import('@/views/oa/doCopyWork.vue') + } ] \ No newline at end of file diff --git a/src/views/oa/addWorkList.vue b/src/views/oa/addWorkList.vue index 6f1e6b8..acf7d5e 100644 --- a/src/views/oa/addWorkList.vue +++ b/src/views/oa/addWorkList.vue @@ -65,7 +65,7 @@ - + @@ -328,6 +328,7 @@ export default { } }, notifyFile(data) { + this.addWorkInfo.pathUrls = [] this.addWorkInfo.pathUrls.push(data.realFileName) }, goBack() { diff --git a/src/views/oa/copyWorkList.vue b/src/views/oa/copyWorkList.vue index a50e91e..22e6469 100644 --- a/src/views/oa/copyWorkList.vue +++ b/src/views/oa/copyWorkList.vue @@ -293,10 +293,10 @@ export default { this._listCopyWorks(this.page.current, this.page.size) }, _toWorkDetailPage(work) { - this.$router.push(`/pages/oa/workDetail?workId=${work.workId}`) + this.$router.push(`/views/oa/workDetail?workId=${work.workId}`) }, _openCopyWorkModel(work) { - this.$router.push(`/pages/oa/doCopyWork?workId=${work.workId}©Id=${work.copyId}`) + this.$router.push(`/views/oa/doCopyWork?workId=${work.workId}©Id=${work.copyId}`) }, async _auditSubmit() { try { diff --git a/src/views/oa/doCopyWork.vue b/src/views/oa/doCopyWork.vue new file mode 100644 index 0000000..479d8c8 --- /dev/null +++ b/src/views/oa/doCopyWork.vue @@ -0,0 +1,359 @@ + + + + + + diff --git a/src/views/oa/doWorkLang.js b/src/views/oa/doWorkLang.js index ad550f3..55630df 100644 --- a/src/views/oa/doWorkLang.js +++ b/src/views/oa/doWorkLang.js @@ -33,6 +33,58 @@ export const messages = { }, fetchError: 'Failed to fetch work orders' }, + doCopyWork: { + detail: { + title: 'Work Order Details', + workId: 'Work Order ID', + workName: 'Work Order Name', + typeName: 'Type Name', + workCycle: 'Type', + startTime: 'Start Time', + endTime: 'End Time', + createUserName: 'Creator', + curStaffName: 'Processor', + curCopyName: 'CC', + stateName: 'Status', + createTime: 'Create Time', + attachment: 'Attachment', + download: 'Download' + }, + table: { + title: 'Work Task Items', + select: 'Select', + content: 'Work Order Content', + remark: 'Processing Opinion', + state: 'Status', + staffName: 'Processor', + finishTime: 'Completion Time' + }, + audit: { + title: 'CC Processing', + deductionMoney: 'Deduction Amount', + deductionMoneyPlaceholder: 'Required, please enter deduction amount', + deductionReason: 'Explanation', + deductionReasonPlaceholder: 'Required, please enter explanation' + }, + state: { + pending: 'Pending', + processed: 'Processed' + }, + workCycle: { + once: 'One-time Work Order', + periodic: 'Periodic Work Order' + }, + message: { + noWorkId: 'Work order ID is missing', + loadWorkInfoError: 'Failed to load work order information', + loadTaskItemsError: 'Failed to load task items', + selectItem: 'Please select a processed task item', + inputReason: 'Please enter an explanation', + inputMoney: 'Please enter deduction amount', + submitSuccess: 'Submitted successfully', + submitError: 'Submission failed' + } + } }, zh: { doWork: { @@ -68,5 +120,57 @@ export const messages = { }, fetchError: '获取工单列表失败' }, + doCopyWork: { + detail: { + title: '任务单详情', + workId: '工单编号', + workName: '工单名称', + typeName: '类型名称', + workCycle: '标识', + startTime: '开始时间', + endTime: '结束时间', + createUserName: '发起人', + curStaffName: '处理人', + curCopyName: '抄送人', + stateName: '状态', + createTime: '创建时间', + attachment: '附件', + download: '下载' + }, + table: { + title: '工作单内容', + select: '选择', + content: '工作单内容', + remark: '处理意见', + state: '状态', + staffName: '处理人', + finishTime: '完成时间' + }, + audit: { + title: '抄送办理', + deductionMoney: '扣款金额', + deductionMoneyPlaceholder: '必填,请填写扣款金额', + deductionReason: '说明', + deductionReasonPlaceholder: '必填,请填写说明' + }, + state: { + pending: '待处理', + processed: '已处理' + }, + workCycle: { + once: '一次性工单', + periodic: '周期性工单' + }, + message: { + noWorkId: '缺少工单编号', + loadWorkInfoError: '加载工单信息失败', + loadTaskItemsError: '加载任务明细失败', + selectItem: '请选择一个已处理的任务明细', + inputReason: '请输入说明', + inputMoney: '请输入扣款金额', + submitSuccess: '提交成功', + submitError: '提交失败' + } + } } } \ No newline at end of file diff --git a/src/views/oa/editWorkList.vue b/src/views/oa/editWorkList.vue index 8e77c94..ce66481 100644 --- a/src/views/oa/editWorkList.vue +++ b/src/views/oa/editWorkList.vue @@ -65,7 +65,7 @@ - + @@ -336,13 +336,15 @@ export default { this.editWorkInfo.endTime = dateFormat(new Date(data[0].endTime)) } // 处理内容 - this.editWorkInfo.contents = data[0].contents.map(c => ({ - id: getUuid(), - content: c.content - })) || [{ - id: getUuid(), - content: '' - }] + this.editWorkInfo.contents.forEach(c => { + c.id = getUuid() + }) + if (data[0].pathUrls && data[0].pathUrls.length > 0) { + this.editWorkInfo.pathUrls = data[0].pathUrls + setTimeout(() => { + this.$refs.uploadFile.setFilePath(data[0].pathUrls[0]) + }, 500) + } } }, async _loadTaskStaff() { @@ -372,7 +374,7 @@ export default { const { data } = await listWorkCycle(params) if (data && data.length > 0) { this.editWorkInfo.period = data[0].period - this.editWorkInfo.workCycle = '2002' // 设置为周期工作 + this.editWorkInfo.workCycle = data[0].workCycle // 设置为周期工作 this.editWorkInfo.hours = data[0].hours || '24' // 处理月份、日期和工作日 @@ -405,6 +407,7 @@ export default { } }, notifyFile(data) { + this.editWorkInfo.pathUrls = [] this.editWorkInfo.pathUrls.push(data.realFileName) }, goBack() { diff --git a/src/views/oa/workTaskDetailList.vue b/src/views/oa/workTaskDetailList.vue index 72d1503..201ffa5 100644 --- a/src/views/oa/workTaskDetailList.vue +++ b/src/views/oa/workTaskDetailList.vue @@ -273,7 +273,7 @@ export default { auditMessage: this.$t('workTaskDetail.processed'), staffId: '', staffName: '', - pathUrl: '', + pathUrls: '', itemId: '', } } @@ -361,7 +361,8 @@ export default { this.workTaskDetailInfo.audit.staffName = staff.staffName }, handleNotifyFile(file) { - this.workTaskDetailInfo.audit.pathUrl = file.realFileName + this.workTaskDetailInfo.audit.pathUrls = [] + this.workTaskDetailInfo.audit.pathUrls.push(file.realFileName) }, async auditSubmit() { try { -- libgit2 0.21.4