Browse Source

独立标签添加复制功能,修改时单选和多选类型可以修改,明细不清空

zhangxc 6 years ago
parent
commit
3bfbb5caa2

+ 25 - 7
src/components/icss/AddIndeptLabel.vue

@@ -11,6 +11,7 @@
                 @changeType="changeType"
                 @validatePass="validatePass"
                 :editData="editData"
+                :isEditOrCopy="isEditOrCopy"
                 ref="submitForm"
         ></PubIndeptTag>
         <div class="main">
@@ -18,7 +19,7 @@
                 <i>*</i> 标签明细:
                 <i v-if='dataPub.region2==2' style="margin-left:70px;color: #22ccc8; font-size: 12px;">所有选项必须都有或者都没有同“伴”/“无”标记</i>
             </p>
-            <SingleSelect v-if="dataPub.region2==1 || dataPub.region2==2 || dataPub.region2==11" :ascription="dataPub.region1" :sexType="dataPub.region7" :type="dataPub.region2" @pushValues="pushValues" :options="editData.questionDetailList"></SingleSelect>
+            <SingleSelect v-if="dataPub.region2==1 || dataPub.region2==2 || dataPub.region2==11" :ascription="dataPub.region1" :sexType="dataPub.region7" :type="dataPub.region2" @pushValues="pushValues" :isEditOrCopy="isEditOrCopy" :options="editData.questionDetailList"></SingleSelect>
             <div class="btn">
                 <el-button
                         type="primary"
@@ -55,14 +56,26 @@
           ]
         },
         options: [],           //标签明细右侧操作数据
-        saveDisable: false
+        saveDisable: false,
+        isEditOrCopy: false //
       }
     },
     beforeMount:function(){
-      const {isEdit,data} = this.$route.params;
+      const {isEdit,isCopy,data} = this.$route.params;
+     
       if(isEdit){
-        this.txt = '独立标签维护-修改独立标签'
-        this.editData = data;
+      this.txt = '标签组维护-修改独立标签';
+      this.isEditOrCopy = true
+      this.editData = data;
+      } else if(isCopy) {
+        this.txt = '标签组维护-添加独立标签';
+        this.isEditOrCopy = true
+        const copyData = JSON.parse(JSON.stringify(data))
+        console.log('copyData', copyData)
+        copyData.id = ""
+        copyData.name=""  
+        copyData.tagName=""
+        this.editData = copyData;
       }
     },
     computed: {
@@ -72,7 +85,8 @@
     },
     watch: {
       newSign(nextVal, prevVal) {
-        if (nextVal != prevVal) {
+         const {isEdit,isCopy} = this.$route.params;
+        if (nextVal != prevVal && !isEdit&&!isCopy) {
           this.form.currentOrder = '0'
         }
       },
@@ -87,7 +101,11 @@
         //console.log(sex)
       },
       changeType(type) {        //填写单类型改变,标签明细左侧更新,右侧清空
-        // console.log('type',type)
+        console.log('type', this.options)
+        if(this.isEditOrCopy&&type=='2') {
+          console.log('type11', this.options)
+          return
+        }
         this.options = [];
       },
       pushValues(its){

+ 11 - 3
src/components/icss/IndeptLabel.vue

@@ -76,7 +76,9 @@
                         prop="operate"
                         label="操作">
                     <template slot-scope="scope">
-                        <el-button  @click="modifyIndeptTag(scope.row)" type="text" size="small">修改</el-button>
+                        <el-button  @click="modifyIndeptTag(scope.row, 'modify')" type="text" size="small">修改</el-button>
+                        <span style="margin:0 3px;">|</span>
+                        <el-button @click="modifyIndeptTag(scope.row, 'copy')" class="text" type="text" size="small">复制</el-button>
                         <span style="margin:0 3px;">|</span>
                         <el-button @click="showDelDialog(scope.row)" class="delete" type="text" size="small">删除</el-button>
                     </template>
@@ -176,12 +178,18 @@
       addIndeptTag() {
         this.$router.push({path:'LT-YXSJWH-TJDLBQ'})
       },
-      modifyIndeptTag(row) {
+      modifyIndeptTag(row, type) {
         api.detailsTag({id:row.id}).then((res)=>{
           const {code,data,msg} = res.data;
           if(code=='0'){
             const item = Object.assign({},row,data);
-            this.$router.push({name:'AddIndeptLabel',params:{isEdit:true,data:item}});
+            if(type == 'modify') {
+                this.$router.push({name:'AddIndeptLabel',params:{isEdit:true,data:item}});
+            } else if( type == 'copy') {
+                this.$router.push({name:'AddIndeptLabel',params:{isCopy:true,data:item}});
+            } else {
+                return
+            }
           }else{
             this.$message({
               message: msg,

+ 12 - 7
src/components/icss/PubIndeptTag.vue

@@ -17,7 +17,7 @@
                 <el-select
                         v-model="form.region1"
                         placeholder="请选择归属"
-                        :disabled="!!editData.id"
+                        :disabled="isEditOrCopy"
                         @change="(e)=>readyChangeSelect(e,1)"
                 >
                     <el-option
@@ -36,7 +36,7 @@
                 <el-select
                         v-model="form.region2"
                         placeholder="请选择填写单类型"
-                        :disabled="!!editData.id  || !form.region1"
+                        :disabled="isEditOrCopy&&(form.region2!= '1'&&form.region2!= '2' ) || !form.region1"
                         @change="(e)=>readyChangeSelect(e,2)"
                 >
                     <el-option
@@ -319,7 +319,7 @@
 // 化验(val:5):化验数字键盘(val:7)、化验单选(val:1)
 
   export default {
-    props:['editData'],
+    props:['editData','isEditOrCopy'],
     data() { 
       var validatePass1 = (rule, value, callback) => {
           this.validateSystomName(value,callback,1)
@@ -434,7 +434,8 @@
       this.getDropList();
       //编辑时赋值
       const editData = this.$props.editData;
-      if(editData.id){
+       const isEditOrCopy = this.$props.isEditOrCopy;
+      if(isEditOrCopy){
         const trans = utils.transformKeys(editData);
         this.form = Object.assign({},this.form,trans);
       }
@@ -450,13 +451,13 @@
       },
       newType(nextVal, prevVal) {
         const editData = this.$props.editData;
-        if(!editData.id) {
+        if(!this.isEditOrCopy) {
           this.initForm()
         }
       },
       newSign(nextVal, prevVal) {
         const editData = this.$props.editData;
-        if(!editData.id) {
+        if(!this.isEditOrCopy) {
           this.initForm()
         }
       },
@@ -478,7 +479,11 @@
             this.AdscriptionsList = res.data.data[1]
             this.labelTypesList = res.data.data[6];
             this.form.tipLis = res.data.data[6];
-            this.labelTypes = this.labelTypesList;
+            if(this.isEditOrCopy && (this.form.region2=='1'||this.form.region2=='2')) {
+              this.labelTypes = this.labelTypesList.filter(item => (item.val=='1'||item.val=='2'));
+            } else {
+              this.labelTypes = this.labelTypesList;
+            }
             this.Adscriptions = this.AdscriptionsList.filter(item => Object.keys(this.labelTypesMaps).indexOf(item.val) > -1)
           }
         })

+ 10 - 1
src/components/icss/SingleSelect.vue

@@ -91,7 +91,7 @@
   import utils from '@api/utils.js';
   import Vue from 'vue';
     export default {
-      props:['type','options','ascription','sexType'],
+      props:['type','options','ascription','sexType','isEditOrCopy'],
       data(){
         return {
           maps:{isBan:'同“伴”',isNone:'同“无”',defaultSelect:'默认选中',isError:'异常选项'},
@@ -161,7 +161,16 @@
         type(newVal, preVal) {
             if (newVal != preVal) {
                 if (JSON.stringify(newVal) != JSON.stringify(preVal)) {
+                  if(this.isEditOrCopy) {
+                    for(let i = 0, len = this.rows.length; i < len; i++) {
+                      this.rows[i].defaultSelect = ''
+                      this.rows[i].isBan = ''
+                      this.rows[i].isNone = ''
+                      this.rows[i].isError = ''
+                    }
+                  } else {
                     this.rows = [{name:'',defaultSelect:'',isBan:'',isNone:'',isError:''},{name:'',defaultSelect:'',isBan:'',isNone:'',isError:''},{name:'',defaultSelect:'',isBan:'',isNone:'',isError:''},{name:'',defaultSelect:'',isBan:'',isNone:'',isError:''}];
+                  }
                 }
             }
         },