浏览代码

数字键盘弹起输入问题解决

Luolei 5 年之前
父节点
当前提交
6fc7207958
共有 4 个文件被更改,包括 67 次插入16 次删除
  1. 1 1
      config/index.js
  2. 39 6
      src/common/MultiLineInput.vue
  3. 9 1
      src/components/AddContent.vue
  4. 18 8
      src/utils/tools.js

+ 1 - 1
config/index.js

@@ -4,7 +4,7 @@
 
 const path = require('path')
 // const proxy_path = 'http://192.168.2.236:80';
-const proxy_path = 'http://192.168.2.236:5050';
+const proxy_path = 'http://192.168.2.241:5050';
 
 module.exports = {
   dev: {

+ 39 - 6
src/common/MultiLineInput.vue

@@ -5,9 +5,28 @@
         <div class="iptWrap">
           <!-- <input class="contentVal" type="number" :placeholder="content.placeholder" pattern="\d*" v-model="txt" @input="changeVal" @blur="blur" @click="handleClick"> -->
           <!-- <input ref="ipt" class="contentVal" :placeholder="content.placeholder" pattern="[0-9]*" v-model="txt" @input="changeVal" @blur="blur" @click="handleClick"> -->
-          <input ref="ipt" type="tel" class="contentVal" :placeholder="content.placeholder" v-model="txt" @input="changeVal" @blur="blur" @click="handleClick">
+          <!-- <input ref="ipt" type="tel" :placeholder="content.placeholder" v-model="txt" @input="changeVal" @blur="blur" @click="handleClick"> -->
           <!-- <input v-for="(item,index) in content.iptList" type="tel" class="contentVal" :placeholder="content.placeholder" v-model="txt" @input="changeVal" @blur="blur" @click="handleClick"> -->
-
+          <template v-for="(item,idx) in content.iptLis">
+            <input v-if="content.iptLis.length>1" 
+              class="contentVal" 
+              :type="content.type=='number'?'tel':'text'" 
+              :style="{'width':1/content.iptLis.length*100-3+'%'}" 
+              :key="item.placeholder+idx" 
+              v-model="item.value"
+              :placeholder="item.placeholder"
+              @input="changeVal($event,idx)" 
+              @blur="blur" 
+              @click="handleClick">
+            <input v-show="content.iptLis.length==1" class="contentVal" 
+              :type="content.type=='number'?'tel':'text'" 
+              :placeholder="content.placeholder" 
+              v-model="item.value" 
+              @input="changeVal($event,idx)" 
+              @blur="blur" 
+              @click="handleClick">
+            <span v-if="idx == 0&&content.iptLis.length>1">/</span>
+          </template>
         </div>
     </div>
     <span class="suffix" v-if="content.suffix">{{content.suffix}}</span>
@@ -43,14 +62,28 @@ export default {
     return {
       content:{},
       txt:this.part.value || '', //回读用
+      tmpArr:[]
     }
   },
   mounted(){
-    this.content = getModelExpStr(this.msg)
+    this.setValue()
   },
   methods:{
-    changeVal(){
-      // this.$emit('changeMultipVal',this.txt)
+    changeVal(e,num){
+      let tmpTxt = '',arr=this.tmpArr
+      e.currentTarget.value=e.currentTarget.value.replace(/[^\d]/g,'')
+      arr[num]=e.currentTarget.value
+      tmpTxt=arr.join('/')
+      this.txt = tmpTxt
+      this.setValue()
+      // this.$emit('changeMultipVal',e.currentTarget.value,num)
+    },
+    setValue(){
+      if(this.txt){
+        this.content = getModelExpStr(this.msg,this.txt)
+      }else{
+        this.content = getModelExpStr(this.msg)
+      }
     },
     blur(){
       // 如果该项未选中,则不存值
@@ -122,7 +155,7 @@ export default {
   .suffix {
     position: absolute;
     right: .1rem;
-    top: .1rem;
+    top: .2rem;
     width: 1rem;
     text-align: right;
     text-align: left;

+ 9 - 1
src/components/AddContent.vue

@@ -31,6 +31,7 @@
               :msg="part.name"
               :part="part"
               @updata="updataData($event,index,item)"
+              @changeMultipVal="changeMultipVal($event,val,idx)"
             ></MultiLineInput>
           </template>
         </li>
@@ -40,6 +41,7 @@
         <p>您可以点击预览病历回顾病情;或者点击顶部修改病历采集信息。</p>
         <p>如果没有需要修改的内容,请点击提交,医生便能看到您的病历。</p>
       </div>
+      <p>{{vals}}</p>
     </div>
     <div class="foot">
       <span class="back" @click="back">{{'返回'+ preName}}</span>
@@ -60,7 +62,8 @@ export default {
   data() {
     return {
       dataTrd: [],
-      val: ''
+      val: '',
+      vals:''
     }
   },
   mounted() {
@@ -74,6 +77,10 @@ export default {
       // console.log(value,idx)
       this.val = value
     },
+    changeMultipVal(value, idx) {
+      console.log(value,idx)
+      this.vals = value
+    },
     next(){
       this.$store.commit('setText',{data:this.dataTrd,type:this.allMoudles&&this.allMoudles.type});
       this.$emit('next','preview')
@@ -88,6 +95,7 @@ export default {
       // this.dtoList = origin;console.log("更新:",origin)
     },
     updataData(data,idx,item){
+      console.log(data)
       let mapping = this.dataTrd;
       if(data.controlType == 3){//多行输入,多了一层需单独处理
         let tmpLis = item.questionDetailList

+ 18 - 8
src/utils/tools.js

@@ -1,6 +1,6 @@
 
 const qs = require('qs');
-const imageUrlPrefix = 'http://192.168.2.236:82' //后台图片地址
+const imageUrlPrefix = 'http://192.168.2.241:82' //后台图片地址
 
 const getUrlArgObject = (parm) => {
     let query = window.location.search;
@@ -16,23 +16,33 @@ const deepClone = (arr) =>{
   return newArr;
 }
 
-const getModelExpStr = (str) =>{
+const getModelExpStr = (str,txt) =>{
   let result = {}
+  console.log(str,txt,44444)
   if(str.match(/\${number_(.*})/)){//数字输入框
     let matchStr = str.match(/\${number_(.*})/)[0]
     let tmpHolder = matchStr.split('${number_')[1].split('}')[0]
-    let iptLis = [],join='',pre='',next=''
+    let iptLis = [],join='';
     if(tmpHolder.indexOf('/') != -1){
-      pre = tmpHolder.split('/')[0]
-      next = tmpHolder.split('/')[1]
+      let tmpHolderArr = tmpHolder.split('/')
+      for(let i = 0;i < tmpHolderArr.length;i++){
+        let obj={placeholder:'',value:''}
+        let tmpData = tmpHolderArr[i];
+        obj.placeholder=tmpData
+        if(txt){
+          obj.value=txt.split('/')[i]
+        }
+        iptLis.push(obj)
+      }
       join = '/'
-      iptLis.push(pre,next)
+    }else{
+      let obj={placeholder:'tmpHolder',value:txt}
+      iptLis.push(obj)
     }
     result = {
       type:'number',
       placeholder:tmpHolder,
-      pre:pre||'',
-      next:next||'',
+      iptLis:iptLis,
       join:join,
       prefix:str.split(matchStr)[0]||'',
       suffix:str.split(matchStr)[1]||'',