From ba037ac2cd49f1e749b2a65cbb1b5d2e8b9a1838 Mon Sep 17 00:00:00 2001 From: ljx <15723110242@139.com> Date: Fri, 22 Aug 2025 22:51:22 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E5=AE=A1=E6=A0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.development | 5 +- src/views/contract/division/index.vue | 1 + src/views/contract/limitPrice/index.vue | 31 ++-- src/views/contract/limitPrice/indexEdit.vue | 48 ++++--- src/views/out/outTable/index.vue | 152 +++++++++----------- src/views/tender/bidd/index.vue | 6 +- src/views/tender/plan/index.vue | 29 ++-- 7 files changed, 137 insertions(+), 135 deletions(-) diff --git a/.env.development b/.env.development index 6e07116..b7dcd4d 100644 --- a/.env.development +++ b/.env.development @@ -5,7 +5,10 @@ VITE_APP_TITLE = 煤科建管平台 VITE_APP_ENV = 'development' # 开发环境 -VITE_APP_BASE_API = 'http://192.168.110.149:8899' +#朱银 +# VITE_APP_BASE_API = 'http://192.168.110.149:8899' +#曾涛 +VITE_APP_BASE_API = 'http://192.168.110.180:8899' # 无人机接口地址 diff --git a/src/views/contract/division/index.vue b/src/views/contract/division/index.vue index fe7153c..f78dd09 100644 --- a/src/views/contract/division/index.vue +++ b/src/views/contract/division/index.vue @@ -25,6 +25,7 @@ + diff --git a/src/views/contract/limitPrice/index.vue b/src/views/contract/limitPrice/index.vue index c491091..090e53a 100644 --- a/src/views/contract/limitPrice/index.vue +++ b/src/views/contract/limitPrice/index.vue @@ -47,7 +47,7 @@ - + import { useUserStoreHook } from '@/store/modules/user'; import { listBillofquantitiesLimitList, obtainAllVersionNumbers, sheetList, updatePrice, importExcelFile } from '@/api/contract/index'; -const { proxy } = getCurrentInstance() as ComponentInternalInstance; +const { proxy } = getCurrentInstance() as any; const userStore = useUserStoreHook(); const currentProject = computed(() => userStore.selectedProject); @@ -97,6 +97,7 @@ const options = ref([]); const sheets = ref([]); const tableData = ref([]); const isExpandAll = ref(false); +const reviewStatus = ref(''); //获取版本号 const getVersionNums = async () => { @@ -113,6 +114,7 @@ const getVersionNums = async () => { options.value = res.data; if (res.data.length > 0) { queryForm.value.versions = res.data[0].versions; + reviewStatus.value = res.data[0].status; getSheetName(); } else { @@ -138,11 +140,11 @@ const changeVersions = () => { //选择表名 const changeSheet = () => { - getTableData(); + getTableData(); }; //获取表名 -const getSheetName = async () => { +const getSheetName = async () => { try { const params = { projectId: currentProject.value?.id, @@ -182,14 +184,10 @@ const getTableData = async () => { }; const res = await listBillofquantitiesLimitList(params); if (res.code == 200) { - tableData.value = [res.data[0]]; + tableData.value = res.data; } } catch (error) { console.log(error); - ElMessage({ - message: '获取表格失败', - type: 'error' - }); tableData.value = []; loading.value = false; } finally { @@ -273,16 +271,19 @@ const handleExport = () => { ); }; // 审批 -function clickApprovalSheet() { - proxy.$tab.closePage(proxy.$route); - proxy.$router.push({ +const clickApprovalSheet = () => { + proxy.$tab.closePage(proxy?.$route); + proxy?.$router.push({ path: `/approval/contractLimitPrice/indexEdit`, query: { - id: '', - type: 'update' + projectId: currentProject.value?.id, + versions: queryForm.value.versions, + sheet: queryForm.value.sheet, + type: 'update', + status: reviewStatus.value } }); -} +}; onUnmounted(() => { listeningProject(); }); diff --git a/src/views/contract/limitPrice/indexEdit.vue b/src/views/contract/limitPrice/indexEdit.vue index c4571f2..d4e32da 100644 --- a/src/views/contract/limitPrice/indexEdit.vue +++ b/src/views/contract/limitPrice/indexEdit.vue @@ -34,17 +34,25 @@ + + + - + - + + + + {{ scope.row.price }} + + @@ -88,10 +96,10 @@ import SubmitVerify from '@/components/Process/submitVerify.vue'; import ApprovalRecord from '@/components/Process/approvalRecord.vue'; import ApprovalButton from '@/components/Process/approvalButton.vue'; import { StartProcessBo } from '@/api/workflow/workflowCommon/types'; -const { proxy } = getCurrentInstance() as ComponentInternalInstance; +const { proxy } = getCurrentInstance() as any; import { useUserStoreHook } from '@/store/modules/user'; const { design_change_reason_type } = toRefs(proxy?.useDict('design_change_reason_type')); -import { detailsMaterialAndEquipmentApproval } from '@/api/design/billofQuantities/index'; +import { listBillofquantitiesLimitList } from '@/api/contract/index'; // 获取用户 store const userStore = useUserStoreHook(); // 从 store 中获取项目列表和当前选中的项目 @@ -100,6 +108,7 @@ const buttonLoading = ref(false); const loading = ref(true); //路由参数 const routeParams = ref>({}); + const flowCode = ref(''); const status = ref(''); const dialogVisible = reactive({ @@ -113,8 +122,8 @@ const approvalRecordRef = ref>(); //按钮组件 const flowCodeOptions = [ { - value: currentProject.value?.id + '_contractPriceLimit', - label: '合同限价审核' + value: currentProject.value?.id + '_xianjiayilan', + label: '合约限价审核' } ]; @@ -132,11 +141,9 @@ const submitFormData = ref({ const taskVariables = ref>({}); const initFormData = { - id: undefined, - fileName: undefined, - fileUrl: undefined, - status: undefined, - originalName: undefined + versions: '', + sheet: '', + status: '' }; const data = reactive({ form: { ...initFormData }, @@ -162,13 +169,16 @@ const getInfo = () => { loading.value = true; buttonLoading.value = false; nextTick(async () => { - const res = await detailsMaterialAndEquipmentApproval(routeParams.value.id); + const res = await listBillofquantitiesLimitList({ + projectId: routeParams.value?.id, + versions: routeParams.value.versions, + sheet: routeParams.value.sheet + }); console.log('res.data', res.data); - - Object.assign(form.value, res.data); + Object.assign(form.value, routeParams.value); console.log('form', form.value); - - tableData.value = res.data.auditData; + tableData.value = res.data; + console.log('tableData', tableData.value); loading.value = false; buttonLoading.value = false; }); @@ -185,10 +195,10 @@ const submitFlow = async () => { dialogVisible.visible = false; }; //提交申请 -const handleStartWorkFlow = async (data: LeaveForm) => { +const handleStartWorkFlow = async (data: any) => { try { submitFormData.value.flowCode = flowCode.value; - submitFormData.value.businessId = data.versions; + submitFormData.value.businessId = data.versions + '_xianjiayilan'; //流程变量 taskVariables.value = { // leave4/5 使用的流程变量 @@ -244,6 +254,8 @@ onMounted(() => { routeParams.value = proxy.$route.query; reset(); loading.value = false; + console.log(routeParams.value); + if (routeParams.value.type === 'update' || routeParams.value.type === 'view' || routeParams.value.type === 'approval') { getInfo(); console.log('routeParams.value', routeParams.value); diff --git a/src/views/out/outTable/index.vue b/src/views/out/outTable/index.vue index acf57f8..7b2510e 100644 --- a/src/views/out/outTable/index.vue +++ b/src/views/out/outTable/index.vue @@ -1,7 +1,7 @@ - - + + @@ -13,70 +13,66 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - + + diff --git a/src/views/tender/bidd/index.vue b/src/views/tender/bidd/index.vue index 8df76ed..540b9c8 100644 --- a/src/views/tender/bidd/index.vue +++ b/src/views/tender/bidd/index.vue @@ -27,7 +27,7 @@ class="upload-demo" :http-request="importExcel" :show-file-list="false" - v-hasPermi="['tender:billofquantitiesLimitList:importExcelFile']" + v-hasPermi="['tender:tenderPlanLimitList:importExcelFile']" > 导入excel @@ -35,7 +35,7 @@ - 导出excel + 导出excel @@ -70,7 +70,7 @@ size="small" @click="handleSave(scope.row)" v-if="scope.row.quantity && scope.row.quantity != 0" - v-hasPermi="['tender:billofquantitiesLimitList:edit']" + v-hasPermi="['tender:tenderPlanLimitList:edit']" >确定 diff --git a/src/views/tender/plan/index.vue b/src/views/tender/plan/index.vue index c378eea..4cf702f 100644 --- a/src/views/tender/plan/index.vue +++ b/src/views/tender/plan/index.vue @@ -14,7 +14,7 @@ 搜索 重置 - 新增 + 新增 @@ -26,11 +26,10 @@ + - 查看文件 + 查看文件 @@ -52,6 +51,7 @@ value-format="YYYY-MM-DD" placeholder="选择时间" :disabled="scope.row.bidStatus == 1" + v-hasPermi="['tender:biddingPlan:edit']" /> @@ -69,6 +69,7 @@ :step="1" :controls="false" :disabled="scope.row.bidStatus == 1" + v-hasPermi="['tender:biddingPlan:edit']" /> @@ -80,7 +81,7 @@ link icon="FolderOpened" @click="handleSave(scope.row)" - v-hasPermi="['tender:segmentedIndicatorPlanning:edit']" + v-hasPermi="['tender:biddingPlan:uploadBiddingDocuments']" :disabled="scope.row.bidStatus == 1" >招标上传 @@ -89,7 +90,7 @@ link icon="FolderOpened" @click="handleWinTheBid(scope.row)" - v-hasPermi="['tender:segmentedIndicatorPlanning:edit']" + v-hasPermi="['tender:biddingPlan:uploadBiddingDocuments']" :disabled="scope.row.bidStatus == 1" >中标上传 @@ -102,7 +103,7 @@ icon="View" @click="handleDetail(scope.row)" :disabled="scope.row.bidStatus == 1" - v-hasPermi="['tender:segmentedIndicatorPlanning:getMore']" + v-hasPermi="['tender:biddingPlan:getMore']" >详情 删除 确定 @@ -232,7 +233,15 @@ 查看 - 删除 + 删除 From 5258b37d07521fb0faf2da5af59fc6a4b5856424 Mon Sep 17 00:00:00 2001 From: taoge1020 Date: Fri, 22 Aug 2025 22:52:29 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.development | 2 +- src/components/FileUpload/index.vue | 60 ++++-- .../biddingManagemen/biddingLimit/index.vue | 4 +- .../listOfWinningBids/index.vue | 191 +++++++++++++++--- 4 files changed, 206 insertions(+), 51 deletions(-) diff --git a/.env.development b/.env.development index d905b86..6e07116 100644 --- a/.env.development +++ b/.env.development @@ -5,7 +5,7 @@ VITE_APP_TITLE = 煤科建管平台 VITE_APP_ENV = 'development' # 开发环境 -VITE_APP_BASE_API = 'http://192.168.110.209:8899' +VITE_APP_BASE_API = 'http://192.168.110.149:8899' # 无人机接口地址 diff --git a/src/components/FileUpload/index.vue b/src/components/FileUpload/index.vue index 8bfd847..5011b9d 100644 --- a/src/components/FileUpload/index.vue +++ b/src/components/FileUpload/index.vue @@ -1,11 +1,28 @@ - + @@ -24,10 +41,14 @@ 的文件 - - + + {{ getFileName(file.name) }} @@ -180,13 +201,16 @@ watch( }, { deep: true, immediate: true } ); -watch(() => props.defaultFileList, () => { - if (props.defaultFileList.length === 0) return; - props.defaultFileList.forEach((item: any) => { - fileList.value.push(item); - }); - -}, { deep: true, immediate: true }); +watch( + () => props.defaultFileList, + () => { + if (props.defaultFileList.length === 0) return; + props.defaultFileList.forEach((item: any) => { + fileList.value.push(item); + }); + }, + { deep: true, immediate: true } +); // 上传前校检格式和大小 const handleBeforeUpload = (file: any) => { // 校检文件类型 @@ -424,7 +448,7 @@ defineExpose({ submitUpload }); } } - >span { + > span { width: 100%; } } diff --git a/src/views/biddingManagemen/biddingLimit/index.vue b/src/views/biddingManagemen/biddingLimit/index.vue index ea9359d..ce13de3 100644 --- a/src/views/biddingManagemen/biddingLimit/index.vue +++ b/src/views/biddingManagemen/biddingLimit/index.vue @@ -32,7 +32,7 @@ 导出excel - + diff --git a/src/views/biddingManagemen/listOfWinningBids/index.vue b/src/views/biddingManagemen/listOfWinningBids/index.vue index a7f7b43..9ea8b22 100644 --- a/src/views/biddingManagemen/listOfWinningBids/index.vue +++ b/src/views/biddingManagemen/listOfWinningBids/index.vue @@ -89,8 +89,106 @@ - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -122,14 +220,20 @@ import { ListOfWinningBidsForm } from '@/api/bidding/listOfWinningBids/types'; import { useUserStoreHook } from '@/store/modules/user'; import { ElFormInstance, ElMessage } from 'element-plus'; import { getProject, updateProject } from '@/api/project/project'; - +import { globalHeaders } from '@/utils/request'; +import type { UploadInstance, UploadProps, UploadRawFile } from 'element-plus'; +import { genFileId } from 'element-plus'; const { proxy } = getCurrentInstance() as ComponentInternalInstance; const { project_type, project_stage } = toRefs(proxy?.useDict('project_type', 'project_stage')); - +const headers = ref(globalHeaders()); +const fileList = ref([]); // 用户状态管理与当前项目 const userStore = useUserStoreHook(); const currentProject = computed(() => userStore.selectedProject); - +// const realUploadUrl = computed(() => { +// const search = new URLSearchParams().toString(); +// return search ? `${baseUrl}${props.uploadUrl}?${search}` : `${baseUrl}${props.uploadUrl}`; +// }); // 项目信息(仅展示,非表单编辑) const projectInfo = reactive({ principal: undefined, @@ -151,17 +255,29 @@ const projectInfo = reactive({ const listOfWinningBidsFormRef = ref(); const buttonLoading = ref(false); const isDisabled = ref(false); - -// 表单初始数据 +const fileObj = ref({ + bidFile: undefined, + bidFileName: undefined +}); +// 表单初始数据(新增招标相关参数) const initFormData = { id: undefined, projectId: currentProject.value?.id, whetherBid: '1', // 是否中标:0=中标,1=未中标 bidPrice: undefined, // 中标价(人民币) - bidFile: undefined // 中标通知书 + bidFileId: undefined, // 中标通知书 + biddingAgency: undefined, //招标代理机构 + tenderer: undefined, //招标人 + biddingDeadline: undefined, //投标截止时间 + bidopeningTime: undefined, //开标时间 + projectOverview: undefined, //项目概况 + constructionsite: undefined, //建设地点 + planDuration: undefined, //计划工期 + answeringDeadlineTime: undefined, //答疑截止时间 + clarifyDeadlineTime: undefined //澄清截止时间 }; -// 表单数据与验证规则(核心:是否中标/中标价/中标通知书均设为必填) +// 表单数据与验证规则(核心:是否中标/中标价/中标通知书均设为必填,新增参数添加基础验证) const data = reactive({ form: { ...initFormData } as ListOfWinningBidsForm, rules: { @@ -187,7 +303,7 @@ const data = reactive({ } ], // 中标通知书:仅中标时必填 - bidFile: [ + bidFileId: [ { required: true, message: '请上传中标通知书', @@ -199,7 +315,25 @@ const data = reactive({ callback(); } } - ] + ], + // 招标代理机构:必填 + biddingAgency: [{ required: true, message: '请输入招标代理机构', trigger: 'blur' }], + // 招标人:必填 + tenderer: [{ required: true, message: '请输入招标人', trigger: 'blur' }], + // 投标截止时间:必填 + biddingDeadline: [{ required: true, message: '请选择投标截止时间', trigger: 'change' }], + // 开标时间:必填 + bidopeningTime: [{ required: true, message: '请选择开标时间', trigger: 'change' }], + // 项目概况:必填 + projectOverview: [{ required: true, message: '请输入项目概况', trigger: 'blur' }], + // 建设地点:必填 + constructionsite: [{ required: true, message: '请输入建设地点', trigger: 'blur' }], + // 计划工期:必填 + planDuration: [{ required: true, message: '请输入计划工期', trigger: 'blur' }], + // 答疑截止时间:必填 + answeringDeadlineTime: [{ required: true, message: '请选择答疑截止时间', trigger: 'change' }], + // 澄清截止时间:必填 + clarifyDeadlineTime: [{ required: true, message: '请选择澄清截止时间', trigger: 'change' }] } as Record }); @@ -213,7 +347,18 @@ const getDictLabel = (dictList: any[], value: any) => { const dictItem = dictList.find((item) => item.value === value); return dictItem ? dictItem.label : ''; }; +const handleUploadSuccess = (val) => { + fileObj.value.bidFile = val.url; + fileObj.value.bidFileName = val.fileName; +}; +const upload = ref(); +const handleExceed: UploadProps['onExceed'] = (files) => { + upload.value!.clearFiles(); + const file = files[0] as UploadRawFile; + file.uid = genFileId(); + upload.value!.handleStart(file); +}; /** * 初始化中标数据(根据项目ID查询已有记录) */ @@ -221,6 +366,7 @@ const initData = async () => { try { if (currentProject.value?.id) { const res = await listListOfWinningBids({ projectId: currentProject.value.id }); + console.log(res); if (res.code === 200) { resetForm(); if (res.data) { @@ -240,7 +386,7 @@ const initData = async () => { /** * 提交表单(含项目信息更新+中标信息提交) */ -const submitForm = () => { +const submitForm = async () => { listOfWinningBidsFormRef.value?.validate(async (valid: boolean) => { if (valid) { buttonLoading.value = true; @@ -248,26 +394,10 @@ const submitForm = () => { // 1. 同步项目ID和名称 form.value.projectId = currentProject.value?.id; form.value.projectName = projectInfo.projectName; - - // 2. 更新项目基础信息(若有变更) - if (currentProject.value?.id) { - await updateProject({ id: currentProject.value.id, ...projectInfo }); - } - - // 3. 提交中标信息(新增/编辑) - const isEdit = !!form.value.id; - if (isEdit) { - await updateListOfWinningBids(form.value); - } else { - await addListOfWinningBids(form.value); - } - + await addListOfWinningBids({ ...form.value, ...projectInfo }); // 4. 提交成功后切换为查看状态 isDisabled.value = true; - ElMessage.success(isEdit ? '编辑成功' : '提交成功'); - } catch (error) { - ElMessage.error('提交失败,请重试'); - console.error('提交表单失败:', error); + ElMessage.success('提交成功'); } finally { buttonLoading.value = false; } @@ -282,6 +412,7 @@ const getProjectDetail = async () => { try { if (currentProject.value?.id) { const res = await getProject(currentProject.value.id); + Object.assign(projectInfo, res.data); } } catch (error) { From ea56d292ecb3972f242817ec7a52216aeed870c5 Mon Sep 17 00:00:00 2001 From: Teo <2642673902@qq.com> Date: Fri, 22 Aug 2025 22:57:45 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E6=8B=9B=E6=A0=87=E4=B8=80=E8=A7=88?= =?UTF-8?q?=E5=AE=A1=E6=A0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.development | 4 +- src/api/tender/index.ts | 9 ++ src/utils/request.ts | 17 ++-- src/views/progress/progressCategory/index.vue | 12 ++- src/views/tender/bidd/index.vue | 8 +- src/views/tender/bidd/indexEdit.vue | 90 ++++++++++++------- 6 files changed, 93 insertions(+), 47 deletions(-) diff --git a/.env.development b/.env.development index 97d3ec6..7203b00 100644 --- a/.env.development +++ b/.env.development @@ -12,9 +12,9 @@ VITE_APP_ENV = 'development' # 罗成 # 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.149:8899' #屈展航 -VITE_APP_BASE_API = 'http://192.168.110.210: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/tender/index.ts b/src/api/tender/index.ts index 4c367c5..fd5a8ec 100644 --- a/src/api/tender/index.ts +++ b/src/api/tender/index.ts @@ -113,3 +113,12 @@ export const getUnitList = (query: any): AxiosPromise => { params: query }); }; + +//获取审核状态 +export const getApproval = (id) => { + return request({ + url: '/tender/tenderPlanLimitList/getVersionDetail', + method: 'get', + params: { versions: id } + }); +}; diff --git a/src/utils/request.ts b/src/utils/request.ts index 266d4be..0ff507c 100644 --- a/src/utils/request.ts +++ b/src/utils/request.ts @@ -176,22 +176,26 @@ service.interceptors.response.use( } ); // 通用下载方法 -export function download(url: string, params: any, fileName: string, isHeader) { +export function download(url: string, params: any, fileName: string, isHeader?: boolean) { downloadLoadingInstance = ElLoading.service({ text: '正在下载数据,请稍候', background: 'rgba(0, 0, 0, 0.7)' }); // prettier-ignore - return service.post(url, params, { + let data={ transformRequest: [ (params: any) => { return tansParams(params); } ], - headers: isHeader?{}:{ 'Content-Type': 'application/x-www-form-urlencoded' }, + headers: isHeader?{'Content-Type': 'application/json'}:{ 'Content-Type': 'application/x-www-form-urlencoded' }, responseType: 'blob' - }).then(async (resp: any) => { + } + if (isHeader) delete data.transformRequest; + return service + .post(url, params, data as any) + .then(async (resp: any) => { const isLogin = blobValidate(resp); if (isLogin) { - console.log("🚀 ~ download ~ resp:", resp) + console.log('🚀 ~ download ~ resp:', resp); const blob = new Blob([resp]); FileSaver.saveAs(blob, fileName); } else { @@ -201,7 +205,8 @@ export function download(url: string, params: any, fileName: string, isHeader) { ElMessage.error(errMsg); } downloadLoadingInstance.close(); - }).catch((r: any) => { + }) + .catch((r: any) => { console.error(r); ElMessage.error('下载文件出现错误,请联系管理员!'); downloadLoadingInstance.close(); diff --git a/src/views/progress/progressCategory/index.vue b/src/views/progress/progressCategory/index.vue index 3af2da8..affd541 100644 --- a/src/views/progress/progressCategory/index.vue +++ b/src/views/progress/progressCategory/index.vue @@ -153,7 +153,6 @@ import { } 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')); @@ -367,9 +366,14 @@ const handleUpdate = async (row: ProgressCategoryVO) => { 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); + proxy?.download( + '/progress/progressCategory/export', + { + ids: ids + }, + `qualityInspection_${new Date().getTime()}.xlsx`, + true + ); }; /** 提交按钮 */ diff --git a/src/views/tender/bidd/index.vue b/src/views/tender/bidd/index.vue index e476fe7..b0a7cab 100644 --- a/src/views/tender/bidd/index.vue +++ b/src/views/tender/bidd/index.vue @@ -107,7 +107,7 @@ const queryForm = ref({ sheet: '' }); -const versionsData = ref({}); +const versionsData = ref({}); const activeTab = ref('2'); const sheets = ref([]); @@ -272,9 +272,11 @@ const handleSave = (row: any) => { /** 审核按钮操作 */ const handleAudit = async () => { - proxy?.$tab.openPage('/approval/tenderPlan/indexEdit', '审核招标一览', { + proxy?.$tab.openPage('/approval/tenderBidd/indexEdit', '审核招标一览', { id: queryForm.value.versions, - type: 'update' + type: 'update', + activeTab: activeTab.value, + status: versionsData.value.status }); }; diff --git a/src/views/tender/bidd/indexEdit.vue b/src/views/tender/bidd/indexEdit.vue index e92d56a..1a0b993 100644 --- a/src/views/tender/bidd/indexEdit.vue +++ b/src/views/tender/bidd/indexEdit.vue @@ -9,14 +9,14 @@ @handleApprovalRecord="handleApprovalRecord" :buttonLoading="buttonLoading" :id="form.id" - :status="form.auditStatus" + :status="form.status" :pageType="routeParams.type" /> - 施工产值 + 招标一览 @@ -24,18 +24,7 @@ - - - (scope.row.unitPrice = val)" - :precision="2" - :step="0.1" - :controls="false" - v-if="scope.row.quantity && scope.row.quantity != 0" - /> - - + {{ scope.row.price }} @@ -90,6 +79,8 @@ const { design_change_reason_type } = toRefs(proxy?.useDict('design_change_ import { getKnowledgeDocument } from '@/api/design/technicalStandard'; import { getConstructionValue } from '@/api/out/constructionValue'; import { workScheduleListDetail } from '@/api/progress/plan'; +import { sheetList } from '@/api/contract'; +import { getApproval, getTableList } from '@/api/tender'; // 获取用户 store const userStore = useUserStoreHook(); // 从 store 中获取项目列表和当前选中的项目 @@ -111,11 +102,15 @@ const approvalRecordRef = ref>(); //按钮组件 const flowCodeOptions = [ { - value: currentProject.value?.id + '_constructionValue', - label: '施工产值审批' + value: currentProject.value?.id + '_bLimitEquipmentList', + label: '招标一览审批' } ]; - +const sheets = ref([]); +const queryForm = ref({ + versions: '', + sheet: '' +}); const leaveFormRef = ref(); const dialog = reactive({ visible: false, @@ -133,17 +128,10 @@ const taskVariables = ref>({}); const initFormData = { id: undefined, projectId: currentProject.value?.id, - matrixName: undefined, - progressCategoryName: undefined, - artificialNum: undefined, - planNum: undefined, - planDate: undefined, - uavNum: undefined, - confirmNum: undefined, - outValue: undefined, - reportDate: undefined, - reportDateId: undefined, - auditStatus: undefined + versions: undefined, + sheet: undefined, + type: undefined, + status: undefined }; const data = reactive({ form: { ...initFormData }, @@ -164,12 +152,43 @@ const reset = () => { }; /** 获取详情 */ -const getInfo = () => { +const getInfo = async () => { loading.value = true; buttonLoading.value = false; nextTick(async () => { - const res = await getConstructionValue(routeParams.value.id); - Object.assign(form.value, res.data); + try { + const params = { + projectId: currentProject.value?.id, + versions: form.value.versions + }; + const res = await sheetList(params); + if (res.code == 200) { + sheets.value = res.data; + if (res.data.length > 0) { + queryForm.value.sheet = res.data[0]; + } else { + queryForm.value.sheet = ''; + } + try { + const res = await getTableList(form.value); + if (res.code == 200) { + tableData.value = res.data; + } + } catch (error) { + console.log(error); + } + } + } catch (error) { + console.log(error); + } + getApproval(form.value.versions).then((res) => { + form.value.status = res.data.status; + }); + if (routeParams.value.type === 'approval') { + form.value.id = routeParams.value.id; + } else { + form.value.id = routeParams.value.id + '_' + routeParams.value.activeTab; + } loading.value = false; buttonLoading.value = false; }); @@ -227,7 +246,7 @@ const submit = async (status, data) => { proxy.$tab.closePage(proxy.$route); proxy.$router.go(-1); } else { - if ((form.value.auditStatus === 'draft' && (flowCode.value === '' || flowCode.value === null)) || routeParams.value.type === 'add') { + if ((form.value.status === 'draft' && (flowCode.value === '' || flowCode.value === null)) || routeParams.value.type === 'add') { flowCode.value = flowCodeOptions[0].value; dialogVisible.visible = true; return; @@ -247,6 +266,13 @@ onMounted(() => { reset(); loading.value = false; if (routeParams.value.type === 'update' || routeParams.value.type === 'view' || routeParams.value.type === 'approval') { + if (routeParams.value.type === 'approval') { + form.value.versions = routeParams.value.id.split('_')[0]; + form.value.type = routeParams.value.id.split('_')[1]; + } else { + form.value.versions = routeParams.value.id; + form.value.type = routeParams.value.activeTab; + } getInfo(); } }); From b4113bdf2ac847b03399fc45d116e38982774967 Mon Sep 17 00:00:00 2001 From: taoge1020 Date: Fri, 22 Aug 2025 23:16:19 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E9=99=90=E4=BB=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.development | 2 +- src/views/contract/division/index.vue | 2 +- src/views/contract/limitPrice/index.vue | 14 +- src/views/contract/limitPrice/indexEdit.vue | 369 ++++++++++++++++++++ 4 files changed, 384 insertions(+), 3 deletions(-) create mode 100644 src/views/contract/limitPrice/indexEdit.vue diff --git a/.env.development b/.env.development index b7dcd4d..1976a38 100644 --- a/.env.development +++ b/.env.development @@ -8,7 +8,7 @@ VITE_APP_ENV = 'development' #朱银 # VITE_APP_BASE_API = 'http://192.168.110.149:8899' #曾涛 -VITE_APP_BASE_API = 'http://192.168.110.180:8899' +VITE_APP_BASE_API = 'http://192.168.110.149:8899' # 无人机接口地址 diff --git a/src/views/contract/division/index.vue b/src/views/contract/division/index.vue index 57e007c..f78dd09 100644 --- a/src/views/contract/division/index.vue +++ b/src/views/contract/division/index.vue @@ -37,7 +37,7 @@ >详情 修改确定 删除 导出excel + + 审核 + + + 查看流程 + @@ -131,7 +137,12 @@ const getVersionNums = async () => { } }; //选择版本号 -const changeVersions = () => { +const changeVersions = (val) => { + options.value.forEach((item) => { + if (item.versions == val) { + reviewStatus.value = item.status; + } + }); getSheetName(); }; @@ -283,6 +294,7 @@ const clickApprovalSheet = () => { }; onUnmounted(() => { listeningProject(); + console.log(11111111); }); onMounted(() => { getVersionNums(); diff --git a/src/views/contract/limitPrice/indexEdit.vue b/src/views/contract/limitPrice/indexEdit.vue new file mode 100644 index 0000000..d4e32da --- /dev/null +++ b/src/views/contract/limitPrice/indexEdit.vue @@ -0,0 +1,369 @@ + + + + + + + + + + + 合同限价审核 + + + + + + + + + + + + + + + + + + + + + + + + + + {{ scope.row.price }} + + + + + + + + + + + + 请选择要启动的流程: + + + + + + + + + + + + + +
请选择要启动的流程: