Commit f9542c93 by 刘泽志

异常字段检测

parent 222ed32b
......@@ -16,6 +16,19 @@ export function queryField(params) {
}
/**
* 查询匹配上个模板的字段字典
* @param params
* @returns {*}
*/
export function queryFieldDict(params) {
return request({
url: `${prefix}/dict`,
method: 'get',
params
})
}
/**
* 新增字段
* @param data
* @returns {*}
......
......@@ -32,6 +32,18 @@ export default class StringUtil {
}).join(" - ")
}
/**
* 多字符串合并展示
* @param connector
* @param str
* @returns {string}
*/
static merge(connector,...str){
return str.filter(item=>{
return !this.isEmpty(item)
}).join(connector)
}
static mergeRule(code,title){
return `${code}${title?title:''})`
}
......
......@@ -62,12 +62,15 @@
>
<el-table-column align="center" type="index" width="50"/>
<el-table-column align="center" label="机构类型" prop="orgName" show-overflow-tooltip/>
<el-table-column :formatter="importStatusFormat" align="center" label="导入状态" prop="importStatus"
<el-table-column :formatter="yearFormat" align="center" label="数据年份" prop="year" show-overflow-tooltip/>
<el-table-column :formatter="templateStatusFormat" align="center" label="模板状态" show-overflow-tooltip/>
<el-table-column :formatter="dataStatusFormat" align="center" label="数据状态" prop="dataStatus"
show-overflow-tooltip
/>
<el-table-column :formatter="importStatusFormat" align="center" label="正式库导入状态" prop="importStatus"
show-overflow-tooltip
/>
<el-table-column :formatter="yearFormat" align="center" label="数据年份" prop="year" show-overflow-tooltip/>
<el-table-column align="center" label="导入时间" prop="importTime" show-overflow-tooltip/>
<el-table-column :formatter="templateStatusFormat" align="center" label="模板状态" show-overflow-tooltip/>
<el-table-column align="center" label="操作" width="190">
<template slot-scope="scope">
<el-button circle icon="el-icon-edit" plain
......@@ -229,7 +232,7 @@
<!-- 字段抽屉 -->
<el-drawer :visible.sync="fieldDrawer.show" append-to-body
destroy-on-close direction="rtl"
size="80%" title="字段信息"
size="95%" title="字段信息"
>
<el-form inline label-width="110px" size="small">
<el-form-item label="数据库字段名:">
......@@ -270,12 +273,22 @@
>
<el-table-column align="center" label="代码" prop="code" show-overflow-tooltip width="120"/>
<el-table-column align="center" label="指标名称" min-width="200" prop="title" show-overflow-tooltip/>
<el-table-column align="center" label="数据坐标" prop="coordinate" show-overflow-tooltip width="100"/>
<el-table-column align="center" label="数据库字段名" min-width="150" prop="fieldName"
<el-table-column align="center" label="旧指标" min-width="300">
<template slot-scope="scope">
<el-select :value="scope.row.oldId" clearable filterable style="width: 100%" @change="value=>changeFieldSelect(scope.row,value)">
<el-option v-for="item in fieldDrawer.fieldDict" :key="item.id" :label="item.label" :value="item.id" />
</el-select>
</template>
</el-table-column>
<el-table-column align="center" label="字段名" min-width="260" prop="fieldName"
show-overflow-tooltip
/>
<el-table-column align="center" label="字段注释" min-width="150" prop="fieldComment"
show-overflow-tooltip
/>
<el-table-column align="center" label="数据坐标" prop="coordinate" show-overflow-tooltip width="100"/>
<el-table-column align="center" label="计量单位" prop="unit" show-overflow-tooltip width="90"/>
<el-table-column align="center" label="操作" width="150">
<el-table-column align="center" fixed="right" label="操作" width="150">
<template slot-scope="scope">
<el-button plain size="small" @click.stop="openRuleBindDialog(scope.row)">规则</el-button>
<el-button circle icon="el-icon-edit" plain
......@@ -536,6 +549,11 @@ import ArraySelect from '@/views/emport/rule/ArraySelect.vue'
export default {
name: 'Emport',
computed: {
StringUtil() {
return StringUtil
}
},
components: { ArraySelect, AutoLoading, AutoUpload },
data() {
return {
......@@ -592,7 +610,8 @@ export default {
pageSize: 10,
total: 0
},
queryFieldLoading: false
queryFieldLoading: false,
fieldDict:[], // 匹配上个模板的字段字典
},
quicklyBindDialog: { // 字段dialog
show: false,
......@@ -745,21 +764,17 @@ export default {
}
}).finally(_ => this.queryTableLoading = false)
},
// 初始化数据表字段字典
// 初始化匹配上个模板的字段字典
initFieldDict() {
if (this.fieldDrawer.template && this.fieldDrawer.template.tableName && this.fieldDrawer.template.dataSourceId) {
DataImport.queryDbField(this.fieldDrawer.template.dataSourceId, this.fieldDrawer.template.tableName)
.then(res => {
if (res.code === 200) {
this.fieldDict = res.data.map(item => {
return {
value: item.VALUE,
label: StringUtil.mergeStr(item.VALUE, item.LABEL)
}
})
}
})
}
DataField.queryFieldDict({templateId: this.fieldDrawer.template.id}).then(res=>{
this.fieldDrawer.fieldDict = res.data.map(item=>{
return {
id: item.id,
label: StringUtil.merge(" ",item.code,item.title),
field: item.field
}
})
})
},
// 初始化模板列表
initTemplate() {
......@@ -1035,6 +1050,24 @@ export default {
}
})
},
// 字段匹配选择
changeFieldSelect(row,id){
this.fieldDrawer.queryFieldLoading = true
let data = {
id: row.id,
field: ''
}
if (id){
let temp = this.fieldDrawer.fieldDict.find(item=>item.id === id)
if(temp){
data.field = temp.field
}
}
DataField.updateField(data)
.then(res => {
this.queryFieldList()
})
},
// 打开字段抽屉
openFieldDrawer(row) {
this.fieldDrawer.template = { ...row }
......@@ -1050,8 +1083,8 @@ export default {
}
this.fieldDrawer.fieldList = []
this.fieldDrawer.show = true
this.initFieldDict()
this.queryFieldList()
//this.initFieldDict()
},
// 重置分页再查询字段列表
clearPageToSearch() {
......@@ -1154,6 +1187,13 @@ export default {
return '未上传'
}
},
dataStatusFormat(row){
if (row.dataStatus){
return '已上传'
}else{
return '未上传'
}
},
// 打开上传初始模板
openUploadTemplate(row) {
this.initTemplateDialog.template = row
......
......@@ -11,7 +11,7 @@
size="small"
/>
</el-form-item>
<el-form-item label="指标名称">
<el-form-item label="字段注释">
<el-input v-model="queryParam.fieldComment" class="mr input" clearable placeholder="输入名称搜索"
size="small"
/>
......@@ -25,12 +25,15 @@
<el-button class="mr" size="mini" type="success" @click="addMetaFieldDialog">
新增
</el-button>
<el-button class="mr" size="mini" type="success" @click="errFieldCheck">
异常字段检测
</el-button>
</el-form-item>
</el-form>
<el-table v-loading="queryLoading" :data="metaFieldList" border max-height="500" stripe>
<el-table-column :show-overflow-tooltip="true" align="center" label="字段名" prop="fieldName"/>
<el-table-column :show-overflow-tooltip="true" align="center" label="字段名" prop="fieldName" width="400"/>
<el-table-column :show-overflow-tooltip="true" align="center" label="字段类型" prop="fieldType"/>
<el-table-column :show-overflow-tooltip="true" align="center" label="指标名称" prop="fieldComment"/>
<el-table-column :show-overflow-tooltip="true" align="center" label="字段注释" prop="fieldComment"/>
<el-table-column :show-overflow-tooltip="true" align="center" label="备注" prop="remarks"/>
<el-table-column align="center" label="操作" show-overflow-tooltip width="150">
<template slot-scope="scope">
......@@ -52,7 +55,7 @@
>
<el-form ref="metaFieldForm" :model="metaFieldDialog.data" label-width="80px">
<el-form-item label="字段名" prop="fieldName" required>
<el-input v-model="metaFieldDialog.data.fieldName" size="small"/>
<el-input v-model="metaFieldDialog.data.fieldName" maxlength="30" show-word-limit size="small" type="text"/>
</el-form-item>
<el-form-item label="字段类型" prop="fieldType" required>
<el-input v-model="metaFieldDialog.data.fieldType" size="small" placeholder="例如 VARCHAR2(64) ,NUMBER(8,1), DATE(7)等等"/>
......@@ -76,7 +79,6 @@
<script>
import * as DataField from '@/api/emport/DataField'
import * as DataRule from '@/api/emport/DataRule'
export default {
name: 'Field',
......@@ -119,6 +121,22 @@ export default {
this.queryParam.pageNum = 1
this.queryMetaFieldList()
},
// 异常字段检测
errFieldCheck(){
this.queryParam.total = 0
this.queryParam.pageNum = 1
this.queryLoading = true
DataField.queryMetaField({
total: 0,
pageNum: 1,
errorType: 'length'
}).then(res => {
if (res.code === 200) {
this.metaFieldList = res.rows
this.queryParam.total = res.total
}
}).finally(_ => this.queryLoading = false)
},
// 打开添加弹框
addMetaFieldDialog() {
this.metaFieldDialog.title = '新增字段'
......@@ -161,7 +179,7 @@ export default {
this.queryMetaFieldList()
})
} else {
DataRule.updateRule(this.metaFieldDialog.data).then(res => {
DataField.updateMetaField(this.metaFieldDialog.data).then(res => {
this.metaFieldDialog.show = false
this.queryMetaFieldList()
})
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment