From f4cbde8ee2904a9591e2aed3883e92e72dd72fad Mon Sep 17 00:00:00 2001 From: ljx <15723110242@139.com> Date: Fri, 22 Aug 2025 15:57:20 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/tender/plan/comm/planPage.vue | 20 ++++++++--------- src/views/tender/plan/comm/winTheBid.vue | 28 +++++++++++++++--------- src/views/tender/plan/index.vue | 4 +++- 3 files changed, 30 insertions(+), 22 deletions(-) diff --git a/src/views/tender/plan/comm/planPage.vue b/src/views/tender/plan/comm/planPage.vue index a8db316..01f919c 100644 --- a/src/views/tender/plan/comm/planPage.vue +++ b/src/views/tender/plan/comm/planPage.vue @@ -1,9 +1,8 @@ - + - 取消 + 取消 确定 @@ -41,15 +40,14 @@ const ruleForm = ref(); const rules = ref({ costEstimationFile: [{ required: true, message: '请上传招标文件', trigger: ['blur'] }] }); -const emit = defineProps({ - success: { - type: Function - // required: true - } -}); +const emit = defineEmits(['success']); const form = ref({ costEstimationFile: '' }); +const closeDialog = () => { + dialogVisible.value = false; + emit('success'); +}; const open = (rows: any, type: string) => { dialogVisible.value = true; @@ -68,7 +66,7 @@ const submitForm = () => { return; } dialogVisible.value = false; - emit.success(); + emit('success'); }); }; defineExpose({ diff --git a/src/views/tender/plan/comm/winTheBid.vue b/src/views/tender/plan/comm/winTheBid.vue index c606f32..2855123 100644 --- a/src/views/tender/plan/comm/winTheBid.vue +++ b/src/views/tender/plan/comm/winTheBid.vue @@ -1,5 +1,5 @@ - + @@ -14,9 +14,10 @@ uploadUrl="/tender/biddingPlan/uploadBiddingDocuments" method="put" ref="fileUploadRef" + :limit="1" :data="{ projectId: currentProject?.id, - planType: planType, + type: planType, fileType: '0', bidStatus: '0', id: row.id, @@ -28,7 +29,7 @@ @@ -50,12 +51,7 @@ const options = ref([]); const rules = ref({ costEstimationFile: [{ required: true, message: '请上传招标文件', trigger: ['blur'] }] }); -const emit = defineProps({ - success: { - type: Function - // required: true - } -}); +const emit = defineEmits(['success']); const form = ref({ costEstimationFile: '', winningBidder: '' @@ -68,6 +64,11 @@ const open = (rows: any, type: string) => { planType.value = type; getUnitListData(); }; +const closeDialog = () => { + dialogVisible.value = false; + form.value.winningBidder = ''; + emit('success'); +}; const getUnitListData = async () => { let res = await getUnitList({ projectId: currentProject.value?.id @@ -84,6 +85,13 @@ const getUnitListData = async () => { }; const resetForm = () => {}; const submitForm = () => { + if (!form.value.winningBidder) { + ElMessage({ + message: '请选择中标单位', + type: 'warning' + }); + return; + } fileUploadRef.value.submitUpload().then((res) => { if (res == 'noFile') { ElMessage({ @@ -93,7 +101,7 @@ const submitForm = () => { return; } dialogVisible.value = false; - emit.success(); + emit('success'); }); }; defineExpose({ diff --git a/src/views/tender/plan/index.vue b/src/views/tender/plan/index.vue index 3f2eb41..7fd28de 100644 --- a/src/views/tender/plan/index.vue +++ b/src/views/tender/plan/index.vue @@ -41,7 +41,9 @@ - {{ scope.row.bidFileName }} + {{ scope.row.bidFileName }} + From 9584ab4baaee4475868e5a21c3f06fbef73bc95a Mon Sep 17 00:00:00 2001 From: Teo <2642673902@qq.com> Date: Fri, 22 Aug 2025 19:53:14 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.development | 5 +- src/api/progress/progressCategory/index.ts | 9 + src/utils/request.ts | 4 +- src/views/progress/progressCategory/index.vue | 21 +- src/views/tender/bidd/index.vue | 19 +- src/views/tender/bidd/indexEdit.vue | 358 ++++++++++++++++++ src/views/tender/plan/index.vue | 3 +- 7 files changed, 408 insertions(+), 11 deletions(-) create mode 100644 src/views/tender/bidd/indexEdit.vue diff --git a/.env.development b/.env.development index 4b01d87..97d3ec6 100644 --- a/.env.development +++ b/.env.development @@ -6,14 +6,15 @@ VITE_APP_ENV = 'development' # 开发环境 # 李陈杰 209 -VITE_APP_BASE_API = 'http://192.168.110.209:8899' +# VITE_APP_BASE_API = 'http://192.168.110.209:8899' # 曾涛 # VITE_APP_BASE_API = 'http://192.168.110.180:8899' # 罗成 # VITE_APP_BASE_API = 'http://192.168.110.213:8899' # 朱银 # VITE_APP_BASE_API = 'http://192.168.110.149:8899' -# VITE_APP_BASE_API = 'http://192.168.110.209:8899' +#屈展航 +VITE_APP_BASE_API = 'http://192.168.110.210:8899' # VITE_APP_BASE_API = 'http://192.168.110.209:8899' # 无人机接口地址 diff --git a/src/api/progress/progressCategory/index.ts b/src/api/progress/progressCategory/index.ts index d525264..ed4bb07 100644 --- a/src/api/progress/progressCategory/index.ts +++ b/src/api/progress/progressCategory/index.ts @@ -61,3 +61,12 @@ export const delProgressCategory = (id: string | number | Array method: 'delete' }); }; + +//下载 +export const downloadProgressCategory = (data) => { + return request({ + url: '/progress/progressCategory/export', + method: 'post', + data + }); +}; diff --git a/src/utils/request.ts b/src/utils/request.ts index 288b711..266d4be 100644 --- a/src/utils/request.ts +++ b/src/utils/request.ts @@ -176,7 +176,7 @@ service.interceptors.response.use( } ); // 通用下载方法 -export function download(url: string, params: any, fileName: string) { +export function download(url: string, params: any, fileName: string, isHeader) { downloadLoadingInstance = ElLoading.service({ text: '正在下载数据,请稍候', background: 'rgba(0, 0, 0, 0.7)' }); // prettier-ignore return service.post(url, params, { @@ -186,7 +186,7 @@ export function download(url: string, params: any, fileName: string) { return tansParams(params); } ], - headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, + headers: isHeader?{}:{ 'Content-Type': 'application/x-www-form-urlencoded' }, responseType: 'blob' }).then(async (resp: any) => { const isLogin = blobValidate(resp); diff --git a/src/views/progress/progressCategory/index.vue b/src/views/progress/progressCategory/index.vue index bb8b8db..3af2da8 100644 --- a/src/views/progress/progressCategory/index.vue +++ b/src/views/progress/progressCategory/index.vue @@ -8,6 +8,7 @@ 新增 + + 导出 + 展开/折叠 @@ -144,10 +148,12 @@ import { getProgressCategory, delProgressCategory, addProgressCategory, - updateProgressCategory + updateProgressCategory, + downloadProgressCategory } from '@/api/progress/progressCategory'; import { ProgressCategoryVO, ProgressCategoryQuery, ProgressCategoryForm } from '@/api/progress/progressCategory/types'; import { useUserStoreHook } from '@/store/modules/user'; +import { download } from '@/utils/request'; const { proxy } = getCurrentInstance() as ComponentInternalInstance; const { progress_unit_type, progress_work_type } = toRefs(proxy?.useDict('progress_unit_type', 'progress_work_type')); @@ -161,7 +167,7 @@ type ProgressCategoryOption = { name: string; children?: ProgressCategoryOption[]; }; - +const treeRef = ref(); const matrixOptions = ref([]); const progressCategoryList = ref([]); @@ -236,6 +242,7 @@ const data = reactive>({ }); const { queryParams, form, rules } = toRefs(data); +const matrixIdList = ref([]); /** 查询分项工程单价列表 */ const getList = async () => { @@ -252,7 +259,6 @@ const getList = async () => { }); if (!matrixValue.value) matrixValue.value = matrixList[0].id; matrixOptions.value = matrixList; - console.log('🚀 ~ getList ~ matrixList:', matrixList); queryParams.value.matrixId = matrixList[0].children[0].matrixId; form.value.projectId = matrixList[0].projectId; form.value.matrixId = matrixList[0].children[0].matrixId; @@ -300,9 +306,7 @@ const reset = () => { const handleChange = (value: number) => { form.value.matrixId = value[1]; form.value.projectId = value[0]; - queryParams.value.matrixId = value[1]; - getList(); }; @@ -361,6 +365,13 @@ const handleUpdate = async (row: ProgressCategoryVO) => { dialog.title = '修改分项工程单价'; }; +const handleExport = async () => { + const ids = treeRef.value.getCheckedNodes()[0].pathNodes[0].childrenData.map((item) => item.matrixId); + const res = await downloadProgressCategory({ ids }); + download('/progress/progressCategory/export', { ids }, '方阵.xlsx', true); + // window.open(res.data); +}; + /** 提交按钮 */ const submitForm = () => { progressCategoryFormRef.value?.validate(async (valid: boolean) => { diff --git a/src/views/tender/bidd/index.vue b/src/views/tender/bidd/index.vue index 8df76ed..e476fe7 100644 --- a/src/views/tender/bidd/index.vue +++ b/src/views/tender/bidd/index.vue @@ -37,6 +37,9 @@ 导出excel + + 审核 + @@ -104,6 +107,8 @@ const queryForm = ref({ sheet: '' }); +const versionsData = ref({}); + const activeTab = ref('2'); const sheets = ref([]); const options = ref([]); @@ -118,7 +123,8 @@ const handleTabChange = (tab: string) => { getVersionNums(); }; //切换版本 -const changeVersions = () => { +const changeVersions = (value) => { + versionsData.value = options.value.find((item) => item.versions == value); getSheetName(); }; //切换表格 @@ -148,6 +154,8 @@ const getVersionNums = async () => { options.value = res.data; if (res.data.length > 0) { queryForm.value.versions = res.data[0].versions; + versionsData.value = options.value.find((item) => item.versions == queryForm.value.versions); + console.log('🚀 ~ changeVersions ~ versionsData.value:', versionsData.value); getSheetName(); } else { queryForm.value.versions = ''; @@ -261,6 +269,15 @@ const handleSave = (row: any) => { loading.value = false; } }; + +/** 审核按钮操作 */ +const handleAudit = async () => { + proxy?.$tab.openPage('/approval/tenderPlan/indexEdit', '审核招标一览', { + id: queryForm.value.versions, + type: 'update' + }); +}; + //监听项目id刷新数据 const listeningProject = watch( () => currentProject.value?.id, diff --git a/src/views/tender/bidd/indexEdit.vue b/src/views/tender/bidd/indexEdit.vue new file mode 100644 index 0000000..e92d56a --- /dev/null +++ b/src/views/tender/bidd/indexEdit.vue @@ -0,0 +1,358 @@ + + + + + + + + + + + 施工产值 + + + + + + + + + + (scope.row.unitPrice = val)" + :precision="2" + :step="0.1" + :controls="false" + v-if="scope.row.quantity && scope.row.quantity != 0" + /> + + + + + {{ scope.row.price }} + + + + + + + + + + + + 请选择要启动的流程: + + + + + + + + + + + + + + diff --git a/src/views/tender/plan/index.vue b/src/views/tender/plan/index.vue index 7fd28de..01b093b 100644 --- a/src/views/tender/plan/index.vue +++ b/src/views/tender/plan/index.vue @@ -94,6 +94,7 @@ v-hasPermi="['tender:segmentedIndicatorPlanning:getMore']" >详情 + userStore.selectedProject); const tabList = ref([]);
请选择要启动的流程: