b35fe61c by xukangle

Merge branch 'dev_20241202_xukangle' into develop

2 parents 18c28b7f e2402a3a
...@@ -131,7 +131,19 @@ const routes: RouteRecordRaw[] = [ ...@@ -131,7 +131,19 @@ const routes: RouteRecordRaw[] = [
131 cache: true, 131 cache: true,
132 reuse: true 132 reuse: true
133 } 133 }
134 },
135 {
136 path: 'register-catalog-detail',
137 name: 'costAssessDetail',
138 component: () => import('@/views/data_asset/registerCatalogDetail.vue'),
139 meta: {
140 title: '详情-',
141 sidebar: false,
142 breadcrumb: false,
143 cache: true,
144 reuse: true
134 } 145 }
146 },
135 ], 147 ],
136 }, 148 },
137 { 149 {
......
...@@ -126,6 +126,7 @@ const getDetailInfo = () => { ...@@ -126,6 +126,7 @@ const getDetailInfo = () => {
126 if (res.code == proxy.$passCode) { 126 if (res.code == proxy.$passCode) {
127 const data = res.data || {}; 127 const data = res.data || {};
128 costAssessDetail.value = data; 128 costAssessDetail.value = data;
129 console.log('costAssessDetail', costAssessDetail.value);
129 evaDetailInfo.value = data; 130 evaDetailInfo.value = data;
130 deploymentId.value = data.approveVO.camundaDeploymentId; 131 deploymentId.value = data.approveVO.camundaDeploymentId;
131 processInstanceId.value = data.approveVO?.camundaInstanceId; 132 processInstanceId.value = data.approveVO?.camundaInstanceId;
...@@ -246,8 +247,8 @@ const btnClick = (btn) => { ...@@ -246,8 +247,8 @@ const btnClick = (btn) => {
246 type: 'warning', 247 type: 'warning',
247 }).then(() => { 248 }).then(() => {
248 let params = { 249 let params = {
249 guid: evaDetailInfo.value.approveVO.approveGuid, 250 guid: evaDetailInfo.value.approveVO.approveGuid || costAssessDetail.value.approveVO.approveGuid,
250 flowType: evaDetailInfo.value.approveVO.flowType, 251 flowType: evaDetailInfo.value.approveVO.flowType || costAssessDetail.value.approveVO.flowType,
251 approveStaffGuid: userData.staffGuid, 252 approveStaffGuid: userData.staffGuid,
252 } 253 }
253 revokeFlowData(params).then((res: any) => { 254 revokeFlowData(params).then((res: any) => {
...@@ -550,25 +551,47 @@ const passDialogInfo = ref({ ...@@ -550,25 +551,47 @@ const passDialogInfo = ref({
550 }, 551 },
551 }); 552 });
552 553
554 // const passDialogInputChange = (val, item, inlineValue) => {
555 // if (item.field == 'qualityScore') {
556 // qualityEvaluateFormItems.value[2].placeholder = `本次评估数据资产总体质量得分为${val}分\n准确性:\n一致性:\n可访问性:\n规范性:\n完整性:`;
557 // } else if (item.field == 'assessmentMoney') {
558 // let M = "";
559 // let D = "";
560 // let assessmentDate = inlineValue.assessmentDate;
561 // if (assessmentDate) {
562 // M = (assessmentDate.getMonth() + 1 < 10 ? '0' + (assessmentDate.getMonth() + 1) : assessmentDate.getMonth() + 1);
563 // D = (assessmentDate.getDate() + 1 < 10 ? '0' + assessmentDate.getDate() : assessmentDate.getDate());
564 // }
565 // assessFormItems.value[2].placeholder = `按照本次评估目的及价值类型,该笔数据资产在评估基准日的评估值为人民币${val}元。本次评估结论在评估基准日后一年内有效,即自${inlineValue.assessmentDate ? `${inlineValue.assessmentDate.getFullYear()}${M}${D}日至${inlineValue.assessmentDate.getFullYear() + 1}${M}${D}日` : '20*年*月*日至20*年*月*日'}止。超过一年,需重新举行资产评估。`;
566 // } else if (item.field == 'assessmentDate') {
567 // let M = (val.getMonth() + 1 < 10 ? '0' + (val.getMonth() + 1) : val.getMonth() + 1);
568 // let D = (val.getDate() + 1 < 10 ? '0' + val.getDate() : val.getDate());
569 // assessFormItems.value[2].placeholder = `按照本次评估目的及价值类型,该笔数据资产在评估基准日的评估值为人民币${inlineValue.assessmentMoney ? inlineValue.assessmentMoney : '***'}元。本次评估结论在评估基准日后一年内有效,即自${val ? `${val.getFullYear()}${M}${D}日至${val.getFullYear() + 1}${M}${D}日` : '20*年*月*日至20*年*月*日'}止。超过一年,需重新举行资产评估。`;
570 // }
571 // }
553 const passDialogInputChange = (val, item, inlineValue) => { 572 const passDialogInputChange = (val, item, inlineValue) => {
554 if (item.field == 'qualityScore') { 573 console.log('val', val, item, inlineValue);
555 qualityEvaluateFormItems.value[2].placeholder = `本次评估数据资产总体质量得分为${val}分\n准确性:\n一致性:\n可访问性:\n规范性:\n完整性:`; 574 if (item.field == 'assessmentMoney') {
556 } else if (item.field == 'assessmentMoney') {
557 let M = ""; 575 let M = "";
558 let D = ""; 576 let D = "";
559 let assessmentDate = inlineValue.assessmentDate; 577 let assessmentDate = inlineValue.assessmentDate;
560 if (assessmentDate) { 578 if (assessmentDate) {
561 M = (assessmentDate.getMonth() + 1 < 10 ? '0' + (assessmentDate.getMonth() + 1) : assessmentDate.getMonth() + 1); 579 M = (assessmentDate?.getMonth() + 1 < 10 ? '0' + (assessmentDate?.getMonth() + 1) : assessmentDate?.getMonth() + 1);
562 D = (assessmentDate.getDate() + 1 < 10 ? '0' + assessmentDate.getDate() : assessmentDate.getDate()); 580 D = (assessmentDate?.getDate() + 1 < 10 ? '0' + assessmentDate?.getDate() : assessmentDate?.getDate());
563 } 581 }
564 assessFormItems.value[2].placeholder = `按照本次评估目的及价值类型,该笔数据资产在评估基准日的评估值为人民币${val}元。本次评估结论在评估基准日后一年内有效,即自${inlineValue.assessmentDate ? `${inlineValue.assessmentDate.getFullYear()}${M}${D}日至${inlineValue.assessmentDate.getFullYear() + 1}${M}${D}日` : '20*年*月*日至20*年*月*日'}止。超过一年,需重新举行资产评估。`; 582 assessFormItems.value[2].placeholder = `按照本次评估目的及价值类型,该笔数据资产在评估基准日的评估值为人民币${val}元。本次评估结论在评估基准日后一年内有效,即自${inlineValue.assessmentDate ? `${inlineValue.assessmentDate?.getFullYear()}${M}${D}日至${inlineValue.assessmentDate?.getFullYear() + 1}${M}${D}` : '20*年*月*日至20*年*月*日'}止。超过一年,需重新举行资产评估。`;
565 } else if (item.field == 'assessmentDate') { 583 } else if (item.field == 'assessmentDate') {
566 let M = (val.getMonth() + 1 < 10 ? '0' + (val.getMonth() + 1) : val.getMonth() + 1); 584 if (val && !(val instanceof Date)) {
567 let D = (val.getDate() + 1 < 10 ? '0' + val.getDate() : val.getDate()); 585 // 如果 val 不是 Date 类型,尝试将其转换为 Date 对象
568 assessFormItems.value[2].placeholder = `按照本次评估目的及价值类型,该笔数据资产在评估基准日的评估值为人民币${inlineValue.assessmentMoney ? inlineValue.assessmentMoney : '***'}元。本次评估结论在评估基准日后一年内有效,即自${val ? `${val.getFullYear()}${M}${D}日至${val.getFullYear() + 1}${M}${D}日` : '20*年*月*日至20*年*月*日'}止。超过一年,需重新举行资产评估。`; 586 val = new Date(val);
587 }
588 let M = (val?.getMonth() + 1 < 10 ? '0' + (val?.getMonth() + 1) : val?.getMonth() + 1);
589 let D = (val?.getDate() + 1 < 10 ? '0' + val?.getDate() : val?.getDate());
590 assessFormItems.value[2].placeholder = `按照本次评估目的及价值类型,该笔数据资产在评估基准日的评估值为人民币${inlineValue.assessmentMoney ? inlineValue.assessmentMoney : '***'}元。本次评估结论在评估基准日后一年内有效,即自${val ? `${val?.getFullYear()}${M}${D}日至${val?.getFullYear() + 1}${M}${D}` : '20*年*月*日至20*年*月*日'}止。超过一年,需重新举行资产评估。`;
569 } 591 }
570 } 592 }
571 593
594
572 const submitPromise: any = ref(null); 595 const submitPromise: any = ref(null);
573 596
574 const passDialogBtnClick = (btn, info) => { 597 const passDialogBtnClick = (btn, info) => {
...@@ -639,11 +662,19 @@ const passDialogBtnClick = (btn, info) => { ...@@ -639,11 +662,19 @@ const passDialogBtnClick = (btn, info) => {
639 return; 662 return;
640 } 663 }
641 submitPromise.value = costAssessAllow({ 664 submitPromise.value = costAssessAllow({
642 guid: evaDetailInfo.value.guid, 665 guid: costAssessDetail.value.approveVO.approveGuid,
666 bizGuid: costAssessDetail.value.guid,
667 flowType: costAssessDetail.value.approveVO.flowType,
668 approveStaffGuid: userData.staffGuid,
643 assessmentMoney: info.assessmentMoney, 669 assessmentMoney: info.assessmentMoney,
644 assessmentDate: info.assessmentDate, 670 assessmentDate: info.assessmentDate,
645 assessmentNote: info.assessmentNote, 671 assessmentNote: info.assessmentNote,
646 assessmentFile: info.assessmentFile.map(f => f.url), 672 assessmentFile: info.assessmentFile.map(file => {
673 return {
674 name: file.name,
675 url: file.url
676 }
677 }) || [],
647 }).then((res: any) => { 678 }).then((res: any) => {
648 submitPromise.value = null; 679 submitPromise.value = null;
649 if (res?.code == proxy.$passCode) { 680 if (res?.code == proxy.$passCode) {
...@@ -708,8 +739,8 @@ const rejectDialogBtnClick = (btn, info) => { ...@@ -708,8 +739,8 @@ const rejectDialogBtnClick = (btn, info) => {
708 } 739 }
709 //资产登记的驳回。 740 //资产登记的驳回。
710 let params = { 741 let params = {
711 guid: evaDetailInfo.value.approveVO.approveGuid, 742 guid: evaDetailInfo.value.approveVO.approveGuid || costAssessDetail.value.approveVO.approveGuid,
712 flowType: evaDetailInfo.value.approveVO.flowType, 743 flowType: evaDetailInfo.value.approveVO.flowType || costAssessDetail.value.approveVO.flowType,
713 approveSuggest: info.approveSuggest, 744 approveSuggest: info.approveSuggest,
714 approveStaffGuid: userData.staffGuid, 745 approveStaffGuid: userData.staffGuid,
715 } 746 }
...@@ -730,12 +761,20 @@ const rejectDialogBtnClick = (btn, info) => { ...@@ -730,12 +761,20 @@ const rejectDialogBtnClick = (btn, info) => {
730 rejectDialogInfo.value.visible = false; 761 rejectDialogInfo.value.visible = false;
731 } 762 }
732 }; 763 };
733 764 // 格式化金额:千位分隔符 + 保留2位小数
765 const formattedAmount = computed(() => {
766 return new Intl.NumberFormat('en-US', {
767 style: 'decimal',
768 minimumFractionDigits: 2,
769 maximumFractionDigits: 2
770 }).format(costAssessDetail.value?.assessmentMoney);
771 });
734 </script> 772 </script>
735 773
736 <template> 774 <template>
737 <div class="main-content" v-loading="fullscreenLoading"> 775 <div class="main-content" v-loading="fullscreenLoading">
738 <div class="detail-content" :style="{ height: detailType == 'qualityEvaluate' ? 'calc(100% - 44px)' : '100%' }"> 776 <div class="detail-content"
777 :style="{ height: detailType == 'qualityEvaluate' || 'costAssess' ? 'calc(100% - 44px)' : '100%' }">
739 <div class="header"> 778 <div class="header">
740 <div class="left-img"></div> 779 <div class="left-img"></div>
741 <div class="right-main"> 780 <div class="right-main">
...@@ -854,11 +893,10 @@ const rejectDialogBtnClick = (btn, info) => { ...@@ -854,11 +893,10 @@ const rejectDialogBtnClick = (btn, info) => {
854 </el-table-column> 893 </el-table-column>
855 </el-table> 894 </el-table>
856 </ContentWrap> 895 </ContentWrap>
857 <ContentWrap v-if="route.query.type == 'qualityEvaluate'" id="id-assetContent" title="附件信息" description="" 896 <ContentWrap v-if="route.query.type == 'qualityEvaluate' || 'costAssess'" id="id-assetContent" title="附件信息"
858 style="margin: 16px 16px 16px"> 897 description="" style="margin: 16px 16px 16px">
859 <div class="list_panel mt4"> 898 <div class="list_panel mt4">
860 <div class="list_item is_block isFile" v-if="evaDetailInfo?.qualityEvaluationFile?.length" 899 <div class="list_item isFile" v-if="evaDetailInfo?.qualityEvaluationFile?.length" :style="{ width: '40%' }">
861 :style="{ width: '40%' }">
862 <span class="item_label" :style="{ width: 'auto', 'text-align': 'left' }">数据质量评价收集</span> 900 <span class="item_label" :style="{ width: 'auto', 'text-align': 'left' }">数据质量评价收集</span>
863 <span v-for="(item) in (evaDetailInfo?.qualityEvaluationFile || [])" class="item_value" 901 <span v-for="(item) in (evaDetailInfo?.qualityEvaluationFile || [])" class="item_value"
864 :style="{ 'padding-left': '0px' }"> 902 :style="{ 'padding-left': '0px' }">
...@@ -895,6 +933,43 @@ const rejectDialogBtnClick = (btn, info) => { ...@@ -895,6 +933,43 @@ const rejectDialogBtnClick = (btn, info) => {
895 </div> 933 </div>
896 </span> 934 </span>
897 </div> 935 </div>
936 <div class="list_item isFile" v-if="costAssessDetail?.costAssessmentFile?.length" :style="{ width: '40%' }">
937 <span class="item_label" :style="{ width: 'auto', 'text-align': 'left' }">价值评估收集附件</span>
938 <span v-for="(item) in (costAssessDetail?.costAssessmentFile || [])" class="item_value"
939 :style="{ 'padding-left': '0px' }">
940 <div class="file-operate">
941 <template
942 v-if="item.name.substring(item.name.lastIndexOf('.') + 1) == 'xls' || item.name.substring(item.name.lastIndexOf('.') + 1) == 'xlsx' || item.name.substring(item.name.lastIndexOf('.') + 1) == 'csv'">
943 <img class="file-img" src="../../assets/images/excel.png" />
944 </template>
945 <template
946 v-else-if="item.name.substring(item.name.lastIndexOf('.') + 1) == 'doc' || item.name.substring(item.name.lastIndexOf('.') + 1) == 'docx'">
947 <img class="file-img" src="../../assets/images/word.png" />
948 </template>
949 <template v-else-if="item.name.substring(item.name.lastIndexOf('.') + 1) == 'zip'">
950 <img class="file-img" src="../../assets/images/zip.png" />
951 </template>
952 <template v-else-if="item.name.substring(item.name.lastIndexOf('.') + 1) == 'rar'">
953 <img class="file-img" src="../../assets/images/RAR.png" />
954 </template>
955 <template v-else-if="item.name.substring(item.name.lastIndexOf('.') + 1) == 'pdf'">
956 <img class="file-img" src="../../assets/images/PDF.png" />
957 </template>
958 <template v-else-if="item.name.substring(item.name.lastIndexOf('.') + 1) == 'png'">
959 <img class="file-img" src="../../assets/images/png.png" />
960 </template>
961 <template
962 v-else-if="item.name.substring(item.name.lastIndexOf('.') + 1) == 'jpg' || item.name.substring(item.name.lastIndexOf('.') + 1) == 'jpeg'">
963 <img class="file-img" src="../../assets/images/jpg.png" />
964 </template>
965 <div class="file-name">{{ item.name }}</div>
966 <div :style="{ right: '36px' }"
967 v-if="item.name.substring(item.name.lastIndexOf('.') + 1) == 'pdf' || item.name.substring(item.name.lastIndexOf('.') + 1) == 'png' || item.name.substring(item.name.lastIndexOf('.') + 1) == 'jpg' || item.name.substring(item.name.lastIndexOf('.') + 1) == 'jpeg'"
968 class="file-preview" @click="onUploadFilePreview(item)">查看</div>
969 <div :style="{ right: '0px' }" class="file-preview" @click="onUploadFileDownload(item)">下载</div>
970 </div>
971 </span>
972 </div>
898 </div> 973 </div>
899 </ContentWrap> 974 </ContentWrap>
900 <ContentWrap id="id-qualityEvaluate" 975 <ContentWrap id="id-qualityEvaluate"
...@@ -929,6 +1004,38 @@ const rejectDialogBtnClick = (btn, info) => { ...@@ -929,6 +1004,38 @@ const rejectDialogBtnClick = (btn, info) => {
929 </div> 1004 </div>
930 </div> 1005 </div>
931 </ContentWrap> 1006 </ContentWrap>
1007
1008 <ContentWrap id="id-costAssess" title="价值评估" description="资产价值评估信息" style="margin: 16px 16px 16px"
1009 v-if="route.query.type == 'costAssess' && evaDetailInfo.assessmentMoney != null">
1010 <div class="list_panel">
1011 <div class="list_item">
1012 <span class="item_label">评估金额:</span>
1013 <span class="item_value">{{ formattedAmount }}</span>
1014 </div>
1015 <div class="list_item" :style="{ width: '60%' }">
1016 <span class="item_label">评价日期:</span>
1017 <span class="item_value">{{ costAssessDetail.assessmentDate }}</span>
1018 </div>
1019 <div class="list_item is_block">
1020 <span class="item_label">价值评估说明:</span>
1021 <span class="item_value">{{ costAssessDetail.assessmentNote ?? '--' }}</span>
1022 </div>
1023 <div class="list_item is_block" :style="{ 'max-width': '700px' }">
1024 <span class="item_label">价值评估报告:</span>
1025 <span class="item_value">
1026 <div class="file-operate">
1027 <img class="file-img" src="../../assets/images/PDF.png" />
1028 <div class="file-name">{{ costAssessDetail.assessmentFile?.[0]?.name }}</div>
1029 <div :style="{ right: '36px' }" class="file-preview"
1030 @click="onUploadFilePreview(costAssessDetail.assessmentFile?.[0])">查看</div>
1031 <div :style="{ right: '0px' }" class="file-preview"
1032 @click="onUploadFileDownload(costAssessDetail.assessmentFile?.[0])">下载</div>
1033 </div>
1034 </span>
1035 </div>
1036 </div>
1037 </ContentWrap>
1038
932 <ContentWrap v-if="route.query.type == 'qualityEvaluate' || 'costAssess'" id="id-approveInfo" title="审批信息" 1039 <ContentWrap v-if="route.query.type == 'qualityEvaluate' || 'costAssess'" id="id-approveInfo" title="审批信息"
933 description="" style="margin: 16px 16px 16px"> 1040 description="" style="margin: 16px 16px 16px">
934 <ApprovalProcess v-if="deploymentId" :deploymentId="deploymentId" :processInstanceId="processInstanceId"> 1041 <ApprovalProcess v-if="deploymentId" :deploymentId="deploymentId" :processInstanceId="processInstanceId">
......
...@@ -128,6 +128,8 @@ const getDetailInfo = () => { ...@@ -128,6 +128,8 @@ const getDetailInfo = () => {
128 const data = res.data || {}; 128 const data = res.data || {};
129 costAssessDetailInfo.value = data; 129 costAssessDetailInfo.value = data;
130 detailInfo.value = data; 130 detailInfo.value = data;
131 deploymentId.value = data.approveVO.camundaDeploymentId;
132 processInstanceId.value = data.approveVO?.camundaInstanceId;
131 // 需要显示价值评估信息 133 // 需要显示价值评估信息
132 if (data.assessmentMoney != null) { 134 if (data.assessmentMoney != null) {
133 if (tabsInfo.value.tabs.length == 4) { 135 if (tabsInfo.value.tabs.length == 4) {
...@@ -246,29 +248,29 @@ const getDetailInfo = () => { ...@@ -246,29 +248,29 @@ const getDetailInfo = () => {
246 }).catch(() => { 248 }).catch(() => {
247 fullscreenLoading.value = false; 249 fullscreenLoading.value = false;
248 })); 250 }));
249 ps.push(getTenantDetailInfo(userData.tenantGuid).then((res: any) => { 251 // ps.push(getTenantDetailInfo(userData.tenantGuid).then((res: any) => {
250 if (res.code == proxy.$passCode) { 252 // if (res.code == proxy.$passCode) {
251 const data = res.data ?? {}; 253 // const data = res.data ?? {};
252 tentData = { ...tentData, ...data }; 254 // tentData = { ...tentData, ...data };
253 } else { 255 // } else {
254 ElMessage.error(res.msg); 256 // ElMessage.error(res.msg);
255 } 257 // }
256 })); 258 // }));
257 ps.push(getTenantInfo({ tenantName: userData.tenantName }).then((res: any) => { 259 // ps.push(getTenantInfo({ tenantName: userData.tenantName }).then((res: any) => {
258 if (res.code == proxy.$passCode) { 260 // if (res.code == proxy.$passCode) {
259 const data = res.data ?? {}; 261 // const data = res.data ?? {};
260 tentData = { ...tentData, ...data }; 262 // tentData = { ...tentData, ...data };
261 } else { 263 // } else {
262 ElMessage.error(res.msg); 264 // ElMessage.error(res.msg);
263 } 265 // }
264 })) 266 // }))
265 Promise.all(ps).then(() => { 267 Promise.all(ps).then(() => {
266 fullscreenLoading.value = false; 268 fullscreenLoading.value = false;
267 tenantDetail.value = tentData; 269 // tenantDetail.value = tentData;
268 isTextTruncated(); 270 isTextTruncated();
269 }) 271 })
270 } else { 272 } else {
271 let ps: any = [], tentData = {}; 273 let ps: any = []
272 ps.push(getRegiaterDetail({ guid: assetGuid }).then((res: any) => { 274 ps.push(getRegiaterDetail({ guid: assetGuid }).then((res: any) => {
273 if (res.code == proxy.$passCode) { 275 if (res.code == proxy.$passCode) {
274 const data = res.data || {}; 276 const data = res.data || {};
...@@ -282,26 +284,25 @@ const getDetailInfo = () => { ...@@ -282,26 +284,25 @@ const getDetailInfo = () => {
282 ElMessage.error(res.msg); 284 ElMessage.error(res.msg);
283 } 285 }
284 })); 286 }));
285 ps.push(getTenantDetailInfo(userData.tenantGuid).then((res: any) => { 287 // ps.push(getTenantDetailInfo(userData.tenantGuid).then((res: any) => {
286 if (res.code == proxy.$passCode) { 288 // if (res.code == proxy.$passCode) {
287 const data = res.data ?? {}; 289 // const data = res.data ?? {};
288 tentData = { ...tentData, ...data }; 290 // tentData = { ...tentData, ...data };
289 } else { 291 // } else {
290 ElMessage.error(res.msg); 292 // ElMessage.error(res.msg);
291 } 293 // }
292 })); 294 // }));
293 ps.push(getTenantInfo({ tenantName: userData.tenantName }).then((res: any) => { 295 // ps.push(getTenantInfo({ tenantName: userData.tenantName }).then((res: any) => {
294 if (res.code == proxy.$passCode) { 296 // if (res.code == proxy.$passCode) {
295 const data = res.data ?? {}; 297 // const data = res.data ?? {};
296 tentData = { ...tentData, ...data }; 298 // tentData = { ...tentData, ...data };
297 } else { 299 // } else {
298 ElMessage.error(res.msg); 300 // ElMessage.error(res.msg);
299 } 301 // }
300 })) 302 // }))
301 303
302 Promise.all(ps).then(() => { 304 Promise.all(ps).then(() => {
303 fullscreenLoading.value = false; 305 fullscreenLoading.value = false;
304 tenantDetail.value = tentData;
305 }).catch(() => { 306 }).catch(() => {
306 fullscreenLoading.value = false; 307 fullscreenLoading.value = false;
307 }); 308 });
...@@ -322,9 +323,39 @@ const handleExpand = () => { ...@@ -322,9 +323,39 @@ const handleExpand = () => {
322 isExpanded.value = !isExpanded.value; 323 isExpanded.value = !isExpanded.value;
323 } 324 }
324 325
326 // 提取到 onBeforeMount 中的请求
327 const tentData = ref<any>({});
328 const getTenantInformation = () => {
329 const ps: any = [];
330
331 ps.push(getTenantDetailInfo(userData.tenantGuid).then((res: any) => {
332 if (res.code === proxy.$passCode) {
333 const data = res.data ?? {};
334 tentData.value = { ...tentData.value, ...data };
335 } else {
336 ElMessage.error(res.msg);
337 }
338 }));
339
340 ps.push(getTenantInfo({ tenantName: userData.tenantName }).then((res: any) => {
341 if (res.code === proxy.$passCode) {
342 const data = res.data ?? {};
343 tentData.value = { ...tentData.value, ...data };
344 } else {
345 ElMessage.error(res.msg);
346 }
347 }));
348
349 // 这里返回 Promise.all 来等待所有请求完成
350 return Promise.all(ps);
351 };
325 onBeforeMount(() => { 352 onBeforeMount(() => {
326 getDetailInfo(); 353 getDetailInfo();
327 // getTenantDetail(); 354 getTenantInformation().then(() => {
355 tenantDetail.value = { ...tentData.value }; // 将最终的数据赋值给 tenantDetail
356 }).catch(() => {
357 console.log('请求失败');
358 });
328 }); 359 });
329 360
330 onActivated(() => { 361 onActivated(() => {
...@@ -593,7 +624,7 @@ const passDialogTitle = computed(() => { ...@@ -593,7 +624,7 @@ const passDialogTitle = computed(() => {
593 } 624 }
594 }); 625 });
595 626
596 const qualityEvaluateFormItems = ref([ 627 const qualityEvaluateFormItems = ref<any>([
597 { 628 {
598 label: '质量得分', 629 label: '质量得分',
599 type: 'input', 630 type: 'input',
...@@ -953,11 +984,19 @@ const passDialogBtnClick = (btn, info) => { ...@@ -953,11 +984,19 @@ const passDialogBtnClick = (btn, info) => {
953 return; 984 return;
954 } 985 }
955 submitPromise.value = costAssessAllow({ 986 submitPromise.value = costAssessAllow({
956 guid: detailInfo.value.guid, 987 bizGuid: detailInfo.value.guid,
988 flowType: detailInfo.value.approveVO.flowType,
989 approveStaffGuid: userData.staffGuid,
990 guid: detailInfo.value.approveVO.approveGuid,
957 assessmentMoney: info.assessmentMoney, 991 assessmentMoney: info.assessmentMoney,
958 assessmentDate: info.assessmentDate, 992 assessmentDate: info.assessmentDate,
959 assessmentNote: info.assessmentNote, 993 assessmentNote: info.assessmentNote,
960 assessmentFile: info.assessmentFile.map(f => f.url), 994 assessmentFile: info.assessmentFile.map(file => {
995 return {
996 name: file.name,
997 url: file.url
998 }
999 }) || [],
961 }).then((res: any) => { 1000 }).then((res: any) => {
962 submitPromise.value = null; 1001 submitPromise.value = null;
963 if (res?.code == proxy.$passCode) { 1002 if (res?.code == proxy.$passCode) {
...@@ -1303,7 +1342,8 @@ const formattedDate = (dateVal) => { ...@@ -1303,7 +1342,8 @@ const formattedDate = (dateVal) => {
1303 <div class="list_item is_block isFile" :style="{ width: '40%' }" 1342 <div class="list_item is_block isFile" :style="{ width: '40%' }"
1304 v-if="((detailType != 'asset' || assetDetailInfo.isEvaluationAssessment == 'Y') && assetDetailInfo.registerAttachment?.qualityEvaluationFile?.length) || (evaDetailInfo?.qualityEvaluationFile?.length > 0)"> 1343 v-if="((detailType != 'asset' || assetDetailInfo.isEvaluationAssessment == 'Y') && assetDetailInfo.registerAttachment?.qualityEvaluationFile?.length) || (evaDetailInfo?.qualityEvaluationFile?.length > 0)">
1305 <span class="item_label" :style="{ width: 'auto', 'text-align': 'left' }">数据质量评价收集</span> 1344 <span class="item_label" :style="{ width: 'auto', 'text-align': 'left' }">数据质量评价收集</span>
1306 <span v-for="(item) in (evaDetailInfo?.qualityEvaluationFile || assetDetailInfo.registerAttachment?.qualityEvaluationFile || [])" 1345 <span
1346 v-for="(item) in (evaDetailInfo?.qualityEvaluationFile || assetDetailInfo.registerAttachment?.qualityEvaluationFile || [])"
1307 class="item_value" :style="{ 'padding-left': '0px' }"> 1347 class="item_value" :style="{ 'padding-left': '0px' }">
1308 <div class="file-operate"> 1348 <div class="file-operate">
1309 <template 1349 <template
...@@ -1453,6 +1493,44 @@ const formattedDate = (dateVal) => { ...@@ -1453,6 +1493,44 @@ const formattedDate = (dateVal) => {
1453 </div> 1493 </div>
1454 </span> 1494 </span>
1455 </div> 1495 </div>
1496 <div class="list_item is_block isFile" :style="{ width: '40%', 'margin-right': '28px' }"
1497 v-if="(detailType == 'costAssess' && costAssessDetailInfo.costAssessmentFile?.length)">
1498 <span class="item_label" :style="{ width: 'auto', 'text-align': 'left' }">价值评估收集附件</span>
1499 <span v-for="(item) in (costAssessDetailInfo.costAssessmentFile || [])" class="item_value"
1500 :style="{ 'padding-left': '0px' }">
1501 <div class="file-operate">
1502 <template
1503 v-if="item.name.substring(item.name.lastIndexOf('.') + 1) == 'xls' || item.name.substring(item.name.lastIndexOf('.') + 1) == 'xlsx' || item.name.substring(item.name.lastIndexOf('.') + 1) == 'csv'">
1504 <img class="file-img" src="../../assets/images/excel.png" />
1505 </template>
1506 <template
1507 v-else-if="item.name.substring(item.name.lastIndexOf('.') + 1) == 'doc' || item.name.substring(item.name.lastIndexOf('.') + 1) == 'docx'">
1508 <img class="file-img" src="../../assets/images/word.png" />
1509 </template>
1510 <template v-else-if="item.name.substring(item.name.lastIndexOf('.') + 1) == 'zip'">
1511 <img class="file-img" src="../../assets/images/zip.png" />
1512 </template>
1513 <template v-else-if="item.name.substring(item.name.lastIndexOf('.') + 1) == 'rar'">
1514 <img class="file-img" src="../../assets/images/RAR.png" />
1515 </template>
1516 <template v-else-if="item.name.substring(item.name.lastIndexOf('.') + 1) == 'pdf'">
1517 <img class="file-img" src="../../assets/images/PDF.png" />
1518 </template>
1519 <template v-else-if="item.name.substring(item.name.lastIndexOf('.') + 1) == 'png'">
1520 <img class="file-img" src="../../assets/images/png.png" />
1521 </template>
1522 <template
1523 v-else-if="item.name.substring(item.name.lastIndexOf('.') + 1) == 'jpg' || item.name.substring(item.name.lastIndexOf('.') + 1) == 'jpeg'">
1524 <img class="file-img" src="../../assets/images/jpg.png" />
1525 </template>
1526 <div class="file-name">{{ item.name }}</div>
1527 <div :style="{ right: '36px' }"
1528 v-if="item.name.substring(item.name.lastIndexOf('.') + 1) == 'pdf' || item.name.substring(item.name.lastIndexOf('.') + 1) == 'png' || item.name.substring(item.name.lastIndexOf('.') + 1) == 'jpg' || item.name.substring(item.name.lastIndexOf('.') + 1) == 'jpeg'"
1529 class="file-preview" @click="onUploadFilePreview(item)">查看</div>
1530 <div :style="{ right: '0px' }" class="file-preview" @click="onUploadFileDownload(item)">下载</div>
1531 </div>
1532 </span>
1533 </div>
1456 <!-- <span 1534 <!-- <span
1457 v-if="tenantDetail.businessLicense?.length || assetDetailInfo.registerAttachment?.commitmentLetter?.length" 1535 v-if="tenantDetail.businessLicense?.length || assetDetailInfo.registerAttachment?.commitmentLetter?.length"
1458 class="small-title" :style="{ marginTop: '10px' }">公司信息</span> --> 1536 class="small-title" :style="{ marginTop: '10px' }">公司信息</span> -->
......
...@@ -41,7 +41,7 @@ const attachDataInfo: any = ref({}); ...@@ -41,7 +41,7 @@ const attachDataInfo: any = ref({});
41 41
42 const tableFields = ref([ 42 const tableFields = ref([
43 { label: "序号", type: "index", width: 56, align: "center" }, 43 { label: "序号", type: "index", width: 56, align: "center" },
44 { label: "资产名称", field: "daName", width: 160, align: "left" }, 44 { label: "资产名称", field: "daName", width: 160, align: "left", type: 'text_btn', value: 'productDetail', columClass: 'text_btn' },
45 { label: "登记时间", field: "registerTime", width: 120 }, 45 { label: "登记时间", field: "registerTime", width: 120 },
46 // { label: "企业名称", field: "tenantName", width: 240, align: "left" }, 46 // { label: "企业名称", field: "tenantName", width: 240, align: "left" },
47 { label: "评估机构", field: "issuingEntityName", width: 250, align: "left" }, 47 { label: "评估机构", field: "issuingEntityName", width: 250, align: "left" },
...@@ -184,6 +184,7 @@ const handleCreate = () => { ...@@ -184,6 +184,7 @@ const handleCreate = () => {
184 ElMessage.warning('当前没有可发起价值评估的资产!'); 184 ElMessage.warning('当前没有可发起价值评估的资产!');
185 return; 185 return;
186 } 186 }
187 formItems.value[4].placeholder = `本次评估数据资产总体质量得分为**分\n准确性:\n一致性:\n可访问性:\n规范性:\n完整性:`;
187 formItems.value[0].visible = true; 188 formItems.value[0].visible = true;
188 formItems.value[0].default = ''; 189 formItems.value[0].default = '';
189 formItems.value[1].visible = true; 190 formItems.value[1].visible = true;
...@@ -313,20 +314,20 @@ const tableBtnClick = (scope, btn) => { ...@@ -313,20 +314,20 @@ const tableBtnClick = (scope, btn) => {
313 currTableData.value = row; 314 currTableData.value = row;
314 if (type == "redit") { 315 if (type == "redit") {
315 if (!row.registerGuid) { 316 if (!row.registerGuid) {
316 formItems.value[2].visible = false; 317 formItems.value[2].visible = true;
317 formItems.value[3].visible = false; 318 formItems.value[3].visible = true;
318 formItems.value[4].visible = false; 319 formItems.value[4].visible = true;
319 formItems.value[5].visible = false; 320 formItems.value[5].visible = true;
320 formItems.value[0].visible = false; 321 formItems.value[0].visible = false;
321 formItems.value[0].default = row.damGuid; 322 formItems.value[0].default = row.damGuid;
322 formItems.value[1].default = row.costAssessmentFile || []; 323 formItems.value[1].default = row.costAssessmentFile || [];
323 dialogInfo.value.type = 'reSubmit'; 324 dialogInfo.value.type = 'reSubmit';
324 dialogInfo.value.visible = true; 325 dialogInfo.value.visible = true;
325 } else { 326 } else {
326 formItems.value[2].visible = true; 327 formItems.value[2].visible = false;
327 formItems.value[3].visible = true; 328 formItems.value[3].visible = false;
328 formItems.value[4].visible = true; 329 formItems.value[4].visible = false;
329 formItems.value[5].visible = true; 330 formItems.value[5].visible = false;
330 formItems.value[0].visible = false; 331 formItems.value[0].visible = false;
331 formItems.value[0].default = row.damGuid; 332 formItems.value[0].default = row.damGuid;
332 formItems.value[1].default = row.costAssessmentFile || []; 333 formItems.value[1].default = row.costAssessmentFile || [];
...@@ -371,12 +372,12 @@ const tableBtnClick = (scope, btn) => { ...@@ -371,12 +372,12 @@ const tableBtnClick = (scope, btn) => {
371 } else if (type === 'detail') { // 详情 372 } else if (type === 'detail') { // 详情
372 if (row.registerApproveState == 'Y') { 373 if (row.registerApproveState == 'Y') {
373 router.push({ 374 router.push({
374 name: 'registerDetail', 375 name: 'registerValueDetail',
375 query: { guid: row.registerGuid, costAssessGuid: row.guid, type: 'costAssess', daTenantGuid: row.tenantGuid } 376 query: { guid: row.registerGuid, costAssessGuid: row.guid, type: 'costAssess', daTenantGuid: row.tenantGuid }
376 }); 377 });
377 } else { 378 } else {
378 router.push({ 379 router.push({
379 name: 'evaCatalogDetail', 380 name: 'costAssessDetail',
380 query: { guid: row.damGuid, costAssessGuid: row.guid, type: 'costAssess' } 381 query: { guid: row.damGuid, costAssessGuid: row.guid, type: 'costAssess' }
381 }); 382 });
382 } 383 }
...@@ -560,7 +561,9 @@ const formItems = ref<any>([ ...@@ -560,7 +561,9 @@ const formItems = ref<any>([
560 { 561 {
561 label: '质量评估结果', 562 label: '质量评估结果',
562 type: 'textarea', 563 type: 'textarea',
563 placeholder: '请输入质量评估结果', 564 focusValue: true,
565 example: '示例:本次评估数据资产总体质量得分为99.80分。从评价维度分析,准确性、一致性和可访问性均为 100 分;规范性 99.42 分、完整性 99.50分。',
566 placeholder: `本次评估数据资产总体质量得分为**分\n准确性:\n一致性:\n可访问性:\n规范性:\n完整性:`,
564 field: 'evaluationNote', 567 field: 'evaluationNote',
565 default: '', 568 default: '',
566 maxlength: 250, 569 maxlength: 250,
...@@ -595,12 +598,41 @@ const formRules = ref({ ...@@ -595,12 +598,41 @@ const formRules = ref({
595 callback(); 598 callback();
596 } 599 }
597 }, trigger: 'change' 600 }, trigger: 'change'
598 }] 601 }],
602 qualityScore: [
603 { required: true, trigger: 'change', message: "请填写质量评分" }
604 ],
605 evaluationRange: [
606 { required: true, trigger: 'change', message: "请填写数据时间范围" }
607 ],
608 evaluationNote: [{
609 validator: (rule: any, value: any, callback: any) => {
610 if (!value) {
611 callback(new Error('请填写质量评价说明'));
612 return;
613 }
614 if (value && value.length > 500) {
615 callback(new Error('请填写小于500个字的质量评价说明'));
616 return;
617 }
618 callback();
619 },
620 trigger: "blur",
621 }],
622 evaluationFile: [{
623 validator: (rule: any, value: any, callback: any) => {
624 if (!value?.length) {
625 callback(new Error('请上传质量报告'))
626 } else {
627 callback();
628 }
629 }, trigger: 'change'
630 }],
599 }); 631 });
600 632
601 const dialogInfo = ref({ 633 const dialogInfo = ref({
602 visible: false, 634 visible: false,
603 size: 510, 635 size: 610,
604 direction: "column", 636 direction: "column",
605 header: { 637 header: {
606 title: "价值评估发起", 638 title: "价值评估发起",
...@@ -717,6 +749,7 @@ const dialogBtnClick = (btn, info) => { ...@@ -717,6 +749,7 @@ const dialogBtnClick = (btn, info) => {
717 dialogInfo.value.visible = false; 749 dialogInfo.value.visible = false;
718 page.value.curr = 1; 750 page.value.curr = 1;
719 getTableData(); 751 getTableData();
752 formItems.value[4].placeholder = `本次评估数据资产总体质量得分为**分\n准确性:\n一致性:\n可访问性:\n规范性:\n完整性:`;
720 } else { 753 } else {
721 ElMessage.error(res.msg); 754 ElMessage.error(res.msg);
722 } 755 }
......
...@@ -1492,7 +1492,7 @@ const timeRangeInfo = computed(() => { ...@@ -1492,7 +1492,7 @@ const timeRangeInfo = computed(() => {
1492 if (flowDetail.value.timeAreaStart && flowDetail.value.timeAreaEnd) { 1492 if (flowDetail.value.timeAreaStart && flowDetail.value.timeAreaEnd) {
1493 const startDate = flowDetail.value.timeAreaStart.split('T')[0]; 1493 const startDate = flowDetail.value.timeAreaStart.split('T')[0];
1494 const endDate = flowDetail.value.timeAreaEnd.split('T')[0]; 1494 const endDate = flowDetail.value.timeAreaEnd.split('T')[0];
1495 return `${startDate} - ${endDate}`; 1495 return `${startDate}${endDate}`;
1496 } 1496 }
1497 return '--'; 1497 return '--';
1498 }); 1498 });
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!