1248 lines
33 KiB
Vue
1248 lines
33 KiB
Vue
<template>
|
||
<div class="order" v-if="isorder">
|
||
<div class="foodCode">
|
||
<div class="codeNumber">{{ orderInfo.TAKE_NUMBER || "-" }}</div>
|
||
<div class="codeText">取餐码</div>
|
||
</div>
|
||
|
||
<div class="order-status">
|
||
<div class="order-success">
|
||
{{
|
||
orderInfo.SALEBILL_STATE === 1010
|
||
? "待发货"
|
||
: orderInfo.SALEBILL_STATE === 2010
|
||
? "待收货"
|
||
: orderInfo.SALEBILL_STATE === 3000
|
||
? "已收货"
|
||
: orderInfo.SALEBILL_STATE === 8000
|
||
? "退款申请中"
|
||
: orderInfo.SALEBILL_STATE === 8010
|
||
? "商品退货中"
|
||
: orderInfo.SALEBILL_STATE === 8020
|
||
? "退款处理中"
|
||
: orderInfo.SALEBILL_STATE === 8900
|
||
? "订单已退款"
|
||
: orderInfo.SALEBILL_STATE === 8999
|
||
? "退款已关闭"
|
||
: orderInfo.SALEBILL_STATE === 9000
|
||
? "订单已关闭"
|
||
: orderInfo.SALEBILL_STATE === 9999
|
||
? "订单已撤销"
|
||
: ""
|
||
}}
|
||
</div>
|
||
<div class="status-btn-box">
|
||
<block v-if="orderInfo.SALEBILL_STATE === 1005">
|
||
<div class="back-btn" @click="orderCancle">取消订单</div>
|
||
<div class="continu-btn" @click="goPayment(orderInfo)">
|
||
去付款 <span>{{ minutes }}</span>
|
||
</div>
|
||
</block>
|
||
<block
|
||
v-if="
|
||
orderInfo.SALEBILL_STATE !== 1005 &&
|
||
orderInfo.SALEBILL_STATE !== 2010 &&
|
||
orderInfo.SALEBILL_STATE !== 3000 &&
|
||
orderInfo.SALEBILL_STATE !== 8000 &&
|
||
orderInfo.SALEBILL_STATE !== 8010 &&
|
||
orderInfo.SALEBILL_STATE !== 8020 &&
|
||
orderInfo.SALEBILL_STATE !== 8900 &&
|
||
orderInfo.SALEBILL_STATE !== 8999 &&
|
||
orderInfo.SALEBILL_STATE !== 9000 &&
|
||
orderInfo.SALEBILL_STATE !== 9999 &&
|
||
orderInfo.COMMENT_STATE === 0
|
||
"
|
||
>
|
||
<!-- orderInfo.SALEBILL_STATE !== 1005 &&
|
||
orderInfo.SALEBILL_STATE !== 1010 && -->
|
||
<div
|
||
class="continu-btn"
|
||
@click="handleRefund"
|
||
v-if="orderInfo.SALEBILL_TYPE !== 3001"
|
||
>
|
||
发起退款
|
||
</div>
|
||
<!-- <div class="back-btn" @click="goShop" v-if="orderInfo.SALEBILL_STATE!=1010">再来一单</div> -->
|
||
<div
|
||
class="continu-btn"
|
||
@click="goEvaluate"
|
||
v-if="orderInfo.SALEBILL_STATE >= 3000"
|
||
>
|
||
评价得积分
|
||
</div>
|
||
</block>
|
||
</div>
|
||
</div>
|
||
<!-- <text @click="handleChangeOrderStatus">收货</text> -->
|
||
<div class="hx-block"></div>
|
||
<div class="order-info">
|
||
<p class="order-info-type order-info-h">
|
||
<!-- :class="{ appoint: orderInfo.TAKE_TYPE === 2000 }" -->
|
||
<span>订单信息</span>
|
||
<span class="order-info-status">{{
|
||
orderInfo.SALEBILL_STATE_TEXT
|
||
}}</span>
|
||
</p>
|
||
<p class="order-info-type" v-if="false">
|
||
<span class="order-info-t">收货方式</span
|
||
><span>{{
|
||
orderInfo.TAKE_TYPE === 1000
|
||
? "自提"
|
||
: orderInfo.TAKE_TYPE === 2000
|
||
? "邮寄"
|
||
: orderInfo.TAKE_TYPE === 3000
|
||
? "免发货"
|
||
: ""
|
||
}}</span>
|
||
</p>
|
||
<p
|
||
class="order-info-type"
|
||
v-if="orderInfo.TAKE_TYPE === 2000 && orderInfo.SALEBILL_STATE >= 2010"
|
||
>
|
||
<span class="order-info-t">快递单号</span
|
||
><span>{{ orderInfo.TABLE_NUMBER || "" }}</span>
|
||
</p>
|
||
|
||
<p class="order-info-type">
|
||
<span class="order-info-t">订单编号</span
|
||
><span>{{ orderInfo.SALEBILL_CODE }}</span>
|
||
</p>
|
||
|
||
<p class="order-info-type">
|
||
<span class="order-info-t">下单时间</span
|
||
><span>{{ orderInfo.ORDER_DATE }}</span>
|
||
</p>
|
||
<block v-if="orderInfo.TAKE_TYPE === 2000">
|
||
<p class="order-info-type">
|
||
<span class="order-info-t">下单人员</span
|
||
><span>{{ orderInfo.ORDER_PERSON }}</span>
|
||
</p>
|
||
<p class="order-info-type">
|
||
<span class="order-info-t">预约时间</span
|
||
><span>{{ orderInfo.RESERVATION_DATE }}</span>
|
||
</p>
|
||
<p class="order-info-type">
|
||
<span class="order-info-t">预约电话</span
|
||
><span>{{ orderInfo.ORDER_PERSONTEL }}</span>
|
||
</p>
|
||
</block>
|
||
</div>
|
||
|
||
<div class="order-box">
|
||
<div class="order-top" @click="goShop">
|
||
<div style="display: flex; align-items: center">
|
||
<img
|
||
src="https://eshangtech.com/ShopICO/shop_ico.png"
|
||
style="
|
||
width: 56rpx;
|
||
height: 36rpx;
|
||
vertical-align: middle;
|
||
margin-right: 10rpx;
|
||
"
|
||
/>
|
||
<span class="order-addr">{{ ShopAddress }}</span>
|
||
</div>
|
||
<van-icon name="arrow" size="30rpx" v-if="pageMsg.type === 0" />
|
||
</div>
|
||
|
||
<div class="order-list" v-for="(item, i) in shopOrder" :key="i">
|
||
<div class="order-name">
|
||
{{
|
||
item.COMMODITY_RULE
|
||
? item.COMMODITY_NAME + "(" + item.COMMODITY_RULE + ")"
|
||
: item.COMMODITY_NAME
|
||
}}
|
||
</div>
|
||
<div class="order-num">x{{ item.ORDER_COUNT }}</div>
|
||
<div class="order-price">¥{{ item.AVERAGE_PRICE }}</div>
|
||
</div>
|
||
|
||
<hr />
|
||
|
||
<div class="coupon" v-if="orderInfo.COUPON_AMOUNT">
|
||
<div>
|
||
<span>优惠券</span>
|
||
</div>
|
||
<div style="font-size: 28rpx; color: #000000; font-weight: bolder">
|
||
-¥{{ orderInfo.COUPON_AMOUNT }}
|
||
</div>
|
||
</div>
|
||
<div class="price-sum">
|
||
<div class="link-store" @click="callPhone">
|
||
<van-icon
|
||
name="phone-circle-o"
|
||
size="40rpx"
|
||
color="#CAA97F"
|
||
custom-style="margin-right:16rpx;"
|
||
></van-icon>
|
||
联系商家
|
||
</div>
|
||
<div class="">
|
||
<span>合计</span>
|
||
<span class="pay-price">¥{{ tatalMoney }}</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<uni-popup ref="payPopup" :safe-area="false">
|
||
<div class="payShowBox">
|
||
<div class="payBoxTitle">支付方式</div>
|
||
|
||
<div class="payList">
|
||
<radio-group :value="payType" class="radio-group">
|
||
<div
|
||
class="bottom-radio"
|
||
color="#CAA97F"
|
||
@click="handleChangePayType(1)"
|
||
>
|
||
<div class="radioLeft">
|
||
<div class="logoBox">
|
||
<image
|
||
class="logoIcon"
|
||
src="https://eshangtech.com/wanmeiyizhanImg/home/alipayIcon.png"
|
||
/>
|
||
</div>
|
||
<text>支付宝支付</text>
|
||
</div>
|
||
<radio
|
||
value="支付宝支付"
|
||
color="#CAA97F"
|
||
:checked="payType === 1"
|
||
/>
|
||
</div>
|
||
<div
|
||
class="bottom-radio"
|
||
color="#CAA97F"
|
||
@click="handleChangePayType(2)"
|
||
>
|
||
<div class="radioLeft">
|
||
<div class="logoBox">
|
||
<image
|
||
class="logoIcon"
|
||
src="https://eshangtech.com/wanmeiyizhanImg/home/wxPay.png"
|
||
/>
|
||
</div>
|
||
<text>微信支付</text>
|
||
</div>
|
||
<radio
|
||
value="微信支付"
|
||
color="#CAA97F"
|
||
:checked="payType === 2"
|
||
/>
|
||
</div>
|
||
</radio-group>
|
||
</div>
|
||
|
||
<div class="goPayBox" @click="getOrderInfo">
|
||
<div class="goPay">确认支付</div>
|
||
</div>
|
||
</div>
|
||
</uni-popup>
|
||
</div>
|
||
</template>
|
||
|
||
<script>
|
||
import { mapGetters } from "vuex";
|
||
export default {
|
||
data() {
|
||
return {
|
||
orderInfo: {},
|
||
isorder: false,
|
||
shopOrder: [],
|
||
|
||
orderAmount: 0,
|
||
orderNumber: "",
|
||
status: "",
|
||
statusName: "",
|
||
orderInternal: "",
|
||
payType: "余额支付",
|
||
orderTime: "",
|
||
RESERVATION_DATE: "",
|
||
ORDER_PERSONTEL: "",
|
||
TAKE_TYPE: 0,
|
||
SERVERPARTSHOP_ID: "",
|
||
couponAmount: "",
|
||
ShopAddress: "",
|
||
minutes: "",
|
||
isMinute: false,
|
||
timer: "",
|
||
isShow: false,
|
||
cardPay: {
|
||
payType: "余额支付", // 用户支付方式
|
||
reason: "",
|
||
canCardPay: true, // 是否可以余额支付
|
||
amount: "", // 实业饭卡余额
|
||
},
|
||
pageMsg: {
|
||
type: 0,
|
||
},
|
||
sellchildid: "", // 子ID
|
||
};
|
||
},
|
||
computed: {
|
||
...mapGetters(["user"]),
|
||
tatalMoney() {
|
||
let total = this.orderAmount;
|
||
total =
|
||
Math.round((total - this.orderInfo.COUPON_AMOUNT || 0) * 100) / 100;
|
||
|
||
return total;
|
||
},
|
||
},
|
||
methods: {
|
||
// 发起退款
|
||
handleRefund() {
|
||
let _this = this;
|
||
let openId = uni.getStorageSync("openId");
|
||
console.log("openId", openId);
|
||
console.log("_this.orderInfo", _this.orderInfo);
|
||
uni.showModal({
|
||
title: "提示",
|
||
content: "仅支持整单退款,确认发起退款申请?",
|
||
success: async function (res) {
|
||
if (res.confirm) {
|
||
let reqOrder = {
|
||
action_type: "ScanOrder",
|
||
salebillType: 3999,
|
||
provinceCode: _this.user.PROVINCE_CODE || "530000",
|
||
serverpartShopId: "5634",
|
||
salebillDesc: "退款订单",
|
||
wechatOpenId: openId || "",
|
||
oriSalebillCode: _this.orderInfo.SALEBILL_CODE,
|
||
wechatUnionId: _this.user.USER_UNIONID || "",
|
||
// addressId: this.addressInfo.MEMBERADDRESS_ID,
|
||
// orderPersonTel: this.addressInfo.MOBILEPHONE,
|
||
// couponCode: '',//优惠券
|
||
t_saleorderdetail: JSON.stringify(_this.orderInfo.List),
|
||
requestType: "application/x-www-form-urlencoded",
|
||
};
|
||
const orderData = await _this.$api.postCoop(reqOrder);
|
||
if (orderData.ResultCode === "100") {
|
||
const req = {
|
||
action_type: "UpdateOrderState",
|
||
action_data: _this.orderInfo.SALEBILL_ID,
|
||
// saleBillChildId: _this.sellchildid,
|
||
SALEBILL_STATE: 8000,
|
||
// deliverDate: new Date()
|
||
};
|
||
const data = await _this.$api.getCoop(req);
|
||
uni.showToast({
|
||
title: data.msg,
|
||
icon: "none",
|
||
});
|
||
if (data.error === 1) {
|
||
_this.getOrderType();
|
||
}
|
||
} else {
|
||
uni.showToast({
|
||
title: orderData.ResultDesc,
|
||
icon: "none",
|
||
});
|
||
}
|
||
}
|
||
},
|
||
});
|
||
},
|
||
// 倒计时
|
||
num(n) {
|
||
return n < 10 ? "0" + n : "" + n;
|
||
},
|
||
showTime() {
|
||
let _this = this;
|
||
_this.timer = setInterval(function () {
|
||
// debugger
|
||
let oldTime = new Date(_this.orderTime).getTime() / 1000 + 15 * 60;
|
||
let nowTime = new Date().getTime() / 1000;
|
||
let timediff = parseInt(oldTime - nowTime);
|
||
if (timediff > 0) {
|
||
_this.minutes =
|
||
"(" + parseInt(timediff / 60) + "分" + (timediff % 60) + "秒)";
|
||
_this.isMinute = true;
|
||
} else if (timediff <= 0) {
|
||
_this.minutes = "";
|
||
_this.isMinute = false;
|
||
clearInterval(_this.timer);
|
||
_this.getOrderType();
|
||
// console.log(1)
|
||
}
|
||
}, 1000);
|
||
},
|
||
changePayType(data) {
|
||
this.cardPay.payType = data.mp.detail;
|
||
},
|
||
isGoPay() {
|
||
if (this.cardPay.payType === "余额支付") {
|
||
// 如果该用户进行余额支付
|
||
this.payByCard();
|
||
} else {
|
||
this.isShow = false;
|
||
this.getOrderInfo();
|
||
}
|
||
},
|
||
async goPayment(obj) {
|
||
console.log("tatalMoney", this.tatalMoney);
|
||
// this.$refs.payPopup.open("bottom");
|
||
// 判断用户是否可余额支付
|
||
// if (
|
||
// this.user.MEMBERSHIP_TYPE === 3000 &&
|
||
// this.cardPay.payType === "余额支付"
|
||
// ) {
|
||
// this.getCardAmount();
|
||
// this.isShow = true;
|
||
// } else {
|
||
// this.getOrderInfo();
|
||
// }
|
||
let _this = this;
|
||
// 拿到签名
|
||
let mchid = "1707624624";
|
||
let timeStamp = Math.ceil(new Date().getTime() / 1000);
|
||
let nonceStr = Math.random().toString(36).substring(2, 8);
|
||
let serial_no = "5904E3BF9EDC8B2AA3F99E51440B34FB7FFA6EDA";
|
||
// let out_trade_no = this.generateOutTradeNo(32)
|
||
let out_trade_no = obj.SALEBILL_CODE;
|
||
|
||
console.log("obj", obj);
|
||
let req = {
|
||
appid: "wx4c497eddcec4a0e7", // 公众账号ID
|
||
mchid: "1707624624", // 商户号
|
||
description: "安徽省驿达高速公路服务区经营管理有限公司", //商品描述
|
||
out_trade_no: out_trade_no, // 商户订单号
|
||
notify_url:
|
||
"https://mp.eshangtech.com/Coop.Merchant/Handler/Handler_Trade.ashx", // 商户回调地址
|
||
amount: {
|
||
total: Number(_this.tatalMoney) * 100 || 1,
|
||
currency: "CNY",
|
||
}, // 订单金额
|
||
payer: {
|
||
openid: _this.user.WECHATAPP_OPENID,
|
||
}, // 支付者信息
|
||
};
|
||
console.log("req", req);
|
||
|
||
let reqSign = {
|
||
parameters:
|
||
"POST\n/v3/pay/transactions/jsapi\n" +
|
||
timeStamp +
|
||
"\n" +
|
||
nonceStr +
|
||
"\n" +
|
||
JSON.stringify(req) +
|
||
"\n",
|
||
provinceCode: _this.provinceCode || "340000",
|
||
};
|
||
console.log(
|
||
"POST\n/v3/pay/transactions/jsapi\n" +
|
||
timeStamp +
|
||
"\n" +
|
||
nonceStr +
|
||
"\n" +
|
||
JSON.stringify(req) +
|
||
"\n"
|
||
);
|
||
|
||
const data = await this.$api.$get("/WeChat/GenerateSign", reqSign);
|
||
console.log("data3213123", data.Result_Data);
|
||
let Authorization = `mchid="${mchid}",nonce_str="${nonceStr}",signature="${data.Result_Data}",timestamp="${timeStamp}",serial_no="${serial_no}"`;
|
||
let AuthorizationStr = `WECHATPAY2-SHA256-RSA2048 ${Authorization}`;
|
||
console.log("AuthorizationStr", AuthorizationStr);
|
||
|
||
uni.request({
|
||
url: "https://api.mch.weixin.qq.com/v3/pay/transactions/jsapi", //仅为示例,并非真实接口地址。
|
||
method: "POST",
|
||
data: req,
|
||
header: {
|
||
Authorization: AuthorizationStr,
|
||
Accept: "application/json", //自定义请求头信息
|
||
"Content-Type": "application/json",
|
||
},
|
||
success: async (res) => {
|
||
console.log("res", res);
|
||
|
||
console.log(res.data.prepay_id);
|
||
this.text = "request success";
|
||
let paySign = "";
|
||
let reqSign = {
|
||
parameters:
|
||
"wx4c497eddcec4a0e7\n" +
|
||
timeStamp +
|
||
"\n" +
|
||
nonceStr +
|
||
"\nprepay_id=" +
|
||
res.data.prepay_id +
|
||
"\n",
|
||
provinceCode: _this.provinceCode || "340000",
|
||
};
|
||
const data = await this.$api.$get("/WeChat/GenerateSign", reqSign);
|
||
paySign = data.Result_Data;
|
||
|
||
wx.requestPayment({
|
||
timeStamp: timeStamp.toString(),
|
||
nonceStr: nonceStr,
|
||
package: `prepay_id=${res.data.prepay_id}`,
|
||
signType: "RSA",
|
||
paySign: paySign,
|
||
total_fee: Number(_this.tatalMoney) * 100 || 1,
|
||
success(res) {
|
||
console.log("res", res);
|
||
},
|
||
fail(res) {
|
||
console.log("fail", res);
|
||
},
|
||
complete(res) {
|
||
uni.redirectTo({
|
||
url: `/pages/orders/orderdetail/index?orderInternal=${obj.SALEBILL_ID}`,
|
||
});
|
||
},
|
||
});
|
||
},
|
||
});
|
||
},
|
||
// 获取订单状态
|
||
getOrderType() {
|
||
let _this = this;
|
||
_this.$api
|
||
.getCoop({
|
||
action_type: "GetOrderDetail",
|
||
salebillId: _this.orderInternal,
|
||
saleBillChildId: _this.sellchildid ? _this.sellchildid : "",
|
||
})
|
||
.then((res) => {
|
||
// console.log(res)
|
||
if (res.ResultCode === "100") {
|
||
let _data = res.Data;
|
||
console.log("订单详情", _data);
|
||
_this.orderInfo = _data;
|
||
_this.getOrderAmount(_data.List);
|
||
_this.status = _data.SALEBILL_STATE; // 订单状态
|
||
_this.statusName = _data.SALEBILL_STATENAME; // 订单状态
|
||
_this.SERVERPARTSHOP_ID = _data.SERVERPARTSHOP_ID;
|
||
_this.ShopAddress = _data.SERVERPART_NAME + _data.SHOPNAME;
|
||
_this.orderTime = _data.ORDER_DATE;
|
||
_this.RESERVATION_DATE = _data.RESERVATION_DATE;
|
||
_this.ORDER_PERSONTEL = _data.ORDER_PERSONTEL;
|
||
_this.TAKE_TYPE = _data.TAKE_TYPE;
|
||
_this.isorder = true;
|
||
if (_this.status === 1005) {
|
||
// 待付款时添加倒计时
|
||
_this.showTime();
|
||
}
|
||
}
|
||
});
|
||
},
|
||
getCardAmount() {
|
||
// 获取用户余额
|
||
let _this = this;
|
||
_this.$api
|
||
.getCoop({
|
||
action_type: "GetIndustryMemberInfo",
|
||
serverpartShopId: _this.SERVERPARTSHOP_ID,
|
||
})
|
||
.then((rs) => {
|
||
if (rs.ResultCode === "100") {
|
||
_this.cardPay.amount = rs.Data.INDUSTRY_ACCOUNT_BALANCE;
|
||
|
||
if (_this.cardPay.amount < _this.orderAmount) {
|
||
_this.cardPay.payType = "微信支付";
|
||
_this.cardPay.canCardPay = false;
|
||
_this.cardPay.reason = "余额不足";
|
||
} else {
|
||
_this.cardPay.payType = "余额支付";
|
||
_this.cardPay.canCardPay = true;
|
||
_this.cardPay.reason = "";
|
||
}
|
||
} else {
|
||
_this.cardPay.amount = rs.Data.INDUSTRY_ACCOUNT_BALANCE;
|
||
_this.cardPay.payType = "微信支付";
|
||
_this.cardPay.canCardPay = false;
|
||
_this.cardPay.reason = rs.ResultDesc;
|
||
}
|
||
_this.isShow = true;
|
||
_this.$forceUpdate();
|
||
});
|
||
},
|
||
payByCard() {
|
||
// 实业饭卡支付
|
||
let _this = this;
|
||
_this.$api
|
||
.postCoop({
|
||
action_type: "ECodeConsume",
|
||
saleBill: _this.orderInternal,
|
||
})
|
||
.then((rs) => {
|
||
if (rs.ResultCode === "100") {
|
||
// uni.showToast({
|
||
// title: '支付成功',
|
||
// icon: 'success',
|
||
// duration: 2000
|
||
// })
|
||
_this.isShow = false;
|
||
// setTimeout(() => {
|
||
_this.$store.commit("couponPrice", "");
|
||
uni.redirectTo({
|
||
url:
|
||
"/pages/orders/orderdetail/main?orderNumber=" +
|
||
_this.orderNumber +
|
||
"&orderInternal=" +
|
||
_this.orderInternal,
|
||
});
|
||
// }, 1000)
|
||
} else {
|
||
uni.showToast({
|
||
title: rs.ResultDesc,
|
||
icon: "none",
|
||
duration: 2000,
|
||
});
|
||
}
|
||
});
|
||
},
|
||
// 取消订单
|
||
orderCancle() {
|
||
let _this = this;
|
||
// console.log(_this.orderInfo.SALEBILL_ID)
|
||
uni.showModal({
|
||
title: "温馨提示",
|
||
content: "您是否确认取消订单。",
|
||
async success(res) {
|
||
if (res.confirm) {
|
||
uni.showLoading({
|
||
title: "取消中...",
|
||
icon: "none",
|
||
});
|
||
const req = {
|
||
action_type: "UpdateOrderState",
|
||
action_data: _this.orderInfo.SALEBILL_ID,
|
||
saleBillChildId: _this.sellchildid > 0 ? _this.sellchildid : "",
|
||
SALEBILL_STATE: 9999,
|
||
// deliverDate: new Date()
|
||
};
|
||
const data = await _this.$api.getCoop(req);
|
||
console.log("data", data);
|
||
uni.hideLoading();
|
||
uni.showToast({
|
||
title: data.msg,
|
||
icon: "none",
|
||
});
|
||
if (data.error === 1) {
|
||
// uni.redirectTo({
|
||
// url: "/pages/order/buyOrder/index",
|
||
// });
|
||
uni.navigateBack({ delta: 1 });
|
||
}
|
||
// _this.$api
|
||
// .postCoop({
|
||
// action_type: "UpdateOrderState",
|
||
// action_data: _this.orderInfo.SALEBILL_ID,
|
||
// SALEBILL_STATE: 9000,
|
||
// })
|
||
// .then((res) => {
|
||
// if (res.error === 1) {
|
||
// uni.showToast({
|
||
// title: "取消订单成功",
|
||
// icon: "none",
|
||
// duration: 2000,
|
||
// success: function () { },
|
||
// });
|
||
// uni.navigateBack({ delta: 1 });
|
||
// // uni.redirectTo({url: '/pages/orders/order/main'})
|
||
// } else {
|
||
// uni.showToast({
|
||
// title: res.msg,
|
||
// icon: "none",
|
||
// duration: 2000,
|
||
// });
|
||
// }
|
||
// });
|
||
} else if (res.cancel) {
|
||
}
|
||
},
|
||
});
|
||
},
|
||
// 获取后台信息调取微信支付
|
||
getOrderInfo() {
|
||
let timeStamp = new Date() / 1000;
|
||
let str = Math.random().toString(36).substr(2, 15);
|
||
|
||
// uni.requestPayment({
|
||
// timeStamp: timeStamp,
|
||
// nonceStr: str,
|
||
// package: "prepay_id=***",
|
||
// paySign: "",
|
||
// success(res) {},
|
||
// fail(res) {},
|
||
// });
|
||
|
||
return;
|
||
let _this = this;
|
||
let req = {
|
||
action_type: "JsApiPay",
|
||
action_data: 1,
|
||
action_record: _this.user.WECHATAPP_OPENID,
|
||
// action_record: 'ortWV5OP2g9P81cxxJYIIhrAezS4',
|
||
TOTAL_FEE: _this.orderAmount,
|
||
OFFPRICE: 0,
|
||
payType: 2,
|
||
SALEBILL_ID: _this.orderInternal,
|
||
// SALEBILL_CODE: _this.orderNumber,
|
||
SALEBILL_CODE: this.orderInfo.SALEBILL_CODE,
|
||
requestType: "application/x-www-form-urlencoded",
|
||
};
|
||
console.log("getOrderInfo", req);
|
||
_this.$api.postCoop(req).then((res) => {
|
||
console.log("getOrderInfo", res);
|
||
if (res) {
|
||
uni.requestPayment({
|
||
appId: "wxee018fb96955552a", // 公众号名称,由商户传入
|
||
timeStamp: res.timeStamp + "", // 时间戳,自1970年以来的秒数
|
||
nonceStr: res.nonceStr, // 随机串
|
||
package: res.package,
|
||
signType: res.signType, // 微信签名方式
|
||
paySign: res.paySign, // 微信签名
|
||
success(res) {
|
||
if (res.errMsg === "requestPayment:ok") {
|
||
_this.$api
|
||
.postCoop({
|
||
action_type: "EndPay",
|
||
action_data: _this.orderNumber,
|
||
action_record: 1,
|
||
})
|
||
.then((res) => {
|
||
_this.$store.commit("couponPrice", "");
|
||
|
||
uni.redirectTo({
|
||
url:
|
||
"/pages/orders/orderdetail/main?orderNumber=" +
|
||
_this.orderNumber +
|
||
"&orderInternal=" +
|
||
_this.orderInternal,
|
||
});
|
||
});
|
||
}
|
||
},
|
||
fail(res) {
|
||
if (res.errMsg === "requestPayment:fail cancel") {
|
||
// uni.showToast({
|
||
// title: '支付取消',
|
||
// icon: 'none',
|
||
// duration: 2000
|
||
// })
|
||
}
|
||
},
|
||
complete(res) {},
|
||
});
|
||
} else {
|
||
uni.showToast({
|
||
title: "网络异常,请稍后再试",
|
||
icon: "none",
|
||
duration: 2000,
|
||
});
|
||
}
|
||
});
|
||
},
|
||
// 获取订单列表
|
||
getOrderAmount(data) {
|
||
let _this = this;
|
||
let total = 0;
|
||
_this.shopOrder = data;
|
||
data.map((v) => {
|
||
total += v.ORDER_AMOUNT;
|
||
});
|
||
|
||
_this.orderAmount = total;
|
||
},
|
||
goEvaluate() {
|
||
console.log("this.orderInfo", this.orderInfo);
|
||
if (this.orderInfo.List && this.orderInfo.List.length >= 2) {
|
||
uni.navigateTo({
|
||
url:
|
||
"/pages/evaluateList/selectEvaluate?sellchildid=" +
|
||
this.orderInfo.SALEBILL_CHILD_ID +
|
||
"&orderInternal=" +
|
||
this.orderInfo.SALEBILL_ID +
|
||
"&orderStatus=" +
|
||
this.orderInfo.SALEBILL_STATE +
|
||
"&SUPPLIER_NAME=" +
|
||
this.orderInfo.SUPPLIER_NAME,
|
||
});
|
||
} else {
|
||
uni.navigateTo({
|
||
url:
|
||
"/pages/evaluateList/addEvaluate?sellchildid=" +
|
||
this.orderInfo.SALEBILL_CHILD_ID +
|
||
"&orderInternal=" +
|
||
this.orderInfo.SALEBILL_ID +
|
||
"&orderStatus=" +
|
||
this.orderInfo.SALEBILL_STATE +
|
||
"&SUPPLIER_NAME=" +
|
||
this.orderInfo.SUPPLIER_NAME,
|
||
});
|
||
// uni.navigateTo({
|
||
// url: `/pages/evaluateList/addEvaluate?SALEBILL_ID=${obj.SALEBILL_ID}&SALEBILL_CHILD_ID=${obj.SALEBILL_CHILD_ID}`,
|
||
// });
|
||
}
|
||
// uni.navigateTo({
|
||
// url:
|
||
// "/pages/evaluateList/addEvaluate?merchantsId=" +
|
||
// this.orderInfo.MERCHANTS_ID +
|
||
// "&orderInternal=" +
|
||
// this.orderInfo.SALEBILL_ID +
|
||
// "&sellchildid=" +
|
||
// this.orderInfo.SALEBILL_CHILD_ID,
|
||
// });
|
||
},
|
||
goShop() {
|
||
if (this.pageMsg.type === 0) {
|
||
// let arr = {
|
||
// id: this.orderInfo.SERVERPARTSHOP_ID
|
||
// shopName: this.orderInfo.SHOPNAME,
|
||
// serverpartId: this.orderInfo.SERVERPART_ID
|
||
|
||
// }
|
||
// this.$store.commit('nowStore', arr)
|
||
this.$store.commit(
|
||
"setprovinceCode",
|
||
this.orderInfo.PROVINCE_CODE || "530000"
|
||
);
|
||
uni.navigateTo({
|
||
url:
|
||
"/pages/shopPages/shop/main?id=" +
|
||
this.orderInfo.SERVERPARTSHOP_ID +
|
||
"&mid=" +
|
||
this.orderInfo.MERCHANTS_ID,
|
||
});
|
||
}
|
||
},
|
||
callPhone() {
|
||
let _this = this;
|
||
if (_this.orderInfo.SELLER_TELEPHONE) {
|
||
uni.makePhoneCall({
|
||
phoneNumber: _this.orderInfo.SELLER_TELEPHONE,
|
||
});
|
||
}
|
||
},
|
||
// 修改订单状态
|
||
async handleChangeOrderStatus() {
|
||
let _this = this;
|
||
const req = {
|
||
action_type: "UpdateOrderState",
|
||
action_data: _this.orderInfo.SALEBILL_ID,
|
||
saleBillChildId: _this.sellchildid > 0 ? _this.sellchildid : "",
|
||
SALEBILL_STATE: 3000,
|
||
// deliverDate: new Date()
|
||
};
|
||
console.log("req", req);
|
||
const data = await _this.$api.getCoop(req);
|
||
},
|
||
},
|
||
onUnload() {
|
||
this.orderInfo = {};
|
||
this.minutes = "";
|
||
this.isMinute = false;
|
||
clearInterval(this.timer);
|
||
this.pageMsg.type = 0;
|
||
},
|
||
// onShow () {
|
||
// this.getOrderType()
|
||
// },
|
||
onLoad(option) {
|
||
console.log("option", option);
|
||
|
||
uni.setNavigationBarColor({
|
||
frontColor: "#ffffff",
|
||
backgroundColor: "#2fa4ff",
|
||
animation: {
|
||
duration: 30,
|
||
timingFunc: "linear",
|
||
},
|
||
});
|
||
if (option.type) {
|
||
this.pageMsg.type = 1;
|
||
}
|
||
if (option.sellchildid) {
|
||
this.sellchildid = option.sellchildid;
|
||
}
|
||
this.couponAmount = this.$store.getters.couponPrice
|
||
? "-¥" + this.$store.getters.couponPrice
|
||
: "";
|
||
|
||
this.orderNumber = option.orderNumber;
|
||
this.orderInternal = option.orderInternal;
|
||
this.getOrderType();
|
||
this.$utils.addUserBehaviorNew();
|
||
},
|
||
};
|
||
</script>
|
||
<style lang="less" scoped>
|
||
page {
|
||
background-color: #f3f2f7;
|
||
}
|
||
|
||
// bodyColor = #f5ba56;
|
||
|
||
.disable {
|
||
color: #999;
|
||
}
|
||
|
||
.order {
|
||
background: #f3f2f7;
|
||
padding-bottom: 30rpx;
|
||
box-sizing: border-box;
|
||
height: 100%;
|
||
}
|
||
.foodCode {
|
||
width: 100%;
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: center;
|
||
justify-content: center;
|
||
background: #2fa4ff;
|
||
padding-top: 24rpx;
|
||
.codeNumber {
|
||
font-size: 36rpx;
|
||
font-weight: 600;
|
||
color: #fff;
|
||
}
|
||
.codeText {
|
||
font-family: "PingFangSC";
|
||
font-weight: 400;
|
||
font-size: 28rpx;
|
||
color: #7e5314;
|
||
line-height: 36rpx;
|
||
}
|
||
}
|
||
|
||
.order-status {
|
||
padding: 32rpx 32rpx 56rpx 32rpx;
|
||
// background: linear-gradient(#c8b190, #a18153);
|
||
// background: linear-gradient(270deg, #2fa4ff 0%, #197aff 100%);
|
||
background: #2fa4ff;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
}
|
||
|
||
.order-s-ico {
|
||
width: 89rpx;
|
||
height: 89rpx;
|
||
}
|
||
|
||
.order-success {
|
||
color: #fff;
|
||
font-size: 36rpx;
|
||
// margin-bottom 32rpx
|
||
}
|
||
|
||
.status-btn-box {
|
||
justify-content: flex-end;
|
||
font-size: 24rpx;
|
||
display: flex;
|
||
align-items: center;
|
||
margin-top: 12rpx;
|
||
}
|
||
|
||
.back-btn {
|
||
color: #7e5314;
|
||
border: 1rpx solid #7e5314;
|
||
width: 120rpx;
|
||
height: 48rpx;
|
||
text-align: center;
|
||
line-height: 48rpx;
|
||
border-radius: 6rpx;
|
||
}
|
||
|
||
.continu-btn {
|
||
color: #fff;
|
||
border: 1rpx solid #fff;
|
||
min-width: 160rpx;
|
||
height: 48rpx;
|
||
text-align: center;
|
||
line-height: 48rpx;
|
||
border-radius: 6rpx;
|
||
margin-left: 36rpx;
|
||
padding: 0 12rpx;
|
||
}
|
||
|
||
.refundBtn {
|
||
font-family: PingFangSC, PingFang SC;
|
||
font-weight: 400;
|
||
font-size: 28rpx;
|
||
color: #6c737a;
|
||
line-height: 40rpx;
|
||
text-align: left;
|
||
padding: 12rpx 24rpx;
|
||
border-radius: 8rpx;
|
||
border: 2rpx solid #d9dbdd;
|
||
}
|
||
|
||
.hx-block {
|
||
top: -26rpx;
|
||
position: relative;
|
||
width: 100%;
|
||
height: 30rpx;
|
||
border-radius: 30rpx 30rpx 0 0;
|
||
background: #f3f2f7;
|
||
}
|
||
|
||
.order-box {
|
||
background-color: #fff;
|
||
padding: 0 24rpx;
|
||
margin: 20rpx 24rpx;
|
||
border-radius: 12rpx;
|
||
box-sizing: border-box;
|
||
// box-shadow 0 2rpx 16rpx 0.4rpx #e2e2e2
|
||
}
|
||
|
||
.order-top {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
align-items: center;
|
||
font-size: 30rpx;
|
||
border-bottom: 1rpx solid #f5f5f5;
|
||
height: 100rpx;
|
||
box-sizing: border-box;
|
||
margin-bottom: 24rpx;
|
||
}
|
||
|
||
.order-list,
|
||
.coupon {
|
||
padding: 20rpx 0;
|
||
box-sizing: border-box;
|
||
background-color: #fff;
|
||
display: flex;
|
||
color: #000000;
|
||
}
|
||
|
||
.order-name {
|
||
font-size: 26rpx;
|
||
flex: 0.7;
|
||
}
|
||
|
||
.payShowBox {
|
||
width: 100%;
|
||
height: 380px;
|
||
background: #fff;
|
||
box-sizing: border-box;
|
||
padding: 12px;
|
||
border-radius: 12px;
|
||
|
||
.payBoxTitle {
|
||
width: 100%;
|
||
font-weight: bold;
|
||
font-size: 16px;
|
||
display: flex;
|
||
justify-content: center;
|
||
margin-bottom: 12px;
|
||
}
|
||
|
||
.payList {
|
||
width: 100%;
|
||
height: 250px;
|
||
overflow-y: auto;
|
||
|
||
.radio-group {
|
||
.bottom-radio {
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
padding: 0 24rpx;
|
||
border-bottom: 1px solid #ededed;
|
||
padding: 12px 0;
|
||
|
||
.radioLeft {
|
||
display: flex;
|
||
align-items: center;
|
||
|
||
.logoBox {
|
||
width: 30px;
|
||
height: 30px;
|
||
border-radius: 50%;
|
||
overflow: hidden;
|
||
margin-right: 8px;
|
||
|
||
.logoIcon {
|
||
width: 30px;
|
||
height: 30px;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
.goPayBox {
|
||
width: 100%;
|
||
box-sizing: border-box;
|
||
padding: 0 24px;
|
||
|
||
.goPay {
|
||
width: 100%;
|
||
padding: 8px;
|
||
box-sizing: border-box;
|
||
border-radius: 20px;
|
||
font-size: 18px;
|
||
font-weight: bold;
|
||
color: #fff;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
background-color: #caa97f;
|
||
}
|
||
}
|
||
}
|
||
|
||
.order-num {
|
||
font-size: 26rpx;
|
||
color: #9a9a9a;
|
||
flex: 0.1;
|
||
}
|
||
|
||
.order-price {
|
||
font-size: 26rpx;
|
||
flex: 0.2;
|
||
color: #333;
|
||
text-align: right;
|
||
font-weight: bolder;
|
||
}
|
||
|
||
.coupon {
|
||
justify-content: space-between;
|
||
font-size: 26rpx;
|
||
padding-top: 36rpx;
|
||
}
|
||
|
||
.coupon-h {
|
||
display: inline-block;
|
||
background: #ed4d3e;
|
||
color: #ffffff;
|
||
padding: 4rpx 6rpx;
|
||
border-radius: 6rpx;
|
||
margin-right: 10rpx;
|
||
}
|
||
|
||
.price-sum {
|
||
border-top: 2rpx sold #f5f5f5;
|
||
padding: 20rpx 0;
|
||
box-sizing: border-box;
|
||
background-color: #fff;
|
||
text-align: right;
|
||
font-size: 24rpx;
|
||
display: flex;
|
||
justify-content: space-between;
|
||
}
|
||
|
||
.pay-price {
|
||
color: #000;
|
||
font-size: 30rpx;
|
||
margin-left: 10rpx;
|
||
}
|
||
|
||
.link-store {
|
||
color: #c6a376;
|
||
display: flex;
|
||
align-items: center;
|
||
}
|
||
|
||
hr {
|
||
background-color: #f5f5f5;
|
||
height: 2rpx;
|
||
margin-top: 24rpx;
|
||
}
|
||
|
||
// 订单信息
|
||
.order-info {
|
||
background-color: #fff;
|
||
padding: 0 20rpx;
|
||
border-radius: 12rpx;
|
||
margin: 0 24rpx;
|
||
}
|
||
|
||
.order-info-type {
|
||
height: 96rpx;
|
||
line-height: 96rpx;
|
||
font-size: 26rpx;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
}
|
||
|
||
.order-info-type + .order-info-type {
|
||
border-top: 1px solid #f5f5f5;
|
||
}
|
||
|
||
.order-info-t {
|
||
color: #a7a7a7;
|
||
}
|
||
|
||
.appoint {
|
||
display: flex;
|
||
align-items: center;
|
||
}
|
||
|
||
.appoint:after {
|
||
content: "预";
|
||
padding: 0 4rpx;
|
||
font-size: 20rpx;
|
||
height: 24rpx;
|
||
line-height: 24rpx;
|
||
margin-left: 16rpx;
|
||
font-weight: normal;
|
||
color: #fff;
|
||
border-radius: 4rpx;
|
||
background: #f5ba4f;
|
||
}
|
||
|
||
.order-info-h {
|
||
font-size: 28rpx;
|
||
font-weight: bold;
|
||
color: #000;
|
||
display: flex;
|
||
justify-content: space-between;
|
||
}
|
||
|
||
.order-info-status {
|
||
font-weight: normal;
|
||
font-size: 24rpx;
|
||
}
|
||
|
||
/* 支付方式选择 */
|
||
.bottom-box {
|
||
height: 450rpx;
|
||
width: 100%;
|
||
box-sizing: content-box;
|
||
background: #fff;
|
||
}
|
||
|
||
.bottom-pop-title {
|
||
text-align: center;
|
||
font-size: 32rpx;
|
||
padding: 20rpx 0;
|
||
border-bottom: 1rpx solid #f9f9f9;
|
||
}
|
||
|
||
.bottom-content {
|
||
box-sizing: content-box;
|
||
padding: 0 80rpx;
|
||
}
|
||
|
||
.bottom-radio {
|
||
padding: 0 24rpx;
|
||
}
|
||
|
||
.bottom-btn {
|
||
width: 600rpx;
|
||
margin: 20rpx auto;
|
||
border-radius: 8rpx;
|
||
background: #444;
|
||
color: #caa97f;
|
||
font-size: 32rpx;
|
||
text-align: center;
|
||
height: 80rpx;
|
||
line-height: 80rpx;
|
||
}
|
||
|
||
.initiateRefund {
|
||
width: 100%;
|
||
display: flex;
|
||
justify-content: flex-end;
|
||
}
|
||
</style>
|