fix产品上架
Showing
6 changed files
with
742 additions
and
495 deletions
| 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 { | ... | ... |
-
Please register or sign in to post a comment