数据资产登记专区
Showing
15 changed files
with
2641 additions
and
41 deletions
| ... | @@ -30,7 +30,7 @@ | ... | @@ -30,7 +30,7 @@ |
| 30 | "crypto-js": "^4.2.0", | 30 | "crypto-js": "^4.2.0", |
| 31 | "dayjs": "^1.11.7", | 31 | "dayjs": "^1.11.7", |
| 32 | "echarts": "^5.4.3", | 32 | "echarts": "^5.4.3", |
| 33 | "element-plus": "^2.5.2", | 33 | "element-plus": "^2.9.0", |
| 34 | "eruda": "^3.0.0", | 34 | "eruda": "^3.0.0", |
| 35 | "file-saver": "^2.0.5", | 35 | "file-saver": "^2.0.5", |
| 36 | "hotkeys-js": "^3.10.2", | 36 | "hotkeys-js": "^3.10.2", | ... | ... |
| ... | @@ -51,8 +51,8 @@ dependencies: | ... | @@ -51,8 +51,8 @@ dependencies: |
| 51 | specifier: ^5.4.3 | 51 | specifier: ^5.4.3 |
| 52 | version: 5.5.1 | 52 | version: 5.5.1 |
| 53 | element-plus: | 53 | element-plus: |
| 54 | specifier: ^2.5.2 | 54 | specifier: ^2.9.0 |
| 55 | version: 2.8.8(vue@3.5.13) | 55 | version: 2.9.0(vue@3.5.13) |
| 56 | eruda: | 56 | eruda: |
| 57 | specifier: ^3.0.0 | 57 | specifier: ^3.0.0 |
| 58 | version: 3.4.1 | 58 | version: 3.4.1 |
| ... | @@ -4015,8 +4015,8 @@ packages: | ... | @@ -4015,8 +4015,8 @@ packages: |
| 4015 | resolution: {integrity: sha512-IXEuxU+5ClW2IGEYFC2T7szbyVgehupCWQe5GNh+H065CD6U6IFN0s4KeAMFGNmQolRU4IV7zGBWSYMmZ8uuqQ==} | 4015 | resolution: {integrity: sha512-IXEuxU+5ClW2IGEYFC2T7szbyVgehupCWQe5GNh+H065CD6U6IFN0s4KeAMFGNmQolRU4IV7zGBWSYMmZ8uuqQ==} |
| 4016 | dev: true | 4016 | dev: true |
| 4017 | 4017 | ||
| 4018 | /element-plus@2.8.8(vue@3.5.13): | 4018 | /element-plus@2.9.0(vue@3.5.13): |
| 4019 | resolution: {integrity: sha512-MLAH1x2PGTnOT7Iwqh9ASgfZhvgqQqrdbxuJH0w2fGjzE4ZjryyLQj24HXoQO7Zon66U3lrYxbdLI57M6OX0qw==} | 4019 | resolution: {integrity: sha512-ccOFXKsauo2dtokAr4OX7gZsb7TuAoVxA2zGRZo5o2yyDDBLBaZxOoFQPoxITSLcHbBfQuNDGK5Iag5hnyKkZA==} |
| 4020 | peerDependencies: | 4020 | peerDependencies: |
| 4021 | vue: ^3.2.0 | 4021 | vue: ^3.2.0 |
| 4022 | dependencies: | 4022 | dependencies: | ... | ... |
| ... | @@ -2,14 +2,14 @@ import request from "@/utils/request"; | ... | @@ -2,14 +2,14 @@ import request from "@/utils/request"; |
| 2 | 2 | ||
| 3 | /** 获取登记列表。 */ | 3 | /** 获取登记列表。 */ |
| 4 | export const getRegisterList = (params) => request({ | 4 | export const getRegisterList = (params) => request({ |
| 5 | url: `${import.meta.env.VITE_API_NEW_PORTAL}/register-base/page-list`, | 5 | url: `${import.meta.env.VITE_API_NEW_PORTAL}/dam-register-overview/page-list`, |
| 6 | method: 'post', | 6 | method: 'post', |
| 7 | data: params | 7 | data: params |
| 8 | }) | 8 | }) |
| 9 | 9 | ||
| 10 | /** 获取登记详情 */ | 10 | /** 获取登记详情 */ |
| 11 | export const getRegiaterDetail = (params) => request({ | 11 | export const getRegiaterDetail = (params) => request({ |
| 12 | url: `${import.meta.env.VITE_API_NEW_PORTAL}/register-base/detail`, | 12 | url: `${import.meta.env.VITE_API_NEW_PORTAL}/dam-register-overview/detail`, |
| 13 | method: 'get', | 13 | method: 'get', |
| 14 | params | 14 | params |
| 15 | }) | 15 | }) |
| ... | @@ -30,9 +30,8 @@ export const registerUpdate = (params) => request({ | ... | @@ -30,9 +30,8 @@ export const registerUpdate = (params) => request({ |
| 30 | 30 | ||
| 31 | /** 删除登记信息 */ | 31 | /** 删除登记信息 */ |
| 32 | export const registerDelete = (params) => request({ | 32 | export const registerDelete = (params) => request({ |
| 33 | url: `${import.meta.env.VITE_API_NEW_PORTAL}/register-base/delete`, | 33 | url: `${import.meta.env.VITE_API_NEW_PORTAL}/dam-register-overview/delete?guid=${params}`, |
| 34 | method: 'delete', | 34 | method: 'delete' |
| 35 | data: params | ||
| 36 | }); | 35 | }); |
| 37 | 36 | ||
| 38 | /** 获取当前会员审批流程信息 */ | 37 | /** 获取当前会员审批流程信息 */ |
| ... | @@ -433,7 +432,7 @@ export const updateDissentState = (params) => request({ | ... | @@ -433,7 +432,7 @@ export const updateDissentState = (params) => request({ |
| 433 | 432 | ||
| 434 | // 获取数交所数据 | 433 | // 获取数交所数据 |
| 435 | export const getExchangeList = (params) => request({ | 434 | export const getExchangeList = (params) => request({ |
| 436 | url: `${import.meta.env.VITE_API_NEW_PORTAL}/register-base/register-num`, | 435 | url: `${import.meta.env.VITE_API_NEW_PORTAL}/dam-register-overview/register-num`, |
| 437 | method: 'post', | 436 | method: 'post', |
| 438 | data: params | 437 | data: params |
| 439 | }) | 438 | }) | ... | ... |
src/api/modules/dataAssetZq.ts
0 → 100644
| 1 | import request from "@/utils/request"; | ||
| 2 | |||
| 3 | /** 获取登记详情 */ | ||
| 4 | export const getRegiaterDetail = (params) => request({ | ||
| 5 | url: `${import.meta.env.VITE_API_NEW_PORTAL}/public-data-products-main/detail`, | ||
| 6 | method: 'get', | ||
| 7 | params | ||
| 8 | }) | ||
| 9 | |||
| 10 | /** 提交登记信息。 */ | ||
| 11 | export const registerSave = (params) => request({ | ||
| 12 | url: `${import.meta.env.VITE_API_NEW_PORTAL}/public-data-products-main/save`, | ||
| 13 | method: 'post', | ||
| 14 | data: params | ||
| 15 | }); | ||
| 16 | |||
| 17 | /** 更新登记信息 */ | ||
| 18 | export const registerUpdate = (params) => request({ | ||
| 19 | url: `${import.meta.env.VITE_API_NEW_PORTAL}/public-data-products-main/update`, | ||
| 20 | method: 'post', | ||
| 21 | data: params | ||
| 22 | }); | ||
| 23 | |||
| 24 | /** 删除登记信息 */ | ||
| 25 | export const registerDelete = (params) => request({ | ||
| 26 | url: `${import.meta.env.VITE_API_NEW_PORTAL}/public-data-products-main/delete`, | ||
| 27 | method: 'delete', | ||
| 28 | data: params | ||
| 29 | }); | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| ... | @@ -310,3 +310,10 @@ export const exportTemplate = (params) => request({ | ... | @@ -310,3 +310,10 @@ export const exportTemplate = (params) => request({ |
| 310 | method: 'post', | 310 | method: 'post', |
| 311 | responseType: 'blob' | 311 | responseType: 'blob' |
| 312 | }); | 312 | }); |
| 313 | |||
| 314 | /** 获取字典列表数据 */ | ||
| 315 | export const getParamsList = (params) => request({ | ||
| 316 | url: `${import.meta.env.VITE_APP_CONFIG_URL}/dict/data/get-by-dictType`, | ||
| 317 | method: 'get', | ||
| 318 | params | ||
| 319 | }) | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
| ... | @@ -816,7 +816,9 @@ const panelChange = (scope, row) => { | ... | @@ -816,7 +816,9 @@ const panelChange = (scope, row) => { |
| 816 | </span> | 816 | </span> |
| 817 | <el-select v-if="child.type == 'select'" v-model="formInline[child.field]" | 817 | <el-select v-if="child.type == 'select'" v-model="formInline[child.field]" |
| 818 | :placeholder="child.placeholder" :disabled="child.disabled || readonly" :filterable="child.filterable" | 818 | :placeholder="child.placeholder" :disabled="child.disabled || readonly" :filterable="child.filterable" |
| 819 | :teleported="child.teleported || true"> | 819 | :multiple="child.multiple ?? false" |
| 820 | :collapse-tags="child.collapse ?? false" :collapse-tags-tooltip="child.tagsTooltip ?? false" | ||
| 821 | :max-collapse-tags="child.maxTags ?? 1" :teleported="child.teleported || true"> | ||
| 820 | <el-option v-for="opts in child.options" | 822 | <el-option v-for="opts in child.options" |
| 821 | :label="child.props?.label ? opts[child.props.label] : opts.label" | 823 | :label="child.props?.label ? opts[child.props.label] : opts.label" |
| 822 | :value="child.props?.value ? opts[child.props.value] : opts.value" :disabled="opts.disabled" /> | 824 | :value="child.props?.value ? opts[child.props.value] : opts.value" :disabled="opts.disabled" /> |
| ... | @@ -1520,11 +1522,14 @@ const panelChange = (scope, row) => { | ... | @@ -1520,11 +1522,14 @@ const panelChange = (scope, row) => { |
| 1520 | :disabled="btn.disabled" :style="btn.style ?? {}" @click="btnClick(btn, null)">{{ btn.label }}</el-button> | 1522 | :disabled="btn.disabled" :style="btn.style ?? {}" @click="btnClick(btn, null)">{{ btn.label }}</el-button> |
| 1521 | </template> | 1523 | </template> |
| 1522 | </template> | 1524 | </template> |
| 1525 | <el-input-tag :class="[item.col, { is_block: item.block }]" v-else-if="item.type == 'inputTag'" | ||
| 1526 | v-model.trim="formInline[item.field]" :placeholder="item.placeholder" draggable | ||
| 1527 | :clearable="item.clearable" :maxlength="item.maxlength ?? ''" :disabled="item.disabled" | ||
| 1528 | :readonly="item.autocompleteSetting?.readonly || item.readonly" /> | ||
| 1523 | <el-input :class="[item.col, { is_block: item.block }]" v-else-if="item.type == 'password'" | 1529 | <el-input :class="[item.col, { is_block: item.block }]" v-else-if="item.type == 'password'" |
| 1524 | v-model.trim="formInline[item.field]" type="password" :placeholder="item.placeholder" | 1530 | v-model.trim="formInline[item.field]" type="password" :placeholder="item.placeholder" |
| 1525 | :clearable="item.clearable" :maxlength="item.maxlength ?? ''" show-password :disabled="item.disabled" | 1531 | :clearable="item.clearable" :maxlength="item.maxlength ?? ''" show-password :disabled="item.disabled" |
| 1526 | :autocomplete="item.autocompleteSetting?.autocomplete || item.autocomplete | 1532 | :autocomplete="item.autocompleteSetting?.autocomplete || item.autocomplete" :readonly="item.autocompleteSetting?.readonly || item.readonly" @click="handlerIptClick(item)" /> |
| 1527 | " :readonly="item.autocompleteSetting?.readonly || item.readonly" @click="handlerIptClick(item)" /> | ||
| 1528 | <div class="input_def" v-else> | 1533 | <div class="input_def" v-else> |
| 1529 | <span v-if="item.beforeMsg" style="color: #212121;">{{ item.beforeMsg }}</span> | 1534 | <span v-if="item.beforeMsg" style="color: #212121;">{{ item.beforeMsg }}</span> |
| 1530 | <el-input :class="[item.col, { is_block: item.block }]" v-model.trim="formInline[item.field]" :style="item.width ? { width: item.width } : null" | 1535 | <el-input :class="[item.col, { is_block: item.block }]" v-model.trim="formInline[item.field]" :style="item.width ? { width: item.width } : null" | ... | ... |
| ... | @@ -426,6 +426,9 @@ onMounted(() => { | ... | @@ -426,6 +426,9 @@ onMounted(() => { |
| 426 | " @input="inputKeyUp(editForm[item.field].regexp, scope, editForm[item.field])" | 426 | " @input="inputKeyUp(editForm[item.field].regexp, scope, editForm[item.field])" |
| 427 | @change="(val) => inputChange(val, scope, item)" | 427 | @change="(val) => inputChange(val, scope, item)" |
| 428 | @focus="(event) => inputFocus(event, scope, editForm[item.field])"></el-input> | 428 | @focus="(event) => inputFocus(event, scope, editForm[item.field])"></el-input> |
| 429 | <el-date-picker v-else-if="editForm[item.field] && editForm[item.field].type == 'date'" v-model="scope.row[item.field]" :placeholder="editForm[item.field].placeholder" | ||
| 430 | :clearable="editForm[item.field].clearable" type="date" | ||
| 431 | format="YYYY-MM-DD" value-format="YYYY-MM-DD" /> | ||
| 429 | <template v-else-if="editForm[item.field] && editForm[item.field].type == 'defaultValue'"> | 432 | <template v-else-if="editForm[item.field] && editForm[item.field].type == 'defaultValue'"> |
| 430 | <el-date-picker v-if="scope.row[item.dataTypeName] === 'date'" v-model="scope.row[item.field]" type="date" | 433 | <el-date-picker v-if="scope.row[item.dataTypeName] === 'date'" v-model="scope.row[item.field]" type="date" |
| 431 | format="YYYY-MM-DD" value-format="YYYY-MM-DD" :placeholder="editForm[item.field].placeholder" /> | 434 | format="YYYY-MM-DD" value-format="YYYY-MM-DD" :placeholder="editForm[item.field].placeholder" /> | ... | ... |
| ... | @@ -23,6 +23,23 @@ const routes: RouteRecordRaw[] = [ | ... | @@ -23,6 +23,23 @@ const routes: RouteRecordRaw[] = [ |
| 23 | }, | 23 | }, |
| 24 | }, | 24 | }, |
| 25 | { | 25 | { |
| 26 | path: 'register-start-js', | ||
| 27 | name: 'registerStartJS', | ||
| 28 | component: () => import('@/views/data_asset/registerStartJS.vue'), | ||
| 29 | meta: { | ||
| 30 | title: '新建资产登记', | ||
| 31 | sidebar: false, | ||
| 32 | breadcrumb: false, | ||
| 33 | cache: true, | ||
| 34 | editPage: true, | ||
| 35 | reuse: true | ||
| 36 | }, | ||
| 37 | beforeEnter: (to, from) => { | ||
| 38 | to.meta.title = to.query.type == 'create' ? '新建资产登记' : `编辑-${to.query.name}`; | ||
| 39 | to.meta.editPage = true; | ||
| 40 | } | ||
| 41 | }, | ||
| 42 | { | ||
| 26 | path: 'register-start', | 43 | path: 'register-start', |
| 27 | name: 'registerStart', | 44 | name: 'registerStart', |
| 28 | component: () => import('@/views/data_asset/registerStart.vue'), | 45 | component: () => import('@/views/data_asset/registerStart.vue'), |
| ... | @@ -50,6 +67,18 @@ const routes: RouteRecordRaw[] = [ | ... | @@ -50,6 +67,18 @@ const routes: RouteRecordRaw[] = [ |
| 50 | cache: true, | 67 | cache: true, |
| 51 | reuse: true | 68 | reuse: true |
| 52 | }, | 69 | }, |
| 70 | }, | ||
| 71 | { | ||
| 72 | path: 'register-JQZQ-detail', | ||
| 73 | name: 'registerInfoJSZQDetail', | ||
| 74 | component: () => import('@/views/data_asset/registerJSZQDetail.vue'), | ||
| 75 | meta: { | ||
| 76 | title: '详情-', | ||
| 77 | sidebar: false, | ||
| 78 | breadcrumb: false, | ||
| 79 | cache: true, | ||
| 80 | reuse: true | ||
| 81 | }, | ||
| 53 | } | 82 | } |
| 54 | ], | 83 | ], |
| 55 | }, | 84 | }, |
| ... | @@ -85,6 +114,18 @@ const routes: RouteRecordRaw[] = [ | ... | @@ -85,6 +114,18 @@ const routes: RouteRecordRaw[] = [ |
| 85 | } | 114 | } |
| 86 | }, | 115 | }, |
| 87 | { | 116 | { |
| 117 | path: 'register-JSZQ-detail', | ||
| 118 | name: 'registerJSZQDetail', | ||
| 119 | component: () => import('@/views/data_asset/registerJSZQDetail.vue'), | ||
| 120 | meta: { | ||
| 121 | title: '详情-', | ||
| 122 | sidebar: false, | ||
| 123 | breadcrumb: false, | ||
| 124 | cache: true, | ||
| 125 | reuse: true | ||
| 126 | } | ||
| 127 | }, | ||
| 128 | { | ||
| 88 | path: 'register-catalog-detail', | 129 | path: 'register-catalog-detail', |
| 89 | name: 'evaCatalogDetail', | 130 | name: 'evaCatalogDetail', |
| 90 | component: () => import('@/views/data_asset/registerCatalogDetail.vue'), | 131 | component: () => import('@/views/data_asset/registerCatalogDetail.vue'), |
| ... | @@ -129,6 +170,18 @@ const routes: RouteRecordRaw[] = [ | ... | @@ -129,6 +170,18 @@ const routes: RouteRecordRaw[] = [ |
| 129 | reuse: true | 170 | reuse: true |
| 130 | } | 171 | } |
| 131 | }, | 172 | }, |
| 173 | { | ||
| 174 | path: 'register-value-JSZQ-detail', | ||
| 175 | name: 'registerValueJSZQDetail', | ||
| 176 | component: () => import('@/views/data_asset/registerJSZQDetail.vue'), | ||
| 177 | meta: { | ||
| 178 | title: '详情-', | ||
| 179 | sidebar: false, | ||
| 180 | breadcrumb: false, | ||
| 181 | cache: true, | ||
| 182 | reuse: true | ||
| 183 | } | ||
| 184 | }, | ||
| 132 | { | 185 | { |
| 133 | path: 'register-catalog-detail', | 186 | path: 'register-catalog-detail', |
| 134 | name: 'costAssessDetail', | 187 | name: 'costAssessDetail', |
| ... | @@ -174,6 +227,18 @@ const routes: RouteRecordRaw[] = [ | ... | @@ -174,6 +227,18 @@ const routes: RouteRecordRaw[] = [ |
| 174 | reuse: true | 227 | reuse: true |
| 175 | } | 228 | } |
| 176 | }, | 229 | }, |
| 230 | { | ||
| 231 | path: 'register-certi-JSZQ-detail', | ||
| 232 | name: 'certificateJSZQDetail', | ||
| 233 | component: () => import('@/views/data_asset/registerJSZQDetail.vue'), | ||
| 234 | meta: { | ||
| 235 | title: '详情-', | ||
| 236 | sidebar: false, | ||
| 237 | breadcrumb: false, | ||
| 238 | cache: true, | ||
| 239 | reuse: true | ||
| 240 | } | ||
| 241 | }, | ||
| 177 | { | 242 | { |
| 178 | path: 'register-catalog-detail', | 243 | path: 'register-catalog-detail', |
| 179 | name: 'certiCatalogDetail', | 244 | name: 'certiCatalogDetail', | ... | ... |
| ... | @@ -261,7 +261,10 @@ const tableBtnClick = (scope, btn) => { | ... | @@ -261,7 +261,10 @@ const tableBtnClick = (scope, btn) => { |
| 261 | }); | 261 | }); |
| 262 | } else if (type === 'path_detail') { // 详情 | 262 | } else if (type === 'path_detail') { // 详情 |
| 263 | if (row.registerGuid) { | 263 | if (row.registerGuid) { |
| 264 | router.push({ | 264 | row.dataSource == '1' ? router.push({ |
| 265 | name: 'certificateJSZQDetail', | ||
| 266 | query: { guid: row.registerGuid, certificateGuid: row.guid, type: 'certificate', tenantGuid: row.tenantGuid } | ||
| 267 | }) : router.push({ | ||
| 265 | name: 'certificateDetail', | 268 | name: 'certificateDetail', |
| 266 | query: { guid: row.registerGuid, certificateGuid: row.guid, type: 'certificate', tenantGuid: row.tenantGuid } | 269 | query: { guid: row.registerGuid, certificateGuid: row.guid, type: 'certificate', tenantGuid: row.tenantGuid } |
| 267 | }); | 270 | }); |
| ... | @@ -291,6 +294,7 @@ const formItems = ref([{ | ... | @@ -291,6 +294,7 @@ const formItems = ref([{ |
| 291 | label: 'daName', | 294 | label: 'daName', |
| 292 | value: 'damGuid' | 295 | value: 'damGuid' |
| 293 | }, | 296 | }, |
| 297 | filterable: true, | ||
| 294 | disabled: false, | 298 | disabled: false, |
| 295 | clearable: true, | 299 | clearable: true, |
| 296 | required: true, | 300 | required: true, | ... | ... |
| ... | @@ -399,7 +399,10 @@ const tableBtnClick = (scope, btn) => { | ... | @@ -399,7 +399,10 @@ const tableBtnClick = (scope, btn) => { |
| 399 | }); | 399 | }); |
| 400 | } else if (type === 'detail') { // 详情 | 400 | } else if (type === 'detail') { // 详情 |
| 401 | if (row.registerApproveState == 'Y') { | 401 | if (row.registerApproveState == 'Y') { |
| 402 | router.push({ | 402 | row.dataSource == '1' ? router.push({ |
| 403 | name: 'registerJSZQDetail', | ||
| 404 | query: { guid: row.registerGuid, evaGuid: row.guid, type: 'qualityEvaluate', tenantGuid: row.tenantGuid, tenantName: row.tenantName } | ||
| 405 | }) : router.push({ | ||
| 403 | name: 'registerDetail', | 406 | name: 'registerDetail', |
| 404 | query: { guid: row.registerGuid, evaGuid: row.guid, type: 'qualityEvaluate', tenantGuid: row.tenantGuid, tenantName: row.tenantName } | 407 | query: { guid: row.registerGuid, evaGuid: row.guid, type: 'qualityEvaluate', tenantGuid: row.tenantGuid, tenantName: row.tenantName } |
| 405 | }); | 408 | }); |
| ... | @@ -468,6 +471,7 @@ const formItems = ref([{ | ... | @@ -468,6 +471,7 @@ const formItems = ref([{ |
| 468 | value: 'guid', | 471 | value: 'guid', |
| 469 | label: 'damName' | 472 | label: 'damName' |
| 470 | }, | 473 | }, |
| 474 | filterable: true, | ||
| 471 | visible: true, | 475 | visible: true, |
| 472 | required: true | 476 | required: true |
| 473 | }, { | 477 | }, { |
| ... | @@ -482,6 +486,7 @@ const formItems = ref([{ | ... | @@ -482,6 +486,7 @@ const formItems = ref([{ |
| 482 | value: 'guid', | 486 | value: 'guid', |
| 483 | label: 'tenantName' | 487 | label: 'tenantName' |
| 484 | }, | 488 | }, |
| 489 | filterable: true, | ||
| 485 | visible: false, | 490 | visible: false, |
| 486 | required: true | 491 | required: true |
| 487 | }, { | 492 | }, { | ... | ... |
| ... | @@ -120,7 +120,10 @@ const registerDetailTableInfo = ref({ | ... | @@ -120,7 +120,10 @@ const registerDetailTableInfo = ref({ |
| 120 | }); | 120 | }); |
| 121 | } else if (row.type == 'qualityEvaluate') { | 121 | } else if (row.type == 'qualityEvaluate') { |
| 122 | if (row.registerApproveState == 'Y') { | 122 | if (row.registerApproveState == 'Y') { |
| 123 | router.push({ | 123 | row.dataSource == '1' ? router.push({ |
| 124 | name: 'registerJSZQDetail', | ||
| 125 | query: { guid: row.registerGuid, evaGuid: row.guid, type: 'qualityEvaluate', tenantGuid: row.tenantGuid, tenantName: row.tenantName } | ||
| 126 | }) : router.push({ | ||
| 124 | name: 'registerDetail', | 127 | name: 'registerDetail', |
| 125 | query: { guid: row.registerGuid, evaGuid: row.guid, type: 'qualityEvaluate', tenantGuid: row.tenantGuid, tenantName: row.tenantName } | 128 | query: { guid: row.registerGuid, evaGuid: row.guid, type: 'qualityEvaluate', tenantGuid: row.tenantGuid, tenantName: row.tenantName } |
| 126 | }); | 129 | }); |
| ... | @@ -132,7 +135,10 @@ const registerDetailTableInfo = ref({ | ... | @@ -132,7 +135,10 @@ const registerDetailTableInfo = ref({ |
| 132 | } | 135 | } |
| 133 | } else if (row.type == 'costAssess') { | 136 | } else if (row.type == 'costAssess') { |
| 134 | if (row.registerApproveState == 'Y') { | 137 | if (row.registerApproveState == 'Y') { |
| 135 | router.push({ | 138 | row.dataSource == '1' ? router.push({ |
| 139 | name: 'registerValueJSZQDetail', | ||
| 140 | query: { guid: row.registerGuid, costAssessGuid: row.guid, type: 'costAssess', tenantGuid: row.tenantGuid, tenantName: row.tenantName } | ||
| 141 | }) : router.push({ | ||
| 136 | name: 'registerValueDetail', | 142 | name: 'registerValueDetail', |
| 137 | query: { guid: row.registerGuid, costAssessGuid: row.guid, type: 'costAssess', tenantGuid: row.tenantGuid, tenantName: row.tenantName } | 143 | query: { guid: row.registerGuid, costAssessGuid: row.guid, type: 'costAssess', tenantGuid: row.tenantGuid, tenantName: row.tenantName } |
| 138 | }); | 144 | }); | ... | ... |
src/views/data_asset/registerJSZQDetail.vue
0 → 100644
This diff could not be displayed because it is too large.
| ... | @@ -44,7 +44,7 @@ const searchItemList = ref([ | ... | @@ -44,7 +44,7 @@ const searchItemList = ref([ |
| 44 | { | 44 | { |
| 45 | type: "input", | 45 | type: "input", |
| 46 | label: "", | 46 | label: "", |
| 47 | field: "daName", | 47 | field: "damName", |
| 48 | default: "", | 48 | default: "", |
| 49 | placeholder: "资产名称", | 49 | placeholder: "资产名称", |
| 50 | clearable: true, | 50 | clearable: true, |
| ... | @@ -91,7 +91,7 @@ const pageInfo = ref({ | ... | @@ -91,7 +91,7 @@ const pageInfo = ref({ |
| 91 | { label: "150", value: 150 }, | 91 | { label: "150", value: 150 }, |
| 92 | { label: "200", value: 200 }, | 92 | { label: "200", value: 200 }, |
| 93 | ], | 93 | ], |
| 94 | daName: '', | 94 | damName: '', |
| 95 | approveState: '', | 95 | approveState: '', |
| 96 | tenantGuid: '', | 96 | tenantGuid: '', |
| 97 | }); | 97 | }); |
| ... | @@ -108,9 +108,9 @@ const handleApprovalDialogCancel = (reSubmit) => { | ... | @@ -108,9 +108,9 @@ const handleApprovalDialogCancel = (reSubmit) => { |
| 108 | } | 108 | } |
| 109 | 109 | ||
| 110 | const tableFields = ref([{ label: "序号", type: "index", width: 56, align: "center" }, | 110 | const tableFields = ref([{ label: "序号", type: "index", width: 56, align: "center" }, |
| 111 | { label: "资产名称", field: "daName", width: 160, align: "left" }, | 111 | { label: "资产名称", field: "damName", width: 160, align: "left" }, |
| 112 | { label: "数据分类", field: "dataCategoryName", width: 120, align: "left" }, | 112 | { label: "数据分类", field: "dataTypeName", width: 120, align: "left" }, |
| 113 | { label: "存储方式", field: "storageFormName", width: 120, align: "left" }, | 113 | { label: "更新频率", field: "updateFrequencyName", width: 120, align: "left" }, |
| 114 | { label: "数交所名称", field: "exchangeName", width: 160, align: "left" }, | 114 | { label: "数交所名称", field: "exchangeName", width: 160, align: "left" }, |
| 115 | { | 115 | { |
| 116 | label: "审批状态", field: "approveState", type: "tag", width: 96, align: 'center', getName: (scope) => { | 116 | label: "审批状态", field: "approveState", type: "tag", width: 96, align: 'center', getName: (scope) => { |
| ... | @@ -227,10 +227,17 @@ const currTableData: any = ref({}); | ... | @@ -227,10 +227,17 @@ const currTableData: any = ref({}); |
| 227 | const btnClick = (btn) => { | 227 | const btnClick = (btn) => { |
| 228 | const type = btn.value; | 228 | const type = btn.value; |
| 229 | if (type == 'create') { | 229 | if (type == 'create') { |
| 230 | router.push({ | 230 | if (btn.exchangeName.includes('数交所(勿删)') || btn.exchangeName.includes('江苏省数据交易所')) { |
| 231 | name: 'registerStart', | 231 | router.push({ |
| 232 | query: { exchangeGuid: btn.exchangeGuid, type } | 232 | name: 'registerStartJS', |
| 233 | }); | 233 | query: { exchangeGuid: btn.exchangeGuid, type } |
| 234 | }); | ||
| 235 | } else { | ||
| 236 | router.push({ | ||
| 237 | name: 'registerStart', | ||
| 238 | query: { exchangeGuid: btn.exchangeGuid, type } | ||
| 239 | }); | ||
| 240 | } | ||
| 234 | } else if (type == 'search') { | 241 | } else if (type == 'search') { |
| 235 | exchangGuid.value = btn.exchangeGuid; | 242 | exchangGuid.value = btn.exchangeGuid; |
| 236 | pageInfo.value.curr = 1; | 243 | pageInfo.value.curr = 1; |
| ... | @@ -244,10 +251,17 @@ const tableBtnClick = (scope, btn) => { | ... | @@ -244,10 +251,17 @@ const tableBtnClick = (scope, btn) => { |
| 244 | const row = scope.row; | 251 | const row = scope.row; |
| 245 | currTableData.value = row; | 252 | currTableData.value = row; |
| 246 | if (type === "edit") { //草稿中\已驳回\已撤销\已通过 状态,才可以编辑。 | 253 | if (type === "edit") { //草稿中\已驳回\已撤销\已通过 状态,才可以编辑。 |
| 247 | router.push({ | 254 | if (row.dataSource == '1') { |
| 248 | name: 'registerStart', | 255 | router.push({ |
| 249 | query: { guid: row.guid, exchangeGuid: row.exchangeGuid, name: row.daName, tenantGuid: row.tenantGuid, type } | 256 | name: 'registerStartJS', |
| 250 | }); | 257 | query: { guid: row.bizGuid, exchangeGuid: row.exchangeGuid, name: row.damName, tenantGuid: row.tenantGuid, type } |
| 258 | }); | ||
| 259 | } else { | ||
| 260 | router.push({ | ||
| 261 | name: 'registerStart', | ||
| 262 | query: { guid: row.guid, exchangeGuid: row.exchangeGuid, name: row.damName, tenantGuid: row.tenantGuid, type } | ||
| 263 | }); | ||
| 264 | } | ||
| 251 | } else if (type == "delete") { | 265 | } else if (type == "delete") { |
| 252 | delTableOpen("此操作将永久删除该资产登记,是否继续?", "warning"); | 266 | delTableOpen("此操作将永久删除该资产登记,是否继续?", "warning"); |
| 253 | } else if (type === 'revoke') { // 撤销,状态为审批中时可以撤销。 | 267 | } else if (type === 'revoke') { // 撤销,状态为审批中时可以撤销。 |
| ... | @@ -284,10 +298,17 @@ const tableBtnClick = (scope, btn) => { | ... | @@ -284,10 +298,17 @@ const tableBtnClick = (scope, btn) => { |
| 284 | }); | 298 | }); |
| 285 | }); | 299 | }); |
| 286 | } else if (type === 'detail') { // 详情, 若是草稿中,详情就是编辑, | 300 | } else if (type === 'detail') { // 详情, 若是草稿中,详情就是编辑, |
| 287 | router.push({ | 301 | if (row.dataSource == '1') { |
| 288 | name: 'registerInfoDetail', | 302 | router.push({ |
| 289 | query: { guid: row.guid, name: row.daName, tenantGuid: row.tenantGuid, tenantName: row.tenantName, type: 'asset' } | 303 | name: 'registerInfoJSZQDetail', |
| 290 | }); | 304 | query: { guid: row.guid, name: row.damName, tenantGuid: row.tenantGuid, tenantName: row.tenantName, type: 'asset' } |
| 305 | }); | ||
| 306 | } else { | ||
| 307 | router.push({ | ||
| 308 | name: 'registerInfoDetail', | ||
| 309 | query: { guid: row.guid, name: row.damName, tenantGuid: row.tenantGuid, tenantName: row.tenantName, type: 'asset' } | ||
| 310 | }); | ||
| 311 | } | ||
| 291 | } else if (type === 'pass') { | 312 | } else if (type === 'pass') { |
| 292 | passDialogInfo.value.visible = true; | 313 | passDialogInfo.value.visible = true; |
| 293 | } else if (type == 'reject') { | 314 | } else if (type == 'reject') { |
| ... | @@ -302,7 +323,7 @@ const delTableOpen = (msg, type, isBatch: boolean = false) => { | ... | @@ -302,7 +323,7 @@ const delTableOpen = (msg, type, isBatch: boolean = false) => { |
| 302 | type: type, | 323 | type: type, |
| 303 | }).then(() => { | 324 | }).then(() => { |
| 304 | let guids: any = []; | 325 | let guids: any = []; |
| 305 | guids = [currTableData.value.guid] | 326 | guids = currTableData.value.guid; |
| 306 | loading.value = true; | 327 | loading.value = true; |
| 307 | registerDelete(guids).then((res: any) => { | 328 | registerDelete(guids).then((res: any) => { |
| 308 | loading.value = false; | 329 | loading.value = false; |
| ... | @@ -336,7 +357,7 @@ const getTableData = () => { | ... | @@ -336,7 +357,7 @@ const getTableData = () => { |
| 336 | getRegisterList({ | 357 | getRegisterList({ |
| 337 | pageSize: pageInfo.value.limit, | 358 | pageSize: pageInfo.value.limit, |
| 338 | pageIndex: pageInfo.value.curr, | 359 | pageIndex: pageInfo.value.curr, |
| 339 | daName: pageInfo.value.daName, | 360 | damName: pageInfo.value.damName, |
| 340 | approveState: pageInfo.value.approveState, | 361 | approveState: pageInfo.value.approveState, |
| 341 | tenantGuid: pageInfo.value.tenantGuid, | 362 | tenantGuid: pageInfo.value.tenantGuid, |
| 342 | exchangGuid: exchangGuid.value, | 363 | exchangGuid: exchangGuid.value, |
| ... | @@ -376,12 +397,12 @@ const toSearch = (val: any, clear: boolean = false) => { | ... | @@ -376,12 +397,12 @@ const toSearch = (val: any, clear: boolean = false) => { |
| 376 | pageInfo.value.curr = 1; | 397 | pageInfo.value.curr = 1; |
| 377 | if (clear) { | 398 | if (clear) { |
| 378 | searchItemList.value.map((item) => item.default = ""); | 399 | searchItemList.value.map((item) => item.default = ""); |
| 379 | pageInfo.value.daName = ''; | 400 | pageInfo.value.damName = ''; |
| 380 | pageInfo.value.approveState = ""; | 401 | pageInfo.value.approveState = ""; |
| 381 | pageInfo.value.tenantGuid = ""; | 402 | pageInfo.value.tenantGuid = ""; |
| 382 | val && (exchangGuid.value = ''); | 403 | val && (exchangGuid.value = ''); |
| 383 | } else { | 404 | } else { |
| 384 | pageInfo.value.daName = val.daName; | 405 | pageInfo.value.damName = val.damName; |
| 385 | pageInfo.value.approveState = val.approveState; | 406 | pageInfo.value.approveState = val.approveState; |
| 386 | pageInfo.value.tenantGuid = val.tenantGuid; | 407 | pageInfo.value.tenantGuid = val.tenantGuid; |
| 387 | } | 408 | } |
| ... | @@ -585,7 +606,7 @@ const rejectDialogBtnClick = (btn, info) => { | ... | @@ -585,7 +606,7 @@ const rejectDialogBtnClick = (btn, info) => { |
| 585 | <Dialog :dialogInfo="passDialogInfo" @btnClick="passDialogBtnClick" /> | 606 | <Dialog :dialogInfo="passDialogInfo" @btnClick="passDialogBtnClick" /> |
| 586 | <Dialog :dialogInfo="rejectDialogInfo" @btnClick="rejectDialogBtnClick" /> | 607 | <Dialog :dialogInfo="rejectDialogInfo" @btnClick="rejectDialogBtnClick" /> |
| 587 | <DialogApproval :visible="approvalDialogVisible" :currentRowInfo="systemApproveCurrentRowInfo" | 608 | <DialogApproval :visible="approvalDialogVisible" :currentRowInfo="systemApproveCurrentRowInfo" |
| 588 | @dialog-cancel="handleApprovalDialogCancel"></DialogApproval> | 609 | @dialog-cancel="handleApprovalDialogCancel"></DialogApproval> |
| 589 | </div> | 610 | </div> |
| 590 | </template> | 611 | </template> |
| 591 | 612 | ... | ... |
src/views/data_asset/registerStartJS.vue
0 → 100644
| 1 | <route lang="yaml"> | ||
| 2 | name: registerStartJS | ||
| 3 | </route> | ||
| 4 | |||
| 5 | <script lang="ts" setup name="registerStartJS"> | ||
| 6 | import { ref } from 'vue'; | ||
| 7 | import { CirclePlus } from "@element-plus/icons-vue"; | ||
| 8 | import { useValidator } from '@/hooks/useValidator'; | ||
| 9 | import { TableColumnWidth } from '@/utils/enum'; | ||
| 10 | import { scrollLastRowToView } from '@/utils/common'; | ||
| 11 | import { | ||
| 12 | getAreaData, | ||
| 13 | getParamsList, | ||
| 14 | } from "@/api/modules/queryService"; | ||
| 15 | import { | ||
| 16 | getDiseaseAll | ||
| 17 | } from '@/api/modules/dataPricing'; | ||
| 18 | import { | ||
| 19 | registerSave, | ||
| 20 | registerUpdate, | ||
| 21 | getRegiaterDetail | ||
| 22 | } from '@/api/modules/dataAssetZq' | ||
| 23 | import useUserStore from "@/store/modules/user"; | ||
| 24 | import { getCamundaDeploymentId } from "@/api/modules/workFlowService" | ||
| 25 | import useDataAssetStore from "@/store/modules/dataAsset"; | ||
| 26 | |||
| 27 | const assetStore = useDataAssetStore(); | ||
| 28 | const userStore = useUserStore(); | ||
| 29 | const userData = JSON.parse(userStore.userData) | ||
| 30 | const { proxy } = getCurrentInstance() as any; | ||
| 31 | const { required } = useValidator(); | ||
| 32 | const router = useRouter(); | ||
| 33 | const route = useRoute(); | ||
| 34 | const restart = ref(false); | ||
| 35 | const fullPath = route.fullPath; | ||
| 36 | const guid = route.query.guid; | ||
| 37 | const exGuid = route.query.exchangeGuid; | ||
| 38 | |||
| 39 | /** 全页面加载图标 */ | ||
| 40 | const fullscreenLoading = ref(false); | ||
| 41 | |||
| 42 | /** 字典的Map,key为属性值 */ | ||
| 43 | const dictListMap = ref({}); | ||
| 44 | |||
| 45 | /** 所属疾病的下拉列表 */ | ||
| 46 | const diseaseListData: any = ref([]); | ||
| 47 | |||
| 48 | /** 产品应用方向字典列表 */ | ||
| 49 | const productDirectionListData: any = ref([]); | ||
| 50 | |||
| 51 | const formRef = ref(); | ||
| 52 | |||
| 53 | /** 数据产品信息的表单配置 */ | ||
| 54 | const productBaseInfoItems = ref([{ | ||
| 55 | type: "input", | ||
| 56 | label: "产品名称", | ||
| 57 | field: "productName", | ||
| 58 | default: "", | ||
| 59 | maxlength: 50, | ||
| 60 | placeholder: "请输入", | ||
| 61 | required: true, | ||
| 62 | clearable: true | ||
| 63 | }, { | ||
| 64 | label: '产品编码', | ||
| 65 | type: 'input', | ||
| 66 | placeholder: '自动生成', | ||
| 67 | field: 'productCode', | ||
| 68 | default: '', | ||
| 69 | disabled: true, | ||
| 70 | required: false, | ||
| 71 | visible: true | ||
| 72 | }, { | ||
| 73 | label: '产品类型', | ||
| 74 | type: 'select', | ||
| 75 | placeholder: '请选择', | ||
| 76 | field: 'productType', | ||
| 77 | default: '', | ||
| 78 | options: dictListMap.value['productType'] || [], | ||
| 79 | props: { | ||
| 80 | value: 'value', | ||
| 81 | label: 'label' | ||
| 82 | }, | ||
| 83 | required: true, | ||
| 84 | filterable: true, | ||
| 85 | visible: true | ||
| 86 | }, { | ||
| 87 | label: "是否需要信息主体授权", | ||
| 88 | type: "radio-group", | ||
| 89 | placeholder: "", | ||
| 90 | field: "authLevel", | ||
| 91 | default: "Y", | ||
| 92 | options: [ | ||
| 93 | { | ||
| 94 | label: "是", | ||
| 95 | value: 'Y', | ||
| 96 | }, | ||
| 97 | { | ||
| 98 | label: "否", | ||
| 99 | value: 'N', | ||
| 100 | }, | ||
| 101 | ], | ||
| 102 | required: true, | ||
| 103 | }, { | ||
| 104 | label: "更新频率", | ||
| 105 | type: "select", | ||
| 106 | placeholder: "请选择", | ||
| 107 | field: "updateFrequency", | ||
| 108 | default: '', | ||
| 109 | props: { | ||
| 110 | value: 'value', | ||
| 111 | label: 'label' | ||
| 112 | }, | ||
| 113 | multiple: false, | ||
| 114 | options: dictListMap.value['updateFrequency'] || [], | ||
| 115 | filterable: true, | ||
| 116 | required: true, | ||
| 117 | clearable: true, | ||
| 118 | }, { | ||
| 119 | type: "input", | ||
| 120 | label: "产品发布机构", | ||
| 121 | field: "productPublisherName", | ||
| 122 | default: userData.tenantName, | ||
| 123 | required: true, | ||
| 124 | placeholder: "请输入", | ||
| 125 | disabled: true, | ||
| 126 | clearable: true | ||
| 127 | }, { | ||
| 128 | label: '领域', | ||
| 129 | type: 'select', | ||
| 130 | placeholder: '请选择', | ||
| 131 | field: 'domain', | ||
| 132 | default: '003', | ||
| 133 | options: dictListMap.value['domain'] || [], | ||
| 134 | props: { | ||
| 135 | value: 'value', | ||
| 136 | label: 'label', | ||
| 137 | children: 'children' | ||
| 138 | }, | ||
| 139 | required: true, | ||
| 140 | filterable: true, | ||
| 141 | visible: true | ||
| 142 | }, { | ||
| 143 | label: '应用场景', | ||
| 144 | type: 'select', | ||
| 145 | placeholder: '请选择', | ||
| 146 | field: 'scenario', | ||
| 147 | default: '', | ||
| 148 | options: [], // 根据所选择领域显示列表 | ||
| 149 | props: { | ||
| 150 | value: 'value', | ||
| 151 | label: 'label' | ||
| 152 | }, | ||
| 153 | required: true, | ||
| 154 | filterable: true, | ||
| 155 | visible: true | ||
| 156 | }, { | ||
| 157 | label: '所属科室', | ||
| 158 | type: 'tree-select', | ||
| 159 | placeholder: '请选择', | ||
| 160 | field: 'medDepartmentCode', | ||
| 161 | default: '', | ||
| 162 | options: dictListMap.value['medDepartmentCode'] || [], | ||
| 163 | showAllLevels: false, | ||
| 164 | checkStrictly: false,//只能选择叶子节点。 | ||
| 165 | lazy: false, | ||
| 166 | props: { | ||
| 167 | value: 'value', | ||
| 168 | label: 'label', | ||
| 169 | children: 'childDictList' | ||
| 170 | }, | ||
| 171 | filterable: true, | ||
| 172 | clearable: true, | ||
| 173 | visible: true, | ||
| 174 | required: true | ||
| 175 | }, { | ||
| 176 | label: '所属疾病', | ||
| 177 | type: 'tree-select', | ||
| 178 | placeholder: '请选择', | ||
| 179 | field: 'diseaseGuid', | ||
| 180 | options: diseaseListData.value, | ||
| 181 | props: { | ||
| 182 | value: 'guid', | ||
| 183 | label: 'diseaseName', | ||
| 184 | children: 'childList' | ||
| 185 | }, | ||
| 186 | showAllLevels: false, | ||
| 187 | checkStrictly: false,//只能选择叶子节点。 | ||
| 188 | lazy: false, | ||
| 189 | filterable: true, | ||
| 190 | clearable: true, | ||
| 191 | default: '', | ||
| 192 | visible: true, | ||
| 193 | required: true | ||
| 194 | }, { | ||
| 195 | label: '数据规模(条)', | ||
| 196 | type: 'input', | ||
| 197 | placeholder: '请输入', | ||
| 198 | field: 'dataScale', | ||
| 199 | maxlength: 19, | ||
| 200 | regexp: /\D/g, | ||
| 201 | default: '', | ||
| 202 | visible: true, | ||
| 203 | required: true | ||
| 204 | }, { | ||
| 205 | label: '病例总数(例)', | ||
| 206 | type: 'input', | ||
| 207 | placeholder: '请输入', | ||
| 208 | field: 'caseNumber', | ||
| 209 | maxlength: 19, | ||
| 210 | regexp: /\D/g, | ||
| 211 | default: '', | ||
| 212 | visible: true, | ||
| 213 | required: true | ||
| 214 | }, { | ||
| 215 | label: '所属主题', | ||
| 216 | type: 'tree-select', | ||
| 217 | placeholder: '请选择', | ||
| 218 | field: 'subjectDomain', | ||
| 219 | options: dictListMap.value['subjectDomain'], | ||
| 220 | showAllLevels: false, | ||
| 221 | checkStrictly: false,//只能选择叶子节点。 | ||
| 222 | lazy: false, | ||
| 223 | props: { | ||
| 224 | label: "label", | ||
| 225 | value: "value", | ||
| 226 | children: 'childDictList' | ||
| 227 | }, | ||
| 228 | filterable: true, | ||
| 229 | clearable: true, | ||
| 230 | default: '', | ||
| 231 | visible: false, | ||
| 232 | required: true | ||
| 233 | }, { | ||
| 234 | label: "数据来源", | ||
| 235 | type: "select", | ||
| 236 | placeholder: "", | ||
| 237 | field: "dataSources", | ||
| 238 | block: false, | ||
| 239 | default: '1', | ||
| 240 | options: dictListMap.value['dataSources'] || [], | ||
| 241 | filterable: true, | ||
| 242 | clearable: true, | ||
| 243 | required: true, | ||
| 244 | }, { | ||
| 245 | label: '数据覆盖范围', | ||
| 246 | type: 'checkbox-select', | ||
| 247 | placeholder: '全国', | ||
| 248 | field: 'dataCoverages', | ||
| 249 | default: "", | ||
| 250 | trueValue: '1', | ||
| 251 | falseValue: '', | ||
| 252 | isRequire: true, | ||
| 253 | children: [ | ||
| 254 | { | ||
| 255 | label: '', | ||
| 256 | type: "select", | ||
| 257 | placeholder: "请选择", | ||
| 258 | field: "dataCoverage", | ||
| 259 | default: [], | ||
| 260 | options: dictListMap.value['dataCoverage'] || [], | ||
| 261 | multiple: true, | ||
| 262 | collapse: true, | ||
| 263 | tagsTooltip: true, | ||
| 264 | filterable: true, | ||
| 265 | clearable: true, | ||
| 266 | required: true, | ||
| 267 | col: 'checkbox-right', | ||
| 268 | visible: true | ||
| 269 | } | ||
| 270 | ], | ||
| 271 | clearable: false, | ||
| 272 | required: true, | ||
| 273 | col: 'checkbox-cascader' | ||
| 274 | }, { | ||
| 275 | label: '产品应用方向', | ||
| 276 | type: 'select', | ||
| 277 | placeholder: '请选择', | ||
| 278 | field: 'productDirection', | ||
| 279 | options: productDirectionListData.value, | ||
| 280 | props: { | ||
| 281 | value: 'value', | ||
| 282 | label: 'label' | ||
| 283 | }, | ||
| 284 | filterable: true, | ||
| 285 | clearable: true, | ||
| 286 | default: '', | ||
| 287 | visible: true, | ||
| 288 | required: true | ||
| 289 | }, { | ||
| 290 | type: "input", | ||
| 291 | label: "版本名称", | ||
| 292 | field: "versionName", | ||
| 293 | default: "", | ||
| 294 | maxlength: 50, | ||
| 295 | placeholder: "请输入", | ||
| 296 | required: true, | ||
| 297 | clearable: true | ||
| 298 | }, { | ||
| 299 | type: "inputTag", | ||
| 300 | label: "产品关键词", | ||
| 301 | field: 'productKeywords', | ||
| 302 | default: [], | ||
| 303 | maxlength: 200, | ||
| 304 | placeholder: "请输入关键词,按回车键确认", | ||
| 305 | required: true, | ||
| 306 | clearable: true, | ||
| 307 | block: true | ||
| 308 | }, { | ||
| 309 | label: '产品描述', | ||
| 310 | placeholder: '该输入对该产品的描述信息', | ||
| 311 | field: 'productDesc', | ||
| 312 | type: 'textarea', | ||
| 313 | default: '', | ||
| 314 | maxlength: 250, | ||
| 315 | block: true, | ||
| 316 | clearable: true, | ||
| 317 | required: true, | ||
| 318 | }]); | ||
| 319 | |||
| 320 | /** 数据产品信息的表单配置校验规则 */ | ||
| 321 | const productBaseInfoFormRules = ref({ | ||
| 322 | productName: [required('请输入产品名称')], | ||
| 323 | productType: [required('请选择产品类型')], | ||
| 324 | updateFrequency: [required('请选择更新频率')], | ||
| 325 | productpublisher: [required('产品发布机构不能为空')], | ||
| 326 | domain: [required('请选择领域')], | ||
| 327 | scenario: [required('请选择应用场景')], | ||
| 328 | medDepartmentCode: [required('请选择所属科室')], | ||
| 329 | diseaseGuid: [required('请选择所属疾病')], | ||
| 330 | caseNumber: [required('请输入病例总数')], | ||
| 331 | subjectDomain: [required('请选择所属主题')], | ||
| 332 | dataSources: [required('请选择数据来源')], | ||
| 333 | dataScale: [required('请输入数据规模')], | ||
| 334 | dataCoverage: [required('请选择数据覆盖范围')], | ||
| 335 | productDirection: [required('请选择产品应用方向')], | ||
| 336 | versionName: [required('请输入版本名称')], | ||
| 337 | productKeywords: [required('请输入产品关键词')], | ||
| 338 | productDesc: [required('请输入产品描述')] | ||
| 339 | }); | ||
| 340 | |||
| 341 | const setProductBaseFormItems = (formValue) => { | ||
| 342 | formValue = Object.assign({ authLevel: 'Y', productpublisher: userData.tenantName, domain: '003', dataSources: '1' }, formValue); | ||
| 343 | productBaseInfoItems.value.forEach(item => { | ||
| 344 | item.default = formValue[item.field]; | ||
| 345 | if (item.children?.length) { | ||
| 346 | item.children[0].default = formValue[item.children[0].field] || []; | ||
| 347 | } | ||
| 348 | if (item.field == 'scenario') { | ||
| 349 | item.options = dictListMap.value['domain'].find(s => s.value == formValue['domain'])?.childDictList || [] | ||
| 350 | } else if (item.field == 'medDepartmentCode' || item.field == 'diseaseGuid' || item.field == 'dataScale' || item.field == 'caseNumber') { | ||
| 351 | item.visible = formValue['domain'] == '003'; | ||
| 352 | } else if (item.field == 'subjectDomain') { | ||
| 353 | item.visible = formValue['domain'] == '004'; | ||
| 354 | } else if (item.field == 'dataCoverages') { | ||
| 355 | item && item.children?.length && (item.children[0].visible = formValue['dataCoverages'] != '1'); | ||
| 356 | } | ||
| 357 | }); | ||
| 358 | } | ||
| 359 | |||
| 360 | const handleProductBaseFormSelectChange = (val, row, info) => { | ||
| 361 | if (row.field == 'domain') { | ||
| 362 | info.scenario = ''; //清空下应用场景 | ||
| 363 | setProductBaseFormItems(info); | ||
| 364 | } | ||
| 365 | } | ||
| 366 | |||
| 367 | /** checkbox 全国修改之后 */ | ||
| 368 | const handleProductBaseFormCheckboxChange = (val, info, row) => { | ||
| 369 | row.field == 'dataCoverages' && setProductBaseFormItems(info); | ||
| 370 | } | ||
| 371 | |||
| 372 | const activeTabName = ref('reqParamList'); | ||
| 373 | |||
| 374 | /** ----------------- 入参相关信息 ----------------------------- */ | ||
| 375 | const inputParamsTableRef = ref(); | ||
| 376 | const inputParamsData: any = ref([]); | ||
| 377 | |||
| 378 | /** 参数类型字典列表 */ | ||
| 379 | const fieldValueTypeList: any = ref([]); | ||
| 380 | |||
| 381 | /** 基本信息的入参定义表格配置 */ | ||
| 382 | const inputParamsTableInfo = ref({ | ||
| 383 | id: "input-params-table", | ||
| 384 | height: '214px', | ||
| 385 | fields: [ | ||
| 386 | { label: "序号", type: "index", width: TableColumnWidth.INDEX, align: "center" }, | ||
| 387 | { label: "参数英文", field: "fieldEnName", width: 140, required: true, columClass: 'edit-colum', type: 'edit' }, | ||
| 388 | { label: "参数中文", field: "fieldCnName", width: 140, required: true, columClass: 'edit-colum', type: 'edit' }, | ||
| 389 | { label: "参数类型", field: "fieldValueType", width: 140, required: true, columClass: 'edit-colum', type: 'edit' }, | ||
| 390 | { label: "是否必填", field: "fieldMandatory", width: 120, required: true, columClass: 'edit-colum', type: 'edit' }, | ||
| 391 | { label: "参数描述", field: "fieldComment", width: 160, required: false, columClass: 'edit-colum', type: 'edit' }, | ||
| 392 | { label: "展示层级顺序", field: "levelCode", width: 120, required: true, columClass: 'edit-colum', type: 'edit' }, | ||
| 393 | ], | ||
| 394 | editInfo: { | ||
| 395 | fieldEnName: { | ||
| 396 | label: '', | ||
| 397 | type: 'input', | ||
| 398 | field: 'fieldEnName', | ||
| 399 | default: '', | ||
| 400 | maxlength: 50, | ||
| 401 | regexp: /[^A-Za-z0-9_]/g, | ||
| 402 | placeholder: '请输入', | ||
| 403 | clearable: true, | ||
| 404 | }, | ||
| 405 | fieldCnName: { | ||
| 406 | label: '', | ||
| 407 | type: 'input', | ||
| 408 | field: 'fieldCnName', | ||
| 409 | default: '', | ||
| 410 | maxlength: 50, | ||
| 411 | placeholder: '请输入', | ||
| 412 | clearable: true, | ||
| 413 | }, | ||
| 414 | fieldValueType: { | ||
| 415 | label: '', | ||
| 416 | type: 'select', | ||
| 417 | field: 'fieldValueType', | ||
| 418 | default: '', | ||
| 419 | options: fieldValueTypeList.value, | ||
| 420 | props: { | ||
| 421 | label: 'label', | ||
| 422 | value: 'value' | ||
| 423 | }, | ||
| 424 | placeholder: '请选择', | ||
| 425 | clearable: false, | ||
| 426 | filterable: true | ||
| 427 | }, | ||
| 428 | fieldMandatory: { | ||
| 429 | label: '', | ||
| 430 | type: 'select', | ||
| 431 | field: 'fieldMandatory', | ||
| 432 | default: 'Y', | ||
| 433 | options: [ | ||
| 434 | { | ||
| 435 | label: "是", | ||
| 436 | value: "Y", | ||
| 437 | }, | ||
| 438 | { | ||
| 439 | label: "否", | ||
| 440 | value: "N", | ||
| 441 | }, | ||
| 442 | ], | ||
| 443 | placeholder: '请选择', | ||
| 444 | }, | ||
| 445 | levelCode: { | ||
| 446 | label: '', | ||
| 447 | type: 'input', | ||
| 448 | field: 'levelCode', | ||
| 449 | default: '', | ||
| 450 | maxlength: 20, | ||
| 451 | placeholder: '请输入', | ||
| 452 | regexp: /\D/g, | ||
| 453 | clearable: true, | ||
| 454 | }, | ||
| 455 | fieldComment: { | ||
| 456 | label: '', | ||
| 457 | type: 'input', | ||
| 458 | field: 'fieldComment', | ||
| 459 | default: '', | ||
| 460 | maxlength: 50, | ||
| 461 | placeholder: '请输入', | ||
| 462 | clearable: true, | ||
| 463 | } | ||
| 464 | }, | ||
| 465 | STATUS: 'edit', | ||
| 466 | data: inputParamsData.value, | ||
| 467 | showPage: false, | ||
| 468 | actionInfo: { | ||
| 469 | show: true, | ||
| 470 | label: "操作", | ||
| 471 | type: "btn", | ||
| 472 | width: 60, | ||
| 473 | fixed: 'right', | ||
| 474 | btns: [ | ||
| 475 | { | ||
| 476 | label: "删除", value: "remove", click: (scope) => { | ||
| 477 | let index = scope.$index; | ||
| 478 | proxy.$openMessageBox("此操作将永久删除, 是否继续?", () => { | ||
| 479 | inputParamsData.value.splice(index, 1); | ||
| 480 | inputParamsTableInfo.value.data = inputParamsData.value; | ||
| 481 | proxy.$ElMessage.success('参数删除成功'); | ||
| 482 | }, () => { | ||
| 483 | proxy.$ElMessage.info("已取消"); | ||
| 484 | }); | ||
| 485 | } | ||
| 486 | }, | ||
| 487 | ] | ||
| 488 | }, | ||
| 489 | loading: false | ||
| 490 | }); | ||
| 491 | |||
| 492 | /** 给表格添加一行入参定义。 */ | ||
| 493 | const addInputParams = () => { | ||
| 494 | inputParamsData.value.push({ fieldEnName: '', fieldCnName: '', fieldMandatory: 'Y', fieldValueType: '1', fieldComment: '', levelCode: '' }); | ||
| 495 | inputParamsTableInfo.value.data = inputParamsData.value; | ||
| 496 | nextTick(() => { | ||
| 497 | scrollLastRowToView(inputParamsTableRef.value?.tableRef, inputParamsData.value.length); | ||
| 498 | }) | ||
| 499 | } | ||
| 500 | |||
| 501 | /** ----------------- 出参相关信息 ------------------------- */ | ||
| 502 | const respParamsTableRef = ref(); | ||
| 503 | const respParamsData: any = ref([]); | ||
| 504 | |||
| 505 | /** 基本信息的入参定义表格配置 */ | ||
| 506 | const respParamsTableInfo = ref({ | ||
| 507 | id: "resp-params-table", | ||
| 508 | height: '214px', | ||
| 509 | fields: [ | ||
| 510 | { label: "序号", type: "index", width: TableColumnWidth.INDEX, align: "center" }, | ||
| 511 | { label: "参数英文", field: "fieldEnName", width: 140, required: true, columClass: 'edit-colum', type: 'edit' }, | ||
| 512 | { label: "参数中文", field: "fieldCnName", width: 140, required: true, columClass: 'edit-colum', type: 'edit' }, | ||
| 513 | { label: "参数类型", field: "fieldValueType", width: 140, required: true, columClass: 'edit-colum', type: 'edit' }, | ||
| 514 | { label: "是否必填", field: "fieldMandatory", width: 120, required: true, columClass: 'edit-colum', type: 'edit' }, | ||
| 515 | { label: "参数描述", field: "fieldComment", width: 160, required: false, columClass: 'edit-colum', type: 'edit' }, | ||
| 516 | { label: "展示层级顺序", field: "levelCode", width: 120, required: true, columClass: 'edit-colum', type: 'edit' }, | ||
| 517 | ], | ||
| 518 | editInfo: { | ||
| 519 | fieldEnName: { | ||
| 520 | label: '', | ||
| 521 | type: 'input', | ||
| 522 | field: 'fieldEnName', | ||
| 523 | default: '', | ||
| 524 | maxlength: 50, | ||
| 525 | regexp: /[^A-Za-z0-9_]/g, | ||
| 526 | placeholder: '请输入', | ||
| 527 | clearable: true, | ||
| 528 | }, | ||
| 529 | fieldCnName: { | ||
| 530 | label: '', | ||
| 531 | type: 'input', | ||
| 532 | field: 'fieldCnName', | ||
| 533 | default: '', | ||
| 534 | maxlength: 50, | ||
| 535 | placeholder: '请输入', | ||
| 536 | clearable: true, | ||
| 537 | }, | ||
| 538 | fieldValueType: { | ||
| 539 | label: '', | ||
| 540 | type: 'select', | ||
| 541 | field: 'fieldValueType', | ||
| 542 | default: '', | ||
| 543 | options: fieldValueTypeList.value, | ||
| 544 | props: { | ||
| 545 | label: 'label', | ||
| 546 | value: 'value' | ||
| 547 | }, | ||
| 548 | placeholder: '请选择', | ||
| 549 | clearable: false, | ||
| 550 | filterable: true | ||
| 551 | }, | ||
| 552 | fieldMandatory: { | ||
| 553 | label: '', | ||
| 554 | type: 'select', | ||
| 555 | field: 'fieldMandatory', | ||
| 556 | default: 'Y', | ||
| 557 | options: [ | ||
| 558 | { | ||
| 559 | label: "是", | ||
| 560 | value: "Y", | ||
| 561 | }, | ||
| 562 | { | ||
| 563 | label: "否", | ||
| 564 | value: "N", | ||
| 565 | }, | ||
| 566 | ], | ||
| 567 | placeholder: '请选择', | ||
| 568 | }, | ||
| 569 | levelCode: { | ||
| 570 | label: '', | ||
| 571 | type: 'input', | ||
| 572 | field: 'levelCode', | ||
| 573 | default: '', | ||
| 574 | maxlength: 20, | ||
| 575 | placeholder: '请输入', | ||
| 576 | regexp: /\D/g, | ||
| 577 | clearable: true, | ||
| 578 | }, | ||
| 579 | fieldComment: { | ||
| 580 | label: '', | ||
| 581 | type: 'input', | ||
| 582 | field: 'fieldComment', | ||
| 583 | default: '', | ||
| 584 | maxlength: 50, | ||
| 585 | placeholder: '请输入', | ||
| 586 | clearable: true, | ||
| 587 | } | ||
| 588 | }, | ||
| 589 | STATUS: 'edit', | ||
| 590 | data: respParamsData.value, | ||
| 591 | showPage: false, | ||
| 592 | actionInfo: { | ||
| 593 | show: true, | ||
| 594 | label: "操作", | ||
| 595 | type: "btn", | ||
| 596 | width: 60, | ||
| 597 | fixed: 'right', | ||
| 598 | btns: [ | ||
| 599 | { | ||
| 600 | label: "删除", value: "remove", click: (scope) => { | ||
| 601 | let index = scope.$index; | ||
| 602 | proxy.$openMessageBox("此操作将永久删除, 是否继续?", () => { | ||
| 603 | respParamsData.value.splice(index, 1); | ||
| 604 | respParamsTableInfo.value.data = respParamsData.value; | ||
| 605 | proxy.$ElMessage.success('参数删除成功'); | ||
| 606 | }, () => { | ||
| 607 | proxy.$ElMessage.info("已取消"); | ||
| 608 | }); | ||
| 609 | } | ||
| 610 | }, | ||
| 611 | ] | ||
| 612 | }, | ||
| 613 | loading: false | ||
| 614 | }); | ||
| 615 | |||
| 616 | /** 给表格添加一行入参定义。 */ | ||
| 617 | const addRespParams = () => { | ||
| 618 | respParamsData.value.push({ fieldEnName: '', fieldCnName: '', fieldMandatory: 'Y', fieldValueType: '1', fieldComment: '', levelCode: '' }); | ||
| 619 | respParamsTableInfo.value.data = respParamsData.value; | ||
| 620 | nextTick(() => { | ||
| 621 | scrollLastRowToView(respParamsTableRef.value?.tableRef, respParamsData.value.length); | ||
| 622 | }) | ||
| 623 | } | ||
| 624 | |||
| 625 | /** ----------------------- 数据产品登记信息 ----------------------------- */ | ||
| 626 | |||
| 627 | const registerFormRef = ref(); | ||
| 628 | |||
| 629 | const getParentAreaPromise: any = ref(null); | ||
| 630 | const getAreaDataPromise: any = ref({}); | ||
| 631 | const getAreaDatas: any = ref({}); | ||
| 632 | const parentAreaData: any = ref([]); | ||
| 633 | |||
| 634 | const getArea = (node, resolve) => { | ||
| 635 | const { level } = node | ||
| 636 | let params = { | ||
| 637 | parentGuid: node.value | ||
| 638 | } | ||
| 639 | if (!node.value) { | ||
| 640 | if (getParentAreaPromise.value) { | ||
| 641 | getParentAreaPromise.value.then((res: any) => { | ||
| 642 | resolve(res); | ||
| 643 | }) | ||
| 644 | } else { | ||
| 645 | resolve(parentAreaData.value); | ||
| 646 | } | ||
| 647 | return; | ||
| 648 | } | ||
| 649 | if (node.loaded) { | ||
| 650 | resolve([]); | ||
| 651 | return; | ||
| 652 | } | ||
| 653 | if (getAreaDatas.value[node.value]?.length) { | ||
| 654 | resolve(getAreaDatas.value[node.value]); | ||
| 655 | return; | ||
| 656 | } | ||
| 657 | if (!getAreaDataPromise.value[node.value]) { | ||
| 658 | getAreaDataPromise.value[node.value] = getAreaData(params).then((res: any) => { | ||
| 659 | node.loaded = true; | ||
| 660 | getAreaDataPromise.value[node.value] = null; | ||
| 661 | if (res?.code == proxy.$passCode) { | ||
| 662 | const data = res.data ?? [] | ||
| 663 | data.map(item => { | ||
| 664 | item.leaf = level >= 1 | ||
| 665 | }) | ||
| 666 | resolve(data) | ||
| 667 | getAreaDatas.value[node.value] = data; | ||
| 668 | return data; | ||
| 669 | } | ||
| 670 | }) | ||
| 671 | } else { | ||
| 672 | getAreaDataPromise.value[node.value].then((data) => { | ||
| 673 | getAreaDataPromise.value[node.value] = null; | ||
| 674 | node.loaded = true; | ||
| 675 | data.map(item => { | ||
| 676 | item.leaf = level >= 1 | ||
| 677 | }) | ||
| 678 | resolve(data) | ||
| 679 | }) | ||
| 680 | } | ||
| 681 | } | ||
| 682 | |||
| 683 | const productRegisterInfoItems = ref([{ | ||
| 684 | type: "input", | ||
| 685 | label: "产品登记名称", | ||
| 686 | field: "dataRegistName", | ||
| 687 | default: "", | ||
| 688 | maxlength: 50, | ||
| 689 | placeholder: "数据覆盖范围-行业分类-产品名称自动生成", | ||
| 690 | required: true, | ||
| 691 | disabled: true, | ||
| 692 | clearable: true | ||
| 693 | }, { | ||
| 694 | label: "数据覆盖时间", | ||
| 695 | type: "date-picker", | ||
| 696 | format: 'YYYY-MM-DD', | ||
| 697 | valueFormat: 'YYYY-MM-DD', | ||
| 698 | field: "dataCoverageTimeRange", | ||
| 699 | default: null, | ||
| 700 | placeholder: "开始时间~结束时间", | ||
| 701 | clearable: true, | ||
| 702 | required: true, | ||
| 703 | }, { | ||
| 704 | label: "数据产品和服务类型", | ||
| 705 | type: "input-group", | ||
| 706 | field: "dataProductsAndServicesTypeGroup", | ||
| 707 | default: "", | ||
| 708 | children: [ | ||
| 709 | { | ||
| 710 | type: "select", | ||
| 711 | placeholder: "请选择", | ||
| 712 | field: "dataProductsAndServicesType", | ||
| 713 | default: "", | ||
| 714 | col: "w50-l", | ||
| 715 | options: [], | ||
| 716 | filterable: true, | ||
| 717 | clearable: true, | ||
| 718 | required: true, | ||
| 719 | }, | ||
| 720 | { | ||
| 721 | label: "", | ||
| 722 | type: "input", | ||
| 723 | placeholder: "请输入其他类型", | ||
| 724 | col: "w50 no-margin-r", | ||
| 725 | field: "dataProductsAndServicesOtherType", | ||
| 726 | default: '', | ||
| 727 | maxlenght: 50, | ||
| 728 | clearable: true, | ||
| 729 | visible: false, | ||
| 730 | required: true, | ||
| 731 | }, | ||
| 732 | ], | ||
| 733 | clearable: true, | ||
| 734 | required: true, | ||
| 735 | }, { | ||
| 736 | label: '行业分类', | ||
| 737 | type: 'select', | ||
| 738 | placeholder: '请选择', | ||
| 739 | field: 'industry', | ||
| 740 | default: '', | ||
| 741 | options: dictListMap.value['industry'] || [], | ||
| 742 | props: { | ||
| 743 | value: 'value', | ||
| 744 | label: 'label' | ||
| 745 | }, | ||
| 746 | required: true, | ||
| 747 | filterable: true, | ||
| 748 | visible: true | ||
| 749 | }, { | ||
| 750 | label: '行业大类', | ||
| 751 | type: 'select', | ||
| 752 | placeholder: '请选择', | ||
| 753 | field: 'industryBigcode', | ||
| 754 | default: '', | ||
| 755 | options: [], | ||
| 756 | props: { | ||
| 757 | value: 'value', | ||
| 758 | label: 'label' | ||
| 759 | }, | ||
| 760 | required: true, | ||
| 761 | filterable: true, | ||
| 762 | visible: true | ||
| 763 | }, | ||
| 764 | { | ||
| 765 | label: '数据类型', | ||
| 766 | type: 'select', | ||
| 767 | placeholder: '请选择', | ||
| 768 | field: 'dataType', | ||
| 769 | default: '', | ||
| 770 | options: dictListMap.value['dataType'] || [], | ||
| 771 | props: { | ||
| 772 | value: 'value', | ||
| 773 | label: 'label' | ||
| 774 | }, | ||
| 775 | required: true, | ||
| 776 | filterable: true, | ||
| 777 | visible: true | ||
| 778 | }, | ||
| 779 | { | ||
| 780 | label: '资源覆盖范围', | ||
| 781 | type: 'checkbox-select', | ||
| 782 | placeholder: '全国', | ||
| 783 | field: 'coverageArea', | ||
| 784 | default: "", | ||
| 785 | trueValue: 'all', | ||
| 786 | falseValue: '', | ||
| 787 | isRequire: true, | ||
| 788 | children: [ | ||
| 789 | { | ||
| 790 | label: '', | ||
| 791 | type: "cascader", | ||
| 792 | placeholder: "请选择", | ||
| 793 | field: "coverageAreas", | ||
| 794 | default: [], | ||
| 795 | showAllLevels: true, | ||
| 796 | props: { | ||
| 797 | label: 'name', | ||
| 798 | value: 'guid', | ||
| 799 | lazy: true, | ||
| 800 | checkStrictly: true, | ||
| 801 | lazyLoad: getArea, | ||
| 802 | multiple: false, | ||
| 803 | }, | ||
| 804 | collapse: true, | ||
| 805 | tagsTooltip: true, | ||
| 806 | // filterable: true, | ||
| 807 | clearable: true, | ||
| 808 | required: true, | ||
| 809 | col: 'checkbox-right', | ||
| 810 | visible: true | ||
| 811 | } | ||
| 812 | // { | ||
| 813 | // label: '', | ||
| 814 | // type: "select", | ||
| 815 | // placeholder: "请选择", | ||
| 816 | // field: "coverageAreas", | ||
| 817 | // default: '', | ||
| 818 | // options: parentAreaData.value, | ||
| 819 | // props: { | ||
| 820 | // label: 'name', | ||
| 821 | // value: 'code', | ||
| 822 | // }, | ||
| 823 | // multiple: false, | ||
| 824 | // collapse: true, | ||
| 825 | // tagsTooltip: true, | ||
| 826 | // filterable: true, | ||
| 827 | // clearable: true, | ||
| 828 | // required: true, | ||
| 829 | // col: 'checkbox-right', | ||
| 830 | // visible: true | ||
| 831 | // } | ||
| 832 | ], | ||
| 833 | clearable: false, | ||
| 834 | required: true, | ||
| 835 | col: 'checkbox-cascader' | ||
| 836 | }, | ||
| 837 | { | ||
| 838 | label: "数据生产方式", | ||
| 839 | type: "input-group", | ||
| 840 | field: "productionMethodGroup", | ||
| 841 | default: "", | ||
| 842 | children: [ | ||
| 843 | { | ||
| 844 | type: "select", | ||
| 845 | placeholder: "请选择", | ||
| 846 | field: "productionMethod", | ||
| 847 | default: "", | ||
| 848 | col: "w50-l", | ||
| 849 | options: [], | ||
| 850 | required: true, | ||
| 851 | }, | ||
| 852 | { | ||
| 853 | label: "", | ||
| 854 | type: "input", | ||
| 855 | placeholder: "请输入", | ||
| 856 | col: "w50 no-margin-r", | ||
| 857 | field: "productionOtherMethod", | ||
| 858 | default: '', | ||
| 859 | maxlenght: 50, | ||
| 860 | clearable: true, | ||
| 861 | visible: false, | ||
| 862 | required: true, | ||
| 863 | }, | ||
| 864 | ], | ||
| 865 | clearable: true, | ||
| 866 | required: true, | ||
| 867 | }, | ||
| 868 | { | ||
| 869 | label: "数据结构", | ||
| 870 | type: "input-group", | ||
| 871 | field: "dataStructureGroup", | ||
| 872 | default: "", | ||
| 873 | children: [ | ||
| 874 | { | ||
| 875 | type: "select", | ||
| 876 | placeholder: "请选择", | ||
| 877 | field: "dataStructure", | ||
| 878 | default: "", | ||
| 879 | col: "w50-l", | ||
| 880 | options: [], | ||
| 881 | required: true, | ||
| 882 | }, | ||
| 883 | { | ||
| 884 | label: "", | ||
| 885 | type: "input", | ||
| 886 | placeholder: "请输入", | ||
| 887 | col: "w50 no-margin-r", | ||
| 888 | field: "dataOtherStructure", | ||
| 889 | default: '', | ||
| 890 | maxlenght: 50, | ||
| 891 | clearable: true, | ||
| 892 | visible: false, | ||
| 893 | required: true, | ||
| 894 | }, | ||
| 895 | ], | ||
| 896 | clearable: true, | ||
| 897 | required: true, | ||
| 898 | }, | ||
| 899 | { | ||
| 900 | label: "数据提供格式", | ||
| 901 | type: "input-group", | ||
| 902 | field: "dataProvisionFormatGroup", | ||
| 903 | default: "", | ||
| 904 | children: [ | ||
| 905 | { | ||
| 906 | type: "select", | ||
| 907 | placeholder: "请选择", | ||
| 908 | field: "dataProvisionFormat", | ||
| 909 | default: "", | ||
| 910 | col: "w50-l", | ||
| 911 | options: [], | ||
| 912 | filterable: true, | ||
| 913 | clearable: true, | ||
| 914 | required: true, | ||
| 915 | }, | ||
| 916 | { | ||
| 917 | label: "", | ||
| 918 | type: "input", | ||
| 919 | placeholder: "请输入", | ||
| 920 | col: "w50 no-margin-r", | ||
| 921 | field: "dataProvisionOtherFormat", | ||
| 922 | default: '', | ||
| 923 | maxlenght: 50, | ||
| 924 | clearable: true, | ||
| 925 | visible: false, | ||
| 926 | required: true, | ||
| 927 | }, | ||
| 928 | ], | ||
| 929 | clearable: true, | ||
| 930 | required: true, | ||
| 931 | }, | ||
| 932 | { | ||
| 933 | label: "存储方式", | ||
| 934 | type: "input-group", | ||
| 935 | field: "storageMethodGroup", | ||
| 936 | default: "", | ||
| 937 | children: [ | ||
| 938 | { | ||
| 939 | type: "select", | ||
| 940 | placeholder: "请选择", | ||
| 941 | field: "storageMethod", | ||
| 942 | default: "", | ||
| 943 | col: "w50-l", | ||
| 944 | options: [], | ||
| 945 | required: true, | ||
| 946 | }, | ||
| 947 | { | ||
| 948 | label: "", | ||
| 949 | type: "input", | ||
| 950 | placeholder: "请输入", | ||
| 951 | col: "w50 no-margin-r", | ||
| 952 | field: "storageOtherMethod", | ||
| 953 | default: '', | ||
| 954 | maxlenght: 50, | ||
| 955 | clearable: true, | ||
| 956 | visible: false, | ||
| 957 | required: true, | ||
| 958 | }, | ||
| 959 | ], | ||
| 960 | clearable: true, | ||
| 961 | required: true, | ||
| 962 | }, | ||
| 963 | { | ||
| 964 | label: '数据更新方式', | ||
| 965 | type: 'select', | ||
| 966 | placeholder: '请选择', | ||
| 967 | field: 'updateMethod', | ||
| 968 | default: '', | ||
| 969 | options: [], | ||
| 970 | props: { | ||
| 971 | value: 'value', | ||
| 972 | label: 'label' | ||
| 973 | }, | ||
| 974 | required: true, | ||
| 975 | filterable: true, | ||
| 976 | clearable: true, | ||
| 977 | visible: true | ||
| 978 | }, | ||
| 979 | { | ||
| 980 | label: "数据存储量(初始)", | ||
| 981 | type: "input-group", | ||
| 982 | field: "dataStorageUnitGroup", | ||
| 983 | default: "", | ||
| 984 | children: [ | ||
| 985 | { | ||
| 986 | label: "", | ||
| 987 | type: "input", | ||
| 988 | placeholder: "输入数值,两位小数", | ||
| 989 | col: "w50-l", | ||
| 990 | field: "dataStorage", | ||
| 991 | default: '', | ||
| 992 | inputType: 'moneyNumber', | ||
| 993 | maxlenght: 19, | ||
| 994 | clearable: true, | ||
| 995 | visible: true, | ||
| 996 | required: true, | ||
| 997 | }, | ||
| 998 | { | ||
| 999 | type: "select", | ||
| 1000 | placeholder: "请选择", | ||
| 1001 | field: "dataStorageUnit", | ||
| 1002 | default: "", | ||
| 1003 | col: "w50 no-margin-r", | ||
| 1004 | options: [], | ||
| 1005 | clearable: true, | ||
| 1006 | filterable: true, | ||
| 1007 | required: true, | ||
| 1008 | }, | ||
| 1009 | ], | ||
| 1010 | clearable: true, | ||
| 1011 | required: true, | ||
| 1012 | }, | ||
| 1013 | { | ||
| 1014 | label: "数据存储量(增长)", | ||
| 1015 | type: "input-group", | ||
| 1016 | field: "dataStorageIncreaseUnitGroup", | ||
| 1017 | default: "", | ||
| 1018 | children: [ | ||
| 1019 | { | ||
| 1020 | label: "", | ||
| 1021 | type: "input", | ||
| 1022 | placeholder: "输入数值,两位小数", | ||
| 1023 | col: "w50-l", | ||
| 1024 | field: "dataStorageIncrease", | ||
| 1025 | default: '', | ||
| 1026 | inputType: 'moneyNumber', | ||
| 1027 | maxlenght: 19, | ||
| 1028 | clearable: true, | ||
| 1029 | visible: true, | ||
| 1030 | required: true, | ||
| 1031 | }, | ||
| 1032 | { | ||
| 1033 | type: "select", | ||
| 1034 | placeholder: "请选择", | ||
| 1035 | field: "dataStorageIncreaseUnit", | ||
| 1036 | default: "", | ||
| 1037 | col: "w50 no-margin-r", | ||
| 1038 | options: [], | ||
| 1039 | clearable: true, | ||
| 1040 | filterable: true, | ||
| 1041 | required: true, | ||
| 1042 | }, | ||
| 1043 | ], | ||
| 1044 | clearable: true, | ||
| 1045 | required: true, | ||
| 1046 | }, | ||
| 1047 | { | ||
| 1048 | label: "是否包含敏感信息", | ||
| 1049 | type: "radio-group", | ||
| 1050 | placeholder: "", | ||
| 1051 | field: "sensitiveInformation", | ||
| 1052 | col: 'other-group-flex', | ||
| 1053 | default: "Y", | ||
| 1054 | options: [ | ||
| 1055 | { | ||
| 1056 | label: "是", | ||
| 1057 | value: "Y", | ||
| 1058 | }, | ||
| 1059 | { | ||
| 1060 | label: "否", | ||
| 1061 | value: "N", | ||
| 1062 | }, | ||
| 1063 | ], | ||
| 1064 | inputOptions: { | ||
| 1065 | label: '', | ||
| 1066 | col: 'other-input', | ||
| 1067 | width: '100%', | ||
| 1068 | type: "select", | ||
| 1069 | placeholder: "敏感信息主体", | ||
| 1070 | field: "sensitiveInvolvingSubject", | ||
| 1071 | default: '', | ||
| 1072 | props: { | ||
| 1073 | value: "value", | ||
| 1074 | label: "label", | ||
| 1075 | }, | ||
| 1076 | options: [], | ||
| 1077 | filterable: true, | ||
| 1078 | clearable: true, | ||
| 1079 | visible: true, | ||
| 1080 | required: true, | ||
| 1081 | }, | ||
| 1082 | required: true, | ||
| 1083 | }, | ||
| 1084 | { // 只有是敏感时才展示 | ||
| 1085 | label: '敏感数据覆盖数量(条)', | ||
| 1086 | field: 'sensitiveDataCoverageNumber', | ||
| 1087 | placeholder: "请输入整数", | ||
| 1088 | type: 'input', | ||
| 1089 | inputType: 'integerNumber', | ||
| 1090 | maxlength: 6, | ||
| 1091 | default: null, | ||
| 1092 | clearable: true, | ||
| 1093 | required: true, | ||
| 1094 | }, | ||
| 1095 | { | ||
| 1096 | label: '是否脱敏', | ||
| 1097 | type: "radio-group", | ||
| 1098 | placeholder: '请选择', | ||
| 1099 | field: 'desensitizationSituation', | ||
| 1100 | default: 'Y', | ||
| 1101 | options: [{ | ||
| 1102 | value: 'Y', | ||
| 1103 | label: '是' | ||
| 1104 | }, { | ||
| 1105 | value: 'N', | ||
| 1106 | label: '否' | ||
| 1107 | }], | ||
| 1108 | props: { | ||
| 1109 | value: 'value', | ||
| 1110 | label: 'label' | ||
| 1111 | }, | ||
| 1112 | required: true, | ||
| 1113 | filterable: true, | ||
| 1114 | clearable: true, | ||
| 1115 | visible: true | ||
| 1116 | }, | ||
| 1117 | { | ||
| 1118 | label: "脱敏方式", | ||
| 1119 | type: "input-group", | ||
| 1120 | field: "desensitizationMethodGroup", | ||
| 1121 | default: "", | ||
| 1122 | children: [ | ||
| 1123 | { | ||
| 1124 | type: "select", | ||
| 1125 | placeholder: "请选择", | ||
| 1126 | field: "desensitizationMethod", | ||
| 1127 | default: "", | ||
| 1128 | col: "w50-l", | ||
| 1129 | options: [], | ||
| 1130 | filterable: true, | ||
| 1131 | clearable: false, | ||
| 1132 | required: true, | ||
| 1133 | }, | ||
| 1134 | { | ||
| 1135 | label: "", | ||
| 1136 | type: "input", | ||
| 1137 | placeholder: "请输入其他方式", | ||
| 1138 | col: "w50 no-margin-r", | ||
| 1139 | field: "desensitizationOtherMethod", | ||
| 1140 | default: '', | ||
| 1141 | maxlenght: 50, | ||
| 1142 | clearable: true, | ||
| 1143 | visible: false, | ||
| 1144 | required: true, | ||
| 1145 | }, | ||
| 1146 | ], | ||
| 1147 | clearable: true, | ||
| 1148 | required: true, | ||
| 1149 | }, | ||
| 1150 | { | ||
| 1151 | label: '存证方式', | ||
| 1152 | type: 'select', | ||
| 1153 | placeholder: '请选择', | ||
| 1154 | field: 'depositMethod', | ||
| 1155 | default: '', | ||
| 1156 | options: [], | ||
| 1157 | props: { | ||
| 1158 | value: 'value', | ||
| 1159 | label: 'label' | ||
| 1160 | }, | ||
| 1161 | required: true, | ||
| 1162 | filterable: true, | ||
| 1163 | clearable: true, | ||
| 1164 | visible: true | ||
| 1165 | }, | ||
| 1166 | { | ||
| 1167 | type: "input", | ||
| 1168 | label: "禁用场景", | ||
| 1169 | field: "disableScene", | ||
| 1170 | default: "", | ||
| 1171 | maxlength: 50, | ||
| 1172 | placeholder: "请输入", | ||
| 1173 | required: true, | ||
| 1174 | clearable: true | ||
| 1175 | }, | ||
| 1176 | { | ||
| 1177 | label: "共享类型", | ||
| 1178 | type: "input-group", | ||
| 1179 | field: "sharingTypeGroup", | ||
| 1180 | default: "", | ||
| 1181 | children: [ | ||
| 1182 | { | ||
| 1183 | type: "select", | ||
| 1184 | placeholder: "请选择", | ||
| 1185 | field: "sharingType", | ||
| 1186 | default: "", | ||
| 1187 | col: "w50-l", | ||
| 1188 | options: [], | ||
| 1189 | filterable: true, | ||
| 1190 | clearable: true, | ||
| 1191 | required: true, | ||
| 1192 | }, | ||
| 1193 | { | ||
| 1194 | label: "", | ||
| 1195 | type: "input", | ||
| 1196 | placeholder: "请输入", | ||
| 1197 | col: "w50 no-margin-r", | ||
| 1198 | field: "sharingConditions", | ||
| 1199 | default: '', | ||
| 1200 | maxlenght: 50, | ||
| 1201 | clearable: true, | ||
| 1202 | visible: false, | ||
| 1203 | required: true, | ||
| 1204 | }, | ||
| 1205 | ], | ||
| 1206 | clearable: true, | ||
| 1207 | required: true, | ||
| 1208 | }, | ||
| 1209 | { | ||
| 1210 | label: "共享方式", | ||
| 1211 | type: "input-group", | ||
| 1212 | field: "sharingMethodGroup", | ||
| 1213 | default: "", | ||
| 1214 | children: [ | ||
| 1215 | { | ||
| 1216 | type: "select", | ||
| 1217 | placeholder: "请选择", | ||
| 1218 | field: "sharingMethod", | ||
| 1219 | default: "", | ||
| 1220 | col: "w50-l", | ||
| 1221 | options: [], | ||
| 1222 | filterable: true, | ||
| 1223 | clearable: false, | ||
| 1224 | required: true, | ||
| 1225 | }, | ||
| 1226 | { | ||
| 1227 | label: "", | ||
| 1228 | type: "input", | ||
| 1229 | placeholder: "请输入其他方式", | ||
| 1230 | col: "w50 no-margin-r", | ||
| 1231 | field: "sharingOtherMethod", | ||
| 1232 | default: '', | ||
| 1233 | maxlenght: 50, | ||
| 1234 | clearable: true, | ||
| 1235 | visible: false, | ||
| 1236 | required: true, | ||
| 1237 | }, | ||
| 1238 | ], | ||
| 1239 | clearable: true, | ||
| 1240 | required: true, | ||
| 1241 | }, | ||
| 1242 | { | ||
| 1243 | label: '产品用途', | ||
| 1244 | type: 'select', | ||
| 1245 | placeholder: '请选择', | ||
| 1246 | field: 'productUsage', | ||
| 1247 | default: '', | ||
| 1248 | options: [], | ||
| 1249 | props: { | ||
| 1250 | value: 'value', | ||
| 1251 | label: 'label' | ||
| 1252 | }, | ||
| 1253 | required: true, | ||
| 1254 | filterable: true, | ||
| 1255 | clearable: true, | ||
| 1256 | visible: true | ||
| 1257 | }, | ||
| 1258 | { | ||
| 1259 | label: "是否向社会开放", | ||
| 1260 | type: "radio-group", | ||
| 1261 | placeholder: "", | ||
| 1262 | field: "isSocialOpenness", | ||
| 1263 | col: 'other-group-flex', | ||
| 1264 | default: "Y", | ||
| 1265 | options: [ | ||
| 1266 | { | ||
| 1267 | label: "是", | ||
| 1268 | value: "Y", | ||
| 1269 | }, | ||
| 1270 | { | ||
| 1271 | label: "否", | ||
| 1272 | value: "N", | ||
| 1273 | }, | ||
| 1274 | ], | ||
| 1275 | inputOptions: { | ||
| 1276 | label: '', | ||
| 1277 | col: 'other-input', | ||
| 1278 | width: '100%', | ||
| 1279 | type: "input", | ||
| 1280 | placeholder: "请输入开放条件", | ||
| 1281 | field: "opennessConditions", | ||
| 1282 | default: '', | ||
| 1283 | clearable: true, | ||
| 1284 | visible: true, | ||
| 1285 | required: true, | ||
| 1286 | }, | ||
| 1287 | required: true, | ||
| 1288 | }, | ||
| 1289 | { | ||
| 1290 | label: "是否基于被授权资源开发", | ||
| 1291 | type: "radio-group", | ||
| 1292 | placeholder: "", | ||
| 1293 | field: "isAuthreSourceDevelop", | ||
| 1294 | default: 'N', | ||
| 1295 | options: [{ | ||
| 1296 | value: 'Y', | ||
| 1297 | label: '是', | ||
| 1298 | }, { | ||
| 1299 | value: 'N', | ||
| 1300 | label: '否', | ||
| 1301 | }], | ||
| 1302 | required: true, | ||
| 1303 | }, | ||
| 1304 | { | ||
| 1305 | label: "是否共有数据", | ||
| 1306 | type: "radio-group", | ||
| 1307 | placeholder: "", | ||
| 1308 | field: "isSharedData", | ||
| 1309 | default: 'N', | ||
| 1310 | options: [{ | ||
| 1311 | value: 'Y', | ||
| 1312 | label: '是', | ||
| 1313 | }, { | ||
| 1314 | value: 'N', | ||
| 1315 | label: '否', | ||
| 1316 | }], | ||
| 1317 | required: true, | ||
| 1318 | }, | ||
| 1319 | ]); | ||
| 1320 | |||
| 1321 | const productRegisterInfoFormRules = ref({ | ||
| 1322 | // dataRegistName: [required('产品登记名称不能为空')], | ||
| 1323 | dataCoverageTimeRange: [{ | ||
| 1324 | type: 'array', required: true, message: '请选择数据覆盖时间', trigger: 'change', | ||
| 1325 | }], | ||
| 1326 | industry: [required('请选择行业分类')], | ||
| 1327 | industryBigcode: [required('请选择行业大类')], | ||
| 1328 | dataType: [required('请选择数据类型')], | ||
| 1329 | coverageAreas: [required('请选择资源覆盖地域')], | ||
| 1330 | dataProductsAndServicesType: [required('请选择数据产品和服务类型')], | ||
| 1331 | dataProductsAndServicesOtherType: [required('请输入其他类型')], | ||
| 1332 | productionMethod: [required('请选择数据生产方式')], | ||
| 1333 | productionOtherMethod: [required('请输入其他生产方式')], | ||
| 1334 | dataStructure: [required('请选择数据结构')], | ||
| 1335 | dataOtherStructure: [required('请输入其他数据结构')], | ||
| 1336 | dataProvisionFormat: [required('请选择数据提供格式')], | ||
| 1337 | dataProvisionOtherFormat: [required('请输入其他格式')], | ||
| 1338 | storageMethod: [required('请选择存储方式')], | ||
| 1339 | storageOtherMethod: [required('请输入其他存储方式')], | ||
| 1340 | updateMethod: [required('请选择数据更新方式')], | ||
| 1341 | dataStorage: [required('请输入数据存储量(初始)')], | ||
| 1342 | dataStorageUnit: [required('请选择单位')], | ||
| 1343 | dataStorageIncrease: [required('请输入数据存储量(增长)')], | ||
| 1344 | dataStorageIncreaseUnit: [required('请选择单位')], | ||
| 1345 | sensitiveInformation: [required('请选择是否包含敏感信息')], | ||
| 1346 | sensitiveInvolvingSubject: [required('请选择敏感信息主体')], | ||
| 1347 | sensitiveDataCoverageNumber: [required('请输入敏感数据覆盖数量')], | ||
| 1348 | desensitizationSituation: [required('请选择是否脱敏')], | ||
| 1349 | desensitizationMethod: [required('请选择脱敏方式')], | ||
| 1350 | desensitizationOtherMethod: [required('请输入其他脱敏方式')], | ||
| 1351 | depositMethod: [required('请选择存证方式')], | ||
| 1352 | disableScene: [required('请输入禁用场景')], | ||
| 1353 | sharingType: [required('请选择共享类型')], | ||
| 1354 | sharingConditions: [required('请输入共享条件')], | ||
| 1355 | sharingMethod: [required('请选择共享方式')], | ||
| 1356 | sharingOtherMethod: [required('请输入其他共享方式')], | ||
| 1357 | opennessConditions: [required('请输入开放条件')], | ||
| 1358 | productUsage: [required('请选择产品用途')], | ||
| 1359 | |||
| 1360 | }); | ||
| 1361 | |||
| 1362 | const setRegisterFormItems = (formValue, isEdit = false) => { | ||
| 1363 | formValue = Object.assign({ desensitizationSituation: 'Y', sensitiveInformation: 'Y', isAuthreSourceDevelop: 'N', isSharedData: 'N' }, formValue); | ||
| 1364 | productRegisterInfoItems.value.forEach((item, index) => { | ||
| 1365 | item.default = formValue[item.field]; | ||
| 1366 | if (item.children?.length) { | ||
| 1367 | item.children.forEach(child => { | ||
| 1368 | child.default = formValue[child.field]; | ||
| 1369 | }) | ||
| 1370 | } | ||
| 1371 | if (item.field == 'dataProductsAndServicesTypeGroup') { | ||
| 1372 | item.children && (item.children[1].visible = item.children[0].default == '6'); | ||
| 1373 | } else if (item.field == 'productionMethodGroup') { | ||
| 1374 | item.children && (item.children[1].visible = item.children[0].default == '8'); | ||
| 1375 | } else if (item.field == 'dataStructureGroup') { | ||
| 1376 | item.children && (item.children[1].visible = item.children[0].default == '4'); | ||
| 1377 | } else if (item.field == 'dataProvisionFormatGroup') { | ||
| 1378 | item.children && (item.children[1].visible = item.children[0].default == '5'); | ||
| 1379 | } else if (item.field == 'storageMethodGroup') { | ||
| 1380 | item.children && (item.children[1].visible = item.children[0].default == '7'); | ||
| 1381 | } else if (item.field == 'sharingMethodGroup') { | ||
| 1382 | // item.visible = formValue.sharingType == '1' || formValue.sharingType == '2' | ||
| 1383 | item.children && (item.children[1].visible = item.children[0].default == '5'); | ||
| 1384 | } else if (item.field == 'desensitizationMethodGroup') { //脱敏方式,现实条件,脱敏为是 | ||
| 1385 | item.visible = formValue['desensitizationSituation'] == 'Y'; | ||
| 1386 | item.children && (item.children[1].visible = item.children[0].default == '7'); | ||
| 1387 | } else if (item.field == 'sharingTypeGroup') { | ||
| 1388 | item.children && (item.children[1].visible = item.children[0].default == '2'); | ||
| 1389 | productRegisterInfoItems.value[index + 1].visible = formValue['sharingType'] != '3'; | ||
| 1390 | } else if (item.field == 'industryBigcode') {// 带出行业大类列表 | ||
| 1391 | item.options = !formValue['industry'] ? [] : (dictListMap.value['industry'].find(v => v.value == formValue['industry']).childDictList || []); | ||
| 1392 | } else if (item.field == 'coverageArea') { | ||
| 1393 | item && item.children?.length && (item.children[0].visible = formValue['coverageArea'] != 'all'); | ||
| 1394 | let coverageArea = formValue.coverageArea; | ||
| 1395 | if (coverageArea && Array.isArray(coverageArea) && coverageArea.length > 0) { | ||
| 1396 | if (coverageArea[0][0] == 'all') { | ||
| 1397 | item.default = 'all'; | ||
| 1398 | if (item.children?.length) { | ||
| 1399 | item.children[0].visible = false; | ||
| 1400 | item.children[0].default = []; | ||
| 1401 | } | ||
| 1402 | } else { | ||
| 1403 | item.default = ''; | ||
| 1404 | if (item.children?.length) { | ||
| 1405 | item.children[0].visible = true; | ||
| 1406 | item.children[0].default = coverageArea[0] as any; | ||
| 1407 | let p: any = []; | ||
| 1408 | coverageArea?.forEach(area => { | ||
| 1409 | if (p.includes(area[0])) { | ||
| 1410 | return; | ||
| 1411 | } | ||
| 1412 | p.push(area[0]); | ||
| 1413 | getArea({ value: area[0], level: 1 }, () => { }) | ||
| 1414 | }); | ||
| 1415 | let ps: any = [] | ||
| 1416 | for (const key in getAreaDataPromise.value) { | ||
| 1417 | ps.push(getAreaDataPromise.value[key]) | ||
| 1418 | } | ||
| 1419 | Promise.all(ps).then(() => { | ||
| 1420 | item.children[0].default = coverageArea[0]; | ||
| 1421 | }); | ||
| 1422 | } | ||
| 1423 | } | ||
| 1424 | } else { | ||
| 1425 | item.default = ''; | ||
| 1426 | } | ||
| 1427 | } else if (item.field == 'sensitiveInformation') { | ||
| 1428 | item.inputOptions && (item.inputOptions.default = formValue[item.inputOptions.field]); | ||
| 1429 | item.inputOptions && (item.inputOptions.visible = item.default == 'Y'); | ||
| 1430 | productRegisterInfoItems.value[index + 1].visible = item.default == 'Y';// 敏感数据覆盖量 | ||
| 1431 | productRegisterInfoItems.value[index + 2].visible = item.default == 'Y';// 是否脱敏 | ||
| 1432 | productRegisterInfoItems.value[index + 3].visible = item.default == 'Y' && formValue['desensitizationSituation'] == 'Y';// 脱敏方式 | ||
| 1433 | } else if (item.field == 'isSocialOpenness') { //是否向社会开放,否需要填写开放条件 | ||
| 1434 | item.inputOptions && (item.inputOptions.default = formValue[item.inputOptions.field]); | ||
| 1435 | item.inputOptions && (item.inputOptions.visible = item.default == 'Y'); | ||
| 1436 | } | ||
| 1437 | }); | ||
| 1438 | } | ||
| 1439 | |||
| 1440 | const handleRegisterFormSelectChange = (val, row, info) => { | ||
| 1441 | if (row.field == 'dataProductsAndServicesType' || row.field == 'productionMethod' || row.field == 'dataStructure' || | ||
| 1442 | row.field == 'dataProvisionFormat' || row.field == 'storageMethod' || row.field == 'desensitizationMethod' || row.field == 'sharingType' | ||
| 1443 | || row.field == 'sharingMethod') { | ||
| 1444 | setRegisterFormItems(info); | ||
| 1445 | } else if (row.field == 'industry') { | ||
| 1446 | info.industryBigcode = ''; | ||
| 1447 | setRegisterFormItems(info); | ||
| 1448 | // if (val) { | ||
| 1449 | // //判断自动生成产品登记名称 | ||
| 1450 | // let formInline = formRef.value.formInline; | ||
| 1451 | // let dataCoverages = formInline.dataCoverages; | ||
| 1452 | // let cov = dataCoverages == '1' ? '全国' : (!formInline.formInline ? 'XX' : dictListMap.value['dataCoverage'].find(f => f.value == formInline.dataCoverage).label); | ||
| 1453 | // productRegisterInfoItems.value[0].default = cov + '-' + (val || 'XX') + '-' + (formInline.productName || 'XX') | ||
| 1454 | // } | ||
| 1455 | } | ||
| 1456 | } | ||
| 1457 | |||
| 1458 | const handleRegisterFormCheckboxChange = (val, info, row) => { | ||
| 1459 | row.field == 'coverageArea' && setRegisterFormItems(info); | ||
| 1460 | } | ||
| 1461 | |||
| 1462 | const handleRegisterRadioGroupChange = (val, info, row) => { | ||
| 1463 | row.field == 'sensitiveInformation' && setRegisterFormItems(info); | ||
| 1464 | row.field == 'desensitizationSituation' && setRegisterFormItems(info); | ||
| 1465 | row.field == 'isSocialOpenness' && setRegisterFormItems(info); | ||
| 1466 | if (row.field == 'isAuthreSourceDevelop') { | ||
| 1467 | if (val == 'N' && registerFormRef.value?.formInline.isSharedData == 'Y' && activeShareTabName.value == 'authSource') { | ||
| 1468 | activeShareTabName.value = 'shareOrgs'; | ||
| 1469 | } else if (val == 'Y' && activeShareTabName.value == 'shareOrgs' && registerFormRef.value?.formInline.isSharedData == 'N') { | ||
| 1470 | activeShareTabName.value = 'authSource'; | ||
| 1471 | } | ||
| 1472 | } else if (row.field == 'isSharedData') { | ||
| 1473 | if (val == 'N' && registerFormRef.value?.formInline.isAuthreSourceDevelop == 'Y' && activeShareTabName.value == 'shareOrgs') { | ||
| 1474 | activeShareTabName.value = 'authSource'; | ||
| 1475 | } else if (val == 'Y' && activeShareTabName.value == 'authSource' && registerFormRef.value?.formInline.isAuthreSourceDevelop == 'N') { | ||
| 1476 | activeShareTabName.value = 'shareOrgs'; | ||
| 1477 | } | ||
| 1478 | } | ||
| 1479 | } | ||
| 1480 | |||
| 1481 | const activeShareTabName = ref('authSource'); | ||
| 1482 | |||
| 1483 | /** ----------------- 被授权资源相关信息 ------------------------- */ | ||
| 1484 | const authSourceTableRef = ref(); | ||
| 1485 | const authSourceData: any = ref([]); | ||
| 1486 | |||
| 1487 | /** 被授权资源信息的表格配置 */ | ||
| 1488 | const authSourceTableInfo = ref({ | ||
| 1489 | id: "auth-table", | ||
| 1490 | height: '214px', | ||
| 1491 | fields: [ | ||
| 1492 | { label: "序号", type: "index", width: TableColumnWidth.INDEX, align: "center" }, | ||
| 1493 | { label: "授权运营时间起", field: "authOperatTimeStart", width: 140, required: true, columClass: 'edit-colum', type: 'edit' }, | ||
| 1494 | { label: "授权运营时间止", field: "authOperatTimeEnd", width: 140, required: true, columClass: 'edit-colum', type: 'edit' }, | ||
| 1495 | { label: "数据资源登记确认单编码", field: "dataRegistCode", width: 200, required: true, columClass: 'edit-colum', type: 'edit' }, | ||
| 1496 | { label: "数据资源登记名称", field: "dataRegistName", width: 160, required: true, columClass: 'edit-colum', type: 'edit' }, | ||
| 1497 | ], | ||
| 1498 | editInfo: { | ||
| 1499 | dataRegistCode: { | ||
| 1500 | label: '', | ||
| 1501 | type: 'input', | ||
| 1502 | field: 'dataRegistCode', | ||
| 1503 | default: '', | ||
| 1504 | maxlength: 50, | ||
| 1505 | placeholder: '请输入', | ||
| 1506 | clearable: true, | ||
| 1507 | }, | ||
| 1508 | dataRegistName: { | ||
| 1509 | label: '', | ||
| 1510 | type: 'input', | ||
| 1511 | field: 'dataRegistName', | ||
| 1512 | default: '', | ||
| 1513 | maxlength: 50, | ||
| 1514 | placeholder: '请输入', | ||
| 1515 | clearable: true, | ||
| 1516 | }, | ||
| 1517 | authOperatTimeStart: { | ||
| 1518 | label: '', | ||
| 1519 | type: 'date', | ||
| 1520 | field: 'authOperatTimeStart', | ||
| 1521 | default: '', | ||
| 1522 | placeholder: '请选择', | ||
| 1523 | clearable: true, | ||
| 1524 | }, | ||
| 1525 | authOperatTimeEnd: { | ||
| 1526 | label: '', | ||
| 1527 | type: 'date', | ||
| 1528 | field: 'authOperatTimeEnd', | ||
| 1529 | default: '', | ||
| 1530 | placeholder: '请选择', | ||
| 1531 | clearable: true, | ||
| 1532 | }, | ||
| 1533 | }, | ||
| 1534 | STATUS: 'edit', | ||
| 1535 | data: authSourceData.value, | ||
| 1536 | showPage: false, | ||
| 1537 | actionInfo: { | ||
| 1538 | show: true, | ||
| 1539 | label: "操作", | ||
| 1540 | type: "btn", | ||
| 1541 | width: 60, | ||
| 1542 | fixed: 'right', | ||
| 1543 | btns: [ | ||
| 1544 | { | ||
| 1545 | label: "删除", value: "remove", click: (scope) => { | ||
| 1546 | let index = scope.$index; | ||
| 1547 | proxy.$openMessageBox("此操作将永久删除, 是否继续?", () => { | ||
| 1548 | authSourceData.value.splice(index, 1); | ||
| 1549 | authSourceTableInfo.value.data = authSourceData.value; | ||
| 1550 | proxy.$ElMessage.success('被授权资源删除成功'); | ||
| 1551 | }, () => { | ||
| 1552 | proxy.$ElMessage.info("已取消"); | ||
| 1553 | }); | ||
| 1554 | } | ||
| 1555 | }, | ||
| 1556 | ] | ||
| 1557 | }, | ||
| 1558 | loading: false | ||
| 1559 | }); | ||
| 1560 | |||
| 1561 | /** 给表格添加一行入参定义。 */ | ||
| 1562 | const addAuthSources = () => { | ||
| 1563 | authSourceData.value.push({ authOperatTimeStart: '', authOperatTimeEnd: '', dataRegistCode: '', dataRegistName: '' }); | ||
| 1564 | authSourceTableInfo.value.data = authSourceData.value; | ||
| 1565 | nextTick(() => { | ||
| 1566 | scrollLastRowToView(authSourceTableRef.value?.tableRef, authSourceData.value.length); | ||
| 1567 | }) | ||
| 1568 | } | ||
| 1569 | |||
| 1570 | /** ------------------- 共有组织机构表格信息 --------------- */ | ||
| 1571 | const orgTableRef = ref(); | ||
| 1572 | const orgData: any = ref([]); | ||
| 1573 | /** 组织机构性质 */ | ||
| 1574 | const sharedInstitutiontTypeList: any = ref([]); | ||
| 1575 | /** 被授权资源信息的表格配置 */ | ||
| 1576 | const orgTableInfo = ref({ | ||
| 1577 | id: "org-table", | ||
| 1578 | height: '214px', | ||
| 1579 | fields: [ | ||
| 1580 | { label: "序号", type: "index", width: TableColumnWidth.INDEX, align: "center" }, | ||
| 1581 | { label: "共有组织统一社会信用代码", field: "sharedInstitutionCode", width: 220, required: true, columClass: 'edit-colum', type: 'edit' }, | ||
| 1582 | { label: "共有组织机构名称", field: "sharedInstitutionName", width: 160, required: true, columClass: 'edit-colum', type: 'edit' }, | ||
| 1583 | { label: "组织机构性质", field: "sharedInstitutiontType", width: 130, required: true, columClass: 'edit-colum', type: 'edit' }, | ||
| 1584 | { label: "注册地址", field: "sharedInstitutionAdress", width: 170, required: false, columClass: 'edit-colum', type: 'edit' }, | ||
| 1585 | ], | ||
| 1586 | editInfo: { | ||
| 1587 | sharedInstitutionCode: { | ||
| 1588 | label: '', | ||
| 1589 | type: 'input', | ||
| 1590 | field: 'sharedInstitutionCode', | ||
| 1591 | default: '', | ||
| 1592 | maxlength: 50, | ||
| 1593 | placeholder: '请输入', | ||
| 1594 | clearable: true, | ||
| 1595 | }, | ||
| 1596 | sharedInstitutionName: { | ||
| 1597 | label: '', | ||
| 1598 | type: 'input', | ||
| 1599 | field: 'sharedInstitutionName', | ||
| 1600 | default: '', | ||
| 1601 | maxlength: 50, | ||
| 1602 | placeholder: '请输入', | ||
| 1603 | clearable: true, | ||
| 1604 | }, | ||
| 1605 | sharedInstitutiontType: { | ||
| 1606 | label: '', | ||
| 1607 | type: 'select', | ||
| 1608 | field: 'sharedInstitutiontType', | ||
| 1609 | default: '', | ||
| 1610 | options: sharedInstitutiontTypeList.value, | ||
| 1611 | props: { | ||
| 1612 | label: 'label', | ||
| 1613 | value: 'value' | ||
| 1614 | }, | ||
| 1615 | placeholder: '请选择', | ||
| 1616 | clearable: true, | ||
| 1617 | filterable: true | ||
| 1618 | }, | ||
| 1619 | sharedInstitutionAdress: { | ||
| 1620 | label: '', | ||
| 1621 | type: 'input', | ||
| 1622 | field: 'sharedInstitutionAdress', | ||
| 1623 | default: '', | ||
| 1624 | maxlength: 100, | ||
| 1625 | placeholder: '请输入', | ||
| 1626 | clearable: true, | ||
| 1627 | }, | ||
| 1628 | }, | ||
| 1629 | STATUS: 'edit', | ||
| 1630 | data: orgData.value, | ||
| 1631 | showPage: false, | ||
| 1632 | actionInfo: { | ||
| 1633 | show: true, | ||
| 1634 | label: "操作", | ||
| 1635 | type: "btn", | ||
| 1636 | width: 60, | ||
| 1637 | fixed: 'right', | ||
| 1638 | btns: [ | ||
| 1639 | { | ||
| 1640 | label: "删除", value: "remove", click: (scope) => { | ||
| 1641 | let index = scope.$index; | ||
| 1642 | proxy.$openMessageBox("此操作将永久删除, 是否继续?", () => { | ||
| 1643 | orgData.value.splice(index, 1); | ||
| 1644 | orgTableInfo.value.data = orgData.value; | ||
| 1645 | proxy.$ElMessage.success('被授权资源删除成功'); | ||
| 1646 | }, () => { | ||
| 1647 | proxy.$ElMessage.info("已取消"); | ||
| 1648 | }); | ||
| 1649 | } | ||
| 1650 | }, | ||
| 1651 | ] | ||
| 1652 | }, | ||
| 1653 | loading: false | ||
| 1654 | }); | ||
| 1655 | |||
| 1656 | /** 给表格添加一行入参定义。 */ | ||
| 1657 | const addOrgs = () => { | ||
| 1658 | orgData.value.push({ sharedInstitutionCode: '', sharedInstitutionName: '', sharedInstitutiontType: '', sharedInstitutionAdress: '' }); | ||
| 1659 | orgTableInfo.value.data = orgData.value; | ||
| 1660 | nextTick(() => { | ||
| 1661 | scrollLastRowToView(orgTableRef.value?.tableRef, orgData.value.length); | ||
| 1662 | }) | ||
| 1663 | } | ||
| 1664 | |||
| 1665 | /** --------------------- 产品附件信息 ------------- */ | ||
| 1666 | const uploadFormRef = ref(); | ||
| 1667 | const uploadFormItems: any = ref([]); | ||
| 1668 | /** 上传文件类型的字典列表 */ | ||
| 1669 | const uploadFileList: any = ref([]); | ||
| 1670 | const uploadFormRules: any = ref({}); | ||
| 1671 | |||
| 1672 | /** 获取产品基本信息的字典列表并设置 */ | ||
| 1673 | const getDictListDataByKey = (key, dictType) => { | ||
| 1674 | getParamsList({ dictType: dictType }).then((res: any) => { | ||
| 1675 | if (res?.code == proxy.$passCode) { | ||
| 1676 | dictListMap.value[key] = res.data || []; | ||
| 1677 | let item = productBaseInfoItems.value.find(i => i.field == key); | ||
| 1678 | item && (item.options = dictListMap.value[key]); | ||
| 1679 | } else { | ||
| 1680 | proxy.$ElMessage.error(res.msg); | ||
| 1681 | } | ||
| 1682 | }) | ||
| 1683 | } | ||
| 1684 | |||
| 1685 | /** 获取产品登记信息的字典列表并设置 */ | ||
| 1686 | const getRegisterDictDataByKey = (key, dictType, isChild = false) => { | ||
| 1687 | return getParamsList({ dictType: dictType }).then((res: any) => { | ||
| 1688 | if (res?.code == proxy.$passCode) { | ||
| 1689 | dictListMap.value[key] = res.data || []; | ||
| 1690 | let item = productRegisterInfoItems.value.find(i => !isChild ? i.field == key : i.field == `${key}Group`); | ||
| 1691 | if (isChild) { | ||
| 1692 | let childItem: any = item && item.children?.length && item.children.find(c => c.field == key); | ||
| 1693 | if (childItem && childItem.field == 'productionMethod') { | ||
| 1694 | childItem.options = dictListMap.value['productionMethod'].filter(d => ['1', '2', '3', '5', '8'].includes(d.value)); | ||
| 1695 | } else { | ||
| 1696 | childItem && (childItem.options = dictListMap.value[key]); | ||
| 1697 | } | ||
| 1698 | } else { | ||
| 1699 | item && (item.options = dictListMap.value[key]); | ||
| 1700 | } | ||
| 1701 | return; | ||
| 1702 | } else { | ||
| 1703 | proxy.$ElMessage.error(res.msg); | ||
| 1704 | } | ||
| 1705 | }) | ||
| 1706 | } | ||
| 1707 | |||
| 1708 | const deploymentId = ref(''); | ||
| 1709 | |||
| 1710 | const baseInfoExpand = ref(true); | ||
| 1711 | const paramsInfoExpand = ref(true); | ||
| 1712 | const registerInfoExpand = ref(true); | ||
| 1713 | const authInfoExpand = ref(true); | ||
| 1714 | const uploadInfoExpand = ref(true); | ||
| 1715 | /** 获取详情信息接口 */ | ||
| 1716 | const detailInfo: any = ref({}); | ||
| 1717 | |||
| 1718 | onBeforeMount(async () => { | ||
| 1719 | if (guid) { | ||
| 1720 | fullscreenLoading.value = true; | ||
| 1721 | } | ||
| 1722 | getDictListDataByKey('productType', '资产类型'); | ||
| 1723 | getDictListDataByKey('updateFrequency', '更新周期'); | ||
| 1724 | getDictListDataByKey('medDepartmentCode', '科室'); | ||
| 1725 | getParamsList({ dictType: '数据资产目录主题名称' }).then((res: any) => { | ||
| 1726 | if (res?.code == proxy.$passCode) { | ||
| 1727 | let key = 'subjectDomain'; | ||
| 1728 | dictListMap.value[key] = res.data || []; | ||
| 1729 | let item = productBaseInfoItems.value.find(i => i.field == key); | ||
| 1730 | item && (item.options = dictListMap.value[key]?.find(d => d.value == '1')?.childDictList || []); | ||
| 1731 | } else { | ||
| 1732 | proxy.$ElMessage.error(res.msg); | ||
| 1733 | } | ||
| 1734 | }) | ||
| 1735 | getDictListDataByKey('dataSources', '数据来源'); | ||
| 1736 | getDiseaseAll().then((res: any) => { | ||
| 1737 | if (res?.code == proxy.$passCode) { | ||
| 1738 | let key = 'diseaseGuid'; | ||
| 1739 | dictListMap.value[key] = res.data || []; | ||
| 1740 | let item = productBaseInfoItems.value.find(i => i.field == key); | ||
| 1741 | item && (item.options = dictListMap.value[key]); | ||
| 1742 | } | ||
| 1743 | }) | ||
| 1744 | getParamsList({ dictType: '数据覆盖范围' }).then((res: any) => { | ||
| 1745 | if (res?.code == proxy.$passCode) { | ||
| 1746 | let key = 'dataCoverage'; | ||
| 1747 | dictListMap.value[key] = res.data || []; | ||
| 1748 | let item = productBaseInfoItems.value.find(i => i.field == 'dataCoverages'); | ||
| 1749 | item && item.children?.[0] && (item.children[0].options = dictListMap.value[key]?.slice(1) || []); | ||
| 1750 | } else { | ||
| 1751 | proxy.$ElMessage.error(res.msg); | ||
| 1752 | } | ||
| 1753 | }) | ||
| 1754 | getDictListDataByKey('productDirection', '产品应用方向'); | ||
| 1755 | getParamsList({ dictType: '参数类型' }).then((res: any) => { | ||
| 1756 | if (res?.code == proxy.$passCode) { | ||
| 1757 | fieldValueTypeList.value = res.data || []; | ||
| 1758 | inputParamsTableInfo.value.editInfo.fieldValueType.options = fieldValueTypeList.value; | ||
| 1759 | respParamsTableInfo.value.editInfo.fieldValueType.options = fieldValueTypeList.value; | ||
| 1760 | } else { | ||
| 1761 | proxy.$ElMessage.error(res.msg); | ||
| 1762 | } | ||
| 1763 | }) | ||
| 1764 | getRegisterDictDataByKey('dataProductsAndServicesType', '数据产品和服务类型', true); | ||
| 1765 | getRegisterDictDataByKey('dataType', '数据分类', false); | ||
| 1766 | getParentAreaPromise.value = getAreaData({ parentId: null }).then((res: any) => { | ||
| 1767 | if (res?.code == proxy.$passCode) { | ||
| 1768 | parentAreaData.value = res.data ?? []; | ||
| 1769 | return parentAreaData.value; | ||
| 1770 | } | ||
| 1771 | }) | ||
| 1772 | // getAreaData({ parentId: null }).then((res: any) => { | ||
| 1773 | // if (res?.code == proxy.$passCode) { | ||
| 1774 | // parentAreaData.value = res.data ?? []; | ||
| 1775 | // let item = productRegisterInfoItems.value.find(i => i.field == 'coverageArea'); | ||
| 1776 | // item && item.children?.length && (item.children[0].options = parentAreaData.value); | ||
| 1777 | // } else { | ||
| 1778 | // proxy.$ElMessage.error(res.msg); | ||
| 1779 | // } | ||
| 1780 | // }); | ||
| 1781 | getRegisterDictDataByKey('productionMethod', '数据取得方式', true); | ||
| 1782 | getRegisterDictDataByKey('dataStructure', '数据结构', true); | ||
| 1783 | getRegisterDictDataByKey('dataProvisionFormat', '数据提供格式', true); | ||
| 1784 | getRegisterDictDataByKey('storageMethod', '数据存储方式', true); | ||
| 1785 | getRegisterDictDataByKey('updateMethod', '数据更新方式', false); | ||
| 1786 | getRegisterDictDataByKey('dataStorageUnit', '数据存储量单位', true).then(() => { | ||
| 1787 | let item = productRegisterInfoItems.value.find(i => i.field == 'dataStorageIncreaseUnitGroup'); | ||
| 1788 | item && item.children?.length && (item.children[1].options = dictListMap.value['dataStorageUnit']); | ||
| 1789 | }); | ||
| 1790 | getParamsList({ dictType: '敏感信息主体' }).then((res: any) => { | ||
| 1791 | if (res?.code == proxy.$passCode) { | ||
| 1792 | let key = 'sensitiveInvolvingSubject'; | ||
| 1793 | dictListMap.value[key] = res.data || []; | ||
| 1794 | let item = productRegisterInfoItems.value.find(i => i.field == 'sensitiveInformation'); | ||
| 1795 | item?.inputOptions && (item.inputOptions.options = dictListMap.value[key]); | ||
| 1796 | return; | ||
| 1797 | } else { | ||
| 1798 | proxy.$ElMessage.error(res.msg); | ||
| 1799 | } | ||
| 1800 | }); | ||
| 1801 | getRegisterDictDataByKey('desensitizationMethod', '脱敏方式', true); | ||
| 1802 | getRegisterDictDataByKey('depositMethod', '存证方式', false); | ||
| 1803 | getRegisterDictDataByKey('sharingType', '共享类型', true); | ||
| 1804 | getRegisterDictDataByKey('sharingMethod', '共享方式', true); | ||
| 1805 | getRegisterDictDataByKey('productUsage', '产品用途', false); | ||
| 1806 | getCamundaDeploymentId('10030', userData.tenantGuid, userData.staffGuid).then((res: any) => { | ||
| 1807 | if (res?.code == proxy.$passCode) { | ||
| 1808 | deploymentId.value = res.data; | ||
| 1809 | } else { | ||
| 1810 | proxy.$ElMessage.error(res.msg); | ||
| 1811 | } | ||
| 1812 | }) | ||
| 1813 | getParamsList({ dictType: '组织机构性质' }).then((res: any) => { | ||
| 1814 | if (res?.code == proxy.$passCode) { | ||
| 1815 | sharedInstitutiontTypeList.value = res.data || []; | ||
| 1816 | orgTableInfo.value.editInfo.sharedInstitutiontType.options = sharedInstitutiontTypeList.value; | ||
| 1817 | } else { | ||
| 1818 | proxy.$ElMessage.error(res.msg); | ||
| 1819 | } | ||
| 1820 | }); | ||
| 1821 | const res: any = await getParamsList({ dictType: '领域' }); | ||
| 1822 | if (res?.code == proxy.$passCode) { | ||
| 1823 | let key = 'domain'; | ||
| 1824 | dictListMap.value[key] = res.data || []; | ||
| 1825 | let itemIndex = productBaseInfoItems.value.findIndex(i => i.field == key); | ||
| 1826 | let item = productBaseInfoItems.value[itemIndex]; | ||
| 1827 | item && (item.options = dictListMap.value[key]); | ||
| 1828 | let item1 = productBaseInfoItems.value[itemIndex + 1]; | ||
| 1829 | item1 && item.default && (item1.options = dictListMap.value[key].find(s => s.value == item.default)?.childDictList || []); | ||
| 1830 | } else { | ||
| 1831 | proxy.$ElMessage.error(res.msg); | ||
| 1832 | } | ||
| 1833 | let ps1 = getRegisterDictDataByKey('industry', '行业分类', false); | ||
| 1834 | let ps2 = getParamsList({ dictType: '文件类型' }).then((res: any) => { | ||
| 1835 | if (res?.code == proxy.$passCode) { | ||
| 1836 | let data = uploadFileList.value = res.data || []; | ||
| 1837 | uploadFormRules.value = {}; | ||
| 1838 | uploadFormItems.value = data.map(d => { | ||
| 1839 | // uploadFormRules.value[`files-${d.value}`] = [{ | ||
| 1840 | // validator: (rule: any, value: any, callback: any) => { | ||
| 1841 | // if (!value?.length) { | ||
| 1842 | // callback(new Error('请上传文件')) | ||
| 1843 | // } else { | ||
| 1844 | // callback(); | ||
| 1845 | // } | ||
| 1846 | // }, trigger: 'change' | ||
| 1847 | // }]; | ||
| 1848 | return { | ||
| 1849 | label: d.label, | ||
| 1850 | tip: '支持扩展名:pdf、png、jpg、gif、rar、zip,单个文件不得大于10M', | ||
| 1851 | type: 'upload-file', | ||
| 1852 | accept: '.pdf, .png, .jpg, .gif, .rar, .zip', | ||
| 1853 | required: false, | ||
| 1854 | limitSize: 10, | ||
| 1855 | default: [], | ||
| 1856 | field: `files-${d.value}`, | ||
| 1857 | } | ||
| 1858 | }) | ||
| 1859 | } else { | ||
| 1860 | proxy.$ElMessage.error(res.msg); | ||
| 1861 | } | ||
| 1862 | }) | ||
| 1863 | if (guid) { | ||
| 1864 | fullscreenLoading.value = true; | ||
| 1865 | Promise.all([ps1, ps2]).then(() => { | ||
| 1866 | getRegiaterDetail({ guid: guid }).then((res: any) => { | ||
| 1867 | fullscreenLoading.value = false; | ||
| 1868 | if (res?.code == proxy.$passCode) { | ||
| 1869 | detailInfo.value = res.data || {}; | ||
| 1870 | detailInfo.value.dataSources = (detailInfo.value.dataSources || '') + ''; | ||
| 1871 | detailInfo.value.productKeywords = !detailInfo.value.productKeywords ? [] : detailInfo.value.productKeywords.split(','); | ||
| 1872 | let dataCoverage = detailInfo.value.dataCoverage; | ||
| 1873 | if (dataCoverage.length == 1 && dataCoverage[0] == '1') { | ||
| 1874 | detailInfo.value.dataCoverages = '1'; | ||
| 1875 | detailInfo.value.dataCoverage = []; | ||
| 1876 | } else { | ||
| 1877 | detailInfo.value.dataCoverages = ''; | ||
| 1878 | detailInfo.value.dataCoverage = dataCoverage; | ||
| 1879 | } | ||
| 1880 | let approveVO = detailInfo.value.approveVO; | ||
| 1881 | if (approveVO && (approveVO.approveState == 'C' || approveVO.approveState == 'R') && approveVO.staffGuid == userData.staffGuid && detailInfo.value.bizApproveState != 'D') { | ||
| 1882 | restart.value = true; | ||
| 1883 | } | ||
| 1884 | setProductBaseFormItems(detailInfo.value); | ||
| 1885 | let dataCoverageTimeRange: string[] = []; | ||
| 1886 | let dataCoverageStartTime = detailInfo.value.registerRSVO.dataCoverageStartTime; | ||
| 1887 | let dataCoverageEndTime = detailInfo.value.registerRSVO.dataCoverageEndTime; | ||
| 1888 | if (dataCoverageStartTime && dataCoverageEndTime) { | ||
| 1889 | dataCoverageTimeRange = [dataCoverageStartTime, dataCoverageEndTime]; | ||
| 1890 | } | ||
| 1891 | setRegisterFormItems(Object.assign({}, detailInfo.value.registerRSVO || {}, { | ||
| 1892 | dataCoverageTimeRange: dataCoverageTimeRange | ||
| 1893 | }), true); | ||
| 1894 | inputParamsData.value = detailInfo.value.reqParamListRSVOS?.map(d => { | ||
| 1895 | return { | ||
| 1896 | fieldEnName: d.fieldEnName, | ||
| 1897 | fieldCnName: d.fieldCnName, | ||
| 1898 | fieldValueType: d.fieldValueType, | ||
| 1899 | fieldMandatory: d.fieldMandatory, | ||
| 1900 | fieldComment: d.fieldComment, | ||
| 1901 | levelCode: d.levelCode | ||
| 1902 | } | ||
| 1903 | }) || []; | ||
| 1904 | inputParamsTableInfo.value.data = inputParamsData.value; | ||
| 1905 | respParamsData.value = detailInfo.value.respParamListRSVOS?.map(d => { | ||
| 1906 | return { | ||
| 1907 | fieldEnName: d.fieldEnName, | ||
| 1908 | fieldCnName: d.fieldCnName, | ||
| 1909 | fieldValueType: d.fieldValueType, | ||
| 1910 | fieldMandatory: d.fieldMandatory, | ||
| 1911 | fieldComment: d.fieldComment, | ||
| 1912 | levelCode: d.levelCode | ||
| 1913 | } | ||
| 1914 | }) || []; | ||
| 1915 | respParamsTableInfo.value.data = respParamsData.value; | ||
| 1916 | authSourceData.value = detailInfo.value.resourcesRSVOS?.map(d => { | ||
| 1917 | return { | ||
| 1918 | authOperatTimeStart: d.authOperatTimeStart, | ||
| 1919 | authOperatTimeEnd: d.authOperatTimeEnd, | ||
| 1920 | dataRegistCode: d.dataRegistCode, | ||
| 1921 | dataRegistName: d.dataRegistName | ||
| 1922 | } | ||
| 1923 | }) || []; | ||
| 1924 | authSourceTableInfo.value.data = authSourceData.value; | ||
| 1925 | orgData.value = detailInfo.value.organizationRSVOS?.map(d => { | ||
| 1926 | return { | ||
| 1927 | sharedInstitutionCode: d.sharedInstitutionCode, | ||
| 1928 | sharedInstitutionName: d.sharedInstitutionName, | ||
| 1929 | sharedInstitutiontType: d.sharedInstitutiontType, | ||
| 1930 | sharedInstitutionAdress: d.sharedInstitutionAdress | ||
| 1931 | } | ||
| 1932 | }) || []; | ||
| 1933 | orgTableInfo.value.data = orgData.value; | ||
| 1934 | let attachmentRQVOS = detailInfo.value.attachmentRSVOS || []; | ||
| 1935 | uploadFormItems.value.forEach(item => { | ||
| 1936 | let field = item.field; | ||
| 1937 | let key = field.slice(6); | ||
| 1938 | item.default = attachmentRQVOS.filter(a => a.fileType == key).map(f => { | ||
| 1939 | return { | ||
| 1940 | name: f.fileName, | ||
| 1941 | url: f.fileUrl | ||
| 1942 | } | ||
| 1943 | }) | ||
| 1944 | }) | ||
| 1945 | } else { | ||
| 1946 | proxy.$ElMessage.error(res.msg); | ||
| 1947 | } | ||
| 1948 | }) | ||
| 1949 | }).catch(() => { | ||
| 1950 | fullscreenLoading.value = false; | ||
| 1951 | }) | ||
| 1952 | } | ||
| 1953 | }) | ||
| 1954 | |||
| 1955 | const cancel = () => { | ||
| 1956 | proxy.$openMessageBox("当前页面尚未保存,确定放弃修改吗?", () => { | ||
| 1957 | userStore.setTabbar(userStore.tabbar.filter((tab: any) => tab.fullPath !== fullPath)); | ||
| 1958 | router.push({ | ||
| 1959 | name: 'registerManagemant' | ||
| 1960 | }); | ||
| 1961 | }, () => { | ||
| 1962 | proxy.$ElMessage.info("已取消"); | ||
| 1963 | }); | ||
| 1964 | } | ||
| 1965 | |||
| 1966 | /** 提交草稿,不需要检验 */ | ||
| 1967 | const saveDraft = () => { | ||
| 1968 | let params: any = { isSubmit: false }; | ||
| 1969 | let baseInfoValue = formRef.value.formInline; | ||
| 1970 | let registerInfoValue = registerFormRef.value.formInline; | ||
| 1971 | /** 产品登记名称,是覆盖范围-行业大类-产品名称 */ | ||
| 1972 | let coverName = baseInfoValue.dataCoverages == '1' ? '全国' : (baseInfoValue.dataCoverage?.length && dictListMap.value['dataCoverage'].find(f => f.value == baseInfoValue.dataCoverage[0])?.label || ''); | ||
| 1973 | let industryName = registerInfoValue.industry && dictListMap.value['industry'].find(d => d.value == registerInfoValue.industry)?.label || ''; | ||
| 1974 | let dataRegistName = coverName + '-' + industryName + '-' + baseInfoValue.productName; | ||
| 1975 | let uploadValue = uploadFormRef.value.formInline; | ||
| 1976 | let attachmentRQVOS: any[] = []; | ||
| 1977 | for (const key in uploadValue) { | ||
| 1978 | if (!uploadValue[key]?.length) { | ||
| 1979 | continue; | ||
| 1980 | } | ||
| 1981 | let n = key.slice(6); | ||
| 1982 | uploadValue[key].forEach(uf => { | ||
| 1983 | attachmentRQVOS.push({ | ||
| 1984 | fileName: uf.name, | ||
| 1985 | fileType: n, | ||
| 1986 | fileUrl: uf.url, | ||
| 1987 | }); | ||
| 1988 | }) | ||
| 1989 | } | ||
| 1990 | Object.assign(params, { | ||
| 1991 | ...baseInfoValue, | ||
| 1992 | dataCoverage: baseInfoValue.dataCoverages == '1' ? ['1'] : baseInfoValue.dataCoverage, | ||
| 1993 | productKeywords: baseInfoValue.productKeywords.join(',') | ||
| 1994 | }, { | ||
| 1995 | reqParamListRQVOS: inputParamsData.value, | ||
| 1996 | respParamListRQVOS: respParamsData.value, | ||
| 1997 | resourcesRQVOS: authSourceData.value, | ||
| 1998 | organizationRQVOS: orgData.value | ||
| 1999 | }, { | ||
| 2000 | registerRQVO: { | ||
| 2001 | ...registerInfoValue, | ||
| 2002 | dataRegistName: dataRegistName, | ||
| 2003 | dataCoverageStartTime: registerInfoValue.dataCoverageTimeRange?.[0], | ||
| 2004 | dataCoverageEndTime: registerInfoValue.dataCoverageTimeRange?.[1], | ||
| 2005 | // coverageArea: !registerInfoValue.coverageAreas ? [] : (registerInfoValue.coverageArea == 'all' ? ['all'] : [registerInfoValue.coverageAreas]) | ||
| 2006 | }, | ||
| 2007 | attachmentRQVOS: attachmentRQVOS, | ||
| 2008 | exchangeGuid: exGuid, | ||
| 2009 | productPublisher: userData.tenantGuid, | ||
| 2010 | productPublisherName: userData.tenantName | ||
| 2011 | }); | ||
| 2012 | if (registerInfoValue.coverageArea == 'all') { | ||
| 2013 | params.registerRQVO.coverageArea = [['all']]; | ||
| 2014 | } else if (!registerInfoValue.coverageArea) { | ||
| 2015 | params.registerRQVO.coverageArea = [registerInfoValue.coverageAreas]; | ||
| 2016 | } | ||
| 2017 | fullscreenLoading.value = true; | ||
| 2018 | if (guid) { | ||
| 2019 | params.guid = guid; | ||
| 2020 | registerUpdate(params).then((res: any) => { | ||
| 2021 | fullscreenLoading.value = false; | ||
| 2022 | if (res?.code == proxy.$passCode) { | ||
| 2023 | proxy.$ElMessage.success('资产登记编辑保存成功'); | ||
| 2024 | userStore.setTabbar(userStore.tabbar.filter((tab: any) => tab.fullPath !== fullPath)); | ||
| 2025 | router.push({ | ||
| 2026 | name: 'registerManagemant', | ||
| 2027 | }); | ||
| 2028 | assetStore.set(true); | ||
| 2029 | } else { | ||
| 2030 | proxy.$ElMessage.error(res.msg); | ||
| 2031 | } | ||
| 2032 | }); | ||
| 2033 | } else { | ||
| 2034 | registerSave(params).then((res: any) => { | ||
| 2035 | fullscreenLoading.value = false; | ||
| 2036 | if (res?.code == proxy.$passCode) { | ||
| 2037 | proxy.$ElMessage.success('新建资产登记保存成功'); | ||
| 2038 | userStore.setTabbar(userStore.tabbar.filter((tab: any) => tab.fullPath !== fullPath)); | ||
| 2039 | router.push({ | ||
| 2040 | name: 'registerManagemant', | ||
| 2041 | }); | ||
| 2042 | assetStore.set(true); | ||
| 2043 | } else { | ||
| 2044 | proxy.$ElMessage.error(res.msg); | ||
| 2045 | } | ||
| 2046 | }); | ||
| 2047 | } | ||
| 2048 | } | ||
| 2049 | |||
| 2050 | /** 提交申请,需要检验。 */ | ||
| 2051 | const save = () => { | ||
| 2052 | formRef.value.ruleFormRef?.validate((valid1, errorItem) => { | ||
| 2053 | if (valid1) { | ||
| 2054 | /** 先检验入参出参信息 */ | ||
| 2055 | if (!inputParamsData.value.length) { | ||
| 2056 | activeTabName.value = 'reqParamList'; | ||
| 2057 | proxy.$ElMessage.error('入参信息不能为空'); | ||
| 2058 | return; | ||
| 2059 | } | ||
| 2060 | if (!respParamsData.value.length) { | ||
| 2061 | activeTabName.value = 'respParamList'; | ||
| 2062 | proxy.$ElMessage.error('出参信息不能为空'); | ||
| 2063 | return; | ||
| 2064 | } | ||
| 2065 | for (const d of inputParamsData.value) { | ||
| 2066 | if (!d.fieldEnName) { | ||
| 2067 | activeTabName.value = 'reqParamList'; | ||
| 2068 | proxy.$ElMessage.error('入参信息的参数英文不能为空'); | ||
| 2069 | return; | ||
| 2070 | } | ||
| 2071 | if (!d.fieldCnName) { | ||
| 2072 | activeTabName.value = 'reqParamList'; | ||
| 2073 | proxy.$ElMessage.error('入参信息的参数中文不能为空'); | ||
| 2074 | return; | ||
| 2075 | } | ||
| 2076 | if (!d.levelCode) { | ||
| 2077 | activeTabName.value = 'reqParamList'; | ||
| 2078 | proxy.$ElMessage.error('入参信息的展示层级顺序不能为空'); | ||
| 2079 | return; | ||
| 2080 | } | ||
| 2081 | } | ||
| 2082 | for (const d of respParamsData.value) { | ||
| 2083 | if (!d.fieldEnName) { | ||
| 2084 | activeTabName.value = 'respParamList'; | ||
| 2085 | proxy.$ElMessage.error('出参信息的参数英文不能为空'); | ||
| 2086 | return; | ||
| 2087 | } | ||
| 2088 | if (!d.fieldCnName) { | ||
| 2089 | activeTabName.value = 'respParamList'; | ||
| 2090 | proxy.$ElMessage.error('出参信息的参数中文不能为空'); | ||
| 2091 | return; | ||
| 2092 | } | ||
| 2093 | if (!d.levelCode) { | ||
| 2094 | activeTabName.value = 'respParamList'; | ||
| 2095 | proxy.$ElMessage.error('出参信息的展示层级顺序不能为空'); | ||
| 2096 | return; | ||
| 2097 | } | ||
| 2098 | } | ||
| 2099 | registerFormRef.value.ruleFormRef?.validate((valid2, errorItem) => { | ||
| 2100 | if (valid2) { | ||
| 2101 | let registerInfo = registerFormRef.value.formInline; | ||
| 2102 | if (registerInfo.isAuthreSourceDevelop == 'Y') { | ||
| 2103 | if (!authSourceData.value.length) { | ||
| 2104 | activeShareTabName.value = 'authSource'; | ||
| 2105 | proxy.$ElMessage.error('被授权资源信息不能为空'); | ||
| 2106 | return; | ||
| 2107 | } | ||
| 2108 | for (const d of authSourceData.value) { | ||
| 2109 | if (!d.authOperatTimeStart) { | ||
| 2110 | activeShareTabName.value = 'authSource'; | ||
| 2111 | proxy.$ElMessage.error('授权运营时间起不能为空'); | ||
| 2112 | return; | ||
| 2113 | } | ||
| 2114 | if (!d.authOperatTimeEnd) { | ||
| 2115 | activeShareTabName.value = 'authSource'; | ||
| 2116 | proxy.$ElMessage.error('授权运营时间止不能为空'); | ||
| 2117 | return; | ||
| 2118 | } | ||
| 2119 | if (!d.dataRegistCode) { | ||
| 2120 | activeShareTabName.value = 'authSource'; | ||
| 2121 | proxy.$ElMessage.error('数据资源登记确认单编码不能为空'); | ||
| 2122 | return; | ||
| 2123 | } | ||
| 2124 | if (!d.dataRegistName) { | ||
| 2125 | activeShareTabName.value = 'authSource'; | ||
| 2126 | proxy.$ElMessage.error('数据资源登记名称不能为空'); | ||
| 2127 | return; | ||
| 2128 | } | ||
| 2129 | if (d.authOperatTimeStart > d.authOperatTimeEnd) { | ||
| 2130 | activeShareTabName.value = 'authSource'; | ||
| 2131 | proxy.$ElMessage.error('授权运营时间起不能大于授权运营时间止'); | ||
| 2132 | return; | ||
| 2133 | } | ||
| 2134 | } | ||
| 2135 | } | ||
| 2136 | if (registerInfo.isSharedData == 'Y') { | ||
| 2137 | if (!orgData.value.length) { | ||
| 2138 | activeShareTabName.value = 'shareOrgs'; | ||
| 2139 | proxy.$ElMessage.error('共有组织机构不能为空'); | ||
| 2140 | return; | ||
| 2141 | } | ||
| 2142 | for (const d of orgData.value) { | ||
| 2143 | if (!d.sharedInstitutionCode) { | ||
| 2144 | activeShareTabName.value = 'shareOrgs'; | ||
| 2145 | proxy.$ElMessage.error('共有组织统一社会信用代码不能为空'); | ||
| 2146 | return; | ||
| 2147 | } | ||
| 2148 | if (!d.sharedInstitutionName) { | ||
| 2149 | activeShareTabName.value = 'shareOrgs'; | ||
| 2150 | proxy.$ElMessage.error('共有组织机构名称不能为空'); | ||
| 2151 | return; | ||
| 2152 | } | ||
| 2153 | if (!d.sharedInstitutiontType) { | ||
| 2154 | activeShareTabName.value = 'shareOrgs'; | ||
| 2155 | proxy.$ElMessage.error('组织机构性质不能为空'); | ||
| 2156 | return; | ||
| 2157 | } | ||
| 2158 | } | ||
| 2159 | } | ||
| 2160 | uploadFormRef.value.ruleFormRef.validate((valid3, errorItem) => { | ||
| 2161 | if (valid3) { | ||
| 2162 | let params: any = { isSubmit: true, immediateApprove: true, }; | ||
| 2163 | let baseInfoValue = formRef.value.formInline; | ||
| 2164 | let registerInfoValue = registerFormRef.value.formInline; | ||
| 2165 | /** 产品登记名称,是覆盖范围-行业大类-产品名称 */ | ||
| 2166 | let coverName = baseInfoValue.dataCoverages == '1' ? '全国' : dictListMap.value['dataCoverage'].find(f => f.value == baseInfoValue.dataCoverage[0])?.label || 'XX'; | ||
| 2167 | let industryName = dictListMap.value['industry'].find(d => d.value == registerInfoValue.industry)?.label || 'XX'; | ||
| 2168 | let dataRegistName = coverName + '-' + industryName + '-' + baseInfoValue.productName; | ||
| 2169 | let uploadValue = uploadFormRef.value.formInline; | ||
| 2170 | let attachmentRQVOS: any[] = []; | ||
| 2171 | for (const key in uploadValue) { | ||
| 2172 | if (!uploadValue[key]?.length) { | ||
| 2173 | continue; | ||
| 2174 | } | ||
| 2175 | let n = key.slice(6); | ||
| 2176 | uploadValue[key].forEach(uf => { | ||
| 2177 | attachmentRQVOS.push({ | ||
| 2178 | fileName: uf.name, | ||
| 2179 | fileType: n, | ||
| 2180 | fileUrl: uf.url, | ||
| 2181 | }); | ||
| 2182 | }) | ||
| 2183 | } | ||
| 2184 | Object.assign(params, { | ||
| 2185 | ...baseInfoValue, | ||
| 2186 | dataCoverage: baseInfoValue.dataCoverages == '1' ? ['1'] : baseInfoValue.dataCoverage, | ||
| 2187 | productKeywords: baseInfoValue.productKeywords.join(',') | ||
| 2188 | }, { | ||
| 2189 | reqParamListRQVOS: inputParamsData.value, | ||
| 2190 | respParamListRQVOS: respParamsData.value, | ||
| 2191 | resourcesRQVOS: authSourceData.value, | ||
| 2192 | organizationRQVOS: orgData.value | ||
| 2193 | }, { | ||
| 2194 | registerRQVO: { | ||
| 2195 | ...registerInfoValue, | ||
| 2196 | exchangeGuid: exGuid, | ||
| 2197 | dataRegistName: dataRegistName, | ||
| 2198 | dataCoverageStartTime: registerInfoValue.dataCoverageTimeRange[0], | ||
| 2199 | dataCoverageEndTime: registerInfoValue.dataCoverageTimeRange[1], | ||
| 2200 | // coverageArea: registerInfoValue.coverageArea == 'all' ? ['all'] : [registerInfoValue.coverageAreas] | ||
| 2201 | }, | ||
| 2202 | attachmentRQVOS: attachmentRQVOS, | ||
| 2203 | exchangeGuid: exGuid, | ||
| 2204 | productPublisher: userData.tenantGuid, | ||
| 2205 | productPublisherName: userData.tenantName | ||
| 2206 | }); | ||
| 2207 | if (registerInfoValue.coverageArea == 'all') { | ||
| 2208 | params.registerRQVO.coverageArea = [['all']]; | ||
| 2209 | } else if (!registerInfoValue.coverageArea) { | ||
| 2210 | params.registerRQVO.coverageArea = [registerInfoValue.coverageAreas]; | ||
| 2211 | } | ||
| 2212 | fullscreenLoading.value = true; | ||
| 2213 | if (guid) { | ||
| 2214 | params.guid = guid; | ||
| 2215 | registerUpdate(params).then((res: any) => { | ||
| 2216 | fullscreenLoading.value = false; | ||
| 2217 | if (res?.code == proxy.$passCode) { | ||
| 2218 | proxy.$ElMessage.success('资产登记编辑提交申请成功'); | ||
| 2219 | userStore.setTabbar(userStore.tabbar.filter((tab: any) => tab.fullPath !== fullPath)); | ||
| 2220 | router.push({ | ||
| 2221 | name: 'registerManagemant', | ||
| 2222 | }); | ||
| 2223 | assetStore.set(true); | ||
| 2224 | } else { | ||
| 2225 | proxy.$ElMessage.error(res.msg); | ||
| 2226 | } | ||
| 2227 | }); | ||
| 2228 | } else { | ||
| 2229 | registerSave(params).then((res: any) => { | ||
| 2230 | fullscreenLoading.value = false; | ||
| 2231 | if (res?.code == proxy.$passCode) { | ||
| 2232 | proxy.$ElMessage.success('新建资产登记提交申请成功'); | ||
| 2233 | userStore.setTabbar(userStore.tabbar.filter((tab: any) => tab.fullPath !== fullPath)); | ||
| 2234 | router.push({ | ||
| 2235 | name: 'registerManagemant', | ||
| 2236 | }); | ||
| 2237 | assetStore.set(true); | ||
| 2238 | } else { | ||
| 2239 | proxy.$ElMessage.error(res.msg); | ||
| 2240 | } | ||
| 2241 | }); | ||
| 2242 | } | ||
| 2243 | } else { | ||
| 2244 | var obj = Object.keys(errorItem); | ||
| 2245 | uploadFormRef.value.ruleFormRef.scrollToField(obj[0]); | ||
| 2246 | } | ||
| 2247 | }); | ||
| 2248 | } else { | ||
| 2249 | var obj = Object.keys(errorItem); | ||
| 2250 | registerFormRef.value.ruleFormRef.scrollToField(obj[0]) | ||
| 2251 | registerInfoExpand.value = true; | ||
| 2252 | uploadFormRef.value.ruleFormRef.validate(() => { }); | ||
| 2253 | } | ||
| 2254 | }) | ||
| 2255 | } else { | ||
| 2256 | var obj = Object.keys(errorItem); | ||
| 2257 | formRef.value.ruleFormRef.scrollToField(obj[0]) | ||
| 2258 | baseInfoExpand.value = true; | ||
| 2259 | registerFormRef.value.ruleFormRef.validate(() => { }); | ||
| 2260 | uploadFormRef.value.ruleFormRef.validate(() => { }); | ||
| 2261 | } | ||
| 2262 | }); | ||
| 2263 | } | ||
| 2264 | |||
| 2265 | </script> | ||
| 2266 | |||
| 2267 | <template> | ||
| 2268 | <div class="container_wrap" v-loading="fullscreenLoading"> | ||
| 2269 | <div class="content_main"> | ||
| 2270 | <ContentWrap id="id-baseInfo" title="数据产品信息" description="" :isExpand="baseInfoExpand" expandSwicth | ||
| 2271 | @expand="(v) => baseInfoExpand = v"> | ||
| 2272 | <Form ref="formRef" :itemList="productBaseInfoItems" :rules="productBaseInfoFormRules" formId="base-info-edit" | ||
| 2273 | @selectChange="handleProductBaseFormSelectChange" @checkboxChange="handleProductBaseFormCheckboxChange" | ||
| 2274 | col="col3 custom-form" /> | ||
| 2275 | </ContentWrap> | ||
| 2276 | <ContentWrap id="id-params" title="入参出参信息" description="" :expandSwicth="true" class="mt16" | ||
| 2277 | :isExpand="paramsInfoExpand" @expand="(v) => paramsInfoExpand = v"> | ||
| 2278 | <el-tabs v-model="activeTabName" class="param-tabs"> | ||
| 2279 | <el-tab-pane label="入参信息" name="reqParamList"> | ||
| 2280 | <Table ref="inputParamsTableRef" :tableInfo="inputParamsTableInfo" class="fiveRow-table" /> | ||
| 2281 | <div class="row-add-btn"> | ||
| 2282 | <el-button link @click="addInputParams" :icon="CirclePlus" v-preReClick>添加</el-button> | ||
| 2283 | </div> | ||
| 2284 | </el-tab-pane> | ||
| 2285 | <el-tab-pane label="出参信息" name="respParamList"> | ||
| 2286 | <Table ref="respParamsTableRef" :tableInfo="respParamsTableInfo" class="fiveRow-table" /> | ||
| 2287 | <div class="row-add-btn"> | ||
| 2288 | <el-button link @click="addRespParams" :icon="CirclePlus" v-preReClick>添加</el-button> | ||
| 2289 | </div> | ||
| 2290 | </el-tab-pane> | ||
| 2291 | </el-tabs> | ||
| 2292 | </ContentWrap> | ||
| 2293 | <ContentWrap id="id-registerInfo" title="数据产品登记信息" description="" :expandSwicth="true" class="mt16" | ||
| 2294 | :isExpand="registerInfoExpand" @expand="(v) => registerInfoExpand = v"> | ||
| 2295 | <Form ref="registerFormRef" :itemList="productRegisterInfoItems" :rules="productRegisterInfoFormRules" | ||
| 2296 | formId="register-edit" col="col3 custom-form" @selectChange="handleRegisterFormSelectChange" | ||
| 2297 | @checkboxChange="handleRegisterFormCheckboxChange" @radioGroupChange="handleRegisterRadioGroupChange" /> | ||
| 2298 | </ContentWrap> | ||
| 2299 | <ContentWrap | ||
| 2300 | v-show="registerFormRef?.formInline?.isAuthreSourceDevelop == 'Y' || registerFormRef?.formInline.isSharedData == 'Y'" | ||
| 2301 | id="id-anthor" :isExpand="authInfoExpand" @expand="(v) => authInfoExpand = v" | ||
| 2302 | :title="registerFormRef?.formInline?.isAuthreSourceDevelop == 'Y' && registerFormRef?.formInline.isSharedData == 'Y' ? '被授权资源信息和共有组织机构' : (registerFormRef?.formInline?.isAuthreSourceDevelop == 'Y' ? '被授权资源信息' : '共有组织机构信息')" | ||
| 2303 | description="" :expandSwicth="true" class="mt16"> | ||
| 2304 | <el-tabs v-model="activeShareTabName" class="param-tabs"> | ||
| 2305 | <el-tab-pane label="被授权资源" v-if="registerFormRef?.formInline?.isAuthreSourceDevelop == 'Y'" name="authSource"> | ||
| 2306 | <Table ref="authSourceTableRef" :tableInfo="authSourceTableInfo" class="fiveRow-table" /> | ||
| 2307 | <div class="row-add-btn"> | ||
| 2308 | <el-button link @click="addAuthSources" :icon="CirclePlus" v-preReClick>添加</el-button> | ||
| 2309 | </div> | ||
| 2310 | </el-tab-pane> | ||
| 2311 | <el-tab-pane label="共有组织机构" v-if="registerFormRef?.formInline.isSharedData == 'Y'" name="shareOrgs"> | ||
| 2312 | <Table ref="orgsTableRef" :tableInfo="orgTableInfo" class="fiveRow-table" /> | ||
| 2313 | <div class="row-add-btn"> | ||
| 2314 | <el-button link @click="addOrgs" :icon="CirclePlus" v-preReClick>添加</el-button> | ||
| 2315 | </div> | ||
| 2316 | </el-tab-pane> | ||
| 2317 | </el-tabs> | ||
| 2318 | </ContentWrap> | ||
| 2319 | <ContentWrap id="id-files" title="产品附件信息" description="" expandSwicth class="mt16" :isExpand="uploadInfoExpand" | ||
| 2320 | @expand="(v) => uploadInfoExpand = v"> | ||
| 2321 | <Form class='uploadForm' ref="uploadFormRef" :itemList="uploadFormItems" formId="upload-form" | ||
| 2322 | :rules="uploadFormRules" col="col2" /> | ||
| 2323 | </ContentWrap> | ||
| 2324 | <ContentWrap id="id-approveInfo" title="审批信息" expandSwicth class="mt16"> | ||
| 2325 | <ApprovalProcess v-if="deploymentId" :deploymentId="deploymentId" :definitionId="''"> | ||
| 2326 | </ApprovalProcess> | ||
| 2327 | </ContentWrap> | ||
| 2328 | </div> | ||
| 2329 | <div class="tool_btns"> | ||
| 2330 | <div class="btns"> | ||
| 2331 | <el-button plain @click="cancel">取消</el-button> | ||
| 2332 | <el-button type="primary" @click="saveDraft" v-if="!restart">保存</el-button> | ||
| 2333 | <el-button type="primary" @click="save">提交申请</el-button> | ||
| 2334 | </div> | ||
| 2335 | </div> | ||
| 2336 | </div> | ||
| 2337 | </template> | ||
| 2338 | |||
| 2339 | <style lang="scss" scoped> | ||
| 2340 | .container_wrap { | ||
| 2341 | padding: 0; | ||
| 2342 | height: 100%; | ||
| 2343 | overflow: hidden; | ||
| 2344 | |||
| 2345 | &>.content_main { | ||
| 2346 | padding: 16px; | ||
| 2347 | height: calc(100% - 44px); | ||
| 2348 | overflow: hidden auto; | ||
| 2349 | |||
| 2350 | &.full { | ||
| 2351 | height: 100%; | ||
| 2352 | } | ||
| 2353 | } | ||
| 2354 | } | ||
| 2355 | |||
| 2356 | :deep(.el-form) { | ||
| 2357 | .checkbox-cascader { | ||
| 2358 | display: flex; | ||
| 2359 | |||
| 2360 | .el-cascader { | ||
| 2361 | margin-left: 8px; | ||
| 2362 | } | ||
| 2363 | } | ||
| 2364 | |||
| 2365 | .checkbox-right { | ||
| 2366 | width: calc(100% - 50px); | ||
| 2367 | |||
| 2368 | &.el-form-item { | ||
| 2369 | margin-bottom: 0px; | ||
| 2370 | margin-right: 0px; | ||
| 2371 | width: 100%; | ||
| 2372 | } | ||
| 2373 | } | ||
| 2374 | } | ||
| 2375 | |||
| 2376 | .row-add-btn { | ||
| 2377 | .el-button--default { | ||
| 2378 | padding: 4px 0px; | ||
| 2379 | margin-top: 4px; | ||
| 2380 | } | ||
| 2381 | |||
| 2382 | :deep(.el-icon) { | ||
| 2383 | width: 16px; | ||
| 2384 | height: 16px; | ||
| 2385 | |||
| 2386 | svg { | ||
| 2387 | width: 16px; | ||
| 2388 | height: 16px; | ||
| 2389 | } | ||
| 2390 | } | ||
| 2391 | } | ||
| 2392 | |||
| 2393 | :deep(.el-tabs) { | ||
| 2394 | margin-top: -8px; | ||
| 2395 | |||
| 2396 | .el-tabs__header { | ||
| 2397 | margin-bottom: 8px; | ||
| 2398 | } | ||
| 2399 | |||
| 2400 | .el-tabs__item { | ||
| 2401 | height: 32px; | ||
| 2402 | |||
| 2403 | &:nth-child(2) { | ||
| 2404 | padding-left: 16px; | ||
| 2405 | } | ||
| 2406 | |||
| 2407 | } | ||
| 2408 | } | ||
| 2409 | |||
| 2410 | .mt16 { | ||
| 2411 | margin-top: 16px; | ||
| 2412 | } | ||
| 2413 | |||
| 2414 | .tool_btns { | ||
| 2415 | display: flex; | ||
| 2416 | justify-content: center; | ||
| 2417 | align-items: center; | ||
| 2418 | height: 44px; | ||
| 2419 | padding: 0 16px; | ||
| 2420 | border-top: 1px solid #d9d9d9; | ||
| 2421 | } | ||
| 2422 | |||
| 2423 | :deep(.dialog-form-inline.col3) { | ||
| 2424 | .w50-l { | ||
| 2425 | width: 100%; | ||
| 2426 | margin-right: 4px; | ||
| 2427 | } | ||
| 2428 | |||
| 2429 | .w50 { | ||
| 2430 | width: 100%; | ||
| 2431 | } | ||
| 2432 | } | ||
| 2433 | |||
| 2434 | .uploadForm { | ||
| 2435 | align-items: flex-start; | ||
| 2436 | } | ||
| 2437 | |||
| 2438 | :deep(.other-group-flex.el-radio-group) { | ||
| 2439 | .el-radio:last-child { | ||
| 2440 | width: calc(100% - 64px); | ||
| 2441 | |||
| 2442 | .el-radio__label { | ||
| 2443 | width: 100%; | ||
| 2444 | |||
| 2445 | .other-input { | ||
| 2446 | width: 100%; | ||
| 2447 | } | ||
| 2448 | } | ||
| 2449 | } | ||
| 2450 | } | ||
| 2451 | </style> | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| ... | @@ -422,7 +422,10 @@ const tableBtnClick = (scope, btn) => { | ... | @@ -422,7 +422,10 @@ const tableBtnClick = (scope, btn) => { |
| 422 | }); | 422 | }); |
| 423 | } else if (type === 'detail') { // 详情 | 423 | } else if (type === 'detail') { // 详情 |
| 424 | if (row.registerApproveState == 'Y') { | 424 | if (row.registerApproveState == 'Y') { |
| 425 | router.push({ | 425 | row.dataSource == '1' ? router.push({ |
| 426 | name: 'registerValueJSZQDetail', | ||
| 427 | query: { guid: row.registerGuid, costAssessGuid: row.guid, type: 'costAssess', tenantGuid: row.tenantGuid, tenantName: row.tenantName } | ||
| 428 | }) : router.push({ | ||
| 426 | name: 'registerValueDetail', | 429 | name: 'registerValueDetail', |
| 427 | query: { guid: row.registerGuid, costAssessGuid: row.guid, type: 'costAssess', tenantGuid: row.tenantGuid, tenantName: row.tenantName } | 430 | query: { guid: row.registerGuid, costAssessGuid: row.guid, type: 'costAssess', tenantGuid: row.tenantGuid, tenantName: row.tenantName } |
| 428 | }); | 431 | }); |
| ... | @@ -495,6 +498,7 @@ const formItems = ref<any>([ | ... | @@ -495,6 +498,7 @@ const formItems = ref<any>([ |
| 495 | value: 'guid', | 498 | value: 'guid', |
| 496 | label: 'damName' | 499 | label: 'damName' |
| 497 | }, | 500 | }, |
| 501 | filterable: true, | ||
| 498 | visible: true, | 502 | visible: true, |
| 499 | required: true | 503 | required: true |
| 500 | }, { | 504 | }, { |
| ... | @@ -509,6 +513,7 @@ const formItems = ref<any>([ | ... | @@ -509,6 +513,7 @@ const formItems = ref<any>([ |
| 509 | value: 'guid', | 513 | value: 'guid', |
| 510 | label: 'tenantName' | 514 | label: 'tenantName' |
| 511 | }, | 515 | }, |
| 516 | filterable: true, | ||
| 512 | visible: false, | 517 | visible: false, |
| 513 | required: true | 518 | required: true |
| 514 | }, | 519 | }, | ... | ... |
-
Please register or sign in to post a comment