Explorar o código

Merge remote-tracking branch 'origin/master' into referMaster

zhouna %!s(int64=5) %!d(string=hai) anos
pai
achega
c6f34fb42d

+ 78 - 49
package-lock.json

@@ -1928,6 +1928,15 @@
       "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",
+      "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 +4542,12 @@
         }
       }
     },
+    "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",
+      "dev": true,
+      "optional": true
+    },
     "filesize": {
       "version": "3.6.1",
       "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz",
@@ -4799,14 +4814,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": {
@@ -4828,7 +4844,7 @@
           "optional": true
         },
         "are-we-there-yet": {
-          "version": "1.1.4",
+          "version": "1.1.5",
           "bundled": true,
           "dev": true,
           "optional": true,
@@ -4854,7 +4870,7 @@
           }
         },
         "chownr": {
-          "version": "1.0.1",
+          "version": "1.1.3",
           "bundled": true,
           "dev": true,
           "optional": true
@@ -4884,16 +4900,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 +4927,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 +4958,7 @@
           }
         },
         "glob": {
-          "version": "7.1.2",
+          "version": "7.1.6",
           "bundled": true,
           "dev": true,
           "optional": true,
@@ -4962,16 +4978,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,7 +5006,7 @@
           }
         },
         "inherits": {
-          "version": "2.0.3",
+          "version": "2.0.4",
           "bundled": true,
           "dev": true,
           "optional": true
@@ -5032,22 +5048,22 @@
           "optional": 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": {
@@ -5060,38 +5076,38 @@
           }
         },
         "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 +5121,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,
@@ -5182,18 +5207,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,16 +5248,16 @@
           }
         },
         "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
@@ -5250,7 +5275,7 @@
           "optional": true
         },
         "semver": {
-          "version": "5.5.0",
+          "version": "5.7.1",
           "bundled": true,
           "dev": true,
           "optional": true
@@ -5303,18 +5328,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,12 +5349,12 @@
           "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": {
@@ -5339,7 +5364,7 @@
           "optional": true
         },
         "yallist": {
-          "version": "3.0.2",
+          "version": "3.1.1",
           "bundled": true,
           "dev": true,
           "optional": true
@@ -6399,6 +6424,11 @@
         "topo": "3.x.x"
       }
     },
+    "jquery": {
+      "version": "3.4.1",
+      "resolved": "https://registry.npm.taobao.org/jquery/download/jquery-3.4.1.tgz",
+      "dev": true
+    },
     "js-levenshtein": {
       "version": "1.1.6",
       "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz",
@@ -7176,9 +7206,8 @@
       "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",
       "dev": true,
       "optional": true
     },

+ 31 - 13
src/api/config.js

@@ -1,3 +1,6 @@
+// const testUrl = 'http://223.93.170.82:23650'
+const testUrl = ''
+
 export default {
   host:'http://192.168.2.241:5050',
   imgHost:'http://192.168.2.122:82',      //富文本编辑器图片回传地址
@@ -14,8 +17,8 @@ export default {
     'registry': '/api/user/user/registry',
     'getSmsWithResetPassword': '/api/user/userver/getSmsWithResetPassword',
     'resetPassword': '/api/user/user/resetPassword',
-    'getAccessdMenu': '/api/user/user/getUserOrgMenu',  //获取左侧菜单项
-    'getVersionInner':'api/knowledgeman/versionInfo/getVersionInfoInner',  //获取内部版本信息
+    'getAccessdMenu': testUrl+'/api/user/user/getUserOrgMenu',  //获取左侧菜单项
+    'getVersionInner':testUrl+'api/knowledgeman/versionInfo/getVersionInfoInner',  //获取内部版本信息
     'getVersionOuter':'api/knowledgeman/versionInfo/getVersionInfoOuter',  //获取外部版本信息
     'getUserEnumsData': '/api/user/getUserEnumsData',   //获取用户枚举数据
     'getDiagbotManEnumsData':'/api/diagbotman/getDiagbotManEnumsData',      //获取产品枚举类型
@@ -149,7 +152,7 @@ export default {
     'getVersionDetlInfo': 'api/knowledgeman/versionDetail/getDetailById', //版本信息-版本说明列表获取
     'promptServer':'/api/knowledgeman/file/uploadImage',    //静态知识富文本图片上传
     /**************医学术语维护****************/
-    'getKnowledgeEnums':'/api/knowledgeman/getKlmEnumsData', //术语库枚举
+    'getKnowledgeEnums':testUrl+'/api/knowledgeman/getKlmEnumsData', //术语库枚举
 	  'saveConceptInfo':'/api/knowledgeman/conceptDetail/insertOrUpdate',   //保存术语静态知识
     'delConceptInfo':'/api/knowledgeman/conceptDetail/delete',   //删除术语静态知识
     'knowledgeName': 'api/knowledgeman/concept/getAllInformation', //医学术语-命名维护
@@ -202,7 +205,7 @@ export default {
     'searchKnowledgeLis': 'api/knowledgeman/scaleContent/index', //量表结构检索
     'getknowledgeList': 'api/knowledgeman/dictionaryInfo/getList', //量表结构字典信息
     'getModuleType': 'api/icssman/moduleInfo/getModuleType',  //模板维护 -- 类型筛选
-    'indexByLexicon': 'api/icssman/questionInfo/indexByLexicon',  //知识库标准化-根据名称和术语库词性类型搜索
+    'indexByLexicon': testUrl+'/'+'api/icssman/questionInfo/indexByLexicon',  //知识库标准化-根据名称和术语库词性类型搜索
     'indexByLexiconStandWord':'api/knowledgeman/commonconcept/indexByLexicon',  //知识库标准化-根据名称搜索
     'getAssaySon': 'api/knowledgeman/lisSonContact/lisSonContactList',  //化验子项维护
     'getAssaySonDetail': 'api/knowledgeman/lisSonContact/relationContactDetail',  //化验子项维护-详情
@@ -230,20 +233,21 @@ export default {
 
 
 	  /*********预问诊相关接口**********/
-	  'questionList':'/api/precman/questionInfo_prec/page',     //预问诊-填写单列表
-    'questionAdd':'/api/precman/questionInfo_prec/saveOrUpdate',      //预问诊-填写单添加
-    'questionSearch':'/api/precman/questionInfo_prec/index',    //预问诊-填写单检索
-    'preTypeList':'/api/precman/dictionaryInfo_prec/getList',   //类型枚举
+	  'questionList':testUrl+'/api/precman/questionInfo_prec/page',     //预问诊-填写单列表
+    'questionAdd':testUrl+'/api/precman/questionInfo_prec/saveOrUpdate',      //预问诊-填写单添加
+    'questionSearch':testUrl+'/api/precman/questionInfo_prec/index',    //预问诊-填写单检索
+    'preTypeList':testUrl+'/api/precman/dictionaryInfo_prec/getList',   //类型枚举
     'questionDel':'/api/precman/questionInfo_prec/delete',      //删除
     'uploadImg':'/api/precman/file_prec/uploadImage',       //图片上传
     'fileDel':'/api/precman/file_prec/deleteRemoteFile',          //图片删除
-    'questionDetail':'/api/precman/questionInfo_prec/getById',                //填写单详情
-    'moduleList':'/api/precman/moduleInfo_prec/getModuleInfoList',        //模板列表
+    'questionDetail':testUrl+'/api/precman/questionInfo_prec/getById',                //填写单详情
+    'moduleList':testUrl+'/api/precman/moduleInfo_prec/getModuleInfoList',        //模板列表
     'addModule':'/api/precman/moduleInfo_prec/saveOrUpdateModuleInfo',        //模板添加
     'delModule':'/api/precman/moduleInfo_prec/delete',        //模板删除
     'moduleDetail':'/api/precman/moduleInfo_prec/getModuleInfoOne',    //模板详情
-    'deptList':'/api/precman/moduleInfo_prec/getAllDeptAndDisInfo',    //模板-科室列表
-    'getPrecModuleType':'/api/precman/moduleInfo_prec/getModuleType',     //获取未创建的模板类型
+    'deptList':testUrl+'/api/precman/moduleInfo_prec/getAllDeptAndDisInfo',    //模板-科室列表
+    'getPrecModuleType':testUrl+'/api/precman/moduleInfo_prec/getModuleType',     //获取未创建的模板类型
+    'getByIds':'/api/prec/questionInfo/getByIds',// 获取多个问题
      /*********诊断依据*********/
      'exportDiagnosticAll': '/api/knowledgeman/diagnose/exportDiagnosticAll', //诊断依据--导出诊断依据
      'exportDiagnosticBasis': '/api/knowledgeman/diagnose/exportDiagnosticBasis', //诊断依据--导出诊断依据问题
@@ -266,7 +270,21 @@ 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',
+
+      'getRecord':'/api/mrman/arRechome/getAllList',//病历管理
+      'getRecordDetail':'/api/mrman/arRechome/getBABLContent',//病历管理--病历详情
+      'saveRecord':'/api/mrman/arRechome/saveBABLContent',  //保存病例
+      'getTypes':'/api/mrman/getMrEnumsData',//枚举类型
   },
 	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://192.168.2.236:88';
 
 const urls = config.urls;
 export default {

+ 3 - 0
src/api/preTreat.js

@@ -3,6 +3,9 @@ import config from '@api/config.js';
 
 const urls = config.urls;
 export default {
+  getByIds(param){
+    return axios.post(urls.getByIds,param)
+  },
   getQuestionList(param){
     return axios.post(urls.questionList,param);
   },

+ 18 - 0
src/api/records.js

@@ -0,0 +1,18 @@
+import axios from 'axios';
+import config from '@api/config.js';
+
+const urls = config.urls;
+export default {
+  getRecordList:(param)=>{
+    return axios.post(urls.getRecord,param);
+  },
+  getRecordDetail:(param)=>{
+    return axios.post(urls.getRecordDetail,param);
+  },
+  saveRecord:(param)=>{
+    return axios.post(urls.saveRecord,param);
+  },
+  getTypes:(param)=>{
+    return axios.post(urls.getTypes,param);
+  },
+}

+ 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)
+    },
+}

+ 5 - 2
src/api/utils.js

@@ -180,10 +180,11 @@ export default {
   /**
    * 
    * @param {dataArr} 右侧选中的数据二维数组 
+   * @param {tmpArrAdd} 既往史自动生成的组合标签的id存储 
    * @param {type} 填写单类型 
    */
-  dataRecombination(dataArr,type){
-    // console.log(dataArr,type)
+  dataRecombination(dataArr,type,tmpArrAdd){
+    // console.log(11111,tmpArrAdd,dataArr)
     let tmpArr = [];
     for(let i = 0;i < dataArr.length;i++){
       let tmpData = dataArr[i];
@@ -215,7 +216,9 @@ export default {
           }else{
             mapping.formPosition = 0;
             mapping.exclusionType = 0;
+            mapping.sonQuestion = tmpArrAdd[i][0] || ''; //既往史新增标签的id
             sonMappingObj.sonQuestion = tmpData[j];    //{sonQuestion:18}
+            sonQuestionMap.id = tmpArrAdd[i][0] || '';    //{sonQuestion:18}
             sonQuestionMap.questionMappings = sonMappingArr;    //{id:"",[{sonQuestion:18},{sonQuestion:18}]}
             mapping.questionMappingSon = sonQuestionMap;
           }

+ 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>

+ 5 - 3
src/components/icss/NoiseTemplate.vue

@@ -136,7 +136,8 @@ export default {
       },
       sendIds: [[], [], [], [], [], []],           //标签明细右侧操作数据
       saveDisable: false, //保存按钮是否可点击
-      isEditOrCopy: false //是否为修改或复制
+      isEditOrCopy: false, //是否为修改或复制
+      tmpArrAdd:[[], [], [], [], [], []],//既往史自动生成标签id
     }
   },
   beforeMount:function(){
@@ -182,8 +183,9 @@ export default {
     changeType(type) {        //填写单类型改变,标签明细左侧更新,右侧清空
       // console.log(type)
     },
-    changeActionData(arr) {          //标签明细右侧数据id
+    changeActionData(arr,tmpArr) {          //标签明细右侧数据id
       this.sendIds = arr
+      this.tmpArrAdd = tmpArr
     },
     submitForm() {       // 调用子组件的方法验证公用部分
       if(document.querySelectorAll('.redWordTip')[0]){
@@ -218,7 +220,7 @@ export default {
           return;
       }
      
-      let detailLis = utils.dataRecombination(this.sendIds, this.dataPub.region2)
+      let detailLis = utils.dataRecombination(this.sendIds, this.dataPub.region2,this.tmpArrAdd)
 
       let param = {
         "disTypeVO": {

+ 33 - 1
src/components/icss/PubTagPartDetail.vue

@@ -144,6 +144,7 @@ export default {
       poolDetailList: [[{questionDetailList:[]}],[{questionDetailList:[]}],[],[],[],[]],     //默认6个部分
       poolDetailListTips: [[],[],[],[],[],[]],     //6个部分对应的提示
       poolDetailListIds: [[],[],[],[],[],[]],     //6个部分对应的id
+      poolDetailListIdsTmp: [[],[],[],[],[],[]],     //6个部分对应有自动生成的id
       poolDetailListAll:[],    //默认6个部分转化为一维数组
       activePart: '-1',        //选中part第几个
       activePartSon:'-1',      //选中第几个part中的元素了
@@ -167,6 +168,7 @@ export default {
       this.currentTipLis = this.tipLis
       if(tagList.length > 0){
         let tmpArr = [[],[],[],[],[],[]];
+        let tmpArrAdd = [[],[],[],[],[],[]];
         this.tmpNum = 1
         if(this.sign == 2){//杂音修改
           if(tagList[0].formPosition == 1){
@@ -189,6 +191,11 @@ export default {
                     tmpArr[1].push(sticArr)
                     tmpArr[idx+1] = val.questionMapping
                   }
+                  if(idx >1){
+                    tmpArrAdd[idx].push(val.id)//既往史自动生成的id
+                  }else{
+                    tmpArrAdd[idx]=[]
+                  }
                 })
               }else if(tagList[0].formPosition == 1 && tagList[1].tagType == 1){   //第一条为互斥项,第二条是伴无  12...
                 tagList.map((val,idx)=>{
@@ -197,6 +204,11 @@ export default {
                     }else{
                       tmpArr[idx] = val.questionMapping
                     }
+                    if(idx >1){
+                      tmpArrAdd[idx].push(val.id)//既往史自动生成的id
+                    }else{
+                      tmpArrAdd[idx]=[]
+                    }
                 })
               }else if(tagList[0].formPosition != 1 && tagList[0].tagType == 1){   //第一条是伴无  2...
                 tagList.map((val,idx)=>{
@@ -206,12 +218,22 @@ export default {
                     }else if(idx > 0){
                       tmpArr[idx+1] = val.questionMapping
                     }
+                    if(idx >1){
+                      tmpArrAdd[idx].push(val.id)//既往史自动生成的id
+                    }else{
+                      tmpArrAdd[idx]=[]
+                    }
                 })
               }else{  //第一条不是互斥项,第二条不是伴无  3...
                 tmpArr[0].push({questionDetailList:[]})
                 tmpArr[1].push({questionDetailList:[]})
                 tagList.map((val,idx)=>{
                   tmpArr[idx+2] = val.questionMapping
+                  if(idx >1){
+                    tmpArrAdd[idx].push(val.id)//既往史自动生成的id
+                  }else{
+                    tmpArrAdd[idx]=[]
+                  }
                 })
               }
             }else{       //有且只有一条
@@ -225,10 +247,12 @@ export default {
                 tmpArr[0].push(sticArr)
                 tmpArr[1].push(sticArr)
                 tmpArr[2] = tagList[0].questionMapping
+                tmpArrAdd[2].push(tagList[0].id)
               }
             }
           }
         this.poolDetailList = tmpArr
+        this.poolDetailListIdsTmp = tmpArrAdd
         this.poolDetailListAll = Array.prototype.concat.apply([],this.poolDetailList);     //二维转一维
         this.searchTagList()
         this.getPoolDetailListTips();
@@ -281,6 +305,7 @@ export default {
         this.poolDetailList = [[{questionDetailList:[]}],[{questionDetailList:[]}],[],[],[],[]]
         this.poolDetailListTips = [[],[],[],[],[],[]]
         this.poolDetailListIds = [[],[],[],[],[],[]]
+        this.poolDetailListIdsTmp =[[],[],[],[],[],[]]
         this.poolDetailListAll=[]
         this.activePart='-1'
         this.activePartSon='-1'
@@ -333,23 +358,30 @@ export default {
       }else if((this.choose == 'multiple') && (utils.filterArr(this.selectArr,true,2) && this.poolDetailList[this.activePart].length > 0) || (this.multipleItem.length > 0)){
         if(this.activePart != -1){
           let tmparr = this.poolDetailList;
+          let tmpAddIds = this.poolDetailListIdsTmp;
           if(this.activePart == 0 || this.activePart == 1){
             tmparr[this.activePart] = [{questionDetailList:[]}]
           }else{
             tmparr[this.activePart] = []
+            tmpAddIds[this.activePart] = []
           }
           this.poolDetailList = tmparr;
+          this.poolDetailListIdsTmp = tmpAddIds
           this.poolDetailListAll = Array.prototype.concat.apply([],this.poolDetailList);     //二维转一维
           this.searchTagList();
           this.currentLis = [];
           this.getPoolDetailListTips();
         }else{
           let tmparr = [],tmpArr = this.poolDetailList[this.activePartSon],tmpArrR = [];
+          let tmpAddIds = this.poolDetailListIdsTmp;
           this.multipleItem.map((id)=>{
             this.poolDetailListAll = utils.filterArr(this.poolDetailListAll,id,1,1)
             this.multipleItem = []
             tmpArr = utils.filterArr(tmpArr,id,1,1)
           })
+          if(tmpArr.length == 0){
+            tmpAddIds[this.activePartSon] = []
+          }
           this.poolDetailList[this.activePartSon] = tmpArr
           this.searchTagList();
           this.currentLis = [];
@@ -381,7 +413,7 @@ export default {
           }
         }
       }
-      this.$emit('changeActionData',poolDetailListIds, false);
+      this.$emit('changeActionData',poolDetailListIds,this.poolDetailListIdsTmp, false);
       if(this.choose == 'multiple'){
         this.poolDetailListTips = [[],[],[],[],[],[]]
       }else{

+ 1 - 1
src/components/preTreat/AddCombinQuestion.vue

@@ -109,7 +109,7 @@
             "itemType" :this.dataPub.region12,           //是否为主要内容
             "url":this.dataPub.region13,                  //上传图片
             'explains':this.dataPub.explains,           //症状解释
-            //"questionDetails": this.options,                //明细项
+            "questionDetails": this.options,                //明细项
             "questionMappings": this.options,      //映射关系,
           }
         };

+ 2 - 1
src/components/preTreat/AddSimpleQuestion.vue

@@ -19,11 +19,12 @@
                 填写单明细:<span v-if="dataPub.region2==2">(互斥项与其他明细内容互斥,互斥项同时只可选择一个)</span>
             </p>
             <PubSelect
-                    v-if="dataPub.region2==1 || dataPub.region2==2 || dataPub.region2==3 || dataPub.region2==11|| dataPub.region2==8"
+                    v-if="dataPub.region2==1 || dataPub.region2==2 || dataPub.region2==3 || dataPub.region2==11|| dataPub.region2==8|| dataPub.region2==10"
                     :ascription="dataPub.region1"
                     :sexType="dataPub.region7"
                     :type="dataPub.region2"
                     @pushValues="pushValues"
+                    :hasId="editData.id||''"
                     :options="editData.questionDetailList"></PubSelect>
             <div class="btn">
                 <el-button

+ 30 - 14
src/components/preTreat/PubIndeptQa.vue

@@ -13,7 +13,7 @@
                     label="选择归属:"
                     prop="region1"
             >
-                <span class="changeTips">改变归属后,填写单明细将会恢复到默认状态</span>
+                <!-- <span class="changeTips">改变归属后,填写单明细将会恢复到默认状态</span> -->
                 <el-select
                         v-model="form.region1"
                         placeholder="请选择归属"
@@ -31,7 +31,7 @@
             <el-form-item
                     label="选择类型:"
                     prop="region2">
-                <span class="changeTips">改变类型后,填写单明细将会恢复到默认状态</span>
+                <!-- <span class="changeTips">改变类型后,填写单明细将会恢复到默认状态</span> -->
                 <el-select
                         v-model="form.region2"
                         placeholder="请选择类型"
@@ -39,7 +39,8 @@
                         @change="readyChangeSelect(2)"
                 >
                     <el-option
-                            v-for="item in labelTypes"
+                            v-for="item in labelTypes" 
+                            v-if="item.val!=6&&item.val!=7"
                             :label="item.name"
                             :value="item.val"
                             :key="item.val"
@@ -100,12 +101,13 @@
                         @change="sendData"
                 ></el-input>
             </el-form-item>
-          <el-form-item class="flag-box"  v-if="qaType =='1'&& form.region1 == '1' && form.region2 != '4'">
-              <el-checkbox v-model="form.required"  label="必填" true-label="1" false-label="0"  @change="sendData"></el-checkbox>
+          <!-- <el-form-item class="flag-box"  v-if="qaType =='1'&& form.region1 == '1' && form.region2 != '4'"> -->
+          <el-form-item class="flag-box"  v-if="qaType =='1'&&form.region1==1&&(form.region2=='1'||form.region2=='9'||form.region2=='2')">
+              <!-- <el-checkbox v-model="form.required"  label="必填" true-label="1" false-label="0"  @change="sendData"></el-checkbox> -->
               <!--<el-checkbox v-if="form.region2=='9'" v-model="form.specFlag" label="拼接到主诉" true-label="1" false-label="0"  @change="sendData"></el-checkbox>-->
-              <el-checkbox v-if="form.region2=='1'||form.region2=='9'" :disabled="form.flag==='2'" v-model="form.flag" label="时间类型" true-label="1" false-label=""  @change="sendData"></el-checkbox>
-              <el-checkbox v-if="form.region2=='1'||form.region2=='2'" :disabled="form.flag==='1'" v-model="form.flag" label="诱因类型" true-label="2" false-label=""  @change="sendData"></el-checkbox>
-              <el-checkbox v-if="form.region2=='8'" v-model="form.flag" label="伴随类型" true-label="3" false-label=""  @change="sendData"></el-checkbox>
+              <el-checkbox v-if="(form.region2=='9')&&form.region1!='51'" :disabled="form.flag==='2'" v-model="form.flag" label="时间类型" true-label="1" false-label=""  @change="sendData"></el-checkbox>
+              <el-checkbox v-if="(form.region2=='1'||form.region2=='2')&&form.region1!='51'" :disabled="form.flag==='1'" v-model="form.flag" label="诱因类型" true-label="2" false-label=""  @change="sendData"></el-checkbox>
+              <!-- <el-checkbox v-if="form.region2=='8'" v-model="form.flag" label="伴随类型" true-label="3" false-label=""  @change="sendData"></el-checkbox> -->
           </el-form-item>
             <el-form-item
                     v-if="qaType==2"
@@ -299,10 +301,10 @@
         showFileList:false,
         uploadUrl:config.urls.uploadImg,        //图片上传地址
         labelTypesMaps: {       // 归属和填写单类型限制
-          '1':['1','2','3','5','6','7','8','9'], //症状情况
-          '51':['1','2','3','4','5','6','7','9'],    //诊疗情况
-          '3':['1','2','3','5','6','7','9'],         //其他史
-          '52':['1','2','3','5','6','7','9']            //补充内容
+          '1':['1','2','3','5','8','9','10'], //症状情况
+          '51':['1','2','3','4','5','9','10'],    //诊疗情况
+          '3':['1','2','3','5','9','10'],         //其他史
+          '52':['1','2','3','5','9','10']            //补充内容
         },
         combinLabelMaps:{
           '1':['4'], //症状情况
@@ -411,8 +413,22 @@
       getDropList() {
         return api.getPreTypeList().then((res) => {
           if (res.data.code === '0') {
-            this.Adscriptions = res.data.data[1];
-            this.labelTypesList = this.qaType==1?res.data.data[2]:res.data.data[3];
+            const {isEdit,isCopy} = this.$route.params;
+            if(this.qaType == 1){
+              this.Adscriptions = res.data.data[1];
+              this.labelTypesList = res.data.data[2];
+            }else{
+              if(isEdit||isCopy){
+                this.Adscriptions = res.data.data[1];
+                this.labelTypesList = res.data.data[3];
+              }else{
+                this.Adscriptions = (res.data.data[1]).slice(0,1);
+                this.form.region1 = '1'
+                this.labelTypesList = (res.data.data[3]).slice(0,1);
+                this.form.region2 = '4'
+              }
+            }
+
             const editData = this.$props.editData;
             //编辑时,单选、多选可互相切换
             if(editData.controlType=='1'||editData.controlType=='2'){

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 648 - 311
src/components/preTreat/PubSelect.vue


+ 2 - 2
src/components/preTreat/QuestionTagGroup.vue

@@ -276,7 +276,6 @@ export default {
               return ;
             }
             this.rightTagsList.push(...this.selectLeftTagsList);
-
             for (let i = 0; i < this.rightTagsList.length; i++) {
                 this.leftTagsList = this.leftTagsList.filter(item => item.id !== this.rightTagsList[i].id)
             }
@@ -300,7 +299,8 @@ export default {
                 "notIds": notIds,
                 "notControlType":this.qaType==2||this.ascription!='51'?['4']:[],             //组合填写单或非诊疗情况模版不能添加图片上传
                 "sexType": this.sexType,
-                "tagType":+this.qaType===2?maps[this.type]:['1','6']       //qaType=2:组合填写单,qaType=3模板
+                "tagType":+this.qaType===2?maps[this.type]:['1']       //qaType=2:组合填写单,qaType=3模板
+                // "tagType":+this.qaType===2?maps[this.type]:['1','6']       //qaType=2:组合填写单,qaType=3模板
             };
             api.questionSearch(param).then((res) => {
                 if (res.data.code === '0') {

+ 1 - 1
src/components/preTreat/SimpleQuestion.vue

@@ -163,7 +163,7 @@
           if(res.data.code === '0') {
             this.Adscriptions = res.data.data[1];
             this.tagTypes =  res.data.data[2];
-            this.tagTypes =  this.tagTypes.filter(item => item.val != 0)  //去掉名称为默认值的填写单类型
+            this.tagTypes =  this.tagTypes.filter(item => item.val != 0&&item.val != 6&&item.val != 7)  //去掉名称为默认值的填写单类型
 
           }
 

+ 269 - 0
src/components/recordManager/addRecord.vue

@@ -0,0 +1,269 @@
+<template>
+    <div>
+        <crumbs :title="title" :param="$route.params" linkTo="RecordManager"></crumbs>
+        <div class="contents">
+            <div class="content">
+                <el-form ref="form" :label-position="labelPosition" label-width="125px" class="add-record-form" :model="form">
+                    <el-form-item label="性别:" prop="sexType">
+                        <el-select v-model="form.brbaxb"
+                                   placeholder="请选择"
+                                   size="small">
+                            <el-option
+                                    v-for="item in sexType"
+                                    :key="String(item.key)"
+                                    :label="item.name"
+                                    :value="String(item.key)">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                    <el-form-item label="血型:" prop="brbaxx">
+                        <el-select v-model="form.brbaxx"
+                                   placeholder="请选择"
+                                   size="small">
+                            <el-option
+                                    v-for="item in bloodType"
+                                    :key="String(item.key)"
+                                    :label="item.name"
+                                    :value="String(item.key)">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                    <el-form-item label="RH型:" prop="brbarh">
+                        <el-select v-model="form.brbarh"
+                                   placeholder="请选择"
+                                   size="small">
+                            <el-option
+                                    v-for="item in rhType"
+                                    :key="String(item.key)"
+                                    :label="item.name"
+                                    :value="String(item.key)">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                    <p class="sub-title">门(急)诊诊断:</p>
+                    <el-form-item label="主要诊断:" prop="mjzzdmc">
+                        <p v-for="i in form.mjzzyzdList" class="treatments">
+                            <el-input v-model="i.zdjbmc" placeholder="请输入主要诊断"></el-input>
+                            <el-input v-model="i.jbdmid" placeholder="请输诊断编码"></el-input>
+                        </p>
+                    </el-form-item>
+                    <el-form-item label="其他诊断:" prop="mjzzdmc">
+                        <p v-for="i in form.mjzqtzdList" class="treatments">
+                            <el-input v-model="i.zdjbmc" placeholder="请输入其他诊断"></el-input>
+                            <el-input v-model="i.jbdmid" placeholder="请输诊断编码"></el-input>
+                        </p>
+                    </el-form-item>
+                    <p class="sub-title">出院诊断:</p>
+                    <el-form-item label="主要诊断:" prop="zyzyzdmc">
+                        <p v-for="i in form.zyzyzdList" class="treatments">
+                            <el-input v-model="i.zdjbmc" placeholder="请输入门(急)诊诊断"></el-input>
+                            <el-input v-model="i.jbdmid" placeholder="请输诊断编码"></el-input>
+                        </p>
+                    </el-form-item>
+                    <el-form-item label="其他诊断:" prop="zyqtzdmc">
+                        <p v-for="i in form.zyqtzdList" class="treatments">
+                            <el-input v-model="i.zdjbmc" placeholder="请输入门(急)诊诊断"></el-input>
+                            <el-input v-model="i.jbdmid" placeholder="请输诊断编码"></el-input>
+                        </p>
+                        <!--<el-input v-model="form.zyqtzdmc" placeholder="请输入次要诊断"></el-input>-->
+                    </el-form-item>
+                    <el-form-item label="病例记录:">
+                        <el-tabs tab-position="left">
+                            <el-tab-pane :label="i.bljlmc" v-for="i in form.zybljlList">
+                                <el-input
+                                        type="textarea"
+                                        :rows="20"
+                                        v-model="i.bljlnr"
+                                        placeholder="请输入内容">
+                                </el-input>
+                            </el-tab-pane>
+                        </el-tabs>
+                    </el-form-item>
+                    <p class="oper">
+                        <el-button style="margin-right: 30px" size="small" type="primary" @click="comfirn('form')">确定</el-button>
+                        <el-button size="small" @click="cancel">取消</el-button>
+                    </p>
+                </el-form>
+            </div>
+        </div>
+    </div>
+</template>
+<script type="text/javascript">
+  import api from '@api/records.js';
+  export default {
+    name:'AddRecord',
+    data(){
+      return{
+        // data:{},
+        labelPosition:'left',
+        /*zybljlList:[
+          {name:'aaa',content:'333333'},
+          {name:'vvv',content:'333sa'}
+        ],*/
+        sexType:[],
+        bloodType:[],
+        rhType:[],
+        title:'测试病例记录维护-修改测试病例记录',
+        form:{
+          brbaxb:'',
+          brbaxx:'',
+          brbarh:'',
+          mjzzdmc:'',
+          zyzyzdmc:'',
+          zyqtzdmc:'',
+          zybljlList:[]
+        },
+        id:null,
+      }
+    },
+    created(){
+      let info = this.$route.params;
+      this.getTypes();
+      if(Object.keys(info).length>0){
+        this.basyid = info.basyid;
+        this.brzyid = info.brzyid;
+        this.title = "测试病例记录维护-修改测试病例记录";
+        this.getDetail(info.basyid,info.brzyid);
+      }
+    },
+    methods:{
+      getTypes(){
+        api.getTypes().then((res)=>{
+          const result = res.data;
+          if(result.code==0){
+            this.sexType = result.data.sexEnum;
+            this.bloodType = result.data.bloodTypeEnum;
+            this.rhType = result.data.rhTypeEnum;
+          }else{
+            this.$message({
+              message:result.msg,
+              type:'warning'
+            });
+          }
+        })
+      },
+      getDetail(syid,zyid){
+        api.getRecordDetail({basyid:syid,brzyid:zyid}).then((res)=>{
+          const result = res.data;
+          if(result.code==0){
+            this.form = result.data;
+          }else{
+            this.$message({
+              message:result.msg,
+              type:'warning'
+            });
+          }
+        })
+      },
+      cancel(){
+        this.$router.push({
+          name: 'RecordManager',
+          params: Object.assign({}, this.$route.params)
+        });
+      },
+      comfirn(form){
+        /*if(!this.form.name.trim() || !this.form.refreshTime.trim()){
+          this.$message({
+            message:'请填写相关内容',
+            type:'warning'
+          });
+          return
+        }*/
+        /*this.$refs[form].validate((valid) => {
+          if (valid) {*/
+            if(this.basyid){//修改
+              const param = Object.assign({},this.form,{basyid:this.basyid,brzyid:this.brzyid});
+              api.saveRecord(param).then((res)=>{
+                if(res.data.code==0){
+                  this.$message({
+                    message:"修改成功",
+                    type:'success'
+                  });
+                  //返回带搜索条件的首页
+                  this.$router.push({
+                    name: 'RecordManager',
+                    params: Object.assign({}, this.$route.params)
+                  });
+                }else{
+                  this.$message({
+                    message:res.data.msg,
+                    type:'warning'
+                  });
+                }
+              })
+            }else{//添加
+              // 复制时把list多余字段过滤掉,如id等
+              const detail = this.list;
+              let copyDetail=[];
+              let item={};
+              if(detail && detail.length>0){
+                for(let i=0; i<detail.length; i++){
+                  item.title = detail[i].title;
+                  item.description = detail[i].description;
+                  copyDetail.push(item);
+                  item={};
+                }
+              }
+              const params = Object.assign({},this.form);
+              // api.addVersInfo(this.form).then((res)=>{
+              api.saveRecord(params).then((res)=>{
+                if(res.data.code==0){
+                  this.$message({
+                    message:"添加成功",
+                    type:'success'
+                  })
+                  // this.$router.push({path: 'LT-GBBXXWH-BBXXWH'});
+                  this.$router.push({name: 'RecordManager'});
+                }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 50px;
+        color: #545455;
+        min-width: 980px;
+        position: relative;
+    .short-inp{
+        width: 200px;
+    }
+    .sub-title{
+        font-weight: bold;
+        font-size: 16px;
+        margin-bottom: 20px;
+    }
+    .oper{
+        text-align: right;
+    }
+    .treatments{
+    .el-input{
+        width:200px;
+        display: inline-block;
+    }
+    .el-input:first-child{
+        margin-right:20px;
+        &:before{
+             content: '诊断名称:';
+         }
+    }
+    .el-input:last-child:before{
+        content: '诊断编码:';
+    }
+    }
+    }
+
+</style>

+ 238 - 0
src/components/recordManager/recordList.vue

@@ -0,0 +1,238 @@
+<template>
+    <div>
+        <crumbs title="测试病例记录维护" style="min-width: 980px">
+            <el-form :inline="true" class="demo-form-inline">
+                <!--<el-form-item label="病人住院ID:">
+                   <el-input size="mini" v-model="filter.brzyid" placeholder="病人住院ID" clearable></el-input>
+               </el-form-item>
+               <!-form-item>
+                   <el-button size="mini" @click="filterDatas">查找</el-button>
+                   <el-button size="mini" type="warning" @click="addRelation">添加测试病例</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="basyid"
+                        label="病案首页ID"
+                        width="180">
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="brzyid"
+                        label="病人住院ID"
+                        width="180">
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="brbaxm"
+                        label="姓名">
+                </el-table-column>
+                <!--<el-table-column
+                        :resizable = "false"
+                        prop="operName"
+                        label="性别">
+                </el-table-column>-->
+                <el-table-column
+                        :resizable = "false"
+                        prop="operate"
+                        label="操作"
+                        width="180">
+                    <template slot-scope="scope">
+                        <el-button  @click="editRecord(scope.row)" type="text" size="small">修改</el-button>
+                        <span style="margin:0 3px;">|</span>
+                        <el-button @click="editRecord(scope.row,true)" type="text" size="small">查看</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <!--<div class="pagination">
+                <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>
+    </div>
+</template>
+
+<script>
+  import api from '@api/records.js';
+  /*import config from '@api/config.js';
+  import utils from '@api/utils.js';*/
+
+  export default {
+    name: 'RecordManager',   //慢病指标值关联维护
+    data: function() {
+      return {
+        list: [],
+        searched: false,
+        filter:{
+          brzyid:'',
+        },
+        /*currentPage: 1,
+        pageSize: config.pageSize,
+        pageSizeArr:config.pageSizeArr,
+        pageLayout:config.pageLayout,
+        total: 0,*/
+      }
+    },
+    created() {
+      const that = this;
+      //返回时避免参数未赋值就获取列表
+      setTimeout(function(){
+        that.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.getRecordList(param).then((res) => {
+          loading.close();
+          if(res.data.code == '0') {
+            this.list = res.data.data;
+            this.total = res.data.data.length;
+            /*if(this.inCurrentPage!==undefined){
+              this.currentPage=this.inCurrentPage;
+              this.inCurrentPage = undefined;
+            }*/
+          }
+        })
+      },
+      filterDatas() {
+        //this.currentPage = 1;
+        this.getDataList();
+      },
+      editRecord(row,isShow) {
+        const pam = this.searched ? {
+          /*currentPage: this.currentPage,
+          pageSize:this.pageSize,*/
+          filter: this.filter,
+          basyid:row.basyid,
+          brzyid:row.brzyid
+        } : {
+          basyid:row.basyid,
+          brzyid:row.brzyid
+          /*currentPage: this.currentPage,
+          pageSize:this.pageSize*/};
+        this.$router.push({
+          name:isShow?'ShowRecord':'AddRecord',
+          params: pam
+        })
+      },
+      /*currentChange(next) {
+        this.currentPage = next;
+        this.getDataList(true);
+      },*/
+      getFilterItems(isTurnPage) {
+        //翻页时筛选条件没点确定则清空
+        if(isTurnPage&&!this.searched){
+          this.filter.brzyid='';
+        };
+        const param = {
+          /*current: this.inCurrentPage||this.currentPage,
+          size: this.pageSize,*/
+          name:this.filter.brzyid.trim()
+        };
+        return param;
+      },
+      /*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(row){
+        const param = {
+          "conceptId": row.conceptId,
+          "isDeleted": row.isDeleted=== 'N'?'Y':'N',
+          "relationId": 18
+        };
+        const txt = row.isDeleted=== 'N'?'是否删除该关联?':'是否重新启用该关联?';
+        this.showConfirmDialog(txt,()=>{
+          api.delAssaySon(param).then((res)=>{
+            if(res.data.code=='0'){
+              if(!this.searched){
+                //未点确认时清空搜索条件
+                this.filter={
+                  brzyid:'',
+                };
+              }
+              if(row.isDeleted !== 'N'){       //恢复成功后跳转到筛选条件的首页
+                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;
+    }
+    .review{
+        color: #22ccc8;
+    }
+    .pagination {
+        min-width: 1010px;
+    }
+</style>

+ 191 - 0
src/components/recordManager/showRecord.vue

@@ -0,0 +1,191 @@
+<template>
+    <div>
+        <crumbs :title="title" :param="$route.params" linkTo="RecordManager"></crumbs>
+        <div class="contents">
+            <div class="content">
+                <el-form ref="form" :label-position="labelPosition" label-width="125px" class="add-record-form" :model="form">
+                    <el-form-item label="性别:" prop="sexType">
+                        <el-select v-model="form.brbaxb"
+                                   :disabled="true"
+                                   placeholder="请选择"
+                                   size="small">
+                            <el-option
+                                    v-for="item in sexType"
+                                    :key="String(item.key)"
+                                    :label="item.name"
+                                    :value="String(item.key)">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                    <el-form-item label="血型:" prop="brbaxx">
+                        <el-select v-model="form.brbaxx"
+                                   :disabled="true"
+                                   placeholder="请选择"
+                                   size="small">
+                            <el-option
+                                    v-for="item in bloodType"
+                                    :key="String(item.key)"
+                                    :label="item.name"
+                                    :value="String(item.key)">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                    <el-form-item label="RH型:" prop="brbarh">
+                        <el-select v-model="form.brbarh"
+                                   :disabled="true"
+                                   placeholder="请选择"
+                                   size="small">
+                            <el-option
+                                    v-for="item in rhType"
+                                    :key="String(item.key)"
+                                    :label="item.name"
+                                    :value="String(item.key)">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                    <p class="sub-title">门(急)诊诊断:</p>
+                    <el-form-item label="主要诊断:">
+                        <span v-for="i in form.mjzzyzdList" class="treatments">
+                            {{i.zdjbmc}}({{i.jbdmid}}),
+                        </span>
+                    </el-form-item>
+                    <el-form-item label="其他诊断:">
+                        <span v-for="i in form.mjzqtzdList" class="treatments">
+                            {{i.zdjbmc}}({{i.jbdmid}}),
+                        </span>
+                    </el-form-item>
+                    <p class="sub-title">出院诊断:</p>
+                    <el-form-item label="主要诊断:" prop="zyzyzdmc">
+                        <span v-for="i in form.zyzyzdList" class="treatments">
+                            {{i.zdjbmc}}({{i.jbdmid}})
+                        </span>
+                    </el-form-item>
+                    <el-form-item label="其他诊断:" prop="zyqtzdmc">
+                        <span v-for="i in form.zyqtzdList" class="treatments">
+                            {{i.zdjbmc}}({{i.jbdmid}})
+                        </span>
+                        <!--<el-input v-model="form.zyqtzdmc" placeholder="请输入次要诊断"></el-input>-->
+                    </el-form-item>
+                    <el-form-item label="病例记录:">
+                        <el-tabs tab-position="left">
+                            <el-tab-pane :label="i.bljlmc" v-for="i in form.zybljlList">
+                                {{i.bljlnr}}
+                            </el-tab-pane>
+                        </el-tabs>
+                    </el-form-item>
+                    <p class="oper">
+                        <el-button size="small" @click="cancel">返回</el-button>
+                    </p>
+                </el-form>
+            </div>
+        </div>
+    </div>
+</template>
+<script type="text/javascript">
+  import api from '@api/records.js';
+  export default {
+    name:'AddRecord',
+    data(){
+      return{
+        // data:{},
+        labelPosition:'left',
+        /*zybljlList:[
+          {name:'aaa',content:'333333'},
+          {name:'vvv',content:'333sa'}
+        ],*/
+        sexType:[],
+        bloodType:[],
+        rhType:[],
+        title:'测试病例记录维护-修改测试病例记录',
+        form:{
+          brbaxb:'',
+          brbaxx:'',
+          brbarh:'',
+          mjzzdmc:'',
+          zyzyzdmc:'',
+          zyqtzdmc:'',
+          zybljlList:[]
+        },
+        id:null,
+      }
+    },
+    created(){
+      let info = this.$route.params;
+      this.getTypes();
+      if(Object.keys(info).length>0){
+        this.basyid = info.basyid;
+        this.brzyid = info.brzyid;
+        this.title = "测试病例记录维护-查看测试病例记录";
+        this.getDetail(info.basyid,info.brzyid);
+      }
+    },
+    methods:{
+      getTypes(){
+        api.getTypes().then((res)=>{
+          const result = res.data;
+          if(result.code==0){
+            this.sexType = result.data.sexEnum;
+            this.bloodType = result.data.bloodTypeEnum;
+            this.rhType = result.data.rhTypeEnum;
+          }else{
+            this.$message({
+              message:result.msg,
+              type:'warning'
+            });
+          }
+        })
+      },
+      getDetail(syid,zyid){
+        api.getRecordDetail({basyid:syid,brzyid:zyid}).then((res)=>{
+          const result = res.data;
+          if(result.code==0){
+            this.form = result.data;
+          }else{
+            this.$message({
+              message:result.msg,
+              type:'warning'
+            });
+          }
+        })
+      },
+      cancel(){
+        this.$router.push({
+          name: 'RecordManager',
+          params: Object.assign({}, this.$route.params)
+        });
+      },
+    }
+  }
+</script>
+<style lang="less">
+    @import "../../less/admin.less";
+    .content{
+        background: #fff;
+        padding: 20px 20px 50px;
+        color: #545455;
+        min-width: 980px;
+        position: relative;
+    .short-inp{
+        width: 200px;
+    }
+    .oper{
+        text-align: right;
+    }
+    .treatments{
+    .el-input{
+        width:200px;
+        display: inline-block;
+    }
+    .el-input:first-child{
+        margin-right:20px;
+        &:before{
+             content: '诊断名称:';
+         }
+    }
+    .el-input:last-child:before{
+        content: '诊断编码:';
+    }
+    }
+    }
+
+</style>

+ 17 - 0
src/routes.js

@@ -111,6 +111,16 @@ 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';
+
+import RecordManager from '@components/recordManager/recordList.vue';
+import AddRecord from '@components/recordManager/addRecord.vue';
+import ShowRecord from '@components/recordManager/showRecord.vue';
+
 export default [
   {
     path: '/',
@@ -283,6 +293,13 @@ 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'},//规则添加
+      {path: 'LT-BLGL',name:'RecordManager', component: RecordManager},//病历管理
+      {path: 'LT-BLGL-TJBLGL',name:'AddRecord', component: AddRecord},//添加病历
+      {path: 'LT-BLGL-CKBLGL',name:'ShowRecord', component: ShowRecord},//添加病历
     ]
   }
 ]

+ 3 - 2
vue.config.js

@@ -1,7 +1,8 @@
 const path = require('path');
 // const proxy_path = 'http://192.168.2.236:80';
-const proxy_path = 'http://192.168.2.241:88';
-// const proxy_path = 'http://192.168.2.236:88';
+// const proxy_path = 'http://192.168.2.241:88';
+const proxy_path = 'http://223.93.170.82:23650';
+//  const proxy_path = 'http://192.168.2.236:88';
 // const proxy_path = 'http://192.168.3.101:5050';
 // const proxy_path = 'http://192.168.3.117:5050';//周铁刚
 // const proxy_path = 'http://192.168.3.115:5050';