Parcourir la source

Merge remote-tracking branch 'origin/testedMerge'

zhouna il y a 5 ans
Parent
commit
41f817ea11

+ 93 - 79
package-lock.json

@@ -1928,6 +1928,16 @@
       "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==",
       "dev": true
     },
+    "bindings": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npm.taobao.org/bindings/download/bindings-1.5.0.tgz",
+      "integrity": "sha1-EDU8npRTNLwFEabZCzj7x8nFBN8=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "file-uri-to-path": "1.0.0"
+      }
+    },
     "bluebird": {
       "version": "3.5.3",
       "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz",
@@ -4533,6 +4543,13 @@
         }
       }
     },
+    "file-uri-to-path": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/file-uri-to-path/download/file-uri-to-path-1.0.0.tgz",
+      "integrity": "sha1-VTp7hEb/b2hDWcRF8eN6BdrMM90=",
+      "dev": true,
+      "optional": true
+    },
     "filesize": {
       "version": "3.6.1",
       "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz",
@@ -4799,14 +4816,15 @@
       "dev": true
     },
     "fsevents": {
-      "version": "1.2.4",
-      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz",
-      "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==",
+      "version": "1.2.11",
+      "resolved": "https://registry.npm.taobao.org/fsevents/download/fsevents-1.2.11.tgz",
+      "integrity": "sha1-Z79X9HWPAu3oj7KhcS/vTRU1i+M=",
       "dev": true,
       "optional": true,
       "requires": {
-        "nan": "^2.9.2",
-        "node-pre-gyp": "^0.10.0"
+        "bindings": "^1.5.0",
+        "nan": "^2.12.1",
+        "node-pre-gyp": "*"
       },
       "dependencies": {
         "abbrev": {
@@ -4818,8 +4836,7 @@
         "ansi-regex": {
           "version": "2.1.1",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "aproba": {
           "version": "1.2.0",
@@ -4828,7 +4845,7 @@
           "optional": true
         },
         "are-we-there-yet": {
-          "version": "1.1.4",
+          "version": "1.1.5",
           "bundled": true,
           "dev": true,
           "optional": true,
@@ -4840,21 +4857,19 @@
         "balanced-match": {
           "version": "1.0.0",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "brace-expansion": {
           "version": "1.1.11",
           "bundled": true,
           "dev": true,
-          "optional": true,
           "requires": {
             "balanced-match": "^1.0.0",
             "concat-map": "0.0.1"
           }
         },
         "chownr": {
-          "version": "1.0.1",
+          "version": "1.1.3",
           "bundled": true,
           "dev": true,
           "optional": true
@@ -4862,20 +4877,17 @@
         "code-point-at": {
           "version": "1.1.0",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "concat-map": {
           "version": "0.0.1",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "console-control-strings": {
           "version": "1.1.0",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "core-util-is": {
           "version": "1.0.2",
@@ -4884,16 +4896,16 @@
           "optional": true
         },
         "debug": {
-          "version": "2.6.9",
+          "version": "3.2.6",
           "bundled": true,
           "dev": true,
           "optional": true,
           "requires": {
-            "ms": "2.0.0"
+            "ms": "^2.1.1"
           }
         },
         "deep-extend": {
-          "version": "0.5.1",
+          "version": "0.6.0",
           "bundled": true,
           "dev": true,
           "optional": true
@@ -4911,12 +4923,12 @@
           "optional": true
         },
         "fs-minipass": {
-          "version": "1.2.5",
+          "version": "1.2.7",
           "bundled": true,
           "dev": true,
           "optional": true,
           "requires": {
-            "minipass": "^2.2.1"
+            "minipass": "^2.6.0"
           }
         },
         "fs.realpath": {
@@ -4942,7 +4954,7 @@
           }
         },
         "glob": {
-          "version": "7.1.2",
+          "version": "7.1.6",
           "bundled": true,
           "dev": true,
           "optional": true,
@@ -4962,16 +4974,16 @@
           "optional": true
         },
         "iconv-lite": {
-          "version": "0.4.21",
+          "version": "0.4.24",
           "bundled": true,
           "dev": true,
           "optional": true,
           "requires": {
-            "safer-buffer": "^2.1.0"
+            "safer-buffer": ">= 2.1.2 < 3"
           }
         },
         "ignore-walk": {
-          "version": "3.0.1",
+          "version": "3.0.3",
           "bundled": true,
           "dev": true,
           "optional": true,
@@ -4990,10 +5002,9 @@
           }
         },
         "inherits": {
-          "version": "2.0.3",
+          "version": "2.0.4",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "ini": {
           "version": "1.3.5",
@@ -5005,7 +5016,6 @@
           "version": "1.0.0",
           "bundled": true,
           "dev": true,
-          "optional": true,
           "requires": {
             "number-is-nan": "^1.0.0"
           }
@@ -5020,7 +5030,6 @@
           "version": "3.0.4",
           "bundled": true,
           "dev": true,
-          "optional": true,
           "requires": {
             "brace-expansion": "^1.1.7"
           }
@@ -5028,70 +5037,67 @@
         "minimist": {
           "version": "0.0.8",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "minipass": {
-          "version": "2.2.4",
+          "version": "2.9.0",
           "bundled": true,
           "dev": true,
-          "optional": true,
           "requires": {
-            "safe-buffer": "^5.1.1",
+            "safe-buffer": "^5.1.2",
             "yallist": "^3.0.0"
           }
         },
         "minizlib": {
-          "version": "1.1.0",
+          "version": "1.3.3",
           "bundled": true,
           "dev": true,
           "optional": true,
           "requires": {
-            "minipass": "^2.2.1"
+            "minipass": "^2.9.0"
           }
         },
         "mkdirp": {
           "version": "0.5.1",
           "bundled": true,
           "dev": true,
-          "optional": true,
           "requires": {
             "minimist": "0.0.8"
           }
         },
         "ms": {
-          "version": "2.0.0",
+          "version": "2.1.2",
           "bundled": true,
           "dev": true,
           "optional": true
         },
         "needle": {
-          "version": "2.2.0",
+          "version": "2.4.0",
           "bundled": true,
           "dev": true,
           "optional": true,
           "requires": {
-            "debug": "^2.1.2",
+            "debug": "^3.2.6",
             "iconv-lite": "^0.4.4",
             "sax": "^1.2.4"
           }
         },
         "node-pre-gyp": {
-          "version": "0.10.0",
+          "version": "0.14.0",
           "bundled": true,
           "dev": true,
           "optional": true,
           "requires": {
             "detect-libc": "^1.0.2",
             "mkdirp": "^0.5.1",
-            "needle": "^2.2.0",
+            "needle": "^2.2.1",
             "nopt": "^4.0.1",
             "npm-packlist": "^1.1.6",
             "npmlog": "^4.0.2",
-            "rc": "^1.1.7",
+            "rc": "^1.2.7",
             "rimraf": "^2.6.1",
             "semver": "^5.3.0",
-            "tar": "^4"
+            "tar": "^4.4.2"
           }
         },
         "nopt": {
@@ -5105,13 +5111,22 @@
           }
         },
         "npm-bundled": {
-          "version": "1.0.3",
+          "version": "1.1.1",
+          "bundled": true,
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "npm-normalize-package-bin": "^1.0.1"
+          }
+        },
+        "npm-normalize-package-bin": {
+          "version": "1.0.1",
           "bundled": true,
           "dev": true,
           "optional": true
         },
         "npm-packlist": {
-          "version": "1.1.10",
+          "version": "1.4.7",
           "bundled": true,
           "dev": true,
           "optional": true,
@@ -5135,8 +5150,7 @@
         "number-is-nan": {
           "version": "1.0.1",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "object-assign": {
           "version": "4.1.1",
@@ -5148,7 +5162,6 @@
           "version": "1.4.0",
           "bundled": true,
           "dev": true,
-          "optional": true,
           "requires": {
             "wrappy": "1"
           }
@@ -5182,18 +5195,18 @@
           "optional": true
         },
         "process-nextick-args": {
-          "version": "2.0.0",
+          "version": "2.0.1",
           "bundled": true,
           "dev": true,
           "optional": true
         },
         "rc": {
-          "version": "1.2.7",
+          "version": "1.2.8",
           "bundled": true,
           "dev": true,
           "optional": true,
           "requires": {
-            "deep-extend": "^0.5.1",
+            "deep-extend": "^0.6.0",
             "ini": "~1.3.0",
             "minimist": "^1.2.0",
             "strip-json-comments": "~2.0.1"
@@ -5223,19 +5236,18 @@
           }
         },
         "rimraf": {
-          "version": "2.6.2",
+          "version": "2.7.1",
           "bundled": true,
           "dev": true,
           "optional": true,
           "requires": {
-            "glob": "^7.0.5"
+            "glob": "^7.1.3"
           }
         },
         "safe-buffer": {
-          "version": "5.1.1",
+          "version": "5.1.2",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "safer-buffer": {
           "version": "2.1.2",
@@ -5250,7 +5262,7 @@
           "optional": true
         },
         "semver": {
-          "version": "5.5.0",
+          "version": "5.7.1",
           "bundled": true,
           "dev": true,
           "optional": true
@@ -5271,7 +5283,6 @@
           "version": "1.0.2",
           "bundled": true,
           "dev": true,
-          "optional": true,
           "requires": {
             "code-point-at": "^1.0.0",
             "is-fullwidth-code-point": "^1.0.0",
@@ -5291,7 +5302,6 @@
           "version": "3.0.1",
           "bundled": true,
           "dev": true,
-          "optional": true,
           "requires": {
             "ansi-regex": "^2.0.0"
           }
@@ -5303,18 +5313,18 @@
           "optional": true
         },
         "tar": {
-          "version": "4.4.1",
+          "version": "4.4.13",
           "bundled": true,
           "dev": true,
           "optional": true,
           "requires": {
-            "chownr": "^1.0.1",
+            "chownr": "^1.1.1",
             "fs-minipass": "^1.2.5",
-            "minipass": "^2.2.4",
-            "minizlib": "^1.1.0",
+            "minipass": "^2.8.6",
+            "minizlib": "^1.2.1",
             "mkdirp": "^0.5.0",
-            "safe-buffer": "^5.1.1",
-            "yallist": "^3.0.2"
+            "safe-buffer": "^5.1.2",
+            "yallist": "^3.0.3"
           }
         },
         "util-deprecate": {
@@ -5324,25 +5334,23 @@
           "optional": true
         },
         "wide-align": {
-          "version": "1.1.2",
+          "version": "1.1.3",
           "bundled": true,
           "dev": true,
           "optional": true,
           "requires": {
-            "string-width": "^1.0.2"
+            "string-width": "^1.0.2 || 2"
           }
         },
         "wrappy": {
           "version": "1.0.2",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         },
         "yallist": {
-          "version": "3.0.2",
+          "version": "3.1.1",
           "bundled": true,
-          "dev": true,
-          "optional": true
+          "dev": true
         }
       }
     },
@@ -6399,6 +6407,12 @@
         "topo": "3.x.x"
       }
     },
+    "jquery": {
+      "version": "3.4.1",
+      "resolved": "https://registry.npm.taobao.org/jquery/download/jquery-3.4.1.tgz",
+      "integrity": "sha1-cU8fjZ3eS9+lV2S6N+8hRjDYDvI=",
+      "dev": true
+    },
     "js-levenshtein": {
       "version": "1.1.6",
       "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz",
@@ -7176,9 +7190,9 @@
       "dev": true
     },
     "nan": {
-      "version": "2.12.1",
-      "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz",
-      "integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==",
+      "version": "2.14.0",
+      "resolved": "https://registry.npm.taobao.org/nan/download/nan-2.14.0.tgz",
+      "integrity": "sha1-eBj3IgJ7JFmobwKV1DTR/CM2xSw=",
       "dev": true,
       "optional": true
     },

+ 11 - 1
src/api/config.js

@@ -267,7 +267,17 @@ export default {
       'tokenSaveOrUpdate': '/api/mrqcman/mrqcToken/saveOrUpdate', // 令牌新增或修改
       'tokenDetails': '/api/mrqcman/mrqcToken/getById', // 令牌明细
       'tokenDelete': '/api/mrqcman/mrqcToken/delete', // 令牌删除
-      'tokenAnalysis': '/api/mrqcman/mrqcToken/analysis' //解析
+      'tokenAnalysis': '/api/mrqcman/mrqcToken/analysis', //解析
+      'rulesList':'/api/knowledgeman/rulePub/pageRulePub',
+      'ruleDetail':'/api/knowledgeman/rulePub/getRulePub',
+      'ruleApplyDetail':'/api/knowledgeman/ruleApp/getRuleApp',
+      'rulesApplyList':'/api/knowledgeman/ruleApp/pageRuleApp',
+      'addRule':'/api/knowledgeman/rulePub/saveRulePub',
+      'ruleTypesList':'/api/knowledgeman/rulePub/pageRulePub',
+      'addRuleApply':'/api/knowledgeman/ruleApp/saveRuleApp',
+      'ruleApplyDelete':'/api/knowledgeman/ruleApp/removeRuleApp',
+      'ruleDelete':'/api/knowledgeman/rulePub/removeRulePub',
+
   },
 	menuIconList: { //菜单对应图标
 		'YH-KZT': 'el-icon-menu',

+ 1 - 0
src/api/index.js

@@ -3,6 +3,7 @@ import config from './config.js';
 
 axios.default.timeout = 5000;
 axios.defaults.headers.post['Content-Type'] = "application/json;charset=utf-8";
+//axios.defaults.baseURL = 'http://223.93.170.82:23650';
 
 const urls = config.urls;
 export default {

+ 39 - 0
src/api/rulesManage.js

@@ -0,0 +1,39 @@
+import axios from 'axios';
+import config from '@api/config.js';
+
+const urls = config.urls;
+export default {
+    getRulesList(param){
+        return axios.post(urls.rulesList,param);
+    },
+    getKnowledgeEnums(param){
+        return axios.post(urls.getKnowledgeEnums,param);
+    },
+    getTypesList(param){
+        return axios.post(urls.ruleTypesList,param);
+    },
+    getRulesApplyList(param){
+        return axios.post(urls.rulesApplyList,param);
+    },
+    deleteRule(param){
+        return axios.post(urls.ruleDelete,param);
+    },
+    deleteRuleApply(param){
+        return axios.post(urls.ruleApplyDelete,param);
+    },
+    ruleDetail(param){
+        return axios.post(urls.ruleDetail,param);
+    },
+    ruleApplyDetail(param){
+        return axios.post(urls.ruleApplyDetail,param);
+    },
+    saveRule(param){
+        return axios.post(urls.addRule,param);
+    },
+    saveRuleApply(param){
+        return axios.post(urls.addRuleApply,param);
+    },
+    reloadLib() {    //医学术语命名维护-加载词库
+        return axios.post(urls.reloadLib)
+    },
+}

+ 187 - 0
src/components/RuleManager/AddRule.vue

@@ -0,0 +1,187 @@
+<template>
+    <div>
+        <crumbs :title="title" :param="$route.params" linkTo="RulesManager"></crumbs>
+        <div class="contents">
+            <div class="content">
+                <!-- <el-form ref="form" :label-position="labelPosition" label-width="95px" class="add-admin-form" :model="form" :rules="rules"> -->
+                <el-form ref="form" :label-position="labelPosition" label-width="120px" class="add-version-form" :model="form" :rules="rules">
+                    <el-form-item label="规则名:" prop="pubName" class="version-num">
+                        <el-input v-model="form.pubName" placeholder="请输入规则名" maxlength="31"></el-input>
+                    </el-form-item>
+                    <el-form-item label="最小值操作符:" prop="operType">
+                        <el-select v-model="form.minOperator"
+                                   placeholder="请选择"
+                                   size="small">
+                            <el-option
+                                    v-for="item in operTypeList"
+                                    :key="item.name"
+                                    :label="item.name"
+                                    :value="item.name">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                    <el-form-item label="最小值:" prop="minValue" class="version-num">
+                        <el-input v-model="form.minValue" placeholder="请输入最小值"></el-input>
+                    </el-form-item>
+                    <el-form-item label="最小值单位:" prop="minUnit" class="version-num">
+                        <el-input v-model="form.minUnit" placeholder="请输入最小值单位"></el-input>
+                    </el-form-item>
+                    <el-form-item label="最大值操作符:" prop="operType">
+                        <el-select v-model="form.maxOperator"
+                                   placeholder="请选择"
+                                   size="small">
+                            <el-option
+                                    v-for="item in operTypeList"
+                                    :key="item.name"
+                                    :label="item.name"
+                                    :value="item.name">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                    <el-form-item label="最大值:" prop="maxValue" class="version-num">
+                        <el-input v-model="form.maxValue" placeholder="请输入最大值"></el-input>
+                    </el-form-item>
+                    <el-form-item label="最大值单位:" prop="maxUnit" class="version-num">
+                        <el-input v-model="form.maxUnit" placeholder="请输入最大值单位"></el-input>
+                    </el-form-item>
+                    <el-form-item label="等于值操作符:" prop="operType">
+                        <el-select v-model="form.eqOperator"
+                                   placeholder="请选择"
+                                   size="small">
+                            <el-option
+                                    v-for="item in operTypeList"
+                                    :key="item.name"
+                                    :label="item.name"
+                                    :value="item.name">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                    <el-form-item label="等于值:" prop="eqValue" class="version-num">
+                        <el-input v-model="form.eqValue" placeholder="请输入等于值"></el-input>
+                    </el-form-item>
+                    <el-form-item label="等于值单位:" prop="eqUnit" class="version-num">
+                        <el-input v-model="form.eqUnit" placeholder="请输入等于值单位"></el-input>
+                    </el-form-item>
+                    <el-form-item label="备注:" prop="remind" class="discDesc">
+                        <el-input type="textarea" :rows="3" placeholder="请输入备注" v-model="form.remind" maxlength="121"></el-input>
+                    </el-form-item>
+                    <el-form-item label="文本后缀:" prop="suffixInfo" class="version-num">
+                        <el-input v-model="form.suffixInfo" placeholder="请输入文本后缀"></el-input>
+                    </el-form-item>
+                    <el-button class="disclButn" size="small" type="primary" @click="confirm('form')">确定</el-button>
+                </el-form>
+            </div>
+        </div>
+    </div>
+</template>
+<script type="text/javascript">
+    import api from '@api/rulesManage.js';
+    export default {
+        name:'AddRule',
+        data(){
+            return{
+                labelPosition:'left',
+                isFirst:true,
+                title:'规则维护-添加规则',
+                form:{
+                },
+                id:null,
+                rules:{
+                    pubName:[{ required: true, message: '请输入规则名',trigger: ['blur'] }],
+                },
+                pickerOptions1:{
+                    disabledDate(time) {
+                        return time.getTime() < Date.now();
+                    },
+                },
+                operTypeList:[{name:'>',key:1},
+                    {name:'>=',key:2},
+                    {name:'<',key:3},
+                    {name:'<=',key:4},
+                    {name:'=',key:5},
+                ]
+            }
+        },
+        created(){
+            let info = this.$route.params.data;
+            if(info){
+                this.id = info.id;
+                this.form=Object.assign({},this.form,info);
+                this.title = "规则维护-修改规则";
+                // this.getList();
+            }
+        },
+        methods:{
+            confirm(form){
+                this.$refs[form].validate((valid) => {
+                    if (valid) {
+                        if(this.id){//修改
+                            const param = Object.assign({},this.form,{id:this.id?this.id:undefined})
+                            api.saveRule(param).then((res)=>{
+                                if(res.data.code==0){
+                                    this.$message({
+                                        message:"修改成功",
+                                        type:'success'
+                                    });
+                                    //返回带搜索条件的首页
+                                    this.$router.push({
+                                        name: 'VersionInfo',
+                                        params: Object.assign({}, this.$route.params, {currentPage: 1})
+                                    });
+                                }else{
+                                    this.$message({
+                                        message:res.data.msg,
+                                        type:'warning'
+                                    });
+                                }
+                            })
+                        }else{//添加
+                            const params = Object.assign({},this.form,{'id':this.id});
+                            api.saveRule(params).then((res)=>{
+                                if(res.data.code==0){
+                                    this.$message({
+                                        message:"添加成功",
+                                        type:'success'
+                                    });
+                                    this.$router.push({name: 'RulesManager'});
+                                }else{
+                                    this.$message({
+                                        message:res.data.msg,
+                                        type:'warning'
+                                    });
+                                }
+                            })
+                        }
+                    } else {
+                        return false;
+                    }
+                });
+            },
+        }
+    }
+</script>
+<style lang="less">
+    @import "../../less/admin.less";
+    .content{
+        background: #fff;
+        // padding: 20px 20px 30px;
+        padding: 20px 20px 50px;
+        color: #545455;
+        min-width: 980px;
+        position: relative;
+        .discDesc{
+            margin-bottom: 20px;
+        }
+        .disclButn{
+            position: absolute;
+            right: 80px;
+            bottom: 10px;
+        }
+    }
+    .add-version-form{
+        .version-num{
+            width: 500px;
+        }
+    }
+
+</style>

+ 138 - 0
src/components/RuleManager/AddRuleApply.vue

@@ -0,0 +1,138 @@
+<template>
+    <div>
+        <crumbs :title="title" :param="$route.params" linkTo="RuleApply"></crumbs>
+        <div class="contents">
+            <div class="content">
+                <!-- <el-form ref="form" :label-position="labelPosition" label-width="95px" class="add-admin-form" :model="form" :rules="rules"> -->
+                <el-form ref="form" :label-position="labelPosition" label-width="120px" class="add-version-form" :model="form" :rules="rules">
+                    <el-form-item label="规则ID:" prop="ruleId" class="version-num">
+                        <el-input v-model="form.ruleId" placeholder="请输入规则ID"></el-input>
+                    </el-form-item>
+                    <el-form-item label="规则类型:" prop="typeId">
+                        <el-select v-model="form.typeId"
+                                   placeholder="请选择"
+                                   :disabled="true"
+                                   size="small">
+                            <el-option
+                                    v-for="item in ruleTypeList"
+                                    :key="String(item.key)"
+                                    :label="item.name"
+                                    :value="String(item.key)">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                    <el-form-item label="规则信息:" prop="remind" class="discDesc">
+                        <el-input type="textarea" :rows="3" placeholder="请输入规则信息" v-model="form.remind" maxlength="121"></el-input>
+                    </el-form-item>
+                    <el-button class="disclButn" size="small" type="primary" @click="confirm('form')">确定</el-button>
+                </el-form>
+            </div>
+        </div>
+    </div>
+</template>
+<script type="text/javascript">
+    import api from '@api/rulesManage.js';
+    export default {
+        name:'AddRule',
+        data(){
+            return{
+                labelPosition:'left',
+                isFirst:true,
+                title:'规则应用维护-添加规则应用',
+                form:{
+                    typeId:'2'
+                },
+                id:null,
+                rules:{
+                    ruleId:[{ required: true, message: '请输入规则ID',trigger: ['blur'] }],
+                    typeId:[{ required: true, message: '请选择规则类型',trigger: ['blur'] }],
+                    remind:[{ required: true, message: '请输入规则信息',trigger: ['blur'] }],
+                },
+                ruleTypeList:[]
+            }
+        },
+        created(){
+            let info = this.$route.params.data;
+            if(info){
+                this.id = info.id;
+                this.form=Object.assign({},this.form,info);
+                this.title = "规则应用维护-修改规则应用";
+                // this.getList();
+            }
+            let typeList = JSON.parse(localStorage.getItem("knowledgeEnumsData"));
+            this.ruleTypeList = typeList.ruleAppTypeEnum;
+        },
+        methods:{
+            confirm(form){
+                this.$refs[form].validate((valid) => {
+                    if (valid) {
+                        if(this.id){//修改
+                            const param = Object.assign({},this.form,{id:this.id?this.id:undefined})
+                            api.saveRuleApply(param).then((res)=>{
+                                if(res.data.code==0){
+                                    this.$message({
+                                        message:"修改成功",
+                                        type:'success'
+                                    });
+                                    //返回带搜索条件的首页
+                                    this.$router.push({
+                                        name: 'RuleApply',
+                                        params: Object.assign({}, this.$route.params, {currentPage: 1})
+                                    });
+                                }else{
+                                    this.$message({
+                                        message:res.data.msg,
+                                        type:'warning'
+                                    });
+                                }
+                            })
+                        }else{//添加
+                            const params = Object.assign({},this.form,{'id':this.id});
+                            api.saveRuleApply(params).then((res)=>{
+                                if(res.data.code==0){
+                                    this.$message({
+                                        message:"添加成功",
+                                        type:'success'
+                                    });
+                                    this.$router.push({name: 'RuleApply'});
+                                }else{
+                                    this.$message({
+                                        message:res.data.msg,
+                                        type:'warning'
+                                    });
+                                }
+                            })
+                        }
+                    } else {
+                        return false;
+                    }
+                });
+            },
+        }
+    }
+</script>
+<style lang="less">
+    @import "../../less/admin.less";
+    .content{
+        background: #fff;
+        // padding: 20px 20px 30px;
+        padding: 20px 20px 50px;
+        color: #545455;
+        min-width: 980px;
+        position: relative;
+        .discDesc{
+            margin-bottom: 20px;
+        }
+        .disclButn{
+            position: absolute;
+            right: 80px;
+            bottom: 10px;
+        }
+    }
+    .add-version-form{
+        .version-num{
+            width: 500px;
+        }
+    }
+
+</style>

+ 309 - 0
src/components/RuleManager/RuleApply.vue

@@ -0,0 +1,309 @@
+<template>
+    <div>
+        <crumbs title="规则应用维护">
+            <el-form :inline="true">
+                <el-form-item>
+                    <el-button size="mini" :type="reloadFlag?'danger':'info'"  @click="addToCache" style="margin:0 10px">加载</el-button>
+                </el-form-item>
+                <el-form-item label="规则id:">
+                    <el-input size="mini" v-model="filter.ruleId" placeholder="请输入规则id" clearable></el-input>
+                </el-form-item>
+                <!--<el-form-item label="规则类型:">
+                    <el-select v-model="filter.typeId"
+                               placeholder="请选择"
+                               :disabled="true"
+                               size="small">
+                        <el-option
+                                v-for="item in ruleTypeList"
+                                :key="String(item.key)"
+                                :label="item.name"
+                                :value="String(item.key)">
+                        </el-option>
+                    </el-select>
+                </el-form-item>-->
+                <el-form-item label="规则信息:">
+                    <el-input size="mini" v-model="filter.remind" placeholder="请输入规则信息" clearable></el-input>
+                </el-form-item>
+                <el-form-item>
+                    <el-button size="mini" @click="filterDatas">确认</el-button>
+                    <el-button size="mini" type="warning" @click="addRuleApply">添加规则应用</el-button>
+                </el-form-item>
+            </el-form>
+        </crumbs>
+        <div class="contents">
+            <el-table
+                    :data="list"
+                    border
+                    style="width: 100%">
+                <el-table-column
+                        :resizable = "false"
+                        prop="gmtModified"
+                        label="修改时间"
+                        width="180">
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="ruleId"
+                        label="规则ID">
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="typeIdName"
+                        label="规则类型">
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="remind"
+                        label="规则信息">
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="operate"
+                        label="操作"
+                        width="120">
+                    <template slot-scope="scope">
+                        <el-button  @click="modifyRuleApply(scope.row)" type="text" size="small">修改</el-button>
+                        <span style="margin:0 3px;">|</span>
+                        <el-button @click="showDelDialog(scope.row.id)" class="delete" type="text" size="small">删除</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <el-pagination :current-page.sync="currentPage"
+                           @current-change="currentChange"
+                           background
+                           :page-size="pageSize"
+                           :page-sizes="pageSizeArr"
+                           @size-change="handleSizeChange"
+                           :layout="pageLayout"
+                           :total="total">
+            </el-pagination>
+        </div>
+    </div>
+</template>
+
+<script>
+    import api from '@api/rulesManage.js';
+    import config from '@api/config.js';
+    import utils from '@api/utils.js';
+
+    export default {
+        name: 'RulesApply',
+        data: function() {
+            return {
+                list: [],
+                reloadFlag:true,
+                ruleTypeList: [],
+                searched:false,
+                filter: {
+                    ruleId:'',//规则ID
+                    remind:'',      //规则信息
+                    typeId:'2'
+                },
+                currentPage: 1,
+                pageSize: config.pageSize,
+                pageSizeArr:config.pageSizeArr,
+                pageLayout:config.pageLayout,
+                total: 0,
+            }
+        },
+        created() {
+            this.getTypesList();
+        },
+        watch:{
+            'filter':{
+                handler:function(){
+                    this.searched = false;
+                },
+                deep:true
+            }
+        },
+        beforeRouteEnter(to, from, next){
+            next(vm => {
+                //const pm = to.param;
+                Object.assign(vm,to.params);
+                vm.inCurrentPage=to.params.currentPage;
+            })
+        },
+        methods: {
+            addToCache(){
+                if(this.reloadFlag){
+                    this.reloadFlag = false;
+                    api.reloadLib().then((res)=>{
+                        if (res.data.code == 0) {
+                            this.reloadFlag = true;
+                        }
+                    })
+                }
+            },
+            handleSizeChange(val){
+                this.pageSize = val;
+                this.currentPage = utils.getCurrentPage(this.currentPage, this.total, this.pageSize);
+                this.getDataList();
+            },
+            getTypesList() {
+                let typeList = JSON.parse(localStorage.getItem("knowledgeEnumsData"));
+                if(!typeList) {
+                    api.getTypesList().then((res) => {
+                        if (res.data.code === '0') {
+                            const data = res.data.data;
+                            localStorage.setItem('knowledgeEnumsData', JSON.stringify(data));
+                            this.ruleTypeList = res.data.data.ruleAppTypeEnum;
+                        }
+                    })
+                }else{
+                    let typeList = JSON.parse(localStorage.getItem("knowledgeEnumsData"));
+                    this.ruleTypeList = typeList.ruleAppTypeEnum;
+                }
+                this.getDataList();
+            },
+            getDataList(isTurnPage) {
+                const param = 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.getRulesApplyList(param).then((res) => {
+                    loading.close()
+                    const list = [...res.data.data.records];
+                    this.list = list;
+                    this.total = res.data.data.total;
+                    if(this.inCurrentPage!==undefined){
+                        this.currentPage=this.inCurrentPage;
+                        this.inCurrentPage = undefined;
+                    }
+                })
+            },
+            filterDatas() {
+                this.currentPage = 1;
+                this.getDataList();
+            },
+            addRuleApply() {
+                const pam = this.searched?{currentPage:this.currentPage,
+                    pageSize:this.pageSize,
+                    filter:this.filter}:{currentPage:this.currentPage,
+                    pageSize:this.pageSize};
+                this.$router.push({name:'AddRuleApply',
+                    params:pam})
+            },
+            modifyRuleApply(row) {
+                api.ruleApplyDetail({id:row.id}).then((res)=>{
+                    const {code,data,msg} = res.data;
+                    if(code=='0'){
+                        const item = Object.assign({},row,data);
+                        const pam = this.searched?{currentPage:this.currentPage,
+                            pageSize:this.pageSize,
+                            filter:this.filter}:{currentPage:this.currentPage,
+                            pageSize:this.pageSize};
+                        this.$router.push({name:'AddRuleApply',params:Object.assign(pam,{isEdit:true,data:item})});
+                    }else{
+                        this.$message({
+                            message: msg,
+                            type: 'warning'
+                        });
+                    }
+                });
+            },
+            currentChange(next) {
+                this.currentPage = next;
+                this.getDataList(true);
+            },
+            clearFilter(){
+                this.filter = {
+                    ruleId:'',//规则ID
+                    remind:'',
+                    typeId:'2'
+                }
+            },
+            getFilterItems(isTurnPage) {
+                //翻页时筛选条件没点确定则清空
+                if(isTurnPage&&!this.searched){
+                    this.clearFilter();
+                };
+                const param = {
+                    remind:this.filter.remind,
+                    ruleId:this.filter.ruleId,
+                    typeId:this.filter.typeId,
+                    current: this.inCurrentPage||this.currentPage,
+                    size: this.pageSize,
+                };
+                return param;
+            },
+            indexMethod(index) {
+                return ((this.currentPage - 1) * this.pageSize) + index + 1;
+            },
+            warning(msg,type){
+                this.$message({
+                    showClose: true,
+                    message:msg,
+                    type:type||'warning'
+                })
+            },
+            showConfirmDialog(msg,resolve){
+                this.$alert(msg, '提示', {
+                    confirmButtonText: '确定',
+                    type: 'warning'
+                }).then(() => {
+                    resolve();
+                }).catch(() => {});
+            },
+            showDelDialog(id){
+                const param = {
+                    "id": id
+                };
+                this.showConfirmDialog('是否删除该规则应用?',()=>{
+                    api.deleteRuleApply(param).then((res)=>{
+                        if(res.data.code=='0'){
+                            if(!this.searched){
+                                //未点确认时清空搜索条件
+                                this.clearFilter();
+                            }
+                            if(this.list.length==1){
+                                //当前在最后一页且只有一条数据时,删除后跳到前一页
+                                this.currentPage = this.currentPage===1?1:this.currentPage-1;
+                            }
+                            this.getDataList();
+                            this.warning(res.data.msg || '操作成功','success');
+                        }else{
+                            this.warning(res.data.msg);
+                        }
+                    }).catch((error)=>{
+                        this.warning(error);
+                    })
+                });
+            }
+        }
+    }
+</script>
+
+
+<style lang="less">
+    @import "../../less/admin.less";
+    .delete{
+        color: red
+    }
+    .delete:hover {
+        color: red;
+    }
+    .el-select .el-input .el-icon-arrow-up{
+        display: inline-block!important;
+    }
+    .el-select .el-input .el-icon-circle-close{
+        float:left;
+    }
+    .container.simpleQ-crumb{
+        height:90px!important;
+    }
+    .simpleQ-crumb .contents{
+        max-width: 870px;
+        text-align: right;
+    }
+    .contents.simpleQ-contents{
+        padding-top:120px;
+    }
+    .simpleQ-crumb .el-form--inline .el-form-item{
+        margin-bottom: 0;
+    }
+</style>

+ 304 - 0
src/components/RuleManager/RulesManager.vue

@@ -0,0 +1,304 @@
+<template>
+    <div>
+        <crumbs title="规则维护">
+            <el-form :inline="true">
+                <el-form-item label="id:">
+                    <el-input size="mini" v-model="filter.id" placeholder="请输入id" clearable></el-input>
+                </el-form-item>
+                <el-form-item label="规则名:">
+                    <el-input size="mini" v-model="filter.pubName" placeholder="请输入规则名" clearable></el-input>
+                </el-form-item>
+                <el-form-item>
+                    <el-button size="mini" @click="filterDatas">确认</el-button>
+                    <el-button size="mini" type="warning" @click="addRule">添加规则</el-button>
+                </el-form-item>
+            </el-form>
+        </crumbs>
+        <div class="contents">
+            <el-table
+                    :data="list"
+                    border
+                    style="width: 100%">
+                <el-table-column
+                        :resizable = "false"
+                        prop="id"
+                        label="id">
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="pubName"
+                        label="规则名">
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="minOperator"
+                        label="最小值操作符"
+                        width="180">
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="minValue"
+                        label="最小值">
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="minUnit"
+                        label="最小值单位">
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="maxOperator"
+                        label="最大值操作符"
+                        width="80">
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="maxValue"
+                        label="最大值">
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="maxUnit"
+                        label="最大值单位">
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="eqOperator"
+                        label="等于操作符">
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="eqValue"
+                        label="等于值">
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="eqUnit"
+                        label="等于值单位">
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="remind"
+                        label="备注">
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="suffixInfo"
+                        label="文本后缀">
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="operate"
+                        label="操作"
+                        width="140">
+                    <template slot-scope="scope">
+                        <el-button  @click="modifyRule(scope.row)" type="text" size="small">修改</el-button>
+                        <span style="margin:0 3px;">|</span>
+                        <el-button @click="showDelDialog(scope.row.id)" class="delete" type="text" size="small">删除</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <el-pagination :current-page.sync="currentPage"
+                           @current-change="currentChange"
+                           background
+                           :page-size="pageSize"
+                           :page-sizes="pageSizeArr"
+                           @size-change="handleSizeChange"
+                           :layout="pageLayout"
+                           :total="total">
+            </el-pagination>
+        </div>
+    </div>
+</template>
+
+<script>
+    import api from '@api/rulesManage.js';
+    import config from '@api/config.js';
+    import utils from '@api/utils.js';
+
+    export default {
+        name: 'RulesManager',
+        data: function() {
+            return {
+                list: [],
+                searched:false,
+                filter: {
+                    pubName:'',      //规则名
+                    id:''
+                },
+                currentPage: 1,
+                pageSize: config.pageSize,
+                pageSizeArr:config.pageSizeArr,
+                pageLayout:config.pageLayout,
+                total: 0,
+            }
+        },
+        created() {
+           this.getDataList();
+        },
+        watch:{
+            'filter':{
+                handler:function(){
+                    this.searched = false;
+                },
+                deep:true
+            }
+        },
+        beforeRouteEnter(to, from, next){
+            next(vm => {
+                //const pm = to.param;
+                Object.assign(vm,to.params);
+                vm.inCurrentPage=to.params.currentPage;
+            })
+        },
+        methods: {
+            handleSizeChange(val){
+                this.pageSize = val;
+                this.currentPage = utils.getCurrentPage(this.currentPage, this.total, this.pageSize);
+                this.getDataList();
+            },
+            getDataList(isTurnPage) {
+                const param = 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.getRulesList(param).then((res) => {
+                    loading.close()
+                    const list = [...res.data.data.records];
+                    this.list = list;
+                    this.total = res.data.data.total;
+                    if(this.inCurrentPage!==undefined){
+                        this.currentPage=this.inCurrentPage;
+                        this.inCurrentPage = undefined;
+                    }
+                })
+            },
+            filterDatas() {
+                this.currentPage = 1;
+                this.getDataList();
+            },
+            addRule() {
+                const pam = this.searched?{currentPage:this.currentPage,
+                    pageSize:this.pageSize,
+                    filter:this.filter}:{currentPage:this.currentPage,
+                    pageSize:this.pageSize};
+                this.$router.push({name:'AddRule',
+                    params:pam})
+            },
+            modifyRule(row) {
+                api.ruleDetail({id:row.id}).then((res)=>{
+                    const {code,data,msg} = res.data;
+                    if(code=='0'){
+                        const item = Object.assign({},row,data);
+                        const pam = this.searched?{currentPage:this.currentPage,
+                            pageSize:this.pageSize,
+                            filter:this.filter}:{currentPage:this.currentPage,
+                            pageSize:this.pageSize};
+                        this.$router.push({name:'AddRule',params:Object.assign(pam,{isEdit:true,data:item})});
+                    }else{
+                        this.$message({
+                            message: msg,
+                            type: 'warning'
+                        });
+                    }
+                });
+                //this.$router.push({name:'AddIndeptLabel',params:{isEdit:true,data:row}});
+            },
+            currentChange(next) {
+                this.currentPage = next;
+                this.getDataList(true);
+                // if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
+                //     this.list = this.cacheData[next];
+                // } else {
+                //     this.getDataList();
+                // }
+            },
+            clearFilter(){
+                this.filter = {
+                    pubName:'',      //规则名
+                    id:''
+                }
+            },
+            getFilterItems(isTurnPage) {
+                //翻页时筛选条件没点确定则清空
+                if(isTurnPage&&!this.searched){
+                    this.clearFilter();
+                };
+                const param = {
+                    current: this.inCurrentPage||this.currentPage,
+                    size: this.pageSize,
+                    pubName:this.filter.pubName.trim(),
+                    id:this.filter.id.trim(),
+                };
+                return param;
+            },
+            indexMethod(index) {
+                return ((this.currentPage - 1) * this.pageSize) + index + 1;
+            },
+            getTagType(val) {
+                return val
+            },
+            warning(msg,type){
+                this.$message({
+                    showClose: true,
+                    message:msg,
+                    type:type||'warning'
+                })
+            },
+            showConfirmDialog(msg,resolve){
+                this.$alert(msg, '提示', {
+                    confirmButtonText: '确定',
+                    type: 'warning'
+                }).then(() => {
+                    resolve();
+                }).catch(() => {});
+            },
+            showDelDialog(id){
+                const param = {
+                    "id": id
+                };
+                this.showConfirmDialog('是否删除该规则?',()=>{
+                    api.deleteRule(param).then((res)=>{
+                        if(res.data.code=='0'){
+                            if(!this.searched){
+                                //未点确认时清空搜索条件
+                                this.clearFilter();
+                            }
+                            if(this.list.length==1){
+                                //当前在最后一页且只有一条数据时,删除后跳到前一页
+                                this.currentPage = this.currentPage===1?1:this.currentPage-1;
+                            }
+                            this.getDataList();
+                            this.warning(res.data.msg || '操作成功','success');
+                        }else{
+                            this.warning(res.data.msg);
+                        }
+                    }).catch((error)=>{
+                        this.warning(error);
+                    })
+                });
+            }
+        }
+    }
+</script>
+
+
+<style lang="less">
+    @import "../../less/admin.less";
+    .delete{
+        color: red
+    }
+    .delete:hover {
+        color: red;
+    }
+    .el-select .el-input .el-icon-arrow-up{
+        display: inline-block!important;
+    }
+    .el-select .el-input .el-icon-circle-close{
+        float:left;
+    }
+</style>

+ 10 - 0
src/routes.js

@@ -111,6 +111,12 @@ import AddAssistCheckSon from '@components/medicalTerm/AddAssistCheckSon.vue';
 import TokenControl from '@components/safeControl/TokenControl.vue';
 import AddToken from '@components/safeControl/AddToken.vue';
 
+//规则管理
+import RulesManager from '@components/RuleManager/RulesManager.vue';
+import RuleApply from '@components/RuleManager/RuleApply.vue';
+import AddRule from '@components/RuleManager/AddRule.vue';
+import AddRuleApply from '@components/RuleManager/AddRuleApply.vue';
+
 export default [
   {
     path: '/',
@@ -283,6 +289,10 @@ export default [
       {path:'LT-SJTJ-YXSJTJ',component:MedicalStatistics,name:'MedicalStatistics'},  //问题列表
       {path:'LT-AQGL-LICENSEWH',component:TokenControl,name:'TokenControl'},  //安全管理--令牌列表
       {path:'LT-AQGL-TJLICENSE',component:AddToken,name:'AddToken'},  //安全管理--发放令牌
+      {path:'LT-YXSYKWH-GZWH',component:RulesManager,name:'RulesManager'},//规则管理
+      {path:'LT-YXSYKWH-TJGZWH',component:AddRule,name:'AddRule'},//规则添加
+      {path:'LT-YXSYKWH-GZYYWH',component:RuleApply,name:'RuleApply'},//规则管理
+      {path:'LT-YXSYKWH-TJGZYYWH',component:AddRuleApply,name:'AddRuleApply'},//规则添加
     ]
   }
 ]