de572cd5 by lxs

Merge branch 'develop' of http://117.78.60.236:8000/csbr-daop/fe-data-asset-management into develop

2 parents 8954b107 4a419fac
......@@ -3,7 +3,7 @@ VITE_APP_TITLE = 数据资产管理系统
# 接口域名
# VITE_API_BASEURL = https://www.zgsjzc.com/api
# VITE_API_BASEURL = https://swzl-test.csbr.cn/api
VITE_API_BASEURL = http://10.4.82.30:8052/
VITE_API_BASEURL = http://10.4.82.1:28052/
# 平台用户 接口请地址
VITE_APP_USER_API_BASEURL = gateway-server/user
# 系统管理 接口地址
......
......@@ -150,6 +150,13 @@ export const getSmallCategoryList = () => request({
data: { paramCode: "SMALL-CATEGORY" }
})
// 获取规范性检验规则。
export const getCheckRulesList = () => request({
url:`${import.meta.env.VITE_APP_API_BASEURL}/data-dict/get-data-list`,
method: 'post',
data: { paramCode: "REGULAR_RULE" }
})
// 根据规则guid获取规则的详情信息。
export const getRuleConfDetail = (param) => request({
url: `${import.meta.env.VITE_APP_QUALITY_BASEURL}/quality-model/conf/detail?ruleConfGuid=${param}`,
......
......@@ -47,7 +47,7 @@ export const getImageUrl = (params) => request({
/** 查看图片 */
export const getImageContent = (params) => request({
url: `${import.meta.env.VITE_APP_API_BASEURL}/obs/view-pic?filePath=${params}`,
url: `${import.meta.env.VITE_APP_API_BASEURL}/obs`,
method: 'get',
responseType: 'blob'
});
......
......@@ -146,11 +146,26 @@ defineExpose({
:max-collapse-tags="item.cascaderInfo.maxTags ?? 1" :filterable="item.cascaderInfo.filterable ?? false"
@change="cascaderChange" />
</div>
<div class="form_item" v-if="item.type == 'input'">
<div class="form_item" v-else-if="item.type == 'input'">
<span class="item_label" :class="{ required_mark: item.selectInfo.required }">{{ item.selectInfo.label
}}:</span>
<el-input v-model="extraParams[item.selectInfo.field]" :placeholder="item.selectInfo.placeholder"
:disabled="item.selectInfo.disabled" :clearable="item.selectInfo.disabled"> </el-input>
:disabled="item.selectInfo.disabled" :clearable="item.selectInfo.clearable"> </el-input>
</div>
<div class="group-con" v-else-if="item.type == 'group'">
<template v-for="formItem in (item.formItems || [])">
<div class="form_item" v-if="formItem.type == 'input'" style="margin-right: 15px;">
<span class="item_label" style="display: block;margin-bottom: 2px" :class="{ required_mark: formItem.required }">{{ formItem.label }}:</span>
<el-input v-model="extraParams[formItem.field]" :placeholder="formItem.placeholder"
:disabled="formItem.disabled" :clearable="formItem.clearable"> </el-input>
</div>
<div class="form_item" v-else-if="formItem.type == 'switch'">
<span class="item_label" style="display: block;margin-bottom: 2px" :class="{ required_mark: formItem.required }">{{ formItem.label }}:</span>
<el-switch inline-prompt v-model="extraParams[formItem.field]" :active-value="formItem.activeValue"
:inactive-value="formItem.inactiveValue" :active-text="formItem.activeText"
:inactive-text="formItem.inactiveText" :disabled="formItem.disabled" />
</div>
</template>
</div>
<div class="item_btn" v-else-if="item.type == 'btn_down'">
<el-button plain @click="toolBtnClick({ value: 'exoprt_model' })" v-preReClick>
......@@ -363,5 +378,11 @@ defineExpose({
}
}
}
.group-con {
display: flex;
flex-wrap: wrap;
margin-bottom: -12px;
}
}
</style>
......
......@@ -44,16 +44,13 @@ const routes: RouteRecordRaw[] = [
name: 'importFileMeta',
component: () => import('@/views/importFile.vue'),
meta: {
title: '导入数据',
title: '导入数据-采集任务',
sidebar: false,
breadcrumb: false,
cache: true,
reuse: true
},
beforeEnter: (to, from) => {
if (to.query.bizGuid) {
to.meta.title = `导入数据-采集任务`;
}
}
}
],
......
......@@ -598,7 +598,7 @@ onBeforeMount(() => {
<TableTools :searchItems="searchItemList" :searchId="'data-source-search'" @search="toSearch" :init="false" />
<div class="tools_btns">
<el-button type="primary" @click="loadDrawer">新建</el-button>
<el-button type="primary" @click="importMeta">导入</el-button>
<el-button @click="importMeta">导入</el-button>
</div>
</div>
<div class="table_panel_wrap">
......
......@@ -332,6 +332,35 @@ const transformRulesInfo = (info: any) => {
})]
}));
}
} else if (info.ruleCode == 'ref_integrality') {
let subjectTables = toSubjectTables.value;
info.ruleFields.forEach(row => {
let tableInfo = subjectTables.find(t => t.guid === row.mainTable);
let modelRule = modelRules.find(m => m.subjectName == tableInfo.enName);
if (modelRule) {
modelRule.modelRuleConfList.ruleField.push({
enName: row.mainTableField,
compareTableGuid: row.compareTableGuid,
compareTableName: row.compareTableName,
compareEnName: row.compareEnName
});
} else {
modelRules.push(Object.assign({}, {
modelGroupGuid: modelGroupGuid.value,
name: tableInfo.chName,
subjectName: tableInfo.enName,
subjectGuid: tableInfo.guid,
dataSourceGuid: tableInfo.dataSourceGuid,
databaseName: tableInfo.dataServerName,
modelRuleConfList: [Object.assign({}, info, {
enName: row.mainTableField,
compareTableGuid: row.compareTableGuid,
compareTableName: row.compareTableName,
compareEnName: row.compareEnName
})]
}));
}
})
}
return modelRules;
}
......@@ -380,9 +409,10 @@ const save = () => {
:from-tree-data-loading="dsFromTreeDataLoading" :lazy="true" :checkOnClickNode="true"
:from_checked_all="false" :from_data="dsFromTreeData" :to_data="dsToTreeData" node_key="guid"
:transferOpenNode="true" width="70%" :defaultProps="{
label: 'name',
value: 'guid'
}" :lazyFn="handleSubjectTableLazyFn" @left-check-change="handleSubjectCheckedChange" height="calc(100% - 64px)">
label: 'name',
value: 'guid'
}" :lazyFn="handleSubjectTableLazyFn" @left-check-change="handleSubjectCheckedChange"
height="calc(100% - 64px)">
</TreeTransfer>
</div>
</div>
......
......@@ -140,6 +140,21 @@ const transformRulesInfo = (info: any) => {
}),
ruleFields: ''
});
} else if (info.ruleCode == 'ref_integrality') {
return Object.assign({}, info, {
guid: ruleGuid,
qualityModelGuid: detailInfo.value.qualityModelGuid,
ruleCode: detailInfo.value.ruleCode,
ruleField: info.ruleFields.map(row => {
return {
enName: row.mainTableField,
compareTableGuid: row.compareTableGuid,
compareTableName: row.compareTableName,
compareEnName: row.compareEnName
}
}),
ruleFields: ''
});
}
}
......
......@@ -99,7 +99,7 @@ const transformRulesInfo = (info) => {
qualityModelGuid: modelGuid,
ruleCode: info.ruleCode,
customSql: info.customSqls?.[modelDetailInfo.value.subjectName],
ruleField: info.ruleFields?.[modelDetailInfo.value.subjectName]?.map(f => {
ruleField: info.ruleFields?.[modelDetailInfo.value.subjectName]?.map(f => {
return {
enName: f
}
......@@ -116,22 +116,38 @@ const transformRulesInfo = (info) => {
differenceRange: info.rows[0].differenceRange,
rows: ''
});
} else if (info.ruleCode === 'value_of_range') {
} else if (info.ruleCode === 'value_of_range') {
let subjectName = modelDetailInfo.value.subjectName;
let fields = info.ruleFields[subjectName];
return Object.assign({}, info, {
qualityModelGuid: modelGuid,
ruleCode: info.ruleCode,
ruleField: fields.map(f => {
return {
guid: f.guid,
enName: f.enName,
chName: f.chName,
dataType: f.dataType,
startValue: f.startValue,
endValue: f.endValue,
dataRange: f.dataRange
}
return {
guid: f.guid,
enName: f.enName,
chName: f.chName,
dataType: f.dataType,
startValue: f.startValue,
endValue: f.endValue,
dataRange: f.dataRange
}
}),
ruleFields: ''
});
} else if (info.ruleCode == 'ref_integrality') {
return Object.assign({}, info, {
qualityModelGuid: modelGuid,
ruleCode: info.ruleCode,
ruleField: info.ruleFields.map(row => {
return {
// guid: row.mainTable,
enName: row.mainTableField,
//chName: row.chName,
compareTableGuid: row.compareTableGuid,
compareTableName: row.compareTableName,
compareEnName: row.compareEnName
}
}),
ruleFields: ''
});
......
......@@ -271,7 +271,7 @@ const batching = (type) => {
if (isfileImport == '2' || isfileImport == '4') {
dialogInfo.value.header.title = '导入数据'
dialogInfo.value.type = 'upload'
dialogInfo.value.size = 500
dialogInfo.value.size = isfileImport == '4' ? 600 : 500;
uploadFiles.value = []
uploadInfo.value.uploadInfo.steps = uploadSteps.value
const content: any = [uploadInfo.value]
......@@ -374,17 +374,24 @@ const importData = (info) => {
});
paramUrl = `${import.meta.env.VITE_API_ASSET_BASEURL}/dam-catalog-table/excel-by-subject-guid?staffGuid=${userData.staffGuid}&subjectGuid=${route.query.bizGuid}`
} else if (isfileImport == '4') {
if (!info.collectTaskName) {
if (!info.databaseNameZh) {
ElMessage({
type: 'error',
message: '请填写采集任务名称'
message: '请填写数据源名称'
})
return;
}
if (!info.databaseNameEn) {
ElMessage({
type: 'error',
message: '请填写数据库英文名'
})
return;
}
uploadFiles.value.forEach((item: any, index: number) => {
params.append("uploadFile", item.raw);
});
paramUrl = `${import.meta.env.VITE_APP_PLAN_BASEURL}/meta-collect-task/meta-collect-import?staffGuid=${userData.staffGuid}&collectTaskName=${info.collectTaskName}`
paramUrl = `${import.meta.env.VITE_APP_PLAN_BASEURL}/meta-collect-task/meta-collect-import?staffGuid=${userData.staffGuid}&databaseNameZh=${info.databaseNameZh}&databaseNameEn=${info.databaseNameEn}&isCover=${info.isCover}`
} else {
uploadFiles.value.forEach((item: any, index: number) => {
params.append("file", item.raw);
......@@ -562,17 +569,36 @@ const setUploadInfo = () => {
uploadSteps.value = [
{
title: '1、导入前请先录入以下内容',
type: 'input',
selectInfo: {
label: '采集任务名称',
type: 'group',
formItems: [{
type: 'input',
label: '数据源名称',
placeholder: '请输入',
field: 'collectTaskName',
field: 'databaseNameZh',
default: '',
clearable: true,
maxlength: 50,
filterable: true,
required: true
}
}, {
type: 'input',
label: '数据库英文名',
placeholder: '请输入',
field: 'databaseNameEn',
default: '',
clearable: true,
maxlength: 50,
filterable: true,
required: true
}, {
label: '是否覆盖原有数据',
type: 'switch',
field: 'isCover',
activeValue: 'Y',
block: true,
required: true,
inactiveValue: 'N'
}]
},
{
title: '2、请下载最新的模板,并按照模板格式准备需要导入的数据',
......@@ -591,7 +617,7 @@ const setUploadInfo = () => {
}
}
]
uploadInfo.value.uploadInfo.extraParams = {}
uploadInfo.value.uploadInfo.extraParams = { isCover: 'Y' }
} else {
uploadSteps.value = [
{
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!