1cf03985 by xukangle

Merge branch 'dev_20241202_xukangle' into develop

2 parents 2296e1e9 4b6216c9
...@@ -10,6 +10,15 @@ export const getProductList = (params) => request({ ...@@ -10,6 +10,15 @@ export const getProductList = (params) => request({
10 method: 'get', 10 method: 'get',
11 params 11 params
12 }) 12 })
13 /** 获取数交所产品
14 * @param {Object} params
15 * path: /dam-catalog-table/data-exchange/get-table-select
16 */
17 export const getDataExchangeProductList = (params) => request({
18 url: `${import.meta.env.VITE_API_NEW_PORTAL}/dam-catalog-table/data-exchange/get-table-select`,
19 method: 'get',
20 params
21 })
13 22
14 /** 获取已添加的数据产品列表 */ 23 /** 获取已添加的数据产品列表 */
15 export const getAddedProductList = (params) => request({ 24 export const getAddedProductList = (params) => request({
...@@ -25,6 +34,13 @@ export const getListingList = (params) => request({ ...@@ -25,6 +34,13 @@ export const getListingList = (params) => request({
25 data: params 34 data: params
26 }) 35 })
27 36
37 /**获取产品上架数量 */
38 export const getListingCount = () => request({
39 url: `${import.meta.env.VITE_API_NEW_PORTAL}/product-grounding/product-num`,
40 method: 'post',
41 })
42
43
28 /** 获取数据产品上架详情 */ 44 /** 获取数据产品上架详情 */
29 export const getListingDetail = (params) => request({ 45 export const getListingDetail = (params) => request({
30 url: `${import.meta.env.VITE_API_NEW_PORTAL}/product-grounding/detail`, 46 url: `${import.meta.env.VITE_API_NEW_PORTAL}/product-grounding/detail`,
...@@ -54,6 +70,13 @@ export const listingUpdate = (params) => request({ ...@@ -54,6 +70,13 @@ export const listingUpdate = (params) => request({
54 data: params 70 data: params
55 }); 71 });
56 72
73 /**门户更新 */
74 export const listingUpdateGateway = (params) => request({
75 url: `${import.meta.env.VITE_API_NEW_PORTAL}/product-grounding/update-gateway`,
76 method: 'post',
77 data: params
78 });
79
57 /** 删除数据产品上架信息 */ 80 /** 删除数据产品上架信息 */
58 export const listingDelete = (params) => request({ 81 export const listingDelete = (params) => request({
59 url: `${import.meta.env.VITE_API_NEW_PORTAL}/product-grounding/delete`, 82 url: `${import.meta.env.VITE_API_NEW_PORTAL}/product-grounding/delete`,
......
...@@ -570,7 +570,7 @@ const panelChange = (scope, row) => { ...@@ -570,7 +570,7 @@ const panelChange = (scope, row) => {
570 required_mark: item.required, 570 required_mark: item.required,
571 }">{{ 571 }">{{
572 item.label 572 item.label
573 }}</span> 573 }}</span>
574 574
575 </span> 575 </span>
576 <div class="header_title_tooltip" style="width: auto" v-if="item.tooltip"> 576 <div class="header_title_tooltip" style="width: auto" v-if="item.tooltip">
...@@ -663,7 +663,7 @@ const panelChange = (scope, row) => { ...@@ -663,7 +663,7 @@ const panelChange = (scope, row) => {
663 <div class="item_panel" :class="{ is_block: panel.block }" v-for="panel in item.children"> 663 <div class="item_panel" :class="{ is_block: panel.block }" v-for="panel in item.children">
664 <label :class="{ required_mark: panel.required }">{{ 664 <label :class="{ required_mark: panel.required }">{{
665 panel.label 665 panel.label
666 }}</label> 666 }}</label>
667 <el-checkbox v-if="panel.type == 'checkbox'" v-model="formInline[panel.field]" 667 <el-checkbox v-if="panel.type == 'checkbox'" v-model="formInline[panel.field]"
668 :disabled="panel.disabled || readonly" :true-label="panel.trueValue ?? true" 668 :disabled="panel.disabled || readonly" :true-label="panel.trueValue ?? true"
669 :false-label="panel.falseValue ?? false">{{ panel.placeholder }}</el-checkbox> 669 :false-label="panel.falseValue ?? false">{{ panel.placeholder }}</el-checkbox>
...@@ -746,7 +746,7 @@ const panelChange = (scope, row) => { ...@@ -746,7 +746,7 @@ const panelChange = (scope, row) => {
746 <span class="item-label" slot="label"> 746 <span class="item-label" slot="label">
747 <span v-if="child.label" :class="{ required_mark: child.required }">{{ 747 <span v-if="child.label" :class="{ required_mark: child.required }">{{
748 child.label 748 child.label
749 }}</span> 749 }}</span>
750 </span> 750 </span>
751 <el-select v-if="child.type == 'select'" v-model="formInline[child.field]" 751 <el-select v-if="child.type == 'select'" v-model="formInline[child.field]"
752 :placeholder="child.placeholder" :disabled="child.disabled || readonly" :filterable="child.filterable" 752 :placeholder="child.placeholder" :disabled="child.disabled || readonly" :filterable="child.filterable"
...@@ -805,7 +805,7 @@ const panelChange = (scope, row) => { ...@@ -805,7 +805,7 @@ const panelChange = (scope, row) => {
805 <span class="item-label" slot="label"> 805 <span class="item-label" slot="label">
806 <span :class="{ required_mark: child.required }">{{ 806 <span :class="{ required_mark: child.required }">{{
807 child.label 807 child.label
808 }}</span> 808 }}</span>
809 </span> 809 </span>
810 <el-cascader v-if="child.type == 'cascader'" v-model="formInline[child.field]" :props="child.props" 810 <el-cascader v-if="child.type == 'cascader'" v-model="formInline[child.field]" :props="child.props"
811 :options="child.options" :show-all-levels="child.showAllLevels ?? true" 811 :options="child.options" :show-all-levels="child.showAllLevels ?? true"
...@@ -848,7 +848,7 @@ const panelChange = (scope, row) => { ...@@ -848,7 +848,7 @@ const panelChange = (scope, row) => {
848 <div class="item_panel" v-for="child in item.children"> 848 <div class="item_panel" v-for="child in item.children">
849 <label :class="{ required_mark: child.required }">{{ 849 <label :class="{ required_mark: child.required }">{{
850 child.label 850 child.label
851 }}</label> 851 }}</label>
852 <div class="tool_item"> 852 <div class="tool_item">
853 <el-select v-model="formInline[child.field]" :class="{ is_block: child.block }" 853 <el-select v-model="formInline[child.field]" :class="{ is_block: child.block }"
854 :placeholder="child.placeholder" :multiple="child.multiple" :collapse-tags="child.collapse" 854 :placeholder="child.placeholder" :multiple="child.multiple" :collapse-tags="child.collapse"
...@@ -923,7 +923,7 @@ const panelChange = (scope, row) => { ...@@ -923,7 +923,7 @@ const panelChange = (scope, row) => {
923 <span class="item-label" slot="label"> 923 <span class="item-label" slot="label">
924 <span :class="{ required_mark: child.required }">{{ 924 <span :class="{ required_mark: child.required }">{{
925 child.label 925 child.label
926 }}</span> 926 }}</span>
927 </span> 927 </span>
928 <el-input :class="[child.col, { is_block: child.block }]" v-model="formInline[child.field]" 928 <el-input :class="[child.col, { is_block: child.block }]" v-model="formInline[child.field]"
929 :rows="child.rows ?? 4" type="textarea" :placeholder="child.placeholder" 929 :rows="child.rows ?? 4" type="textarea" :placeholder="child.placeholder"
...@@ -980,7 +980,7 @@ const panelChange = (scope, row) => { ...@@ -980,7 +980,7 @@ const panelChange = (scope, row) => {
980 <span class="item-label" slot="label"> 980 <span class="item-label" slot="label">
981 <span :class="{ required_mark: child.required }">{{ 981 <span :class="{ required_mark: child.required }">{{
982 child.label 982 child.label
983 }}</span> 983 }}</span>
984 </span> 984 </span>
985 <div class="input_group" :class="[child.col]" v-if="child.type == 'input-group'"> 985 <div class="input_group" :class="[child.col]" v-if="child.type == 'input-group'">
986 <template v-for="(group, c) in child.children"> 986 <template v-for="(group, c) in child.children">
...@@ -989,7 +989,7 @@ const panelChange = (scope, row) => { ...@@ -989,7 +989,7 @@ const panelChange = (scope, row) => {
989 <span class="item-label" slot="label"> 989 <span class="item-label" slot="label">
990 <span :class="{ required_mark: group.required }">{{ 990 <span :class="{ required_mark: group.required }">{{
991 group.label 991 group.label
992 }}</span> 992 }}</span>
993 </span> 993 </span>
994 <el-select v-if="group.type == 'select'" v-model="formInline[group.field]" 994 <el-select v-if="group.type == 'select'" v-model="formInline[group.field]"
995 :placeholder="group.placeholder" :clearable="group.clearable" 995 :placeholder="group.placeholder" :clearable="group.clearable"
...@@ -1130,7 +1130,7 @@ const panelChange = (scope, row) => { ...@@ -1130,7 +1130,7 @@ const panelChange = (scope, row) => {
1130 <span class="item-label" slot="label"> 1130 <span class="item-label" slot="label">
1131 <span :class="{ required_mark: child.required }">{{ 1131 <span :class="{ required_mark: child.required }">{{
1132 child.label 1132 child.label
1133 }}</span> 1133 }}</span>
1134 </span> 1134 </span>
1135 <el-select v-if="child.type == 'select'" v-model="formInline[child.field]" 1135 <el-select v-if="child.type == 'select'" v-model="formInline[child.field]"
1136 :placeholder="child.placeholder" :clearable="child.clearable" :disabled="child.disabled || readonly" 1136 :placeholder="child.placeholder" :clearable="child.clearable" :disabled="child.disabled || readonly"
...@@ -1181,7 +1181,7 @@ const panelChange = (scope, row) => { ...@@ -1181,7 +1181,7 @@ const panelChange = (scope, row) => {
1181 <span class="item-label" slot="label" :class="[child.col]"> 1181 <span class="item-label" slot="label" :class="[child.col]">
1182 <span :class="{ required_mark: child.required }">{{ 1182 <span :class="{ required_mark: child.required }">{{
1183 child.label 1183 child.label
1184 }}</span> 1184 }}</span>
1185 </span> 1185 </span>
1186 <div class="input_popover_panel" v-if="child.type == 'input-popover-panel'"> 1186 <div class="input_popover_panel" v-if="child.type == 'input-popover-panel'">
1187 <el-popover placement="bottom-start" width="100%" trigger="click" :teleported="false"> 1187 <el-popover placement="bottom-start" width="100%" trigger="click" :teleported="false">
...@@ -1235,7 +1235,7 @@ const panelChange = (scope, row) => { ...@@ -1235,7 +1235,7 @@ const panelChange = (scope, row) => {
1235 <span class="item-label" slot="label"> 1235 <span class="item-label" slot="label">
1236 <span :class="{ required_mark: child.required }">{{ 1236 <span :class="{ required_mark: child.required }">{{
1237 child.label 1237 child.label
1238 }}</span> 1238 }}</span>
1239 </span> 1239 </span>
1240 <template v-if="child.type == 'upload-image'"> 1240 <template v-if="child.type == 'upload-image'">
1241 <el-upload :class="[child.col, 'avatar-uploader', { is_block: child.block }]" action="#" 1241 <el-upload :class="[child.col, 'avatar-uploader', { is_block: child.block }]" action="#"
...@@ -1353,36 +1353,70 @@ const panelChange = (scope, row) => { ...@@ -1353,36 +1353,70 @@ const panelChange = (scope, row) => {
1353 </template> 1353 </template>
1354 <template #file="{ file }"> 1354 <template #file="{ file }">
1355 <div class="file-operate"> 1355 <div class="file-operate">
1356 <template 1356 <!-- <template
1357 v-if="file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'xls' || file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'xlsx'"> 1357 v-if="file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'xls' || file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'xlsx'">
1358 <img class="file-img" src="../../assets/images/excel.png" /> 1358 <img class="file-img" src="../../assets/images/excel.png" />
1359 </template> 1359 </template>
1360 <template
1361 v-else-if="file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'doc' || file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'docx'">
1362 <img class="file-img" src="../../assets/images/word.png" />
1363 </template>
1364 <template v-else-if="file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'zip'">
1365 <img class="file-img" src="../../assets/images/zip.png" />
1366 </template>
1367 <template v-else-if="file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'rar'">
1368 <img class="file-img" src="../../assets/images/RAR.png" />
1369 </template>
1370 <template v-else-if="file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'pdf'">
1371 <img class="file-img" src="../../assets/images/PDF.png" />
1372 </template>
1373 <template v-else-if="file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'png'">
1374 <img class="file-img" src="../../assets/images/png.png" />
1375 </template>
1376 <template
1377 v-else-if="file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'jpg' || file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'jpeg'">
1378 <img class="file-img" src="../../assets/images/jpg.png" />
1379 </template>
1380 <div class="file-name">
1381 <ellipsis-tooltip :content="file.name" class-name="w100f" :refName="'tooltipOver' + file.name"></ellipsis-tooltip>
1382 </div>
1383 <div :style="{ right: '72px' }" class="file-preview"
1384 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'"
1385 @click="onUploadFilePreview(file, item)">查看</div>
1386 <div :style="{ right: '36px' }" class="file-preview" @click="onUploadFileDownload(file, item)">下载
1387 </div>
1388 <div v-if="!item.disabled" :style="{ right: 0 }" class="file-preview" @click="handleUploadFileRemove(file, item)">删除
1389 </div> -->
1390 <template
1391 v-if="file?.name?.substring(file.name.lastIndexOf('.') + 1).toLowerCase() === 'xls' || file?.name?.substring(file.name.lastIndexOf('.') + 1).toLowerCase() === 'xlsx'">
1392 <img class="file-img" src="../../assets/images/excel.png" />
1393 </template>
1360 <template 1394 <template
1361 v-else-if="file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'doc' || file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'docx'"> 1395 v-else-if="file?.name?.substring(file.name.lastIndexOf('.') + 1).toLowerCase() === 'doc' || file?.name?.substring(file.name.lastIndexOf('.') + 1).toLowerCase() === 'docx'">
1362 <img class="file-img" src="../../assets/images/word.png" /> 1396 <img class="file-img" src="../../assets/images/word.png" />
1363 </template> 1397 </template>
1364 <template v-else-if="file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'zip'"> 1398 <template v-else-if="file?.name?.substring(file.name.lastIndexOf('.') + 1).toLowerCase() === 'zip'">
1365 <img class="file-img" src="../../assets/images/zip.png" /> 1399 <img class="file-img" src="../../assets/images/zip.png" />
1366 </template> 1400 </template>
1367 <template v-else-if="file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'rar'"> 1401 <template v-else-if="file?.name?.substring(file.name.lastIndexOf('.') + 1).toLowerCase() === 'rar'">
1368 <img class="file-img" src="../../assets/images/RAR.png" /> 1402 <img class="file-img" src="../../assets/images/RAR.png" />
1369 </template> 1403 </template>
1370 <template v-else-if="file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'pdf'"> 1404 <template v-else-if="file?.name?.substring(file.name.lastIndexOf('.') + 1).toLowerCase() === 'pdf'">
1371 <img class="file-img" src="../../assets/images/PDF.png" /> 1405 <img class="file-img" src="../../assets/images/PDF.png" />
1372 </template> 1406 </template>
1373 <template v-else-if="file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'png'"> 1407 <template v-else-if="file?.name?.substring(file.name.lastIndexOf('.') + 1).toLowerCase() === 'png'">
1374 <img class="file-img" src="../../assets/images/png.png" /> 1408 <img class="file-img" src="../../assets/images/png.png" />
1375 </template> 1409 </template>
1376 <template 1410 <template
1377 v-else-if="file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'jpg' || file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() == 'jpeg'"> 1411 v-else-if="file?.name?.substring(file.name.lastIndexOf('.') + 1).toLowerCase() === 'jpg' || file?.name?.substring(file.name.lastIndexOf('.') + 1).toLowerCase() === 'jpeg'">
1378 <img class="file-img" src="../../assets/images/jpg.png" /> 1412 <img class="file-img" src="../../assets/images/jpg.png" />
1379 </template> 1413 </template>
1380 <div class="file-name"> 1414 <div class="file-name">
1381 <ellipsis-tooltip :content="file.name" class-name="w100f" 1415 <ellipsis-tooltip :content="file?.name ?? ''" class-name="w100f"
1382 :refName="'tooltipOver' + file.name"></ellipsis-tooltip> 1416 :refName="'tooltipOver' + file?.name"></ellipsis-tooltip>
1383 </div> 1417 </div>
1384 <div :style="{ right: '72px' }" class="file-preview" 1418 <div :style="{ right: '72px' }" class="file-preview"
1385 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'" 1419 v-if="['pdf', 'png', 'jpg', 'jpeg'].includes(file?.name?.substring(file.name.lastIndexOf('.') + 1).toLowerCase() ?? '')"
1386 @click="onUploadFilePreview(file, item)">查看</div> 1420 @click="onUploadFilePreview(file, item)">查看</div>
1387 <div :style="{ right: '36px' }" class="file-preview" @click="onUploadFileDownload(file, item)">下载 1421 <div :style="{ right: '36px' }" class="file-preview" @click="onUploadFileDownload(file, item)">下载
1388 </div> 1422 </div>
......
...@@ -28,7 +28,7 @@ import { ...@@ -28,7 +28,7 @@ import {
28 import { TableColumnWidth } from "@/utils/enum"; 28 import { TableColumnWidth } from "@/utils/enum";
29 import router from "@/router"; 29 import router from "@/router";
30 import { download } from "@/utils/common"; 30 import { download } from "@/utils/common";
31 import { da, sl } from "element-plus/es/locale"; 31
32 32
33 33
34 const currentPath = ref<string[]>([]); 34 const currentPath = ref<string[]>([]);
...@@ -146,7 +146,7 @@ onMounted(async () => { ...@@ -146,7 +146,7 @@ onMounted(async () => {
146 execGuid: execGuidInfo.value.execGuid, 146 execGuid: execGuidInfo.value.execGuid,
147 classifyDetail: classifyDetailGuidInfo.value 147 classifyDetail: classifyDetailGuidInfo.value
148 }); 148 });
149 getDictionaryList(); 149 // getDictionaryList();
150 getSearchTableList(); 150 getSearchTableList();
151 // getLabelListData(); 151 // getLabelListData();
152 getGradeData(refGradeGuid.value); 152 getGradeData(refGradeGuid.value);
...@@ -900,21 +900,22 @@ const classEditFormItems = ref<any>([{ ...@@ -900,21 +900,22 @@ const classEditFormItems = ref<any>([{
900 clearable: true, 900 clearable: true,
901 block: true, 901 block: true,
902 visible: true, 902 visible: true,
903 }, {
904 label: '关联字典',
905 field: 'dictionaryGuid',
906 type: 'select',
907 placeholder: '请选择',
908 default: '',
909 options: [],
910 props: {
911 label: "chName",
912 value: "guid",
913 },
914 filterable: true,
915 clearable: true,
916 required: false
917 }, 903 },
904 //{
905 // label: '关联字典',
906 // field: 'dictionaryGuid',
907 // type: 'select',
908 // placeholder: '请选择',
909 // default: '',
910 // options: [],
911 // props: {
912 // label: "chName",
913 // value: "guid",
914 // },
915 // filterable: true,
916 // clearable: true,
917 // required: false
918 // },
918 { 919 {
919 label: '字段取值范围', 920 label: '字段取值范围',
920 type: 'input', 921 type: 'input',
...@@ -1052,7 +1053,7 @@ const drawerBtnClick = async (btn, info) => { ...@@ -1052,7 +1053,7 @@ const drawerBtnClick = async (btn, info) => {
1052 } else { 1053 } else {
1053 btn.loading = true; 1054 btn.loading = true;
1054 console.log('drawerBtnClick', info); 1055 console.log('drawerBtnClick', info);
1055 const { orderNumLength, orderNum, startNumber, endNumber, fieldValueRange, startValue, endValue, fieldPrecision, dictionaryGuid, isUnique, notNull } = info; 1056 const { orderNumLength, orderNum, startNumber, endNumber, fieldValueRange, startValue, endValue, fieldPrecision, isUnique, notNull } = info;
1056 // 判断长度orderNumLength,orderNum 要么都有值,要么都没有值,不能只有一个有值,一个没有值精确提醒 1057 // 判断长度orderNumLength,orderNum 要么都有值,要么都没有值,不能只有一个有值,一个没有值精确提醒
1057 let fieldLengthCondition: any = ''; 1058 let fieldLengthCondition: any = '';
1058 if ((orderNumLength === 'between' && !startNumber) || (orderNumLength === 'between' && !endNumber)) { 1059 if ((orderNumLength === 'between' && !startNumber) || (orderNumLength === 'between' && !endNumber)) {
...@@ -1091,7 +1092,6 @@ const drawerBtnClick = async (btn, info) => { ...@@ -1091,7 +1092,6 @@ const drawerBtnClick = async (btn, info) => {
1091 if (fieldValueRange) { 1092 if (fieldValueRange) {
1092 param = { 1093 param = {
1093 fieldPrecision, 1094 fieldPrecision,
1094 dictionaryGuid,
1095 isUnique, 1095 isUnique,
1096 notNull, 1096 notNull,
1097 fieldLengthCondition, 1097 fieldLengthCondition,
...@@ -1102,7 +1102,6 @@ const drawerBtnClick = async (btn, info) => { ...@@ -1102,7 +1102,6 @@ const drawerBtnClick = async (btn, info) => {
1102 } else { 1102 } else {
1103 param = { 1103 param = {
1104 fieldPrecision, 1104 fieldPrecision,
1105 dictionaryGuid,
1106 isUnique, 1105 isUnique,
1107 notNull, 1106 notNull,
1108 fieldLengthCondition, 1107 fieldLengthCondition,
......
...@@ -87,7 +87,7 @@ const getDictionaryList = () => { ...@@ -87,7 +87,7 @@ const getDictionaryList = () => {
87 onMounted(async () => { 87 onMounted(async () => {
88 await getFieldTypeData() 88 await getFieldTypeData()
89 await getBizRuleConfigDetailData() 89 await getBizRuleConfigDetailData()
90 getDictionaryList() 90 // getDictionaryList()
91 }) 91 })
92 92
93 93
...@@ -335,7 +335,7 @@ const saveData = async () => { ...@@ -335,7 +335,7 @@ const saveData = async () => {
335 execGuid: router.currentRoute.value.query.execGuid, 335 execGuid: router.currentRoute.value.query.execGuid,
336 fieldLengthCondition: fieldLengthCondition, 336 fieldLengthCondition: fieldLengthCondition,
337 fieldPrecision: item.fieldPrecision, 337 fieldPrecision: item.fieldPrecision,
338 dictionaryGuid: item.dictionaryGuid, 338 // dictionaryGuid: item.dictionaryGuid,
339 isUnique: item.isUnique, 339 isUnique: item.isUnique,
340 notNull: item.notNull, 340 notNull: item.notNull,
341 fieldValueRange: item.fieldValueRange 341 fieldValueRange: item.fieldValueRange
...@@ -348,7 +348,7 @@ const saveData = async () => { ...@@ -348,7 +348,7 @@ const saveData = async () => {
348 execGuid: router.currentRoute.value.query.execGuid, 348 execGuid: router.currentRoute.value.query.execGuid,
349 fieldLengthCondition: fieldLengthCondition, 349 fieldLengthCondition: fieldLengthCondition,
350 fieldPrecision: item.fieldPrecision, 350 fieldPrecision: item.fieldPrecision,
351 dictionaryGuid: item.dictionaryGuid, 351 // dictionaryGuid: item.dictionaryGuid,
352 isUnique: item.isUnique, 352 isUnique: item.isUnique,
353 notNull: item.notNull, 353 notNull: item.notNull,
354 startValue: item.startValue, 354 startValue: item.startValue,
...@@ -627,7 +627,7 @@ const inputLengthKeyUp = (regexp, scope, field, max: any = null, min: any = null ...@@ -627,7 +627,7 @@ const inputLengthKeyUp = (regexp, scope, field, max: any = null, min: any = null
627 </el-table-column> 627 </el-table-column>
628 628
629 <!-- 关联字典(可编辑)el-tree-select 形式下拉形式 --> 629 <!-- 关联字典(可编辑)el-tree-select 形式下拉形式 -->
630 <el-table-column prop="dictionaryGuid" label="关联字典" width="150" align="left" show-overflow-tooltip> 630 <!-- <el-table-column prop="dictionaryGuid" label="关联字典" width="150" align="left" show-overflow-tooltip>
631 <template #default="scope"> 631 <template #default="scope">
632 <span v-if="!scope.row.isEdit">{{ scope.row.dictionaryGuid 632 <span v-if="!scope.row.isEdit">{{ scope.row.dictionaryGuid
633 ? dictionaryList.find((item: any) => item.guid === scope.row.dictionaryGuid)?.chName : '--' }}</span> 633 ? dictionaryList.find((item: any) => item.guid === scope.row.dictionaryGuid)?.chName : '--' }}</span>
...@@ -636,7 +636,7 @@ const inputLengthKeyUp = (regexp, scope, field, max: any = null, min: any = null ...@@ -636,7 +636,7 @@ const inputLengthKeyUp = (regexp, scope, field, max: any = null, min: any = null
636 </el-select> 636 </el-select>
637 </template> 637 </template>
638 638
639 </el-table-column> 639 </el-table-column> -->
640 640
641 <!-- 数据是否唯一(可编辑) --> 641 <!-- 数据是否唯一(可编辑) -->
642 <el-table-column prop="isUnique" label="数据是否唯一" width="150" align="left" show-overflow-tooltip> 642 <el-table-column prop="isUnique" label="数据是否唯一" width="150" align="left" show-overflow-tooltip>
......
...@@ -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 } from "@/api/modules/dataProduct"; 12 import { getListingList, listingDelete, listingUpdateStatus, filterVal, getParamsDataList, getListingCount } 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";
...@@ -19,6 +19,7 @@ import { getParamsList } from "@/api/modules/dataAsset"; ...@@ -19,6 +19,7 @@ import { getParamsList } from "@/api/modules/dataAsset";
19 import { 19 import {
20 changeNum, 20 changeNum,
21 } from "@/utils/common"; 21 } from "@/utils/common";
22 import { passFlowData, rejectFlowData, revokeFlowData } from "@/api/modules/workFlowService";
22 23
23 const { proxy } = getCurrentInstance() as any; 24 const { proxy } = getCurrentInstance() as any;
24 const router = useRouter(); 25 const router = useRouter();
...@@ -98,27 +99,65 @@ const tableInfo = ref({ ...@@ -98,27 +99,65 @@ const tableInfo = ref({
98 actionInfo: { 99 actionInfo: {
99 label: "操作", 100 label: "操作",
100 type: "btn", 101 type: "btn",
101 width: 140, 102 width: 170,
102 btns: (scope) => { 103 btns: (scope) => {
103 let row = scope.row, btnArr: any = []; 104 const { row } = scope;
104 if (row.approveState == 'Y') { 105 const approveVO = row.approveVO || {};
105 if (row.listingStatus == 'Y') { 106 const currentStaffGuid = userData.staffGuid
106 btnArr.splice(0, 0, { label: "详情", value: "detail" }); 107 const bizApproveState = row.bizApproveState;
107 } else { 108 const approveState = approveVO.approveState || null;
108 btnArr.splice(0, 0, { label: "编辑", value: "edit" }, { label: "详情", value: "detail" }, { label: "删除", value: "delete" }); 109 const approveStaffGuids = approveVO.approveStaffGuids || [];
110 const staffGuid = approveVO.staffGuid || '';
111 let isShowCancel = false;
112 let flowState;
113 let list: any = [];
114 if (approveState == 'N') {
115 flowState = 1;
116 }
117 if (approveState == 'A' && approveStaffGuids.indexOf(currentStaffGuid) > -1) {
118 flowState = 2;
119 }
120 if ((approveState == 'C' || approveState == 'R') && staffGuid == currentStaffGuid) {
121 flowState = 3;
122 }
123 if (approveVO && approveVO.approveState == 'A' && staffGuid == currentStaffGuid) {
124 isShowCancel = true;
125 }
126 if (approveState === 'Y') {
127 if (row.listingStatus === 'Y') {
128 list.push({ label: "下架", value: "down" });
109 } 129 }
110 } else { 130 if (row.listingStatus === 'N') {
111 if (row.approveState == 'A') { 131 list.push({ label: "上架", value: "up" });
112 btnArr.splice(0, 0, { label: "详情", value: "detail" });
113 } else {
114 btnArr.splice(0, 0, { label: "编辑", value: "edit" }, { label: "详情", value: "detail" }, { label: "删除", value: "delete" });
115 } 132 }
116 } 133 }
117 return btnArr; 134 if (flowState === 1) {
135 list = [{ label: "编辑", value: "edit" }, { label: "删除", value: "del" }]
136 }
137 if (flowState === 2) {
138 list = [{ label: "通过", value: "pass" }, { label: "驳回", value: "reject" }]
139 }
140 if (flowState === 3) {
141 list.push({ label: "删除", value: "del" })
142 }
143 if (flowState === 3 && bizApproveState != 'D') {
144 list.push({ label: "重新提交", value: "redit" }) //已驳回
145 }
146 if (isShowCancel) {
147 list.push({ label: "撤销", value: "revoke" })
148 }
149 if (flowState !== 1) {
150 list.push({ label: "详情", value: "detail" })
151 }
152
153 return list
118 }, 154 },
119 }, 155 }
120 }); 156 });
121 157
158
159
160
122 const getTableData = () => { 161 const getTableData = () => {
123 tableInfo.value.loading = true; 162 tableInfo.value.loading = true;
124 getListingList( 163 getListingList(
...@@ -150,8 +189,20 @@ const toSearch = (val: any, clear: boolean = false) => { ...@@ -150,8 +189,20 @@ const toSearch = (val: any, clear: boolean = false) => {
150 page.value.curr = 1; 189 page.value.curr = 1;
151 tableInfo.value.page.curr = 1; 190 tableInfo.value.page.curr = 1;
152 getTableData(); 191 getTableData();
192 getListingCountData();
153 }; 193 };
154 194
195 // 获取产品上架数量
196 const getListingCountData = () => {
197 getListingCount({}).then((res: any) => {
198 if (res.code == proxy.$passCode) {
199 demandListData.value = res.data || [];
200 } else {
201 proxy.$ElMessage.error(res.msg);
202 }
203 })
204 }
205
155 const tableSwitchBeforeChange = (scope, field, callback) => { 206 const tableSwitchBeforeChange = (scope, field, callback) => {
156 ElMessageBox.confirm( 207 ElMessageBox.confirm(
157 `确定${scope.row[field] == 'Y' ? '下架' : '上架'}该产品吗?`, 208 `确定${scope.row[field] == 'Y' ? '下架' : '上架'}该产品吗?`,
...@@ -198,17 +249,146 @@ const tableSwitchChange = (val, scope, field) => { ...@@ -198,17 +249,146 @@ const tableSwitchChange = (val, scope, field) => {
198 }) 249 })
199 }) 250 })
200 } 251 }
201 252 const approveSuggest = ref();
253 const dialogTitle = ref('通过流程');
254 const dialogVisible = ref(false);
255 //弹窗类型
256 const approveType = ref();
202 const tableBtnClick = (scope, btn) => { 257 const tableBtnClick = (scope, btn) => {
203 const type = btn.value; 258 const type = btn.value;
204 const row = scope.row; 259 const row = scope.row;
205 currTableData.value = row; 260 currTableData.value = row;
206 if (type == "detail" || type === "edit") { 261 if (type == "detail") {
207 toPatn(type); 262 router.push({
208 } else if (type === "delete") { 263 name: 'productListingDetail',
209 open("此操作将永久删除,是否继续?", "warning"); 264 query: {
265 guid: row.guid,
266 type: 'detail'
267 }
268 });
210 } 269 }
211 }; 270 if (type == "edit" || type == "redit") {
271 router.push({
272 name: 'productListingDetail',
273 query: {
274 guid: row.guid,
275 type: type == 'edit' ? 'edit' : 'redit',
276 case: '2',
277 name: row.damName
278 }
279 });
280 }
281 if (type == 'del') {
282 ElMessageBox.confirm(`数据删除后不可恢复,确定是否删除?`, "提示", {
283 confirmButtonText: "确定",
284 cancelButtonText: "取消",
285 type: 'warning',
286 }).then(() => {
287 listingDelete([row.guid]).then((res: any) => {
288 if (res.code == '00000') {
289 ElMessage.success('删除成功')
290 getTableData();
291 } else {
292 ElMessage.error(res.msg)
293 }
294 })
295 });
296 }
297 //撤销
298 if (type == 'revoke') {
299 ElMessageBox.confirm(`撤销后,该流程将不再进行审核,确定这样操作吗?`, "提示", {
300 confirmButtonText: "确定",
301 cancelButtonText: "取消",
302 type: 'warning',
303 }).then(() => {
304 revokeFlowData({
305 guid: row.approveVO.approveGuid,
306 flowType: row.approveVO.flowType,
307 approveStaffGuid: userData.staffGuid,
308
309 }).then((res: any) => {
310 if (res.code == '00000') {
311 ElMessage.success('撤销成功!')
312 getTableData();
313 } else {
314 ElMessage.error(res.msg)
315 }
316 })
317 });
318
319 }
320 if (type == 'pass') {
321 approveSuggest.value = '';
322 approveType.value = 'pass';
323 dialogTitle.value = '通过流程'
324 dialogVisible.value = true;
325 }
326 if (type == 'reject') {
327 approveSuggest.value = '';
328 approveType.value = 'reject';
329 dialogTitle.value = '驳回流程'
330 dialogVisible.value = true;
331 }
332 if (type == 'up') {
333 tableSwitchChange('Y', scope, 'listingStatus')
334 }
335 if (type == 'down') {
336 tableSwitchChange('N', scope, 'listingStatus')
337 }
338 }
339
340 const fullscreenLoading = ref(false);
341 const passSubmit = () => {
342 let row = currTableData.value
343 console.log(row)
344 dialogVisible.value = false;
345 fullscreenLoading.value = true;
346 passFlowData({
347 guid: row.approveVO.approveGuid,
348 flowType: row.approveVO.flowType,
349 approveSuggest: approveSuggest.value,
350 approveStaffGuid: userData.staffGuid,
351 }).then((res: any) => {
352 fullscreenLoading.value = false;
353 if (res.code == '00000') {
354 ElMessage.success('审批通过!')
355 getTableData();
356 } else {
357 ElMessage.error(res.msg)
358 }
359 })
360
361 }
362 const rejectSubmit = () => {
363 if (!approveSuggest.value) return ElMessage.error('请填写驳回理由!')
364 let row = currTableData.value
365 dialogVisible.value = false;
366 fullscreenLoading.value = true;
367 rejectFlowData({
368 guid: row.approveVO.approveGuid,
369 flowType: row.approveVO.flowType,
370 approveSuggest: approveSuggest.value,
371 approveStaffGuid: userData.staffGuid,
372 }).then((res: any) => {
373 if (res.code == '00000') {
374 fullscreenLoading.value = false;
375 ElMessage.success('驳回成功!')
376 getTableData();
377 } else {
378 ElMessage.error(res.msg)
379 }
380 })
381 }
382 // const tableBtnClick = (scope, btn) => {
383 // const type = btn.value;
384 // const row = scope.row;
385 // currTableData.value = row;
386 // if (type == "detail" || type === "edit") {
387 // toPatn(type);
388 // } else if (type === "delete") {
389 // open("此操作将永久删除,是否继续?", "warning");
390 // }
391 // };
212 392
213 const toPatn = (type) => { 393 const toPatn = (type) => {
214 if (type == 'add') { 394 if (type == 'add') {
...@@ -216,7 +396,8 @@ const toPatn = (type) => { ...@@ -216,7 +396,8 @@ const toPatn = (type) => {
216 name: "productListingDetail", 396 name: "productListingDetail",
217 query: { 397 query: {
218 type, 398 type,
219 groundingPick: '门户数据专区' 399 groundingPick: '门户数据专区',
400 case: '2',
220 }, 401 },
221 }); 402 });
222 } else { 403 } else {
...@@ -319,7 +500,17 @@ const demandListData: any = ref([ ...@@ -319,7 +500,17 @@ const demandListData: any = ref([
319 { companyName: '深数所', listedNum: 16, processNum: 1235 }, 500 { companyName: '深数所', listedNum: 16, processNum: 1235 },
320 { companyName: '苏数所', listedNum: 16, processNum: 1235 }, 501 { companyName: '苏数所', listedNum: 16, processNum: 1235 },
321 ]); 502 ]);
322 const btnClick = (btn) => { 503 const btnClick = (item) => {
504 console.log(item)
505 router.push({
506 name: "productListingDetail",
507 query: {
508 exchangeGuid: item.exchangeGuid,
509 exchangeName: item.exchangeName,
510 type: 'add',
511 groundingPick: '登记得数交所',
512 },
513 });
323 } 514 }
324 515
325 516
...@@ -340,21 +531,21 @@ const btnClick = (btn) => { ...@@ -340,21 +531,21 @@ const btnClick = (btn) => {
340 <img class="left-img" :src="(item.picUrl && typeof item.picUrl == 'string') ? item.picUrl : defaultItemLogo" 531 <img class="left-img" :src="(item.picUrl && typeof item.picUrl == 'string') ? item.picUrl : defaultItemLogo"
341 alt="" /> 532 alt="" />
342 <div class="right-main"> 533 <div class="right-main">
343 <div class="title">{{ item.companyName ?? '--' }}</div> 534 <div class="title">{{ item.exchangeName ?? '--' }}</div>
344 <div class="count-group"> 535 <div class="count-group">
345 <div class="count-item"> 536 <div class="count-item">
346 <div class="item-label">已上架产品数</div> 537 <div class="item-label">已上架产品数</div>
347 <div class="item-num">{{ changeNum(item.listedNum) }}</div> 538 <div class="item-num">{{ item.listingNum || '--' }}</div>
348 </div> 539 </div>
349 <div class="count-item"> 540 <div class="count-item">
350 <div class="item-label">审批中产品数</div> 541 <div class="item-label">审批中产品数</div>
351 <div class="item-num">{{ changeNum(item.processNum) }}</div> 542 <div class="item-num">{{ item.underReviewNum || '--' }}</div>
352 </div> 543 </div>
353 </div> 544 </div>
354 </div> 545 </div>
355 </div> 546 </div>
356 <div class="operator-btn"> 547 <div class="operator-btn">
357 <div class="left-btn borderRight" @click="btnClick(item)">更新模板</div> 548 <!-- <div class="left-btn borderRight" @click="btnClick(item)">更新模板</div> -->
358 <div class="left-btn" @click="btnClick(item)">资产登记</div> 549 <div class="left-btn" @click="btnClick(item)">资产登记</div>
359 </div> 550 </div>
360 </div> 551 </div>
...@@ -363,6 +554,17 @@ const btnClick = (btn) => { ...@@ -363,6 +554,17 @@ const btnClick = (btn) => {
363 <Table :tableInfo="tableInfo" @tableBtnClick="tableBtnClick" @tablePageChange="tablePageChange" 554 <Table :tableInfo="tableInfo" @tableBtnClick="tableBtnClick" @tablePageChange="tablePageChange"
364 @tableSwitchBeforeChange="tableSwitchBeforeChange" /> 555 @tableSwitchBeforeChange="tableSwitchBeforeChange" />
365 </div> 556 </div>
557 <el-dialog v-model="dialogVisible" :title="dialogTitle" width="40%">
558 <el-input type="textarea" :rows="3" maxlength="100" v-model="approveSuggest" resize="none">
559 </el-input>
560 <template #footer>
561 <div class="dialog-footer">
562 <el-button @click="dialogVisible = false">取消</el-button>
563 <el-button v-if="approveType == 'pass'" type="primary" @click="passSubmit">通过</el-button>
564 <el-button v-if="approveType == 'reject'" type="primary" @click="rejectSubmit">驳回</el-button>
565 </div>
566 </template>
567 </el-dialog>
366 </div> 568 </div>
367 </template> 569 </template>
368 570
...@@ -385,15 +587,16 @@ const btnClick = (btn) => { ...@@ -385,15 +587,16 @@ const btnClick = (btn) => {
385 587
386 .list-content { 588 .list-content {
387 display: flex; 589 display: flex;
388 justify-content: space-between; 590 justify-content: flex-start;
389 flex-wrap: wrap; 591 flex-wrap: wrap;
390 margin-bottom: 8px; 592 margin-bottom: 8px;
391 padding: 0 8px; 593 padding: 0 8px;
392 594
393 .card-content { 595 .card-content {
394 width: calc(33.33% - 10px); 596 width: 300px;
395 padding: 16px; 597 padding: 16px;
396 box-shadow: 0 0 0 1px #d9d9d9; 598 box-shadow: 0 0 0 1px #d9d9d9;
599 margin-right: 12px;
397 600
398 .header { 601 .header {
399 display: flex; 602 display: flex;
...@@ -433,32 +636,37 @@ const btnClick = (btn) => { ...@@ -433,32 +636,37 @@ const btnClick = (btn) => {
433 636
434 .operator-btn { 637 .operator-btn {
435 display: flex; 638 display: flex;
436 justify-content: space-between; 639 // justify-content: space-between;
640 justify-content: center;
437 align-items: center; 641 align-items: center;
438 box-shadow: 0 0 0 1px #d9d9d9; 642 box-shadow: 0 0 0 1px #d9d9d9;
439 position: relative; 643 position: relative;
440 644 width: 100%;
441 &::after { 645 height: 40px;
442 content: ''; 646 line-height: 40px;
443 width: 0; 647 cursor: pointer;
444 height: 100%; 648 // &::after {
445 border-left: 1px solid #d9d9d9; 649 // content: '';
446 position: absolute; 650 // width: 0;
447 left: 50%; 651 // height: 100%;
448 transform: translateX(-50%); 652 // border-left: 1px solid #d9d9d9;
653 // position: absolute;
654 // left: 50%;
655 // transform: translateX(-50%);
656 // }
657
658 // >.left-btn {
659 // width: 50%;
660 // height: 40px;
661 // line-height: 40px;
662 // text-align: center;
663 // cursor: pointer;
664
665 &:hover {
666 color: #4fa1a4;
449 } 667 }
450 668
451 >.left-btn { 669 // }
452 width: 50%;
453 height: 40px;
454 line-height: 40px;
455 text-align: center;
456 cursor: pointer;
457
458 &:hover {
459 color: #4fa1a4;
460 }
461 }
462 } 670 }
463 } 671 }
464 } 672 }
......
...@@ -13,9 +13,9 @@ import useUserStore from "@/store/modules/user"; ...@@ -13,9 +13,9 @@ import useUserStore from "@/store/modules/user";
13 import useDataAssetStore from "@/store/modules/dataAsset"; 13 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 } 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, registerApproveAllow, registerApproveBackup, getParamsList, getServiceDetail } from "@/api/modules/dataAsset";
18 import { getProductList, getAddedProductList, getListingDetail, listingSave, listingUpdate, listingSavePortal, getParamsDataList } from "@/api/modules/dataProduct"; 18 import { getProductList, getAddedProductList, getListingDetail, listingSave, listingUpdate, listingSavePortal, getParamsDataList, listingUpdateGateway, getDataExchangeProductList } from "@/api/modules/dataProduct";
19 import { getMatchDetail } from "@/api/modules/dataFinance"; 19 import { getMatchDetail } from "@/api/modules/dataFinance";
20 import { useValidator } from '@/hooks/useValidator'; 20 import { useValidator } from '@/hooks/useValidator';
21 import { getCamundaDeploymentId } from "@/api/modules/workFlowService"; 21 import { getCamundaDeploymentId } from "@/api/modules/workFlowService";
...@@ -95,7 +95,7 @@ const getArea = (node, resolve) => { ...@@ -95,7 +95,7 @@ const getArea = (node, resolve) => {
95 }) 95 })
96 } 96 }
97 } 97 }
98 98 const processInstanceId = ref('');
99 const collapseIcon = ref(false); 99 const collapseIcon = ref(false);
100 const collapseIcon1 = ref(false); 100 const collapseIcon1 = ref(false);
101 const collapseIcon2 = ref(false); 101 const collapseIcon2 = ref(false);
...@@ -133,6 +133,10 @@ const approveTableInfo: any = ref({ ...@@ -133,6 +133,10 @@ const approveTableInfo: any = ref({
133 } 133 }
134 }); 134 });
135 135
136 const exchangeName = computed(() => {
137 return route.query.exchangeName;
138 })
139
136 const listingFormRef = ref(); 140 const listingFormRef = ref();
137 const subForm = ref({}); 141 const subForm = ref({});
138 const formInfo = ref({ 142 const formInfo = ref({
...@@ -182,7 +186,7 @@ const formInfo = ref({ ...@@ -182,7 +186,7 @@ const formInfo = ref({
182 label: "数据时间范围", 186 label: "数据时间范围",
183 type: "date-picker", 187 type: "date-picker",
184 field: "dateRange", 188 field: "dateRange",
185 default: null, 189 default: '',
186 placeholder: "开始时间~结束时间", 190 placeholder: "开始时间~结束时间",
187 clearable: true, 191 clearable: true,
188 required: true, 192 required: true,
...@@ -346,7 +350,7 @@ const formInfo = ref({ ...@@ -346,7 +350,7 @@ const formInfo = ref({
346 // required: true, 350 // required: true,
347 // col: 'checkbox-input' 351 // col: 'checkbox-input'
348 // }, 352 // },
349 // { 353 // {
350 // label: '审核后自动上架', 354 // label: '审核后自动上架',
351 // type: 'switch-checkbox-group', 355 // type: 'switch-checkbox-group',
352 // field: 'autoGrounding', 356 // field: 'autoGrounding',
...@@ -365,22 +369,13 @@ const formInfo = ref({ ...@@ -365,22 +369,13 @@ const formInfo = ref({
365 // required: true, 369 // required: true,
366 // }, 370 // },
367 { 371 {
368 label: "上架交易所", 372 label: "登记数交所",
369 type: "select", 373 type: "input",
370 placeholder: "请选择", 374 placeholder: "请输入",
371 field: "exchangeGuids", 375 field: "exchangeName",
372 default: [], 376 default: exchangeName,
373 options: exchangeList.value,
374 props: {
375 value: "guid",
376 label: "tenantName",
377 },
378 filterable: true,
379 clearable: true, 377 clearable: true,
380 multiple: true, 378 disabled: true,
381 tagsTooltip: true,
382 collapse: true,
383 disabled: false,
384 required: true, 379 required: true,
385 visible: true 380 visible: true
386 }, 381 },
...@@ -416,8 +411,12 @@ const formInfo = ref({ ...@@ -416,8 +411,12 @@ const formInfo = ref({
416 field: 'productImg', 411 field: 'productImg',
417 default: [], 412 default: [],
418 limit: 1, 413 limit: 1,
419 block: false, 414 block: true,
420 required: false, 415 required: false,
416 // col: 'mr8',
417 // style: {
418 // width: 'calc(33.33% - 20px)!important'
419 // },
421 }, 420 },
422 { 421 {
423 label: '登记证', 422 label: '登记证',
...@@ -425,7 +424,7 @@ const formInfo = ref({ ...@@ -425,7 +424,7 @@ const formInfo = ref({
425 accept: '.jpg, .png, .jpeg ', 424 accept: '.jpg, .png, .jpeg ',
426 type: 'upload-file', 425 type: 'upload-file',
427 placeholder: '请选择', 426 placeholder: '请选择',
428 field: 'registerImg', 427 field: 'registrationCertificate',
429 default: [], 428 default: [],
430 limit: 1, 429 limit: 1,
431 block: false, 430 block: false,
...@@ -438,7 +437,7 @@ const formInfo = ref({ ...@@ -438,7 +437,7 @@ const formInfo = ref({
438 accept: '.png, .pdf', 437 accept: '.png, .pdf',
439 type: 'upload-file', 438 type: 'upload-file',
440 placeholder: '请选择', 439 placeholder: '请选择',
441 field: 'qualityReport', 440 field: 'qualityEvaluationFile',
442 default: [], 441 default: [],
443 limit: 1, 442 limit: 1,
444 block: false, 443 block: false,
...@@ -449,18 +448,23 @@ const formInfo = ref({ ...@@ -449,18 +448,23 @@ const formInfo = ref({
449 label: "质量评估机构", 448 label: "质量评估机构",
450 type: "select", 449 type: "select",
451 placeholder: "请选择", 450 placeholder: "请选择",
452 field: "qualityOrg", 451 field: "qualityEvaluationInstitutionGuid",
453 default: '', 452 default: '',
454 options: [], 453 options: [],
455 props: { 454 props: {
456 value: 'value', 455 value: 'value',
457 label: 'label' 456 label: 'label'
458 }, 457 },
458 allowCreate: true,
459 filterable: true, 459 filterable: true,
460 clearable: true, 460 clearable: true,
461 disabled: false, 461 disabled: false,
462 required: true, 462 required: false,
463 visible: true 463 visible: true,
464 col: 'mr8',
465 style: {
466 width: 'calc(33.33% - 20px)!important'
467 },
464 }, 468 },
465 { 469 {
466 label: '价值评估报告', 470 label: '价值评估报告',
...@@ -468,7 +472,7 @@ const formInfo = ref({ ...@@ -468,7 +472,7 @@ const formInfo = ref({
468 accept: '.png, .pdf', 472 accept: '.png, .pdf',
469 type: 'upload-file', 473 type: 'upload-file',
470 placeholder: '请选择', 474 placeholder: '请选择',
471 field: 'valueReport', 475 field: 'costAssessmentFile',
472 default: [], 476 default: [],
473 limit: 1, 477 limit: 1,
474 block: false, 478 block: false,
...@@ -479,17 +483,18 @@ const formInfo = ref({ ...@@ -479,17 +483,18 @@ const formInfo = ref({
479 label: "价值评估机构", 483 label: "价值评估机构",
480 type: "select", 484 type: "select",
481 placeholder: "请选择", 485 placeholder: "请选择",
482 field: "valueOrg", 486 field: "costAssessmentInstitutionGuid",
483 default: '', 487 default: '',
484 options: [], 488 options: [],
485 props: { 489 props: {
486 value: 'value', 490 value: 'guid',
487 label: 'label' 491 label: 'tenantName'
488 }, 492 },
493 allowCreate: true,
489 filterable: true, 494 filterable: true,
490 clearable: true, 495 clearable: true,
491 disabled: false, 496 disabled: false,
492 required: true, 497 required: false,
493 visible: true 498 visible: true
494 }, 499 },
495 { 500 {
...@@ -498,7 +503,7 @@ const formInfo = ref({ ...@@ -498,7 +503,7 @@ const formInfo = ref({
498 accept: '.png, .pdf', 503 accept: '.png, .pdf',
499 type: 'upload-file', 504 type: 'upload-file',
500 placeholder: '请选择', 505 placeholder: '请选择',
501 field: 'commitment', 506 field: 'commitmentLetter',
502 templateUrl: 'http://www.baidu.com', 507 templateUrl: 'http://www.baidu.com',
503 default: [], 508 default: [],
504 limit: 1, 509 limit: 1,
...@@ -512,7 +517,7 @@ const formInfo = ref({ ...@@ -512,7 +517,7 @@ const formInfo = ref({
512 accept: '.png, .pdf', 517 accept: '.png, .pdf',
513 type: 'upload-file', 518 type: 'upload-file',
514 placeholder: '请选择', 519 placeholder: '请选择',
515 field: 'authorization', 520 field: 'accreditFile',
516 templateUrl: 'http://www.baidu.com', 521 templateUrl: 'http://www.baidu.com',
517 default: [], 522 default: [],
518 limit: 1, 523 limit: 1,
...@@ -681,6 +686,15 @@ const getProducts = () => { ...@@ -681,6 +686,15 @@ const getProducts = () => {
681 }) 686 })
682 } 687 }
683 688
689 const getTableInfo = () => {
690 getDataExchangeProductList({}).then((res: any) => {
691 if (res.code == proxy.$passCode) {
692 let data = res.data || [];
693 formInfo.value.items[0].options = data;
694 }
695 })
696 }
697
684 const getProductDetail = () => { 698 const getProductDetail = () => {
685 flowDetailLoading.value = true; 699 flowDetailLoading.value = true;
686 getListingDetail({ guid }).then((res: any) => { 700 getListingDetail({ guid }).then((res: any) => {
...@@ -688,6 +702,9 @@ const getProductDetail = () => { ...@@ -688,6 +702,9 @@ const getProductDetail = () => {
688 if (res.code == proxy.$passCode) { 702 if (res.code == proxy.$passCode) {
689 const data = res.data || {} 703 const data = res.data || {}
690 flowDetail.value = data; 704 flowDetail.value = data;
705 deploymentId.value = data.approveVO.camundaDeploymentId
706 processInstanceId.value = data.approveVO.camundaInstanceId
707 console.log(data, '-----------------');
691 let coverageArea = data.coverageArea || []; 708 let coverageArea = data.coverageArea || [];
692 if (data.coverageArea?.[0]?.[0] == 'all') { 709 if (data.coverageArea?.[0]?.[0] == 'all') {
693 setFormItems({ ...flowDetail.value, coverageArea: coverageArea }, true); 710 setFormItems({ ...flowDetail.value, coverageArea: coverageArea }, true);
...@@ -795,68 +812,112 @@ const submitForm = (btn, formEl, tosub = false) => { ...@@ -795,68 +812,112 @@ const submitForm = (btn, formEl, tosub = false) => {
795 params.caseNumber = formInfo.value.items.at(5).defaultValue || formInfo.value.items.at(4).default; 812 params.caseNumber = formInfo.value.items.at(5).defaultValue || formInfo.value.items.at(4).default;
796 params.timeAreaStart = params.dateRange ? params.dateRange[0] : ''; 813 params.timeAreaStart = params.dateRange ? params.dateRange[0] : '';
797 params.timeAreaEnd = params.dateRange ? params.dateRange[1] : ''; 814 params.timeAreaEnd = params.dateRange ? params.dateRange[1] : '';
798 params.groundingPick = [route.query.groundingPick];
799 // 删除dateRange字段 815 // 删除dateRange字段
800 delete params.dateRange; 816 delete params.dateRange;
801 flowDetailLoading.value = true; 817 flowDetailLoading.value = true;
802 if (detailType == 'add') { 818 if (!route.query.exchangeGuid) {
803 listingSavePortal(params).then((res: any) => { 819 if (detailType == 'add') {
804 if (res.code == proxy.$passCode) { 820 params.immediateApprove = btn.value == 'submit' ? true : false;
805 ElMessage({ 821 listingSavePortal(params).then((res: any) => {
806 type: "success", 822 if (res.code == proxy.$passCode) {
807 message: '提交成功', 823 ElMessage({
808 }); 824 type: "success",
809 flowDetailLoading.value = false; 825 message: '提交成功',
810 userStore.setTabbar(userStore.tabbar.filter((tab: any) => tab.fullPath !== fullPath)); 826 });
811 assetStore.set(true); 827 flowDetailLoading.value = false;
812 router.push({ 828 userStore.setTabbar(userStore.tabbar.filter((tab: any) => tab.fullPath !== fullPath));
813 name: "productListing", 829 assetStore.set(true);
814 query: {}, 830 router.push({
815 }); 831 name: "productListing",
816 } else { 832 query: {},
833 });
834 } else {
835 ElMessage({
836 type: "error",
837 message: res.msg,
838 });
839 flowDetailLoading.value = false;
840 }
841 }).catch((res) => {
817 ElMessage({ 842 ElMessage({
818 type: "error", 843 type: "error",
819 message: res.msg, 844 message: '提交失败',
820 }); 845 });
821 flowDetailLoading.value = false; 846 flowDetailLoading.value = false;
822 }
823 }).catch((res) => {
824 ElMessage({
825 type: "error",
826 message: '提交失败',
827 }); 847 });
828 flowDetailLoading.value = false; 848 } else {
829 }); 849 params.guid = guid;
830 } else { 850 params.immediateApprove = btn.value == 'submit' ? true : false;
831 params.guid = guid; 851 listingUpdateGateway(params).then((res: any) => {
832 listingUpdate(params).then((res: any) => { 852 if (res.code == proxy.$passCode) {
833 if (res.code == proxy.$passCode) { 853 ElMessage({
834 ElMessage({ 854 type: "success",
835 type: "success", 855 message: '提交成功',
836 message: '提交成功', 856 });
837 }); 857 flowDetailLoading.value = false;
838 flowDetailLoading.value = false; 858 userStore.setTabbar(userStore.tabbar.filter((tab: any) => tab.fullPath !== fullPath));
839 userStore.setTabbar(userStore.tabbar.filter((tab: any) => tab.fullPath !== fullPath)); 859 assetStore.set(true);
840 assetStore.set(true); 860 router.push({
841 router.push({ 861 name: "productListing",
842 name: "productListing", 862 query: {},
843 query: {}, 863 });
844 }); 864 } else {
845 } else { 865 ElMessage({
866 type: "error",
867 message: res.msg,
868 });
869 flowDetailLoading.value = false;
870 }
871 }).catch((res) => {
846 ElMessage({ 872 ElMessage({
847 type: "error", 873 type: "error",
848 message: res.msg, 874 message: '提交失败',
849 }); 875 });
850 flowDetailLoading.value = false; 876 flowDetailLoading.value = false;
851 }
852 }).catch((res) => {
853 ElMessage({
854 type: "error",
855 message: '提交失败',
856 }); 877 });
857 flowDetailLoading.value = false; 878 }
858 }); 879 } else {
880 if (detailType == 'add') {
881 // 上架交易所
882 params.immediateApprove = btn.value == 'submit' ? true : false;
883 params.accreditFile = params.accreditFile.length ? { name: params.accreditFile[0].name, url: params.accreditFile[0].url } : {};
884 params.commitmentLetter = params.commitmentLetter.length ? { name: params.commitmentLetter[0].name, url: params.commitmentLetter[0].url } : {};
885 params.costAssessmentFile = params.costAssessmentFile.length ? { name: params.costAssessmentFile[0].name, url: params.costAssessmentFile[0].url } : {};
886 params.productDetail = params.productDetail.length ? { name: params.productDetail[0].name, url: params.productDetail[0].url } : {};
887 params.qualityEvaluationFile = params.qualityEvaluationFile.length ? { name: params.qualityEvaluationFile[0].name, url: params.qualityEvaluationFile[0].url } : {};
888 params.registrationCertificate = params.registrationCertificate.length ? { name: params.registrationCertificate[0].name, url: params.registrationCertificate[0].url } : {};
889 params.exchangeGuid = route.query.exchangeGuid;
890 console.log(params, '-----------------');
891 // listingSave(params).then((res: any) => {
892 // if (res.code == proxy.$passCode) {
893 // ElMessage({
894 // type: "success",
895 // message: '提交成功',
896 // });
897 // flowDetailLoading.value = false;
898 // userStore.setTabbar(userStore.tabbar.filter((tab: any) => tab.fullPath !== fullPath));
899 // assetStore.set(true);
900 // router.push({
901 // name: "productListing",
902 // query: {},
903 // });
904 // } else {
905 // ElMessage({
906 // type: "error",
907 // message: res.msg,
908 // });
909 // flowDetailLoading.value = false;
910 // }
911 // }).catch((res) => {
912 // ElMessage({
913 // type: "error",
914 // message: '提交失败',
915 // });
916 // flowDetailLoading.value = false;
917 // });
918 }
859 } 919 }
920
860 } else { 921 } else {
861 nextTick(() => { 922 nextTick(() => {
862 const isError = document.getElementsByClassName('is-error'); 923 const isError = document.getElementsByClassName('is-error');
...@@ -872,7 +933,7 @@ const submitForm = (btn, formEl, tosub = false) => { ...@@ -872,7 +933,7 @@ const submitForm = (btn, formEl, tosub = false) => {
872 }; 933 };
873 934
874 const btnClick = (btn) => { 935 const btnClick = (btn) => {
875 if (btn.value == 'submit') { 936 if (btn.value == 'submit' || btn.value == 'draft') {
876 const checkForm = listingFormRef.value; 937 const checkForm = listingFormRef.value;
877 const formEl = checkForm.ruleFormRef; 938 const formEl = checkForm.ruleFormRef;
878 const form = checkForm.formInline; 939 const form = checkForm.formInline;
...@@ -884,7 +945,7 @@ const btnClick = (btn) => { ...@@ -884,7 +945,7 @@ const btnClick = (btn) => {
884 dialogInfo.value.contents = contents.value[btn.value] 945 dialogInfo.value.contents = contents.value[btn.value]
885 dialogInfo.value.visible = true 946 dialogInfo.value.visible = true
886 } else { 947 } else {
887 if (detailType == 'add' || detailType == 'edit') { 948 if (detailType == 'add' || detailType == 'edit' || detailType == 'redit') {
888 ElMessageBox.confirm( 949 ElMessageBox.confirm(
889 "当前页面尚未保存,确定放弃修改吗?", 950 "当前页面尚未保存,确定放弃修改吗?",
890 "提示", 951 "提示",
...@@ -895,7 +956,7 @@ const btnClick = (btn) => { ...@@ -895,7 +956,7 @@ const btnClick = (btn) => {
895 } 956 }
896 ).then(() => { 957 ).then(() => {
897 userStore.setTabbar(userStore.tabbar.filter((tab: any) => tab.fullPath !== fullPath)); 958 userStore.setTabbar(userStore.tabbar.filter((tab: any) => tab.fullPath !== fullPath));
898 assetStore.set(true); 959 // assetStore.set(true);
899 router.push({ 960 router.push({
900 name: "productListing", 961 name: "productListing",
901 query: {}, 962 query: {},
...@@ -917,6 +978,7 @@ const btnClick = (btn) => { ...@@ -917,6 +978,7 @@ const btnClick = (btn) => {
917 } 978 }
918 979
919 const setFormItems = (row: any = null, isDetail = false) => { 980 const setFormItems = (row: any = null, isDetail = false) => {
981 console.log(row, '--------1---------');
920 formInfo.value.items.map((item: any) => { 982 formInfo.value.items.map((item: any) => {
921 if (item.field == 'productImg') { 983 if (item.field == 'productImg') {
922 item.default = row ? (row.productPic ? [row.productPic] : row[item.field] || []) : [] 984 item.default = row ? (row.productPic ? [row.productPic] : row[item.field] || []) : []
...@@ -966,16 +1028,25 @@ const setFormItems = (row: any = null, isDetail = false) => { ...@@ -966,16 +1028,25 @@ const setFormItems = (row: any = null, isDetail = false) => {
966 } else { 1028 } else {
967 item.default = row ? row[item.field] : (item.default || '') 1029 item.default = row ? row[item.field] : (item.default || '')
968 } 1030 }
969 } else {
970 item.default = row ? row[item.field] : (item.default || '')
971 } 1031 }
1032 else if (item.field == 'dateRange') {
1033 item.default = row ? [row.timeAreaStart, row.timeAreaEnd] : null;
1034 }
1035 // else {
1036 // if (item && item.hasOwnProperty('default')) {
1037 // item.default = row ? row[item.field] : (item.default || '');
1038 // } else {
1039 // console.warn(`Item does not have the 'default' property`);
1040 // }
1041 // }
972 }) 1042 })
973 } 1043 }
974 1044
975 const selectChange = async (val, row, info) => { 1045 const selectChange = async (val, row, info) => {
976 if (row.field == 'damName') { 1046 if (row.field == 'damName') {
977 const data = row.options.filter(o => o.damName == val); 1047 const data = row.options.filter(o => o.damName == val);
978 let coverageArea = data.length ? (data[0].coverageArea || []) : []; 1048 console.log(data, '-----------------');
1049 let coverageArea = (data.length && data[0].coverageArea) ? data[0].coverageArea : [];
979 await setFormItems({ ...info, coverageArea: coverageArea }); 1050 await setFormItems({ ...info, coverageArea: coverageArea });
980 formInfo.value.items.at(0).default = val; 1051 formInfo.value.items.at(0).default = val;
981 formInfo.value.items.at(1).default = data.length ? data[0].damType : ''; 1052 formInfo.value.items.at(1).default = data.length ? data[0].damType : '';
...@@ -988,7 +1059,7 @@ const selectChange = async (val, row, info) => { ...@@ -988,7 +1059,7 @@ const selectChange = async (val, row, info) => {
988 formInfo.value.items.at(-1).default = data.length ? data[0].damGuid : ''; 1059 formInfo.value.items.at(-1).default = data.length ? data[0].damGuid : '';
989 formInfo.value.items.at(-3).required = data[0].damType != '1' && data[0].damType != '2'; 1060 formInfo.value.items.at(-3).required = data[0].damType != '1' && data[0].damType != '2';
990 formInfo.value.items.at(-4).required = data[0].damType != '1' && data[0].damType != '2'; 1061 formInfo.value.items.at(-4).required = data[0].damType != '1' && data[0].damType != '2';
991 if (data.length && data[0].coverageArea?.[0]?.[0] != 'all') { 1062 if (data.length && data[0].coverageArea?.[0]?.[0] != 'all' && data[0].coverageArea) {
992 let p: any = []; 1063 let p: any = [];
993 data[0].coverageArea.forEach(area => { 1064 data[0].coverageArea.forEach(area => {
994 if (p.includes(area[0])) { 1065 if (p.includes(area[0])) {
...@@ -1118,16 +1189,19 @@ onActivated(() => { ...@@ -1118,16 +1189,19 @@ onActivated(() => {
1118 break; 1189 break;
1119 } 1190 }
1120 }; 1191 };
1121 if (detailType == 'add' || detailType == 'edit') { 1192 // if ((detailType == 'add' || detailType == 'edit') && !route.query.exchangeGuids) {
1122 getProducts(); 1193 // getProducts();
1123 }; 1194 // };
1124 }) 1195 })
1125 1196
1126 const deploymentId = ref(''); 1197 const deploymentId = ref('');
1198 const qualityEvaluationData = ref<any>('');
1199 const costAssessmentData = ref<any>('');
1127 onBeforeMount(() => { 1200 onBeforeMount(() => {
1128 if (route.query.type == 'add' && !route.query.type1) { 1201 // case 1: 数交易所 case 2: 门户
1202 if (route.query.case == '2') {
1129 formInfo.value.items.forEach(item => { 1203 formInfo.value.items.forEach(item => {
1130 if (item.field == 'damCode' || item.field == 'exchangeGuids' || item.field == 'registerImg' || item.field == 'qualityReport' || item.field == 'qualityOrg' || item.field == 'valueReport' || item.field == 'valueOrg' || item.field == 'commitment' || item.field == 'authorization' || item.field == 'productDetail') { 1204 if (item.field == 'damCode' || item.field == 'exchangeGuids' || item.field == 'registrationCertificate' || item.field == 'qualityEvaluationFile' || item.field == 'qualityEvaluationInstitutionGuid' || item.field == 'costAssessmentFile' || item.field == 'costAssessmentInstitutionGuid' || item.field == 'commitmentLetter' || item.field == 'accreditFile' || item.field == 'productDetail') {
1131 item.visible = false; 1205 item.visible = false;
1132 } 1206 }
1133 }) 1207 })
...@@ -1141,11 +1215,11 @@ onBeforeMount(() => { ...@@ -1141,11 +1215,11 @@ onBeforeMount(() => {
1141 }) 1215 })
1142 if (detailType && detailType != 'add') { 1216 if (detailType && detailType != 'add') {
1143 getProductDetail(); 1217 getProductDetail();
1144 if (detailType == 'detail' && dGuid !== undefined) { 1218 // if (detailType == 'detail' && dGuid !== undefined) {
1145 getApplyDeatil(); 1219 // getApplyDeatil();
1146 } 1220 // }
1147 } 1221 }
1148 getApproveData(); 1222 // getApproveData();
1149 getParamsDataList({ dictType: '资产类型' }).then((res: any) => { 1223 getParamsDataList({ dictType: '资产类型' }).then((res: any) => {
1150 if (res.code == proxy.$passCode) { 1224 if (res.code == proxy.$passCode) {
1151 damTypes.value = res.data || []; 1225 damTypes.value = res.data || [];
...@@ -1213,6 +1287,31 @@ onBeforeMount(() => { ...@@ -1213,6 +1287,31 @@ onBeforeMount(() => {
1213 ElMessage.error(res.msg); 1287 ElMessage.error(res.msg);
1214 } 1288 }
1215 }) 1289 })
1290 // 获取质量评估机构
1291 getSingleList({ pageIndex: -1, pageSize: -1, tenantType: "12505" }).then((res: any) => {
1292 if (res.code == proxy.$passCode) {
1293 qualityEvaluationData.value = res.data.records || [];
1294 let item = formInfo.value.items.find(item => item.field == 'qualityEvaluationInstitutionGuid');
1295 item && (item.options = qualityEvaluationData.value);
1296 } else {
1297 proxy.$ElMessage.error(res.msg);
1298 }
1299 })
1300 // 获取价值评估机构
1301 getSingleList({ pageIndex: -1, pageSize: -1, tenantType: "12504" }).then((res: any) => {
1302 if (res.code == proxy.$passCode) {
1303 costAssessmentData.value = res.data.records || [];
1304 let item = formInfo.value.items.find(item => item.field == 'costAssessmentInstitutionGuid');
1305 item && (item.options = costAssessmentData.value);
1306 } else {
1307 proxy.$ElMessage.error(res.msg);
1308 }
1309 })
1310 if (route.query.exchangeGuid) {
1311 getTableInfo();
1312 } else {
1313 getProducts();
1314 }
1216 }) 1315 })
1217 1316
1218 </script> 1317 </script>
...@@ -1275,7 +1374,7 @@ onBeforeMount(() => { ...@@ -1275,7 +1374,7 @@ onBeforeMount(() => {
1275 </div> 1374 </div>
1276 </div> 1375 </div>
1277 <div class="panel_body" :class="{ collapse: collapseIcon }"> 1376 <div class="panel_body" :class="{ collapse: collapseIcon }">
1278 <div class="list_panel" v-if="detailType == 'add' || detailType == 'edit'"> 1377 <div class="list_panel" v-if="detailType == 'add' || detailType == 'edit' || detailType == 'redit'">
1279 <Form ref="listingFormRef" :itemList="formInfo.items" :formId="formInfo.id" :rules="formInfo.rules" 1378 <Form ref="listingFormRef" :itemList="formInfo.items" :formId="formInfo.id" :rules="formInfo.rules"
1280 :col="formInfo.col" @selectChange="selectChange" @checkboxChange="checkboxChange" 1379 :col="formInfo.col" @selectChange="selectChange" @checkboxChange="checkboxChange"
1281 @switchChange="switchChange" /> 1380 @switchChange="switchChange" />
...@@ -1286,18 +1385,35 @@ onBeforeMount(() => { ...@@ -1286,18 +1385,35 @@ onBeforeMount(() => {
1286 <span class="item_value">{{ flowDetail.damName || '--' }}</span> 1385 <span class="item_value">{{ flowDetail.damName || '--' }}</span>
1287 </div> 1386 </div>
1288 <div class="list_item"> 1387 <div class="list_item">
1289 <span class="item_label">产品类型:</span> 1388 <span class="item_label">资产类型:</span>
1290 <span class="item_value">{{ flowDetail.damTypeName || '--' }}</span> 1389 <span class="item_value">{{ flowDetail.damTypeName || '--' }}</span>
1291 </div> 1390 </div>
1292 <div class="list_item"> 1391 <div class="list_item">
1293 <span class="item_label">所属主题:</span>
1294 <span class="item_value">{{ flowDetail.subjectDomainName || '--' }}</span>
1295 </div>
1296 <div class="list_item">
1297 <span class="item_label">证书编号:</span> 1392 <span class="item_label">证书编号:</span>
1298 <span class="item_value">{{ flowDetail.damCode || '--' }}</span> 1393 <span class="item_value">{{ flowDetail.damCode || '--' }}</span>
1299 </div> 1394 </div>
1300 <div class="list_item"> 1395 <div class="list_item">
1396 <span class="item_label">数据时间范围:</span>
1397 <span class="item_value">{{ (flowDetail.timeAreaStart - flowDetail.timeAreaEnd) || '--' }}</span>
1398 </div>
1399 <div class="list_item">
1400 <span class="item_label">交付方式:</span>
1401 <span class="item_value">{{ flowDetail.deliveryWayName || '--' }}</span>
1402 </div>
1403 <div class="list_item">
1404 <span class="item_label">定价方式:</span>
1405 <span class="item_value">{{ flowDetail.pricingWayName || '--' }}</span>
1406 </div>
1407 <div class="list_item">
1408 <span class="item_label">定价金额:</span>
1409 <span class="item_value">{{ flowDetail.subjectDomainName || '--' }}</span>
1410 </div>
1411 <!-- <div class="list_item">
1412 <span class="item_label">所属主题:</span>
1413 <span class="item_value">{{ flowDetail.subjectDomainName || '--' }}</span>
1414 </div> -->
1415
1416 <div class="list_item">
1301 <span class="item_label">数据规模(条):</span> 1417 <span class="item_label">数据规模(条):</span>
1302 <span class="item_value">{{ flowDetail.dataScale != null ? changeNum(flowDetail.dataScale, 0) : '--' 1418 <span class="item_value">{{ flowDetail.dataScale != null ? changeNum(flowDetail.dataScale, 0) : '--'
1303 }}</span> 1419 }}</span>
...@@ -1307,25 +1423,25 @@ onBeforeMount(() => { ...@@ -1307,25 +1423,25 @@ onBeforeMount(() => {
1307 <span class="item_value">{{ flowDetail.caseNumber != null ? changeNum(flowDetail.caseNumber, 0) : '--' 1423 <span class="item_value">{{ flowDetail.caseNumber != null ? changeNum(flowDetail.caseNumber, 0) : '--'
1308 }}</span> 1424 }}</span>
1309 </div> 1425 </div>
1310 <div class="list_item"> 1426 <!-- <div class="list_item">
1311 <span class="item_label">交易方式:</span> 1427 <span class="item_label">交易方式:</span>
1312 <span class="item_value">{{ flowDetail.deliveryWayName || '--' }}</span> 1428 <span class="item_value">{{ flowDetail.deliveryWayName || '--' }}</span>
1313 </div> 1429 </div> -->
1314 <div class="list_item"> 1430 <!-- <div class="list_item">
1315 <span class="item_label">产品价格:</span> 1431 <span class="item_label">产品价格:</span>
1316 <span class="item_value">{{ flowDetail.isDiscussPersonally == 'Y' ? '面议' : (flowDetail.productPrice || 1432 <span class="item_value">{{ flowDetail.isDiscussPersonally == 'Y' ? '面议' : (flowDetail.productPrice ||
1317 '--') 1433 '--')
1318 }}</span> 1434 }}</span>
1319 </div> 1435 </div> -->
1320 <div class="list_item"> 1436 <div class="list_item">
1321 <span class="item_label">审核后上架:</span> 1437 <span class="item_label">登记数交所:</span>
1322 <span class="item_value">{{ flowDetail.isApproveGrounding == 'Y' ? `自动上架` : '手动上架' }}</span> 1438 <span class="item_value">{{ flowDetail.isApproveGrounding == 'Y' ? `自动上架` : '手动上架' }}</span>
1323 </div> 1439 </div>
1324 <div class="list_item is_block"> 1440 <!-- <div class="list_item is_block">
1325 <span class="item_label">上架交易所:</span> 1441 <span class="item_label">上架交易所:</span>
1326 <span class="item_value">{{ !flowDetail.exchangeGuids?.length ? '--' : flowDetail.exchangeNames.join(',') 1442 <span class="item_value">{{ !flowDetail.exchangeGuids?.length ? '--' : flowDetail.exchangeNames.join(',')
1327 }}</span> 1443 }}</span>
1328 </div> 1444 </div> -->
1329 <div class="list_item is_block"> 1445 <div class="list_item is_block">
1330 <span class="item_label">数据覆盖地域:</span> 1446 <span class="item_label">数据覆盖地域:</span>
1331 <span class="item_value" 1447 <span class="item_value"
...@@ -1417,7 +1533,7 @@ onBeforeMount(() => { ...@@ -1417,7 +1533,7 @@ onBeforeMount(() => {
1417 <div class="list_panel"> 1533 <div class="list_panel">
1418 <div class="table_panel_wrap"> 1534 <div class="table_panel_wrap">
1419 <!-- <Table :tableInfo="approveTableInfo" /> --> 1535 <!-- <Table :tableInfo="approveTableInfo" /> -->
1420 <ApprovalProcess v-if="deploymentId" :deploymentId="deploymentId" :definitionId="''"> 1536 <ApprovalProcess v-if="deploymentId" :deploymentId="deploymentId" :processInstanceId="processInstanceId">
1421 </ApprovalProcess> 1537 </ApprovalProcess>
1422 </div> 1538 </div>
1423 </div> 1539 </div>
...@@ -1457,10 +1573,12 @@ onBeforeMount(() => { ...@@ -1457,10 +1573,12 @@ onBeforeMount(() => {
1457 </div> 1573 </div>
1458 </div> 1574 </div>
1459 </div> 1575 </div>
1460 <div class="tool_btns" v-if="detailType == 'add' || detailType == 'edit'"> 1576 <div class="tool_btns" v-if="detailType == 'add' || detailType == 'edit' || detailType == 'redit'">
1461 <div class="btns"> 1577 <div class="btns">
1462 <el-button @click="btnClick({ value: 'cancel' })">取消</el-button> 1578 <el-button @click="btnClick({ value: 'cancel' })">返回</el-button>
1463 <el-button type="primary" @click="btnClick({ value: 'submit' })">提交</el-button> 1579 <el-button @click="btnClick({ value: 'draft' })"
1580 v-if="route.query.type == 'add' || route.query.type == 'redit' || route.query.type == 'edit'">保存草稿</el-button>
1581 <el-button type="primary" @click="btnClick({ value: 'submit' })">提交流程</el-button>
1464 </div> 1582 </div>
1465 </div> 1583 </div>
1466 <div class="tool_btns" v-else-if="detailType == 'check'"> 1584 <div class="tool_btns" v-else-if="detailType == 'check'">
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!