Jelajahi Sumber

Merge remote-tracking branch 'origin/ruleSearch220222' into test

zhouna 3 tahun lalu
induk
melakukan
5a1109bb7f

+ 9 - 0
babel.config.js

@@ -1,5 +1,14 @@
 module.exports = {
   presets: [
     '@vue/app'
+  ],
+  "plugins": [
+	[
+	  "component",
+	  {
+		"libraryName": "umy-ui",
+		"styleLibraryName": "theme-chalk"
+	  }
+	]
   ]
 }

+ 85 - 20
package-lock.json

@@ -1613,7 +1613,6 @@
       "version": "1.8.5",
       "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-1.8.5.tgz",
       "integrity": "sha512-tXBM+1m056MAX0E8TL2iCjg8WvSyXu0Zc8LNtYqrVeyoL3+esHRZ4SieE9fKQyyU09uONjnMEjrNBMqT0mbvmA==",
-      "dev": true,
       "requires": {
         "babel-runtime": "6.x"
       }
@@ -1786,6 +1785,35 @@
         "util.promisify": "^1.0.0"
       }
     },
+    "babel-plugin-component": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/babel-plugin-component/-/babel-plugin-component-1.1.1.tgz",
+      "integrity": "sha512-WUw887kJf2GH80Ng/ZMctKZ511iamHNqPhd9uKo14yzisvV7Wt1EckIrb8oq/uCz3B3PpAW7Xfl7AkTLDYT6ag==",
+      "requires": {
+        "@babel/helper-module-imports": "7.0.0-beta.35"
+      },
+      "dependencies": {
+        "@babel/helper-module-imports": {
+          "version": "7.0.0-beta.35",
+          "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.35.tgz",
+          "integrity": "sha512-vaC1KyIZSuyWb3Lj277fX0pxivyHwuDU4xZsofqgYAbkDxNieMg2vuhzP5AgMweMY7fCQUMTi+BgPqTLjkxXFg==",
+          "requires": {
+            "@babel/types": "7.0.0-beta.35",
+            "lodash": "^4.2.0"
+          }
+        },
+        "@babel/types": {
+          "version": "7.0.0-beta.35",
+          "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.35.tgz",
+          "integrity": "sha512-y9XT11CozHDgjWcTdxmhSj13rJVXpa5ZXwjjOiTedjaM0ba5ItqdS02t31EhPl7HtOWxsZkYCCUNrSfrOisA6w==",
+          "requires": {
+            "esutils": "^2.0.2",
+            "lodash": "^4.2.0",
+            "to-fast-properties": "^2.0.0"
+          }
+        }
+      }
+    },
     "babel-plugin-dynamic-import-node": {
       "version": "2.2.0",
       "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.2.0.tgz",
@@ -1808,7 +1836,6 @@
       "version": "6.26.0",
       "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
       "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
-      "dev": true,
       "requires": {
         "core-js": "^2.4.0",
         "regenerator-runtime": "^0.11.0"
@@ -1817,8 +1844,7 @@
         "regenerator-runtime": {
           "version": "0.11.1",
           "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
-          "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==",
-          "dev": true
+          "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
         }
       }
     },
@@ -2929,8 +2955,7 @@
     "core-js": {
       "version": "2.6.2",
       "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.2.tgz",
-      "integrity": "sha512-NdBPF/RVwPW6jr0NCILuyN9RiqLo2b1mddWHkUL+VnvcB7dzlnBJ1bXYntjpTGOgkZiiLWj2JxmOr7eGE3qK6g==",
-      "dev": true
+      "integrity": "sha512-NdBPF/RVwPW6jr0NCILuyN9RiqLo2b1mddWHkUL+VnvcB7dzlnBJ1bXYntjpTGOgkZiiLWj2JxmOr7eGE3qK6g=="
     },
     "core-util-is": {
       "version": "1.0.2",
@@ -3340,8 +3365,7 @@
     "deepmerge": {
       "version": "1.5.2",
       "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz",
-      "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==",
-      "dev": true
+      "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ=="
     },
     "default-gateway": {
       "version": "2.7.2",
@@ -4157,8 +4181,7 @@
     "esutils": {
       "version": "2.0.2",
       "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
-      "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
-      "dev": true
+      "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs="
     },
     "etag": {
       "version": "1.8.1",
@@ -6787,8 +6810,7 @@
     "lodash": {
       "version": "4.17.11",
       "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
-      "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==",
-      "dev": true
+      "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg=="
     },
     "lodash.debounce": {
       "version": "4.0.8",
@@ -7368,8 +7390,7 @@
     "normalize-wheel": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/normalize-wheel/-/normalize-wheel-1.0.1.tgz",
-      "integrity": "sha1-rsiGr/2wRQcNhWRH32Ls+GFG7EU=",
-      "dev": true
+      "integrity": "sha1-rsiGr/2wRQcNhWRH32Ls+GFG7EU="
     },
     "npm-run-path": {
       "version": "2.0.2",
@@ -9065,8 +9086,7 @@
     "resize-observer-polyfill": {
       "version": "1.5.1",
       "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",
-      "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==",
-      "dev": true
+      "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg=="
     },
     "resolve": {
       "version": "1.9.0",
@@ -9628,6 +9648,11 @@
         }
       }
     },
+    "sortablejs": {
+      "version": "1.10.2",
+      "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.10.2.tgz",
+      "integrity": "sha512-YkPGufevysvfwn5rfdlGyrGjt7/CRHwvRPogD/lC+TnvcN29jDpCifKP+rBqf+LRldfXSTh+0CGLcSg0VIxq3A=="
+    },
     "source-list-map": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz",
@@ -10186,8 +10211,7 @@
     "throttle-debounce": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-1.1.0.tgz",
-      "integrity": "sha512-XH8UiPCQcWNuk2LYePibW/4qL97+ZQ1AN3FNXwZRBNPPowo/NRU5fAlDCSNBJIYCKbioZfuYtMhG4quqoJhVzg==",
-      "dev": true
+      "integrity": "sha512-XH8UiPCQcWNuk2LYePibW/4qL97+ZQ1AN3FNXwZRBNPPowo/NRU5fAlDCSNBJIYCKbioZfuYtMhG4quqoJhVzg=="
     },
     "through": {
       "version": "2.3.8",
@@ -10244,8 +10268,7 @@
     "to-fast-properties": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
-      "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
-      "dev": true
+      "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4="
     },
     "to-object-path": {
       "version": "0.3.0",
@@ -10404,6 +10427,35 @@
         }
       }
     },
+    "umy-table": {
+      "version": "1.1.8",
+      "resolved": "https://registry.npmjs.org/umy-table/-/umy-table-1.1.8.tgz",
+      "integrity": "sha512-yqPMFwZ6MUNqI73KamsNKBTbHRA7VuVZDEWobaySghtf4n/s7INuTNQoADB/ROVK57WOXr99Xpnol0aMqGlASA==",
+      "requires": {
+        "async-validator": "~1.8.1",
+        "deepmerge": "^1.2.0",
+        "normalize-wheel": "^1.0.1",
+        "resize-observer-polyfill": "^1.5.0",
+        "throttle-debounce": "^1.0.1",
+        "vuedraggable": "^2.23.2",
+        "xe-utils": "^3.0.0-beta.12"
+      }
+    },
+    "umy-ui": {
+      "version": "1.1.6",
+      "resolved": "https://registry.npmjs.org/umy-ui/-/umy-ui-1.1.6.tgz",
+      "integrity": "sha512-wX0S29B5sFn8q0MvU9PEl8DGZeQmZXOJlLrwaCJ2UHiIQZCANWgXMBjjQgpaequ1gRZ8BekEu7Sn7hJccm9YMQ==",
+      "requires": {
+        "async-validator": "~1.8.1",
+        "deepmerge": "^1.2.0",
+        "normalize-wheel": "^1.0.1",
+        "resize-observer-polyfill": "^1.5.0",
+        "throttle-debounce": "^1.0.1",
+        "umy-table": "1.1.8",
+        "vuedraggable": "^2.23.2",
+        "xe-utils": "^3.0.0-beta.12"
+      }
+    },
     "unicode-canonical-property-names-ecmascript": {
       "version": "1.0.4",
       "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
@@ -10832,6 +10884,14 @@
       "integrity": "sha512-c/ZtsrO+UI9JUwhGsKSRD2UIFT61mu1x4vSxmCKq8cpYm2Ah4cmUIaxY83MfwwtCa0xsqb2PrBTkbHY2LOwcuw==",
       "dev": true
     },
+    "vuedraggable": {
+      "version": "2.24.3",
+      "resolved": "https://registry.npmjs.org/vuedraggable/-/vuedraggable-2.24.3.tgz",
+      "integrity": "sha512-6/HDXi92GzB+Hcs9fC6PAAozK1RLt1ewPTLjK0anTYguXLAeySDmcnqE8IC0xa7shvSzRjQXq3/+dsZ7ETGF3g==",
+      "requires": {
+        "sortablejs": "1.10.2"
+      }
+    },
     "watchpack": {
       "version": "1.6.0",
       "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz",
@@ -11196,6 +11256,11 @@
         "async-limiter": "~1.0.0"
       }
     },
+    "xe-utils": {
+      "version": "3.5.4",
+      "resolved": "https://registry.npmjs.org/xe-utils/-/xe-utils-3.5.4.tgz",
+      "integrity": "sha512-oH7VOgvHv34pn198dhKPVKnuEHV22Q06YpCTVnAS3JuutylmZj/rtJGvn0BxxWQ37w2LgCknoebLA4uIGXwFtw=="
+    },
     "xregexp": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz",

+ 2 - 0
package.json

@@ -8,8 +8,10 @@
     "lint": "vue-cli-service lint"
   },
   "dependencies": {
+    "babel-plugin-component": "^1.1.1",
     "js-md5": "^0.7.3",
     "quill-image-extend-module": "^1.1.2",
+    "umy-ui": "^1.1.6",
     "vue": "^2.5.17",
     "vue-fragment": "^1.5.2",
     "vue-quill-editor": "^3.0.6"

+ 76 - 100
src/components/knowledgeExtra/DiagCheckRule.vue

@@ -21,137 +21,113 @@
 			</el-form>
 		</div>
 		<el-main>
-			<el-table :data="tableData" :span-method="objectSpanMethod" border style="width: 100%;" height="600px">
-				<el-table-column prop="id" :label="'组(共'+total+'组)'" width="100"></el-table-column>
-				<el-table-column prop="description" label="规则名称"></el-table-column>
-				<el-table-column prop="msg" label="附加信息" show-overflow-tooltip></el-table-column>
-				<el-table-column prop="baseType" label="基础规则类型">
+			<ux-grid ref="plxTable" :merge-cells="tdSpanArr" show-overflow style="width: 100%;" height="600px">
+				<ux-table-column field="id" :title="'组(共'+total+'组)'" width="120"></ux-table-column>
+				<ux-table-column field="description" title="规则名称"></ux-table-column>
+				<ux-table-column field="msg" title="附加信息" show-overflow-tooltip></ux-table-column>
+				<ux-table-column field="baseType" title="基础规则类型">
 					<template slot-scope="scope">
-						{{tofind(scope.row,1)}}
+						{{transDataMap(baseTypeList)[scope.row.baseType]}}
 					</template>
-				</el-table-column>
-				<el-table-column prop="baseLibType" label="基础规则术语类型">
+				</ux-table-column>
+				<ux-table-column prop="baseLibType" title="基础规则术语类型">
 					<template slot-scope="scope">
-						{{tofind(scope.row,2)}}
+						{{transDataMap(baseTermTypeList)[scope.row.baseLibType]}}
 					</template>
-				</el-table-column>
-				<el-table-column prop="baseLibName" label="基础医学标准术语"></el-table-column>
-				<el-table-column prop="baseMinOperator" label="最小域比较符" width="80"></el-table-column>
-				<el-table-column prop="baseMinValue" label="最小域值" width="80"></el-table-column>
-				<el-table-column prop="baseMinUnit" label="最小域单位" width="80"></el-table-column>
-				<el-table-column prop="baseMaxOperator" label="最大域比较符" width="80"></el-table-column>
-				<el-table-column prop="baseMaxValue" label="最大域值" width="80"></el-table-column>
-				<el-table-column prop="baseMaxUnit" label="最大域单位" width="80"></el-table-column>
-				<el-table-column prop="baseEqOperator" label="等于阈值" width="80"></el-table-column>
-				<el-table-column prop="baseEqUnit" label="等于域单位" width="80"></el-table-column>
-			</el-table>
+				</ux-table-column>
+				<ux-table-column field="baseLibName" title="基础医学标准术语"></ux-table-column>
+				<ux-table-column field="baseMinOperator" title="最小域比较符" width="80"></ux-table-column>
+				<ux-table-column field="baseMinValue" title="最小域值" width="80"></ux-table-column>
+				<ux-table-column field="baseMinUnit" title="最小域单位" width="80"></ux-table-column>
+				<ux-table-column field="baseMaxOperator" title="最大域比较符" width="80"></ux-table-column>
+				<ux-table-column field="baseMaxValue" title="最大域值" width="80"></ux-table-column>
+				<ux-table-column field="baseMaxUnit" title="最大域单位" width="80"></ux-table-column>
+				<ux-table-column field="baseEqOperator" title="等于阈值" width="80"></ux-table-column>
+				<ux-table-column field="baseEqUnit" title="等于域单位" width="80"></ux-table-column>
+			</ux-grid>
 		</el-main>
 	</div>
 </template>
 
 <script>
 	import api from '@api/knowledgeLib.js';
-	import config from '@api/config.js';
-	import utils from '@api/utils.js';
 	export default {
 		name: 'CheckRule',
 		data: function() {
 			return {
-				tableData: [],
-				spanArr: [],
+				tdSpanArr: this.mergeCells,
 				pos: 0,
 				filter: {
 					baseLibType: "",
 					baseLibName: ""
 				},
 				baseTermTypeList2: [],
-				total: 0
+				total: this.ruleTeamNum,
 			};
 		},
 		created() {
-			const list = this.$props.rulelist
-			const baseTermTypeList1 = this.$props.baseTermTypeList
-			this.baseTermTypeList2 = baseTermTypeList1
-			this.filter.baseLibName=this.$props.baseLibName
-			this.filter.baseLibType=this.$props.baseLibType
-			this.tableData = list
-			this.getSpanArr(this.tableData)
-			this.total = this.tableData.slice(-1)[0].id
+			this.baseTermTypeList2 = this.baseTermTypeList;
+			this.filter.baseLibName=this.baseLibName;
+			this.filter.baseLibType=this.baseLibType;
 		},
-		props: ['rulelist', 'baseTypeList', 'baseTermTypeList', 'row', 'description','baseLibType','baseLibName'],
+	  mounted(){
+		this.$refs.plxTable.reloadData(this.rulelist)
+		  //this.loading.close();
+	  },
+		props: ['loading','mergeCells','rulelist','ruleTeamNum', 'baseTypeList', 'baseTermTypeList', 'row', 'description','baseLibType','baseLibName'],
 		methods: {
-			tofind(row, a) {
-				let type = ''
-				if (a == 1) {
-					type = this.$props.baseTypeList.find(it => it.val == row.baseType)
-				} else {
-					type = this.$props.baseTermTypeList.find(it => it.val == row.baseLibType)
-				}
-				return type.name
-			},
-			objectSpanMethod({
-				row,
-				column,
-				rowIndex,
-				columnIndex
-			}) {
-				if (columnIndex === 1 || columnIndex === 0 || columnIndex === 2) {
-					const _row = this.spanArr[rowIndex];
-					const _col = _row > 0 ? 1 : 0;
-					return {
-						rowspan: _row,
-						colspan: _col
-					}
-				}
-			},
-			getSpanArr(data) {
-				for (var i = 0; i < data.length; i++) {
-					if (i === 0) {
-						this.spanArr.push(1);
-						this.pos = 0
-					} else {
-						// 判断当前元素与上一个元素是否相同
-						if (data[i].id === data[i - 1].id) {
-							this.spanArr[this.pos] += 1;
-							this.spanArr.push(0);
-						} else {
-							this.spanArr.push(1);
-							this.pos = i;
-						}
-					}
-				}
-			},
+		  transDataMap(data){
+			const obj = {};
+			data.map((it)=>{
+			  obj[it.val] = it.name;
+			});
+			return obj;
+		  },
 			getRuleDetail() {
 				const param = {
 					baseLibName: this.filter.baseLibName,
 					baseLibType: this.filter.baseLibType,
-					description: this.$props.description,
-					libName: this.$props.row.libName,
-					libType: this.$props.row.libType,
-					ruleType: this.$props.row.ruleType,
+					description: this.description,
+					libName: this.row.libName,
+					libType: this.row.libType,
+					ruleType: this.row.ruleType,
+				}
+			  api.zskgetRuleDetail(param).then((res) => {
+				if (res.data.code == "0") {
+				  let datalist =[]
+				  const data=res.data.data.ruleConditionDTOList;
+				  this.total = data.length;
+				  let mergeArr = [];
+				  for(let i in data){
+					let datai = data[i];
+					const dtoList = datai.ruleBaseDTOList;
+					for(let j=0;j<dtoList.length;j++){
+					  const isFirst = j===0;
+					  if(isFirst){
+						const len = datalist.length;
+						mergeArr.push({ row: len, col: 0, rowspan: dtoList.length, colspan: 1 },
+							{ row: len, col: 1, rowspan: dtoList.length, colspan: 1 },
+							{ row: len, col: 2, rowspan: dtoList.length, colspan: 1 });
+					  }
+					  datalist.push({
+						id: +i+1,
+						rowspan:isFirst?dtoList.length:0,
+						colspan:isFirst?1:0,
+						ruleGroup:datai.ruleGroup,
+						msg:datai.msg,
+						description:datai.description,
+						...dtoList[j]
+					  })
+					}
+				  }
+				  this.tdSpanArr=mergeArr;
+				  this.$refs.plxTable.reloadData(datalist);
+				}else{
+				  this.$message(res.data.msg||'获取详情失败,请稍后重试');
 				}
-				api.zskgetRuleDetail(param).then((res) => {
-						if (res.data.code == "0") {
-							// this.rulelist = res.data.data
-							let datalist = []
-							const data = res.data.data.ruleConditionDTOList
-							for (let i in data) {
-								for (let j of data[i].ruleBaseDTOList) {
-									let a = parseInt(i)
-									datalist.push({
-										id: a + 1,
-										msg: data[i].msg,
-										description: data[i].description,
-										...j
-									})
-								}
-							}
-							this.tableData = datalist
-							this.getSpanArr(this.tableData)
-						}
-					})
+			  })
 					.catch((error) => {
-						console.log(error);
+					  this.$message(error.msg||'接口出错');
 					});
 			},
 		}

+ 50 - 48
src/components/knowledgeExtra/RuleCheck.vue

@@ -1,6 +1,6 @@
 <template>
 	<div>
-		<crumbs title="规则维护" :minWidth="titleWidth" class="knowledgeTitle">
+		<crumbs title="规则查询" :minWidth="titleWidth" class="knowledgeTitle">
 			<el-form :inline="true" class="demo-form-inline">
 				<el-form-item label="规则名称:">
 					<el-input size="mini" v-model="filter.description" placeholder="请输入" clearable></el-input>
@@ -57,7 +57,7 @@
 		</div>
 		<el-dialog title="查看" :visible.sync="dialogVisible" :before-close="closecheckDialog" width="80rem"
 			v-if="dialogVisible" :close-on-click-modal="false" :fullscreen="true">
-			<CheckRule :rulelist="rulelist" :baseTypeList="baseTypeList" :baseTermTypeList="baseTermTypeList"
+			<CheckRule :mergeCells="mergeCells" :rulelist="rulelist" :ruleTeamNum="ruleTeamNum" :baseTypeList="baseTypeList" :baseTermTypeList="baseTermTypeList"
 				:row="row" :description="filter.description" :baseLibType="filter.baseLibType" :baseLibName="filter.baseLibName">
 			</CheckRule>
 			<div style="text-align: center;">
@@ -92,6 +92,7 @@
 					baseLibType: '', //基础规则术语类型
 					baseLibName: '', //基础医学标准术语
 				},
+			  	ruleTeamNum:0,	//规则组个数
 				ruleTypeList: [], //规则类型列表  1
 				ruleTermTypeList: [], //规则术语类型列表  2
 				conceptList: [], //医学标准术语列表 3
@@ -107,26 +108,20 @@
 				titleWidth: '970px', //头部最小宽度
 				dialogVisible: false,
 				row:{},
+			  	loading:null,//loading对象,
+			  	mergeCells:[],	//单元格合并规则
 			};
 		},
 		components: {
 			CheckRule
 		},
 		created() {
-			// const param = this.$route.params;
-			// console.log(param)
-			// if (param.currentPage) {
-			// 	this.inCurrentPage = param.currentPage;
-			// }
-			// if (param.filter) {
-			// 	this.filter = param.filter;
-			// }
 			const that = this;
+		  	this.getDict();
 			//返回时避免参数未赋值就获取列表
 			setTimeout(function() {
 				that.getDataList();
 			});
-			this.getDict();
 		},
 		watch: {
 			filter: {
@@ -152,18 +147,6 @@
 							this.ruleTermTypeList = data[-102]
 							this.baseTypeList = data[-103]
 							this.baseTermTypeList = data[-104]
-							// const arr = data['20'].map(it => it.val);
-							// //this.dict = arr.join(",");
-							// //this.msgDict=(data['21'].map((it)=>it.val)||[]).join(",");
-							// localStorage.setItem('zskDicts', arr.join(','));
-							// localStorage.setItem(
-							// 	'zskMsgDict',
-							// 	(data['21'].map(it => it.val) || []).join(',')
-							// );
-							// localStorage.setItem('zskNumDict', data['22'][0].val);
-							// localStorage.setItem('zskSubDict', (data['23'].map(it => it.val) || []).join(','));
-							// localStorage.setItem('zskDragDict', (data['27'].map(it => it.val) || []).join(','));
-							// localStorage.setItem('zskDelDict', data['26'][0].val);
 						}
 					})
 					.catch(error => {
@@ -190,14 +173,7 @@
 			getDataList(flag, isTurnPage) {
 				const params = this.getFilterItems(isTurnPage);
 				this.searched = true;
-				const loading = this.$loading({
-					lock: true,
-					text: 'Loading',
-					spinner: 'el-icon-loading',
-					background: 'rgba(0, 0, 0, 0.7)'
-				});
 				api.zskgetRulePage(params).then(res => {
-						loading.close();
 						if (res.data.code == '0') {
 							const data = res.data.data;
 							this.list = data.records;
@@ -257,7 +233,6 @@
 				});
 			},
 			checkData(row) {
-				console.log(row)
 				this.row=row
 				if(!this.searched) {
 					this.clearFilter();
@@ -270,26 +245,46 @@
 					libType: row.libType,
 					ruleType: row.ruleType,
 				}
+				const loading = this.$loading({
+				lock: true,
+				text: 'Loading',
+				spinner: 'el-icon-loading',
+				background: 'rgba(0, 0, 0, 0.7)'
+			  });
 				api.zskgetRuleDetail(param).then((res) => {
+				  loading.close();
 						if (res.data.code == "0") {
-							// this.rulelist = res.data.data
-							console.log(res.data.data.ruleConditionDTOList)
+						  	this.dialogVisible = true
 							let datalist =[]
-							const data=res.data.data.ruleConditionDTOList
-							for(let i in data){
-								for(let j of data[i].ruleBaseDTOList){
-									let a = parseInt(i)
+							const data=res.data.data.ruleConditionDTOList;
+						  	this.ruleTeamNum = data.length;
+						  	let mergeArr = [];
+						  for(let i in data){
+						    	let datai = data[i];
+						    	const dtoList = datai.ruleBaseDTOList;
+								for(let j=0;j<dtoList.length;j++){
+								  const isFirst = j===0;
+								  if(isFirst){
+								    const len = datalist.length;
+									mergeArr.push({ row: len, col: 0, rowspan: dtoList.length, colspan: 1 },
+										{ row: len, col: 1, rowspan: dtoList.length, colspan: 1 },
+										{ row: len, col: 2, rowspan: dtoList.length, colspan: 1 });
+								  }
 									datalist.push({
-										id:a+1,
-										msg:data[i].msg,
-										description:data[i].description,
-										...j
+									  	id: +i+1,
+									  	rowspan:isFirst?dtoList.length:0,
+									  	colspan:isFirst?1:0,
+									  	ruleGroup:datai.ruleGroup,
+										msg:datai.msg,
+										description:datai.description,
+										...dtoList[j]
 									})
 								}
 							}
 							this.rulelist=datalist
-							console.log(datalist)
-							this.dialogVisible = true
+						  this.mergeCells=mergeArr;
+						}else{
+						  this.$message(res.data.msg||'获取详情失败,请稍后重试');
 						}
 					})
 					.catch((error) => {
@@ -339,11 +334,6 @@
 		color: #22ccc8;
 	}
 
-	.el-table .cell {
-		overflow: hidden;
-		white-space: nowrap;
-	}
-
 	#upFile {
 		display: none !important;
 	}
@@ -367,4 +357,16 @@
 	/deep/.el-dialog__header{
 		border-left:4px #48C5D7 solid
 	}
+	/deep/.elx-header--column.col--ellipsis>.elx-cell .elx-cell--title{
+	  overflow: unset;
+	  text-overflow: unset;
+	  white-space: break-spaces;
+	  text-align: center;
+	}
+	/deep/.elx-table .elx-body--column.col--ellipsis:not(.col--actived)>.elx-cell{
+	  text-align: center;
+	}
+	/deep/.elx-table .elx-body--row.row--current{
+	  background-color: unset;
+	}
 </style>

+ 4 - 2
src/less/common.less

@@ -198,8 +198,6 @@
 .activeBgcF5 {
   background-color: #f5f5f5;
 }
-
-
 .btmFix {
   position: fixed;
   width: 100%;
@@ -207,4 +205,8 @@
   left: 280px;
   bottom: 0;
   background-color: #dee2ea;
+}
+/***规则查询查看弹窗表格tooltip***/
+.elx-table--tooltip-wrapper{
+  z-index: 9999!important;
 }

+ 5 - 0
src/main.js

@@ -3,6 +3,7 @@ import Vue from 'vue'
 import App from './App.vue'
 import ElementUI from 'element-ui';
 import 'element-ui/lib/theme-chalk/index.css';
+import { UTable, UTableColumn,UxGrid,UxTableColumn} from 'umy-ui';
 import VueRouter from 'vue-router';
 import routes from './routes.js';
 import axios from 'axios'
@@ -16,6 +17,10 @@ Vue.prototype.qs = qs;
 
 Vue.use(VueRouter);
 Vue.use(ElementUI);
+Vue.use(UTableColumn);
+Vue.use(UTable);
+Vue.use(UxGrid);
+Vue.use(UxTableColumn);
 
 const router = new VueRouter({
   routes