From 1405857f555d4e313d92c42e6b70b9836bc6aa2e Mon Sep 17 00:00:00 2001 From: dhr <2216804034@qq.com> Date: Fri, 22 Aug 2025 19:53:59 +0800 Subject: [PATCH 01/19] 0822 --- src/views/largeScreen/components/leftPage.vue | 5 +++-- src/views/patch/index.vue | 4 +++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/views/largeScreen/components/leftPage.vue b/src/views/largeScreen/components/leftPage.vue index 325df42..2f33222 100644 --- a/src/views/largeScreen/components/leftPage.vue +++ b/src/views/largeScreen/components/leftPage.vue @@ -202,8 +202,9 @@ const generatePieOption = (data) => { { name: '合同数量', type: 'pie', - radius: ['45%', '65%'], - center: ['50%', '60%'], + + radius: ['30%', '60%'], + center: ['30%', '60%'], data: [], // 空数据,避免显示圆环 itemStyle: { borderColor: '#000', borderWidth: 1 }, // 中心显示“加载中”提示 diff --git a/src/views/patch/index.vue b/src/views/patch/index.vue index 149aea8..c7caebf 100644 --- a/src/views/patch/index.vue +++ b/src/views/patch/index.vue @@ -631,7 +631,9 @@ const handleProgressInput = () => { const handleExport = () => { proxy?.download('patch/patch/export', { ...queryParams.value }, `任务列表_${new Date().getTime()}.xlsx`); }; - +onMounted(() => { + getList(); +}); // 监听项目id刷新数据 const listeningProject = watch( () => currentProject.value?.id, From 169f5ae376bfcdafdb7ffcaea1af0a3f18c84b43 Mon Sep 17 00:00:00 2001 From: tcy <1193318383@qq.com> Date: Fri, 22 Aug 2025 21:08:56 +0800 Subject: [PATCH 02/19] =?UTF-8?q?feat(ctr):=20=E4=BC=98=E5=8C=96=E5=90=88?= =?UTF-8?q?=E5=90=8C=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 优化富文本编辑器组件,增加占位符功能 - 在费用合同和收入合同列表中添加支付方式列 - 增加合同内容详情对话框,用于查看分包内容 - 在收入合同列表中添加修改合同功能 - 根据合同类型动态显示承包内容或合同内容 --- src/components/Editor/index.vue | 49 +++-- src/views/ctr/expensesContract/index.vue | 33 ++- src/views/ctr/incomeContract/index.vue | 49 ++++- src/views/ctr/index.vue | 5 +- src/views/ctr/update/index.vue | 246 +++++++++++++++++++++++ 5 files changed, 352 insertions(+), 30 deletions(-) create mode 100644 src/views/ctr/update/index.vue diff --git a/src/components/Editor/index.vue b/src/components/Editor/index.vue index ba70fbb..2b569d0 100644 --- a/src/components/Editor/index.vue +++ b/src/components/Editor/index.vue @@ -1,28 +1,14 @@ @@ -47,7 +33,9 @@ const props = defineProps({ /* 上传文件大小限制(MB) */ fileSize: propTypes.number.def(5), /* 类型(base64格式、url格式) */ - type: propTypes.string.def('url') + type: propTypes.string.def('url'), + /* 占位符 */ + placeholder: propTypes.string.def('请输入内容'), }); const { proxy } = getCurrentInstance() as ComponentInternalInstance; @@ -90,7 +78,7 @@ const options = ref({ } } }, - placeholder: '请输入内容', + placeholder: props.placeholder, readOnly: props.readOnly }); @@ -166,77 +154,96 @@ const handleUploadError = (err: any) => { .editor-img-uploader { display: none; } + .editor, .ql-toolbar { white-space: pre-wrap !important; line-height: normal !important; } + .quill-img { display: none; } + .ql-snow .ql-tooltip[data-mode='link']::before { content: '请输入链接地址:'; } + .ql-snow .ql-tooltip.ql-editing a.ql-action::after { border-right: 0; content: '保存'; padding-right: 0; } + .ql-snow .ql-tooltip[data-mode='video']::before { content: '请输入视频地址:'; } + .ql-snow .ql-picker.ql-size .ql-picker-label::before, .ql-snow .ql-picker.ql-size .ql-picker-item::before { content: '14px'; } + .ql-snow .ql-picker.ql-size .ql-picker-label[data-value='small']::before, .ql-snow .ql-picker.ql-size .ql-picker-item[data-value='small']::before { content: '10px'; } + .ql-snow .ql-picker.ql-size .ql-picker-label[data-value='large']::before, .ql-snow .ql-picker.ql-size .ql-picker-item[data-value='large']::before { content: '18px'; } + .ql-snow .ql-picker.ql-size .ql-picker-label[data-value='huge']::before, .ql-snow .ql-picker.ql-size .ql-picker-item[data-value='huge']::before { content: '32px'; } + .ql-snow .ql-picker.ql-header .ql-picker-label::before, .ql-snow .ql-picker.ql-header .ql-picker-item::before { content: '文本'; } + .ql-snow .ql-picker.ql-header .ql-picker-label[data-value='1']::before, .ql-snow .ql-picker.ql-header .ql-picker-item[data-value='1']::before { content: '标题1'; } + .ql-snow .ql-picker.ql-header .ql-picker-label[data-value='2']::before, .ql-snow .ql-picker.ql-header .ql-picker-item[data-value='2']::before { content: '标题2'; } + .ql-snow .ql-picker.ql-header .ql-picker-label[data-value='3']::before, .ql-snow .ql-picker.ql-header .ql-picker-item[data-value='3']::before { content: '标题3'; } + .ql-snow .ql-picker.ql-header .ql-picker-label[data-value='4']::before, .ql-snow .ql-picker.ql-header .ql-picker-item[data-value='4']::before { content: '标题4'; } + .ql-snow .ql-picker.ql-header .ql-picker-label[data-value='5']::before, .ql-snow .ql-picker.ql-header .ql-picker-item[data-value='5']::before { content: '标题5'; } + .ql-snow .ql-picker.ql-header .ql-picker-label[data-value='6']::before, .ql-snow .ql-picker.ql-header .ql-picker-item[data-value='6']::before { content: '标题6'; } + .ql-snow .ql-picker.ql-font .ql-picker-label::before, .ql-snow .ql-picker.ql-font .ql-picker-item::before { content: '标准字体'; } + .ql-snow .ql-picker.ql-font .ql-picker-label[data-value='serif']::before, .ql-snow .ql-picker.ql-font .ql-picker-item[data-value='serif']::before { content: '衬线字体'; } + .ql-snow .ql-picker.ql-font .ql-picker-label[data-value='monospace']::before, .ql-snow .ql-picker.ql-font .ql-picker-item[data-value='monospace']::before { content: '等宽字体'; diff --git a/src/views/ctr/expensesContract/index.vue b/src/views/ctr/expensesContract/index.vue index 6ad4a81..91cb795 100644 --- a/src/views/ctr/expensesContract/index.vue +++ b/src/views/ctr/expensesContract/index.vue @@ -60,12 +60,18 @@ - + + + + @@ -85,9 +91,13 @@ --> - + +
+ 查看分包内容 +
+
查看附件列表 - +
@@ -128,7 +138,17 @@ + + + + @@ -156,6 +176,8 @@ const userStore = useUserStore(); const queryFormRef = ref(); const expensesContractFormRef = ref(); const currentProject = computed(() => userStore.selectedProject); +const detailContent = ref(''); +const detailVisible = ref(false); // 控制承包内容详情对话框的显示 const dialog = reactive({ visible: false, @@ -299,7 +321,10 @@ const handleShowFileList = async (row: ExpensesContractVO) => { }); } - +const handleShowDetail = (data) => { + detailContent.value = data.contractedContent + detailVisible.value = true; +} onMounted(() => { getList(); }); diff --git a/src/views/ctr/incomeContract/index.vue b/src/views/ctr/incomeContract/index.vue index ee2d04e..af3991a 100644 --- a/src/views/ctr/incomeContract/index.vue +++ b/src/views/ctr/incomeContract/index.vue @@ -61,6 +61,12 @@
+ + + @@ -82,10 +88,17 @@ - - 查看附件列表 - +
+ 修改合同 +
+
+ 查看分包内容 +
+
+ 查看附件列表 +
@@ -123,6 +136,17 @@ + + + + + @@ -131,9 +155,12 @@ import { listIncomeContract, getIncomeContract, delIncomeContract, addIncomeCont import { IncomeContractVO, IncomeContractQuery, IncomeContractForm } from '@/api/ctr/incomeContract/types'; import FileList from '@/components/FileList/index.vue'; import useUserStore from '@/store/modules/user'; +import { useRouter } from 'vue-router' + const { proxy } = getCurrentInstance(); const userStore = useUserStore(); const currentProject = computed(() => userStore.selectedProject); +const router = useRouter(); const { expenses_contract_type, income_contract_type } = toRefs( proxy?.useDict('income_contract_type', 'expenses_contract_type') @@ -154,7 +181,8 @@ const dialog = reactive({ visible: false, title: '' }); - +const detailVisible = ref(false); // 控制承包内容详情对话框的显示 +const detailContent = ref(''); const initFormData: IncomeContractForm = { id: undefined, projectId: undefined, @@ -292,7 +320,20 @@ const handleShowFileList = async (row: IncomeContractVO) => { }); } +const handleEdit = (row: IncomeContractVO) => { + // console.log(router); + router.push({ + path: "/ctr/update", + query: { + id: row.id, + } + }) +} +const handleShowDetail = (data) => { + detailContent.value = data.contractedContent + detailVisible.value = true; +} onMounted(() => { getList(); }); diff --git a/src/views/ctr/index.vue b/src/views/ctr/index.vue index 0412f38..25b464d 100644 --- a/src/views/ctr/index.vue +++ b/src/views/ctr/index.vue @@ -33,7 +33,10 @@ - + + + + diff --git a/src/views/ctr/update/index.vue b/src/views/ctr/update/index.vue new file mode 100644 index 0000000..13be196 --- /dev/null +++ b/src/views/ctr/update/index.vue @@ -0,0 +1,246 @@ + + + From 340954167fc9be327372504760fb2b9d1748c377 Mon Sep 17 00:00:00 2001 From: tcy <1193318383@qq.com> Date: Fri, 22 Aug 2025 21:19:19 +0800 Subject: [PATCH 03/19] =?UTF-8?q?refactor(ctr):=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E5=90=88=E5=90=8C=E7=AE=A1=E7=90=86=E9=A1=B5=E9=9D=A2=E7=9A=84?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=9D=A1=E4=BB=B6=E5=92=8C=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E6=A0=87=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 注释掉费用合同和收入合同页面的"合同金额"查询条件 - 修改费用合同页面的"分包内容详情"标题为"合同内容详情" - 修改收入合同页面的"承包内容详情"标题为"合同内容详情" - 调整收入合同页面"查看分包内容"按钮文字为"查看合同内容" --- src/views/ctr/expensesContract/index.vue | 6 +++--- src/views/ctr/incomeContract/index.vue | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/views/ctr/expensesContract/index.vue b/src/views/ctr/expensesContract/index.vue index 91cb795..141c854 100644 --- a/src/views/ctr/expensesContract/index.vue +++ b/src/views/ctr/expensesContract/index.vue @@ -15,9 +15,9 @@ - + 搜索 重置 @@ -93,7 +93,7 @@ v-if="scope.row.isUpdate">修改合同
- 查看分包内容 + 查看合同内容
@@ -136,7 +136,7 @@ - +