9fbd7335 by xukangle

Merge branch 'develop' into dev_20241202_xukangle

2 parents fc2f9600 e12d0c17
...@@ -37,7 +37,7 @@ VITE_BPMN_URL = https://workflow-swzl-test.csbr.cn ...@@ -37,7 +37,7 @@ VITE_BPMN_URL = https://workflow-swzl-test.csbr.cn
37 VITE_APP_WORK_FLOW_URL = 'ms-daop-workflow-service' 37 VITE_APP_WORK_FLOW_URL = 'ms-daop-workflow-service'
38 38
39 # 数据标准、元数据、数据目录 接口地址 39 # 数据标准、元数据、数据目录 接口地址
40 VITE_APP_PLAN_BASEURL = ms-daop-zcgl-data-plan-service 40 VITE_APP_PLAN_BASEURL = ms-daop-data-plan-service
41 41
42 #数据质量接口地址 42 #数据质量接口地址
43 VITE_APP_QUALITY_BASEURL = ms-daop-data-quality-service 43 VITE_APP_QUALITY_BASEURL = ms-daop-data-quality-service
......
...@@ -71,7 +71,7 @@ VITE_BPMN_URL = https://workflow-swzl-test.csbr.cn ...@@ -71,7 +71,7 @@ VITE_BPMN_URL = https://workflow-swzl-test.csbr.cn
71 VITE_APP_WORK_FLOW_URL = 'ms-daop-workflow-service' 71 VITE_APP_WORK_FLOW_URL = 'ms-daop-workflow-service'
72 72
73 # 数据标准、元数据、数据目录 接口地址 73 # 数据标准、元数据、数据目录 接口地址
74 VITE_APP_PLAN_BASEURL = ms-daop-zcgl-data-plan-service 74 VITE_APP_PLAN_BASEURL = ms-daop-data-plan-service
75 75
76 #数据质量接口地址 76 #数据质量接口地址
77 VITE_APP_QUALITY_BASEURL = ms-daop-data-quality-service 77 VITE_APP_QUALITY_BASEURL = ms-daop-data-quality-service
......
...@@ -84,9 +84,8 @@ export const getProduct = (params) => request({ ...@@ -84,9 +84,8 @@ export const getProduct = (params) => request({
84 }) 84 })
85 // 查看平台会员详情 85 // 查看平台会员详情
86 export const getTenantDetailInfo = (params) => request({ 86 export const getTenantDetailInfo = (params) => request({
87 url: `${import.meta.env.VITE_APP_API_BASEURL}/tenant/data/detail`, 87 url: `${import.meta.env.VITE_APP_PERSONAL_URL}/tenant/getByGuid/${params}`,
88 method: 'get', 88 method: 'get'
89 params
90 }) 89 })
91 90
92 91
...@@ -123,7 +122,7 @@ export const getServiceTenants = (params) => request({ ...@@ -123,7 +122,7 @@ export const getServiceTenants = (params) => request({
123 122
124 /** 获取会员的附件模板 */ 123 /** 获取会员的附件模板 */
125 export const getTenantAttach = (params) => request({ 124 export const getTenantAttach = (params) => request({
126 url: `${import.meta.env.VITE_APP_API_BASEURL}/attachment-template/list-attachment?tenantGuid=${params}`, 125 url: `${import.meta.env.VITE_APP_PERSONAL_URL}/attachment-template/list-attachment?tenantGuid=${params}`,
127 method: 'get' 126 method: 'get'
128 }) 127 })
129 128
......
...@@ -35,7 +35,7 @@ const routes: RouteRecordRaw[] = [ ...@@ -35,7 +35,7 @@ const routes: RouteRecordRaw[] = [
35 reuse: true 35 reuse: true
36 }, 36 },
37 beforeEnter: (to, from) => { 37 beforeEnter: (to, from) => {
38 to.meta.title = to.query.type == 'edit' ? `编辑-${to.query.name}` : '新建资产登记'; 38 to.meta.title = to.query.type == 'create' ? '新建资产登记' : `编辑-${to.query.name}`;
39 to.meta.editPage = true; 39 to.meta.editPage = true;
40 } 40 }
41 }, 41 },
......
...@@ -4,7 +4,7 @@ import router from '@/router' ...@@ -4,7 +4,7 @@ import router from '@/router'
4 import { ElMessage } from 'element-plus' 4 import { ElMessage } from 'element-plus'
5 import apiUser from '@/api/modules/user' 5 import apiUser from '@/api/modules/user'
6 import { getCurrentTime } from '@/utils/common' 6 import { getCurrentTime } from '@/utils/common'
7 import { getSystemMenu, getUserInfo, getTokenByCode, loginOut, refreshToken, editPasswordInterface, getCurrentUserInfo, getCurrentUserInfo } from '@/api/modules/queryService' 7 import { getSystemMenu, getUserInfo, getTokenByCode, loginOut, refreshToken, editPasswordInterface, getCurrentUserInfo } from '@/api/modules/queryService'
8 8
9 const useUserStore = defineStore( 9 const useUserStore = defineStore(
10 // 唯一ID 10 // 唯一ID
......
...@@ -692,4 +692,4 @@ const rejectDialogBtnClick = (btn, info) => { ...@@ -692,4 +692,4 @@ const rejectDialogBtnClick = (btn, info) => {
692 .container_wrap { 692 .container_wrap {
693 padding: 0 16px; 693 padding: 0 16px;
694 } 694 }
695 </style>
...\ No newline at end of file ...\ No newline at end of file
695 </style>
......
...@@ -27,6 +27,7 @@ import { ...@@ -27,6 +27,7 @@ import {
27 getTenantDetailInfo, 27 getTenantDetailInfo,
28 getImageContent 28 getImageContent
29 } from "@/api/modules/queryService"; 29 } from "@/api/modules/queryService";
30 import { passFlowData, rejectFlowData, revokeFlowData } from "@/api/modules/workFlowService";
30 import useDataAssetStore from "@/store/modules/dataAsset"; 31 import useDataAssetStore from "@/store/modules/dataAsset";
31 import { changeNum, getDownloadUrl, download } from '@/utils/common'; 32 import { changeNum, getDownloadUrl, download } from '@/utils/common';
32 33
...@@ -256,16 +257,10 @@ const getDetailInfo = () => { ...@@ -256,16 +257,10 @@ const getDetailInfo = () => {
256 fullscreenLoading.value = false; 257 fullscreenLoading.value = false;
257 if (res.code == proxy.$passCode) { 258 if (res.code == proxy.$passCode) {
258 const data = res.data || {}; 259 const data = res.data || {};
260 let { approveVO } = data;
259 detailInfo.value = data; 261 detailInfo.value = data;
260 assetDetailInfo.value = data; 262 assetDetailInfo.value = data;
261 deploymentId.value = data.camundaDeploymentId; 263 deploymentId.value = approveVO.camundaDeploymentId;
262 // if (fullPath === route.fullPath) {
263 // document.title = `详情-${data.daName}`;
264 // }
265 // let tab: any = userStore.tabbar.find((tab: any) => tab.fullPath === fullPath);
266 // if (tab) {
267 // tab.meta.title = `详情-${data.daName}`;
268 // }
269 isTextTruncated(); 264 isTextTruncated();
270 } else { 265 } else {
271 ElMessage.error(res.msg); 266 ElMessage.error(res.msg);
...@@ -290,7 +285,7 @@ const handleExpand = () => { ...@@ -290,7 +285,7 @@ const handleExpand = () => {
290 285
291 onBeforeMount(() => { 286 onBeforeMount(() => {
292 getDetailInfo(); 287 getDetailInfo();
293 getTenantDetail(); 288 daTenantGuid.value && getTenantDetail();
294 }); 289 });
295 290
296 onActivated(() => { 291 onActivated(() => {
...@@ -405,7 +400,7 @@ const tenantDetail: any = ref({}); ...@@ -405,7 +400,7 @@ const tenantDetail: any = ref({});
405 400
406 /** 获取当前登录会员,服务商,企业等详情。 */ 401 /** 获取当前登录会员,服务商,企业等详情。 */
407 const getTenantDetail = () => { 402 const getTenantDetail = () => {
408 getTenantDetailInfo({ guid: daTenantGuid.value }).then((res: any) => { 403 getTenantDetailInfo(daTenantGuid.value).then((res: any) => {
409 if (res.code == proxy.$passCode) { 404 if (res.code == proxy.$passCode) {
410 const data = res.data ?? {}; 405 const data = res.data ?? {};
411 tenantDetail.value = data; 406 tenantDetail.value = data;
...@@ -502,10 +497,11 @@ const btnClick = (btn) => { ...@@ -502,10 +497,11 @@ const btnClick = (btn) => {
502 type: 'warning', 497 type: 'warning',
503 }).then(() => { 498 }).then(() => {
504 let params = { 499 let params = {
505 bizGuid: detailInfo.value.guid, 500 guid: detailInfo.value.approveVO.approveGuid,
506 funcCode: detailInfo.value.funcCode 501 flowType: detailInfo.value.approveVO.flowType,
502 approveStaffGuid: userData.staffGuid,
507 } 503 }
508 registerApproveCancel(params).then((res: any) => { 504 revokeFlowData(params).then((res: any) => {
509 if (res?.code == proxy.$passCode) { 505 if (res?.code == proxy.$passCode) {
510 if (res.data) { 506 if (res.data) {
511 ElMessage.success('该审批流程撤销成功!'); 507 ElMessage.success('该审批流程撤销成功!');
...@@ -849,11 +845,12 @@ const passDialogBtnClick = (btn, info) => { ...@@ -849,11 +845,12 @@ const passDialogBtnClick = (btn, info) => {
849 return; 845 return;
850 } 846 }
851 let params = { 847 let params = {
852 bizGuid: detailInfo.value.guid, 848 guid: detailInfo.value.approveVO.approveGuid,
853 funcCode: detailInfo.value.funcCode, 849 flowType: detailInfo.value.approveVO.flowType,
854 approveSuggest: info.approveSuggest 850 approveSuggest: info.approveSuggest,
851 approveStaffGuid: userData.staffGuid,
855 } 852 }
856 submitPromise.value = registerApproveAllow(params).then((res: any) => { 853 submitPromise.value = passFlowData(params).then((res: any) => {
857 submitPromise.value = null; 854 submitPromise.value = null;
858 if (res?.code == proxy.$passCode) { 855 if (res?.code == proxy.$passCode) {
859 if (res.data) { 856 if (res.data) {
...@@ -986,11 +983,12 @@ const rejectDialogBtnClick = (btn, info) => { ...@@ -986,11 +983,12 @@ const rejectDialogBtnClick = (btn, info) => {
986 } 983 }
987 //资产登记的驳回。 984 //资产登记的驳回。
988 let params = { 985 let params = {
989 bizGuid: detailInfo.value.guid, 986 guid: detailInfo.value.approveVO.approveGuid,
990 funcCode: detailInfo.value.funcCode, 987 flowType: detailInfo.value.approveVO.flowType,
991 approveSuggest: info.approveSuggest 988 approveSuggest: info.approveSuggest,
989 approveStaffGuid: userData.staffGuid,
992 } 990 }
993 registerApproveBackup(params).then((res: any) => { 991 rejectFlowData(params).then((res: any) => {
994 if (res?.code == proxy.$passCode) { 992 if (res?.code == proxy.$passCode) {
995 if (res.data) { 993 if (res.data) {
996 ElMessage.success('驳回成功'); 994 ElMessage.success('驳回成功');
...@@ -1124,30 +1122,35 @@ const handleClickDamCatalogDetail = () => { ...@@ -1124,30 +1122,35 @@ const handleClickDamCatalogDetail = () => {
1124 <div style="display: flex;align-items: center;"> 1122 <div style="display: flex;align-items: center;">
1125 <div class="title1">{{ assetDetailInfo.daName ?? '--' }}</div> 1123 <div class="title1">{{ assetDetailInfo.daName ?? '--' }}</div>
1126 <div v-if="assetDetailInfo.dataSensitivityLevelName?.length" class="dataLabel">{{ 1124 <div v-if="assetDetailInfo.dataSensitivityLevelName?.length" class="dataLabel">{{
1127 (assetDetailInfo.dataSensitivityLevelName?.filter(u => u != '其他')?.join('、') + 1125 (assetDetailInfo.dataSensitivityLevelName?.filter(u => u != '其他')?.join('、') +
1128 (assetDetailInfo.dataSensitivityLevelOther ? `、${assetDetailInfo.dataSensitivityLevelOther}` : '')) 1126 (assetDetailInfo.dataSensitivityLevelOther ? `、${assetDetailInfo.dataSensitivityLevelOther}` : ''))
1129 }} 1127 }}
1130 </div> 1128 </div>
1131 <div v-if="assetDetailInfo.bizOwnName?.length" class="dataLabel">{{ 1129 <div v-if="assetDetailInfo.bizOwnName?.length" class="dataLabel">{{
1132 assetDetailInfo.bizOwnName?.filter(u => u != '其他')?.join('、') + (assetDetailInfo.bizOwn?.includes(4) 1130 assetDetailInfo.bizOwnName?.filter(u => u != '其他')?.join('、') + (assetDetailInfo.bizOwn?.includes(4)
1133 ? 1131 ?
1134 ((assetDetailInfo.bizOwnName?.length > 1 ? '、' : '') + assetDetailInfo.bizOwnOther) : '') }}</div> 1132 ((assetDetailInfo.bizOwnName?.length > 1 ? '、' : '') + assetDetailInfo.bizOwnOther) : '') }}</div>
1135 <div :class="['dataLabel', assetDetailInfo.isPersonalInfo != 'Y' ? 'dataLabel1' : '']">{{ 1133 <div :class="['dataLabel', assetDetailInfo.isPersonalInfo != 'Y' ? 'dataLabel1' : '']">{{
1136 assetDetailInfo.isPersonalInfo == 'Y' ? '涉及个人信息' : '不涉及个人信息' }}</div> 1134 assetDetailInfo.isPersonalInfo == 'Y' ? '涉及个人信息' : '不涉及个人信息' }}</div>
1137 </div> 1135 </div>
1138 <div style="display: flex"> 1136 <div style="display: flex">
1139 <div v-if="tabsInfo.tabs.find(t => t.name == 'qualityEvaluate')" class="right-label" :style="{ 'margin-right': tabsInfo.tabs.find(t => t.name == 'costAssess') ? '8px' : '0px' }">评分:<span 1137 <div v-if="tabsInfo.tabs.find(t => t.name == 'qualityEvaluate')" class="right-label"
1140 style="color: var(--el-color-primary);font-weight: 600;font-size: 16px;">{{ evaDetailInfo.qualityScore + '分' }}</span> 1138 :style="{ 'margin-right': tabsInfo.tabs.find(t => t.name == 'costAssess') ? '8px' : '0px' }">
1139 评分:<span style="color: var(--el-color-primary);font-weight: 600;font-size: 16px;">{{
1140 evaDetailInfo.qualityScore + '分' }}</span>
1141 </div> 1141 </div>
1142 <div v-if="tabsInfo.tabs.find(t => t.name == 'costAssess')" class="right-label">价值:<span 1142 <div v-if="tabsInfo.tabs.find(t => t.name == 'costAssess')" class="right-label">价值:<span
1143 style="color: var(--el-color-primary);font-weight: 600;font-size: 16px">{{ changeNum(costAssessDetailInfo.assessmentMoney ?? 0, 2, true) + '元' }}</span> 1143 style="color: var(--el-color-primary);font-weight: 600;font-size: 16px">{{
1144 changeNum(costAssessDetailInfo.assessmentMoney ?? 0, 2, true) + '元' }}</span>
1144 </div> 1145 </div>
1145 </div> 1146 </div>
1146 </div> 1147 </div>
1147 <div class="applicationScenarios" 1148 <div class="applicationScenarios"
1148 :style="{ 'margin-right': (isTruncated && !isExpanded) ? '30px' : '0px', WebkitLineClamp: (!isTruncated ? 'inherit' : (isExpanded ? 'inherit' : 2)), WebkitBoxOrient: 'vertical' }"> 1149 :style="{ 'margin-right': (isTruncated && !isExpanded) ? '30px' : '0px', WebkitLineClamp: (!isTruncated ? 'inherit' : (isExpanded ? 'inherit' : 2)), WebkitBoxOrient: 'vertical' }">
1149 {{ assetDetailInfo.applicationScenarios || '--' }}<span v-if="isTruncated" class="text_btn expand_btn" :style="{ position: isExpanded ? 'inherit' : 'absolute', 'margin-left': isExpanded ? '4px' : '0px' }" @click="handleExpand()" v-preReClick>{{ isExpanded ? 1150 {{ assetDetailInfo.applicationScenarios || '--' }}<span v-if="isTruncated" class="text_btn expand_btn"
1150 '收起' : '展开' }}</span></div> 1151 :style="{ position: isExpanded ? 'inherit' : 'absolute', 'margin-left': isExpanded ? '4px' : '0px' }"
1152 @click="handleExpand()" v-preReClick>{{ isExpanded ?
1153 '收起' : '展开' }}</span></div>
1151 </div> 1154 </div>
1152 </div> 1155 </div>
1153 <div class="info-content"> 1156 <div class="info-content">
...@@ -1160,27 +1163,36 @@ const handleClickDamCatalogDetail = () => { ...@@ -1160,27 +1163,36 @@ const handleClickDamCatalogDetail = () => {
1160 <div class="list_item"> 1163 <div class="list_item">
1161 <span class="item_label">保护情况:</span> 1164 <span class="item_label">保护情况:</span>
1162 <span class="item_value">{{ (assetDetailInfo.dataProtection == 6 ? assetDetailInfo.dataProtectionOther : 1165 <span class="item_value">{{ (assetDetailInfo.dataProtection == 6 ? assetDetailInfo.dataProtectionOther :
1163 assetDetailInfo.dataProtectionName) ?? '--' }}</span> 1166 assetDetailInfo.dataProtectionName) ?? '--' }}</span>
1164 </div> 1167 </div>
1165 <div class="list_item"> 1168 <div class="list_item">
1166 <span class="item_label">所属行业:</span> 1169 <span class="item_label">所属行业:</span>
1167 <span class="item_value"><ellipsis-tooltip :content="(assetDetailInfo.ownIndustryName?.filter(u => u != '其他')?.join(',') + 1170 <span class="item_value"><ellipsis-tooltip
1168 (assetDetailInfo.ownIndustry?.includes(4) 1171 :content="(assetDetailInfo.ownIndustryName?.filter(u => u != '其他')?.join(',') +
1169 ? ((assetDetailInfo.ownIndustryName?.length > 1 ? ',' : '') + assetDetailInfo.ownIndustryOther) : '')) ?? '--'" 1172 (assetDetailInfo.ownIndustry?.includes(4)
1170 class-name="w100f" :refName="'tooltipOver' + 'ownIndustryName'"></ellipsis-tooltip></span> 1173 ? ((assetDetailInfo.ownIndustryName?.length > 1 ? ',' : '') + assetDetailInfo.ownIndustryOther) : '')) ?? '--'" class-name="w100f"
1174 :refName="'tooltipOver' + 'ownIndustryName'"></ellipsis-tooltip></span>
1171 </div> 1175 </div>
1172 <div class="list_item"> 1176 <div class="list_item">
1173 <span class="item_label">本次登记:</span> 1177 <span class="item_label">本次登记:</span>
1174 <span class="item_value"><ellipsis-tooltip :content="assetDetailInfo.exchangeName ?? '--'" 1178 <span class="item_value"><ellipsis-tooltip :content="assetDetailInfo.exchangeName ?? '--'"
1175 class-name="w100f" :refName="'tooltipOver' + 'exchangeName'"></ellipsis-tooltip></span> 1179 class-name="w100f" :refName="'tooltipOver' + 'exchangeName'"></ellipsis-tooltip></span>
1176 </div> 1180 </div>
1177 <div class="list_item"> 1181 <div class="list_item">
1178 <span class="item_label">数据规模():</span> 1182 <span class="item_label">数据规模():</span>
1179 <span class="item_value">{{ assetDetailInfo.dataScale !=null ? changeNum(assetDetailInfo.dataScale, 0) : '--' }}</span> 1183 <span class="item_value">{{ assetDetailInfo.dataScale != null ? changeNum(assetDetailInfo.dataScale, 0)
1184 :
1185 '--' }}</span>
1180 </div> 1186 </div>
1181 <div class="list_item"> 1187 <div class="list_item">
1182 <span class="item_label">所属主题:</span> 1188 <span class="item_label">所属主题:</span>
1183 <span class="item_value">{{ assetDetailInfo.subjectDomainName || assetDetailInfo.subjectDomain || '--' }}</span> 1189 <span class="item_value">{{ assetDetailInfo.subjectDomainName || assetDetailInfo.subjectDomain || '--'
1190 }}</span>
1191 </div>
1192 <div class="list_item" v-if="assetDetailInfo.damGuid">
1193 <span class="item_label">数据来源:</span>
1194 <span class="item_value">{{ dataSourcesList.find(d => d.value == assetDetailInfo.dataSources)?.label ||
1195 '--' }}</span>
1184 </div> 1196 </div>
1185 </div> 1197 </div>
1186 <div class="first-col" style="width: 250px;"> 1198 <div class="first-col" style="width: 250px;">
...@@ -1195,16 +1207,22 @@ const handleClickDamCatalogDetail = () => { ...@@ -1195,16 +1207,22 @@ const handleClickDamCatalogDetail = () => {
1195 <div class="list_item"> 1207 <div class="list_item">
1196 <span class="item_label">更新频率:</span> 1208 <span class="item_label">更新频率:</span>
1197 <span class="item_value">{{ (assetDetailInfo.updateFrequencyName?.filter(u => u != '其他')?.join(',') + 1209 <span class="item_value">{{ (assetDetailInfo.updateFrequencyName?.filter(u => u != '其他')?.join(',') +
1198 (assetDetailInfo.updateFrequency?.includes(7) ? ((assetDetailInfo.updateFrequencyName > 1 ? ',' : '') 1210 (assetDetailInfo.updateFrequency?.includes(7) ? ((assetDetailInfo.updateFrequencyName > 1 ? ',' : '')
1199 + assetDetailInfo.updateFrequencyOther) : '')) ?? '--' }}</span> 1211 + assetDetailInfo.updateFrequencyOther) : '')) ?? '--' }}</span>
1200 </div> 1212 </div>
1201 <div class="list_item"> 1213 <div class="list_item">
1202 <span class="item_label">质量及价值评估:</span> 1214 <span class="item_label">是否完成质量评估:</span>
1203 <span class="item_value">{{ assetDetailInfo.isEvaluationAssessment == 'Y' ? '是' : '否' }}</span> 1215 <span class="item_value">{{ assetDetailInfo.isQualityAssessment == 'Y' ? '是' : '否' }}</span>
1216 </div>
1217 <div class="list_item" v-if="(detailType == 'asset' && assetDetailInfo.isQualityAssessment == 'Y')">
1218 <span class="item_label">质量评估机构:</span>
1219 <span class="item_value">{{ assetDetailInfo.registerAttachment.qualityEvaluationInstitution || '--'
1220 }}</span>
1204 </div> 1221 </div>
1205 <div class="list_item"> 1222 <div class="list_item">
1206 <span class="item_label">病例总数():</span> 1223 <span class="item_label">病例总数():</span>
1207 <span class="item_value">{{ assetDetailInfo.caseNumber ? changeNum(assetDetailInfo.caseNumber, 0) : '--' }}</span> 1224 <span class="item_value">{{ assetDetailInfo.caseNumber ? changeNum(assetDetailInfo.caseNumber, 0) : '--'
1225 }}</span>
1208 </div> 1226 </div>
1209 <div class="list_item" v-if="assetDetailInfo.damGuid"> 1227 <div class="list_item" v-if="assetDetailInfo.damGuid">
1210 <span class="item_label">数据库类型:</span> 1228 <span class="item_label">数据库类型:</span>
...@@ -1214,23 +1232,32 @@ const handleClickDamCatalogDetail = () => { ...@@ -1214,23 +1232,32 @@ const handleClickDamCatalogDetail = () => {
1214 <div class="last-col"> 1232 <div class="last-col">
1215 <div class="list_item"> 1233 <div class="list_item">
1216 <span class="item_label">覆盖地域:</span> 1234 <span class="item_label">覆盖地域:</span>
1217 <span class="item_value"><ellipsis-tooltip 1235 <span class="item_value"><ellipsis-tooltip :content="assetDetailInfo.coverageArea?.[0]?.[0] == 'all' ? '全国' : (assetDetailInfo.coverageAreaName?.map(c =>
1218 :content="assetDetailInfo.coverageArea?.[0]?.[0] == 'all' ? '全国' : (assetDetailInfo.coverageAreaName?.map(c => 1236 c.join('/')).join(',') ?? '--')" class-name="w100f pr8"
1219 c.join('/')).join(',') ?? '--')" 1237 :refName="'tooltipOver' + 'coverageAreaName'"></ellipsis-tooltip></span>
1220 class-name="w100f pr8" :refName="'tooltipOver' + 'coverageAreaName'"></ellipsis-tooltip></span>
1221 </div> 1238 </div>
1222 <div class="list_item"> 1239 <div class="list_item">
1223 <span class="item_label">取得方式:</span> 1240 <span class="item_label">取得方式:</span>
1224 <span class="item_value"><ellipsis-tooltip :content="(assetDetailInfo.dataGetWayName?.filter(u => u != '其他')?.join(',') + 1241 <span class="item_value"><ellipsis-tooltip
1225 (assetDetailInfo.dataGetWay?.includes(8) ? 1242 :content="(assetDetailInfo.dataGetWayName?.filter(u => u != '其他')?.join(',') +
1226 ((assetDetailInfo.dataGetWayName?.length > 1 ? ',' : '') + assetDetailInfo.dataGetWayOther) : '')) ?? '--'" 1243 (assetDetailInfo.dataGetWay?.includes(8) ?
1227 class-name="w100f" :refName="'tooltipOver' + 'dataGetWayName'"></ellipsis-tooltip> 1244 ((assetDetailInfo.dataGetWayName?.length > 1 ? ',' : '') + assetDetailInfo.dataGetWayOther) : '')) ?? '--'" class-name="w100f"
1245 :refName="'tooltipOver' + 'dataGetWayName'"></ellipsis-tooltip>
1228 </span> 1246 </span>
1229 </div> 1247 </div>
1230 <div class="list_item"> 1248 <div class="list_item">
1231 <span class="item_label">其他交易所:</span> 1249 <span class="item_label">其他交易所:</span>
1232 <span class="item_value">{{ assetDetailInfo.isRegistered == 'N' ? '无' : 1250 <span class="item_value">{{ assetDetailInfo.isRegistered == 'N' ? '无' :
1233 (assetDetailInfo.registeredExchangeName?.join(',') ?? '--') }}</span> 1251 (assetDetailInfo.registeredExchangeName?.join(',') ?? '--') }}</span>
1252 </div>
1253 <div class="list_item">
1254 <span class="item_label">是否完成价值评估:</span>
1255 <span class="item_value">{{ assetDetailInfo.isCostAssessment == 'Y' ? '是' : '否' }}</span>
1256 </div>
1257 <div class="list_item" v-if="(detailType == 'asset' && assetDetailInfo.isCostAssessment == 'Y')">
1258 <span class="item_label">价值评估机构:</span>
1259 <span class="item_value">{{ assetDetailInfo.registerAttachment.costAssessmentInstitution || '--'
1260 }}</span>
1234 </div> 1261 </div>
1235 <div class="list_item"> 1262 <div class="list_item">
1236 <span class="item_label">资产类型:</span> 1263 <span class="item_label">资产类型:</span>
...@@ -1238,11 +1265,8 @@ const handleClickDamCatalogDetail = () => { ...@@ -1238,11 +1265,8 @@ const handleClickDamCatalogDetail = () => {
1238 </div> 1265 </div>
1239 <div class="list_item"> 1266 <div class="list_item">
1240 <span class="item_label">数据时间范围:</span> 1267 <span class="item_label">数据时间范围:</span>
1241 <span class="item_value">{{ assetDetailInfo.dataStartDate ? `${assetDetailInfo.dataStartDate}至${assetDetailInfo.dataEndDate}` : '--' }}</span> 1268 <span class="item_value">{{ assetDetailInfo.dataStartDate ?
1242 </div> 1269 `${assetDetailInfo.dataStartDate}至${assetDetailInfo.dataEndDate}` : '--' }}</span>
1243 <div class="list_item" v-if="assetDetailInfo.damGuid">
1244 <span class="item_label">数据来源:</span>
1245 <span class="item_value">{{ dataSourcesList.find(d => d.value == assetDetailInfo.dataSources)?.label || '--' }}</span>
1246 </div> 1270 </div>
1247 </div> 1271 </div>
1248 </div> 1272 </div>
...@@ -1257,8 +1281,9 @@ const handleClickDamCatalogDetail = () => { ...@@ -1257,8 +1281,9 @@ const handleClickDamCatalogDetail = () => {
1257 <!-- <span class="small-title">资产内容</span> --> 1281 <!-- <span class="small-title">资产内容</span> -->
1258 <div class="list_item isFile" :style="{ width: '40%', 'margin-right': '28px' }" 1282 <div class="list_item isFile" :style="{ width: '40%', 'margin-right': '28px' }"
1259 v-if="assetDetailInfo.registerAttachment?.registerLetter?.length"> 1283 v-if="assetDetailInfo.registerAttachment?.registerLetter?.length">
1260 <div class="item_label" :style="{ width: 'auto', display: 'flex', 'justify-content': 'space-between', 'margin-right': '8px' }"> 1284 <div class="item_label"
1261 <span >数据登记承诺及收集函</span> 1285 :style="{ width: 'auto', display: 'flex', 'justify-content': 'space-between', 'margin-right': '8px' }">
1286 <span>数据登记承诺及收集函</span>
1262 <span class="text_btn" v-if="assetDetailInfo.damGuid" @click="handleClickDamCatalogDetail">查看表详情</span> 1287 <span class="text_btn" v-if="assetDetailInfo.damGuid" @click="handleClickDamCatalogDetail">查看表详情</span>
1263 </div> 1288 </div>
1264 <span v-for="(item) in (assetDetailInfo.registerAttachment?.registerLetter || [])" class="item_value" 1289 <span v-for="(item) in (assetDetailInfo.registerAttachment?.registerLetter || [])" class="item_value"
...@@ -1334,7 +1359,7 @@ const handleClickDamCatalogDetail = () => { ...@@ -1334,7 +1359,7 @@ const handleClickDamCatalogDetail = () => {
1334 </div> 1359 </div>
1335 </span> 1360 </span>
1336 </div> 1361 </div>
1337 <div class="list_item is_block isFile" :style="{ width: '40%','margin-right': '28px' }" 1362 <div class="list_item is_block isFile" :style="{ width: '40%', 'margin-right': '28px' }"
1338 v-if="(detailType != 'asset' && detailType != 'qualityEvaluate' || assetDetailInfo.isEvaluationAssessment == 'Y') && assetDetailInfo.registerAttachment?.costAssessmentFile?.length"> 1363 v-if="(detailType != 'asset' && detailType != 'qualityEvaluate' || assetDetailInfo.isEvaluationAssessment == 'Y') && assetDetailInfo.registerAttachment?.costAssessmentFile?.length">
1339 <span class="item_label" :style="{ width: 'auto', 'text-align': 'left' }">数据价值评估</span> 1364 <span class="item_label" :style="{ width: 'auto', 'text-align': 'left' }">数据价值评估</span>
1340 <span v-for="(item) in (assetDetailInfo.registerAttachment?.costAssessmentFile || [])" class="item_value" 1365 <span v-for="(item) in (assetDetailInfo.registerAttachment?.costAssessmentFile || [])" class="item_value"
...@@ -1372,6 +1397,82 @@ const handleClickDamCatalogDetail = () => { ...@@ -1372,6 +1397,82 @@ const handleClickDamCatalogDetail = () => {
1372 </div> 1397 </div>
1373 </span> 1398 </span>
1374 </div> 1399 </div>
1400 <div class="list_item is_block isFile" :style="{ width: '40%' }"
1401 v-if="(detailType == 'asset' && assetDetailInfo.isQualityAssessment == 'Y') && assetDetailInfo.registerAttachment?.qualityEvaluationFile?.length">
1402 <span class="item_label" :style="{ width: 'auto', 'text-align': 'left' }">质量评估报告</span>
1403 <span v-for="(item) in (assetDetailInfo.registerAttachment?.qualityEvaluationFile || [])"
1404 class="item_value" :style="{ 'padding-left': '0px' }">
1405 <div class="file-operate">
1406 <template
1407 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'">
1408 <img class="file-img" src="../../assets/images/excel.png" />
1409 </template>
1410 <template
1411 v-else-if="item.name.substring(item.name.lastIndexOf('.') + 1) == 'doc' || item.name.substring(item.name.lastIndexOf('.') + 1) == 'docx'">
1412 <img class="file-img" src="../../assets/images/word.png" />
1413 </template>
1414 <template v-else-if="item.name.substring(item.name.lastIndexOf('.') + 1) == 'zip'">
1415 <img class="file-img" src="../../assets/images/zip.png" />
1416 </template>
1417 <template v-else-if="item.name.substring(item.name.lastIndexOf('.') + 1) == 'rar'">
1418 <img class="file-img" src="../../assets/images/RAR.png" />
1419 </template>
1420 <template v-else-if="item.name.substring(item.name.lastIndexOf('.') + 1) == 'pdf'">
1421 <img class="file-img" src="../../assets/images/PDF.png" />
1422 </template>
1423 <template v-else-if="item.name.substring(item.name.lastIndexOf('.') + 1) == 'png'">
1424 <img class="file-img" src="../../assets/images/png.png" />
1425 </template>
1426 <template
1427 v-else-if="item.name.substring(item.name.lastIndexOf('.') + 1) == 'jpg' || item.name.substring(item.name.lastIndexOf('.') + 1) == 'jpeg'">
1428 <img class="file-img" src="../../assets/images/jpg.png" />
1429 </template>
1430 <div class="file-name">{{ item.name }}</div>
1431 <div :style="{ right: '36px' }"
1432 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'"
1433 class="file-preview" @click="onUploadFilePreview(item)">查看</div>
1434 <div :style="{ right: '0px' }" class="file-preview" @click="onUploadFileDownload(item)">下载</div>
1435 </div>
1436 </span>
1437 </div>
1438 <div class="list_item is_block isFile" :style="{ width: '40%', 'margin-right': '28px' }"
1439 v-if="(detailType == 'asset' && assetDetailInfo.isCostAssessment == 'Y') && assetDetailInfo.registerAttachment?.costAssessmentFile?.length">
1440 <span class="item_label" :style="{ width: 'auto', 'text-align': 'left' }">价值评估报告</span>
1441 <span v-for="(item) in (assetDetailInfo.registerAttachment?.costAssessmentFile || [])" class="item_value"
1442 :style="{ 'padding-left': '0px' }">
1443 <div class="file-operate">
1444 <template
1445 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'">
1446 <img class="file-img" src="../../assets/images/excel.png" />
1447 </template>
1448 <template
1449 v-else-if="item.name.substring(item.name.lastIndexOf('.') + 1) == 'doc' || item.name.substring(item.name.lastIndexOf('.') + 1) == 'docx'">
1450 <img class="file-img" src="../../assets/images/word.png" />
1451 </template>
1452 <template v-else-if="item.name.substring(item.name.lastIndexOf('.') + 1) == 'zip'">
1453 <img class="file-img" src="../../assets/images/zip.png" />
1454 </template>
1455 <template v-else-if="item.name.substring(item.name.lastIndexOf('.') + 1) == 'rar'">
1456 <img class="file-img" src="../../assets/images/RAR.png" />
1457 </template>
1458 <template v-else-if="item.name.substring(item.name.lastIndexOf('.') + 1) == 'pdf'">
1459 <img class="file-img" src="../../assets/images/PDF.png" />
1460 </template>
1461 <template v-else-if="item.name.substring(item.name.lastIndexOf('.') + 1) == 'png'">
1462 <img class="file-img" src="../../assets/images/png.png" />
1463 </template>
1464 <template
1465 v-else-if="item.name.substring(item.name.lastIndexOf('.') + 1) == 'jpg' || item.name.substring(item.name.lastIndexOf('.') + 1) == 'jpeg'">
1466 <img class="file-img" src="../../assets/images/jpg.png" />
1467 </template>
1468 <div class="file-name">{{ item.name }}</div>
1469 <div :style="{ right: '36px' }"
1470 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'"
1471 class="file-preview" @click="onUploadFilePreview(item)">查看</div>
1472 <div :style="{ right: '0px' }" class="file-preview" @click="onUploadFileDownload(item)">下载</div>
1473 </div>
1474 </span>
1475 </div>
1375 <!-- <span 1476 <!-- <span
1376 v-if="tenantDetail.businessLicense?.length || assetDetailInfo.registerAttachment?.commitmentLetter?.length" 1477 v-if="tenantDetail.businessLicense?.length || assetDetailInfo.registerAttachment?.commitmentLetter?.length"
1377 class="small-title" :style="{ marginTop: '10px' }">公司信息</span> --> 1478 class="small-title" :style="{ marginTop: '10px' }">公司信息</span> -->
...@@ -1621,7 +1722,7 @@ const handleClickDamCatalogDetail = () => { ...@@ -1621,7 +1722,7 @@ const handleClickDamCatalogDetail = () => {
1621 <div class="list_item"> 1722 <div class="list_item">
1622 <span class="item_label">类型:</span> 1723 <span class="item_label">类型:</span>
1623 <span class="item_value">{{ detailInfo.documentType == 1 ? 'A证' : (detailInfo.documentType == 2 ? 'B证' : 1724 <span class="item_value">{{ detailInfo.documentType == 1 ? 'A证' : (detailInfo.documentType == 2 ? 'B证' :
1624 'C证') }}</span> 1725 'C证') }}</span>
1625 </div> 1726 </div>
1626 <div class="list_item is_block" v-if="detailInfo.documentFile?.length" :style="{ 'max-width': '700px' }"> 1727 <div class="list_item is_block" v-if="detailInfo.documentFile?.length" :style="{ 'max-width': '700px' }">
1627 <span class="item_label">证件:</span> 1728 <span class="item_label">证件:</span>
......
...@@ -8,21 +8,9 @@ import TableTools from "@/components/Tools/table_tools.vue"; ...@@ -8,21 +8,9 @@ import TableTools from "@/components/Tools/table_tools.vue";
8 import { ElMessage, ElMessageBox } from 'element-plus'; 8 import { ElMessage, ElMessageBox } from 'element-plus';
9 import { useRouter, useRoute } from "vue-router"; 9 import { useRouter, useRoute } from "vue-router";
10 import { MoreFilled } from "@element-plus/icons-vue"; 10 import { MoreFilled } from "@element-plus/icons-vue";
11 import { 11 import { changeNum, tagMethod, tagType, } from "@/utils/common";
12 changeNum, 12 import { getRegisterList, registerDelete, getExchangeList } from "@/api/modules/dataAsset";
13 tagMethod, 13 import { passFlowData, rejectFlowData, revokeFlowData } from "@/api/modules/workFlowService";
14 tagType,
15 } from "@/utils/common";
16 import {
17 getRegisterList,
18 registerDelete,
19 registerApproveCancel,
20 registerApproveReSubmit,
21 registerApproveAllow,
22 registerApproveBackup,
23 getRegisterTenant,
24 getExchangeList
25 } from "@/api/modules/dataAsset";
26 import useDataAssetStore from "@/store/modules/dataAsset"; 14 import useDataAssetStore from "@/store/modules/dataAsset";
27 import useUserStore from "@/store/modules/user"; 15 import useUserStore from "@/store/modules/user";
28 16
...@@ -107,7 +95,39 @@ const tableFields = ref([{ label: "序号", type: "index", width: 56, align: "ce ...@@ -107,7 +95,39 @@ const tableFields = ref([{ label: "序号", type: "index", width: 56, align: "ce
107 return scope.row['ownIndustryName']?.join(',') 95 return scope.row['ownIndustryName']?.join(',')
108 } 96 }
109 }, 97 },
110 { label: "状态", field: "approveState", type: "tag", width: 96, align: 'center' }, 98 {
99 label: "状态", field: "approveState", type: "tag", width: 96, align: 'center', getName: (scope) => {
100 const approveVO = scope.row.approveVO || {}
101 switch (approveVO.approveState) {
102 case 'N':
103 return '草稿中';
104 case 'A':
105 return '审批中';
106 case 'Y':
107 return '已通过';
108 case 'R':
109 return '已驳回';
110 case 'C':
111 return '已撤销';
112 case 'I':
113 return '--';
114 default:
115 return '草稿中';
116 }
117 }, tagType: (scope) => {
118 const approveVO = scope.row.approveVO || {}
119 switch (approveVO.approveState) {
120 case 'A':
121 return 'warning';
122 case 'Y':
123 return 'success';
124 case 'R':
125 return 'danger';
126 default:
127 return 'info';
128 }
129 }
130 },
111 { label: "修改人", field: "updateUserName", width: 140 }, 131 { label: "修改人", field: "updateUserName", width: 140 },
112 { label: "修改时间", field: "updateTime", width: 180 }]); 132 { label: "修改时间", field: "updateTime", width: 180 }]);
113 133
...@@ -133,7 +153,7 @@ const tableInfo = ref({ ...@@ -133,7 +153,7 @@ const tableInfo = ref({
133 actionInfo: { 153 actionInfo: {
134 label: "操作", 154 label: "操作",
135 type: "btn", 155 type: "btn",
136 width: 160, 156 width: 180,
137 btns: (scope) => { 157 btns: (scope) => {
138 let row = scope.row; 158 let row = scope.row;
139 return getTableBtns(row); 159 return getTableBtns(row);
...@@ -142,35 +162,45 @@ const tableInfo = ref({ ...@@ -142,35 +162,45 @@ const tableInfo = ref({
142 }); 162 });
143 163
144 const getTableBtns = (row, includeDetail = true) => { 164 const getTableBtns = (row, includeDetail = true) => {
145 console.log(userData)
146 let btnsArr: any[] = []; 165 let btnsArr: any[] = [];
147 if (row.approveState == 'N') {//只有草稿中的详情是可以编辑的 166 const approveVO = row.approveVO;
148 includeDetail && btnsArr.push({ label: "详情", value: "path_detail" }) 167 const currentStaffGuid = userData.staffGuid
149 includeDetail && btnsArr.push({ label: "编辑", value: "edit" }) 168 const bizApproveState = row.approveState;
150 if (row.tenantGuid == userData.tenantGuid) { 169 const approveState = approveVO?.approveState || 'N';
151 btnsArr.push({ label: "删除", value: "delete" }); 170 const approveStaffGuids = approveVO?.approveStaffGuids || [];
152 } 171 const staffGuid = approveVO?.staffGuid || '';
153 } else if (row.approveState == 'A') {//审批中 172 let isShowCancel = false;
154 includeDetail && btnsArr.push({ label: "详情", value: "path_detail" }) 173 let flowState;
155 if (row.tenantGuid == userData.tenantGuid) { 174 if (approveState == 'N') {
156 btnsArr.push({ label: "撤销", value: "revoke" }); 175 flowState = 1;
157 } 176 }
158 if (row.approveTenantGuids?.includes(userData.tenantGuid)) { 177 if (approveState == 'A' && approveStaffGuids.indexOf(currentStaffGuid) > -1) {
159 btnsArr.push({ label: "通过", value: "pass" }); 178 flowState = 2;
160 btnsArr.push({ label: "驳回", value: "backup" }); 179 }
161 } 180 if ((approveState == 'C' || approveState == 'R') && staffGuid == currentStaffGuid) {
162 } else if (row.approveState == 'Y') {//已通过的不能删除。 181 flowState = 3;
163 includeDetail && btnsArr.push({ label: "详情", value: "path_detail" }) 182 }
164 } else if (row.approveState == 'R' || row.approveState == 'C') {//已驳回或已撤销 183 if (approveVO && approveVO.approveState == 'A' && staffGuid == currentStaffGuid) {
165 includeDetail && btnsArr.push({ label: "编辑", value: "edit" }); 184 isShowCancel = true;
166 if (row.tenantGuid == userData.tenantGuid) { 185 }
167 btnsArr.push({ label: "重新提交", value: "edit", disabled: false }) 186
168 } 187 if (flowState === 1) {
169 if (row.tenantGuid == userData.tenantGuid) { 188 btnsArr = [{ label: "编辑", value: "edit" }, { label: "删除", value: "delete" }]
170 btnsArr.push({ label: "删除", value: "delete" }); 189 } else {
190 btnsArr.push({ label: "详情", value: "detail" })
191 if (flowState === 2) {
192 btnsArr.push(...[{ label: "通过", value: "pass" }, { label: "驳回", value: "reject" }])
193 if (isShowCancel) {
194 btnsArr.push({ label: "撤销", value: "revoke" })
195 }
196 } else if (flowState === 3) {
197 if (bizApproveState != 'D') {
198 btnsArr.push({ label: "重新提交", value: "edit" })
199 }
200 btnsArr.push({ label: "删除", value: "delete" })
171 } 201 }
172 } 202 }
173 return btnsArr; 203 return btnsArr
174 } 204 }
175 205
176 const currTableData: any = ref({}); 206 const currTableData: any = ref({});
...@@ -195,9 +225,10 @@ const tableBtnClick = (scope, btn) => { ...@@ -195,9 +225,10 @@ const tableBtnClick = (scope, btn) => {
195 const row = scope.row; 225 const row = scope.row;
196 currTableData.value = row; 226 currTableData.value = row;
197 if (type === "edit") { //草稿中\已驳回\已撤销\已通过 状态,才可以编辑。 227 if (type === "edit") { //草稿中\已驳回\已撤销\已通过 状态,才可以编辑。
228 localStorage.setItem('isRestart', btn.label == '重新提交' ? 'true' : '');
198 router.push({ 229 router.push({
199 name: 'registerStart', 230 name: 'registerStart',
200 query: { guid: row.guid, damGuid: row.damGuid, name: row.daName, type } 231 query: { guid: row.guid, exchangeGuid: row.exchangeGuid, name: row.daName, type }
201 }); 232 });
202 } else if (type == "delete") { 233 } else if (type == "delete") {
203 delTableOpen("此操作将永久删除该资产登记,是否继续?", "warning"); 234 delTableOpen("此操作将永久删除该资产登记,是否继续?", "warning");
...@@ -207,23 +238,26 @@ const tableBtnClick = (scope, btn) => { ...@@ -207,23 +238,26 @@ const tableBtnClick = (scope, btn) => {
207 cancelButtonText: "取消", 238 cancelButtonText: "取消",
208 type: 'warning', 239 type: 'warning',
209 }).then(() => { 240 }).then(() => {
210 listDataLoading.value = true; 241 loading.value = true;
211 let params = { 242 let params = {
212 bizGuid: row.guid, 243 guid: row.approveVO.approveGuid,
213 funcCode: row.funcCode 244 flowType: row.approveVO.flowType,
245 approveStaffGuid: userData.staffGuid,
214 } 246 }
215 registerApproveCancel(params).then((res: any) => { 247 revokeFlowData(params).then((res: any) => {
216 listDataLoading.value = false; 248 loading.value = false;
217 if (res?.code == proxy.$passCode) { 249 if (res?.code == proxy.$passCode) {
218 if (res.data) { 250 if (res.data) {
219 ElMessage.success('该审批流程撤销成功!'); 251 ElMessage.success('该审批流程撤销成功!');
220 row.approveState = "C"; 252 getTableData();
221 } else { 253 } else {
222 ElMessage.error('该审批流程撤销失败!'); 254 ElMessage.error('该审批流程撤销失败!');
223 } 255 }
224 } else { 256 } else {
225 ElMessage.error(res.msg); 257 ElMessage.error(res.msg);
226 } 258 }
259 }).catch(() => {
260 loading.value = false;
227 }); 261 });
228 }).catch(() => { 262 }).catch(() => {
229 ElMessage({ 263 ElMessage({
...@@ -231,25 +265,14 @@ const tableBtnClick = (scope, btn) => { ...@@ -231,25 +265,14 @@ const tableBtnClick = (scope, btn) => {
231 message: '已取消撤销' 265 message: '已取消撤销'
232 }); 266 });
233 }); 267 });
234 } else if (type === 'path_detail') { // 详情, 若是草稿中,详情就是编辑, 268 } else if (type === 'detail') { // 详情, 若是草稿中,详情就是编辑,
235 // if (row.approveState === 'N') {
236 // router.push({
237 // name: 'registerStart',
238 // query: { guid: row.guid, name: row.daName, type: 'detail' }
239 // });
240 // } else {
241 // router.push({
242 // name: 'registerInfoDetail',
243 // query: { guid: row.guid, type: 'asset', daTenantGuid: row.tenantGuid }
244 // });
245 // }
246 router.push({ 269 router.push({
247 name: 'registerInfoDetail', 270 name: 'registerInfoDetail',
248 query: { guid: row.guid, name: row.daName, type: 'asset' } 271 query: { guid: row.guid, name: row.daName, type: 'asset' }
249 }); 272 });
250 } else if (type === 'pass') { 273 } else if (type === 'pass') {
251 passDialogInfo.value.visible = true; 274 passDialogInfo.value.visible = true;
252 } else if (type == 'backup') { 275 } else if (type == 'reject') {
253 rejectDialogInfo.value.visible = true; 276 rejectDialogInfo.value.visible = true;
254 } 277 }
255 }; 278 };
...@@ -276,7 +299,9 @@ const delTableOpen = (msg, type, isBatch: boolean = false) => { ...@@ -276,7 +299,9 @@ const delTableOpen = (msg, type, isBatch: boolean = false) => {
276 }).then(() => { 299 }).then(() => {
277 let guids: any = []; 300 let guids: any = [];
278 guids = [currTableData.value.guid] 301 guids = [currTableData.value.guid]
302 loading.value = true;
279 registerDelete(guids).then((res: any) => { 303 registerDelete(guids).then((res: any) => {
304 loading.value = false;
280 if (res.code == proxy.$passCode) { 305 if (res.code == proxy.$passCode) {
281 pageInfo.value.curr = 1; 306 pageInfo.value.curr = 1;
282 getTableData(); 307 getTableData();
...@@ -290,7 +315,9 @@ const delTableOpen = (msg, type, isBatch: boolean = false) => { ...@@ -290,7 +315,9 @@ const delTableOpen = (msg, type, isBatch: boolean = false) => {
290 message: res.msg, 315 message: res.msg,
291 }); 316 });
292 } 317 }
293 }) 318 }).catch(() => {
319 loading.value = false;
320 });
294 }).catch(() => { 321 }).catch(() => {
295 ElMessage({ 322 ElMessage({
296 type: 'info', 323 type: 'info',
...@@ -300,8 +327,7 @@ const delTableOpen = (msg, type, isBatch: boolean = false) => { ...@@ -300,8 +327,7 @@ const delTableOpen = (msg, type, isBatch: boolean = false) => {
300 }; 327 };
301 328
302 const getTableData = () => { 329 const getTableData = () => {
303 listDataLoading.value = true; 330 loading.value = true;
304 tableInfo.value.loading = true;
305 getRegisterList({ 331 getRegisterList({
306 pageSize: pageInfo.value.limit, 332 pageSize: pageInfo.value.limit,
307 pageIndex: pageInfo.value.curr, 333 pageIndex: pageInfo.value.curr,
...@@ -310,17 +336,19 @@ const getTableData = () => { ...@@ -310,17 +336,19 @@ const getTableData = () => {
310 tenantGuid: pageInfo.value.tenantGuid, 336 tenantGuid: pageInfo.value.tenantGuid,
311 exchangGuid: exchangGuid.value 337 exchangGuid: exchangGuid.value
312 }).then((res: any) => { 338 }).then((res: any) => {
313 listDataLoading.value = false; 339 loading.value = false;
314 tableInfo.value.loading = false;
315 if (res.code == proxy.$passCode) { 340 if (res.code == proxy.$passCode) {
316 const data = res.data || {} 341 const data = res.data || {}
317 listData.value = tableInfo.value.data = data.records || []; 342 // listData.value = tableInfo.value.data = data.records || [];
343 tableInfo.value.data = data.records || []
318 pageInfo.value.limit = data.pageSize 344 pageInfo.value.limit = data.pageSize
319 pageInfo.value.curr = data.pageIndex 345 pageInfo.value.curr = data.pageIndex
320 pageInfo.value.rows = data.totalRows 346 pageInfo.value.rows = data.totalRows
321 } else { 347 } else {
322 ElMessage.error(res.msg); 348 ElMessage.error(res.msg);
323 } 349 }
350 }).catch(() => {
351 loading.value = false;
324 }) 352 })
325 } 353 }
326 354
...@@ -422,14 +450,15 @@ const passDialogInfo = ref({ ...@@ -422,14 +450,15 @@ const passDialogInfo = ref({
422 450
423 const passDialogBtnClick = (btn, info) => { 451 const passDialogBtnClick = (btn, info) => {
424 if (btn.value == 'submit') { 452 if (btn.value == 'submit') {
425 listDataLoading.value = true; 453 loading.value = true;
426 let params = { 454 let params = {
427 bizGuid: currTableData.value.guid, 455 guid: currTableData.value.approveVO.approveGuid,
428 funcCode: currTableData.value.funcCode, 456 flowType: currTableData.value.approveVO.flowType,
429 approveSuggest: info.approveSuggest 457 approveSuggest: info.approveSuggest,
458 approveStaffGuid: userData.staffGuid,
430 } 459 }
431 registerApproveAllow(params).then((res: any) => { 460 passFlowData(params).then((res: any) => {
432 listDataLoading.value = false; 461 loading.value = false;
433 if (res?.code == proxy.$passCode) { 462 if (res?.code == proxy.$passCode) {
434 if (res.data) { 463 if (res.data) {
435 ElMessage.success('审批成功'); 464 ElMessage.success('审批成功');
...@@ -441,6 +470,8 @@ const passDialogBtnClick = (btn, info) => { ...@@ -441,6 +470,8 @@ const passDialogBtnClick = (btn, info) => {
441 } else { 470 } else {
442 ElMessage.error(res.msg); 471 ElMessage.error(res.msg);
443 } 472 }
473 }).catch(() => {
474 loading.value = false;
444 }); 475 });
445 } else if (btn.value == 'cancel') { 476 } else if (btn.value == 'cancel') {
446 passDialogInfo.value.visible = false; 477 passDialogInfo.value.visible = false;
...@@ -489,14 +520,15 @@ const rejectDialogBtnClick = (btn, info) => { ...@@ -489,14 +520,15 @@ const rejectDialogBtnClick = (btn, info) => {
489 ElMessage.error('请填写驳回理由'); 520 ElMessage.error('请填写驳回理由');
490 return 521 return
491 } 522 }
492 listDataLoading.value = true; 523 loading.value = true;
493 let params = { 524 let params = {
494 bizGuid: currTableData.value.guid, 525 guid: currTableData.value.approveVO.approveGuid,
495 funcCode: currTableData.value.funcCode, 526 flowType: currTableData.value.approveVO.flowType,
496 approveSuggest: info.approveSuggest 527 approveSuggest: info.approveSuggest,
528 approveStaffGuid: userData.staffGuid,
497 } 529 }
498 registerApproveBackup(params).then((res: any) => { 530 rejectFlowData(params).then((res: any) => {
499 listDataLoading.value = false; 531 loading.value = false;
500 if (res?.code == proxy.$passCode) { 532 if (res?.code == proxy.$passCode) {
501 if (res.data) { 533 if (res.data) {
502 ElMessage.success('驳回成功'); 534 ElMessage.success('驳回成功');
...@@ -508,6 +540,8 @@ const rejectDialogBtnClick = (btn, info) => { ...@@ -508,6 +540,8 @@ const rejectDialogBtnClick = (btn, info) => {
508 } else { 540 } else {
509 ElMessage.error(res.msg); 541 ElMessage.error(res.msg);
510 } 542 }
543 }).catch(() => {
544 loading.value = false;
511 }); 545 });
512 } else if (btn.value == 'cancel') { 546 } else if (btn.value == 'cancel') {
513 rejectDialogInfo.value.visible = false; 547 rejectDialogInfo.value.visible = false;
......
...@@ -46,6 +46,7 @@ const route = useRoute(); ...@@ -46,6 +46,7 @@ const route = useRoute();
46 const guid = route.query.guid; 46 const guid = route.query.guid;
47 const fullPath = route.fullPath; 47 const fullPath = route.fullPath;
48 const editType = route.query.type; 48 const editType = route.query.type;
49 const exGuid = route.query.exchangeGuid;
49 50
50 /** 资产目录列表 */ 51 /** 资产目录列表 */
51 const registerCatalogList: any = ref([]); 52 const registerCatalogList: any = ref([]);
...@@ -157,28 +158,14 @@ const getArea = (node, resolve) => { ...@@ -157,28 +158,14 @@ const getArea = (node, resolve) => {
157 } 158 }
158 } 159 }
159 160
160 const serviceTenants: any = ref([ 161 const serviceTenants: any = ref([]);
161 { 162 const currTenantChanged: any = ref([]);
162 "exchangeGuid": "07c11603a8bc4d8f8bee2e3a34ab4d8a",
163 "exchangeName": "测试数交所",
164 "listingNum": 0,
165 "underReviewNum": 0
166 }
167 ]);
168 const currTenantChanged: any = ref([
169 {
170 "exchangeGuid": "07c11603a8bc4d8f8bee2e3a34ab4d8a",
171 "exchangeName": "测试数交所",
172 "listingNum": 0,
173 "underReviewNum": 0
174 }
175 ]);
176 163
177 const tenantDetail: any = ref({}); 164 const tenantDetail: any = ref({});
178 165
179 /** 获取当前登录会员,服务商,企业等详情。 */ 166 /** 获取当前登录会员,服务商,企业等详情。 */
180 const getTenantDetail = () => { 167 const getTenantDetail = () => {
181 getTenantDetailInfo({ guid: userData.tenantGuid }).then((res: any) => { 168 getTenantDetailInfo(userData.tenantGuid).then((res: any) => {
182 if (res.code == proxy.$passCode) { 169 if (res.code == proxy.$passCode) {
183 const data = res.data ?? {}; 170 const data = res.data ?? {};
184 tenantDetail.value = data; 171 tenantDetail.value = data;
...@@ -316,10 +303,10 @@ const setUploadFormItemsValue = (info) => { ...@@ -316,10 +303,10 @@ const setUploadFormItemsValue = (info) => {
316 } else if (item.field === 'commitmentLetter') { 303 } else if (item.field === 'commitmentLetter') {
317 item.default = attach.commitmentLetter || []; 304 item.default = attach.commitmentLetter || [];
318 item.templateUrl = attachDataInfo.value['commitment-letter']; 305 item.templateUrl = attachDataInfo.value['commitment-letter'];
319 } else if (item.field === 'costAssessmentInstitution') { 306 } else if (item.field === 'costAssessmentInstitutionGuid') {
320 item.default = attach.costAssessmentInstitution || ''; 307 item.default = attach.costAssessmentInstitutionGuid || '';
321 } else if (item.field === 'qualityEvaluationInstitution') { 308 } else if (item.field === 'qualityEvaluationInstitutionGuid') {
322 item.default = attach.qualityEvaluationInstitution || ''; 309 item.default = attach.qualityEvaluationInstitutionGuid || '';
323 } 310 }
324 }); 311 });
325 } 312 }
...@@ -358,10 +345,15 @@ const draftDetailInfo: any = ref({}); ...@@ -358,10 +345,15 @@ const draftDetailInfo: any = ref({});
358 /** 会员附件模板 */ 345 /** 会员附件模板 */
359 const attachDataInfo: any = ref({}); 346 const attachDataInfo: any = ref({});
360 347
361 const getRegisterCatalogListData = () => { 348 const getRegisterCatalogListData = (dam: any={}) => {
362 getRegisterCatalogList().then((res: any) => { 349 getRegisterCatalogList().then((res: any) => {
363 if (res.code == proxy.$passCode) { 350 if (res.code == proxy.$passCode) {
364 baseFormItems.value[0].options = registerCatalogList.value = res.data || [] 351 const data = res.data || [];
352 baseFormItems.value[0].options = registerCatalogList.value = data;
353 if(guid){
354 const opt = data.find(item => item.guid == dam.damGuid)
355 baseFormItems.value[0].default = opt? opt.guid: dam.damName
356 }
365 let dataScaleItem = baseFormItems.value.find(item => item.field == 'dataScale'); 357 let dataScaleItem = baseFormItems.value.find(item => item.field == 'dataScale');
366 if (draftDetailInfo.value.damGuid) { 358 if (draftDetailInfo.value.damGuid) {
367 let da = registerCatalogList.value.find(r => r.guid == draftDetailInfo.value.damGuid); 359 let da = registerCatalogList.value.find(r => r.guid == draftDetailInfo.value.damGuid);
...@@ -394,20 +386,20 @@ const getRegisterCatalogListData = () => { ...@@ -394,20 +386,20 @@ const getRegisterCatalogListData = () => {
394 } 386 }
395 387
396 onActivated(() => { 388 onActivated(() => {
397 getRegisterCatalogListData(); 389 // getRegisterCatalogListData();
398 }) 390 })
399 391
400 onBeforeMount(() => { 392 onBeforeMount(() => {
401 if (guid) { 393 if (guid) {
402 baseFormItems.value[7].default = guid;
403 fullscreenLoading.value = true; 394 fullscreenLoading.value = true;
404 getRegiaterDetail({ guid: guid }).then((res: any) => { 395 getRegiaterDetail({ guid: guid }).then((res: any) => {
405 fullscreenLoading.value = false; 396 fullscreenLoading.value = false;
406 if (res.code == proxy.$passCode) { 397 if (res.code == proxy.$passCode) {
407 const data = res.data || {} 398 const data = res.data || {}
399 let { approveVO } = data;
408 draftDetailInfo.value = data; 400 draftDetailInfo.value = data;
409 deploymentId.value = data.camundaDeploymentId; 401 deploymentId.value = approveVO?.camundaDeploymentId;
410 processInstanceId.value = data.camundaInstanceId 402 processInstanceId.value = approveVO?.camundaInstanceId
411 let coverageArea = ''; 403 let coverageArea = '';
412 let coverageAreas = []; 404 let coverageAreas = [];
413 let damTypeItem = baseFormItems.value.find(item => item.field == 'damType'); 405 let damTypeItem = baseFormItems.value.find(item => item.field == 'damType');
...@@ -455,17 +447,17 @@ onBeforeMount(() => { ...@@ -455,17 +447,17 @@ onBeforeMount(() => {
455 }); 447 });
456 } 448 }
457 if (data.exchangeGuid) { 449 if (data.exchangeGuid) {
458 // getTenantAttach(data.exchangeGuid).then((res: any) => { 450 getTenantAttach(userData.tenantGuid).then((res: any) => {
459 // if (res?.code == proxy.$passCode) { 451 if (res?.code == proxy.$passCode) {
460 // Object.assign(attachDataInfo.value, res.data || {}); 452 Object.assign(attachDataInfo.value, res.data || {});
461 // uploadFormItems.value[0].templateUrl = attachDataInfo.value.register_letter; 453 uploadFormItems.value[0].templateUrl = attachDataInfo.value.register_letter;
462 // uploadFormItems.value[1].templateUrl = attachDataInfo.value['commitment-letter']; 454 uploadFormItems.value[1].templateUrl = attachDataInfo.value['commitment-letter'];
463 // setUploadFormItemsValue(draftDetailInfo.value); 455 setUploadFormItemsValue(draftDetailInfo.value);
464 // } else { 456 } else {
465 // ElMessage.error(res.msg); 457 ElMessage.error(res.msg);
466 // setUploadFormItemsValue(draftDetailInfo.value); 458 setUploadFormItemsValue(draftDetailInfo.value);
467 // } 459 }
468 // }) 460 })
469 setUploadFormItemsValue(draftDetailInfo.value); 461 setUploadFormItemsValue(draftDetailInfo.value);
470 } else { 462 } else {
471 setUploadFormItemsValue(draftDetailInfo.value); 463 setUploadFormItemsValue(draftDetailInfo.value);
...@@ -490,39 +482,7 @@ onBeforeMount(() => { ...@@ -490,39 +482,7 @@ onBeforeMount(() => {
490 } else { 482 } else {
491 setPropertyFormItemsValue(draftDetailInfo.value); 483 setPropertyFormItemsValue(draftDetailInfo.value);
492 } 484 }
493 // if (fullPath === route.fullPath) { 485 getRegisterCatalogListData({damName: data.daName, damGuid: data.damGuid});
494 // document.title = editType ? `详情-${data.daName}` : `编辑-${data.daName}`;
495 // }
496 // let tab: any = userStore.tabbar.find((tab: any) => tab.fullPath === fullPath);
497 // if (tab) {
498 // tab.meta.title = editType ? `详情-${data.daName}` : `编辑-${data.daName}`;
499 // }
500 if (data.approveGuid != null) {
501 approveTableInfo.value.loading = true;
502 getApproveList(guid).then((res: any) => {
503 approveTableInfo.value.loading = false;
504 if (res.code == proxy.$passCode) {
505 console.log(res.data);
506 approveTableInfo.value.data = res.data || [];
507 } else {
508 ElMessage.error(res.msg);
509 }
510 });
511 } else {
512 approveTableInfo.value.loading = true;
513 getTenantApprove().then((res: any) => {
514 approveTableInfo.value.loading = false;
515 if (res.code == proxy.$passCode) {
516 approveTableInfo.value.data = res.data?.map(d => {
517 return {
518 tenantType: d.substring(4)
519 }
520 }) || [];
521 } else {
522 ElMessage.error(res.msg);
523 }
524 });
525 }
526 } else { 486 } else {
527 ElMessage.error(res.msg); 487 ElMessage.error(res.msg);
528 } 488 }
...@@ -535,44 +495,10 @@ onBeforeMount(() => { ...@@ -535,44 +495,10 @@ onBeforeMount(() => {
535 ElMessage.error(res.msg); 495 ElMessage.error(res.msg);
536 } 496 }
537 }) 497 })
538 // //新建无guid的时候显示这个审批信息,有guid调用另一个接口。 498 getRegisterCatalogListData();
539 // getTenantApprove().then((res: any) => {
540 // if (res.code == proxy.$passCode) {
541 // approveTableInfo.value.data = res.data?.map(d => {
542 // return {
543 // tenantType: d.substring(4)
544 // }
545 // }) || [];
546 // } else {
547 // ElMessage.error(res.msg);
548 // }
549 // });
550 } 499 }
551 let exchangeItem = baseFormItems.value.find(f => f.field === 'exchangeGuid'); 500
552 exchangeItem.default = route.query.exchangeGuid; 501 getTenantDetail();
553 // getTenantDetail();
554 // getServiceTenants({
555 // tenantType: 3
556 // }).then((res: any) => {
557 // if (res.code == proxy.$passCode) {
558 // const data = res.data ?? {};
559 // serviceTenants.value = data['3'] || [];
560 // let item2 = baseFormItems.value.find(f => f.field === 'rules');
561 // item2.children[1].options = serviceTenants.value;
562 // } else {
563 // ElMessage.error(res.msg);
564 // }
565 // });
566 // getServiceDetail(userData.tenantGuid).then((res: any) => {
567 // if (res.code == proxy.$passCode) {
568 // const data = res.data ?? {};
569 // currTenantChanged.value = data.filter(d => d.serviceType == 4);
570 // let formItem = baseFormItems.value.find(f => f.field === 'exchangeGuid');
571 // formItem.options = currTenantChanged.value;
572 // } else {
573 // ElMessage.error(res.msg);
574 // }
575 // });
576 getParentAreaPromise.value = getAreaData({ parentId: null }).then((res: any) => { 502 getParentAreaPromise.value = getAreaData({ parentId: null }).then((res: any) => {
577 if (res?.code == proxy.$passCode) { 503 if (res?.code == proxy.$passCode) {
578 parentAreaData.value = res.data ?? []; 504 parentAreaData.value = res.data ?? [];
...@@ -589,6 +515,7 @@ onBeforeMount(() => { ...@@ -589,6 +515,7 @@ onBeforeMount(() => {
589 // ElMessage.error(res.msg); 515 // ElMessage.error(res.msg);
590 // } 516 // }
591 // }) 517 // })
518 // 获取资产类型
592 getParamsList({ dictType: '资产类型' }).then((res: any) => { 519 getParamsList({ dictType: '资产类型' }).then((res: any) => {
593 if (res.code == proxy.$passCode) { 520 if (res.code == proxy.$passCode) {
594 damTypes.value = res.data || []; 521 damTypes.value = res.data || [];
...@@ -606,20 +533,35 @@ onBeforeMount(() => { ...@@ -606,20 +533,35 @@ onBeforeMount(() => {
606 proxy.$ElMessage.error(res.msg); 533 proxy.$ElMessage.error(res.msg);
607 } 534 }
608 }) 535 })
536 // 获取数据资产目录主题
609 getParamsList({ dictType: '数据资产目录主题名称' }).then((res: any) => { 537 getParamsList({ dictType: '数据资产目录主题名称' }).then((res: any) => {
610 if (res.code == proxy.$passCode) { 538 if (res.code == proxy.$passCode) {
611 subjectDomainListData.value = replaceChildDictListKey(res.data) || [];
612 let item = baseFormItems.value.find(item => item.field == 'subjectDomain'); 539 let item = baseFormItems.value.find(item => item.field == 'subjectDomain');
613 item && (item.options = subjectDomainListData.value); 540 item && (item.options = subjectDomainListData.value);
614 } else { 541 } else {
615 proxy.$ElMessage.error(res.msg); 542 proxy.$ElMessage.error(res.msg);
616 } 543 }
617 }) 544 })
545 // 获取数交所数据
546 getSingleList({ pageIndex: -1, pageSize: -1, tenantType: "130" }).then((res: any) => {
547 if (res.code == proxy.$passCode) {
548 const data = res.data.records ?? [];
549 currTenantChanged.value = data;
550 let formItem = baseFormItems.value.find(f => f.field === 'exchangeGuid');
551 formItem.options = currTenantChanged.value;
552 formItem.default = exGuid;
553 serviceTenants.value = data.filter(d => d.guid !== exGuid);
554 let item2 = baseFormItems.value.find(f => f.field === 'rules');
555 item2.children[1].options = serviceTenants.value;
556 } else {
557 proxy.$ElMessage.error(res.msg);
558 }
559 })
618 // 获取质量评估机构 560 // 获取质量评估机构
619 getSingleList({ pageIndex: -1, pageSize: -1, tenantType: "12505" }).then((res: any) => { 561 getSingleList({ pageIndex: -1, pageSize: -1, tenantType: "12505" }).then((res: any) => {
620 if (res.code == proxy.$passCode) { 562 if (res.code == proxy.$passCode) {
621 qualityEvaluationData.value = res.data.records || []; 563 qualityEvaluationData.value = res.data.records || [];
622 let item = uploadFormItems.value.find(item => item.field == 'qualityEvaluationInstitution'); 564 let item = uploadFormItems.value.find(item => item.field == 'qualityEvaluationInstitutionGuid');
623 item && (item.options = qualityEvaluationData.value); 565 item && (item.options = qualityEvaluationData.value);
624 } else { 566 } else {
625 proxy.$ElMessage.error(res.msg); 567 proxy.$ElMessage.error(res.msg);
...@@ -629,7 +571,7 @@ onBeforeMount(() => { ...@@ -629,7 +571,7 @@ onBeforeMount(() => {
629 getSingleList({ pageIndex: -1, pageSize: -1, tenantType: "12504" }).then((res: any) => { 571 getSingleList({ pageIndex: -1, pageSize: -1, tenantType: "12504" }).then((res: any) => {
630 if (res.code == proxy.$passCode) { 572 if (res.code == proxy.$passCode) {
631 costAssessmentData.value = res.data.records || []; 573 costAssessmentData.value = res.data.records || [];
632 let item = uploadFormItems.value.find(item => item.field == 'costAssessmentInstitution'); 574 let item = uploadFormItems.value.find(item => item.field == 'costAssessmentInstitutionGuid');
633 item && (item.options = costAssessmentData.value); 575 item && (item.options = costAssessmentData.value);
634 } else { 576 } else {
635 proxy.$ElMessage.error(res.msg); 577 proxy.$ElMessage.error(res.msg);
...@@ -743,14 +685,6 @@ const baseFormItems: any = ref([ ...@@ -743,14 +685,6 @@ const baseFormItems: any = ref([
743 clearable: true, 685 clearable: true,
744 required: true, 686 required: true,
745 }, { 687 }, {
746 label: "数据时间范围",
747 type: "date-picker",
748 field: "dateRange",
749 default: null,
750 placeholder: "开始时间~结束时间",
751 clearable: true,
752 required: true,
753 }, {
754 label: '病例总数(例)', 688 label: '病例总数(例)',
755 type: 'input', 689 type: 'input',
756 placeholder: '请输入', 690 placeholder: '请输入',
...@@ -760,7 +694,6 @@ const baseFormItems: any = ref([ ...@@ -760,7 +694,6 @@ const baseFormItems: any = ref([
760 default: '', 694 default: '',
761 required: false 695 required: false
762 }, { 696 }, {
763 }, {
764 label: '数据覆盖地域', 697 label: '数据覆盖地域',
765 type: 'checkbox-select', 698 type: 'checkbox-select',
766 placeholder: '全国', 699 placeholder: '全国',
...@@ -804,13 +737,10 @@ const baseFormItems: any = ref([ ...@@ -804,13 +737,10 @@ const baseFormItems: any = ref([
804 field: 'exchangeGuid', 737 field: 'exchangeGuid',
805 default: '', 738 default: '',
806 // col: 'mr8', 739 // col: 'mr8',
807 // col: 'mr8',
808 options: currTenantChanged.value, 740 options: currTenantChanged.value,
809 props: { 741 props: {
810 // value: 'serviceTenantGuid', 742 value: 'guid',
811 // label: 'serviceTenantName' 743 label: 'tenantName'
812 value: "exchangeGuid",
813 label: "exchangeName",
814 }, 744 },
815 required: true, 745 required: true,
816 disabled: true, 746 disabled: true,
...@@ -849,10 +779,8 @@ const baseFormItems: any = ref([ ...@@ -849,10 +779,8 @@ const baseFormItems: any = ref([
849 default: [], 779 default: [],
850 // index: 0, 780 // index: 0,
851 props: { 781 props: {
852 // value: "guid", 782 value: "guid",
853 // label: "tenantName", 783 label: "tenantName",
854 value: "exchangeGuid",
855 label: "exchangeName",
856 }, 784 },
857 options: serviceTenants.value, 785 options: serviceTenants.value,
858 multiple: true, 786 multiple: true,
...@@ -1334,15 +1262,18 @@ const baseFormRules = ref({ ...@@ -1334,15 +1262,18 @@ const baseFormRules = ref({
1334 registeredExchangeGuid: [{ 1262 registeredExchangeGuid: [{
1335 type: 'array', required: true, trigger: 'change', message: "请填写其他登记的交易所" 1263 type: 'array', required: true, trigger: 'change', message: "请填写其他登记的交易所"
1336 }], 1264 }],
1337 isEvaluationAssessment: [ 1265 isQualityAssessment: [
1338 { required: true, trigger: 'change', message: "请填写是否质量及价值评估" } 1266 { required: true, trigger: 'change', message: "请填写是否完成质量评估" }
1267 ],
1268 isCostAssessment: [
1269 { required: true, trigger: 'change', message: "请填写是否完成价值评估" }
1339 ], 1270 ],
1340 applicationScenarios: [ 1271 applicationScenarios: [
1341 { required: true, trigger: 'blur', message: "请填写数据资产应用场景" } 1272 { required: true, trigger: 'blur', message: "请填写数据资产应用场景" }
1342 ], 1273 ],
1343 limitApplicationScenarios: [ 1274 limitApplicationScenarios: [
1344 { required: true, trigger: 'blur', message: "请填写数据资产应用限制场景" } 1275 { required: true, trigger: 'blur', message: "请填写数据资产应用限制场景" }
1345 ] 1276 ],
1346 }) 1277 })
1347 1278
1348 const baseSelectChange = (val, item, row) => { 1279 const baseSelectChange = (val, item, row) => {
...@@ -1810,34 +1741,6 @@ const uploadFormItems: any = ref([ ...@@ -1810,34 +1741,6 @@ const uploadFormItems: any = ref([
1810 field: 'commitmentLetter', 1741 field: 'commitmentLetter',
1811 col: 'col2', 1742 col: 'col2',
1812 }, 1743 },
1813 // {
1814 // label: '文件hash值',
1815 // type: 'input',
1816 // placeholder: '请输入',
1817 // field: 'fileHash',
1818 // default: '',
1819 // visible: true,
1820 // required: true
1821 // },
1822 // {
1823 // label: '数据质量评价收集',
1824 // tip: '支持扩展名:xls .xlsx .doc .docx .rar .zip',
1825 // type: 'upload-file',
1826 // accept: '.xls, .xlsx, .doc, .docx, .rar, .zip',
1827 // required: true,
1828 // default: [],
1829 // field: 'qualityEvaluationFile',
1830 // visible: false,
1831 // }, {
1832 // label: '数据价值评估',
1833 // tip: '支持扩展名:xls .xlsx .doc .docx .rar .zip',
1834 // type: 'upload-file',
1835 // accept: '.xls, .xlsx, .doc, .docx, .rar, .zip',
1836 // required: true,
1837 // visible: false,
1838 // default: [],
1839 // field: 'costAssessmentFile',
1840 // },
1841 { 1744 {
1842 label: '上传质量评估报告', 1745 label: '上传质量评估报告',
1843 tip: '支持扩展名:.png, .pdf,单个文件不得大于5M', 1746 tip: '支持扩展名:.png, .pdf,单个文件不得大于5M',
...@@ -1853,12 +1756,17 @@ const uploadFormItems: any = ref([ ...@@ -1853,12 +1756,17 @@ const uploadFormItems: any = ref([
1853 label: '质量评估机构', 1756 label: '质量评估机构',
1854 type: 'select', 1757 type: 'select',
1855 placeholder: '请选择', 1758 placeholder: '请选择',
1856 field: 'qualityEvaluationInstitution', 1759 field: 'qualityEvaluationInstitutionGuid',
1857 default: '', 1760 default: '',
1858 options: [], 1761 options: [],
1762 props: {
1763 label: 'tenantName',
1764 value: 'guid'
1765 },
1859 required: true, 1766 required: true,
1860 filterable: true, 1767 filterable: true,
1861 allowCreate: true, 1768 allowCreate: true,
1769 clearable: true,
1862 style: { 1770 style: {
1863 width: 'calc(33.33% - 6px)!important' 1771 width: 'calc(33.33% - 6px)!important'
1864 }, 1772 },
...@@ -1879,12 +1787,17 @@ const uploadFormItems: any = ref([ ...@@ -1879,12 +1787,17 @@ const uploadFormItems: any = ref([
1879 label: '价值评估机构', 1787 label: '价值评估机构',
1880 type: 'select', 1788 type: 'select',
1881 placeholder: '请选择', 1789 placeholder: '请选择',
1882 field: 'costAssessmentInstitution', 1790 field: 'costAssessmentInstitutionGuid',
1883 default: '', 1791 default: '',
1884 options: [], 1792 options: [],
1793 props: {
1794 label: 'tenantName',
1795 value: 'guid'
1796 },
1885 required: true, 1797 required: true,
1886 filterable: true, 1798 filterable: true,
1887 allowCreate: true, 1799 allowCreate: true,
1800 clearable: true,
1888 style: { 1801 style: {
1889 width: 'calc(33.33% - 6px)!important' 1802 width: 'calc(33.33% - 6px)!important'
1890 }, 1803 },
...@@ -1902,12 +1815,12 @@ const uploadFormRules = ref({ ...@@ -1902,12 +1815,12 @@ const uploadFormRules = ref({
1902 } 1815 }
1903 }, trigger: 'change' 1816 }, trigger: 'change'
1904 }], 1817 }],
1905 // fileHash: [ 1818 qualityEvaluationInstitutionGuid: [
1906 // { required: true, trigger: 'blur', message: "请填写文件hash值" }
1907 // ],
1908 qualityEvaluationInstitution: [
1909 { required: true, trigger: 'change', message: "请选择质量评估机构" } 1819 { required: true, trigger: 'change', message: "请选择质量评估机构" }
1910 ], 1820 ],
1821 costAssessmentInstitutionGuid: [
1822 { required: true, trigger: 'change', message: "请选择价值评估机构" }
1823 ],
1911 qualityEvaluationFile: [{ 1824 qualityEvaluationFile: [{
1912 validator: (rule: any, value: any, callback: any) => { 1825 validator: (rule: any, value: any, callback: any) => {
1913 if (!value?.length) { 1826 if (!value?.length) {
...@@ -1953,6 +1866,16 @@ const cancel = () => { ...@@ -1953,6 +1866,16 @@ const cancel = () => {
1953 }); 1866 });
1954 } 1867 }
1955 1868
1869 const qualityEvaluationInstitution = ref('');
1870 const costAssessmentInstitution = ref('');
1871 const uploadSelectChange = (val, item, row) => {
1872 if (item.field == 'qualityEvaluationInstitutionGuid') {
1873 qualityEvaluationInstitution.value = val && item.options.find(o => o.guid == val) ? '' : (val || '');
1874 } else {
1875 costAssessmentInstitution.value = val && item.options.find(o => o.guid == val) ? '' : (val || '');
1876 }
1877 }
1878
1956 /** 保存草稿,不用校验。 */ 1879 /** 保存草稿,不用校验。 */
1957 const saveDraft = () => { 1880 const saveDraft = () => {
1958 let params: any = {}; 1881 let params: any = {};
...@@ -1972,14 +1895,22 @@ const saveDraft = () => { ...@@ -1972,14 +1895,22 @@ const saveDraft = () => {
1972 let propertyFormLine = porpertyInfoFormRef.value.formInline; 1895 let propertyFormLine = porpertyInfoFormRef.value.formInline;
1973 Object.assign(params, propertyFormLine); 1896 Object.assign(params, propertyFormLine);
1974 let uploadFormInline = uploadFormRef.value.formInline; 1897 let uploadFormInline = uploadFormRef.value.formInline;
1975 const registerAttachment = { 1898 let registerAttachment: any = {
1976 // fileHash: uploadFormInline.fileHash, 1899 // fileHash: uploadFormInline.fileHash,
1977 registerLetter: uploadFormInline['registerLetter']?.map(u => u.url) || [], 1900 registerLetter: uploadFormInline['registerLetter']?.map(u => u.url) || [],
1978 qualityEvaluationFile: uploadFormInline['qualityEvaluationFile']?.map(u => u.url) || [], 1901 qualityEvaluationFile: uploadFormInline['qualityEvaluationFile']?.map(u => u.url) || [],
1979 costAssessmentFile: uploadFormInline['costAssessmentFile']?.map(u => u.url) || [], 1902 costAssessmentFile: uploadFormInline['costAssessmentFile']?.map(u => u.url) || [],
1980 commitmentLetter: uploadFormInline['commitmentLetter']?.map(u => u.url) || [], 1903 commitmentLetter: uploadFormInline['commitmentLetter']?.map(u => u.url) || [],
1981 qualityEvaluationInstitution: uploadFormInline.qualityEvaluationInstitution || '', 1904 }
1982 costAssessmentInstitution: uploadFormInline.costAssessmentInstitution || '', 1905 if (qualityEvaluationInstitution.value) {
1906 registerAttachment.qualityEvaluationInstitution = qualityEvaluationInstitution.value
1907 } else {
1908 registerAttachment.qualityEvaluationInstitutionGuid = uploadFormInline.qualityEvaluationInstitutionGuid || ''
1909 }
1910 if (costAssessmentInstitution.value) {
1911 registerAttachment.costAssessmentInstitution = costAssessmentInstitution.value
1912 } else {
1913 registerAttachment.costAssessmentInstitutionGuid = uploadFormInline.costAssessmentInstitutionGuid || ''
1983 } 1914 }
1984 Object.assign(params, { 1915 Object.assign(params, {
1985 registerAttachment: registerAttachment, 1916 registerAttachment: registerAttachment,
...@@ -2052,14 +1983,25 @@ const save = () => { ...@@ -2052,14 +1983,25 @@ const save = () => {
2052 let propertyFormLine = porpertyInfoFormRef.value.formInline; 1983 let propertyFormLine = porpertyInfoFormRef.value.formInline;
2053 Object.assign(params, propertyFormLine); 1984 Object.assign(params, propertyFormLine);
2054 let uploadFormInline = uploadFormRef.value.formInline; 1985 let uploadFormInline = uploadFormRef.value.formInline;
1986 let registerAttachment: any = {
1987 // fileHash: uploadFormInline.fileHash,
1988 registerLetter: uploadFormInline['registerLetter']?.map(u => u.url) || [],
1989 qualityEvaluationFile: uploadFormInline['qualityEvaluationFile']?.map(u => u.url) || [],
1990 costAssessmentFile: uploadFormInline['costAssessmentFile']?.map(u => u.url) || [],
1991 commitmentLetter: uploadFormInline['commitmentLetter']?.map(u => u.url) || [],
1992 }
1993 if (qualityEvaluationInstitution.value) {
1994 registerAttachment.qualityEvaluationInstitution = qualityEvaluationInstitution.value
1995 } else {
1996 registerAttachment.qualityEvaluationInstitutionGuid = uploadFormInline.qualityEvaluationInstitutionGuid || ''
1997 }
1998 if (costAssessmentInstitution.value) {
1999 registerAttachment.costAssessmentInstitution = costAssessmentInstitution.value
2000 } else {
2001 registerAttachment.costAssessmentInstitutionGuid = uploadFormInline.costAssessmentInstitutionGuid || ''
2002 }
2055 Object.assign(params, { 2003 Object.assign(params, {
2056 registerAttachment: { 2004 registerAttachment: registerAttachment,
2057 // fileHash: uploadFormInline.fileHash,
2058 registerLetter: uploadFormInline['registerLetter']?.map(u => u.url) || [],
2059 qualityEvaluationFile: uploadFormInline['qualityEvaluationFile']?.map(u => u.url) || [],
2060 costAssessmentFile: uploadFormInline['costAssessmentFile']?.map(u => u.url) || [],
2061 commitmentLetter: uploadFormInline['commitmentLetter']?.map(u => u.url) || [],
2062 },
2063 immediateApprove: true, 2005 immediateApprove: true,
2064 isSubmit: true, 2006 isSubmit: true,
2065 }); 2007 });
...@@ -2070,6 +2012,7 @@ const save = () => { ...@@ -2070,6 +2012,7 @@ const save = () => {
2070 fullscreenLoading.value = true; 2012 fullscreenLoading.value = true;
2071 if (draftDetailInfo.value.guid) { 2013 if (draftDetailInfo.value.guid) {
2072 params.guid = draftDetailInfo.value.guid; 2014 params.guid = draftDetailInfo.value.guid;
2015 params.isRestart = localStorage.getItem('isRestart') ? true : false;
2073 registerUpdate(params).then((res: any) => { 2016 registerUpdate(params).then((res: any) => {
2074 fullscreenLoading.value = false; 2017 fullscreenLoading.value = false;
2075 if (res.code == proxy.$passCode) { 2018 if (res.code == proxy.$passCode) {
...@@ -2184,7 +2127,7 @@ const approveTableInfo: any = ref({ ...@@ -2184,7 +2127,7 @@ const approveTableInfo: any = ref({
2184 <ContentWrap id="id-assetContent" title="附件信息" description="" :isExpand="assetContentExpand" expandSwicth 2127 <ContentWrap id="id-assetContent" title="附件信息" description="" :isExpand="assetContentExpand" expandSwicth
2185 style="margin-top: 15px" @expand="(v) => assetContentExpand = v"> 2128 style="margin-top: 15px" @expand="(v) => assetContentExpand = v">
2186 <Form class='uploadForm' ref="uploadFormRef" :itemList="uploadFormItems" formId="upload-form" 2129 <Form class='uploadForm' ref="uploadFormRef" :itemList="uploadFormItems" formId="upload-form"
2187 :rules="uploadFormRules" col="col3" /> 2130 :rules="uploadFormRules" col="col3" @selectChange="uploadSelectChange" />
2188 </ContentWrap> 2131 </ContentWrap>
2189 <ContentWrap id="id-propertyInfo" title="权利信息" description="申报数据资产的权利信息" expandSwicth 2132 <ContentWrap id="id-propertyInfo" title="权利信息" description="申报数据资产的权利信息" expandSwicth
2190 :isExpand="propertyInfoExpand" style="margin-top: 15px" @expand="(v) => propertyInfoExpand = v"> 2133 :isExpand="propertyInfoExpand" style="margin-top: 15px" @expand="(v) => propertyInfoExpand = v">
......
...@@ -515,13 +515,11 @@ const tabChange = (val) => { ...@@ -515,13 +515,11 @@ const tabChange = (val) => {
515 515
516 const nodeClick = (data, node) => { 516 const nodeClick = (data, node) => {
517 if (data.classifyDetailGuid == 'all') { 517 if (data.classifyDetailGuid == 'all') {
518 fieldItemList.value[4].default = '';
519 fieldItemList.value[5].default = []; 518 fieldItemList.value[5].default = [];
520 } else { 519 } else {
521 const nodeData = JSON.parse(JSON.stringify(data)); 520 const nodeData = JSON.parse(JSON.stringify(data));
522 let parentGuids = nodeData.parentGuids || []; 521 let parentGuids = nodeData.parentGuids || [];
523 parentGuids.push(nodeData.guid) 522 parentGuids.push(nodeData.guid)
524 fieldItemList.value[4].default = 'Y';
525 fieldItemList.value[5].default = parentGuids; 523 fieldItemList.value[5].default = parentGuids;
526 } 524 }
527 nextTick(() => { 525 nextTick(() => {
...@@ -822,7 +820,6 @@ const cascaderChange = (val, info) => { ...@@ -822,7 +820,6 @@ const cascaderChange = (val, info) => {
822 } else { 820 } else {
823 treeInfoRef.value.expandedKey = val || ['all']; 821 treeInfoRef.value.expandedKey = val || ['all'];
824 treeInfoRef.value.setCurrentKey(val?.at(-1) || 'all'); 822 treeInfoRef.value.setCurrentKey(val?.at(-1) || 'all');
825 val && (fieldItemList.value[4].default = 'Y');
826 promiseList( 823 promiseList(
827 getFieldTableData() 824 getFieldTableData()
828 ) 825 )
...@@ -904,18 +901,12 @@ const selectChange = (val, item, scope = null) => { ...@@ -904,18 +901,12 @@ const selectChange = (val, item, scope = null) => {
904 } 901 }
905 } 902 }
906 } else if (item.field == 'isClassify') { 903 } else if (item.field == 'isClassify') {
907 fieldItemList.value[5].default = [];
908 fieldItemList.value[6].default = '';
909 treeInfo.value.expandedKey = ['all'];
910 treeInfoRef.value.setCurrentKey('all');
911 fieldItemList.value[4].default = val || ''; 904 fieldItemList.value[4].default = val || '';
905 fieldItemList.value[5].default = scope.classifyName;
912 nextTick(() => { 906 nextTick(() => {
913 promiseList( 907 promiseList(
914 getFieldTableData() 908 getFieldTableData()
915 ) 909 )
916 const treeRef = treeInfoRef.value.treeRef;
917 const container = treeRef.$el;
918 container.scrollTo({ top: 0, behavior: 'smooth' });
919 }) 910 })
920 911
921 } 912 }
......
...@@ -382,7 +382,7 @@ const getQueryTreeData = ()=>{ ...@@ -382,7 +382,7 @@ const getQueryTreeData = ()=>{
382 currNodeInfo.value = {type:2,guid:dataSourceGuid,name:datasourceName} 382 currNodeInfo.value = {type:2,guid:dataSourceGuid,name:datasourceName}
383 } 383 }
384 nextTick(() => { 384 nextTick(() => {
385 treeInfo.value.currentNodeKey = currentNodeKey.value 385 treeInfo.value.currentNodeKey = <string>route.query.tableGuid || currentNodeKey.value;
386 treeInfo.value.expandedKey = expandedKey.value 386 treeInfo.value.expandedKey = expandedKey.value
387 }) 387 })
388 nodeClick({type:2,guid:dataSourceGuid,name:datasourceName}) 388 nodeClick({type:2,guid:dataSourceGuid,name:datasourceName})
......
...@@ -683,7 +683,6 @@ const download = () => { ...@@ -683,7 +683,6 @@ const download = () => {
683 <div v-show="!isWordStyle" class="header-detail"> 683 <div v-show="!isWordStyle" class="header-detail">
684 <template v-if="detailInfo.analysisReportType == 1"> 684 <template v-if="detailInfo.analysisReportType == 1">
685 <span>{{ '表名称:' + (detailInfo.qualityModelName ?? '--') }}</span> 685 <span>{{ '表名称:' + (detailInfo.qualityModelName ?? '--') }}</span>
686 <span style="margin-left: 40px;">{{ '所属主题:' + (detailInfo.subjectDomainName ?? '--') }}</span>
687 <span style="margin-left: 40px;">{{ '所属数据源:' + (detailInfo.dataSourceName ?? '--') }}</span> 686 <span style="margin-left: 40px;">{{ '所属数据源:' + (detailInfo.dataSourceName ?? '--') }}</span>
688 </template> 687 </template>
689 <span v-else-if="detailInfo.analysisReportType == 3">{{ '分组名称:' + (detailInfo.qualityModelGroupName ?? '--') 688 <span v-else-if="detailInfo.analysisReportType == 3">{{ '分组名称:' + (detailInfo.qualityModelGroupName ?? '--')
...@@ -787,7 +786,6 @@ const download = () => { ...@@ -787,7 +786,6 @@ const download = () => {
787 <div style=" height: 40px;line-height: 40px;font-size: 14px;color: #666666;"> 786 <div style=" height: 40px;line-height: 40px;font-size: 14px;color: #666666;">
788 <template v-if="detailInfo.analysisReportType == 1"> 787 <template v-if="detailInfo.analysisReportType == 1">
789 <span>{{ '表名称:' + (detailInfo.qualityModelName ?? '--') }}</span> 788 <span>{{ '表名称:' + (detailInfo.qualityModelName ?? '--') }}</span>
790 <span style="margin-left: 40px;">{{ '所属主题:' + (detailInfo.subjectDomainName ?? '--') }}</span>
791 <span style="margin-left: 40px;">{{ '所属数据源:' + (detailInfo.dataSourceName ?? '--') }}</span> 789 <span style="margin-left: 40px;">{{ '所属数据源:' + (detailInfo.dataSourceName ?? '--') }}</span>
792 </template> 790 </template>
793 <span v-else-if="detailInfo.analysisReportType == 3">{{ '分组名称:' + (detailInfo.qualityModelGroupName ?? '--') 791 <span v-else-if="detailInfo.analysisReportType == 3">{{ '分组名称:' + (detailInfo.qualityModelGroupName ?? '--')
......
...@@ -226,6 +226,7 @@ const rulesDetailTableBtnClick = (scope, btn) => { ...@@ -226,6 +226,7 @@ const rulesDetailTableBtnClick = (scope, btn) => {
226 if (type == 'ruleDetail') { 226 if (type == 'ruleDetail') {
227 detailLoading.value = true; 227 detailLoading.value = true;
228 if (detailJson.value[row.ruleConfGuid]) { 228 if (detailJson.value[row.ruleConfGuid]) {
229 detailInfo.value = detailJson.value[row.ruleConfGuid];
229 ruleType.value = detailInfo.value.ruleCode; 230 ruleType.value = detailInfo.value.ruleCode;
230 toSubjectTables.value = [{ 231 toSubjectTables.value = [{
231 guid: detailInfo.value.subjectGuid, 232 guid: detailInfo.value.subjectGuid,
......
...@@ -331,7 +331,7 @@ onActivated(() => { ...@@ -331,7 +331,7 @@ onActivated(() => {
331 let tab: any = userStore.tabbar.find((tab: any) => tab.fullPath === fullPath); 331 let tab: any = userStore.tabbar.find((tab: any) => tab.fullPath === fullPath);
332 if (tab) { 332 if (tab) {
333 if (route.query.detail) { 333 if (route.query.detail) {
334 tab.meta.title = `新建规则(${route.query.planName})`; 334 tab.meta.title = `方案详情-${route.query.planName}`;
335 if (fullPath === route.fullPath) { 335 if (fullPath === route.fullPath) {
336 document.title = tab.meta.title; 336 document.title = tab.meta.title;
337 } 337 }
......
...@@ -28,10 +28,8 @@ import { ...@@ -28,10 +28,8 @@ import {
28 import useDataQualityStore from "@/store/modules/dataQuality"; 28 import useDataQualityStore from "@/store/modules/dataQuality";
29 import { useValidator } from '@/hooks/useValidator'; 29 import { useValidator } from '@/hooks/useValidator';
30 import { TableColumnWidth } from '@/utils/enum'; 30 import { TableColumnWidth } from '@/utils/enum';
31 import useDataCatalogStore from "@/store/modules/dataCatalog";
32 31
33 const dataQualityStore = useDataQualityStore(); 32 const dataQualityStore = useDataQualityStore();
34 const dataCatalogStore = useDataCatalogStore();
35 33
36 const { proxy } = getCurrentInstance() as any; 34 const { proxy } = getCurrentInstance() as any;
37 const { orderNum, description } = useValidator(); 35 const { orderNum, description } = useValidator();
...@@ -411,10 +409,27 @@ const tableBtnClick = (scope, btn) => { ...@@ -411,10 +409,27 @@ const tableBtnClick = (scope, btn) => {
411 } else if (type == "delete") { 409 } else if (type == "delete") {
412 open("此操作将永久删除, 是否继续?", "warning"); 410 open("此操作将永久删除, 是否继续?", "warning");
413 } else if (type == 'locateDataCatalog') { 411 } else if (type == 'locateDataCatalog') {
414 dataCatalogStore.setLocateSubjectName(row.name); 412 // dataCatalogStore.setLocateSubjectName(row.name);
415 router.push({ 413 // router.push({
416 name: 'dataWarehouse' 414 // name: 'dataWarehouse'
417 }); 415 // });
416 if (row.dataSource == '4') {
417 router.push({
418 name: 'classifyGradeCatalogue',
419 query: {
420 databaseGuid: row.dataSourceGuid,
421 tableGuid: row.subjectGuid
422 }
423 });
424 } else {
425 router.push({
426 name: 'metaSheet',
427 query: {
428 id: row.subjectGuid,
429 name: row.name
430 }
431 });
432 }
418 } 433 }
419 }; 434 };
420 435
......
...@@ -10,7 +10,7 @@ import { ...@@ -10,7 +10,7 @@ import {
10 getInventoryDsDir 10 getInventoryDsDir
11 } from '@/api/modules/dataQuality'; 11 } from '@/api/modules/dataQuality';
12 import { 12 import {
13 getMetaTreeData 13 getMetaTreeData
14 } from '@/api/modules/dataMetaService'; 14 } from '@/api/modules/dataMetaService';
15 import Table from "@/components/Table/index.vue"; 15 import Table from "@/components/Table/index.vue";
16 import Form from "@/components/Form/index.vue"; 16 import Form from "@/components/Form/index.vue";
...@@ -134,6 +134,15 @@ watch(() => props.largeCategoryList, (val) => { ...@@ -134,6 +134,15 @@ watch(() => props.largeCategoryList, (val) => {
134 } 134 }
135 }) 135 })
136 136
137 const operationList: any = ref([
138 { label: '大于', value: '>', },
139 { label: '小于', value: '<', },
140 { label: '等于', value: '=', },
141 { label: '大于等于', value: '>=', },
142 { label: '小于等于', value: '<=', },
143 { label: '介于', value: 'between', },
144 ]);
145
137 /** 规范性检验规则 */ 146 /** 规范性检验规则 */
138 const checkRulesList: any = ref([]); 147 const checkRulesList: any = ref([]);
139 148
...@@ -178,7 +187,24 @@ onBeforeMount(() => { ...@@ -178,7 +187,24 @@ onBeforeMount(() => {
178 formItems.value[0].children = panelList.value; 187 formItems.value[0].children = panelList.value;
179 } 188 }
180 if (props.smallCategoryList?.length) { 189 if (props.smallCategoryList?.length) {
181 panelList.value[2].options = props.smallCategoryList.slice(0, 6); 190 let p = panelList.value[1];
191 if (p.default) {
192 if (p.default == '1') {//规范性
193 panelList.value[2].options = props.smallCategoryList.slice(0, 6);
194 } else if (p.default == '2') {
195 panelList.value[2].options = props.smallCategoryList.slice(6, 8);
196 } else if (p.default == '3') {
197 panelList.value[2].options = props.smallCategoryList.slice(8, 13);
198 } else if (p.default == '4') {
199 panelList.value[2].options = props.smallCategoryList.slice(13, 15);
200 } else if (p.default == '5') {
201 panelList.value[2].options = props.smallCategoryList.slice(15, 18);
202 } else if (p.default == '6') {
203 panelList.value[2].options = props.smallCategoryList.slice(18, 20);
204 }
205 } else {
206 panelList.value[2].options = props.smallCategoryList.slice(0, 6);
207 }
182 panelList.value[2].default = getDefaultSmallCategory(formItems.value[0].default); 208 panelList.value[2].default = getDefaultSmallCategory(formItems.value[0].default);
183 formItems.value[0].children = panelList.value; 209 formItems.value[0].children = panelList.value;
184 } 210 }
...@@ -623,46 +649,46 @@ const submit = () => { ...@@ -623,46 +649,46 @@ const submit = () => {
623 } 649 }
624 650
625 const getSubjectTableTreeData = () => { 651 const getSubjectTableTreeData = () => {
626 if (props.dataSource == '4' || props.value.dataSource == '4') { 652 if (props.dataSource == '4' || props.value.dataSource == '4') {
627 return getInventoryDsDir().then((res: any) => { 653 return getInventoryDsDir().then((res: any) => {
628 if (res.code == proxy.$passCode) { 654 if (res.code == proxy.$passCode) {
629 contrastSubjects.value = res.data?.map(d => { 655 contrastSubjects.value = res.data?.map(d => {
630 d.parentGuid = 0; 656 d.parentGuid = 0;
631 d.guid = d.databaseGuid; 657 d.guid = d.databaseGuid;
632 d.name = d.databaseChName; 658 d.name = d.databaseChName;
633 d.label = d.databaseChName + `(${d.database})`; 659 d.label = d.databaseChName + `(${d.database})`;
634 d.children = d.children?.map(child => { 660 d.children = d.children?.map(child => {
635 child.parentGuid = d.guid; 661 child.parentGuid = d.guid;
636 child.label = child.tableChName + `(${child.tableName})`; 662 child.label = child.tableChName + `(${child.tableName})`;
637 child.guid = child.tableGuid; 663 child.guid = child.tableGuid;
638 child.isLeaf = true; 664 child.isLeaf = true;
639 child.dataServerName = d.database; 665 child.dataServerName = d.database;
640 child.dataSourceGuid = d.databaseGuid; 666 child.dataSourceGuid = d.databaseGuid;
641 child.parentGuid = d.databaseGuid; 667 child.parentGuid = d.databaseGuid;
642 return child; 668 return child;
643 }) 669 })
644 return d; 670 return d;
645 }) || []; 671 }) || [];
646 } 672 }
647 }) 673 })
648 } else { 674 } else {
649 return getMetaTreeData({ isImportCreate: 'N' }).then((res: any) => { 675 return getMetaTreeData({ isImportCreate: 'N' }).then((res: any) => {
650 if (res.code == proxy.$passCode) { 676 if (res.code == proxy.$passCode) {
651 contrastSubjects.value = res.data?.children?.map(d => { 677 contrastSubjects.value = res.data?.children?.map(d => {
652 d.parentGuid = 0; 678 d.parentGuid = 0;
653 d.label = d.name; 679 d.label = d.name;
654 d.children = d.children?.map(child => { 680 d.children = d.children?.map(child => {
655 child.label = child.name + `(${child.tableName})`; 681 child.label = child.name + `(${child.tableName})`;
656 child.isLeaf = true; 682 child.isLeaf = true;
657 child.dataServerName = d.name; 683 child.dataServerName = child.databaseName;
658 child.dataSourceGuid = d.guid; 684 child.dataSourceGuid = d.guid;
659 return child; 685 return child;
660 }) 686 })
661 return d; 687 return d;
662 }) || []; 688 }) || [];
663 } 689 }
664 }) 690 })
665 } 691 }
666 // return getSubjectTableTree({}).then((res: any) => { 692 // return getSubjectTableTree({}).then((res: any) => {
667 // if (res.code == proxy.$passCode) { 693 // if (res.code == proxy.$passCode) {
668 // contrastSubjects.value = res.data || []; 694 // contrastSubjects.value = res.data || [];
...@@ -796,12 +822,11 @@ const formBtnClick = (btn) => { ...@@ -796,12 +822,11 @@ const formBtnClick = (btn) => {
796 if (field.dataRange) { 822 if (field.dataRange) {
797 f.dataRange = field.dataRange; 823 f.dataRange = field.dataRange;
798 } 824 }
825 f.startValue = field.startValue;
826 f.endValue = field.endValue;
799 if (field.startValue) { 827 if (field.startValue) {
800 if (f.dataType == 'date' || f.dataType == 'datetime') { 828 if (f.dataType == 'date' || f.dataType == 'datetime') {
801 f.dateValueRange = [field.startValue, field.endValue]; 829 f.dateValueRange = [field.startValue, field.endValue];
802 } else {
803 f.startValue = field.startValue;
804 f.endValue = field.endValue;
805 } 830 }
806 } 831 }
807 } 832 }
...@@ -852,6 +877,7 @@ const formBtnClick = (btn) => { ...@@ -852,6 +877,7 @@ const formBtnClick = (btn) => {
852 if (fIndex > -1) { 877 if (fIndex > -1) {
853 let f = normCheckTableListData.value[dialogSelectSubjectTable.value.enName][fIndex]; 878 let f = normCheckTableListData.value[dialogSelectSubjectTable.value.enName][fIndex];
854 f.checkRule = field.checkRule; 879 f.checkRule = field.checkRule;
880 f.checkRuleName = field.checkRuleName;
855 f.configValue = field.configValue; 881 f.configValue = field.configValue;
856 if (f.checkRule == 'length_rule') { 882 if (f.checkRule == 'length_rule') {
857 let vSplit = f.configValue.split('#'); 883 let vSplit = f.configValue.split('#');
...@@ -871,7 +897,7 @@ const formBtnClick = (btn) => { ...@@ -871,7 +897,7 @@ const formBtnClick = (btn) => {
871 } 897 }
872 898
873 const selectChange = (val, item, info) => { 899 const selectChange = (val, item, info) => {
874 setPanelListValue(info, true); 900 setPanelListValue(info, item.field == 'largeCategory');
875 }; 901 };
876 902
877 /** 设置表单选项的值,防止largeCategory的options改变,重新赋值。 当radioGroupChange为true,init为false时,为用户手动切换,需要更新大类的默认值。 */ 903 /** 设置表单选项的值,防止largeCategory的options改变,重新赋值。 当radioGroupChange为true,init为false时,为用户手动切换,需要更新大类的默认值。 */
...@@ -1204,12 +1230,11 @@ const listItemClick = (data) => { ...@@ -1204,12 +1230,11 @@ const listItemClick = (data) => {
1204 if (field.dataRange) { 1230 if (field.dataRange) {
1205 f.dataRange = field.dataRange; 1231 f.dataRange = field.dataRange;
1206 } 1232 }
1233 f.startValue = field.startValue;
1234 f.endValue = field.endValue;
1207 if (field.startValue) { 1235 if (field.startValue) {
1208 if (f.dataType == 'date' || f.dataType == 'datetime') { 1236 if (f.dataType == 'date' || f.dataType == 'datetime') {
1209 f.dateValueRange = [field.startValue, field.endValue]; 1237 f.dateValueRange = [field.startValue, field.endValue];
1210 } else {
1211 f.startValue = field.startValue;
1212 f.endValue = field.endValue;
1213 } 1238 }
1214 } 1239 }
1215 } 1240 }
...@@ -1237,7 +1262,8 @@ const listItemClick = (data) => { ...@@ -1237,7 +1262,8 @@ const listItemClick = (data) => {
1237 if (fIndex > -1) { 1262 if (fIndex > -1) {
1238 let f = normCheckTableListData.value[dialogSelectSubjectTable.value.enName][fIndex]; 1263 let f = normCheckTableListData.value[dialogSelectSubjectTable.value.enName][fIndex];
1239 if (field.checkRule) { 1264 if (field.checkRule) {
1240 f.checkRule = field.dataRange; 1265 f.checkRule = field.checkRule;
1266 f.checkRuleName = field.checkRuleName;
1241 f.configValue = field.configValue; 1267 f.configValue = field.configValue;
1242 if (field.checkRule == 'length_rule') { 1268 if (field.checkRule == 'length_rule') {
1243 let vLen = f.configValue?.split('#'); 1269 let vLen = f.configValue?.split('#');
...@@ -1404,7 +1430,8 @@ const validateFilter = () => { ...@@ -1404,7 +1430,8 @@ const validateFilter = () => {
1404 validateFilterBtnDisable.value = true; 1430 validateFilterBtnDisable.value = true;
1405 validateSubjectTableRule({ 1431 validateSubjectTableRule({
1406 subjectGuid: dialogSelectSubjectTable.value.guid, 1432 subjectGuid: dialogSelectSubjectTable.value.guid,
1407 condition: tableFilters.value[enName] 1433 condition: tableFilters.value[enName],
1434 dataSource: props.dataSource || props.value.dataSource
1408 }).then((res: any) => { 1435 }).then((res: any) => {
1409 validateFilterBtnDisable.value = false; 1436 validateFilterBtnDisable.value = false;
1410 if (res.code == proxy.$passCode) { 1437 if (res.code == proxy.$passCode) {
...@@ -1602,7 +1629,8 @@ const validateSql = () => { ...@@ -1602,7 +1629,8 @@ const validateSql = () => {
1602 validateSqlBtnDisable.value = true; 1629 validateSqlBtnDisable.value = true;
1603 validateCustomSql({ 1630 validateCustomSql({
1604 subjectGuid: dialogSelectSubjectTable.value.guid, 1631 subjectGuid: dialogSelectSubjectTable.value.guid,
1605 sqlScript: sqlTableFilters.value[enName] 1632 sqlScript: sqlTableFilters.value[enName],
1633 dataSource: props.dataSource || props.value.dataSource
1606 }).then((res: any) => { 1634 }).then((res: any) => {
1607 validateSqlBtnDisable.value = false; 1635 validateSqlBtnDisable.value = false;
1608 if (res?.code == proxy.$passCode) { 1636 if (res?.code == proxy.$passCode) {
...@@ -1778,14 +1806,14 @@ const submitValueRange = () => { ...@@ -1778,14 +1806,14 @@ const submitValueRange = () => {
1778 let valueTableFields = valueRangeTableListData.value[table]; 1806 let valueTableFields = valueRangeTableListData.value[table];
1779 let ruleFields: any = [] 1807 let ruleFields: any = []
1780 for (const field of valueTableFields) { 1808 for (const field of valueTableFields) {
1781 if (field.startValue == null && field.endValue == null) { 1809 // if (field.startValue == null && field.endValue == null) {
1782 if (dialogSelectSubjectTable.value.enName != table) { 1810 // if (dialogSelectSubjectTable.value.enName != table) {
1783 valueCheckFormListRef.value.setSelectList(table, 'enName'); 1811 // valueCheckFormListRef.value.setSelectList(table, 'enName');
1784 } 1812 // }
1785 ElMessage.error(`表【${table}】的字段【${field.enName}】设置了值域,但范围未填写完整`); 1813 // ElMessage.error(`表【${table}】的字段【${field.enName}】设置了值域,但范围未填写完整`);
1786 return; 1814 // return;
1787 } 1815 // }
1788 if (field.startValue != null || field.endValue != null) { 1816 if (field.startValue || field.endValue) {
1789 ruleFields.push(field); 1817 ruleFields.push(field);
1790 } else if (field.dataRange) { 1818 } else if (field.dataRange) {
1791 ruleFields.push(field); 1819 ruleFields.push(field);
...@@ -1969,7 +1997,7 @@ const submitNormCheck = () => { ...@@ -1969,7 +1997,7 @@ const submitNormCheck = () => {
1969 if (dialogSelectSubjectTable.value.enName != table) { 1997 if (dialogSelectSubjectTable.value.enName != table) {
1970 normCheckFormListRef.value.setSelectList(table, 'enName'); 1998 normCheckFormListRef.value.setSelectList(table, 'enName');
1971 } 1999 }
1972 ElMessage.error(`表【${table}】的字段【${field.enName}】设置了长度检验,但长度值未填写完整`); 2000 ElMessage.error(`表【${table}】的字段【${field.enName}】设置了长度检验,但长度范围值未填写完整`);
1973 return; 2001 return;
1974 } 2002 }
1975 if (parseInt(field.value) >= parseInt(field.value1)) { 2003 if (parseInt(field.value) >= parseInt(field.value1)) {
...@@ -2016,6 +2044,18 @@ const submitNormCheck = () => { ...@@ -2016,6 +2044,18 @@ const submitNormCheck = () => {
2016 normCheckDialogVisible.value = false; 2044 normCheckDialogVisible.value = false;
2017 } 2045 }
2018 2046
2047 /** 规范检验 长度和精度的数入 */
2048 const validatePositiveInteger = (row: any, field: string) => {
2049 row[field] = row[field].replace(/\D/g, '');
2050 let value = row[field];
2051
2052 // 如果输入值为0,则将其设置为1
2053 if (value == '0') {
2054 row[field] = '1';
2055 return;
2056 }
2057 };
2058
2019 const getFormInfo = () => { 2059 const getFormInfo = () => {
2020 let formInline = ruleFormRef.value.formInline; 2060 let formInline = ruleFormRef.value.formInline;
2021 let ruleName = props.ruleTypeList.find(option => option.ruleCode == formInline.ruleCode).ruleName; 2061 let ruleName = props.ruleTypeList.find(option => option.ruleCode == formInline.ruleCode).ruleName;
...@@ -2219,7 +2259,14 @@ defineExpose({ ...@@ -2219,7 +2259,14 @@ defineExpose({
2219 </el-table-column> 2259 </el-table-column>
2220 <el-table-column label="值域" width="280px" align="left" fixed="right"> 2260 <el-table-column label="值域" width="280px" align="left" fixed="right">
2221 <template #default="scope"> 2261 <template #default="scope">
2222 <el-input 2262 <span v-if="props.readonly">{{ (!scope.row.dataType || scope.row.dataType == 'varchar' ||
2263 scope.row.dataType == 'char' || scope.row.dataType == 'bit' || scope.row.dataType == 'json' ||
2264 scope.row.dataType == 'text' || !scope.row.dataType || scope.row.dataType == 'string' ||
2265 scope.row.dataType == 'numeric') ? (scope.row.dataRange || '--') : (scope.row.startValue &&
2266 scope.row.endValue ? `${scope.row.startValue}~${scope.row.endValue}` : (scope.row.startValue != null ?
2267 scope.row.startValue : (scope.row.endValue ?? '--'))) }}</span>
2268 <template v-else>
2269 <el-input
2223 v-show="!scope.row.dataType || scope.row.dataType == 'varchar' || scope.row.dataType == 'char' || scope.row.dataType == 'bit' || scope.row.dataType == 'json' || scope.row.dataType == 'text' || !scope.row.dataType || scope.row.dataType == 'string' || scope.row.dataType == 'numeric'" 2270 v-show="!scope.row.dataType || scope.row.dataType == 'varchar' || scope.row.dataType == 'char' || scope.row.dataType == 'bit' || scope.row.dataType == 'json' || scope.row.dataType == 'text' || !scope.row.dataType || scope.row.dataType == 'string' || scope.row.dataType == 'numeric'"
2224 v-model.trim="scope.row.dataRange" clearable placeholder="多值按照分号;分隔"> </el-input> 2271 v-model.trim="scope.row.dataRange" clearable placeholder="多值按照分号;分隔"> </el-input>
2225 <!-- <div class="range-sum" v-show="scope.row.dataType == 'datetime' || scope.row.dataType == 'date'"> 2272 <!-- <div class="range-sum" v-show="scope.row.dataType == 'datetime' || scope.row.dataType == 'date'">
...@@ -2235,6 +2282,7 @@ defineExpose({ ...@@ -2235,6 +2282,7 @@ defineExpose({
2235 <el-input :disabled="props.readonly" v-model.trim="scope.row.endValue" placeholder="请输入" clearable> 2282 <el-input :disabled="props.readonly" v-model.trim="scope.row.endValue" placeholder="请输入" clearable>
2236 </el-input> 2283 </el-input>
2237 </div> 2284 </div>
2285 </template>
2238 </template> 2286 </template>
2239 </el-table-column> 2287 </el-table-column>
2240 </el-table> 2288 </el-table>
...@@ -2355,16 +2403,18 @@ defineExpose({ ...@@ -2355,16 +2403,18 @@ defineExpose({
2355 <span v-else>{{ scope.row.checkRuleName ?? '--' }}</span> 2403 <span v-else>{{ scope.row.checkRuleName ?? '--' }}</span>
2356 </template> 2404 </template>
2357 </el-table-column> 2405 </el-table-column>
2358 <el-table-column label="填写配置项" width="200px" align="left"> 2406 <el-table-column label="填写配置项" width="240px" align="left">
2359 <template #default="scope"> 2407 <template #default="scope">
2360 <span v-if="props.readonly">{{ scope.row.configValue ?? '--' }}</span> 2408 <span v-if="props.readonly">{{ scope.row.configValue != null ? (scope.row.checkRule != 'length_rule' ? scope.row.configValue : (scope.row.configValue.split('#')?.length ?
2409 (operationList.find(o => o.value == scope.row.configValue.split('#')[0]).label +
2410 scope.row.configValue.split('#').slice(1).join('~')) : scope.row.configValue)) : '--' }}</span>
2361 <span 2411 <span
2362 v-else-if="!scope.row.checkRule || ['id_card_rule', 'phone_number_rule', 'en_rule', 'ch_rule', 'num_value_rule'].includes(scope.row.checkRule)">--</span> 2412 v-else-if="!scope.row.checkRule || ['id_card_rule', 'phone_number_rule', 'en_rule', 'ch_rule', 'num_value_rule'].includes(scope.row.checkRule)">--</span>
2363 <template v-else> 2413 <template v-else>
2364 <el-input v-show="scope.row.checkRule == 'custom_regular_rule'" v-model.trim="scope.row.configValue" 2414 <el-input v-show="scope.row.checkRule == 'custom_regular_rule'" v-model.trim="scope.row.configValue"
2365 clearable placeholder="请输入"> </el-input> 2415 clearable placeholder="请输入"> </el-input>
2366 <el-input v-show="scope.row.checkRule == 'precision_rule'" v-model.trim="scope.row.configValue" 2416 <el-input v-show="scope.row.checkRule == 'precision_rule'" v-model.trim="scope.row.configValue"
2367 clearable placeholder="请输入" @input="(val) => scope.row.configValue = val.replace(/\D/g, '')"> 2417 clearable :maxlength="4" placeholder="请输入" @input="validatePositiveInteger(scope.row, 'configValue')">
2368 </el-input> 2418 </el-input>
2369 <el-select v-show="scope.row.checkRule == 'date_format_rule'" v-model="scope.row.configValue" 2419 <el-select v-show="scope.row.checkRule == 'date_format_rule'" v-model="scope.row.configValue"
2370 placeholder="请选择" filterable clearable> 2420 placeholder="请选择" filterable clearable>
...@@ -2375,17 +2425,16 @@ defineExpose({ ...@@ -2375,17 +2425,16 @@ defineExpose({
2375 <div class="range-sum" v-show="scope.row.checkRule == 'length_rule'"> 2425 <div class="range-sum" v-show="scope.row.checkRule == 'length_rule'">
2376 <el-select v-model="scope.row.operator" placeholder="请选择" filterable clearable 2426 <el-select v-model="scope.row.operator" placeholder="请选择" filterable clearable
2377 :style="{ width: scope.row.operator == 'between' ? 'calc(33% - 2px)' : 'calc(50% - 4px)' }"> 2427 :style="{ width: scope.row.operator == 'between' ? 'calc(33% - 2px)' : 'calc(50% - 4px)' }">
2378 <el-option 2428 <el-option v-for="opt in operationList" :key="opt['value']" :label="opt['label']"
2379 v-for="opt in [{ value: '=' }, { value: '>' }, { value: '<' }, { value: '>=' }, { value: '<=' }, { value: 'between', label: '介于' }]" 2429 :value="opt['value']" />
2380 :key="opt['value']" :label="opt['label']" :value="opt['value']" />
2381 </el-select> 2430 </el-select>
2382 <el-input :disabled="props.readonly" v-model.trim="scope.row.value" placeholder="请输入" clearable 2431 <el-input :disabled="props.readonly" v-model.trim="scope.row.value" placeholder="请输入" clearable
2383 :style="{ width: scope.row.operator == 'between' ? 'calc(33% - 2px)' : 'calc(50% - 4px)' }" 2432 :style="{ width: scope.row.operator == 'between' ? 'calc(33% - 2px)' : 'calc(50% - 4px)' }"
2384 @input="(val) => scope.row.value = val.replace(/\D/g, '')"> 2433 :maxlength="4" @input="validatePositiveInteger(scope.row, 'value')">
2385 </el-input> 2434 </el-input>
2386 <el-input v-show="scope.row.operator == 'between'" :disabled="props.readonly" 2435 <el-input v-show="scope.row.operator == 'between'" :disabled="props.readonly"
2387 v-model.trim="scope.row.value1" placeholder="请输入" clearable :style="{ width: 'calc(33% - 2px)' }" 2436 v-model.trim="scope.row.value1" placeholder="请输入" clearable :style="{ width: 'calc(33% - 2px)' }"
2388 @input="(val) => scope.row.value1 = val.replace(/\D/g, '')"> 2437 :maxlength="4" @input="validatePositiveInteger(scope.row, 'value1')">
2389 </el-input> 2438 </el-input>
2390 </div> 2439 </div>
2391 </template> 2440 </template>
...@@ -2421,8 +2470,9 @@ defineExpose({ ...@@ -2421,8 +2470,9 @@ defineExpose({
2421 <el-table-column prop="contrastSubjectGuid" label="选择对比表" width="200px" align="left" show-overflow-tooltip> 2470 <el-table-column prop="contrastSubjectGuid" label="选择对比表" width="200px" align="left" show-overflow-tooltip>
2422 <template #default="scope"> 2471 <template #default="scope">
2423 <el-tree-select v-if="!props.readonly" ref="treeSelectRef" filterable clearable 2472 <el-tree-select v-if="!props.readonly" ref="treeSelectRef" filterable clearable
2424 v-model="scope.row['contrastSubjectGuid']" node-key="guid" :data="contrastSubjects" placeholder="请选择" :default-expanded-keys="defaultExpandedKeys" 2473 v-model="scope.row['contrastSubjectGuid']" node-key="guid" :data="contrastSubjects" placeholder="请选择"
2425 :auto-expand-parent="true" :default-checked-keys="[props.value.contrastSubjectGuid]" 2474 :default-expanded-keys="defaultExpandedKeys" :auto-expand-parent="true"
2475 :default-checked-keys="[props.value.contrastSubjectGuid]"
2426 :filter-node-method="contrastSubjectInputFilterMethod" :props="{ 2476 :filter-node-method="contrastSubjectInputFilterMethod" :props="{
2427 value: 'guid', 2477 value: 'guid',
2428 label: 'name', 2478 label: 'name',
......
...@@ -94,7 +94,7 @@ const getSubjectTableTreeData = () => { ...@@ -94,7 +94,7 @@ const getSubjectTableTreeData = () => {
94 d.label = d.name; 94 d.label = d.name;
95 d.children = d.children?.map(child => { 95 d.children = d.children?.map(child => {
96 child.label = child.name + `(${child.tableName})`; 96 child.label = child.name + `(${child.tableName})`;
97 child.dataServerName = d.name; 97 child.dataServerName = child.databaseName;
98 child.dataSourceGuid = d.guid; 98 child.dataSourceGuid = d.guid;
99 return child; 99 return child;
100 }) 100 })
......
...@@ -253,19 +253,23 @@ onBeforeMount(() => { ...@@ -253,19 +253,23 @@ onBeforeMount(() => {
253 ElMessage.error(res.msg); 253 ElMessage.error(res.msg);
254 } 254 }
255 }) 255 })
256 getSmallCategoryList().then((res: any) => { 256 let ps1 = getLargeCategoryList().then((res: any) => {
257 if (res.code == proxy.$passCode) { 257 if (res.code == proxy.$passCode) {
258 smallCategoryList.value = res.data || []; 258 return res.data || [];
259 } else {
260 ElMessage.error(res.msg);
261 }
262 })
263 getLargeCategoryList().then((res: any) => {
264 if (res.code == proxy.$passCode) {
265 largeCategoryList.value = res.data || [];
266 } else { 259 } else {
267 ElMessage.error(res.msg); 260 ElMessage.error(res.msg);
268 } 261 }
262 });
263 let ps2 = getSmallCategoryList().then((res: any) => {
264 if (res.code == proxy.$passCode) {
265 return res.data || [];
266 } else {
267 ElMessage.error(res.msg);
268 }
269 })
270 Promise.all([ps1, ps2]).then((res: any[]) => {
271 largeCategoryList.value = res[0];
272 smallCategoryList.value = res[1];
269 }) 273 })
270 }) 274 })
271 275
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!