Compare commits
23 Commits
b635578cbe
...
develop-20
| Author | SHA1 | Date | |
|---|---|---|---|
| 0e66e4765b | |||
| 83be612c27 | |||
| 604665cd71 | |||
| 105f15ae3c | |||
| 187c583291 | |||
| c196898fa2 | |||
| 676c93cc6b | |||
| bc2adcd8f2 | |||
|
|
9f9ed2dd73 | ||
|
|
2b10f1d563 | ||
|
|
0c4218ad93 | ||
| d5faa38c7e | |||
|
|
26ee0e00b0 | ||
|
|
64d9d6d1c3 | ||
|
|
f00ead8849 | ||
| 875f6713a7 | |||
| 7c4168a813 | |||
| e0660046c2 | |||
|
|
c3d47f90a1 | ||
|
|
45477138ff | ||
| bb8870d44e | |||
| bc0a854b57 | |||
| c1ea0180dd |
@@ -67,6 +67,13 @@ server {
|
|||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
location /salpa/ {
|
||||||
|
proxy_pass http://192.168.1.217:9080/;
|
||||||
|
proxy_set_header Host $proxy_host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
}
|
||||||
|
|
||||||
#error_page 404 /404.html;
|
#error_page 404 /404.html;
|
||||||
|
|
||||||
# redirect server error pages to the static page /50x.html
|
# redirect server error pages to the static page /50x.html
|
||||||
|
|||||||
BIN
public/static/your-word-document.docx
Normal file
@@ -8,3 +8,11 @@ export function createDataSource(data) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function editDataSource(data) {
|
||||||
|
return request({
|
||||||
|
url: '/salpa/subject/project/updateDataSource',
|
||||||
|
method: 'put',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -113,3 +113,21 @@ export function getMetadatablood(data) {
|
|||||||
data: data
|
data: data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function uploadFile(data, type) {
|
||||||
|
return request({
|
||||||
|
url: '/data/metadata/sources/upload/' + type,
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function pageOfflineData(data) {
|
||||||
|
return request({
|
||||||
|
url: '/data/metadata/offline/page',
|
||||||
|
method: 'get',
|
||||||
|
params: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
39
src/api/monitor/projectApi.js
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
export function pageProjectList(data) {
|
||||||
|
console.log('data==', data)
|
||||||
|
return request({
|
||||||
|
url: '/salpa/subject/project/pageList',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
export function addProject(data) {
|
||||||
|
return request({
|
||||||
|
url: '/salpa/subject/project/addProject',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getProjectById(id) {
|
||||||
|
return request({
|
||||||
|
url: '/salpa/subject/project/getNewProjectById?id=' + id,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function updateProject(data) {
|
||||||
|
return request({
|
||||||
|
url: '/salpa/subject/project/updateNewProject',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function delNewProject(id) {
|
||||||
|
return request({
|
||||||
|
url: '/salpa/subject/project/deleteNewProject?id=' + id,
|
||||||
|
method: 'delete'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 8.1 KiB After Width: | Height: | Size: 8.0 KiB |
5
src/assets/images/j-icon1.svg
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<rect x="1" y="1" width="14" height="14" rx="2" fill="#233A82"/>
|
||||||
|
<path d="M10.6625 3.56079H5.26806C4.32646 3.56079 3.56006 4.32719 3.56006 5.26879V10.7288C3.56006 11.6704 4.32646 12.4368 5.26806 12.4368H10.6625C11.6041 12.4368 12.3705 11.6704 12.3705 10.7288V5.26879C12.3713 4.32719 11.6049 3.56079 10.6625 3.56079ZM6.07926 10.4432C5.42886 10.4432 4.89926 9.91359 4.89926 9.26319C4.89926 8.61279 5.42886 8.08319 6.07926 8.08319C6.72966 8.08319 7.25926 8.61279 7.25926 9.26319C7.25926 9.91439 6.72966 10.4432 6.07926 10.4432ZM7.43286 6.07519L6.25286 7.22159C6.17046 7.30159 6.06086 7.34639 5.94646 7.34639H5.93926C5.88126 7.34555 5.82401 7.33316 5.77085 7.30995C5.7177 7.28673 5.6697 7.25316 5.62966 7.21119L4.94006 6.49359C4.85925 6.4094 4.81513 6.29659 4.81738 6.17991C4.81963 6.06323 4.86806 5.95221 4.95206 5.87119C5.03625 5.79038 5.14906 5.74626 5.26574 5.74851C5.38242 5.75076 5.49344 5.79919 5.57446 5.88319L5.95766 6.28159L6.82006 5.44399C6.86149 5.40367 6.91046 5.37192 6.96417 5.35054C7.01788 5.32916 7.07528 5.31858 7.13308 5.31939C7.19089 5.32021 7.24796 5.33241 7.30105 5.3553C7.35413 5.37819 7.40218 5.41132 7.44246 5.45279C7.52325 5.53684 7.56757 5.6494 7.56577 5.76597C7.56397 5.88253 7.5162 5.99367 7.43286 6.07519ZM10.7977 9.78159H8.25446C7.98966 9.78159 7.77446 9.56639 7.77446 9.30159C7.77446 9.03679 7.98966 8.82159 8.25446 8.82159H10.7977C11.0625 8.82159 11.2777 9.03679 11.2777 9.30159C11.2777 9.56639 11.0625 9.78159 10.7977 9.78159ZM10.7977 6.90559H8.25446C7.98966 6.90559 7.77446 6.69039 7.77446 6.42559C7.77446 6.16079 7.98966 5.94559 8.25446 5.94559H10.7977C11.0625 5.94559 11.2777 6.16079 11.2777 6.42559C11.2777 6.69039 11.0625 6.90559 10.7977 6.90559Z" fill="white"/>
|
||||||
|
<path d="M6.00159 8.87109C5.77919 8.87109 5.59839 9.05189 5.59839 9.27429C5.59839 9.49669 5.77919 9.67749 6.00159 9.67749C6.22399 9.67749 6.40479 9.49669 6.40479 9.27429C6.40479 9.05189 6.22399 8.87109 6.00159 8.87109Z" fill="white"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.0 KiB |
4
src/assets/images/j-icon2.svg
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<rect x="1" y="1" width="14" height="14" rx="2" fill="#3491FA"/>
|
||||||
|
<path d="M7.99326 2.81006C5.13086 2.81006 2.81006 5.13086 2.81006 7.99326C2.81006 10.8557 5.13086 13.1765 7.99326 13.1765C10.8557 13.1765 13.1765 10.8557 13.1765 7.99326C13.1765 5.13086 10.8557 2.81006 7.99326 2.81006ZM10.0005 8.98046H7.54686C7.40873 8.98046 7.27627 8.92559 7.1786 8.82792C7.08093 8.73025 7.02606 8.59778 7.02606 8.45966V5.61166C7.02606 5.47353 7.08093 5.34107 7.1786 5.2434C7.27627 5.14573 7.40873 5.09086 7.54686 5.09086C7.68498 5.09086 7.81745 5.14573 7.91512 5.2434C8.01279 5.34107 8.06766 5.47353 8.06766 5.61166V7.93886H10.0005C10.1386 7.93886 10.2711 7.99373 10.3687 8.0914C10.4664 8.18907 10.5213 8.32153 10.5213 8.45966C10.5213 8.74766 10.2885 8.98046 10.0005 8.98046Z" fill="white"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 879 B |
4
src/assets/images/j-icon3.svg
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<rect x="1" y="1" width="14" height="14" rx="2" fill="#F53F3F"/>
|
||||||
|
<path d="M7.71483 3.27373C6.72523 2.95373 5.76843 3.31693 5.10843 3.70653C4.99243 3.32333 4.63323 3.05453 4.22363 3.10653C3.85483 3.15293 3.55403 3.46813 3.50683 3.85933C3.46603 4.20093 3.61163 4.50973 3.85003 4.68813V12.6521C3.85003 12.9273 4.05003 13.1673 4.31003 13.1761C4.57883 13.1849 4.79883 12.9561 4.79883 12.6737V9.94893C7.47963 8.18173 9.11003 9.41773 10.2492 9.69533C11.1788 9.92173 11.9716 9.55853 12.2732 9.38813C12.354 9.34253 12.4036 9.25293 12.4036 9.15613V4.21773C12.4036 4.02013 12.2076 3.89693 12.0412 3.98413C10.6996 4.69053 9.35963 3.80573 7.71483 3.27373ZM9.92043 6.09693C9.52043 6.00733 8.99403 5.81853 8.35083 5.43693C7.21963 4.76653 6.23403 5.39693 6.19323 5.42413C5.97643 5.56653 5.69003 5.49773 5.55403 5.26813C5.41803 5.03933 5.48123 4.73773 5.69643 4.59213C5.75643 4.55213 7.17803 3.61293 8.80443 4.57773C9.36923 4.91213 9.80763 5.06573 10.114 5.13453C10.3276 5.18253 10.4788 5.38413 10.4788 5.61533C10.478 5.92653 10.2084 6.16093 9.92043 6.09693Z" fill="white"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.1 KiB |
4
src/assets/images/j-icon4.svg
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<rect x="1" y="1" width="14" height="14" rx="2" fill="#F77234"/>
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M13.3488 7.76984L12.036 6.45704C11.9757 6.39681 11.9417 6.31509 11.9416 6.22984V4.37224C11.9416 4.19464 11.7976 4.05144 11.6208 4.05144H9.76399C9.67919 4.05144 9.59679 4.01784 9.53679 3.95704L8.22399 2.64424C8.19417 2.61438 8.15875 2.59069 8.11977 2.57453C8.08078 2.55837 8.03899 2.55005 7.99679 2.55005C7.95459 2.55005 7.9128 2.55837 7.87382 2.57453C7.83483 2.59069 7.79942 2.61438 7.76959 2.64424L6.45599 3.95704C6.39576 4.01737 6.31404 4.05133 6.22879 4.05144H4.37199C4.32986 4.05144 4.28815 4.05973 4.24923 4.07586C4.21031 4.09198 4.17494 4.11561 4.14515 4.1454C4.11536 4.17519 4.09173 4.21055 4.07561 4.24947C4.05949 4.28839 4.05119 4.33011 4.05119 4.37224V6.22904C4.05119 6.31384 4.01759 6.39624 3.95679 6.45624L2.64399 7.76984C2.61413 7.79966 2.59045 7.83508 2.57428 7.87406C2.55812 7.91305 2.5498 7.95483 2.5498 7.99704C2.5498 8.03924 2.55812 8.08103 2.57428 8.12001C2.59045 8.159 2.61413 8.19441 2.64399 8.22424L3.95679 9.53704C4.01713 9.59726 4.05108 9.67898 4.05119 9.76424V11.621C4.05119 11.7986 4.19519 11.9418 4.37199 11.9418H6.22879C6.31359 11.9418 6.39599 11.9754 6.45599 12.0362L7.76879 13.349C7.79862 13.3789 7.83403 13.4026 7.87302 13.4187C7.912 13.4349 7.95379 13.4432 7.99599 13.4432C8.03819 13.4432 8.07998 13.4349 8.11897 13.4187C8.15795 13.4026 8.19337 13.3789 8.22319 13.349L9.53599 12.0362C9.59622 11.9759 9.67794 11.9419 9.76319 11.9418H11.62C11.7976 11.9418 11.9408 11.7978 11.9408 11.621V9.76424C11.9408 9.67944 11.9744 9.59704 12.0352 9.53704L13.348 8.22424C13.378 8.19451 13.4018 8.15915 13.4181 8.12019C13.4344 8.08123 13.4428 8.03943 13.4429 7.9972C13.443 7.95497 13.4347 7.91315 13.4185 7.87413C13.4024 7.83511 13.3787 7.79966 13.3488 7.76984ZM5.44559 6.59864C5.44559 5.83624 5.90959 5.23944 6.50239 5.23944C7.09519 5.23944 7.55919 5.83624 7.55919 6.59864C7.55919 7.36104 7.09519 7.95784 6.50239 7.95784C5.90959 7.95784 5.44559 7.36104 5.44559 6.59864ZM7.29919 10.6354C7.26265 10.7068 7.20706 10.7668 7.13859 10.8086C7.07011 10.8503 6.99141 10.8724 6.91119 10.8722C6.83657 10.8722 6.7632 10.8531 6.69812 10.8165C6.63305 10.78 6.57845 10.7274 6.53958 10.6637C6.5007 10.6 6.47885 10.5274 6.47612 10.4528C6.47339 10.3782 6.48988 10.3042 6.52399 10.2378L8.79679 5.80344C8.8228 5.75245 8.85863 5.7071 8.90221 5.66999C8.9458 5.63288 8.99628 5.60475 9.05077 5.58721C9.10525 5.56966 9.16267 5.56306 9.21972 5.56776C9.27676 5.57247 9.33232 5.5884 9.38319 5.61464C9.43412 5.64072 9.4794 5.67658 9.51645 5.72018C9.55351 5.76377 9.5816 5.81424 9.59914 5.8687C9.61667 5.92316 9.6233 5.98055 9.61864 6.03757C9.61399 6.0946 9.59813 6.15014 9.57199 6.20104L7.29919 10.6354ZM9.88399 10.6098C9.29119 10.6098 8.82719 10.013 8.82719 9.25064C8.82719 8.48824 9.29119 7.89144 9.88399 7.89144C10.4768 7.89144 10.9408 8.48824 10.9408 9.25064C10.9408 10.013 10.476 10.6098 9.88399 10.6098ZM9.83644 8.79917C9.77912 8.86492 9.69824 9.01737 9.69824 9.2507C9.69824 9.5603 9.84064 9.7283 9.88544 9.7387C9.9002 9.73464 9.92826 9.71018 9.95806 9.66594C10.0154 9.60092 10.0972 9.44762 10.0972 9.213C10.0972 8.9034 9.95481 8.7354 9.91001 8.725C9.89509 8.72909 9.86659 8.75404 9.83644 8.79917ZM6.49961 6.1106C6.54441 6.121 6.68681 6.289 6.68681 6.5986C6.68681 6.9082 6.54521 7.0754 6.50361 7.0866C6.45881 7.0762 6.31641 6.9082 6.31641 6.5986C6.31641 6.289 6.45881 6.1218 6.49961 6.1106Z" fill="white"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 3.4 KiB |
@@ -171,13 +171,23 @@ body .hasTagsView .app-main .el-card{
|
|||||||
border: 0;
|
border: 0;
|
||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
}
|
}
|
||||||
|
body .el-card.box-card.is-always-shadow,
|
||||||
body .hasTagsView .app-main .el-card.box-card.is-always-shadow{
|
body .hasTagsView .app-main .el-card.box-card.is-always-shadow{
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
}
|
}
|
||||||
|
body .el-card .el-card__header,
|
||||||
body .hasTagsView .app-main .el-card .el-card__header{
|
body .hasTagsView .app-main .el-card .el-card__header{
|
||||||
border-bottom: 1px solid #E5E6EB;
|
border-bottom: 1px solid #E5E6EB;
|
||||||
padding: 10px 20px;
|
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{
|
body .hasTagsView .app-main .el-card .el-card__header>.clearfix>span{
|
||||||
line-height: 29px;
|
line-height: 29px;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
@@ -403,9 +413,28 @@ body .el-table--medium .el-table__cell {
|
|||||||
body .el-table--border {
|
body .el-table--border {
|
||||||
border: 0;
|
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 {
|
body .el-table--border .el-table__cell {
|
||||||
border-right: 0;
|
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*/
|
/*el-tree*/
|
||||||
body .el-tree {
|
body .el-tree {
|
||||||
@@ -458,7 +487,8 @@ body .el-radio__input.is-checked+.el-radio__label {
|
|||||||
|
|
||||||
/*el-input*/
|
/*el-input*/
|
||||||
body .el-textarea__inner:focus,
|
body .el-textarea__inner:focus,
|
||||||
body .el-input__inner:focus{
|
body .el-input__inner:focus,
|
||||||
|
body .el-select .el-input__inner:focus{
|
||||||
border-color:#233A82
|
border-color:#233A82
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -526,6 +556,17 @@ body .el-form-item .el-form-item__label {
|
|||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*el-progress*/
|
||||||
|
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*/
|
||||||
.modellist{
|
.modellist{
|
||||||
display: flex;
|
display: flex;
|
||||||
@@ -664,3 +705,189 @@ body ,html{
|
|||||||
.login-page .loright .locont .el-button{
|
.login-page .loright .locont .el-button{
|
||||||
border-radius: 2px;
|
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;
|
||||||
|
}
|
||||||
|
|||||||
@@ -92,14 +92,12 @@
|
|||||||
trigger="click"
|
trigger="click"
|
||||||
>
|
>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['market:api:log:detail']"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-view"
|
icon="el-icon-view"
|
||||||
@click="handleDetail(scope.row)"
|
@click="handleDetail(scope.row)"
|
||||||
>详情</el-button>
|
>详情</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['market:api:log:remove']"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-delete"
|
icon="el-icon-delete"
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<div slot="header" class="clearfix">
|
<div slot="header" class="clearfix">
|
||||||
<span>{{ title }}</span>
|
<span>{{ title }}</span>
|
||||||
<el-button-group style="float: right;">
|
<el-button-group style="float: right;">
|
||||||
<el-button v-hasPerm="['market:mask:add']" size="mini" icon="el-icon-plus" round :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
<el-button size="mini" icon="el-icon-plus" round :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
||||||
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
|
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
|
||||||
</el-button-group>
|
</el-button-group>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<div slot="header" class="clearfix">
|
<div slot="header" class="clearfix">
|
||||||
<span>{{ title }}</span>
|
<span>{{ title }}</span>
|
||||||
<el-button-group style="float: right;">
|
<el-button-group style="float: right;">
|
||||||
<el-button v-hasPerm="['market:mask:edit']" size="mini" icon="el-icon-plus" round :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
<el-button size="mini" icon="el-icon-plus" round :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
||||||
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
|
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
|
||||||
</el-button-group>
|
</el-button-group>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -20,7 +20,6 @@
|
|||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-button-group>
|
<el-button-group>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['market:mask:add']"
|
|
||||||
type="primary"
|
type="primary"
|
||||||
icon="el-icon-plus"
|
icon="el-icon-plus"
|
||||||
size="mini"
|
size="mini"
|
||||||
@@ -100,21 +99,18 @@
|
|||||||
trigger="click"
|
trigger="click"
|
||||||
>
|
>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['market:mask:edit']"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-edit-outline"
|
icon="el-icon-edit-outline"
|
||||||
@click="handleEdit(scope.row)"
|
@click="handleEdit(scope.row)"
|
||||||
>修改</el-button>
|
>修改</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['market:mask:detail']"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-view"
|
icon="el-icon-view"
|
||||||
@click="handleDetail(scope.row)"
|
@click="handleDetail(scope.row)"
|
||||||
>详情</el-button>
|
>详情</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['market:mask:remove']"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-delete"
|
icon="el-icon-delete"
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<div slot="header" class="clearfix">
|
<div slot="header" class="clearfix">
|
||||||
<span>{{ title }}</span>
|
<span>{{ title }}</span>
|
||||||
<el-button-group style="float: right;">
|
<el-button-group style="float: right;">
|
||||||
<el-button v-hasPerm="['market:api:add']" size="mini" icon="el-icon-plus" round :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
<el-button size="mini" icon="el-icon-plus" round :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
||||||
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
|
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
|
||||||
</el-button-group>
|
</el-button-group>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -3,8 +3,8 @@
|
|||||||
<div slot="header" class="clearfix">
|
<div slot="header" class="clearfix">
|
||||||
<span>{{ title }}</span>
|
<span>{{ title }}</span>
|
||||||
<el-button-group style="float: right;">
|
<el-button-group style="float: right;">
|
||||||
<el-button v-hasPerm="['market:api:word']" size="mini" icon="el-icon-coin" round @click="handleWord">接口文档</el-button>
|
<el-button size="mini" icon="el-icon-coin" round @click="handleWord">接口文档</el-button>
|
||||||
<el-button v-hasPerm="['market:api:example']" size="mini" icon="el-icon-s-data" round @click="handleExample">接口示例</el-button>
|
<el-button size="mini" icon="el-icon-s-data" round @click="handleExample">接口示例</el-button>
|
||||||
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
|
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
|
||||||
</el-button-group>
|
</el-button-group>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<div slot="header" class="clearfix">
|
<div slot="header" class="clearfix">
|
||||||
<span>{{ title }}</span>
|
<span>{{ title }}</span>
|
||||||
<el-button-group style="float: right;">
|
<el-button-group style="float: right;">
|
||||||
<el-button v-hasPerm="['market:api:edit']" size="mini" icon="el-icon-plus" round :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
<el-button size="mini" icon="el-icon-plus" round :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
||||||
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
|
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
|
||||||
</el-button-group>
|
</el-button-group>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<div slot="header" class="clearfix">
|
<div slot="header" class="clearfix">
|
||||||
<span>{{ title }}</span>
|
<span>{{ title }}</span>
|
||||||
<el-button-group style="float: right;">
|
<el-button-group style="float: right;">
|
||||||
<el-button v-hasPerm="['market:api:example']" size="mini" icon="el-icon-s-data" round @click="handleCall">接口调用</el-button>
|
<el-button size="mini" icon="el-icon-s-data" round @click="handleCall">接口调用</el-button>
|
||||||
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
|
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
|
||||||
</el-button-group>
|
</el-button-group>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -20,7 +20,6 @@
|
|||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-button-group>
|
<el-button-group>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['market:api:add']"
|
|
||||||
type="primary"
|
type="primary"
|
||||||
icon="el-icon-plus"
|
icon="el-icon-plus"
|
||||||
size="mini"
|
size="mini"
|
||||||
@@ -100,28 +99,24 @@
|
|||||||
trigger="click"
|
trigger="click"
|
||||||
>
|
>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['market:api:edit']"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-edit-outline"
|
icon="el-icon-edit-outline"
|
||||||
@click="handleEdit(scope.row)"
|
@click="handleEdit(scope.row)"
|
||||||
>修改</el-button>
|
>修改</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['market:api:detail']"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-view"
|
icon="el-icon-view"
|
||||||
@click="handleDetail(scope.row)"
|
@click="handleDetail(scope.row)"
|
||||||
>详情</el-button>
|
>详情</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['market:api:remove']"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-delete"
|
icon="el-icon-delete"
|
||||||
@click="handleDelete(scope.row)"
|
@click="handleDelete(scope.row)"
|
||||||
>删除</el-button>
|
>删除</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['market:api:copy']"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-copy-document"
|
icon="el-icon-copy-document"
|
||||||
@@ -129,7 +124,6 @@
|
|||||||
>拷贝</el-button>
|
>拷贝</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-if="scope.row.status !== '2'"
|
v-if="scope.row.status !== '2'"
|
||||||
v-hasPerm="['market:api:release']"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-upload2"
|
icon="el-icon-upload2"
|
||||||
@@ -137,7 +131,6 @@
|
|||||||
>发布</el-button>
|
>发布</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-if="scope.row.status === '2'"
|
v-if="scope.row.status === '2'"
|
||||||
v-hasPerm="['market:api:cancel']"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-download"
|
icon="el-icon-download"
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<div slot="header" class="clearfix">
|
<div slot="header" class="clearfix">
|
||||||
<span>{{ title }}</span>
|
<span>{{ title }}</span>
|
||||||
<el-button-group style="float: right;">
|
<el-button-group style="float: right;">
|
||||||
<el-button v-hasPerm="['market:service:add']" size="mini" icon="el-icon-plus" round :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
<el-button size="mini" icon="el-icon-plus" round :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
||||||
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
|
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
|
||||||
</el-button-group>
|
</el-button-group>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<div slot="header" class="clearfix">
|
<div slot="header" class="clearfix">
|
||||||
<span>{{ title }}</span>
|
<span>{{ title }}</span>
|
||||||
<el-button-group style="float: right;">
|
<el-button-group style="float: right;">
|
||||||
<el-button v-hasPerm="['market:service:edit']" size="mini" icon="el-icon-plus" round :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
<el-button size="mini" icon="el-icon-plus" round :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
||||||
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
|
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
|
||||||
</el-button-group>
|
</el-button-group>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -20,7 +20,6 @@
|
|||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-button-group>
|
<el-button-group>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['market:service:add']"
|
|
||||||
type="primary"
|
type="primary"
|
||||||
icon="el-icon-plus"
|
icon="el-icon-plus"
|
||||||
size="mini"
|
size="mini"
|
||||||
@@ -100,21 +99,18 @@
|
|||||||
trigger="click"
|
trigger="click"
|
||||||
>
|
>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['market:service:edit']"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-edit-outline"
|
icon="el-icon-edit-outline"
|
||||||
@click="handleEdit(scope.row)"
|
@click="handleEdit(scope.row)"
|
||||||
>修改</el-button>
|
>修改</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['market:service:detail']"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-view"
|
icon="el-icon-view"
|
||||||
@click="handleDetail(scope.row)"
|
@click="handleDetail(scope.row)"
|
||||||
>详情</el-button>
|
>详情</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['market:service:remove']"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-delete"
|
icon="el-icon-delete"
|
||||||
|
|||||||
@@ -92,14 +92,12 @@
|
|||||||
trigger="click"
|
trigger="click"
|
||||||
>
|
>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['market:service:log:detail']"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-view"
|
icon="el-icon-view"
|
||||||
@click="handleDetail(scope.row)"
|
@click="handleDetail(scope.row)"
|
||||||
>详情</el-button>
|
>详情</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['market:service:log:remove']"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-delete"
|
icon="el-icon-delete"
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<div slot="header" class="clearfix">
|
<div slot="header" class="clearfix">
|
||||||
<span>{{ title }}</span>
|
<span>{{ title }}</span>
|
||||||
<el-button-group style="float: right;">
|
<el-button-group style="float: right;">
|
||||||
<el-button v-hasPerm="['masterdata:data:add']" type="primary" size="mini" icon="el-icon-finished" :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
<el-button type="primary" size="mini" icon="el-icon-finished" :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
||||||
<el-button size="mini" icon="el-icon-back" @click="showCard">返回</el-button>
|
<el-button size="mini" icon="el-icon-back" @click="showCard">返回</el-button>
|
||||||
</el-button-group>
|
</el-button-group>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<div slot="header" class="clearfix">
|
<div slot="header" class="clearfix">
|
||||||
<span>{{ title }}</span>
|
<span>{{ title }}</span>
|
||||||
<el-button-group style="float: right;">
|
<el-button-group style="float: right;">
|
||||||
<el-button v-hasPerm="['masterdata:data:edit']" size="mini" icon="el-icon-plus" round :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
<el-button size="mini" icon="el-icon-plus" round :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
||||||
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
|
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
|
||||||
</el-button-group>
|
</el-button-group>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -208,7 +208,6 @@
|
|||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-button-group>
|
<el-button-group>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['masterdata:data:add']"
|
|
||||||
type="primary"
|
type="primary"
|
||||||
icon="el-icon-plus"
|
icon="el-icon-plus"
|
||||||
size="mini"
|
size="mini"
|
||||||
@@ -248,21 +247,18 @@
|
|||||||
trigger="click"
|
trigger="click"
|
||||||
>
|
>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['masterdata:data:edit']"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-edit-outline"
|
icon="el-icon-edit-outline"
|
||||||
@click="handleEdit(scope.row)"
|
@click="handleEdit(scope.row)"
|
||||||
>修改</el-button>
|
>修改</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['masterdata:data:detail']"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-view"
|
icon="el-icon-view"
|
||||||
@click="handleDetail(scope.row)"
|
@click="handleDetail(scope.row)"
|
||||||
>详情</el-button>
|
>详情</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['masterdata:data:remove']"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-delete"
|
icon="el-icon-delete"
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<div slot="header" class="clearfix">
|
<div slot="header" class="clearfix">
|
||||||
<span>{{ title }}</span>
|
<span>{{ title }}</span>
|
||||||
<el-button-group style="float: right;">
|
<el-button-group style="float: right;">
|
||||||
<el-button v-hasPerm="['masterdata:model:add']" size="mini" icon="el-icon-plus" round :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
<el-button size="mini" icon="el-icon-plus" round :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
||||||
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
|
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
|
||||||
</el-button-group>
|
</el-button-group>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -3,8 +3,8 @@
|
|||||||
<div slot="header" class="clearfix">
|
<div slot="header" class="clearfix">
|
||||||
<span>{{ title }}</span>
|
<span>{{ title }}</span>
|
||||||
<el-button-group style="float: right;">
|
<el-button-group style="float: right;">
|
||||||
<el-button v-if="form.flowStatus === '1' || form.flowStatus === '6'" v-hasPerm="['masterdata:model:submit']" size="mini" icon="el-icon-s-data" round @click="submit">提交</el-button>
|
<el-button v-if="form.flowStatus === '1' || form.flowStatus === '6'" size="mini" icon="el-icon-s-data" round @click="submit">提交</el-button>
|
||||||
<el-button v-if="form.flowStatus === '4'" v-hasPerm="['masterdata:model:create']" :disabled="form.isSync === '1'" size="mini" icon="el-icon-s-data" round @click="createTable">建模</el-button>
|
<el-button v-if="form.flowStatus === '4'" :disabled="form.isSync === '1'" size="mini" icon="el-icon-s-data" round @click="createTable">建模</el-button>
|
||||||
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
|
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
|
||||||
</el-button-group>
|
</el-button-group>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<div slot="header" class="clearfix">
|
<div slot="header" class="clearfix">
|
||||||
<span>{{ title }}</span>
|
<span>{{ title }}</span>
|
||||||
<el-button-group style="float: right;">
|
<el-button-group style="float: right;">
|
||||||
<el-button v-hasPerm="['masterdata:model:edit']" size="mini" icon="el-icon-plus" round :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
<el-button size="mini" icon="el-icon-plus" round :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
||||||
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
|
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
|
||||||
</el-button-group>
|
</el-button-group>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -20,7 +20,6 @@
|
|||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-button-group>
|
<el-button-group>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['masterdata:model:add']"
|
|
||||||
type="primary"
|
type="primary"
|
||||||
icon="el-icon-plus"
|
icon="el-icon-plus"
|
||||||
size="mini"
|
size="mini"
|
||||||
@@ -100,7 +99,6 @@
|
|||||||
trigger="click"
|
trigger="click"
|
||||||
>
|
>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['masterdata:model:edit']"
|
|
||||||
v-flow-edit="scope.row.flowStatus"
|
v-flow-edit="scope.row.flowStatus"
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
@@ -108,14 +106,12 @@
|
|||||||
@click="handleEdit(scope.row)"
|
@click="handleEdit(scope.row)"
|
||||||
>修改</el-button>
|
>修改</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['masterdata:model:detail']"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-view"
|
icon="el-icon-view"
|
||||||
@click="handleDetail(scope.row)"
|
@click="handleDetail(scope.row)"
|
||||||
>详情</el-button>
|
>详情</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['masterdata:model:remove']"
|
|
||||||
v-flow-del="scope.row.flowStatus"
|
v-flow-del="scope.row.flowStatus"
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
|
|||||||
@@ -1,6 +1,15 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="app-container">
|
<div class="app-container">
|
||||||
<iframe src="http://192.168.1.217:8001/model/modelChildren" width="100%" height="850px" frameborder="0" />
|
<el-card class="box-card" shadow="always">
|
||||||
|
<el-form ref="queryForm" :model="queryParams" :inline="true">
|
||||||
|
<el-form-item label="项目" prop="projectId">
|
||||||
|
<el-select v-model="queryParams.projectId" clearable size="small" placeholder="项目" class="filter-item">
|
||||||
|
<el-option v-for="item in projectsOptions" :key="item.id" :label="item.projectName" :value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<iframe src="http://192.168.1.217:8001/model/modelChildren?hideInMenu=true" width="100%" height="850px" frameborder="0" />
|
||||||
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -9,6 +18,16 @@ export default {
|
|||||||
name: 'DataModel',
|
name: 'DataModel',
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
projectsOptions: [
|
||||||
|
{id: '1111', projectName: '演示项目'}
|
||||||
|
],
|
||||||
|
// 查询参数
|
||||||
|
queryParams: {
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 20,
|
||||||
|
projectId: '1111',
|
||||||
|
fileName: ''
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<div slot="header" class="clearfix">
|
<div slot="header" class="clearfix">
|
||||||
<span>{{ title }}</span>
|
<span>{{ title }}</span>
|
||||||
<el-button-group style="float: right;">
|
<el-button-group style="float: right;">
|
||||||
<el-button v-hasPerm="['metadata:changerecord:add']" size="mini" icon="el-icon-plus" round :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
<el-button size="mini" icon="el-icon-plus" round :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
||||||
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
|
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
|
||||||
</el-button-group>
|
</el-button-group>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<div slot="header" class="clearfix">
|
<div slot="header" class="clearfix">
|
||||||
<span>{{ title }}</span>
|
<span>{{ title }}</span>
|
||||||
<el-button-group style="float: right;">
|
<el-button-group style="float: right;">
|
||||||
<el-button v-hasPerm="['metadata:changerecord:edit']" size="mini" icon="el-icon-plus" round :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
<el-button size="mini" icon="el-icon-plus" round :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
||||||
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
|
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
|
||||||
</el-button-group>
|
</el-button-group>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -92,21 +92,18 @@
|
|||||||
trigger="click"
|
trigger="click"
|
||||||
>
|
>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['metadata:changerecord:edit']"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-edit-outline"
|
icon="el-icon-edit-outline"
|
||||||
@click="handleEdit(scope.row)"
|
@click="handleEdit(scope.row)"
|
||||||
>修改</el-button>
|
>修改</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['metadata:changerecord:detail']"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-view"
|
icon="el-icon-view"
|
||||||
@click="handleDetail(scope.row)"
|
@click="handleDetail(scope.row)"
|
||||||
>详情</el-button>
|
>详情</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['metadata:changerecord:remove']"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-delete"
|
icon="el-icon-delete"
|
||||||
|
|||||||
@@ -12,21 +12,21 @@
|
|||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="字段名称" prop="columnName">
|
<el-form-item label="字段名称" prop="columnName">
|
||||||
<el-input v-model="form.columnName" disabled>
|
<el-input v-model="form.columnName" disabled>
|
||||||
<el-button slot="append" v-hasPerm="['metadata:changerecord:add']" icon="el-icon-edit-outline" @click="changeRecord('columnName')" />
|
<el-button slot="append" icon="el-icon-edit-outline" @click="changeRecord('columnName')" />
|
||||||
</el-input>
|
</el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="字段注释" prop="columnComment">
|
<el-form-item label="字段注释" prop="columnComment">
|
||||||
<el-input v-model="form.columnComment" disabled>
|
<el-input v-model="form.columnComment" disabled>
|
||||||
<el-button slot="append" v-hasPerm="['metadata:changerecord:add']" icon="el-icon-edit-outline" @click="changeRecord('columnComment')" />
|
<el-button slot="append" icon="el-icon-edit-outline" @click="changeRecord('columnComment')" />
|
||||||
</el-input>
|
</el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="数据默认值" prop="dataDefault">
|
<el-form-item label="数据默认值" prop="dataDefault">
|
||||||
<el-input v-model="form.dataDefault" disabled>
|
<el-input v-model="form.dataDefault" disabled>
|
||||||
<el-button slot="append" v-hasPerm="['metadata:changerecord:add']" icon="el-icon-edit-outline" @click="changeRecord('dataDefault')" />
|
<el-button slot="append" icon="el-icon-edit-outline" @click="changeRecord('dataDefault')" />
|
||||||
</el-input>
|
</el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|||||||
@@ -118,7 +118,6 @@
|
|||||||
trigger="click"
|
trigger="click"
|
||||||
>
|
>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['metadata:datacolumn:detail']"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-view"
|
icon="el-icon-view"
|
||||||
|
|||||||
@@ -9,14 +9,14 @@
|
|||||||
<el-button size="mini" icon="el-icon-back" @click="showCard">返回</el-button>
|
<el-button size="mini" icon="el-icon-back" @click="showCard">返回</el-button>
|
||||||
</el-button-group>
|
</el-button-group>
|
||||||
</div>
|
</div>
|
||||||
<div class="body-wrapper">
|
<div class="body-wrapper" style="padding-left: 20%">
|
||||||
<el-steps :active="active" finish-status="success" align-center>
|
<el-steps :active="active" finish-status="success" align-center style="width: 900px">
|
||||||
<el-step title="填写数据源信息" />
|
<el-step title="填写数据源信息" />
|
||||||
<el-step title="选择数据库类型" />
|
<el-step title="选择数据库类型" />
|
||||||
<el-step title="填写连接信息" />
|
<el-step title="填写连接信息" />
|
||||||
</el-steps>
|
</el-steps>
|
||||||
<el-form v-if="active == 1" ref="form" :model="form" :rules="rules" label-width="120px">
|
<el-form v-if="active == 1" ref="form" :model="form" :rules="rules" label-width="120px" style="width: 900px">
|
||||||
<div style="padding: 20px 200px">
|
<div style="padding: 20px 0px">
|
||||||
<el-form-item label="数据源名称" prop="sourceName">
|
<el-form-item label="数据源名称" prop="sourceName">
|
||||||
<el-input v-model="form.sourceName" placeholder="请输入数据源名称" />
|
<el-input v-model="form.sourceName" placeholder="请输入数据源名称" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -34,8 +34,8 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</div>
|
</div>
|
||||||
</el-form>
|
</el-form>
|
||||||
<el-form v-if="active == 2" ref="form" :model="form" :rules="rules" label-width="120px">
|
<el-form v-if="active == 2" ref="form" :model="form" :rules="rules" label-width="120px" style="width: 900px">
|
||||||
<div class="modellist" style="padding: 20px 200px">
|
<div class="modellist" style="padding: 20px 0px">
|
||||||
<div :class="[form.dbType =='1' ? 'choosedDbType' : '','list']" @click="chooseDbType('1')">
|
<div :class="[form.dbType =='1' ? 'choosedDbType' : '','list']" @click="chooseDbType('1')">
|
||||||
<div class="limg"><img :src="databaseImg.imgMySQL"></div>
|
<div class="limg"><img :src="databaseImg.imgMySQL"></div>
|
||||||
<div class="ltitle">
|
<div class="ltitle">
|
||||||
@@ -119,8 +119,8 @@
|
|||||||
</div><!--modellist 模型监控列表-->
|
</div><!--modellist 模型监控列表-->
|
||||||
|
|
||||||
</el-form>
|
</el-form>
|
||||||
<el-form v-if="active == 3" ref="form2" :model="form2" :rules="rules2" label-width="80px">
|
<el-form v-if="active == 3" ref="form2" :model="form2" :rules="rules2" label-width="80px" style="width: 900px">
|
||||||
<div style="padding: 20px 200px">
|
<div style="padding: 20px 0px">
|
||||||
<el-form-item label="主机" prop="host">
|
<el-form-item label="主机" prop="host">
|
||||||
<el-input v-model="form2.host" placeholder="请输入主机" />
|
<el-input v-model="form2.host" placeholder="请输入主机" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -140,7 +140,7 @@
|
|||||||
<el-input v-model="form2.password" placeholder="请输入密码" />
|
<el-input v-model="form2.password" placeholder="请输入密码" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button v-hasPerm="['metadata:datasource:connect']" size="mini" type="primary" @click="handleCheckConnection">连通性检测</el-button>
|
<el-button size="mini" type="primary" @click="handleCheckConnection">连通性检测</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</div>
|
</div>
|
||||||
</el-form>
|
</el-form>
|
||||||
@@ -334,11 +334,11 @@ export default {
|
|||||||
saveModelDataSource() {
|
saveModelDataSource() {
|
||||||
const dbType = this.form.dbType
|
const dbType = this.form.dbType
|
||||||
const dataSource = {
|
const dataSource = {
|
||||||
projectId: '11111',
|
projectId: this.form2.dbName,
|
||||||
databaseName: this.form2.dbName,
|
databaseName: this.form2.dbName,
|
||||||
schemaName: this.form2.schema === '' ? this.form2.dbName : this.form2.schema,
|
schemaName: this.form2.schema === '' ? this.form2.dbName : this.form2.schema,
|
||||||
databaseType: dbType,
|
databaseType: dbType,
|
||||||
url: this.form2.host + this.form2.port,
|
url: this.form2.host + ':' + this.form2.port + '/' + this.form2.dbName,
|
||||||
username: this.form2.username,
|
username: this.form2.username,
|
||||||
password: this.form2.password
|
password: this.form2.password
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,74 +4,191 @@
|
|||||||
<span>{{ title }}</span>
|
<span>{{ title }}</span>
|
||||||
<el-button-group style="float: right;">
|
<el-button-group style="float: right;">
|
||||||
<!-- zrx add-->
|
<!-- zrx add-->
|
||||||
<el-button v-if="form.isSync === '0'" v-hasPerm="['metadata:datasource:sync']" size="mini" icon="el-icon-coin" round @click="handleSync">元数据同步</el-button>
|
<el-button v-if="form.isSync === '0'" type="primary" size="mini" icon="el-icon-coin" @click="handleSync">元数据同步</el-button>
|
||||||
<el-button v-if="form.isSync === '2'" v-hasPerm="['metadata:datasource:sync']" size="mini" icon="el-icon-coin" round @click="handleSync">元数据更新</el-button>
|
<el-button v-if="form.isSync === '2'" type="primary" size="mini" icon="el-icon-coin" @click="handleSync">元数据更新</el-button>
|
||||||
<el-button v-if="form.isSync === '2'" v-hasPerm="['metadata:datasource:word']" size="mini" icon="el-icon-coin" round @click="handleWord">数据库文档</el-button>
|
<el-button v-if="form.isSync === '2'" type="primary" size="mini" icon="el-icon-coin" @click="handleWord">数据库文档</el-button>
|
||||||
<el-button v-if="form.isSync === '3'" v-hasPerm="['metadata:datasource:sync']" size="mini" icon="el-icon-coin" round @click="handleSync">元数据再次同步</el-button>
|
<el-button v-if="form.isSync === '3'" type="primary" size="mini" icon="el-icon-coin" @click="handleSync">元数据再次同步</el-button>
|
||||||
<el-button v-hasPerm="['metadata:datasource:connect']" size="mini" icon="el-icon-coin" round @click="handleCheckConnection">连通性检测</el-button>
|
<el-button type="primary" size="mini" icon="el-icon-coin" @click="handleCheckConnection">连通性检测</el-button>
|
||||||
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
|
<el-button size="mini" icon="el-icon-back" @click="showCard">返回</el-button>
|
||||||
</el-button-group>
|
</el-button-group>
|
||||||
</div>
|
</div>
|
||||||
<div class="body-wrapper">
|
<div class="body-wrapper">
|
||||||
<el-steps :active="active" finish-status="success" align-center>
|
<el-descriptions style="margin-top: 20px" title="数据源信息" :column="2" border size="medium" >
|
||||||
<el-step title="数据源信息" />
|
<el-descriptions-item :labelStyle="{width: '200px'}" :contentStyle="{width: '35%'}">
|
||||||
<el-step title="连接信息" />
|
<template slot="label">
|
||||||
</el-steps>
|
<i class="el-icon-tickets"></i>
|
||||||
<el-form v-if="active == 1" ref="form" :model="form" label-width="80px" disabled>
|
数据源名称
|
||||||
<el-form-item label="数据源类型" prop="dbType">
|
</template>
|
||||||
<el-select v-model="form.dbType">
|
{{form.sourceName}}
|
||||||
<el-option
|
</el-descriptions-item>
|
||||||
v-for="item in dbTypeOptions"
|
<el-descriptions-item :labelStyle="{width: '200px'}">
|
||||||
:key="item.id"
|
<template slot="label">
|
||||||
:label="item.itemValue"
|
<i class="el-icon-star-off"></i>
|
||||||
:value="item.itemText"
|
状态
|
||||||
/>
|
</template>
|
||||||
</el-select>
|
<template v-for="dict in statusOptions">
|
||||||
</el-form-item>
|
<el-tag v-if="form.status == dict.itemText && form.status == '1' " size="small" type="success">{{ dict.itemValue }}</el-tag>
|
||||||
<el-form-item label="数据源名称" prop="sourceName">
|
<el-tag v-if="form.status == dict.itemText && form.status != '1' " size="small" type="warning">{{ dict.itemValue }}</el-tag>
|
||||||
<el-input v-model="form.sourceName" placeholder="请输入数据源名称" />
|
</template>
|
||||||
</el-form-item>
|
</el-descriptions-item>
|
||||||
<el-form-item label="状态" prop="status">
|
<el-descriptions-item :labelStyle="{width: '200px'}">
|
||||||
<el-radio-group v-model="form.status">
|
<template slot="label">
|
||||||
<el-radio
|
<i class="el-icon-document"></i>
|
||||||
v-for="dict in statusOptions"
|
备注
|
||||||
:key="dict.id"
|
</template>
|
||||||
:label="dict.itemText"
|
{{form.remark}}
|
||||||
>{{ dict.itemValue }}</el-radio>
|
</el-descriptions-item>
|
||||||
</el-radio-group>
|
</el-descriptions >
|
||||||
</el-form-item>
|
<el-descriptions style="margin-top: 20px" title="数据库类型" :column="1" :colon="false" border size="medium">
|
||||||
<el-form-item label="备注" prop="remark">
|
<el-descriptions-item :labelStyle="{width: '200px'}">
|
||||||
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
|
<template slot="label">
|
||||||
</el-form-item>
|
<i class="el-icon-menu"></i>
|
||||||
</el-form>
|
数据库类型
|
||||||
<el-form v-if="active == 2" ref="form2" :model="form2" label-width="80px" disabled>
|
</template>
|
||||||
<el-form-item label="主机" prop="host">
|
<div class="modellist" style="width:100%">
|
||||||
<el-input v-model="form2.host" placeholder="请输入主机" />
|
<div v-if="form.dbType =='1'" class="list" @click="chooseDbType('1')">
|
||||||
</el-form-item>
|
<div class="limg"><img :src="databaseImg.imgMySQL"></div>
|
||||||
<el-form-item label="端口" prop="port">
|
<div class="ltitle">
|
||||||
<el-input v-model="form2.port" placeholder="请输入端口" />
|
<el-tooltip content="mysql数据库" placement="bottom" effect="light">
|
||||||
</el-form-item>
|
<p class="title">mysql</p>
|
||||||
<el-form-item v-if="form.dbType === '3' || form.dbType === '4'" label="服务名" prop="sid">
|
</el-tooltip>
|
||||||
<el-input v-model="form2.sid" placeholder="请输入服务名" />
|
</div>
|
||||||
</el-form-item>
|
</div>
|
||||||
<el-form-item v-if="form.dbType !== '3' && form.dbType !== '4'" label="数据库" prop="dbName">
|
<div v-if="form.dbType =='2'" class="list" @click="chooseDbType('2')">
|
||||||
<el-input v-model="form2.dbName" placeholder="请输入数据库" />
|
<div class="limg"><img :src="databaseImg.imgMariaDB"></div>
|
||||||
</el-form-item>
|
<div class="ltitle">
|
||||||
<el-form-item label="用户名" prop="username">
|
<el-tooltip content="mariadb-3.0.3数据库" placement="bottom" effect="light">
|
||||||
<el-input v-model="form2.username" placeholder="请输入用户名" />
|
<p class="title">mariadb-3.0.3</p>
|
||||||
</el-form-item>
|
</el-tooltip>
|
||||||
<el-form-item label="密码" prop="password">
|
</div>
|
||||||
<el-input v-model="form2.password" placeholder="请输入密码" />
|
</div>
|
||||||
</el-form-item>
|
<div v-if="form.dbType =='3'" class="list" @click="chooseDbType('3')">
|
||||||
</el-form>
|
<div class="limg"><img :src="databaseImg.imgOracle"></div>
|
||||||
<el-button v-if="active == 1" style="margin-top: 12px;" @click="handleNextStep">下一步</el-button>
|
<div class="ltitle">
|
||||||
<el-button v-if="active == 2" style="margin-top: 12px;" @click="handleLastStep">上一步</el-button>
|
<el-tooltip content="oracle数据库" placement="bottom" effect="light">
|
||||||
|
<p class="title">oracle</p>
|
||||||
|
</el-tooltip>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div v-if="form.dbType =='9'" class="list" @click="chooseDbType('9')">
|
||||||
|
<div class="limg"><img :src="databaseImg.imgdm8"></div>
|
||||||
|
<div class="ltitle">
|
||||||
|
<el-tooltip content="dm数据库" placement="bottom" effect="light">
|
||||||
|
<p class="title">dm</p>
|
||||||
|
</el-tooltip>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div v-if="form.dbType =='8'" class="list" @click="chooseDbType('8')">
|
||||||
|
<div class="limg"><img :src="databaseImg.imgibmdb2"></div>
|
||||||
|
<div class="ltitle">
|
||||||
|
<el-tooltip content="db2数据库" placement="bottom" effect="light">
|
||||||
|
<p class="title">db2</p>
|
||||||
|
</el-tooltip>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div v-if="form.dbType =='5'" class="list" @click="chooseDbType('5')">
|
||||||
|
<div class="limg"><img :src="databaseImg.imgPostgreSQL"></div>
|
||||||
|
<div class="ltitle">
|
||||||
|
<el-tooltip content="PostgreSQ数据库" placement="bottom" effect="light">
|
||||||
|
<p class="title">PostgreSQ</p>
|
||||||
|
</el-tooltip>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div v-if="form.dbType =='6'" class="list" @click="chooseDbType('6')">
|
||||||
|
<div class="limg"><img :src="databaseImg.imgSqlserver"></div>
|
||||||
|
<div class="ltitle">
|
||||||
|
<el-tooltip content="Sqlserver数据库" placement="bottom" effect="light">
|
||||||
|
<p class="title">Sqlserver</p>
|
||||||
|
</el-tooltip>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div v-if="form.dbType =='7'" class="list" @click="chooseDbType('7')">
|
||||||
|
<div class="limg"><img :src="databaseImg.imgkingbase"></div>
|
||||||
|
<div class="ltitle">
|
||||||
|
<el-tooltip content="kingbase数据库" placement="bottom" effect="light">
|
||||||
|
<p class="title">kingbase</p>
|
||||||
|
</el-tooltip>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div v-if="form.dbType =='10'" class="list" @click="chooseDbType('10')">
|
||||||
|
<div class="limg"><img :src="databaseImg.imggaussdb"></div>
|
||||||
|
<div class="ltitle">
|
||||||
|
<el-tooltip content="GaussDB数据库" placement="bottom" effect="light">
|
||||||
|
<p class="title">GaussDB</p>
|
||||||
|
</el-tooltip>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div v-if="form.dbType =='4'" class="list" @click="chooseDbType('4')">
|
||||||
|
<div class="limg"><img :src="databaseImg.imgdefault"></div>
|
||||||
|
<div class="ltitle">
|
||||||
|
<el-tooltip content="MaxCompute数据库" placement="bottom" effect="light">
|
||||||
|
<p class="title">MaxCompute</p>
|
||||||
|
</el-tooltip>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div><!--modellist 模型监控列表-->
|
||||||
|
</el-descriptions-item>
|
||||||
|
</el-descriptions>
|
||||||
|
<el-descriptions style="margin-top: 20px" title="连接信息" :column="2" border size="medium">
|
||||||
|
<el-descriptions-item :labelStyle="{width: '200px'}" :contentStyle="{width: '35%'}">
|
||||||
|
<template slot="label">
|
||||||
|
<i class="el-icon-coin"></i>
|
||||||
|
主机
|
||||||
|
</template>
|
||||||
|
{{form2.host}}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item :labelStyle="{width: '200px'}">
|
||||||
|
<template slot="label">
|
||||||
|
<i class="el-icon-thumb"></i>
|
||||||
|
端口
|
||||||
|
</template>
|
||||||
|
{{form2.port}}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item v-if="form.dbType === '3' || form.dbType === '4'">
|
||||||
|
<template slot="label">
|
||||||
|
<i class="el-icon-user"></i>
|
||||||
|
服务名
|
||||||
|
</template>
|
||||||
|
{{form2.sid}}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item >
|
||||||
|
<template slot="label">
|
||||||
|
<i class="el-icon-coin"></i>
|
||||||
|
数据库
|
||||||
|
</template>
|
||||||
|
{{form2.dbName}}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item>
|
||||||
|
<template slot="label">
|
||||||
|
<i class="el-icon-user"></i>
|
||||||
|
用户名
|
||||||
|
</template>
|
||||||
|
{{form2.username}}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item>
|
||||||
|
<template slot="label">
|
||||||
|
<i class="el-icon-s-check"></i>
|
||||||
|
密码
|
||||||
|
</template>
|
||||||
|
{{form2.password}}
|
||||||
|
</el-descriptions-item>
|
||||||
|
</el-descriptions>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { getDataSource, checkConnection, sync, word } from '@/api/metadata/datasource'
|
import { getDataSource, checkConnection, sync, word } from '@/api/metadata/datasource'
|
||||||
|
import imgMySQL from '@/assets/database/MySQL.svg'
|
||||||
|
import imgMariaDB from '@/assets/database/MariaDB.svg'
|
||||||
|
import imgOracle from '@/assets/database/Oracle.svg'
|
||||||
|
import imgdm8 from '@/assets/database/dm8.png'
|
||||||
|
import imgibmdb2 from '@/assets/database/ibmdb2.png'
|
||||||
|
import imgPostgreSQL from '@/assets/database/PostgreSQL.svg'
|
||||||
|
import imgSqlserver from '@/assets/database/Sqlserver.svg'
|
||||||
|
import imgdefault from '@/assets/database/default.svg'
|
||||||
|
import imgkingbase from '@/assets/database/kingbase.png'
|
||||||
|
import imggaussdb from '@/assets/database/gaussdb.png'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'DataSourceDetail',
|
name: 'DataSourceDetail',
|
||||||
@@ -86,6 +203,18 @@ export default {
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
title: '数据源详情',
|
title: '数据源详情',
|
||||||
|
databaseImg: {
|
||||||
|
imgMySQL: imgMySQL,
|
||||||
|
imgMariaDB: imgMariaDB,
|
||||||
|
imgOracle: imgOracle,
|
||||||
|
imgdm8: imgdm8,
|
||||||
|
imgibmdb2: imgibmdb2,
|
||||||
|
imgPostgreSQL: imgPostgreSQL,
|
||||||
|
imgSqlserver: imgSqlserver,
|
||||||
|
imgdefault: imgdefault,
|
||||||
|
imgkingbase: imgkingbase,
|
||||||
|
imggaussdb: imggaussdb
|
||||||
|
},
|
||||||
// 展示切换
|
// 展示切换
|
||||||
showOptions: {
|
showOptions: {
|
||||||
data: {},
|
data: {},
|
||||||
@@ -129,6 +258,7 @@ export default {
|
|||||||
getDataSource(id).then(response => {
|
getDataSource(id).then(response => {
|
||||||
if (response.success) {
|
if (response.success) {
|
||||||
this.form = response.data
|
this.form = response.data
|
||||||
|
console.log('ddd', this.form)
|
||||||
this.form2 = this.form.dbSchema
|
this.form2 = this.form.dbSchema
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -3,26 +3,20 @@
|
|||||||
<div slot="header" class="clearfix">
|
<div slot="header" class="clearfix">
|
||||||
<span>{{ title }}</span>
|
<span>{{ title }}</span>
|
||||||
<el-button-group style="float: right;">
|
<el-button-group style="float: right;">
|
||||||
<el-button v-if="active == 2" v-hasPerm="['metadata:datasource:edit']" size="mini" icon="el-icon-plus" round :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
<el-button v-if="active == 3" type="primary" size="mini" icon="el-icon-plus" :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
||||||
|
<el-button v-if="active != 3" size="mini" type="primary" @click="handleNextStep">下一步</el-button>
|
||||||
|
<el-button v-if="active != 1" size="mini" type="primary" @click="handleLastStep">上一步</el-button>
|
||||||
<el-button size="mini" icon="el-icon-back" @click="showCard">返回</el-button>
|
<el-button size="mini" icon="el-icon-back" @click="showCard">返回</el-button>
|
||||||
</el-button-group>
|
</el-button-group>
|
||||||
</div>
|
</div>
|
||||||
<div class="body-wrapper">
|
<div class="body-wrapper">
|
||||||
<el-steps :active="active" finish-status="success" align-center>
|
<el-steps :active="active" finish-status="success" align-center>
|
||||||
<el-step title="数据源信息" />
|
<el-step title="填写数据源信息" />
|
||||||
<el-step title="连接信息" />
|
<el-step title="选择数据库类型" />
|
||||||
|
<el-step title="填写连接信息" />
|
||||||
</el-steps>
|
</el-steps>
|
||||||
<el-form v-if="active == 1" ref="form" :model="form" :rules="rules" label-width="120px">
|
<el-form v-if="active == 1" ref="form" :model="form" :rules="rules" label-width="120px">
|
||||||
<el-form-item label="数据源类型" prop="dbType">
|
<div style="padding: 20px 200px">
|
||||||
<el-select v-model="form.dbType">
|
|
||||||
<el-option
|
|
||||||
v-for="item in dbTypeOptions"
|
|
||||||
:key="item.id"
|
|
||||||
:label="item.itemValue"
|
|
||||||
:value="item.itemText"
|
|
||||||
/>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="数据源名称" prop="sourceName">
|
<el-form-item label="数据源名称" prop="sourceName">
|
||||||
<el-input v-model="form.sourceName" placeholder="请输入数据源名称" />
|
<el-input v-model="form.sourceName" placeholder="请输入数据源名称" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -38,8 +32,95 @@
|
|||||||
<el-form-item label="备注" prop="remark">
|
<el-form-item label="备注" prop="remark">
|
||||||
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
|
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
</div>
|
||||||
</el-form>
|
</el-form>
|
||||||
<el-form v-if="active == 2" ref="form2" :model="form2" :rules="rules2" label-width="80px">
|
<el-form v-if="active == 2" ref="form" :model="form" :rules="rules" label-width="120px">
|
||||||
|
<div class="modellist" style="padding: 20px 200px">
|
||||||
|
<div :class="[form.dbType =='1' ? 'choosedDbType' : '','list']" @click="chooseDbType('1')">
|
||||||
|
<div class="limg"><img :src="databaseImg.imgMySQL"></div>
|
||||||
|
<div class="ltitle">
|
||||||
|
<el-tooltip content="mysql数据库" placement="bottom" effect="light">
|
||||||
|
<p class="title">mysql</p>
|
||||||
|
</el-tooltip>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div :class="[form.dbType =='2' ? 'choosedDbType' : '','list']" @click="chooseDbType('2')">
|
||||||
|
<div class="limg"><img :src="databaseImg.imgMariaDB"></div>
|
||||||
|
<div class="ltitle">
|
||||||
|
<el-tooltip content="mariadb-3.0.3数据库" placement="bottom" effect="light">
|
||||||
|
<p class="title">mariadb-3.0.3</p>
|
||||||
|
</el-tooltip>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div :class="[form.dbType =='3' ? 'choosedDbType' : '','list']" @click="chooseDbType('3')">
|
||||||
|
<div class="limg"><img :src="databaseImg.imgOracle"></div>
|
||||||
|
<div class="ltitle">
|
||||||
|
<el-tooltip content="oracle数据库" placement="bottom" effect="light">
|
||||||
|
<p class="title">oracle</p>
|
||||||
|
</el-tooltip>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div :class="[form.dbType =='9' ? 'choosedDbType' : '','list']" @click="chooseDbType('9')">
|
||||||
|
<div class="limg"><img :src="databaseImg.imgdm8"></div>
|
||||||
|
<div class="ltitle">
|
||||||
|
<el-tooltip content="dm数据库" placement="bottom" effect="light">
|
||||||
|
<p class="title">dm</p>
|
||||||
|
</el-tooltip>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div :class="[form.dbType =='8' ? 'choosedDbType' : '','list']" @click="chooseDbType('8')">
|
||||||
|
<div class="limg"><img :src="databaseImg.imgibmdb2"></div>
|
||||||
|
<div class="ltitle">
|
||||||
|
<el-tooltip content="db2数据库" placement="bottom" effect="light">
|
||||||
|
<p class="title">db2</p>
|
||||||
|
</el-tooltip>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div :class="[form.dbType =='5' ? 'choosedDbType' : '','list']" @click="chooseDbType('5')">
|
||||||
|
<div class="limg"><img :src="databaseImg.imgPostgreSQL"></div>
|
||||||
|
<div class="ltitle">
|
||||||
|
<el-tooltip content="PostgreSQ数据库" placement="bottom" effect="light">
|
||||||
|
<p class="title">PostgreSQ</p>
|
||||||
|
</el-tooltip>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div :class="[form.dbType =='6' ? 'choosedDbType' : '','list']" @click="chooseDbType('6')">
|
||||||
|
<div class="limg"><img :src="databaseImg.imgSqlserver"></div>
|
||||||
|
<div class="ltitle">
|
||||||
|
<el-tooltip content="Sqlserver数据库" placement="bottom" effect="light">
|
||||||
|
<p class="title">Sqlserver</p>
|
||||||
|
</el-tooltip>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div :class="[form.dbType =='7' ? 'choosedDbType' : '','list']" @click="chooseDbType('7')">
|
||||||
|
<div class="limg"><img :src="databaseImg.imgkingbase"></div>
|
||||||
|
<div class="ltitle">
|
||||||
|
<el-tooltip content="kingbase数据库" placement="bottom" effect="light">
|
||||||
|
<p class="title">kingbase</p>
|
||||||
|
</el-tooltip>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div :class="[form.dbType =='10' ? 'choosedDbType' : '','list']" @click="chooseDbType('10')">
|
||||||
|
<div class="limg"><img :src="databaseImg.imggaussdb"></div>
|
||||||
|
<div class="ltitle">
|
||||||
|
<el-tooltip content="GaussDB数据库" placement="bottom" effect="light">
|
||||||
|
<p class="title">GaussDB</p>
|
||||||
|
</el-tooltip>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div :class="[form.dbType =='4' ? 'choosedDbType' : '','list']" @click="chooseDbType('4')">
|
||||||
|
<div class="limg"><img :src="databaseImg.imgdefault"></div>
|
||||||
|
<div class="ltitle">
|
||||||
|
<el-tooltip content="MaxCompute数据库" placement="bottom" effect="light">
|
||||||
|
<p class="title">MaxCompute</p>
|
||||||
|
</el-tooltip>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div><!--modellist 模型监控列表-->
|
||||||
|
|
||||||
|
</el-form>
|
||||||
|
<el-form v-if="active == 3" ref="form2" :model="form2" :rules="rules2" label-width="80px">
|
||||||
|
<div style="padding: 20px 200px">
|
||||||
<el-form-item label="主机" prop="host">
|
<el-form-item label="主机" prop="host">
|
||||||
<el-input v-model="form2.host" placeholder="请输入主机" />
|
<el-input v-model="form2.host" placeholder="请输入主机" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -59,17 +140,27 @@
|
|||||||
<el-input v-model="form2.password" placeholder="请输入密码" />
|
<el-input v-model="form2.password" placeholder="请输入密码" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button v-hasPerm="['metadata:datasource:connect']" size="mini" type="primary" @click="handleCheckConnection">连通性检测</el-button>
|
<el-button size="mini" type="primary" @click="handleCheckConnection">连通性检测</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
</div>
|
||||||
</el-form>
|
</el-form>
|
||||||
<el-button v-if="active == 1" style="margin-top: 12px;" @click="handleNextStep">下一步</el-button>
|
|
||||||
<el-button v-if="active == 2" style="margin-top: 12px;" @click="handleLastStep">上一步</el-button>
|
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { getDataSource, updateDataSource, checkConnection } from '@/api/metadata/datasource'
|
import { getDataSource, updateDataSource, checkConnection } from '@/api/metadata/datasource'
|
||||||
|
import { editDataSource } from '@/api/datamodel/model'
|
||||||
|
import imgMySQL from '@/assets/database/MySQL.svg'
|
||||||
|
import imgMariaDB from '@/assets/database/MariaDB.svg'
|
||||||
|
import imgOracle from '@/assets/database/Oracle.svg'
|
||||||
|
import imgdm8 from '@/assets/database/dm8.png'
|
||||||
|
import imgibmdb2 from '@/assets/database/ibmdb2.png'
|
||||||
|
import imgPostgreSQL from '@/assets/database/PostgreSQL.svg'
|
||||||
|
import imgSqlserver from '@/assets/database/Sqlserver.svg'
|
||||||
|
import imgdefault from '@/assets/database/default.svg'
|
||||||
|
import imgkingbase from '@/assets/database/kingbase.png'
|
||||||
|
import imggaussdb from '@/assets/database/gaussdb.png'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'DataSourceEdit',
|
name: 'DataSourceEdit',
|
||||||
@@ -84,6 +175,19 @@ export default {
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
title: '数据源编辑',
|
title: '数据源编辑',
|
||||||
|
databaseImg: {
|
||||||
|
isActive: true,
|
||||||
|
imgMySQL: imgMySQL,
|
||||||
|
imgMariaDB: imgMariaDB,
|
||||||
|
imgOracle: imgOracle,
|
||||||
|
imgdm8: imgdm8,
|
||||||
|
imgibmdb2: imgibmdb2,
|
||||||
|
imgPostgreSQL: imgPostgreSQL,
|
||||||
|
imgSqlserver: imgSqlserver,
|
||||||
|
imgdefault: imgdefault,
|
||||||
|
imgkingbase: imgkingbase,
|
||||||
|
imggaussdb: imggaussdb
|
||||||
|
},
|
||||||
// 展示切换
|
// 展示切换
|
||||||
showOptions: {
|
showOptions: {
|
||||||
data: {},
|
data: {},
|
||||||
@@ -202,6 +306,7 @@ export default {
|
|||||||
updateDataSource(this.form).then(response => {
|
updateDataSource(this.form).then(response => {
|
||||||
if (response.success) {
|
if (response.success) {
|
||||||
this.$message.success('保存成功')
|
this.$message.success('保存成功')
|
||||||
|
this.updateModelDataSource()
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
// 2秒后跳转列表页
|
// 2秒后跳转列表页
|
||||||
this.$emit('showCard', this.showOptions)
|
this.$emit('showCard', this.showOptions)
|
||||||
@@ -219,6 +324,21 @@ export default {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
},
|
||||||
|
updateModelDataSource() {
|
||||||
|
const dbType = this.form.dbType
|
||||||
|
const dataSource = {
|
||||||
|
projectId: this.form2.dbName,
|
||||||
|
databaseName: this.form2.dbName,
|
||||||
|
schemaName: this.form2.schema === '' ? this.form2.dbName : this.form2.schema,
|
||||||
|
databaseType: dbType,
|
||||||
|
url: this.form2.host + ':' + this.form2.port + '/' + this.form2.dbName,
|
||||||
|
username: this.form2.username,
|
||||||
|
password: this.form2.password
|
||||||
|
}
|
||||||
|
editDataSource(dataSource).then(() => {
|
||||||
|
}).catch(() => {
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -229,4 +349,7 @@ export default {
|
|||||||
height: calc(100vh - 230px);
|
height: calc(100vh - 230px);
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
}
|
}
|
||||||
|
.choosedDbType{
|
||||||
|
border: 1px solid #165DFF;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -1,6 +1,11 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-card class="box-card" shadow="always">
|
<el-card class="box-card" shadow="always">
|
||||||
<el-form ref="queryForm" :model="queryParams" :inline="true">
|
<el-form ref="queryForm" :model="queryParams" :inline="true">
|
||||||
|
<el-form-item label="项目" prop="projectId">
|
||||||
|
<el-select v-model="queryParams.projectId" clearable size="small" placeholder="项目" class="filter-item" @change="handleQuery">
|
||||||
|
<el-option v-for="item in projectsOptions" :key="item.id" :label="item.projectName" :value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item label="数据源名称" prop="sourceName">
|
<el-form-item label="数据源名称" prop="sourceName">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="queryParams.sourceName"
|
v-model="queryParams.sourceName"
|
||||||
@@ -20,14 +25,12 @@
|
|||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-button-group>
|
<el-button-group>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['metadata:datasource:add']"
|
|
||||||
type="primary"
|
type="primary"
|
||||||
icon="el-icon-plus"
|
icon="el-icon-plus"
|
||||||
size="mini"
|
size="mini"
|
||||||
@click="handleAdd"
|
@click="handleAdd"
|
||||||
>新增</el-button>
|
>新增</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['metadata:datasource:refresh']"
|
|
||||||
type="warning"
|
type="warning"
|
||||||
icon="el-icon-refresh"
|
icon="el-icon-refresh"
|
||||||
size="mini"
|
size="mini"
|
||||||
@@ -103,21 +106,18 @@
|
|||||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['metadata:datasource:edit']"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-edit-outline"
|
icon="el-icon-edit-outline"
|
||||||
@click="handleEdit(scope.row)"
|
@click="handleEdit(scope.row)"
|
||||||
>修改</el-button>
|
>修改</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['metadata:datasource:detail']"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-view"
|
icon="el-icon-view"
|
||||||
@click="handleDetail(scope.row)"
|
@click="handleDetail(scope.row)"
|
||||||
>详情</el-button>
|
>详情</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['metadata:datasource:remove']"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-delete"
|
icon="el-icon-delete"
|
||||||
@@ -146,7 +146,7 @@ export default {
|
|||||||
name: 'DataSourceList',
|
name: 'DataSourceList',
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
tableHeight: document.body.offsetHeight - 310 + 'px',
|
tableHeight: document.body.offsetHeight - 330 + 'px',
|
||||||
// 展示切换
|
// 展示切换
|
||||||
showOptions: {
|
showOptions: {
|
||||||
data: {},
|
data: {},
|
||||||
@@ -160,6 +160,12 @@ export default {
|
|||||||
// 表格头
|
// 表格头
|
||||||
tableColumns: [
|
tableColumns: [
|
||||||
{ prop: 'sourceName', label: '数据源名称', show: true },
|
{ prop: 'sourceName', label: '数据源名称', show: true },
|
||||||
|
{
|
||||||
|
prop: 'dbType',
|
||||||
|
label: '数据库类型',
|
||||||
|
show: true,
|
||||||
|
formatter: this.dbTypeFormatter
|
||||||
|
},
|
||||||
{
|
{
|
||||||
prop: 'isSync',
|
prop: 'isSync',
|
||||||
label: '同步状态',
|
label: '同步状态',
|
||||||
@@ -174,11 +180,15 @@ export default {
|
|||||||
},
|
},
|
||||||
{ prop: 'createTime', label: '创建时间', show: true }
|
{ prop: 'createTime', label: '创建时间', show: true }
|
||||||
],
|
],
|
||||||
|
projectsOptions: [
|
||||||
|
{ id: '1111', projectName: '演示项目' }
|
||||||
|
],
|
||||||
// 默认选择中表格头
|
// 默认选择中表格头
|
||||||
checkedTableColumns: [],
|
checkedTableColumns: [],
|
||||||
tableSize: 'medium',
|
tableSize: 'medium',
|
||||||
// 状态数据字典
|
// 状态数据字典
|
||||||
statusOptions: [],
|
statusOptions: [],
|
||||||
|
dbTypeOptions: [],
|
||||||
// 数据源表格数据
|
// 数据源表格数据
|
||||||
dataSourceList: [],
|
dataSourceList: [],
|
||||||
// 总数据条数
|
// 总数据条数
|
||||||
@@ -187,6 +197,7 @@ export default {
|
|||||||
queryParams: {
|
queryParams: {
|
||||||
pageNum: 1,
|
pageNum: 1,
|
||||||
pageSize: 20,
|
pageSize: 20,
|
||||||
|
projectId: '1111',
|
||||||
sourceName: ''
|
sourceName: ''
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -197,6 +208,11 @@ export default {
|
|||||||
this.statusOptions = response.data
|
this.statusOptions = response.data
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
this.getDicts('data_db_type').then(response => {
|
||||||
|
if (response.success) {
|
||||||
|
this.dbTypeOptions = response.data
|
||||||
|
}
|
||||||
|
})
|
||||||
this.getList()
|
this.getList()
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
@@ -312,6 +328,10 @@ export default {
|
|||||||
this.queryParams.pageNum = val
|
this.queryParams.pageNum = val
|
||||||
this.getList()
|
this.getList()
|
||||||
},
|
},
|
||||||
|
dbTypeFormatter(row, column, cellValue, index) {
|
||||||
|
const dictLabel = this.selectDictLabel(this.dbTypeOptions, cellValue)
|
||||||
|
return dictLabel
|
||||||
|
},
|
||||||
syncFormatter(row, column, cellValue, index) {
|
syncFormatter(row, column, cellValue, index) {
|
||||||
if (cellValue === '0') {
|
if (cellValue === '0') {
|
||||||
return <el-tag type='warning'>未同步</el-tag>
|
return <el-tag type='warning'>未同步</el-tag>
|
||||||
|
|||||||
40
src/views/metadata/offlinedata/OfflineDataDetail.vue
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
<el-card class="box-card" shadow="always">
|
||||||
|
<el-form ref="queryForm" :model="queryParams" :inline="true">
|
||||||
|
<el-form-item label="项目" prop="projectId">
|
||||||
|
<el-select v-model="queryParams.projectId" clearable size="small" placeholder="项目" class="filter-item">
|
||||||
|
<el-option v-for="item in projectsOptions" :key="item.id" :label="item.projectName" :value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<iframe src="http://192.168.1.217:8001/model/modelChildren?hideInMenu=true&projectId=1" width="100%" height="850px" frameborder="0" />
|
||||||
|
</el-card>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: 'OfflineDataDetail',
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
projectsOptions: [
|
||||||
|
{ id: '1111', projectName: '演示项目' }
|
||||||
|
],
|
||||||
|
// 查询参数
|
||||||
|
queryParams: {
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 20,
|
||||||
|
projectId: '1111',
|
||||||
|
fileName: ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
</style>
|
||||||
355
src/views/metadata/offlinedata/OfflineDataList.vue
Normal file
@@ -0,0 +1,355 @@
|
|||||||
|
<template>
|
||||||
|
<el-card v-loading="boxCardLoading" class="box-card" shadow="always">
|
||||||
|
<el-form ref="queryForm" :model="queryParams" :inline="true">
|
||||||
|
<el-form-item label="项目" prop="projectId">
|
||||||
|
<el-select v-model="queryParams.projectId" clearable size="small" placeholder="项目" class="filter-item" @change="handleQuery">
|
||||||
|
<el-option v-for="item in projectsOptions" :key="item.id" :label="item.projectName" :value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="离线文件名称" prop="sourceName">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.fileName"
|
||||||
|
placeholder="请输入离线文件名称"
|
||||||
|
clearable
|
||||||
|
size="small"
|
||||||
|
@keyup.enter.native="handleQuery"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||||
|
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
|
||||||
|
<el-row type="flex" justify="space-between">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-button-group>
|
||||||
|
<el-upload
|
||||||
|
class="upload-demo"
|
||||||
|
action="#"
|
||||||
|
:show-file-list="false"
|
||||||
|
:http-request="uploadOfflineFile"
|
||||||
|
>
|
||||||
|
<el-button size="mini" type="primary" icon="el-icon-upload2">上传</el-button>
|
||||||
|
</el-upload>
|
||||||
|
</el-button-group>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<div class="right-toolbar">
|
||||||
|
<el-tooltip content="密度" effect="dark" placement="top">
|
||||||
|
<el-dropdown trigger="click" @command="handleCommand">
|
||||||
|
<el-button circle size="mini">
|
||||||
|
<i class="el-icon-s-grid"></i>
|
||||||
|
</el-button>
|
||||||
|
<el-dropdown-menu slot="dropdown">
|
||||||
|
<el-dropdown-item command="medium">正常</el-dropdown-item>
|
||||||
|
<el-dropdown-item command="small">中等</el-dropdown-item>
|
||||||
|
<el-dropdown-item command="mini">紧凑</el-dropdown-item>
|
||||||
|
</el-dropdown-menu>
|
||||||
|
</el-dropdown>
|
||||||
|
</el-tooltip>
|
||||||
|
<el-tooltip content="刷新" effect="dark" placement="top">
|
||||||
|
<el-button circle size="mini" @click="handleRefresh">
|
||||||
|
<i class="el-icon-refresh"></i>
|
||||||
|
</el-button>
|
||||||
|
</el-tooltip>
|
||||||
|
<el-tooltip content="列设置" effect="dark" placement="top">
|
||||||
|
<el-popover placement="bottom" width="100" trigger="click">
|
||||||
|
<el-checkbox-group v-model="checkedTableColumns" @change="handleCheckedColsChange">
|
||||||
|
<el-checkbox
|
||||||
|
v-for="(item, index) in tableColumns"
|
||||||
|
:key="index"
|
||||||
|
:label="item.prop"
|
||||||
|
>{{ item.label }}</el-checkbox>
|
||||||
|
</el-checkbox-group>
|
||||||
|
<span slot="reference">
|
||||||
|
<el-button circle size="mini">
|
||||||
|
<i class="el-icon-setting"></i>
|
||||||
|
</el-button>
|
||||||
|
</span>
|
||||||
|
</el-popover>
|
||||||
|
</el-tooltip>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
|
||||||
|
<el-table
|
||||||
|
v-loading="loading"
|
||||||
|
:data="tableDataList"
|
||||||
|
border
|
||||||
|
tooltip-effect="dark"
|
||||||
|
:size="tableSize"
|
||||||
|
:height="tableHeight"
|
||||||
|
style="width: 100%;margin: 15px 0;"
|
||||||
|
>
|
||||||
|
<el-table-column type="selection" width="55" align="center" />
|
||||||
|
<el-table-column label="序号" width="55" align="center">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span>{{ scope.$index +1 }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<template v-for="(item, index) in tableColumns">
|
||||||
|
<el-table-column
|
||||||
|
v-if="item.show"
|
||||||
|
:key="index"
|
||||||
|
:prop="item.prop"
|
||||||
|
:label="item.label"
|
||||||
|
:formatter="item.formatter"
|
||||||
|
align="center"
|
||||||
|
show-overflow-tooltip
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="300">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-button
|
||||||
|
v-if="scope.row.isSwitch != 'jrcg'"
|
||||||
|
size="mini"
|
||||||
|
type="text"
|
||||||
|
icon="el-icon-sort"
|
||||||
|
@click="handleSwitch(scope.row)"
|
||||||
|
>执行接入</el-button>
|
||||||
|
<el-button
|
||||||
|
v-if="scope.row.isSwitch == 'jrcg'"
|
||||||
|
size="mini"
|
||||||
|
type="text"
|
||||||
|
icon="el-icon-view"
|
||||||
|
@click="handleDetail(scope.row)"
|
||||||
|
>查看接入数据</el-button>
|
||||||
|
<el-button
|
||||||
|
size="mini"
|
||||||
|
type="text"
|
||||||
|
icon="el-icon-download"
|
||||||
|
@click="handleDownload(scope.row)"
|
||||||
|
>下载</el-button>
|
||||||
|
<el-button
|
||||||
|
size="mini"
|
||||||
|
type="text"
|
||||||
|
icon="el-icon-delete"
|
||||||
|
@click="handleDetail(scope.row)"
|
||||||
|
>删除</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
|
||||||
|
<el-pagination
|
||||||
|
:page-sizes="[10, 20, 50, 100]"
|
||||||
|
layout="total, sizes, prev, pager, next, jumper"
|
||||||
|
:current-page.sync="queryParams.pageNum"
|
||||||
|
:page-size.sync="queryParams.pageSize"
|
||||||
|
:total="total"
|
||||||
|
@size-change="handleSizeChange"
|
||||||
|
@current-change="handleCurrentChange"
|
||||||
|
/>
|
||||||
|
</el-card>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { pageOfflineData, delDataSource, uploadFile } from '@/api/metadata/datasource'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'OfflineDataList',
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
tableHeight: document.body.offsetHeight - 330 + 'px',
|
||||||
|
// 展示切换
|
||||||
|
showOptions: {
|
||||||
|
data: {},
|
||||||
|
showList: true,
|
||||||
|
showAdd: false,
|
||||||
|
showEdit: false,
|
||||||
|
showDetail: false
|
||||||
|
},
|
||||||
|
// 遮罩层
|
||||||
|
loading: true,
|
||||||
|
boxCardLoading: false,
|
||||||
|
// 表格头
|
||||||
|
tableColumns: [
|
||||||
|
{ prop: 'fileName', label: '离线文件名称', show: true },
|
||||||
|
{
|
||||||
|
prop: 'offlineType',
|
||||||
|
label: '离线文件类型',
|
||||||
|
show: true,
|
||||||
|
formatter: this.offlineTypeeFormatter
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'isSwitch',
|
||||||
|
label: '接入状态',
|
||||||
|
show: true,
|
||||||
|
formatter: this.isSwitchFormatter
|
||||||
|
},
|
||||||
|
{ prop: 'createTime', label: '上传时间', show: true },
|
||||||
|
{ prop: 'switchTime', label: '接入时间', show: true }
|
||||||
|
],
|
||||||
|
projectsOptions: [
|
||||||
|
{ id: '1111', projectName: '演示项目' }
|
||||||
|
],
|
||||||
|
// 默认选择中表格头
|
||||||
|
checkedTableColumns: [],
|
||||||
|
tableSize: 'medium',
|
||||||
|
// 状态数据字典
|
||||||
|
statusOptions: [],
|
||||||
|
dbTypeOptions: [],
|
||||||
|
// 数据源表格数据
|
||||||
|
tableDataList: [],
|
||||||
|
// 总数据条数
|
||||||
|
total: 0,
|
||||||
|
// 查询参数
|
||||||
|
queryParams: {
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 20,
|
||||||
|
projectId: '1111',
|
||||||
|
fileName: ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.getDicts('sys_common_status').then(response => {
|
||||||
|
if (response.success) {
|
||||||
|
this.statusOptions = response.data
|
||||||
|
}
|
||||||
|
})
|
||||||
|
this.getDicts('data_db_type').then(response => {
|
||||||
|
if (response.success) {
|
||||||
|
this.dbTypeOptions = response.data
|
||||||
|
}
|
||||||
|
})
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.initCols()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
/** 查询数据源列表 */
|
||||||
|
getList() {
|
||||||
|
this.loading = true
|
||||||
|
pageOfflineData(this.queryParams).then(response => {
|
||||||
|
this.loading = false
|
||||||
|
if (response.success) {
|
||||||
|
const { data } = response
|
||||||
|
this.tableDataList = data.data
|
||||||
|
this.total = data.total
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
initCols() {
|
||||||
|
this.checkedTableColumns = this.tableColumns.map(col => col.prop)
|
||||||
|
},
|
||||||
|
handleSwitch(row) {
|
||||||
|
this.boxCardLoading = true
|
||||||
|
setTimeout(() => {
|
||||||
|
row.isSwitch = 'jrcg'
|
||||||
|
this.boxCardLoading = false
|
||||||
|
this.$message.success('接入成功')
|
||||||
|
}, 2000)
|
||||||
|
},
|
||||||
|
/** 详情按钮操作 */
|
||||||
|
handleDetail(row) {
|
||||||
|
this.showOptions.data.id = row.id
|
||||||
|
this.showOptions.showList = false
|
||||||
|
this.showOptions.showDetail = true
|
||||||
|
this.$emit('showCard', this.showOptions)
|
||||||
|
},
|
||||||
|
handleCheckedColsChange(val) {
|
||||||
|
this.tableColumns.forEach(col => {
|
||||||
|
if (!this.checkedTableColumns.includes(col.prop)) {
|
||||||
|
col.show = false
|
||||||
|
} else {
|
||||||
|
col.show = true
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleCommand(command) {
|
||||||
|
this.tableSize = command
|
||||||
|
},
|
||||||
|
/** 搜索按钮操作 */
|
||||||
|
handleQuery() {
|
||||||
|
this.queryParams.pageNum = 1
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
/** 重置按钮操作 */
|
||||||
|
resetQuery() {
|
||||||
|
this.queryParams = {
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 20,
|
||||||
|
fileName: ''
|
||||||
|
}
|
||||||
|
this.handleQuery()
|
||||||
|
},
|
||||||
|
/** 刷新列表 */
|
||||||
|
handleRefresh() {
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
handleUpload() {
|
||||||
|
|
||||||
|
},
|
||||||
|
handleDownload(row) {
|
||||||
|
|
||||||
|
},
|
||||||
|
/** 删除按钮操作 */
|
||||||
|
handleDelete(row) {
|
||||||
|
this.$confirm('选中数据将被永久删除, 是否继续?', '提示', {
|
||||||
|
confirmButtonText: '确定',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
type: 'warning'
|
||||||
|
}).then(() => {
|
||||||
|
delDataSource(row.id).then(response => {
|
||||||
|
if (response.success) {
|
||||||
|
this.$message.success('删除成功')
|
||||||
|
this.getList()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}).catch(() => {
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleSizeChange(val) {
|
||||||
|
console.log(`每页 ${val} 条`)
|
||||||
|
this.queryParams.pageNum = 1
|
||||||
|
this.queryParams.pageSize = val
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
handleCurrentChange(val) {
|
||||||
|
console.log(`当前页: ${val}`)
|
||||||
|
this.queryParams.pageNum = val
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
offlineTypeeFormatter(row, column, cellValue, index) {
|
||||||
|
if (cellValue === 'sjy') {
|
||||||
|
return '数据源文件'
|
||||||
|
} else if (cellValue === 'sj') {
|
||||||
|
return '数据文件'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
isSwitchFormatter(row, column, cellValue, index) {
|
||||||
|
if (cellValue === 'djr') {
|
||||||
|
return <el-tag type='info'>待接入</el-tag>
|
||||||
|
} else if (cellValue === 'jrcg') {
|
||||||
|
return <el-tag type='success'>接入成功</el-tag>
|
||||||
|
} else if (cellValue === 'jrsb') {
|
||||||
|
return <el-tag type='error'>接入失败</el-tag>
|
||||||
|
}
|
||||||
|
},
|
||||||
|
uploadOfflineFile(file) {
|
||||||
|
this.formData = new FormData()
|
||||||
|
this.formData.append('file', file.file)
|
||||||
|
// 请求接口
|
||||||
|
uploadFile(this.formData, 'sjy').then((response) => {
|
||||||
|
if (response.success) {
|
||||||
|
this.$message.success('上传成功')
|
||||||
|
} else {
|
||||||
|
this.$message.error('上传失败')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.right-toolbar {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
.el-card ::v-deep .el-card__body {
|
||||||
|
height: calc(100vh - 170px);
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
36
src/views/metadata/offlinedata/index.vue
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
<transition name="el-zoom-in-center">
|
||||||
|
<offline-data-list v-if="options.showList" @showCard="showCard" />
|
||||||
|
<offline-data-detail v-if="options.showDetail" @showCard="showCard" />
|
||||||
|
</transition>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import OfflineDataList from './OfflineDataList'
|
||||||
|
import OfflineDataDetail from './OfflineDataDetail'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'OfflineData',
|
||||||
|
components: { OfflineDataList, OfflineDataDetail },
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
options: {
|
||||||
|
data: {},
|
||||||
|
showList: true,
|
||||||
|
showDetail: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
showCard(data) {
|
||||||
|
Object.assign(this.options, data)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
|
||||||
|
</style>
|
||||||
48
src/views/monitor/project/index.vue
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
<transition name="el-zoom-in-center">
|
||||||
|
<data-source-list v-if="options.showList" @showCard="showCard" />
|
||||||
|
</transition>
|
||||||
|
<transition name="el-zoom-in-top">
|
||||||
|
<data-source-add v-if="options.showAdd" :data="options.data" @showCard="showCard" />
|
||||||
|
</transition>
|
||||||
|
<transition name="el-zoom-in-top">
|
||||||
|
<data-source-edit v-if="options.showEdit" :data="options.data" @showCard="showCard" />
|
||||||
|
</transition>
|
||||||
|
<transition name="el-zoom-in-bottom">
|
||||||
|
<data-source-detail v-if="options.showDetail" :data="options.data" @showCard="showCard" />
|
||||||
|
</transition>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import DataSourceList from './projectList'
|
||||||
|
import DataSourceAdd from './projectAdd'
|
||||||
|
import DataSourceEdit from './projectEdit'
|
||||||
|
import DataSourceDetail from './projectDetail'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'Project',
|
||||||
|
components: { DataSourceList, DataSourceAdd, DataSourceEdit, DataSourceDetail },
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
options: {
|
||||||
|
data: {},
|
||||||
|
showList: true,
|
||||||
|
showAdd: false,
|
||||||
|
showEdit: false,
|
||||||
|
showDetail: false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
showCard(data) {
|
||||||
|
Object.assign(this.options, data)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
|
||||||
|
</style>
|
||||||
119
src/views/monitor/project/projectAdd.vue
Normal file
@@ -0,0 +1,119 @@
|
|||||||
|
<template>
|
||||||
|
<el-card class="box-card" shadow="always">
|
||||||
|
<div slot="header" class="clearfix">
|
||||||
|
<span>{{ title }}</span>
|
||||||
|
<el-button-group style="float: right;">
|
||||||
|
<el-button type="primary" size="mini" icon="el-icon-finished" :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
||||||
|
<el-button size="mini" icon="el-icon-back" @click="showCard">返回</el-button>
|
||||||
|
</el-button-group>
|
||||||
|
</div>
|
||||||
|
<div class="body-wrapper">
|
||||||
|
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
|
||||||
|
<div style="padding: 20px 200px">
|
||||||
|
<el-form-item label="项目名称" prop="projectName">
|
||||||
|
<el-input v-model="form.projectName" placeholder="请输入项目名称" />
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="项目描述" prop="projectDescription">
|
||||||
|
<el-input v-model="form.projectDescription" type="textarea" placeholder="请输入项目描述" />
|
||||||
|
</el-form-item>
|
||||||
|
</div>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { addProject } from '@/api/monitor/projectApi'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'ProjectAdd',
|
||||||
|
props: {
|
||||||
|
data: {
|
||||||
|
type: Object,
|
||||||
|
default: function() {
|
||||||
|
return {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
title: '项目新增',
|
||||||
|
// 展示切换
|
||||||
|
showOptions: {
|
||||||
|
data: {},
|
||||||
|
showList: true,
|
||||||
|
showAdd: false,
|
||||||
|
showEdit: false,
|
||||||
|
showDetail: false
|
||||||
|
},
|
||||||
|
// 保存按钮
|
||||||
|
loadingOptions: {
|
||||||
|
loading: false,
|
||||||
|
loadingText: '保存',
|
||||||
|
isDisabled: false
|
||||||
|
},
|
||||||
|
// 表单参数
|
||||||
|
form: {
|
||||||
|
id: undefined,
|
||||||
|
projectName: undefined,
|
||||||
|
projectDescription: undefined,
|
||||||
|
subjectId: undefined,
|
||||||
|
deleted: undefined
|
||||||
|
},
|
||||||
|
// 表单校验
|
||||||
|
rules: {
|
||||||
|
projectName: [
|
||||||
|
{ required: true, message: '项目名称不能为空', trigger: 'change' }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
showCard() {
|
||||||
|
this.$emit('showCard', this.showOptions)
|
||||||
|
},
|
||||||
|
/** 提交按钮 */
|
||||||
|
submitForm: function() {
|
||||||
|
this.$refs['form'].validate(valid => {
|
||||||
|
if (valid) {
|
||||||
|
this.form.dbSchema = this.form2
|
||||||
|
this.loadingOptions.loading = true
|
||||||
|
this.loadingOptions.loadingText = '保存中...'
|
||||||
|
this.loadingOptions.isDisabled = true
|
||||||
|
addProject(this.form).then(response => {
|
||||||
|
if (response.code === 200) {
|
||||||
|
this.$message.success('保存成功')
|
||||||
|
setTimeout(() => {
|
||||||
|
// 2秒后跳转列表页
|
||||||
|
this.$emit('showCard', this.showOptions)
|
||||||
|
}, 2000)
|
||||||
|
} else {
|
||||||
|
this.$message.error('保存失败')
|
||||||
|
this.loadingOptions.loading = false
|
||||||
|
this.loadingOptions.loadingText = '保存'
|
||||||
|
this.loadingOptions.isDisabled = false
|
||||||
|
}
|
||||||
|
}).catch(() => {
|
||||||
|
this.loadingOptions.loading = false
|
||||||
|
this.loadingOptions.loadingText = '保存'
|
||||||
|
this.loadingOptions.isDisabled = false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.el-card ::v-deep .el-card__body {
|
||||||
|
height: calc(100vh - 230px);
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
.choosedDbType{
|
||||||
|
border: 1px solid #165DFF;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
100
src/views/monitor/project/projectDetail.vue
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
<template>
|
||||||
|
<el-card class="box-card" shadow="always">
|
||||||
|
<div slot="header" class="clearfix">
|
||||||
|
<span>{{ title }}</span>
|
||||||
|
<el-button-group style="float: right;">
|
||||||
|
<el-button size="mini" icon="el-icon-back" @click="showCard">返回</el-button>
|
||||||
|
</el-button-group>
|
||||||
|
</div>
|
||||||
|
<div class="body-wrapper">
|
||||||
|
<el-form ref="form" :model="form" :rules="rules" label-width="120px" disabled>
|
||||||
|
<div style="padding: 20px 200px">
|
||||||
|
<el-form-item label="项目名称" prop="projectName">
|
||||||
|
<el-input v-model="form.projectName" placeholder="请输入项目名称" />
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="项目描述" prop="projectDescription">
|
||||||
|
<el-input v-model="form.projectDescription" type="textarea" placeholder="请输入项目描述" />
|
||||||
|
</el-form-item>
|
||||||
|
</div>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { getProjectById } from '@/api/monitor/projectApi'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'ProjectDetail',
|
||||||
|
props: {
|
||||||
|
data: {
|
||||||
|
type: Object,
|
||||||
|
default: function() {
|
||||||
|
return {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
title: '项目新增',
|
||||||
|
// 展示切换
|
||||||
|
showOptions: {
|
||||||
|
data: {},
|
||||||
|
showList: true,
|
||||||
|
showAdd: false,
|
||||||
|
showEdit: false,
|
||||||
|
showDetail: false
|
||||||
|
},
|
||||||
|
// 保存按钮
|
||||||
|
loadingOptions: {
|
||||||
|
loading: false,
|
||||||
|
loadingText: '保存',
|
||||||
|
isDisabled: false
|
||||||
|
},
|
||||||
|
// 表单参数
|
||||||
|
form: {
|
||||||
|
id: undefined,
|
||||||
|
projectName: undefined,
|
||||||
|
projectDescription: undefined,
|
||||||
|
subjectId: undefined,
|
||||||
|
deleted: undefined
|
||||||
|
},
|
||||||
|
// 表单校验
|
||||||
|
rules: {
|
||||||
|
projectName: [
|
||||||
|
{ required: true, message: '项目名称不能为空', trigger: 'change' }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getProjectById(this.data.id)
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
showCard() {
|
||||||
|
this.$emit('showCard', this.showOptions)
|
||||||
|
},
|
||||||
|
/** 获取详情 */
|
||||||
|
async getProjectById(id) {
|
||||||
|
this.form = await getProjectById(id).then(response => {
|
||||||
|
if (response.code === 200) {
|
||||||
|
return response.data
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.el-card ::v-deep .el-card__body {
|
||||||
|
height: calc(100vh - 230px);
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
.choosedDbType{
|
||||||
|
border: 1px solid #165DFF;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
129
src/views/monitor/project/projectEdit.vue
Normal file
@@ -0,0 +1,129 @@
|
|||||||
|
<template>
|
||||||
|
<el-card class="box-card" shadow="always">
|
||||||
|
<div slot="header" class="clearfix">
|
||||||
|
<span>{{ title }}</span>
|
||||||
|
<el-button-group style="float: right;">
|
||||||
|
<el-button type="primary" size="mini" icon="el-icon-finished" :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
||||||
|
<el-button size="mini" icon="el-icon-back" @click="showCard">返回</el-button>
|
||||||
|
</el-button-group>
|
||||||
|
</div>
|
||||||
|
<div class="body-wrapper">
|
||||||
|
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
|
||||||
|
<div style="padding: 20px 200px">
|
||||||
|
<el-form-item label="项目名称" prop="projectName">
|
||||||
|
<el-input v-model="form.projectName" placeholder="请输入项目名称" />
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="项目描述" prop="projectDescription">
|
||||||
|
<el-input v-model="form.projectDescription" type="textarea" placeholder="请输入项目描述" />
|
||||||
|
</el-form-item>
|
||||||
|
</div>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { getProjectById, updateProject } from '@/api/monitor/projectApi'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'ProjectEdit',
|
||||||
|
props: {
|
||||||
|
data: {
|
||||||
|
type: Object,
|
||||||
|
default: function() {
|
||||||
|
return {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
title: '项目修改',
|
||||||
|
// 展示切换
|
||||||
|
showOptions: {
|
||||||
|
data: {},
|
||||||
|
showList: true,
|
||||||
|
showAdd: false,
|
||||||
|
showEdit: false,
|
||||||
|
showDetail: false
|
||||||
|
},
|
||||||
|
// 保存按钮
|
||||||
|
loadingOptions: {
|
||||||
|
loading: false,
|
||||||
|
loadingText: '保存',
|
||||||
|
isDisabled: false
|
||||||
|
},
|
||||||
|
// 表单参数
|
||||||
|
form: {
|
||||||
|
id: undefined,
|
||||||
|
projectName: undefined,
|
||||||
|
projectDescription: undefined,
|
||||||
|
subjectId: undefined,
|
||||||
|
deleted: undefined
|
||||||
|
},
|
||||||
|
// 表单校验
|
||||||
|
rules: {
|
||||||
|
projectName: [
|
||||||
|
{ required: true, message: '项目名称不能为空', trigger: 'change' }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getProjectById(this.data.id)
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
showCard() {
|
||||||
|
this.$emit('showCard', this.showOptions)
|
||||||
|
},
|
||||||
|
/** 获取详情 */
|
||||||
|
async getProjectById(id) {
|
||||||
|
this.form = await getProjectById(id).then(response => {
|
||||||
|
if (response.code === 200) {
|
||||||
|
return response.data
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/** 提交按钮 */
|
||||||
|
submitForm: function() {
|
||||||
|
this.$refs['form'].validate(valid => {
|
||||||
|
if (valid) {
|
||||||
|
this.loadingOptions.loading = true
|
||||||
|
this.loadingOptions.loadingText = '保存中...'
|
||||||
|
this.loadingOptions.isDisabled = true
|
||||||
|
updateProject(this.form).then(response => {
|
||||||
|
if (response.code === 200) {
|
||||||
|
this.$message.success('保存成功')
|
||||||
|
setTimeout(() => {
|
||||||
|
// 2秒后跳转列表页
|
||||||
|
this.$emit('showCard', this.showOptions)
|
||||||
|
}, 2000)
|
||||||
|
} else {
|
||||||
|
this.$message.error('保存失败')
|
||||||
|
this.loadingOptions.loading = false
|
||||||
|
this.loadingOptions.loadingText = '保存'
|
||||||
|
this.loadingOptions.isDisabled = false
|
||||||
|
}
|
||||||
|
}).catch(() => {
|
||||||
|
this.loadingOptions.loading = false
|
||||||
|
this.loadingOptions.loadingText = '保存'
|
||||||
|
this.loadingOptions.isDisabled = false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.el-card ::v-deep .el-card__body {
|
||||||
|
height: calc(100vh - 230px);
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
.choosedDbType{
|
||||||
|
border: 1px solid #165DFF;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
300
src/views/monitor/project/projectList.vue
Normal file
@@ -0,0 +1,300 @@
|
|||||||
|
<template>
|
||||||
|
<el-card class="box-card" shadow="always">
|
||||||
|
<el-form ref="queryForm" :model="queryParams" :inline="true">
|
||||||
|
<el-form-item label="项目名称" prop="sourceName">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.projectName"
|
||||||
|
placeholder="请输入项目名称"
|
||||||
|
clearable
|
||||||
|
size="small"
|
||||||
|
@keyup.enter.native="handleQuery"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||||
|
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
|
||||||
|
<el-row type="flex" justify="space-between">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-button-group>
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
icon="el-icon-plus"
|
||||||
|
size="mini"
|
||||||
|
@click="handleAdd"
|
||||||
|
>新增</el-button>
|
||||||
|
</el-button-group>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<div class="right-toolbar">
|
||||||
|
<el-tooltip content="密度" effect="dark" placement="top">
|
||||||
|
<el-dropdown trigger="click" @command="handleCommand">
|
||||||
|
<el-button circle size="mini">
|
||||||
|
<i class="el-icon-s-grid"></i>
|
||||||
|
</el-button>
|
||||||
|
<el-dropdown-menu slot="dropdown">
|
||||||
|
<el-dropdown-item command="medium">正常</el-dropdown-item>
|
||||||
|
<el-dropdown-item command="small">中等</el-dropdown-item>
|
||||||
|
<el-dropdown-item command="mini">紧凑</el-dropdown-item>
|
||||||
|
</el-dropdown-menu>
|
||||||
|
</el-dropdown>
|
||||||
|
</el-tooltip>
|
||||||
|
<el-tooltip content="刷新" effect="dark" placement="top">
|
||||||
|
<el-button circle size="mini" @click="handleRefresh">
|
||||||
|
<i class="el-icon-refresh"></i>
|
||||||
|
</el-button>
|
||||||
|
</el-tooltip>
|
||||||
|
<el-tooltip content="列设置" effect="dark" placement="top">
|
||||||
|
<el-popover placement="bottom" width="100" trigger="click">
|
||||||
|
<el-checkbox-group v-model="checkedTableColumns" @change="handleCheckedColsChange">
|
||||||
|
<el-checkbox
|
||||||
|
v-for="(item, index) in tableColumns"
|
||||||
|
:key="index"
|
||||||
|
:label="item.prop"
|
||||||
|
>{{ item.label }}</el-checkbox>
|
||||||
|
</el-checkbox-group>
|
||||||
|
<span slot="reference">
|
||||||
|
<el-button circle size="mini">
|
||||||
|
<i class="el-icon-setting"></i>
|
||||||
|
</el-button>
|
||||||
|
</span>
|
||||||
|
</el-popover>
|
||||||
|
</el-tooltip>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
|
||||||
|
<el-table
|
||||||
|
v-loading="loading"
|
||||||
|
:data="dataSourceList"
|
||||||
|
border
|
||||||
|
tooltip-effect="dark"
|
||||||
|
:size="tableSize"
|
||||||
|
:height="tableHeight"
|
||||||
|
style="width: 100%;margin: 15px 0;"
|
||||||
|
>
|
||||||
|
<el-table-column type="selection" width="55" align="center" />
|
||||||
|
<el-table-column label="序号" width="55" align="center">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span>{{ scope.$index +1 }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<template v-for="(item, index) in tableColumns">
|
||||||
|
<el-table-column
|
||||||
|
v-if="item.show"
|
||||||
|
:key="index"
|
||||||
|
:prop="item.prop"
|
||||||
|
:label="item.label"
|
||||||
|
:formatter="item.formatter"
|
||||||
|
align="center"
|
||||||
|
show-overflow-tooltip
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-button
|
||||||
|
size="mini"
|
||||||
|
type="text"
|
||||||
|
icon="el-icon-edit-outline"
|
||||||
|
@click="handleEdit(scope.row)"
|
||||||
|
>修改</el-button>
|
||||||
|
<el-button
|
||||||
|
size="mini"
|
||||||
|
type="text"
|
||||||
|
icon="el-icon-view"
|
||||||
|
@click="handleDetail(scope.row)"
|
||||||
|
>详情</el-button>
|
||||||
|
<el-button
|
||||||
|
size="mini"
|
||||||
|
type="text"
|
||||||
|
icon="el-icon-delete"
|
||||||
|
@click="handleDelete(scope.row)"
|
||||||
|
>删除</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
|
||||||
|
<el-pagination
|
||||||
|
:page-sizes="[10, 20, 50, 100]"
|
||||||
|
layout="total, sizes, prev, pager, next, jumper"
|
||||||
|
:current-page.sync="queryParams.pageNum"
|
||||||
|
:page-size.sync="queryParams.pageSize"
|
||||||
|
:total="total"
|
||||||
|
@size-change="handleSizeChange"
|
||||||
|
@current-change="handleCurrentChange"
|
||||||
|
/>
|
||||||
|
</el-card>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { pageProjectList, delNewProject } from '@/api/monitor/projectApi'
|
||||||
|
export default {
|
||||||
|
name: 'ProjectList',
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
tableHeight: document.body.offsetHeight - 330 + 'px',
|
||||||
|
// 展示切换
|
||||||
|
showOptions: {
|
||||||
|
data: {},
|
||||||
|
showList: true,
|
||||||
|
showAdd: false,
|
||||||
|
showEdit: false,
|
||||||
|
showDetail: false
|
||||||
|
},
|
||||||
|
// 遮罩层
|
||||||
|
loading: true,
|
||||||
|
// 表格头
|
||||||
|
tableColumns: [
|
||||||
|
{
|
||||||
|
prop: 'projectName',
|
||||||
|
label: '项目名称',
|
||||||
|
show: true, width: '90px'
|
||||||
|
},
|
||||||
|
{ prop: 'projectDescription', label: '项目描述', show: true }
|
||||||
|
],
|
||||||
|
// 默认选择中表格头
|
||||||
|
checkedTableColumns: [],
|
||||||
|
tableSize: 'medium',
|
||||||
|
// 状态数据字典
|
||||||
|
statusOptions: [],
|
||||||
|
dbTypeOptions: [],
|
||||||
|
// 数据源表格数据
|
||||||
|
dataSourceList: [],
|
||||||
|
// 总数据条数
|
||||||
|
total: 0,
|
||||||
|
// 查询参数
|
||||||
|
queryParams: {
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 20,
|
||||||
|
projectName: ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.initCols()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
/** 查询数据源列表 */
|
||||||
|
getList() {
|
||||||
|
this.loading = true
|
||||||
|
// pageDataSource(this.queryParams).then(response => {
|
||||||
|
// this.loading = false
|
||||||
|
// if (response.success) {
|
||||||
|
// const { data } = response
|
||||||
|
// this.dataSourceList = data.data
|
||||||
|
// this.total = data.total
|
||||||
|
// }
|
||||||
|
// })
|
||||||
|
pageProjectList(this.queryParams).then(response => {
|
||||||
|
this.loading = false
|
||||||
|
if (response.code === 200) {
|
||||||
|
this.dataSourceList = response.rows
|
||||||
|
this.total = response.total
|
||||||
|
}
|
||||||
|
console.log('response==', response)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
initCols() {
|
||||||
|
this.checkedTableColumns = this.tableColumns.map(col => col.prop)
|
||||||
|
},
|
||||||
|
handleCheckedColsChange(val) {
|
||||||
|
this.tableColumns.forEach(col => {
|
||||||
|
if (!this.checkedTableColumns.includes(col.prop)) {
|
||||||
|
col.show = false
|
||||||
|
} else {
|
||||||
|
col.show = true
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleCommand(command) {
|
||||||
|
this.tableSize = command
|
||||||
|
},
|
||||||
|
/** 搜索按钮操作 */
|
||||||
|
handleQuery() {
|
||||||
|
this.queryParams.pageNum = 1
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
/** 重置按钮操作 */
|
||||||
|
resetQuery() {
|
||||||
|
this.queryParams = {
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 20,
|
||||||
|
sourceName: ''
|
||||||
|
}
|
||||||
|
this.handleQuery()
|
||||||
|
},
|
||||||
|
/** 刷新列表 */
|
||||||
|
handleRefresh() {
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
/** 新增按钮操作 */
|
||||||
|
handleAdd() {
|
||||||
|
this.showOptions.data = {}
|
||||||
|
this.showOptions.showList = false
|
||||||
|
this.showOptions.showAdd = true
|
||||||
|
this.showOptions.showEdit = false
|
||||||
|
this.showOptions.showDetail = false
|
||||||
|
this.$emit('showCard', this.showOptions)
|
||||||
|
},
|
||||||
|
/** 修改按钮操作 */
|
||||||
|
handleEdit(row) {
|
||||||
|
this.showOptions.data.id = row.id
|
||||||
|
this.showOptions.showList = false
|
||||||
|
this.showOptions.showAdd = false
|
||||||
|
this.showOptions.showEdit = true
|
||||||
|
this.showOptions.showDetail = false
|
||||||
|
this.$emit('showCard', this.showOptions)
|
||||||
|
},
|
||||||
|
/** 详情按钮操作 */
|
||||||
|
handleDetail(row) {
|
||||||
|
this.showOptions.data.id = row.id
|
||||||
|
this.showOptions.showList = false
|
||||||
|
this.showOptions.showAdd = false
|
||||||
|
this.showOptions.showEdit = false
|
||||||
|
this.showOptions.showDetail = true
|
||||||
|
this.$emit('showCard', this.showOptions)
|
||||||
|
},
|
||||||
|
/** 删除按钮操作 */
|
||||||
|
handleDelete(row) {
|
||||||
|
this.$confirm('选中数据将被永久删除, 是否继续?', '提示', {
|
||||||
|
confirmButtonText: '确定',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
type: 'warning'
|
||||||
|
}).then(() => {
|
||||||
|
delNewProject(row.id).then(response => {
|
||||||
|
if (response.code === 200) {
|
||||||
|
this.$message.success('删除成功')
|
||||||
|
this.getList()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}).catch(() => {
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleSizeChange(val) {
|
||||||
|
console.log(`每页 ${val} 条`)
|
||||||
|
this.queryParams.pageNum = 1
|
||||||
|
this.queryParams.pageSize = val
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
handleCurrentChange(val) {
|
||||||
|
console.log(`当前页: ${val}`)
|
||||||
|
this.queryParams.pageNum = val
|
||||||
|
this.getList()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.right-toolbar {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
.el-card ::v-deep .el-card__body {
|
||||||
|
height: calc(100vh - 170px);
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -3,17 +3,24 @@
|
|||||||
<div slot="header" class="clearfix">
|
<div slot="header" class="clearfix">
|
||||||
<span>{{ title }}</span>
|
<span>{{ title }}</span>
|
||||||
<el-button-group style="float: right;">
|
<el-button-group style="float: right;">
|
||||||
<el-button v-hasPerm="['quality:rule:add']" type="primary" size="mini" icon="el-icon-finished" :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
<el-button v-if="active == 2" type="primary" size="mini" icon="el-icon-finished" :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
||||||
|
<el-button v-if="active == 1" size="mini" type="primary" @click="handleNextStep">下一步</el-button>
|
||||||
|
<el-button v-if="active == 2" size="mini" type="primary" @click="handleLastStep">上一步</el-button>
|
||||||
<el-button size="mini" icon="el-icon-back" @click="showCard">返回</el-button>
|
<el-button size="mini" icon="el-icon-back" @click="showCard">返回</el-button>
|
||||||
</el-button-group>
|
</el-button-group>
|
||||||
</div>
|
</div>
|
||||||
<div class="body-wrapper">
|
<div class="body-wrapper" style="padding-left: 20%">
|
||||||
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
<el-steps :active="active" finish-status="success" align-center style="width: 900px">
|
||||||
<el-form-item label="规则名称" prop="ruleName">
|
<el-step title="填写检测用例信息" />
|
||||||
<el-input v-model="form.ruleName" placeholder="请输入规则名称" />
|
<el-step title="选择检测数据源" />
|
||||||
|
</el-steps>
|
||||||
|
<!--<el-form ref="form" :model="form" :rules="rules" label-width="80px" style="width: 800px">
|
||||||
|
<div style="padding: 20px 100px">
|
||||||
|
<el-form-item label="用例名称" prop="ruleName">
|
||||||
|
<el-input v-model="form.ruleName" placeholder="请输入用例名称" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="核查类型" prop="ruleItemId">
|
<el-form-item label="检测类型" prop="ruleItemId">
|
||||||
<el-select v-model="form.ruleItemId" placeholder="请选择核查类型" @change="ruleItemSelectChanged">
|
<el-select v-model="form.ruleItemId" placeholder="请选择检测类型" @change="ruleItemSelectChanged">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in ruleItemOptions"
|
v-for="item in ruleItemOptions"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
@@ -22,8 +29,8 @@
|
|||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="规则级别" prop="ruleLevelId">
|
<el-form-item label="用例级别" prop="ruleLevelId">
|
||||||
<el-select v-model="form.ruleLevelId" placeholder="请选择规则级别">
|
<el-select v-model="form.ruleLevelId" placeholder="请选择用例级别">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in ruleLevelOptions"
|
v-for="item in ruleLevelOptions"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
@@ -32,6 +39,7 @@
|
|||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
</div>
|
||||||
<el-form-item label="数据源" prop="ruleSourceId">
|
<el-form-item label="数据源" prop="ruleSourceId">
|
||||||
<el-select v-model="form.ruleSourceId" placeholder="请选择数据源" @change="sourceSelectChanged">
|
<el-select v-model="form.ruleSourceId" placeholder="请选择数据源" @change="sourceSelectChanged">
|
||||||
<el-option
|
<el-option
|
||||||
@@ -54,8 +62,8 @@
|
|||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="核查字段" prop="ruleColumnId">
|
<el-form-item label="检测字段" prop="ruleColumnId">
|
||||||
<el-select v-model="form.ruleColumnId" placeholder="请选择核查字段" @change="columnSelectChanged">
|
<el-select v-model="form.ruleColumnId" placeholder="请选择检测字段" @change="columnSelectChanged">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="column in columnOptions"
|
v-for="column in columnOptions"
|
||||||
:key="column.id"
|
:key="column.id"
|
||||||
@@ -66,7 +74,7 @@
|
|||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-divider content-position="left">核查配置</el-divider>
|
<el-divider content-position="left">检测配置</el-divider>
|
||||||
<el-row v-if="form.ruleConfig.ruleItemCode === 'timeliness_key'">
|
<el-row v-if="form.ruleConfig.ruleItemCode === 'timeliness_key'">
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="判定阀值">
|
<el-form-item label="判定阀值">
|
||||||
@@ -137,7 +145,7 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<!-- 正则表达式规则-->
|
<!– 正则表达式规则–>
|
||||||
<el-row v-if="form.ruleConfig.ruleItemCode === 'regular_key'">
|
<el-row v-if="form.ruleConfig.ruleItemCode === 'regular_key'">
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="正则表达">
|
<el-form-item label="正则表达">
|
||||||
@@ -170,6 +178,81 @@
|
|||||||
<el-form-item label="备注" prop="remark">
|
<el-form-item label="备注" prop="remark">
|
||||||
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
|
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
</el-form>-->
|
||||||
|
|
||||||
|
<el-form v-if="active == 1" ref="form" :model="form" :rules="rules" label-width="120px" style="width: 800px">
|
||||||
|
<div style="padding: 20px 100px">
|
||||||
|
<el-form-item label="用例名称" prop="ruleName">
|
||||||
|
<el-input v-model="form.ruleName" placeholder="请输入用例名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="检测类型" prop="ruleItemId">
|
||||||
|
<el-select v-model="form.ruleItemId" placeholder="请选择检测类型" style="width: 100%" @change="ruleItemSelectChanged">
|
||||||
|
<el-option
|
||||||
|
v-for="item in ruleItemOptions"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.itemExplain"
|
||||||
|
:value="item.id"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<!-- <el-form-item label="用例级别" prop="ruleLevelId">-->
|
||||||
|
<!-- <el-select v-model="form.ruleLevelId" placeholder="请选择用例级别" style="width: 100%">-->
|
||||||
|
<!-- <el-option-->
|
||||||
|
<!-- v-for="item in ruleLevelOptions"-->
|
||||||
|
<!-- :key="item.id"-->
|
||||||
|
<!-- :label="item.name"-->
|
||||||
|
<!-- :value="item.id"-->
|
||||||
|
<!-- />-->
|
||||||
|
<!-- </el-select>-->
|
||||||
|
<!-- </el-form-item>-->
|
||||||
|
</div>
|
||||||
|
</el-form>
|
||||||
|
<el-form v-if="active == 2" ref="form" :model="form" :rules="rules" label-width="80px" style="width: 800px">
|
||||||
|
<div style="padding: 20px 100px">
|
||||||
|
<el-form-item label="数据源" prop="ruleSourceId">
|
||||||
|
<el-select v-model="form.ruleSourceId" placeholder="请选择数据源" style="width: 100%" @change="sourceSelectChanged">
|
||||||
|
<el-option
|
||||||
|
v-for="source in sourceOptions"
|
||||||
|
:key="source.id"
|
||||||
|
:label="source.sourceName"
|
||||||
|
:value="source.id"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<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>
|
||||||
|
<el-form-item label="状态" prop="status">
|
||||||
|
<el-radio-group v-model="form.status">
|
||||||
|
<el-radio
|
||||||
|
v-for="dict in statusOptions"
|
||||||
|
:key="dict.id"
|
||||||
|
:label="dict.itemText"
|
||||||
|
>{{ dict.itemValue }}
|
||||||
|
</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="备注" prop="remark">
|
||||||
|
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
|
||||||
|
</el-form-item>
|
||||||
|
</div>
|
||||||
</el-form>
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
@@ -194,7 +277,8 @@ export default {
|
|||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
title: '核查规则新增',
|
title: '检测用例新增',
|
||||||
|
active: 1,
|
||||||
// 展示切换
|
// 展示切换
|
||||||
showOptions: {
|
showOptions: {
|
||||||
data: {},
|
data: {},
|
||||||
@@ -310,6 +394,18 @@ export default {
|
|||||||
showCard() {
|
showCard() {
|
||||||
this.$emit('showCard', this.showOptions)
|
this.$emit('showCard', this.showOptions)
|
||||||
},
|
},
|
||||||
|
/** 步骤条下一步 */
|
||||||
|
handleNextStep() {
|
||||||
|
this.$refs['form'].validate(valid => {
|
||||||
|
if (valid) {
|
||||||
|
this.active++
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/** 步骤条上一步 */
|
||||||
|
handleLastStep() {
|
||||||
|
this.active--
|
||||||
|
},
|
||||||
getRuleLevelList() {
|
getRuleLevelList() {
|
||||||
listRuleLevel().then(response => {
|
listRuleLevel().then(response => {
|
||||||
if (response.success) {
|
if (response.success) {
|
||||||
@@ -415,6 +511,8 @@ export default {
|
|||||||
this.loadingOptions.loading = true
|
this.loadingOptions.loading = true
|
||||||
this.loadingOptions.loadingText = '保存中...'
|
this.loadingOptions.loadingText = '保存中...'
|
||||||
this.loadingOptions.isDisabled = true
|
this.loadingOptions.isDisabled = true
|
||||||
|
this.form.ruleTableId = 'all'
|
||||||
|
this.form.ruleTable = '全表'
|
||||||
addCheckRule(this.form).then(response => {
|
addCheckRule(this.form).then(response => {
|
||||||
if (response.success) {
|
if (response.success) {
|
||||||
this.$message.success('保存成功')
|
this.$message.success('保存成功')
|
||||||
@@ -442,6 +540,16 @@ export default {
|
|||||||
this.form.ruleConfig.regular.regular = '^[1-9][0-9]{10}$'
|
this.form.ruleConfig.regular.regular = '^[1-9][0-9]{10}$'
|
||||||
} else if (value === '2') {
|
} else if (value === '2') {
|
||||||
this.form.ruleConfig.regular.regular = '^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$'
|
this.form.ruleConfig.regular.regular = '^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$'
|
||||||
|
} else if (value === '3') {
|
||||||
|
this.form.ruleConfig.regular.regular = '[0-9]*[1-9][0-9]*'
|
||||||
|
} else if (value === '4') {
|
||||||
|
this.form.ruleConfig.regular.regular = '-[0-9]*[1-9][0-9]*'
|
||||||
|
} else if (value === '5') {
|
||||||
|
this.form.ruleConfig.regular.regular = '\\d{15}(\\d\\d[0-9xX])?'
|
||||||
|
} else if (value === '6') {
|
||||||
|
this.form.ruleConfig.regular.regular = '(\\d{4}|\\d{2})-((1[0-2])|(0?[1-9]))-(([12][0-9])|(3[01])|(0?[1-9]))'
|
||||||
|
} else if (value === '7') {
|
||||||
|
this.form.ruleConfig.regular.regular = '((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,16 +21,16 @@
|
|||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="规则级别">
|
<!-- <el-form-item label="规则级别">-->
|
||||||
<el-select v-model="form.ruleLevelId">
|
<!-- <el-select v-model="form.ruleLevelId">-->
|
||||||
<el-option
|
<!-- <el-option-->
|
||||||
v-for="item in ruleLevelOptions"
|
<!-- v-for="item in ruleLevelOptions"-->
|
||||||
:key="item.id"
|
<!-- :key="item.id"-->
|
||||||
:label="item.name"
|
<!-- :label="item.name"-->
|
||||||
:value="item.id"
|
<!-- :value="item.id"-->
|
||||||
/>
|
<!-- />-->
|
||||||
</el-select>
|
<!-- </el-select>-->
|
||||||
</el-form-item>
|
<!-- </el-form-item>-->
|
||||||
<el-form-item label="数据源">
|
<el-form-item label="数据源">
|
||||||
<el-select v-model="form.ruleSourceId">
|
<el-select v-model="form.ruleSourceId">
|
||||||
<el-option
|
<el-option
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<div slot="header" class="clearfix">
|
<div slot="header" class="clearfix">
|
||||||
<span>{{ title }}</span>
|
<span>{{ title }}</span>
|
||||||
<el-button-group style="float: right;">
|
<el-button-group style="float: right;">
|
||||||
<el-button v-hasPerm="['quality:rule:edit']" type="primary" size="mini" icon="el-icon-finished" :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
<el-button type="primary" size="mini" icon="el-icon-finished" :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
||||||
<el-button size="mini" icon="el-icon-back" @click="showCard">返回</el-button>
|
<el-button size="mini" icon="el-icon-back" @click="showCard">返回</el-button>
|
||||||
</el-button-group>
|
</el-button-group>
|
||||||
</div>
|
</div>
|
||||||
@@ -22,16 +22,16 @@
|
|||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="规则级别" prop="ruleLevelId">
|
<!-- <el-form-item label="规则级别" prop="ruleLevelId">-->
|
||||||
<el-select v-model="form.ruleLevelId" placeholder="请选择规则级别">
|
<!-- <el-select v-model="form.ruleLevelId" placeholder="请选择规则级别">-->
|
||||||
<el-option
|
<!-- <el-option-->
|
||||||
v-for="item in ruleLevelOptions"
|
<!-- v-for="item in ruleLevelOptions"-->
|
||||||
:key="item.id"
|
<!-- :key="item.id"-->
|
||||||
:label="item.name"
|
<!-- :label="item.name"-->
|
||||||
:value="item.id"
|
<!-- :value="item.id"-->
|
||||||
/>
|
<!-- />-->
|
||||||
</el-select>
|
<!-- </el-select>-->
|
||||||
</el-form-item>
|
<!-- </el-form-item>-->
|
||||||
<el-form-item label="数据源" prop="ruleSourceId">
|
<el-form-item label="数据源" prop="ruleSourceId">
|
||||||
<el-select v-model="form.ruleSourceId" placeholder="请选择数据源" @change="sourceSelectChanged">
|
<el-select v-model="form.ruleSourceId" placeholder="请选择数据源" @change="sourceSelectChanged">
|
||||||
<el-option
|
<el-option
|
||||||
@@ -218,9 +218,6 @@ export default {
|
|||||||
ruleItemId: [
|
ruleItemId: [
|
||||||
{ required: true, message: '核查类型不能为空', trigger: 'change' }
|
{ required: true, message: '核查类型不能为空', trigger: 'change' }
|
||||||
],
|
],
|
||||||
ruleLevelId: [
|
|
||||||
{ required: true, message: '规则级别不能为空', trigger: 'change' }
|
|
||||||
],
|
|
||||||
ruleSourceId: [
|
ruleSourceId: [
|
||||||
{ required: true, message: '数据源不能为空', trigger: 'change' }
|
{ required: true, message: '数据源不能为空', trigger: 'change' }
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -26,10 +26,35 @@
|
|||||||
<el-col :span="18">
|
<el-col :span="18">
|
||||||
<el-card class="box-card" shadow="always">
|
<el-card class="box-card" shadow="always">
|
||||||
<el-form ref="queryForm" :model="queryParams" :inline="true">
|
<el-form ref="queryForm" :model="queryParams" :inline="true">
|
||||||
<el-form-item label="规则名称" prop="ruleName">
|
<el-form-item label="项目" prop="projectId">
|
||||||
|
<el-select v-model="queryParams.projectId" clearable size="small" placeholder="项目" class="filter-item" @change="handleQuery">
|
||||||
|
<el-option v-for="item in projectsOptions" :key="item.id" :label="item.projectName" :value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="数据源" prop="ruleName">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.ruleSource"
|
||||||
|
placeholder="请输入数据源"
|
||||||
|
clearable
|
||||||
|
size="small"
|
||||||
|
@keyup.enter.native="handleQuery"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="数据表" prop="ruleName">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.ruleTable"
|
||||||
|
placeholder="请输入数据表"
|
||||||
|
clearable
|
||||||
|
size="small"
|
||||||
|
@keyup.enter.native="handleQuery"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="用例名称" prop="ruleName">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="queryParams.ruleName"
|
v-model="queryParams.ruleName"
|
||||||
placeholder="请输入规则名称"
|
placeholder="请输入用例名称"
|
||||||
clearable
|
clearable
|
||||||
size="small"
|
size="small"
|
||||||
@keyup.enter.native="handleQuery"
|
@keyup.enter.native="handleQuery"
|
||||||
@@ -45,7 +70,6 @@
|
|||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-button-group>
|
<el-button-group>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['quality:rule:add']"
|
|
||||||
type="primary"
|
type="primary"
|
||||||
icon="el-icon-plus"
|
icon="el-icon-plus"
|
||||||
size="mini"
|
size="mini"
|
||||||
@@ -122,21 +146,18 @@
|
|||||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="200">
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="200">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['quality:rule:edit']"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-edit-outline"
|
icon="el-icon-edit-outline"
|
||||||
@click="handleEdit(scope.row)"
|
@click="handleEdit(scope.row)"
|
||||||
>修改</el-button>
|
>修改</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['quality:rule:detail']"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-view"
|
icon="el-icon-view"
|
||||||
@click="handleDetail(scope.row)"
|
@click="handleDetail(scope.row)"
|
||||||
>详情</el-button>
|
>详情</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['quality:rule:remove']"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-delete"
|
icon="el-icon-delete"
|
||||||
@@ -180,12 +201,12 @@ export default {
|
|||||||
loading: true,
|
loading: true,
|
||||||
// 表格头
|
// 表格头
|
||||||
tableColumns: [
|
tableColumns: [
|
||||||
{ prop: 'ruleName', label: '规则名称', show: true },
|
|
||||||
{ prop: 'ruleType', label: '规则类型', show: true },
|
|
||||||
{ prop: 'ruleSource', label: '数据源', show: true },
|
{ prop: 'ruleSource', label: '数据源', show: true },
|
||||||
{ prop: 'ruleTable', label: '数据表', show: true, formatter: this.ruleTableFormatter },
|
/* { prop: 'ruleTable', label: '数据表', show: true, formatter: this.ruleTableFormatter },*/
|
||||||
{ prop: 'ruleColumn', label: '核查字段', show: true, formatter: this.ruleColumnFormatter },
|
/* { prop: 'ruleColumn', label: '检测字段', show: true, formatter: this.ruleColumnFormatter },*/
|
||||||
{ prop: 'ruleLevel', label: '规则级别', width: 100, show: true },
|
{ prop: 'ruleName', label: '用例名称', show: true },
|
||||||
|
{ prop: 'ruleType', label: '用例类型', show: true },
|
||||||
|
// { prop: 'ruleLevel', label: '用例级别', width: 100, show: true },
|
||||||
{
|
{
|
||||||
prop: 'status',
|
prop: 'status',
|
||||||
label: '状态',
|
label: '状态',
|
||||||
@@ -195,6 +216,9 @@ export default {
|
|||||||
},
|
},
|
||||||
{ prop: 'createTime', label: '创建时间', show: true }
|
{ prop: 'createTime', label: '创建时间', show: true }
|
||||||
],
|
],
|
||||||
|
projectsOptions: [
|
||||||
|
{ id: '1111', projectName: '演示项目' }
|
||||||
|
],
|
||||||
// 默认选择中表格头
|
// 默认选择中表格头
|
||||||
checkedTableColumns: [],
|
checkedTableColumns: [],
|
||||||
tableSize: 'medium',
|
tableSize: 'medium',
|
||||||
@@ -208,6 +232,7 @@ export default {
|
|||||||
queryParams: {
|
queryParams: {
|
||||||
pageNum: 1,
|
pageNum: 1,
|
||||||
pageSize: 20,
|
pageSize: 20,
|
||||||
|
projectId: '1111',
|
||||||
ruleTypeId: '',
|
ruleTypeId: '',
|
||||||
ruleName: ''
|
ruleName: ''
|
||||||
},
|
},
|
||||||
@@ -237,11 +262,11 @@ export default {
|
|||||||
if (response.success) {
|
if (response.success) {
|
||||||
const { data } = response
|
const { data } = response
|
||||||
const tree = {}
|
const tree = {}
|
||||||
tree.name = '规则类型'
|
tree.name = '用例类型'
|
||||||
const children = []
|
const children = []
|
||||||
data.forEach(e => {
|
data.forEach(e => {
|
||||||
if (e.code === 'unique' || e.code === 'integrity' || e.code === 'accuracy' ||
|
if (e.code === 'integrity' || e.code === 'accuracy' ||
|
||||||
e.code === 'consistent' || e.code === 'relevance' || e.code === 'regular') {
|
e.code === 'consistent' || e.code === 'regular') {
|
||||||
children.push(e)
|
children.push(e)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@@ -308,7 +333,7 @@ export default {
|
|||||||
handleAdd() {
|
handleAdd() {
|
||||||
this.showOptions.data = {}
|
this.showOptions.data = {}
|
||||||
if (!this.queryParams.ruleTypeId) {
|
if (!this.queryParams.ruleTypeId) {
|
||||||
this.$message.warning('请先选择核查规则类型')
|
this.$message.warning('请先选择核查用例类型')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
this.showOptions.data.ruleTypeId = this.queryParams.ruleTypeId
|
this.showOptions.data.ruleTypeId = this.queryParams.ruleTypeId
|
||||||
@@ -386,7 +411,7 @@ export default {
|
|||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
.el-card ::v-deep .el-card__body {
|
.el-card ::v-deep .el-card__body {
|
||||||
height: calc(100vh - 170px);
|
height: calc(100vh - 100px);
|
||||||
}
|
}
|
||||||
.tree-wrapper {
|
.tree-wrapper {
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
|
|||||||
379
src/views/quality/checkjob/CheckJobDetail.vue
Normal file
@@ -7,13 +7,13 @@
|
|||||||
<el-button size="mini" icon="el-icon-back" @click="showCard">返回</el-button>
|
<el-button size="mini" icon="el-icon-back" @click="showCard">返回</el-button>
|
||||||
</el-button-group>
|
</el-button-group>
|
||||||
</div>
|
</div>
|
||||||
<div class="body-wrapper">
|
<div class="body-wrapper" style="padding-left: 25%">
|
||||||
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
|
<el-form ref="form" :model="form" :rules="rules" label-width="100px" style="width: 700px">
|
||||||
<el-form-item label="任务名称" prop="jobName">
|
<el-form-item label="任务名称" prop="jobName">
|
||||||
<el-input v-model="form.jobName" placeholder="任务名称" />
|
<el-input v-model="form.jobName" placeholder="任务名称" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="任务类型" prop="jobType">
|
<el-form-item label="任务类型" prop="jobType">
|
||||||
<el-select v-model="form.jobType" placeholder="请选择任务类型" @change="ruleItemSelectChanged">
|
<el-select v-model="form.jobType" placeholder="请选择任务类型" @change="ruleItemSelectChanged" style="width: 100%">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in ruleItemOptions"
|
v-for="item in ruleItemOptions"
|
||||||
:key="item.typeId"
|
:key="item.typeId"
|
||||||
@@ -22,7 +22,16 @@
|
|||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-divider content-position="left">任务配置</el-divider>
|
<el-form-item label="检测用例" prop="checkCase">
|
||||||
|
<el-select v-model="form.checkCase" multiple placeholder="检测用例" style="width: 100%">
|
||||||
|
<el-option
|
||||||
|
v-for="item in checkCaseOptions"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.ruleName"
|
||||||
|
:value="item.id">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item label="cron表达式" prop="cronExpression">
|
<el-form-item label="cron表达式" prop="cronExpression">
|
||||||
<el-input v-model="form.cronExpression" placeholder="cron表达式" />
|
<el-input v-model="form.cronExpression" placeholder="cron表达式" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -37,7 +46,7 @@
|
|||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="任务概述" prop="remark">
|
<el-form-item label="任务概述" prop="remark">
|
||||||
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
|
<el-input v-model="form.remark" type="textarea" :rows="8" placeholder="请输入内容" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
@@ -46,9 +55,10 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { updateCheckJob, getScheduleJobById } from '@/api/quality/checkjob'
|
import { updateCheckJob, getScheduleJobById } from '@/api/quality/checkjob'
|
||||||
|
import { pageCheckRule } from '@/api/quality/checkrule'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'CheckJobAdd',
|
name: 'CheckJobEdit',
|
||||||
props: {
|
props: {
|
||||||
data: {
|
data: {
|
||||||
type: Object,
|
type: Object,
|
||||||
@@ -88,6 +98,7 @@ export default {
|
|||||||
{ required: true, message: 'cron表达式不能为空', trigger: 'blur' }
|
{ required: true, message: 'cron表达式不能为空', trigger: 'blur' }
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
checkCaseOptions: [],
|
||||||
// 状态数据字典
|
// 状态数据字典
|
||||||
statusOptions: [],
|
statusOptions: [],
|
||||||
// 规则级别数据字典
|
// 规则级别数据字典
|
||||||
@@ -95,7 +106,8 @@ export default {
|
|||||||
// 核查类型数据字典
|
// 核查类型数据字典
|
||||||
ruleItemOptions: [
|
ruleItemOptions: [
|
||||||
{ typeId: 'structure', typeName: '结构符合性' },
|
{ typeId: 'structure', typeName: '结构符合性' },
|
||||||
{ typeId: 'content', typeName: '内容符合性' }
|
{ typeId: 'content', typeName: '内容符合性' },
|
||||||
|
{ typeId: 'relevance', typeName: '关联符合性' }
|
||||||
],
|
],
|
||||||
sourceOptions: [],
|
sourceOptions: [],
|
||||||
tableOptions: [],
|
tableOptions: [],
|
||||||
@@ -111,6 +123,7 @@ export default {
|
|||||||
this.statusOptions = response.data
|
this.statusOptions = response.data
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
this.getCheckRule()
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.getCheckJob(this.data.id)
|
this.getCheckJob(this.data.id)
|
||||||
@@ -134,6 +147,29 @@ export default {
|
|||||||
})
|
})
|
||||||
this.form.jobType = item.typeId
|
this.form.jobType = item.typeId
|
||||||
},
|
},
|
||||||
|
getCheckRule() {
|
||||||
|
let ruleType = 'nr'
|
||||||
|
if(this.form.jobType == 'structure'){
|
||||||
|
ruleType = 'jg'
|
||||||
|
} else if(this.form.jobType == 'relevance'){
|
||||||
|
ruleType = 'gl'
|
||||||
|
}
|
||||||
|
let params = {
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 20,
|
||||||
|
projectId: '1111',
|
||||||
|
ruleTypeId: '',
|
||||||
|
ruleName: '',
|
||||||
|
ruleType: ruleType
|
||||||
|
}
|
||||||
|
this.checkCaseOptions = []
|
||||||
|
pageCheckRule(params).then(response => {
|
||||||
|
if (response.success) {
|
||||||
|
const { data } = response
|
||||||
|
this.checkCaseOptions = data.data
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
/** 提交按钮 */
|
/** 提交按钮 */
|
||||||
submitForm: function () {
|
submitForm: function () {
|
||||||
this.$refs['form'].validate(valid => {
|
this.$refs['form'].validate(valid => {
|
||||||
|
|||||||
@@ -1,6 +1,11 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-card class="box-card" shadow="always">
|
<el-card class="box-card" shadow="always">
|
||||||
<el-form ref="queryForm" :model="queryParams" :inline="true">
|
<el-form ref="queryForm" :model="queryParams" :inline="true">
|
||||||
|
<el-form-item label="项目" prop="projectId">
|
||||||
|
<el-select v-model="queryParams.projectId" clearable size="small" placeholder="项目" class="filter-item" @change="handleQuery">
|
||||||
|
<el-option v-for="item in projectsOptions" :key="item.id" :label="item.projectName" :value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item label="任务名称" prop="sourceName">
|
<el-form-item label="任务名称" prop="sourceName">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="queryParams.sourceName"
|
v-model="queryParams.sourceName"
|
||||||
@@ -92,8 +97,20 @@
|
|||||||
show-overflow-tooltip
|
show-overflow-tooltip
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="400px">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
|
<el-button
|
||||||
|
size="mini"
|
||||||
|
type="text"
|
||||||
|
icon="el-icon-view"
|
||||||
|
@click="handleDetail(scope.row)"
|
||||||
|
>详情</el-button>
|
||||||
|
<el-button
|
||||||
|
size="mini"
|
||||||
|
type="text"
|
||||||
|
icon="el-icon-edit-outline"
|
||||||
|
@click="handleEdit(scope.row)"
|
||||||
|
>修改</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-if="scope.row.status === '1'"
|
v-if="scope.row.status === '1'"
|
||||||
size="mini"
|
size="mini"
|
||||||
@@ -105,28 +122,21 @@
|
|||||||
v-if="scope.row.status === '0'"
|
v-if="scope.row.status === '0'"
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-view"
|
icon="el-icon-refresh-left"
|
||||||
@click="handleResume(scope.row)"
|
@click="handleResume(scope.row)"
|
||||||
>任务恢复</el-button>
|
>任务恢复</el-button>
|
||||||
<el-button
|
<!--<el-button
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-view"
|
icon="el-icon-s-promotion"
|
||||||
@click="handleRun(scope.row)"
|
@click="handleRun(scope.row)"
|
||||||
>立即执行</el-button>
|
>立即执行</el-button>-->
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['quality:rule:edit']"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-edit-outline"
|
icon="el-icon-delete"
|
||||||
@click="handleEdit(scope.row)"
|
@click="handleDelete(scope.row)"
|
||||||
>修改</el-button>
|
>删除</el-button>
|
||||||
<!-- <el-button-->
|
|
||||||
<!-- size="mini"-->
|
|
||||||
<!-- type="text"-->
|
|
||||||
<!-- icon="el-icon-view"-->
|
|
||||||
<!-- @click="handleRun(scope.row)"-->
|
|
||||||
<!-- >查看</el-button>-->
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
@@ -169,12 +179,22 @@ export default {
|
|||||||
// { prop: 'methodParams', label: '方法参数', show: true },
|
// { prop: 'methodParams', label: '方法参数', show: true },
|
||||||
{ prop: 'cronExpression', label: 'cron表达式', show: true },
|
{ prop: 'cronExpression', label: 'cron表达式', show: true },
|
||||||
{ prop: 'afterDate', label: '最近完成时间', show: true },
|
{ prop: 'afterDate', label: '最近完成时间', show: true },
|
||||||
|
{
|
||||||
|
prop: 'schedule',
|
||||||
|
label: '任务进度',
|
||||||
|
show: true,
|
||||||
|
formatter: this.scheduleFormatter
|
||||||
|
},
|
||||||
{
|
{
|
||||||
prop: 'status',
|
prop: 'status',
|
||||||
label: '状态',
|
label: '定时状态',
|
||||||
show: true,
|
show: true,
|
||||||
formatter: this.statusFormatter
|
formatter: this.statusFormatter
|
||||||
}
|
},
|
||||||
|
{ prop: 'remark', label: '任务概述', show: true }
|
||||||
|
],
|
||||||
|
projectsOptions: [
|
||||||
|
{ id: '1111', projectName: '演示项目' }
|
||||||
],
|
],
|
||||||
tableSize: 'medium',
|
tableSize: 'medium',
|
||||||
// 默认选择中表格头
|
// 默认选择中表格头
|
||||||
@@ -189,6 +209,7 @@ export default {
|
|||||||
queryParams: {
|
queryParams: {
|
||||||
pageNum: 1,
|
pageNum: 1,
|
||||||
pageSize: 20,
|
pageSize: 20,
|
||||||
|
projectId: '1111',
|
||||||
sourceName: ''
|
sourceName: ''
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -295,6 +316,9 @@ export default {
|
|||||||
return <el-tag type='warning'>{dictLabel}</el-tag>
|
return <el-tag type='warning'>{dictLabel}</el-tag>
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
scheduleFormatter(row, column, cellValue, index){
|
||||||
|
return '100%'
|
||||||
|
},
|
||||||
/** 搜索按钮操作 */
|
/** 搜索按钮操作 */
|
||||||
handleQuery() {
|
handleQuery() {
|
||||||
this.queryParams.pageNum = 1
|
this.queryParams.pageNum = 1
|
||||||
|
|||||||
@@ -9,6 +9,9 @@
|
|||||||
<transition name="el-zoom-in-top">
|
<transition name="el-zoom-in-top">
|
||||||
<check-job-edit v-if="options.showEdit" :data="options.data" @showCard="showCard" />
|
<check-job-edit v-if="options.showEdit" :data="options.data" @showCard="showCard" />
|
||||||
</transition>
|
</transition>
|
||||||
|
<transition name="el-zoom-in-top">
|
||||||
|
<check-job-detail v-if="options.showDetail" :data="options.data" @showCard="showCard" />
|
||||||
|
</transition>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -16,10 +19,11 @@
|
|||||||
import CheckJobList from './CheckJobList'
|
import CheckJobList from './CheckJobList'
|
||||||
import CheckJobAdd from './CheckJobAdd'
|
import CheckJobAdd from './CheckJobAdd'
|
||||||
import CheckJobEdit from './CheckJobEdit'
|
import CheckJobEdit from './CheckJobEdit'
|
||||||
|
import CheckJobDetail from './CheckJobDetail'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'CheckJob',
|
name: 'CheckJob',
|
||||||
components: { CheckJobList, CheckJobAdd, CheckJobEdit },
|
components: { CheckJobList, CheckJobAdd, CheckJobEdit, CheckJobDetail },
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
options: {
|
options: {
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-card class="box-card" shadow="always">
|
<el-card class="box-card" shadow="always">
|
||||||
<el-form ref="queryForm" :model="queryParams" :inline="true">
|
<el-form ref="queryForm" :model="queryParams" :inline="true">
|
||||||
<el-form-item label="规则类型" prop="ruleTypeId">
|
<el-form-item label="用例类型" prop="ruleTypeId">
|
||||||
<el-select v-model="queryParams.ruleTypeId" clearable placeholder="请选择规则类型">
|
<el-select v-model="queryParams.ruleTypeId" clearable placeholder="请选择用例类型">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in ruleTypeOptions"
|
v-for="item in ruleTypeOptions"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
@@ -75,8 +75,8 @@ export default {
|
|||||||
// 表格头
|
// 表格头
|
||||||
tableColumns: [
|
tableColumns: [
|
||||||
{ prop: 'executeJobName', label: '任务名称', show: true },
|
{ prop: 'executeJobName', label: '任务名称', show: true },
|
||||||
{ prop: 'executeRuleTypeName', label: '规则类型', show: true },
|
{ prop: 'executeRuleTypeName', label: '用例类型', show: true },
|
||||||
{ prop: 'executeRuleName', label: '规则名称', show: true },
|
{ prop: 'executeRuleName', label: '用例名称', show: true },
|
||||||
{ prop: 'executeBatch', label: '执行批次', show: true },
|
{ prop: 'executeBatch', label: '执行批次', show: true },
|
||||||
{
|
{
|
||||||
prop: 'status',
|
prop: 'status',
|
||||||
|
|||||||
529
src/views/quality/checkrelevancerule/CheckRelevanceRuleAdd.vue
Normal file
@@ -0,0 +1,529 @@
|
|||||||
|
<template>
|
||||||
|
<el-card class="box-card" shadow="always">
|
||||||
|
<div slot="header" class="clearfix">
|
||||||
|
<span>{{ title }}</span>
|
||||||
|
<el-button-group style="float: right;">
|
||||||
|
<el-button v-if="active == 2" type="primary" size="mini" icon="el-icon-finished" :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
||||||
|
<el-button v-if="active == 1" size="mini" type="primary" @click="handleNextStep">下一步</el-button>
|
||||||
|
<el-button v-if="active == 2" size="mini" type="primary" @click="handleLastStep">上一步</el-button>
|
||||||
|
<el-button size="mini" icon="el-icon-back" @click="showCard">返回</el-button>
|
||||||
|
</el-button-group>
|
||||||
|
</div>
|
||||||
|
<div class="body-wrapper" style="padding-left: 20%">
|
||||||
|
<el-steps :active="active" finish-status="success" align-center style="width: 900px">
|
||||||
|
<el-step title="填写检测用例信息" />
|
||||||
|
<el-step title="选择检测数据源" />
|
||||||
|
</el-steps>
|
||||||
|
<!--<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
||||||
|
<el-form-item label="用例名称" prop="ruleName">
|
||||||
|
<el-input v-model="form.ruleName" placeholder="请输入用例名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="检测类型" prop="ruleItemId">
|
||||||
|
<el-select v-model="form.ruleItemId" placeholder="请选择检测类型" @change="ruleItemSelectChanged">
|
||||||
|
<el-option
|
||||||
|
v-for="item in ruleItemOptions"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.itemExplain"
|
||||||
|
:value="item.id"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="用例级别" prop="ruleLevelId">
|
||||||
|
<el-select v-model="form.ruleLevelId" placeholder="请选择用例级别">
|
||||||
|
<el-option
|
||||||
|
v-for="item in ruleLevelOptions"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="数据源" prop="ruleSourceId">
|
||||||
|
<el-select v-model="form.ruleSourceId" placeholder="请选择数据源" @change="sourceSelectChanged">
|
||||||
|
<el-option
|
||||||
|
v-for="source in sourceOptions"
|
||||||
|
:key="source.id"
|
||||||
|
:label="source.sourceName"
|
||||||
|
:value="source.id"
|
||||||
|
/>
|
||||||
|
</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>
|
||||||
|
<el-form-item label="状态" prop="status">
|
||||||
|
<el-radio-group v-model="form.status">
|
||||||
|
<el-radio
|
||||||
|
v-for="dict in statusOptions"
|
||||||
|
:key="dict.id"
|
||||||
|
:label="dict.itemText"
|
||||||
|
>{{ dict.itemValue }}</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="备注" prop="remark">
|
||||||
|
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>-->
|
||||||
|
|
||||||
|
<el-form v-if="active == 1" ref="form" :model="form" :rules="rules" label-width="120px" style="width: 800px">
|
||||||
|
<div style="padding: 20px 100px">
|
||||||
|
<el-form-item label="用例名称" prop="ruleName">
|
||||||
|
<el-input v-model="form.ruleName" placeholder="请输入用例名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="检测类型" prop="ruleItemId">
|
||||||
|
<el-select v-model="form.ruleItemId" placeholder="请选择检测类型" style="width: 100%" @change="ruleItemSelectChanged">
|
||||||
|
<el-option
|
||||||
|
v-for="item in ruleItemOptions"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.itemExplain"
|
||||||
|
:value="item.id"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<!-- <el-form-item label="用例级别" prop="ruleLevelId">-->
|
||||||
|
<!-- <el-select v-model="form.ruleLevelId" placeholder="请选择用例级别" style="width: 100%">-->
|
||||||
|
<!-- <el-option-->
|
||||||
|
<!-- v-for="item in ruleLevelOptions"-->
|
||||||
|
<!-- :key="item.id"-->
|
||||||
|
<!-- :label="item.name"-->
|
||||||
|
<!-- :value="item.id"-->
|
||||||
|
<!-- />-->
|
||||||
|
<!-- </el-select>-->
|
||||||
|
<!-- </el-form-item>-->
|
||||||
|
</div>
|
||||||
|
</el-form>
|
||||||
|
<el-form v-if="active == 2" ref="form" :model="form" :rules="rules" label-width="80px" style="width: 800px">
|
||||||
|
<div style="padding: 20px 100px">
|
||||||
|
<el-form-item label="数据源" prop="ruleSourceId">
|
||||||
|
<el-select v-model="form.ruleSourceId" placeholder="请选择数据源" style="width: 100%" @change="sourceSelectChanged">
|
||||||
|
<el-option
|
||||||
|
v-for="source in sourceOptions"
|
||||||
|
:key="source.id"
|
||||||
|
:label="source.sourceName"
|
||||||
|
:value="source.id"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="状态" prop="status">
|
||||||
|
<el-radio-group v-model="form.status">
|
||||||
|
<el-radio
|
||||||
|
v-for="dict in statusOptions"
|
||||||
|
:key="dict.id"
|
||||||
|
:label="dict.itemText"
|
||||||
|
>{{ dict.itemValue }}
|
||||||
|
</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="备注" prop="remark">
|
||||||
|
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
|
||||||
|
</el-form-item>
|
||||||
|
</div>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { listRuleLevel, listRuleItem, addCheckRule } 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'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'CheckRelevanceRuleAdd',
|
||||||
|
props: {
|
||||||
|
data: {
|
||||||
|
type: Object,
|
||||||
|
default: function() {
|
||||||
|
return {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
title: '检测用例新增',
|
||||||
|
active: 1,
|
||||||
|
// 展示切换
|
||||||
|
showOptions: {
|
||||||
|
data: {},
|
||||||
|
showList: true,
|
||||||
|
showAdd: false,
|
||||||
|
showEdit: false,
|
||||||
|
showDetail: false
|
||||||
|
},
|
||||||
|
// 保存按钮
|
||||||
|
loadingOptions: {
|
||||||
|
loading: false,
|
||||||
|
loadingText: '保存',
|
||||||
|
isDisabled: false
|
||||||
|
},
|
||||||
|
// 表单参数
|
||||||
|
form: {
|
||||||
|
ruleName: undefined,
|
||||||
|
ruleTypeId: undefined,
|
||||||
|
ruleItemId: undefined,
|
||||||
|
ruleLevelId: undefined,
|
||||||
|
ruleDbType: undefined,
|
||||||
|
ruleSourceId: undefined,
|
||||||
|
ruleSource: undefined,
|
||||||
|
ruleTableId: undefined,
|
||||||
|
ruleTable: undefined,
|
||||||
|
ruleTableComment: undefined,
|
||||||
|
ruleColumnId: undefined,
|
||||||
|
ruleColumn: undefined,
|
||||||
|
ruleColumnComment: undefined,
|
||||||
|
ruleConfig: {
|
||||||
|
ruleItemCode: undefined,
|
||||||
|
consistent: {
|
||||||
|
gbTypeId: undefined,
|
||||||
|
bindGbColumn: undefined
|
||||||
|
},
|
||||||
|
relevance: {
|
||||||
|
relatedTableId: undefined,
|
||||||
|
relatedTable: undefined,
|
||||||
|
relatedTableComment: undefined,
|
||||||
|
relatedColumnId: undefined,
|
||||||
|
relatedColumn: undefined,
|
||||||
|
relatedColumnComment: undefined
|
||||||
|
},
|
||||||
|
timeliness: {
|
||||||
|
threshold: undefined
|
||||||
|
},
|
||||||
|
accuracy: {
|
||||||
|
maxLength: undefined
|
||||||
|
},
|
||||||
|
regular: {
|
||||||
|
regular: undefined
|
||||||
|
}
|
||||||
|
},
|
||||||
|
status: '1',
|
||||||
|
zzStatus: '0' // 状态正则
|
||||||
|
},
|
||||||
|
// 表单校验
|
||||||
|
rules: {
|
||||||
|
ruleName: [
|
||||||
|
{ required: true, message: '规则名称不能为空', trigger: 'blur' }
|
||||||
|
],
|
||||||
|
ruleItemId: [
|
||||||
|
{ required: true, message: '核查类型不能为空', trigger: 'change' }
|
||||||
|
],
|
||||||
|
ruleSourceId: [
|
||||||
|
{ required: true, message: '数据源不能为空', trigger: 'change' }
|
||||||
|
],
|
||||||
|
ruleTableId: [
|
||||||
|
{ required: true, message: '数据表不能为空', trigger: 'change' }
|
||||||
|
],
|
||||||
|
ruleColumnId: [
|
||||||
|
{ required: true, message: '核查字段不能为空', trigger: 'change' }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
// 状态数据字典
|
||||||
|
statusOptions: [],
|
||||||
|
// 规则级别数据字典
|
||||||
|
ruleLevelOptions: [],
|
||||||
|
// 核查类型数据字典
|
||||||
|
ruleItemOptions: [],
|
||||||
|
sourceOptions: [],
|
||||||
|
tableOptions: [],
|
||||||
|
columnOptions: [],
|
||||||
|
dictTypeOptions: [],
|
||||||
|
gbColumnOptions: [
|
||||||
|
{ value: 'gb_code', label: '标准编码' },
|
||||||
|
{ value: 'gb_name', label: '标准名称' }
|
||||||
|
],
|
||||||
|
relatedColumnOptions: []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
console.log('data:' + this.data)
|
||||||
|
this.form.ruleTypeId = this.data.ruleTypeId
|
||||||
|
this.getDicts('sys_common_status').then(response => {
|
||||||
|
if (response.success) {
|
||||||
|
this.statusOptions = response.data
|
||||||
|
}
|
||||||
|
})
|
||||||
|
listDataDictType().then(response => {
|
||||||
|
if (response.success) {
|
||||||
|
this.dictTypeOptions = response.data
|
||||||
|
}
|
||||||
|
})
|
||||||
|
this.getRuleLevelList()
|
||||||
|
this.getRuleItemList()
|
||||||
|
this.getDataSourceList()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
showCard() {
|
||||||
|
this.$emit('showCard', this.showOptions)
|
||||||
|
},
|
||||||
|
/** 步骤条下一步 */
|
||||||
|
handleNextStep() {
|
||||||
|
this.$refs['form'].validate(valid => {
|
||||||
|
if (valid) {
|
||||||
|
this.active++
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/** 步骤条上一步 */
|
||||||
|
handleLastStep() {
|
||||||
|
this.active--
|
||||||
|
},
|
||||||
|
getRuleLevelList() {
|
||||||
|
listRuleLevel().then(response => {
|
||||||
|
if (response.success) {
|
||||||
|
this.ruleLevelOptions = response.data
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
getRuleItemList() {
|
||||||
|
listRuleItem({ ruleTypeId: this.data.ruleTypeId }).then(response => {
|
||||||
|
if (response.success) {
|
||||||
|
this.ruleItemOptions = response.data
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
getDataSourceList() {
|
||||||
|
listDataSource().then(response => {
|
||||||
|
if (response.success) {
|
||||||
|
this.sourceOptions = response.data
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
ruleItemSelectChanged(val) {
|
||||||
|
const item = this.ruleItemOptions.find(function(item) {
|
||||||
|
return item.id === val
|
||||||
|
})
|
||||||
|
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 = ''
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
tableSelectChanged(val) {
|
||||||
|
listDataColumn({ sourceId: this.form.ruleSourceId, tableId: val }).then(response => {
|
||||||
|
if (response.success) {
|
||||||
|
this.columnOptions = response.data
|
||||||
|
const table = this.tableOptions.find(function(item) {
|
||||||
|
return item.id === val
|
||||||
|
})
|
||||||
|
this.form.ruleTable = table.tableName
|
||||||
|
this.form.ruleTableComment = table.tableComment
|
||||||
|
this.form.ruleColumnId = ''
|
||||||
|
this.form.ruleColumn = ''
|
||||||
|
this.form.ruleColumnComment = ''
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
columnSelectChanged(val) {
|
||||||
|
const column = this.columnOptions.find(function(item) {
|
||||||
|
return item.id === val
|
||||||
|
})
|
||||||
|
this.form.ruleColumn = column.columnName
|
||||||
|
this.form.ruleColumnComment = column.columnComment
|
||||||
|
this.$forceUpdate()
|
||||||
|
},
|
||||||
|
dictTypeSelectChanged(val) {
|
||||||
|
const item = this.dictTypeOptions.find(function(item) {
|
||||||
|
return item.id === val
|
||||||
|
})
|
||||||
|
this.form.ruleConfig.consistent.gbTypeCode = item.gbTypeCode
|
||||||
|
this.form.ruleConfig.consistent.gbTypeName = item.gbTypeName
|
||||||
|
},
|
||||||
|
relatedTableSelectChanged(val) {
|
||||||
|
listDataColumn({ sourceId: this.form.ruleSourceId, tableId: val }).then(response => {
|
||||||
|
if (response.success) {
|
||||||
|
this.relatedColumnOptions = response.data
|
||||||
|
const table = this.tableOptions.find(function(item) {
|
||||||
|
return item.id === val
|
||||||
|
})
|
||||||
|
this.form.ruleConfig.relevance.relatedTable = table.tableName
|
||||||
|
this.form.ruleConfig.relevance.relatedTableComment = table.tableComment
|
||||||
|
this.form.ruleConfig.relevance.relatedColumnId = ''
|
||||||
|
this.form.ruleConfig.relevance.relatedColumn = ''
|
||||||
|
this.form.ruleConfig.relevance.relatedColumnComment = ''
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
relatedColumnSelectChanged(val) {
|
||||||
|
const column = this.relatedColumnOptions.find(function(item) {
|
||||||
|
return item.id === val
|
||||||
|
})
|
||||||
|
this.form.ruleConfig.relevance.relatedColumn = column.columnName
|
||||||
|
this.form.ruleConfig.relevance.relatedColumnComment = column.columnComment
|
||||||
|
},
|
||||||
|
/** 提交按钮 */
|
||||||
|
submitForm: function() {
|
||||||
|
this.$refs['form'].validate(valid => {
|
||||||
|
if (valid) {
|
||||||
|
this.loadingOptions.loading = true
|
||||||
|
this.loadingOptions.loadingText = '保存中...'
|
||||||
|
this.loadingOptions.isDisabled = true
|
||||||
|
this.form.ruleTableId = 'all'
|
||||||
|
this.form.ruleTable = '全表'
|
||||||
|
addCheckRule(this.form).then(response => {
|
||||||
|
if (response.success) {
|
||||||
|
this.$message.success('保存成功')
|
||||||
|
setTimeout(() => {
|
||||||
|
// 2秒后跳转列表页
|
||||||
|
this.$emit('showCard', this.showOptions)
|
||||||
|
}, 2000)
|
||||||
|
} else {
|
||||||
|
this.$message.error('保存失败')
|
||||||
|
this.loadingOptions.loading = false
|
||||||
|
this.loadingOptions.loadingText = '保存'
|
||||||
|
this.loadingOptions.isDisabled = false
|
||||||
|
}
|
||||||
|
}).catch(() => {
|
||||||
|
this.loadingOptions.loading = false
|
||||||
|
this.loadingOptions.loadingText = '保存'
|
||||||
|
this.loadingOptions.isDisabled = false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleZzStatusRadioChange(value) {
|
||||||
|
// 在这里执行其他需要的操作
|
||||||
|
if (value === '1') {
|
||||||
|
this.form.ruleConfig.regular.regular = '^[1-9][0-9]{10}$'
|
||||||
|
} else if (value === '2') {
|
||||||
|
this.form.ruleConfig.regular.regular = '^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.el-card ::v-deep .el-card__body {
|
||||||
|
height: calc(100vh - 230px);
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -0,0 +1,285 @@
|
|||||||
|
<template>
|
||||||
|
<el-card class="box-card" shadow="always">
|
||||||
|
<div slot="header" class="clearfix">
|
||||||
|
<span>{{ title }}</span>
|
||||||
|
<el-button-group style="float: right;">
|
||||||
|
<el-button size="mini" icon="el-icon-back" @click="showCard">返回</el-button>
|
||||||
|
</el-button-group>
|
||||||
|
</div>
|
||||||
|
<div class="body-wrapper">
|
||||||
|
<el-form ref="form" :model="form" label-width="80px" disabled>
|
||||||
|
<el-form-item label="规则名称">
|
||||||
|
<el-input v-model="form.ruleName" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="核查类型">
|
||||||
|
<el-select v-model="form.ruleItemId">
|
||||||
|
<el-option
|
||||||
|
v-for="item in ruleItemOptions"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.itemExplain"
|
||||||
|
:value="item.id"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<!-- <el-form-item label="规则级别">-->
|
||||||
|
<!-- <el-select v-model="form.ruleLevelId">-->
|
||||||
|
<!-- <el-option-->
|
||||||
|
<!-- v-for="item in ruleLevelOptions"-->
|
||||||
|
<!-- :key="item.id"-->
|
||||||
|
<!-- :label="item.name"-->
|
||||||
|
<!-- :value="item.id"-->
|
||||||
|
<!-- />-->
|
||||||
|
<!-- </el-select>-->
|
||||||
|
<!-- </el-form-item>-->
|
||||||
|
<el-form-item label="数据源">
|
||||||
|
<el-select v-model="form.ruleSourceId">
|
||||||
|
<el-option
|
||||||
|
v-for="source in sourceOptions"
|
||||||
|
:key="source.id"
|
||||||
|
:label="source.sourceName"
|
||||||
|
:value="source.id"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="数据表">
|
||||||
|
<el-select v-model="form.ruleTableId">
|
||||||
|
<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="核查字段">
|
||||||
|
<el-select v-model="form.ruleColumnId">
|
||||||
|
<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="请选择">
|
||||||
|
<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="请选择">
|
||||||
|
<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="请选择">
|
||||||
|
<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-form-item label="状态">
|
||||||
|
<el-radio-group v-model="form.status">
|
||||||
|
<el-radio
|
||||||
|
v-for="dict in statusOptions"
|
||||||
|
:key="dict.id"
|
||||||
|
:label="dict.itemText"
|
||||||
|
>{{ dict.itemValue }}</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="备注">
|
||||||
|
<el-input v-model="form.remark" type="textarea" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { listRuleLevel, listRuleItem, getCheckRule } 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'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'CheckRelevanceRuleDetail',
|
||||||
|
props: {
|
||||||
|
data: {
|
||||||
|
type: Object,
|
||||||
|
default: function() {
|
||||||
|
return {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
title: '核查规则详情',
|
||||||
|
// 展示切换
|
||||||
|
showOptions: {
|
||||||
|
data: {},
|
||||||
|
showList: true,
|
||||||
|
showAdd: false,
|
||||||
|
showEdit: false,
|
||||||
|
showDetail: false
|
||||||
|
},
|
||||||
|
// 表单参数
|
||||||
|
form: {},
|
||||||
|
// 状态数据字典
|
||||||
|
statusOptions: [],
|
||||||
|
// 规则级别数据字典
|
||||||
|
ruleLevelOptions: [],
|
||||||
|
// 核查类型数据字典
|
||||||
|
ruleItemOptions: [],
|
||||||
|
sourceOptions: [],
|
||||||
|
tableOptions: [],
|
||||||
|
columnOptions: [],
|
||||||
|
dictTypeOptions: [],
|
||||||
|
gbColumnOptions: [
|
||||||
|
{ value: 'gb_code', label: '标准编码' },
|
||||||
|
{ value: 'gb_name', label: '标准名称' }
|
||||||
|
],
|
||||||
|
relatedColumnOptions: []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
console.log('id:' + this.data.id)
|
||||||
|
this.getDicts('sys_common_status').then(response => {
|
||||||
|
if (response.success) {
|
||||||
|
this.statusOptions = response.data
|
||||||
|
}
|
||||||
|
})
|
||||||
|
listDataDictType().then(response => {
|
||||||
|
if (response.success) {
|
||||||
|
this.dictTypeOptions = response.data
|
||||||
|
}
|
||||||
|
})
|
||||||
|
this.getRuleLevelList()
|
||||||
|
this.getDataSourceList()
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getCheckRule(this.data.id)
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
showCard() {
|
||||||
|
this.$emit('showCard', this.showOptions)
|
||||||
|
},
|
||||||
|
/** 获取详情 */
|
||||||
|
async getCheckRule(id) {
|
||||||
|
this.form = await getCheckRule(id).then(response => {
|
||||||
|
if (response.success) {
|
||||||
|
return response.data
|
||||||
|
}
|
||||||
|
})
|
||||||
|
this.ruleItemOptions = await listRuleItem({ ruleTypeId: this.form.ruleTypeId }).then(response => {
|
||||||
|
if (response.success) {
|
||||||
|
return response.data
|
||||||
|
}
|
||||||
|
})
|
||||||
|
this.tableOptions = await listDataTable({ sourceId: this.form.ruleSourceId }).then(response => {
|
||||||
|
if (response.success) {
|
||||||
|
return response.data
|
||||||
|
}
|
||||||
|
}) || []
|
||||||
|
this.columnOptions = await listDataColumn({ sourceId: this.form.ruleSourceId, tableId: this.form.ruleTableId }).then(response => {
|
||||||
|
if (response.success) {
|
||||||
|
return response.data
|
||||||
|
}
|
||||||
|
}) || []
|
||||||
|
if (this.form.ruleConfig.ruleItemCode === 'relevance_key') {
|
||||||
|
listDataColumn({ sourceId: this.form.ruleSourceId, tableId: this.form.ruleConfig.relevance.relatedTableId }).then(response => {
|
||||||
|
if (response.success) {
|
||||||
|
this.relatedColumnOptions = response.data
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
getRuleLevelList() {
|
||||||
|
listRuleLevel().then(response => {
|
||||||
|
if (response.success) {
|
||||||
|
this.ruleLevelOptions = response.data
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
getDataSourceList() {
|
||||||
|
listDataSource().then(response => {
|
||||||
|
if (response.success) {
|
||||||
|
this.sourceOptions = response.data
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.el-card ::v-deep .el-card__body {
|
||||||
|
height: calc(100vh - 230px);
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
436
src/views/quality/checkrelevancerule/CheckRelevanceRuleEdit.vue
Normal file
@@ -0,0 +1,436 @@
|
|||||||
|
<template>
|
||||||
|
<el-card class="box-card" shadow="always">
|
||||||
|
<div slot="header" class="clearfix">
|
||||||
|
<span>{{ title }}</span>
|
||||||
|
<el-button-group style="float: right;">
|
||||||
|
<el-button v-hasPerm="['quality:rule:edit']" type="primary" size="mini" icon="el-icon-finished" :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
||||||
|
<el-button size="mini" icon="el-icon-back" @click="showCard">返回</el-button>
|
||||||
|
</el-button-group>
|
||||||
|
</div>
|
||||||
|
<div class="body-wrapper">
|
||||||
|
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
||||||
|
<el-form-item label="规则名称" prop="ruleName">
|
||||||
|
<el-input v-model="form.ruleName" placeholder="请输入规则名称" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="核查类型" prop="ruleItemId">
|
||||||
|
<el-select v-model="form.ruleItemId" placeholder="请选择核查类型" @change="ruleItemSelectChanged">
|
||||||
|
<el-option
|
||||||
|
v-for="item in ruleItemOptions"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.itemExplain"
|
||||||
|
:value="item.id"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<!-- <el-form-item label="规则级别" prop="ruleLevelId">-->
|
||||||
|
<!-- <el-select v-model="form.ruleLevelId" placeholder="请选择规则级别">-->
|
||||||
|
<!-- <el-option-->
|
||||||
|
<!-- v-for="item in ruleLevelOptions"-->
|
||||||
|
<!-- :key="item.id"-->
|
||||||
|
<!-- :label="item.name"-->
|
||||||
|
<!-- :value="item.id"-->
|
||||||
|
<!-- />-->
|
||||||
|
<!-- </el-select>-->
|
||||||
|
<!-- </el-form-item>-->
|
||||||
|
<el-form-item label="数据源" prop="ruleSourceId">
|
||||||
|
<el-select v-model="form.ruleSourceId" placeholder="请选择数据源" @change="sourceSelectChanged">
|
||||||
|
<el-option
|
||||||
|
v-for="source in sourceOptions"
|
||||||
|
:key="source.id"
|
||||||
|
:label="source.sourceName"
|
||||||
|
:value="source.id"
|
||||||
|
/>
|
||||||
|
</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>
|
||||||
|
<el-form-item label="状态" prop="status">
|
||||||
|
<el-radio-group v-model="form.status">
|
||||||
|
<el-radio
|
||||||
|
v-for="dict in statusOptions"
|
||||||
|
:key="dict.id"
|
||||||
|
:label="dict.itemText"
|
||||||
|
>{{ dict.itemValue }}</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="备注" prop="remark">
|
||||||
|
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { listRuleLevel, listRuleItem, getCheckRule, updateCheckRule } 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'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'CheckRelevanceRuleEdit',
|
||||||
|
props: {
|
||||||
|
data: {
|
||||||
|
type: Object,
|
||||||
|
default: function() {
|
||||||
|
return {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
title: '核查规则编辑',
|
||||||
|
// 展示切换
|
||||||
|
showOptions: {
|
||||||
|
data: {},
|
||||||
|
showList: true,
|
||||||
|
showAdd: false,
|
||||||
|
showEdit: false,
|
||||||
|
showDetail: false
|
||||||
|
},
|
||||||
|
// 保存按钮
|
||||||
|
loadingOptions: {
|
||||||
|
loading: false,
|
||||||
|
loadingText: '保存',
|
||||||
|
isDisabled: false
|
||||||
|
},
|
||||||
|
// 表单参数
|
||||||
|
form: {},
|
||||||
|
// 表单校验
|
||||||
|
rules: {
|
||||||
|
ruleName: [
|
||||||
|
{ required: true, message: '规则名称不能为空', trigger: 'blur' }
|
||||||
|
],
|
||||||
|
ruleItemId: [
|
||||||
|
{ required: true, message: '核查类型不能为空', trigger: 'change' }
|
||||||
|
],
|
||||||
|
ruleSourceId: [
|
||||||
|
{ required: true, message: '数据源不能为空', trigger: 'change' }
|
||||||
|
],
|
||||||
|
ruleTableId: [
|
||||||
|
{ required: true, message: '数据表不能为空', trigger: 'change' }
|
||||||
|
],
|
||||||
|
ruleColumnId: [
|
||||||
|
{ required: true, message: '核查字段不能为空', trigger: 'change' }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
// 状态数据字典
|
||||||
|
statusOptions: [],
|
||||||
|
// 规则级别数据字典
|
||||||
|
ruleLevelOptions: [],
|
||||||
|
// 核查类型数据字典
|
||||||
|
ruleItemOptions: [],
|
||||||
|
sourceOptions: [],
|
||||||
|
tableOptions: [],
|
||||||
|
columnOptions: [],
|
||||||
|
dictTypeOptions: [],
|
||||||
|
gbColumnOptions: [
|
||||||
|
{ value: 'gb_code', label: '标准编码' },
|
||||||
|
{ value: 'gb_name', label: '标准名称' }
|
||||||
|
],
|
||||||
|
relatedColumnOptions: []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
console.log('id:' + this.data.id)
|
||||||
|
this.getDicts('sys_common_status').then(response => {
|
||||||
|
if (response.success) {
|
||||||
|
this.statusOptions = response.data
|
||||||
|
}
|
||||||
|
})
|
||||||
|
listDataDictType().then(response => {
|
||||||
|
if (response.success) {
|
||||||
|
this.dictTypeOptions = response.data
|
||||||
|
}
|
||||||
|
})
|
||||||
|
this.getRuleLevelList()
|
||||||
|
this.getDataSourceList()
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getCheckRule(this.data.id)
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
showCard() {
|
||||||
|
this.$emit('showCard', this.showOptions)
|
||||||
|
},
|
||||||
|
/** 获取详情 */
|
||||||
|
async getCheckRule(id) {
|
||||||
|
this.form = await getCheckRule(id).then(response => {
|
||||||
|
if (response.success) {
|
||||||
|
return response.data
|
||||||
|
}
|
||||||
|
})
|
||||||
|
this.ruleItemOptions = await listRuleItem({ ruleTypeId: this.form.ruleTypeId }).then(response => {
|
||||||
|
if (response.success) {
|
||||||
|
return response.data
|
||||||
|
}
|
||||||
|
})
|
||||||
|
this.tableOptions = await listDataTable({ sourceId: this.form.ruleSourceId }).then(response => {
|
||||||
|
if (response.success) {
|
||||||
|
return response.data
|
||||||
|
}
|
||||||
|
})
|
||||||
|
this.columnOptions = await listDataColumn({ sourceId: this.form.ruleSourceId, tableId: this.form.ruleTableId }).then(response => {
|
||||||
|
if (response.success) {
|
||||||
|
return response.data
|
||||||
|
}
|
||||||
|
})
|
||||||
|
if (this.form.ruleConfig.ruleItemCode === 'relevance_key') {
|
||||||
|
listDataColumn({ sourceId: this.form.ruleSourceId, tableId: this.form.ruleConfig.relevance.relatedTableId }).then(response => {
|
||||||
|
if (response.success) {
|
||||||
|
this.relatedColumnOptions = response.data
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
getRuleLevelList() {
|
||||||
|
listRuleLevel().then(response => {
|
||||||
|
if (response.success) {
|
||||||
|
this.ruleLevelOptions = response.data
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
getDataSourceList() {
|
||||||
|
listDataSource().then(response => {
|
||||||
|
if (response.success) {
|
||||||
|
this.sourceOptions = response.data
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
ruleItemSelectChanged(val) {
|
||||||
|
const item = this.ruleItemOptions.find(function(item) {
|
||||||
|
return item.id === val
|
||||||
|
})
|
||||||
|
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 = ''
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
tableSelectChanged(val) {
|
||||||
|
listDataColumn({ sourceId: this.form.ruleSourceId, tableId: val }).then(response => {
|
||||||
|
if (response.success) {
|
||||||
|
this.columnOptions = response.data
|
||||||
|
const table = this.tableOptions.find(function(item) {
|
||||||
|
return item.id === val
|
||||||
|
})
|
||||||
|
this.form.ruleTable = table.tableName
|
||||||
|
this.form.ruleTableComment = table.tableComment
|
||||||
|
this.form.ruleColumnId = ''
|
||||||
|
this.form.ruleColumn = ''
|
||||||
|
this.form.ruleColumnComment = ''
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
columnSelectChanged(val) {
|
||||||
|
const column = this.columnOptions.find(function(item) {
|
||||||
|
return item.id === val
|
||||||
|
})
|
||||||
|
this.form.ruleColumn = column.columnName
|
||||||
|
this.form.ruleColumnComment = column.columnComment
|
||||||
|
this.$forceUpdate()
|
||||||
|
},
|
||||||
|
dictTypeSelectChanged(val) {
|
||||||
|
const item = this.dictTypeOptions.find(function(item) {
|
||||||
|
return item.id === val
|
||||||
|
})
|
||||||
|
this.form.ruleConfig.consistent.gbTypeCode = item.gbTypeCode
|
||||||
|
this.form.ruleConfig.consistent.gbTypeName = item.gbTypeName
|
||||||
|
},
|
||||||
|
relatedTableSelectChanged(val) {
|
||||||
|
listDataColumn({ sourceId: this.form.ruleSourceId, tableId: val }).then(response => {
|
||||||
|
if (response.success) {
|
||||||
|
this.relatedColumnOptions = response.data
|
||||||
|
const table = this.tableOptions.find(function(item) {
|
||||||
|
return item.id === val
|
||||||
|
})
|
||||||
|
this.form.ruleConfig.relevance.relatedTable = table.tableName
|
||||||
|
this.form.ruleConfig.relevance.relatedTableComment = table.tableComment
|
||||||
|
this.form.ruleConfig.relevance.relatedColumnId = ''
|
||||||
|
this.form.ruleConfig.relevance.relatedColumn = ''
|
||||||
|
this.form.ruleConfig.relevance.relatedColumnComment = ''
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
relatedColumnSelectChanged(val) {
|
||||||
|
const column = this.relatedColumnOptions.find(function(item) {
|
||||||
|
return item.id === val
|
||||||
|
})
|
||||||
|
this.form.ruleConfig.relevance.relatedColumn = column.columnName
|
||||||
|
this.form.ruleConfig.relevance.relatedColumnComment = column.columnComment
|
||||||
|
},
|
||||||
|
/** 提交按钮 */
|
||||||
|
submitForm: function() {
|
||||||
|
this.$refs['form'].validate(valid => {
|
||||||
|
if (valid) {
|
||||||
|
this.loadingOptions.loading = true
|
||||||
|
this.loadingOptions.loadingText = '保存中...'
|
||||||
|
this.loadingOptions.isDisabled = true
|
||||||
|
updateCheckRule(this.form).then(response => {
|
||||||
|
if (response.success) {
|
||||||
|
this.$message.success('保存成功')
|
||||||
|
setTimeout(() => {
|
||||||
|
// 2秒后跳转列表页
|
||||||
|
this.$emit('showCard', this.showOptions)
|
||||||
|
}, 2000)
|
||||||
|
} else {
|
||||||
|
this.$message.error('保存失败')
|
||||||
|
this.loadingOptions.loading = false
|
||||||
|
this.loadingOptions.loadingText = '保存'
|
||||||
|
this.loadingOptions.isDisabled = false
|
||||||
|
}
|
||||||
|
}).catch(() => {
|
||||||
|
this.loadingOptions.loading = false
|
||||||
|
this.loadingOptions.loadingText = '保存'
|
||||||
|
this.loadingOptions.isDisabled = false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleZzStatusRadioChange(value) {
|
||||||
|
// 在这里执行其他需要的操作
|
||||||
|
if (value === '1') {
|
||||||
|
this.form.ruleConfig.regular.regular = '^[1-9][0-9]{10}$'
|
||||||
|
} else if (value === '2') {
|
||||||
|
this.form.ruleConfig.regular.regular = '^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.el-card ::v-deep .el-card__body {
|
||||||
|
height: calc(100vh - 230px);
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
434
src/views/quality/checkrelevancerule/CheckRelevanceRuleList.vue
Normal file
@@ -0,0 +1,434 @@
|
|||||||
|
<template>
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-card class="box-card tree-wrapper" shadow="always">
|
||||||
|
<div class="body-wrapper">
|
||||||
|
<el-tree
|
||||||
|
ref="ruleType"
|
||||||
|
:data="ruleTypeOptions"
|
||||||
|
node-key="id"
|
||||||
|
empty-text="加载中,请稍后"
|
||||||
|
:props="defaultProps"
|
||||||
|
default-expand-all
|
||||||
|
highlight-current
|
||||||
|
:expand-on-click-node="false"
|
||||||
|
@node-click="handleNodeClick"
|
||||||
|
>
|
||||||
|
<template slot-scope="{ node }">
|
||||||
|
<span class="custom-tree-node">
|
||||||
|
<span><i v-if="node.level === 1" class="iconfont icon-zuzhi tree-folder" />{{ node.label }}</span>
|
||||||
|
</span>
|
||||||
|
</template>
|
||||||
|
</el-tree>
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="18">
|
||||||
|
<el-card class="box-card" shadow="always">
|
||||||
|
<el-form ref="queryForm" :model="queryParams" :inline="true">
|
||||||
|
<el-form-item label="项目" prop="projectId">
|
||||||
|
<el-select v-model="queryParams.projectId" clearable size="small" placeholder="项目" class="filter-item" @change="handleQuery">
|
||||||
|
<el-option v-for="item in projectsOptions" :key="item.id" :label="item.projectName" :value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="数据源" prop="ruleName">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.ruleSource"
|
||||||
|
placeholder="请输入数据源"
|
||||||
|
clearable
|
||||||
|
size="small"
|
||||||
|
@keyup.enter.native="handleQuery"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="数据表" prop="ruleName">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.ruleTable"
|
||||||
|
placeholder="请输入数据表"
|
||||||
|
clearable
|
||||||
|
size="small"
|
||||||
|
@keyup.enter.native="handleQuery"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="用例名称" prop="ruleName">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.ruleName"
|
||||||
|
placeholder="请输入用例名称"
|
||||||
|
clearable
|
||||||
|
size="small"
|
||||||
|
@keyup.enter.native="handleQuery"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||||||
|
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
|
||||||
|
<el-row type="flex" justify="space-between">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-button-group>
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
icon="el-icon-plus"
|
||||||
|
size="mini"
|
||||||
|
@click="handleAdd"
|
||||||
|
>新增</el-button>
|
||||||
|
</el-button-group>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<div class="right-toolbar">
|
||||||
|
<el-tooltip content="密度" effect="dark" placement="top">
|
||||||
|
<el-dropdown trigger="click" @command="handleCommand">
|
||||||
|
<el-button circle size="mini">
|
||||||
|
<svg-icon class-name="size-icon" icon-class="colum-height" />
|
||||||
|
</el-button>
|
||||||
|
<el-dropdown-menu slot="dropdown">
|
||||||
|
<el-dropdown-item command="medium">正常</el-dropdown-item>
|
||||||
|
<el-dropdown-item command="small">中等</el-dropdown-item>
|
||||||
|
<el-dropdown-item command="mini">紧凑</el-dropdown-item>
|
||||||
|
</el-dropdown-menu>
|
||||||
|
</el-dropdown>
|
||||||
|
</el-tooltip>
|
||||||
|
<el-tooltip content="刷新" effect="dark" placement="top">
|
||||||
|
<el-button circle size="mini" @click="handleRefresh">
|
||||||
|
<svg-icon class-name="size-icon" icon-class="shuaxin" />
|
||||||
|
</el-button>
|
||||||
|
</el-tooltip>
|
||||||
|
<el-tooltip content="列设置" effect="dark" placement="top">
|
||||||
|
<el-popover placement="bottom" width="100" trigger="click">
|
||||||
|
<el-checkbox-group v-model="checkedTableColumns" @change="handleCheckedColsChange">
|
||||||
|
<el-checkbox
|
||||||
|
v-for="(item, index) in tableColumns"
|
||||||
|
:key="index"
|
||||||
|
:label="item.prop"
|
||||||
|
>{{ item.label }}</el-checkbox>
|
||||||
|
</el-checkbox-group>
|
||||||
|
<span slot="reference">
|
||||||
|
<el-button circle size="mini">
|
||||||
|
<svg-icon class-name="size-icon" icon-class="shezhi" />
|
||||||
|
</el-button>
|
||||||
|
</span>
|
||||||
|
</el-popover>
|
||||||
|
</el-tooltip>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
|
||||||
|
<el-table
|
||||||
|
v-loading="loading"
|
||||||
|
:data="tableDataList"
|
||||||
|
border
|
||||||
|
tooltip-effect="dark"
|
||||||
|
:size="tableSize"
|
||||||
|
:height="tableHeight"
|
||||||
|
style="width: 100%;margin: 15px 0;"
|
||||||
|
>
|
||||||
|
<el-table-column type="selection" width="55" align="center" />
|
||||||
|
<el-table-column label="序号" width="55" align="center">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span>{{ scope.$index +1 }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<template v-for="(item, index) in tableColumns">
|
||||||
|
<el-table-column
|
||||||
|
v-if="item.show"
|
||||||
|
:key="index"
|
||||||
|
:prop="item.prop"
|
||||||
|
:label="item.label"
|
||||||
|
:formatter="item.formatter"
|
||||||
|
:width="item.width"
|
||||||
|
align="center"
|
||||||
|
show-overflow-tooltip
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="200">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-button
|
||||||
|
size="mini"
|
||||||
|
type="text"
|
||||||
|
icon="el-icon-edit-outline"
|
||||||
|
@click="handleEdit(scope.row)"
|
||||||
|
>修改</el-button>
|
||||||
|
<el-button
|
||||||
|
size="mini"
|
||||||
|
type="text"
|
||||||
|
icon="el-icon-view"
|
||||||
|
@click="handleDetail(scope.row)"
|
||||||
|
>详情</el-button>
|
||||||
|
<el-button
|
||||||
|
size="mini"
|
||||||
|
type="text"
|
||||||
|
icon="el-icon-delete"
|
||||||
|
@click="handleDelete(scope.row)"
|
||||||
|
>删除</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
|
||||||
|
<el-pagination
|
||||||
|
:page-sizes="[10, 20, 50, 100]"
|
||||||
|
layout="total, sizes, prev, pager, next, jumper"
|
||||||
|
:current-page.sync="queryParams.pageNum"
|
||||||
|
:page-size.sync="queryParams.pageSize"
|
||||||
|
:total="total"
|
||||||
|
@size-change="handleSizeChange"
|
||||||
|
@current-change="handleCurrentChange"
|
||||||
|
/>
|
||||||
|
</el-card>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { listRuleType, pageCheckRule, delCheckRule } from '@/api/quality/checkrule'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'CheckRelevanceRuleList',
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
tableHeight: document.body.offsetHeight - 310 + 'px',
|
||||||
|
// 展示切换
|
||||||
|
showOptions: {
|
||||||
|
data: {},
|
||||||
|
showList: true,
|
||||||
|
showAdd: false,
|
||||||
|
showEdit: false,
|
||||||
|
showDetail: false
|
||||||
|
},
|
||||||
|
// 遮罩层
|
||||||
|
loading: true,
|
||||||
|
// 表格头
|
||||||
|
tableColumns: [
|
||||||
|
{ prop: 'ruleSource', label: '数据源', show: true },
|
||||||
|
/* { prop: 'ruleTable', label: '数据表', show: true, formatter: this.ruleTableFormatter },
|
||||||
|
{ prop: 'ruleColumn', label: '检测字段', show: true, formatter: this.ruleColumnFormatter },*/
|
||||||
|
{ prop: 'ruleName', label: '用例名称', show: true },
|
||||||
|
{ prop: 'ruleType', label: '用例类型', show: true },
|
||||||
|
// { prop: 'ruleLevel', label: '用例级别', width: 100, show: true },
|
||||||
|
{
|
||||||
|
prop: 'status',
|
||||||
|
label: '状态',
|
||||||
|
show: true,
|
||||||
|
width: 80,
|
||||||
|
formatter: this.statusFormatter
|
||||||
|
},
|
||||||
|
{ prop: 'createTime', label: '创建时间', show: true }
|
||||||
|
],
|
||||||
|
projectsOptions: [
|
||||||
|
{ id: '1111', projectName: '演示项目' }
|
||||||
|
],
|
||||||
|
// 默认选择中表格头
|
||||||
|
checkedTableColumns: [],
|
||||||
|
tableSize: 'medium',
|
||||||
|
// 状态数据字典
|
||||||
|
statusOptions: [],
|
||||||
|
// 表格数据
|
||||||
|
tableDataList: [],
|
||||||
|
// 总数据条数
|
||||||
|
total: 0,
|
||||||
|
// 查询参数
|
||||||
|
queryParams: {
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 20,
|
||||||
|
projectId: '1111',
|
||||||
|
ruleTypeId: '',
|
||||||
|
ruleName: '',
|
||||||
|
ruleType: 'gl'
|
||||||
|
},
|
||||||
|
// 左侧树
|
||||||
|
ruleTypeOptions: [],
|
||||||
|
defaultProps: {
|
||||||
|
children: 'children',
|
||||||
|
label: 'name'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.getDicts('sys_common_status').then(response => {
|
||||||
|
if (response.success) {
|
||||||
|
this.statusOptions = response.data
|
||||||
|
}
|
||||||
|
})
|
||||||
|
this.getTree()
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.initCols()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
getTree() {
|
||||||
|
listRuleType().then(response => {
|
||||||
|
if (response.success) {
|
||||||
|
const { data } = response
|
||||||
|
const tree = {}
|
||||||
|
tree.name = '用例类型'
|
||||||
|
const children = []
|
||||||
|
data.forEach(e => {
|
||||||
|
if (e.code === 'relevance') {
|
||||||
|
children.push(e)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
tree.children = children
|
||||||
|
this.ruleTypeOptions = []
|
||||||
|
this.ruleTypeOptions.push(tree)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/** 节点单击事件 */
|
||||||
|
handleNodeClick(data) {
|
||||||
|
if (data.id) {
|
||||||
|
this.queryParams.ruleTypeId = data.id
|
||||||
|
this.getList()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
/** 查询数据源列表 */
|
||||||
|
getList() {
|
||||||
|
this.loading = true
|
||||||
|
pageCheckRule(this.queryParams).then(response => {
|
||||||
|
this.loading = false
|
||||||
|
if (response.success) {
|
||||||
|
const { data } = response
|
||||||
|
this.tableDataList = data.data
|
||||||
|
this.total = data.total
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
initCols() {
|
||||||
|
this.checkedTableColumns = this.tableColumns.map(col => col.prop)
|
||||||
|
},
|
||||||
|
handleCheckedColsChange(val) {
|
||||||
|
this.tableColumns.forEach(col => {
|
||||||
|
if (!this.checkedTableColumns.includes(col.prop)) {
|
||||||
|
col.show = false
|
||||||
|
} else {
|
||||||
|
col.show = true
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleCommand(command) {
|
||||||
|
this.tableSize = command
|
||||||
|
},
|
||||||
|
/** 搜索按钮操作 */
|
||||||
|
handleQuery() {
|
||||||
|
this.queryParams.pageNum = 1
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
/** 重置按钮操作 */
|
||||||
|
resetQuery() {
|
||||||
|
this.queryParams = {
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 20,
|
||||||
|
ruleTypeId: '',
|
||||||
|
ruleName: '',
|
||||||
|
ruleType: 'gl'
|
||||||
|
}
|
||||||
|
this.handleQuery()
|
||||||
|
},
|
||||||
|
/** 刷新列表 */
|
||||||
|
handleRefresh() {
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
/** 新增按钮操作 */
|
||||||
|
handleAdd() {
|
||||||
|
this.showOptions.data = {}
|
||||||
|
if (!this.queryParams.ruleTypeId) {
|
||||||
|
this.$message.warning('请先选择核查用例类型')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.showOptions.data.ruleTypeId = this.queryParams.ruleTypeId
|
||||||
|
this.showOptions.showList = false
|
||||||
|
this.showOptions.showAdd = true
|
||||||
|
this.showOptions.showEdit = false
|
||||||
|
this.showOptions.showDetail = false
|
||||||
|
this.$emit('showCard', this.showOptions)
|
||||||
|
},
|
||||||
|
/** 修改按钮操作 */
|
||||||
|
handleEdit(row) {
|
||||||
|
this.showOptions.data.id = row.id
|
||||||
|
this.showOptions.showList = false
|
||||||
|
this.showOptions.showAdd = false
|
||||||
|
this.showOptions.showEdit = true
|
||||||
|
this.showOptions.showDetail = false
|
||||||
|
this.$emit('showCard', this.showOptions)
|
||||||
|
},
|
||||||
|
/** 详情按钮操作 */
|
||||||
|
handleDetail(row) {
|
||||||
|
this.showOptions.data.id = row.id
|
||||||
|
this.showOptions.showList = false
|
||||||
|
this.showOptions.showAdd = false
|
||||||
|
this.showOptions.showEdit = false
|
||||||
|
this.showOptions.showDetail = true
|
||||||
|
this.$emit('showCard', this.showOptions)
|
||||||
|
},
|
||||||
|
/** 删除按钮操作 */
|
||||||
|
handleDelete(row) {
|
||||||
|
this.$confirm('选中数据将被永久删除, 是否继续?', '提示', {
|
||||||
|
confirmButtonText: '确定',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
type: 'warning'
|
||||||
|
}).then(() => {
|
||||||
|
delCheckRule(row.id).then(response => {
|
||||||
|
if (response.success) {
|
||||||
|
this.$message.success('删除成功')
|
||||||
|
this.getList()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}).catch(() => {
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleSizeChange(val) {
|
||||||
|
console.log(`每页 ${val} 条`)
|
||||||
|
this.queryParams.pageNum = 1
|
||||||
|
this.queryParams.pageSize = val
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
handleCurrentChange(val) {
|
||||||
|
console.log(`当前页: ${val}`)
|
||||||
|
this.queryParams.pageNum = val
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
statusFormatter(row, column, cellValue, index) {
|
||||||
|
const dictLabel = this.selectDictLabel(this.statusOptions, cellValue)
|
||||||
|
if (cellValue === '1') {
|
||||||
|
return <el-tag type='success'>{dictLabel}</el-tag>
|
||||||
|
} else {
|
||||||
|
return <el-tag type='warning'>{dictLabel}</el-tag>
|
||||||
|
}
|
||||||
|
},
|
||||||
|
ruleTableFormatter(row, column, cellValue, index) {
|
||||||
|
return row.ruleTableComment ? row.ruleTable + '(' + row.ruleTableComment + ')' : row.ruleTable
|
||||||
|
},
|
||||||
|
ruleColumnFormatter(row, column, cellValue, index) {
|
||||||
|
return row.ruleColumnComment ? row.ruleColumn + '(' + row.ruleColumnComment + ')' : row.ruleColumn
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.right-toolbar {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
.el-card ::v-deep .el-card__body {
|
||||||
|
height: calc(100vh - 100px);
|
||||||
|
}
|
||||||
|
.tree-wrapper {
|
||||||
|
overflow-y: auto;
|
||||||
|
.body-wrapper {
|
||||||
|
margin: -10px;
|
||||||
|
::v-deep .custom-tree-node {
|
||||||
|
flex: 1;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
font-size: 14px;
|
||||||
|
.tree-folder {
|
||||||
|
margin-right: 5px;
|
||||||
|
color: #f6cf07;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
48
src/views/quality/checkrelevancerule/index.vue
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
<transition name="el-zoom-in-center">
|
||||||
|
<check-rule-list v-if="options.showList" @showCard="showCard" />
|
||||||
|
</transition>
|
||||||
|
<transition name="el-zoom-in-top">
|
||||||
|
<check-rule-add v-if="options.showAdd" :data="options.data" @showCard="showCard" />
|
||||||
|
</transition>
|
||||||
|
<transition name="el-zoom-in-top">
|
||||||
|
<check-rule-edit v-if="options.showEdit" :data="options.data" @showCard="showCard" />
|
||||||
|
</transition>
|
||||||
|
<transition name="el-zoom-in-bottom">
|
||||||
|
<check-rule-detail v-if="options.showDetail" :data="options.data" @showCard="showCard" />
|
||||||
|
</transition>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import CheckRuleList from './CheckRelevanceRuleList'
|
||||||
|
import CheckRuleAdd from './CheckRelevanceRuleAdd'
|
||||||
|
import CheckRuleEdit from './CheckRelevanceRuleEdit'
|
||||||
|
import CheckRuleDetail from './CheckRelevanceRuleDetail'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'CheckRelevanceRule',
|
||||||
|
components: { CheckRuleList, CheckRuleAdd, CheckRuleEdit, CheckRuleDetail },
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
options: {
|
||||||
|
data: {},
|
||||||
|
showList: true,
|
||||||
|
showAdd: false,
|
||||||
|
showEdit: false,
|
||||||
|
showDetail: false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
showCard(data) {
|
||||||
|
Object.assign(this.options, data)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
|
||||||
|
</style>
|
||||||
@@ -1,6 +1,11 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-card class="box-card" shadow="always">
|
<el-card class="box-card" shadow="always">
|
||||||
<el-form ref="queryForm" :model="queryParams" :inline="true">
|
<el-form ref="queryForm" :model="queryParams" :inline="true">
|
||||||
|
<el-form-item label="项目" prop="projectId">
|
||||||
|
<el-select v-model="queryParams.projectId" clearable size="small" placeholder="项目" class="filter-item" @change="handleQuery">
|
||||||
|
<el-option v-for="item in projectsOptions" :key="item.id" :label="item.projectName" :value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item label="时间">
|
<el-form-item label="时间">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="queryParams.checkDate"
|
v-model="queryParams.checkDate"
|
||||||
@@ -142,7 +147,11 @@
|
|||||||
formatter: this.checkResultFormatter
|
formatter: this.checkResultFormatter
|
||||||
},
|
},
|
||||||
{ prop: 'checkTotalCount', label: '检测数量', show: true },
|
{ prop: 'checkTotalCount', label: '检测数量', show: true },
|
||||||
{ prop: 'checkErrorCount', label: '不合规数量', show: true }
|
{ prop: 'checkErrorCount', label: '不合规数量', show: true },
|
||||||
|
{ prop: 'checkTimeConsuming', label: '耗时(毫秒)', show: true }
|
||||||
|
],
|
||||||
|
projectsOptions: [
|
||||||
|
{ id: '1111', projectName: '演示项目' }
|
||||||
],
|
],
|
||||||
// 默认选择中表格头
|
// 默认选择中表格头
|
||||||
checkedTableColumns: [],
|
checkedTableColumns: [],
|
||||||
@@ -157,6 +166,7 @@
|
|||||||
queryParams: {
|
queryParams: {
|
||||||
pageNum: 1,
|
pageNum: 1,
|
||||||
pageSize: 20,
|
pageSize: 20,
|
||||||
|
projectId: '1111',
|
||||||
checkDate: moment(moment().add(0, 'days').startOf('day').valueOf()).format('YYYY-MM-DD')
|
checkDate: moment(moment().add(0, 'days').startOf('day').valueOf()).format('YYYY-MM-DD')
|
||||||
},
|
},
|
||||||
pickerOption: {
|
pickerOption: {
|
||||||
@@ -190,6 +200,7 @@
|
|||||||
pageCheckReport(this.queryParams).then(response => {
|
pageCheckReport(this.queryParams).then(response => {
|
||||||
this.loading = false
|
this.loading = false
|
||||||
if (response.success) {
|
if (response.success) {
|
||||||
|
console.log('response',response)
|
||||||
const { data } = response
|
const { data } = response
|
||||||
this.tableDataList = data.data
|
this.tableDataList = data.data
|
||||||
this.total = data.total
|
this.total = data.total
|
||||||
@@ -199,7 +210,16 @@
|
|||||||
handleReport(row) {
|
handleReport(row) {
|
||||||
this.showOptions.data = row
|
this.showOptions.data = row
|
||||||
this.showOptions.showList = false
|
this.showOptions.showList = false
|
||||||
|
if (row.checkReportType === 'relevance') {
|
||||||
|
// 关联符合性
|
||||||
|
this.showOptions.showDetail_relevance = true
|
||||||
|
} else if (row.checkReportType === 'content') {
|
||||||
|
// 内容符合性
|
||||||
|
this.showOptions.showDetail_content = true
|
||||||
|
} else {
|
||||||
|
// 结构符合性
|
||||||
this.showOptions.showDetail = true
|
this.showOptions.showDetail = true
|
||||||
|
}
|
||||||
this.$emit('showCard', this.showOptions)
|
this.$emit('showCard', this.showOptions)
|
||||||
},
|
},
|
||||||
handleSizeChange(val) {
|
handleSizeChange(val) {
|
||||||
@@ -216,8 +236,10 @@
|
|||||||
checkReportTypeFormatter(row, column, cellValue, index) {
|
checkReportTypeFormatter(row, column, cellValue, index) {
|
||||||
if (cellValue === 'structure') {
|
if (cellValue === 'structure') {
|
||||||
return '结构符合性检测报告'
|
return '结构符合性检测报告'
|
||||||
} else {
|
} else if (cellValue === 'content') {
|
||||||
return '内容符合性检测报告'
|
return '内容符合性检测报告'
|
||||||
|
} else {
|
||||||
|
return '关联符合性检测报告'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
checkResultFormatter(row, column, cellValue, index) {
|
checkResultFormatter(row, column, cellValue, index) {
|
||||||
|
|||||||
@@ -1,83 +1,57 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="app-container">
|
<div class="app-container">
|
||||||
<el-card class="box-card" shadow="always">
|
<div class="hasTagsView">
|
||||||
|
<div class="app-main">
|
||||||
|
|
||||||
|
<el-card class="box-card">
|
||||||
<div slot="header" class="clearfix">
|
<div slot="header" class="clearfix">
|
||||||
<el-button-group style="float: right;">
|
<div style="float: right;">
|
||||||
<el-button type="primary" size="mini" icon="el-icon-download">导出</el-button>
|
<el-button type="primary" size="mini" icon="el-icon-download" @click="exportWord">导出</el-button>
|
||||||
<el-button size="mini" icon="el-icon-back" @click="showCard">返回</el-button>
|
<el-button size="mini" icon="el-icon-back" @click="showCard">返回</el-button>
|
||||||
</el-button-group>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="body-wrapper">
|
</div><!--header-->
|
||||||
<h4 style="text-align: center;">{{ date }}{{ data.checkReportType === 'structure' ? '结构符合性' : '内容符合性' }}检测结果报告</h4>
|
|
||||||
<el-divider content-position="left"><h3>检测指标统计分析</h3></el-divider>
|
|
||||||
<el-row :gutter="20">
|
|
||||||
<div>
|
<h4 class="ftitle">结构符合性检测结果报告</h4><!--ftitle 一级标题-->
|
||||||
<el-row :gutter="20">
|
|
||||||
<el-col :span="6">
|
<div class="stitle">检测指标统计分析</div><!--stitle 二级标题-->
|
||||||
<div>
|
<div class="test-list">
|
||||||
<el-statistic
|
<div class="list">
|
||||||
group-separator=","
|
<div class="title"><img src="../../../assets/images/j-icon1.svg"><span class="tit">检测表总数</span></div>
|
||||||
:precision="0"
|
<!-- <div class="figure">{{ data.checkTotalCount_new }}</div>-->
|
||||||
:value="data.checkTotalCount"
|
<div class="figure" >{{ checkTotalCount_new }}</div>
|
||||||
title="检测表总数"
|
|
||||||
></el-statistic>
|
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
<div class="list">
|
||||||
<el-col :span="6">
|
<div class="title"><img src="../../../assets/images/j-icon2.svg"><span class="tit">检测总耗时(毫秒)</span></div>
|
||||||
<div>
|
<!-- <div class="figure">{{ data.checkTimeConsuming_new }}</div>-->
|
||||||
<el-statistic title="检测总耗时(毫秒)">
|
<div class="figure">{{ checkTimeConsuming_new }}</div>
|
||||||
<template slot="formatter">
|
|
||||||
{{ data.checkTimeConsuming }}
|
|
||||||
</template>
|
|
||||||
</el-statistic>
|
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
<div class="list">
|
||||||
<el-col :span="6">
|
<div class="title"><img src="../../../assets/images/j-icon3.svg"><span class="tit">不合规总数</span></div>
|
||||||
<div>
|
<!-- <div class="figure">{{ data.checkErrorCount_new }}</div>-->
|
||||||
<el-statistic
|
<div class="figure">{{ checkErrorCount_new }}</div>
|
||||||
group-separator=","
|
|
||||||
:precision="0"
|
|
||||||
decimal-separator="."
|
|
||||||
:value="data.checkErrorCount"
|
|
||||||
title="不合规总数"
|
|
||||||
>
|
|
||||||
<template slot="prefix">
|
|
||||||
<i class="el-icon-s-flag" style="color: red"></i>
|
|
||||||
</template>
|
|
||||||
</el-statistic>
|
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
<div class="list">
|
||||||
<el-col :span="6">
|
<div class="title"><img src="../../../assets/images/j-icon4.svg"><span class="tit">不合规率</span></div>
|
||||||
<div>
|
<div class="figure">{{ (checkErrorCount_new / checkTotalCount_new * 100).toFixed(2) + '%' }}</div>
|
||||||
<el-statistic title="不合规率">
|
<!-- <div class="figure">{{ data.checkTotalCount_new }}</div>-->
|
||||||
<template slot="prefix">
|
|
||||||
<span class="like">
|
|
||||||
<i class="el-icon-star-on" style="color:red"></i>
|
|
||||||
</span>
|
|
||||||
</template>
|
|
||||||
<template slot="formatter">
|
|
||||||
{{ (data.checkErrorCount / data.checkTotalCount * 100) + '%' }}
|
|
||||||
</template>
|
|
||||||
</el-statistic>
|
|
||||||
</div>
|
</div>
|
||||||
</el-col>
|
</div><!--test-list-->
|
||||||
</el-row>
|
|
||||||
</div>
|
<div class="stitle">不合规统计分析</div><!--stitle 二级标题-->
|
||||||
</el-row>
|
<el-row :gutter="24">
|
||||||
<el-divider content-position="left"><h3>不合规统计分析</h3></el-divider>
|
<el-col :span="12">
|
||||||
<el-row :gutter="20">
|
<div class="ttitle">按数据源统计不合规数量</div><!--ttitle 三级标题-->
|
||||||
<el-col :span="10">
|
<el-table :data="reportTableData1" border style="width: 100%" class="btable"><!--加上btable-->
|
||||||
<h5>按数据源统计不合规数量</h5>
|
|
||||||
<el-table
|
|
||||||
:data="reportTableData1"
|
|
||||||
:span-method="objectSpanMethod1"
|
|
||||||
border
|
|
||||||
default-expand-all
|
|
||||||
:max-height="250"
|
|
||||||
style="width: 100%; margin: 15px 0;"
|
|
||||||
>
|
|
||||||
<el-table-column prop="ruleSourceName" label="数据源" align="center" />
|
<el-table-column prop="ruleSourceName" label="数据源" align="center" />
|
||||||
<el-table-column prop="ruleLevelName" label="规则级别" align="center" />
|
<el-table-column prop="ruleLevelName" label="数据源版本" align="center" />
|
||||||
|
<el-table-column prop="tableSum" label="检测表数" align="center" />
|
||||||
|
<el-table-column prop="tableTime" label="耗时(毫秒)" align="center" />
|
||||||
<el-table-column prop="checkErrorCount" label="不合规数" align="center">
|
<el-table-column prop="checkErrorCount" label="不合规数" align="center">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-progress :percentage="scope.row.checkErrorCount" :stroke-width="20" :text-inside="true" :color="colorFormat(scope.row.ruleLevelName)" :format="cellFormat" />
|
<el-progress :percentage="scope.row.checkErrorCount" :stroke-width="20" :text-inside="true" :color="colorFormat(scope.row.ruleLevelName)" :format="cellFormat" />
|
||||||
@@ -85,164 +59,161 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="10" :offset="4">
|
<el-col :span="12">
|
||||||
<h5>按规则类型统计不合规数量</h5>
|
<div class="ttitle">按用例类型统计不合规数量</div><!--ttitle 三级标题-->
|
||||||
<el-table
|
<el-table :data="reportTableData2" border style="width: 100%" class="btable"><!--加上btable-->
|
||||||
:data="reportTableData2"
|
<!-- <el-table-column prop="ta1" label="数据源">数据平台</el-table-column>-->
|
||||||
:span-method="objectSpanMethod2"
|
<el-table-column prop="ruleName" label="用例类型"></el-table-column>
|
||||||
border
|
<el-table-column prop="checkErrorCount" label="不合规数">
|
||||||
tooltip-effect="dark"
|
|
||||||
:max-height="250"
|
|
||||||
style="width: 100%; margin: 15px 0;"
|
|
||||||
>
|
|
||||||
<el-table-column prop="ruleTypeName" label="规则类型" align="center" />
|
|
||||||
<el-table-column prop="ruleName" label="规则名称" align="center" />
|
|
||||||
<el-table-column prop="checkErrorCount" label="不合规数" align="center">
|
|
||||||
<template slot-scope="scope">
|
|
||||||
<el-badge :value="scope.row.ruleLevelName" :type="typeFormat(scope.row.ruleLevelName)">
|
|
||||||
{{ scope.row.checkErrorCount }}
|
|
||||||
</el-badge>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-divider content-position="left"><h3>规则类型统计分析</h3></el-divider>
|
|
||||||
<el-row>
|
<div class="stitle">用例类型统计分析</div><!--stitle 二级标题-->
|
||||||
<el-col :span="24">
|
|
||||||
<h5>唯一性分析</h5>
|
<div class="dbox">
|
||||||
<el-table
|
<div class="ttitle">表字段标准检测用例</div><!--ttitle 三级标题-->
|
||||||
:data="uniqueTableData"
|
<el-table :data="table_key" border style="width: 100%">
|
||||||
border
|
<el-table-column prop="ruleName" label="用例名称" align="center" />
|
||||||
tooltip-effect="dark"
|
|
||||||
:max-height="250"
|
|
||||||
style="width: 100%; margin: 15px 0;"
|
|
||||||
>
|
|
||||||
<el-table-column prop="ruleName" label="规则名称" align="center" />
|
|
||||||
<el-table-column prop="ruleSourceName" label="数据源" align="center" />
|
<el-table-column prop="ruleSourceName" label="数据源" align="center" />
|
||||||
<el-table-column prop="ruleTableName" label="数据表(英文)" align="center" />
|
<el-table-column prop="version" label="数据源版本" align="center" />
|
||||||
<el-table-column prop="ruleTableComment" label="数据表(中文)" align="center" />
|
<el-table-column prop="checkTotalCount" label="检测数" align="center" />
|
||||||
<el-table-column prop="ruleColumnName" label="核查字段(英文)" align="center" />
|
|
||||||
<el-table-column prop="ruleColumnComment" label="核查字段(中文)" align="center" />
|
|
||||||
<el-table-column prop="checkTotalCount" label="核查数" align="center" />
|
|
||||||
<el-table-column prop="checkErrorCount" label="不合规数" align="center" />
|
<el-table-column prop="checkErrorCount" label="不合规数" align="center" />
|
||||||
</el-table>
|
</el-table>
|
||||||
</el-col>
|
<el-collapse @change="handleChange" class="ncoll"><!--加上ncoll-->
|
||||||
</el-row>
|
<el-collapse-item name="1">
|
||||||
<el-row>
|
<template slot="title"><span class="tit">不合规明细</span></template>
|
||||||
<el-col :span="24">
|
<el-table :data="no_table_key" border style="width: 100%">
|
||||||
<h5>完整性分析</h5>
|
<el-table-column prop="caseName" label="用例名称" align="center" />
|
||||||
<el-table
|
<el-table-column prop="source" label="数据源" align="center" />
|
||||||
:data="integrityTableData"
|
<el-table-column prop="tableName" label="数据表" align="center" />
|
||||||
border
|
<el-table-column prop="trueTableName" label="实际表名" align="center" />
|
||||||
tooltip-effect="dark"
|
<el-table-column prop="standardTableName" label="标准表名" align="center" />
|
||||||
:max-height="250"
|
<el-table-column prop="trueColumn" label="实际字段" align="center" />
|
||||||
style="width: 100%; margin: 15px 0;"
|
<el-table-column prop="standardColumn" label="标准字段" align="center" />
|
||||||
>
|
<el-table-column prop="notDetail" label="不合规原因" align="center" />
|
||||||
<el-table-column prop="ruleName" label="规则名称" align="center" />
|
</el-table>
|
||||||
|
</el-collapse-item>
|
||||||
|
</el-collapse>
|
||||||
|
</div><!--dbox-->
|
||||||
|
|
||||||
|
<div class="dbox">
|
||||||
|
<div class="ttitle">长度标准检测用例</div><!--ttitle 三级标题-->
|
||||||
|
<el-table :data="length_key" border style="width: 100%">
|
||||||
|
<el-table-column prop="ruleName" label="用例名称" align="center" />
|
||||||
<el-table-column prop="ruleSourceName" label="数据源" align="center" />
|
<el-table-column prop="ruleSourceName" label="数据源" align="center" />
|
||||||
<el-table-column prop="ruleTableName" label="数据表(英文)" align="center" />
|
<el-table-column prop="version" label="数据源版本" align="center" />
|
||||||
<el-table-column prop="ruleTableComment" label="数据表(中文)" align="center" />
|
<el-table-column prop="checkTotalCount" label="检测数" align="center" />
|
||||||
<el-table-column prop="ruleColumnName" label="核查字段(英文)" align="center" />
|
|
||||||
<el-table-column prop="ruleColumnComment" label="核查字段(中文)" align="center" />
|
|
||||||
<el-table-column prop="checkTotalCount" label="核查数" align="center" />
|
|
||||||
<el-table-column prop="checkErrorCount" label="不合规数" align="center" />
|
<el-table-column prop="checkErrorCount" label="不合规数" align="center" />
|
||||||
</el-table>
|
</el-table>
|
||||||
</el-col>
|
<el-collapse @change="handleChange" class="ncoll"><!--加上ncoll-->
|
||||||
</el-row>
|
<el-collapse-item name="1">
|
||||||
<el-row>
|
<template slot="title"><span class="tit">不合规明细</span></template>
|
||||||
<el-col :span="24">
|
<el-table :data="no_length_key" border style="width: 100%">
|
||||||
<h5>一致性分析</h5>
|
<el-table-column prop="caseName" label="用例名称" align="center" />
|
||||||
<el-table
|
<el-table-column prop="source" label="数据源" align="center" />
|
||||||
:data="consistentTableData"
|
<el-table-column prop="tableName" label="数据表" align="center" />
|
||||||
border
|
<el-table-column prop="standardColumn" label="标准字段" align="center" />
|
||||||
tooltip-effect="dark"
|
<el-table-column prop="standardLength" label="标准长度" align="center" />
|
||||||
:max-height="250"
|
<el-table-column prop="trueLength" label="实际长度" align="center" />
|
||||||
style="width: 100%; margin: 15px 0;"
|
<el-table-column prop="notDetail" label="不合规原因" align="center" />
|
||||||
>
|
</el-table>
|
||||||
<el-table-column prop="ruleName" label="规则名称" align="center" />
|
</el-collapse-item>
|
||||||
|
</el-collapse>
|
||||||
|
</div><!--dbox-->
|
||||||
|
|
||||||
|
<div class="dbox">
|
||||||
|
<div class="ttitle">空值标准检测用例</div><!--ttitle 三级标题-->
|
||||||
|
<el-table :data="null_key" border style="width: 100%">
|
||||||
|
<el-table-column prop="ruleName" label="用例名称" align="center" />
|
||||||
<el-table-column prop="ruleSourceName" label="数据源" align="center" />
|
<el-table-column prop="ruleSourceName" label="数据源" align="center" />
|
||||||
<el-table-column prop="ruleTableName" label="数据表(英文)" align="center" />
|
<el-table-column prop="version" label="数据源版本" align="center" />
|
||||||
<el-table-column prop="ruleTableComment" label="数据表(中文)" align="center" />
|
<el-table-column prop="checkTotalCount" label="检测数" align="center" />
|
||||||
<el-table-column prop="ruleColumnName" label="核查字段(英文)" align="center" />
|
|
||||||
<el-table-column prop="ruleColumnComment" label="核查字段(中文)" align="center" />
|
|
||||||
<el-table-column prop="checkTotalCount" label="核查数" align="center" />
|
|
||||||
<el-table-column prop="checkErrorCount" label="不合规数" align="center" />
|
<el-table-column prop="checkErrorCount" label="不合规数" align="center" />
|
||||||
</el-table>
|
</el-table>
|
||||||
</el-col>
|
<el-collapse @change="handleChange" class="ncoll"><!--加上ncoll-->
|
||||||
</el-row>
|
<el-collapse-item name="1">
|
||||||
<el-row>
|
<template slot="title"><span class="tit">不合规明细</span></template>
|
||||||
<el-col :span="24">
|
<el-table :data="no_null_key" border style="width: 100%">
|
||||||
<h5>关联性分析</h5>
|
<el-table-column prop="caseName" label="用例名称" align="center" />
|
||||||
<el-table
|
<el-table-column prop="source" label="数据源" align="center" />
|
||||||
:data="relevanceTableData"
|
<el-table-column prop="tableName" label="数据表" align="center" />
|
||||||
border
|
<el-table-column prop="standardColumn" label="标准字段" align="center" />
|
||||||
tooltip-effect="dark"
|
<el-table-column prop="standardNull" label="标准字段是否空值" align="center" />
|
||||||
:max-height="250"
|
<el-table-column prop="trueColumn" label="实际字段" align="center" />
|
||||||
style="width: 100%; margin: 15px 0;"
|
<el-table-column prop="trueNull" label="实际字段是否空值" align="center" />
|
||||||
>
|
<el-table-column prop="notDetail" label="不合规原因" align="center" />
|
||||||
<el-table-column prop="ruleName" label="规则名称" align="center" />
|
</el-table>
|
||||||
|
</el-collapse-item>
|
||||||
|
</el-collapse>
|
||||||
|
</div><!--dbox-->
|
||||||
|
|
||||||
|
<div class="dbox">
|
||||||
|
<div class="ttitle">主键标准检测用例</div><!--ttitle 三级标题-->
|
||||||
|
<el-table :data="pk_key" border style="width: 100%">
|
||||||
|
<el-table-column prop="ruleName" label="用例名称" align="center" />
|
||||||
<el-table-column prop="ruleSourceName" label="数据源" align="center" />
|
<el-table-column prop="ruleSourceName" label="数据源" align="center" />
|
||||||
<el-table-column prop="ruleTableName" label="数据表(英文)" align="center" />
|
<el-table-column prop="version" label="数据源版本" align="center" />
|
||||||
<el-table-column prop="ruleTableComment" label="数据表(中文)" align="center" />
|
<el-table-column prop="checkTotalCount" label="检测数" align="center" />
|
||||||
<el-table-column prop="ruleColumnName" label="核查字段(英文)" align="center" />
|
|
||||||
<el-table-column prop="ruleColumnComment" label="核查字段(中文)" align="center" />
|
|
||||||
<el-table-column prop="checkTotalCount" label="核查数" align="center" />
|
|
||||||
<el-table-column prop="checkErrorCount" label="不合规数" align="center" />
|
<el-table-column prop="checkErrorCount" label="不合规数" align="center" />
|
||||||
</el-table>
|
</el-table>
|
||||||
</el-col>
|
<el-collapse @change="handleChange" class="ncoll"><!--加上ncoll-->
|
||||||
</el-row>
|
<el-collapse-item name="1">
|
||||||
<el-row>
|
<template slot="title"><span class="tit">不合规明细</span></template>
|
||||||
<el-col :span="24">
|
<el-table :data="no_pk_key" border style="width: 100%">
|
||||||
<h5>及时性分析</h5>
|
<el-table-column prop="caseName" label="用例名称" align="center" />
|
||||||
<el-table
|
<el-table-column prop="source" label="数据源" align="center" />
|
||||||
:data="timelinessTableData"
|
<el-table-column prop="tableName" label="数据表" align="center" />
|
||||||
border
|
<el-table-column prop="standardColumn" label="标准字段" align="center" />
|
||||||
tooltip-effect="dark"
|
<el-table-column prop="standardPk" label="标准字段是否主键" align="center" />
|
||||||
:max-height="250"
|
<el-table-column prop="trueColumn" label="实际字段" align="center" />
|
||||||
style="width: 100%; margin: 15px 0;"
|
<el-table-column prop="truePk" label="实际字段是否主键" align="center" />
|
||||||
>
|
<el-table-column prop="notDetail" label="不合规原因" align="center" />
|
||||||
<el-table-column prop="ruleName" label="规则名称" align="center" />
|
</el-table>
|
||||||
|
</el-collapse-item>
|
||||||
|
</el-collapse>
|
||||||
|
</div><!--dbox-->
|
||||||
|
|
||||||
|
|
||||||
|
<div class="dbox">
|
||||||
|
<div class="ttitle">外键标准检测用例</div><!--ttitle 三级标题-->
|
||||||
|
<el-table :data="fk_key" border style="width: 100%">
|
||||||
|
<el-table-column prop="ruleName" label="用例名称" align="center" />
|
||||||
<el-table-column prop="ruleSourceName" label="数据源" align="center" />
|
<el-table-column prop="ruleSourceName" label="数据源" align="center" />
|
||||||
<el-table-column prop="ruleTableName" label="数据表(英文)" align="center" />
|
<el-table-column prop="version" label="数据源版本" align="center" />
|
||||||
<el-table-column prop="ruleTableComment" label="数据表(中文)" align="center" />
|
<el-table-column prop="checkTotalCount" label="检测数" align="center" />
|
||||||
<el-table-column prop="ruleColumnName" label="核查字段(英文)" align="center" />
|
|
||||||
<el-table-column prop="ruleColumnComment" label="核查字段(中文)" align="center" />
|
|
||||||
<el-table-column prop="checkTotalCount" label="核查数" align="center" />
|
|
||||||
<el-table-column prop="checkErrorCount" label="不合规数" align="center" />
|
<el-table-column prop="checkErrorCount" label="不合规数" align="center" />
|
||||||
</el-table>
|
</el-table>
|
||||||
</el-col>
|
<el-collapse @change="handleChange" class="ncoll"><!--加上ncoll-->
|
||||||
</el-row>
|
<el-collapse-item name="1">
|
||||||
<el-row>
|
<template slot="title"><span class="tit">不合规明细</span></template>
|
||||||
<el-col :span="24">
|
<el-table :data="no_fk_key" border style="width: 100%">
|
||||||
<h5>准确性分析</h5>
|
<el-table-column prop="caseName" label="用例名称" align="center" />
|
||||||
<el-table
|
<el-table-column prop="source" label="数据源" align="center" />
|
||||||
:data="accuracyTableData"
|
<el-table-column prop="tableName" label="数据表" align="center" />
|
||||||
border
|
<el-table-column prop="standardColumn" label="标准字段" align="center" />
|
||||||
tooltip-effect="dark"
|
<el-table-column prop="standardFk" label="标准字段是否外键" align="center" />
|
||||||
:max-height="250"
|
<el-table-column prop="trueColumn" label="实际字段" align="center" />
|
||||||
style="width: 100%; margin: 15px 0;"
|
<el-table-column prop="trueFk" label="实际字段是否外键" align="center" />
|
||||||
>
|
<el-table-column prop="notDetail" label="不合规原因" align="center" />
|
||||||
<el-table-column prop="ruleName" label="规则名称" align="center" />
|
|
||||||
<el-table-column prop="ruleSourceName" label="数据源" align="center" />
|
|
||||||
<el-table-column prop="ruleTableName" label="数据表(英文)" align="center" />
|
|
||||||
<el-table-column prop="ruleTableComment" label="数据表(中文)" align="center" />
|
|
||||||
<el-table-column prop="ruleColumnName" label="核查字段(英文)" align="center" />
|
|
||||||
<el-table-column prop="ruleColumnComment" label="核查字段(中文)" align="center" />
|
|
||||||
<el-table-column prop="checkTotalCount" label="核查数" align="center" />
|
|
||||||
<el-table-column prop="checkErrorCount" label="不合规数" align="center" />
|
|
||||||
</el-table>
|
</el-table>
|
||||||
</el-col>
|
</el-collapse-item>
|
||||||
</el-row>
|
</el-collapse>
|
||||||
</div>
|
</div><!--dbox-->
|
||||||
</el-card>
|
|
||||||
|
|
||||||
|
</el-card><!--el-card-->
|
||||||
|
|
||||||
|
</div><!--app-main-->
|
||||||
|
</div><!--hasTagsView-->
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { getReportBySource, getReportByType, getReportDetail } from '@/api/quality/checkreport'
|
import { getReportBySource, getReportByType, getReportDetail } from '@/api/quality/checkreport'
|
||||||
import moment from 'moment'
|
import moment from 'moment'
|
||||||
|
import dataJson from './Data.json'
|
||||||
export default {
|
export default {
|
||||||
name: 'CheckReportStructure',
|
name: 'CheckReportStructure',
|
||||||
props: {
|
props: {
|
||||||
@@ -288,6 +259,48 @@
|
|||||||
relevanceTableData: [],
|
relevanceTableData: [],
|
||||||
// 及时性核查数据
|
// 及时性核查数据
|
||||||
timelinessTableData: [],
|
timelinessTableData: [],
|
||||||
|
|
||||||
|
// 表字段标准检测
|
||||||
|
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,
|
like: true,
|
||||||
value1: 4154.564,
|
value1: 4154.564,
|
||||||
totalTables: 1314,
|
totalTables: 1314,
|
||||||
@@ -298,6 +311,47 @@
|
|||||||
this.queryParams.checkDate = moment(this.data.checkDate).format('YYYY-MM-DD')
|
this.queryParams.checkDate = moment(this.data.checkDate).format('YYYY-MM-DD')
|
||||||
this.handleQuery()
|
this.handleQuery()
|
||||||
},
|
},
|
||||||
|
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.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: {
|
methods: {
|
||||||
showCard() {
|
showCard() {
|
||||||
this.$emit('showCard', this.showOptions)
|
this.$emit('showCard', this.showOptions)
|
||||||
@@ -305,27 +359,29 @@
|
|||||||
handleQuery() {
|
handleQuery() {
|
||||||
this.spanArr1 = []
|
this.spanArr1 = []
|
||||||
this.spanArr2 = []
|
this.spanArr2 = []
|
||||||
this.getReportData1()
|
// this.getReportData1()
|
||||||
this.getReportData2()
|
// this.getReportData2()
|
||||||
this.getReportData3()
|
// this.getReportData3()
|
||||||
this.date = moment(this.queryParams.checkDate).format('YYYY年MM月DD日')
|
// this.date = moment(this.queryParams.checkDate).format('YYYY年MM月DD日')
|
||||||
},
|
|
||||||
getReportData1() {
|
|
||||||
getReportBySource({ checkDate: this.queryParams.checkDate }).then(response => {
|
|
||||||
if (response.success) {
|
|
||||||
this.reportTableData1 = response.data
|
|
||||||
this.rowspan1()
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
getReportData2() {
|
|
||||||
getReportByType({ checkDate: this.queryParams.checkDate }).then(response => {
|
|
||||||
if (response.success) {
|
|
||||||
this.reportTableData2 = response.data
|
|
||||||
this.rowspan2()
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
},
|
||||||
|
// getReportData1() {
|
||||||
|
// getReportBySource({ checkDate: this.queryParams.checkDate }).then(response => {
|
||||||
|
// if (response.success) {
|
||||||
|
// this.reportTableData1 = response.data
|
||||||
|
// console.log('reportTableData1==', this.reportTableData1)
|
||||||
|
// this.rowspan1()
|
||||||
|
// }
|
||||||
|
// })
|
||||||
|
// },
|
||||||
|
// getReportData2() {
|
||||||
|
// getReportByType({ checkDate: this.queryParams.checkDate }).then(response => {
|
||||||
|
// if (response.success) {
|
||||||
|
// this.reportTableData2 = response.data
|
||||||
|
// console.log('this.reportTableData2===', this.reportTableData2)
|
||||||
|
// this.rowspan2()
|
||||||
|
// }
|
||||||
|
// })
|
||||||
|
// },
|
||||||
rowspan1() {
|
rowspan1() {
|
||||||
this.reportTableData1.forEach((item, index) => {
|
this.reportTableData1.forEach((item, index) => {
|
||||||
if (index === 0) {
|
if (index === 0) {
|
||||||
@@ -410,6 +466,15 @@
|
|||||||
this.timelinessTableData = response.data.timeliness
|
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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
435
src/views/quality/checkreport/CheckReportStructure_bak.vue
Normal file
@@ -0,0 +1,435 @@
|
|||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
<el-card class="box-card" shadow="always">
|
||||||
|
<div slot="header" class="clearfix">
|
||||||
|
<el-button-group style="float: right;">
|
||||||
|
<el-button type="primary" size="mini" icon="el-icon-download">导出</el-button>
|
||||||
|
<el-button size="mini" icon="el-icon-back" @click="showCard">返回</el-button>
|
||||||
|
</el-button-group>
|
||||||
|
</div>
|
||||||
|
<div class="body-wrapper">
|
||||||
|
<h4 style="text-align: center;">{{ date }}{{ data.checkReportType === 'structure' ? '结构符合性' : '内容符合性' }}检测结果报告</h4>
|
||||||
|
<el-divider content-position="left"><h3>检测指标统计分析</h3></el-divider>
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<div>
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="6">
|
||||||
|
<div>
|
||||||
|
<el-statistic
|
||||||
|
group-separator=","
|
||||||
|
:precision="0"
|
||||||
|
:value="data.checkTotalCount"
|
||||||
|
title="检测表总数"
|
||||||
|
></el-statistic>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<div>
|
||||||
|
<el-statistic title="检测总耗时(毫秒)">
|
||||||
|
<template slot="formatter">
|
||||||
|
{{ data.checkTimeConsuming }}
|
||||||
|
</template>
|
||||||
|
</el-statistic>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<div>
|
||||||
|
<el-statistic
|
||||||
|
group-separator=","
|
||||||
|
:precision="0"
|
||||||
|
decimal-separator="."
|
||||||
|
:value="data.checkErrorCount"
|
||||||
|
title="不合规总数"
|
||||||
|
>
|
||||||
|
<template slot="prefix">
|
||||||
|
<i class="el-icon-s-flag" style="color: red"></i>
|
||||||
|
</template>
|
||||||
|
</el-statistic>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<div>
|
||||||
|
<el-statistic title="不合规率">
|
||||||
|
<template slot="prefix">
|
||||||
|
<span class="like">
|
||||||
|
<i class="el-icon-star-on" style="color:red"></i>
|
||||||
|
</span>
|
||||||
|
</template>
|
||||||
|
<template slot="formatter">
|
||||||
|
{{ (data.checkErrorCount / data.checkTotalCount * 100) + '%' }}
|
||||||
|
</template>
|
||||||
|
</el-statistic>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</div>
|
||||||
|
</el-row>
|
||||||
|
<el-divider content-position="left"><h3>不合规统计分析</h3></el-divider>
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="10">
|
||||||
|
<h5>按数据源统计不合规数量</h5>
|
||||||
|
<el-table
|
||||||
|
:data="reportTableData1"
|
||||||
|
:span-method="objectSpanMethod1"
|
||||||
|
border
|
||||||
|
default-expand-all
|
||||||
|
:max-height="250"
|
||||||
|
style="width: 100%; margin: 15px 0;"
|
||||||
|
>
|
||||||
|
<el-table-column prop="ruleSourceName" label="数据源" align="center" />
|
||||||
|
<el-table-column prop="ruleLevelName" label="规则级别" align="center" />
|
||||||
|
<el-table-column prop="checkErrorCount" label="不合规数" align="center">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-progress :percentage="scope.row.checkErrorCount" :stroke-width="20" :text-inside="true" :color="colorFormat(scope.row.ruleLevelName)" :format="cellFormat" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="10" :offset="4">
|
||||||
|
<h5>按用例类型统计不合规数量</h5>
|
||||||
|
<el-table
|
||||||
|
:data="reportTableData2"
|
||||||
|
:span-method="objectSpanMethod2"
|
||||||
|
border
|
||||||
|
tooltip-effect="dark"
|
||||||
|
:max-height="250"
|
||||||
|
style="width: 100%; margin: 15px 0;"
|
||||||
|
>
|
||||||
|
<el-table-column prop="ruleTypeName" label="用例类型" align="center" />
|
||||||
|
<el-table-column prop="ruleName" label="用例名称" align="center" />
|
||||||
|
<el-table-column prop="checkErrorCount" label="不合规数" align="center">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-badge :value="scope.row.ruleLevelName" :type="typeFormat(scope.row.ruleLevelName)">
|
||||||
|
{{ scope.row.checkErrorCount }}
|
||||||
|
</el-badge>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-divider content-position="left"><h3>用例类型统计分析</h3></el-divider>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="24">
|
||||||
|
<h5>唯一性分析</h5>
|
||||||
|
<el-table
|
||||||
|
:data="uniqueTableData"
|
||||||
|
border
|
||||||
|
tooltip-effect="dark"
|
||||||
|
:max-height="250"
|
||||||
|
style="width: 100%; margin: 15px 0;"
|
||||||
|
>
|
||||||
|
<el-table-column prop="ruleName" label="规则名称" align="center" />
|
||||||
|
<el-table-column prop="ruleSourceName" label="数据源" align="center" />
|
||||||
|
<el-table-column prop="ruleTableName" label="数据表(英文)" align="center" />
|
||||||
|
<el-table-column prop="ruleTableComment" label="数据表(中文)" align="center" />
|
||||||
|
<el-table-column prop="ruleColumnName" label="核查字段(英文)" align="center" />
|
||||||
|
<el-table-column prop="ruleColumnComment" label="核查字段(中文)" align="center" />
|
||||||
|
<el-table-column prop="checkTotalCount" label="核查数" align="center" />
|
||||||
|
<el-table-column prop="checkErrorCount" label="不合规数" align="center" />
|
||||||
|
</el-table>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="24">
|
||||||
|
<h5>完整性分析</h5>
|
||||||
|
<el-table
|
||||||
|
:data="integrityTableData"
|
||||||
|
border
|
||||||
|
tooltip-effect="dark"
|
||||||
|
:max-height="250"
|
||||||
|
style="width: 100%; margin: 15px 0;"
|
||||||
|
>
|
||||||
|
<el-table-column prop="ruleName" label="规则名称" align="center" />
|
||||||
|
<el-table-column prop="ruleSourceName" label="数据源" align="center" />
|
||||||
|
<el-table-column prop="ruleTableName" label="数据表(英文)" align="center" />
|
||||||
|
<el-table-column prop="ruleTableComment" label="数据表(中文)" align="center" />
|
||||||
|
<el-table-column prop="ruleColumnName" label="核查字段(英文)" align="center" />
|
||||||
|
<el-table-column prop="ruleColumnComment" label="核查字段(中文)" align="center" />
|
||||||
|
<el-table-column prop="checkTotalCount" label="核查数" align="center" />
|
||||||
|
<el-table-column prop="checkErrorCount" label="不合规数" align="center" />
|
||||||
|
</el-table>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="24">
|
||||||
|
<h5>一致性分析</h5>
|
||||||
|
<el-table
|
||||||
|
:data="consistentTableData"
|
||||||
|
border
|
||||||
|
tooltip-effect="dark"
|
||||||
|
:max-height="250"
|
||||||
|
style="width: 100%; margin: 15px 0;"
|
||||||
|
>
|
||||||
|
<el-table-column prop="ruleName" label="规则名称" align="center" />
|
||||||
|
<el-table-column prop="ruleSourceName" label="数据源" align="center" />
|
||||||
|
<el-table-column prop="ruleTableName" label="数据表(英文)" align="center" />
|
||||||
|
<el-table-column prop="ruleTableComment" label="数据表(中文)" align="center" />
|
||||||
|
<el-table-column prop="ruleColumnName" label="核查字段(英文)" align="center" />
|
||||||
|
<el-table-column prop="ruleColumnComment" label="核查字段(中文)" align="center" />
|
||||||
|
<el-table-column prop="checkTotalCount" label="核查数" align="center" />
|
||||||
|
<el-table-column prop="checkErrorCount" label="不合规数" align="center" />
|
||||||
|
</el-table>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="24">
|
||||||
|
<h5>关联性分析</h5>
|
||||||
|
<el-table
|
||||||
|
:data="relevanceTableData"
|
||||||
|
border
|
||||||
|
tooltip-effect="dark"
|
||||||
|
:max-height="250"
|
||||||
|
style="width: 100%; margin: 15px 0;"
|
||||||
|
>
|
||||||
|
<el-table-column prop="ruleName" label="规则名称" align="center" />
|
||||||
|
<el-table-column prop="ruleSourceName" label="数据源" align="center" />
|
||||||
|
<el-table-column prop="ruleTableName" label="数据表(英文)" align="center" />
|
||||||
|
<el-table-column prop="ruleTableComment" label="数据表(中文)" align="center" />
|
||||||
|
<el-table-column prop="ruleColumnName" label="核查字段(英文)" align="center" />
|
||||||
|
<el-table-column prop="ruleColumnComment" label="核查字段(中文)" align="center" />
|
||||||
|
<el-table-column prop="checkTotalCount" label="核查数" align="center" />
|
||||||
|
<el-table-column prop="checkErrorCount" label="不合规数" align="center" />
|
||||||
|
</el-table>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="24">
|
||||||
|
<h5>及时性分析</h5>
|
||||||
|
<el-table
|
||||||
|
:data="timelinessTableData"
|
||||||
|
border
|
||||||
|
tooltip-effect="dark"
|
||||||
|
:max-height="250"
|
||||||
|
style="width: 100%; margin: 15px 0;"
|
||||||
|
>
|
||||||
|
<el-table-column prop="ruleName" label="规则名称" align="center" />
|
||||||
|
<el-table-column prop="ruleSourceName" label="数据源" align="center" />
|
||||||
|
<el-table-column prop="ruleTableName" label="数据表(英文)" align="center" />
|
||||||
|
<el-table-column prop="ruleTableComment" label="数据表(中文)" align="center" />
|
||||||
|
<el-table-column prop="ruleColumnName" label="核查字段(英文)" align="center" />
|
||||||
|
<el-table-column prop="ruleColumnComment" label="核查字段(中文)" align="center" />
|
||||||
|
<el-table-column prop="checkTotalCount" label="核查数" align="center" />
|
||||||
|
<el-table-column prop="checkErrorCount" label="不合规数" align="center" />
|
||||||
|
</el-table>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="24">
|
||||||
|
<h5>准确性分析</h5>
|
||||||
|
<el-table
|
||||||
|
:data="accuracyTableData"
|
||||||
|
border
|
||||||
|
tooltip-effect="dark"
|
||||||
|
:max-height="250"
|
||||||
|
style="width: 100%; margin: 15px 0;"
|
||||||
|
>
|
||||||
|
<el-table-column prop="ruleName" label="规则名称" align="center" />
|
||||||
|
<el-table-column prop="ruleSourceName" label="数据源" align="center" />
|
||||||
|
<el-table-column prop="ruleTableName" label="数据表(英文)" align="center" />
|
||||||
|
<el-table-column prop="ruleTableComment" label="数据表(中文)" align="center" />
|
||||||
|
<el-table-column prop="ruleColumnName" label="核查字段(英文)" align="center" />
|
||||||
|
<el-table-column prop="ruleColumnComment" label="核查字段(中文)" align="center" />
|
||||||
|
<el-table-column prop="checkTotalCount" label="核查数" align="center" />
|
||||||
|
<el-table-column prop="checkErrorCount" label="不合规数" align="center" />
|
||||||
|
</el-table>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { getReportBySource, getReportByType, getReportDetail } from '@/api/quality/checkreport'
|
||||||
|
import moment from 'moment'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'CheckReportStructure',
|
||||||
|
props: {
|
||||||
|
data: {
|
||||||
|
type: Object,
|
||||||
|
default: function() {
|
||||||
|
return {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
queryParams: {
|
||||||
|
checkDate: ''
|
||||||
|
},
|
||||||
|
pickerOption: {
|
||||||
|
disabledDate(date) {
|
||||||
|
return date.getTime() > Date.now()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
date: '',
|
||||||
|
// 展示切换
|
||||||
|
showOptions: {
|
||||||
|
data: {},
|
||||||
|
showList: true,
|
||||||
|
showDetail: false
|
||||||
|
},
|
||||||
|
spanArr1: [],
|
||||||
|
position1: 0,
|
||||||
|
reportTableData1: [],
|
||||||
|
spanArr2: [],
|
||||||
|
position2: 0,
|
||||||
|
reportTableData2: [],
|
||||||
|
// 唯一性核查数据
|
||||||
|
uniqueTableData: [],
|
||||||
|
// 完整性核查数据
|
||||||
|
integrityTableData: [],
|
||||||
|
// 准确性核查数据
|
||||||
|
accuracyTableData: [],
|
||||||
|
// 一致性核查数据
|
||||||
|
consistentTableData: [],
|
||||||
|
// 关联性核查数据
|
||||||
|
relevanceTableData: [],
|
||||||
|
// 及时性核查数据
|
||||||
|
timelinessTableData: [],
|
||||||
|
like: true,
|
||||||
|
value1: 4154.564,
|
||||||
|
totalTables: 1314,
|
||||||
|
title: '增长人数'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.queryParams.checkDate = moment(this.data.checkDate).format('YYYY-MM-DD')
|
||||||
|
this.handleQuery()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
showCard() {
|
||||||
|
this.$emit('showCard', this.showOptions)
|
||||||
|
},
|
||||||
|
handleQuery() {
|
||||||
|
this.spanArr1 = []
|
||||||
|
this.spanArr2 = []
|
||||||
|
this.getReportData1()
|
||||||
|
this.getReportData2()
|
||||||
|
this.getReportData3()
|
||||||
|
this.date = moment(this.queryParams.checkDate).format('YYYY年MM月DD日')
|
||||||
|
},
|
||||||
|
getReportData1() {
|
||||||
|
getReportBySource({ checkDate: this.queryParams.checkDate }).then(response => {
|
||||||
|
if (response.success) {
|
||||||
|
this.reportTableData1 = response.data
|
||||||
|
this.rowspan1()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
getReportData2() {
|
||||||
|
getReportByType({ checkDate: this.queryParams.checkDate }).then(response => {
|
||||||
|
if (response.success) {
|
||||||
|
this.reportTableData2 = response.data
|
||||||
|
this.rowspan2()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
rowspan1() {
|
||||||
|
this.reportTableData1.forEach((item, index) => {
|
||||||
|
if (index === 0) {
|
||||||
|
this.spanArr1.push(1)
|
||||||
|
this.position1 = 0
|
||||||
|
} else {
|
||||||
|
if (this.reportTableData1[index].ruleSourceId === this.reportTableData1[index - 1].ruleSourceId) {
|
||||||
|
this.spanArr1[this.position1] += 1
|
||||||
|
this.spanArr1.push(0)
|
||||||
|
} else {
|
||||||
|
this.spanArr1.push(1)
|
||||||
|
this.position1 = index
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
objectSpanMethod1({ row, column, rowIndex, columnIndex }) {
|
||||||
|
if (columnIndex === 0) {
|
||||||
|
const _row = this.spanArr1[rowIndex]
|
||||||
|
const _col = _row > 0 ? 1 : 0
|
||||||
|
return {
|
||||||
|
rowspan: _row,
|
||||||
|
colspan: _col
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
rowspan2() {
|
||||||
|
this.reportTableData2.forEach((item, index) => {
|
||||||
|
if (index === 0) {
|
||||||
|
this.spanArr2.push(1)
|
||||||
|
this.position2 = 0
|
||||||
|
} else {
|
||||||
|
if (this.reportTableData2[index].ruleTypeId === this.reportTableData2[index - 1].ruleTypeId) {
|
||||||
|
this.spanArr2[this.position2] += 1
|
||||||
|
this.spanArr2.push(0)
|
||||||
|
} else {
|
||||||
|
this.spanArr2.push(1)
|
||||||
|
this.position2 = index
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
objectSpanMethod2({ row, column, rowIndex, columnIndex }) {
|
||||||
|
if (columnIndex === 0) {
|
||||||
|
const _row = this.spanArr2[rowIndex]
|
||||||
|
const _col = _row > 0 ? 1 : 0
|
||||||
|
return {
|
||||||
|
rowspan: _row,
|
||||||
|
colspan: _col
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
colorFormat(level) {
|
||||||
|
if (level === '低') {
|
||||||
|
return '#409eff'
|
||||||
|
} else if (level === '中') {
|
||||||
|
return '#e6a23c'
|
||||||
|
} else {
|
||||||
|
return '#f56c6c'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
cellFormat(percentage) {
|
||||||
|
return `${percentage}`
|
||||||
|
},
|
||||||
|
typeFormat(level) {
|
||||||
|
if (level === '低') {
|
||||||
|
return 'primary'
|
||||||
|
} else if (level === '中') {
|
||||||
|
return 'warning'
|
||||||
|
} else {
|
||||||
|
return 'danger'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
getReportData3() {
|
||||||
|
getReportDetail({ checkDate: this.queryParams.checkDate }).then(response => {
|
||||||
|
if (response.success) {
|
||||||
|
this.uniqueTableData = response.data.unique
|
||||||
|
this.integrityTableData = response.data.integrity
|
||||||
|
this.accuracyTableData = response.data.accuracy
|
||||||
|
this.consistentTableData = response.data.consistent
|
||||||
|
this.relevanceTableData = response.data.relevance
|
||||||
|
this.timelinessTableData = response.data.timeliness
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.el-card ::v-deep .el-card__body {
|
||||||
|
height: calc(100vh - 230px);
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
.form-inline {
|
||||||
|
::v-deep .el-form-item {
|
||||||
|
margin-bottom: 0px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
::v-deep .el-badge__content {
|
||||||
|
margin-top: 10px;
|
||||||
|
right: 0px;
|
||||||
|
}
|
||||||
|
::v-deep .el-table__header th {
|
||||||
|
background-color: #f5f5f5 !important;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
750
src/views/quality/checkreport/CheckReportStructure_bak1.vue
Normal file
@@ -0,0 +1,750 @@
|
|||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
<el-card class="box-card" shadow="always">
|
||||||
|
<div slot="header" class="clearfix">
|
||||||
|
<div style="float: right;">
|
||||||
|
<el-button type="primary" size="mini" icon="el-icon-download" @click="exportWord">导出</el-button>
|
||||||
|
<el-button size="mini" icon="el-icon-back" @click="showCard">返回</el-button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="body-wrapper">
|
||||||
|
<h4 style="text-align: center;">{{ date }}{{ data.checkReportType === 'structure' ? '结构符合性' : '内容符合性' }}检测结果报告</h4>
|
||||||
|
<el-divider content-position="left"><h3>检测指标统计分析</h3></el-divider>
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<div>
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="6">
|
||||||
|
<div>
|
||||||
|
<el-statistic
|
||||||
|
group-separator=","
|
||||||
|
:precision="0"
|
||||||
|
:value="data.checkTotalCount"
|
||||||
|
title="检测表总数"
|
||||||
|
></el-statistic>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<div>
|
||||||
|
<el-statistic title="检测总耗时(毫秒)">
|
||||||
|
<template slot="formatter">
|
||||||
|
{{ data.checkTimeConsuming }}
|
||||||
|
</template>
|
||||||
|
</el-statistic>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<div>
|
||||||
|
<el-statistic
|
||||||
|
group-separator=","
|
||||||
|
:precision="0"
|
||||||
|
decimal-separator="."
|
||||||
|
:value="data.checkErrorCount"
|
||||||
|
title="不合规总数"
|
||||||
|
>
|
||||||
|
<template slot="prefix">
|
||||||
|
<i class="el-icon-s-flag" style="color: red"></i>
|
||||||
|
</template>
|
||||||
|
</el-statistic>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<div>
|
||||||
|
<el-statistic title="不合规率">
|
||||||
|
<template slot="prefix">
|
||||||
|
<span class="like">
|
||||||
|
<i class="el-icon-star-on" style="color:red"></i>
|
||||||
|
</span>
|
||||||
|
</template>
|
||||||
|
<template slot="formatter">
|
||||||
|
{{ (data.checkErrorCount / data.checkTotalCount * 100) + '%' }}
|
||||||
|
</template>
|
||||||
|
</el-statistic>
|
||||||
|
</div>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</div>
|
||||||
|
</el-row>
|
||||||
|
<el-divider content-position="left"><h3>不合规统计分析</h3></el-divider>
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="10">
|
||||||
|
<h5>按数据源统计不合规数量</h5>
|
||||||
|
<el-table
|
||||||
|
:data="reportTableData1"
|
||||||
|
:span-method="objectSpanMethod1"
|
||||||
|
border
|
||||||
|
default-expand-all
|
||||||
|
:max-height="250"
|
||||||
|
style="width: 100%; margin: 15px 0;"
|
||||||
|
>
|
||||||
|
<el-table-column prop="ruleSourceName" label="数据源" align="center" />
|
||||||
|
<el-table-column prop="ruleLevelName" label="规则级别" align="center" />
|
||||||
|
<el-table-column prop="checkErrorCount" label="不合规数" align="center">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-progress :percentage="scope.row.checkErrorCount" :stroke-width="20" :text-inside="true" :color="colorFormat(scope.row.ruleLevelName)" :format="cellFormat" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="10" :offset="4">
|
||||||
|
<h5>按用例类型统计不合规数量</h5>
|
||||||
|
<el-table
|
||||||
|
:data="reportTableData2"
|
||||||
|
:span-method="objectSpanMethod2"
|
||||||
|
border
|
||||||
|
tooltip-effect="dark"
|
||||||
|
:max-height="250"
|
||||||
|
style="width: 100%; margin: 15px 0;"
|
||||||
|
>
|
||||||
|
<el-table-column prop="ruleTypeName" label="用例类型" align="center" />
|
||||||
|
<el-table-column prop="ruleName" label="用例名称" align="center" />
|
||||||
|
<el-table-column prop="checkErrorCount" label="不合规数" align="center">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-badge :value="scope.row.ruleLevelName" :type="typeFormat(scope.row.ruleLevelName)">
|
||||||
|
{{ scope.row.checkErrorCount }}
|
||||||
|
</el-badge>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-divider content-position="left"><h3>用例类型统计分析</h3></el-divider>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="24">
|
||||||
|
<h5>表字段标准检测</h5>
|
||||||
|
<el-table
|
||||||
|
:data="table_key"
|
||||||
|
border
|
||||||
|
tooltip-effect="dark"
|
||||||
|
:max-height="250"
|
||||||
|
style="width: 100%; margin: 15px 0;"
|
||||||
|
>
|
||||||
|
<el-table-column prop="ruleName" label="用例名称" align="center" />
|
||||||
|
<el-table-column prop="ruleSourceName" label="数据源" align="center" />
|
||||||
|
<el-table-column prop="version" label="版本" align="center" />
|
||||||
|
<el-table-column prop="checkTotalCount" label="检测数" align="center" />
|
||||||
|
<el-table-column prop="checkErrorCount" label="不合规数" align="center" />
|
||||||
|
</el-table>
|
||||||
|
<el-collapse accordion>
|
||||||
|
<el-collapse-item>
|
||||||
|
<template slot="title">
|
||||||
|
<i class="el-icon-document"></i> 不合规明细
|
||||||
|
</template>
|
||||||
|
<el-table
|
||||||
|
:data="no_table_key"
|
||||||
|
border
|
||||||
|
tooltip-effect="dark"
|
||||||
|
:max-height="250"
|
||||||
|
style="width: 100%; margin: 15px 0;"
|
||||||
|
>
|
||||||
|
<el-table-column prop="caseName" label="用例名称" align="center" />
|
||||||
|
<el-table-column prop="source" label="数据源" align="center" />
|
||||||
|
<el-table-column prop="tableName" label="数据表" align="center" />
|
||||||
|
<el-table-column prop="trueTableName" label="实际表名" align="center" />
|
||||||
|
<el-table-column prop="standardTableName" label="标准表名" align="center" />
|
||||||
|
<el-table-column prop="trueColumn" label="实际字段" align="center" />
|
||||||
|
<el-table-column prop="standardColumn" label="标准字段" align="center" />
|
||||||
|
<el-table-column prop="notDetail" label="不合规原因" align="center" />
|
||||||
|
</el-table>
|
||||||
|
</el-collapse-item>
|
||||||
|
</el-collapse>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="24">
|
||||||
|
<h5>长度标准检测</h5>
|
||||||
|
<el-table
|
||||||
|
:data="length_key"
|
||||||
|
border
|
||||||
|
tooltip-effect="dark"
|
||||||
|
:max-height="250"
|
||||||
|
style="width: 100%; margin: 15px 0;"
|
||||||
|
>
|
||||||
|
<el-table-column prop="ruleName" label="用例名称" align="center" />
|
||||||
|
<el-table-column prop="ruleSourceName" label="数据源" align="center" />
|
||||||
|
<el-table-column prop="version" label="版本" align="center" />
|
||||||
|
<el-table-column prop="checkTotalCount" label="检测数" align="center" />
|
||||||
|
<el-table-column prop="checkErrorCount" label="不合规数" align="center" />
|
||||||
|
</el-table>
|
||||||
|
<el-collapse accordion>
|
||||||
|
<el-collapse-item>
|
||||||
|
<template slot="title">
|
||||||
|
<i class="el-icon-document"></i> 不合规明细
|
||||||
|
</template>
|
||||||
|
<el-table
|
||||||
|
:data="no_length_key"
|
||||||
|
border
|
||||||
|
tooltip-effect="dark"
|
||||||
|
:max-height="250"
|
||||||
|
style="width: 100%; margin: 15px 0;"
|
||||||
|
>
|
||||||
|
<el-table-column prop="caseName" label="用例名称" align="center" />
|
||||||
|
<el-table-column prop="source" label="数据源" align="center" />
|
||||||
|
<el-table-column prop="tableName" label="数据表" align="center" />
|
||||||
|
<el-table-column prop="standardColumn" label="标准字段" align="center" />
|
||||||
|
<el-table-column prop="standardLength" label="标准长度" align="center" />
|
||||||
|
<el-table-column prop="trueLength" label="实际长度" align="center" />
|
||||||
|
<el-table-column prop="notDetail" label="不合规原因" align="center" />
|
||||||
|
</el-table>
|
||||||
|
</el-collapse-item>
|
||||||
|
</el-collapse>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="24">
|
||||||
|
<h5>空值标准检测</h5>
|
||||||
|
<el-table
|
||||||
|
:data="null_key"
|
||||||
|
border
|
||||||
|
tooltip-effect="dark"
|
||||||
|
:max-height="250"
|
||||||
|
style="width: 100%; margin: 15px 0;"
|
||||||
|
>
|
||||||
|
<el-table-column prop="ruleName" label="用例名称" align="center" />
|
||||||
|
<el-table-column prop="ruleSourceName" label="数据源" align="center" />
|
||||||
|
<el-table-column prop="version" label="版本" align="center" />
|
||||||
|
<el-table-column prop="checkTotalCount" label="检测数" align="center" />
|
||||||
|
<el-table-column prop="checkErrorCount" label="不合规数" align="center" />
|
||||||
|
</el-table>
|
||||||
|
<el-collapse accordion>
|
||||||
|
<el-collapse-item>
|
||||||
|
<template slot="title">
|
||||||
|
<i class="el-icon-document"></i> 不合规明细
|
||||||
|
</template>
|
||||||
|
<el-table
|
||||||
|
:data="no_null_key"
|
||||||
|
border
|
||||||
|
tooltip-effect="dark"
|
||||||
|
:max-height="250"
|
||||||
|
style="width: 100%; margin: 15px 0;"
|
||||||
|
>
|
||||||
|
<el-table-column prop="caseName" label="用例名称" align="center" />
|
||||||
|
<el-table-column prop="source" label="数据源" align="center" />
|
||||||
|
<el-table-column prop="tableName" label="数据表" align="center" />
|
||||||
|
<el-table-column prop="standardColumn" label="标准字段" align="center" />
|
||||||
|
<el-table-column prop="standardNull" label="标准字段是否空值" align="center" />
|
||||||
|
<el-table-column prop="trueColumn" label="实际字段" align="center" />
|
||||||
|
<el-table-column prop="trueNull" label="实际字段是否空值" align="center" />
|
||||||
|
<el-table-column prop="notDetail" label="不合规原因" align="center" />
|
||||||
|
</el-table>
|
||||||
|
</el-collapse-item>
|
||||||
|
</el-collapse>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="24">
|
||||||
|
<h5>主键标准检测</h5>
|
||||||
|
<el-table
|
||||||
|
:data="pk_key"
|
||||||
|
border
|
||||||
|
tooltip-effect="dark"
|
||||||
|
:max-height="250"
|
||||||
|
style="width: 100%; margin: 15px 0;"
|
||||||
|
>
|
||||||
|
<el-table-column prop="ruleName" label="用例名称" align="center" />
|
||||||
|
<el-table-column prop="ruleSourceName" label="数据源" align="center" />
|
||||||
|
<el-table-column prop="version" label="版本" align="center" />
|
||||||
|
<el-table-column prop="checkTotalCount" label="检测数" align="center" />
|
||||||
|
<el-table-column prop="checkErrorCount" label="不合规数" align="center" />
|
||||||
|
</el-table>
|
||||||
|
<el-collapse accordion>
|
||||||
|
<el-collapse-item>
|
||||||
|
<template slot="title">
|
||||||
|
<i class="el-icon-document"></i> 不合规明细
|
||||||
|
</template>
|
||||||
|
<el-table
|
||||||
|
:data="no_pk_key"
|
||||||
|
border
|
||||||
|
tooltip-effect="dark"
|
||||||
|
:max-height="250"
|
||||||
|
style="width: 100%; margin: 15px 0;"
|
||||||
|
>
|
||||||
|
<el-table-column prop="caseName" label="用例名称" align="center" />
|
||||||
|
<el-table-column prop="source" label="数据源" align="center" />
|
||||||
|
<el-table-column prop="tableName" label="数据表" align="center" />
|
||||||
|
<el-table-column prop="standardColumn" label="标准字段" align="center" />
|
||||||
|
<el-table-column prop="standardPk" label="标准字段是否主键" align="center" />
|
||||||
|
<el-table-column prop="trueColumn" label="实际字段" align="center" />
|
||||||
|
<el-table-column prop="truePk" label="实际字段是否主键" align="center" />
|
||||||
|
<el-table-column prop="notDetail" label="不合规原因" align="center" />
|
||||||
|
</el-table>
|
||||||
|
</el-collapse-item>
|
||||||
|
</el-collapse>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="24">
|
||||||
|
<h5>外键标准检测</h5>
|
||||||
|
<el-table
|
||||||
|
:data="fk_key"
|
||||||
|
border
|
||||||
|
tooltip-effect="dark"
|
||||||
|
:max-height="250"
|
||||||
|
style="width: 100%; margin: 15px 0;"
|
||||||
|
>
|
||||||
|
<el-table-column prop="ruleName" label="用例名称" align="center" />
|
||||||
|
<el-table-column prop="ruleSourceName" label="数据源" align="center" />
|
||||||
|
<el-table-column prop="version" label="版本" align="center" />
|
||||||
|
<el-table-column prop="checkTotalCount" label="检测数" align="center" />
|
||||||
|
<el-table-column prop="checkErrorCount" label="不合规数" align="center" />
|
||||||
|
</el-table>
|
||||||
|
<el-collapse accordion>
|
||||||
|
<el-collapse-item>
|
||||||
|
<template slot="title">
|
||||||
|
<i class="el-icon-document"></i> 不合规明细
|
||||||
|
</template>
|
||||||
|
<el-table
|
||||||
|
:data="no_fk_key"
|
||||||
|
border
|
||||||
|
tooltip-effect="dark"
|
||||||
|
:max-height="250"
|
||||||
|
style="width: 100%; margin: 15px 0;"
|
||||||
|
>
|
||||||
|
<el-table-column prop="caseName" label="用例名称" align="center" />
|
||||||
|
<el-table-column prop="source" label="数据源" align="center" />
|
||||||
|
<el-table-column prop="tableName" label="数据表" align="center" />
|
||||||
|
<el-table-column prop="standardColumn" label="标准字段" align="center" />
|
||||||
|
<el-table-column prop="standardFk" label="标准字段是否外键" align="center" />
|
||||||
|
<el-table-column prop="trueColumn" label="实际字段" align="center" />
|
||||||
|
<el-table-column prop="trueFk" label="实际字段是否外键" align="center" />
|
||||||
|
<el-table-column prop="notDetail" label="不合规原因" align="center" />
|
||||||
|
</el-table>
|
||||||
|
</el-collapse-item>
|
||||||
|
</el-collapse>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="24">
|
||||||
|
<h5>完整性标准检测</h5>
|
||||||
|
<el-table
|
||||||
|
:data="integrity"
|
||||||
|
border
|
||||||
|
tooltip-effect="dark"
|
||||||
|
:max-height="250"
|
||||||
|
style="width: 100%; margin: 15px 0;"
|
||||||
|
>
|
||||||
|
<el-table-column prop="ruleName" label="用例名称" align="center" />
|
||||||
|
<el-table-column prop="ruleSourceName" label="数据源" align="center" />
|
||||||
|
<el-table-column prop="version" label="版本" align="center" />
|
||||||
|
<el-table-column prop="checkTotalCount" label="检测数" align="center" />
|
||||||
|
<el-table-column prop="checkErrorCount" label="不合规数" align="center" />
|
||||||
|
</el-table>
|
||||||
|
<el-collapse accordion>
|
||||||
|
<el-collapse-item>
|
||||||
|
<template slot="title">
|
||||||
|
<i class="el-icon-document"></i> 不合规明细
|
||||||
|
</template>
|
||||||
|
<el-table
|
||||||
|
:data="no_integrity"
|
||||||
|
border
|
||||||
|
tooltip-effect="dark"
|
||||||
|
:max-height="250"
|
||||||
|
style="width: 100%; margin: 15px 0;"
|
||||||
|
>
|
||||||
|
<el-table-column prop="caseName" label="用例名称" align="center" />
|
||||||
|
<el-table-column prop="source" label="数据源" align="center" />
|
||||||
|
<el-table-column prop="tableName" label="数据表" align="center" />
|
||||||
|
<el-table-column prop="trueColumn" label="字段名称" align="center" />
|
||||||
|
<el-table-column prop="notDetail" label="不合规原因" align="center" />
|
||||||
|
</el-table>
|
||||||
|
</el-collapse-item>
|
||||||
|
</el-collapse>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="24">
|
||||||
|
<h5>准确性标准检测</h5>
|
||||||
|
<el-table
|
||||||
|
:data="accuracy"
|
||||||
|
border
|
||||||
|
tooltip-effect="dark"
|
||||||
|
:max-height="250"
|
||||||
|
style="width: 100%; margin: 15px 0;"
|
||||||
|
>
|
||||||
|
<el-table-column prop="ruleName" label="用例名称" align="center" />
|
||||||
|
<el-table-column prop="ruleSourceName" label="数据源" align="center" />
|
||||||
|
<el-table-column prop="version" label="版本" align="center" />
|
||||||
|
<el-table-column prop="checkTotalCount" label="检测数" align="center" />
|
||||||
|
<el-table-column prop="checkErrorCount" label="不合规数" align="center" />
|
||||||
|
</el-table>
|
||||||
|
<el-collapse accordion>
|
||||||
|
<el-collapse-item>
|
||||||
|
<template slot="title">
|
||||||
|
<i class="el-icon-document"></i> 不合规明细
|
||||||
|
</template>
|
||||||
|
<el-table
|
||||||
|
:data="no_accuracy"
|
||||||
|
border
|
||||||
|
tooltip-effect="dark"
|
||||||
|
:max-height="250"
|
||||||
|
style="width: 100%; margin: 15px 0;"
|
||||||
|
>
|
||||||
|
<el-table-column prop="caseName" label="用例名称" align="center" />
|
||||||
|
<el-table-column prop="source" label="数据源" align="center" />
|
||||||
|
<el-table-column prop="tableName" label="数据表" align="center" />
|
||||||
|
<el-table-column prop="trueColumn" label="字段名称" align="center" />
|
||||||
|
<el-table-column prop="notDetail" label="不合规原因" align="center" />
|
||||||
|
</el-table>
|
||||||
|
</el-collapse-item>
|
||||||
|
</el-collapse>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="24">
|
||||||
|
<h5>一致性标准检测</h5>
|
||||||
|
<el-table
|
||||||
|
:data="consistent"
|
||||||
|
border
|
||||||
|
tooltip-effect="dark"
|
||||||
|
:max-height="250"
|
||||||
|
style="width: 100%; margin: 15px 0;"
|
||||||
|
>
|
||||||
|
<el-table-column prop="ruleName" label="用例名称" align="center" />
|
||||||
|
<el-table-column prop="ruleSourceName" label="数据源" align="center" />
|
||||||
|
<el-table-column prop="version" label="版本" align="center" />
|
||||||
|
<el-table-column prop="checkTotalCount" label="检测数" align="center" />
|
||||||
|
<el-table-column prop="checkErrorCount" label="不合规数" align="center" />
|
||||||
|
</el-table>
|
||||||
|
<el-collapse accordion>
|
||||||
|
<el-collapse-item>
|
||||||
|
<template slot="title">
|
||||||
|
<i class="el-icon-document"></i> 不合规明细
|
||||||
|
</template>
|
||||||
|
<el-table
|
||||||
|
:data="no_consistent"
|
||||||
|
border
|
||||||
|
tooltip-effect="dark"
|
||||||
|
:max-height="250"
|
||||||
|
style="width: 100%; margin: 15px 0;"
|
||||||
|
>
|
||||||
|
<el-table-column prop="caseName" label="用例名称" align="center" />
|
||||||
|
<el-table-column prop="source" label="数据源" align="center" />
|
||||||
|
<el-table-column prop="tableName" label="数据表" align="center" />
|
||||||
|
<el-table-column prop="trueColumn" label="字段名称" align="center" />
|
||||||
|
<el-table-column prop="notDetail" label="不合规原因" align="center" />
|
||||||
|
</el-table>
|
||||||
|
</el-collapse-item>
|
||||||
|
</el-collapse>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="24">
|
||||||
|
<h5>正则表达式标准检测</h5>
|
||||||
|
<el-table
|
||||||
|
:data="regular"
|
||||||
|
border
|
||||||
|
tooltip-effect="dark"
|
||||||
|
:max-height="250"
|
||||||
|
style="width: 100%; margin: 15px 0;"
|
||||||
|
>
|
||||||
|
<el-table-column prop="ruleName" label="用例名称" align="center" />
|
||||||
|
<el-table-column prop="ruleSourceName" label="数据源" align="center" />
|
||||||
|
<el-table-column prop="version" label="版本" align="center" />
|
||||||
|
<el-table-column prop="checkTotalCount" label="检测数" align="center" />
|
||||||
|
<el-table-column prop="checkErrorCount" label="不合规数" align="center" />
|
||||||
|
</el-table>
|
||||||
|
<el-collapse accordion>
|
||||||
|
<el-collapse-item>
|
||||||
|
<template slot="title">
|
||||||
|
<i class="el-icon-document"></i> 不合规明细
|
||||||
|
</template>
|
||||||
|
<el-table
|
||||||
|
:data="no_regular"
|
||||||
|
border
|
||||||
|
tooltip-effect="dark"
|
||||||
|
:max-height="250"
|
||||||
|
style="width: 100%; margin: 15px 0;"
|
||||||
|
>
|
||||||
|
<el-table-column prop="caseName" label="用例名称" align="center" />
|
||||||
|
<el-table-column prop="source" label="数据源" align="center" />
|
||||||
|
<el-table-column prop="tableName" label="数据表" align="center" />
|
||||||
|
<el-table-column prop="trueColumn" label="字段名称" align="center" />
|
||||||
|
<el-table-column prop="dataColumn" label="字段值" align="center" />
|
||||||
|
<el-table-column prop="notDetail" label="不合规原因" align="center" />
|
||||||
|
</el-table>
|
||||||
|
</el-collapse-item>
|
||||||
|
</el-collapse>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { getReportBySource, getReportByType, getReportDetail } from '@/api/quality/checkreport'
|
||||||
|
import moment from 'moment'
|
||||||
|
import dataJson from './Data.json'
|
||||||
|
export default {
|
||||||
|
name: 'CheckReportStructure',
|
||||||
|
props: {
|
||||||
|
data: {
|
||||||
|
type: Object,
|
||||||
|
default: function() {
|
||||||
|
return {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
queryParams: {
|
||||||
|
checkDate: ''
|
||||||
|
},
|
||||||
|
pickerOption: {
|
||||||
|
disabledDate(date) {
|
||||||
|
return date.getTime() > Date.now()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
date: '',
|
||||||
|
// 展示切换
|
||||||
|
showOptions: {
|
||||||
|
data: {},
|
||||||
|
showList: true,
|
||||||
|
showDetail: false
|
||||||
|
},
|
||||||
|
spanArr1: [],
|
||||||
|
position1: 0,
|
||||||
|
reportTableData1: [],
|
||||||
|
spanArr2: [],
|
||||||
|
position2: 0,
|
||||||
|
reportTableData2: [],
|
||||||
|
// 唯一性核查数据
|
||||||
|
uniqueTableData: [],
|
||||||
|
// 完整性核查数据
|
||||||
|
integrityTableData: [],
|
||||||
|
// 准确性核查数据
|
||||||
|
accuracyTableData: [],
|
||||||
|
// 一致性核查数据
|
||||||
|
consistentTableData: [],
|
||||||
|
// 关联性核查数据
|
||||||
|
relevanceTableData: [],
|
||||||
|
// 及时性核查数据
|
||||||
|
timelinessTableData: [],
|
||||||
|
|
||||||
|
// 表字段标准检测
|
||||||
|
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,
|
||||||
|
|
||||||
|
like: true,
|
||||||
|
value1: 4154.564,
|
||||||
|
totalTables: 1314,
|
||||||
|
title: '增长人数'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.queryParams.checkDate = moment(this.data.checkDate).format('YYYY-MM-DD')
|
||||||
|
this.handleQuery()
|
||||||
|
},
|
||||||
|
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.dataReport.reportTableData1
|
||||||
|
this.reportTableData2 = dataJson.dataReport.reportTableData2
|
||||||
|
this.rowspan1()
|
||||||
|
this.rowspan2()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
showCard() {
|
||||||
|
this.$emit('showCard', this.showOptions)
|
||||||
|
},
|
||||||
|
handleQuery() {
|
||||||
|
this.spanArr1 = []
|
||||||
|
this.spanArr2 = []
|
||||||
|
// this.getReportData1()
|
||||||
|
this.getReportData2()
|
||||||
|
this.getReportData3()
|
||||||
|
this.date = moment(this.queryParams.checkDate).format('YYYY年MM月DD日')
|
||||||
|
},
|
||||||
|
// getReportData1() {
|
||||||
|
// getReportBySource({ checkDate: this.queryParams.checkDate }).then(response => {
|
||||||
|
// if (response.success) {
|
||||||
|
// this.reportTableData1 = response.data
|
||||||
|
// console.log('reportTableData1==', this.reportTableData1)
|
||||||
|
// this.rowspan1()
|
||||||
|
// }
|
||||||
|
// })
|
||||||
|
// },
|
||||||
|
// getReportData2() {
|
||||||
|
// getReportByType({ checkDate: this.queryParams.checkDate }).then(response => {
|
||||||
|
// if (response.success) {
|
||||||
|
// this.reportTableData2 = response.data
|
||||||
|
// console.log('this.reportTableData2===', this.reportTableData2)
|
||||||
|
// this.rowspan2()
|
||||||
|
// }
|
||||||
|
// })
|
||||||
|
// },
|
||||||
|
rowspan1() {
|
||||||
|
this.reportTableData1.forEach((item, index) => {
|
||||||
|
if (index === 0) {
|
||||||
|
this.spanArr1.push(1)
|
||||||
|
this.position1 = 0
|
||||||
|
} else {
|
||||||
|
if (this.reportTableData1[index].ruleSourceId === this.reportTableData1[index - 1].ruleSourceId) {
|
||||||
|
this.spanArr1[this.position1] += 1
|
||||||
|
this.spanArr1.push(0)
|
||||||
|
} else {
|
||||||
|
this.spanArr1.push(1)
|
||||||
|
this.position1 = index
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
objectSpanMethod1({ row, column, rowIndex, columnIndex }) {
|
||||||
|
if (columnIndex === 0) {
|
||||||
|
const _row = this.spanArr1[rowIndex]
|
||||||
|
const _col = _row > 0 ? 1 : 0
|
||||||
|
return {
|
||||||
|
rowspan: _row,
|
||||||
|
colspan: _col
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
rowspan2() {
|
||||||
|
this.reportTableData2.forEach((item, index) => {
|
||||||
|
if (index === 0) {
|
||||||
|
this.spanArr2.push(1)
|
||||||
|
this.position2 = 0
|
||||||
|
} else {
|
||||||
|
if (this.reportTableData2[index].ruleTypeId === this.reportTableData2[index - 1].ruleTypeId) {
|
||||||
|
this.spanArr2[this.position2] += 1
|
||||||
|
this.spanArr2.push(0)
|
||||||
|
} else {
|
||||||
|
this.spanArr2.push(1)
|
||||||
|
this.position2 = index
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
objectSpanMethod2({ row, column, rowIndex, columnIndex }) {
|
||||||
|
if (columnIndex === 0) {
|
||||||
|
const _row = this.spanArr2[rowIndex]
|
||||||
|
const _col = _row > 0 ? 1 : 0
|
||||||
|
return {
|
||||||
|
rowspan: _row,
|
||||||
|
colspan: _col
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
colorFormat(level) {
|
||||||
|
if (level === '低') {
|
||||||
|
return '#409eff'
|
||||||
|
} else if (level === '中') {
|
||||||
|
return '#e6a23c'
|
||||||
|
} else {
|
||||||
|
return '#f56c6c'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
cellFormat(percentage) {
|
||||||
|
return `${percentage}`
|
||||||
|
},
|
||||||
|
typeFormat(level) {
|
||||||
|
if (level === '低') {
|
||||||
|
return 'primary'
|
||||||
|
} else if (level === '中') {
|
||||||
|
return 'warning'
|
||||||
|
} else {
|
||||||
|
return 'danger'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
getReportData3() {
|
||||||
|
getReportDetail({ checkDate: this.queryParams.checkDate }).then(response => {
|
||||||
|
if (response.success) {
|
||||||
|
this.uniqueTableData = response.data.unique
|
||||||
|
this.integrityTableData = response.data.integrity
|
||||||
|
this.accuracyTableData = response.data.accuracy
|
||||||
|
this.consistentTableData = response.data.consistent
|
||||||
|
this.relevanceTableData = response.data.relevance
|
||||||
|
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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.el-card ::v-deep .el-card__body {
|
||||||
|
height: calc(100vh - 230px);
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
.form-inline {
|
||||||
|
::v-deep .el-form-item {
|
||||||
|
margin-bottom: 0px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
::v-deep .el-badge__content {
|
||||||
|
margin-top: 10px;
|
||||||
|
right: 0px;
|
||||||
|
}
|
||||||
|
::v-deep .el-table__header th {
|
||||||
|
background-color: #f5f5f5 !important;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
465
src/views/quality/checkreport/CheckReportStructure_content.vue
Normal file
@@ -0,0 +1,465 @@
|
|||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
<div class="hasTagsView">
|
||||||
|
<div class="app-main">
|
||||||
|
|
||||||
|
<el-card class="box-card">
|
||||||
|
<div slot="header" class="clearfix">
|
||||||
|
<div style="float: right;">
|
||||||
|
<el-button type="primary" size="mini" icon="el-icon-download" @click="exportWord">导出</el-button>
|
||||||
|
<el-button size="mini" icon="el-icon-back" @click="showCard">返回</el-button>
|
||||||
|
</div>
|
||||||
|
</div><!--header-->
|
||||||
|
<h4 class="ftitle">内容符合性检测结果报告</h4><!--ftitle 一级标题-->
|
||||||
|
|
||||||
|
<div class="stitle">检测指标统计分析</div><!--stitle 二级标题-->
|
||||||
|
<div class="test-list">
|
||||||
|
<div class="list">
|
||||||
|
<div class="title"><img src="../../../assets/images/j-icon1.svg"><span class="tit">检测内容条数</span></div>
|
||||||
|
<!-- <div class="figure">{{ data.checkTotalCount_new }}</div>-->
|
||||||
|
<div class="figure" >{{ checkTotalCount_new }}</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="list">
|
||||||
|
<div class="title"><img src="../../../assets/images/j-icon2.svg"><span class="tit">检测总耗时(毫秒)</span></div>
|
||||||
|
<!-- <div class="figure">{{ data.checkTimeConsuming_new }}</div>-->
|
||||||
|
<div class="figure">{{ checkTimeConsuming_new }}</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="list">
|
||||||
|
<div class="title"><img src="../../../assets/images/j-icon3.svg"><span class="tit">不合规总数</span></div>
|
||||||
|
<!-- <div class="figure">{{ data.checkErrorCount_new }}</div>-->
|
||||||
|
<div class="figure">{{ checkErrorCount_new }}</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="list">
|
||||||
|
<div class="title"><img src="../../../assets/images/j-icon4.svg"><span class="tit">不合规率</span></div>
|
||||||
|
<div class="figure">{{ (checkErrorCount_new / checkTotalCount_new * 100).toFixed(2) + '%' }}</div>
|
||||||
|
<!-- <div class="figure">{{ data.checkTotalCount_new }}</div>-->
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div><!--test-list-->
|
||||||
|
|
||||||
|
<div class="stitle">不合规统计分析</div><!--stitle 二级标题-->
|
||||||
|
<el-row :gutter="24">
|
||||||
|
<el-col :span="12">
|
||||||
|
<div class="ttitle">按数据源统计不合规数量</div><!--ttitle 三级标题-->
|
||||||
|
<el-table :data="reportTableData1" border style="width: 100%" class="btable"><!--加上btable-->
|
||||||
|
<el-table-column prop="ruleSourceName" label="数据源" align="center" />
|
||||||
|
<el-table-column prop="ruleLevelName" label="数据源版本" align="center" />
|
||||||
|
<el-table-column prop="tableSum" label="检测条数" align="center" />
|
||||||
|
<el-table-column prop="tableTime" label="总耗时(毫秒)" align="center" />
|
||||||
|
<el-table-column prop="checkErrorCount" label="不合规数" align="center">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-progress :percentage="scope.row.checkErrorCount" :stroke-width="20" :text-inside="true" :color="colorFormat(scope.row.ruleLevelName)" :format="cellFormat" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<div class="ttitle">按用例类型统计不合规数量</div><!--ttitle 三级标题-->
|
||||||
|
<el-table :data="reportTableData2" border style="width: 100%" class="btable"><!--加上btable-->
|
||||||
|
<!-- <el-table-column prop="ta1" label="数据源">数据平台</el-table-column>-->
|
||||||
|
<el-table-column prop="ruleName" label="用例类型"></el-table-column>
|
||||||
|
<el-table-column prop="checkErrorCount" label="不合规数">
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
|
||||||
|
<div class="stitle">用例类型统计分析</div><!--stitle 二级标题-->
|
||||||
|
<div class="dbox" >
|
||||||
|
<div class="ttitle">完整性标准检测用例</div><!--ttitle 三级标题-->
|
||||||
|
<el-table :data="integrity" border style="width: 100%">
|
||||||
|
<el-table-column prop="ruleName" label="用例名称" align="center" />
|
||||||
|
<el-table-column prop="ruleSourceName" label="数据源" align="center" />
|
||||||
|
<el-table-column prop="version" label="数据源版本" align="center" />
|
||||||
|
<el-table-column prop="checkTotalTime" label="耗时(毫秒)" align="center" />
|
||||||
|
<el-table-column prop="checkTotalCount" label="检测数" align="center" />
|
||||||
|
<el-table-column prop="checkErrorCount" label="不合规数" align="center" />
|
||||||
|
</el-table>
|
||||||
|
<el-collapse @change="handleChange" class="ncoll"><!--加上ncoll-->
|
||||||
|
<el-collapse-item name="1">
|
||||||
|
<template slot="title"><span class="tit">不合规明细</span></template>
|
||||||
|
<el-table :data="no_integrity" border style="width: 100%">
|
||||||
|
<el-table-column prop="caseName" label="用例名称" align="center" />
|
||||||
|
<el-table-column prop="source" label="数据源" align="center" />
|
||||||
|
<el-table-column prop="tableName" label="数据表" align="center" />
|
||||||
|
<el-table-column prop="trueColumn" label="字段名称" align="center" />
|
||||||
|
<el-table-column prop="tableErrorCount" label="不合规数" align="center" />
|
||||||
|
<el-table-column prop="notDetail" label="不合规原因" align="center" />
|
||||||
|
</el-table>
|
||||||
|
</el-collapse-item>
|
||||||
|
</el-collapse>
|
||||||
|
</div><!--dbox-->
|
||||||
|
|
||||||
|
<div class="dbox" >
|
||||||
|
<div class="ttitle">准确性标准检测用例</div><!--ttitle 三级标题-->
|
||||||
|
<el-table :data="accuracy" border style="width: 100%">
|
||||||
|
<el-table-column prop="ruleName" label="用例名称" align="center" />
|
||||||
|
<el-table-column prop="ruleSourceName" label="数据源" align="center" />
|
||||||
|
<el-table-column prop="version" label="数据源版本" align="center" />
|
||||||
|
<el-table-column prop="checkTotalTime" label="耗时(毫秒)" align="center" />
|
||||||
|
<el-table-column prop="checkTotalCount" label="检测数" align="center" />
|
||||||
|
<el-table-column prop="checkErrorCount" label="不合规数" align="center" />
|
||||||
|
</el-table>
|
||||||
|
<el-collapse @change="handleChange" class="ncoll"><!--加上ncoll-->
|
||||||
|
<el-collapse-item name="1">
|
||||||
|
<template slot="title"><span class="tit">不合规明细</span></template>
|
||||||
|
<el-table :data="no_accuracy" border style="width: 100%">
|
||||||
|
<el-table-column prop="caseName" label="用例名称" align="center" />
|
||||||
|
<el-table-column prop="source" label="数据源" align="center" />
|
||||||
|
<el-table-column prop="tableName" label="数据表" align="center" />
|
||||||
|
<el-table-column prop="trueColumn" label="字段名称" align="center" />
|
||||||
|
<el-table-column prop="tableErrorCount" label="不合规数" align="center" />
|
||||||
|
<el-table-column prop="notDetail" label="不合规原因" align="center" />
|
||||||
|
</el-table>
|
||||||
|
</el-collapse-item>
|
||||||
|
</el-collapse>
|
||||||
|
</div><!--dbox-->
|
||||||
|
|
||||||
|
<div class="dbox" >
|
||||||
|
<div class="ttitle">一致性标准检测用例</div><!--ttitle 三级标题-->
|
||||||
|
<el-table :data="consistent" border style="width: 100%">
|
||||||
|
<el-table-column prop="ruleName" label="用例名称" align="center" />
|
||||||
|
<el-table-column prop="ruleSourceName" label="数据源" align="center" />
|
||||||
|
<el-table-column prop="version" label="数据源版本" align="center" />
|
||||||
|
<el-table-column prop="checkTotalTime" label="耗时(毫秒)" align="center" />
|
||||||
|
<el-table-column prop="checkTotalCount" label="检测数" align="center" />
|
||||||
|
<el-table-column prop="checkErrorCount" label="不合规数" align="center" />
|
||||||
|
</el-table>
|
||||||
|
<el-collapse @change="handleChange" class="ncoll"><!--加上ncoll-->
|
||||||
|
<el-collapse-item name="1">
|
||||||
|
<template slot="title"><span class="tit">不合规明细</span></template>
|
||||||
|
<el-table :data="no_consistent" border style="width: 100%">
|
||||||
|
<el-table-column prop="caseName" label="用例名称" align="center" />
|
||||||
|
<el-table-column prop="source" label="数据源" align="center" />
|
||||||
|
<el-table-column prop="tableName" label="数据表" align="center" />
|
||||||
|
<el-table-column prop="trueColumn" label="字段名称" align="center" />
|
||||||
|
<el-table-column prop="tableErrorCount" label="不合规数" align="center" />
|
||||||
|
<el-table-column prop="notDetail" label="不合规原因" align="center" />
|
||||||
|
</el-table>
|
||||||
|
</el-collapse-item>
|
||||||
|
</el-collapse>
|
||||||
|
</div><!--dbox-->
|
||||||
|
|
||||||
|
<div class="dbox" >
|
||||||
|
<div class="ttitle">正则表达式标准检测用例</div><!--ttitle 三级标题-->
|
||||||
|
<el-table :data="regular" border style="width: 100%">
|
||||||
|
<el-table-column prop="ruleName" label="用例名称" align="center" />
|
||||||
|
<el-table-column prop="ruleSourceName" label="数据源" align="center" />
|
||||||
|
<el-table-column prop="version" label="数据源版本" align="center" />
|
||||||
|
<el-table-column prop="checkTotalTime" label="耗时(毫秒)" align="center" />
|
||||||
|
<el-table-column prop="checkTotalCount" label="检测数" align="center" />
|
||||||
|
<el-table-column prop="checkErrorCount" label="不合规数" align="center" />
|
||||||
|
</el-table>
|
||||||
|
<el-collapse @change="handleChange" class="ncoll"><!--加上ncoll-->
|
||||||
|
<el-collapse-item name="1">
|
||||||
|
<template slot="title"><span class="tit">不合规明细</span></template>
|
||||||
|
<el-table :data="no_regular" border style="width: 100%">
|
||||||
|
<el-table-column prop="caseName" label="用例名称" align="center" />
|
||||||
|
<el-table-column prop="source" label="数据源" align="center" />
|
||||||
|
<el-table-column prop="tableName" label="数据表" align="center" />
|
||||||
|
<el-table-column prop="trueColumn" label="字段名称" align="center" />
|
||||||
|
<el-table-column prop="tableErrorCount" label="不合规数" align="center" />
|
||||||
|
<el-table-column prop="notDetail" label="不合规原因" align="center" />
|
||||||
|
</el-table>
|
||||||
|
</el-collapse-item>
|
||||||
|
</el-collapse>
|
||||||
|
</div><!--dbox-->
|
||||||
|
|
||||||
|
</el-card><!--el-card-->
|
||||||
|
|
||||||
|
</div><!--app-main-->
|
||||||
|
</div><!--hasTagsView-->
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
// import { getReportBySource, getReportByType, C } from '@/api/quality/checkreport'
|
||||||
|
import moment from 'moment'
|
||||||
|
import dataJson from './Data_content.json'
|
||||||
|
export default {
|
||||||
|
name: 'CheckReportStructureontent',
|
||||||
|
props: {
|
||||||
|
data: {
|
||||||
|
type: Object,
|
||||||
|
default: function() {
|
||||||
|
return {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
queryParams: {
|
||||||
|
checkDate: ''
|
||||||
|
},
|
||||||
|
pickerOption: {
|
||||||
|
disabledDate(date) {
|
||||||
|
return date.getTime() > Date.now()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
date: '',
|
||||||
|
// 展示切换
|
||||||
|
showOptions: {
|
||||||
|
data: {},
|
||||||
|
showList: true,
|
||||||
|
showDetail_content: false
|
||||||
|
},
|
||||||
|
spanArr1: [],
|
||||||
|
position1: 0,
|
||||||
|
reportTableData1: [],
|
||||||
|
spanArr2: [],
|
||||||
|
position2: 0,
|
||||||
|
reportTableData2: [],
|
||||||
|
// 唯一性核查数据
|
||||||
|
uniqueTableData: [],
|
||||||
|
// 完整性核查数据
|
||||||
|
integrityTableData: [],
|
||||||
|
// 准确性核查数据
|
||||||
|
accuracyTableData: [],
|
||||||
|
// 一致性核查数据
|
||||||
|
consistentTableData: [],
|
||||||
|
// 关联性核查数据
|
||||||
|
relevanceTableData: [],
|
||||||
|
// 及时性核查数据
|
||||||
|
timelinessTableData: [],
|
||||||
|
|
||||||
|
// 表字段标准检测
|
||||||
|
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,
|
||||||
|
totalTables: 1314,
|
||||||
|
title: '增长人数'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.queryParams.checkDate = moment(this.data.checkDate).format('YYYY-MM-DD')
|
||||||
|
this.handleQuery()
|
||||||
|
},
|
||||||
|
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.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() {
|
||||||
|
this.$emit('showCard', this.showOptions)
|
||||||
|
},
|
||||||
|
handleQuery() {
|
||||||
|
this.spanArr1 = []
|
||||||
|
this.spanArr2 = []
|
||||||
|
// this.getReportData1()
|
||||||
|
// this.getReportData2()
|
||||||
|
// this.getReportData3()
|
||||||
|
// this.date = moment(this.queryParams.checkDate).format('YYYY年MM月DD日')
|
||||||
|
},
|
||||||
|
// getReportData1() {
|
||||||
|
// getReportBySource({ checkDate: this.queryParams.checkDate }).then(response => {
|
||||||
|
// if (response.success) {
|
||||||
|
// this.reportTableData1 = response.data
|
||||||
|
// console.log('reportTableData1==', this.reportTableData1)
|
||||||
|
// this.rowspan1()
|
||||||
|
// }
|
||||||
|
// })
|
||||||
|
// },
|
||||||
|
// getReportData2() {
|
||||||
|
// getReportByType({ checkDate: this.queryParams.checkDate }).then(response => {
|
||||||
|
// if (response.success) {
|
||||||
|
// this.reportTableData2 = response.data
|
||||||
|
// console.log('this.reportTableData2===', this.reportTableData2)
|
||||||
|
// this.rowspan2()
|
||||||
|
// }
|
||||||
|
// })
|
||||||
|
// },
|
||||||
|
rowspan1() {
|
||||||
|
this.reportTableData1.forEach((item, index) => {
|
||||||
|
if (index === 0) {
|
||||||
|
this.spanArr1.push(1)
|
||||||
|
this.position1 = 0
|
||||||
|
} else {
|
||||||
|
if (this.reportTableData1[index].ruleSourceId === this.reportTableData1[index - 1].ruleSourceId) {
|
||||||
|
this.spanArr1[this.position1] += 1
|
||||||
|
this.spanArr1.push(0)
|
||||||
|
} else {
|
||||||
|
this.spanArr1.push(1)
|
||||||
|
this.position1 = index
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
objectSpanMethod1({ row, column, rowIndex, columnIndex }) {
|
||||||
|
if (columnIndex === 0) {
|
||||||
|
const _row = this.spanArr1[rowIndex]
|
||||||
|
const _col = _row > 0 ? 1 : 0
|
||||||
|
return {
|
||||||
|
rowspan: _row,
|
||||||
|
colspan: _col
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
rowspan2() {
|
||||||
|
this.reportTableData2.forEach((item, index) => {
|
||||||
|
if (index === 0) {
|
||||||
|
this.spanArr2.push(1)
|
||||||
|
this.position2 = 0
|
||||||
|
} else {
|
||||||
|
if (this.reportTableData2[index].ruleTypeId === this.reportTableData2[index - 1].ruleTypeId) {
|
||||||
|
this.spanArr2[this.position2] += 1
|
||||||
|
this.spanArr2.push(0)
|
||||||
|
} else {
|
||||||
|
this.spanArr2.push(1)
|
||||||
|
this.position2 = index
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
objectSpanMethod2({ row, column, rowIndex, columnIndex }) {
|
||||||
|
if (columnIndex === 0) {
|
||||||
|
const _row = this.spanArr2[rowIndex]
|
||||||
|
const _col = _row > 0 ? 1 : 0
|
||||||
|
return {
|
||||||
|
rowspan: _row,
|
||||||
|
colspan: _col
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
colorFormat(level) {
|
||||||
|
if (level === '低') {
|
||||||
|
return '#409eff'
|
||||||
|
} else if (level === '中') {
|
||||||
|
return '#e6a23c'
|
||||||
|
} else {
|
||||||
|
return '#f56c6c'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
cellFormat(percentage) {
|
||||||
|
return `${percentage}`
|
||||||
|
},
|
||||||
|
typeFormat(level) {
|
||||||
|
if (level === '低') {
|
||||||
|
return 'primary'
|
||||||
|
} else if (level === '中') {
|
||||||
|
return 'warning'
|
||||||
|
} else {
|
||||||
|
return 'danger'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// getReportData3() {
|
||||||
|
// getReportDetail({ checkDate: this.queryParams.checkDate }).then(response => {
|
||||||
|
// if (response.success) {
|
||||||
|
// this.uniqueTableData = response.data.unique
|
||||||
|
// this.integrityTableData = response.data.integrity
|
||||||
|
// this.accuracyTableData = response.data.accuracy
|
||||||
|
// this.consistentTableData = response.data.consistent
|
||||||
|
// this.relevanceTableData = response.data.relevance
|
||||||
|
// 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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.el-card ::v-deep .el-card__body {
|
||||||
|
height: calc(100vh - 230px);
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
.form-inline {
|
||||||
|
::v-deep .el-form-item {
|
||||||
|
margin-bottom: 0px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
::v-deep .el-badge__content {
|
||||||
|
margin-top: 10px;
|
||||||
|
right: 0px;
|
||||||
|
}
|
||||||
|
::v-deep .el-table__header th {
|
||||||
|
background-color: #f5f5f5 !important;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
402
src/views/quality/checkreport/CheckReportStructure_relevance.vue
Normal file
@@ -0,0 +1,402 @@
|
|||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
<div class="hasTagsView">
|
||||||
|
<div class="app-main">
|
||||||
|
|
||||||
|
<el-card class="box-card">
|
||||||
|
<div slot="header" class="clearfix">
|
||||||
|
<div style="float: right;">
|
||||||
|
<el-button type="primary" size="mini" icon="el-icon-download" @click="exportWord">导出</el-button>
|
||||||
|
<el-button size="mini" icon="el-icon-back" @click="showCard">返回</el-button>
|
||||||
|
</div>
|
||||||
|
</div><!--header-->
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<h4 class="ftitle">关联符合性检测结果报告</h4><!--ftitle 一级标题-->
|
||||||
|
|
||||||
|
<div class="stitle">检测指标统计分析</div><!--stitle 二级标题-->
|
||||||
|
<div class="test-list">
|
||||||
|
<div class="list">
|
||||||
|
<div class="title"><img src="../../../assets/images/j-icon1.svg"><span class="tit">检测表总数</span></div>
|
||||||
|
<!-- <div class="figure">{{ data.checkTotalCount_new }}</div>-->
|
||||||
|
<div class="figure" >{{ checkTotalCount_new }}</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="list">
|
||||||
|
<div class="title"><img src="../../../assets/images/j-icon2.svg"><span class="tit">检测总耗时(毫秒)</span></div>
|
||||||
|
<!-- <div class="figure">{{ data.checkTimeConsuming_new }}</div>-->
|
||||||
|
<div class="figure">{{ checkTimeConsuming_new }}</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="list">
|
||||||
|
<div class="title"><img src="../../../assets/images/j-icon3.svg"><span class="tit">不合规总数</span></div>
|
||||||
|
<!-- <div class="figure">{{ data.checkErrorCount_new }}</div>-->
|
||||||
|
<div class="figure">{{ checkErrorCount_new }}</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="list">
|
||||||
|
<div class="title"><img src="../../../assets/images/j-icon4.svg"><span class="tit">不合规率</span></div>
|
||||||
|
<div class="figure">{{ (checkErrorCount_new / checkTotalCount_new * 100).toFixed(2) + '%' }}</div>
|
||||||
|
<!-- <div class="figure">{{ data.checkTotalCount_new }}</div>-->
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div><!--test-list-->
|
||||||
|
|
||||||
|
<div class="stitle">不合规统计分析</div><!--stitle 二级标题-->
|
||||||
|
<el-row :gutter="24">
|
||||||
|
<el-col :span="12">
|
||||||
|
<div class="ttitle">按数据源统计不合规数量</div><!--ttitle 三级标题-->
|
||||||
|
<el-table :data="reportTableData1" border style="width: 100%" class="btable"><!--加上btable-->
|
||||||
|
<el-table-column prop="ruleSourceName" label="数据源" align="center" />
|
||||||
|
<el-table-column prop="ruleLevelName" label="数据源版本" align="center" />
|
||||||
|
<el-table-column prop="tableSum" label="检测表数" align="center" />
|
||||||
|
<el-table-column prop="tableTime" label="耗时(毫秒)" align="center" />
|
||||||
|
<el-table-column prop="checkErrorCount" label="不合规数" align="center">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-progress :percentage="scope.row.checkErrorCount" :stroke-width="20" :text-inside="true" :color="colorFormat(scope.row.ruleLevelName)" :format="cellFormat" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<div class="ttitle">按用例类型统计不合规数量</div><!--ttitle 三级标题-->
|
||||||
|
<el-table :data="reportTableData2" border style="width: 100%" class="btable"><!--加上btable-->
|
||||||
|
<!-- <el-table-column prop="ta1" label="数据源">数据平台</el-table-column>-->
|
||||||
|
<el-table-column prop="ruleName" label="用例类型"></el-table-column>
|
||||||
|
<el-table-column prop="checkErrorCount" label="不合规数">
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
|
||||||
|
<div class="stitle">用例类型统计分析</div><!--stitle 二级标题-->
|
||||||
|
<div class="dbox">
|
||||||
|
<div class="ttitle">关联性标准检测用例</div><!--ttitle 三级标题-->
|
||||||
|
<el-table :data="relevancData" border style="width: 100%">
|
||||||
|
<el-table-column prop="ruleName" label="用例名称" align="center" />
|
||||||
|
<el-table-column prop="ruleSourceName" label="数据源" align="center" />
|
||||||
|
<el-table-column prop="version" label="数据源版本" align="center" />
|
||||||
|
<el-table-column prop="checkTotalTime" label="耗时(毫秒)" align="center" />
|
||||||
|
<el-table-column prop="checkTotalCount" label="检测数" align="center" />
|
||||||
|
<el-table-column prop="checkErrorCount" label="不合规数" align="center" />
|
||||||
|
</el-table>
|
||||||
|
<el-collapse @change="handleChange" class="ncoll"><!--加上ncoll-->
|
||||||
|
<el-collapse-item name="1">
|
||||||
|
<template slot="title"><span class="tit">不合规明细</span></template>
|
||||||
|
<el-table :data="no_relevancData" border style="width: 100%">
|
||||||
|
<el-table-column prop="caseName" label="用例名称" align="center" />
|
||||||
|
<el-table-column prop="source" label="数据源" align="center" />
|
||||||
|
<el-table-column prop="tableName" label="数据表" align="center" />
|
||||||
|
<el-table-column prop="standardColumn" label="标准字段" align="center" />
|
||||||
|
<el-table-column prop="standardPk" label="标准字段是否主键" align="center" />
|
||||||
|
<el-table-column prop="standardFk" label="标准字段是否外键" align="center" />
|
||||||
|
<el-table-column prop="trueColumn" label="实际字段" align="center" />
|
||||||
|
<el-table-column prop="truePk" label="实际字段是否主键" align="center" />
|
||||||
|
<el-table-column prop="trueFk" label="实际字段是否外键" align="center" />
|
||||||
|
<el-table-column prop="notDetail" label="不合规原因" align="center" width="200px" />
|
||||||
|
</el-table>
|
||||||
|
</el-collapse-item>
|
||||||
|
</el-collapse>
|
||||||
|
</div><!--dbox-->
|
||||||
|
</el-card><!--el-card-->
|
||||||
|
|
||||||
|
</div><!--app-main-->
|
||||||
|
</div><!--hasTagsView-->
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
// import { getReportBySource, getReportByType, getReportDetail } from '@/api/quality/checkreport'
|
||||||
|
import moment from 'moment'
|
||||||
|
import dataJson from './Data_relevance.json'
|
||||||
|
export default {
|
||||||
|
name: 'CheckReportStructureRelevance',
|
||||||
|
props: {
|
||||||
|
data: {
|
||||||
|
type: Object,
|
||||||
|
default: function() {
|
||||||
|
return {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
queryParams: {
|
||||||
|
checkDate: ''
|
||||||
|
},
|
||||||
|
pickerOption: {
|
||||||
|
disabledDate(date) {
|
||||||
|
return date.getTime() > Date.now()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
date: '',
|
||||||
|
// 展示切换
|
||||||
|
showOptions: {
|
||||||
|
data: {},
|
||||||
|
showList: true,
|
||||||
|
showDetail_relevance: false
|
||||||
|
},
|
||||||
|
spanArr1: [],
|
||||||
|
position1: 0,
|
||||||
|
reportTableData1: [],
|
||||||
|
spanArr2: [],
|
||||||
|
position2: 0,
|
||||||
|
reportTableData2: [],
|
||||||
|
// 唯一性核查数据
|
||||||
|
uniqueTableData: [],
|
||||||
|
// 完整性核查数据
|
||||||
|
integrityTableData: [],
|
||||||
|
// 准确性核查数据
|
||||||
|
accuracyTableData: [],
|
||||||
|
// 一致性核查数据
|
||||||
|
consistentTableData: [],
|
||||||
|
// 关联性核查数据
|
||||||
|
relevanceTableData: [],
|
||||||
|
// 及时性核查数据
|
||||||
|
timelinessTableData: [],
|
||||||
|
|
||||||
|
// 表字段标准检测
|
||||||
|
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: [],
|
||||||
|
// 关联符合性校验
|
||||||
|
relevancData: [],
|
||||||
|
no_relevanceData: [],
|
||||||
|
// 检测表总数
|
||||||
|
checkTotalCount: null,
|
||||||
|
// 检测总耗时
|
||||||
|
checkTimeConsuming: null,
|
||||||
|
// 不合规总数
|
||||||
|
checkErrorCount: null,
|
||||||
|
|
||||||
|
// 检测表总数
|
||||||
|
checkTotalCount_new: null,
|
||||||
|
// 检测总耗时
|
||||||
|
checkTimeConsuming_new: null,
|
||||||
|
// 不合规总数
|
||||||
|
checkErrorCount_new: null,
|
||||||
|
|
||||||
|
like: true,
|
||||||
|
value1: 4154.564,
|
||||||
|
totalTables: 1314,
|
||||||
|
title: '增长人数'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.queryParams.checkDate = moment(this.data.checkDate).format('YYYY-MM-DD')
|
||||||
|
this.handleQuery()
|
||||||
|
},
|
||||||
|
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.relevancData = dataJson.caseType.relevancData
|
||||||
|
this.no_relevancData = dataJson.caseType.no_relevancData
|
||||||
|
|
||||||
|
// 初始化按数据源统计不合规数量
|
||||||
|
this.spanArr1 = []
|
||||||
|
this.spanArr2 = []
|
||||||
|
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() {
|
||||||
|
this.$emit('showCard', this.showOptions)
|
||||||
|
},
|
||||||
|
handleQuery() {
|
||||||
|
this.spanArr1 = []
|
||||||
|
this.spanArr2 = []
|
||||||
|
// this.getReportData1()
|
||||||
|
// this.getReportData2()
|
||||||
|
// this.getReportData3()
|
||||||
|
// this.date = moment(this.queryParams.checkDate).format('YYYY年MM月DD日')
|
||||||
|
},
|
||||||
|
// getReportData1() {
|
||||||
|
// getReportBySource({ checkDate: this.queryParams.checkDate }).then(response => {
|
||||||
|
// if (response.success) {
|
||||||
|
// this.reportTableData1 = response.data
|
||||||
|
// console.log('reportTableData1==', this.reportTableData1)
|
||||||
|
// this.rowspan1()
|
||||||
|
// }
|
||||||
|
// })
|
||||||
|
// },
|
||||||
|
// getReportData2() {
|
||||||
|
// getReportByType({ checkDate: this.queryParams.checkDate }).then(response => {
|
||||||
|
// if (response.success) {
|
||||||
|
// this.reportTableData2 = response.data
|
||||||
|
// console.log('this.reportTableData2===', this.reportTableData2)
|
||||||
|
// this.rowspan2()
|
||||||
|
// }
|
||||||
|
// })
|
||||||
|
// },
|
||||||
|
rowspan1() {
|
||||||
|
this.reportTableData1.forEach((item, index) => {
|
||||||
|
if (index === 0) {
|
||||||
|
this.spanArr1.push(1)
|
||||||
|
this.position1 = 0
|
||||||
|
} else {
|
||||||
|
if (this.reportTableData1[index].ruleSourceId === this.reportTableData1[index - 1].ruleSourceId) {
|
||||||
|
this.spanArr1[this.position1] += 1
|
||||||
|
this.spanArr1.push(0)
|
||||||
|
} else {
|
||||||
|
this.spanArr1.push(1)
|
||||||
|
this.position1 = index
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
objectSpanMethod1({ row, column, rowIndex, columnIndex }) {
|
||||||
|
if (columnIndex === 0) {
|
||||||
|
const _row = this.spanArr1[rowIndex]
|
||||||
|
const _col = _row > 0 ? 1 : 0
|
||||||
|
return {
|
||||||
|
rowspan: _row,
|
||||||
|
colspan: _col
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
rowspan2() {
|
||||||
|
this.reportTableData2.forEach((item, index) => {
|
||||||
|
if (index === 0) {
|
||||||
|
this.spanArr2.push(1)
|
||||||
|
this.position2 = 0
|
||||||
|
} else {
|
||||||
|
if (this.reportTableData2[index].ruleTypeId === this.reportTableData2[index - 1].ruleTypeId) {
|
||||||
|
this.spanArr2[this.position2] += 1
|
||||||
|
this.spanArr2.push(0)
|
||||||
|
} else {
|
||||||
|
this.spanArr2.push(1)
|
||||||
|
this.position2 = index
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
objectSpanMethod2({ row, column, rowIndex, columnIndex }) {
|
||||||
|
if (columnIndex === 0) {
|
||||||
|
const _row = this.spanArr2[rowIndex]
|
||||||
|
const _col = _row > 0 ? 1 : 0
|
||||||
|
return {
|
||||||
|
rowspan: _row,
|
||||||
|
colspan: _col
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
colorFormat(level) {
|
||||||
|
if (level === '低') {
|
||||||
|
return '#409eff'
|
||||||
|
} else if (level === '中') {
|
||||||
|
return '#e6a23c'
|
||||||
|
} else {
|
||||||
|
return '#f56c6c'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
cellFormat(percentage) {
|
||||||
|
return `${percentage}`
|
||||||
|
},
|
||||||
|
typeFormat(level) {
|
||||||
|
if (level === '低') {
|
||||||
|
return 'primary'
|
||||||
|
} else if (level === '中') {
|
||||||
|
return 'warning'
|
||||||
|
} else {
|
||||||
|
return 'danger'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// getReportData3() {
|
||||||
|
// getReportDetail({ checkDate: this.queryParams.checkDate }).then(response => {
|
||||||
|
// if (response.success) {
|
||||||
|
// this.uniqueTableData = response.data.unique
|
||||||
|
// this.integrityTableData = response.data.integrity
|
||||||
|
// this.accuracyTableData = response.data.accuracy
|
||||||
|
// this.consistentTableData = response.data.consistent
|
||||||
|
// this.relevanceTableData = response.data.relevance
|
||||||
|
// 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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.el-card ::v-deep .el-card__body {
|
||||||
|
height: calc(100vh - 230px);
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
.form-inline {
|
||||||
|
::v-deep .el-form-item {
|
||||||
|
margin-bottom: 0px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
::v-deep .el-badge__content {
|
||||||
|
margin-top: 10px;
|
||||||
|
right: 0px;
|
||||||
|
}
|
||||||
|
::v-deep .el-table__header th {
|
||||||
|
background-color: #f5f5f5 !important;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
523
src/views/quality/checkreport/Data.json
Normal file
@@ -0,0 +1,523 @@
|
|||||||
|
{
|
||||||
|
"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": "78",
|
||||||
|
"checkErrorCount": "0"
|
||||||
|
},{
|
||||||
|
"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"
|
||||||
|
},{
|
||||||
|
"ruleName": "检测字段空值是否符合标准约束",
|
||||||
|
"ruleSourceName": "综合服务",
|
||||||
|
"ruleTableName": "全表",
|
||||||
|
"version": "1.0",
|
||||||
|
"checkTotalCount": "78",
|
||||||
|
"checkErrorCount": "0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"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"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ruleName": "检测字段是否外键符合标准约束",
|
||||||
|
"ruleSourceName": "综合服务",
|
||||||
|
"ruleTableName": "全表",
|
||||||
|
"version": "1.0",
|
||||||
|
"checkTotalCount": "78",
|
||||||
|
"checkErrorCount": "0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"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": "是"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"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"
|
||||||
|
}
|
||||||
448
src/views/quality/checkreport/Data_content.json
Normal file
@@ -0,0 +1,448 @@
|
|||||||
|
{
|
||||||
|
"caseType": {
|
||||||
|
"integrity": [
|
||||||
|
{
|
||||||
|
"ruleName": "数据非空验证",
|
||||||
|
"ruleSourceName": "智瑞服务",
|
||||||
|
"ruleTableName": "全表",
|
||||||
|
"version": "1.0",
|
||||||
|
"checkTotalTime": "13026",
|
||||||
|
"checkTotalCount": "130264",
|
||||||
|
"checkErrorCount": "689"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ruleName": "数据非空验证",
|
||||||
|
"ruleSourceName": "综合服务",
|
||||||
|
"ruleTableName": "全表",
|
||||||
|
"version": "1.0",
|
||||||
|
"checkTotalTime": "1496",
|
||||||
|
"checkTotalCount": "15621",
|
||||||
|
"checkErrorCount": "152"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"no_integrity":[
|
||||||
|
{
|
||||||
|
"caseName": "数据非空验证",
|
||||||
|
"source": "智瑞服务",
|
||||||
|
"tableName": "t_wf_hi_actinst",
|
||||||
|
"trueColumn": "act_name_",
|
||||||
|
"tableErrorCount": "23",
|
||||||
|
"notDetail": "数据不符合标准表字段非空约束"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"caseName": "数据非空验证",
|
||||||
|
"source": "智瑞服务",
|
||||||
|
"tableName": "t_wf_hi_attachment",
|
||||||
|
"trueColumn": "url_",
|
||||||
|
"tableErrorCount": "89",
|
||||||
|
"notDetail": "数据不符合标准表字段非空约束"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"caseName": "数据非空验证",
|
||||||
|
"source": "智瑞服务",
|
||||||
|
"tableName": "t_wf_free_audit",
|
||||||
|
"trueColumn": "name_",
|
||||||
|
"tableErrorCount": "56",
|
||||||
|
"notDetail": "数据不符合标准表字段非空约束"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"caseName": "数据非空验证",
|
||||||
|
"source": "智瑞服务",
|
||||||
|
"tableName": "t_wf_ru_variable",
|
||||||
|
"trueColumn": "name_",
|
||||||
|
"tableErrorCount": "147",
|
||||||
|
"notDetail": "数据不符合标准表字段非空约束"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"caseName": "数据非空验证",
|
||||||
|
"source": "智瑞服务",
|
||||||
|
"tableName": "t_wf_ru_identitylink",
|
||||||
|
"trueColumn": "proc_inst_id_",
|
||||||
|
"tableErrorCount": "254",
|
||||||
|
"notDetail": "数据不符合标准表字段非空约束"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"caseName": "数据非空验证",
|
||||||
|
"source": "智瑞服务",
|
||||||
|
"tableName": "t_wf_hi_taskinst",
|
||||||
|
"trueColumn": "user_id_",
|
||||||
|
"tableErrorCount": "129",
|
||||||
|
"notDetail": "数据不符合标准表字段非空约束"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"caseName": "数据非空验证",
|
||||||
|
"source": "综合服务",
|
||||||
|
"tableName": "mdiy_config",
|
||||||
|
"trueColumn": "config_name",
|
||||||
|
"tableErrorCount": "56",
|
||||||
|
"notDetail": "数据不符合标准表字段非空约束"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"caseName": "数据非空验证",
|
||||||
|
"source": "综合服务",
|
||||||
|
"tableName": "mdiy_model",
|
||||||
|
"trueColumn": "model_name",
|
||||||
|
"tableErrorCount": "96",
|
||||||
|
"notDetail": "数据不符合标准表字段非空约束"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"accuracy": [
|
||||||
|
{
|
||||||
|
"ruleName": "数据长度验证",
|
||||||
|
"ruleSourceName": "智瑞服务",
|
||||||
|
"ruleTableName": "全表",
|
||||||
|
"version": "1.0",
|
||||||
|
"checkTotalTime": "14036",
|
||||||
|
"checkTotalCount": "130264",
|
||||||
|
"checkErrorCount": "2071"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ruleName": "数据长度验证",
|
||||||
|
"ruleSourceName": "综合服务",
|
||||||
|
"ruleTableName": "全表",
|
||||||
|
"version": "1.0",
|
||||||
|
"checkTotalTime": "1698",
|
||||||
|
"checkTotalCount": "15621",
|
||||||
|
"checkErrorCount": "311"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"no_accuracy": [
|
||||||
|
{
|
||||||
|
"caseName": "数据长度验证",
|
||||||
|
"source": "智瑞服务",
|
||||||
|
"tableName": "t_wf_procdef_info",
|
||||||
|
"trueColumn": "task_id_",
|
||||||
|
"tableErrorCount": "145",
|
||||||
|
"notDetail": "数据不符合标准表字段长度约束"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"caseName": "数据长度验证",
|
||||||
|
"source": "智瑞服务",
|
||||||
|
"tableName": "t_wf_hi_varinst",
|
||||||
|
"trueColumn": "group_id_",
|
||||||
|
"tableErrorCount": "126",
|
||||||
|
"notDetail": "数据不符合标准表字段长度约束"
|
||||||
|
},{
|
||||||
|
"caseName": "数据长度验证",
|
||||||
|
"source": "智瑞服务",
|
||||||
|
"tableName": "t_wf_hi_comment",
|
||||||
|
"trueColumn": "message_",
|
||||||
|
"tableErrorCount": "547",
|
||||||
|
"notDetail": "数据不符合标准表字段长度约束"
|
||||||
|
},{
|
||||||
|
"caseName": "数据长度验证",
|
||||||
|
"source": "智瑞服务",
|
||||||
|
"tableName": "t_wf_hi_actinst",
|
||||||
|
"trueColumn": "full_msg_",
|
||||||
|
"tableErrorCount": "365",
|
||||||
|
"notDetail": "数据不符合标准表字段长度约束"
|
||||||
|
},{
|
||||||
|
"caseName": "数据长度验证",
|
||||||
|
"source": "智瑞服务",
|
||||||
|
"tableName": "t_wf_free_audit",
|
||||||
|
"trueColumn": "type_",
|
||||||
|
"tableErrorCount": "259",
|
||||||
|
"notDetail": "数据不符合标准表字段长度约束"
|
||||||
|
},{
|
||||||
|
"caseName": "数据长度验证",
|
||||||
|
"source": "智瑞服务",
|
||||||
|
"tableName": "t_wf_hi_detail",
|
||||||
|
"trueColumn": "var_type_",
|
||||||
|
"tableErrorCount": "196",
|
||||||
|
"notDetail": "数据不符合标准表字段长度约束"
|
||||||
|
},{
|
||||||
|
"caseName": "数据长度验证",
|
||||||
|
"source": "智瑞服务",
|
||||||
|
"tableName": "t_wf_ge_property",
|
||||||
|
"trueColumn": "name_",
|
||||||
|
"tableErrorCount": "246",
|
||||||
|
"notDetail": "数据不符合标准表字段长度约束"
|
||||||
|
},{
|
||||||
|
"caseName": "数据长度验证",
|
||||||
|
"source": "智瑞服务",
|
||||||
|
"tableName": "t_wf_activity_info_config",
|
||||||
|
"trueColumn": "idea_display_area",
|
||||||
|
"tableErrorCount": "187",
|
||||||
|
"notDetail": "数据不符合标准表字段长度约束"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"caseName": "数据长度验证",
|
||||||
|
"source": "综合服务",
|
||||||
|
"tableName": "mdiy_model",
|
||||||
|
"trueColumn": "model_custom_type",
|
||||||
|
"tableErrorCount": "126",
|
||||||
|
"notDetail": "数据不符合标准表字段长度约束"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"caseName": "数据长度验证",
|
||||||
|
"source": "综合服务",
|
||||||
|
"tableName": "mdiy_model",
|
||||||
|
"trueColumn": "model_table_name",
|
||||||
|
"tableErrorCount": "185",
|
||||||
|
"notDetail": "数据不符合标准表字段长度约束"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"consistent": [
|
||||||
|
{
|
||||||
|
"ruleName": "数据值域验证",
|
||||||
|
"ruleSourceName": "智瑞服务",
|
||||||
|
"ruleTableName": "全表",
|
||||||
|
"version": "1.0",
|
||||||
|
"checkTotalTime": "12096",
|
||||||
|
"checkTotalCount": "130264",
|
||||||
|
"checkErrorCount": "2054"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ruleName": "数据值域验证",
|
||||||
|
"ruleSourceName": "综合服务",
|
||||||
|
"ruleTableName": "全表",
|
||||||
|
"version": "1.0",
|
||||||
|
"checkTotalTime": "1465",
|
||||||
|
"checkTotalCount": "15621",
|
||||||
|
"checkErrorCount": "1229"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"no_consistent": [
|
||||||
|
{
|
||||||
|
"caseName": "数据值域验证",
|
||||||
|
"source": "智瑞服务",
|
||||||
|
"tableName": "t_wf_activity_info_config",
|
||||||
|
"trueColumn": "jump_type",
|
||||||
|
"tableErrorCount": "145",
|
||||||
|
"notDetail": "数据不符合标准值域范围"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"caseName": "数据值域验证",
|
||||||
|
"source": "智瑞服务",
|
||||||
|
"tableName": "t_wf_activity_info_config",
|
||||||
|
"trueColumn": "activity_def_type",
|
||||||
|
"tableErrorCount": "269",
|
||||||
|
"notDetail": "数据不符合标准值域范围"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"caseName": "数据值域验证",
|
||||||
|
"source": "智瑞服务",
|
||||||
|
"tableName": "t_wf_activity_rule",
|
||||||
|
"trueColumn": "rule_type",
|
||||||
|
"tableErrorCount": "63",
|
||||||
|
"notDetail": "数据不符合标准值域范围"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"caseName": "数据值域验证",
|
||||||
|
"source": "智瑞服务",
|
||||||
|
"tableName": "t_wf_application",
|
||||||
|
"trueColumn": "type_",
|
||||||
|
"tableErrorCount": "126",
|
||||||
|
"notDetail": "数据不符合标准值域范围"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"caseName": "数据值域验证",
|
||||||
|
"source": "智瑞服务",
|
||||||
|
"tableName": "t_wf_dict",
|
||||||
|
"trueColumn": "status",
|
||||||
|
"tableErrorCount": "329",
|
||||||
|
"notDetail": "数据不符合标准值域范围"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"caseName": "数据值域验证",
|
||||||
|
"source": "智瑞服务",
|
||||||
|
"tableName": "t_wf_doc_audit_apply",
|
||||||
|
"trueColumn": "audit_type",
|
||||||
|
"tableErrorCount": "296",
|
||||||
|
"notDetail": "数据不符合标准值域范围"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"caseName": "数据值域验证",
|
||||||
|
"source": "智瑞服务",
|
||||||
|
"tableName": "t_wf_doc_audit_apply",
|
||||||
|
"trueColumn": "biz_type",
|
||||||
|
"tableErrorCount": "191",
|
||||||
|
"notDetail": "数据不符合标准值域范围"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"caseName": "数据值域验证",
|
||||||
|
"source": "智瑞服务",
|
||||||
|
"tableName": "t_wf_doc_audit_detail",
|
||||||
|
"trueColumn": "doc_type",
|
||||||
|
"tableErrorCount": "394",
|
||||||
|
"notDetail": "数据不符合标准值域范围"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"caseName": "数据值域验证",
|
||||||
|
"source": "智瑞服务",
|
||||||
|
"tableName": "t_wf_doc_share_strategy_auditor",
|
||||||
|
"trueColumn": "auditor_type",
|
||||||
|
"tableErrorCount": "241",
|
||||||
|
"notDetail": "数据不符合标准值域范围"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"caseName": "数据值域验证",
|
||||||
|
"source": "综合服务",
|
||||||
|
"tableName": "cms_content",
|
||||||
|
"trueColumn": "content_type",
|
||||||
|
"tableErrorCount": "249",
|
||||||
|
"notDetail": "数据不符合标准值域范围"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"caseName": "数据值域验证",
|
||||||
|
"source": "综合服务",
|
||||||
|
"tableName": "cms_content",
|
||||||
|
"trueColumn": "cms_type",
|
||||||
|
"tableErrorCount": "196",
|
||||||
|
"notDetail": "数据不符合标准值域范围"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"caseName": "数据值域验证",
|
||||||
|
"source": "综合服务",
|
||||||
|
"tableName": "manager",
|
||||||
|
"trueColumn": "manager_type",
|
||||||
|
"tableErrorCount": "246",
|
||||||
|
"notDetail": "数据不符合标准值域范围"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"caseName": "数据值域验证",
|
||||||
|
"source": "综合服务",
|
||||||
|
"tableName": "mdiy_dict",
|
||||||
|
"trueColumn": "dict_type",
|
||||||
|
"tableErrorCount": "329",
|
||||||
|
"notDetail": "数据不符合标准值域范围"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"caseName": "数据值域验证",
|
||||||
|
"source": "综合服务",
|
||||||
|
"tableName": "mdiy_model",
|
||||||
|
"trueColumn": "model_type",
|
||||||
|
"tableErrorCount": "209",
|
||||||
|
"notDetail": "数据不符合标准值域范围"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"regular": [
|
||||||
|
{
|
||||||
|
"ruleName": "数据正则表达式验证",
|
||||||
|
"ruleSourceName": "智瑞服务",
|
||||||
|
"ruleTableName": "全表",
|
||||||
|
"version": "1.0",
|
||||||
|
"checkTotalTime": "14989",
|
||||||
|
"checkTotalCount": "130264",
|
||||||
|
"checkErrorCount": "8441"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ruleName": "数据正则表达式验证",
|
||||||
|
"ruleSourceName": "综合服务",
|
||||||
|
"ruleTableName": "全表",
|
||||||
|
"version": "1.0",
|
||||||
|
"checkTotalTime": "1699",
|
||||||
|
"checkTotalCount": "15621",
|
||||||
|
"checkErrorCount": "848"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"no_regular": [
|
||||||
|
{
|
||||||
|
"caseName": "数据正则表达式验证",
|
||||||
|
"source": "智瑞服务",
|
||||||
|
"tableName": "t_wf_hi_comment",
|
||||||
|
"trueColumn": "action_",
|
||||||
|
"tableErrorCount": "1269",
|
||||||
|
"notDetail": "数据不符合标准正则表达式约束"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"caseName": "数据正则表达式验证",
|
||||||
|
"source": "智瑞服务",
|
||||||
|
"tableName": "t_wf_hi_detail",
|
||||||
|
"trueColumn": "duration_",
|
||||||
|
"tableErrorCount": "2156",
|
||||||
|
"notDetail": "数据不符合标准正则表达式约束"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"caseName": "数据正则表达式验证",
|
||||||
|
"source": "智瑞服务",
|
||||||
|
"tableName": "t_wf_hi_actinst",
|
||||||
|
"trueColumn": "proc_title",
|
||||||
|
"tableErrorCount": "2497",
|
||||||
|
"notDetail": "数据不符合标准正则表达式约束"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"caseName": "数据正则表达式验证",
|
||||||
|
"source": "智瑞服务",
|
||||||
|
"tableName": "t_wf_hi_taskinst",
|
||||||
|
"trueColumn": "proc_title",
|
||||||
|
"tableErrorCount": "2519",
|
||||||
|
"notDetail": "数据不符合标准正则表达式约束"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"caseName": "数据正则表达式验证",
|
||||||
|
"source": "综合服务",
|
||||||
|
"tableName": "mdiy_model",
|
||||||
|
"trueColumn": "model_name",
|
||||||
|
"tableErrorCount": "339",
|
||||||
|
"notDetail": "数据不符合标准正则表达式约束"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"caseName": "数据正则表达式验证",
|
||||||
|
"source": "综合服务",
|
||||||
|
"tableName": "mdiy_tag",
|
||||||
|
"trueColumn": "tag_class",
|
||||||
|
"tableErrorCount": "212",
|
||||||
|
"notDetail": "数据不符合标准正则表达式约束"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"caseName": "数据正则表达式验证",
|
||||||
|
"source": "综合服务",
|
||||||
|
"tableName": "role_model",
|
||||||
|
"trueColumn": "role_name",
|
||||||
|
"tableErrorCount": "297",
|
||||||
|
"notDetail": "数据不符合标准正则表达式约束"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"dataReport": {
|
||||||
|
"reportTableData1": [
|
||||||
|
{
|
||||||
|
"ruleSourceId": 1,
|
||||||
|
"ruleSourceName": "综合服务",
|
||||||
|
"tableSum": "15621",
|
||||||
|
"tableTime": "6,358",
|
||||||
|
"ruleLevelName": "1.0",
|
||||||
|
"checkErrorCount": "2,540"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ruleSourceId": 1,
|
||||||
|
"ruleSourceName": "智瑞服务",
|
||||||
|
"tableSum": "130264",
|
||||||
|
"tableTime": "54,147",
|
||||||
|
"ruleLevelName": "1.0",
|
||||||
|
"checkErrorCount": "13,255"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"reportTableData2": [
|
||||||
|
{
|
||||||
|
"checkErrorCount": 841,
|
||||||
|
"ruleTypeId": "1",
|
||||||
|
"ruleLevelName": "中",
|
||||||
|
"ruleName": "完整性标准检测"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checkErrorCount": 2382,
|
||||||
|
"ruleTypeId": "1",
|
||||||
|
"ruleLevelName": "中",
|
||||||
|
"ruleName": "准确性标准检测"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checkErrorCount": 3283,
|
||||||
|
"ruleTypeId": "1",
|
||||||
|
"ruleLevelName": "中",
|
||||||
|
"ruleName": "一致性标准检测"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"checkErrorCount": 9289,
|
||||||
|
"ruleTypeId": "1",
|
||||||
|
"ruleLevelName": "中",
|
||||||
|
"ruleName": "正则表达式标准检测"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"checkTotalCount": "145885",
|
||||||
|
"checkTimeConsuming": "60505",
|
||||||
|
"checkErrorCount": "15795"
|
||||||
|
}
|
||||||
|
|
||||||
231
src/views/quality/checkreport/Data_relevance.json
Normal file
@@ -0,0 +1,231 @@
|
|||||||
|
{
|
||||||
|
"caseType": {
|
||||||
|
"relevancData": [
|
||||||
|
{
|
||||||
|
"ruleName": "关系符合性验证",
|
||||||
|
"ruleSourceName": "智瑞服务",
|
||||||
|
"ruleTableName": "全表",
|
||||||
|
"version": "1.0",
|
||||||
|
"checkTotalTime": "13965",
|
||||||
|
"checkTotalCount": "449",
|
||||||
|
"checkErrorCount": "8"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ruleName": "数据关系符合性验证",
|
||||||
|
"ruleSourceName": "综合服务",
|
||||||
|
"ruleTableName": "全表",
|
||||||
|
"version": "1.0",
|
||||||
|
"checkTotalTime": "3169",
|
||||||
|
"checkTotalCount": "78",
|
||||||
|
"checkErrorCount": "7"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"no_relevancData":[
|
||||||
|
{
|
||||||
|
"caseName": "关系符合性验证",
|
||||||
|
"source": "智瑞服务",
|
||||||
|
"tableName": "t_wf_doc_audit_apply",
|
||||||
|
"standardColumn": "id",
|
||||||
|
"trueColumn": "id",
|
||||||
|
"truePk": "否",
|
||||||
|
"trueFk": "是",
|
||||||
|
"notDetail": "表字段不符合主键标准约束",
|
||||||
|
"standardPk": "是",
|
||||||
|
"standardFk": "是"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"caseName": "关系符合性验证",
|
||||||
|
"source": "智瑞服务",
|
||||||
|
"tableName": "t_wf_free_audit",
|
||||||
|
"standardColumn": "id",
|
||||||
|
"trueColumn": "id",
|
||||||
|
"truePk": "是",
|
||||||
|
"trueFk": "是",
|
||||||
|
"notDetail": "表字段不符合主键标准约束",
|
||||||
|
"standardPk": "否",
|
||||||
|
"standardFk": "是"
|
||||||
|
},{
|
||||||
|
"caseName": "关系符合性验证",
|
||||||
|
"source": "智瑞服务",
|
||||||
|
"tableName": "t_wf_free_audit",
|
||||||
|
"standardColumn": "department_id",
|
||||||
|
"trueColumn": "department_id",
|
||||||
|
"truePk": "是",
|
||||||
|
"trueFk": "是",
|
||||||
|
"notDetail": "表字段不符合主键标准约束",
|
||||||
|
"standardPk": "是",
|
||||||
|
"standardFk": "否"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"caseName": "关系符合性验证",
|
||||||
|
"source": "智瑞服务",
|
||||||
|
"tableName": "t_wf_ge_property",
|
||||||
|
"standardColumn": "id",
|
||||||
|
"trueColumn": "id",
|
||||||
|
"truePk": "是",
|
||||||
|
"trueFk": "是",
|
||||||
|
"notDetail": "表字段不符合主键标准约束",
|
||||||
|
"standardPk": "否",
|
||||||
|
"standardFk": "是"
|
||||||
|
},{
|
||||||
|
"caseName": "关系符合性验证",
|
||||||
|
"source": "智瑞服务",
|
||||||
|
"tableName": "t_wf_hi_identitylink",
|
||||||
|
"standardColumn": "id_",
|
||||||
|
"trueColumn": "id_",
|
||||||
|
"truePk": "是",
|
||||||
|
"trueFk": "是",
|
||||||
|
"notDetail": "表字段不符合主键标准约束",
|
||||||
|
"standardPk": "否",
|
||||||
|
"standardFk": "是"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"caseName": "关系符合性验证",
|
||||||
|
"source": "智瑞服务",
|
||||||
|
"tableName": "t_wf_hi_identitylink",
|
||||||
|
"standardColumn": "group_id_",
|
||||||
|
"trueColumn": "group_id_",
|
||||||
|
"truePk": "否",
|
||||||
|
"trueFk": "是",
|
||||||
|
"notDetail": "表字段不符合主键标准约束",
|
||||||
|
"standardPk": "否",
|
||||||
|
"standardFk": "否"
|
||||||
|
},{
|
||||||
|
"caseName": "关系符合性验证",
|
||||||
|
"source": "智瑞服务",
|
||||||
|
"tableName": "t_wf_hi_procinst",
|
||||||
|
"standardColumn": "id_",
|
||||||
|
"trueColumn": "id_",
|
||||||
|
"truePk": "是",
|
||||||
|
"trueFk": "是",
|
||||||
|
"notDetail": "表字段不符合主键标准约束",
|
||||||
|
"standardPk": "否",
|
||||||
|
"standardFk": "是"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"caseName": "关系符合性验证",
|
||||||
|
"source": "智瑞服务",
|
||||||
|
"tableName": "t_wf_hi_procinst",
|
||||||
|
"standardColumn": "proc_inst_id_",
|
||||||
|
"trueColumn": "proc_inst_id_",
|
||||||
|
"truePk": "是",
|
||||||
|
"trueFk": "是",
|
||||||
|
"notDetail": "表字段不符合主键标准约束",
|
||||||
|
"standardPk": "是",
|
||||||
|
"standardFk": "否"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"caseName": "数据关系符合性验证",
|
||||||
|
"source": "综合服务",
|
||||||
|
"tableName": "cms_category",
|
||||||
|
"standardColumn": "id",
|
||||||
|
"trueColumn": "id",
|
||||||
|
"truePk": "是",
|
||||||
|
"trueFk": "是",
|
||||||
|
"notDetail": "表字段不符合主键标准约束",
|
||||||
|
"standardPk": "否",
|
||||||
|
"standardFk": "是"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"caseName": "数据关系符合性验证",
|
||||||
|
"source": "综合服务",
|
||||||
|
"tableName": "cms_category",
|
||||||
|
"standardColumn": "category_id",
|
||||||
|
"trueColumn": "category_id",
|
||||||
|
"truePk": "是",
|
||||||
|
"trueFk": "是",
|
||||||
|
"notDetail": "表字段不符合主键标准约束",
|
||||||
|
"standardPk": "是",
|
||||||
|
"standardFk": "否"
|
||||||
|
},{
|
||||||
|
"caseName": "数据关系符合性验证",
|
||||||
|
"source": "综合服务",
|
||||||
|
"tableName": "cms_content",
|
||||||
|
"standardColumn": "id",
|
||||||
|
"trueColumn": "id",
|
||||||
|
"truePk": "是",
|
||||||
|
"trueFk": "是",
|
||||||
|
"notDetail": "表字段不符合主键标准约束",
|
||||||
|
"standardPk": "是",
|
||||||
|
"standardFk": "否"
|
||||||
|
},{
|
||||||
|
"caseName": "数据关系符合性验证",
|
||||||
|
"source": "综合服务",
|
||||||
|
"tableName": "manager",
|
||||||
|
"standardColumn": "id",
|
||||||
|
"trueColumn": "id",
|
||||||
|
"truePk": "是",
|
||||||
|
"trueFk": "是",
|
||||||
|
"notDetail": "表字段不符合主键标准约束",
|
||||||
|
"standardPk": "是",
|
||||||
|
"standardFk": "否"
|
||||||
|
},{
|
||||||
|
"caseName": "数据关系符合性验证",
|
||||||
|
"source": "综合服务",
|
||||||
|
"tableName": "model",
|
||||||
|
"standardColumn": "id",
|
||||||
|
"trueColumn": "id",
|
||||||
|
"truePk": "是",
|
||||||
|
"trueFk": "是",
|
||||||
|
"notDetail": "表字段不符合主键标准约束",
|
||||||
|
"standardPk": "否",
|
||||||
|
"standardFk": "是"
|
||||||
|
},{
|
||||||
|
"caseName": "数据关系符合性验证",
|
||||||
|
"source": "综合服务",
|
||||||
|
"tableName": "model",
|
||||||
|
"standardColumn": "model_id",
|
||||||
|
"trueColumn": "model_id",
|
||||||
|
"truePk": "是",
|
||||||
|
"trueFk": "是",
|
||||||
|
"notDetail": "表字段不符合主键标准约束",
|
||||||
|
"standardPk": "是",
|
||||||
|
"standardFk": "否"
|
||||||
|
},{
|
||||||
|
"caseName": "数据关系符合性验证",
|
||||||
|
"source": "综合服务",
|
||||||
|
"tableName": "mdiy_page",
|
||||||
|
"standardColumn": "id",
|
||||||
|
"trueColumn": "id",
|
||||||
|
"truePk": "是",
|
||||||
|
"trueFk": "是",
|
||||||
|
"notDetail": "表字段不符合主键标准约束",
|
||||||
|
"standardPk": "否",
|
||||||
|
"standardFk": "是"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"dataReport": {
|
||||||
|
"reportTableData1": [
|
||||||
|
{
|
||||||
|
"ruleSourceId": 1,
|
||||||
|
"ruleSourceName": "智瑞服务",
|
||||||
|
"tableSum": "449",
|
||||||
|
"tableTime": "13965",
|
||||||
|
"ruleLevelName": "1.0",
|
||||||
|
"checkErrorCount": "7"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ruleSourceId": 1,
|
||||||
|
"ruleSourceName": "综合服务",
|
||||||
|
"tableSum": "78",
|
||||||
|
"tableTime": "3169",
|
||||||
|
"ruleLevelName": "1.0",
|
||||||
|
"checkErrorCount": "8"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"reportTableData2": [
|
||||||
|
{
|
||||||
|
"checkErrorCount": 15,
|
||||||
|
"ruleTypeId": "1",
|
||||||
|
"ruleTypeName": "数据平台",
|
||||||
|
"ruleLevelName": "中",
|
||||||
|
"ruleName": "字段关联性检测用例"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"checkTotalCount": "527",
|
||||||
|
"checkTimeConsuming": "17134",
|
||||||
|
"checkErrorCount": "15"
|
||||||
|
}
|
||||||
|
|
||||||
@@ -6,16 +6,25 @@
|
|||||||
<transition name="el-zoom-in-bottom">
|
<transition name="el-zoom-in-bottom">
|
||||||
<check-report-structure v-if="options.showDetail" :data="options.data" @showCard="showCard" />
|
<check-report-structure v-if="options.showDetail" :data="options.data" @showCard="showCard" />
|
||||||
</transition>
|
</transition>
|
||||||
|
|
||||||
|
<transition name="el-zoom-in-bottom">
|
||||||
|
<check-report-structure-content v-if="options.showDetail_content" :data="options.data" @showCard="showCard" />
|
||||||
|
</transition>
|
||||||
|
<transition name="el-zoom-in-bottom">
|
||||||
|
<check-report-structure-relevance v-if="options.showDetail_relevance" :data="options.data" @showCard="showCard" />
|
||||||
|
</transition>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import CheckReportList from './CheckReportList'
|
import CheckReportList from './CheckReportList'
|
||||||
import CheckReportStructure from './CheckReportStructure'
|
import CheckReportStructure from './CheckReportStructure'
|
||||||
|
import CheckReportStructureContent from './CheckReportStructure_content'
|
||||||
|
import CheckReportStructureRelevance from './CheckReportStructure_relevance'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'CheckReport',
|
name: 'CheckReport',
|
||||||
components: { CheckReportList, CheckReportStructure },
|
components: { CheckReportList, CheckReportStructure, CheckReportStructureContent, CheckReportStructureRelevance },
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
options: {
|
options: {
|
||||||
@@ -26,7 +35,6 @@
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
showCard(data) {
|
showCard(data) {
|
||||||
console.log('ffffffffff', data)
|
|
||||||
Object.assign(this.options, data)
|
Object.assign(this.options, data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,17 +3,24 @@
|
|||||||
<div slot="header" class="clearfix">
|
<div slot="header" class="clearfix">
|
||||||
<span>{{ title }}</span>
|
<span>{{ title }}</span>
|
||||||
<el-button-group style="float: right;">
|
<el-button-group style="float: right;">
|
||||||
<el-button type="primary" size="mini" icon="el-icon-finished" :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
<el-button v-if="active == 2" type="primary" size="mini" icon="el-icon-finished" :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
||||||
|
<el-button v-if="active == 1" size="mini" type="primary" @click="handleNextStep">下一步</el-button>
|
||||||
|
<el-button v-if="active == 2" size="mini" type="primary" @click="handleLastStep">上一步</el-button>
|
||||||
<el-button size="mini" icon="el-icon-back" @click="showCard">返回</el-button>
|
<el-button size="mini" icon="el-icon-back" @click="showCard">返回</el-button>
|
||||||
</el-button-group>
|
</el-button-group>
|
||||||
</div>
|
</div>
|
||||||
<div class="body-wrapper">
|
<div class="body-wrapper" style="padding-left: 20%">
|
||||||
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
<el-steps :active="active" finish-status="success" align-center style="width: 900px">
|
||||||
<el-form-item label="规则名称" prop="ruleName">
|
<el-step title="填写检测用例信息" />
|
||||||
<el-input v-model="form.ruleName" placeholder="请输入规则名称" />
|
<el-step title="选择检测数据源" />
|
||||||
|
</el-steps>
|
||||||
|
<el-form v-if="active == 1" ref="form" :model="form" :rules="rules" label-width="120px" style="width: 800px">
|
||||||
|
<div style="padding: 20px 100px">
|
||||||
|
<el-form-item label="用例名称" prop="ruleName">
|
||||||
|
<el-input v-model="form.ruleName" placeholder="请输入用例名称" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="核查类型" prop="ruleItemId">
|
<el-form-item label="检测类型" prop="ruleItemId">
|
||||||
<el-select v-model="form.ruleItemId" placeholder="请选择核查类型" @change="ruleItemSelectChanged">
|
<el-select v-model="form.ruleItemId" placeholder="请选择检测类型" style="width: 100%" @change="ruleItemSelectChanged">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in ruleItemOptions"
|
v-for="item in ruleItemOptions"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
@@ -22,18 +29,22 @@
|
|||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="规则级别" prop="ruleLevelId">
|
<!-- <el-form-item label="用例级别" prop="ruleLevelId">-->
|
||||||
<el-select v-model="form.ruleLevelId" placeholder="请选择规则级别">
|
<!-- <el-select v-model="form.ruleLevelId" placeholder="请选择用例级别" style="width: 100%">-->
|
||||||
<el-option
|
<!-- <el-option-->
|
||||||
v-for="item in ruleLevelOptions"
|
<!-- v-for="item in ruleLevelOptions"-->
|
||||||
:key="item.id"
|
<!-- :key="item.id"-->
|
||||||
:label="item.name"
|
<!-- :label="item.name"-->
|
||||||
:value="item.id"
|
<!-- :value="item.id"-->
|
||||||
/>
|
<!-- />-->
|
||||||
</el-select>
|
<!-- </el-select>-->
|
||||||
</el-form-item>
|
<!-- </el-form-item>-->
|
||||||
|
</div>
|
||||||
|
</el-form>
|
||||||
|
<el-form v-if="active == 2" ref="form" :model="form" :rules="rules" label-width="80px" style="width: 800px">
|
||||||
|
<div style="padding: 20px 100px">
|
||||||
<el-form-item label="数据源" prop="ruleSourceId">
|
<el-form-item label="数据源" prop="ruleSourceId">
|
||||||
<el-select v-model="form.ruleSourceId" placeholder="请选择数据源" @change="sourceSelectChanged">
|
<el-select v-model="form.ruleSourceId" placeholder="请选择数据源" style="width: 100%" @change="sourceSelectChanged">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="source in sourceOptions"
|
v-for="source in sourceOptions"
|
||||||
:key="source.id"
|
:key="source.id"
|
||||||
@@ -42,16 +53,15 @@
|
|||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<div>
|
<!--<el-transfer
|
||||||
<el-transfer
|
|
||||||
v-model="form.transferValue"
|
v-model="form.transferValue"
|
||||||
filterable
|
filterable
|
||||||
:titles="['备选', '已选']"
|
:titles="['备选', '已选']"
|
||||||
:filter-method="filterMethod"
|
:filter-method="filterMethod"
|
||||||
|
:format="formatTransfer"
|
||||||
filter-placeholder="请输入表名"
|
filter-placeholder="请输入表名"
|
||||||
:data="transferData"
|
:data="transferData"
|
||||||
/>
|
/>-->
|
||||||
</div>
|
|
||||||
<el-form-item label="状态" prop="status">
|
<el-form-item label="状态" prop="status">
|
||||||
<el-radio-group v-model="form.status">
|
<el-radio-group v-model="form.status">
|
||||||
<el-radio
|
<el-radio
|
||||||
@@ -65,6 +75,7 @@
|
|||||||
<el-form-item label="备注" prop="remark">
|
<el-form-item label="备注" prop="remark">
|
||||||
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
|
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
</div>
|
||||||
</el-form>
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
@@ -75,7 +86,6 @@ import { listRuleLevel, listRuleItem, addCheckRule, listSourceIdBytable } from '
|
|||||||
import { listDataSource } from '@/api/metadata/datasource'
|
import { listDataSource } from '@/api/metadata/datasource'
|
||||||
import { listDataTable } from '@/api/metadata/datatable'
|
import { listDataTable } from '@/api/metadata/datatable'
|
||||||
import { listDataColumn } from '@/api/metadata/datacolumn'
|
import { listDataColumn } from '@/api/metadata/datacolumn'
|
||||||
import { listDataDictType } from '@/api/standard/datadict'
|
|
||||||
import { Transfer } from 'element-ui'
|
import { Transfer } from 'element-ui'
|
||||||
import 'element-ui/lib/theme-chalk/index.css'
|
import 'element-ui/lib/theme-chalk/index.css'
|
||||||
export default {
|
export default {
|
||||||
@@ -96,7 +106,8 @@ export default {
|
|||||||
// eslint-disable-next-line vue/no-dupe-keys
|
// eslint-disable-next-line vue/no-dupe-keys
|
||||||
transferData: [],
|
transferData: [],
|
||||||
|
|
||||||
title: '核查规则新增',
|
title: '检测用例新增',
|
||||||
|
active: 1,
|
||||||
// 展示切换
|
// 展示切换
|
||||||
showOptions: {
|
showOptions: {
|
||||||
data: {},
|
data: {},
|
||||||
@@ -153,7 +164,8 @@ export default {
|
|||||||
},
|
},
|
||||||
status: '1',
|
status: '1',
|
||||||
zzStatus: '0', // 状态正则
|
zzStatus: '0', // 状态正则
|
||||||
transferValue: []
|
transferValue: [],
|
||||||
|
transferValueName: []
|
||||||
},
|
},
|
||||||
// 表单校验
|
// 表单校验
|
||||||
rules: {
|
rules: {
|
||||||
@@ -163,9 +175,6 @@ export default {
|
|||||||
ruleItemId: [
|
ruleItemId: [
|
||||||
{ required: true, message: '核查类型不能为空', trigger: 'change' }
|
{ required: true, message: '核查类型不能为空', trigger: 'change' }
|
||||||
],
|
],
|
||||||
ruleLevelId: [
|
|
||||||
{ required: true, message: '规则级别不能为空', trigger: 'change' }
|
|
||||||
],
|
|
||||||
ruleSourceId: [
|
ruleSourceId: [
|
||||||
{ required: true, message: '数据源不能为空', trigger: 'change' }
|
{ required: true, message: '数据源不能为空', trigger: 'change' }
|
||||||
],
|
],
|
||||||
@@ -201,11 +210,6 @@ export default {
|
|||||||
this.statusOptions = response.data
|
this.statusOptions = response.data
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
listDataDictType().then(response => {
|
|
||||||
if (response.success) {
|
|
||||||
this.dictTypeOptions = response.data
|
|
||||||
}
|
|
||||||
})
|
|
||||||
this.getRuleLevelList()
|
this.getRuleLevelList()
|
||||||
this.getRuleItemList()
|
this.getRuleItemList()
|
||||||
this.getDataSourceList()
|
this.getDataSourceList()
|
||||||
@@ -213,24 +217,39 @@ export default {
|
|||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
filterMethod(query, item) {
|
filterMethod(query, item) {
|
||||||
return item.pinyin.indexOf(query) > -1
|
return item.tableNameStr.indexOf(query) > -1
|
||||||
|
},
|
||||||
|
formatTransfer(item) {
|
||||||
|
return item.label
|
||||||
},
|
},
|
||||||
generateData(tableData) {
|
generateData(tableData) {
|
||||||
const data = []
|
const data = []
|
||||||
const tableName = tableData
|
const tableName = tableData // 确保 tableData 是数组,包含有 label 属性的对象
|
||||||
const pinyin = tableData
|
tableName.forEach((tableItem) => {
|
||||||
tableName.forEach((tableData, index) => {
|
|
||||||
data.push({
|
data.push({
|
||||||
label: tableData,
|
label: tableItem.label,
|
||||||
key: tableData,
|
key: tableItem.key,
|
||||||
pinyin: pinyin[index]
|
tableNameStr: tableItem.label // 直接使用 tableItem.label
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
this.transferData = data
|
this.transferData = data
|
||||||
|
console.log('this.transferData==', this.transferData)
|
||||||
},
|
},
|
||||||
showCard() {
|
showCard() {
|
||||||
this.$emit('showCard', this.showOptions)
|
this.$emit('showCard', this.showOptions)
|
||||||
},
|
},
|
||||||
|
/** 步骤条下一步 */
|
||||||
|
handleNextStep() {
|
||||||
|
this.$refs['form'].validate(valid => {
|
||||||
|
if (valid) {
|
||||||
|
this.active++
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/** 步骤条上一步 */
|
||||||
|
handleLastStep() {
|
||||||
|
this.active--
|
||||||
|
},
|
||||||
getRuleLevelList() {
|
getRuleLevelList() {
|
||||||
listRuleLevel().then(response => {
|
listRuleLevel().then(response => {
|
||||||
if (response.success) {
|
if (response.success) {
|
||||||
@@ -262,7 +281,7 @@ export default {
|
|||||||
async sourceSelectChanged(val) {
|
async sourceSelectChanged(val) {
|
||||||
// this.inspectSourceId(val)
|
// this.inspectSourceId(val)
|
||||||
// const tableNameOldList = []
|
// const tableNameOldList = []
|
||||||
const tableNameOldList = await listSourceIdBytable(val, this.form.ruleConfig.id).then(response => {
|
/* const tableNameOldList = await listSourceIdBytable(val, this.form.ruleConfig.id).then(response => {
|
||||||
const result = []
|
const result = []
|
||||||
for (let i = 0; i < response.data.length; i++) {
|
for (let i = 0; i < response.data.length; i++) {
|
||||||
const tableName = response.data[i].ruleTable
|
const tableName = response.data[i].ruleTable
|
||||||
@@ -276,8 +295,12 @@ export default {
|
|||||||
const tableNameList = []
|
const tableNameList = []
|
||||||
for (let i = 0; i < response.data.length; i++) {
|
for (let i = 0; i < response.data.length; i++) {
|
||||||
const tableName = response.data[i].tableName
|
const tableName = response.data[i].tableName
|
||||||
|
const tableId = response.data[i].id
|
||||||
|
const map = {}
|
||||||
if (!tableNameOldList.some((str) => str === tableName)) {
|
if (!tableNameOldList.some((str) => str === tableName)) {
|
||||||
tableNameList.push(tableName)
|
map.key = tableId
|
||||||
|
map.label = tableName
|
||||||
|
tableNameList.push(map)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
await this.generateData(tableNameList)
|
await this.generateData(tableNameList)
|
||||||
@@ -296,9 +319,22 @@ export default {
|
|||||||
this.form.ruleColumn = ''
|
this.form.ruleColumn = ''
|
||||||
this.form.ruleColumnComment = ''
|
this.form.ruleColumnComment = ''
|
||||||
|
|
||||||
console.log('tableNameOldList=', tableNameOldList)
|
// console.log('tableNameOldList=', tableNameOldList)
|
||||||
this.form.transferValue = tableNameOldList
|
// this.form.transferValue = tableNameOldList
|
||||||
}
|
}*/
|
||||||
|
|
||||||
|
const source = this.sourceOptions.find(function (item) {
|
||||||
|
return item.id === val
|
||||||
|
})
|
||||||
|
this.form.transferValue = ['全表']
|
||||||
|
this.form.ruleSource = source.sourceName
|
||||||
|
this.form.ruleDbType = source.dbType
|
||||||
|
this.form.ruleTableId = 'all'
|
||||||
|
this.form.ruleTable = '全表'
|
||||||
|
this.form.ruleTableComment = ''
|
||||||
|
this.form.ruleColumnId = ''
|
||||||
|
this.form.ruleColumn = ''
|
||||||
|
this.form.ruleColumnComment = ''
|
||||||
},
|
},
|
||||||
// 根据来源数据获取已有表
|
// 根据来源数据获取已有表
|
||||||
inspectSourceId(val) {
|
inspectSourceId(val) {
|
||||||
@@ -365,6 +401,7 @@ export default {
|
|||||||
},
|
},
|
||||||
/** 提交按钮 */
|
/** 提交按钮 */
|
||||||
submitForm: function () {
|
submitForm: function () {
|
||||||
|
console.log('transferValue', this.form.transferValue)
|
||||||
this.$refs['form'].validate(valid => {
|
this.$refs['form'].validate(valid => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
this.loadingOptions.loading = true
|
this.loadingOptions.loading = true
|
||||||
|
|||||||
@@ -21,16 +21,16 @@
|
|||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="规则级别">
|
<!-- <el-form-item label="规则级别">-->
|
||||||
<el-select v-model="form.ruleLevelId">
|
<!-- <el-select v-model="form.ruleLevelId">-->
|
||||||
<el-option
|
<!-- <el-option-->
|
||||||
v-for="item in ruleLevelOptions"
|
<!-- v-for="item in ruleLevelOptions"-->
|
||||||
:key="item.id"
|
<!-- :key="item.id"-->
|
||||||
:label="item.name"
|
<!-- :label="item.name"-->
|
||||||
:value="item.id"
|
<!-- :value="item.id"-->
|
||||||
/>
|
<!-- />-->
|
||||||
</el-select>
|
<!-- </el-select>-->
|
||||||
</el-form-item>
|
<!-- </el-form-item>-->
|
||||||
<el-form-item label="数据源">
|
<el-form-item label="数据源">
|
||||||
<el-select v-model="form.ruleSourceId">
|
<el-select v-model="form.ruleSourceId">
|
||||||
<el-option
|
<el-option
|
||||||
@@ -65,77 +65,6 @@
|
|||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</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="请选择">
|
|
||||||
<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="请选择">
|
|
||||||
<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="请选择">
|
|
||||||
<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-form-item label="状态">
|
<el-form-item label="状态">
|
||||||
<el-radio-group v-model="form.status">
|
<el-radio-group v-model="form.status">
|
||||||
<el-radio
|
<el-radio
|
||||||
@@ -207,13 +136,7 @@ export default {
|
|||||||
this.statusOptions = response.data
|
this.statusOptions = response.data
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
listDataDictType().then(response => {
|
|
||||||
if (response.success) {
|
|
||||||
this.dictTypeOptions = response.data
|
|
||||||
}
|
|
||||||
})
|
|
||||||
this.getRuleLevelList()
|
this.getRuleLevelList()
|
||||||
this.getDataSourceList()
|
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.getCheckRule(this.data.id)
|
this.getCheckRule(this.data.id)
|
||||||
@@ -259,13 +182,6 @@ export default {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
getDataSourceList() {
|
|
||||||
listDataSource().then(response => {
|
|
||||||
if (response.success) {
|
|
||||||
this.sourceOptions = response.data
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<div slot="header" class="clearfix">
|
<div slot="header" class="clearfix">
|
||||||
<span>{{ title }}</span>
|
<span>{{ title }}</span>
|
||||||
<el-button-group style="float: right;">
|
<el-button-group style="float: right;">
|
||||||
<el-button v-hasPerm="['quality:rule:edit']" type="primary" size="mini" icon="el-icon-finished" :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
<el-button type="primary" size="mini" icon="el-icon-finished" :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
||||||
<el-button size="mini" icon="el-icon-back" @click="showCard">返回</el-button>
|
<el-button size="mini" icon="el-icon-back" @click="showCard">返回</el-button>
|
||||||
</el-button-group>
|
</el-button-group>
|
||||||
</div>
|
</div>
|
||||||
@@ -22,16 +22,16 @@
|
|||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="规则级别" prop="ruleLevelId">
|
<!-- <el-form-item label="规则级别" prop="ruleLevelId">-->
|
||||||
<el-select v-model="form.ruleLevelId" placeholder="请选择规则级别">
|
<!-- <el-select v-model="form.ruleLevelId" placeholder="请选择规则级别">-->
|
||||||
<el-option
|
<!-- <el-option-->
|
||||||
v-for="item in ruleLevelOptions"
|
<!-- v-for="item in ruleLevelOptions"-->
|
||||||
:key="item.id"
|
<!-- :key="item.id"-->
|
||||||
:label="item.name"
|
<!-- :label="item.name"-->
|
||||||
:value="item.id"
|
<!-- :value="item.id"-->
|
||||||
/>
|
<!-- />-->
|
||||||
</el-select>
|
<!-- </el-select>-->
|
||||||
</el-form-item>
|
<!-- </el-form-item>-->
|
||||||
<el-form-item label="数据源" prop="ruleSourceId">
|
<el-form-item label="数据源" prop="ruleSourceId">
|
||||||
<el-select v-model="form.ruleSourceId" placeholder="请选择数据源" @change="sourceSelectChanged">
|
<el-select v-model="form.ruleSourceId" placeholder="请选择数据源" @change="sourceSelectChanged">
|
||||||
<el-option
|
<el-option
|
||||||
@@ -54,89 +54,6 @@
|
|||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</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-form-item label="状态" prop="status">
|
<el-form-item label="状态" prop="status">
|
||||||
<el-radio-group v-model="form.status">
|
<el-radio-group v-model="form.status">
|
||||||
<el-radio
|
<el-radio
|
||||||
@@ -159,7 +76,6 @@ import { listRuleLevel, listRuleItem, getCheckRule, updateCheckRule } from '@/ap
|
|||||||
import { listDataSource } from '@/api/metadata/datasource'
|
import { listDataSource } from '@/api/metadata/datasource'
|
||||||
import { listDataTable } from '@/api/metadata/datatable'
|
import { listDataTable } from '@/api/metadata/datatable'
|
||||||
import { listDataColumn } from '@/api/metadata/datacolumn'
|
import { listDataColumn } from '@/api/metadata/datacolumn'
|
||||||
import { listDataDictType } from '@/api/standard/datadict'
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'CheckRuleEdit',
|
name: 'CheckRuleEdit',
|
||||||
@@ -189,7 +105,9 @@ export default {
|
|||||||
isDisabled: false
|
isDisabled: false
|
||||||
},
|
},
|
||||||
// 表单参数
|
// 表单参数
|
||||||
form: {},
|
form: {
|
||||||
|
qualityType: 'jg'
|
||||||
|
},
|
||||||
// 表单校验
|
// 表单校验
|
||||||
rules: {
|
rules: {
|
||||||
ruleName: [
|
ruleName: [
|
||||||
@@ -198,9 +116,6 @@ export default {
|
|||||||
ruleItemId: [
|
ruleItemId: [
|
||||||
{ required: true, message: '核查类型不能为空', trigger: 'change' }
|
{ required: true, message: '核查类型不能为空', trigger: 'change' }
|
||||||
],
|
],
|
||||||
ruleLevelId: [
|
|
||||||
{ required: true, message: '规则级别不能为空', trigger: 'change' }
|
|
||||||
],
|
|
||||||
ruleSourceId: [
|
ruleSourceId: [
|
||||||
{ required: true, message: '数据源不能为空', trigger: 'change' }
|
{ required: true, message: '数据源不能为空', trigger: 'change' }
|
||||||
],
|
],
|
||||||
@@ -235,11 +150,6 @@ export default {
|
|||||||
this.statusOptions = response.data
|
this.statusOptions = response.data
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
listDataDictType().then(response => {
|
|
||||||
if (response.success) {
|
|
||||||
this.dictTypeOptions = response.data
|
|
||||||
}
|
|
||||||
})
|
|
||||||
this.getRuleLevelList()
|
this.getRuleLevelList()
|
||||||
this.getDataSourceList()
|
this.getDataSourceList()
|
||||||
},
|
},
|
||||||
@@ -263,6 +173,7 @@ export default {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
this.tableOptions = await listDataTable({ sourceId: this.form.ruleSourceId }).then(response => {
|
this.tableOptions = await listDataTable({ sourceId: this.form.ruleSourceId }).then(response => {
|
||||||
|
console.log('response.data==', response.data)
|
||||||
if (response.success) {
|
if (response.success) {
|
||||||
return response.data
|
return response.data
|
||||||
}
|
}
|
||||||
@@ -378,6 +289,7 @@ export default {
|
|||||||
this.loadingOptions.loading = true
|
this.loadingOptions.loading = true
|
||||||
this.loadingOptions.loadingText = '保存中...'
|
this.loadingOptions.loadingText = '保存中...'
|
||||||
this.loadingOptions.isDisabled = true
|
this.loadingOptions.isDisabled = true
|
||||||
|
this.form.qualityType = 'jg'
|
||||||
updateCheckRule(this.form).then(response => {
|
updateCheckRule(this.form).then(response => {
|
||||||
if (response.success) {
|
if (response.success) {
|
||||||
this.$message.success('保存成功')
|
this.$message.success('保存成功')
|
||||||
|
|||||||
@@ -26,6 +26,11 @@
|
|||||||
<el-col :span="18">
|
<el-col :span="18">
|
||||||
<el-card class="box-card" shadow="always">
|
<el-card class="box-card" shadow="always">
|
||||||
<el-form ref="queryForm" :model="queryParams" :inline="true">
|
<el-form ref="queryForm" :model="queryParams" :inline="true">
|
||||||
|
<el-form-item label="项目" prop="projectId">
|
||||||
|
<el-select v-model="queryParams.projectId" clearable size="small" placeholder="项目" class="filter-item" @change="handleQuery">
|
||||||
|
<el-option v-for="item in projectsOptions" :key="item.id" :label="item.projectName" :value="item.id" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item label="数据源" prop="ruleName">
|
<el-form-item label="数据源" prop="ruleName">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="queryParams.ruleSource"
|
v-model="queryParams.ruleSource"
|
||||||
@@ -46,10 +51,10 @@
|
|||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="规则名称" prop="ruleName">
|
<el-form-item label="用例名称" prop="ruleName">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="queryParams.ruleName"
|
v-model="queryParams.ruleName"
|
||||||
placeholder="请输入规则名称"
|
placeholder="请输入用例名称"
|
||||||
clearable
|
clearable
|
||||||
size="small"
|
size="small"
|
||||||
@keyup.enter.native="handleQuery"
|
@keyup.enter.native="handleQuery"
|
||||||
@@ -65,13 +70,20 @@
|
|||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-button-group>
|
<el-button-group>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['quality:rule:add']"
|
|
||||||
type="primary"
|
type="primary"
|
||||||
icon="el-icon-plus"
|
icon="el-icon-plus"
|
||||||
size="mini"
|
size="mini"
|
||||||
@click="handleAdd"
|
@click="handleAdd"
|
||||||
>新增</el-button>
|
>新增</el-button>
|
||||||
</el-button-group>
|
</el-button-group>
|
||||||
|
<el-button-group>
|
||||||
|
<el-button
|
||||||
|
type="danger"
|
||||||
|
icon="el-icon-delete"
|
||||||
|
size="mini"
|
||||||
|
@click="deleteSelected"
|
||||||
|
>删除</el-button>
|
||||||
|
</el-button-group>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<div class="right-toolbar">
|
<div class="right-toolbar">
|
||||||
@@ -120,6 +132,7 @@
|
|||||||
:size="tableSize"
|
:size="tableSize"
|
||||||
:height="tableHeight"
|
:height="tableHeight"
|
||||||
style="width: 100%;margin: 15px 0;"
|
style="width: 100%;margin: 15px 0;"
|
||||||
|
@selection-change="handleSelectionChange"
|
||||||
>
|
>
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column type="selection" width="55" align="center" />
|
||||||
<el-table-column label="序号" width="55" align="center">
|
<el-table-column label="序号" width="55" align="center">
|
||||||
@@ -142,21 +155,18 @@
|
|||||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="200">
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="200">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['quality:rule:edit']"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-edit-outline"
|
icon="el-icon-edit-outline"
|
||||||
@click="handleEdit(scope.row)"
|
@click="handleEdit(scope.row)"
|
||||||
>修改</el-button>
|
>修改</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['quality:rule:detail']"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-view"
|
icon="el-icon-view"
|
||||||
@click="handleDetail(scope.row)"
|
@click="handleDetail(scope.row)"
|
||||||
>详情</el-button>
|
>详情</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['quality:rule:remove']"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-delete"
|
icon="el-icon-delete"
|
||||||
@@ -201,11 +211,11 @@ export default {
|
|||||||
// 表格头
|
// 表格头
|
||||||
tableColumns: [
|
tableColumns: [
|
||||||
{ prop: 'ruleSource', label: '数据源', show: true },
|
{ prop: 'ruleSource', label: '数据源', show: true },
|
||||||
{ prop: 'ruleTable', label: '数据表', show: true, formatter: this.ruleTableFormatter },
|
/* { prop: 'ruleTable', label: '数据表', show: true, formatter: this.ruleTableFormatter },*/
|
||||||
{ prop: 'ruleName', label: '规则名称', show: true },
|
{ prop: 'ruleName', label: '用例名称', show: true },
|
||||||
{ prop: 'ruleType', label: '规则类型', show: true },
|
{ prop: 'ruleType', label: '用例类型', show: true },
|
||||||
// { prop: 'ruleColumn', label: '核查字段', show: true, formatter: this.ruleColumnFormatter },
|
// { prop: 'ruleColumn', label: '核查字段', show: true, formatter: this.ruleColumnFormatter },
|
||||||
{ prop: 'ruleLevel', label: '规则级别', width: 100, show: true },
|
// { prop: 'ruleLevel', label: '用例级别', width: 100, show: true },
|
||||||
{
|
{
|
||||||
prop: 'status',
|
prop: 'status',
|
||||||
label: '状态',
|
label: '状态',
|
||||||
@@ -215,6 +225,9 @@ export default {
|
|||||||
},
|
},
|
||||||
{ prop: 'createTime', label: '创建时间', show: true }
|
{ prop: 'createTime', label: '创建时间', show: true }
|
||||||
],
|
],
|
||||||
|
projectsOptions: [
|
||||||
|
{ id: '1111', projectName: '演示项目' }
|
||||||
|
],
|
||||||
// 默认选择中表格头
|
// 默认选择中表格头
|
||||||
checkedTableColumns: [],
|
checkedTableColumns: [],
|
||||||
tableSize: 'medium',
|
tableSize: 'medium',
|
||||||
@@ -228,16 +241,18 @@ export default {
|
|||||||
queryParams: {
|
queryParams: {
|
||||||
pageNum: 1,
|
pageNum: 1,
|
||||||
pageSize: 20,
|
pageSize: 20,
|
||||||
|
projectId: '1111',
|
||||||
ruleTypeId: '',
|
ruleTypeId: '',
|
||||||
ruleName: '',
|
ruleName: '',
|
||||||
ruleType: 'jj'
|
ruleType: 'jg'
|
||||||
},
|
},
|
||||||
// 左侧树
|
// 左侧树
|
||||||
ruleTypeOptions: [],
|
ruleTypeOptions: [],
|
||||||
defaultProps: {
|
defaultProps: {
|
||||||
children: 'children',
|
children: 'children',
|
||||||
label: 'name'
|
label: 'name'
|
||||||
}
|
},
|
||||||
|
selectedRows: []
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
@@ -258,7 +273,7 @@ export default {
|
|||||||
if (response.success) {
|
if (response.success) {
|
||||||
const { data } = response
|
const { data } = response
|
||||||
const tree = {}
|
const tree = {}
|
||||||
tree.name = '规则类型'
|
tree.name = '用例类型'
|
||||||
const children = []
|
const children = []
|
||||||
data.forEach(e => {
|
data.forEach(e => {
|
||||||
if (e.code === 'table_jc' || e.code === 'length_jc' || e.code === 'null_jc' ||
|
if (e.code === 'table_jc' || e.code === 'length_jc' || e.code === 'null_jc' ||
|
||||||
@@ -318,7 +333,7 @@ export default {
|
|||||||
pageSize: 20,
|
pageSize: 20,
|
||||||
ruleTypeId: '',
|
ruleTypeId: '',
|
||||||
ruleName: '',
|
ruleName: '',
|
||||||
ruleType: 'jj'
|
ruleType: 'jg'
|
||||||
}
|
}
|
||||||
this.handleQuery()
|
this.handleQuery()
|
||||||
},
|
},
|
||||||
@@ -330,7 +345,7 @@ export default {
|
|||||||
handleAdd() {
|
handleAdd() {
|
||||||
this.showOptions.data = {}
|
this.showOptions.data = {}
|
||||||
if (!this.queryParams.ruleTypeId) {
|
if (!this.queryParams.ruleTypeId) {
|
||||||
this.$message.warning('请先选择核查规则类型')
|
this.$message.warning('请先选择核查用例类型')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
this.showOptions.data.ruleTypeId = this.queryParams.ruleTypeId
|
this.showOptions.data.ruleTypeId = this.queryParams.ruleTypeId
|
||||||
@@ -374,6 +389,26 @@ export default {
|
|||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
handleSelectionChange(selection) {
|
||||||
|
this.selectedRows = selection
|
||||||
|
},
|
||||||
|
async deleteSelected() {
|
||||||
|
if (this.selectedRows.length === 0) {
|
||||||
|
this.$message.warning('请勾选需要删除的数据')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
await this.$confirm('选中数据将被永久删除, 是否继续?', '提示', {
|
||||||
|
confirmButtonText: '确定',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
type: 'warning'
|
||||||
|
})
|
||||||
|
await Promise.all(this.selectedRows.map(row => delCheckRule(row.id)))
|
||||||
|
this.$message.success('删除成功')
|
||||||
|
this.getList()
|
||||||
|
} catch (error) {
|
||||||
|
}
|
||||||
|
},
|
||||||
handleSizeChange(val) {
|
handleSizeChange(val) {
|
||||||
console.log(`每页 ${val} 条`)
|
console.log(`每页 ${val} 条`)
|
||||||
this.queryParams.pageNum = 1
|
this.queryParams.pageNum = 1
|
||||||
|
|||||||
@@ -69,7 +69,6 @@
|
|||||||
</template><el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="200">
|
</template><el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="200">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['quality:rule:detail']"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-view"
|
icon="el-icon-view"
|
||||||
@@ -112,7 +111,7 @@ export default {
|
|||||||
// 表格头
|
// 表格头
|
||||||
tableColumns: [
|
tableColumns: [
|
||||||
{ prop: 'ruleName', label: '规则名称', show: true },
|
{ prop: 'ruleName', label: '规则名称', show: true },
|
||||||
{ prop: 'ruleType', label: '规则类型', show: true },
|
{ prop: 'ruleType', label: '用例类型', show: true },
|
||||||
{ prop: 'ruleSource', label: '数据源', show: true },
|
{ prop: 'ruleSource', label: '数据源', show: true },
|
||||||
{ prop: 'ruleTable', label: '数据表', show: true },
|
{ prop: 'ruleTable', label: '数据表', show: true },
|
||||||
{ prop: 'ruleColumn', label: '核查字段', show: true },
|
{ prop: 'ruleColumn', label: '核查字段', show: true },
|
||||||
@@ -149,7 +148,7 @@ export default {
|
|||||||
if (response.success) {
|
if (response.success) {
|
||||||
const { data } = response
|
const { data } = response
|
||||||
// const tree = {}
|
// const tree = {}
|
||||||
// tree.name = '核查规则类型'
|
// tree.name = '核查用例类型'
|
||||||
// tree.children = data
|
// tree.children = data
|
||||||
// this.ruleTypeOptions = []
|
// this.ruleTypeOptions = []
|
||||||
// this.ruleTypeOptions.push(tree)
|
// this.ruleTypeOptions.push(tree)
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<div slot="header" class="clearfix">
|
<div slot="header" class="clearfix">
|
||||||
<span>{{ title }}</span>
|
<span>{{ title }}</span>
|
||||||
<el-button-group style="float: right;">
|
<el-button-group style="float: right;">
|
||||||
<el-button v-hasPerm="['standard:dict:add']" size="mini" icon="el-icon-plus" round :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
<el-button size="mini" icon="el-icon-plus" round :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
||||||
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
|
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
|
||||||
</el-button-group>
|
</el-button-group>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<div slot="header" class="clearfix">
|
<div slot="header" class="clearfix">
|
||||||
<span>{{ title }}</span>
|
<span>{{ title }}</span>
|
||||||
<el-button-group style="float: right;">
|
<el-button-group style="float: right;">
|
||||||
<el-button v-hasPerm="['standard:dict:edit']" size="mini" icon="el-icon-plus" round :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
<el-button size="mini" icon="el-icon-plus" round :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
||||||
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
|
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
|
||||||
</el-button-group>
|
</el-button-group>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -18,9 +18,9 @@
|
|||||||
<span class="custom-tree-node" @mouseenter="mouseenter(data)" @mouseleave="mouseleave(data)">
|
<span class="custom-tree-node" @mouseenter="mouseenter(data)" @mouseleave="mouseleave(data)">
|
||||||
<span><i v-if="node.level === 1" class="iconfont icon-zuzhi tree-folder" />{{ node.label }}</span>
|
<span><i v-if="node.level === 1" class="iconfont icon-zuzhi tree-folder" />{{ node.label }}</span>
|
||||||
<span class="tree-bts">
|
<span class="tree-bts">
|
||||||
<i v-show="!data.id && data.show" v-hasPerm="['standard:type:add']" class="el-icon-circle-plus-outline bt-add" @click="() => handleAddType()" />
|
<i v-show="!data.id && data.show" class="el-icon-circle-plus-outline bt-add" @click="() => handleAddType()" />
|
||||||
<i v-show="data.id && data.show" v-hasPerm="['standard:type:edit']" class="el-icon-edit-outline bt-edit" @click="() => handleEditType(data)" />
|
<i v-show="data.id && data.show" class="el-icon-edit-outline bt-edit" @click="() => handleEditType(data)" />
|
||||||
<i v-show="data.id && data.show" v-hasPerm="['standard:type:remove']" class="el-icon-delete bt-delete" @click="() => handleDelType(data)" />
|
<i v-show="data.id && data.show" class="el-icon-delete bt-delete" @click="() => handleDelType(data)" />
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
@@ -59,14 +59,12 @@
|
|||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-button-group>
|
<el-button-group>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['standard:dict:add']"
|
|
||||||
type="primary"
|
type="primary"
|
||||||
icon="el-icon-plus"
|
icon="el-icon-plus"
|
||||||
size="mini"
|
size="mini"
|
||||||
@click="handleAdd"
|
@click="handleAdd"
|
||||||
>新增</el-button>
|
>新增</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['standard:dict:refresh']"
|
|
||||||
type="warning"
|
type="warning"
|
||||||
icon="el-icon-refresh"
|
icon="el-icon-refresh"
|
||||||
size="mini"
|
size="mini"
|
||||||
@@ -146,21 +144,18 @@
|
|||||||
trigger="click"
|
trigger="click"
|
||||||
>
|
>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['standard:dict:edit']"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-edit-outline"
|
icon="el-icon-edit-outline"
|
||||||
@click="handleEdit(scope.row)"
|
@click="handleEdit(scope.row)"
|
||||||
>修改</el-button>
|
>修改</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['standard:dict:detail']"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-view"
|
icon="el-icon-view"
|
||||||
@click="handleDetail(scope.row)"
|
@click="handleDetail(scope.row)"
|
||||||
>详情</el-button>
|
>详情</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['standard:dict:remove']"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-delete"
|
icon="el-icon-delete"
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<div slot="header" class="clearfix">
|
<div slot="header" class="clearfix">
|
||||||
<span>{{ title }}</span>
|
<span>{{ title }}</span>
|
||||||
<el-button-group style="float: right;">
|
<el-button-group style="float: right;">
|
||||||
<el-button v-hasPerm="['standard:contrast:dict:add']" size="mini" icon="el-icon-plus" round :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
<el-button size="mini" icon="el-icon-plus" round :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
||||||
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
|
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
|
||||||
</el-button-group>
|
</el-button-group>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<div slot="header" class="clearfix">
|
<div slot="header" class="clearfix">
|
||||||
<span>{{ title }}</span>
|
<span>{{ title }}</span>
|
||||||
<el-button-group style="float: right;">
|
<el-button-group style="float: right;">
|
||||||
<el-button v-hasPerm="['standard:contrast:dict:edit']" size="mini" icon="el-icon-plus" round :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
<el-button size="mini" icon="el-icon-plus" round :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
||||||
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
|
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
|
||||||
</el-button-group>
|
</el-button-group>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -18,9 +18,9 @@
|
|||||||
<span class="custom-tree-node" @mouseenter="mouseenter(data)" @mouseleave="mouseleave(data)">
|
<span class="custom-tree-node" @mouseenter="mouseenter(data)" @mouseleave="mouseleave(data)">
|
||||||
<span><i v-if="node.level === 1" class="iconfont icon-zuzhi tree-folder" />{{ data.name ? node.label + '(' + data.name + ')' : node.label }}</span>
|
<span><i v-if="node.level === 1" class="iconfont icon-zuzhi tree-folder" />{{ data.name ? node.label + '(' + data.name + ')' : node.label }}</span>
|
||||||
<span class="tree-bts">
|
<span class="tree-bts">
|
||||||
<i v-show="node.level === 1 && data.show" v-hasPerm="['standard:contrast:add']" class="el-icon-circle-plus-outline bt-add" @click="() => handleAddContrast()" />
|
<i v-show="node.level === 1 && data.show" class="el-icon-circle-plus-outline bt-add" @click="() => handleAddContrast()" />
|
||||||
<i v-show="node.level === 4 && data.show" v-hasPerm="['standard:contrast:edit']" class="el-icon-edit-outline bt-edit" @click="() => handleEditContrast(data)" />
|
<i v-show="node.level === 4 && data.show" class="el-icon-edit-outline bt-edit" @click="() => handleEditContrast(data)" />
|
||||||
<i v-show="node.level === 4 && data.show" v-hasPerm="['standard:contrast:remove']" class="el-icon-delete bt-delete" @click="() => handleDelContrast(data)" />
|
<i v-show="node.level === 4 && data.show" class="el-icon-delete bt-delete" @click="() => handleDelContrast(data)" />
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
@@ -59,7 +59,6 @@
|
|||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-button-group>
|
<el-button-group>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['standard:contrast:dict:add']"
|
|
||||||
type="primary"
|
type="primary"
|
||||||
icon="el-icon-plus"
|
icon="el-icon-plus"
|
||||||
size="mini"
|
size="mini"
|
||||||
@@ -139,21 +138,18 @@
|
|||||||
trigger="click"
|
trigger="click"
|
||||||
>
|
>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['standard:contrast:dict:edit']"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-edit-outline"
|
icon="el-icon-edit-outline"
|
||||||
@click="handleEdit(scope.row)"
|
@click="handleEdit(scope.row)"
|
||||||
>修改</el-button>
|
>修改</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['standard:contrast:dict:detail']"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-view"
|
icon="el-icon-view"
|
||||||
@click="handleDetail(scope.row)"
|
@click="handleDetail(scope.row)"
|
||||||
>详情</el-button>
|
>详情</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['standard:contrast:dict:remove']"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-delete"
|
icon="el-icon-delete"
|
||||||
|
|||||||
@@ -28,8 +28,8 @@
|
|||||||
<el-card class="box-card" shadow="always">
|
<el-card class="box-card" shadow="always">
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-button v-hasPerm="['standard:mapping:auto']" type="primary" size="mini" @click="handleAuto">自动对照</el-button>
|
<el-button type="primary" size="mini" @click="handleAuto">自动对照</el-button>
|
||||||
<el-button v-hasPerm="['standard:mapping:manual']" type="primary" size="mini" @click="handleManual">手动对照</el-button>
|
<el-button type="primary" size="mini" @click="handleManual">手动对照</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row>
|
<el-row>
|
||||||
@@ -73,7 +73,7 @@
|
|||||||
<td>{{ data.colCode }}</td>
|
<td>{{ data.colCode }}</td>
|
||||||
<td>{{ data.colName }}</td>
|
<td>{{ data.colName }}</td>
|
||||||
<td>{{ data.contrastGbCode }}</td>
|
<td>{{ data.contrastGbCode }}</td>
|
||||||
<td><span v-if="data.contrastGbId" v-hasPerm="['standard:mapping:cancel']" style="padding-right: 10px;" @click="handleCancel(data.id)"><i class="el-icon-circle-close" style="color: red" /></span>{{ data.contrastGbName }}</td>
|
<td><span v-if="data.contrastGbId" style="padding-right: 10px;" @click="handleCancel(data.id)"><i class="el-icon-circle-close" style="color: red" /></span>{{ data.contrastGbName }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
<el-button icon="el-icon-delete" type="text" @click="handleReset">
|
<el-button icon="el-icon-delete" type="text" @click="handleReset">
|
||||||
重置
|
重置
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button v-hasPerm="['visual:board:build']" icon="el-icon-plus" type="text" @click="handleSubmit">
|
<el-button icon="el-icon-plus" type="text" @click="handleSubmit">
|
||||||
保存
|
保存
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button icon="el-icon-close" type="text" @click="handleCancel">
|
<el-button icon="el-icon-close" type="text" @click="handleCancel">
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
<el-divider />
|
<el-divider />
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col v-hasPerm="['visual:board:add']" :span="6" class="box-card-col">
|
<el-col :span="6" class="box-card-col">
|
||||||
<el-card :body-style="{ padding: '0px' }" class="box-card-item">
|
<el-card :body-style="{ padding: '0px' }" class="box-card-item">
|
||||||
<div class="box-card-item-add" @click="handleAdd">
|
<div class="box-card-item-add" @click="handleAdd">
|
||||||
<div class="icon-block">
|
<div class="icon-block">
|
||||||
@@ -33,16 +33,16 @@
|
|||||||
</div>
|
</div>
|
||||||
</el-image>
|
</el-image>
|
||||||
<div class="box-card-item-edit" :style="{display: (item.show ? 'block' : 'none')}">
|
<div class="box-card-item-edit" :style="{display: (item.show ? 'block' : 'none')}">
|
||||||
<el-button v-hasPerm="['visual:board:build']" type="primary" @click="handleConfig(item)">编辑</el-button>
|
<el-button type="primary" @click="handleConfig(item)">编辑</el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="box-card-item-footer">
|
<div class="box-card-item-footer">
|
||||||
<div class="box-card-item-footer-text">{{ item.boardName }}</div>
|
<div class="box-card-item-footer-text">{{ item.boardName }}</div>
|
||||||
<div class="clearfix">
|
<div class="clearfix">
|
||||||
<i v-hasPerm="['visual:board:edit']" class="el-icon-edit-outline" @click="handleEdit(item)" />
|
<i class="el-icon-edit-outline" @click="handleEdit(item)" />
|
||||||
<i v-hasPerm="['visual:board:preview']" class="el-icon-view" @click="handleView(item)" />
|
<i class="el-icon-view" @click="handleView(item)" />
|
||||||
<i v-hasPerm="['visual:board:remove']" class="el-icon-delete" @click="handleDelete(item)" />
|
<i class="el-icon-delete" @click="handleDelete(item)" />
|
||||||
<i v-hasPerm="['visual:board:copy']" class="el-icon-copy-document" @click="handleCopy(item)" />
|
<i class="el-icon-copy-document" @click="handleCopy(item)" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|||||||
@@ -35,7 +35,7 @@
|
|||||||
<el-button icon="el-icon-delete" type="text" @click="handleReset">
|
<el-button icon="el-icon-delete" type="text" @click="handleReset">
|
||||||
重置
|
重置
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button v-hasPerm="['visual:chart:build']" icon="el-icon-plus" type="text" @click="handleSubmit">
|
<el-button icon="el-icon-plus" type="text" @click="handleSubmit">
|
||||||
保存
|
保存
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button icon="el-icon-close" type="text" @click="handleCancel">
|
<el-button icon="el-icon-close" type="text" @click="handleCancel">
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
<el-divider />
|
<el-divider />
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col v-hasPerm="['visual:chart:add']" class="box-card-col">
|
<el-col class="box-card-col">
|
||||||
<el-card :body-style="{ padding: '0px' }" class="box-card-item">
|
<el-card :body-style="{ padding: '0px' }" class="box-card-item">
|
||||||
<div class="box-card-item-add" @click="handleAdd">
|
<div class="box-card-item-add" @click="handleAdd">
|
||||||
<div class="icon-block">
|
<div class="icon-block">
|
||||||
@@ -33,15 +33,15 @@
|
|||||||
</div>
|
</div>
|
||||||
</el-image>
|
</el-image>
|
||||||
<div class="box-card-item-edit" :style="{display: (item.show ? 'block' : 'none')}">
|
<div class="box-card-item-edit" :style="{display: (item.show ? 'block' : 'none')}">
|
||||||
<el-button v-hasPerm="['visual:chart:build']" type="primary" @click="handleConfig(item)">编辑</el-button>
|
<el-button type="primary" @click="handleConfig(item)">编辑</el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="box-card-item-footer">
|
<div class="box-card-item-footer">
|
||||||
<span class="box-card-item-footer-text">{{ item.chartName }}</span>
|
<span class="box-card-item-footer-text">{{ item.chartName }}</span>
|
||||||
<div class="clearfix">
|
<div class="clearfix">
|
||||||
<i v-hasPerm="['visual:chart:edit']" class="el-icon-edit-outline" @click="handleEdit(item)" />
|
<i class="el-icon-edit-outline" @click="handleEdit(item)" />
|
||||||
<i v-hasPerm="['visual:chart:remove']" class="el-icon-delete" @click="handleDelete(item)" />
|
<i class="el-icon-delete" @click="handleDelete(item)" />
|
||||||
<i v-hasPerm="['visual:chart:copy']" class="el-icon-copy-document" @click="handleCopy(item)" />
|
<i class="el-icon-copy-document" @click="handleCopy(item)" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
<el-button icon="el-icon-delete" type="text" @click="handleReset">
|
<el-button icon="el-icon-delete" type="text" @click="handleReset">
|
||||||
重置
|
重置
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button v-hasPerm="['visual:screen:build']" icon="el-icon-plus" type="text" @click="handleSubmit">
|
<el-button icon="el-icon-plus" type="text" @click="handleSubmit">
|
||||||
保存
|
保存
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button icon="el-icon-close" type="text" @click="handleCancel">
|
<el-button icon="el-icon-close" type="text" @click="handleCancel">
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
<el-divider />
|
<el-divider />
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col v-hasPerm="['visual:screen:add']" :span="6" class="box-card-col">
|
<el-col :span="6" class="box-card-col">
|
||||||
<el-card :body-style="{ padding: '0px' }" class="box-card-item">
|
<el-card :body-style="{ padding: '0px' }" class="box-card-item">
|
||||||
<div class="box-card-item-add" @click="handleAdd">
|
<div class="box-card-item-add" @click="handleAdd">
|
||||||
<div class="icon-block">
|
<div class="icon-block">
|
||||||
@@ -33,16 +33,16 @@
|
|||||||
</div>
|
</div>
|
||||||
</el-image>
|
</el-image>
|
||||||
<div class="box-card-item-edit" :style="{display: (item.show ? 'block' : 'none')}">
|
<div class="box-card-item-edit" :style="{display: (item.show ? 'block' : 'none')}">
|
||||||
<el-button v-hasPerm="['visual:screen:build']" type="primary" @click="handleConfig(item)">编辑</el-button>
|
<el-button type="primary" @click="handleConfig(item)">编辑</el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="box-card-item-footer">
|
<div class="box-card-item-footer">
|
||||||
<div class="box-card-item-footer-text">{{ item.screenName }}</div>
|
<div class="box-card-item-footer-text">{{ item.screenName }}</div>
|
||||||
<div class="clearfix">
|
<div class="clearfix">
|
||||||
<i v-hasPerm="['visual:screen:edit']" class="el-icon-edit-outline" @click="handleEdit(item)" />
|
<i class="el-icon-edit-outline" @click="handleEdit(item)" />
|
||||||
<i v-hasPerm="['visual:screen:preview']" class="el-icon-view" @click="handleView(item)" />
|
<i class="el-icon-view" @click="handleView(item)" />
|
||||||
<i v-hasPerm="['visual:screen:remove']" class="el-icon-delete" @click="handleDelete(item)" />
|
<i class="el-icon-delete" @click="handleDelete(item)" />
|
||||||
<i v-hasPerm="['visual:screen:copy']" class="el-icon-copy-document" @click="handleCopy(item)" />
|
<i class="el-icon-copy-document" @click="handleCopy(item)" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<div slot="header" class="clearfix">
|
<div slot="header" class="clearfix">
|
||||||
<span>{{ title }}</span>
|
<span>{{ title }}</span>
|
||||||
<el-button-group style="float: right;">
|
<el-button-group style="float: right;">
|
||||||
<el-button v-hasPerm="['visual:chart:add']" size="mini" icon="el-icon-plus" round :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
<el-button size="mini" icon="el-icon-plus" round :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
||||||
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
|
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
|
||||||
</el-button-group>
|
</el-button-group>
|
||||||
</div>
|
</div>
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button size="mini" type="primary" @click="formaterSql">Sql格式化</el-button>
|
<el-button size="mini" type="primary" @click="formaterSql">Sql格式化</el-button>
|
||||||
<el-button size="mini" type="primary" @click="analyseSql">Sql解析</el-button>
|
<el-button size="mini" type="primary" @click="analyseSql">Sql解析</el-button>
|
||||||
<el-button v-hasPerm="['visual:set:preview']" size="mini" type="primary" @click="dataPreview">数据预览</el-button>
|
<el-button size="mini" type="primary" @click="dataPreview">数据预览</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-divider content-position="left">数据模型定义</el-divider>
|
<el-divider content-position="left">数据模型定义</el-divider>
|
||||||
<el-row style="height: 300px;padding: 0 20px;">
|
<el-row style="height: 300px;padding: 0 20px;">
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<div slot="header" class="clearfix">
|
<div slot="header" class="clearfix">
|
||||||
<span>{{ title }}</span>
|
<span>{{ title }}</span>
|
||||||
<el-button-group style="float: right;">
|
<el-button-group style="float: right;">
|
||||||
<el-button v-hasPerm="['visual:set:preview']" size="mini" icon="el-icon-s-data" round @click="dataPreview">数据预览</el-button>
|
<el-button size="mini" icon="el-icon-s-data" round @click="dataPreview">数据预览</el-button>
|
||||||
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
|
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
|
||||||
</el-button-group>
|
</el-button-group>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<div slot="header" class="clearfix">
|
<div slot="header" class="clearfix">
|
||||||
<span>{{ title }}</span>
|
<span>{{ title }}</span>
|
||||||
<el-button-group style="float: right;">
|
<el-button-group style="float: right;">
|
||||||
<el-button v-hasPerm="['visual:chart:edit']" size="mini" icon="el-icon-plus" round :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
<el-button size="mini" icon="el-icon-plus" round :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
||||||
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
|
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
|
||||||
</el-button-group>
|
</el-button-group>
|
||||||
</div>
|
</div>
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button size="mini" type="primary" @click="formaterSql">Sql格式化</el-button>
|
<el-button size="mini" type="primary" @click="formaterSql">Sql格式化</el-button>
|
||||||
<el-button size="mini" type="primary" @click="analyseSql">Sql解析</el-button>
|
<el-button size="mini" type="primary" @click="analyseSql">Sql解析</el-button>
|
||||||
<el-button v-hasPerm="['visual:set:preview']" size="mini" type="primary" @click="dataPreview">数据预览</el-button>
|
<el-button size="mini" type="primary" @click="dataPreview">数据预览</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-divider content-position="left">数据模型定义</el-divider>
|
<el-divider content-position="left">数据模型定义</el-divider>
|
||||||
<el-row style="height: 300px;padding: 0 20px;">
|
<el-row style="height: 300px;padding: 0 20px;">
|
||||||
|
|||||||
@@ -20,7 +20,6 @@
|
|||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-button-group>
|
<el-button-group>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['visual:set:add']"
|
|
||||||
type="primary"
|
type="primary"
|
||||||
icon="el-icon-plus"
|
icon="el-icon-plus"
|
||||||
size="mini"
|
size="mini"
|
||||||
@@ -100,21 +99,18 @@
|
|||||||
trigger="click"
|
trigger="click"
|
||||||
>
|
>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['visual:set:edit']"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-edit-outline"
|
icon="el-icon-edit-outline"
|
||||||
@click="handleEdit(scope.row)"
|
@click="handleEdit(scope.row)"
|
||||||
>修改</el-button>
|
>修改</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['visual:set:detail']"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-view"
|
icon="el-icon-view"
|
||||||
@click="handleDetail(scope.row)"
|
@click="handleDetail(scope.row)"
|
||||||
>详情</el-button>
|
>详情</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['visual:set:remove']"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-delete"
|
icon="el-icon-delete"
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<div slot="header" class="clearfix">
|
<div slot="header" class="clearfix">
|
||||||
<span>{{ title }}</span>
|
<span>{{ title }}</span>
|
||||||
<el-button-group style="float: right;">
|
<el-button-group style="float: right;">
|
||||||
<el-button v-hasPerm="['workflow:business:add']" size="mini" icon="el-icon-plus" round :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
<el-button size="mini" icon="el-icon-plus" round :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
||||||
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
|
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
|
||||||
</el-button-group>
|
</el-button-group>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<div slot="header" class="clearfix">
|
<div slot="header" class="clearfix">
|
||||||
<span>{{ title }}</span>
|
<span>{{ title }}</span>
|
||||||
<el-button-group style="float: right;">
|
<el-button-group style="float: right;">
|
||||||
<el-button v-hasPerm="['workflow:business:edit']" size="mini" icon="el-icon-plus" round :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
<el-button size="mini" icon="el-icon-plus" round :loading="loadingOptions.loading" :disabled="loadingOptions.isDisabled" @click="submitForm">{{ loadingOptions.loadingText }}</el-button>
|
||||||
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
|
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
|
||||||
</el-button-group>
|
</el-button-group>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -20,14 +20,12 @@
|
|||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-button-group>
|
<el-button-group>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['workflow:business:add']"
|
|
||||||
type="primary"
|
type="primary"
|
||||||
icon="el-icon-plus"
|
icon="el-icon-plus"
|
||||||
size="mini"
|
size="mini"
|
||||||
@click="handleAdd"
|
@click="handleAdd"
|
||||||
>新增</el-button>
|
>新增</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['workflow:business:refresh']"
|
|
||||||
type="warning"
|
type="warning"
|
||||||
icon="el-icon-refresh"
|
icon="el-icon-refresh"
|
||||||
size="mini"
|
size="mini"
|
||||||
@@ -107,21 +105,18 @@
|
|||||||
trigger="click"
|
trigger="click"
|
||||||
>
|
>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['workflow:business:edit']"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-edit-outline"
|
icon="el-icon-edit-outline"
|
||||||
@click="handleEdit(scope.row)"
|
@click="handleEdit(scope.row)"
|
||||||
>修改</el-button>
|
>修改</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['workflow:business:detail']"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-view"
|
icon="el-icon-view"
|
||||||
@click="handleDetail(scope.row)"
|
@click="handleDetail(scope.row)"
|
||||||
>详情</el-button>
|
>详情</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPerm="['workflow:business:remove']"
|
|
||||||
size="mini"
|
size="mini"
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-delete"
|
icon="el-icon-delete"
|
||||||
|
|||||||