From d937a1578e77d4b098490515cbb2f17aa0ef3f15 Mon Sep 17 00:00:00 2001 From: wsm <2746563060@qq.com> Date: Thu, 30 Jul 2026 17:39:51 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feat(fixcontact):=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E5=AE=9A=E7=82=B9=E8=81=94=E7=B3=BB=E5=8D=95=E5=89=8D=E7=AB=AF?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 列表页含展开反馈记录子表,表单使用原生 Ant Design Vue 模式, 选人组件使用 DeptRoleUserSelectDropDown 按部门角色过滤。 --- .../bg/fixcontact/FixedContact20260730.api.ts | 75 ++ .../fixcontact/FixedContact20260730.data.ts | 143 ++++ .../fixcontact/FixedContact20260730List.vue | 688 ++++++++++++++++++ .../FixedContact20260730BPMFeedbackModal.vue | 210 ++++++ .../FixedContact20260730BPMForm.vue | 660 +++++++++++++++++ .../FixedContact20260730FeedbackForm.vue | 194 +++++ .../FixedContact20260730FeedbackModal.vue | 59 ++ .../components/FixedContact20260730Form.vue | 298 ++++++++ .../components/FixedContact20260730Modal.vue | 64 ++ 9 files changed, 2391 insertions(+) create mode 100644 src/views/bg/fixcontact/FixedContact20260730.api.ts create mode 100644 src/views/bg/fixcontact/FixedContact20260730.data.ts create mode 100644 src/views/bg/fixcontact/FixedContact20260730List.vue create mode 100644 src/views/bg/fixcontact/components/FixedContact20260730BPMFeedbackModal.vue create mode 100644 src/views/bg/fixcontact/components/FixedContact20260730BPMForm.vue create mode 100644 src/views/bg/fixcontact/components/FixedContact20260730FeedbackForm.vue create mode 100644 src/views/bg/fixcontact/components/FixedContact20260730FeedbackModal.vue create mode 100644 src/views/bg/fixcontact/components/FixedContact20260730Form.vue create mode 100644 src/views/bg/fixcontact/components/FixedContact20260730Modal.vue diff --git a/src/views/bg/fixcontact/FixedContact20260730.api.ts b/src/views/bg/fixcontact/FixedContact20260730.api.ts new file mode 100644 index 0000000..892c81e --- /dev/null +++ b/src/views/bg/fixcontact/FixedContact20260730.api.ts @@ -0,0 +1,75 @@ +import { defHttp } from '/@/utils/http/axios'; +import { useMessage } from '/@/hooks/web/useMessage'; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/bg/fixcontact/fixedContact20260730/list', + save = '/bg/fixcontact/fixedContact20260730/add', + edit = '/bg/fixcontact/fixedContact20260730/edit', + deleteOne = '/bg/fixcontact/fixedContact20260730/delete', + deleteBatch = '/bg/fixcontact/fixedContact20260730/deleteBatch', + importExcel = '/bg/fixcontact/fixedContact20260730/importExcel', + exportXls = '/bg/fixcontact/fixedContact20260730/exportXls', + queryById = '/bg/fixcontact/fixedContact20260730/queryById', + fixedContactFeedbackList = '/bg/fixcontact/fixedContact20260730/queryFixedContactFeedback20260730ByMainId', +} + +export const getExportUrl = Api.exportXls; +export const getImportUrl = Api.importExcel; + +export const list = (params) => + defHttp.get({ url: Api.list, params }); + +export const deleteOne = (params, handleSuccess) => { + return defHttp.delete({ url: Api.deleteOne, params }, { joinParamsToUrl: true }).then(() => { + handleSuccess(); + }); +}; + +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({ url: Api.deleteBatch, data: params }, { joinParamsToUrl: true }).then(() => { + handleSuccess(); + }); + }, + }); +}; + +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({ url: url, params }, { isTransformResponse: false }); +}; + +export const queryById = (id) => + defHttp.get({ url: Api.queryById, params: { id } }); + +export const fixedContactFeedbackList = (params) => { + if (params['id']) { + return defHttp.get({ url: Api.fixedContactFeedbackList, params }); + } + return Promise.resolve([]); +}; + +const BpmApi = { + saveBpmForm: '/bg/fixcontact/fixedContact20260730/saveBpmForm', + setBpmVariableLocal: '/act/process/setBpmVariableLocal', +}; + +export const saveBpmForm = (params) => { + return defHttp.post({ url: BpmApi.saveBpmForm, params }, { isTransformResponse: false }); +}; + +export const setBpmVariableLocal = (params) => { + return defHttp.post({ url: BpmApi.setBpmVariableLocal, params }, { isTransformResponse: false }); +}; + +export const withDrawFixContact = (params) => { + return defHttp.post({ url: '/bg/fixcontact/fixedContact20260730/withDrawFixContact', params }, { joinParamsToUrl: true, isTransformResponse: false }); +}; diff --git a/src/views/bg/fixcontact/FixedContact20260730.data.ts b/src/views/bg/fixcontact/FixedContact20260730.data.ts new file mode 100644 index 0000000..2a8d73d --- /dev/null +++ b/src/views/bg/fixcontact/FixedContact20260730.data.ts @@ -0,0 +1,143 @@ +import { BasicColumn } from '/@/components/Table'; + +export const columns: BasicColumn[] = [ + { + title: '序号', + align: 'center', + dataIndex: 'seqNo', + width: '80px', + }, + { + title: '表单编号', + align: 'center', + dataIndex: 'formNo', + width: '160px', + }, + { + title: '定点联系所领导', + align: 'center', + dataIndex: 'contactLeader_dictText', + width: '120px', + }, + { + title: '联系单位(部门)', + align: 'center', + dataIndex: 'contactDept_dictText', + width: '160px', + }, + { + title: '联系时间', + align: 'center', + dataIndex: 'contactTime', + width: '110px', + customRender: ({ text }) => { + text = !text ? '' : text.length > 10 ? text.substr(0, 10) : text; + return text; + }, + }, + { + title: '座谈地点', + align: 'center', + dataIndex: 'meetingPlace', + width: '160px', + }, + { + title: '相关分管所领导', + align: 'center', + dataIndex: 'relatedLeader_dictText', + width: '120px', + }, + { + title: '申请人', + align: 'center', + dataIndex: 'applicant_dictText', + width: '100px', + }, + { + title: '主办部门', + align: 'center', + dataIndex: 'hostDept_dictText', + width: '120px', + }, + { + title: '协办部门', + align: 'center', + dataIndex: 'coDept_dictText', + width: '120px', + }, + { + title: '督办次数', + align: 'center', + dataIndex: 'superviseCount', + width: '80px', + }, +]; + +export const fixedContactFeedbackColumns: BasicColumn[] = [ + { + title: '计划完成时间', + align: 'center', + dataIndex: 'planFinishTime', + width: 120, + customRender: ({ text }) => { + text = !text ? '' : text.length > 10 ? text.substr(0, 10) : text; + return text; + }, + }, + { + title: '计划完成情况', + align: 'center', + dataIndex: 'planFinishStatus', + width: 160, + }, + { + title: '处理意见、承办情况', + align: 'center', + dataIndex: 'handleOpinion', + width: 200, + }, + { + title: '办结情况', + align: 'center', + dataIndex: 'finishStatus', + width: 160, + }, + { + title: '实际完成时间', + align: 'center', + dataIndex: 'actualFinishTime', + width: 120, + customRender: ({ text }) => { + text = !text ? '' : text.length > 10 ? text.substr(0, 10) : text; + return text; + }, + }, + { + title: '实际完成情况', + align: 'center', + dataIndex: 'actualFinishStatus', + width: 160, + }, + { + title: '反馈人', + align: 'center', + dataIndex: 'feedbackUser_dictText', + width: 110, + }, + { + title: '反馈部门', + align: 'center', + dataIndex: 'feedbackDept_dictText', + width: 150, + }, +]; + +export const superQuerySchema = { + formNo: { title: '表单编号', order: 0, view: 'text', type: 'string' }, + contactLeader: { title: '定点联系所领导', order: 1, view: 'sel_user', type: 'string' }, + contactTime: { title: '联系时间', order: 2, view: 'date', type: 'string' }, + relatedLeader: { title: '相关分管所领导', order: 3, view: 'sel_user', type: 'string' }, + applicant: { title: '申请人', order: 4, view: 'sel_user', type: 'string' }, + seqNo: { title: '序号', order: 5, view: 'text', type: 'string' }, + meetingPlace: { title: '座谈地点', order: 6, view: 'text', type: 'string' }, +}; diff --git a/src/views/bg/fixcontact/FixedContact20260730List.vue b/src/views/bg/fixcontact/FixedContact20260730List.vue new file mode 100644 index 0000000..9cc4ad2 --- /dev/null +++ b/src/views/bg/fixcontact/FixedContact20260730List.vue @@ -0,0 +1,688 @@ + + + + + diff --git a/src/views/bg/fixcontact/components/FixedContact20260730BPMFeedbackModal.vue b/src/views/bg/fixcontact/components/FixedContact20260730BPMFeedbackModal.vue new file mode 100644 index 0000000..3638666 --- /dev/null +++ b/src/views/bg/fixcontact/components/FixedContact20260730BPMFeedbackModal.vue @@ -0,0 +1,210 @@ + + + + + diff --git a/src/views/bg/fixcontact/components/FixedContact20260730BPMForm.vue b/src/views/bg/fixcontact/components/FixedContact20260730BPMForm.vue new file mode 100644 index 0000000..ade3dc3 --- /dev/null +++ b/src/views/bg/fixcontact/components/FixedContact20260730BPMForm.vue @@ -0,0 +1,660 @@ + + + + + diff --git a/src/views/bg/fixcontact/components/FixedContact20260730FeedbackForm.vue b/src/views/bg/fixcontact/components/FixedContact20260730FeedbackForm.vue new file mode 100644 index 0000000..06ee785 --- /dev/null +++ b/src/views/bg/fixcontact/components/FixedContact20260730FeedbackForm.vue @@ -0,0 +1,194 @@ + + + + + diff --git a/src/views/bg/fixcontact/components/FixedContact20260730FeedbackModal.vue b/src/views/bg/fixcontact/components/FixedContact20260730FeedbackModal.vue new file mode 100644 index 0000000..fd2ba11 --- /dev/null +++ b/src/views/bg/fixcontact/components/FixedContact20260730FeedbackModal.vue @@ -0,0 +1,59 @@ + + + + + diff --git a/src/views/bg/fixcontact/components/FixedContact20260730Form.vue b/src/views/bg/fixcontact/components/FixedContact20260730Form.vue new file mode 100644 index 0000000..ef93599 --- /dev/null +++ b/src/views/bg/fixcontact/components/FixedContact20260730Form.vue @@ -0,0 +1,298 @@ + + + + + diff --git a/src/views/bg/fixcontact/components/FixedContact20260730Modal.vue b/src/views/bg/fixcontact/components/FixedContact20260730Modal.vue new file mode 100644 index 0000000..7ef80b5 --- /dev/null +++ b/src/views/bg/fixcontact/components/FixedContact20260730Modal.vue @@ -0,0 +1,64 @@ + + + + + From b7649bd23c9e1ebeb79538c508d4b9734e0fbd16 Mon Sep 17 00:00:00 2001 From: wsm <2746563060@qq.com> Date: Fri, 31 Jul 2026 09:19:42 +0800 Subject: [PATCH 2/3] =?UTF-8?q?feat(fixcontact):=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E5=AF=BC=E5=85=A5=E5=AF=BC=E5=87=BA=20API=20?= =?UTF-8?q?=E7=AB=AF=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加 exportXlsHeaders、importExcelByEasyExcel、checkExcelByEasyExcel 接口, 用于下载模板、模板校验和 EasyExcel 导入。 Co-Authored-By: Claude Opus 4.7 --- src/views/bg/fixcontact/FixedContact20260730.api.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/views/bg/fixcontact/FixedContact20260730.api.ts b/src/views/bg/fixcontact/FixedContact20260730.api.ts index 892c81e..0ca83a9 100644 --- a/src/views/bg/fixcontact/FixedContact20260730.api.ts +++ b/src/views/bg/fixcontact/FixedContact20260730.api.ts @@ -11,12 +11,18 @@ enum Api { deleteBatch = '/bg/fixcontact/fixedContact20260730/deleteBatch', importExcel = '/bg/fixcontact/fixedContact20260730/importExcel', exportXls = '/bg/fixcontact/fixedContact20260730/exportXls', + exportXlsHeaders = '/bg/fixcontact/fixedContact20260730/exportXlsHeaders', + importExcelByEasyExcel = '/bg/fixcontact/fixedContact20260730/importExcelByEasyExcel', + checkExcelByEasyExcel = '/bg/fixcontact/fixedContact20260730/checkExcelByEasyExcel', queryById = '/bg/fixcontact/fixedContact20260730/queryById', fixedContactFeedbackList = '/bg/fixcontact/fixedContact20260730/queryFixedContactFeedback20260730ByMainId', } export const getExportUrl = Api.exportXls; export const getImportUrl = Api.importExcel; +export const getExportXlsHeadersUrl = Api.exportXlsHeaders; +export const getImportExcelByEasyExcelUrl = Api.importExcelByEasyExcel; +export const getCheckExcelByEasyExcelUrl = Api.checkExcelByEasyExcel; export const list = (params) => defHttp.get({ url: Api.list, params }); From 12c0625f72a59f8a8a52efd201661ecc963f8878 Mon Sep 17 00:00:00 2001 From: wsm <2746563060@qq.com> Date: Fri, 31 Jul 2026 09:19:54 +0800 Subject: [PATCH 3/3] =?UTF-8?q?feat(fixcontact):=20=E7=AD=9B=E9=80=89?= =?UTF-8?q?=E5=8C=BA=E5=9F=9F=E6=94=B9=E9=80=A0=E5=8F=8A=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E5=AF=BC=E5=85=A5=E5=AF=BC=E5=87=BA=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 筛选区:定点联系所领导/相关分管所领导改用 DeptRoleUserSelectDropDown 按角色部门筛选 - 筛选区:新增联系单位(部门)、主办部门、协办部门筛选项(SzSelectDept) - 筛选区:移除联系时间、申请人筛选项 - 操作区:新增下载模板、模板校验、模板导入按钮 Co-Authored-By: Claude Opus 4.7 --- .../fixcontact/FixedContact20260730List.vue | 101 ++++++++++++++++-- 1 file changed, 93 insertions(+), 8 deletions(-) diff --git a/src/views/bg/fixcontact/FixedContact20260730List.vue b/src/views/bg/fixcontact/FixedContact20260730List.vue index 9cc4ad2..783a0a4 100644 --- a/src/views/bg/fixcontact/FixedContact20260730List.vue +++ b/src/views/bg/fixcontact/FixedContact20260730List.vue @@ -11,22 +11,43 @@ - + - - + + + + + + + - + - - + + @@ -50,6 +71,9 @@ 新增 导出 导入 + 下载模板 + 模板校验 + 模板导入