Ver código fonte

添加快递发货

yangg 1 ano atrás
pai
commit
2dbee3aa61

+ 11 - 1
manager-admin/src/api/order.js

@@ -265,7 +265,7 @@ export function getKdShip(id,order) {
     data: order
   })
 }
-
+1
 /* 发货 /admin/erp/order/orderSend/{orderId} */
 export function outOrderSend(id,param) {
   return request({
@@ -304,3 +304,13 @@ export function saveOrderSend(orderSendId,param) {
     data:param
   })
 }
+
+/* /admin/erp/kdn/queryLogistics/{logisticsType}{logistics}/{userPhone} */
+export function queryLogistics(param) {
+  return request({
+    url: `/admin/erp/kdn/queryLogistics`,
+    method: 'post',
+    headers: { 'Content-Type': 'application/json' },
+    data:param
+  })
+}

+ 1 - 1
manager-admin/src/views/stock/goodsUnderstockAdd.vue

@@ -17,7 +17,7 @@
         </el-select>
       </el-form-item>
       <el-form-item prop="in_warehouse_id" label="调入仓库">
-        <span v-if="type === 'detail'">{{getWarehouse(GoodsTransferForm.out_warehouse_id)  }}</span>
+        <span v-if="type === 'detail'">{{getWarehouse(GoodsTransferForm.in_warehouse_id)  }}</span>
         <el-select v-else v-model="GoodsTransferForm.in_warehouse_id" :disabled="type === 'detail'">
           <el-option v-for="item in WarehouseList" :key="item.id" :label="item.name" :value="item.id" />
         </el-select>

+ 129 - 4
manager-admin/src/views/stock/orderOutbound.vue

@@ -255,7 +255,7 @@
             </el-col>
           </el-row>
           <el-divider></el-divider>
-          <el-row :gutter="20">
+          <el-row :gutter="20" v-if="send_type !== 'EXPRESS_DELIVERY'">
             <el-col :span="8" :offset="6">
               <el-form-item label="物流单号:" prop="tracking_number" v-if="deliveryForms.send_type !== 'SELF_PICKUP'">
                 <el-input v-model="kdnCode" :minlength="1" :maxlength="20" :disabled="true"
@@ -268,6 +268,28 @@
               </el-form-item>
             </el-col>
           </el-row>
+          <el-row :gutter="20" v-else>
+            <el-col :span="8">
+              <el-form-item label="快递公司:" prop="logistics_type">
+                <el-select v-model="deliveryForms.logistics_type" clearable :disabled="disabledType">
+                  <el-option v-for="(item, index) in expressList" :key="index" :label="item.name"
+                    :value="item.code"></el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="物流单号:" prop="logistics_code">
+                <el-input v-model="deliveryForms.logistics_code" :minlength="1" :maxlength="20" :disabled="disabledType"
+                  placeholder="请输入物流单号"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="寄件人手机号:" prop="logistics_phone">
+                <el-input v-model="deliveryForms.logistics_phone" :minlength="1" :maxlength="20"
+                  :disabled="disabledType" placeholder="请输入寄件人手机号后四位"></el-input>
+              </el-form-item>
+            </el-col>
+          </el-row>
         </el-form>
       </div>
       <div v-if="
@@ -414,6 +436,14 @@
           </el-steps>
         </div>
       </div>
+      <div v-if="send_type == 'EXPRESS_DELIVERY' && logistics.length!==0">
+        <h3>快递状态:</h3>
+        <el-timeline :reverse="reverse">
+          <el-timeline-item v-for="(activity, index) in logistics" :key="index" :timestamp="activity.AcceptTime">
+            {{ activity.AcceptStation }}
+          </el-timeline-item>
+        </el-timeline>
+      </div>
       <el-dialog title="扫码出库" :visible.sync="scanDialogVisible" width="30%" :close-on-click-modal="false">
         <el-form ref="scanGoodsForm" :model="scanGoodsForm" inline>
           <el-form-item label="sku" prop="bar_code">
@@ -500,13 +530,19 @@
             ></el-col>
           </el-row>
       </el-form> -->
-      <div class="footer">
+      <div class="footer" v-if="send_type !== 'EXPRESS_DELIVERY'">
         <!-- <el-button type="primary"> 获取全部单号 </el-button> -->
         <el-button type="primary" @click="saveErpWarehouseOut" :disabled="outType == 'check'"
           v-if="kdnCode !== '' || deliveryForms.send_type == 'SELF_PICKUP'">发货
         </el-button>
         <el-button @click="roBack2()">保存</el-button>
       </div>
+      <div class="footer" v-else>
+        <!-- <el-button type="primary"> 获取全部单号 </el-button> -->
+        <el-button type="primary" @click="saveDelivery" :disabled="outType == 'check'">发货
+        </el-button>
+        <el-button @click="roBack2()">保存</el-button>
+      </div>
     </div>
   </div>
 </template>
@@ -517,6 +553,7 @@ import * as API_Setting from "@/api/setting";
 import * as API_Auth from "@/api/auth";
 import { RegExp } from "~/ui-utils";
 import * as API_GoodsExchange from "@/api/goodsExchange";
+import * as API_Express from '@/api/express'
 import { Foundation } from "~/ui-utils";
 import {
   provinceAndCityData,
@@ -531,6 +568,7 @@ export default {
   name: "orderOutbound",
   data() {
     return {
+      reverse: true,
       btnType: false,
       disabledType: false,
       // 列表loading状态
@@ -554,6 +592,9 @@ export default {
       adminList: [],
       kdnCode: "",
       deliveryForms: {
+        logistics_type: "",
+        logistics_code: "",
+        logistics_phone: "",
         send_type: '',
         selfPickupNum: '',
         remark: "",
@@ -586,6 +627,15 @@ export default {
         appointment_time: [
           { required: true, message: "请选择上门时间", trigger: "blur" },
         ],
+        logistics_type: [
+          { required: true, message: "请选择快递公司", trigger: "change" },
+        ],
+        logistics_code: [
+          { required: true, message: "请选填写快递单号", trigger: "blur" },
+        ],
+        logistics_phone: [
+          { required: true, message: "请选输入寄件人手机号后四位", trigger: "blur" },
+        ],
         sender: {
           name: [
             { required: true, message: "请输入发货人姓名", trigger: "blur" },
@@ -655,6 +705,9 @@ export default {
         type: "",
       },
       scanGoodsForm: {},
+      send_type: '',
+      expressList: [],//物流公司列表
+      logistics: [],
     };
   },
   watch: {
@@ -704,8 +757,10 @@ export default {
   },
   mounted() {
     /**/ this.id = this.$route.params.id;
+    this.send_type = this.$route.params.send_type
     this.GET_WarehouseOutDetail();
     this.GET_AdministratorList();
+    this.GET_ExpressList()
     this.outType = this.$route.params.type;
     /* this.generateMap(regionData); */
   },
@@ -889,6 +944,7 @@ export default {
         this.adminList = response.data;
       });
     },
+    //发货
     saveErpWarehouseOut() {
       this.$refs["ruleForm"].validate((valid) => {
         if (valid) {
@@ -940,6 +996,60 @@ export default {
         }
       });
     },
+    //快递发货
+    saveDelivery() {
+      this.$refs["ruleForm"].validate((valid) => {
+        if (valid) {
+          this.btnType = true;
+          const params = this.MixinClone(this.deliveryForms);
+          //发货详细地址
+          params.receiver.province_city_area_address =
+            params.receiver.province_name +
+            params.receiver.city_name +
+            params.receiver.area_name +
+            params.receiver.address;
+          //收货详细地址
+          params.sender.province_city_area_address =
+            params.sender.province_name +
+            params.sender.city_name +
+            params.sender.area_name +
+            params.sender.address;
+          //商品信息
+          const item = {};
+          this.product_list.map((el) => {
+            item.goods_name = el.goods_vo.name;
+            /* item.goods_price = el.product_vo.price; */
+            item.quantity = el.num;
+            item.unit = el.product_vo.unit;
+            return params.goods_list.push(item);
+          });
+          params.goods_num = this.product_list.reduce(
+            (sum, e) => sum + Number(e.orderNum || 0),
+            0
+          );
+          params.total_weight = Number(params.total_weight);
+          params.total_volume = Number(params.total_volume);
+          params.declared_value = Number(params.declared_value);
+          //地址
+          params.send_address = this.send_address;
+          params.receive_address = this.receive_address;
+          params.order_code = this.id;
+          if (this.goodsExchangeAddForm.product_list.length == 0) {
+            return this.$message.error("请录入出库商品")
+          }
+          params.order_item_vos = this.goodsExchangeAddForm.product_list
+          API_order.outOrderSend(this.id, params).then((res) => {
+            this.$router.push({ name: "warehouseOut" });
+          });
+          API_order.queryLogistics({shipper_code:params.logistics_type,logistic_code: params.logistics_code, customer_name: params.logistics_phone }).then(res => {
+          })
+        } else {
+          console.log(this.deliveryForms);
+          this.$message.error("表单填写有误,请检查")
+          return false;
+        }
+      });
+    },
     // 选择批次
     async handleSelectWarehouseEntryBatch(items) {
       const goodsData = await this.$EnwarehouseEntryBatch({
@@ -1097,6 +1207,14 @@ export default {
         this.deliveryForms.warehouse_id = res.warehouse_id
         this.deliveryForms.declared_value = Number(res.order_vo.real_price);
         this.goodsExchangeAddForm.product_list = res.order_item_vos
+        if (this.send_type == 'EXPRESS_DELIVERY') {
+          this.deliveryForms.logistics_type = res.logistics_type
+          this.deliveryForms.logistics_code = res.logistics_code
+          this.deliveryForms.logistics_phone = res.logistics_phone
+        }
+        if (this.send_type == 'EXPRESS_DELIVERY' && res.logistics.length!==0) {
+          this.logistics = res.logistics
+        }
         /* if (res.send_address && res.receiver_address) {
           this.selectedOptions = res.send_address.split(",");
           this.receiverOptions = res.receive_address.split(",");
@@ -1120,6 +1238,12 @@ export default {
         }
       );
     },
+    /** 获取物流公司列表 */
+    GET_ExpressList() {
+      API_Express.getExpressList(this.params).then(response => {
+        this.expressList = response.data
+      })
+    }
   },
 };
 </script>
@@ -1158,7 +1282,7 @@ export default {
 .bg-in {
   background-color: #fff;
   margin: 10px;
-  padding:20px 55px 55px;
+  padding: 20px 55px 55px;
 }
 
 .flex {
@@ -1232,7 +1356,8 @@ export default {
   top: 50%;
   left: 50%;
 }
-/deep/.el-divider--horizontal{
+
+/deep/.el-divider--horizontal {
   margin: 15px 0;
 }
 </style>

+ 2 - 2
manager-admin/src/views/stock/warehouseOut.vue

@@ -385,7 +385,7 @@ export default {
     addWarehouse(row) {
       this.$router.push({
         name: "orderOutboundAdd",
-        params: { id: row.id },
+        params: { id: row.id,send_type:row.order_vo.send_type},
       });
       // this.$router.params{ name: 'orderOutboundDetail', params: { id: scope.row.id } }
     },
@@ -393,7 +393,7 @@ export default {
     handleAuditDialog(row) {
       this.$router.push({
         name: "orderOutboundAdd",
-        params: { id: row.id, type: "check" },
+        params: { id: row.id, type: "check",send_type:row.order_vo.send_type },
       });
     },
     /** 审核提交 */

+ 12 - 0
node_modules/.yarn-integrity

@@ -0,0 +1,12 @@
+{
+  "systemParams": "win32-x64-115",
+  "modulesFolders": [
+    "node_modules"
+  ],
+  "flags": [],
+  "linkedModules": [],
+  "topLevelPatterns": [],
+  "lockfileEntries": {},
+  "files": [],
+  "artifacts": {}
+}

+ 3 - 0
package.json

@@ -0,0 +1,3 @@
+{
+  "dependencies": {}
+}

+ 4 - 0
yarn.lock

@@ -0,0 +1,4 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+