Files
lucky_shop/pages_order/detail.vue
ZF sun f7fb9f34f9 feat: add and optimize multilingual text resources
- add new language packs for multiple pages and components including category, cart, order, member center, distribution, etc.
- add Chinese and English translations for new features and UI text
- fix navigation service error message to use multilingual text
- update component templates to use dynamic language translation instead of hardcoded text
- adjust code indentation and formatting for consistency
2026-06-26 13:49:26 +08:00

837 lines
31 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<view class="detail-container" :class="{ 'safe-area': isIphoneX }" :style="themeColor">
<!-- 订单状态 -->
<view class="status-wrap color-base-bg"
:style="{ backgroundImage: 'url(' + $util.img('public/uniapp/order/status-wrap-bg.png') + ')' }">
<view class="order-status-left">
<image :src="$util.img(action.icon)"></image>
<view class="status-name">
<view class="name">
{{ orderData.order_status_name }}
<text v-if="orderData.promotion_status_name">({{ orderData.promotion_status_name }})</text>
</view>
<view class="desc" v-if="orderData.promotion_type == 'presale' && orderData.order_status == 1">
{{ $lang('status.estimatedDelivery', { days: $util.timeStampTurnTime(orderData.predict_delivery_time, true) }) }}
</view>
<view class="desc" v-if="orderData.close_cause">{{ $lang('status.orderCloseReason') }}{{ orderData.close_cause }}</view>
</view>
</view>
<view class="order-time" v-if="orderData.order_status == 0" id="action-date">
{{ $lang('status.remainingTime') }}
<uni-count-down :day="orderData.closeTimeMachine.d" :hour="orderData.closeTimeMachine.h"
:minute="orderData.closeTimeMachine.i" :second="orderData.closeTimeMachine.s" color="#fff"
splitorColor="#fff" />
</view>
</view>
<!-- 地址信息 -->
<view class="address-wrap" v-if="orderData.order_type == 1 || orderData.order_type == 3">
<view class="icon">
<view class="iconfont icon-location"></view>
</view>
<view class="address-info">
<view class="info">
<text class="font-size-base">{{ orderData.name }}&nbsp;{{ orderData.mobile }}</text>
</view>
<view class="detail">
<text class="font-size-base">{{ $lang('address.receivingAddress') }}{{ orderData.full_address }} {{ orderData.address }}</text>
</view>
</view>
<template v-if="orderData.order_type == 3">
<view class="pick-block first-pick-block">
<view class="font-size-base">{{ $lang('address.deliveryTime') }}</view>
<view class="last-child">{{ orderData.buyer_ask_delivery_time }}</view>
</view>
<block v-if="orderData.package_list">
<view class="pick-block">
<view>{{ $lang('address.deliverer') }}</view>
<view class="last-child">{{ orderData.package_list.deliverer }}</view>
</view>
<view class="pick-block">
<view>{{ $lang('address.delivererMobile') }}</view>
<view class="last-child">{{ orderData.package_list.deliverer_mobile }}</view>
</view>
</block>
</template>
</view>
<template v-if="orderData.order_type == 2">
<!-- 门店信息 -->
<view class="store-wrap">
<view>
<view class="store-info" v-if="orderData.delivery_store_info">
<view class="icon">
<view class="iconfont icon-mendian"></view>
</view>
<view class="store-info-detail">
<view class="store-name" @click="
$util.redirectTo('/pages_tool/store/detail', {
store_id: orderData.delivery_store_id
})
">
<text class="name font-size-base">{{ orderData.delivery_store_name }}</text>
<text class="iconfont icon-right font-size-base"></text>
</view>
<view class="detail store-detail">
<view class="color-tip" v-if="orderData.delivery_store_info.open_date">
{{ $lang('store.businessHours') }}{{ orderData.delivery_store_info.open_date }}</view>
<view class="color-tip">{{ $lang('store.address') }}{{ orderData.delivery_store_info.full_address }}</view>
</view>
</view>
</view>
<view v-else>
<view class="address-empty">
<view class="color-base-text">{{ $lang('store.noPickupStore') }}</view>
</view>
</view>
</view>
<view class="pick-block first-pick-block">
<view class="font-size-base">{{ $lang('store.pickupName') }}</view>
<input class="last-child" type="text" disabled :value="orderData.name" />
</view>
<view class="pick-block first-pick-block">
<view class="font-size-base">{{ $lang('store.reservedMobile') }}</view>
<input class="last-child" type="number" disabled :value="orderData.mobile" />
</view>
<view class="pick-block first-pick-block">
<view class="font-size-base">{{ $lang('store.pickupTime') }}</view>
<input class="last-child" disabled :value="orderData.buyer_ask_delivery_time" />
</view>
</view>
<view class="pickup-info" v-if="orderData.pay_status">
<view class="pickup-code-info">
<view class="info">
<text class="font-size-base">
<text class="color-tip font-size-base">{{ $lang('store.pickupCode') }}</text>
{{ orderData.delivery_code }}
</text>
<text class="copy" @click="$util.copy(orderData.delivery_code)">{{ $lang('button.copy') }}</text>
</view>
<view class="code">
<image :src="$util.img(orderData.pickup_barcode)"
@click="previewMedia($util.img(orderData.pickup_barcode))" class="barcode"
mode="widthFix" show-menu-by-longpress/>
<image :src="$util.img(orderData.pickup)" @click="previewMedia($util.img(orderData.pickup))"
class="qrcode" mode="widthFix" show-menu-by-longpress/>
</view>
</view>
</view>
</template>
<!-- 店铺 -->
<view class="site-wrap" :style="orderData.order_type == 4 ? 'margin-top: -69rpx;' : ''">
<view class="site-body">
<view v-for="(goodsItem, goodsIndex) in orderData.order_goods" :key="goodsIndex" class="goods-item">
<view class="goods-wrap">
<view class="goods-img" @click="goDetail(goodsItem)">
<image :src="$util.img(goodsItem.sku_image, { size: 'mid' })"
@error="imageError(goodsIndex)" mode="aspectFill" show-menu-by-longpress/>
</view>
<view class="goods-info" @click="goDetail(goodsItem)">
<view class="goods-name">{{ goodsItem.sku_name }}</view>
<view class="sku" v-if="goodsItem.sku_spec_format">
<view class="goods-spec">
<block v-for="(x, i) in goodsItem.sku_spec_format" :key="i">
{{ x.spec_value_name }}
{{ i < goodsItem.sku_spec_format.length - 1 ? '; ' : '' }} </block>
</view>
</view>
<view class="goods-sub-section">
<view>
<text class="goods-price ">
<text class="unit price-style small">{{ $lang('common.currencySymbol') }}</text>
<text class="price-style large">{{
parseFloat(goodsItem.price).toFixed(2).split('.')[0]
}}</text>
<text class="unit price-style small">.{{
parseFloat(goodsItem.price).toFixed(2).split('.')[1] }}</text>
</text>
</view>
<view>
<text class="font-size-base">
<text class="iconfont icon-close"></text>
{{ goodsItem.num }}
</text>
</view>
</view>
<view v-if="goodsItem.card_item_id" class="goods-card">
{{ $lang('goods.cardDeduction') }}
<text class="goods-price ">
<text class="unit price-style small">-{{ $lang('common.currencySymbol') }}</text>
<text class="price-style large">{{
parseFloat(goodsItem.card_promotion_money).toFixed(2).split('.')[0] }}</text>
<text class="unit price-style small">.{{
parseFloat(goodsItem.card_promotion_money).toFixed(2).split('.')[1] }}</text>
</text>
</view>
</view>
</view>
<view class="goods-form" v-if="goodsItem.form">
<view class="order-cell" v-for="(item, index) in goodsItem.form" :key="index">
<text class="tit">{{ $lang('form.labelWithColon', { label: item.value.title }) }}</text>
<view class="box img-box" v-if="item.controller == 'Img'">
<view class="img" v-for="(img, imgIndex) in item.img_lists" :key="imgIndex">
<image :src="$util.img(img)" mode="widthFix"
@click="previewMedia($util.img(img))" show-menu-by-longpress/>
</view>
</view>
<view class="box" v-else>
<text class="color-title">{{ item.val }}</text>
<text class="copy" @click="$util.copy(item.val)">{{ $lang('button.copy') }}</text>
</view>
</view>
</view>
<view class="goods-action">
<block v-if="orderData.is_enable_refund">
<view @click="goRefund(goodsItem.order_goods_id)"
v-if="orderData.order_scene == 'online' && (goodsItem.refund_status == 0 || goodsItem.refund_status == -1)">
<view class="order-box-btn" v-if="orderData.promotion_type != 'blindbox'">
{{ orderData.order_status == 10 ? $lang('goods.applyAfterSales') : $lang('goods.applyRefund') }}
</view>
</view>
</block>
<view @click="goRefundDetail(goodsItem.order_goods_id)"
v-if="goodsItem.refund_status != 0 && goodsItem.refund_status != -1">
<view class="order-box-btn">{{ orderData.order_status == 10 ? $lang('goods.viewAfterSales') : $lang('goods.viewRefund') }}</view>
</view>
</view>
</view>
</view>
</view>
<!-- 订单概况 -->
<view class="order-summary">
<view class="order-cell">
<text class="tit">{{ $lang('orderInfo.orderType') }}</text>
<view class="box">
<text class="color-title">{{ orderData.order_type_name }}</text>
</view>
</view>
<view class="order-cell">
<text class="tit">{{ $lang('orderInfo.orderNo') }}</text>
<view class="box">
<text class="color-title">{{ orderData.order_no }}</text>
<view class="copy" @click="$util.copy(orderData.order_no)">{{ $lang('button.copy') }}</view>
</view>
</view>
<view class="order-cell">
<text class="tit">{{ $lang('orderInfo.outTradeNo') }}</text>
<view class="box">
<text class="color-title">{{ orderData.out_trade_no }}</text>
</view>
</view>
<view class="order-cell">
<text class="tit">{{ $lang('orderInfo.createTime') }}</text>
<view class="box">
<text class="color-title">{{ $util.timeStampTurnTime(orderData.create_time) }}</text>
</view>
</view>
<view class="order-cell" v-if="orderData.close_time > 0">
<text class="tit">{{ $lang('orderInfo.closeTime') }}</text>
<view class="box">
<text class="color-title">{{ $util.timeStampTurnTime(orderData.close_time) }}</text>
</view>
</view>
<block v-if="orderData.pay_status > 0">
<view class="hr"></view>
<view class="order-cell">
<text class="tit">{{ $lang('orderInfo.payType') }}</text>
<view class="box">
<text class="color-title">{{ orderData.pay_type_name }}</text>
</view>
</view>
<view class="order-cell">
<text class="tit">{{ $lang('orderInfo.payTime') }}</text>
<view class="box">
<text class="color-title">{{ $util.timeStampTurnTime(orderData.pay_time) }}</text>
</view>
</view>
</block>
<view class="order-cell" v-if="orderData.delivery_type_name">
<text class="tit">{{ $lang('orderInfo.deliveryType') }}</text>
<view class="box">
<text class="color-title">{{ orderData.delivery_type_name }}</text>
</view>
</view>
<view class="order-cell" v-if="orderData.buyer_message != ''">
<text class="tit">{{ $lang('orderInfo.buyerMessage') }}</text>
<view class="box">
<text class="color-title">{{ orderData.buyer_message }}</text>
</view>
</view>
<view class="order-cell" v-if="orderData.promotion_type_name != ''">
<text class="tit">{{ $lang('orderInfo.promotionDiscount') }}</text>
<view class="box">
<text class="color-title">{{ orderData.promotion_type_name }}</text>
</view>
</view>
<block v-if="orderData.is_invoice > 0">
<view class="hr"></view>
<view class="order-cell">
<text class="tit">{{ $lang('orderInfo.invoiceType') }}</text>
<view class="box">
<text class="color-title">{{ orderData.invoice_type == 1 ? $lang('orderInfo.invoiceTypePaper') : $lang('orderInfo.invoiceTypeElectronic') }}</text>
</view>
</view>
<view class="order-cell">
<text class="tit">{{ $lang('orderInfo.invoiceTitleType') }}</text>
<view class="box">
<text class="color-title">{{ orderData.invoice_title_type == 1 ? $lang('orderInfo.invoiceTitlePersonal') : $lang('orderInfo.invoiceTitleCompany') }}</text>
</view>
</view>
<view class="order-cell">
<text class="tit">{{ $lang('orderInfo.invoiceTitle') }}</text>
<view class="box">
<text class="color-title">{{ orderData.invoice_title }}</text>
</view>
</view>
<view class="order-cell">
<text class="tit">{{ $lang('orderInfo.invoiceContent') }}</text>
<view class="box">
<text class="color-title">{{ orderData.invoice_content }}</text>
</view>
</view>
<view class="order-cell" v-if="orderData.invoice_type == 1">
<text class="tit">{{ $lang('orderInfo.invoiceMailAddress') }}</text>
<view class="box">
<text class="color-title">{{ orderData.invoice_full_address }}</text>
</view>
</view>
<view class="order-cell" v-else>
<text class="tit">{{ $lang('orderInfo.invoiceEmail') }}</text>
<view class="box">
<text class="color-title">{{ orderData.invoice_email }}</text>
</view>
</view>
</block>
<block v-if="orderData.form">
<view class="hr"></view>
<view class="order-cell order-form" v-for="(item, index) in orderData.form" :key="index">
<text class="tit">{{ $lang('form.labelWithColon', { label: item.value.title }) }}</text>
<view class="box img-box" v-if="item.controller == 'Img'">
<view class="img" v-for="(img, imgIndex) in item.img_lists" :key="imgIndex">
<image :src="$util.img(img)" mode="widthFix" @click="previewMedia($util.img(img))" show-menu-by-longpress></image>
</view>
</view>
<view class="box" v-else>
<text class="color-title">{{ item.val }}</text>
<text class="copy" @click="$util.copy(item.val)">{{ $lang('button.copy') }}</text>
</view>
</view>
</block>
<block v-if="orderData.goods_class == 5">
<view class="order-cell">
<text class="tit">{{ $lang('orderInfo.myCardPack') }}</text>
<view class="box"><text class="color-base-text"
@click="$util.redirectTo('/pages_promotion/cardservice/card/my_card')">{{ $lang('orderInfo.view') }}</text></view>
</view>
</block>
<!-- 联系客服 -->
<!-- <ns-contact :niushop="{ order_id: orderData.order_id }">
<view class="kefu">
<view>
<text class="iconfont icon-ziyuan"></text>
<text>联系客服</text>
</view>
</view>
</ns-contact> -->
</view>
<block v-if="orderData.virtual_goods && orderData.goods_class == 2 && orderData.virtual_goods.is_veirfy == 0">
<view class="verify-code-wrap">
<view class="code">
<image :src="$util.img(orderData.virtualgoods_barcode)" class="barcode" mode="widthFix" show-menu-by-longpress></image>
<image :src="$util.img(orderData.virtualgoods)" class="qrcode" mode="widthFix" show-menu-by-longpress></image>
<text>{{ $lang('virtualGoods.showCodeToVerifier') }}</text>
</view>
<view class="hr"></view>
<view class="wrap">
<text class="font-size-base virtual-code">{{ orderData.virtual_code }}</text>
<view class="copy" @click="$util.copy(orderData.virtual_code)">{{ $lang('button.copy') }}</view>
</view>
</view>
<view class="verify-info-wrap">
<view class="head">{{ $lang('virtualGoods.verifyInfo') }}</view>
<view class="order-cell">
<text class="tit">{{ $lang('virtualGoods.verifyCount') }}</text>
<view class="box align-right">
<text class="color-title">
{{ $lang('virtualGoods.verifyCountText', { remaining: orderData.virtual_goods.verify_total_count - orderData.virtual_goods.verify_use_num, total: orderData.virtual_goods.verify_total_count }) }}
</text>
</view>
</view>
<view class="order-cell">
<text class="tit">{{ $lang('virtualGoods.validPeriod') }}</text>
<view class="box align-right">
<text class="color-title" v-if="orderData.virtual_goods.expire_time > 0">{{
$util.timeStampTurnTime(orderData.virtual_goods.expire_time) }}</text>
<text v-else>{{ $lang('virtualGoods.permanentValid') }}</text>
</view>
</view>
</view>
<view class="verify-info-wrap">
<view class="head">{{ $lang('virtualGoods.verifyRecord') }}</view>
<view v-if="orderData.virtual_goods.verify_record.length">
<view v-for="(item, index) in orderData.virtual_goods.verify_record" :key="index"
class="record-item">
<view class="order-cell">
<text class="tit">{{ $lang('virtualGoods.verifier') }}</text>
<view class="box align-right">
<text class="color-title">{{ item.verifier_name }}</text>
</view>
</view>
<view class="order-cell">
<text class="tit">{{ $lang('virtualGoods.verifyTime') }}</text>
<view class="box align-right">
<text class="color-title">{{ $util.timeStampTurnTime(item.verify_time) }}</text>
</view>
</view>
</view>
</view>
<view class="record-empty" v-else>{{ $lang('virtualGoods.noVerifyRecord') }}</view>
</view>
</block>
<block v-if="orderData.virtual_goods && orderData.goods_class == 3">
<view class="verify-info-wrap carmichael">
<view class="head">{{ $lang('virtualGoods.cardInfo') }}</view>
<view v-for="(item, index) in orderData.virtual_goods" :key="index" class="record-item">
<view class="order-cell">
<text class="tit">{{ $lang('virtualGoods.cardNo') }}</text>
<view class="box">
<text class="color-title">{{ item.card_info.cardno }}</text>
<view class="copy" @click="$util.copy(item.card_info.cardno)">{{ $lang('button.copy') }}</view>
</view>
</view>
<view class="order-cell">
<text class="tit">{{ $lang('virtualGoods.cardPassword') }}</text>
<view class="box">
<text class="color-title">{{ item.card_info.password }}</text>
<view class="copy" @click="$util.copy(item.card_info.password)">{{ $lang('button.copy') }}</view>
</view>
</view>
</view>
</view>
</block>
<block v-if="orderData.virtual_goods && orderData.goods_class == 4">
<view class="verify-code-wrap" v-if="orderData.virtual_goods.is_veirfy == 0">
<view class="code">
<image :src="$util.img(orderData.virtualgoods_barcode)" class="barcode" mode="widthFix" show-menu-by-longpress></image>
<image :src="$util.img(orderData.virtualgoods)" class="qrcode" mode="widthFix" show-menu-by-longpress></image>
<text>{{ $lang('virtualGoods.showCodeToVerifier') }}</text>
</view>
<view class="hr"></view>
<view class="wrap">
<text class="font-size-base virtual-code">{{ orderData.virtual_code }}</text>
<view class="copy" @click="$util.copy(orderData.virtual_code)">{{ $lang('button.copy') }}</view>
</view>
</view>
<view class="verify-info-wrap">
<view class="head">{{ $lang('virtualGoods.verifyInfo') }}</view>
<view class="order-cell">
<text class="tit">{{ $lang('virtualGoods.verifyCount') }}</text>
<view class="box align-right">
<text class="color-title">
{{ $lang('virtualGoods.verifyCountText', { remaining: orderData.virtual_goods.verify_total_count - orderData.virtual_goods.verify_use_num, total: orderData.virtual_goods.verify_total_count }) }}
</text>
</view>
</view>
<view class="order-cell">
<text class="tit">{{ $lang('virtualGoods.validPeriod') }}</text>
<view class="box align-right">
<text class="color-title" v-if="orderData.virtual_goods.expire_time > 0">{{
$util.timeStampTurnTime(orderData.virtual_goods.expire_time) }}</text>
<text v-else>{{ $lang('virtualGoods.permanentValid') }}</text>
</view>
</view>
</view>
<view class="verify-info-wrap">
<view class="head">{{ $lang('virtualGoods.verifyRecord') }}</view>
<view v-if="orderData.virtual_goods.verify_record.length">
<view v-for="(item, index) in orderData.virtual_goods.verify_record" :key="index"
class="record-item">
<view class="order-cell">
<text class="tit">{{ $lang('virtualGoods.verifier') }}</text>
<view class="box align-right">
<text class="color-title">{{ item.verifier_name }}</text>
</view>
</view>
<view class="order-cell">
<text class="tit">{{ $lang('virtualGoods.verifyTime') }}</text>
<view class="box align-right">
<text class="color-title">{{ $util.timeStampTurnTime(item.verify_time) }}</text>
</view>
</view>
</view>
</view>
<view class="record-empty" v-else>{{ $lang('virtualGoods.noVerifyRecord') }}</view>
</view>
</block>
<!-- 订单金额 -->
<view class="order-money">
<view class="order-cell">
<text class="tit">{{ $lang('amount.goodsMoney') }}</text>
<view class="box align-right">
<text class="color-title price-font">
<text class="font-size-goods-tag">{{ $lang('common.currencySymbol') }}</text>
{{ orderData.goods_money }}
</text>
</view>
</view>
<view class="order-cell" v-if="orderData.order_type != 4">
<text class="tit">{{ $lang('amount.deliveryFee') }}</text>
<view class="box align-right">
<text class="color-base-text price-font">
<text class="font-size-goods-tag">{{ $lang('common.currencySymbol') }}</text>
<text>{{ orderData.delivery_money }}</text>
</text>
</view>
</view>
<view class="order-cell" v-if="orderData.member_card_money > 0">
<text class="tit">{{ $lang('amount.memberCard') }}</text>
<view class="box align-right">
<text class="color-base-text price-font">
<text class="font-size-goods-tag">{{ $lang('common.currencySymbol') }}</text>
<text>{{ orderData.member_card_money }}</text>
</text>
</view>
</view>
<view class="order-cell" v-if="orderData.invoice_money > 0">
<text class="tit">
{{ $lang('amount.taxFee') }}
<text class="color-base-text">({{ orderData.invoice_rate }}%)</text>
</text>
<view class="box align-right">
<text class="color-base-text price-font">
<text class="operator">+</text>
<text class="font-size-goods-tag">{{ $lang('common.currencySymbol') }}</text>
<text>{{ orderData.invoice_money }}</text>
</text>
</view>
</view>
<view class="order-cell" v-if="orderData.invoice_delivery_money > 0">
<text class="tit">{{ $lang('amount.invoiceDeliveryFee') }}</text>
<view class="box align-right">
<text class="color-base-text price-font">
<text class="operator">+</text>
<text class="font-size-goods-tag">{{ $lang('common.currencySymbol') }}</text>
<text>{{ orderData.invoice_delivery_money }}</text>
</text>
</view>
</view>
<view class="order-cell" v-if="orderData.adjust_money != 0">
<text class="tit">{{ $lang('amount.orderAdjust') }}</text>
<view class="box align-right">
<text class="color-base-text price-font">
<text class="operator" v-if="orderData.adjust_money < 0">-</text>
<text class="operator" v-else>+</text>
<text class="font-size-goods-tag">{{ $lang('common.currencySymbol') }}</text>
<text>{{ orderData.adjust_money | abs }}</text>
</text>
</view>
</view>
<view class="order-cell" v-if="orderData.promotion_money > 0">
<text class="tit">{{ $lang('amount.promotionDiscount') }}</text>
<view class="box align-right">
<text class="color-base-text price-font">
<text class="operator">-</text>
<text class="font-size-goods-tag">{{ $lang('common.currencySymbol') }}</text>
<text>{{ orderData.promotion_money }}</text>
</text>
</view>
</view>
<view class="order-cell" v-if="orderData.coupon_money > 0">
<text class="tit">{{ $lang('amount.coupon') }}</text>
<view class="box align-right">
<text class="color-base-text price-font">
<text class="operator">-</text>
<text class="font-size-goods-tag">{{ $lang('common.currencySymbol') }}</text>
<text>{{ orderData.coupon_money }}</text>
</text>
</view>
</view>
<view class="order-cell" v-if="orderData.balance_money > 0">
<text class="tit">{{ $lang('amount.balanceUsed') }}</text>
<view class="box align-right">
<text class="color-base-text price-font">
<text class="operator">-</text>
<text class="font-size-goods-tag">{{ $lang('common.currencySymbol') }}</text>
<text>{{ orderData.balance_money }}</text>
</text>
</view>
</view>
<view class="order-cell" v-if="orderData.point_money > 0">
<text class="tit">{{ $lang('amount.pointDeduction') }}</text>
<view class="box align-right">
<text class="color-base-text price-font">
<text class="operator">-</text>
<text class="font-size-goods-tag">{{ $lang('common.currencySymbol') }}</text>
<text>{{ orderData.point_money }}</text>
</text>
</view>
</view>
<view class="order-cell">
<view class="box align-right">
<text>{{ $lang('amount.totalPayable') }}</text>
<text class="color-base-text price-font">
<text class="font-size-goods-tag">{{ $lang('common.currencySymbol') }}</text>
<text class="font-size-base">{{ orderData.order_money }}</text>
</text>
</view>
</view>
<view class="order-action fixed-bottom bottom-safe-area" v-if="orderData.action.length > 0">
<view class="order-box-btn white"
v-if="evaluateConfig.evaluate_status == 1 && orderData.is_evaluate == 1"
@click="operation('memberOrderEvaluation')">
<text v-if="orderData.evaluate_status == 0">{{ $lang('button.evaluate') }}</text>
<text v-else-if="orderData.evaluate_status == 1">{{ $lang('button.additionalEvaluate') }}</text>
</view>
<block v-if="orderData.order_scene == 'online'">
<view class="order-box-btn"
:class="{ 'color-base-border color-base-bg': operationItem.action == 'orderPay' }"
v-for="(operationItem, operationIndex) in orderData.action" :key="operationIndex"
@click="operation(operationItem.action)">
{{ operationItem.title }}
</view>
</block>
</view>
<view class="order-action fixed-bottom bottom-safe-area"
v-else-if="orderData.action.length == 0 && orderData.is_evaluate == 1 && evaluateConfig.evaluate_status == 1">
<view class="order-box-btn white" @click="operation('memberOrderEvaluation')">
<text v-if="orderData.evaluate_status == 0">{{ $lang('button.evaluate') }}</text>
<text v-else-if="orderData.evaluate_status == 1">{{ $lang('button.additionalEvaluate') }}</text>
</view>
</view>
</view>
<!-- 订单 -->
<view class="fixed-bottom-box bottom-safe-area"
v-if="orderData.action.length > 0 || (orderData.is_evaluate == 1 && evaluateConfig.evaluate_status == 1)">
</view>
<ns-goods-recommend ref="goodrecommend" route="order_detail"></ns-goods-recommend>
<!-- 选择支付方式弹窗 -->
<ns-payment ref="choosePaymentPopup"></ns-payment>
<loading-cover ref="loadingCover"></loading-cover>
</view>
</template>
<script>
import orderMethod from './public/js/orderMethod.js';
export default {
data() {
return {
isIphoneX: false,
orderId: 0,
merchantTradeNo: '',
orderData: {
action: [],
virtual_goods: {
is_veirfy: 0,
verify_record: []
}
},
action: {
icon: ''
},
evaluateConfig: {
evaluate_audit: 1,
evaluate_show: 0,
evaluate_status: 1
}
};
},
mixins: [orderMethod],
onLoad(option) {
if (option.order_id) this.orderId = option.order_id;
if (option.merchant_trade_no) this.merchantTradeNo = option.merchant_trade_no;
},
onShow() {
this.isIphoneX = this.$util.uniappIsIPhoneX();
if (this.storeToken) {
this.getEvaluateConfig();
this.getOrderData();
} else {
this.$util.redirectTo(this.$util.LOGIN_PAGE_URL, {
back: '/pages_order/detail?order_id=' + this.orderId + '&merchant_trade_no=' + this.merchantTradeNo
});
}
},
methods: {
goDetail(e) {
this.$util.redirectTo('/pages_goods/detail', {
goods_id: e.goods_id
});
},
goRefund(id) {
this.$util.redirectTo('/pages_tool/order/refund', {
order_goods_id: id
});
},
goRefundDetail(id) {
this.$util.redirectTo('/pages_tool/order/refund_detail', {
order_goods_id: id
});
},
getOrderData() {
this.$api.sendRequest({
url: '/api/order/detail',
data: {
order_id: this.orderId,
merchant_trade_no: this.merchantTradeNo
},
success: res => {
if (res.code >= 0) {
if (res.data.order_status == 0) {
let date = Date.parse(new Date()) / 1000;
res.data.closeTimeMachine = this.$util.countDown(res.data.create_time + res.data.auto_close - date);
}
let num = 0;
this.orderData = res.data;
this.orderId = this.orderData.order_id;
let refund_order_goods_ids = [];
this.orderData.order_goods.forEach(v => {
if (v.sku_spec_format) {
v.sku_spec_format = JSON.parse(v.sku_spec_format);
} else {
v.sku_spec_format = [];
}
if (v.refund_status == 0 || v.refund_status == -1) {
num += 1;
refund_order_goods_ids.push(v.order_goods_id);
}
});
this.action = JSON.parse(res.data.order_status_action);
//判断在可退款商品数量大于1时出现批量删除按钮
if (num > 1) {
this.orderData.refund_batch_status = true;
this.orderData.refund_order_goods_ids = refund_order_goods_ids;
} else {
this.orderData.refund_batch_status = false;
}
if (this.orderData.delivery_store_info != '') this.orderData.delivery_store_info = JSON.parse(this.orderData.delivery_store_info);
if (this.$refs.loadingCover) this.$refs.loadingCover.hide();
} else {
this.$util.showToast({
title: this.$lang('toast.orderInfoNotFound')
});
setTimeout(() => {
this.$util.redirectTo('/pages_order/list');
}, 1500);
}
},
fail: res => {
if (this.$refs.loadingCover) this.$refs.loadingCover.hide();
}
});
},
/**
* 下拉刷新
*/
onPullDownRefresh() {
this.getOrderData();
},
operation(action) {
switch (action) {
case 'orderPay': // 支付
this.orderPay(this.orderData);
break;
case 'orderClose': //关闭
this.orderClose(this.orderData.order_id, () => {
this.getOrderData();
});
break;
case 'memberTakeDelivery': //收货
this.orderDelivery(this.orderData, () => {
this.getOrderData();
});
break;
case 'trace': //查看物流
this.$util.redirectTo('/pages_tool/order/logistics', {
order_id: this.orderData.order_id
});
break;
case 'memberOrderEvaluation': //评价
this.$util.redirectTo('/pages_tool/order/evaluate', {
order_id: this.orderData.order_id
});
break;
//批量退款
case 'memberBatchRefund':
this.$util.redirectTo('/pages_tool/order/refund_type_select', {
order_id: this.orderId
});
break;
case 'memberVirtualTakeDelivery':
this.orderVirtualDelivery(this.orderData, () => {
this.getOrderData();
});
break;
}
},
imageError(index) {
this.orderData.order_goods[index].sku_image = this.$util.getDefaultImage().goods;
this.$forceUpdate();
},
getEvaluateConfig() {
this.$api.sendRequest({
url: '/api/goodsevaluate/config',
success: res => {
if (res.code == 0) {
var data = res.data;
this.evaluateConfig = data;
}
}
});
},
// 显示选择支付方式弹框
openChoosePayment() {
this.$refs.choosePaymentPopup.open();
},
// 预览图片
previewMedia(pickup) {
var paths = [];
paths.push(pickup);
uni.previewImage({
urls: paths
});
}
},
filters: {
abs(value) {
return Math.abs(parseFloat(value)).toFixed(2);
}
}
};
</script>
<style lang="scss">
@import './public/css/detail.scss';
</style>
<style scoped>
.pickup-code-info .code img:nth-child(1) {
margin-bottom: 30rpx;
}
::v-deep .sku-layer .uni-popup__wrapper.uni-custom .uni-popup__wrapper-box {
max-height: unset !important;
}
</style>