瀏覽代碼

添加姓名输入

luolei 5 年之前
父節點
當前提交
a1fc832754

+ 2 - 1
src/components/AddContent.vue

@@ -86,7 +86,8 @@ export default {
     })
   },
   methods: {
-    onScroll() {
+    onScroll(data) {
+      this.$store.commit('setScroll', data)
       document.activeElement.scrollIntoViewIfNeeded(true);        
     },
     back() {

+ 2 - 1
src/components/DetailBox.vue

@@ -72,7 +72,8 @@
       })
     },
     methods:{
-      onScroll() {
+      onScroll(data) {
+        this.$store.commit('setScroll', data)
         document.activeElement.scrollIntoViewIfNeeded(true);        
       },
       close(){

+ 3 - 2
src/components/DiagTreat.vue

@@ -99,8 +99,9 @@
       })
     },
     methods:{
-      onScroll() {
-        document.activeElement.scrollIntoViewIfNeeded(true);        
+      onScroll(data) {
+        this.$store.commit('setScroll', data);
+        document.activeElement.scrollIntoViewIfNeeded(true);
       },
       beBack(){
         this.$emit('back');

+ 68 - 43
src/components/Login.vue

@@ -14,14 +14,14 @@
         </p>
         <div class="slideType" v-if="show">
           <ul>
-            <li @click="handleType('手机号',103)">手机号</li>
+            <!-- <li @click="handleType('手机号',103)">手机号</li> -->
             <li @click="handleType('身份证号',101)">身份证号</li>
             <li @click="handleType('病历号',102)">病历号</li>
             <li @click="handleType('市民卡号',104)" style="border:0 none">市民卡号</li>
           </ul>
         </div>
       </div>
-      <div class="iptWrap number">
+      <div class="iptWrap number numberIpt">
         <input
           @blur="blur"
           :maxlength="type==103?11:type==101?18:type==102?7:type==104?9:30"
@@ -33,7 +33,18 @@
           :placeholder="'请输入'+name"
         />
       </div>
-      <div :class="['btn',value?'btnClick':'btnDis']" @click="handleDepart">进入预问诊</div>
+      <div class="iptWrap number">
+        <input
+          @blur="blur"
+          :maxlength="30"
+          v-model="patName"
+          @input="changeName"
+          class="input"
+          type="text"
+          placeholder="请输入姓名"
+        />
+      </div>
+      <div :class="['btn',value&&patName?'btnClick':'btnDis']" @click="handleDepart">进入预问诊</div>
     </div>
     <div class="tip">注:建议您可先输入病情情况,方便医生提前了解情况</div>
     <Submit v-if="submit" :showType="showType" :fail="failMsg" @showSubmit="showSubmit"></Submit>
@@ -44,7 +55,7 @@
   </div>
 </template>
 <script>
-import { phoneTest, identify, jgpattern } from "@utils/tools.js";
+import { phoneTest, identify, jgpattern,name } from "@utils/tools.js";
 import Submit from "../common/Submit";
 import Tiptoast from "../common/Tiptoast";
 import api from "@utils/api.js";
@@ -57,8 +68,9 @@ export default {
       failMsg: "",
       submit: false,
       show: false,
-      type: "103",
-      name: "手机号",
+      type: "101",
+      name: "身份证",
+      patName:'',
       value: "",
       message:{
         title: "",
@@ -93,6 +105,11 @@ export default {
         document.activeElement.scrollIntoViewIfNeeded(true);
       }, 300);
     },
+    changeName() {
+      document.activeElement.scrollIntoViewIfNeeded(true);
+      const { patName } = this;
+      this.patName = patName.replace(/[0-9]*$/,'').replace(/[`~!@#$%^&)(*_\-+=<>?:"{}|,.\/;'\\[\]·~!@#¥%……&*()——\-+={}|《》?:“”【】、;‘’,。、]/im,'')
+    },
     changeVal() {
       document.activeElement.scrollIntoViewIfNeeded(true);
       const { type, value } = this;
@@ -116,39 +133,41 @@ export default {
       this.submit = flg;
     },
     handleDepart() {
-      const { type, value } = this;
-      if (value) {
-        if (type == 103) {
-          if (!phoneTest.test(value)) {
-            //验证不通过
-            this.defaultWaring("输入信息格式有误");
-            return;
-          }
-        } else if (type == 101) {
-          //身份证
-          if (!identify.test(value)) {
-            //验证不通过
-            this.defaultWaring("输入信息格式有误");
-            return;
+      const { type, value,patName } = this;
+      if (value&&patName) {
+        let timer = setTimeout(() => {
+          if (type == 103) {
+            if (!phoneTest.test(value)) {
+              //验证不通过
+              this.defaultWaring("输入信息格式有误");
+              return;
+            }
+          } else if (type == 101) {
+            //身份证
+            if (!identify.test(value)) {
+              //验证不通过
+              this.defaultWaring("输入信息格式有误");
+              return;
+            }
+          } else if (type == 104) {
+            //病历号只能输入数字字母
+            if (!jgpattern.test(value)) {
+              //验证不通过
+              this.defaultWaring("输入信息格式有误");
+              return;
+            }
           }
-        } else if (type == 104) {
-          //病历号只能输入数字字母
-          if (!jgpattern.test(value)) {
-            //验证不通过
-            this.defaultWaring("输入信息格式有误");
+          if(!this.code){
+            this.defaultWaring("医院编码必填");
             return;
           }
-        }
-        if(!this.code){
-          this.defaultWaring("医院编码必填");
-          return;
-        }
-        const param = {
-          patientInfo: this.value,
-          patientInfoType: this.type,
-          hospitalCode:this.code
-        };
-        api
+          const param = {
+            patientInfo: this.value,
+            patientInfoType: this.type,
+            hospitalCode:this.code,
+            patientName:patName
+          };
+          api
           .signIn(param)
           .then(res => {
             let result = res.data;
@@ -180,6 +199,7 @@ export default {
                 this.message.text = '暂无今日挂号信息,可更换登录方式再次尝试。'
                 this.showTip = true
               }
+              clearTimeout(timer)
             } else {
               if(res.msg.indexOf('暂无今日挂号信息') != -1){
                 this.message.title = '温馨提示'
@@ -188,11 +208,14 @@ export default {
               }else{
                 this.defaultWaring(res.msg);
               }
+              clearTimeout(timer)
             }
           })
           .catch(() => {
+            clearTimeout(timer)
             this.defaultWaring("网络异常请稍后重试");
           });
+        }, 300);
       }
     }
   },
@@ -212,14 +235,14 @@ export default {
     rgba(79, 79, 255, 1) 0%,
     rgba(79, 137, 255, 1) 100%
   );
-  padding: 0.1rem 0.6rem;
+  padding: 0rem 0.6rem;
   box-sizing: border-box;
   .top {
     .img {
       width: 1.6rem;
       height: 1.6rem;
       background-color: #fff;
-      margin: 1rem auto 0 auto;
+      margin: .8rem auto 0 auto;
       border-radius: 50%;
       overflow: hidden;
       padding:6px;
@@ -232,16 +255,16 @@ export default {
       text-align: center;
       color: #fff;
       margin-top: 0.4rem;
-      margin-bottom: 0.7rem;
+      margin-bottom: 0.5rem;
       font-weight: normal;
     }
   }
   .main {
     width: 100%;
-    height: 5.34rem;
+    // height: 5.34rem;
     background: #fff;
     border-radius: 0.2rem;
-    padding: 0.8rem 0.6rem;
+    padding: 0.6rem 0.6rem;
     box-sizing: border-box;
     font-size: 0.3rem;
     .iptWrap {
@@ -286,9 +309,8 @@ export default {
         }
       }
     }
-
     .number {
-      margin: 0.3rem 0 0.8rem 0;
+      margin: 0.3rem 0 0.6rem 0;
       .input {
         float: left;
         color: rgba(51, 51, 51, 1);
@@ -299,6 +321,9 @@ export default {
         background-color: transparent;
       }
     }
+    .numberIpt {
+      margin: 0.3rem 0 0.3rem 0;
+    }
     .btn {
       width: 100%;
       height: 0.88rem;

+ 2 - 1
src/components/Others.vue

@@ -93,7 +93,8 @@
       })
     },
     methods:{
-      onScroll() {
+      onScroll(data) {
+        this.$store.commit('setScroll', data)
         document.activeElement.scrollIntoViewIfNeeded(true);
       },
       beBack(){

+ 3 - 2
src/components/Symptom.vue

@@ -152,8 +152,9 @@ export default {
       this.message.title = '';
       this.message.text = '';
     },
-    onScroll() {
-      document.activeElement.scrollIntoViewIfNeeded(true);        
+    onScroll(data) {
+      this.$store.commit('setScroll', data);
+      document.activeElement.scrollIntoViewIfNeeded(true);
     },
     search(flg) {
       this.$store.commit('setSearchShow', flg);

+ 4 - 0
src/store.js

@@ -9,6 +9,7 @@ const store = new Vuex.Store({
     pathInfo:{}, //患者信息-后续提交要用
     sysConfig:[], //系统配置项
     allMoudles:[], //模板
+    scroll:{},
     symptom:{ //症状情况
       choose:[],
       origin:{},
@@ -313,6 +314,9 @@ const store = new Vuex.Store({
     setChoose(state,param){ //症状情况-已选症状
       state.symptom.choose = param.choose;
     },
+    setScroll(state,data){ //症状情况-已选症状
+      state.scroll = data;
+    },
     delChoose(state,param){ //详情有必填项未填--移除症状
       const id = param.id;
       let symp = state.symptom.choose;

+ 4 - 1
src/utils/tools.js

@@ -129,6 +129,8 @@ const phoneTest = /^[1]([3-9])[0-9]{9}$/;
 const identify = /(^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}[0-9Xx]$)|(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)/;
 //只能是数字和字母
 const jgpattern = /^[A-Za-z0-9]+$/;
+//名字汉字字母
+const name = /^[0-9\u4e00-\u9fa5]+$/;
 
 const getAllStr = (allData) =>{//获取界面数据,拼接字符串
   // console.log(allData,777777)
@@ -358,7 +360,8 @@ module.exports =  {
   identify,
   jgpattern,
   compare,
-  dateParser
+  dateParser,
+  name
 }