Bläddra i källkod

fix: 商家库存

zh 2 år sedan
förälder
incheckning
d6df224e9c

+ 8 - 0
src/api/sales.js

@@ -140,6 +140,14 @@ export function listOrder(params) {
     data: params
   })
 }
+export function setSendRevoke(params) {
+  return request({
+    url: '/customer/frontOrder/sendRevoke',
+    method: 'post',
+    data: params
+  })
+}
+
 
 
 // 下拉框查询

+ 41 - 38
src/components/SalesHeader/SalesHeader.vue

@@ -3,47 +3,46 @@
     <el-form ref="form" :rules="rules" label-position="left" :disabled="screenForm.disabled" label-width="120px" :model="screenForm" size="mini">
       <el-row :gutter="20">
         <el-col :xs="24" :ms="6" :lg="6">
-          <el-form-item label="销售订单号" >
+          <el-form-item label="销售订单号">
             <el-input v-model="screenForm.id" disabled placeholder="销售订单号" size="mini" />
           </el-form-item>
         </el-col>
         <el-col :xs="24" :ms="6" :lg="6">
-          <el-form-item label="商家编号" >
+          <el-form-item label="商家编号">
             <el-input v-model="screenForm.customerNumber" disabled placeholder="商家编号" size="mini" />
           </el-form-item>
         </el-col>
         <el-col :xs="24" :ms="6" :lg="6">
-          <el-form-item label="商家名称" >
+          <el-form-item label="商家名称">
             <el-input v-model="screenForm.customerName" disabled placeholder="商家名称" size="mini" />
           </el-form-item>
         </el-col>
         <el-col :xs="24" :ms="6" :lg="6">
           <el-form-item label="配送日期" prop="pickTime">
             <el-date-picker
-              style="width: 100%"
               v-model="screenForm.pickTime"
+              style="width: 100%"
               type="date"
               size="mini"
               value-format="yyyy-MM-dd HH:mm:ss"
               placeholder="选择日期"
-            >
-            </el-date-picker>
+            />
           </el-form-item>
         </el-col>
-<!--        <el-col :xs="24" :ms="6" :lg="6">-->
-<!--          <el-form-item label="发货仓库编号" prop="code">-->
-<!--            <el-input v-model="screenForm.code" placeholder="发货仓库编号" size="mini" />-->
-<!--          </el-form-item>-->
-<!--        </el-col>-->
+        <!--        <el-col :xs="24" :ms="6" :lg="6">-->
+        <!--          <el-form-item label="发货仓库编号" prop="code">-->
+        <!--            <el-input v-model="screenForm.code" placeholder="发货仓库编号" size="mini" />-->
+        <!--          </el-form-item>-->
+        <!--        </el-col>-->
         <el-col :xs="24" :ms="6" :lg="6">
           <el-form-item label="发货仓库名称" prop="stockType">
-            <el-select  v-model="screenForm.stockType" placeholder="请选择" clearable>
+            <el-select v-model="screenForm.stockType" placeholder="请选择" clearable @change="handleStokType">
               <el-option
-                label="前置仓"
+                label="嘉贤前置仓"
                 :value="1"
               />
               <el-option
-                label="商家仓"
+                label="商家商家仓"
                 :value="2"
               />
             </el-select>
@@ -61,25 +60,28 @@
         </el-col>
         <el-col :xs="24" :ms="18" :lg="18" style="display: flex;" class="custom">
           <el-form-item label="省" prop="provinceId" class="item">
-            <el-select v-model="screenForm.provinceId" placeholder="请选择省" @change="changeProvince"
-                       style="width: 100%"
+            <el-select
+              v-model="screenForm.provinceId"
+              placeholder="请选择省"
+              style="width: 100%"
+              @change="changeProvince"
             >
-              <el-option v-for="item in provinceList" :key="item.id" :label="item.name" :value="item.id"></el-option>
+              <el-option v-for="item in provinceList" :key="item.id" :label="item.name" :value="item.id" />
             </el-select>
           </el-form-item>
           <el-form-item label="市" prop="cityId" label-width="50px">
-            <el-select v-model="screenForm.cityId" placeholder="请选择市" @change="changeCity" style="width: 100%">
-              <el-option v-for="item in cityList" :key="item.id" :label="item.name" :value="item.id"></el-option>
+            <el-select v-model="screenForm.cityId" placeholder="请选择市" style="width: 100%" @change="changeCity">
+              <el-option v-for="item in cityList" :key="item.id" :label="item.name" :value="item.id" />
             </el-select>
           </el-form-item>
           <el-form-item label="区" prop="areaId" label-width="50px">
-            <el-select v-model="screenForm.areaId" placeholder="请选择区" @change="changeArea" style="width: 100%">
-              <el-option v-for="item in areaList" :key="item.id" :label="item.name" :value="item.id"></el-option>
+            <el-select v-model="screenForm.areaId" placeholder="请选择区" style="width: 100%" @change="changeArea">
+              <el-option v-for="item in areaList" :key="item.id" :label="item.name" :value="item.id" />
             </el-select>
           </el-form-item>
           <el-form-item label="街道" prop="streetId" label-width="50px">
-            <el-select v-model="screenForm.streetId" placeholder="请选择街道" @change="changeStreet" style="width: 100%">
-              <el-option v-for="item in streetList" :key="item.id" :label="item.name" :value="item.id"></el-option>
+            <el-select v-model="screenForm.streetId" placeholder="请选择街道" style="width: 100%" @change="changeStreet">
+              <el-option v-for="item in streetList" :key="item.id" :label="item.name" :value="item.id" />
             </el-select>
 
           </el-form-item>
@@ -157,10 +159,10 @@ export default {
           required: true, message: '请输入用户名称', trigger: 'change'
         }],
         phone: [{
-          required: true, message: '请输入用户电话', trigger: 'change',
+          required: true, message: '请输入用户电话', trigger: 'change'
         },
         { min: 11, max: 11, message: '请输入11位手机号', trigger: 'change' }
-      ],
+        ],
         receAddress: [{
           required: true, message: '请输入送货地址', trigger: 'change'
         }]
@@ -169,7 +171,7 @@ export default {
       cityList: [],
       areaList: [],
       streetList: [],
-      areaValue:''
+      areaValue: ''
     }
   },
   created() {
@@ -191,10 +193,8 @@ export default {
         }
       })
     },
-    handleArea(value,type){
-
-      this.screenForm[type] =  this[type+'List'].find(k=>k.id===value).name
-
+    handleArea(value, type) {
+      this.screenForm[type] = this[type + 'List'].find(k => k.id === value).name
     },
     // 切换省
     changeProvince(value) {
@@ -205,7 +205,7 @@ export default {
       this.areaList = []
       this.streetList = []
       this.getRegion(1, value)
-      this.handleArea(value,'province')
+      this.handleArea(value, 'province')
     },
 
     // 切换市
@@ -215,8 +215,7 @@ export default {
       this.areaList = []
       this.streetList = []
       this.getRegion(2, value)
-      this.handleArea(value,'city')
-
+      this.handleArea(value, 'city')
     },
 
     // 切换区
@@ -225,19 +224,18 @@ export default {
       this.screenForm.streetId = ''
       this.streetList = []
       this.getRegion(3, value)
-      this.handleArea(value,'area')
-
+      this.handleArea(value, 'area')
     },
 
     // 切换街道
     changeStreet(value) {
       this.getRegion(3, this.areaValue)
-      this.handleArea(value,'street')
+      this.handleArea(value, 'street')
     },
 
     // 初始化省市区街道
     initRegion(level, item, id = 0) {
-      let { province, city, area, street } = item
+      const { province, city, area, street } = item
       let nextId = null
       getRegion({ pid: id }).then(res => {
         if (level === 0) {
@@ -258,6 +256,9 @@ export default {
           this.initRegion(level, item, nextId)
         }
       })
+    },
+    handleStokType(e) {
+      this.$emit('setStokType', e)
     }
   }
 }
@@ -269,7 +270,9 @@ export default {
   padding: 20px;
   box-shadow: 0 0 8px 0 rgb(0 0 0 / 20%);
 }
-
+::v-deep .el-select{
+ width: 100%;
+}
 .custom {
   .item {
     ::v-deep .el-form-item__label:first-child {

+ 10 - 4
src/views/sales_control/sales_management/components/customer_sales_details.vue

@@ -10,13 +10,13 @@
           size="mini"
           @click="handleInform(2)"
         >通知发货</el-button>
-        <el-button v-if="details.status == 2 && isFront !== false" size="mini">撤销发货</el-button>
+        <el-button v-if="details.status == 2 && isFront !== false" size="mini" @click="handleSendRevoke(1)">撤销发货</el-button>
         <el-button v-if="isFront === false && details.status == 1" type="primary" size="mini" @click="handleSignIn(4)">
           签收
         </el-button>
       </template>
     </sales-table>
-    <LogisticsTabs />
+    <LogisticsTabs v-if="details.status == 2 " style="margin:20px;" />
     <sales-dialog
       :dialog-visible="dialogVisible"
       :customer-number="customerNumber"
@@ -30,7 +30,7 @@
 import SalesDialog from '@/components/SalesDialog/SalesDialog'
 import SalesHeader from '@/components/SalesHeader/SalesHeader'
 import SalesTable from '@/components/SalesTable/SalesTable'
-import { addFrontOrder, getFrontOrderDetail, sbumitFrontOrder, signIn } from '@/api/sales'
+import { addFrontOrder, getFrontOrderDetail, sbumitFrontOrder, signIn, setSendRevoke } from '@/api/sales'
 import { getcustomerFrontList } from '@/api/stock'
 import LogisticsTabs from '@/components/LogisticsTabs'
 export default {
@@ -187,10 +187,16 @@ export default {
           this.$successMsg('签收')
           this.handleBack()
         })
-      }).catch(err => {
+      }).catch(() => {
 
       })
     },
+    handleSendRevoke(status) {
+      setSendRevoke({ id: this.$refs.header.screenForm.id, status }).then(res => {
+        this.$successMsg('撤销发货')
+        this.handleBack()
+      })
+    },
     handleBack() {
       this.$emit('close')
     }

+ 28 - 8
src/views/sales_control/sales_management/components/customer_sales_form.vue

@@ -5,7 +5,7 @@
       style=" padding: 20px 20px 0 20px;"
       @back="handleBack"
     />
-    <sales-header ref="header" />
+    <sales-header ref="header" @setStokType="setStokType" />
     <sales-table
       :data-list="dataList"
       :column="column"
@@ -15,7 +15,7 @@
     >
       <template #bts>
         <div v-if="!detailsId">
-          <el-button v-if="dis" type="primary" size="mini" @click="dialogVisible = true">添加 </el-button>
+          <el-button v-if="dis" type="primary" size="mini" @click="handleAdd">添加 </el-button>
           <el-button v-if="dis" type="danger" size="mini" @click="delChange">删除 </el-button>
         </div>
       </template>
@@ -89,8 +89,13 @@ export default {
           width: '300'
         },
         {
-          prop: 'stockQty',
-          label: '库存数量',
+          prop: 'frontStockNum',
+          label: ' 前置仓结存数量',
+          width: '180'
+        },
+        {
+          prop: 'lockCustomerStockNum',
+          label: '自有仓结存数量',
           width: '180'
         },
         {
@@ -108,7 +113,8 @@ export default {
         }
       ],
       isFront: JSON.parse(localStorage.getItem('supply_user')).isFront,
-      salesId: ''
+      salesId: '',
+      stokType: null
     }
   },
   created() {
@@ -147,8 +153,13 @@ export default {
           width: '300'
         },
         {
-          prop: 'stockQty',
-          label: '库存数量',
+          prop: 'frontStockNum',
+          label: ' 前置仓结存数量',
+          width: '180'
+        },
+        {
+          prop: 'lockCustomerStockNum',
+          label: '自有仓结存数量',
           width: '180'
         },
         {
@@ -225,6 +236,9 @@ export default {
     resArr(arr1, arr2) {
       return arr1.filter(v => arr2.every(val => val.id != v.id))
     },
+    setStokType(e) {
+      this.stokType = e
+    },
     delChange() {
       if (this.dataList.length) {
         for (let i = 0; i < this.$refs.dia.$refs.pageRef.$refs.zjpage.$refs.tableEl.tableData.length; i++) {
@@ -249,12 +263,18 @@ export default {
       this.selection = data
     },
     handleInform(status = 2) {
-      console.log(33)
       sbumitFrontOrder({ id: this.salesId, status }).then(res => {
         this.$successMsg('通知发货')
         this.handleBack()
       })
     },
+    handleAdd() {
+      // if (!this.stokType) {
+      //   this.$errorMsg('请先选择发货仓库')
+      //   return
+      // }
+      this.dialogVisible = true
+    },
     handelSubmit(type, status = 1) {
       if (!this.dataList.length) {
         this.$errorMsg('请添加产品')

+ 1 - 1
src/views/sales_control/sales_management/components/return_sales_details.vue

@@ -8,7 +8,7 @@
         <el-button v-if="details.status == 2" disabled size="mini">撤销退货</el-button>
       </template>
     </sales-table>
-    <LogisticsTabs />
+    <LogisticsTabs v-if="details.status == 2 " style="margin:20px;" />
     <sales-dialog
       :dialog-visible="dialogVisible"
       :customer-number="customerNumber"

+ 8 - 7
src/views/sales_control/sales_management/components/return_sales_form.vue

@@ -33,10 +33,10 @@
       <template v-slot:custom="{ item: { row, $index } }">
         <div>{{ diffQty(row) }}</div>
       </template>
-      <template v-slot:custom="{ item: { row, $index } }">
+      <!-- <template v-slot:custom="{ item: { row, $index } }">
         <el-radio v-model="row.flag" label="1">增加</el-radio>
         <el-radio v-model="row.flag" label="-1">减少</el-radio>
-      </template>
+      </template> -->
       <template v-slot:operation="{ item: { row, $index } }">
         <el-popconfirm v-if="dis" style="margin-left: 10px" title="删除?" @onConfirm="handleDel(row, $index)">
           <el-button slot="reference" type="text" size="mini">删除</el-button>
@@ -115,11 +115,12 @@ export default {
           isInput: true
         },
 
-        // {
-        //   prop: 'volume',
-        //   label: '体积',
-        //   width: '180'
-        // },
+        {
+          prop: '',
+          label: '已退数量',
+          width: '180',
+          isCustom: true
+        },
         // {
         //   prop: 'totalVolume',
         //   label: '总体积',