Browse Source

Merge branch 'master' of http://47.107.53.207:3000/ymy/oms

AlanWong 2 năm trước cách đây
mục cha
commit
28189d7d9e

+ 10 - 2
src/api/omsOrder.ts

@@ -37,7 +37,7 @@ export function smt(data:any){
 	return request({
 		url: '/omsOrder/omsOrder/submit',
 		method: 'POST',
-		data: data
+		params: data
 	})
 }
 
@@ -45,7 +45,7 @@ export function unSmt(data:any){
 	return request({
 		url: '/omsOrder/omsOrder/unSubmit',
 		method: 'POST',
-		data: data
+		params: data
 	})
 }
 
@@ -87,4 +87,12 @@ export function materialrelevancy(data:any){
 		method:'POST',
 		data:data
 	})
+}
+
+export function purchaseQty(params:any){
+	return request({
+		url:'/omsOrder/omsOrder/purchaseQty',
+		method:'Get',
+		params:params
+	})
 }

+ 8 - 3
src/benyun/components/byTable/byTable.vue

@@ -49,7 +49,6 @@
           :width="item.width"
           :fixed="item.fixed"
           :align="item.align"
-          :show-overflow="item.ellipsis"
           :tree-node="item.treeNode"
         >
           <template #default="{ row }">
@@ -57,8 +56,8 @@
             <component v-else-if="item.component" :is="item.component" :ref="item.prop+'Comp'" :propConfig="item.compConfig" :parentValue="row"
               :propValue="row[item.field]" @onChange="onChange($event, row,item.field)" />
             <template v-else>
-              <div v-if="item.isDetail" :title="row[item.field]" :style="{ 'text-align': item.align }" class="tdCol detail" @click="detail(row)">{{ row[item.field] }}</div>
-              <div class="tdCol" :title="row[item.field]" :style="{ 'text-align': item.align }" v-else>{{ row[item.field] }}</div>
+              <div v-if="item.isDetail" :class="{'ellipsis':item.ellipsis}" :title="row[item.field]" :style="{ 'text-align': item.align }" class="tdCol detail" @click="detail(row)">{{ row[item.field] }}</div>
+              <div class="tdCol" :class="{'ellipsis':item.ellipsis}" :title="row[item.field]" :style="{ 'text-align': item.align }" v-else>{{ row[item.field] }}</div>
             </template>
             
           </template>
@@ -303,6 +302,12 @@ export default class ByTable extends VueViews {
   .tdCol{
     width: 100%;
   }
+  .ellipsis{
+    width: 100%;
+    overflow: hidden;
+    white-space: nowrap;
+    text-overflow: ellipsis;
+  }
 }
 .col-action{
   color: #0089ff;

+ 3 - 2
src/benyun/utils/benyuntech.ts

@@ -211,8 +211,8 @@ export function tansParams(params:any) {
       if (typeof value === 'object') {
         for (const key of Object.keys(value)) {
           if (value[key] !== null && value !== "" && typeof (value[key]) !== 'undefined') {
-            let params = propName + '[' + key + ']';
-            var subPart = encodeURIComponent(params) + "=";
+            // let params = propName + '[' + key + ']';
+            var subPart = encodeURIComponent(propName) + "=";
             result += subPart + encodeURIComponent(value[key]) + "&";
           }
         }
@@ -220,6 +220,7 @@ export function tansParams(params:any) {
         result += part + encodeURIComponent(value) + "&";
       }
     }
+    
   }
   return result
 }

+ 1 - 4
src/benyun/utils/request.ts

@@ -30,7 +30,7 @@ service.interceptors.request.use((config:any) => {
     config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
   }
   // get请求映射params参数
-  if (config.method === 'get' && config.params) {
+  if ((config.method === 'get' || config.method === 'post') && config.params) {
     let url = config.url + '?' + tansParams(config.params);
     url = url.slice(0, -1);
     config.params = {};
@@ -42,9 +42,6 @@ service.interceptors.request.use((config:any) => {
       data: typeof config.data === 'object' ? JSON.stringify(config.data) : config.data,
       time: new Date().getTime()
     }
-    if(config.params){
-      requestObj.url = requestObj.url + '?' + tansParams(config.params);
-    }
     const sessionObj = cache.session.getJSON('sessionObj')
     if (sessionObj === undefined || sessionObj === null || sessionObj === '') {
       cache.session.setJSON('sessionObj', requestObj)

+ 9 - 4
src/components/skuModal/productModal.vue

@@ -80,16 +80,21 @@ export default class ProductModal extends Vue {
       },{
         title:'标题',
         field:'skuTitle',
-        width:150
+        ellipsis:true,
+        // width:150
       },{
         title:'规格',
-        field:'materialSpec'
+        field:'materialSpec',
+        width:240,
+        ellipsis:true
       },{
         title:'单价',
-        field:'price'
+        field:'price',
+        width:80
       },{
         title:'库存',
-        field:'stock'
+        field:'stock',
+        width:80
       }]
     },
     // request:{

+ 2 - 2
src/views/audit/productManagement/components/importProduct.vue

@@ -1,7 +1,7 @@
 <template>
   <vxe-modal v-model="value" id="importProduct" width="70%" height="80%" @show="show" show-zoom resize transfer v-loading="load">
     <template #title>
-      <span>商品关联</span>
+      <span>关联商品</span>
     </template>
     <template #default>
       <div class="i-box">
@@ -47,7 +47,7 @@ export default class ImportProduct extends Vue {
       action:true,
       width:170,
       plugins:[{
-        name:'商品关联',
+        name:'关联商品',
         audit:'',
         event:{
           show:(row:any) => {

+ 7 - 4
src/views/audit/productManagement/components/synchronousOrderModal.vue

@@ -1,5 +1,5 @@
 <template>
-  <vxe-modal v-model="value" id="synchronousOrderModal"  width="500" height="400"  transfer show-footer v-loading="load">
+  <vxe-modal v-model="value" id="synchronousOrderModal"  width="500" height="400" @hide="hide"  transfer show-footer v-loading="load">
     <template #title>
       <span>商品同步</span>
     </template>
@@ -36,7 +36,7 @@
         <div class="cont">
           <div class="title">款式编码:</div>
           <div class="right-cont">
-            <el-input v-model="styles" type="textarea" rows="4" size="mini" placeholder="每行一个单号,换行输入"></el-input>
+            <el-input v-model="styles" type="textarea" rows="4" size="mini" placeholder="每行一个编码,换行输入"></el-input>
           </div>
         </div>
       </template>
@@ -91,8 +91,8 @@ export default class SynchronousOrderModal extends Vue {
   load = false;
   value = false;
   type=1;
-  shopName = '犇云聚水潭店铺';
-  shopId:any = 2;
+  shopName = '';
+  shopId:any = null;
   shopOptions=[{
     label:'犇云聚水潭店铺',
     value:2
@@ -183,6 +183,9 @@ export default class SynchronousOrderModal extends Vue {
     }
     return msg
   }
+  hide(){
+    this.clear();
+  }
   clear(){
     this.type = 1;
     this.shopName = '';

+ 6 - 3
src/views/oms/order/components/loadOrderModal.vue

@@ -1,5 +1,5 @@
 <template>
-  <vxe-modal v-model="value" id="synchronousOrderModal"  width="500" height="400"  transfer show-footer v-loading="load">
+  <vxe-modal v-model="value" id="synchronousOrderModal"  width="500" height="400" @hide="hide"  transfer show-footer v-loading="load">
     <template #title>
       <span>下载订单</span>
     </template>
@@ -97,8 +97,8 @@ export default class LoadOrderModal extends Vue {
   load = false;
   value = false;
   type=1;
-  shopName = '犇云聚水潭店铺';
-  shopId:any = 2;
+  shopName = '';
+  shopId:any = null;
   shopOptions=[{
     label:'犇云聚水潭店铺',
     value:2
@@ -230,6 +230,9 @@ export default class LoadOrderModal extends Vue {
       this.load = false;
     })
   }
+  hide(){
+    this.clear()
+  }
   clear(){
     this.type = 1;
     this.shopName = '';

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

@@ -6,7 +6,7 @@
       </el-checkbox>
     </template>
     <el-checkbox-group v-if="options.length > 0" v-model="value" @change="handleCheckedItemChange">
-      <el-checkbox v-for="dataItem in options" :label="dataItem.value?dataItem.value:dataItem.label" :key="dataItem.value">{{dataItem.label}}</el-checkbox>
+      <el-checkbox v-for="dataItem in options" :label="dataItem.value || dataItem.value === 0?dataItem.value:dataItem.label" :key="dataItem.value">{{dataItem.label}}</el-checkbox>
     </el-checkbox-group>
   </el-collapse-item>
 </template>

+ 7 - 0
src/views/oms/order/components/orderTable.vue

@@ -13,6 +13,13 @@
         <div class="detail" @click="detail(row)">{{ row.sourceId }}</div>
       </template>
     </vxe-column>
+    <vxe-column field="isSubmitted" title="提交状态" width="130" fixed="left">
+      <template #default="{ row }">
+        <el-tag v-if="row.isSubmitted == 1" type="success">已提交</el-tag>
+        <el-tag v-else type="warning"> 未提交 </el-tag>
+
+      </template>
+    </vxe-column>
     <vxe-column field="type" title="订单类型" width="120">
       <template #default="{ row }">
         <span v-if="row.type == 'Common'">普通订单</span>

+ 3 - 2
src/views/oms/order/components/orderTool.vue

@@ -9,9 +9,9 @@
     <!-- <el-button type="text" @click="handle('addOrder')">新增订单</el-button> -->
     <div class="split"></div>
     <el-dropdown split-button type="text" @click="handle('smt')" @command="handleCommand">
-        审批
+        提交
       <el-dropdown-menu slot="dropdown">
-        <el-dropdown-item command="reSmt">反审批</el-dropdown-item>
+        <el-dropdown-item command="reSmt">反提交</el-dropdown-item>
       </el-dropdown-menu>
     </el-dropdown>
     <el-button type="text">设快递</el-button>
@@ -38,6 +38,7 @@
         <el-dropdown-item>合并</el-dropdown-item>
       </el-dropdown-menu>
     </el-dropdown>
+    <el-button type="text" @click="handle('producePurchase')" title="选取已审批数据">生成采购单</el-button>
   </div>
 </template>
 

+ 57 - 37
src/views/oms/order/index.vue

@@ -9,6 +9,7 @@
             <input-select :options="buyerOptions" @input="parameChangeInfo($event,'receiverInfo','receiverValue')" ref="searchCom03" />
           </el-collapse-item>
           <order-checkbox title="订单状态" keyName="statusList" ref="searchCom04" :options="statusOptions" noLimit @checkboxChange="onChange($event,'statusList')" />
+          <order-checkbox title="提交状态" keyName="isSubmitted" ref="isSubmitted" :options="submitOption" noLimit @checkboxChange="onChange($event,'isSubmitted')" />
           <order-radio title="买家留言" keyName="buyerMessageFilter" ref="searchCom05" :options="buyerMessageOptions" noLimit @radioChange="onChange($event,'buyerMessageFilter')">
             <template v-slot:buyerMessage>
               <el-input style="width: 140px;" v-model="value.buyerMessageContent" size="mini" placeholder="留言内容"></el-input>
@@ -143,7 +144,7 @@
     </div>
     <div class="order-right">
       <div class="tool">
-        <order-tool @addOrder="addOrder" @smt="smtOrder" @reSmt="reSmt" @loadOrder="loadOrder"/>
+        <order-tool @addOrder="addOrder" @smt="smtOrder" @reSmt="reSmt" @loadOrder="loadOrder" @producePurchase="producePurchase"/>
       </div>
       <div class="table">
         <order-table :data="data" ref="orderTable" class="order-table" @detail="detail"/>
@@ -170,7 +171,7 @@ import InputSelect from "./components/inputSelect.vue";
 import OrderProduct from "./components/orderProduct.vue";
 import filterMinMax from './components/filterMinMax.vue'
 import loadOrderModal from './components/loadOrderModal.vue'
-import { query,getProvince,smt,unSmt } from '@/api/omsOrder'
+import { query,getProvince,smt,unSmt,purchaseQty } from '@/api/omsOrder'
 @Component({components:{filterInput,OrderCheckbox,OrderRadio,filterDate,OrderTool,OrderTable,AddOrder,InputSelect,OrderProduct,filterMinMax,loadOrderModal}})
 export default class Order extends Vue {
   test={}
@@ -335,27 +336,6 @@ export default class Order extends Vue {
     value:2,
   }]
 
-  //旗帜
-  flagsOptions=[{
-    label:'无旗帜',
-    value:'0'
-  },{
-    label:'红旗',
-    value:'1'
-  },{
-    label:'黄旗',
-    value:'2'
-  },{
-    label:'绿旗',
-    value:'3'
-  },{
-    label:'蓝旗',
-    value:'4'
-  },{
-    label:'紫旗',
-    value:'5'
-  }]
-
   //订单来源
   sourceFromOptions:Array<any>=[{
     label:'手工下单',
@@ -392,6 +372,15 @@ export default class Order extends Vue {
     value:'JUSHUITAN'
   }]
 
+  //审批状态
+  submitOption:Array<any>=[{
+    label:'未提交',
+    value:0
+  },{
+    label:'已提交',
+    value:1
+  }]
+
   //订单类型
   typeOption:Array<any>=[{
     label:'普通订单',
@@ -442,10 +431,7 @@ export default class Order extends Vue {
     label:'取消',
     value:'Cancelled'
   }]
-  shopIdListOptions:Array<any>=[{
-    label:'店铺1',
-    value:'1'
-  }]
+  shopIdListOptions:Array<any>=[]
 
   //省份
   provinceOptions:Array<any>=[]
@@ -454,6 +440,24 @@ export default class Order extends Vue {
     this.getList()
     this.getProvince()
   }
+
+  //生成采购单
+  producePurchase(){
+    let data:Array<any>= (this.$refs.orderTable as any).getSelectData();
+    if(data.length == 0){
+      this.$message('请选择订单!');
+    }
+    let ids:Array<any>=[];
+    for(const item of data){
+      ids.push(item.id)
+    }
+    purchaseQty({
+      ids:ids
+    }).then(() => {
+      
+    })
+  }
+
   clearSearchValue(){
     this.value={};
     for(const key in this.$refs){
@@ -488,11 +492,19 @@ export default class Order extends Vue {
     }
     smt({
       ids:ids
-    }).then(() => {
-      (this as any).$message({
-        message: '订单审批成功!',
-        type: 'success'
-      });
+    }).then((res:any) => {
+      if(res.data == data.length){
+        (this as any).$message({
+          message: '订单审批成功!',
+          type: 'success'
+        });
+      }else{
+        (this as any).$message({
+          message: (data.length - res.data)+'条订单审批失败!',
+          type: 'warning'
+        });
+      }
+      
       this.getList();
     })
   }
@@ -507,11 +519,18 @@ export default class Order extends Vue {
     }
     unSmt({
       ids:ids
-    }).then(() => {
-      (this as any).$message({
-        message: '订单反审批成功!',
-        type: 'success'
-      });
+    }).then((res:any) => {
+      if(res.data == data.length){
+        (this as any).$message({
+          message: '订单反审批成功!',
+          type: 'success'
+        });
+      }else{
+        (this as any).$message({
+          message: (data.length - res.data)+'条订单反审批失败!',
+          type: 'warning'
+        });
+      }
       this.getList();
     })
   }
@@ -601,6 +620,7 @@ export default class Order extends Vue {
       // this.page.pageSize = res.data.size;
       this.page.total = res.data.total;
       this.load = false;
+      this.$forceUpdate();
     }).catch((err:any) => {
       this.load = false;
     })