6a49606c by lihua

fix产品上架

1 parent ad2c98ba
1 <script setup lang="tsx"> 1 <script lang="ts" setup name="ApprovalProcess">
2 import LookBpmn from "./components/LookBpmn.vue"; 2 import LookBpmn from "./components/LookBpmn.vue";
3 import useProcessStore from '@/store/modules/process' 3 import useProcessStore from '@/store/modules/process'
4 import { cloneDeep } from 'lodash-es'; 4 import { cloneDeep } from 'lodash-es';
...@@ -14,6 +14,9 @@ const props = defineProps({ ...@@ -14,6 +14,9 @@ const props = defineProps({
14 default: '' 14 default: ''
15 }, 15 },
16 }); 16 });
17
18 const fullscreenLoading = ref(false);
19
17 const tableData = ref<any>([]) 20 const tableData = ref<any>([])
18 const lookBpmnRef = ref() 21 const lookBpmnRef = ref()
19 // const contentRef = ref(); 22 // const contentRef = ref();
...@@ -23,7 +26,9 @@ const renderProcessNodes = () => { ...@@ -23,7 +26,9 @@ const renderProcessNodes = () => {
23 deploymentId: props.deploymentId || null, 26 deploymentId: props.deploymentId || null,
24 processInstanceId: props.processInstanceId || null, 27 processInstanceId: props.processInstanceId || null,
25 }; 28 };
29 fullscreenLoading.value = true;
26 getProcessNodesPromise(param).then((res:any) => { 30 getProcessNodesPromise(param).then((res:any) => {
31 fullscreenLoading.value = false;
27 if (res.code === "00000") { 32 if (res.code === "00000") {
28 let data = res.data; 33 let data = res.data;
29 if (data) { 34 if (data) {
...@@ -151,19 +156,26 @@ const getSpecialEventUserTaskList = () => { ...@@ -151,19 +156,26 @@ const getSpecialEventUserTaskList = () => {
151 lookBpmnRef.value.getDetailData(props.deploymentId) 156 lookBpmnRef.value.getDetailData(props.deploymentId)
152 }; 157 };
153 158
159 watch(() => props.processInstanceId, () => {
160 if (!props.processInstanceId) {
161 return;
162 }
163 renderProcessNodes();
164 }, {
165 immediate: true
166 })
167
154 onBeforeRouteLeave((to, from) =>{ 168 onBeforeRouteLeave((to, from) =>{
155 processStore.clearStore() 169 processStore.clearStore()
156 }) 170 })
157 onMounted(() => { 171
158 renderProcessNodes()
159 });
160 defineExpose({ 172 defineExpose({
161 renderProcessNodes 173 renderProcessNodes
162 }) 174 })
163 </script> 175 </script>
164 176
165 <template> 177 <template>
166 <div> 178 <div v-loading="fullscreenLoading">
167 <!-- <Table :columns="columns" :data="tableData" :border="false"></Table> --> 179 <!-- <Table :columns="columns" :data="tableData" :border="false"></Table> -->
168 <el-table tooltip-effect="light" :data="tableData" :border="false" > 180 <el-table tooltip-effect="light" :data="tableData" :border="false" >
169 <el-table-column type="index" label="节点" :width="140" align="left" > 181 <el-table-column type="index" label="节点" :width="140" align="left" >
......
...@@ -1401,40 +1401,6 @@ const panelChange = (scope, row) => { ...@@ -1401,40 +1401,6 @@ const panelChange = (scope, row) => {
1401 </template> 1401 </template>
1402 <template #file="{ file }"> 1402 <template #file="{ file }">
1403 <div class="file-operate"> 1403 <div class="file-operate">
1404 <!-- <template
1405 v-if="file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'xls' || file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'xlsx'">
1406 <img class="file-img" src="../../assets/images/excel.png" />
1407 </template>
1408 <template
1409 v-else-if="file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'doc' || file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'docx'">
1410 <img class="file-img" src="../../assets/images/word.png" />
1411 </template>
1412 <template v-else-if="file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'zip'">
1413 <img class="file-img" src="../../assets/images/zip.png" />
1414 </template>
1415 <template v-else-if="file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'rar'">
1416 <img class="file-img" src="../../assets/images/RAR.png" />
1417 </template>
1418 <template v-else-if="file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'pdf'">
1419 <img class="file-img" src="../../assets/images/PDF.png" />
1420 </template>
1421 <template v-else-if="file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'png'">
1422 <img class="file-img" src="../../assets/images/png.png" />
1423 </template>
1424 <template
1425 v-else-if="file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'jpg' || file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'jpeg'">
1426 <img class="file-img" src="../../assets/images/jpg.png" />
1427 </template>
1428 <div class="file-name">
1429 <ellipsis-tooltip :content="file.name" class-name="w100f" :refName="'tooltipOver' + file.name"></ellipsis-tooltip>
1430 </div>
1431 <div :style="{ right: '72px' }" class="file-preview"
1432 v-if="file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'pdf' || file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'png' || file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'jpg' || file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'jpeg'"
1433 @click="onUploadFilePreview(file, item)">查看</div>
1434 <div :style="{ right: '36px' }" class="file-preview" @click="onUploadFileDownload(file, item)">下载
1435 </div>
1436 <div v-if="!item.disabled" :style="{ right: 0 }" class="file-preview" @click="handleUploadFileRemove(file, item)">删除
1437 </div> -->
1438 <template 1404 <template
1439 v-if="file?.name?.substring(file.name.lastIndexOf('.') + 1).toLowerCase() === 'xls' || file?.name?.substring(file.name.lastIndexOf('.') + 1).toLowerCase() === 'xlsx'"> 1405 v-if="file?.name?.substring(file.name.lastIndexOf('.') + 1).toLowerCase() === 'xls' || file?.name?.substring(file.name.lastIndexOf('.') + 1).toLowerCase() === 'xlsx'">
1440 <img class="file-img" src="../../assets/images/excel.png" /> 1406 <img class="file-img" src="../../assets/images/excel.png" />
......
...@@ -282,6 +282,7 @@ const btnClick = (btn) => { ...@@ -282,6 +282,7 @@ const btnClick = (btn) => {
282 if (res.data) { 282 if (res.data) {
283 ElMessage.success('该审批流程撤销成功!'); 283 ElMessage.success('该审批流程撤销成功!');
284 getDetailInfo(); 284 getDetailInfo();
285 approvalProcessRef.value?.renderProcessNodes();
285 } else { 286 } else {
286 ElMessage.error('该审批流程撤销失败!'); 287 ElMessage.error('该审批流程撤销失败!');
287 } 288 }
...@@ -617,6 +618,7 @@ const passDialogInputChange = (val, item, inlineValue) => { ...@@ -617,6 +618,7 @@ const passDialogInputChange = (val, item, inlineValue) => {
617 } 618 }
618 } 619 }
619 620
621 const approvalProcessRef = ref();
620 622
621 const submitPromise: any = ref(null); 623 const submitPromise: any = ref(null);
622 624
...@@ -641,6 +643,7 @@ const passDialogBtnClick = (btn, info) => { ...@@ -641,6 +643,7 @@ const passDialogBtnClick = (btn, info) => {
641 ElMessage.success('审批成功'); 643 ElMessage.success('审批成功');
642 passDialogInfo.value.visible = false; 644 passDialogInfo.value.visible = false;
643 getDetailInfo(); 645 getDetailInfo();
646 approvalProcessRef.value?.renderProcessNodes();
644 } else { 647 } else {
645 ElMessage.error('审批失败'); 648 ElMessage.error('审批失败');
646 } 649 }
...@@ -676,6 +679,7 @@ const passDialogBtnClick = (btn, info) => { ...@@ -676,6 +679,7 @@ const passDialogBtnClick = (btn, info) => {
676 ElMessage.success('审批成功'); 679 ElMessage.success('审批成功');
677 passDialogInfo.value.visible = false; 680 passDialogInfo.value.visible = false;
678 getDetailInfo(); 681 getDetailInfo();
682 approvalProcessRef.value?.renderProcessNodes();
679 } else { 683 } else {
680 ElMessage.error('审批失败'); 684 ElMessage.error('审批失败');
681 } 685 }
...@@ -708,6 +712,7 @@ const passDialogBtnClick = (btn, info) => { ...@@ -708,6 +712,7 @@ const passDialogBtnClick = (btn, info) => {
708 ElMessage.success('审批成功'); 712 ElMessage.success('审批成功');
709 passDialogInfo.value.visible = false; 713 passDialogInfo.value.visible = false;
710 getDetailInfo(); 714 getDetailInfo();
715 approvalProcessRef.value?.renderProcessNodes();
711 } else { 716 } else {
712 ElMessage.error('审批失败'); 717 ElMessage.error('审批失败');
713 } 718 }
...@@ -778,6 +783,7 @@ const rejectDialogBtnClick = (btn, info) => { ...@@ -778,6 +783,7 @@ const rejectDialogBtnClick = (btn, info) => {
778 ElMessage.success('驳回成功'); 783 ElMessage.success('驳回成功');
779 rejectDialogInfo.value.visible = false; 784 rejectDialogInfo.value.visible = false;
780 getDetailInfo(); 785 getDetailInfo();
786 approvalProcessRef.value?.renderProcessNodes();
781 } else { 787 } else {
782 ElMessage.error('驳回失败'); 788 ElMessage.error('驳回失败');
783 } 789 }
...@@ -843,6 +849,7 @@ const passCommonDialogBtnClick = (btn, info) => { ...@@ -843,6 +849,7 @@ const passCommonDialogBtnClick = (btn, info) => {
843 ElMessage.success('驳回成功'); 849 ElMessage.success('驳回成功');
844 passCommonDialogInfo.value.visible = false; 850 passCommonDialogInfo.value.visible = false;
845 getDetailInfo(); 851 getDetailInfo();
852 approvalProcessRef.value?.renderProcessNodes();
846 } else { 853 } else {
847 ElMessage.error('驳回失败'); 854 ElMessage.error('驳回失败');
848 } 855 }
...@@ -1148,7 +1155,7 @@ const handleClick = () => { ...@@ -1148,7 +1155,7 @@ const handleClick = () => {
1148 1155
1149 <ContentWrap v-if="route.query.type == 'qualityEvaluate' || route.query.type == 'costAssess'" id="id-approveInfo" 1156 <ContentWrap v-if="route.query.type == 'qualityEvaluate' || route.query.type == 'costAssess'" id="id-approveInfo"
1150 title="审批信息" description="" style="margin: 16px 16px 16px"> 1157 title="审批信息" description="" style="margin: 16px 16px 16px">
1151 <ApprovalProcess v-if="deploymentId" :deploymentId="deploymentId" :processInstanceId="processInstanceId"> 1158 <ApprovalProcess ref="approvalProcessRef" v-if="deploymentId" :deploymentId="deploymentId" :processInstanceId="processInstanceId">
1152 </ApprovalProcess> 1159 </ApprovalProcess>
1153 </ContentWrap> 1160 </ContentWrap>
1154 </div> 1161 </div>
......
...@@ -496,6 +496,7 @@ const approveTableInfo: any = ref({ ...@@ -496,6 +496,7 @@ const approveTableInfo: any = ref({
496 show: false 496 show: false
497 } 497 }
498 }); 498 });
499 const approvalProcessRef = ref();
499 const deploymentId = ref(''); 500 const deploymentId = ref('');
500 const processInstanceId = ref(''); 501 const processInstanceId = ref('');
501 const tenantDetail: any = ref({}); 502 const tenantDetail: any = ref({});
...@@ -987,6 +988,7 @@ const passDialogBtnClick = (btn, info) => { ...@@ -987,6 +988,7 @@ const passDialogBtnClick = (btn, info) => {
987 ElMessage.success('审批成功'); 988 ElMessage.success('审批成功');
988 passDialogInfo.value.visible = false; 989 passDialogInfo.value.visible = false;
989 getDetailInfo(); 990 getDetailInfo();
991 approvalProcessRef.value?.renderProcessNodes();
990 } else { 992 } else {
991 ElMessage.error('审批失败'); 993 ElMessage.error('审批失败');
992 } 994 }
...@@ -1020,6 +1022,7 @@ const passDialogBtnClick = (btn, info) => { ...@@ -1020,6 +1022,7 @@ const passDialogBtnClick = (btn, info) => {
1020 ElMessage.success('审批成功'); 1022 ElMessage.success('审批成功');
1021 passDialogInfo.value.visible = false; 1023 passDialogInfo.value.visible = false;
1022 getDetailInfo(); 1024 getDetailInfo();
1025 approvalProcessRef.value?.renderProcessNodes();
1023 } else { 1026 } else {
1024 ElMessage.error('审批失败'); 1027 ElMessage.error('审批失败');
1025 } 1028 }
...@@ -1052,6 +1055,7 @@ const passDialogBtnClick = (btn, info) => { ...@@ -1052,6 +1055,7 @@ const passDialogBtnClick = (btn, info) => {
1052 ElMessage.success('审批成功'); 1055 ElMessage.success('审批成功');
1053 passDialogInfo.value.visible = false; 1056 passDialogInfo.value.visible = false;
1054 getDetailInfo(); 1057 getDetailInfo();
1058 approvalProcessRef.value?.renderProcessNodes();
1055 } else { 1059 } else {
1056 ElMessage.error('审批失败'); 1060 ElMessage.error('审批失败');
1057 } 1061 }
...@@ -1075,6 +1079,7 @@ const passDialogBtnClick = (btn, info) => { ...@@ -1075,6 +1079,7 @@ const passDialogBtnClick = (btn, info) => {
1075 ElMessage.success('该资产发证确认成功'); 1079 ElMessage.success('该资产发证确认成功');
1076 passDialogInfo.value.visible = false; 1080 passDialogInfo.value.visible = false;
1077 getDetailInfo(); 1081 getDetailInfo();
1082 approvalProcessRef.value?.renderProcessNodes();
1078 } else { 1083 } else {
1079 ElMessage.error(res.msg); 1084 ElMessage.error(res.msg);
1080 } 1085 }
...@@ -1142,6 +1147,7 @@ const rejectDialogBtnClick = (btn, info) => { ...@@ -1142,6 +1147,7 @@ const rejectDialogBtnClick = (btn, info) => {
1142 ElMessage.success('驳回成功'); 1147 ElMessage.success('驳回成功');
1143 rejectDialogInfo.value.visible = false; 1148 rejectDialogInfo.value.visible = false;
1144 getDetailInfo(); 1149 getDetailInfo();
1150 approvalProcessRef.value?.renderProcessNodes();
1145 } else { 1151 } else {
1146 ElMessage.error('驳回失败'); 1152 ElMessage.error('驳回失败');
1147 } 1153 }
...@@ -1225,6 +1231,7 @@ const passCommonDialogBtnClick = (btn, info) => { ...@@ -1225,6 +1231,7 @@ const passCommonDialogBtnClick = (btn, info) => {
1225 ElMessage.success('驳回成功'); 1231 ElMessage.success('驳回成功');
1226 passCommonDialogInfo.value.visible = false; 1232 passCommonDialogInfo.value.visible = false;
1227 getDetailInfo(); 1233 getDetailInfo();
1234 approvalProcessRef.value?.renderProcessNodes();
1228 } else { 1235 } else {
1229 ElMessage.error('驳回失败'); 1236 ElMessage.error('驳回失败');
1230 } 1237 }
...@@ -1909,7 +1916,7 @@ const passCommonDialogBtnClick = (btn, info) => { ...@@ -1909,7 +1916,7 @@ const passCommonDialogBtnClick = (btn, info) => {
1909 <ContentWrap id="id-approveInfo" title="审批信息" expandSwicth style="margin-top: 15px" 1916 <ContentWrap id="id-approveInfo" title="审批信息" expandSwicth style="margin-top: 15px"
1910 :isExpand="approveInfoExpand" @expand="(v) => approveInfoExpand = v" v-if="route.query.type != 'certificate'"> 1917 :isExpand="approveInfoExpand" @expand="(v) => approveInfoExpand = v" v-if="route.query.type != 'certificate'">
1911 <!-- <Table :tableInfo="approveTableInfo" /> --> 1918 <!-- <Table :tableInfo="approveTableInfo" /> -->
1912 <ApprovalProcess v-if="deploymentId" :deploymentId="deploymentId" :processInstanceId="processInstanceId"> 1919 <ApprovalProcess ref="approvalProcessRef" v-if="deploymentId" :deploymentId="deploymentId" :processInstanceId="processInstanceId">
1913 </ApprovalProcess> 1920 </ApprovalProcess>
1914 </ContentWrap> 1921 </ContentWrap>
1915 <ContentWrap id="id-certificate" v-if="tabsInfo.tabs.find(t => t.name == 'certificate')" title="证件信息" 1922 <ContentWrap id="id-certificate" v-if="tabsInfo.tabs.find(t => t.name == 'certificate')" title="证件信息"
......
...@@ -9,7 +9,7 @@ import useUserStore from "@/store/modules/user"; ...@@ -9,7 +9,7 @@ import useUserStore from "@/store/modules/user";
9 import { ElMessage, ElMessageBox } from "element-plus"; 9 import { ElMessage, ElMessageBox } from "element-plus";
10 10
11 import useDataAssetStore from "@/store/modules/dataAsset"; 11 import useDataAssetStore from "@/store/modules/dataAsset";
12 import { getListingList, listingDelete, listingUpdateStatus, filterVal, getParamsDataList, getListingCount, productRejectFlowData, listingUpdateGateway, listingSave, listingUpdate } from "@/api/modules/dataProduct"; 12 import { getListingList, listingDelete, listingUpdateStatus, getListingCount, productRejectFlowData } from "@/api/modules/dataProduct";
13 import { TableColumnWidth } from '@/utils/enum'; 13 import { TableColumnWidth } from '@/utils/enum';
14 14
15 import TableTools from "@/components/Tools/table_tools.vue"; 15 import TableTools from "@/components/Tools/table_tools.vue";
...@@ -20,7 +20,7 @@ import { ...@@ -20,7 +20,7 @@ import {
20 changeNum, 20 changeNum,
21 } from "@/utils/common"; 21 } from "@/utils/common";
22 import { chunk } from "@/api/modules/common"; 22 import { chunk } from "@/api/modules/common";
23 import { passFlowData, rejectFlowData, revokeFlowData } from "@/api/modules/workFlowService"; 23 import { passFlowData, rejectFlowData, revokeFlowData, isMyFirstNode } from "@/api/modules/workFlowService";
24 24
25 const { proxy } = getCurrentInstance() as any; 25 const { proxy } = getCurrentInstance() as any;
26 const router = useRouter(); 26 const router = useRouter();
...@@ -165,7 +165,7 @@ const tableInfo = ref({ ...@@ -165,7 +165,7 @@ const tableInfo = ref({
165 if (approveVO && approveVO.approveState == 'A' && staffGuid == currentStaffGuid) { 165 if (approveVO && approveVO.approveState == 'A' && staffGuid == currentStaffGuid) {
166 isShowCancel = true; 166 isShowCancel = true;
167 } 167 }
168 if (bizApproveState === 'Y') { 168 if (bizApproveState === 'Y' && staffGuid == currentStaffGuid) {
169 if (row.listingStatus === 'Y') { 169 if (row.listingStatus === 'Y') {
170 list.push({ label: "下架", value: "down" }); 170 list.push({ label: "下架", value: "down" });
171 } 171 }
...@@ -305,9 +305,14 @@ const tableSwitchChange = (val, scope, field) => { ...@@ -305,9 +305,14 @@ const tableSwitchChange = (val, scope, field) => {
305 }) 305 })
306 }) 306 })
307 } 307 }
308
309 let getFirstNodePromise: any = ref({});
310 let getFirstNodePromise1: any = ref({});
311
308 const approveSuggest = ref(); 312 const approveSuggest = ref();
309 const dialogTitle = ref('通过流程'); 313 const dialogTitle = ref('通过流程');
310 const dialogVisible = ref(false); 314 const dialogVisible = ref(false);
315 const dialogBtnLoading = ref(false);
311 //弹窗类型 316 //弹窗类型
312 const approveType = ref(); 317 const approveType = ref();
313 const tableBtnClick = (scope, btn) => { 318 const tableBtnClick = (scope, btn) => {
...@@ -380,9 +385,8 @@ const tableBtnClick = (scope, btn) => { ...@@ -380,9 +385,8 @@ const tableBtnClick = (scope, btn) => {
380 revokeFlowData({ 385 revokeFlowData({
381 guid: row.approveVO.approveGuid, 386 guid: row.approveVO.approveGuid,
382 flowType: row.approveVO.flowType, 387 flowType: row.approveVO.flowType,
383 approveStaffGuid: userData.staffGuid, 388 approveStaffGuid: userData.staffGuid
384 serviceTenantGuid: row.tenantGuid 389 }, row.tenantGuid).then((res: any) => {
385 }).then((res: any) => {
386 if (res.code == '00000') { 390 if (res.code == '00000') {
387 ElMessage.success('撤销成功!') 391 ElMessage.success('撤销成功!')
388 getTableData(); 392 getTableData();
...@@ -395,118 +399,67 @@ const tableBtnClick = (scope, btn) => { ...@@ -395,118 +399,67 @@ const tableBtnClick = (scope, btn) => {
395 399
396 } 400 }
397 if (type == 'pass') { 401 if (type == 'pass') {
398 approveSuggest.value = ''; 402 if (getFirstNodePromise.value[row.guid]) {
399 dynamicPlaceholder.value = '请填写通过理由'; 403 return;
400 if (listingFormRef.value) {
401 clearFormValues(listingFormRef.value.formInline);
402 listingFormRef.value.ruleFormRef.clearValidate(formInfo.value.items.map(item => item.field))
403 listingFormRef.value.ruleFormRef.resetFields(formInfo.value.items.map(item => item.field))
404 } 404 }
405 getFirstNodePromise.value[row.guid] = isMyFirstNode({
406 deploymentId: row.approveVO.camundaDeploymentId,
407 processInstanceId: row.approveVO.camundaInstanceId,
408 staffGuid: userData.staffGuid
409 }).then((res: any) => {
410 getFirstNodePromise.value[row.guid] = null;
411 if (res?.code == proxy.$passCode) {
412 if (res.data) {
413 approveSuggest.value = '';
414 dynamicPlaceholder.value = '请填写通过理由(选填)';
415 if (listingFormRef.value) {
416 clearFormValues(listingFormRef.value.formInline);
417 listingFormRef.value.ruleFormRef.clearValidate(formInfo.value.items.map(item => item.field))
418 listingFormRef.value.ruleFormRef.resetFields(formInfo.value.items.map(item => item.field))
419 }
405 420
406 approveType.value = 'pass'; 421 approveType.value = 'pass';
407 dialogTitle.value = '通过流程' 422 dialogTitle.value = '通过流程'
408 dialogVisible.value = true; 423 dialogVisible.value = true;
424 } else {
425 passCommonDialogInfo.value.visible = true;
426 }
427 } else {
428 proxy.$ElMessage.error(res.msg);
429 }
430 })
409 } 431 }
410 if (type == 'reject') { 432 if (type == 'reject') {
411 approveSuggest.value = ''; 433 if (getFirstNodePromise1.value[row.guid]) {
412 dynamicPlaceholder.value = '请填写驳回理由(必填)'; 434 return;
413 if (listingFormRef.value) {
414 clearFormValues(listingFormRef.value.formInline);
415 listingFormRef.value.ruleFormRef.clearValidate(formInfo.value.items.map(item => item.field))
416 listingFormRef.value.ruleFormRef.resetFields(formInfo.value.items.map(item => item.field))
417 } 435 }
418 approveType.value = 'reject'; 436 getFirstNodePromise1.value[row.guid] = isMyFirstNode({
419 dialogTitle.value = '驳回流程' 437 deploymentId: row.approveVO.camundaDeploymentId,
420 dialogVisible.value = true; 438 processInstanceId: row.approveVO.camundaInstanceId,
439 staffGuid: userData.staffGuid
440 }).then((res: any) => {
441 getFirstNodePromise1.value[row.guid] = null;
442 if (res?.code == proxy.$passCode) {
443 if (res.data) {
444 approveSuggest.value = '';
445 dynamicPlaceholder.value = '请填写驳回理由(必填)';
446 if (listingFormRef.value) {
447 clearFormValues(listingFormRef.value.formInline);
448 listingFormRef.value.ruleFormRef.clearValidate(formInfo.value.items.map(item => item.field))
449 listingFormRef.value.ruleFormRef.resetFields(formInfo.value.items.map(item => item.field))
450 }
451 approveType.value = 'reject';
452 dialogTitle.value = '驳回流程'
453 dialogVisible.value = true;
454 } else {
455 rejectDialogInfo.value.visible = true;
456 }
457 } else {
458 proxy.$ElMessage.error(res.msg);
459 }
460 })
421 } 461 }
422 if (type == 'up') { 462 if (type == 'up') {
423 // tableSwitchChange('Y', scope, 'listingStatus')
424 // console.log('上架', scope)
425 // let params: any = {}
426 // if (scope.row.exchangeGuid) {
427 // // 数交所上架 [params.commitmentLetterInfo[0].url]
428 // params = {
429 // guid: scope.row.guid,
430 // accreditFile: scope.row.accreditFile,
431 // caseNumber: scope.row.caseNumber,
432 // commitmentLetter: scope.row.commitmentLetter,
433 // content: scope.row.productDesc,
434 // costAssessmentInstitution: scope.row.costAssessmentInstitution,
435 // costAssessmentInstitutionGuid: scope.row.costAssessmentInstitutionGuid,
436 // coverageArea: scope.row.coverageArea,
437 // damCode: scope.row.damCode,
438 // damGuid: scope.row.damGuid,
439 // damName: scope.row.damName,
440 // damType: scope.row.damType,
441 // dataScale: scope.row.dataScale,
442 // deliveryWay: scope.row.deliveryWay,
443 // evaluationFile: scope.row.evaluationFile,
444 // exchangeGuid: scope.row.exchangeGuid,
445 // feeDesc: scope.row.feeDesc,
446 // immediateApprove: true,
447 // priceUnit: scope.row.priceUnit,
448 // pricingWay: scope.row.pricingWay,
449 // productPic: scope.row.productPic,
450 // productPrice: scope.row.productPrice,
451 // qualityEvaluationInstitution: scope.row.qualityEvaluationInstitution,
452 // qualityEvaluationInstitutionGuid: scope.row.qualityEvaluationInstitutionGuid,
453 // timeAreaStart: scope.row.timeAreaStart,
454 // timeAreaEnd: scope.row.timeAreaEnd,
455 // registrationCertificate: scope.row.registrationCertificate,
456 // productDetail: scope.row.productDetail,
457 // assessmentFile: scope.row.assessmentFile,
458 // }
459 // listingUpdate(params).then((res: any) => {
460 // if (res.code == proxy.$passCode) {
461 // ElMessage({
462 // type: "success",
463 // message: '提交成功',
464 // });
465 // getTableData();
466 // } else {
467 // ElMessage({
468 // type: "error",
469 // message: res.msg,
470 // });
471 // }
472 // })
473 // } else {
474 // // 门户数据专区上架
475 // params = {
476 // guid: scope.row.guid,
477 // caseNumber: scope.row.caseNumber,
478 // content: scope.row.productDesc,
479 // coverageArea: scope.row.coverageArea,
480 // damGuid: scope.row.damGuid,
481 // damName: scope.row.damName,
482 // damType: scope.row.damType,
483 // dataScale: scope.row.dataScale,
484 // deliveryWay: scope.row.deliveryWay,
485 // feeDesc: scope.row.feeDesc,
486 // immediateApprove: true,
487 // priceUnit: scope.row.priceUnit,
488 // pricingWay: scope.row.pricingWay,
489 // productPic: scope.row.productPic,
490 // productPrice: scope.row.productPrice,
491 // timeAreaStart: scope.row.timeAreaStart,
492 // timeAreaEnd: scope.row.timeAreaEnd,
493 // }
494 // listingUpdateGateway(params).then((res: any) => {
495 // if (res.code == proxy.$passCode) {
496 // ElMessage({
497 // type: "success",
498 // message: '提交成功',
499 // });
500 // getTableData();
501 // } else {
502 // ElMessage({
503 // type: "error",
504 // message: res.msg,
505 // });
506 // }
507 // })
508 // console.log('上架', scope)
509 // }
510 if (row.exchangeGuid) { 463 if (row.exchangeGuid) {
511 router.push({ 464 router.push({
512 name: 'productListingDetail', 465 name: 'productListingDetail',
...@@ -559,8 +512,7 @@ const clearFormValues = (formInline) => { ...@@ -559,8 +512,7 @@ const clearFormValues = (formInline) => {
559 formInline[key] = ''; 512 formInline[key] = '';
560 }); 513 });
561 }; 514 };
562 const fullscreenLoading = ref(false); 515 const dynamicPlaceholder = ref('请填写通过理由(选填)');
563 const dynamicPlaceholder = ref('请填写通过理由');
564 const passSubmit = () => { 516 const passSubmit = () => {
565 let row = currTableData.value 517 let row = currTableData.value
566 listingFormRef.value.ruleFormRef.validate().then((valid) => { 518 listingFormRef.value.ruleFormRef.validate().then((valid) => {
...@@ -573,6 +525,7 @@ const passSubmit = () => { ...@@ -573,6 +525,7 @@ const passSubmit = () => {
573 } 525 }
574 }) 526 })
575 }) 527 })
528 dialogBtnLoading.value = true;
576 productRejectFlowData({ 529 productRejectFlowData({
577 guid: row.approveVO.approveGuid, 530 guid: row.approveVO.approveGuid,
578 flowType: row.approveVO.flowType, 531 flowType: row.approveVO.flowType,
...@@ -582,8 +535,8 @@ const passSubmit = () => { ...@@ -582,8 +535,8 @@ const passSubmit = () => {
582 approveState: 'Y', 535 approveState: 'Y',
583 bizGuid: row.approveVO.bizGuid 536 bizGuid: row.approveVO.bizGuid
584 }, row.tenantGuid).then((res: any) => { 537 }, row.tenantGuid).then((res: any) => {
538 dialogBtnLoading.value = false;
585 if (res.code == '00000') { 539 if (res.code == '00000') {
586 fullscreenLoading.value = false;
587 ElMessage.success('审批通过!') 540 ElMessage.success('审批通过!')
588 dialogVisible.value = false; 541 dialogVisible.value = false;
589 getTableData(); 542 getTableData();
...@@ -594,20 +547,6 @@ const passSubmit = () => { ...@@ -594,20 +547,6 @@ const passSubmit = () => {
594 }) 547 })
595 } 548 }
596 }) 549 })
597 // passFlowData({
598 // guid: row.approveVO.approveGuid,
599 // flowType: row.approveVO.flowType,
600 // approveSuggest: approveSuggest.value,
601 // approveStaffGuid: userData.staffGuid,
602 // }).then((res: any) => {
603 // fullscreenLoading.value = false;
604 // if (res.code == '00000') {
605 // ElMessage.success('审批通过!')
606 // getTableData();
607 // } else {
608 // ElMessage.error(res.msg)
609 // }
610 // })
611 550
612 } 551 }
613 const listingFormRef = ref<any>(); 552 const listingFormRef = ref<any>();
...@@ -625,6 +564,7 @@ const rejectSubmit = async () => { ...@@ -625,6 +564,7 @@ const rejectSubmit = async () => {
625 } 564 }
626 }) 565 })
627 }) 566 })
567 dialogBtnLoading.value = true;
628 productRejectFlowData({ 568 productRejectFlowData({
629 guid: row.approveVO.approveGuid, 569 guid: row.approveVO.approveGuid,
630 flowType: row.approveVO.flowType, 570 flowType: row.approveVO.flowType,
...@@ -634,8 +574,8 @@ const rejectSubmit = async () => { ...@@ -634,8 +574,8 @@ const rejectSubmit = async () => {
634 bizGuid: row.approveVO.bizGuid, 574 bizGuid: row.approveVO.bizGuid,
635 approveState: 'R' 575 approveState: 'R'
636 }, row.tenantGuid).then((res: any) => { 576 }, row.tenantGuid).then((res: any) => {
577 dialogBtnLoading.value = false;
637 if (res.code == '00000') { 578 if (res.code == '00000') {
638 fullscreenLoading.value = false;
639 ElMessage.success('驳回成功!') 579 ElMessage.success('驳回成功!')
640 dialogVisible.value = false; 580 dialogVisible.value = false;
641 getTableData(); 581 getTableData();
...@@ -646,65 +586,6 @@ const rejectSubmit = async () => { ...@@ -646,65 +586,6 @@ const rejectSubmit = async () => {
646 }) 586 })
647 } 587 }
648 }) 588 })
649
650
651 // rejectFlowData({
652 // guid: row.approveVO.approveGuid,
653 // flowType: row.approveVO.flowType,
654 // approveSuggest: approveSuggest.value,
655 // approveStaffGuid: userData.staffGuid,
656 // }).then((res: any) => {
657 // if (res.code == '00000') {
658 // fullscreenLoading.value = false;
659 // ElMessage.success('驳回成功!')
660 // getTableData();
661 // } else {
662 // ElMessage.error(res.msg)
663 // }
664 // })
665 }
666 // const tableBtnClick = (scope, btn) => {
667 // const type = btn.value;
668 // const row = scope.row;
669 // currTableData.value = row;
670 // if (type == "detail" || type === "edit") {
671 // toPatn(type);
672 // } else if (type === "delete") {
673 // open("此操作将永久删除,是否继续?", "warning");
674 // }
675 // };
676
677 const toPatn = (type) => {
678 if (type == 'add') {
679 router.push({
680 name: "productListingDetail",
681 query: {
682 type,
683 groundingPick: '门户数据专区',
684 case: '2',
685 },
686 });
687 } else {
688 router.push({
689 name: "productListingDetail",
690 query: {
691 guid: currTableData.value.guid,
692 name: currTableData.value.damName,
693 type
694 },
695 });
696 }
697 }
698 const toPatn1 = (type, type1) => {
699 if (type == 'add') {
700 router.push({
701 name: "productListingDetail",
702 query: {
703 type,
704 type1
705 },
706 });
707 }
708 } 589 }
709 590
710 const tablePageChange = (info) => { 591 const tablePageChange = (info) => {
...@@ -715,31 +596,6 @@ const tablePageChange = (info) => { ...@@ -715,31 +596,6 @@ const tablePageChange = (info) => {
715 getTableData(); 596 getTableData();
716 }; 597 };
717 598
718 const open = (msg, type, isBatch = false) => {
719 ElMessageBox.confirm(msg, "提示", {
720 confirmButtonText: "确定",
721 cancelButtonText: "取消",
722 type: type,
723 }).then(() => {
724 const guids = [currTableData.value.guid];
725 listingDelete(guids).then((res: any) => {
726 if (res.code == proxy.$passCode) {
727 getFirstPageData();
728 ElMessage({
729 type: "success",
730 message: "删除成功",
731 });
732 } else {
733 ElMessage({
734 type: "error",
735 message: res.msg,
736 });
737 }
738 }).catch((res) => {
739 tableInfo.value.loading = false;
740 });
741 });
742 };
743 599
744 const getFirstPageData = () => { 600 const getFirstPageData = () => {
745 page.value.curr = 1 601 page.value.curr = 1
...@@ -755,15 +611,6 @@ onActivated(() => { ...@@ -755,15 +611,6 @@ onActivated(() => {
755 }) 611 })
756 612
757 onBeforeMount(() => { 613 onBeforeMount(() => {
758 // getParamsDataList({ paramCode: 'DAM-TYPE' }).then((res: any) => {
759 // if (res.code == proxy.$passCode) {
760 // damTypes.value = res.data || [];
761 // let item = searchItemList.value.find(item => item.field == 'damType');
762 // item && (item.options = damTypes.value);
763 // } else {
764 // proxy.$ElMessage.error(res.msg);
765 // }
766 // })
767 getParamsList({ 614 getParamsList({
768 dictType: "资产类型", 615 dictType: "资产类型",
769 }).then((res: any) => { 616 }).then((res: any) => {
...@@ -934,6 +781,141 @@ const formInfo = ref<any>({ ...@@ -934,6 +781,141 @@ const formInfo = ref<any>({
934 isPublicData8: [{ required: true, message: '请选择数据内容是否合规', trigger: 'change' }], 781 isPublicData8: [{ required: true, message: '请选择数据内容是否合规', trigger: 'change' }],
935 } 782 }
936 }) 783 })
784
785 const passCommonDialogInfo = ref({
786 visible: false,
787 size: 460,
788 direction: "column",
789 header: {
790 title: "通过",
791 },
792 type: '',
793 contents: [
794 {
795 type: 'form',
796 title: '',
797 formInfo: {
798 id: 'batch-pass-form',
799 items: [
800 {
801 label: '',
802 type: "textarea",
803 placeholder: "请填写通过理由(选填)",
804 field: "approveSuggest",
805 clearable: true,
806 maxlength: 400,
807 block: true,
808 col: 'margin_b_0',
809 }
810 ]
811 }
812 }
813 ],
814 footer: {
815 btns: [
816 { type: "default", label: "取消", value: "cancel" },
817 { type: "primary", label: "确定", value: "submit", loading: false },
818 ],
819 },
820 });
821
822 const passCommonDialogBtnClick = (btn, info) => {
823 if (btn.value == 'submit') {
824 passCommonDialogInfo.value.footer.btns[1].loading = true;
825 let params = {
826 guid: currTableData.value.approveVO.approveGuid,
827 flowType: currTableData.value.approveVO.flowType,
828 approveSuggest: info.approveSuggest,
829 approveStaffGuid: userData.staffGuid
830 }
831 passFlowData(params, currTableData.value.tenantGuid).then((res: any) => {
832 passCommonDialogInfo.value.footer.btns[1].loading = false;
833 if (res?.code == proxy.$passCode) {
834 if (res.data) {
835 ElMessage.success('审批成功');
836 passCommonDialogInfo.value.visible = false;
837 getTableData();
838 } else {
839 ElMessage.error('审批失败');
840 }
841 } else {
842 ElMessage.error(res.msg);
843 }
844 })
845 } else if (btn.value == 'cancel') {
846 passCommonDialogInfo.value.visible = false;
847 }
848 }
849
850 const rejectDialogInfo = ref({
851 visible: false,
852 size: 460,
853 direction: "column",
854 header: {
855 title: "驳回",
856 },
857 type: '',
858 contents: [
859 {
860 type: 'form',
861 title: '',
862 formInfo: {
863 id: 'batch-reject-form',
864 items: [
865 {
866 label: '',
867 type: "textarea",
868 placeholder: "请填写驳回理由(必填)",
869 field: "approveSuggest",
870 clearable: true,
871 block: true,
872 col: 'margin_b_0',
873 }
874 ]
875 }
876 }
877 ],
878 footer: {
879 btns: [
880 { type: "default", label: "取消", value: "cancel" },
881 { type: "primary", label: "确定", value: "submit", loading: false },
882 ],
883 },
884 });
885
886 const rejectDialogBtnClick = (btn, info) => {
887 if (btn.value == 'submit') {
888 if (info.approveSuggest == '') {
889 ElMessage.error('请填写驳回理由');
890 return
891 }
892 let row = currTableData.value;
893 rejectDialogInfo.value.footer.btns[1].loading = true;
894 let params = {
895 guid: row.approveVO.approveGuid,
896 flowType: row.approveVO.flowType,
897 approveStaffGuid: userData.staffGuid,
898 approveSuggest: info.approveSuggest
899 }
900 rejectFlowData(params, currTableData.value.tenantGuid).then((res: any) => {
901 rejectDialogInfo.value.footer.btns[1].loading = false;
902 if (res?.code == proxy.$passCode) {
903 if (res.data) {
904 ElMessage.success('驳回成功');
905 getTableData();
906 rejectDialogInfo.value.visible = false;
907 } else {
908 ElMessage.error('驳回失败');
909 }
910 } else {
911 ElMessage.error(res.msg);
912 }
913 });
914 } else if (btn.value == 'cancel') {
915 rejectDialogInfo.value.visible = false;
916 }
917 };
918
937 </script> 919 </script>
938 920
939 <template> 921 <template>
...@@ -989,23 +971,27 @@ const formInfo = ref<any>({ ...@@ -989,23 +971,27 @@ const formInfo = ref<any>({
989 </div> 971 </div>
990 </div> 972 </div>
991 <div class="table_panel_wrap" :style="{ 973 <div class="table_panel_wrap" :style="{
992 height: demandListData.length > 0 ? 'calc(100% - 230px)' : 'calc(100% - 54px)' 974 height: demandListData.length > 0 ? 'calc(100% - 291px)' : 'calc(100% - 54px)'
993 }"> 975 }">
994 <Table :tableInfo="tableInfo" @tableBtnClick="tableBtnClick" @tablePageChange="tablePageChange" 976 <Table :tableInfo="tableInfo" @tableBtnClick="tableBtnClick" @tablePageChange="tablePageChange"
995 @tableSwitchBeforeChange="tableSwitchBeforeChange" /> 977 @tableSwitchBeforeChange="tableSwitchBeforeChange" />
996 </div> 978 </div>
997 <el-dialog v-model="dialogVisible" :title="dialogTitle" width="510px"> 979 <el-dialog v-model="dialogVisible" :title="dialogTitle" width="550px" :close-on-click-modal="false">
998 <Form ref="listingFormRef" :itemList="formInfo.items" :rules="formInfo.rules" /> 980 <Form ref="listingFormRef" :itemList="formInfo.items" :rules="formInfo.rules" />
999 <el-input type="textarea" :rows="3" maxlength="100" v-model="approveSuggest" resize="none" 981 <el-input type="textarea" :rows="3" maxlength="100" v-model="approveSuggest" resize="none"
1000 :placeholder="dynamicPlaceholder" /> 982 :placeholder="dynamicPlaceholder" />
1001 <template #footer> 983 <template #footer>
1002 <div class="dialog-footer"> 984 <div class="dialog-footer">
1003 <el-button @click="dialogVisible = false">取消</el-button> 985 <el-button @click="dialogVisible = false">取消</el-button>
1004 <el-button v-if="approveType == 'pass'" type="primary" @click="passSubmit">通过</el-button> 986 <el-button v-if="approveType == 'pass'" type="primary" v-loading="dialogBtnLoading"
1005 <el-button v-if="approveType == 'reject'" type="primary" @click="rejectSubmit">驳回</el-button> 987 @click="passSubmit">通过</el-button>
988 <el-button v-if="approveType == 'reject'" type="primary" v-loading="dialogBtnLoading"
989 @click="rejectSubmit">驳回</el-button>
1006 </div> 990 </div>
1007 </template> 991 </template>
1008 </el-dialog> 992 </el-dialog>
993 <Dialog :dialogInfo="passCommonDialogInfo" @btnClick="passCommonDialogBtnClick" />
994 <Dialog :dialogInfo="rejectDialogInfo" @btnClick="rejectDialogBtnClick" />
1009 </div> 995 </div>
1010 </template> 996 </template>
1011 997
...@@ -1032,7 +1018,7 @@ const formInfo = ref<any>({ ...@@ -1032,7 +1018,7 @@ const formInfo = ref<any>({
1032 } 1018 }
1033 1019
1034 :deep(.el-carousel) { 1020 :deep(.el-carousel) {
1035 margin: 0 -16px 16px; 1021 margin: 0 -8px 16px;
1036 padding: 0 16px; 1022 padding: 0 16px;
1037 1023
1038 .card-content { 1024 .card-content {
...@@ -1160,7 +1146,7 @@ const formInfo = ref<any>({ ...@@ -1160,7 +1146,7 @@ const formInfo = ref<any>({
1160 background: #FFFBF2; 1146 background: #FFFBF2;
1161 border: 1px solid rgba(255, 241, 212, 1); 1147 border: 1px solid rgba(255, 241, 212, 1);
1162 border-radius: 4px; 1148 border-radius: 4px;
1163 margin: 5px 8px 17px 8px; 1149 margin: 5px 8px 12px 8px;
1164 1150
1165 .tip-icon { 1151 .tip-icon {
1166 width: 16px; 1152 width: 16px;
......
...@@ -14,11 +14,14 @@ import useDataAssetStore from "@/store/modules/dataAsset"; ...@@ -14,11 +14,14 @@ import useDataAssetStore from "@/store/modules/dataAsset";
14 import { changeNum } from '@/utils/common'; 14 import { changeNum } from '@/utils/common';
15 import { onUploadFilePreview, onUploadFileDownload } from '@/api/modules/common'; 15 import { onUploadFilePreview, onUploadFileDownload } from '@/api/modules/common';
16 import { getAreaData, getServiceTenants, getSingleList } from "@/api/modules/queryService"; 16 import { getAreaData, getServiceTenants, getSingleList } from "@/api/modules/queryService";
17 import { getApproveList, getTenantApprove, registerApproveAllow, registerApproveBackup, getParamsList, getServiceDetail } from "@/api/modules/dataAsset"; 17 import { getApproveList, getTenantApprove, getParamsList, getServiceDetail } from "@/api/modules/dataAsset";
18 import { getProductList, getFileByDamGuid, getAddedProductList, getListingDetail, listingSave, listingUpdate, listingSavePortal, getParamsDataList, listingUpdateGateway, getDataExchangeProductList, getTemplateFile, getListingList } from "@/api/modules/dataProduct"; 18 import {
19 getProductList, getFileByDamGuid, productRejectFlowData,
20 getListingDetail, listingSave, listingUpdate, listingSavePortal, getParamsDataList, listingUpdateGateway, getDataExchangeProductList, getTemplateFile, getListingList
21 } from "@/api/modules/dataProduct";
19 import { getMatchDetail } from "@/api/modules/dataFinance"; 22 import { getMatchDetail } from "@/api/modules/dataFinance";
20 import { useValidator } from '@/hooks/useValidator'; 23 import { useValidator } from '@/hooks/useValidator';
21 import { getCamundaDeploymentId } from "@/api/modules/workFlowService"; 24 import { getCamundaDeploymentId, rejectFlowData, passFlowData, isMyFirstNode, revokeFlowData } from "@/api/modules/workFlowService";
22 25
23 26
24 const { required } = useValidator(); 27 const { required } = useValidator();
...@@ -134,11 +137,6 @@ const approveTableInfo: any = ref({ ...@@ -134,11 +137,6 @@ const approveTableInfo: any = ref({
134 show: false 137 show: false
135 } 138 }
136 }); 139 });
137
138 const exchangeName = computed(() => {
139 return route.query.exchangeName;
140 })
141
142 const listingFormRef = ref(); 140 const listingFormRef = ref();
143 const subForm = ref({}); 141 const subForm = ref({});
144 const formInfo = ref<any>({ 142 const formInfo = ref<any>({
...@@ -684,24 +682,6 @@ const contents = ref({ ...@@ -684,24 +682,6 @@ const contents = ref({
684 ], 682 ],
685 }); 683 });
686 684
687 const listingDialogRef = ref();
688 const dialogInfo = ref({
689 visible: false,
690 size: 460,
691 direction: "column",
692 header: {
693 title: "",
694 },
695 type: '',
696 contents: [],
697 footer: {
698 btns: [
699 { type: "default", label: "取消", value: "cancel" },
700 { type: "primary", label: "确定", value: "submit" },
701 ],
702 },
703 });
704
705 const getProducts = () => { 685 const getProducts = () => {
706 getProductList({}).then((res: any) => { 686 getProductList({}).then((res: any) => {
707 if (res.code == proxy.$passCode) { 687 if (res.code == proxy.$passCode) {
...@@ -1077,11 +1057,86 @@ const btnClick = (btn) => { ...@@ -1077,11 +1057,86 @@ const btnClick = (btn) => {
1077 const form = checkForm.formInline; 1057 const form = checkForm.formInline;
1078 subForm.value = { ...form }; 1058 subForm.value = { ...form };
1079 submitForm(btn, formEl, true); 1059 submitForm(btn, formEl, true);
1080 } else if (btn.value == 'pass' || btn.value == 'reject') { 1060 } else if (btn.value == 'pass') {
1081 dialogInfo.value.type = btn.value 1061 if (getFirstNodePromise.value) {
1082 dialogInfo.value.header.title = btn.value == 'pass' ? '通过' : '驳回' 1062 return;
1083 dialogInfo.value.contents = contents.value[btn.value] 1063 }
1084 dialogInfo.value.visible = true 1064 getFirstNodePromise.value = isMyFirstNode({
1065 deploymentId: flowDetail.value.approveVO.camundaDeploymentId,
1066 processInstanceId: flowDetail.value.approveVO.camundaInstanceId,
1067 staffGuid: userData.staffGuid
1068 }).then((res: any) => {
1069 getFirstNodePromise.value = null;
1070 if (res?.code == proxy.$passCode) {
1071 if (res.data) {
1072 approveSuggest.value = '';
1073 dynamicPlaceholder.value = '请填写通过理由(选填)';
1074 if (passListingFormRef.value) {
1075 clearFormValues(passListingFormRef.value.formInline);
1076 passListingFormRef.value.ruleFormRef.clearValidate(formInfo.value.items.map(item => item.field))
1077 passListingFormRef.value.ruleFormRef.resetFields(formInfo.value.items.map(item => item.field))
1078 }
1079
1080 approveType.value = 'pass';
1081 dialogTitle.value = '通过流程'
1082 dialogVisible.value = true;
1083 } else {
1084 passCommonDialogInfo.value.visible = true;
1085 }
1086 } else {
1087 proxy.$ElMessage.error(res.msg);
1088 }
1089 })
1090 }
1091 else if (btn.value == 'reject') {
1092 if (getFirstNodePromise1.value) {
1093 return;
1094 }
1095 getFirstNodePromise1.value = isMyFirstNode({
1096 deploymentId: flowDetail.value.approveVO.camundaDeploymentId,
1097 processInstanceId: flowDetail.value.approveVO.camundaInstanceId,
1098 staffGuid: userData.staffGuid
1099 }).then((res: any) => {
1100 getFirstNodePromise1.value = null;
1101 if (res?.code == proxy.$passCode) {
1102 if (res.data) {
1103 approveSuggest.value = '';
1104 dynamicPlaceholder.value = '请填写驳回理由(必填)';
1105 if (passListingFormRef.value) {
1106 clearFormValues(passListingFormRef.value.formInline);
1107 passListingFormRef.value.ruleFormRef.clearValidate(formInfo.value.items.map(item => item.field))
1108 passListingFormRef.value.ruleFormRef.resetFields(formInfo.value.items.map(item => item.field))
1109 }
1110 approveType.value = 'reject';
1111 dialogTitle.value = '驳回流程'
1112 dialogVisible.value = true;
1113 } else {
1114 rejectDialogInfo.value.visible = true;
1115 }
1116 } else {
1117 proxy.$ElMessage.error(res.msg);
1118 }
1119 })
1120 } else if (btn.value == 'revoke') {
1121 ElMessageBox.confirm(`撤销后,该流程将不再进行审核,确定这样操作吗?`, "提示", {
1122 confirmButtonText: "确定",
1123 cancelButtonText: "取消",
1124 type: 'warning',
1125 }).then(() => {
1126 revokeFlowData({
1127 guid: flowDetail.value.approveVO.approveGuid,
1128 flowType: flowDetail.value.approveVO.flowType,
1129 approveStaffGuid: userData.staffGuid
1130 }, flowDetail.value.tenantGuid).then((res: any) => {
1131 if (res.code == '00000') {
1132 ElMessage.success('撤销成功!')
1133 getProductDetail();
1134 approvalProcessRef.value?.renderProcessNodes();
1135 } else {
1136 ElMessage.error(res.msg)
1137 }
1138 })
1139 });
1085 } else { 1140 } else {
1086 if (detailType == 'add' || detailType == 'edit' || detailType == 'redit') { 1141 if (detailType == 'add' || detailType == 'edit' || detailType == 'redit') {
1087 ElMessageBox.confirm( 1142 ElMessageBox.confirm(
...@@ -1288,67 +1343,6 @@ const switchChange = async (val, info, row) => { ...@@ -1288,67 +1343,6 @@ const switchChange = async (val, info, row) => {
1288 } 1343 }
1289 } 1344 }
1290 1345
1291 const dialogBtnClick = (btn, info) => {
1292 if (btn.value == 'submit') {
1293 let params = { ...info }
1294 params.bizGuid = guid
1295 params.funcCode = flowDetail.value.funcCode;
1296 if (dialogInfo.value.type == 'pass') {
1297 dialogInfo.value.visible = false;
1298 registerApproveAllow(params).then((res: any) => {
1299 if (res.code == proxy.$passCode) {
1300 ElMessage({
1301 type: 'success',
1302 message: '审批成功'
1303 })
1304 userStore.setTabbar(userStore.tabbar.filter((tab: any) => tab.fullPath !== fullPath));
1305 assetStore.set(true);
1306 router.push({
1307 name: "productListingCheck",
1308 query: {},
1309 });
1310 } else {
1311 ElMessage({
1312 type: 'error',
1313 message: res.msg,
1314 })
1315 }
1316 }).catch(() => {
1317 })
1318 } else if (dialogInfo.value.type == 'reject') {
1319 if (info.approveSuggest == '') {
1320 ElMessage.error('请填写驳回原因')
1321 return
1322 }
1323 dialogInfo.value.visible = false;
1324 registerApproveBackup(params).then((res: any) => {
1325 if (res.code == proxy.$passCode) {
1326 ElMessage({
1327 type: 'success',
1328 message: '驳回成功'
1329 })
1330 userStore.setTabbar(userStore.tabbar.filter((tab: any) => tab.fullPath !== fullPath));
1331 assetStore.set(true);
1332 router.push({
1333 name: "productListingCheck",
1334 query: {},
1335 });
1336 } else {
1337 ElMessage({
1338 type: 'error',
1339 message: res.msg,
1340 })
1341 }
1342 }).catch(() => {
1343
1344 })
1345 }
1346 } else if (btn.value == 'cancel') {
1347 nextTick(() => {
1348 dialogInfo.value.visible = false;
1349 })
1350 }
1351 };
1352 1346
1353 onActivated(() => { 1347 onActivated(() => {
1354 let tab: any = userStore.tabbar.find((tab: any) => tab.fullPath === router.currentRoute.value.fullPath); 1348 let tab: any = userStore.tabbar.find((tab: any) => tab.fullPath === router.currentRoute.value.fullPath);
...@@ -1376,9 +1370,11 @@ onActivated(() => { ...@@ -1376,9 +1370,11 @@ onActivated(() => {
1376 // }; 1370 // };
1377 }) 1371 })
1378 1372
1373 const approvalProcessRef = ref();
1379 const deploymentId = ref(''); 1374 const deploymentId = ref('');
1380 const qualityEvaluationData = ref<any>(''); 1375 const qualityEvaluationData = ref<any>('');
1381 const costAssessmentData = ref<any>(''); 1376 const costAssessmentData = ref<any>('');
1377 const assetsSafeInfo: any = ref([]);
1382 onBeforeMount(async () => { 1378 onBeforeMount(async () => {
1383 // case 1: 数交易所 case 2: 门户 1379 // case 1: 数交易所 case 2: 门户
1384 if (route.query.case == '2') { 1380 if (route.query.case == '2') {
...@@ -1388,6 +1384,18 @@ onBeforeMount(async () => { ...@@ -1388,6 +1384,18 @@ onBeforeMount(async () => {
1388 } 1384 }
1389 }) 1385 })
1390 } 1386 }
1387 if (detailType && detailType != 'add') {
1388 getParamsList({
1389 dictType: "数据产品上架审批合规信息",
1390 }).then((res: any) => {
1391 if (res.code == proxy.$passCode) {
1392 assetsSafeInfo.value = res.data || [];
1393 } else {
1394 proxy.$ElMessage.error(res.msg);
1395 }
1396 })
1397 getProductDetail();
1398 }
1391 await getTableData(); 1399 await getTableData();
1392 if (route.query.exchangeGuid) { 1400 if (route.query.exchangeGuid) {
1393 getTableInfo(); 1401 getTableInfo();
...@@ -1400,12 +1408,6 @@ onBeforeMount(async () => { ...@@ -1400,12 +1408,6 @@ onBeforeMount(async () => {
1400 return parentAreaData.value; 1408 return parentAreaData.value;
1401 } 1409 }
1402 }) 1410 })
1403 if (detailType && detailType != 'add') {
1404 getProductDetail();
1405 // if (detailType == 'detail' && dGuid !== undefined) {
1406 // getApplyDeatil();
1407 // }
1408 }
1409 // getApproveData(); 1411 // getApproveData();
1410 getParamsDataList({ dictType: '资产类型' }).then((res: any) => { 1412 getParamsDataList({ dictType: '资产类型' }).then((res: any) => {
1411 if (res.code == proxy.$passCode) { 1413 if (res.code == proxy.$passCode) {
...@@ -1565,6 +1567,364 @@ const prcieInfo = computed(() => { ...@@ -1565,6 +1567,364 @@ const prcieInfo = computed(() => {
1565 return flowDetail.value.productPrice ? `${flowDetail.value.productPrice} ${priceUnitList.value.find(item => item.value == flowDetail.value.priceUnit)?.label}` : '--'; 1567 return flowDetail.value.productPrice ? `${flowDetail.value.productPrice} ${priceUnitList.value.find(item => item.value == flowDetail.value.priceUnit)?.label}` : '--';
1566 }) 1568 })
1567 1569
1570 const toolBtns: any = computed(() => {
1571 let btnsArr: any = [{
1572 label: "关闭", value: "cancel", plain: true
1573 }];
1574 let approveVO = flowDetail.value.approveVO;
1575 let staffGuid = userData.staffGuid;
1576 if (approveVO && approveVO.approveState == 'A' && approveVO.approveStaffGuids && approveVO.approveStaffGuids.indexOf(staffGuid) > -1) {
1577 btnsArr.push(...[{ label: "通过", value: "pass", type: 'primary' }, { label: "驳回", value: "reject", type: 'danger', plain: true }]);
1578 }
1579 if (approveVO && approveVO.approveState == 'A' && approveVO.staffGuid == staffGuid) {
1580 btnsArr.push({ label: "撤销", value: "revoke" });
1581 }
1582 return btnsArr;
1583 });
1584
1585 /** ------------------ 通过驳回对话框 ----------------------- */
1586 let getFirstNodePromise: any = ref(null);
1587 let getFirstNodePromise1: any = ref(null);
1588
1589 const approveSuggest = ref();
1590 const dialogTitle = ref('通过流程');
1591 const dialogVisible = ref(false);
1592 const dialogBtnLoading = ref(false);
1593 //弹窗类型
1594 const approveType = ref();
1595 const dynamicPlaceholder = ref('请填写通过理由(选填)');
1596
1597 const passFormInfo = ref<any>({
1598 id: 'check-form',
1599 col: 'col2',
1600 items: [
1601 // radio 单选框
1602 {
1603 type: 'radio-group',
1604 label: '是否遵守隐私法律和数据保护法规',
1605 field: 'isPublicData1',
1606 default: '',
1607 required: true,
1608 options: [
1609 { label: '是', value: 'Y' },
1610 { label: '否', value: 'N' },
1611 ],
1612 },
1613 // radio 单选框
1614 {
1615 type: 'radio-group',
1616 label: '不存在侵犯他人版权的信息',
1617 field: 'isPublicData2',
1618 default: '',
1619 required: true,
1620 options: [
1621 { label: '是', value: 'Y' },
1622 { label: '否', value: 'N' },
1623 ],
1624 },
1625 // 是否符合研究伦理
1626 {
1627 type: 'radio-group',
1628 label: '是否符合研究伦理',
1629 field: 'isPublicData3',
1630 default: '',
1631 required: true,
1632 options: [
1633 { label: '是', value: 'Y' },
1634 { label: '否', value: 'N' },
1635 ],
1636 },
1637 //是否遵守道德标准
1638 {
1639 type: 'radio-group',
1640 label: '是否遵守道德标准',
1641 field: 'isPublicData4',
1642 default: '',
1643 required: true,
1644 options: [
1645 { label: '是', value: 'Y' },
1646 { label: '否', value: 'N' },
1647 ],
1648 },
1649 //数据来源是否合规
1650 {
1651 type: 'radio-group',
1652 label: '数据来源是否合规',
1653 field: 'isPublicData5',
1654 default: '',
1655 required: true,
1656 options: [
1657 { label: '是', value: 'Y' },
1658 { label: '否', value: 'N' },
1659 ],
1660 },
1661 //相关文档审查是否合规
1662 {
1663 type: 'radio-group',
1664 label: '相关文档审查是否合规',
1665 field: 'isPublicData6',
1666 default: '',
1667 required: true,
1668 options: [
1669 { label: '是', value: 'Y' },
1670 { label: '否', value: 'N' },
1671 ],
1672 },
1673 //是否符合国家标准及要求
1674 {
1675 type: 'radio-group',
1676 label: '是否符合国家标准及要求',
1677 field: 'isPublicData7',
1678 default: '',
1679 required: true,
1680 options: [
1681 { label: '是', value: 'Y' },
1682 { label: '否', value: 'N' },
1683 ],
1684 },
1685 //数据内容是否合规
1686 {
1687 type: 'radio-group',
1688 label: '数据内容是否合规',
1689 field: 'isPublicData8',
1690 default: '',
1691 required: true,
1692 options: [
1693 { label: '是', value: 'Y' },
1694 { label: '否', value: 'N' },
1695 ],
1696 },
1697 ],
1698 rules: {
1699 isPublicData1: [{ required: true, message: '请选择是否遵守隐私法律和数据保护法规', trigger: 'change' }],
1700 isPublicData2: [{ required: true, message: '请选择是否存在侵犯他人版权的信息', trigger: 'change' }],
1701 isPublicData3: [{ required: true, message: '请选择是否符合研究伦理', trigger: 'change' }],
1702 isPublicData4: [{ required: true, message: '请选择是否遵守道德标准', trigger: 'change' }],
1703 isPublicData5: [{ required: true, message: '请选择数据来源是否合规', trigger: 'change' }],
1704 isPublicData6: [{ required: true, message: '请选择相关文档审查是否合规', trigger: 'change' }],
1705 isPublicData7: [{ required: true, message: '请选择是否符合国家标准及要求', trigger: 'change' }],
1706 isPublicData8: [{ required: true, message: '请选择数据内容是否合规', trigger: 'change' }],
1707 }
1708 })
1709
1710 const passListingFormRef = ref<any>();
1711
1712 const clearFormValues = (formInline) => {
1713 Object.keys(formInline).forEach(key => {
1714 formInline[key] = '';
1715 });
1716 };
1717
1718 const passSubmit = () => {
1719 passListingFormRef.value.ruleFormRef.validate().then((valid) => {
1720 if (valid) {
1721 let complianceInfoMap = {}
1722 passFormInfo.value.items.forEach((item) => {
1723 assetsSafeInfo.value.forEach((item1) => {
1724 if (item.label == item1.label) {
1725 complianceInfoMap[item1.value] = passListingFormRef.value.formInline[item.field];
1726 }
1727 })
1728 })
1729 dialogBtnLoading.value = true;
1730 productRejectFlowData({
1731 guid: flowDetail.value.approveVO.approveGuid,
1732 flowType: flowDetail.value.approveVO.flowType,
1733 approveSuggest: approveSuggest.value,
1734 approveStaffGuid: userData.staffGuid,
1735 complianceInfoMap: complianceInfoMap,
1736 approveState: 'Y',
1737 bizGuid: flowDetail.value.approveVO.bizGuid
1738 }, flowDetail.value.tenantGuid).then((res: any) => {
1739 dialogBtnLoading.value = false;
1740 if (res.code == '00000') {
1741 ElMessage.success('审批通过!')
1742 dialogVisible.value = false;
1743 getProductDetail();
1744 approvalProcessRef.value?.renderProcessNodes()
1745 } else {
1746 ElMessage.error(res.msg)
1747 }
1748 })
1749 }
1750 })
1751
1752 }
1753
1754 const rejectSubmit = async () => {
1755 if (!approveSuggest.value) return ElMessage.error('请填写驳回理由!')
1756 passListingFormRef.value.ruleFormRef.validate().then((valid) => {
1757 if (valid) {
1758 let complianceInfoMap = {}
1759 passFormInfo.value.items.forEach((item) => {
1760 assetsSafeInfo.value.forEach((item1) => {
1761 if (item.label == item1.label) {
1762 complianceInfoMap[item1.value] = passListingFormRef.value.formInline[item.field];
1763 }
1764 })
1765 })
1766 dialogBtnLoading.value = true;
1767 productRejectFlowData({
1768 guid: flowDetail.value.approveVO.approveGuid,
1769 flowType: flowDetail.value.approveVO.flowType,
1770 approveSuggest: approveSuggest.value,
1771 approveStaffGuid: userData.staffGuid,
1772 complianceInfoMap: complianceInfoMap,
1773 bizGuid: flowDetail.value.approveVO.bizGuid,
1774 approveState: 'R'
1775 }, flowDetail.value.tenantGuid).then((res: any) => {
1776 dialogBtnLoading.value = false;
1777 if (res.code == '00000') {
1778 ElMessage.success('驳回成功!')
1779 dialogVisible.value = false;
1780 //getDetail
1781 getProductDetail();
1782 approvalProcessRef.value?.renderProcessNodes();
1783 } else {
1784 ElMessage.error(res.msg)
1785 }
1786 })
1787 }
1788 })
1789 }
1790
1791
1792 const passCommonDialogInfo = ref({
1793 visible: false,
1794 size: 460,
1795 direction: "column",
1796 header: {
1797 title: "通过",
1798 },
1799 type: '',
1800 contents: [
1801 {
1802 type: 'form',
1803 title: '',
1804 formInfo: {
1805 id: 'batch-pass-form',
1806 items: [
1807 {
1808 label: '',
1809 type: "textarea",
1810 placeholder: "请填写通过理由(选填)",
1811 field: "approveSuggest",
1812 clearable: true,
1813 maxlength: 400,
1814 block: true,
1815 col: 'margin_b_0',
1816 }
1817 ]
1818 }
1819 }
1820 ],
1821 footer: {
1822 btns: [
1823 { type: "default", label: "取消", value: "cancel" },
1824 { type: "primary", label: "确定", value: "submit", loading: false },
1825 ],
1826 },
1827 });
1828
1829 const passCommonDialogBtnClick = (btn, info) => {
1830 if (btn.value == 'submit') {
1831 passCommonDialogInfo.value.footer.btns[1].loading = true;
1832 let params = {
1833 guid: flowDetail.value.approveVO.approveGuid,
1834 flowType: flowDetail.value.approveVO.flowType,
1835 approveSuggest: info.approveSuggest,
1836 approveStaffGuid: userData.staffGuid
1837 }
1838 passFlowData(params, flowDetail.value.tenantGuid).then((res: any) => {
1839 passCommonDialogInfo.value.footer.btns[1].loading = false;
1840 if (res?.code == proxy.$passCode) {
1841 if (res.data) {
1842 ElMessage.success('审批成功');
1843 passCommonDialogInfo.value.visible = false;
1844 getProductDetail();
1845 approvalProcessRef.value?.renderProcessNodes();
1846 } else {
1847 ElMessage.error('审批失败');
1848 }
1849 } else {
1850 ElMessage.error(res.msg);
1851 }
1852 })
1853 } else if (btn.value == 'cancel') {
1854 passCommonDialogInfo.value.visible = false;
1855 }
1856 }
1857
1858 const rejectDialogInfo = ref({
1859 visible: false,
1860 size: 460,
1861 direction: "column",
1862 header: {
1863 title: "驳回",
1864 },
1865 type: '',
1866 contents: [
1867 {
1868 type: 'form',
1869 title: '',
1870 formInfo: {
1871 id: 'batch-reject-form',
1872 items: [
1873 {
1874 label: '',
1875 type: "textarea",
1876 placeholder: "请填写驳回理由(必填)",
1877 field: "approveSuggest",
1878 clearable: true,
1879 block: true,
1880 col: 'margin_b_0',
1881 }
1882 ]
1883 }
1884 }
1885 ],
1886 footer: {
1887 btns: [
1888 { type: "default", label: "取消", value: "cancel" },
1889 { type: "primary", label: "确定", value: "submit", loading: false },
1890 ],
1891 },
1892 });
1893
1894 const rejectDialogBtnClick = (btn, info) => {
1895 if (btn.value == 'submit') {
1896 if (info.approveSuggest == '') {
1897 ElMessage.error('请填写驳回理由');
1898 return
1899 }
1900 let row = flowDetail.value;
1901 rejectDialogInfo.value.footer.btns[1].loading = true;
1902 let params = {
1903 guid: row.approveVO.approveGuid,
1904 flowType: row.approveVO.flowType,
1905 approveStaffGuid: userData.staffGuid,
1906 approveSuggest: info.approveSuggest
1907 }
1908 rejectFlowData(params, flowDetail.value.tenantGuid).then((res: any) => {
1909 rejectDialogInfo.value.footer.btns[1].loading = false;
1910 if (res?.code == proxy.$passCode) {
1911 if (res.data) {
1912 ElMessage.success('驳回成功');
1913 //getTableData();
1914 rejectDialogInfo.value.visible = false;
1915 getProductDetail();
1916 approvalProcessRef.value?.renderProcessNodes();
1917 } else {
1918 ElMessage.error('驳回失败');
1919 }
1920 } else {
1921 ElMessage.error(res.msg);
1922 }
1923 });
1924 } else if (btn.value == 'cancel') {
1925 rejectDialogInfo.value.visible = false;
1926 }
1927 };
1568 1928
1569 </script> 1929 </script>
1570 1930
...@@ -1661,40 +2021,20 @@ const prcieInfo = computed(() => { ...@@ -1661,40 +2021,20 @@ const prcieInfo = computed(() => {
1661 <span class="item_label">定价金额:</span> 2021 <span class="item_label">定价金额:</span>
1662 <span class="item_value">{{ prcieInfo || '--' }}</span> 2022 <span class="item_value">{{ prcieInfo || '--' }}</span>
1663 </div> 2023 </div>
1664 <!-- <div class="list_item">
1665 <span class="item_label">所属主题:</span>
1666 <span class="item_value">{{ flowDetail.subjectDomainName || '--' }}</span>
1667 </div> -->
1668
1669 <div class="list_item"> 2024 <div class="list_item">
1670 <span class="item_label">数据规模(条):</span> 2025 <span class="item_label">数据规模(条):</span>
1671 <span class="item_value">{{ flowDetail.dataScale != null ? changeNum(flowDetail.dataScale, 0) : '--' 2026 <span class="item_value">{{ flowDetail.dataScale != null ? changeNum(flowDetail.dataScale, 0) : '--'
1672 }}</span> 2027 }}</span>
1673 </div> 2028 </div>
1674 <div class="list_item"> 2029 <div class="list_item">
1675 <span class="item_label">病例总数(例):</span> 2030 <span class="item_label">病例总数(例):</span>
1676 <span class="item_value">{{ flowDetail.caseNumber != null ? changeNum(flowDetail.caseNumber, 0) : '--' 2031 <span class="item_value">{{ flowDetail.caseNumber != null ? changeNum(flowDetail.caseNumber, 0) : '--'
1677 }}</span> 2032 }}</span>
1678 </div> 2033 </div>
1679 <!-- <div class="list_item">
1680 <span class="item_label">交易方式:</span>
1681 <span class="item_value">{{ flowDetail.deliveryWayName || '--' }}</span>
1682 </div> -->
1683 <!-- <div class="list_item">
1684 <span class="item_label">产品价格:</span>
1685 <span class="item_value">{{ flowDetail.isDiscussPersonally == 'Y' ? '面议' : (flowDetail.productPrice ||
1686 '--')
1687 }}</span>
1688 </div> -->
1689 <div class="list_item" v-if="route.query.exchangeGuid"> 2034 <div class="list_item" v-if="route.query.exchangeGuid">
1690 <span class="item_label">登记数交所:</span> 2035 <span class="item_label">登记数交所:</span>
1691 <span class="item_value">{{ flowDetail.exchangeName || '--' }}</span> 2036 <span class="item_value">{{ flowDetail.exchangeName || '--' }}</span>
1692 </div> 2037 </div>
1693 <!-- <div class="list_item is_block">
1694 <span class="item_label">上架交易所:</span>
1695 <span class="item_value">{{ !flowDetail.exchangeGuids?.length ? '--' : flowDetail.exchangeNames.join(',')
1696 }}</span>
1697 </div> -->
1698 <div class="list_item is_block"> 2038 <div class="list_item is_block">
1699 <span class="item_label">数据覆盖地域:</span> 2039 <span class="item_label">数据覆盖地域:</span>
1700 <span class="item_value" 2040 <span class="item_value"
...@@ -1703,7 +2043,7 @@ const prcieInfo = computed(() => { ...@@ -1703,7 +2043,7 @@ const prcieInfo = computed(() => {
1703 </span> 2043 </span>
1704 <span class="item_value" v-else> 2044 <span class="item_value" v-else>
1705 <span v-for="(cor, c) in flowDetail.coverageAreaName" :key="c" class="area_text">{{ cor.join('/') 2045 <span v-for="(cor, c) in flowDetail.coverageAreaName" :key="c" class="area_text">{{ cor.join('/')
1706 }}</span> 2046 }}</span>
1707 </span> 2047 </span>
1708 </div> 2048 </div>
1709 <div class="list_item is_block"> 2049 <div class="list_item is_block">
...@@ -1743,7 +2083,8 @@ const prcieInfo = computed(() => { ...@@ -1743,7 +2083,8 @@ const prcieInfo = computed(() => {
1743 v-else-if="flowDetail.productPic.name.substring(flowDetail.productPic.name.lastIndexOf('.') + 1).toLowerCase() == 'jpg' || flowDetail.productPic.name.substring(flowDetail.productPic.name.lastIndexOf('.') + 1).toLowerCase() == 'jpeg'"> 2083 v-else-if="flowDetail.productPic.name.substring(flowDetail.productPic.name.lastIndexOf('.') + 1).toLowerCase() == 'jpg' || flowDetail.productPic.name.substring(flowDetail.productPic.name.lastIndexOf('.') + 1).toLowerCase() == 'jpeg'">
1744 <img class="file-img" src="../../assets/images/jpg.png" /> 2084 <img class="file-img" src="../../assets/images/jpg.png" />
1745 </template> 2085 </template>
1746 <div class="file-name">{{ flowDetail.productPic.name }}</div> 2086 <div class="file-name"><ellipsis-tooltip :content="flowDetail.productPic.name ?? ''"
2087 class-name="w100f" refName="tooltipOver"></ellipsis-tooltip></div>
1747 <div :style="{ right: '36px' }" 2088 <div :style="{ right: '36px' }"
1748 v-if="flowDetail.productPic.name.substring(flowDetail.productPic.name.lastIndexOf('.') + 1).toLowerCase() == 'pdf' || flowDetail.productPic.name.substring(flowDetail.productPic.name.lastIndexOf('.') + 1).toLowerCase() == 'png' || flowDetail.productPic.name.substring(flowDetail.productPic.name.lastIndexOf('.') + 1).toLowerCase() == 'jpg' || flowDetail.productPic.name.substring(flowDetail.productPic.name.lastIndexOf('.') + 1).toLowerCase() == 'jpeg'" 2089 v-if="flowDetail.productPic.name.substring(flowDetail.productPic.name.lastIndexOf('.') + 1).toLowerCase() == 'pdf' || flowDetail.productPic.name.substring(flowDetail.productPic.name.lastIndexOf('.') + 1).toLowerCase() == 'png' || flowDetail.productPic.name.substring(flowDetail.productPic.name.lastIndexOf('.') + 1).toLowerCase() == 'jpg' || flowDetail.productPic.name.substring(flowDetail.productPic.name.lastIndexOf('.') + 1).toLowerCase() == 'jpeg'"
1749 class="file-preview" @click="onUploadFilePreview(flowDetail.productPic)">查看</div> 2090 class="file-preview" @click="onUploadFilePreview(flowDetail.productPic)">查看</div>
...@@ -1791,7 +2132,8 @@ const prcieInfo = computed(() => { ...@@ -1791,7 +2132,8 @@ const prcieInfo = computed(() => {
1791 v-else-if="flowDetail.registrationCertificate.name.substring(flowDetail.registrationCertificate.name.lastIndexOf('.') + 1).toLowerCase() == 'jpg' || flowDetail.registrationCertificate.name.substring(flowDetail.registrationCertificate.name.lastIndexOf('.') + 1).toLowerCase() == 'jpeg'"> 2132 v-else-if="flowDetail.registrationCertificate.name.substring(flowDetail.registrationCertificate.name.lastIndexOf('.') + 1).toLowerCase() == 'jpg' || flowDetail.registrationCertificate.name.substring(flowDetail.registrationCertificate.name.lastIndexOf('.') + 1).toLowerCase() == 'jpeg'">
1792 <img class="file-img" src="../../assets/images/jpg.png" /> 2133 <img class="file-img" src="../../assets/images/jpg.png" />
1793 </template> 2134 </template>
1794 <div class="file-name">{{ flowDetail.registrationCertificate.name }}</div> 2135 <div class="file-name"><ellipsis-tooltip :content="flowDetail.registrationCertificate.name ?? ''"
2136 class-name="w100f" refName="tooltipOver"></ellipsis-tooltip></div>
1795 <div :style="{ right: '36px' }" 2137 <div :style="{ right: '36px' }"
1796 v-if="flowDetail.registrationCertificate.name.substring(flowDetail.registrationCertificate.name.lastIndexOf('.') + 1).toLowerCase() == 'pdf' || flowDetail.registrationCertificate.name.substring(flowDetail.registrationCertificate.name.lastIndexOf('.') + 1).toLowerCase() == 'png' || flowDetail.registrationCertificate.name.substring(flowDetail.registrationCertificate.name.lastIndexOf('.') + 1).toLowerCase() == 'jpg' || flowDetail.registrationCertificate.name.substring(flowDetail.registrationCertificate.name.lastIndexOf('.') + 1).toLowerCase() == 'jpeg'" 2138 v-if="flowDetail.registrationCertificate.name.substring(flowDetail.registrationCertificate.name.lastIndexOf('.') + 1).toLowerCase() == 'pdf' || flowDetail.registrationCertificate.name.substring(flowDetail.registrationCertificate.name.lastIndexOf('.') + 1).toLowerCase() == 'png' || flowDetail.registrationCertificate.name.substring(flowDetail.registrationCertificate.name.lastIndexOf('.') + 1).toLowerCase() == 'jpg' || flowDetail.registrationCertificate.name.substring(flowDetail.registrationCertificate.name.lastIndexOf('.') + 1).toLowerCase() == 'jpeg'"
1797 class="file-preview" @click="onUploadFilePreview(flowDetail.registrationCertificate)">查看</div> 2139 class="file-preview" @click="onUploadFilePreview(flowDetail.registrationCertificate)">查看</div>
...@@ -1804,48 +2146,6 @@ const prcieInfo = computed(() => { ...@@ -1804,48 +2146,6 @@ const prcieInfo = computed(() => {
1804 </div> 2146 </div>
1805 </div> 2147 </div>
1806 <div class="list_item1 is_block1"> 2148 <div class="list_item1 is_block1">
1807 <!-- <div class="file_item"
1808 v-if="flowDetail.registrationCertificate && flowDetail.registrationCertificate.name">
1809 <span class="item_label">质量评估报告:</span>
1810 <span class="item_value">
1811 <div class="file-operate">
1812 <template
1813 v-if="flowDetail.qualityEvaluationFile[0].name.substring(flowDetail.qualityEvaluationFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'xls' || flowDetail.costAssessmentFile[0].name.substring(flowDetail.costAssessmentFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'xlsx' || flowDetail.costAssessmentFile[0].name.substring(flowDetail.costAssessmentFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'csv'">
1814 <img class="file-img" src="../../assets/images/excel.png" />
1815 </template>
1816 <template
1817 v-else-if="flowDetail.qualityEvaluationFile[0].name.substring(flowDetail.qualityEvaluationFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'doc' || flowDetail.qualityEvaluationFile[0].name.substring(flowDetail.qualityEvaluationFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'docx'">
1818 <img class="file-img" src="../../assets/images/word.png" />
1819 </template>
1820 <template
1821 v-else-if="flowDetail.qualityEvaluationFile[0].name.substring(flowDetail.qualityEvaluationFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'zip'">
1822 <img class="file-img" src="../../assets/images/zip.png" />
1823 </template>
1824 <template
1825 v-else-if="flowDetail.qualityEvaluationFile[0].name.substring(flowDetail.qualityEvaluationFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'rar'">
1826 <img class="file-img" src="../../assets/images/RAR.png" />
1827 </template>
1828 <template
1829 v-else-if="flowDetail.qualityEvaluationFile[0].name.substring(flowDetail.qualityEvaluationFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'pdf'">
1830 <img class="file-img" src="../../assets/images/PDF.png" />
1831 </template>
1832 <template
1833 v-else-if="flowDetail.qualityEvaluationFile[0].name.substring(flowDetail.qualityEvaluationFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'png'">
1834 <img class="file-img" src="../../assets/images/png.png" />
1835 </template>
1836 <template
1837 v-else-if="flowDetail.qualityEvaluationFile[0].name.substring(flowDetail.qualityEvaluationFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'jpg' || flowDetail.qualityEvaluationFile[0].name.substring(flowDetail.qualityEvaluationFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'jpeg'">
1838 <img class="file-img" src="../../assets/images/jpg.png" />
1839 </template>
1840 <div class="file-name">{{ flowDetail.qualityEvaluationFile[0].name }}</div>
1841 <div :style="{ right: '36px' }"
1842 v-if="flowDetail.qualityEvaluationFile[0].name.substring(flowDetail.qualityEvaluationFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'pdf' || flowDetail.qualityEvaluationFile[0].name.substring(flowDetail.qualityEvaluationFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'png' || flowDetail.qualityEvaluationFile[0].name.substring(flowDetail.qualityEvaluationFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'jpg' || flowDetail.qualityEvaluationFile[0].name.substring(flowDetail.qualityEvaluationFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'jpeg'"
1843 class="file-preview" @click="onUploadFilePreview(flowDetail.qualityEvaluationFile[0])">查看</div>
1844 <div :style="{ right: '0px' }" class="file-preview"
1845 @click="onUploadFileDownload(flowDetail.qualityEvaluationFile[0])">下载</div>
1846 </div>
1847 </span>
1848 </div> -->
1849 <div class="file_item" v-if="route.query.exchangeGuid"> 2149 <div class="file_item" v-if="route.query.exchangeGuid">
1850 <span class="item_label">质量评估报告:</span> 2150 <span class="item_label">质量评估报告:</span>
1851 <span class="item_value"> 2151 <span class="item_value">
...@@ -1863,7 +2163,8 @@ const prcieInfo = computed(() => { ...@@ -1863,7 +2163,8 @@ const prcieInfo = computed(() => {
1863 v-else-if="['jpg', 'jpeg'].includes(flowDetail.evaluationFile[0].name?.substring(flowDetail.evaluationFile[0].name.lastIndexOf('.') + 1).toLowerCase())"> 2163 v-else-if="['jpg', 'jpeg'].includes(flowDetail.evaluationFile[0].name?.substring(flowDetail.evaluationFile[0].name.lastIndexOf('.') + 1).toLowerCase())">
1864 <img class="file-img" src="../../assets/images/jpg.png" /> 2164 <img class="file-img" src="../../assets/images/jpg.png" />
1865 </template> 2165 </template>
1866 <div class="file-name">{{ flowDetail.evaluationFile[0].name }}</div> 2166 <div class="file-name"><ellipsis-tooltip :content="flowDetail.evaluationFile[0].name ?? ''"
2167 class-name="w100f" refName="tooltipOver"></ellipsis-tooltip></div>
1867 <div 2168 <div
1868 v-if="['pdf', 'png', 'jpg', 'jpeg'].includes(flowDetail.evaluationFile[0].name?.substring(flowDetail.evaluationFile[0].name.lastIndexOf('.') + 1).toLowerCase())" 2169 v-if="['pdf', 'png', 'jpg', 'jpeg'].includes(flowDetail.evaluationFile[0].name?.substring(flowDetail.evaluationFile[0].name.lastIndexOf('.') + 1).toLowerCase())"
1869 :style="{ right: '36px' }" class="file-preview" 2170 :style="{ right: '36px' }" class="file-preview"
...@@ -1891,48 +2192,6 @@ const prcieInfo = computed(() => { ...@@ -1891,48 +2192,6 @@ const prcieInfo = computed(() => {
1891 </div> 2192 </div>
1892 </div> 2193 </div>
1893 <div class="list_item1 is_block1"> 2194 <div class="list_item1 is_block1">
1894 <!-- <div class="file_item"
1895 v-if="flowDetail.registrationCertificate && flowDetail.registrationCertificate.name">
1896 <span class="item_label">价值评估报告:</span>
1897 <span class="item_value">
1898 <div class="file-operate">
1899 <template
1900 v-if="flowDetail.costAssessmentFile[0].name.substring(flowDetail.costAssessmentFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'xls' || flowDetail.costAssessmentFile[0].name.substring(flowDetail.costAssessmentFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'xlsx' || flowDetail.costAssessmentFile[0].name.substring(flowDetail.costAssessmentFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'csv'">
1901 <img class="file-img" src="../../assets/images/excel.png" />
1902 </template>
1903 <template
1904 v-else-if="flowDetail.costAssessmentFile[0].name.substring(flowDetail.costAssessmentFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'doc' || flowDetail.costAssessmentFile[0].name.substring(flowDetail.costAssessmentFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'docx'">
1905 <img class="file-img" src="../../assets/images/word.png" />
1906 </template>
1907 <template
1908 v-else-if="flowDetail.costAssessmentFile[0].name.substring(flowDetail.costAssessmentFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'zip'">
1909 <img class="file-img" src="../../assets/images/zip.png" />
1910 </template>
1911 <template
1912 v-else-if="flowDetail.costAssessmentFile[0].name.substring(flowDetail.costAssessmentFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'rar'">
1913 <img class="file-img" src="../../assets/images/RAR.png" />
1914 </template>
1915 <template
1916 v-else-if="flowDetail.costAssessmentFile[0].name.substring(flowDetail.costAssessmentFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'pdf'">
1917 <img class="file-img" src="../../assets/images/PDF.png" />
1918 </template>
1919 <template
1920 v-else-if="flowDetail.costAssessmentFile[0].name.substring(flowDetail.costAssessmentFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'png'">
1921 <img class="file-img" src="../../assets/images/png.png" />
1922 </template>
1923 <template
1924 v-else-if="flowDetail.costAssessmentFile[0].name.substring(flowDetail.costAssessmentFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'jpg' || flowDetail.costAssessmentFile[0].name.substring(flowDetail.costAssessmentFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'jpeg'">
1925 <img class="file-img" src="../../assets/images/jpg.png" />
1926 </template>
1927 <div class="file-name">{{ flowDetail.costAssessmentFile[0].name }}</div>
1928 <div :style="{ right: '36px' }"
1929 v-if="flowDetail.costAssessmentFile[0].name.substring(flowDetail.costAssessmentFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'pdf' || flowDetail.costAssessmentFile[0].name.substring(flowDetail.costAssessmentFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'png' || flowDetail.costAssessmentFile[0].name.substring(flowDetail.costAssessmentFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'jpg' || flowDetail.costAssessmentFile[0].name.substring(flowDetail.costAssessmentFile[0].name.lastIndexOf('.') + 1).toLowerCase() == 'jpeg'"
1930 class="file-preview" @click="onUploadFilePreview(flowDetail.costAssessmentFile[0])">查看</div>
1931 <div :style="{ right: '0px' }" class="file-preview"
1932 @click="onUploadFileDownload(flowDetail.costAssessmentFile[0])">下载</div>
1933 </div>
1934 </span>
1935 </div> -->
1936 <div class="file_item" v-if="route.query.exchangeGuid"> 2195 <div class="file_item" v-if="route.query.exchangeGuid">
1937 <span class="item_label">价值评估报告:</span> 2196 <span class="item_label">价值评估报告:</span>
1938 <span class="item_value"> 2197 <span class="item_value">
...@@ -1950,7 +2209,8 @@ const prcieInfo = computed(() => { ...@@ -1950,7 +2209,8 @@ const prcieInfo = computed(() => {
1950 v-else-if="['jpg', 'jpeg'].includes(flowDetail.assessmentFile[0].name?.substring(flowDetail.assessmentFile[0].name.lastIndexOf('.') + 1).toLowerCase())"> 2209 v-else-if="['jpg', 'jpeg'].includes(flowDetail.assessmentFile[0].name?.substring(flowDetail.assessmentFile[0].name.lastIndexOf('.') + 1).toLowerCase())">
1951 <img class="file-img" src="../../assets/images/jpg.png" /> 2210 <img class="file-img" src="../../assets/images/jpg.png" />
1952 </template> 2211 </template>
1953 <div class="file-name">{{ flowDetail.assessmentFile[0].name }}</div> 2212 <div class="file-name"><ellipsis-tooltip :content="flowDetail.assessmentFile[0].name ?? ''"
2213 class-name="w100f" refName="tooltipOver"></ellipsis-tooltip></div>
1954 <div 2214 <div
1955 v-if="['pdf', 'png', 'jpg', 'jpeg'].includes(flowDetail.assessmentFile[0].name?.substring(flowDetail.assessmentFile[0].name.lastIndexOf('.') + 1).toLowerCase())" 2215 v-if="['pdf', 'png', 'jpg', 'jpeg'].includes(flowDetail.assessmentFile[0].name?.substring(flowDetail.assessmentFile[0].name.lastIndexOf('.') + 1).toLowerCase())"
1956 :style="{ right: '36px' }" class="file-preview" 2216 :style="{ right: '36px' }" class="file-preview"
...@@ -1996,7 +2256,8 @@ const prcieInfo = computed(() => { ...@@ -1996,7 +2256,8 @@ const prcieInfo = computed(() => {
1996 v-else-if="['jpg', 'jpeg'].includes(flowDetail.commitmentLetter[0].name?.substring(flowDetail.commitmentLetter[0].name.lastIndexOf('.') + 1).toLowerCase())"> 2256 v-else-if="['jpg', 'jpeg'].includes(flowDetail.commitmentLetter[0].name?.substring(flowDetail.commitmentLetter[0].name.lastIndexOf('.') + 1).toLowerCase())">
1997 <img class="file-img" src="../../assets/images/jpg.png" /> 2257 <img class="file-img" src="../../assets/images/jpg.png" />
1998 </template> 2258 </template>
1999 <div class="file-name">{{ flowDetail.commitmentLetter[0].name }}</div> 2259 <div class="file-name"><ellipsis-tooltip :content="flowDetail.commitmentLetter[0].name ?? ''"
2260 class-name="w100f" refName="tooltipOver"></ellipsis-tooltip></div>
2000 <div 2261 <div
2001 v-if="['pdf', 'png', 'jpg', 'jpeg'].includes(flowDetail.commitmentLetter[0].name?.substring(flowDetail.commitmentLetter[0].name.lastIndexOf('.') + 1).toLowerCase())" 2262 v-if="['pdf', 'png', 'jpg', 'jpeg'].includes(flowDetail.commitmentLetter[0].name?.substring(flowDetail.commitmentLetter[0].name.lastIndexOf('.') + 1).toLowerCase())"
2002 :style="{ right: '36px' }" class="file-preview" 2263 :style="{ right: '36px' }" class="file-preview"
...@@ -2033,7 +2294,8 @@ const prcieInfo = computed(() => { ...@@ -2033,7 +2294,8 @@ const prcieInfo = computed(() => {
2033 v-else-if="['jpg', 'jpeg'].includes(flowDetail.accreditFile[0].name?.substring(flowDetail.accreditFile[0].name.lastIndexOf('.') + 1).toLowerCase())"> 2294 v-else-if="['jpg', 'jpeg'].includes(flowDetail.accreditFile[0].name?.substring(flowDetail.accreditFile[0].name.lastIndexOf('.') + 1).toLowerCase())">
2034 <img class="file-img" src="../../assets/images/jpg.png" /> 2295 <img class="file-img" src="../../assets/images/jpg.png" />
2035 </template> 2296 </template>
2036 <div class="file-name">{{ flowDetail.accreditFile[0].name }}</div> 2297 <div class="file-name"><ellipsis-tooltip :content="flowDetail.accreditFile[0].name ?? ''"
2298 class-name="w100f" refName="tooltipOver"></ellipsis-tooltip></div>
2037 <div 2299 <div
2038 v-if="['pdf', 'png', 'jpg', 'jpeg'].includes(flowDetail.accreditFile[0].name?.substring(flowDetail.accreditFile[0].name.lastIndexOf('.') + 1).toLowerCase())" 2300 v-if="['pdf', 'png', 'jpg', 'jpeg'].includes(flowDetail.accreditFile[0].name?.substring(flowDetail.accreditFile[0].name.lastIndexOf('.') + 1).toLowerCase())"
2039 :style="{ right: '36px' }" class="file-preview" 2301 :style="{ right: '36px' }" class="file-preview"
...@@ -2070,7 +2332,8 @@ const prcieInfo = computed(() => { ...@@ -2070,7 +2332,8 @@ const prcieInfo = computed(() => {
2070 v-else-if="['jpg', 'jpeg'].includes(flowDetail.productDetail[0].name?.substring(flowDetail.productDetail[0].name.lastIndexOf('.') + 1).toLowerCase())"> 2332 v-else-if="['jpg', 'jpeg'].includes(flowDetail.productDetail[0].name?.substring(flowDetail.productDetail[0].name.lastIndexOf('.') + 1).toLowerCase())">
2071 <img class="file-img" src="../../assets/images/jpg.png" /> 2333 <img class="file-img" src="../../assets/images/jpg.png" />
2072 </template> 2334 </template>
2073 <div class="file-name">{{ flowDetail.productDetail[0].name }}</div> 2335 <div class="file-name"><ellipsis-tooltip :content="flowDetail.productDetail[0].name ?? ''"
2336 class-name="w100f" refName="tooltipOver"></ellipsis-tooltip></div>
2074 <div 2337 <div
2075 v-if="['pdf', 'png', 'jpg', 'jpeg'].includes(flowDetail.productDetail[0].name?.substring(flowDetail.productDetail[0].name.lastIndexOf('.') + 1).toLowerCase())" 2338 v-if="['pdf', 'png', 'jpg', 'jpeg'].includes(flowDetail.productDetail[0].name?.substring(flowDetail.productDetail[0].name.lastIndexOf('.') + 1).toLowerCase())"
2076 :style="{ right: '36px' }" class="file-preview" 2339 :style="{ right: '36px' }" class="file-preview"
...@@ -2123,7 +2386,7 @@ const prcieInfo = computed(() => { ...@@ -2123,7 +2386,7 @@ const prcieInfo = computed(() => {
2123 <div class="list_panel"> 2386 <div class="list_panel">
2124 <div class="table_panel_wrap"> 2387 <div class="table_panel_wrap">
2125 <!-- <Table :tableInfo="approveTableInfo" /> --> 2388 <!-- <Table :tableInfo="approveTableInfo" /> -->
2126 <ApprovalProcess v-if="deploymentId" :deploymentId="deploymentId" :processInstanceId="processInstanceId"> 2389 <ApprovalProcess ref="approvalProcessRef" v-if="deploymentId" :deploymentId="deploymentId" :processInstanceId="processInstanceId">
2127 </ApprovalProcess> 2390 </ApprovalProcess>
2128 </div> 2391 </div>
2129 </div> 2392 </div>
...@@ -2173,21 +2436,26 @@ const prcieInfo = computed(() => { ...@@ -2173,21 +2436,26 @@ const prcieInfo = computed(() => {
2173 </div> 2436 </div>
2174 <div class="tool_btns" v-else-if="detailType == 'detail'"> 2437 <div class="tool_btns" v-else-if="detailType == 'detail'">
2175 <div class="btns"> 2438 <div class="btns">
2176 <el-button @click="btnClick({ value: 'cancel' })">关闭</el-button> 2439 <el-button v-for="btn in toolBtns" :type="btn.type" :plain="btn.plain" @click="btnClick(btn)">{{ btn.label
2440 }}</el-button>
2177 </div> 2441 </div>
2178 </div> 2442 </div>
2179 <div class=" tool_btns" v-else-if="detailType == 'check'"> 2443 <el-dialog v-model="dialogVisible" :title="dialogTitle" width="550px" :close-on-click-modal="false" >
2180 <div class="btns"> 2444 <Form ref="passListingFormRef" :itemList="passFormInfo.items" :rules="passFormInfo.rules" />
2181 <el-button plain @click="btnClick({ value: 'cancel' })">关闭</el-button> 2445 <el-input type="textarea" :rows="3" maxlength="100" v-model="approveSuggest" resize="none"
2182 <el-button type="primary" @click="btnClick({ value: 'pass' })" 2446 :placeholder="dynamicPlaceholder" />
2183 v-if="flowDetail.approveState == 'A' && flowDetail.approveTenantGuids?.includes(userData.tenantGuid)">通过</el-button> 2447 <template #footer>
2184 <el-button plain type="danger" @click="btnClick({ value: 'reject' })" 2448 <div class="dialog-footer">
2185 v-if="flowDetail.approveState == 'A' && flowDetail.approveTenantGuids?.includes(userData.tenantGuid)">驳回</el-button> 2449 <el-button @click="dialogVisible = false">取消</el-button>
2186 </div> 2450 <el-button v-if="approveType == 'pass'" type="primary" v-loading="dialogBtnLoading"
2187 </div> 2451 @click="passSubmit">通过</el-button>
2188 2452 <el-button v-if="approveType == 'reject'" type="primary" v-loading="dialogBtnLoading"
2189 <!-- 审核对话框 --> 2453 @click="rejectSubmit">驳回</el-button>
2190 <Dialog ref="listingDialogRef" :dialogInfo="dialogInfo" @btnClick="dialogBtnClick" /> 2454 </div>
2455 </template>
2456 </el-dialog>
2457 <Dialog :dialogInfo="rejectDialogInfo" @btnClick="rejectDialogBtnClick" />
2458 <Dialog :dialogInfo="passCommonDialogInfo" @btnClick="passCommonDialogBtnClick" />
2191 </div> 2459 </div>
2192 </template> 2460 </template>
2193 2461
...@@ -2292,6 +2560,7 @@ const prcieInfo = computed(() => { ...@@ -2292,6 +2560,7 @@ const prcieInfo = computed(() => {
2292 .file-name { 2560 .file-name {
2293 color: var(--el-color-regular); 2561 color: var(--el-color-regular);
2294 margin-left: 4px; 2562 margin-left: 4px;
2563 width: calc(100% - 120px);
2295 } 2564 }
2296 2565
2297 .file-preview { 2566 .file-preview {
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!