From 51ca35a2cf1c8cd83ddde68a11e65407285fa7a7 Mon Sep 17 00:00:00 2001 From: "liang.chao" <1360241448@qq.com> Date: Fri, 28 Nov 2025 13:15:52 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/filesTransfer/issue.js | 5 +- src/views/fileTransfer/issue.vue | 106 +++++++++++++++++++++++++++-- src/views/fileTransfer/setting.vue | 2 +- 3 files changed, 105 insertions(+), 8 deletions(-) diff --git a/src/api/filesTransfer/issue.js b/src/api/filesTransfer/issue.js index 9d17e2d3..af63162a 100644 --- a/src/api/filesTransfer/issue.js +++ b/src/api/filesTransfer/issue.js @@ -28,7 +28,10 @@ export function editTransferProblemApi(data) { } // 删除移交问题 -export function delTransferProblemApi(data) { +export function delTransferProblemApi(id) { + const data = { + id: id + }; return request({ url: '/blade-system/transferProblem/delTransferProblem', method: 'POST', diff --git a/src/views/fileTransfer/issue.vue b/src/views/fileTransfer/issue.vue index 4098902a..3dbd6ce1 100644 --- a/src/views/fileTransfer/issue.vue +++ b/src/views/fileTransfer/issue.vue @@ -20,6 +20,9 @@ @refresh-change="refreshChange" @on-load="onLoad" > + @@ -33,6 +36,7 @@ import { } from '@/api/filesTransfer/issue'; import { mapGetters } from 'vuex'; import website from '@/config/website'; +import { getDeptSelectApi } from '@/api/select'; export default { data() { @@ -63,19 +67,67 @@ export default { { label: '项目名称', prop: 'proName', + editDisplay: false, + addDisplay: false, + }, + { + label: '项目', + prop: 'proId', + type: 'select', + search: false, + hide: true, + dicUrl: '/blade-system/transferApply/getProSelect', + dicMethod: 'post', + props: { label: 'proName', value: 'id' }, + rules: [{ required: true, message: '请选择项目', trigger: 'change' }], + // 👇 新增 change 回调 + change: ({ value, column, form }) => { + const selected = column.dicData?.find(item => item.id === value); + form.proName = selected ? selected.name : ''; + } }, { label: '单项工程名称', prop: 'singleProName', search: true, + editDisplay: false, + addDisplay: false, }, { label: '移交时间', prop: 'transferTime', + type: 'date', + format: 'YYYY-MM-DD', + valueFormat: 'YYYY-MM-DD', + rules: [{ required: true, message: '请选择移交时间', trigger: 'blur' }], + }, + { + label: '接收单位', + prop: 'deptId', + type: 'tree', + search: true, + dicData: [], + props: { label: 'label', value: 'id', children: 'children' }, + rules: [{ required: true, message: '请选择接收单位', trigger: 'change' }], + change: ({ value, column, form }) => { + const findLabel = (list, id) => { + for (let item of list || []) { + console.log( item.id + 'item '); + if (item.id === id) return item.label; + if (item.children) { + const found = findLabel(item.children, id); + if (found) return found; + } + } + return null; + }; + form.deptName = findLabel(column.dicData, value) || ''; + } }, { label: '接收单位', prop: 'deptName', + addDisplay: false, }, { label: '移交问题', @@ -159,9 +211,13 @@ export default { rowSave(row, done, loading) { // 只提取需要的字段 const submitData = { - encryptName: row.encryptName, - encryptParams: row.encryptParams, - encryptType: row.encryptType, + proId: row.proId, // 项目ID + proName: row.proName, // 项目名称 + singleProName: row.singleProName, // 单项工程名称 + transferTime: row.transferTime, // 移交时间(YYYY-MM-DD) + deptId: row.deptId, // 接收单位ID + deptName: row.deptName, // 接收名称 + transferIssue: row.transferIssue, // 移交问题 }; addTransferProblemApi(submitData).then( () => { @@ -178,13 +234,50 @@ export default { } ); }, + loadDeptOptions() { + getDeptSelectApi().then(res => { + this.treeDataList = this.convertToVueTree(res.data.data); + // 找到 deptId 列并更新 dicData + const deptColumn = this.option.column.find(col => col.prop === 'deptId'); + if (deptColumn) { + deptColumn.dicData = this.treeDataList; // Vue 3 可直接赋值;Vue 2 建议用 this.$set + } + }).catch(err => { + console.error('加载部门列表失败', err); + }); + }, + // 树数据过滤 - 支持无限层级转换 + convertToVueTree(data, level = 1) { + if (!data || !Array.isArray(data)) { + return [] + } + + return data.map(item => { + const node = { + id: item.deptId, + label: item.deptName, + } + + if (item.children && Array.isArray(item.children) && item.children.length > 0) { + if (level < 3) { + const children = this.convertToVueTree(item.children, level + 1) + if (children.length > 0) node.children = children + } + } + return node + }) + }, rowUpdate(row, index, done, loading) { // 只保留需要的字段 const submitData = { id: row.id, - encryptName: row.encryptName, - encryptParams: row.encryptParams, - encryptType: row.encryptType, + proId: row.proId, // 项目ID + proName: row.proName, // 项目名称 + singleProName: row.singleProName, // 单项工程名称 + transferTime: row.transferTime, // 移交时间(YYYY-MM-DD) + deptId: row.deptId, // 接收单位ID + deptName: row.deptName, // 接收名称 + transferIssue: row.transferIssue, // 移交问题 }; editTransferProblemApi(submitData).then( @@ -272,6 +365,7 @@ export default { }, onLoad(page, params = {}) { this.loading = true; + this.loadDeptOptions(); let data = { ...params, pageNum:page.currentPage, diff --git a/src/views/fileTransfer/setting.vue b/src/views/fileTransfer/setting.vue index f37d79d3..550903bd 100644 --- a/src/views/fileTransfer/setting.vue +++ b/src/views/fileTransfer/setting.vue @@ -10,7 +10,7 @@ - +