소스 검색

政策單直調發貨

howie 3 년 전
부모
커밋
b66d922960
3개의 변경된 파일247개의 추가작업 그리고 235개의 파일을 삭제
  1. 78 70
      src/api/supply/retail.js
  2. 152 151
      src/views/supply/policy/components/retail_detail.vue
  3. 17 14
      src/views/supply/policy/components/retail_form.vue

+ 78 - 70
src/api/supply/retail.js

@@ -1,154 +1,162 @@
-import request from '@/utils/request'
+import request from "@/utils/request";
 
 // 获取列表
 export function getList(params) {
   return request({
-    url: '/retail/list',
-    method: 'get',
-    params
-  })
+    url: "/retail/list",
+    method: "get",
+    params,
+  });
 }
 
 // 获取详情
 export function getDetail(params) {
   return request({
-    url: '/retail/detail',
-    method: 'get',
-    params
-  })
+    url: "/retail/detail",
+    method: "get",
+    params,
+  });
+}
+// 获取仓位列表
+export function getPositionList(params) {
+  return request({
+    url: "/stock/list",
+    method: "get",
+    params,
+  });
 }
 
 // 关闭
 export function closeData(params) {
   return request({
-    url: '/retail/close',
-    method: 'post',
-    params
-  })
+    url: "/retail/close",
+    method: "post",
+    params,
+  });
 }
 
 // 弃审
 export function abandonData(params) {
   return request({
-    url: '/retail/abandon',
-    method: 'post',
-    params
-  })
+    url: "/retail/abandon",
+    method: "post",
+    params,
+  });
 }
 
 // 审批
 export function examineData(params) {
   return request({
-    url: '/retail/examine',
-    method: 'post',
-    params
-  })
+    url: "/retail/examine",
+    method: "post",
+    params,
+  });
 }
 
 // 提交审核
 export function submitData(params) {
   return request({
-    url: '/retail/submit',
-    method: 'post',
-    params
-  })
+    url: "/retail/submit",
+    method: "post",
+    params,
+  });
 }
 
 // 新增
 export function addData(params) {
   return request({
-    url: '/retail/add',
-    method: 'post',
-    data: params
-  })
+    url: "/retail/add",
+    method: "post",
+    data: params,
+  });
 }
 
 // 编辑
 export function editData(params) {
   return request({
-    url: '/retail/update',
-    method: 'post',
-    data: params
-  })
+    url: "/retail/update",
+    method: "post",
+    data: params,
+  });
 }
 
 // 退订
 export function returnData(params) {
   return request({
-    url: '/retail/tuiding',
-    method: 'post',
-    data: params
-  })
+    url: "/retail/tuiding",
+    method: "post",
+    data: params,
+  });
 }
 
 // 获取销售类型列表
 export function getSalesTypeList(params) {
   return request({
-    url: '/sale/type/list',
-    method: 'get',
-    params
-  })
+    url: "/sale/type/list",
+    method: "get",
+    params,
+  });
 }
 
 // 获取产品列表
 export function getGoodsList(params) {
   return request({
-    url: '/retail/product/list',
-    method: 'get',
-    params
-  })
+    url: "/retail/product/list",
+    method: "get",
+    params,
+  });
 }
 
 // 获取钱包列表
 export function getWalletList(params) {
   return request({
-    url: '/wallet/customer/list',
-    method: 'get',
-    params
-  })
+    url: "/wallet/customer/list",
+    method: "get",
+    params,
+  });
 }
 
 // 获取仓库列表
 export function getWarehouseList(params) {
   return request({
-    url: '/stock/listStock',
-    method: 'get',
-    params
-  })
+    url: "/stock/listStock",
+    method: "get",
+    params,
+  });
 }
 
 // 检查库存
 export function checkStock(params) {
   return request({
-    url: '/stock/manager/stockStatus',
-    method: 'get',
-    params
-  })
+    url: "/stock/manager/stockStatus",
+    method: "get",
+    params,
+  });
 }
 
 // 直调发货
 export function adjustDeliver(params) {
   return request({
-    url: '/retail/direct/deliver',
-    method: 'post',
-    data: params
-  })
+    url: "/retail/direct/deliver",
+    method: "post",
+    data: params,
+  });
 }
 
 // 直调完成
 export function finishData(params) {
   return request({
-    url: '/retail/transfer/over',
-    method: 'post',
-    params
-  })
+    url: "/retail/transfer/over",
+    method: "post",
+    params,
+  });
 }
 
 // 提前开票
 export function directOrder(params) {
   return request({
-    url: '/requisition/add',
-    method: 'post',
-    data: params
-  })
-}
+    url: "/requisition/add",
+    method: "post",
+    data: params,
+  });
+}

+ 152 - 151
src/views/supply/policy/components/retail_detail.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="detail-container">
-    <el-page-header @back="goBack" content="详情"></el-page-header>
+    <el-page-header content="详情" @back="goBack" />
     <div class="main-title">
       <div class="title">提货进度</div>
     </div>
@@ -11,7 +11,7 @@
         :percentage="
           detailData.thjd ? ((detailData.thjd * 1000) / 10).toFixed(2) : 0
         "
-      ></el-progress>
+      />
     </div>
 
     <div class="main-title">
@@ -83,48 +83,42 @@
         show-summary
         :summary-method="$getSummaries"
       >
-        <el-table-column
-          align="center"
-          label="序号"
-          type="index"
-          width="50"
-        ></el-table-column>
+        <el-table-column align="center" label="序号" type="index" width="50" />
         <el-table-column
           align="center"
           label="销售类型"
           prop="saleTypeName"
           min-width="100"
           show-overflow-tooltip
-        ></el-table-column>
+        />
         <el-table-column
           align="center"
           label="产品编码"
           prop="materialCode"
           min-width="160"
           show-overflow-tooltip
-        ></el-table-column>
+        />
         <el-table-column
           align="center"
           label="产品名称"
           prop="materialName"
           min-width="160"
           show-overflow-tooltip
-        ></el-table-column>
+        />
         <el-table-column
           align="center"
           label="规格型号"
           prop="specification"
           min-width="160"
           show-overflow-tooltip
-        ></el-table-column>
+        />
         <el-table-column
           align="center"
           label="单位"
           prop="unit"
           min-width="100"
           show-overflow-tooltip
-        >
-        </el-table-column>
+        />
         <el-table-column
           align="center"
           label="单价"
@@ -142,7 +136,7 @@
           prop="qty"
           min-width="100"
           show-overflow-tooltip
-        ></el-table-column>
+        />
         <el-table-column
           align="center"
           label="订单金额"
@@ -236,7 +230,7 @@
           prop="directTransferQty"
           min-width="100"
           show-overflow-tooltip
-        ></el-table-column>
+        />
 
         <!-- <el-table-column
           align="center"
@@ -251,37 +245,36 @@
           prop="oldQty"
           min-width="100"
           show-overflow-tooltip
-        ></el-table-column>
+        />
         <el-table-column
           align="center"
           label="备注"
           prop="remark"
           min-width="160"
           show-overflow-tooltip
-        ></el-table-column>
+        />
         <el-table-column
           align="center"
           label="税率"
           prop="tax"
           min-width="100"
           show-overflow-tooltip
-        ></el-table-column>
+        />
       </el-table>
     </div>
     <div class="page-footer">
       <div class="footer" :class="classObj">
         <el-button
           :type="status ? 'info' : 'primary'"
-          @click="openDeliverDialog"
           :disabled="detailData.examineStatus !== 'OK' || status"
-          >直调发货</el-button
-        >
+          @click="openDeliverDialog"
+        >直调发货</el-button>
         <el-button
+          v-if="isCustomer"
           :type="status ? 'info' : 'primary'"
-          @click="handleFinish"
           :disabled="detailData.examineStatus !== 'OK' || status"
-          >直调完成</el-button
-        >
+          @click="handleFinish"
+        >直调完成</el-button>
         <!-- <el-button @click="goBack">关 闭</el-button> -->
       </div>
     </div>
@@ -334,28 +327,27 @@
                 value-format="yyyy-MM-dd"
                 style="width: 100%"
                 placeholder="选择日期"
-              >
-              </el-date-picker>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="8" :sm="8" :lg="8">
-            <el-form-item label="发货仓库" prop="warehouse">
-              <el-select
-                v-model="deliverForm.warehouse"
-                placeholder="请选择发货仓库"
-                style="width: 100%"
-                filterable
-                @change="changeWarehouse"
-              >
-                <el-option
-                  v-for="item in warehouseList"
-                  :key="item.id"
-                  :label="item.name"
-                  :value="item.id"
-                ></el-option>
-              </el-select>
+              />
             </el-form-item>
           </el-col>
+<!--          <el-col :xs="8" :sm="8" :lg="8">-->
+<!--            <el-form-item label="发货仓库" prop="warehouse">-->
+<!--              <el-select-->
+<!--                v-model="deliverForm.warehouse"-->
+<!--                placeholder="请选择发货仓库"-->
+<!--                style="width: 100%"-->
+<!--                filterable-->
+<!--                @change="changeWarehouse"-->
+<!--              >-->
+<!--                <el-option-->
+<!--                  v-for="item in warehouseList"-->
+<!--                  :key="item.id"-->
+<!--                  :label="item.name"-->
+<!--                  :value="item.id"-->
+<!--                />-->
+<!--              </el-select>-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
           <el-col :xs="8" :sm="8" :lg="8">
             <el-form-item label="选择仓位" prop="position">
               <el-select
@@ -369,7 +361,7 @@
                   :key="item.id"
                   :label="item.name"
                   :value="item.id"
-                ></el-option>
+                />
               </el-select>
             </el-form-item>
           </el-col>
@@ -393,56 +385,56 @@
             label="序号"
             type="index"
             width="50"
-          ></el-table-column>
+          />
           <el-table-column
             align="center"
             label="销售类型"
             prop="saleTypeName"
             min-width="100"
             show-overflow-tooltip
-          ></el-table-column>
+          />
           <el-table-column
             align="center"
             label="产品编码"
             prop="materialCode"
             min-width="160"
             show-overflow-tooltip
-          ></el-table-column>
+          />
           <el-table-column
             align="center"
             label="产品名称"
             prop="materialName"
             min-width="160"
             show-overflow-tooltip
-          ></el-table-column>
+          />
           <el-table-column
             align="center"
             label="规格型号"
             prop="specification"
             min-width="160"
             show-overflow-tooltip
-          ></el-table-column>
+          />
           <el-table-column
             align="center"
             label="单位"
             prop="unit"
             min-width="100"
             show-overflow-tooltip
-          ></el-table-column>
+          />
           <el-table-column
             align="center"
             label="订单数量"
             prop="refundableQty"
             min-width="100"
             show-overflow-tooltip
-          ></el-table-column>
+          />
           <el-table-column
             align="center"
             label="发货数量"
             prop="hasSendQty"
             min-width="100"
             show-overflow-tooltip
-          ></el-table-column>
+          />
           <el-table-column
             align="center"
             label="直调数量"
@@ -456,7 +448,7 @@
                 size="small"
                 type="number"
                 :disabled="!scope.row.isDirectTransfer"
-              ></el-input>
+              />
             </template>
           </el-table-column>
           <el-table-column
@@ -499,7 +491,7 @@
             prop="remark"
             min-width="160"
             show-overflow-tooltip
-          ></el-table-column>
+          />
         </el-table>
       </div>
       <span slot="footer" class="dialog-footer">
@@ -511,94 +503,94 @@
 </template>
 
 <script>
-import { getDetail } from "@/api/supply/policy";
-import {
-  getWarehouseList,
-  adjustDeliver,
-  finishData,
-} from "@/api/supply/retail";
+import { getDetail } from '@/api/supply/policy'
+import { adjustDeliver, finishData, getPositionList, getWarehouseList } from '@/api/supply/retail'
+import { mapState } from 'vuex'
+
 export default {
-  name: "RetailDetail",
-  componentName: "RetailDetail",
-  props: ["listItem"],
+  name: 'RetailDetail',
+  componentName: 'RetailDetail',
   filters: {
     statusFilter(val) {
       const statusList = [
-        { label: "已保存", value: "SAVE" },
-        { label: "待审核", value: "WAIT" },
-        { label: "审核通过", value: "OK" },
-        { label: "审核驳回", value: "FAIL" },
-      ];
-      let obj = statusList.find((o) => o.value == val);
-      return obj ? obj.label : "";
-    },
+        { label: '已保存', value: 'SAVE' },
+        { label: '待审核', value: 'WAIT' },
+        { label: '审核通过', value: 'OK' },
+        { label: '审核驳回', value: 'FAIL' }
+      ]
+      const obj = statusList.find((o) => o.value == val)
+      return obj ? obj.label : ''
+    }
   },
+  props: ['listItem'],
   data() {
     return {
       detailData: {},
 
       isShowDeliverDialog: false,
       deliverForm: {
-        date: "",
-        warehouse: "",
-        position: "",
+        date: '',
+        warehouse: '',
+        position: ''
       },
       deliverFormRules: {
         date: [
-          { required: true, message: "请选择发货日期", trigger: "change" },
-        ],
-        warehouse: [
-          { required: true, message: "请选择发货仓库", trigger: "change" },
+          { required: true, message: '请选择发货日期', trigger: 'change' }
         ],
         position: [
-          { required: true, message: "请选择仓位", trigger: "change" },
+          { required: true, message: '请选择虚拟仓位', trigger: 'change' }
         ],
       },
       warehouseList: [],
       positionList: [],
 
       goodsList: [],
-      status: false,
-    };
+      status: false
+    }
   },
 
   computed: {
     sidebar() {
-      return this.$store.state.app.sidebar;
+      return this.$store.state.app.sidebar
     },
     classObj() {
       return {
         hideSidebar: !this.sidebar.opened,
-        openSidebar: this.sidebar.opened,
-      };
+        openSidebar: this.sidebar.opened
+      }
     },
     isExamine() {
       return (
-        this.detailData.examineStatus === "OK" ||
-        this.detailData.examineStatus === "FAIL"
-      );
+        this.detailData.examineStatus === 'OK' ||
+        this.detailData.examineStatus === 'FAIL'
+      )
     },
     progress() {
-      if (this.detailData.totalQty == 0) return 0;
-      return (this.detailData.takeQty * 100) / (this.detailData.totalQty * 100);
+      if (this.detailData.totalQty == 0) return 0
+      return (this.detailData.takeQty * 100) / (this.detailData.totalQty * 100)
     },
+    ...mapState({
+      isCustomer: ({ user }) => {
+        return !(user.customerName || user.customerNumber)
+      }
+    })
   },
 
   created() {
-    this.getDetail();
+    this.getDetail()
   },
 
   methods: {
     // 返回列表
     goBack() {
-      this.$emit("backListFormDetail");
+      this.$emit('backListFormDetail')
     },
     // 是否直调完成
     directTransferStatus(val) {
       this.status = val.retailOrderItemList.some((k) => {
-        return k.directTransferStatus == true;
-      });
-      console.log(this.status, "4554545");
+        return k.directTransferStatus == true
+      })
+      console.log(this.status, '4554545')
     },
     // 获取详情
     getDetail() {
@@ -606,71 +598,80 @@ export default {
         if (res.data.retailOrderItemList) {
           res.data.retailOrderItemList.forEach((item) => {
             item.sums1 = [
-              "directTransferQty",
-              "qty",
-              "refundableQty",
-              "oldQty",
-            ];
+              'directTransferQty',
+              'qty',
+              'refundableQty',
+              'oldQty'
+            ]
             item.sums2 = [
-              "totalAmount",
-              "payAmount",
-              "price",
-              "payRebateAmount",
-              "discAmount",
-              "totalDiscAmount",
-            ];
-          });
+              'totalAmount',
+              'payAmount',
+              'price',
+              'payRebateAmount',
+              'discAmount',
+              'totalDiscAmount'
+            ]
+          })
         }
-        this.detailData = res.data;
-        this.directTransferStatus(res.data);
-      });
+        this.detailData = res.data
+        this.directTransferStatus(res.data)
+      })
     },
     // 直调完成
     handleFinish() {
-      this.$confirm("此操作将直调完成, 是否继续?", "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
+      this.$confirm('此操作将直调完成, 是否继续?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
       })
         .then(() => {
           finishData({
-            id: this.listItem.id,
+            id: this.listItem.id
           }).then((res) => {
-            this.$successMsg();
-            this.getDetail();
-          });
+            this.$successMsg()
+            this.getDetail()
+          })
         })
-        .catch(() => {});
+        .catch(() => {})
     },
 
     // 获取仓库列表
     getWarehouseList() {
       getWarehouseList({
         pageNum: 1,
-        pageSize: -1,
+        pageSize: -1
       }).then((res) => {
-        this.warehouseList = res.data.records;
-      });
+        this.warehouseList = res.data.records
+      })
     },
     // 更改仓库
     changeWarehouse() {
-      this.deliverForm.position = "";
-      let obj = this.warehouseList.find(
+      this.deliverForm.position = ''
+      const obj = this.warehouseList.find(
         (o) => o.id == this.deliverForm.warehouse
-      );
-      this.positionList = obj.kingDeeStocks;
+      )
+      this.positionList = obj.kingDeeStocks
     },
 
     // 打开 直调发货
     openDeliverDialog() {
-      this.isShowDeliverDialog = true;
-      this.goodsList = this.detailData.retailOrderItemList;
-      this.getWarehouseList();
+      this.isShowDeliverDialog = true
+      this.goodsList = this.detailData.retailOrderItemList
+      this.getPositionList()
+    },
+    // 获取虚拟仓位列表
+    getPositionList() {
+      getPositionList({
+        pageNum: 1,
+        pageSize: -1,
+        stockType: 1
+      }).then(res => {
+        this.positionList = res.data.records;
+      })
     },
-
     // 关闭 直调发货
     closeDeliverDialog() {
-      this.isShowDeliverDialog = false;
+      this.isShowDeliverDialog = false
     },
     // 提交 直调发货
     submitDeliverForm() {
@@ -681,33 +682,33 @@ export default {
               !this.goodsList[i].adjustNum &&
               this.goodsList[i].isDirectTransfer
             ) {
-              this.$errorMsg("请输入直调数量");
-              return;
+              this.$errorMsg('请输入直调数量')
+              return
             }
           }
-          let goodsList = this.goodsList.map((item) => {
+          const goodsList = this.goodsList.map((item) => {
             return {
               itemId: item.id,
-              qty: item.adjustNum || 0,
-            };
-          });
-          let params = {
+              qty: item.adjustNum || 0
+            }
+          })
+          const params = {
             orderNo: this.listItem.id,
-            orderDate: this.deliverForm.date + " 00:00:00",
+            orderDate: this.deliverForm.date + ' 00:00:00',
             correspondId: this.deliverForm.warehouse,
             stockId: this.deliverForm.position,
-            directItems: goodsList,
-          };
+            directItems: goodsList
+          }
           adjustDeliver(params).then((res) => {
-            this.$successMsg();
-            this.isShowDeliverDialog = false;
-            this.getDetail();
-          });
+            this.$successMsg()
+            this.isShowDeliverDialog = false
+            this.getDetail()
+          })
         }
-      });
-    },
-  },
-};
+      })
+    }
+  }
+}
 </script>
 
 <style scoped lang="scss">

+ 17 - 14
src/views/supply/policy/components/retail_form.vue

@@ -140,7 +140,11 @@
           prop="materialNumber"
           min-width="100"
           show-overflow-tooltip
-        ></el-table-column>
+        >
+          <template slot-scope="scope">
+            {{scope.row.materialNumber?scope.row.materialNumber:scope.row.materialCode}}
+          </template>
+        </el-table-column>
         <el-table-column
           align="center"
           label="产品名称"
@@ -694,25 +698,24 @@
 
 <script>
 import {
-  getDetail,
   addData,
+  checkStock,
   editData,
-  getSalesTypeList,
+  getConditionList,
+  getDetail,
   getGoodsList,
+  getMaterialTypeList,
+  getPolicyConditionList,
+  getpolicyList,
+  getpolicyTypeList,
+  getSalesTypeList,
+  getUserList,
   getWalletList,
   getWarehouseList,
   policyList,
-  checkStock,
-  typeList,
-  getUserList,
-  getpolicyList,
-  getConditionList,
-  getConditionDetail,
-  getpolicyTypeList,
-  getMaterialTypeList,
-  getPolicyConditionList,
-} from "@/api/supply/policy";
-import { getDictList } from "@/api/common";
+  typeList
+} from '@/api/supply/policy'
+import { getDictList } from '@/api/common'
 
 export default {
   name: "RetailForm",