luolei 4 سال پیش
والد
کامیت
1e295ad553

+ 3 - 3
package-lock.json

@@ -3681,9 +3681,9 @@
       "dev": true
     },
     "element-ui": {
-      "version": "2.13.1",
-      "resolved": "https://registry.npmjs.org/element-ui/-/element-ui-2.13.1.tgz",
-      "integrity": "sha512-jyvJmXa2c6ElRc4NOw4V1vnjHsvfzTRhbwElZ68CyF9by2F64B+AJRzujg/HJgXCimHwd2g1Av9D04EP3mWymg==",
+      "version": "2.13.2",
+      "resolved": "https://registry.npmjs.org/element-ui/-/element-ui-2.13.2.tgz",
+      "integrity": "sha512-r761DRPssMPKDiJZWFlG+4e4vr0cRG/atKr3Eqr8Xi0tQMNbtmYU1QXvFnKiFPFFGkgJ6zS6ASkG+sellcoHlQ==",
       "dev": true,
       "requires": {
         "async-validator": "~1.8.1",

+ 1 - 1
package.json

@@ -25,7 +25,7 @@
     "@vue/cli-service": "^3.0.4",
     "@vue/eslint-config-standard": "^3.0.4",
     "axios": "^0.18.0",
-    "element-ui": "^2.13.1",
+    "element-ui": "^2.13.2",
     "jquery": "^3.4.1",
     "js-md5": "^0.7.3",
     "less": "^3.8.1",

+ 53 - 1
src/api/config.js

@@ -9,7 +9,7 @@ export default {
   urls: {
     'promptServer':'/api/knowledgeman/file/uploadImage',    //静态知识富文本图片上传
     'getConceptKnowledgeList':'/graph/conceptInfo/getPage', //  术语静态知识列表
-    'getConceptKnowledge':'/api/knowledgeman/conceptDetail/getByConceptId',//术语静态知识详情
+    'getConceptKnowledge':'/graph/conceptInfo/getRecordById',//术语静态知识详情
     'getAllConcept':'/api/knowledgeman/conceptDetail/index',   //医学术语--获取所有概念(标准术语)
 	  'saveConceptInfo':'/api/knowledgeman/conceptDetail/insertOrUpdate',   //保存术语静态知识
     'getLisMappingPage': '/tran/diseaseConfig/getPage', //诊断
@@ -37,4 +37,56 @@ export default {
   pageSizeArr:[10,50,100,500,1000,5000],         //分页每页显示条数选项
   pageSize:10,      //初始每页显示条数
   pageLayout:"total,sizes,prev, pager, next, jumper",        //分页组件成分
+//   type: 类型:1-诊断、2-药品、3-检验套餐、4-检验明细、5-检查、6-手术和操作
+// contentTypes: 内容类型(多选):1-静态信息、2-注意事项、3-临床路径、4-治疗方案
+  emData:[
+    {
+        "name":"诊断",
+        "key":1
+    },
+    {
+        "name":"检验套餐",
+        "key":3
+    },
+    {
+        "name":"检验细项",
+        "key":4
+    },
+    {
+        "name":"检查",
+        "key":5
+    },
+    {
+        "name":"药品",
+        "key":2
+    },
+    {
+        "name":"手术/操作",
+        "key":6
+    },
+    // {
+    //     "name":"科室",
+    //     "key":18
+    // },
+  ],
+  contentTypes:[
+    {
+        "name":"静态信息",
+        "key":1
+    },
+    {
+        "name":"注意事项",
+        "key":2
+    },
+    {
+        "name":"临床路径",
+        "key":3
+    },
+    {
+        "name":"治疗方案",
+        "key":4
+    },
+    
+  ]
+
 }

+ 52 - 10
src/components/common/HomePage.vue

@@ -2,10 +2,9 @@
     <el-container :class="getRole">
         <el-aside>
             <div class="logo">
-                <p v-if="userLoginDTO&&userLoginDTO.type=='1'"><b>朗通医院后台管理系统</b></p>
+                <p v-if="userLoginDTO&&userLoginDTO.type=='0'"><b>朗通医院后台管理系统</b></p>
             </div>
-                 <lt-menu v-if="menuWrappers&&menuWrappers.length" v-bind:role="getRole"
-                 v-bind:data="menuWrappers"></lt-menu>
+            <lt-menu v-if="menuWrappers&&menuWrappers.length" v-bind:role="getRole" v-bind:data="menuWrappers"></lt-menu>
         </el-aside>
         <el-container>
             <el-header class="clearfix">
@@ -13,11 +12,14 @@
                     <h2>{{organization&&organization.name}}</h2>
                 </div>
                 <div class="userInfo fr">
-                    <span class="username" @click="goCenter">{{userLoginDTO&&userLoginDTO.linkman}}</span>
-                    <lt-badge v-if="getRole=='user'" class="green" :authStatus="authStatus">
-                        {{authStatusName}}
-                    </lt-badge>
-                    <el-button type="info" size="small" plain @click="logout">退出</el-button>
+                    <span class="username" @click="goCenter">
+                      <i>{{userLoginDTO&&userLoginDTO.linkman}}</i>
+                      <img class="actionDo" src="../../images/arrow_down.png" />
+                    </span>
+                    <ul class="action">
+                      <li>修改密码</li>
+                      <li @click="logout">退出系统</li>
+                    </ul>
                 </div>
             </el-header>
             <el-main>
@@ -108,8 +110,7 @@
         this.authStatusName = text;
       },
       goCenter(){
-        const url = '/admin/LT-GRZX';
-        this.$router.push({path:url});
+        
       },
       logout(){//退出
         localStorage.removeItem('token');
@@ -148,6 +149,47 @@
         height: calc(100% - 120px);
         overflow-y: auto;
     }
+    .userInfo {
+      position: relative;
+      padding-left: 20px;
+      cursor: pointer;
+      .username {
+        font-size: 14px;
+        color: #545455;
+        img {
+          width: 10px;
+          margin-left: 8px;
+          position: relative;
+          bottom: 2px;
+        }
+      }
+      &:hover .action {
+          display: block;
+      }
+      .action {
+        width: 94px;
+        height: 70px;
+        box-shadow: 1px 2px 8px 1px #ccc;
+        border-radius: 3px;
+        position: absolute;
+        top: 50px;
+        right: -5px;
+        z-index: 999;
+        background-color: #fff;
+        color: #333;
+        font-size: 14px;
+        display: none;
+        li {
+          height: 35px;
+          line-height: 35px;
+          text-align: center;
+          cursor: pointer;
+          &:hover {
+            background-color: #F2F2F2;
+          }
+        }
+      }  
+    }
     .version{
         position: fixed;
         bottom: 0;

+ 5 - 4
src/components/icss/AddMedicinePrompt.vue

@@ -34,7 +34,8 @@
                  
                
                 <InfoParagraph v-for="(f,i) in form.prags"
-                                v-if="!upload"
+                               v-if="!upload"
+                               :key="i"
                                :data="f"
                                :index="i"
                                :total="form.prags.length"
@@ -166,10 +167,9 @@
         //this.form.selectedTerm = data;
         //this.form.selectedTermName = data.libName;
         //this.form.conceptId = data.conceptId;
-        api.getTremList({conceptId:data.conceptId}).then((res) => {
+        api.getTremList({id:data.id}).then((res) => {
           if (res.data.code == '0') {
             const data = res.data.data;
-            
             if(this.form.typeId === 82 || this.form.typeId === 83){
               console.log('data',data)
              this.form.fileList=data&&data.map((it)=>{
@@ -179,7 +179,8 @@
               this.showFileList = true
               this.showUpLoad = false
             }else{
-              this.form.prags=data&&data.map((it)=>{
+            console.log(data.details) //ssssssssssssssssssss
+              this.form.prags=data&&data.details.map((it)=>{
                 return {
                           title:it.title,
                           position:this.mapStringToNum(it.position),

+ 1 - 1
src/components/icss/MedicineInfoPg.vue

@@ -131,7 +131,7 @@
     mounted(){
       //显示位置枚举列表
       const pos = localStorage.getItem("knowledgeEnumsData");
-      const positions = JSON.parse(pos)&&JSON.parse(pos).positionTypeEnum;
+      const positions = config.contentTypes;
       this.positions = positions.filter(item => item.key != 7 ) //隐去描述信息
     },
     methods:{

+ 1 - 2
src/components/icss/MedicinePrompt.vue

@@ -129,8 +129,7 @@
       setTimeout(function(){
         that.getDataList();
       });
-      const enums = JSON.parse(localStorage.getItem('knowledgeEnumsData'));
-      this.typeList = enums.conceptDetailLexiconTypeEnum;
+      this.typeList = config.emData;
     },
     watch: {
       'filter': {

+ 79 - 55
src/components/login/Login.vue

@@ -1,41 +1,42 @@
 <template>
     <div class="login-container">
-        <banner></banner>
-        <div class="login-img fl"><img src="../../images/loginImg.png"/></div>
-        <div class="login-box">
-            <!-- <div class="box-le"><img src="../../images/left.jpg"/></div> -->
-            <div class="box-ri">
-                <div class="title-box clearfix"> <h3 class="login-title fl">登录</h3> <h4 class="num fr" @click="toRegister">立即注册</h4></div>
-               
-                <div class="ri-center">
-                    <el-form :model="ruleForm2" :rules="rules2" ref="ruleFormReg">
-                        <el-form-item prop="tel">
-                            <el-input v-model="ruleForm2.tel" name="username" autocomplete="off" maxlength="11"
-                                      placeholder="请输入用户名或手机号"
-                                      clearable class="ri-tel" @keyup.enter.native="submitForm('ruleForm2')"
-                                      ref="username"></el-input>
-                        </el-form-item>
-                        <div style="height: 20px;"></div>
-                        <el-form-item prop="pwd">
-                            <el-input v-model="ruleForm2.pwd" name="password" autocomplete="off" maxlength="16"
-                                      placeholder="请输入密码"
-                                      clearable type="password" class="ri-pwd"
-                                      @keyup.enter.native="submitForm('ruleForm2')" ref="password"></el-input>
-                        </el-form-item>
-                        <el-form-item>
-                            <!-- <span class="num" @click="toRegister">注册账号</span> -->
-                            <span class="pwd" @click="toForgetPsw">忘记密码?</span>
-                        </el-form-item>
-                        <el-form-item>
-                            <el-button plain v-if="otherCor" >登录</el-button>
-                            <el-button ref="btn" v-else class="otherCor" plain @click="submitForm('ruleForm2')">登录
-                            </el-button>
-                        </el-form-item>
-                    </el-form>
-                </div>
-            </div>
+        <!-- <banner></banner> -->
+        <div class="login-img fl"><img src="../../images/leftimg.png"/></div>
+        <div class="login-wrap-r">
+          <div class="login-box">
+              <div class="box-ri">
+                  <div class="title-box clearfix"> 
+                    <img  src="../../images/logomax2.png" alt="朗通logo"/>
+                    <h3 class="login-title">医院知识库后台管理系统</h3> 
+                  </div>
+                  <div class="ri-center">
+                      <el-form :model="ruleForm2" :rules="rules2" ref="ruleFormReg">
+                          <p class="personTip">用户名</p>
+                          <el-form-item prop="tel">
+                              <el-input v-model="ruleForm2.tel" name="username" autocomplete="off" maxlength="11"
+                                        placeholder="请输入用户名或手机号"
+                                        clearable class="ri-tel" @keyup.enter.native="submitForm('ruleForm2')"
+                                        ref="username"></el-input>
+                          </el-form-item>
+                          <div style="height: 16px;"></div>
+                          <p class="personTip">密码</p>
+                          <el-form-item prop="pwd">
+                              <el-input v-model="ruleForm2.pwd" name="password" autocomplete="off" maxlength="16"
+                                        placeholder="请输入密码"
+                                        clearable type="password" class="ri-pwd"
+                                        @keyup.enter.native="submitForm('ruleForm2')" ref="password"></el-input>
+                          </el-form-item>
+                          <el-form-item>
+                              <el-button plain v-if="otherCor" >登录</el-button>
+                              <el-button ref="btn" v-else class="otherCor" plain @click="submitForm('ruleForm2')">登录
+                              </el-button>
+                          </el-form-item>
+                      </el-form>
+                  </div>
+              </div>
+          </div>
         </div>
-        <copy-right-info></copy-right-info>
+        <!-- <copy-right-info></copy-right-info> -->
     </div>
 </template>
 
@@ -59,31 +60,34 @@
       var validatePass = (rule, value, callback) => {
         // if(isNaN(value) == false){   //手机号
         // 正常情况
-
         if (value.trim() == '') {
           callback(new Error('用户名不能为空'));
           this.$refs.username.value = "";
-        }
-        // 手机号
-        if (isNaN(value) == false) {
-          if (value.length !== 11 || !myreg.test(value)) {
-            callback(new Error('手机号格式有误'));
-          } else {
-            callback();
-          }
-        } else if (isNaN(value) == true) {
+        }else{
           callback();
         }
+        // // 手机号
+        // if (isNaN(value) == false) {
+        //   if (value.length !== 11 || !myreg.test(value)) {
+        //     callback(new Error('手机号格式有误'));
+        //   } else {
+        //     callback();
+        //   }
+        // } else if (isNaN(value) == true) {
+        //   callback();
+        // }
       };
       var validatePass2 = (rule, value, callback) => {
         if (value.trim() == '') {
           callback(new Error('密码不能为空'));
           this.$refs.password.value = "";
-        } else if (value.length < 6) {
-          callback(new Error('密码长度应为6位至16位之间'));
-        } else if (!numreg.test(value)) {
-          callback(new Error('密码不能为纯数字或纯英文'));
-        } else {
+        } 
+        // else if (value.length < 6) {
+        //   callback(new Error('密码长度应为6位至16位之间'));
+        // } else if (!numreg.test(value)) {
+        //   callback(new Error('密码不能为纯数字或纯英文'));
+        // } 
+        else {
           callback();
         }
       };
@@ -145,25 +149,36 @@
         password = md5(password);
         return password;
       },
-      submitForm: function () {
+      submitForm() {
+        if(this.otherCor){
+          return
+        }
+        this.otherCor = true
         const username = this.ruleForm2.tel;
         const password = this.CalcuMD5(this.ruleForm2.pwd);
         let params = {
           "username": username,
           "password": password
         }
+        this.$message.closeAll()
         //重新登录清空原有token;
         localStorage.removeItem('token');
         this.$refs.ruleFormReg.validate((valid) => {
           if (valid) {
             api.loginMess(params).then((res) => {
               if (res.status == 200) {
-								// console.log(res)
                 if (res.data.code == '10020000') { //未注册
-                  // this.$message.error(res.data.msg);
-									this.$message.error("该账号或手机号未注册!")
+                  this.$message({
+                    message: '该账号或手机号未注册!',
+                    type: 'error',
+                    duration: 1000,
+                  })
                 } else if (res.data.code == '10020001') { //密码错误
-                  this.$message.error(res.data.msg);
+                  this.$message({
+                    message: res.data.msg,
+                    type: 'error',
+                    duration: 1000,
+                  })
                 } else if (res.data.code == '0') {
                   const token = JSON.stringify(res.data.data);
                   localStorage.setItem("token", token);
@@ -185,12 +200,15 @@
                     }.bind(this)
                   });
                 }
+                this.timerOut()
               }
             }).catch((err) => {
+							this.timerOut()
               console.log(err);
             })
           } else {
             console.log('faild')
+						this.timerOut()
             return false;
           }
         });
@@ -204,6 +222,12 @@
         this.$router.push({
           path: '/forgetPassword'
         });
+      },
+      timerOut(){
+          let timer = setTimeout(() => {
+						this.otherCor = false
+            clearTimeout(timer)
+          }, 500);
       }
     },
     components: {

+ 53 - 40
src/components/login/login.less

@@ -3,29 +3,49 @@
   width: 100%;
   height: 100%;
   min-width: 700px;
+  color: #333;
+  .personTip {
+    // text-align: left;
+    font-size: 12px;
+    padding-bottom: 6px;
+  }
   .box-le {
     /* position: relative; */
     float: left;
   }
+  .login-wrap-r {
+    width: 40%;
+    height: 100%;
+    background-color: #F3F6FC;
+    position: absolute;
+    right: 0;
+    top: 0;
+  }
   .login-box {
-    width: 406px;
+    width: 300px;
     position: absolute;
-    left: 60%;
-    top: 50%;
-    transform: translate(0%, -50%);
+    left: 50%;
+    top: 45%;
+    transform: translateX(-50%) translateY( -50%);
+  }
+  .box-ri {
+    width: 300px;
+    height: 351px;
+    border-top-right-radius: 2px;
+    border-bottom-right-radius: 2px;
   }
   .login-img {
-    left: 17.5%;
-    top: 0;
     position: absolute;
-    width: 43%;
+    top: 0;
+    width: 60%;
     height: 100%;
   }
   .login-img img {
     position: relative;
-    width: 100%;
+    width: 80%;
     top: 50%;
-    transform: translateY(-50%);
+    left: 50%;
+    transform: translateY(-50%) translateX(-50%);
   }
   .box-le img {
     width: 230px;
@@ -34,32 +54,21 @@
     border-bottom-left-radius: 2px
   }
 
-  .box-ri {
-    width: 406px;
-    height: 351px;
-    background: #fff;
-    float: left;
-    border-top-right-radius: 2px;
-    border-bottom-right-radius: 2px
-  }
-
   
 
   .ri-center {
-    text-align: center;
+    // text-align: center;
   }
 
   .ri-center .el-input__inner {
-    width: 286px;
-    background: #fff;
-  
+    width: 300px;
+    background: #F3F6FC;
     outline: none;
     color: #424243;
     font-size: 14px;
     padding: 0px 15px;
-    border: 1px solid  #C7C7C7;
-    border-radius: 2px;
-    /* margin-top: 20px; */
+    border: 1px solid  #97A4BA;
+    border-radius: 4px;
   }
 
   .ri-center .el-input__inner::-webkit-input-placeholder {
@@ -74,25 +83,27 @@
   }
   .ri-pwd {
     /* padding-top: 10px; */
-    width: 286px;
+    width: 300px;
     height: 44px;
   }
   .ri-tel {
-    width: 286px;
+    width: 300px;
     height: 44px;
     /* margin-bottom: 20px; */
   }
-  .title-box {
-    height: 20px;
-    line-height: 20px;
-    padding: 40px 60px 50px;
+  .title-box img {
+    width: 100%;
+    margin-bottom: 80px;
+    position: relative;
+    left: -20px;
   }
   .login-title {
-    font-size: 18px;
+    font-size: 24px;
     color: #333333;
     letter-spacing: 0;
     line-height: 20px;
     font-weight: bold;
+    margin-bottom: 50px;
   }
   .num {
     cursor: pointer;
@@ -111,24 +122,26 @@
   }
   .login-box .el-button {
     color: #fff !important;
-    width: 286px;
+    width: 300px;
     height: 40px;
     font-weight: bold;
-    background: #D4E3FE;
-    margin-top: 12px;
+    background: #A3E2EB;
+    margin-top: 55px;
     outline: none;
-    cursor: auto;
+    cursor: not-allowed;
     font-size: 16px;
 		border: 0 !important;
   }
   .otherCor {
-    background: #2871FA !important;
+    background: #48C5D7 !important;
+    cursor: pointer !important;
   }
   .otherCor:hover {
-    background: #1A63EC !important;
+    cursor: pointer !important;
+    background: #48C5D7 !important;
   }
   .otherCor:active {
-    background: #0952DA !important;
+    background: #48C5D7 !important;
   }
   .login-box .el-form-item.is-success .el-input__inner {
     border-color: #dcdfe6;
@@ -141,7 +154,7 @@
     cursor: auto !important;
   }
   .login-box .el-form-item__error {
-    left: 60px !important;
+    left: 0 !important;
 		top: 39px !important;
     // -webkit-transform: scale(0.91) !important;
   }

BIN
src/images/arrow_down.png


BIN
src/images/leftimg.png


BIN
src/images/logomax2.png


BIN
src/images/name.png


BIN
src/images/password.png