|
@@ -0,0 +1,977 @@
|
|
|
|
|
+<template>
|
|
|
|
|
+ <view>
|
|
|
|
|
+ <view class="order-details">
|
|
|
|
|
+ <!-- 给header上与data上加on为退款订单-->
|
|
|
|
|
+ <view class="header" :class="isGoodsReturn ? 'on' : ''">
|
|
|
|
|
+ <view class="picTxt acea-row row-middle">
|
|
|
|
|
+ <!-- <view class="pictrue" v-if="isGoodsReturn == false">
|
|
|
|
|
+ <image :src="orderInfo.statusPic"></image>
|
|
|
|
|
+ </view> -->
|
|
|
|
|
+ <view class="data" :class="isGoodsReturn ? 'on' : ''">
|
|
|
|
|
+ <view class="state">{{ orderInfo.orderStatusMsg }}</view>
|
|
|
|
|
+ <view>{{ orderInfo.createTime }}</view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+
|
|
|
|
|
+ <view v-if="!isGoodsReturn" class="pad30">
|
|
|
|
|
+ <view class="nav">
|
|
|
|
|
+ <uni-steps
|
|
|
|
|
+ :active="curOrderStep"
|
|
|
|
|
+ :options="orderSteps"
|
|
|
|
|
+ activeColor="#e9c279"
|
|
|
|
|
+ ></uni-steps>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view
|
|
|
|
|
+ v-if="orderInfo.shippingType == 2 && orderInfo.paid"
|
|
|
|
|
+ class="writeOff borRadius14"
|
|
|
|
|
+ >
|
|
|
|
|
+ <view class="title">核销信息</view>
|
|
|
|
|
+ <view class="grayBg">
|
|
|
|
|
+ <view class="pictrue">
|
|
|
|
|
+ <!-- <div class="qrcode" ref="qrcode"></div> -->
|
|
|
|
|
+ <!-- <canvas canvas-id="qrcode" :style="{width: `${qrcodeSize}100%`, height: `${qrcodeSize}100%`}"/> -->
|
|
|
|
|
+ <image :src="codeImg"></image>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view class="gear">
|
|
|
|
|
+ <image src="../../static/images/writeOff.jpg"></image>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view class="num">{{ orderInfo.verifyCode }}</view>
|
|
|
|
|
+ <view class="rules" v-if="orderInfo.systemStore">
|
|
|
|
|
+ <view class="item">
|
|
|
|
|
+ <view class="rulesTitle acea-row row-middle">
|
|
|
|
|
+ <text class="iconfont icon-shijian"></text>核销时间
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view class="info">
|
|
|
|
|
+ 每日:<text class="time">{{
|
|
|
|
|
+ orderInfo.systemStore.dayTime.replace(",", "-")
|
|
|
|
|
+ }}</text>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view class="item">
|
|
|
|
|
+ <view class="rulesTitle acea-row row-middle">
|
|
|
|
|
+ <text class="iconfont icon-shuoming1"></text>使用说明
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view class="info">可将二维码出示给店员扫描或提供数字核销码</view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view v-if="orderInfo.shippingType === 1" class="address borRadius14">
|
|
|
|
|
+ <view class="name"
|
|
|
|
|
+ >{{ orderInfo.realName
|
|
|
|
|
+ }}<text class="phone">{{ orderInfo.userPhone }}</text></view
|
|
|
|
|
+ >
|
|
|
|
|
+ <view>{{ orderInfo.userAddress }}</view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view v-else class="address" style="margin-top: 15rpx">
|
|
|
|
|
+ <view class="name" @tap="makePhone"
|
|
|
|
|
+ >{{ orderInfo.systemStore ? orderInfo.systemStore.name : ""
|
|
|
|
|
+ }}<text class="phone">{{
|
|
|
|
|
+ orderInfo.systemStore ? orderInfo.systemStore.phone : ""
|
|
|
|
|
+ }}</text
|
|
|
|
|
+ ><text class="iconfont icon-tonghua font-color"></text
|
|
|
|
|
+ ></view>
|
|
|
|
|
+ <view>{{
|
|
|
|
|
+ orderInfo.systemStore ? orderInfo.systemStore.detailedAddress : ""
|
|
|
|
|
+ }}</view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+
|
|
|
|
|
+ <orderGoods
|
|
|
|
|
+ :mallType="orderInfo.mallType"
|
|
|
|
|
+ :evaluate="evaluate"
|
|
|
|
|
+ :productType="orderInfo.type"
|
|
|
|
|
+ :orderId="order_id"
|
|
|
|
|
+ :ids="id"
|
|
|
|
|
+ :uniId="uniId"
|
|
|
|
|
+ :cartInfo="cartInfo"
|
|
|
|
|
+ :sbMerchant="sbMerchant"
|
|
|
|
|
+ :jump="true"
|
|
|
|
|
+ ></orderGoods>
|
|
|
|
|
+ <!-- <div class="goodCall borRadius14" @click="kefuClick">
|
|
|
|
|
+ <span class="iconfont icon-kefu"></span><span>联系客服</span>
|
|
|
|
|
+ </div> -->
|
|
|
|
|
+ </view>
|
|
|
|
|
+
|
|
|
|
|
+ <view class="pad30">
|
|
|
|
|
+ <view class="nav refund" v-if="orderInfo.refundStatus > 0">
|
|
|
|
|
+ <view class="title">
|
|
|
|
|
+ <image src="/static/images/shuoming.png" mode=""></image>
|
|
|
|
|
+ {{ getRefundStatus() }}
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view class="con pad30">{{ getRefundReason() }}</view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view class="wrapper borRadius14">
|
|
|
|
|
+ <view class="item acea-row row-between">
|
|
|
|
|
+ <view>订单编号:</view>
|
|
|
|
|
+ <view class="conter acea-row row-middle row-right"
|
|
|
|
|
+ >{{ orderInfo.orderId }}
|
|
|
|
|
+ <!-- #ifndef H5 -->
|
|
|
|
|
+ <text class="copy" @tap="copy">复制</text>
|
|
|
|
|
+ <!-- #endif -->
|
|
|
|
|
+ <!-- #ifdef H5 -->
|
|
|
|
|
+ <text class="copy copy-data" @click="setOrderId">复制</text>
|
|
|
|
|
+ <!-- #endif -->
|
|
|
|
|
+ </view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view class="item acea-row row-between">
|
|
|
|
|
+ <view>下单时间:</view>
|
|
|
|
|
+ <view class="conter">{{ orderInfo.createTime || 0 }}</view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view class="item acea-row row-between">
|
|
|
|
|
+ <view>支付状态:</view>
|
|
|
|
|
+ <view class="conter" v-if="orderInfo.paid">已支付</view>
|
|
|
|
|
+ <view class="conter" v-else>未支付</view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view class="item acea-row row-between">
|
|
|
|
|
+ <view>支付方式:</view>
|
|
|
|
|
+ <view class="conter" v-if="orderInfo.mallType === 0">{{
|
|
|
|
|
+ orderInfo.payTypeStr
|
|
|
|
|
+ }}</view>
|
|
|
|
|
+ <view class="conter" v-else>贝币</view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view class="item acea-row row-between" v-if="orderInfo.mark">
|
|
|
|
|
+ <view>买家留言:</view>
|
|
|
|
|
+ <view class="conter">{{ orderInfo.mark }}</view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <!-- 退款订单详情 "-->
|
|
|
|
|
+ <view v-if="isGoodsReturn" class="wrapper borRadius14">
|
|
|
|
|
+ <view class="item acea-row row-between">
|
|
|
|
|
+ <view>收货人:</view>
|
|
|
|
|
+ <view class="conter">{{ orderInfo.realName }}</view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view class="item acea-row row-between">
|
|
|
|
|
+ <view>联系电话:</view>
|
|
|
|
|
+ <view class="conter">{{ orderInfo.userPhone }}</view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view class="item acea-row row-between">
|
|
|
|
|
+ <view>收货地址:</view>
|
|
|
|
|
+ <view class="conter">{{ orderInfo.userAddress }}</view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view class="item acea-row row-between">
|
|
|
|
|
+ <view>退款快递单号:</view>
|
|
|
|
|
+ <view class="conter">{{ orderInfo.refundExpressNum }}</view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view v-if="orderInfo.status > 0">
|
|
|
|
|
+ <view
|
|
|
|
|
+ class="wrapper borRadius14"
|
|
|
|
|
+ v-if="orderInfo.deliveryType == 'express'"
|
|
|
|
|
+ >
|
|
|
|
|
+ <view class="item acea-row row-between">
|
|
|
|
|
+ <view>配送方式:</view>
|
|
|
|
|
+ <view class="conter">发货</view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view class="item acea-row row-between">
|
|
|
|
|
+ <view>快递公司:</view>
|
|
|
|
|
+ <view class="conter">{{ orderInfo.deliveryName || "" }}</view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view class="item acea-row row-between">
|
|
|
|
|
+ <view>快递号:</view>
|
|
|
|
|
+ <view class="conter">{{ orderInfo.deliveryId || "" }}</view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view
|
|
|
|
|
+ class="wrapper borRadius14"
|
|
|
|
|
+ v-else-if="orderInfo.deliveryType == 'send'"
|
|
|
|
|
+ >
|
|
|
|
|
+ <view class="item acea-row row-between">
|
|
|
|
|
+ <view>配送方式:</view>
|
|
|
|
|
+ <view class="conter">送货</view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view class="item acea-row row-between">
|
|
|
|
|
+ <view>配送人姓名:</view>
|
|
|
|
|
+ <view class="conter">{{ orderInfo.deliveryName || "" }}</view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view class="item acea-row row-between">
|
|
|
|
|
+ <view>联系电话:</view>
|
|
|
|
|
+ <view class="conter acea-row row-middle row-right"
|
|
|
|
|
+ >{{ orderInfo.deliveryId || ""
|
|
|
|
|
+ }}<text class="copy" @tap="goTel">拨打</text></view
|
|
|
|
|
+ >
|
|
|
|
|
+ </view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view
|
|
|
|
|
+ class="wrapper borRadius14"
|
|
|
|
|
+ v-else-if="orderInfo.deliveryType == 'fictitious'"
|
|
|
|
|
+ >
|
|
|
|
|
+ <view class="item acea-row row-between">
|
|
|
|
|
+ <view>虚拟发货:</view>
|
|
|
|
|
+ <view class="conter">已发货,请注意查收</view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view class="wrapper borRadius14">
|
|
|
|
|
+ <view class="item acea-row row-between">
|
|
|
|
|
+ <view>商品总价:</view>
|
|
|
|
|
+ <view class="conter" v-if="orderInfo.mallType === 0">
|
|
|
|
|
+ ¥{{ orderInfo.proTotalPrice }}
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view class="conter" v-else>{{ orderInfo.proTotalPrice }}</view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view
|
|
|
|
|
+ class="item acea-row row-between"
|
|
|
|
|
+ v-if="orderInfo.payPostage > 0"
|
|
|
|
|
+ >
|
|
|
|
|
+ <view>运费:</view>
|
|
|
|
|
+ <view class="conter">¥{{ orderInfo.payPostage }}</view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view
|
|
|
|
|
+ class="item acea-row row-between"
|
|
|
|
|
+ v-if="orderInfo.payPostage > 0 && orderInfo?.additionalAmount"
|
|
|
|
|
+ >
|
|
|
|
|
+ <view>附加费:</view>
|
|
|
|
|
+ <view class="conter">¥{{ orderInfo.additionalAmount }}</view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <!-- <view class="item acea-row row-between" v-if="orderInfo.couponId">
|
|
|
|
|
+ <view>优惠券抵扣:</view>
|
|
|
|
|
+ <view class="conter">-¥{{ orderInfo.couponPrice }}</view>
|
|
|
|
|
+ </view> -->
|
|
|
|
|
+ <view
|
|
|
|
|
+ class="item acea-row row-between"
|
|
|
|
|
+ v-if="orderInfo.mallType === 0"
|
|
|
|
|
+ >
|
|
|
|
|
+ <view>会员折扣:</view>
|
|
|
|
|
+ <view class="conter">-¥{{ orderInfo.vipLevelDis }}</view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view
|
|
|
|
|
+ v-if="orderInfo.mallType === 0"
|
|
|
|
|
+ class="actualPay acea-row row-right"
|
|
|
|
|
+ >
|
|
|
|
|
+ 实付款:<text class="money font-color">
|
|
|
|
|
+ ¥{{ orderInfo.payPrice }}
|
|
|
|
|
+ </text>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view v-else class="actualPay acea-row row-right"
|
|
|
|
|
+ >实付款:<text class="money font-color">
|
|
|
|
|
+ {{ Number(orderInfo.proTotalPrice) }}贝币
|
|
|
|
|
+ </text>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view style="height: 120rpx"></view>
|
|
|
|
|
+ <view
|
|
|
|
|
+ class="footer acea-row row-right row-middle"
|
|
|
|
|
+ v-if="isGoodsReturn == false"
|
|
|
|
|
+ >
|
|
|
|
|
+ <view class="qs-btn" v-if="!orderInfo.paid" @click.stop="cancelOrder"
|
|
|
|
|
+ >取消订单</view
|
|
|
|
|
+ >
|
|
|
|
|
+ <view
|
|
|
|
|
+ class="bnt bg-color"
|
|
|
|
|
+ v-if="!orderInfo.paid"
|
|
|
|
|
+ @tap="pay_open(orderInfo.orderId)"
|
|
|
|
|
+ >立即付款</view
|
|
|
|
|
+ >
|
|
|
|
|
+
|
|
|
|
|
+ <navigator
|
|
|
|
|
+ hover-class="none"
|
|
|
|
|
+ :url="
|
|
|
|
|
+ '/pages/users/goods_return/index?orderId=' + orderInfo.orderId
|
|
|
|
|
+ "
|
|
|
|
|
+ class="bnt cancel"
|
|
|
|
|
+ v-else-if="
|
|
|
|
|
+ orderInfo.paid === true &&
|
|
|
|
|
+ orderInfo.refundStatus === 0 &&
|
|
|
|
|
+ orderInfo.type !== 1 &&
|
|
|
|
|
+ orderInfo.mallType !== 1 &&
|
|
|
|
|
+ type === 'normal'
|
|
|
|
|
+ "
|
|
|
|
|
+ >
|
|
|
|
|
+ 申请退款
|
|
|
|
|
+ </navigator>
|
|
|
|
|
+ <navigator
|
|
|
|
|
+ class="bnt cancel"
|
|
|
|
|
+ v-if="orderInfo.deliveryType == 'express' && orderInfo.status > 0"
|
|
|
|
|
+ hover-class="none"
|
|
|
|
|
+ :url="`/pages/users/goods_logistics/index?orderId=${orderInfo.orderId}`"
|
|
|
|
|
+ >查看物流
|
|
|
|
|
+ </navigator>
|
|
|
|
|
+ <view
|
|
|
|
|
+ class="bnt bg-color"
|
|
|
|
|
+ v-if="orderInfo.status == 1"
|
|
|
|
|
+ @tap="confirmOrder"
|
|
|
|
|
+ >确认收货</view
|
|
|
|
|
+ >
|
|
|
|
|
+ <view class="bnt cancel" v-if="orderInfo.status == 3" @tap="delOrder"
|
|
|
|
|
+ >删除订单</view
|
|
|
|
|
+ >
|
|
|
|
|
+ <view
|
|
|
|
|
+ class="bnt bg-color"
|
|
|
|
|
+ v-if="orderInfo.status == 3 && orderInfo.type !== 1"
|
|
|
|
|
+ @tap="goOrderConfirm"
|
|
|
|
|
+ >再次购买</view
|
|
|
|
|
+ >
|
|
|
|
|
+ </view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <payment
|
|
|
|
|
+ :payMode="payMode"
|
|
|
|
|
+ :showPopup="showPopup"
|
|
|
|
|
+ @payComplete="payComplete"
|
|
|
|
|
+ @close="payClose"
|
|
|
|
|
+ :order_id="pay_order_id"
|
|
|
|
|
+ :totalPrice="totalPrice"
|
|
|
|
|
+ :mallType="orderInfo.mallType"
|
|
|
|
|
+ ></payment>
|
|
|
|
|
+ </view>
|
|
|
|
|
+</template>
|
|
|
|
|
+
|
|
|
|
|
+<script setup>
|
|
|
|
|
+import { ref, reactive, computed } from "vue";
|
|
|
|
|
+import { useAppStore } from "@/stores/app.js";
|
|
|
|
|
+import { onLoad, onShow, onHide } from "@dcloudio/uni-app";
|
|
|
|
|
+import {
|
|
|
|
|
+ getOrderDetail,
|
|
|
|
|
+ orderTake,
|
|
|
|
|
+ orderDel,
|
|
|
|
|
+ orderCancel,
|
|
|
|
|
+ qrcodeApi,
|
|
|
|
|
+} from "@/api/order.js";
|
|
|
|
|
+import { openOrderRefundSubscribe } from "@/utils/SubscribeMessage.js";
|
|
|
|
|
+import payment from "@/components/payment";
|
|
|
|
|
+import orderGoods from "@/components/orderGoods";
|
|
|
|
|
+import { toLogin } from "@/libs/login.js";
|
|
|
|
|
+import { useToast } from "@/hooks/useToast";
|
|
|
|
|
+import { getPreOrder } from "@/libs/order";
|
|
|
|
|
+
|
|
|
|
|
+const appStore = useAppStore();
|
|
|
|
|
+const { Toast } = useToast();
|
|
|
|
|
+
|
|
|
|
|
+const codeImg = ref("");
|
|
|
|
|
+const order_id = ref("");
|
|
|
|
|
+const evaluate = ref(0);
|
|
|
|
|
+const cartInfo = ref([]);
|
|
|
|
|
+const sbMerchant = ref({});
|
|
|
|
|
+const orderInfo = reactive({
|
|
|
|
|
+ systemStore: {},
|
|
|
|
|
+ pstatus: {},
|
|
|
|
|
+});
|
|
|
|
|
+const system_store = ref({});
|
|
|
|
|
+const isGoodsReturn = ref(false);
|
|
|
|
|
+const status = ref({});
|
|
|
|
|
+const isClose = ref(false);
|
|
|
|
|
+const payMode = ref([
|
|
|
|
|
+ {
|
|
|
|
|
+ name: "支付宝支付",
|
|
|
|
|
+ icon: "icon-zhifubao",
|
|
|
|
|
+ value: "alipay",
|
|
|
|
|
+ title: "支付宝快捷支付",
|
|
|
|
|
+ payChannel: "appAliPay",
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ name: "微信支付",
|
|
|
|
|
+ icon: "icon-wechat",
|
|
|
|
|
+ value: "weixin",
|
|
|
|
|
+ title: "微信快捷支付",
|
|
|
|
|
+ payChannel: "weixinApp",
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ name: "余额支付",
|
|
|
|
|
+ icon: "icon-balance",
|
|
|
|
|
+ value: "yue",
|
|
|
|
|
+ title: "可用余额:",
|
|
|
|
|
+ payChannel: "yue",
|
|
|
|
|
+ number: 0,
|
|
|
|
|
+ },
|
|
|
|
|
+]);
|
|
|
|
|
+const showPopup = ref(false);
|
|
|
|
|
+const pay_order_id = ref("");
|
|
|
|
|
+const totalPrice = ref("0");
|
|
|
|
|
+const id = ref(0);
|
|
|
|
|
+const uniId = ref("");
|
|
|
|
|
+const type = ref("normal");
|
|
|
|
|
+
|
|
|
|
|
+function payComplete() {
|
|
|
|
|
+ showPopup.value = false;
|
|
|
|
|
+ pay_order_id.value = "";
|
|
|
|
|
+ getOrderInfo();
|
|
|
|
|
+}
|
|
|
|
|
+function openSubcribe(page) {
|
|
|
|
|
+ uni.showLoading({ title: "正在加载" });
|
|
|
|
|
+ openOrderRefundSubscribe()
|
|
|
|
|
+ .then(() => {
|
|
|
|
|
+ uni.hideLoading();
|
|
|
|
|
+ uni.navigateTo({ url: page });
|
|
|
|
|
+ })
|
|
|
|
|
+ .catch(() => {
|
|
|
|
|
+ uni.hideLoading();
|
|
|
|
|
+ });
|
|
|
|
|
+}
|
|
|
|
|
+function makePhone() {
|
|
|
|
|
+ uni.makePhoneCall({
|
|
|
|
|
+ phoneNumber: system_store.value.phone,
|
|
|
|
|
+ });
|
|
|
|
|
+}
|
|
|
|
|
+function payClose() {
|
|
|
|
|
+ showPopup.value = false;
|
|
|
|
|
+}
|
|
|
|
|
+function pay_open() {
|
|
|
|
|
+ showPopup.value = true;
|
|
|
|
|
+ pay_order_id.value = orderInfo.orderId;
|
|
|
|
|
+ totalPrice.value = orderInfo.payPrice;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+function getRefundStatus() {
|
|
|
|
|
+ const statusMap = {
|
|
|
|
|
+ 1: "商家审核中",
|
|
|
|
|
+ 2: "商家已退款",
|
|
|
|
|
+ 3: "商家退款中",
|
|
|
|
|
+ };
|
|
|
|
|
+ return orderInfo?.refundStatus ? statusMap[orderInfo.refundStatus] : "";
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+function getRefundReason() {
|
|
|
|
|
+ if (orderInfo.refundStatus == 1) {
|
|
|
|
|
+ return "您已成功发起退款申请,请耐心等待商家处理;退款前请与商家协商一致,有助于更好的处理售后问题";
|
|
|
|
|
+ } else if (orderInfo.refundStatus == 2) {
|
|
|
|
|
+ return "退款已成功受理,如商家已寄出商品请尽快退回;感谢您的支持";
|
|
|
|
|
+ } else if (orderInfo?.refundReason) {
|
|
|
|
|
+ return "拒绝原因:" + orderInfo?.refundReason;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 订单步骤配置
|
|
|
|
|
+const orderSteps = ref([
|
|
|
|
|
+ { title: "待付款" },
|
|
|
|
|
+ { title: "待发货" },
|
|
|
|
|
+ { title: "待收货" },
|
|
|
|
|
+ { title: "已完成" },
|
|
|
|
|
+]);
|
|
|
|
|
+
|
|
|
|
|
+// 当前的订单状态
|
|
|
|
|
+const curOrderStep = computed(() => {
|
|
|
|
|
+ let step = 0;
|
|
|
|
|
+ if (!orderInfo.paid) {
|
|
|
|
|
+ step = 0; // 待付款
|
|
|
|
|
+ } else if (orderInfo.status === 0) {
|
|
|
|
|
+ step = 1; // 待发货
|
|
|
|
|
+ } else if (orderInfo.status === 1) {
|
|
|
|
|
+ step = 2; // 待收货
|
|
|
|
|
+ } else if (orderInfo.status === 2 || orderInfo.status === 3) {
|
|
|
|
|
+ step = 3; // 已完成
|
|
|
|
|
+ }
|
|
|
|
|
+ return step;
|
|
|
|
|
+});
|
|
|
|
|
+function getOrderInfo() {
|
|
|
|
|
+ uni.showLoading({ title: "正在加载中" });
|
|
|
|
|
+ getOrderDetail(order_id.value)
|
|
|
|
|
+ .then((res) => {
|
|
|
|
|
+ uni.hideLoading();
|
|
|
|
|
+ Object.assign(orderInfo, res.data);
|
|
|
|
|
+ evaluate.value = res.data.status == 2 ? 2 : 0;
|
|
|
|
|
+ system_store.value = res.data.systemStore;
|
|
|
|
|
+ id.value = res.data.id;
|
|
|
|
|
+ cartInfo.value = res.data.orderInfoList;
|
|
|
|
|
+ sbMerchant.value = res.data.sbMerchant;
|
|
|
|
|
+ if (res.data.refundStatus != 0) isGoodsReturn.value = true;
|
|
|
|
|
+ if (orderInfo.shippingType == 2 && orderInfo.paid)
|
|
|
|
|
+ markCode(res.data.verifyCode);
|
|
|
|
|
+ if (orderInfo.refundStatus > 0) {
|
|
|
|
|
+ // uni.setNavigationBarColor({
|
|
|
|
|
+ // frontColor: "#ffffff",
|
|
|
|
|
+ // backgroundColor: "#666666",
|
|
|
|
|
+ // });
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
|
|
+ .catch((err) => {
|
|
|
|
|
+ uni.hideLoading();
|
|
|
|
|
+ Toast({ title: err }, "/pages/users/order_list/index");
|
|
|
|
|
+ });
|
|
|
|
|
+}
|
|
|
|
|
+function markCode(text) {
|
|
|
|
|
+ qrcodeApi({
|
|
|
|
|
+ height: "145",
|
|
|
|
|
+ text: text,
|
|
|
|
|
+ width: "145",
|
|
|
|
|
+ }).then((res) => {
|
|
|
|
|
+ codeImg.value = res.data.code;
|
|
|
|
|
+ });
|
|
|
|
|
+}
|
|
|
|
|
+// #ifndef H5
|
|
|
|
|
+function copy() {
|
|
|
|
|
+ uni.setClipboardData({
|
|
|
|
|
+ data: orderInfo.orderId,
|
|
|
|
|
+ });
|
|
|
|
|
+}
|
|
|
|
|
+// #endif
|
|
|
|
|
+function goTel() {
|
|
|
|
|
+ uni.makePhoneCall({
|
|
|
|
|
+ phoneNumber: orderInfo.deliveryId,
|
|
|
|
|
+ });
|
|
|
|
|
+}
|
|
|
|
|
+function getOrderStatus() {
|
|
|
|
|
+ let _orderInfo = orderInfo || {},
|
|
|
|
|
+ _status = _orderInfo.pstatus || { type: 0 },
|
|
|
|
|
+ _statusObj = {};
|
|
|
|
|
+ let typeVal = parseInt(_status.type),
|
|
|
|
|
+ delivery_type = _orderInfo.deliveryType,
|
|
|
|
|
+ seckill_id = _orderInfo.seckillId ? parseInt(_orderInfo.seckillId) : 0,
|
|
|
|
|
+ bargain_id = _orderInfo.bargainId ? parseInt(_orderInfo.bargainId) : 0,
|
|
|
|
|
+ combination_id = _orderInfo.combinationId
|
|
|
|
|
+ ? parseInt(_orderInfo.combinationId)
|
|
|
|
|
+ : 0;
|
|
|
|
|
+ _statusObj = {
|
|
|
|
|
+ type: typeVal == 9 ? -9 : typeVal,
|
|
|
|
|
+ class_status: 0,
|
|
|
|
|
+ };
|
|
|
|
|
+ if (typeVal == 1 && combination_id > 0) _statusObj.class_status = 1;
|
|
|
|
|
+ if (typeVal == 2 && delivery_type == "express") _statusObj.class_status = 2;
|
|
|
|
|
+ if (typeVal == 2) _statusObj.class_status = 3;
|
|
|
|
|
+ if (typeVal == 4 || typeVal == 0) _statusObj.class_status = 4;
|
|
|
|
|
+ if (
|
|
|
|
|
+ !seckill_id &&
|
|
|
|
|
+ !bargain_id &&
|
|
|
|
|
+ !combination_id &&
|
|
|
|
|
+ (typeVal == 3 || typeVal == 4)
|
|
|
|
|
+ )
|
|
|
|
|
+ _statusObj.class_status = 5;
|
|
|
|
|
+ status.value = _statusObj;
|
|
|
|
|
+}
|
|
|
|
|
+function goJoinPink() {
|
|
|
|
|
+ uni.navigateTo({
|
|
|
|
|
+ url:
|
|
|
|
|
+ "/pages/activity/goods_combination_status/index?id=" + orderInfo.pinkId,
|
|
|
|
|
+ });
|
|
|
|
|
+}
|
|
|
|
|
+function goOrderConfirm() {
|
|
|
|
|
+ const params = {
|
|
|
|
|
+ mallType: orderInfo.mallType,
|
|
|
|
|
+ preOrderType: "again",
|
|
|
|
|
+ orderDetails: [{ orderNo: order_id.value }],
|
|
|
|
|
+ };
|
|
|
|
|
+ getPreOrder(params);
|
|
|
|
|
+}
|
|
|
|
|
+function confirmOrder() {
|
|
|
|
|
+ uni.showModal({
|
|
|
|
|
+ title: "确认收货",
|
|
|
|
|
+ content: "为保障权益,请收到货确认无误后,再确认收货",
|
|
|
|
|
+ success: function (res) {
|
|
|
|
|
+ if (res.confirm) {
|
|
|
|
|
+ orderTake(id.value)
|
|
|
|
|
+ .then(() => {
|
|
|
|
|
+ Toast({ title: "操作成功", icon: "success" }, function () {
|
|
|
|
|
+ getOrderInfo();
|
|
|
|
|
+ });
|
|
|
|
|
+ })
|
|
|
|
|
+ .catch((err) => {
|
|
|
|
|
+ Toast({ title: err });
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ });
|
|
|
|
|
+}
|
|
|
|
|
+function delOrder() {
|
|
|
|
|
+ orderDel(id.value)
|
|
|
|
|
+ .then(() => {
|
|
|
|
|
+ Toast({ title: "删除成功", icon: "success" }, { tab: 3, url: 1 });
|
|
|
|
|
+ })
|
|
|
|
|
+ .catch((err) => {
|
|
|
|
|
+ Toast({ title: err });
|
|
|
|
|
+ });
|
|
|
|
|
+}
|
|
|
|
|
+function cancelOrder() {
|
|
|
|
|
+ uni.showModal({
|
|
|
|
|
+ title: "提示",
|
|
|
|
|
+ content: "确认取消该订单?",
|
|
|
|
|
+ success: function (res) {
|
|
|
|
|
+ if (res.confirm) {
|
|
|
|
|
+ orderCancel(orderInfo.id)
|
|
|
|
|
+ .then(() => {
|
|
|
|
|
+ Toast({ title: "取消成功" });
|
|
|
|
|
+ uni.navigateTo({ url: "/pages/order_list/index" });
|
|
|
|
|
+ })
|
|
|
|
|
+ .catch((err) => {
|
|
|
|
|
+ Toast({ title: err });
|
|
|
|
|
+ getOrderInfo();
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ });
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 生命周期
|
|
|
|
|
+onLoad((options) => {
|
|
|
|
|
+ type.value =
|
|
|
|
|
+ options.type == undefined || options.type == null ? "normal" : options.type;
|
|
|
|
|
+ if (!options.order_id && !options.uniId) {
|
|
|
|
|
+ Toast({ title: "缺少参数" }, { tab: 3, url: 1 });
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ order_id.value = options.order_id;
|
|
|
|
|
+});
|
|
|
|
|
+onShow(() => {
|
|
|
|
|
+ if (appStore.isLogin) {
|
|
|
|
|
+ getOrderInfo();
|
|
|
|
|
+ payMode.value[2].number = appStore.$userInfo.nowMoney;
|
|
|
|
|
+ payMode.value = [...payMode.value];
|
|
|
|
|
+ } else {
|
|
|
|
|
+ toLogin();
|
|
|
|
|
+ }
|
|
|
|
|
+});
|
|
|
|
|
+onHide(() => {
|
|
|
|
|
+ isClose.value = true;
|
|
|
|
|
+});
|
|
|
|
|
+
|
|
|
|
|
+const setOrderId = () => {
|
|
|
|
|
+ uni.setClipboardData({
|
|
|
|
|
+ data: orderInfo.orderId,
|
|
|
|
|
+ success: function () {
|
|
|
|
|
+ Toast({ title: "复制成功" });
|
|
|
|
|
+ },
|
|
|
|
|
+ });
|
|
|
|
|
+};
|
|
|
|
|
+</script>
|
|
|
|
|
+
|
|
|
|
|
+<style scoped lang="scss">
|
|
|
|
|
+.order-details {
|
|
|
|
|
+ .header {
|
|
|
|
|
+ height: 250rpx;
|
|
|
|
|
+ padding: 0 30rpx;
|
|
|
|
|
+ background-color: $header-color;
|
|
|
|
|
+
|
|
|
|
|
+ &.on {
|
|
|
|
|
+ background-color: $header-color !important;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .picTxt {
|
|
|
|
|
+ height: 150rpx;
|
|
|
|
|
+
|
|
|
|
|
+ .pictrue {
|
|
|
|
|
+ width: 110rpx;
|
|
|
|
|
+ height: 110rpx;
|
|
|
|
|
+
|
|
|
|
|
+ image {
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ height: 100%;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .data {
|
|
|
|
|
+ color: rgba(255, 255, 255, 0.8);
|
|
|
|
|
+ font-size: 24rpx;
|
|
|
|
|
+ margin-left: 27rpx;
|
|
|
|
|
+
|
|
|
|
|
+ &.on {
|
|
|
|
|
+ margin-left: 0;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .state {
|
|
|
|
|
+ font-size: 30rpx;
|
|
|
|
|
+ font-weight: bold;
|
|
|
|
|
+ color: #fff;
|
|
|
|
|
+ margin-bottom: 7rpx;
|
|
|
|
|
+ }
|
|
|
|
|
+ .time {
|
|
|
|
|
+ margin-left: 20rpx;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .nav {
|
|
|
|
|
+ background-color: #fff;
|
|
|
|
|
+ font-size: 26rpx;
|
|
|
|
|
+ color: #282828;
|
|
|
|
|
+ padding: 27rpx 0;
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ border-radius: 14rpx;
|
|
|
|
|
+ margin: -100rpx auto 0 auto;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .address {
|
|
|
|
|
+ font-size: 26rpx;
|
|
|
|
|
+ color: #868686;
|
|
|
|
|
+ background-color: #fff;
|
|
|
|
|
+ margin-top: 15rpx;
|
|
|
|
|
+ padding: 30rpx 24rpx;
|
|
|
|
|
+
|
|
|
|
|
+ .name {
|
|
|
|
|
+ font-size: 30rpx;
|
|
|
|
|
+ color: #282828;
|
|
|
|
|
+ margin-bottom: 15rpx;
|
|
|
|
|
+
|
|
|
|
|
+ .phone {
|
|
|
|
|
+ margin-left: 40rpx;
|
|
|
|
|
+ }
|
|
|
|
|
+ .iconfont {
|
|
|
|
|
+ font-size: 34rpx;
|
|
|
|
|
+ margin-left: 10rpx;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .line {
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ height: 3rpx;
|
|
|
|
|
+
|
|
|
|
|
+ image {
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ height: 100%;
|
|
|
|
|
+ display: block;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .wrapper {
|
|
|
|
|
+ background-color: #fff;
|
|
|
|
|
+ margin-top: 12rpx;
|
|
|
|
|
+ padding: 30rpx 24rpx;
|
|
|
|
|
+
|
|
|
|
|
+ .item {
|
|
|
|
|
+ font-size: 28rpx;
|
|
|
|
|
+ color: #282828;
|
|
|
|
|
+
|
|
|
|
|
+ & ~ .item {
|
|
|
|
|
+ margin-top: 20rpx;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .conter {
|
|
|
|
|
+ color: #868686;
|
|
|
|
|
+ text-align: right;
|
|
|
|
|
+
|
|
|
|
|
+ .copy {
|
|
|
|
|
+ font-size: 20rpx;
|
|
|
|
|
+ color: #333;
|
|
|
|
|
+ border-radius: 20rpx;
|
|
|
|
|
+ border: 1rpx solid #666;
|
|
|
|
|
+ padding: 3rpx 15rpx;
|
|
|
|
|
+ margin-left: 24rpx;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .actualPay {
|
|
|
|
|
+ border-top: 1rpx solid #eee;
|
|
|
|
|
+ margin-top: 30rpx;
|
|
|
|
|
+ padding-top: 30rpx;
|
|
|
|
|
+
|
|
|
|
|
+ .money {
|
|
|
|
|
+ font-weight: bold;
|
|
|
|
|
+ font-size: 30rpx;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .footer {
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ height: 100rpx;
|
|
|
|
|
+ position: fixed;
|
|
|
|
|
+ bottom: 0;
|
|
|
|
|
+ left: 0;
|
|
|
|
|
+ background-color: #fff;
|
|
|
|
|
+ padding: 0 30rpx;
|
|
|
|
|
+ box-sizing: border-box;
|
|
|
|
|
+
|
|
|
|
|
+ .bnt {
|
|
|
|
|
+ width: 158rpx;
|
|
|
|
|
+ height: 54rpx;
|
|
|
|
|
+ text-align: center;
|
|
|
|
|
+ line-height: 54rpx;
|
|
|
|
|
+ border-radius: 50rpx;
|
|
|
|
|
+ color: #fff;
|
|
|
|
|
+ font-size: 27rpx;
|
|
|
|
|
+
|
|
|
|
|
+ &.cancel {
|
|
|
|
|
+ color: #F8C008;
|
|
|
|
|
+ border: 1rpx solid #F8C008;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ & ~ .bnt {
|
|
|
|
|
+ margin-left: 18rpx;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .writeOff {
|
|
|
|
|
+ background-color: #fff;
|
|
|
|
|
+ margin-top: 15rpx;
|
|
|
|
|
+ padding-bottom: 50rpx;
|
|
|
|
|
+
|
|
|
|
|
+ .title {
|
|
|
|
|
+ font-size: 30rpx;
|
|
|
|
|
+ color: #282828;
|
|
|
|
|
+ height: 87rpx;
|
|
|
|
|
+ border-bottom: 1px solid #f0f0f0;
|
|
|
|
|
+ padding: 0 24rpx;
|
|
|
|
|
+ line-height: 87rpx;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .grayBg {
|
|
|
|
|
+ background-color: #f2f5f7;
|
|
|
|
|
+ width: 590rpx;
|
|
|
|
|
+ height: 384rpx;
|
|
|
|
|
+ border-radius: 20rpx 20rpx 0 0;
|
|
|
|
|
+ margin: 50rpx auto 0 auto;
|
|
|
|
|
+ padding-top: 55rpx;
|
|
|
|
|
+
|
|
|
|
|
+ .pictrue {
|
|
|
|
|
+ width: 290rpx;
|
|
|
|
|
+ height: 290rpx;
|
|
|
|
|
+ margin: 0 auto;
|
|
|
|
|
+
|
|
|
|
|
+ image {
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ height: 100%;
|
|
|
|
|
+ display: block;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .gear {
|
|
|
|
|
+ width: 590rpx;
|
|
|
|
|
+ height: 30rpx;
|
|
|
|
|
+ margin: 0 auto;
|
|
|
|
|
+
|
|
|
|
|
+ image {
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ height: 100%;
|
|
|
|
|
+ display: block;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .num {
|
|
|
|
|
+ background-color: #f0c34c;
|
|
|
|
|
+ width: 590rpx;
|
|
|
|
|
+ height: 84rpx;
|
|
|
|
|
+ color: #282828;
|
|
|
|
|
+ font-size: 48rpx;
|
|
|
|
|
+ margin: 0 auto;
|
|
|
|
|
+ border-radius: 0 0 20rpx 20rpx;
|
|
|
|
|
+ text-align: center;
|
|
|
|
|
+ padding-top: 4rpx;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .rules {
|
|
|
|
|
+ margin: 46rpx 30rpx 0 30rpx;
|
|
|
|
|
+ border-top: 1px solid #f0f0f0;
|
|
|
|
|
+ padding-top: 10rpx;
|
|
|
|
|
+
|
|
|
|
|
+ .item {
|
|
|
|
|
+ margin-top: 20rpx;
|
|
|
|
|
+
|
|
|
|
|
+ .rulesTitle {
|
|
|
|
|
+ font-size: 28rpx;
|
|
|
|
|
+ color: #282828;
|
|
|
|
|
+
|
|
|
|
|
+ .iconfont {
|
|
|
|
|
+ font-size: 30rpx;
|
|
|
|
|
+ color: #333;
|
|
|
|
|
+ margin-right: 8rpx;
|
|
|
|
|
+ margin-top: 5rpx;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .info {
|
|
|
|
|
+ font-size: 28rpx;
|
|
|
|
|
+ color: #999;
|
|
|
|
|
+ margin-top: 7rpx;
|
|
|
|
|
+
|
|
|
|
|
+ .time {
|
|
|
|
|
+ margin-left: 20rpx;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .map {
|
|
|
|
|
+ height: 86rpx;
|
|
|
|
|
+ font-size: 30rpx;
|
|
|
|
|
+ color: #282828;
|
|
|
|
|
+ line-height: 86rpx;
|
|
|
|
|
+ border-bottom: 1px solid #f0f0f0;
|
|
|
|
|
+ margin-top: 15rpx;
|
|
|
|
|
+ background-color: #fff;
|
|
|
|
|
+ padding: 0 24rpx;
|
|
|
|
|
+
|
|
|
|
|
+ .place {
|
|
|
|
|
+ font-size: 26rpx;
|
|
|
|
|
+ width: 176rpx;
|
|
|
|
|
+ height: 50rpx;
|
|
|
|
|
+ border-radius: 25rpx;
|
|
|
|
|
+ line-height: 50rpx;
|
|
|
|
|
+ text-align: center;
|
|
|
|
|
+
|
|
|
|
|
+ .iconfont {
|
|
|
|
|
+ font-size: 27rpx;
|
|
|
|
|
+ height: 27rpx;
|
|
|
|
|
+ line-height: 27rpx;
|
|
|
|
|
+ margin: 2rpx 3rpx 0 0;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .refund {
|
|
|
|
|
+ padding: 0 !important;
|
|
|
|
|
+ margin-top: 15rpx;
|
|
|
|
|
+ background-color: #fff;
|
|
|
|
|
+
|
|
|
|
|
+ .title {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ font-size: 30rpx;
|
|
|
|
|
+ color: #333;
|
|
|
|
|
+ height: 86rpx;
|
|
|
|
|
+ border-bottom: 1px solid #f5f5f5;
|
|
|
|
|
+ font-weight: 400;
|
|
|
|
|
+ padding: 0 24rpx;
|
|
|
|
|
+
|
|
|
|
|
+ image {
|
|
|
|
|
+ width: 32rpx;
|
|
|
|
|
+ height: 32rpx;
|
|
|
|
|
+ margin-right: 10rpx;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .con {
|
|
|
|
|
+ font-size: 25rpx;
|
|
|
|
|
+ color: #666666;
|
|
|
|
|
+ padding: 30rpx 24rpx;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.goodCall {
|
|
|
|
|
+ color: $theme-color;
|
|
|
|
|
+ text-align: center;
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ height: 86rpx;
|
|
|
|
|
+ padding: 0 30rpx;
|
|
|
|
|
+ border-bottom: 1rpx solid #eee;
|
|
|
|
|
+ font-size: 30rpx;
|
|
|
|
|
+ line-height: 86rpx;
|
|
|
|
|
+ background: #fff;
|
|
|
|
|
+
|
|
|
|
|
+ .icon-kefu {
|
|
|
|
|
+ font-size: 36rpx;
|
|
|
|
|
+ margin-right: 15rpx;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /* #ifdef MP */
|
|
|
|
|
+ button {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ justify-content: center;
|
|
|
|
|
+ height: 86rpx;
|
|
|
|
|
+ font-size: 30rpx;
|
|
|
|
|
+ color: $theme-color;
|
|
|
|
|
+ }
|
|
|
|
|
+ /* #endif */
|
|
|
|
|
+}
|
|
|
|
|
+</style>
|
|
|
|
|
+
|
|
|
|
|
+<style>
|
|
|
|
|
+.qs-btn {
|
|
|
|
|
+ width: auto;
|
|
|
|
|
+ height: 60rpx;
|
|
|
|
|
+ text-align: center;
|
|
|
|
|
+ line-height: 60rpx;
|
|
|
|
|
+ border-radius: 50rpx;
|
|
|
|
|
+ color: #fff;
|
|
|
|
|
+ font-size: 27rpx;
|
|
|
|
|
+ padding: 0 3%;
|
|
|
|
|
+ color: #aaa;
|
|
|
|
|
+ border: 1px solid #ddd;
|
|
|
|
|
+ margin-right: 20rpx;
|
|
|
|
|
+}
|
|
|
|
|
+</style>
|