From bc2adcd8f204f342e140728e309a9780a6ece1b7 Mon Sep 17 00:00:00 2001 From: gaochang Date: Mon, 8 Jan 2024 09:34:39 +0800 Subject: [PATCH] update --- public/static/your-word-document.docx | Bin 0 -> 46000 bytes src/assets/images/j-icon1.svg | 5 + src/assets/images/j-icon2.svg | 4 + src/assets/images/j-icon3.svg | 4 + src/assets/images/j-icon4.svg | 4 + src/styles/datastyle.css | 221 ++++++ .../checkcontentrule/CheckContentRuleAdd.vue | 50 +- .../CheckContentRuleDetail.vue | 20 +- .../checkcontentrule/CheckContentRuleEdit.vue | 23 +- .../checkcontentrule/CheckContentRuleList.vue | 2 +- src/views/quality/checkjob/CheckJobList.vue | 8 +- .../CheckRelevanceRuleAdd.vue | 23 +- .../CheckRelevanceRuleDetail.vue | 20 +- .../CheckRelevanceRuleEdit.vue | 23 +- .../CheckRelevanceRuleList.vue | 2 +- .../quality/checkreport/CheckReportList.vue | 8 +- .../checkreport/CheckReportStructure.vue | 575 ++++++++------ .../checkreport/CheckReportStructure_bak1.vue | 750 ++++++++++++++++++ src/views/quality/checkreport/Data.json | 698 +++++++++++++--- src/views/quality/checkrule/CheckRuleAdd.vue | 51 +- .../quality/checkrule/CheckRuleDetail.vue | 20 +- src/views/quality/checkrule/CheckRuleEdit.vue | 23 +- src/views/quality/checkrule/CheckRuleList.vue | 2 +- 23 files changed, 2022 insertions(+), 514 deletions(-) create mode 100644 public/static/your-word-document.docx create mode 100644 src/assets/images/j-icon1.svg create mode 100644 src/assets/images/j-icon2.svg create mode 100644 src/assets/images/j-icon3.svg create mode 100644 src/assets/images/j-icon4.svg create mode 100644 src/views/quality/checkreport/CheckReportStructure_bak1.vue diff --git a/public/static/your-word-document.docx b/public/static/your-word-document.docx new file mode 100644 index 0000000000000000000000000000000000000000..8b2a6869ea1df3ef7cb1b84d29373a0964ef54d9 GIT binary patch literal 46000 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 literal 0 HcmV?d00001 diff --git a/src/assets/images/j-icon1.svg b/src/assets/images/j-icon1.svg new file mode 100644 index 0000000..4fb9bea --- /dev/null +++ b/src/assets/images/j-icon1.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/images/j-icon2.svg b/src/assets/images/j-icon2.svg new file mode 100644 index 0000000..f9beb57 --- /dev/null +++ b/src/assets/images/j-icon2.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/j-icon3.svg b/src/assets/images/j-icon3.svg new file mode 100644 index 0000000..f3acdca --- /dev/null +++ b/src/assets/images/j-icon3.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/images/j-icon4.svg b/src/assets/images/j-icon4.svg new file mode 100644 index 0000000..c23247b --- /dev/null +++ b/src/assets/images/j-icon4.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/styles/datastyle.css b/src/styles/datastyle.css index 857ef8a..edff045 100644 --- a/src/styles/datastyle.css +++ b/src/styles/datastyle.css @@ -171,13 +171,23 @@ body .hasTagsView .app-main .el-card{ border: 0; border-radius: 0; } +body .el-card.box-card.is-always-shadow, body .hasTagsView .app-main .el-card.box-card.is-always-shadow{ box-shadow: none; } +body .el-card .el-card__header, body .hasTagsView .app-main .el-card .el-card__header{ border-bottom: 1px solid #E5E6EB; padding: 10px 20px; } +body .el-card .el-card__header .clearfix::before, +body .el-card .el-card__header .clearfix::after{ + content: ""; + display: table; +} +body .el-card .el-card__header .clearfix::after{ + clear: both; +} body .hasTagsView .app-main .el-card .el-card__header>.clearfix>span{ line-height: 29px; font-weight: bold; @@ -403,9 +413,28 @@ body .el-table--medium .el-table__cell { body .el-table--border { border: 0; } +body .el-table--border::after, +body .el-table--group::after, +body .el-table::before { + background-color: #e5e6eb; +} +body .el-table--border::after { + content: none; +} +body .el-table--border.btable::after { + content: ""; +} body .el-table--border .el-table__cell { border-right: 0; } +body .el-table.btable{ + border-top: 1px solid #e5e6eb !important; + border-left: 1px solid #e5e6eb !important; +} +body .el-table.btable .el-table__cell { + border-right: 1px solid #EBEEF5; +} + /*el-tree*/ body .el-tree { @@ -531,6 +560,12 @@ body .el-form-item .el-form-item__label { body .el-progress-bar__inner { background-color: #233A82 !important; } +body .pro1 .el-progress-bar__inner { + background-color: #F53F3F !important; +} +body .el-progress-bar__inner .el-progress-bar__innerText{ + color: #fff !important; +} /*modellist*/ .modellist{ @@ -670,3 +705,189 @@ body ,html{ .login-page .loright .locont .el-button{ border-radius: 2px; } + + + +* { + --color: #233A82; + --color_shallow: #233A82; + --count_number: #233A82; + --count_number_shallow: #233A82; + --primary_color: #233A82; + --aside_color: #233A82; +} + + +.ftitle{ + display: block; + text-align: center; + font-size: 20px; + line-height: 28px; + font-weight: bold; + color: #1D2129; + margin: 0; + padding: 0; +} +.stitle{ + display: block; + text-align: left; + color: #1D2129; + font-size: 16px; + font-weight: bold; + line-height: 24px; + padding: 0 0 8px 0; + margin: 30px 0 0 0; + border-bottom: 1px solid #e5e6eb; +} +.ttitle{ + display: block; + text-align: left; + color: #1D2129; + font-size: 14px; + font-weight: bold; + line-height: 22px; + padding: 0 0 8px 0; + margin: 24px 0 0 0; +} + +/*test-list*/ +.test-list{ + display: flex; +} +.test-list .list{ + display: block; + flex: 1; + padding: 24px 24px 0 24px; +} +.test-list .list+.list{ + margin-left: 24px; +} +.test-list .list .title{ + display: flex; + align-items: center; +} +.test-list .list .title img{ + display: block; + width: 16px; + margin: 0 4px 0 0; +} +.test-list .list .title .tit{ + display: block; + color: #86909C; + font-size: 14px; + line-height: 22px; + margin: 0; + padding: 0; +} +.test-list .list .figure{ + display: block; + margin: 12px 0 0 0; + padding: 0; + color: #1D2129; + font-size: 24px; + line-height: 32px; + font-weight: bold; +} + +/*badge*/ +body .el-badge.newbadge{ + display: inline-flex; + flex-direction: row-reverse; + align-items: center; +} +body .el-badge.newbadge+.el-badge.newbadge{ + margin-left: 20px; +} +body .el-badge.newbadge .sz{ + color: #1D2129; + font-size: 14px; + font-weight: 300; + line-height: 22px; + margin: 0 0 0 10px; +} +body .el-badge.newbadge .el-badge__content.is-fixed{ + position: inherit; + transform: inherit; + right: 0; + width: 18px; + height: 18px; + line-height: 18px; + text-align: center; + margin: 0; + padding: 0; + font-size: 12px; +} +body .el-badge__content{ + background-color: #F53F3F; +} +body .el-badge__content--warning { + background-color: #F7BA1E; +} +body .el-badge__content--primary { + background-color: #0FC6C2; +} + + +/*ncoll*/ +body .ncoll{ + margin: 5px 0 0 0; +} +body .ncoll.el-collapse{ + border: 0; +} +body .ncoll.el-collapse .el-collapse-item>div:first-child{ + text-align: center; +} +body .ncoll.el-collapse .el-collapse-item__header{ + border-bottom: 0; + height: 30px; + line-height: 30px; + justify-content: center; + display: inline-flex; + color: #233A82; +} +body .ncoll.el-collapse .el-collapse-item__header:hover{ + color: #2B50C4; +} +body .ncoll.el-collapse .el-collapse-item__header .tit{ + display: block; + margin: 0; + display: block; + text-align: left; + font-size: 12px; + font-weight: normal; + line-height: 20px; +} +body .ncoll.el-collapse .el-collapse-item__header .el-collapse-item__arrow{ + display: block; + width: 18px; + height: 18px; + text-align: center; + line-height: 18px; + padding: 0; + font-size: 14px; + margin: 0; + -webkit-transform: rotate(90deg); + transform: rotate(90deg); +} +body .ncoll.el-collapse .el-collapse-item__arrow.is-active { + -webkit-transform: rotate(-90deg); + transform: rotate(-90deg); +} +body .ncoll.el-collapse .el-collapse-item__wrap{ + border-bottom: 0; +} +body .ncoll.el-collapse .el-collapse-item__wrap .el-collapse-item__content{ + padding: 5px 0; +} + +.dbox{ + border: 1px dashed #e5e6eb; + padding: 10px; + box-sizing: border-box; + margin: 10px 0 0 0; + border-radius: 4px; +} +.dbox .ttitle:first-child{ + margin-top: 0; +} diff --git a/src/views/quality/checkcontentrule/CheckContentRuleAdd.vue b/src/views/quality/checkcontentrule/CheckContentRuleAdd.vue index 9b31f3a..6880e97 100644 --- a/src/views/quality/checkcontentrule/CheckContentRuleAdd.vue +++ b/src/views/quality/checkcontentrule/CheckContentRuleAdd.vue @@ -195,16 +195,16 @@ /> - - - - - + + + + + + + + + + @@ -219,6 +219,26 @@ /> + + + + + + + + + + + 手机号码 + 邮箱 + 整数 + 负数 + 身份证 + 日期格式yyyy-mm-dd + IP + + + - - - - - + + + + + + + + + + - - - - - + + + + + + + + + + - + diff --git a/src/views/quality/checkrelevancerule/CheckRelevanceRuleAdd.vue b/src/views/quality/checkrelevancerule/CheckRelevanceRuleAdd.vue index 9a608a7..1df96cd 100644 --- a/src/views/quality/checkrelevancerule/CheckRelevanceRuleAdd.vue +++ b/src/views/quality/checkrelevancerule/CheckRelevanceRuleAdd.vue @@ -193,16 +193,16 @@ /> - - - - - + + + + + + + + + + @@ -321,9 +321,6 @@ export default { ruleItemId: [ { required: true, message: '核查类型不能为空', trigger: 'change' } ], - ruleLevelId: [ - { required: true, message: '规则级别不能为空', trigger: 'change' } - ], ruleSourceId: [ { required: true, message: '数据源不能为空', trigger: 'change' } ], diff --git a/src/views/quality/checkrelevancerule/CheckRelevanceRuleDetail.vue b/src/views/quality/checkrelevancerule/CheckRelevanceRuleDetail.vue index 5c2e1d4..1d24b95 100644 --- a/src/views/quality/checkrelevancerule/CheckRelevanceRuleDetail.vue +++ b/src/views/quality/checkrelevancerule/CheckRelevanceRuleDetail.vue @@ -21,16 +21,16 @@ /> - - - - - + + + + + + + + + + - - - - - + + + + + + + + + + { this.loading = false if (response.success) { + console.log('response',response) const { data } = response this.tableDataList = data.data this.total = data.total @@ -225,8 +227,10 @@ checkReportTypeFormatter(row, column, cellValue, index) { if (cellValue === 'structure') { return '结构符合性检测报告' - } else { + } else if (cellValue === 'content') { return '内容符合性检测报告' + } else { + return '关联符合性检测报告' } }, checkResultFormatter(row, column, cellValue, index) { diff --git a/src/views/quality/checkreport/CheckReportStructure.vue b/src/views/quality/checkreport/CheckReportStructure.vue index be694b4..0492464 100644 --- a/src/views/quality/checkreport/CheckReportStructure.vue +++ b/src/views/quality/checkreport/CheckReportStructure.vue @@ -1,302 +1,305 @@ @@ -352,22 +355,44 @@ // 表字段标准检测 table_key: [], + no_table_key: [], // 长度标准检测 length_key: [], + no_length_key: [], // 空值标准检测 null_key: [], + no_null_key: [], // 主键标准检测 pk_key: [], + no_pk_key: [], // 外键标准检测 fk_key: [], + no_fk_key: [], // 完整性标准检测 integrity: [], + no_integrity: [], // 准确性标准检测 accuracy: [], + no_accuracy: [], // 一致性标准检测 consistent: [], + no_consistent: [], // 正则表达式标准检测 regular: [], + no_regular: [], + // 检测表总数 + checkTotalCount: null, + // 检测总耗时 + checkTimeConsuming: null, + // 不合规总数 + checkErrorCount: null, + + // 检测表总数 + checkTotalCount_new: null, + // 检测总耗时 + checkTimeConsuming_new: null, + // 不合规总数 + checkErrorCount_new: null, like: true, value1: 4154.564, @@ -382,30 +407,43 @@ mounted () { // 表字段标准检测 this.table_key = dataJson.caseType.table_key + this.no_table_key = dataJson.caseType.no_table_key // 长度标准检测 this.length_key = dataJson.caseType.length_key + this.no_length_key = dataJson.caseType.no_length_key // 空值标准检测 this.null_key = dataJson.caseType.null_key + this.no_null_key = dataJson.caseType.no_null_key // 主键标准检测 this.pk_key = dataJson.caseType.pk_key + this.no_pk_key = dataJson.caseType.no_pk_key // 外键标准检测 this.fk_key = dataJson.caseType.fk_key + this.no_fk_key = dataJson.caseType.no_fk_key // 完整性标准检测 this.integrity = dataJson.caseType.integrity + this.no_integrity = dataJson.caseType.no_integrity // 准确性标准检测 this.accuracy = dataJson.caseType.accuracy + this.no_accuracy = dataJson.caseType.no_accuracy // 一致性标准检测 this.consistent = dataJson.caseType.consistent + this.no_consistent = dataJson.caseType.no_consistent // 正则表达式标准检测 this.regular = dataJson.caseType.regular + this.no_regular = dataJson.caseType.no_regular // 初始化按数据源统计不合规数量 this.spanArr1 = [] this.spanArr2 = [] - this.reportTableData1 = dataJson.dataAmount.reportTableData1 - this.reportTableData2 = dataJson.dataAmount.reportTableData2 + this.reportTableData1 = dataJson.dataReport.reportTableData1 + this.reportTableData2 = dataJson.dataReport.reportTableData2 this.rowspan1() this.rowspan2() + + this.checkTotalCount_new = dataJson.checkTotalCount + this.checkTimeConsuming_new = dataJson.checkTimeConsuming + this.checkErrorCount_new = dataJson.checkErrorCount }, methods: { showCard() { @@ -415,9 +453,9 @@ this.spanArr1 = [] this.spanArr2 = [] // this.getReportData1() - this.getReportData2() - this.getReportData3() - this.date = moment(this.queryParams.checkDate).format('YYYY年MM月DD日') + // this.getReportData2() + // this.getReportData3() + // this.date = moment(this.queryParams.checkDate).format('YYYY年MM月DD日') }, // getReportData1() { // getReportBySource({ checkDate: this.queryParams.checkDate }).then(response => { @@ -521,6 +559,15 @@ this.timelinessTableData = response.data.timeliness } }) + }, + exportWord() { + const filePath = './static/your-word-document.docx' + const link = document.createElement('a') + link.href = filePath + link.download = '测结果报告.docx' + document.body.appendChild(link) + link.click() + document.body.removeChild(link) } } } diff --git a/src/views/quality/checkreport/CheckReportStructure_bak1.vue b/src/views/quality/checkreport/CheckReportStructure_bak1.vue new file mode 100644 index 0000000..697271d --- /dev/null +++ b/src/views/quality/checkreport/CheckReportStructure_bak1.vue @@ -0,0 +1,750 @@ + + + + + diff --git a/src/views/quality/checkreport/Data.json b/src/views/quality/checkreport/Data.json index 9811ed7..b4ee396 100644 --- a/src/views/quality/checkreport/Data.json +++ b/src/views/quality/checkreport/Data.json @@ -1,132 +1,570 @@ { - "caseType": - { - "table_key":[ - { - "ruleName":"表字段标准检测分析", - "ruleSourceName":"数据平台", - "ruleTableName":"全表", - "checkTotalCount":"500", - "checkErrorCount":"28" - } - ], - "length_key":[ - { - "ruleName":"长度标准检测分析", - "ruleSourceName":"数据平台", - "ruleTableName":"全表", - "checkTotalCount":"500", - "checkErrorCount":"28" - } - ], - "pk_key":[ - { - "ruleName":"主键标准检测分析", - "ruleSourceName":"数据平台", - "ruleTableName":"全表", - "checkTotalCount":"500", - "checkErrorCount":"28" - } - ], - "null_key":[ - { - "ruleName":"空值标准检测分析", - "ruleSourceName":"数据平台", - "ruleTableName":"全表", - "checkTotalCount":"500", - "checkErrorCount":"28" - } - ], - "fk_key":[ - { - "ruleName":"外键标准检测分析", - "ruleSourceName":"数据平台", - "ruleTableName":"全表", - "checkTotalCount":"500", - "checkErrorCount":"28" - } - ], - "integrity":[ - { - "ruleName":"完整性标准检测分析", - "ruleSourceName":"数据平台", - "ruleTableName":"全表", - "checkTotalCount":"500", - "checkErrorCount":"28" - } - ], - "accuracy":[ - { - "ruleName":"准确性标准检测分析", - "ruleSourceName":"数据平台", - "ruleTableName":"全表", - "checkTotalCount":"500", - "checkErrorCount":"28" - } - ], - "consistent":[ - { - "ruleName":"一致性标准检测分析", - "ruleSourceName":"数据平台", - "ruleTableName":"全表", - "checkTotalCount":"500", - "checkErrorCount":"28" - } - ], - "regular":[ - { - "ruleName":"正则表达式标准检测分析", - "ruleSourceName":"数据平台", - "ruleTableName":"全表", - "checkTotalCount":"500", - "checkErrorCount":"28" - } - ] - }, - "dataAmount": - { - "reportTableData1":[ - { - "ruleSourceId":1, - "ruleSourceName":"数据平台", - "ruleLevelName": "低", - "checkErrorCount":9 - }, - { - "ruleSourceId":1, - "ruleSourceName":"数据平台", - "ruleLevelName": "高", - "checkErrorCount":56 - }, - { - "ruleSourceId":1, - "ruleSourceName":"数据平台", - "ruleLevelName": "中", - "checkErrorCount":78 - } - ], - "reportTableData2":[ - { - "checkErrorCount":7, - "ruleTypeId":"1", - "ruleTypeName":"数据平台", - "ruleLevelName":"中", - "ruleName": "表字段标准检测分析" - }, - { - "checkErrorCount":20, - "ruleTypeId":"1", - "ruleTypeName":"数据平台", - "ruleLevelName":"高", - "ruleName": "长度标准检测分析" - }, - { - "checkErrorCount":5, - "ruleTypeId":"1", - "ruleTypeName":"数据平台", - "ruleLevelName":"低", - "ruleName": "空值标准检测分析" - } - ] - } + "caseType": { + "table_key": [ + { + "ruleName": "表字段标准检测用列", + "ruleSourceName": "数据平台", + "ruleTableName": "全表", + "version": "1.0", + "checkTotalCount": "78", + "checkErrorCount": "1" + }, + { + "ruleName": "表字段标准检测用列", + "ruleSourceName": "演示应用", + "ruleTableName": "全表", + "version": "1.0", + "checkTotalCount": "449", + "checkErrorCount": "4" + } + ], + "no_table_key": [ + { + "caseName": "表字段标准检测用列", + "source": "数据平台", + "tableName": "TABLE_A", + "trueTableName": "TABLE_A", + "standardTableName": "TABLE_A", + "trueColumn": "column_AAA", + "standardColumn": "column_AAC", + "notDetail": "字段名与标准不一致" + }, + { + "caseName": "表字段标准检测用列", + "source": "演示应用", + "tableName": "TABLE_D", + "trueTableName": "TABLE_D", + "standardTableName": "TABLE_K", + "trueColumn": "", + "standardColumn": "", + "notDetail": "表名与标准不一致" + }, + { + "caseName": "表字段标准检测用列", + "source": "演示应用", + "tableName": "TABLE_E", + "trueTableName": "TABLE_E", + "standardTableName": "TABLE_E", + "trueColumn": "columnE", + "standardColumn": "column_E", + "notDetail": "字段名与标准不一致" + }, + { + "caseName": "表字段标准检测用列", + "source": "演示应用", + "tableName": "TABLE_F", + "trueTableName": "TABLE_F", + "standardTableName": "TABLE_F", + "trueColumn": "columnF", + "standardColumn": "column_F", + "notDetail": "字段名与标准不一致" + }, + { + "caseName": "表字段标准检测用列", + "source": "演示应用", + "tableName": "TABLE_G", + "trueTableName": "TABLE_G", + "standardTableName": "TABLE_G", + "trueColumn": "columnG", + "standardColumn": "column_G", + "notDetail": "字段名与标准不一致" + } + ], + "length_key": [ + { + "ruleName": "长度标准检测用列", + "ruleSourceName": "演示应用", + "ruleTableName": "全表", + "version": "1.0", + "checkTotalCount": "449", + "checkErrorCount": "10" + } + ], + "no_length_key": [ + { + "caseName": "长度标准检测用列", + "source": "演示应用", + "tableName": "TABLE_A", + "standardColumn": "column_C", + "standardLength": "200", + "trueLength": "2000", + "notDetail": "字段长度不符合标准约束" + },{ + "caseName": "长度标准检测用列", + "source": "演示应用", + "tableName": "TABLE_B", + "standardColumn": "column_C", + "standardLength": "100", + "trueLength": "150", + "notDetail": "字段长度不符合标准约束" + },{ + "caseName": "长度标准检测用列", + "source": "演示应用", + "tableName": "TABLE_C", + "standardColumn": "column_C", + "standardLength": "200", + "trueLength": "4000", + "notDetail": "字段长度不符合标准约束" + },{ + "caseName": "长度标准检测用列", + "source": "演示应用", + "tableName": "TABLE_D", + "standardColumn": "column_C", + "standardLength": "200", + "trueLength": "2000", + "notDetail": "字段长度不符合标准约束" + },{ + "caseName": "长度标准检测用列", + "source": "演示应用", + "tableName": "TABLE_E", + "standardColumn": "column_C", + "standardLength": "200", + "trueLength": "2000", + "notDetail": "字段长度不符合标准约束" + },{ + "caseName": "长度标准检测用列", + "source": "演示应用", + "tableName": "TABLE_F", + "standardColumn": "column_C", + "standardLength": "200", + "trueLength": "2000", + "notDetail": "字段长度不符合标准约束" + },{ + "caseName": "长度标准检测用列", + "source": "演示应用", + "tableName": "TABLE_G", + "standardColumn": "column_C", + "standardLength": "2000", + "trueLength": "4000", + "notDetail": "字段长度不符合标准约束" + },{ + "caseName": "长度标准检测用列", + "source": "演示应用", + "tableName": "TABLE_H", + "standardColumn": "column_C", + "standardLength": "100", + "trueLength": "150", + "notDetail": "字段长度不符合标准约束" + },{ + "caseName": "长度标准检测用列", + "source": "演示应用", + "tableName": "TABLE_I", + "standardColumn": "column_C", + "standardLength": "200", + "trueLength": "2000", + "notDetail": "字段长度不符合标准约束" + },{ + "caseName": "长度标准检测用列", + "source": "演示应用", + "tableName": "TABLE_J", + "standardColumn": "column_C", + "standardLength": "200", + "trueLength": "2000", + "notDetail": "字段长度不符合标准约束" + } + ], + "pk_key": [ + { + "ruleName": "主键标准检测用列", + "ruleSourceName": "数据平台", + "ruleTableName": "全表", + "version": "1.0", + "checkTotalCount": "78", + "checkErrorCount": "8" + },{ + "ruleName": "主键标准检测用列", + "ruleSourceName": "演示应用", + "ruleTableName": "全表", + "version": "1.0", + "checkTotalCount": "449", + "checkErrorCount": "5" + } + + ], + "no_pk_key": [ + { + "caseName": "主键标准检测用列", + "source": "演示应用", + "tableName": "TABLE_A", + "standardColumn": "column_AAA", + "trueColumn": "column_AAA", + "truePk": "是", + "notDetail": "表字段不符合主键标准约束", + "standardPk": "否" + }, + { + "caseName": "主键标准检测用列", + "source": "演示应用", + "tableName": "TABLE_W", + "standardColumn": "column_AAA", + "trueColumn": "column_AAA", + "truePk": "否", + "notDetail": "表字段不符合主键标准约束", + "standardPk": "是" + },{ + "caseName": "主键标准检测用列", + "source": "演示应用", + "tableName": "TABLE_Q", + "standardColumn": "column_AAA", + "trueColumn": "column_AAA", + "truePk": "是", + "notDetail": "表字段不符合主键标准约束", + "standardPk": "否" + }, + { + "caseName": "主键标准检测用列", + "source": "演示应用", + "tableName": "TABLE_E", + "standardColumn": "column_AAA", + "trueColumn": "column_AAA", + "truePk": "否", + "notDetail": "表字段不符合主键标准约束", + "standardPk": "是" + },{ + "caseName": "主键标准检测用列", + "source": "演示应用", + "tableName": "TABLE_R", + "standardColumn": "column_AAA", + "trueColumn": "column_AAA", + "truePk": "是", + "notDetail": "表字段不符合主键标准约束", + "standardPk": "否" + }, + { + "caseName": "主键标准检测用列", + "source": "数据平台", + "tableName": "TABLE_A", + "standardColumn": "column_AAA", + "trueColumn": "column_AAA", + "truePk": "否", + "notDetail": "表字段不符合主键标准约束", + "standardPk": "是" + },{ + "caseName": "主键标准检测用列", + "source": "数据平台", + "tableName": "TABLE_D", + "standardColumn": "column_AAA", + "trueColumn": "column_AAA", + "truePk": "是", + "notDetail": "表字段不符合主键标准约束", + "standardPk": "否" + }, + { + "caseName": "主键标准检测用列", + "source": "数据平台", + "tableName": "TABLE_W", + "standardColumn": "column_AAA", + "trueColumn": "column_AAA", + "truePk": "否", + "notDetail": "表字段不符合主键标准约束", + "standardPk": "是" + },{ + "caseName": "主键标准检测用列", + "source": "数据平台", + "tableName": "TABLE_G", + "standardColumn": "column_AAA", + "trueColumn": "column_AAA", + "truePk": "是", + "notDetail": "表字段不符合主键标准约束", + "standardPk": "否" + }, + { + "caseName": "主键标准检测用列", + "source": "数据平台", + "tableName": "TABLE_L", + "standardColumn": "column_AAA", + "trueColumn": "column_AAA", + "truePk": "否", + "notDetail": "表字段不符合主键标准约束", + "standardPk": "是" + },{ + "caseName": "主键标准检测用列", + "source": "数据平台", + "tableName": "TABLE_P", + "standardColumn": "column_AAA", + "trueColumn": "column_AAA", + "truePk": "是", + "notDetail": "表字段不符合主键标准约束", + "standardPk": "否" + }, + { + "caseName": "主键标准检测用列", + "source": "数据平台", + "tableName": "TABLE_U", + "standardColumn": "column_AAA", + "trueColumn": "column_AAA", + "truePk": "否", + "notDetail": "表字段不符合主键标准约束", + "standardPk": "是" + },{ + "caseName": "主键标准检测用列", + "source": "数据平台", + "tableName": "TABLE_M", + "standardColumn": "column_AAA", + "trueColumn": "column_AAA", + "truePk": "是", + "notDetail": "表字段不符合主键标准约束", + "standardPk": "否" + } + ], + "null_key": [ + { + "ruleName": "空值标准检测分析", + "ruleSourceName": "演示应用", + "ruleTableName": "全表", + "version": "1.0", + "checkTotalCount": "449", + "checkErrorCount": "9" + } + ], + "no_null_key": [ + { + "caseName": "空值标准检测用列", + "source": "演示应用", + "tableName": "TABLE_A", + "standardColumn": "column_AAA", + "trueColumn": "column_AAA", + "trueNull": "是", + "notDetail": "表字段不符合空值校验", + "standardNull": "否" + }, + { + "caseName": "空值标准检测用列", + "source": "演示应用", + "tableName": "TABLE_B", + "standardColumn": "column_BBB", + "trueColumn": "column_BBB", + "trueNull": "否", + "notDetail": "表字段不符合空值校验", + "standardNull": "是" + },{ + "caseName": "空值标准检测用列", + "source": "演示应用", + "tableName": "TABLE_Y", + "standardColumn": "column_AAA", + "trueColumn": "column_AAA", + "trueNull": "是", + "notDetail": "表字段不符合空值校验", + "standardNull": "否" + }, + { + "caseName": "空值标准检测用列", + "source": "演示应用", + "tableName": "TABLE_W", + "standardColumn": "column_BBB", + "trueColumn": "column_BBB", + "trueNull": "否", + "notDetail": "表字段不符合空值校验", + "standardNull": "是" + },{ + "caseName": "空值标准检测用列", + "source": "演示应用", + "tableName": "TABLE_H", + "standardColumn": "column_AAA", + "trueColumn": "column_AAA", + "trueNull": "是", + "notDetail": "表字段不符合空值校验", + "standardNull": "否" + }, + { + "caseName": "空值标准检测用列", + "source": "演示应用", + "tableName": "TABLE_UU", + "standardColumn": "column_BBB", + "trueColumn": "column_BBB", + "trueNull": "否", + "notDetail": "表字段不符合空值校验", + "standardNull": "是" + },{ + "caseName": "空值标准检测用列", + "source": "演示应用", + "tableName": "TABLE_QQ", + "standardColumn": "column_AAA", + "trueColumn": "column_AAA", + "trueNull": "是", + "notDetail": "表字段不符合空值校验", + "standardNull": "否" + }, + { + "caseName": "空值标准检测用列", + "source": "演示应用", + "tableName": "TABLE_PP", + "standardColumn": "column_BBB", + "trueColumn": "column_BBB", + "trueNull": "否", + "notDetail": "表字段不符合空值校验", + "standardNull": "是" + },{ + "caseName": "空值标准检测用列", + "source": "演示应用", + "tableName": "TABLE_K", + "standardColumn": "column_BBB", + "trueColumn": "column_BBB", + "trueNull": "否", + "notDetail": "表字段不符合空值校验", + "standardNull": "是" + } + ], + "fk_key": [ + { + "ruleName": "外键标准检测分析", + "ruleSourceName": "演示应用", + "ruleTableName": "全表", + "version": "1.0", + "checkTotalCount": "449", + "checkErrorCount": "2" + } + ], + "no_fk_key": [ + { + "caseName": "外键标准检测用列", + "source": "演示应用", + "tableName": "TABLE_A", + "standardColumn": "column_AAA", + "trueColumn": "column_AAA", + "trueFk": "是", + "notDetail": "表字段不符合主键标准约束", + "standardFk": "否" + }, + { + "caseName": "外键标准检测用列", + "source": "演示应用", + "tableName": "TABLE_B", + "standardColumn": "column_BBB", + "trueColumn": "column_BBB", + "trueFk": "否", + "notDetail": "表字段不符合外键标准约束", + "standardFk": "是" + } + ], + "integrity": [ + { + "ruleName": "完整性标准检测用列", + "ruleSourceName": "数据平台", + "ruleTableName": "全表", + "version": "1.0", + "checkTotalCount": "500", + "checkErrorCount": "28" + } + ], + "no_integrity":[{ + "caseName": "完整性标准检测用列", + "source": "数据平台", + "tableName": "TABLE_A", + "trueColumn": "column_AAA", + "notDetail": "数据不符合标准表字段非空约束" + }], + "accuracy": [ + { + "ruleName": "准确性标准检测用列", + "ruleSourceName": "数据平台", + "ruleTableName": "全表", + "version": "1.0", + "checkTotalCount": "500", + "checkErrorCount": "28" + } + ], + "no_accuracy": [{ + "caseName": "准确性标准检测用列", + "source": "数据平台", + "tableName": "TABLE_A", + "trueColumn": "column_AAA", + "notDetail": "数据不符合标准表字段长度约束" + }], + "consistent": [ + { + "ruleName": "一致性标准检测用列", + "ruleSourceName": "数据平台", + "ruleTableName": "全表", + "version": "1.0", + "checkTotalCount": "500", + "checkErrorCount": "28" + } + ], + "no_consistent": [{ + "caseName": "一致性标准检测用列", + "source": "数据平台", + "tableName": "TABLE_A", + "trueColumn": "column_AAA", + "notDetail": "数据不符合标准值域范围" + }], + "regular": [ + { + "ruleName": "正则表达式标准检测用列", + "ruleSourceName": "数据平台", + "ruleTableName": "全表", + "version": "1.0", + "checkTotalCount": "500", + "checkErrorCount": "28" + } + ], + "no_regular": [{ + "caseName": "手机号码验证用列", + "source": "数据平台", + "tableName": "TABLE_A", + "trueColumn": "column_AAA", + "dataColumn": "271727122", + "notDetail": "数据不符合标准正则表达式约束" + }] + }, + "dataReport": { + "reportTableData1": [ + { + "ruleSourceId": 1, + "ruleSourceName": "数据平台", + "tableSum": "78", + "tableTime": "3879", + "ruleLevelName": "1.0", + "checkErrorCount": 9 + }, + { + "ruleSourceId": 1, + "ruleSourceName": "演示应用", + "tableSum": "449", + "tableTime": "15264", + "ruleLevelName": "1.0", + "checkErrorCount": 30 + } + ], + "reportTableData2": [ + { + "checkErrorCount": 5, + "ruleTypeId": "1", + "ruleTypeName": "数据平台", + "ruleLevelName": "中", + "ruleName": "表字段标准检测分析" + }, + { + "checkErrorCount": 10, + "ruleTypeId": "1", + "ruleTypeName": "数据平台", + "ruleLevelName": "中", + "ruleName": "长度标准检测用列" + }, + { + "checkErrorCount": 9, + "ruleTypeId": "1", + "ruleTypeName": "数据平台", + "ruleLevelName": "中", + "ruleName": "空值标准检测分析" + }, + { + "checkErrorCount": 13, + "ruleTypeId": "1", + "ruleTypeName": "数据平台", + "ruleLevelName": "中", + "ruleName": "主键标准检测用列" + }, + { + "checkErrorCount": 2, + "ruleTypeId": "1", + "ruleTypeName": "数据平台", + "ruleLevelName": "中", + "ruleName": "外键标准检测分析" + } + ] + }, + "checkTotalCount": "527", + "checkTimeConsuming": "19,143", + "checkErrorCount": "39" } diff --git a/src/views/quality/checkrule/CheckRuleAdd.vue b/src/views/quality/checkrule/CheckRuleAdd.vue index 0fb4ae3..9d7279c 100644 --- a/src/views/quality/checkrule/CheckRuleAdd.vue +++ b/src/views/quality/checkrule/CheckRuleAdd.vue @@ -29,16 +29,16 @@ /> - - - - - + + + + + + + + + + @@ -58,6 +58,7 @@ filterable :titles="['备选', '已选']" :filter-method="filterMethod" + :format="formatTransfer" filter-placeholder="请输入表名" :data="transferData" />--> @@ -163,7 +164,8 @@ export default { }, status: '1', zzStatus: '0', // 状态正则 - transferValue: [] + transferValue: [], + transferValueName: [] }, // 表单校验 rules: { @@ -173,9 +175,6 @@ export default { ruleItemId: [ { required: true, message: '核查类型不能为空', trigger: 'change' } ], - ruleLevelId: [ - { required: true, message: '规则级别不能为空', trigger: 'change' } - ], ruleSourceId: [ { required: true, message: '数据源不能为空', trigger: 'change' } ], @@ -218,20 +217,23 @@ export default { methods: { filterMethod(query, item) { - return item.pinyin.indexOf(query) > -1 + return item.tableNameStr.indexOf(query) > -1 + }, + formatTransfer(item) { + return item.label }, generateData(tableData) { const data = [] - const tableName = tableData - const pinyin = tableData - tableName.forEach((tableData, index) => { + const tableName = tableData // 确保 tableData 是数组,包含有 label 属性的对象 + tableName.forEach((tableItem) => { data.push({ - label: tableData, - key: tableData, - pinyin: pinyin[index] + label: tableItem.label, + key: tableItem.key, + tableNameStr: tableItem.label // 直接使用 tableItem.label }) }) this.transferData = data + console.log('this.transferData==', this.transferData) }, showCard() { this.$emit('showCard', this.showOptions) @@ -293,8 +295,12 @@ export default { const tableNameList = [] for (let i = 0; i < response.data.length; i++) { const tableName = response.data[i].tableName + const tableId = response.data[i].id + const map = {} if (!tableNameOldList.some((str) => str === tableName)) { - tableNameList.push(tableName) + map.key = tableId + map.label = tableName + tableNameList.push(map) } } await this.generateData(tableNameList) @@ -395,6 +401,7 @@ export default { }, /** 提交按钮 */ submitForm: function () { + console.log('transferValue', this.form.transferValue) this.$refs['form'].validate(valid => { if (valid) { this.loadingOptions.loading = true diff --git a/src/views/quality/checkrule/CheckRuleDetail.vue b/src/views/quality/checkrule/CheckRuleDetail.vue index e154aae..deaa10c 100644 --- a/src/views/quality/checkrule/CheckRuleDetail.vue +++ b/src/views/quality/checkrule/CheckRuleDetail.vue @@ -21,16 +21,16 @@ /> - - - - - + + + + + + + + + + - - - - - + + + + + + + + + +