This commit is contained in:
2023-12-27 19:25:12 +08:00
parent 5c770409d8
commit 300825d877
8 changed files with 163 additions and 163 deletions

View File

@@ -42,134 +42,16 @@
/>
</el-select>
</el-form-item>
<el-form-item label="数据表" prop="ruleTableId">
<el-select v-model="form.ruleTableId" placeholder="请选择数据表" @change="tableSelectChanged">
<el-option
v-for="table in tableOptions"
:key="table.id"
:label="table.tableName"
:value="table.id"
>
<span style="float: left">{{ table.tableName + '(' + table.tableComment + ')' }}</span>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="核查字段" prop="ruleColumnId">
<el-select v-model="form.ruleColumnId" placeholder="请选择核查字段" @change="columnSelectChanged">
<el-option
v-for="column in columnOptions"
:key="column.id"
:label="column.columnName"
:value="column.id"
>
<span style="float: left">{{ column.columnName + '(' + column.columnComment + ')' }}</span>
</el-option>
</el-select>
</el-form-item>
<el-divider content-position="left">核查配置</el-divider>
<el-row v-if="form.ruleConfig.ruleItemCode === 'timeliness_key'">
<el-col :span="24">
<el-form-item label="判定阀值">
<el-input-number v-model="form.ruleConfig.timeliness.threshold" :controls="false" :min="1" />
</el-form-item>
</el-col>
</el-row>
<el-row v-if="form.ruleConfig.ruleItemCode === 'consistent_key'">
<el-col :span="12">
<el-form-item label="标准字典类别">
<el-select
v-model="form.ruleConfig.consistent.gbTypeId"
placeholder="请选择"
@change="dictTypeSelectChanged"
>
<el-option
v-for="item in dictTypeOptions"
:key="item.id"
:label="item.gbTypeName"
:value="item.id"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="标准字典字段">
<el-select v-model="form.ruleConfig.consistent.bindGbColumn" placeholder="请选择">
<el-option
v-for="item in gbColumnOptions"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row v-if="form.ruleConfig.ruleItemCode === 'relevance_key'">
<el-col :span="12">
<el-form-item label="关联表">
<el-select
v-model="form.ruleConfig.relevance.relatedTableId"
placeholder="请选择"
@change="relatedTableSelectChanged"
>
<el-option
v-for="table in tableOptions"
:key="table.id"
:label="table.tableName"
:value="table.id"
>
<span style="float: left">{{ table.tableName + '(' + table.tableComment + ')' }}</span>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="关联字段">
<el-select
v-model="form.ruleConfig.relevance.relatedColumnId"
placeholder="请选择"
@change="relatedColumnSelectChanged"
>
<el-option
v-for="column in relatedColumnOptions"
:key="column.id"
:label="column.columnName"
:value="column.id"
>
<span style="float: left">{{ column.columnName + '(' + column.columnComment + ')' }}</span>
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row v-if="form.ruleConfig.ruleItemCode === 'accuracy_key_length'">
<el-col :span="24">
<el-form-item label="最大长度">
<el-input-number v-model="form.ruleConfig.accuracy.maxLength" :controls="false" :min="1" />
</el-form-item>
</el-col>
</el-row>
<!-- 正则表达式规则-->
<el-row v-if="form.ruleConfig.ruleItemCode === 'regular_key'">
<el-col :span="24">
<el-form-item label="正则表达">
<el-input v-model="form.ruleConfig.regular.regular" placeholder="请输入正则规则" />
</el-form-item>
</el-col>
</el-row>
<el-row v-if="form.ruleConfig.ruleItemCode === 'regular_key'">
<el-form-item label="常用正则">
<el-radio-group v-model="form.zzStatus" @change="handleZzStatusRadioChange">
<el-radio label="1">手机号码</el-radio>
<el-radio label="2">邮箱</el-radio>
<el-radio label="3">整数</el-radio>
<el-radio label="4">负数</el-radio>
<el-radio label="5">身份证</el-radio>
<el-radio label="6">日期格式yyyy-mm-dd</el-radio>
<el-radio label="7">IP</el-radio>
</el-radio-group>
</el-form-item>
</el-row>
<div>
<el-transfer
v-model="form.transferValue"
filterable
:titles="['备选', '已选']"
:filter-method="filterMethod"
filter-placeholder="请输入表名"
:data="transferData"
/>
</div>
<el-form-item label="状态" prop="status">
<el-radio-group v-model="form.status">
<el-radio
@@ -189,14 +71,18 @@
</template>
<script>
import { listRuleLevel, listRuleItem, addCheckRule } from '@/api/quality/checkrule'
import { listRuleLevel, listRuleItem, addCheckRule, listSourceIdBytable } from '@/api/quality/checkrule'
import { listDataSource } from '@/api/metadata/datasource'
import { listDataTable } from '@/api/metadata/datatable'
import { listDataColumn } from '@/api/metadata/datacolumn'
import { listDataDictType } from '@/api/standard/datadict'
import { Transfer } from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
export default {
name: 'CheckRuleAdd',
components: {
ElTransfer: Transfer
},
props: {
data: {
type: Object,
@@ -207,6 +93,9 @@ export default {
},
data() {
return {
// eslint-disable-next-line vue/no-dupe-keys
transferData: [],
title: '核查规则新增',
// 展示切换
showOptions: {
@@ -224,6 +113,7 @@ export default {
},
// 表单参数
form: {
qualityType: 'jg',
ruleName: undefined,
ruleTypeId: undefined,
ruleItemId: undefined,
@@ -262,7 +152,8 @@ export default {
}
},
status: '1',
zzStatus: '0' // 状态正则
zzStatus: '0', // 状态正则
transferValue: []
},
// 表单校验
rules: {
@@ -299,11 +190,11 @@ export default {
{ value: 'gb_code', label: '标准编码' },
{ value: 'gb_name', label: '标准名称' }
],
relatedColumnOptions: []
relatedColumnOptions: [],
tableNameOldList: []
}
},
created() {
console.log('data:' + this.data)
this.form.ruleTypeId = this.data.ruleTypeId
this.getDicts('sys_common_status').then(response => {
if (response.success) {
@@ -319,7 +210,24 @@ export default {
this.getRuleItemList()
this.getDataSourceList()
},
methods: {
filterMethod(query, item) {
return item.pinyin.indexOf(query) > -1
},
generateData(tableData) {
const data = []
const tableName = tableData
const pinyin = tableData
tableName.forEach((tableData, index) => {
data.push({
label: tableData,
key: tableData,
pinyin: pinyin[index]
})
})
this.transferData = data
},
showCard() {
this.$emit('showCard', this.showOptions)
},
@@ -350,23 +258,56 @@ export default {
})
this.form.ruleConfig.ruleItemCode = item.itemCode
},
sourceSelectChanged(val) {
listDataTable({ sourceId: val }).then(response => {
if (response.success) {
this.tableOptions = response.data
this.columnOptions = []
const source = this.sourceOptions.find(function (item) {
return item.id === val
})
this.form.ruleSource = source.sourceName
this.form.ruleDbType = source.dbType
this.form.ruleTableId = ''
this.form.ruleTable = ''
this.form.ruleTableComment = ''
this.form.ruleColumnId = ''
this.form.ruleColumn = ''
this.form.ruleColumnComment = ''
async sourceSelectChanged(val) {
// this.inspectSourceId(val)
// const tableNameOldList = []
const tableNameOldList = await listSourceIdBytable(val).then(response => {
const result = []
for (let i = 0; i < response.data.length; i++) {
const tableName = response.data[i].ruleTable
result.push(tableName)
}
return result
})
const response = await listDataTable({ sourceId: val })
if (response.success) {
// 处理过滤数据
const tableNameList = []
for (let i = 0; i < response.data.length; i++) {
const tableName = response.data[i].tableName
if (!tableNameOldList.some((str) => str === tableName)) {
tableNameList.push(tableName)
}
}
await this.generateData(tableNameList)
// this.form.transferValue = ['robot_patient'] 暂时失效,初始化默认值
this.tableOptions = response.data
this.columnOptions = []
const source = this.sourceOptions.find(function (item) {
return item.id === val
})
this.form.ruleSource = source.sourceName
this.form.ruleDbType = source.dbType
this.form.ruleTableId = ''
this.form.ruleTable = ''
this.form.ruleTableComment = ''
this.form.ruleColumnId = ''
this.form.ruleColumn = ''
this.form.ruleColumnComment = ''
console.log('tableNameOldList=', tableNameOldList)
this.form.transferValue = tableNameOldList
}
},
// 根据来源数据获取已有表
inspectSourceId(val) {
listSourceIdBytable(val).then(response => {
const tableNameOldList = []
for (let i = 0; i < response.data.length; i++) {
const tableName = response.data[i].ruleTable
tableNameOldList.push(tableName)
}
this.tableNameOldList = tableNameOldList
})
},
tableSelectChanged(val) {