ff3ebf91 by lihua

专区资产登记自动生成登记名称

1 parent 6c8c41e0
......@@ -7,6 +7,12 @@ export const getRegiaterDetail = (params) => request({
params
})
/** 获取产品登记详情 */
export const getRegisterCatalogDetail = (damGuid) => request({
url: `${import.meta.env.VITE_API_NEW_PORTAL}/public-data-products-main/detail-by-dam-guid?damGuid=${damGuid}`,
method: 'get'
})
/** 提交登记信息。 */
export const registerSave = (params) => request({
url: `${import.meta.env.VITE_API_NEW_PORTAL}/public-data-products-main/save`,
......@@ -27,3 +33,9 @@ export const registerDelete = (params) => request({
method: 'delete',
data: params
});
/** 获取可使用的资产目录列表 */
export const getRegisterCatalogList = () => request({
url: `${import.meta.env.VITE_API_NEW_PORTAL}/dam-catalog-table/public-data/dam-list?isRegister=${'Y'}&foundMode=4`,
method: 'get'
})
......
......@@ -816,7 +816,7 @@ const panelChange = (scope, row) => {
</span>
<el-select v-if="child.type == 'select'" v-model="formInline[child.field]"
:placeholder="child.placeholder" :disabled="child.disabled || readonly" :filterable="child.filterable"
:multiple="child.multiple ?? false"
:multiple="child.multiple ?? false" @change="(val) => selectChange(val, child)"
:collapse-tags="child.collapse ?? false" :collapse-tags-tooltip="child.tagsTooltip ?? false"
:max-collapse-tags="child.maxTags ?? 1" :teleported="child.teleported || true">
<el-option v-for="opts in child.options"
......@@ -827,7 +827,7 @@ const panelChange = (scope, row) => {
:options="child.options" :props="child.props" :show-all-levels="child.showAllLevels ?? true"
:clearable="child.clearable" :filterable="child.filterable ?? false"
:collapse-tags="child.collapse ?? false" :collapse-tags-tooltip="child.tagsTooltip ?? false"
:max-collapse-tags="child.maxTags ?? 1" :disabled="child.disabled || readonly" />
:max-collapse-tags="child.maxTags ?? 1" :disabled="child.disabled || readonly" @change="(val) => cascaderChange(val, child)" />
</el-form-item>
</div>
</div>
......
......@@ -18,11 +18,10 @@ import {
import {
registerSave,
registerUpdate,
getRegiaterDetail
getRegiaterDetail,
getRegisterCatalogList,
getRegisterCatalogDetail
} from '@/api/modules/dataAssetZq'
import {
getRegisterCatalogList
} from '@/api/modules/dataAsset'
import useUserStore from "@/store/modules/user";
import { getCamundaDeploymentId } from "@/api/modules/workFlowService"
import useDataAssetStore from "@/store/modules/dataAsset";
......@@ -54,7 +53,7 @@ const registerCatalogList: any = ref([]);
const formRef = ref();
/** 数据产品信息的表单配置 */
const productBaseInfoItems = ref([{
const productBaseInfoItems = ref([/*{
type: "input",
label: "产品名称",
field: "productName",
......@@ -63,25 +62,25 @@ const productBaseInfoItems = ref([{
placeholder: "请输入",
required: true,
clearable: true
},
// {
// label: '数据资产名称',
// type: 'select',
// placeholder: '请选择',
// options: [],
// field: 'productName',
// maxlength: 50,
// allowCreate: true,
// default: '',
// filterable: true,
// props: {
// value: 'guid',
// label: 'damName'
// },
// clearable: true,
// required: true
// },
{
}, */
{
label: '产品名称',
type: 'select',
placeholder: '请选择',
options: [],
field: 'productName',
maxlength: 50,
allowCreate: true,
default: '',
filterable: true,
props: {
value: 'guid',
label: 'damName'
},
clearable: true,
required: true
},
{
label: '产品编码',
type: 'input',
placeholder: '自动生成',
......@@ -90,7 +89,7 @@ const productBaseInfoItems = ref([{
disabled: true,
required: false,
visible: true
}, {
}, {
label: '产品类型',
type: 'select',
placeholder: '请选择',
......@@ -104,7 +103,7 @@ const productBaseInfoItems = ref([{
required: true,
filterable: true,
visible: true
}, {
}, {
label: "是否需要信息主体授权",
type: "radio-group",
placeholder: "",
......@@ -121,7 +120,7 @@ const productBaseInfoItems = ref([{
},
],
required: true,
}, {
}, {
label: "更新频率",
type: "select",
placeholder: "请选择",
......@@ -136,7 +135,7 @@ const productBaseInfoItems = ref([{
filterable: true,
required: true,
clearable: true,
}, {
}, {
type: "input",
label: "产品发布机构",
field: "productPublisherName",
......@@ -145,7 +144,7 @@ const productBaseInfoItems = ref([{
placeholder: "请输入",
disabled: true,
clearable: true
}, {
}, {
label: '领域',
type: 'select',
placeholder: '请选择',
......@@ -160,7 +159,7 @@ const productBaseInfoItems = ref([{
required: true,
filterable: true,
visible: true
}, {
}, {
label: '应用场景',
type: 'select',
placeholder: '请选择',
......@@ -174,7 +173,7 @@ const productBaseInfoItems = ref([{
required: true,
filterable: true,
visible: true
}, {
}, {
label: '所属科室',
type: 'tree-select',
placeholder: '请选择',
......@@ -193,7 +192,7 @@ const productBaseInfoItems = ref([{
clearable: true,
visible: true,
required: true
}, {
}, {
label: '所属疾病',
type: 'tree-select',
placeholder: '请选择',
......@@ -212,7 +211,7 @@ const productBaseInfoItems = ref([{
default: '',
visible: true,
required: true
}, {
}, {
label: '数据规模(条)',
type: 'input',
placeholder: '请输入',
......@@ -222,7 +221,7 @@ const productBaseInfoItems = ref([{
default: '',
visible: true,
required: true
}, {
}, {
label: '病例总数(例)',
type: 'input',
placeholder: '请输入',
......@@ -232,7 +231,7 @@ const productBaseInfoItems = ref([{
default: '',
visible: true,
required: true
}, {
}, {
label: '所属主题',
type: 'tree-select',
placeholder: '请选择',
......@@ -251,7 +250,7 @@ const productBaseInfoItems = ref([{
default: '',
visible: false,
required: true
}, {
}, {
label: "数据来源",
type: "select",
placeholder: "",
......@@ -262,7 +261,7 @@ const productBaseInfoItems = ref([{
filterable: true,
clearable: true,
required: true,
}, {
}, {
label: '数据覆盖范围',
type: 'checkbox-select',
placeholder: '全国',
......@@ -292,7 +291,7 @@ const productBaseInfoItems = ref([{
clearable: false,
required: true,
col: 'checkbox-cascader'
}, {
}, {
label: '产品应用方向',
type: 'select',
placeholder: '请选择',
......@@ -304,10 +303,10 @@ const productBaseInfoItems = ref([{
},
filterable: true,
clearable: true,
default: '',
default: '1',
visible: true,
required: true
}, {
}, {
type: "input",
label: "版本名称",
field: "versionName",
......@@ -316,7 +315,7 @@ const productBaseInfoItems = ref([{
placeholder: "请输入",
required: true,
clearable: true
}, {
}, {
type: "inputTag",
label: "产品关键词",
field: 'productKeywords',
......@@ -326,7 +325,7 @@ const productBaseInfoItems = ref([{
required: true,
clearable: true,
block: true
}, {
}, {
label: '产品描述',
placeholder: '该输入对该产品的描述信息',
field: 'productDesc',
......@@ -336,7 +335,7 @@ const productBaseInfoItems = ref([{
block: true,
clearable: true,
required: true,
}]);
}]);
/** 数据产品信息的表单配置校验规则 */
const productBaseInfoFormRules = ref({
......@@ -362,7 +361,7 @@ const productBaseInfoFormRules = ref({
});
const setProductBaseFormItems = (formValue) => {
formValue = Object.assign({ authLevel: 'Y', productpublisher: userData.tenantName, domain: '003', dataSources: '1' }, formValue);
formValue = Object.assign({ authLevel: 'Y', productpublisher: userData.tenantName, domain: '003', dataSources: '1', productDirection: '1' }, formValue);
productBaseInfoItems.value.forEach(item => {
item.default = formValue[item.field];
if (item.children?.length) {
......@@ -378,20 +377,124 @@ const setProductBaseFormItems = (formValue) => {
item && item.children?.length && (item.children[0].visible = formValue['dataCoverages'] != '1');
}
});
oldProductName.value = formValue.productName;
}
const oldProductName = ref('');
const handleProductBaseFormSelectChange = (val, row, info) => {
if (row.field == 'domain') {
info.scenario = ''; //清空下应用场景
setProductBaseFormItems(info);
} else if (row.field == 'productName') {
// TODO, 带出资产登记的所有信息。
// TODO, 带出资产登记的所有信息。更新产品登记名称
transferRegistName();
let da = val && registerCatalogList.value.find(r => r.guid == val);
if (da) {
proxy.$openMessageBox("切换到其它产品后,当前修改会被重置,确定切换?", () => {
oldProductName.value = info.productName;
fullscreenLoading.value = true;
getRegisterCatalogDetail(da.guid).then((res: any) => {
fullscreenLoading.value = false;
if (res?.code == proxy.$passCode) {
const detailValue = res.data || {};
detailValue.productName = da.guid;
detailValue.dataSources = (detailValue.dataSources || '') + '';
detailValue.productKeywords = detailValue.productKeywords || [];
let dataCoverage = detailValue.dataCoverage;
if (dataCoverage.length == 1 && dataCoverage[0] == '1') {
detailValue.dataCoverages = '1';
detailValue.dataCoverage = [];
} else {
detailValue.dataCoverages = '';
detailValue.dataCoverage = dataCoverage;
}
let approveVO = detailValue.approveVO;
if (approveVO && (approveVO.approveState == 'C' || approveVO.approveState == 'R') && approveVO.staffGuid == userData.staffGuid && detailValue.bizApproveState != 'D') {
restart.value = true;
}
setProductBaseFormItems(detailValue);
let dataCoverageTimeRange: string[] = [];
let dataCoverageStartTime = detailValue.registerRSVO.dataCoverageStartTime;
let dataCoverageEndTime = detailValue.registerRSVO.dataCoverageEndTime;
if (dataCoverageStartTime && dataCoverageEndTime) {
dataCoverageTimeRange = [dataCoverageStartTime, dataCoverageEndTime];
}
setRegisterFormItems(Object.assign({}, detailValue.registerRSVO || {}, {
dataCoverageTimeRange: dataCoverageTimeRange
}), true);
inputParamsData.value = detailValue.reqParamListRSVOS?.map(d => {
return {
fieldEnName: d.fieldEnName,
fieldCnName: d.fieldCnName,
fieldValueType: d.fieldValueType,
fieldMandatory: d.fieldMandatory,
fieldComment: d.fieldComment,
levelCode: d.levelCode
}
}) || [];
inputParamsTableInfo.value.data = inputParamsData.value;
respParamsData.value = detailValue.respParamListRSVOS?.map(d => {
return {
fieldEnName: d.fieldEnName,
fieldCnName: d.fieldCnName,
fieldValueType: d.fieldValueType,
fieldMandatory: d.fieldMandatory,
fieldComment: d.fieldComment,
levelCode: d.levelCode
}
}) || [];
respParamsTableInfo.value.data = respParamsData.value;
authSourceData.value = detailValue.resourcesRSVOS?.map(d => {
return {
authOperatTimeStart: d.authOperatTimeStart,
authOperatTimeEnd: d.authOperatTimeEnd,
dataRegistCode: d.dataRegistCode,
dataRegistName: d.dataRegistName
}
}) || [];
authSourceTableInfo.value.data = authSourceData.value;
orgData.value = detailValue.organizationRSVOS?.map(d => {
return {
sharedInstitutionCode: d.sharedInstitutionCode,
sharedInstitutionName: d.sharedInstitutionName,
sharedInstitutiontType: d.sharedInstitutiontType,
sharedInstitutionAdress: d.sharedInstitutionAdress
}
}) || [];
orgTableInfo.value.data = orgData.value;
let attachmentRQVOS = detailValue.attachmentRSVOS || [];
uploadFormItems.value.forEach(item => {
let field = item.field;
let key = field.slice(6);
item.default = attachmentRQVOS.filter(a => a.fileType == key).map(f => {
return {
name: f.fileName,
url: f.fileUrl
}
})
})
} else {
proxy.$ElMessage.error(res.msg);
}
})
}, () => {
info.productName = oldProductName.value;
setProductBaseFormItems(info);
proxy.$ElMessage.info("已取消");
});
} else {
oldProductName.value = info.productName;
}
} else if (row.field == 'dataCoverage') {
transferRegistName();
}
}
/** checkbox 全国修改之后 */
const handleProductBaseFormCheckboxChange = (val, info, row) => {
row.field == 'dataCoverages' && setProductBaseFormItems(info);
row.field == 'dataCoverages' && transferRegistName();
}
const activeTabName = ref('reqParamList');
......@@ -749,7 +852,7 @@ const productRegisterInfoItems = ref([{
col: "w50 no-margin-r",
field: "dataProductsAndServicesOtherType",
default: '',
maxlenght: 50,
maxlength: 50,
clearable: true,
visible: false,
required: true,
......@@ -881,7 +984,7 @@ const productRegisterInfoItems = ref([{
col: "w50 no-margin-r",
field: "productionOtherMethod",
default: '',
maxlenght: 50,
maxlength: 50,
clearable: true,
visible: false,
required: true,
......@@ -912,7 +1015,7 @@ const productRegisterInfoItems = ref([{
col: "w50 no-margin-r",
field: "dataOtherStructure",
default: '',
maxlenght: 50,
maxlength: 50,
clearable: true,
visible: false,
required: true,
......@@ -945,7 +1048,7 @@ const productRegisterInfoItems = ref([{
col: "w50 no-margin-r",
field: "dataProvisionOtherFormat",
default: '',
maxlenght: 50,
maxlength: 50,
clearable: true,
visible: false,
required: true,
......@@ -976,7 +1079,7 @@ const productRegisterInfoItems = ref([{
col: "w50 no-margin-r",
field: "storageOtherMethod",
default: '',
maxlenght: 50,
maxlength: 50,
clearable: true,
visible: false,
required: true,
......@@ -1015,7 +1118,7 @@ const productRegisterInfoItems = ref([{
field: "dataStorage",
default: '',
inputType: 'moneyNumber',
maxlenght: 19,
maxlength: 19,
clearable: true,
visible: true,
required: true,
......@@ -1049,7 +1152,7 @@ const productRegisterInfoItems = ref([{
field: "dataStorageIncrease",
default: '',
inputType: 'moneyNumber',
maxlenght: 19,
maxlength: 19,
clearable: true,
visible: true,
required: true,
......@@ -1163,7 +1266,7 @@ const productRegisterInfoItems = ref([{
col: "w50 no-margin-r",
field: "desensitizationOtherMethod",
default: '',
maxlenght: 50,
maxlength: 50,
clearable: true,
visible: false,
required: true,
......@@ -1222,7 +1325,7 @@ const productRegisterInfoItems = ref([{
col: "w50 no-margin-r",
field: "sharingConditions",
default: '',
maxlenght: 50,
maxlength: 50,
clearable: true,
visible: false,
required: true,
......@@ -1255,7 +1358,7 @@ const productRegisterInfoItems = ref([{
col: "w50 no-margin-r",
field: "sharingOtherMethod",
default: '',
maxlenght: 50,
maxlength: 50,
clearable: true,
visible: false,
required: true,
......@@ -1471,14 +1574,8 @@ const handleRegisterFormSelectChange = (val, row, info) => {
setRegisterFormItems(info);
} else if (row.field == 'industry') {
info.industryBigcode = '';
setRegisterFormItems(info);
// if (val) {
// //判断自动生成产品登记名称
// let formInline = formRef.value.formInline;
// let dataCoverages = formInline.dataCoverages;
// let cov = dataCoverages == '1' ? '全国' : (!formInline.formInline ? 'XX' : dictListMap.value['dataCoverage'].find(f => f.value == formInline.dataCoverage).label);
// productRegisterInfoItems.value[0].default = cov + '-' + (val || 'XX') + '-' + (formInline.productName || 'XX')
// }
transferRegistName();
// setRegisterFormItems(info);
}
}
......@@ -2021,15 +2118,30 @@ const cancel = () => {
});
}
let transferRegistName = () => {
let baseInfoValue = formRef.value.formInline;
let registerInfoValue = registerFormRef.value.formInline;
let productName = baseInfoValue.productName;
let da = productName && registerCatalogList.value.find(r => r.guid == productName);
if (da) {
productName = da.damName;
}
let coverName = baseInfoValue.dataCoverages == '1' ? '全国' : (baseInfoValue.dataCoverage?.length && dictListMap.value['dataCoverage'].find(f => f.value == baseInfoValue.dataCoverage[0])?.label || '');
let industryName = registerInfoValue.industry && dictListMap.value['industry'].find(d => d.value == registerInfoValue.industry)?.label || '';
let dataRegistName = (coverName || '产品数据覆盖范围') + '-' + (industryName || '行业分类') + '-' + (productName || '产品名称');
registerInfoValue.dataRegistName = dataRegistName;
setRegisterFormItems(registerInfoValue);
}
/** 提交草稿,不需要检验 */
const saveDraft = () => {
let params: any = { isSubmit: false };
let baseInfoValue = formRef.value.formInline;
let registerInfoValue = registerFormRef.value.formInline;
/** 产品登记名称,是覆盖范围-行业大类-产品名称 */
let coverName = baseInfoValue.dataCoverages == '1' ? '全国' : (baseInfoValue.dataCoverage?.length && dictListMap.value['dataCoverage'].find(f => f.value == baseInfoValue.dataCoverage[0])?.label || '');
let industryName = registerInfoValue.industry && dictListMap.value['industry'].find(d => d.value == registerInfoValue.industry)?.label || '';
let dataRegistName = coverName + '-' + industryName + '-' + baseInfoValue.productName;
// /** 产品登记名称,是覆盖范围-行业大类-产品名称 */
// let coverName = baseInfoValue.dataCoverages == '1' ? '全国' : (baseInfoValue.dataCoverage?.length && dictListMap.value['dataCoverage'].find(f => f.value == baseInfoValue.dataCoverage[0])?.label || '');
// let industryName = registerInfoValue.industry && dictListMap.value['industry'].find(d => d.value == registerInfoValue.industry)?.label || '';
// let dataRegistName = coverName + '-' + industryName + '-' + baseInfoValue.productName;
let uploadValue = uploadFormRef.value.formInline;
let attachmentRQVOS: any[] = [];
for (const key in uploadValue) {
......@@ -2057,7 +2169,6 @@ const saveDraft = () => {
}, {
registerRQVO: {
...registerInfoValue,
dataRegistName: dataRegistName,
dataCoverageStartTime: registerInfoValue.dataCoverageTimeRange?.[0],
dataCoverageEndTime: registerInfoValue.dataCoverageTimeRange?.[1],
// coverageArea: !registerInfoValue.coverageAreas ? [] : (registerInfoValue.coverageArea == 'all' ? ['all'] : [registerInfoValue.coverageAreas])
......@@ -2072,12 +2183,12 @@ const saveDraft = () => {
} else if (!registerInfoValue.coverageArea) {
params.registerRQVO.coverageArea = [registerInfoValue.coverageAreas];
}
// let productName = params.productName;
// let da = registerCatalogList.value.find(r => r.guid == productName);
// if (da) {
// params.damGuid = da.guid;
// params.productName = da.damName;
// }
let productName = params.productName;
let da = registerCatalogList.value.find(r => r.guid == productName);
if (da) {
params.damGuid = da.guid;
params.productName = da.damName;
}
fullscreenLoading.value = true;
if (guid) {
params.guid = guid;
......@@ -2226,10 +2337,10 @@ const save = () => {
let params: any = { isSubmit: true, immediateApprove: true, };
let baseInfoValue = formRef.value.formInline;
let registerInfoValue = registerFormRef.value.formInline;
/** 产品登记名称,是覆盖范围-行业大类-产品名称 */
let coverName = baseInfoValue.dataCoverages == '1' ? '全国' : dictListMap.value['dataCoverage'].find(f => f.value == baseInfoValue.dataCoverage[0])?.label || 'XX';
let industryName = dictListMap.value['industry'].find(d => d.value == registerInfoValue.industry)?.label || 'XX';
let dataRegistName = coverName + '-' + industryName + '-' + baseInfoValue.productName;
// /** 产品登记名称,是覆盖范围-行业大类-产品名称 */
// let coverName = baseInfoValue.dataCoverages == '1' ? '全国' : dictListMap.value['dataCoverage'].find(f => f.value == baseInfoValue.dataCoverage[0])?.label || 'XX';
// let industryName = dictListMap.value['industry'].find(d => d.value == registerInfoValue.industry)?.label || 'XX';
// let dataRegistName = coverName + '-' + industryName + '-' + baseInfoValue.productName;
let uploadValue = uploadFormRef.value.formInline;
let attachmentRQVOS: any[] = [];
for (const key in uploadValue) {
......@@ -2258,7 +2369,6 @@ const save = () => {
registerRQVO: {
...registerInfoValue,
exchangeGuid: exGuid,
dataRegistName: dataRegistName,
dataCoverageStartTime: registerInfoValue.dataCoverageTimeRange[0],
dataCoverageEndTime: registerInfoValue.dataCoverageTimeRange[1],
// coverageArea: registerInfoValue.coverageArea == 'all' ? ['all'] : [registerInfoValue.coverageAreas]
......@@ -2273,6 +2383,12 @@ const save = () => {
} else if (!registerInfoValue.coverageArea) {
params.registerRQVO.coverageArea = [registerInfoValue.coverageAreas];
}
let productName = params.productName;
let da = registerCatalogList.value.find(r => r.guid == productName);
if (da) {
params.damGuid = da.guid;
params.productName = da.damName;
}
fullscreenLoading.value = true;
if (guid) {
params.guid = guid;
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!