Explorar o código

Merge branch 'master' of http://173.18.12.196:3000/front/platformFront

xtf hai 11 meses
pai
achega
5cc319e806

+ 1 - 1
src/App.vue

@@ -12,7 +12,7 @@
   import utils from '@api/utils.js';
   import api from './api/user.js';
   import icss from './api/icss.js';
-  document.title='朗通云平台'; //修改标签页标题
+  document.title='云平台'; //修改标签页标题
   export default {
     name: 'app',
     created() {

+ 33 - 19
src/api/config.js

@@ -1,11 +1,13 @@
 // const testUrl = 'http://223.93.170.82:23650'
 const testUrl = ''
+
 const host = window.location.hostname;
 const imgHost = host.indexOf("localhost")>-1?'http://173.18.12.194:82':('http://'+host+':82');
+
 export default {
-    //imgHost: 'http://192.168.2.236:82',      //富文本编辑器图片回传地址
-    // imgHost: 'http://192.168.2.121:82',      //富文本编辑器图片回传地址
-    imgHost:imgHost,      //富文本编辑器图片回传地址
+  //imgHost: 'http://192.168.2.236:82',      //富文本编辑器图片回传地址
+  // imgHost: 'http://192.168.2.121:82',      //富文本编辑器图片回传地址
+  imgHost: imgHost,      //富文本编辑器图片回传地址
   delayTime: 500,
   urls: {
     /* 登录注册相关接口 */
@@ -13,7 +15,7 @@ export default {
     'verifyImgVerification': '/api/user/userver/verifyImgVerification',
     'login': 'api/user/user/getJwt',
     'getSmsWithRegister': '/api/user/userver/getSmsWithRegister',
-    // 'getSmsWithRegister': 'http://172.16.8.64:5050/api/user/userver/getSmsWithRegister',
+    // 'getSmsWithRegister': 'http://192.168.3.117:5050/api/user/userver/getSmsWithRegister',
     'verifySmsVerification': '/api/user/userver/verifySmsVerification',
     'checkTel': '/api/user/user/verifyNoUsername',//注册验证手机号
     'checkForgetTel': '/api/user/user/verifyExistUsername',//忘记密码验证手机号
@@ -26,7 +28,7 @@ export default {
     'getUserEnumsData': '/api/user/getUserEnumsData',   //获取用户枚举数据
     'getDiagbotManEnumsData': '/api/diagbotman/getDiagbotManEnumsData',      //获取产品枚举类型
     'saveUserOper': '/api/diagbotman/optInfo/save',    //保存用户记录
-    /* 朗通后台相关接口 */
+    /* 后台相关接口 */
     'getUserAuthenticationStatus': '/api/user/userAuthentication/getUserAuthenticationStatus',         //获取用户认证状态
     'getPersonInfo': '/api/user/user/getPersonInfo',
     'updatePersonInfo': '/api/user/user/updatePersonInfo',
@@ -395,7 +397,7 @@ export default {
     'exportPacsModuleCDSS': '/api/cdssman/tran/mappingConfig/exportExcelModule',
     'precPacsDataMatch': '/api/cdssman/tran/mappingConfig/precDataMatch',
     'dataPacsVerify': '/api/cdssman/tran/mappingConfig/dataVerify',
-    
+
 
     'getDrugPageCDSS': '/api/cdssman/tran/mappingConfig/getPage',   //药品列表
     'drugIsExistRecordCDSS': '/api/cdssman/tran/mappingConfig/isExistRecord',   //药品-映射关系是否已存在
@@ -457,15 +459,15 @@ export default {
     'precNurseDataMatch': '/api/cdssman/tran/mappingConfig/precDataMatch',
     'dataNurseVerify': '/api/cdssman/tran/mappingConfig/dataVerify',
 
-	'getRoutePage': '/api/cdssman/tran/mappingConfig/getPage',   //给药途径列表
-	'RouteIsExistRecord': '/api/cdssman/tran/mappingConfig/isExistRecord',   //给药途径-映射关系是否已存在
-	'saveOrUpdateRecordRT': '/api/cdssman/tran/mappingConfig/saveOrUpdateRecord',   //给药途径列表添加
-	'deleteRouteRecord': '/api/cdssman/tran/mappingConfig/deleteRecord',   //给药途径-删除映射关系
-	'exportRouteRecord': '/api/cdssman/tran/mappingConfig/exportExcel',   //给药途径-数据导出
-	'importRouteRecord': '/api/cdssman/tran/mappingConfig/importExcel',   //给药途径-数据导入
-	'exportRouteModule': '/api/cdssman/tran/mappingConfig/exportExcelModule',   //给药途径-数据导入模板导出
-	'precRouteDataMatch': '/api/cdssman/tran/mappingConfig/precDataMatch',
-	'dataRouteVerify': '/api/cdssman/tran/mappingConfig/dataVerify',
+    'getRoutePage': '/api/cdssman/tran/mappingConfig/getPage',   //给药途径列表
+    'RouteIsExistRecord': '/api/cdssman/tran/mappingConfig/isExistRecord',   //给药途径-映射关系是否已存在
+    'saveOrUpdateRecordRT': '/api/cdssman/tran/mappingConfig/saveOrUpdateRecord',   //给药途径列表添加
+    'deleteRouteRecord': '/api/cdssman/tran/mappingConfig/deleteRecord',   //给药途径-删除映射关系
+    'exportRouteRecord': '/api/cdssman/tran/mappingConfig/exportExcel',   //给药途径-数据导出
+    'importRouteRecord': '/api/cdssman/tran/mappingConfig/importExcel',   //给药途径-数据导入
+    'exportRouteModule': '/api/cdssman/tran/mappingConfig/exportExcelModule',   //给药途径-数据导入模板导出
+    'precRouteDataMatch': '/api/cdssman/tran/mappingConfig/precDataMatch',
+    'dataRouteVerify': '/api/cdssman/tran/mappingConfig/dataVerify',
 
     'getTcmdiseasePage': '/api/cdssman/tran/mappingConfig/getPage',   //中医疾病列表
     'tcmIsExistRecord': '/api/cdssman/tran/mappingConfig/isExistRecord',   //中医疾病-映射关系是否已存在
@@ -585,9 +587,9 @@ export default {
     'zskActiveRule': '/api/cdssman/klRule/startRuleInfo',//启用规则
     'zskDisableRule': '/api/cdssman/klRule/disableRuleInfo',//禁用规则
     'zskDelRule': '/api/cdssman/klRule/clearRuleInfo',//删除规则
-	
-	'zskgetRulePage': '/api/cdssman/klRule/getRulePage',//查询所有有效的规则
-	'zskgetRuleDetail': '/api/cdssman/klRule/getRuleDetail',//根据录入内容查询有效规则的明细
+
+    'zskgetRulePage': '/api/cdssman/klRule/getRulePage',//查询所有有效的规则
+    'zskgetRuleDetail': '/api/cdssman/klRule/getRuleDetail',//根据录入内容查询有效规则的明细
     'zskRuleDetail': '/api/cdssman/klRule/getByIdRuleInfo',//规则详情
     'zskTypeList': '/api/cdssman/klRulePlan/getMenu',//类型列表
     'zskSearchConcept': '/api/cdssman/klDisease/searchConceptRuleClass',//知识库搜索术语
@@ -637,6 +639,14 @@ export default {
     'getByParam': '/api/cdssman/klDrugRegister/getByParam',
     'paramDelete': '/api/cdssman/klDrugRegister/delete',
     'klRegulation': '/api/cdssman/klRegulation/index',
+
+    //经典病历相关
+    'getClassicCasePage': '/api/cdssman/kl/conceptInfo/getClassicCase',//分页查询
+    'getBaseCaseById': '/api/cdssman/kl/conceptInfo/getCaseById',//根据id查询
+    'saveOrUpdateCase': '/api/cdssman/kl/conceptInfo/saveOrUpdateCase',//新增或修改
+    'changeCaseStatus': '/api/cdssman/kl/conceptInfo/changeCaseStatus',//禁用启用
+    'classicCaseBaseInfo': 'api/cdssman/kl/conceptInfo/classicCaseIndexWithoutInfo',//术语检索
+
     //术语集合
     'getConceptPage': '/api/cdssman/kl/conceptCollection/getPage',
     'getRecordById': '/api/cdssman/kl/conceptCollection/getRecordById',
@@ -647,7 +657,7 @@ export default {
     'collectionMatch': '/api/cdssman/kl/conceptCollection/collectionMatch',
 
     'importExcelDataVerify': '/api/cdssman/tran/mappingConfig/importExcelDataVerify',
-    
+
   },
   menuIconList: { //菜单对应图标
     'YH-KZT': 'el-icon-menu',
@@ -707,6 +717,10 @@ export default {
       "name": "一般治疗",
       "key": 4
     },
+    {
+      "name": "诊疗指南",
+      "key": 5
+    },
 
   ],
   emData: [

+ 16 - 0
src/api/knowledgeTree.js

@@ -1,5 +1,6 @@
 import axios from 'axios';
 import config from '@api/config.js';
+import { param } from 'jquery';
 const urls = config.urls;
 
 export default {
@@ -39,6 +40,21 @@ export default {
   getDiseasePage(param) {
     return axios.post(urls.getDiseasePage, param);
   },
+  getClassicCasePage(param) {//经典病例分页查询
+    return axios.post(urls.getClassicCasePage, param);
+  },
+  getBaseCaseById(param) {//获取经典病例详情
+    return axios.post(urls.getBaseCaseById, param)
+  },
+  saveOrUpdateCase(param) {//保存经典病例
+    return axios.post(urls.saveOrUpdateCase, param)
+  },
+  changeCaseStatus(param) {//禁用启用
+    return axios.post(urls.changeCaseStatus, param)
+  },
+  classicCaseBaseInfo(param) {
+    return axios.post(urls.classicCaseBaseInfo, param)
+  },
   staticBaseKnowledge(param) {
     return axios.post(urls.staticBaseKnowledge, param);
   },

+ 1 - 1
src/components/common/Banner.vue

@@ -2,7 +2,7 @@
     <div class="container">
         <div class="banner">
             <div class="logo fl">
-                <img  src="../../images/logo.png" alt="朗通logo"/>
+                <!--<img  src="../../images/logo.png" alt="logo"/>-->
                 <span class="bannerName">云平台</span>
                 <!-- <img class="img-title" src="../../images/title.png"/> -->
             </div>

+ 2 - 2
src/components/common/CopyRightInfo.vue

@@ -1,8 +1,8 @@
 <template>
     <footer class="copyRightContainer">
         <div>
-            <span class="copyRightInfo">版权所有:杭州朗通信息技术有限公司</span>
-            <a class="copyRightNum" href="http://www.beian.miit.gov.cn" target="_blank">浙ICP备:16000400号-2</a>
+            <span class="copyRightInfo"></span>
+            <!--<a class="copyRightNum" href="http://www.beian.miit.gov.cn" target="_blank">浙ICP备:16000400号-2</a>-->
         </div>
     </footer>
 </template>

+ 1 - 1
src/components/common/HomePage.vue

@@ -3,7 +3,7 @@
     <el-aside v-show="onshow">
       <div class="logo">
         <p v-if="userLoginDTO && userLoginDTO.type == '1'">
-          <b>朗通后台管理系统</b>
+          <b>后台管理系统</b>
         </p>
         <p v-if="userLoginDTO && userLoginDTO.type == '0'">
           <b>DiagbotCloud</b>

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1141 - 0
src/components/knowledgeExtra/AddZskClassicCase.vue


+ 365 - 0
src/components/knowledgeExtra/CaseInfo.vue

@@ -0,0 +1,365 @@
+<template>
+  <el-form
+    :rules="rules"
+    :model="data"
+    ref="form"
+    class="sub-form"
+    size="mini"
+    :validate-on-rule-change="false"
+  >
+    <el-form-item label="段落标题:" prop="title" label-width="160px" class="is-required">
+      <el-input v-model="data.title"></el-input>
+    </el-form-item>
+    <el-form-item label="内容" prop="content" label-width="160px" ref="editor">
+      <quillEditor
+        v-model="data.content"
+        :options="editorOption"
+        class="ql-editor"
+        ref="quillEditor"
+      ></quillEditor>
+    </el-form-item>
+    <div class="move_btn">
+      <div
+        v-if="index !== 0"
+        @mouseover="moveTopHover = true"
+        @mouseout="moveTopHover = false"
+        title="上升"
+        @click="reOrder(1)"
+      >
+        <img
+          :src="
+            moveTopHover
+              ? require('@/images/icon_hover_top.png')
+              : require('@/images/icon_default_top.png')
+          "
+          alt
+        />
+      </div>
+      <div
+        v-if="index !== total - 1"
+        @mouseover="moveBottomHover = true"
+        @mouseout="moveBottomHover = false"
+        title="下降"
+        @click="reOrder(0)"
+      >
+        <img
+          :src="
+            moveBottomHover
+              ? require('@/images/icon_hover_down.png')
+              : require('@/images/icon_default_down.png')
+          "
+          alt
+        />
+      </div>
+    </div>
+    <el-form-item label-width="160px" class="btns">
+      <div class="change_btns">
+        <div @click="addEmit">添加段落</div>
+        <div @click="delEmit">删除本段落</div>
+      </div>
+    </el-form-item>
+  </el-form>
+</template>
+
+<script>
+import api from '@api/knowledgeTree.js';
+import 'quill/dist/quill.core.css';
+import 'quill/dist/quill.snow.css';
+import 'quill/dist/quill.bubble.css';
+import { quillEditor, Quill } from 'vue-quill-editor';
+import config from '@api/config';
+import { container, ImageExtend, QuillWatch } from 'quill-image-extend-module';
+Quill.register('modules/ImageExtend', ImageExtend);
+export default {
+  props: ['data', 'index', 'isEdit', 'isCopy', 'total', 'showType','positionMap','positionList'],
+  name: 'CaseInfo',
+  components: {
+    quillEditor
+  },
+  data() {
+    return {
+      moveTopHover: false,
+      moveBottomHover: false,
+      toolbars: [
+        [
+          ['bold', 'underline', 'strike'],
+          [{ list: 'ordered' }, { list: 'bullet' }],
+          [{ script: 'sub' }, { script: 'super' }],
+          [{ color: [] }, { background: [] }],
+          [{ align: [] }],
+          ['image']
+        ]
+      ],
+      toolbarMode: 0,
+      editorOption: {
+        modules: {
+          ImageExtend: {
+            loading: true,
+            name: 'upfile',
+            size: 1,
+            sizeError: () => {
+              this.$message({
+                showClose: true,
+                message: '请上传 1M 以内的图片!',
+                type: 'warning'
+              });
+            },
+            action: config.urls.promptServer,
+            response: res => {
+              if (res.code == '0') {
+                return config.imgHost + res.data.url;
+              } else {
+                this.$message({
+                  showClose: true,
+                  message: res.msg,
+                  type: 'warning'
+                });
+              }
+            }
+          },
+          toolbar: {
+            container: container,
+            handlers: {
+              image: function() {
+                QuillWatch.emit(this.quill.id);
+              }
+            }
+          }
+        }
+      },
+      form: {
+        orderNo: 0
+      },
+      rules: {}
+    };
+  },
+  
+  watch: {
+    'data.content': function() {
+      if (this.data.content !== '') {
+        this.$refs.editor && this.$refs.editor.clearValidate(); // 清除校验
+      }
+      if (this.data.content === '') {
+        // console.log('内容为空');
+        this.$refs['form'].validateField('content'); // 手动校验
+      }
+      this.data.text = this.$refs.quillEditor.quill.root.innerText;
+    }
+  },
+  created() {
+    this.editorOption.modules.toolbar.container = this.toolbars[
+      this.toolbarMode
+    ];
+
+    if (this.isEdit || this.isCopy) {
+      setTimeout(() => {
+        this.rules = {
+          title: [
+            {
+              validator: (rule, value, callback) => {
+                if (!value.trim()) {
+                  callback(new Error('请输入段落标题'));
+                } else {
+                  callback();
+                }
+              },
+              trigger: 'change'
+            },
+            { max: 30, message: '标题名称不能超过30字', trigger: 'change' }
+          ],
+          content: [
+            { required: true, message: '请输入段落内容', trigger: 'change' }
+          ]
+        };
+      }, 100);
+    } else {
+      this.rules = {
+        title: [
+          {
+            validator: (rule, value, callback) => {
+              if (!value.trim()) {
+                callback(new Error('请输入段落标题'));
+              } else {
+                callback();
+              }
+            },
+            trigger: 'change'
+          },
+          { max: 30, message: '标题名称不能超过30字', trigger: 'change' }
+        ],
+        content: [
+          { required: true, message: '请输入段落内容', trigger: 'change' }
+        ]
+      };
+    }
+  },
+  mounted() {
+    let quill = this.$refs.quillEditor.quill;
+    quill.root.addEventListener(
+      'paste',
+      evt => {
+        console.log('evt', evt);
+        if (
+          evt.clipboardData &&
+          evt.clipboardData.files &&
+          evt.clipboardData.files.length
+        ) {
+          console.log('ddadada');
+          evt.preventDefault();
+          [].forEach.call(evt.clipboardData.files, file => {
+            console.log('file', file);
+            if (!file.type.match(/^image\/(gif|jpe?g|a?png|bmp)/i)) return;
+            if (file.size > 1024 * 1000) return;
+            let formData = new FormData();
+            formData.append('upfile', file);
+            api.uploadFile(formData).then(res => {
+              console.log('formData', res);
+              if (res.data.code == '0') {
+                let imgUrl = config.imgHost + res.data.data.url;
+                var range = quill.getSelection();
+                console.log('range', range);
+                if (range) {
+                  // this.uploadAttachment(res, file, null);
+                  let length = quill.getSelection().index;
+                  quill.insertEmbed(length, 'image', imgUrl);
+                  quill.setSelection(length + 1);
+                  //  将光标移动到图片后面
+                  this.$refs.quillEditor.quill.setSelection(range.index + 1);
+                }
+              } else {
+                this.$message({
+                  showClose: true,
+                  message: res.msg,
+                  type: 'warning'
+                });
+              }
+            });
+          });
+        }
+      },
+      false
+    );
+  },
+  methods: {
+    reOrder(i) {
+      this.$emit('reOrder', i, this.index);
+    },
+    addEmit() {
+      this.$emit('add');
+    },
+    delEmit() {
+      this.$emit('del', this.index);
+    },
+  }
+};
+</script>
+
+<style lang="less" scoped>
+.quill-editor.ql-editor {
+  padding-left: 0 !important;
+}
+.is-error .el-form-item__error {
+  top: auto;
+}
+.sub-form {
+  position: relative;
+}
+.order-btn {
+  // position: absolute;
+  top: 12px;
+  right: 0;
+  display: flex;
+  a {
+    margin-bottom: 20px;
+    border: 1px solid #22ccc8;
+    color: #22ccc8;
+    padding: 5px 10px;
+    border-radius: 4px;
+    cursor: pointer;
+    font-size: 12px;
+  }
+  .order-spc {
+    margin-top: 28px;
+  }
+  .order-down {
+    margin-left: 20px;
+  }
+}
+/**富文本编辑器样式修改***/
+.ql-snow .ql-picker.ql-size .ql-picker-label::before,
+.ql-snow .ql-picker.ql-size .ql-picker-item::before,
+.ql-snow .ql-picker.ql-header .ql-picker-label::before,
+it .ql-editor,
+.quill-editor {
+  padding-top: 0px !important;
+  margin-top: -8px;
+  min-height: 48px;
+  p {
+    padding-top: 8px;
+  }
+}
+.ql-editor.ql-blank::before {
+  padding-top: 0px;
+}
+.btns {
+  margin-top: 20px;
+}
+.move_btn {
+  position: absolute;
+  top: 12px;
+  right: 0;
+  font-size: 14px;
+  margin-left: 10px;
+  display: flex;
+  div {
+    width: 12px;
+    height: 16px;
+    margin-right: 8px;
+    img {
+      width: 100%;
+      height: 100%;
+      cursor: pointer;
+    }
+  }
+}
+/deep/ .el-form-item.is-success .el-input__inner,
+.el-form-item.is-success .el-textarea__inner {
+  border-color: #c9c9c9 !important;
+}
+/deep/ .el-form-item.is-success .el-textarea__inner {
+  border-color: #c9c9c9 !important;
+}
+/deep/ .el-form-item.is-success .el-textarea__inner {
+  border-color: #c9c9c9 !important;
+}
+.change_btns {
+  // width: 100%;
+  margin-top: 10px;
+  display: flex;
+  box-sizing: border-box;
+  div {
+    width: 90px;
+    height: 30px;
+    line-height: 30px;
+    text-align: center;
+    border-radius: 2px;
+    border: 1px solid #21cbc7;
+    color: #21cbc7;
+    font-size: 14px;
+    margin-right: 30px;
+    cursor: pointer;
+    &:nth-child(1) {
+      &:hover {
+        background: rgba(97, 218, 215, 0.1);
+      }
+    }
+    &:nth-child(2) {
+      border-color: #ff5b5b;
+      color: #ff5b5b;
+      &:hover {
+        background: rgba(255, 91, 91, 0.1);
+      }
+    }
+  }
+}
+</style>

+ 12 - 1
src/components/knowledgeExtra/DiseaseTree.vue

@@ -173,7 +173,16 @@ export default {
               "level": 1,
               "sonRelationId": 17,
               "isExpanded": false
-          }],
+          }, {
+            "conceptId": 511,
+            "conceptName": "经典病例",
+            "nodeList": [],
+            "libType": [411],
+            "level": 1,
+            "sonRelationId": 17,
+            "isExpanded": false
+          }
+        ],
           "level": 0,
           "isExpanded": false
         },
@@ -216,6 +225,7 @@ export default {
           let item = JSON.parse(tmp)
           item.level = 0
           item.isExpanded = false
+          console.log(item.nodeList);
           item.nodeList = this.IteraNodeList(item.nodeList, [], 1)
           let arr = []
           arr[0] = item
@@ -279,6 +289,7 @@ export default {
       IteraNodeList(nodeList,  nodeListResult, type, level = 1) {
         this.level= level + 1
         for(let i = 0; i <nodeList.length; i++) {
+          //console.log(nodeList[i]);
           let newChild;
           if(type == '0') { //添加的时候保存所有的id列表
             newChild = {conceptId: nodeList[i].conceptId,libType:nodeList[i].libType, relationId: 17,nodeList:[],sonRelationId: 17, isExpanded:false}

+ 349 - 0
src/components/knowledgeExtra/classicCase.vue

@@ -0,0 +1,349 @@
+<template>
+  <div>
+    <crumbs title="经典病历维护">
+      <el-form :inline="true" class="demo-form-inline">
+        <el-form-item label="标准术语归类:">
+          <el-select size="mini" v-model="filter.libType" placeholder="标准术语归类" clearable>
+            <!--typeList api相关-->
+            <el-option
+              v-for="item in typeList"
+              :label="item.name"
+              :value="item.val"
+              :key="item.val"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="医学标准术语:">
+          <el-input size="mini" v-model="filter.term" placeholder="请输入术语" clearable></el-input>
+        </el-form-item>
+        <el-form-item label="状态:">
+          <el-select size="mini" v-model="filter.status" placeholder="请选择" clearable>
+            <el-option v-for="item in stateList" :label="item.name" :value="item.id" :key="item.id"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <!--2个点击事件-->
+          <el-button size="mini" @click="filterDatas">确认</el-button>
+          <el-button
+            size="mini"
+            type="warning"
+            style="margin:0 10px"
+            @click="addMedicalPrompt"
+          >添加经典病历</el-button>
+        </el-form-item>
+      </el-form>
+    </crumbs>
+    <div class="contents">
+      <el-table :data="list" border style="width: 100%">
+        <el-table-column type="index" :index="indexMethod" label="编号" width="60"></el-table-column>
+        <el-table-column prop="name" width="150" label="医学标准术语"></el-table-column>
+        <el-table-column prop="typeName" label="标准术语归类" width="120"></el-table-column>
+        <el-table-column prop="title" label="关联标题" width="240"></el-table-column>
+        <el-table-column label="状态">
+          <template slot-scope="scope">
+            <span v-if="scope.row.isDeleted=='N'">启用</span>
+            <span v-if="scope.row.isDeleted=='Y'" class="delete">禁用</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="modifier" label="操作人" width="80"></el-table-column>
+        <el-table-column prop="gmtModified" label="操作时间" width="180" :show-overflow-tooltip="true"></el-table-column>
+        <el-table-column label="操作" width="140">
+          <!--4个点击事件-->
+          <template slot-scope="scope">
+            <!-- <el-button v-if="scope.row.isDeleted=='Y'" type="text" size="small" class="is-disabled">修改</el-button> -->
+            <el-button type="text" size="small" @click="toEditProduct(scope.row)">修改</el-button>
+            <span style="margin:0 3px;">|</span>
+            <!-- <el-button v-if="scope.row.isDeleted=='Y' || scope.row.typeId === 82 || scope.row.typeId === 83" type="text" size="small" class="is-disabled">复制</el-button> -->
+            <!-- <el-button v-if="scope.row.isDeleted=='N'&&scope.row.typeId !== 82 && scope.row.typeId !== 83" type="text" size="small" @click="toCopyProduct(scope.row)">复制</el-button> -->
+            <el-button type="text" size="small" @click="toCopyProduct(scope.row)">复制</el-button>
+            <span style="margin:0 3px;">|</span>
+            <el-button
+              v-if="scope.row.isDeleted=='Y'"
+              type="text"
+              size="small"
+              @click="showReuseDialog(scope.row)"
+            >启用</el-button>
+            <el-button
+              v-if="scope.row.isDeleted=='N'"
+              type="text"
+              size="small"
+              class="delete"
+              @click="showDelDialog(scope.row)"
+            >禁用</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/knowledgeTree.js';
+import config from '@api/config.js';
+import utils from '@api/utils.js';
+
+export default {
+  name: 'ClassicCase',
+  data: function() {
+    return {
+      list: [],
+      cacheData: {},
+      currentPage: 1,
+      pageSize: config.pageSize,
+      pageSizeArr: config.pageSizeArr,
+      pageLayout: config.pageLayout,
+      total: 0,
+      linkIn: [],
+      pays: [],
+      typeList: [],
+      stateList: [
+        { id: 'N', name: '启用' },
+        { id: 'Y', name: '禁用' }
+      ],
+      searched: false,
+      filter: {
+        term: '',
+        title: '',
+        status: '',
+        libType: ''
+      }
+    };
+  },
+  created() {
+    const param = this.$route.params;
+    if (param.currentPage) {
+      this.inCurrentPage = param.currentPage;
+    }
+    if (param.filter) {
+      this.filter = param.filter;
+    }
+    //返回时避免参数未赋值就获取列表
+    this.$nextTick(() => {
+      this.getDataList();
+      this.getListBack();
+    });
+  },
+  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();
+    },
+    addMedicalPrompt() {
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({ name: 'AddZskClassicCase', params: pam });
+    },
+    toEditProduct(row) {
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({
+        name: 'AddZskClassicCase',
+        params: Object.assign(pam, { data: row, isEdit: true })
+      });
+    },
+    toCopyProduct(row) {
+      const pam = this.searched
+        ? {
+            currentPage: this.currentPage,
+            pageSize: this.pageSize,
+            filter: this.filter
+          }
+        : { currentPage: this.currentPage, pageSize: this.pageSize };
+      this.$router.push({
+        name: 'AddZskClassicCase',
+        params: Object.assign(pam, { data: row, isCopy: true })
+      });
+    },
+    filterDatas() {
+      this.currentPage = 1;
+      this.getDataList();
+    },
+    getListBack() {
+      api.getListBack({}).then(res => {
+        const result = res.data;
+        if (result.code == '0') {
+          this.typeList = (result.data && result.data[10]) || [];
+        }
+      });
+    },
+    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
+        .getClassicCasePage(param)
+        .then(res => {
+          loading.close();
+          if (res.data.code == '0') {
+            const data = res.data.data;
+            let templis = data.records;
+            this.list = templis;
+            this.cacheData[param.current] = data.records;
+            this.total = data.total;
+            for (let i = 0; i < templis.length; i++) {
+              templis[i].isDeleted = templis[i].status == '1' ? 'N' : 'Y';
+            }
+            if (this.inCurrentPage !== undefined) {
+              this.currentPage = this.inCurrentPage;
+              this.inCurrentPage = undefined;
+            }
+          }
+        })
+        .catch(error => {
+          console.log(error);
+        });
+    },
+    clearFilter() {
+      this.filter = {
+        term: '',
+        title: '',
+        status: '',
+        libType: ''
+      };
+    },
+    getFilterItems(isTurnPage) {
+      //翻页时筛选条件没点确定则清空
+      if (isTurnPage && !this.searched) {
+        this.clearFilter();
+      }
+      const param = {
+        name: this.filter.term.trim(),
+        current: this.inCurrentPage || this.currentPage,
+        size: this.pageSize,
+        status:
+          this.filter.status == 'Y' ? 0 : this.filter.status == 'N' ? 1 : '',
+        type: this.filter.libType || ''
+        //type:11
+      };
+      return param;
+    },
+    indexMethod(index) {
+      return (this.currentPage - 1) * this.pageSize + index + 1;
+    },
+    currentChange(next) {
+      this.currentPage = next;
+      /*if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
+          this.list = this.cacheData[next];
+        } else {*/
+      this.getDataList(true);
+      //}
+    },
+    warning(msg, type) {
+      this.$message({
+        showClose: true,
+        message: msg,
+        type: type || 'warning'
+      });
+    },
+    showConfirmDialog(msg, resolve) {
+      this.$confirm(msg, '提示', {
+        confirmButtonText: '确定',
+        showCancelButton: false,
+        // cancelButtonText: '取消',
+        // cancelButtonClass:'cancel',
+        type: 'warning'
+      })
+        .then(() => {
+          resolve();
+        })
+        .catch(() => {});
+    },
+    showDelDialog(row) {
+      this.showConfirmDialog('是否禁用该经典病历?', () => {
+        api
+          .changeCaseStatus({ id: row.id, status: 0 })
+          .then(res => {
+            if (res.data.code == '0') {
+              if (!this.searched) {
+                //未点确认时清空搜索条件
+                this.clearFilter();
+              }
+              this.warning(res.data.msg || '操作成功', 'success');
+              this.getDataList();
+            } else {
+              this.warning(res.data.msg);
+            }
+          })
+          .catch(error => {
+            this.warning(error);
+          });
+      });
+    },
+    showReuseDialog(row) {
+      this.showConfirmDialog('是否重新启用该条数据?', () => {
+        api
+          .changeCaseStatus({ id: row.id, status: 1 })
+          .then(res => {
+            if (res.data.code == '0') {
+              this.currentPage = 1; //恢复数据跳转到筛选条件下首页
+              this.warning(res.data.msg || '操作成功', 'success');
+              this.getDataList();
+            } else {
+              this.warning(res.data.msg);
+            }
+          })
+          .catch(error => {
+            this.warning(error);
+          });
+      });
+    }
+  }
+};
+</script>
+
+<style lang="less">
+@import '../../less/admin.less';
+.status-span {
+  font-size: 12px;
+  margin-right: 10px;
+  color: unset;
+}
+.delete {
+  color: red;
+}
+</style>

+ 1 - 1
src/components/medicalStatistics/MedicalStatistics.vue

@@ -30,7 +30,7 @@
                     </el-table-column>
                     <el-table-column
                         :resizable = "false"
-                        label="朗通医疗医学数据"
+                        label="医疗医学数据"
                         prop="itemName"
                         >
                     </el-table-column>

+ 1 - 1
src/components/user/AlreadyToken.vue

@@ -96,7 +96,7 @@
         total:1,
         del:'删除',
         toast:true,
-        text:'您确定要删除该服务端?删除该服务端可能无法使用朗通产品,可能会影响现有业务。',
+        text:'您确定要删除该服务端?删除该服务端可能无法使用产品,可能会影响现有业务。',
         serviceIndex:null
       }
     },

+ 1 - 1
src/components/user/CreatedToken.vue

@@ -98,7 +98,7 @@
       },
       delKey(){
         this.toast = false;
-        this.text = "您确定要删除该令牌吗?删除该令牌可能无法使用朗通产品,可能会影响现有业务。";
+        this.text = "您确定要删除该令牌吗?删除该令牌可能无法使用产品,可能会影响现有业务。";
         this.btnText = "立即删除";
         this.btnFlag = 1;
       },

+ 1 - 1
src/components/user/HomePage.vue

@@ -2,7 +2,7 @@
     <el-container class="user">
         <el-aside>
             <div class="logo">
-                <p><b>朗通后台管理系统</b></p>
+                <p><b>后台管理系统</b></p>
             </div>
             <lt-menu v-if="data&&data.menuWrappers.length" v-bind:data="data.menuWrappers"></lt-menu>
         </el-aside>

+ 1 - 1
src/components/user/ManageService.vue

@@ -84,7 +84,7 @@
         total:1,
         del:'删除',
         toast:true,
-        text:'您确定要删除该服务端?删除该服务端可能无法使用朗通产品,可能会影响现有业务。',
+        text:'您确定要删除该服务端?删除该服务端可能无法使用产品,可能会影响现有业务。',
         serviceIndex:null
       }
     },

+ 4 - 4
src/components/user/MoreService.vue

@@ -5,7 +5,7 @@
         <div slot="mini" class="miniTit">更多服务</div>
       </MiniTitle>
       <!-- 用户未认证时展示 -->
-        <p v-show="userStatus==0" class="trial">账号认证通过后,可开通朗通产品! <span @click="authen">立即认证</span></p>
+        <p v-show="userStatus==0" class="trial">账号认证通过后,可开通产品! <span @click="authen">立即认证</span></p>
         <el-row :gutter="20">
             <el-col :span="8" v-for="(item,index) in notOpenProduct" :key="item.id">
               <!-- <div :class="['grid-content bg-purple',{'add-border':item.choose}]"> -->
@@ -65,7 +65,7 @@
             accessDesc:{
               '嵌入式':'Diagbot整体嵌入合作方软件,从合作方软件中获取主诉,既往史等信息,由Diagbot后端统一处理并推送产生的业务记录,通过接口返回给系统协同作业。',
               '数据服务模式':'始终隐匿于后台,合作方通过接口形式向Diagbot输入信息,经过Diagbot计算后将分析结果推送给合作方软件并在其界面展示,前端灵活多变',
-              '线上模式':'用户在线上购买产品和服务后,通过登陆朗通云平台使用授权的产品和服务',
+              '线上模式':'用户在线上购买产品和服务后,通过登陆云平台使用授权的产品和服务',
             },
             chargeType:{
               '1':'按流程计费',
@@ -164,11 +164,11 @@
                   }else if(+result.data.authStatus == 0){//未认证
                     this.toast = false;
                     this.type = 2;
-                    this.text = "感谢您申请开通朗通产品,为提供优质的服务,还需完善账号信息。如想了解更多产品信息,可致电:0571-666666";
+                    this.text = "感谢您申请开通产品,为提供优质的服务,还需完善账号信息。如想了解更多产品信息,可致电:0571-666666";
                   }else if(+result.data.authStatus == 2){//认证中
                     this.toast = false;
                     this.type = 1;
-                    this.text = "感谢您申请开通朗通产品,您的账号信息正在认证中,请耐心等候。如想了解更多产品信息,可致电:0571-666666";
+                    this.text = "感谢您申请开通产品,您的账号信息正在认证中,请耐心等候。如想了解更多产品信息,可致电:0571-666666";
                   }
 
                 } else {

+ 1 - 1
src/less/common.less

@@ -15,7 +15,7 @@
 @shadowColor: #b7b7b7;
 @borderWidth: 2px;
 
-/*朗通后台基本颜色*/
+/*后台基本颜色*/
 @adminBase: #48C5D7;
 @icssBorder: #c0c4cc;
 @icssHeight:240px;

+ 22 - 10
src/routes.js

@@ -12,7 +12,7 @@ import CreatedToken from '@components/user/CreatedToken.vue'; //查看生成令
 import AlreadyToken from '@components/user/AlreadyToken.vue'; //已生成令牌
 // import UserSetting from '@components/user/UserSetting.vue';//安全设置
 import UserSetting from '@components/user/SafetySetting.vue'; //安全设置
-/*******************朗通后台**********************/
+/*******************后台**********************/
 import ProductLines from '@components/admin/ProductLines.vue';
 import ProductLinesManage from '@components/admin/ProductLinesManage.vue';
 import SuperAdmin from '@components/admin/SuperAdmin.vue';
@@ -215,6 +215,9 @@ import BasicPartOfSpeech from '@components/basicKnow/BasicPartOfSpeech.vue'   //
 import AddTerm from '@components/basicKnow/AddTerm.vue'   //知识库基础维护-基础词性类型维护-编辑
 import StaticInfo from '@components/knowledgeExtra/StaticInfo.vue'   //知识库扩展维护-静态信息维护
 import AddDevKnow from '@components/knowledgeExtra/AddDevKnow.vue'   //知识库扩展维护-静态信息维护-编辑
+import ClassicCase from '@components/knowledgeExtra/ClassicCase.vue';//经典病例维护
+import AddZskClassicCase from '@components/knowledgeExtra/AddZskClassicCase.vue';//经典病例维护编辑
+
 import ZskRuleManager from '@components/knowledgeExtra/RuleManager.vue';  //知识库规则维护
 import ZskRuleCheck from '@components/knowledgeExtra/RuleCheck.vue';  //知识库规则查询
 import AddZskRule from '@components/knowledgeExtra/AddNewRule.vue';   //知识库添加规则
@@ -270,7 +273,6 @@ export default [
         ],
     },
     {
-        //朗通后台
         path: '/admin',
         component: HomePage,
         meta: {
@@ -519,14 +521,14 @@ export default [
             { path: 'LT-KSGLWH-TJHYDXXYGBXDY', component: AddDept, name: 'AddDept' }, //科室关联维护--添加关联
             { path: 'YXSYK-HLGLWH', component: Nursing, name: 'Nursing' }, //护理关联维护
             { path: 'LT-HLGLWH-TJHYDXXYGBXDY', component: AddNursing, name: 'AddNursing' }, //护理关联维护--添加关联
-			{ path: 'YXSYK-GYTJGLWH', component: Drugroute, name: 'Drugroute' }, //给药途径关联维护
-			{ path: 'LT-GYTJGLWH-TJHYDXXYGBXDY', component: AddDrugroute, name: 'AddDrugroute' }, //给药途径关联维护--添加关联
+            { path: 'YXSYK-GYTJGLWH', component: Drugroute, name: 'Drugroute' }, //给药途径关联维护
+            { path: 'LT-GYTJGLWH-TJHYDXXYGBXDY', component: AddDrugroute, name: 'AddDrugroute' }, //给药途径关联维护--添加关联
             { path: 'YXSYK-ZYJBGLWH', component: Tcmdisease, name: 'Tcmdisease' }, //中医疾病关联维护
             { path: 'LT-ZYJBGLWH-TJHYDXXYGBXDY', component: AddTcmdisease, name: 'AddTcmdisease' }, //中医疾病关联维护
             { path: 'YXSYK-ZYZHGLWH', component: Tcmdrome, name: 'Tcmdrome' }, //中医疾病关联维护
             { path: 'LT-ZYZHGLWH-TJHYDXXYGBXDY', component: AddTcmdrome, name: 'AddTcmdrome' }, //中医疾病关联维护
 
-            
+
             // { path: 'YXSYK-GLWH', component: Correlation, name: 'Correlation' }, //关联维护设置
             { path: 'LT-CDSSSJWH-DZBLFAPZ', component: Plan, name: 'Plan' }, //电子病历方案配置
             { path: 'LT-CDSSSJWH-DZBLFAPZEDIT', component: AddPlan, name: 'AddPlan' }, //电子病历方案配置--新增编辑
@@ -626,11 +628,11 @@ export default [
                 component: ZskRuleManager,
                 name: 'ZskRuleManager',
             },
-			{
-			    path: 'LT-ZSKKZWH-GZCX',
-			    component: ZskRuleCheck,
-			    name: 'ZskRuleCheck',
-			},
+            {
+                path: 'LT-ZSKKZWH-GZCX',
+                component: ZskRuleCheck,
+                name: 'ZskRuleCheck',
+            },
             {
                 path: 'LT-ZSKKZWH-TJGZ',
                 component: AddZskRule,
@@ -656,6 +658,16 @@ export default [
                 component: AddDevKnow,
                 name: 'AddDevKnow',
             },
+            {
+                path: 'LT-ZSKKZWH-JDBLWH',
+                component: ClassicCase,
+                name: 'ClassicCase',
+            },
+            {
+                path: 'LT-ZSKKZWH-JDBLWH-EDIT',
+                component: AddZskClassicCase,
+                name: 'AddZskClassicCase',
+            },
             {
                 path: 'LT-ZSKKZWH-SXJGWH',
                 component: KnowledgeAll,

+ 1 - 0
vue.config.js

@@ -1,5 +1,6 @@
 const path = require('path');
 // const proxy_path = 'http://192.168.2.241:88';
+
 const proxy_path = 'http://173.18.12.195:5050';
 // const proxy_path = 'http://173.18.12.195:5050';
 // const proxy_path = 'http://192.168.3.117:5050';//周铁刚