Browse Source

add 再来一单

Funny 3 years atrás
parent
commit
f4f4d770e5

+ 1 - 1
src/App.vue

@@ -30,7 +30,7 @@ export default {
   name: "App",
   data() {
     return {
-      url: "https://pc.liebaoai.cn/audio/test.mp3",
+      url: "https://pc.liebaoai.cn/audio/alone.mp3",
       audioList: [
         "https://pc.liebaoai.cn/audio/new-order.mp3",
         "https://pc.liebaoai.cn/audio/lower-than.mp3",

+ 6 - 1
src/api/order.js

@@ -119,4 +119,9 @@ export const getPrintOrderInfos = (params) => {
 // 获取物品来源
 export const getResource = (params) => {
   return get('app/waimai/resource', params);
-}
+}
+// 获取订单详情
+export const getOrderDetail = (params) => {
+  return get('app/order/info', params);
+}
+

+ 101 - 28
src/components/manualCreate.vue

@@ -163,38 +163,14 @@ import {
   saveOrder,
   getAddressList,
   getResource,
+  getOrderDetail,
 } from "../api/order.js";
 import sendOrderPopup from "../components/orderComponents/sendOrderPopup.vue";
 export default {
   name: "manualCreate",
   data() {
     return {
-      goodsSource: [
-        {
-          id: "0",
-          name: "猎豹",
-        },
-        {
-          id: "1",
-          name: "美团",
-        },
-        {
-          id: "2",
-          name: "饿了么",
-        },
-        {
-          id: "3",
-          name: "饿百零售",
-        },
-        {
-          id: "4",
-          name: "京东到家",
-        },
-        {
-          id: "5",
-          name: "心动外卖",
-        },
-      ],
+      goodsSource: [],
       products: [],
       addressType: 1,
       name: "",
@@ -236,7 +212,7 @@ export default {
         taxpayerId: "",
         transport: "0",
         platformType: 0,
-				daySeq: ''
+        daySeq: "",
       },
       chooseMapAddress: 1, // 1 发件选择地址2 收件选择地址
       showChooseShop: false,
@@ -260,6 +236,7 @@ export default {
       showAddress: false,
       personalSendAddressId: "",
       personalReceiptAddressId: "",
+      orderId: "",
     };
   },
   components: {
@@ -300,15 +277,105 @@ export default {
   },
   // 生命周期 - 创建完成(可以访问当前this实例)
   created() {
+    this.orderId = this.$route.params.orderId;
+    if (this.orderId) {
+      this.sendType = 0;
+      this.getOrderDetail();
+    }
     this.getProductList();
     this.getData();
     this.getResource();
   },
   // 方法集合
   methods: {
+    getOrderDetail() {
+      getOrderDetail({ orderId: this.orderId }).then((res) => {
+        // console.log("再来一单订单详情:", res);
+        if (res.code === 200) {
+          let data = res.data;
+          let nowTime = new Date().getTime();
+          let takeTime = new Date(data.takeTime).getTime();
+          if (
+            nowTime - takeTime >
+              this.$store.state.userInfo.privateNumberInvalidTime *
+                60 *
+                60 *
+                1000 &&
+            data.receiptPhone.length > 11
+          ) {
+            this.$confirm(
+              "当前收件人手机号为隐私号,骑手可能无法联系收件人!建议填写用户真实手机号",
+              "提醒",
+              {
+                confirmButtonText: "我知道了",
+                showCancelButton: false,
+                center: true,
+              }
+            )
+              .then(() => {})
+              .catch(() => {});
+          }
+          this.form = {
+            createType: "",
+            invoiceTitle: "",
+            isWaimai: false,
+            name: "",
+            productAmount: data.productAmount,
+            productId: data.productId,
+            receiptAddress: {
+              name: "",
+              address: data.receiptAddress,
+              cityCode: data.receiptCityCode,
+              cityName: data.receiptCityName,
+              contact: data.receiptContactName,
+              districtName: data.receiptDistrictName,
+              id: data.receiptAddressId,
+              isDefault: "",
+              lat: data.receiptLat,
+              lng: data.receiptLng,
+              phone: data.receiptPhone,
+              extension: data.receiptExtension ?? "",
+              provinceName: data.receiptProvinceName || data.sendProvinceName,
+              street: data.receiptStreet,
+              type: "",
+            },
+            sendAddress: {
+              name: "",
+              address: data.sendAddress,
+              cityCode: data.sendCityCode,
+              cityName: data.sendCityName,
+              contact: data.sendContactName,
+              districtName: data.sendDistrictName,
+              id: data.sendAddressId,
+              lat: data.sendLat,
+              lng: data.sendLng,
+              phone: data.sendPhone,
+              extension: data.sendExtension ?? "",
+              provinceName: data.sendProvinceName,
+              street: data.sendStreet,
+            },
+            shopId: data.waimaiOrderId ? data.shopId : "",
+            takeRemark: data.caution ?? "" + data.takeRemark ?? "",
+            takeTime: "",
+            takeType: "",
+            taxpayerId: "",
+            transport: 0,
+            type: "",
+            weight: data.weight,
+            platformType: data.orderType ?? data.platformType,
+            daySeq: data.daySeq,
+          };
+        } else {
+          this.$message({
+            type: "error",
+            message: res.msg,
+          });
+        }
+      });
+    },
     getResource() {
       getResource().then((res) => {
-        console.log("物品来源:", res);
+        // console.log("物品来源:", res);
         if (res.code === 200) {
           this.goodsSource = res.data;
           this.form.platformType = this.goodsSource[0].type;
@@ -512,6 +579,12 @@ export default {
           message: "请先选择收件人地址!",
         });
       }
+      if (this.form.platformType && !this.form.daySeq) {
+        return this.$message({
+          type: "error",
+          message: "请填写平台流水号!",
+        });
+      }
       let reg = new RegExp(/^([1-4][0-9]{0,1}|50)$/);
       if (!reg.test(Number(this.form.weight))) {
         this.$refs.weight.focus();

+ 67 - 29
src/components/orderComponents/orderList.vue

@@ -58,6 +58,7 @@
             <!-- 配送中 -->
             <div class="btns" v-if="buttonStatus === 3">
               <el-button size="small" @click.native="orderPrinter(list[curIdx].waimaiOrderId)" v-if="list[curIdx].waimaiOrderId" class="btn_bots btn">补打小票</el-button>
+              <el-button size='small' @click.native="againOrder(list[curIdx])" class="btn_bots btn">再来一单</el-button>
             </div>
             <!-- 异常单 -->
             <div class="btns" v-if="buttonStatus === -2">
@@ -66,7 +67,15 @@
             </div>
             <!-- 已取消 -->
             <div class="btns" v-if="buttonStatus === -1">
-              <!-- <el-button size='small' @click.native="orderPrinter(list[curIdx].waimaiOrderId,list[curIdx].id)" class="btn_bots btn">再来一单</el-button> -->
+              <el-button size='small' @click.native="orderPrinter(list[curIdx].waimaiOrderId,list[curIdx].id)" class="btn_bots btn">再来一单</el-button>
+            </div>
+            <!-- 已完成 -->
+            <div class="btns" v-if="buttonStatus === 97">
+              <el-button size='small' @click.native="againOrder(list[curIdx])" class="btn_bots btn">再来一单</el-button>
+            </div>
+            <!-- 其他平台已完成 -->
+            <div class="btns" v-if="buttonStatus === 98">
+              <el-button size='small' @click.native="againOrder(list[curIdx])" class="btn_bots btn">再来一单</el-button>
             </div>
           </div>
         </div>
@@ -150,14 +159,17 @@
                   showCancelType(item.cancelType)
                 }}</el-tag>
                 <!-- <el-button size='small' class="btn" @click.stop="orderBack(item.id)">撤回订单</el-button> -->
+                <el-button size="small" class="btn" @click.stop="againOrder(item)">再来一单</el-button>
               </div>
               <!-- 猎豹平台已完成 -->
               <div class="order_item_header_r" v-if="item.buttonStatus === 97">
                 <el-tag v-if="[-1,7].includes(tabNum)" class="header_r">已完成</el-tag>
+                <el-button size="small" class="btn" @click.stop="againOrder(item)">再来一单</el-button>
               </div>
               <!-- 其他平台已完成 -->
               <div class="order_item_header_r" v-if="item.buttonStatus === 98">
                 <el-tag v-if="[-1,7].includes(tabNum)" class="header_r">其他平台已完成</el-tag>
+                <el-button size="small" class="btn" @click.stop="againOrder(item)">再来一单</el-button>
               </div>
             </div>
             <div class="order_item_cont">
@@ -295,7 +307,7 @@ import {
 } from "../../api/order.js";
 export default {
   name: "OrderList",
-  data () {
+  data() {
     return {
       payAmount: 0,
       paymentType: 1, // 1 支付宝 0 微信
@@ -371,11 +383,11 @@ export default {
     qrCode,
   },
   watch: {
-    tabNum (newVal, oldVal) {
+    tabNum(newVal, oldVal) {
       this.curIdx = 0;
     },
     list: {
-      handler (newVal, oldVal) {
+      handler(newVal, oldVal) {
         this.buttonStatus = newVal.length ? newVal[0].buttonStatus : 0;
         if (this.buttonStatus === 0 || this.buttonStatus === 10) {
           this.needTrack = false;
@@ -391,18 +403,44 @@ export default {
       immediate: true,
     },
   },
-  destroyed () { },
+  destroyed() {},
   computed: {
     ...mapState(["userInfo"]),
   },
   methods: {
-    paySuccess () {
+    // 再来一单
+    againOrder(order) {
+      if ([97, 98].includes(order.buttonStatus)) {
+        this.$confirm("当前订单已完成,确认要再次发起配送吗?", "提示", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          center: true,
+        })
+          .then(() => {
+            this.$router.push({
+              name: "manualCreate",
+              params: {
+                orderId: order.id,
+              },
+            });
+          })
+          .catch(() => {});
+      } else {
+        this.$router.push({
+          name: "manualCreate",
+          params: {
+            orderId: order.id,
+          },
+        });
+      }
+    },
+    paySuccess() {
       this.showCode = false;
       this.addTipStatus = false;
       bus.$emit("refreshData");
       bus.$emit("refreshData2");
     },
-    richMoney () {
+    richMoney() {
       let reg = /(^[1-9]\d*$)/g;
       if (this.tipActive == -1) {
         if (!reg.test(this.tipAmount * 1)) {
@@ -446,16 +484,16 @@ export default {
         }
       });
     },
-    addTip (orderId) {
+    addTip(orderId) {
       this.orderId = orderId;
       this.paymentType = 4;
       this.addTipStatus = true;
     },
-    changeReason (item) {
+    changeReason(item) {
       this.reasonIndex = item.id;
       this.chooseReason = item.name;
     },
-    doCancelOrder () {
+    doCancelOrder() {
       cancelOrder({
         orderId: this.orderId,
         cancelReason:
@@ -482,7 +520,7 @@ export default {
       });
     },
     // 取消订单
-    commitCancelReason () {
+    commitCancelReason() {
       if (!this.reasonIndex) {
         return this.$message({
           message: "请选择取消原因",
@@ -514,7 +552,7 @@ export default {
         });
     },
     // 取消定时发单
-    cancalSettingTime () {
+    cancalSettingTime() {
       cancelTimingPublish({ orderId: this.item.id }).then((res) => {
         this.settingTimeStatus = false;
         if (res.code == 200) {
@@ -533,7 +571,7 @@ export default {
         }
       });
     },
-    commitTimeValue () {
+    commitTimeValue() {
       let timestamp = new Date().valueOf();
       let exT = moment(this.item.exceptTime).valueOf();
       let nowTime = moment(exT)
@@ -569,7 +607,7 @@ export default {
       });
     },
     // 定时发单
-    settingTime (item) {
+    settingTime(item) {
       this.item = item;
       this.settingTimeStatus = true;
       this.delayTime = item.delayTime;
@@ -577,11 +615,11 @@ export default {
       this.exceptTime = `预约期望${item.exceptTime.slice(5)}送达`;
     },
     // 取消订单
-    cancelOrder (orderId) {
+    cancelOrder(orderId) {
       this.orderId = orderId;
       this.cancelStatus = true;
     },
-    chooseOrder (v, index) {
+    chooseOrder(v, index) {
       this.buttonStatus = this.list[index].buttonStatus;
       if (this.buttonStatus === 0 || this.buttonStatus === 10) {
         this.needTrack = false;
@@ -596,7 +634,7 @@ export default {
       this.getRiderArriveTime();
     },
     // 忽略订单
-    iGnoreOrder (orderId) {
+    iGnoreOrder(orderId) {
       this.orderId = orderId;
       this.$confirm("确定要忽略此单?", "提示", {
         confirmButtonText: "确定",
@@ -630,14 +668,14 @@ export default {
           });
         });
     },
-    itemAddRemark (orderId, item) {
+    itemAddRemark(orderId, item) {
       this.dialogTableVisible = true;
       this.orderId = orderId;
       this.item = item;
       this.remark = item.takeRemark || "";
     },
     // 一键发单备注
-    commitRemark (orderId, item) {
+    commitRemark(orderId, item) {
       // if(!this.remark.trim()){
       //   return this.$message({
       //       message: '请输入发单备注再确认!',
@@ -674,14 +712,14 @@ export default {
       });
     },
     // 查看地图
-    checkMap (item) {
+    checkMap(item) {
       this.$refs.orderMap.setDialogStatus(item);
     },
-    sendNow (item) {
+    sendNow(item) {
       this.getValuation(item);
     },
     // 撤回订单
-    orderBack (orderId) {
+    orderBack(orderId) {
       rollOrder({ orderId }).then((res) => {
         if (res.code == 200) {
           this.$message({
@@ -699,7 +737,7 @@ export default {
       });
     },
     // 补打小票
-    orderPrinter (waimaiId, id) {
+    orderPrinter(waimaiId, id) {
       if (id) {
         bus.$emit("startUsbPrint", id);
       }
@@ -719,7 +757,7 @@ export default {
       });
     },
     // 计价
-    getValuation (order) {
+    getValuation(order) {
       let requestData = {
         productId: order.productId,
         transport: 0,
@@ -780,7 +818,7 @@ export default {
       });
     },
     // 订单详情
-    getDetailOrder () {
+    getDetailOrder() {
       this.showDetail = false;
       if (this.list.length) {
         this.orderId = this.list[this.curIdx].id;
@@ -800,7 +838,7 @@ export default {
       });
     },
     // 订单跟踪
-    getTrackOrder () {
+    getTrackOrder() {
       if (this.buttonStatus === 0 || this.buttonStatus === 10) return;
       this.showTrack = false;
       if (this.list.length) {
@@ -821,7 +859,7 @@ export default {
       });
     },
     // 获取骑手预计到达时间
-    getRiderArriveTime () {
+    getRiderArriveTime() {
       // 只有取货中和配送中调用该接口
       if (![2, 3].includes(this.buttonStatus)) return;
       if (this.list.length) {
@@ -835,7 +873,7 @@ export default {
         }
       });
     },
-    showCancelType (type) {
+    showCancelType(type) {
       let name = "";
       switch (type) {
         case 1:
@@ -859,7 +897,7 @@ export default {
       }
       return name;
     },
-    showDeliveryStatus (item) {
+    showDeliveryStatus(item) {
       let name = "";
       if (item.wmstatus === 4) {
         return (name = "其他平台完成");

+ 9 - 6
src/views/login.vue

@@ -52,7 +52,7 @@
 </template>
 
 <script>
-import { mapState, mapMutations, mapGetters } from "vuex";
+import { mapState, mapMutations, mapGetters,mapActions } from "vuex";
 import { getPhoneCode, loginPassword, loginVerification } from "../api/user.js";
 export default {
   data() {
@@ -74,14 +74,15 @@ export default {
     this.timer = null;
   },
   computed: {
-    ...mapState(["userInfo"]),
-    ...mapGetters(["userInfo"]),
+    // ...mapState(["userInfo"]),
+    // ...mapGetters(["userInfo"]),
   },
   created() {
     console.log("vuex", this.userInfo);
   },
   methods: {
-    ...mapMutations(["SET_USERINFO"]),
+    // ...mapMutations(["SET_USERINFO"]),
+    ...mapActions(["getUserInfo"]),
     seachEnterFun(e) {
       var keyCode = window.event ? e.keyCode : e.which;
       if (keyCode == 13) {
@@ -98,7 +99,8 @@ export default {
       loginVerification(params).then((res) => {
         if (res.code == 200) {
           localStorage.setItem("token", res.data.token);
-          this.SET_USERINFO(res.data.member);
+          // this.SET_USERINFO(res.data.member);
+          this.getUserInfo()
           this.$router.push("/");
         } else {
           return this.$message({
@@ -119,7 +121,8 @@ export default {
         if (res.code == 200) {
           this.errCount = 0;
           localStorage.setItem("token", res.data.token);
-          this.SET_USERINFO(res.data.member);
+          // this.SET_USERINFO(res.data.member);
+          this.getUserInfo()
           this.$store.dispatch("getUsbPrint");
           this.$router.push("/");
         } else {

BIN
static/audio/test.mp3