Browse Source

添加订单发货功能

zhh 6 years ago
parent
commit
61398ae9bc
4 changed files with 169 additions and 22 deletions
  1. 8 0
      src/api/order.js
  2. 33 21
      src/router/index.js
  3. 95 0
      src/views/oms/order/deliverOrderList.vue
  4. 33 1
      src/views/oms/order/index.vue

+ 8 - 0
src/api/order.js

@@ -22,3 +22,11 @@ export function deleteOrder(params) {
     params:params
   })
 }
+
+export function deliveryOrder(data) {
+  return request({
+    url:'/order/update/delivery',
+    method:'post',
+    data:data
+  });
+}

+ 33 - 21
src/router/index.js

@@ -146,27 +146,39 @@ export const constantRouterMap = [
     redirect: '/oms/order',
     name: 'oms',
     meta: {title: '订单', icon: 'order'},
-    children: [{
-      path: 'order',
-      name: 'order',
-      component: () => import('@/views/oms/order/index'),
-      meta: {title: '订单列表', icon: 'product-list'}
-    }, {
-      path: 'orderSetting',
-      name: 'orderSetting',
-      component: () => import('@/views/oms/order/setting'),
-      meta: {title: '订单设置', icon: 'order-setting'}
-    }, {
-      path: 'returnApply',
-      name: 'returnApply',
-      component: () => import('@/views/oms/apply/index'),
-      meta: {title: '退货申请处理', icon: 'order-return'}
-    }, {
-      path: 'returnReason',
-      name: 'returnReason',
-      component: () => import('@/views/oms/apply/reason'),
-      meta: {title: '退货原因设置', icon: 'order-return-reason'}
-    }]
+    children: [
+      {
+        path: 'order',
+        name: 'order',
+        component: () => import('@/views/oms/order/index'),
+        meta: {title: '订单列表', icon: 'product-list'}
+      },
+      {
+        path: 'deliverOrderList',
+        name: 'deliverOrderList',
+        component: () => import('@/views/oms/order/deliverOrderList'),
+        meta: {title: '发货列表'},
+        hidden:true
+      },
+      {
+        path: 'orderSetting',
+        name: 'orderSetting',
+        component: () => import('@/views/oms/order/setting'),
+        meta: {title: '订单设置', icon: 'order-setting'}
+      },
+      {
+        path: 'returnApply',
+        name: 'returnApply',
+        component: () => import('@/views/oms/apply/index'),
+        meta: {title: '退货申请处理', icon: 'order-return'}
+      },
+      {
+        path: 'returnReason',
+        name: 'returnReason',
+        component: () => import('@/views/oms/apply/reason'),
+        meta: {title: '退货原因设置', icon: 'order-return-reason'}
+      }
+    ]
   },
   {path: '*', redirect: '/404', hidden: true}
 ]

+ 95 - 0
src/views/oms/order/deliverOrderList.vue

@@ -0,0 +1,95 @@
+<template> 
+  <div class="app-container">
+    <el-card class="operate-container" shadow="never">
+      <i class="el-icon-tickets"></i>
+      <span>发货列表</span>
+    </el-card>
+    <div class="table-container">
+      <el-table ref="deliverOrderTable"
+                style="width: 100%;"
+                :data="list" border>
+        <el-table-column label="订单编号" width="180" align="center">
+          <template slot-scope="scope">{{scope.row.orderSn}}</template>
+        </el-table-column>
+        <el-table-column label="收货人" width="180" align="center">
+          <template slot-scope="scope">{{scope.row.receiverName}}</template>
+        </el-table-column>
+        <el-table-column label="手机号码" width="160" align="center">
+          <template slot-scope="scope">{{scope.row.receiverPhone}}</template>
+        </el-table-column>
+        <el-table-column label="邮政编码" width="160" align="center">
+          <template slot-scope="scope">{{scope.row.receiverPostCode}}</template>
+        </el-table-column>
+        <el-table-column label="收货地址" align="center">
+          <template slot-scope="scope">{{scope.row.address}}</template>
+        </el-table-column>
+        <el-table-column label="配送方式" width="160" align="center">
+          <template slot-scope="scope">
+            <el-select placeholder="请选择物流公司"
+                       v-model="scope.row.deliveryCompany"
+                       size="small">
+              <el-option v-for="item in companyOptions"
+                         :key="item"
+                         :label="item"
+                         :value="item">
+              </el-option>
+            </el-select>
+          </template>
+        </el-table-column>
+        <el-table-column label="物流单号" width="180" align="center">
+          <template slot-scope="scope">
+            <el-input size="small" v-model="scope.row.deliverySn"></el-input>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div style="margin-top: 15px;text-align: center">
+        <el-button @click="cancel">取消</el-button>
+        <el-button @click="confirm" type="primary">确定</el-button>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+  import {deliveryOrder} from '@/api/order'
+  const defaultLogisticsCompanies=["顺丰快递","圆通快递","中通快递","韵达快递"];
+  export default {
+    data() {
+      return {
+        name: 'deliverOrderList',
+        list:[],
+        companyOptions:defaultLogisticsCompanies
+      }
+    },
+    created(){
+      this.list= this.$route.query.list;
+    },
+    methods:{
+      cancel(){
+        this.$router.back();
+      },
+      confirm(){
+        this.$confirm('是否要进行发货操作?', '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning'
+        }).then(() => {
+          deliveryOrder(this.list).then(response=>{
+            this.$router.back();
+            this.$message({
+              type: 'success',
+              message: '发货成功!'
+            });
+          });
+        }).catch(() => {
+          this.$message({
+            type: 'info',
+            message: '已取消发货'
+          });
+        });
+      }
+    }
+  }
+</script>
+<style></style>
+
+

+ 33 - 1
src/views/oms/order/index.vue

@@ -319,7 +319,10 @@
         this.closeOrder.dialogVisible=true;
         this.closeOrder.orderIds=[row.id];
       },
-      handleDeliveryOrder(index, row){},
+      handleDeliveryOrder(index, row){
+        let listItem = this.covertOrder(row);
+        this.$router.push({path:'/oms/deliverOrderList',query:{list:[listItem]}})
+      },
       handleViewLogistics(index, row){},
       handleDeleteOrder(index, row){
         let ids=[];
@@ -337,6 +340,21 @@
         }
         if(this.operateType===1){
           //批量发货
+          let list=[];
+          for(let i=0;i<this.multipleSelection.length;i++){
+            if(this.multipleSelection[i].status===1){
+              list.push(this.covertOrder(this.multipleSelection[i]));
+            }
+          }
+          if(list.length===0){
+            this.$message({
+              message: '选中订单中没有可以发货的订单',
+              type: 'warning',
+              duration: 1000
+            });
+            return;
+          }
+          this.$router.push({path:'/oms/deliverOrderList',query:{list:list}})
         }else if(this.operateType===2){
           //关闭订单
           this.closeOrder.orderIds=[];
@@ -405,6 +423,20 @@
             this.getList();
           });
         })
+      },
+      covertOrder(order){
+        let address=order.receiverProvince+order.receiverCity+order.receiverRegion+order.receiverDetailAddress;
+        let listItem={
+          orderId:order.id,
+          orderSn:order.orderSn,
+          receiverName:order.receiverName,
+          receiverPhone:order.receiverPhone,
+          receiverPostCode:order.receiverPostCode,
+          address:address,
+          deliveryCompany:null,
+          deliverySn:null
+        };
+        return listItem;
       }
     }
   }