Explorar o código

改标签+新增赠品

ymy %!s(int64=2) %!d(string=hai) anos
pai
achega
b5ca967939

+ 8 - 0
src/api/omsOrder.ts

@@ -160,4 +160,12 @@ export function setLabels(data:any){
 		method:'POST',
 		data:data
 	})
+}
+//批量添加赠品
+export function addGift(data:any){
+	return request({
+		url:'/omsOrder/omsOrder/addGift',
+		method:'POST',
+		data:data
+	})
 }

+ 1 - 1
src/benyun/components/byInput/byInput.vue

@@ -1,7 +1,7 @@
 <template>
   <el-input v-if="attrs.type == 'textarea'" :type="attrs.type" v-model="value" @input="onChange" :rows="attrs.rows" :show-word-limit="attrs.showWordLimit" :show-password="attrs.showPassword" :placeholder="placeholder"
   :maxlength="attrs.maxlength" :minlength="attrs.minlength" :clearable="attrs.clearable" :disabled="attrs.disabled" :prefix-icon="attrs.prefixIcon"
-  :suffix-icon="attrs.suffixIcon" :readonly="attrs.readonly"></el-input>
+  :suffix-icon="attrs.suffixIcon" :readonly="attrs.readonly" :autosize="attrs.autosize"></el-input>
   <vxe-input 
     v-else
     v-model="value"

+ 1 - 1
src/views/oms/order/components/orderTool.vue

@@ -35,7 +35,7 @@
     <el-dropdown split-button type="text" class="dropdown" @command="handleCommand">
       修改
       <el-dropdown-menu slot="dropdown">
-        <el-dropdown-item command="updateGift">添加赠品</el-dropdown-item>
+        <el-dropdown-item command="addGift">添加赠品</el-dropdown-item>
         <el-dropdown-item command="updateFreight">改运费</el-dropdown-item>
         <el-dropdown-item command="updateTag">改标签</el-dropdown-item>
         <el-dropdown-item command="updateRmk">改备注</el-dropdown-item>

+ 131 - 0
src/views/oms/order/components/tabModal.vue

@@ -0,0 +1,131 @@
+<template>
+  <vxe-modal v-model="value" id="tagModal" width="400" v-loading="load" @hide="hide" height="350" show-footer title="修改标签">
+    <by-form :propConfig="config" ref="form">
+      <template v-slot:actionType="{value}">
+        <el-switch
+          v-model="value.actionType"
+          active-text="移除"
+          inactive-text="新增"
+          :inactive-value="1"
+          :active-value="2">
+        </el-switch>
+      </template>
+    </by-form>
+    <template #footer>
+      <div class="btn">
+        <el-button type="primary" size="small" @click="btn">确定</el-button>
+      </div>
+    </template>
+  </vxe-modal>
+</template>
+<script lang="ts">
+import { Component, Prop, Vue, Watch } from "vue-property-decorator";
+import { setLabels } from '@/api/omsOrder'
+@Component({components:{}})
+export default class TabModal extends Vue {
+  value=false;
+  load=false;
+  billValue:Array<any>=[];
+  config:any={
+    attr:{
+      rules:{
+        labels: [
+          { required: true, message: '标签不能为空!', trigger: 'input' }
+        ]
+      }
+    },
+    columns:[
+      [{
+        label:'标签',
+        prop:'labels',
+        labelWidth:'80px',
+        component:'by-input',
+        compConfig:{
+          attr:{
+            type:'textarea',
+            rows:3,
+            placeholder:'每行一个标签,换行输入,每个标签字符长度不超过10',
+            autosize:{
+              maxRows:19
+            }
+          }
+        }
+      }],
+      [{
+        label:'',
+        prop:'actionType',
+        labelWidth:'80px',
+        slot:true
+      }]
+    ]
+  }
+  hide(){
+    (this.$refs.form as any).clearValidate();
+    (this.$refs.form as any).clearValue();
+  }
+  btn(){
+    (this.$refs.form as any).validate().then(()=>{
+      let data = (this.$refs.form as any).getValue();
+      let newV=data.labels.split('\n');
+      let msg1 = '';
+      let msg2='';
+      for(const item of newV){
+        if(item && item.length >10){
+          if(msg1){
+            msg1 = msg1 + ',' + item
+          }else{  
+            msg1 = item
+          }
+        }
+      }
+      let i1=-1;
+      for(const item1 of newV){
+        let i2=-1;
+        i1++;
+        for(const item2 of newV){
+          i2++;
+          if(i1 != i2 && item1 == item2){
+            if(msg2){
+              msg2 = msg2 + ',' + item2
+            }else{  
+              msg2 = item2
+            } 
+            break
+          }
+        }
+      }
+      let msg = '';
+      if(msg1){
+        msg = '标签“'+msg1 + '”不能超过10个字符;'
+      }
+      if(msg2){
+        msg = msg + '标签“'+msg2 + '”重复输入;'
+      }
+      if(msg){
+        this.$message(msg)
+        return
+      }
+      data.labels = newV;
+      data.idList = this.billValue;
+      this.load = true
+      setLabels(data).then(()=>{
+        this.load = false;
+        (this.$message({
+          message:'操作成功!',
+          type:'success'
+        }));
+        this.$emit('handleSuccess');
+        this.value = false;
+      }).catch(()=>{
+        this.load = false;
+      })
+    })
+  }
+  setShow(v:boolean){
+    this.value = v;
+  }
+  setBillValue(data:Array<any>){
+    this.billValue = data;
+  }
+}
+</script>

+ 59 - 13
src/views/oms/order/index.vue

@@ -164,7 +164,8 @@
     <div class="order-right">
       <div class="tool">
         <order-tool @addOrder="addOrder" @smt="smtOrder" @reSmt="reSmt" @loadOrder="loadOrder" @producePurchase="producePurchase" @cancelOrder="cancelOrder" 
-        @reCancelOrder="reCancelOrder" @updateRmk="updateRmk" @changeQues="changeQues" @changeNormal="changeNormal" @updateSalesman="updateSalesman"/>
+        @reCancelOrder="reCancelOrder" @updateRmk="updateRmk" @changeQues="changeQues" @changeNormal="changeNormal" @updateSalesman="updateSalesman" 
+        @updateTag="updateTag" @addGift="addGift" />
       </div>
       <div class="table">
         <order-table :data="data" ref="orderTable" class="order-table" @detail="detail" @mergeHandle="mergeHandle" @splitHandle="splitHandle"/>
@@ -194,6 +195,10 @@
       <update-rmk-modal ref="updateRmkModal" @handleSuccess="handleSuccess" />
       <!-- 改业务员 -->
       <update-saler-modal ref="updateSalerModal" @handleSuccess="handleSuccess" />
+      <!-- 改标签 -->
+      <tabModal ref="tabModal" @handleSuccess="handleSuccess" />
+      <!-- 赠品 -->
+      <product-sku-modal ref="productGift" :mulit="true" @confirm="confirmProduct" />
     </div>
   </div>
 </template>
@@ -218,10 +223,12 @@ import QuestModel from "./components/questModel.vue";
 import SetQuesModal from "./components/setQuesModal.vue";
 import UpdateRmkModal from "./components/updateRmkModal.vue";
 import UpdateSalerModal from "./components/updateSalerModal.vue";
-import { query,getProvince,smt,unSmt,purchaseQty,unCancel,resetQuestion } from '@/api/omsOrder'
+import TabModal from "./components/tabModal.vue";
+import { query,getProvince,smt,unSmt,purchaseQty,unCancel,resetQuestion,addGift } from '@/api/omsOrder'
 import { queryAll } from '@/api/question'
 @Component({components:{filterInput,OrderCheckbox,OrderRadio,filterDate,OrderTool,OrderTable,AddOrder,InputSelect,OrderProduct,
-  filterMinMax,loadOrderModal,PurchaseModel,MergeModel,SplitModel,CancelOrderModel,QuestModel,SetQuesModal,UpdateRmkModal,UpdateSalerModal}})
+  filterMinMax,loadOrderModal,PurchaseModel,MergeModel,SplitModel,CancelOrderModel,QuestModel,SetQuesModal,UpdateRmkModal,UpdateSalerModal,
+  TabModal}})
 export default class Order extends Vue {
   activeNames:Array<any>=['1','status']
   radio=''
@@ -493,22 +500,60 @@ export default class Order extends Vue {
     this.getProvince();
     this.getQuestionList();
   }
-  //改业务员
-  updateSalesman(){
+  //添加赠品
+  addGift(){
     let data = (this.$refs.orderTable as any).getSelectData();
     if(data.length == 0){
       this.$message('请选择订单!');
       return
     }
-    let billData:Array<any>=[]
+    (this.$refs.productGift as any).setShow(true);
+  }
+  confirmProduct(v:Array<any>){
+    if(v.length == 0){
+      this.$message('请选择赠品!')
+      return
+    }
+    let data = (this.$refs.orderTable as any).getSelectData();
+    let parames:any={};
+    parames.idList = [];
+    parames.giftList=[];
     for(const item of data){
-      billData.push(item.id);
+      parames.idList.push(item.id);
     }
-    (this.$refs.updateSalerModal as any).setBillValue(billData);
-    (this.$refs.updateSalerModal as any).setShow(true);
+    for(const item of v){
+      parames.giftList.push({
+        itemId:item.id,
+        qty:1
+      })
+    }
+    addGift(parames).then(() => {
+      this.$message({
+        message:'赠品添加成功!',
+        type:'success'
+      });
+      this.handleSuccess();
+    }).catch((err:any)=>{
+      if(err.msg){
+        this.$message.error(err.msg);
+      }else{
+        this.$message.error('操作失败!');
+      }
+    })
+  }
+  //改标签
+  updateTag(){
+    this.updateHandleModal('tabModal')
+  }
+  //改业务员
+  updateSalesman(){
+    this.updateHandleModal('updateSalerModal')
   }
   //改备注
   updateRmk(){
+    this.updateHandleModal('updateRmkModal')
+  }
+  updateHandleModal(n:string){
     let data = (this.$refs.orderTable as any).getSelectData();
     if(data.length == 0){
       this.$message('请选择订单!');
@@ -518,8 +563,8 @@ export default class Order extends Vue {
     for(const item of data){
       billData.push(item.id);
     }
-    (this.$refs.updateRmkModal as any).setBillValue(billData);
-    (this.$refs.updateRmkModal as any).setShow(true);
+    (this.$refs[n] as any).setBillValue(billData);
+    (this.$refs[n] as any).setShow(true);
   }
   //转异常
   changeQues(){
@@ -917,7 +962,7 @@ export default class Order extends Vue {
     }
     if(msgIds){
       this.$message({
-        message:'订单“'+msgIds + '”已经是取消状态,不能重复操作!'
+        message:'订单“'+msgIds + '”不满足取消条件!'
       })
       return
     }
@@ -954,7 +999,8 @@ export default class Order extends Vue {
     unCancel({idList:ids}).then((res:any)=>{
       this.load = false;
       this.$message({
-        message:'反取消订单操作成功!'
+        message:'反取消订单操作成功!',
+        type:'success'
       })
       this.handleSuccess();
     }).catch(()=>{