替换京东随机数据
|
|
@ -97,7 +97,7 @@
|
||||||
(item.totalPrice ? Number(item.totalPrice).toFixed(2) : '0.00')
|
(item.totalPrice ? Number(item.totalPrice).toFixed(2) : '0.00')
|
||||||
:
|
:
|
||||||
safeFormatPrice(item)
|
safeFormatPrice(item)
|
||||||
}}</text>
|
}}</text>
|
||||||
</view>
|
</view>
|
||||||
<text class="product-count"
|
<text class="product-count"
|
||||||
v-if="item.count || (item.products && item.products[0] && item.products[0].count)">共{{
|
v-if="item.count || (item.products && item.products[0] && item.products[0].count)">共{{
|
||||||
|
|
@ -131,7 +131,7 @@
|
||||||
</template>
|
</template>
|
||||||
<template v-else-if="item.promoType === 'text'">
|
<template v-else-if="item.promoType === 'text'">
|
||||||
<text class="promo-text text-basic">本单可享 <text class="highlight">{{ item.promoHighlight
|
<text class="promo-text text-basic">本单可享 <text class="highlight">{{ item.promoHighlight
|
||||||
}}</text>,快去支付吧~</text>
|
}}</text>,快去支付吧~</text>
|
||||||
</template>
|
</template>
|
||||||
<template v-else>
|
<template v-else>
|
||||||
<text class="promo-text text-basic">当笔订单返现成功到账,<text style="color: #E31700;">点击领取</text></text>
|
<text class="promo-text text-basic">当笔订单返现成功到账,<text style="color: #E31700;">点击领取</text></text>
|
||||||
|
|
@ -719,10 +719,11 @@ const getButtons = (shopType, status, item) => {
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
justify-content: flex-end;
|
justify-content: flex-end;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
z-index: 998;
|
||||||
|
|
||||||
.btn {
|
.btn {
|
||||||
position: relative;
|
position: relative;
|
||||||
z-index: 999;
|
// z-index: 998;
|
||||||
height: 56rpx;
|
height: 56rpx;
|
||||||
line-height: 56rpx;
|
line-height: 56rpx;
|
||||||
padding: 0 24rpx;
|
padding: 0 24rpx;
|
||||||
|
|
|
||||||
2
main.js
|
|
@ -27,7 +27,7 @@ export function createApp() {
|
||||||
const systemInfo = uni.getStorageSync('systemInfo') || {}
|
const systemInfo = uni.getStorageSync('systemInfo') || {}
|
||||||
app.config.globalProperties.$system = systemInfo.platform == 'ios' ? 'iOS' : 'Android'
|
app.config.globalProperties.$system = systemInfo.platform == 'ios' ? 'iOS' : 'Android'
|
||||||
app.config.globalProperties.$systemInfo = systemInfo
|
app.config.globalProperties.$systemInfo = systemInfo
|
||||||
uni.setStorageSync('version', '1.0.4.sp9')
|
uni.setStorageSync('version', '1.0.4.sp13')
|
||||||
app.config.globalProperties.$version = uni.getStorageSync('version')
|
app.config.globalProperties.$version = uni.getStorageSync('version')
|
||||||
app.use(globalMethods);
|
app.use(globalMethods);
|
||||||
return {
|
return {
|
||||||
|
|
|
||||||
14
pages.json
|
|
@ -80,6 +80,13 @@
|
||||||
"navigationBarTitleText": "外卖订单详情",
|
"navigationBarTitleText": "外卖订单详情",
|
||||||
"navigationStyle": "custom"
|
"navigationStyle": "custom"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "taobao/list-index",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "淘宝购物外卖订单列表",
|
||||||
|
"navigationStyle": "custom"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
@ -289,10 +296,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path" : "certificate/graduate",
|
"path": "certificate/graduate",
|
||||||
"style" :
|
"style": {
|
||||||
{
|
"navigationBarTitleText": "证书",
|
||||||
"navigationBarTitleText" : "证书",
|
|
||||||
"navigationStyle": "custom"
|
"navigationStyle": "custom"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -27,8 +27,10 @@
|
||||||
<!-- 隐藏的text用于测量宽度 -->
|
<!-- 隐藏的text用于测量宽度 -->
|
||||||
<text class="text-measure">{{ billData.name }}</text>
|
<text class="text-measure">{{ billData.name }}</text>
|
||||||
|
|
||||||
<input class="text-input" type="text" v-model="billData.name" />
|
<input class="text-input" type="text" :focus="data.focusState.name" v-model="billData.name"
|
||||||
<image class="edit-image" src="/static/image/bill/add-bill/edit.png"></image>
|
@blur="data.focusState.name = false" />
|
||||||
|
<image class="edit-image" src="/static/image/bill/add-bill/edit.png" @click="triggerFocus('name')">
|
||||||
|
</image>
|
||||||
</view>
|
</view>
|
||||||
<!-- 金额 -->
|
<!-- 金额 -->
|
||||||
<view class="money-box flex-align-center">
|
<view class="money-box flex-align-center">
|
||||||
|
|
@ -39,8 +41,10 @@
|
||||||
<text class="text-measure font-w500" style="font-size: 64rpx;">{{ billData.money }}</text>
|
<text class="text-measure font-w500" style="font-size: 64rpx;">{{ billData.money }}</text>
|
||||||
|
|
||||||
<input class="text-input font-w500" style="font-size: 64rpx;" type="digit"
|
<input class="text-input font-w500" style="font-size: 64rpx;" type="digit"
|
||||||
v-model="billData.money" />
|
:focus="data.focusState.money" v-model="billData.money"
|
||||||
<image class="edit-image" src="/static/image/bill/add-bill/edit.png"></image>
|
@blur="data.focusState.money = false" />
|
||||||
|
<image class="edit-image" src="/static/image/bill/add-bill/edit.png"
|
||||||
|
@click="triggerFocus('money')"></image>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
|
|
@ -69,7 +73,8 @@
|
||||||
<input
|
<input
|
||||||
v-if="(item.type == 'text' || item.type == 'digit' || item.type == 'number') && !(data.type == 1 && item.key == 'payMethod')"
|
v-if="(item.type == 'text' || item.type == 'digit' || item.type == 'number') && !(data.type == 1 && item.key == 'payMethod')"
|
||||||
:style="{ color: item.textColor ? item.textColor : '#1a1a1a' }" class="text-input"
|
:style="{ color: item.textColor ? item.textColor : '#1a1a1a' }" class="text-input"
|
||||||
:type="item.type" :focus="item.focus" v-model="item.value" @click.stop />
|
:type="item.type" :focus="item.focus" v-model="item.value" @click.stop
|
||||||
|
@blur="item.focus = false" />
|
||||||
</view>
|
</view>
|
||||||
<image v-if="item.type != 'link' && !(data.type == 1 && item.key == 'payMethod')"
|
<image v-if="item.type != 'link' && !(data.type == 1 && item.key == 'payMethod')"
|
||||||
class="edit-image" src="/static/image/bill/add-bill/edit.png"
|
class="edit-image" src="/static/image/bill/add-bill/edit.png"
|
||||||
|
|
@ -100,7 +105,7 @@
|
||||||
<view class="right-input-box flex-align-center">
|
<view class="right-input-box flex-align-center">
|
||||||
<!-- <text class="right-text">共{{ item.value.number }}件</text> -->
|
<!-- <text class="right-text">共{{ item.value.number }}件</text> -->
|
||||||
<input class="right-text" :focus="item.focus" type="text" v-model="item.value.quantity"
|
<input class="right-text" :focus="item.focus" type="text" v-model="item.value.quantity"
|
||||||
@click.stop />
|
@blur="item.focus = false" @click.stop />
|
||||||
<image class="edit-image" src="/static/image/bill/add-bill/edit.png"
|
<image class="edit-image" src="/static/image/bill/add-bill/edit.png"
|
||||||
@click="onClickItemInfo(item, 'foucs')">
|
@click="onClickItemInfo(item, 'foucs')">
|
||||||
</image>
|
</image>
|
||||||
|
|
@ -114,9 +119,11 @@
|
||||||
<view class="info-item-input">
|
<view class="info-item-input">
|
||||||
<!-- 隐藏的text用于测量宽度 -->
|
<!-- 隐藏的text用于测量宽度 -->
|
||||||
<text class="text-measure">{{ billData.balance }}</text>
|
<text class="text-measure">{{ billData.balance }}</text>
|
||||||
<input class="text-input" type="digit" v-model="billData.balance" />
|
<input class="text-input" type="digit" :focus="data.focusState.balance"
|
||||||
|
v-model="billData.balance" @blur="data.focusState.balance = false" />
|
||||||
</view>
|
</view>
|
||||||
<image class="edit-image" src="/static/image/bill/add-bill/edit.png">
|
<image class="edit-image" src="/static/image/bill/add-bill/edit.png"
|
||||||
|
@click="triggerFocus('balance')">
|
||||||
</image>
|
</image>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
@ -175,6 +182,7 @@
|
||||||
<image class="edit-image" src="/static/image/bill/add-bill/edit.png">
|
<image class="edit-image" src="/static/image/bill/add-bill/edit.png">
|
||||||
</image>
|
</image>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
</view>
|
</view>
|
||||||
|
|
@ -190,8 +198,12 @@
|
||||||
billData.merchantOption.serviceDetailInfo.text }}</text>
|
billData.merchantOption.serviceDetailInfo.text }}</text>
|
||||||
|
|
||||||
<input class="text-input" maxlength="20" style="font-size: 22rpx;" type="text"
|
<input class="text-input" maxlength="20" style="font-size: 22rpx;" type="text"
|
||||||
v-model="billData.merchantOption.serviceDetailInfo.text" />
|
:focus="data.focusState.serviceDetail"
|
||||||
<image class="edit-image" src="/static/image/bill/add-bill/edit.png"></image>
|
v-model="billData.merchantOption.serviceDetailInfo.text"
|
||||||
|
@blur="data.focusState.serviceDetail = false" />
|
||||||
|
<image class="edit-image" src="/static/image/bill/add-bill/edit.png"
|
||||||
|
@click="triggerFocus('serviceDetail')">
|
||||||
|
</image>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<uni-data-select class="select" style="flex: none;width: 80px;"
|
<uni-data-select class="select" style="flex: none;width: 80px;"
|
||||||
|
|
@ -210,8 +222,11 @@
|
||||||
billData.merchantOption.recommendServiceInfo.text }}</text>
|
billData.merchantOption.recommendServiceInfo.text }}</text>
|
||||||
|
|
||||||
<input class="text-input" maxlength="20" style="font-size: 22rpx;" type="text"
|
<input class="text-input" maxlength="20" style="font-size: 22rpx;" type="text"
|
||||||
v-model="billData.merchantOption.recommendServiceInfo.text" />
|
:focus="data.focusState.recommendService"
|
||||||
<image class="edit-image" src="/static/image/bill/add-bill/edit.png"></image>
|
v-model="billData.merchantOption.recommendServiceInfo.text"
|
||||||
|
@blur="data.focusState.recommendService = false" />
|
||||||
|
<image class="edit-image" src="/static/image/bill/add-bill/edit.png"
|
||||||
|
@click="triggerFocus('recommendService')"></image>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<text class="right-text">去看看</text>
|
<text class="right-text">去看看</text>
|
||||||
|
|
@ -227,12 +242,34 @@
|
||||||
billData.merchantOption.serviceRecommendInfo.text }}</text>
|
billData.merchantOption.serviceRecommendInfo.text }}</text>
|
||||||
|
|
||||||
<input class="text-input" maxlength="20" style="font-size: 22rpx;" type="text"
|
<input class="text-input" maxlength="20" style="font-size: 22rpx;" type="text"
|
||||||
v-model="billData.merchantOption.serviceRecommendInfo.text" />
|
:focus="data.focusState.serviceRecommend"
|
||||||
<image class="edit-image" src="/static/image/bill/add-bill/edit.png"></image>
|
v-model="billData.merchantOption.serviceRecommendInfo.text"
|
||||||
|
@blur="data.focusState.serviceRecommend = false" />
|
||||||
|
<image class="edit-image" src="/static/image/bill/add-bill/edit.png"
|
||||||
|
@click="triggerFocus('serviceRecommend')"></image>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<image class="right-icon" src="/static/image/common/right-grey.png" />
|
<image class="right-icon" src="/static/image/common/right-grey.png" />
|
||||||
</view>
|
</view>
|
||||||
|
<view class="bill-analysis-box"
|
||||||
|
v-if="option.key == 'isShowBillAnalysis' && billData.merchantOption.isShowBillAnalysis">
|
||||||
|
<view class="bill-analysis-text-box">
|
||||||
|
<view class="flex-1 over-hidden">
|
||||||
|
<view class="service-detail-info info-item-input">
|
||||||
|
<!-- 隐藏的text用于测量宽度 -->
|
||||||
|
<text class="text-measure" style="font-size: 22rpx;">{{
|
||||||
|
billData.merchantOption.billAnalysisInfo.text }}</text>
|
||||||
|
|
||||||
|
<input class="text-input" maxlength="20" style="font-size: 22rpx;" type="text"
|
||||||
|
:focus="data.focusState.billAnalysis"
|
||||||
|
v-model="billData.merchantOption.billAnalysisInfo.text"
|
||||||
|
@blur="data.focusState.billAnalysis = false" />
|
||||||
|
<image class="edit-image" src="/static/image/bill/add-bill/edit.png"
|
||||||
|
@click="triggerFocus('billAnalysis')"></image>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
@ -310,6 +347,41 @@ const timepopup = ref(null)
|
||||||
// 账单管理弹窗
|
// 账单管理弹窗
|
||||||
const billManagementPopupRef = ref(null)
|
const billManagementPopupRef = ref(null)
|
||||||
|
|
||||||
|
// 输入框引用定义
|
||||||
|
const nameInputRef = ref(null)
|
||||||
|
const moneyInputRef = ref(null)
|
||||||
|
const balanceInputRef = ref(null)
|
||||||
|
const serviceDetailInputRef = ref(null)
|
||||||
|
const recommendServiceInputRef = ref(null)
|
||||||
|
const serviceRecommendInputRef = ref(null)
|
||||||
|
const billAnalysisInputRef = ref(null)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通用聚焦函数
|
||||||
|
* @param {Object} inputRef 目标输入框的 ref
|
||||||
|
*/
|
||||||
|
const onFocusShortcut = (inputRef) => {
|
||||||
|
if (!inputRef) return
|
||||||
|
nextTick(() => {
|
||||||
|
// uni-app 中 input 组件聚焦通常需要通过设置 focus 属性,但直接调用 focus() 在部分平台更直接
|
||||||
|
// 我们主要通过 ref 操作或设置数据层状态实现
|
||||||
|
if (inputRef.value && typeof inputRef.value.focus === 'function') {
|
||||||
|
inputRef.value.focus()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 触发指定输入框聚焦(响应式变量方式)
|
||||||
|
* @param {String} key focusState 中的键名
|
||||||
|
*/
|
||||||
|
const triggerFocus = (key) => {
|
||||||
|
data.focusState[key] = false
|
||||||
|
nextTick(() => {
|
||||||
|
data.focusState[key] = true
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
const {
|
const {
|
||||||
addBill,
|
addBill,
|
||||||
getBillList,
|
getBillList,
|
||||||
|
|
@ -411,6 +483,13 @@ const switchOptions = [{
|
||||||
"isSwitch": true,
|
"isSwitch": true,
|
||||||
showTypeIds: [1, 2, 3],
|
showTypeIds: [1, 2, 3],
|
||||||
key: 'isShowBarcode',
|
key: 'isShowBarcode',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 10,
|
||||||
|
"name": "账单分析",
|
||||||
|
"isSwitch": true,
|
||||||
|
showTypeIds: [1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13],
|
||||||
|
key: 'isShowBillAnalysis',
|
||||||
}
|
}
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|
@ -484,6 +563,10 @@ const data = reactive({
|
||||||
note: {
|
note: {
|
||||||
isImage: false,
|
isImage: false,
|
||||||
text: ''
|
text: ''
|
||||||
|
},
|
||||||
|
isShowBillAnalysis: false,
|
||||||
|
billAnalysisInfo: {
|
||||||
|
text: '本笔登上月收入榜,看看分析吧'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -495,7 +578,17 @@ const data = reactive({
|
||||||
tagInputValue: "",
|
tagInputValue: "",
|
||||||
showTagInput: false,
|
showTagInput: false,
|
||||||
// switch选项
|
// switch选项
|
||||||
switchOptions: switchOptions
|
switchOptions: switchOptions,
|
||||||
|
// 输入框聚焦状态
|
||||||
|
focusState: {
|
||||||
|
name: false,
|
||||||
|
money: false,
|
||||||
|
balance: false,
|
||||||
|
serviceDetail: false,
|
||||||
|
recommendService: false,
|
||||||
|
serviceRecommend: false,
|
||||||
|
billAnalysis: false
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
let {
|
let {
|
||||||
|
|
@ -967,7 +1060,7 @@ const uploadImage = () => {
|
||||||
*/
|
*/
|
||||||
const saveAndDisplayImage = (file) => {
|
const saveAndDisplayImage = (file) => {
|
||||||
// #ifdef H5
|
// #ifdef H5
|
||||||
return Promise.resolve(file)
|
// return Promise.resolve(file)
|
||||||
// #endif
|
// #endif
|
||||||
|
|
||||||
// #ifndef H5
|
// #ifndef H5
|
||||||
|
|
@ -1496,4 +1589,20 @@ page {
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.bill-analysis-box {
|
||||||
|
border-top: 0.5px solid #E4E4E4;
|
||||||
|
padding: 14rpx 22rpx;
|
||||||
|
|
||||||
|
.bill-analysis-text-box {
|
||||||
|
color: #B7971B;
|
||||||
|
font-size: 26rpx;
|
||||||
|
background-color: #FBF8F1;
|
||||||
|
height: 76rpx;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
border-radius: 16rpx;
|
||||||
|
padding: 0 24rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
@ -172,8 +172,9 @@
|
||||||
|
|
||||||
<view class="bill-management">
|
<view class="bill-management">
|
||||||
<view class="title">账单管理</view>
|
<view class="title">账单管理</view>
|
||||||
<view class="top-box" style="background-color: #FBF8F1;">
|
<view v-if="billData.merchantOption.isShowBillAnalysis" class="top-box" style="background-color: #FBF8F1;">
|
||||||
<text style="font-size: 24rpx;color: #B7971B;">本笔登上月收入榜,看看分析吧</text>
|
<text style="font-size: 24rpx;color: #B7971B;">{{
|
||||||
|
billData.merchantOption.billAnalysisInfo.text || '本笔登上月收入榜,看看分析吧' }}</text>
|
||||||
<uni-icons type="right" size="10" color="#B7971B"></uni-icons>
|
<uni-icons type="right" size="10" color="#B7971B"></uni-icons>
|
||||||
</view>
|
</view>
|
||||||
<view class="bill-classification bill-management-item">
|
<view class="bill-classification bill-management-item">
|
||||||
|
|
|
||||||
|
|
@ -284,7 +284,7 @@ const getBillDataList = () => {
|
||||||
const createTimeItem = item.itemInfoList.find(info => info.key == 'createTime')
|
const createTimeItem = item.itemInfoList.find(info => info.key == 'createTime')
|
||||||
const createTime = createTimeItem ? createTimeItem.value : new Date()
|
const createTime = createTimeItem ? createTimeItem.value : new Date()
|
||||||
|
|
||||||
const date = new Date(createTime)
|
const date = dateUtil.parseSafe(createTime)
|
||||||
const year = date.getFullYear() + ''
|
const year = date.getFullYear() + ''
|
||||||
const month = (date.getMonth() + 1) + ''
|
const month = (date.getMonth() + 1) + ''
|
||||||
|
|
||||||
|
|
@ -342,7 +342,7 @@ const getBillDataList = () => {
|
||||||
|
|
||||||
//每个月内的账单按时间倒序
|
//每个月内的账单按时间倒序
|
||||||
groupList.forEach(group => {
|
groupList.forEach(group => {
|
||||||
group.list.sort((a, b) => new Date(b.timestamp) - new Date(a.timestamp))
|
group.list.sort((a, b) => dateUtil.parseSafe(b.timestamp) - dateUtil.parseSafe(a.timestamp))
|
||||||
})
|
})
|
||||||
|
|
||||||
data.billList = groupList
|
data.billList = groupList
|
||||||
|
|
@ -624,6 +624,13 @@ page {
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
overflow-x: scroll;
|
overflow-x: scroll;
|
||||||
|
|
||||||
|
&::-webkit-scrollbar {
|
||||||
|
display: none;
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
.filter-item {
|
.filter-item {
|
||||||
background-color: #ffffff;
|
background-color: #ffffff;
|
||||||
color: var(--text-primary);
|
color: var(--text-primary);
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
<view>
|
<view>
|
||||||
<image :src="data.banner" style="width: 100%;height: 244px;"></image>
|
<image :src="data.banner" style="width: 100%;height: 244px;"></image>
|
||||||
</view>
|
</view>
|
||||||
<exchange />
|
<exchange v-if="data.tradeCoupon" />
|
||||||
<!-- <view style="margin-top:-90px;position: relative;">
|
<!-- <view style="margin-top:-90px;position: relative;">
|
||||||
<customTab :isHuise="shouldBeTrue(data.goods)" />
|
<customTab :isHuise="shouldBeTrue(data.goods)" />
|
||||||
</view> -->
|
</view> -->
|
||||||
|
|
@ -463,7 +463,8 @@ const data = reactive({
|
||||||
isProcessingClick: false,
|
isProcessingClick: false,
|
||||||
banner: '/static/image/recharge/banner1.png',
|
banner: '/static/image/recharge/banner1.png',
|
||||||
isCombo: false,
|
isCombo: false,
|
||||||
source: "uni_alipay_other"
|
source: "uni_alipay_other",
|
||||||
|
tradeCoupon: false
|
||||||
})
|
})
|
||||||
|
|
||||||
let {
|
let {
|
||||||
|
|
@ -493,6 +494,7 @@ onLoad(async (option) => {
|
||||||
}
|
}
|
||||||
const config = uni.getStorageSync('config').config
|
const config = uni.getStorageSync('config').config
|
||||||
const themeConfig = config?.['client.uniapp.theme']
|
const themeConfig = config?.['client.uniapp.theme']
|
||||||
|
data.tradeCoupon = config?.['client.trade_coupon'] === true ? true : false
|
||||||
if (themeConfig?.enable) {
|
if (themeConfig?.enable) {
|
||||||
if (themeConfig?.theme == '0214') {
|
if (themeConfig?.theme == '0214') {
|
||||||
data.banner = '/static/image/recharge/214/bannar.png'
|
data.banner = '/static/image/recharge/214/bannar.png'
|
||||||
|
|
|
||||||
|
|
@ -16,10 +16,13 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref, getCurrentInstance } from 'vue';
|
import { ref, reactive, getCurrentInstance } from 'vue';
|
||||||
import { onLoad } from '@dcloudio/uni-app'
|
import { onLoad } from '@dcloudio/uni-app'
|
||||||
|
|
||||||
const { proxy } = getCurrentInstance();
|
const { proxy } = getCurrentInstance();
|
||||||
|
const data = reactive({
|
||||||
|
phone: ''
|
||||||
|
})
|
||||||
|
|
||||||
onLoad((options) => {
|
onLoad((options) => {
|
||||||
if (options.phone) {
|
if (options.phone) {
|
||||||
|
|
@ -47,6 +50,7 @@ const menuList = ref([
|
||||||
bgColor: ["#FFF0DA", "#FFFFFF"],
|
bgColor: ["#FFF0DA", "#FFFFFF"],
|
||||||
btnBg: "#FF953C",
|
btnBg: "#FF953C",
|
||||||
shadowColor: "#FF953C",
|
shadowColor: "#FF953C",
|
||||||
|
// url: "/pages/shopping/taobao/list-index"
|
||||||
url: ""
|
url: ""
|
||||||
}, {
|
}, {
|
||||||
name: "快手",
|
name: "快手",
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,11 @@
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
|
<view v-if="!isEditMode" class="random-dice">
|
||||||
|
<image style="width: 2rem;height: 2rem;" src="/static/image/common/random-dice.png"
|
||||||
|
@click="clickRandomDate"></image>
|
||||||
|
</view>
|
||||||
|
|
||||||
<!-- 等待付款 -->
|
<!-- 等待付款 -->
|
||||||
<template v-if="activeTab == 'dengdaifukuan'">
|
<template v-if="activeTab == 'dengdaifukuan'">
|
||||||
<view class="tip-box">
|
<view class="tip-box">
|
||||||
|
|
@ -313,8 +318,8 @@
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view v-else class="btn-box">
|
<view class="btn-box">
|
||||||
<view class="btn" :class="{ red: btn == '送朋友' }" v-for="btn in btnList">
|
<view class="btn" :class="{ red: btn == '送朋友' }" v-for="(btn, index) in btnList" :key="index">
|
||||||
<image v-if="btn == '送朋友'" class="icon" src="/static/image/shopping/jingdong/detail/gift.png">
|
<image v-if="btn == '送朋友'" class="icon" src="/static/image/shopping/jingdong/detail/gift.png">
|
||||||
</image>
|
</image>
|
||||||
{{ btn }}
|
{{ btn }}
|
||||||
|
|
@ -374,7 +379,7 @@
|
||||||
|
|
||||||
</view>
|
</view>
|
||||||
<view class="order-info ">
|
<view class="order-info ">
|
||||||
<view class="item flex-justify-between" v-for="item in order.orderInfo"
|
<view class="item flex-justify-between" v-for="(item, index) in order.orderInfo" :key="index"
|
||||||
@click="onClickItemInfo(item)">
|
@click="onClickItemInfo(item)">
|
||||||
<text class="label shrink-0">{{ item.label }}</text>
|
<text class="label shrink-0">{{ item.label }}</text>
|
||||||
<view class="flex-1 flex-align-center"
|
<view class="flex-1 flex-align-center"
|
||||||
|
|
@ -387,7 +392,7 @@
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="delivery-info">
|
<view class="delivery-info">
|
||||||
<view class="item flex-justify-between" v-for="item in order.sendType"
|
<view class="item flex-justify-between" v-for="(item, index) in order.sendType" :key="index"
|
||||||
@click="onClickItemInfo(item)">
|
@click="onClickItemInfo(item)">
|
||||||
<text class="label shrink-0">{{ item.label }}</text>
|
<text class="label shrink-0">{{ item.label }}</text>
|
||||||
<view class="flex-1 flex-align-center"
|
<view class="flex-1 flex-align-center"
|
||||||
|
|
@ -472,7 +477,7 @@
|
||||||
import { onLoad } from "@dcloudio/uni-app";
|
import { onLoad } from "@dcloudio/uni-app";
|
||||||
import { ref, computed, watch, onMounted, nextTick } from "vue";
|
import { ref, computed, watch, onMounted, nextTick } from "vue";
|
||||||
import NavBar from "@/components/nav-bar/nav-bar.vue";
|
import NavBar from "@/components/nav-bar/nav-bar.vue";
|
||||||
import { shoppingType, shoppingClassfiy } from "../json/order.json";
|
import { shoppingType, shoppingClassfiy, shoppingProductList } from "../json/order.json";
|
||||||
import AutoWidthInput from "@/components/common/auto-width-input.vue";
|
import AutoWidthInput from "@/components/common/auto-width-input.vue";
|
||||||
import DateTimePicker from '@/components/dengrq-datetime-picker/dateTimePicker/index.vue';
|
import DateTimePicker from '@/components/dengrq-datetime-picker/dateTimePicker/index.vue';
|
||||||
import { stringUtil } from '@/utils/common.js';
|
import { stringUtil } from '@/utils/common.js';
|
||||||
|
|
@ -552,9 +557,9 @@ const order = ref(shoppingClassfiy[activeTab.value]);
|
||||||
|
|
||||||
// 初始化默认地址信息,防止渲染时为空
|
// 初始化默认地址信息,防止渲染时为空
|
||||||
if (order.value) {
|
if (order.value) {
|
||||||
order.value.consignee = order.value.consignee;
|
order.value.consignee = order.value.consignee || "";
|
||||||
order.value.phone = order.value.phone;
|
order.value.phone = order.value.phone || "";
|
||||||
order.value.fullAddress = order.value.fullAddress;
|
order.value.fullAddress = order.value.fullAddress || "";
|
||||||
}
|
}
|
||||||
|
|
||||||
// 时间选择器数据
|
// 时间选择器数据
|
||||||
|
|
@ -649,10 +654,54 @@ onLoad((options) => {
|
||||||
date.setHours(date.getHours() + Math.floor(Math.random() * 12));
|
date.setHours(date.getHours() + Math.floor(Math.random() * 12));
|
||||||
order.value.trackingTime = formatTime(date);
|
order.value.trackingTime = formatTime(date);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 随机初始化商品数据
|
||||||
|
clickRandomDate();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 随机选择商品 (避开当前商品)
|
||||||
|
*/
|
||||||
|
const clickRandomDate = () => {
|
||||||
|
if (!shoppingProductList || shoppingProductList.length === 0) return;
|
||||||
|
|
||||||
|
// 获取当前商品标题 (用于去重)
|
||||||
|
const currentTitle = order.value?.products?.[0]?.title || '';
|
||||||
|
|
||||||
|
// 过滤掉当前已经选中的商品
|
||||||
|
let availableProducts = shoppingProductList.filter(p => {
|
||||||
|
const title = p.products?.[0]?.title || '';
|
||||||
|
return title !== currentTitle;
|
||||||
|
});
|
||||||
|
|
||||||
|
// 如果过滤后没剩或者只有一个商品且刚好是当前的,则 fallback 到全量随机
|
||||||
|
if (availableProducts.length === 0) {
|
||||||
|
availableProducts = shoppingProductList;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 随机抽选
|
||||||
|
const randomIndex = Math.floor(Math.random() * availableProducts.length);
|
||||||
|
const selected = JSON.parse(JSON.stringify(availableProducts[randomIndex]));
|
||||||
|
|
||||||
|
// 更新到当前订单对象
|
||||||
|
if (order.value) {
|
||||||
|
order.value.shopType = selected.shopType || order.value.shopType;
|
||||||
|
order.value.shopName = selected.shopName || order.value.shopName;
|
||||||
|
order.value.totalPrice = selected.totalPrice || order.value.totalPrice;
|
||||||
|
order.value.carriage = selected.carriage || order.value.carriage;
|
||||||
|
order.value.discount = selected.discount || order.value.discount;
|
||||||
|
|
||||||
|
if (selected.products && selected.products.length > 0) {
|
||||||
|
order.value.products[0] = {
|
||||||
|
...order.value.products[0],
|
||||||
|
...selected.products[0]
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 选择图片并转换为本地持久化路径 (并清理旧图)
|
* 选择图片并转换为本地持久化路径 (并清理旧图)
|
||||||
*/
|
*/
|
||||||
|
|
@ -875,6 +924,14 @@ const switchTab = (item) => {
|
||||||
order.value.fullAddress = oldData.fullAddress || order.value.fullAddress;
|
order.value.fullAddress = oldData.fullAddress || order.value.fullAddress;
|
||||||
order.value.shopName = oldData.shopName || order.value.shopName;
|
order.value.shopName = oldData.shopName || order.value.shopName;
|
||||||
order.value.shopType = oldData.shopType || order.value.shopType;
|
order.value.shopType = oldData.shopType || order.value.shopType;
|
||||||
|
order.value.carriage = oldData.carriage || order.value.carriage;
|
||||||
|
order.value.discount = oldData.discount || order.value.discount;
|
||||||
|
order.value.totalPrice = oldData.totalPrice || order.value.totalPrice;
|
||||||
|
|
||||||
|
// 恢复商品数据
|
||||||
|
if (order.value.products && order.value.products[0] && oldData.products && oldData.products[0]) {
|
||||||
|
order.value.products[0] = JSON.parse(JSON.stringify(oldData.products[0]));
|
||||||
|
}
|
||||||
|
|
||||||
// 恢复 orderInfo 中的手动输入值
|
// 恢复 orderInfo 中的手动输入值
|
||||||
if (order.value.orderInfo && oldData.orderInfo) {
|
if (order.value.orderInfo && oldData.orderInfo) {
|
||||||
|
|
@ -1803,4 +1860,10 @@ watch([
|
||||||
background-color: #ffffff;
|
background-color: #ffffff;
|
||||||
border-radius: 24rpx;
|
border-radius: 24rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.random-dice {
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-end;
|
||||||
|
margin: 0 16rpx;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
@ -8,6 +8,12 @@
|
||||||
<text>{{ item.label }}</text>
|
<text>{{ item.label }}</text>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
|
<view v-if="!isEditMode" class="random-dice">
|
||||||
|
<image style="width: 2rem;height: 2rem;" src="/static/image/common/random-dice.png"
|
||||||
|
@click="clickRandomDate"></image>
|
||||||
|
</view>
|
||||||
|
|
||||||
<!-- 未支付 -->
|
<!-- 未支付 -->
|
||||||
<template v-if="activeTab == 'weizhifu'">
|
<template v-if="activeTab == 'weizhifu'">
|
||||||
<view class="weizhifu card">
|
<view class="weizhifu card">
|
||||||
|
|
@ -375,7 +381,8 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<view class="order-info">
|
<view class="order-info">
|
||||||
<view class="item flex-justify-between" v-for="item in order.orderInfo" @click="onClickItemInfo(item)">
|
<view class="item flex-justify-between" v-for="(item, index) in order.orderInfo" :key="index"
|
||||||
|
@click="onClickItemInfo(item)">
|
||||||
<text class="label shrink-0">{{ item.label }}</text>
|
<text class="label shrink-0">{{ item.label }}</text>
|
||||||
<view class="flex-1 flex-align-center"
|
<view class="flex-1 flex-align-center"
|
||||||
style="justify-content: flex-end;width: 300rpx;overflow-x: auto;margin-left: 20rpx;">
|
style="justify-content: flex-end;width: 300rpx;overflow-x: auto;margin-left: 20rpx;">
|
||||||
|
|
@ -470,7 +477,7 @@
|
||||||
import { onLoad } from "@dcloudio/uni-app";
|
import { onLoad } from "@dcloudio/uni-app";
|
||||||
import { ref, computed, watch, onMounted, nextTick, reactive, toRefs } from "vue";
|
import { ref, computed, watch, onMounted, nextTick, reactive, toRefs } from "vue";
|
||||||
import NavBar from "@/components/nav-bar/nav-bar.vue";
|
import NavBar from "@/components/nav-bar/nav-bar.vue";
|
||||||
import { waimaiType, waimaiClassfiy } from "../json/order.json";
|
import { waimaiType, waimaiClassfiy, waimaiProductList } from "../json/order.json";
|
||||||
import AutoWidthInput from "@/components/common/auto-width-input.vue";
|
import AutoWidthInput from "@/components/common/auto-width-input.vue";
|
||||||
import DateTimePicker from '@/components/dengrq-datetime-picker/dateTimePicker/index.vue';
|
import DateTimePicker from '@/components/dengrq-datetime-picker/dateTimePicker/index.vue';
|
||||||
import { stringUtil } from "@/utils/common.js";
|
import { stringUtil } from "@/utils/common.js";
|
||||||
|
|
@ -525,6 +532,11 @@ const switchTab = (item) => {
|
||||||
|
|
||||||
// 统一调用初始化逻辑补全缺失时间(下单、支付、交易、期望时间)
|
// 统一调用初始化逻辑补全缺失时间(下单、支付、交易、期望时间)
|
||||||
initDefaultTimes();
|
initDefaultTimes();
|
||||||
|
|
||||||
|
// 如果是新增模式,切换 tab 时也随机一下商品 (符合用户要求)
|
||||||
|
if (!isEditMode.value) {
|
||||||
|
clickRandomDate();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -711,7 +723,6 @@ const chooseRecommendImg = () => {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
const orderRef = ref(data.order);
|
|
||||||
|
|
||||||
// 初始化默认时间值与订单号
|
// 初始化默认时间值与订单号
|
||||||
const initDefaultTimes = () => {
|
const initDefaultTimes = () => {
|
||||||
|
|
@ -780,9 +791,44 @@ onLoad((options) => {
|
||||||
// 新增模式
|
// 新增模式
|
||||||
initDefaultTimes();
|
initDefaultTimes();
|
||||||
switchTab({ key: activeTab.value });
|
switchTab({ key: activeTab.value });
|
||||||
|
// 初始化随机
|
||||||
|
clickRandomDate();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 随机选择外卖商品 (避开当前商品)
|
||||||
|
*/
|
||||||
|
const clickRandomDate = () => {
|
||||||
|
if (!waimaiProductList || waimaiProductList.length === 0) return;
|
||||||
|
|
||||||
|
// 获取当前店铺名称 (用于去重)
|
||||||
|
const currentShop = order.value?.shopName || '';
|
||||||
|
|
||||||
|
// 过滤掉当前已经选中的店铺
|
||||||
|
let available = waimaiProductList.filter(p => p.shopName !== currentShop);
|
||||||
|
|
||||||
|
// 如果过滤后没剩,则全量随机
|
||||||
|
if (available.length === 0) {
|
||||||
|
available = waimaiProductList;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 随机抽选
|
||||||
|
const randomIndex = Math.floor(Math.random() * available.length);
|
||||||
|
const selected = JSON.parse(JSON.stringify(available[randomIndex]));
|
||||||
|
|
||||||
|
// 更新到当前订单对象
|
||||||
|
if (order.value) {
|
||||||
|
order.value.shopName = selected.shopName || order.value.shopName;
|
||||||
|
if (selected.products && selected.products.length > 0) {
|
||||||
|
// 替换整个商品列表
|
||||||
|
order.value.products = selected.products;
|
||||||
|
}
|
||||||
|
// 触发 UI 更新
|
||||||
|
order.value = { ...order.value };
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
const deliveryTimePopup = ref(null);
|
const deliveryTimePopup = ref(null);
|
||||||
const timepopup = ref(null); // 单点时间选择器引用
|
const timepopup = ref(null); // 单点时间选择器引用
|
||||||
const deliveryHours = Array.from({ length: 24 }, (_, i) => i.toString().padStart(2, '0'));
|
const deliveryHours = Array.from({ length: 24 }, (_, i) => i.toString().padStart(2, '0'));
|
||||||
|
|
@ -1043,19 +1089,6 @@ const generateRandomOrder = () => {
|
||||||
return Math.floor(Math.random() * 9000000000) + 1000000000;
|
return Math.floor(Math.random() * 9000000000) + 1000000000;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* 生成默认期望时间
|
|
||||||
*/
|
|
||||||
const generateDefaultExpectedTime = () => {
|
|
||||||
const date = new Date();
|
|
||||||
date.setMinutes(date.getMinutes() + 30);
|
|
||||||
const h = date.getHours().toString().padStart(2, '0');
|
|
||||||
const min = date.getMinutes().toString().padStart(2, '0');
|
|
||||||
const date2 = new Date(date.getTime() + 15 * 60000);
|
|
||||||
const h2 = date2.getHours().toString().padStart(2, '0');
|
|
||||||
const min2 = date2.getMinutes().toString().padStart(2, '0');
|
|
||||||
return `${h}:${min}-${h2}:${min2}`;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 计算商品总价
|
* 计算商品总价
|
||||||
|
|
@ -1891,4 +1924,10 @@ const onConfirm = () => {
|
||||||
background-color: #ffffff;
|
background-color: #ffffff;
|
||||||
border-radius: 24rpx;
|
border-radius: 24rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.random-dice {
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-end;
|
||||||
|
margin: 0 16rpx;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
{
|
{
|
||||||
|
// "购物订单分类字段"
|
||||||
"shoppingClassfiy": {
|
"shoppingClassfiy": {
|
||||||
"dengdaifukuan": {
|
"dengdaifukuan": {
|
||||||
"id": "",
|
"id": "",
|
||||||
|
|
@ -6,9 +7,9 @@
|
||||||
"shopName": "",
|
"shopName": "",
|
||||||
"status": "等待付款",
|
"status": "等待付款",
|
||||||
"statusDesc": "",
|
"statusDesc": "",
|
||||||
"consignee": "",
|
"consignee": "张三",
|
||||||
"phone": "",
|
"phone": "13812345678",
|
||||||
"fullAddress": "",
|
"fullAddress": "上海市浦东新区汤臣一品",
|
||||||
"totalPrice": "",
|
"totalPrice": "",
|
||||||
"carriage": "0.00",
|
"carriage": "0.00",
|
||||||
"products": [
|
"products": [
|
||||||
|
|
@ -81,9 +82,9 @@
|
||||||
"trackingDesc": "预计明天9:00-15:00送达",
|
"trackingDesc": "预计明天9:00-15:00送达",
|
||||||
"trackingDesc2": "快递运输 · 温馨提示:您的订单预计x月xx日09:00- 15:00送达",
|
"trackingDesc2": "快递运输 · 温馨提示:您的订单预计x月xx日09:00- 15:00送达",
|
||||||
"trackingTime": "",
|
"trackingTime": "",
|
||||||
"consignee": "",
|
"consignee": "张三",
|
||||||
"phone": "",
|
"phone": "13812345678",
|
||||||
"fullAddress": "",
|
"fullAddress": "上海市浦东新区汤臣一品",
|
||||||
"totalPrice": "",
|
"totalPrice": "",
|
||||||
"carriage": "0.00",
|
"carriage": "0.00",
|
||||||
"discount": "0.00",
|
"discount": "0.00",
|
||||||
|
|
@ -166,13 +167,16 @@
|
||||||
"status": "完成",
|
"status": "完成",
|
||||||
"statusColor": "gray",
|
"statusColor": "gray",
|
||||||
"trackingTitle": "已签收",
|
"trackingTitle": "已签收",
|
||||||
"courier": "",
|
"courier": "李四",
|
||||||
"courierImg": "",
|
"courierImg": "/static/image/shopping/jingdong/detail/kuaidiyuan.png",
|
||||||
"trackingDesc": "您的订单已签收,可对快递员的服务进行评价或打赏哦~",
|
"trackingDesc": "您的订单已签收,可对快递员的服务进行评价或打赏哦~",
|
||||||
"trackingDesc2": "快递运输 · 温馨提示:您的订单已签收",
|
"trackingDesc2": "快递运输 · 温馨提示:您的订单已签收",
|
||||||
"trackingTime": "",
|
"trackingTime": "",
|
||||||
"carriage": "0.00",
|
"carriage": "0.00",
|
||||||
"discount": "0.00",
|
"discount": "0.00",
|
||||||
|
"consignee": "张三",
|
||||||
|
"phone": "13812345678",
|
||||||
|
"fullAddress": "上海市浦东新区汤臣一品",
|
||||||
"products": [
|
"products": [
|
||||||
{
|
{
|
||||||
"image": "",
|
"image": "",
|
||||||
|
|
@ -243,6 +247,9 @@
|
||||||
"statusColor": "gray",
|
"statusColor": "gray",
|
||||||
"carriage": "0.00",
|
"carriage": "0.00",
|
||||||
"discount": "0.00",
|
"discount": "0.00",
|
||||||
|
"consignee": "张三",
|
||||||
|
"phone": "13812345678",
|
||||||
|
"fullAddress": "上海市浦东新区汤臣一品",
|
||||||
"products": [
|
"products": [
|
||||||
{
|
{
|
||||||
"image": "",
|
"image": "",
|
||||||
|
|
@ -297,7 +304,7 @@
|
||||||
{
|
{
|
||||||
"label": "收货地址",
|
"label": "收货地址",
|
||||||
"key": "address",
|
"key": "address",
|
||||||
"value": "",
|
"value": "上海市浦东新区汤臣一品",
|
||||||
"type": "textarea"
|
"type": "textarea"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
@ -311,9 +318,9 @@
|
||||||
"statusColor": "gray",
|
"statusColor": "gray",
|
||||||
"carriage": "0.00",
|
"carriage": "0.00",
|
||||||
"discount": "0.00",
|
"discount": "0.00",
|
||||||
"consignee": "",
|
"consignee": "张三",
|
||||||
"phone": "",
|
"phone": "13812345678",
|
||||||
"fullAddress": "",
|
"fullAddress": "上海市浦东新区汤臣一品",
|
||||||
"products": [
|
"products": [
|
||||||
{
|
{
|
||||||
"image": "",
|
"image": "",
|
||||||
|
|
@ -374,6 +381,7 @@
|
||||||
"hasMore": true
|
"hasMore": true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
// "购物类型"
|
||||||
"shoppingType": [
|
"shoppingType": [
|
||||||
{
|
{
|
||||||
"label": "等待付款",
|
"label": "等待付款",
|
||||||
|
|
@ -396,6 +404,7 @@
|
||||||
"key": "yiquxiao"
|
"key": "yiquxiao"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
// "外卖订单分类字段"
|
||||||
"waimaiClassfiy": {
|
"waimaiClassfiy": {
|
||||||
"weizhifu": {
|
"weizhifu": {
|
||||||
"id": "",
|
"id": "",
|
||||||
|
|
@ -405,9 +414,9 @@
|
||||||
"status": "等待付款",
|
"status": "等待付款",
|
||||||
"statusDesc": "",
|
"statusDesc": "",
|
||||||
"deliveryTime": "11:17-11:32",
|
"deliveryTime": "11:17-11:32",
|
||||||
"address": "",
|
"address": "上海市浦东新区汤臣一品",
|
||||||
"phone": "",
|
"phone": "13562365984",
|
||||||
"consignee": "",
|
"consignee": "张三",
|
||||||
"discountCarriage": "",
|
"discountCarriage": "",
|
||||||
"carriage": "",
|
"carriage": "",
|
||||||
"packagingFee": "",
|
"packagingFee": "",
|
||||||
|
|
@ -470,7 +479,9 @@
|
||||||
"deliveryImages": "",
|
"deliveryImages": "",
|
||||||
"discountCarriage": "",
|
"discountCarriage": "",
|
||||||
"discount": "0.00",
|
"discount": "0.00",
|
||||||
"carriage": "",
|
"address": "上海市浦东新区汤臣一品",
|
||||||
|
"phone": "13562365984",
|
||||||
|
"consignee": "张三",
|
||||||
"packagingFee": "",
|
"packagingFee": "",
|
||||||
"recommendImg": "/static/image/shopping/jingdong/waimai/shop-recoomend/style-1.png",
|
"recommendImg": "/static/image/shopping/jingdong/waimai/shop-recoomend/style-1.png",
|
||||||
"amountTo": "",
|
"amountTo": "",
|
||||||
|
|
@ -543,6 +554,9 @@
|
||||||
"carriage": "",
|
"carriage": "",
|
||||||
"packagingFee": "",
|
"packagingFee": "",
|
||||||
"discount": "0.00",
|
"discount": "0.00",
|
||||||
|
"address": "上海市浦东新区汤臣一品",
|
||||||
|
"phone": "13562365984",
|
||||||
|
"consignee": "张三",
|
||||||
"amountTo": "",
|
"amountTo": "",
|
||||||
"products": [
|
"products": [
|
||||||
{
|
{
|
||||||
|
|
@ -610,6 +624,9 @@
|
||||||
"carriage": "",
|
"carriage": "",
|
||||||
"discount": "0.00",
|
"discount": "0.00",
|
||||||
"amountTo": "",
|
"amountTo": "",
|
||||||
|
"address": "上海市浦东新区汤臣一品",
|
||||||
|
"phone": "13562365984",
|
||||||
|
"consignee": "张三",
|
||||||
"products": [
|
"products": [
|
||||||
{
|
{
|
||||||
"image": "",
|
"image": "",
|
||||||
|
|
@ -679,6 +696,9 @@
|
||||||
"discount": "0.00",
|
"discount": "0.00",
|
||||||
"carriage": "",
|
"carriage": "",
|
||||||
"amountTo": "",
|
"amountTo": "",
|
||||||
|
"address": "上海市浦东新区汤臣一品",
|
||||||
|
"phone": "13562365984",
|
||||||
|
"consignee": "张三",
|
||||||
"products": [
|
"products": [
|
||||||
{
|
{
|
||||||
"image": "",
|
"image": "",
|
||||||
|
|
@ -721,6 +741,7 @@
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
// "外卖类型"
|
||||||
"waimaiType": [
|
"waimaiType": [
|
||||||
{
|
{
|
||||||
"label": "未支付",
|
"label": "未支付",
|
||||||
|
|
@ -742,5 +763,583 @@
|
||||||
"label": "取消",
|
"label": "取消",
|
||||||
"key": "yiquxiao"
|
"key": "yiquxiao"
|
||||||
}
|
}
|
||||||
|
],
|
||||||
|
// "购物随机产品列表"
|
||||||
|
"shoppingProductList": [
|
||||||
|
{
|
||||||
|
"shopType": "self",
|
||||||
|
"shopName": "京东数码自营旗舰店",
|
||||||
|
"totalPrice": "0",
|
||||||
|
"carriage": "0.00",
|
||||||
|
"discount": "0",
|
||||||
|
"products": [
|
||||||
|
{
|
||||||
|
"image": "/static/image/shopping/jingdong/product/shopping/xianka.png",
|
||||||
|
"name": "",
|
||||||
|
"title": "华硕 TUF 5090显卡",
|
||||||
|
"desc": "5090旗舰算力 水冷夜神OC",
|
||||||
|
"service": "不支持7天无理由退货",
|
||||||
|
"price": "39849.00",
|
||||||
|
"count": "1"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"shopType": "self",
|
||||||
|
"shopName": "Apple 产品京东自营旗舰店",
|
||||||
|
"totalPrice": "",
|
||||||
|
"carriage": "0.00",
|
||||||
|
"discount": "0",
|
||||||
|
"products": [
|
||||||
|
{
|
||||||
|
"image": "/static/image/shopping/jingdong/product/shopping/iphone.png",
|
||||||
|
"name": "Apple iPhone 17 Pro",
|
||||||
|
"title": "Apple/苹果 iPhone 17 Pro Max 1TB 星宇橙色",
|
||||||
|
"desc": "星宇橙色;全网通5G",
|
||||||
|
"service": "免费上门退换 七天无理由退货",
|
||||||
|
"price": "12999.00",
|
||||||
|
"count": "1"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"shopType": "self",
|
||||||
|
"shopName": "路易威登京东官方旗舰店",
|
||||||
|
"totalPrice": "",
|
||||||
|
"carriage": "0.00",
|
||||||
|
"discount": "0.00",
|
||||||
|
"products": [
|
||||||
|
{
|
||||||
|
"image": "/static/image/shopping/jingdong/product/shopping/lv.png",
|
||||||
|
"name": "LV",
|
||||||
|
"title": "路易威登 经典老花手提包",
|
||||||
|
"desc": "经典老花;手提包",
|
||||||
|
"service": "次日达",
|
||||||
|
"price": "23979.25",
|
||||||
|
"count": "1"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"shopType": "jd",
|
||||||
|
"shopName": "索尼(SONY)数码京东官方旗舰店",
|
||||||
|
"totalPrice": "15499.00",
|
||||||
|
"carriage": "0.00",
|
||||||
|
"discount": "200.00",
|
||||||
|
"products": [
|
||||||
|
{
|
||||||
|
"image": "/static/image/shopping/jingdong/product/shopping/sony.png",
|
||||||
|
"name": "Sony",
|
||||||
|
"title": "索尼(SONY)Alpha 7 IV 全画幅微单数码相机",
|
||||||
|
"desc": "单机身(不含镜头);约3300万有效像素",
|
||||||
|
"service": "厂家发货",
|
||||||
|
"price": "15499.00",
|
||||||
|
"count": "1"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"shopType": "self",
|
||||||
|
"shopName": "京东超市-五粮液自营店",
|
||||||
|
"totalPrice": "2198.00",
|
||||||
|
"carriage": "0.00",
|
||||||
|
"discount": "100.00",
|
||||||
|
"products": [
|
||||||
|
{
|
||||||
|
"image": "/static/image/shopping/jingdong/product/shopping/wuliangye.png",
|
||||||
|
"name": "五粮液",
|
||||||
|
"title": "五粮液 普五 第八代 浓香型白酒 52度 500ml*2瓶",
|
||||||
|
"desc": "500ml*2礼盒装;浓香型",
|
||||||
|
"service": "211限时达",
|
||||||
|
"price": "1099.00",
|
||||||
|
"count": "2"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"shopType": "jd",
|
||||||
|
"shopName": "戴森Dyson京东自营官方旗舰店",
|
||||||
|
"totalPrice": "3299.00",
|
||||||
|
"carriage": "0.00",
|
||||||
|
"discount": "0.00",
|
||||||
|
"products": [
|
||||||
|
{
|
||||||
|
"image": "/static/image/shopping/jingdong/product/shopping/dyson_v12.png",
|
||||||
|
"name": "戴森",
|
||||||
|
"title": "戴森(Dyson) V12 Detect Slim 无绳吸尘器",
|
||||||
|
"desc": "轻量版;激光探测;轻量吸尘器",
|
||||||
|
"service": "次日达",
|
||||||
|
"price": "3299.00",
|
||||||
|
"count": "1"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
// "外卖随机产品列表"
|
||||||
|
"waimaiProductList": [
|
||||||
|
{
|
||||||
|
"shopName": "喜茶 (上海中区广场店)",
|
||||||
|
"products": [
|
||||||
|
{
|
||||||
|
"image": "/static/image/shopping/jingdong/product/waimai/xicha1.png",
|
||||||
|
"title": "多肉葡萄",
|
||||||
|
"desc": "标准冰/五分糖;一人份",
|
||||||
|
"price": "28.00",
|
||||||
|
"count": "1",
|
||||||
|
"discount": "2.00"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"shopName": "肯德基宅急送 (南京路店)",
|
||||||
|
"products": [
|
||||||
|
{
|
||||||
|
"image": "/static/image/shopping/jingdong/product/waimai/kfc.png",
|
||||||
|
"title": "劲脆鸡腿堡单人餐",
|
||||||
|
"desc": "汉堡+薯条+可乐;一人份",
|
||||||
|
"price": "38.50",
|
||||||
|
"count": "1",
|
||||||
|
"discount": "9.00"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"shopName": "Wagas 沃歌斯 (嘉里中心店)",
|
||||||
|
"products": [
|
||||||
|
{
|
||||||
|
"image": "/static/image/shopping/jingdong/product/waimai/shala.png",
|
||||||
|
"title": "沃歌斯冠军沙拉",
|
||||||
|
"desc": "含鸡肉/羽衣甘蓝;一人份",
|
||||||
|
"price": "68.00",
|
||||||
|
"count": "1",
|
||||||
|
"discount": "0.00"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"shopName": "海底捞外送 (火锅外卖)",
|
||||||
|
"products": [
|
||||||
|
{
|
||||||
|
"image": "/static/image/shopping/jingdong/product/waimai/haidilao.png",
|
||||||
|
"title": "捞派肥牛 (半份)",
|
||||||
|
"desc": "精选谷饲肥牛;一人份",
|
||||||
|
"price": "36.00",
|
||||||
|
"count": "1",
|
||||||
|
"discount": "0.00"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"shopName": "星巴克专星送 (国金中心店)",
|
||||||
|
"products": [
|
||||||
|
{
|
||||||
|
"image": "/static/image/shopping/jingdong/product/waimai/xingbake.png",
|
||||||
|
"title": "燕麦拿铁 (大杯)",
|
||||||
|
"desc": "不额外加糖/常温;一人份",
|
||||||
|
"price": "35.00",
|
||||||
|
"count": "1",
|
||||||
|
"discount": "7.00"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"shopName": "新荣记 (黑珍珠三钻·南京西路店)",
|
||||||
|
"products": [
|
||||||
|
{
|
||||||
|
"image": "/static/image/shopping/jingdong/product/waimai/huajiaoji.png",
|
||||||
|
"title": "至尊黄焖两头干鲍鱼花胶鸡套餐",
|
||||||
|
"desc": "精选20头干鲍、深海花胶、清远走地鸡;单人尊享",
|
||||||
|
"price": "3888.00",
|
||||||
|
"count": "1",
|
||||||
|
"discount": "0.00"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
// "初始化默认数据"
|
||||||
|
"defaultDataList": [
|
||||||
|
{
|
||||||
|
"id": "70085b84-5e10-4ece-a971-9242e19b47de",
|
||||||
|
"shopType": "self",
|
||||||
|
"shopName": "路易威登京东官方旗舰店",
|
||||||
|
"status": "正在出库",
|
||||||
|
"trackingTitle": "仓库处理中",
|
||||||
|
"trackingDesc": "预计明天9:00-15:00送达",
|
||||||
|
"trackingDesc2": "快递运输 · 温馨提示:您的订单预计x月xx日09:00- 15:00送达",
|
||||||
|
"trackingTime": "2026-04-23 10:16:09",
|
||||||
|
"consignee": "张三",
|
||||||
|
"phone": "13812345678",
|
||||||
|
"fullAddress": "上海市浦东新区汤臣一品",
|
||||||
|
"totalPrice": "23979.25",
|
||||||
|
"carriage": "0.00",
|
||||||
|
"discount": "0.00",
|
||||||
|
"products": [
|
||||||
|
{
|
||||||
|
"image": "/static/image/shopping/jingdong/product/shopping/lv.png",
|
||||||
|
"name": "LV",
|
||||||
|
"title": "路易威登 经典老花手提包",
|
||||||
|
"desc": "经典老花;手提包",
|
||||||
|
"service": "次日达",
|
||||||
|
"price": "23979.25",
|
||||||
|
"count": "1"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"orderInfo": [
|
||||||
|
{
|
||||||
|
"label": "订单编号",
|
||||||
|
"key": "orderNumber",
|
||||||
|
"value": "300232448729868720",
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "交易快照",
|
||||||
|
"key": "transactionSnapshot",
|
||||||
|
"value": "发生交易争执时,可作为判断依据"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "支付方式",
|
||||||
|
"key": "paymentMethod",
|
||||||
|
"value": "在线支付"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "支付时间",
|
||||||
|
"key": "paymentTime",
|
||||||
|
"value": "2026-04-23 09:50:09",
|
||||||
|
"type": "time"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "下单时间",
|
||||||
|
"key": "orderTime",
|
||||||
|
"value": "2026-04-23 09:50:05",
|
||||||
|
"type": "time"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"sendType": [
|
||||||
|
{
|
||||||
|
"label": "配送方式",
|
||||||
|
"key": "sendType",
|
||||||
|
"value": "快递运输"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "收货信息",
|
||||||
|
"key": "userInfo",
|
||||||
|
"value": "张三 13812345678"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "收货地址",
|
||||||
|
"key": "address",
|
||||||
|
"value": "上海市浦东新区汤臣一品",
|
||||||
|
"type": "textarea"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "期望配送时间",
|
||||||
|
"key": "expectedDeliveryTime",
|
||||||
|
"value": "2026-04-24 09:00-21:00",
|
||||||
|
"type": "timeRange"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "收货方式",
|
||||||
|
"key": "shippingMethod",
|
||||||
|
"value": "送货上门"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"promoType": "plus",
|
||||||
|
"promoText": "告别凑单, 享免运优惠",
|
||||||
|
"activeTab": "zhengzaichuku"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "dea9229f-9a2f-4a66-b50f-ee53f3b4f0af",
|
||||||
|
"shopType": "self",
|
||||||
|
"shopName": "京东超市-五粮液自营店",
|
||||||
|
"status": "完成",
|
||||||
|
"statusColor": "gray",
|
||||||
|
"trackingTitle": "已签收",
|
||||||
|
"courier": "小张",
|
||||||
|
"courierImg": "/static/image/shopping/jingdong/detail/kuaidiyuan.png",
|
||||||
|
"trackingDesc": "您的订单已签收,可对快递员的服务进行评价或打赏哦~",
|
||||||
|
"trackingDesc2": "快递运输 · 温馨提示:您的订单已签收",
|
||||||
|
"trackingTime": "2026-04-24 11:54:34",
|
||||||
|
"carriage": "0.00",
|
||||||
|
"discount": "100.00",
|
||||||
|
"consignee": "张三",
|
||||||
|
"phone": "13812345678",
|
||||||
|
"fullAddress": "上海市浦东新区汤臣一品",
|
||||||
|
"products": [
|
||||||
|
{
|
||||||
|
"image": "/static/image/shopping/jingdong/product/shopping/wuliangye.png",
|
||||||
|
"name": "五粮液",
|
||||||
|
"title": "五粮液 普五 第八代 浓香型白酒 52度 500ml*2瓶",
|
||||||
|
"desc": "500ml*2礼盒装;浓香型",
|
||||||
|
"service": "211限时达",
|
||||||
|
"price": "1099.00",
|
||||||
|
"count": "2"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"orderInfo": [
|
||||||
|
{
|
||||||
|
"label": "订单编号",
|
||||||
|
"key": "orderNumber",
|
||||||
|
"value": "307668850019371894",
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "交易快照",
|
||||||
|
"key": "transactionSnapshot",
|
||||||
|
"value": "发生交易争执时,可作为判断依据"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "支付方式",
|
||||||
|
"key": "paymentMethod",
|
||||||
|
"value": "在线支付"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "支付时间",
|
||||||
|
"key": "paymentTime",
|
||||||
|
"value": "2026-04-23 09:54:34",
|
||||||
|
"type": "time"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "下单时间",
|
||||||
|
"key": "orderTime",
|
||||||
|
"value": "2026-04-23 09:51:15",
|
||||||
|
"type": "time"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"sendType": [
|
||||||
|
{
|
||||||
|
"label": "配送方式",
|
||||||
|
"key": "sendType",
|
||||||
|
"value": "快递运输"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "期望配送时间",
|
||||||
|
"key": "expectedDeliveryTime",
|
||||||
|
"value": "2026-04-24 09:00-21:00",
|
||||||
|
"type": "timeRange"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "收货方式",
|
||||||
|
"key": "shippingMethod",
|
||||||
|
"value": "送货上门"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"promoType": "plus",
|
||||||
|
"promoText": "告别凑单, 享免运优惠",
|
||||||
|
"hasMore": true,
|
||||||
|
"totalPrice": "999.00",
|
||||||
|
"activeTab": "yiqianshou"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "3e0aede8-6a75-438c-b4cd-4dcff3f933fa",
|
||||||
|
"shopType": "self",
|
||||||
|
"shopName": "Apple 产品京东自营旗舰店",
|
||||||
|
"status": "完成",
|
||||||
|
"statusColor": "gray",
|
||||||
|
"carriage": "0.00",
|
||||||
|
"discount": "0",
|
||||||
|
"consignee": "张三",
|
||||||
|
"phone": "13812345678",
|
||||||
|
"fullAddress": "上海市浦东新区汤臣一品",
|
||||||
|
"products": [
|
||||||
|
{
|
||||||
|
"image": "/static/image/shopping/jingdong/product/shopping/iphone.png",
|
||||||
|
"name": "Apple iPhone 17 Pro",
|
||||||
|
"title": "Apple/苹果 iPhone 17 Pro Max 1TB 星宇橙色",
|
||||||
|
"desc": "星宇橙色;全网通5G",
|
||||||
|
"service": "免费上门退换 七天无理由退货",
|
||||||
|
"price": "12999.00",
|
||||||
|
"count": "1"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"orderInfo": [
|
||||||
|
{
|
||||||
|
"label": "订单编号",
|
||||||
|
"key": "orderNumber",
|
||||||
|
"value": "307668850019371894",
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "交易快照",
|
||||||
|
"key": "transactionSnapshot",
|
||||||
|
"value": "发生交易争执时,可作为判断依据"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "支付方式",
|
||||||
|
"key": "paymentMethod",
|
||||||
|
"value": "在线支付"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "支付时间",
|
||||||
|
"key": "paymentTime",
|
||||||
|
"value": "2026-04-22 09:55:00",
|
||||||
|
"type": "time"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "下单时间",
|
||||||
|
"key": "orderTime",
|
||||||
|
"value": "2026-04-22 09:51:15",
|
||||||
|
"type": "time"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"sendType": [
|
||||||
|
{
|
||||||
|
"label": "配送方式",
|
||||||
|
"key": "sendType",
|
||||||
|
"value": "快递运输"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "收货信息",
|
||||||
|
"key": "userInfo",
|
||||||
|
"value": "张三 13812345678"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "收货地址",
|
||||||
|
"key": "address",
|
||||||
|
"value": "上海市浦东新区汤臣一品",
|
||||||
|
"type": "textarea"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"hasMore": true,
|
||||||
|
"totalPrice": "12999.00",
|
||||||
|
"activeTab": "wancheng"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "eef1efa2-e4d6-4b2d-a2f1-be7e6625ea20",
|
||||||
|
"shopType": "waimai",
|
||||||
|
"type": "yiwancheng",
|
||||||
|
"shopName": "新荣记 (黑珍珠三钻·南京西路店)",
|
||||||
|
"status": "完成",
|
||||||
|
"statusColor": "gray",
|
||||||
|
"recommendImg": "/static/image/shopping/jingdong/waimai/shop-recoomend/style-1.png",
|
||||||
|
"packagingFee": "20.00",
|
||||||
|
"discountCarriage": "",
|
||||||
|
"carriage": "",
|
||||||
|
"discount": "0.00",
|
||||||
|
"amountTo": "3888.00",
|
||||||
|
"address": "上海市浦东新区汤臣一品",
|
||||||
|
"phone": "13562365984",
|
||||||
|
"consignee": "张三",
|
||||||
|
"products": [
|
||||||
|
{
|
||||||
|
"image": "/static/image/shopping/jingdong/product/waimai/huajiaoji.png",
|
||||||
|
"title": "至尊黄焖两头干鲍鱼花胶鸡套餐",
|
||||||
|
"desc": "精选20头干鲍、深海花胶、清远走地鸡;单人尊享",
|
||||||
|
"price": "3888.00",
|
||||||
|
"count": "1",
|
||||||
|
"discount": "0.00"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"productsInfo": {
|
||||||
|
"cutleryCount": "商家按餐量提供",
|
||||||
|
"deliveryPreference": "允许敲门/按门铃;允许发短信",
|
||||||
|
"outOfStock": "缺货时与我电话沟通",
|
||||||
|
"deliveryTime": "今天10:35-11:00"
|
||||||
|
},
|
||||||
|
"orderInfo": [
|
||||||
|
{
|
||||||
|
"label": "订单编号",
|
||||||
|
"key": "orderNumber",
|
||||||
|
"value": "9305881319",
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "交易快照",
|
||||||
|
"key": "transactionSnapshot",
|
||||||
|
"value": "发生交易争执时,可作为判断依据"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "下单时间",
|
||||||
|
"key": "orderTime",
|
||||||
|
"value": "2026-04-22 11:55:11",
|
||||||
|
"type": "time"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "支付时间",
|
||||||
|
"key": "paymentTime",
|
||||||
|
"value": "2026-04-22 14:55:22",
|
||||||
|
"type": "time"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "支付方式",
|
||||||
|
"key": "paymentMethod",
|
||||||
|
"value": "微信支付",
|
||||||
|
"type": "text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "如遇缺货",
|
||||||
|
"key": "outOfStock",
|
||||||
|
"value": "缺货时与我电话沟通",
|
||||||
|
"type": "text"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"promoType": "coupon",
|
||||||
|
"promoText": "恭喜您获得3元京东购物券",
|
||||||
|
"promoAction": "去领券",
|
||||||
|
"totalPrice": "3888.00",
|
||||||
|
"activeTab": "yiwancheng"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "c3c1232d-81c6-4743-997d-83f6393da7d0",
|
||||||
|
"type": "weizhifu",
|
||||||
|
"shopType": "waimai",
|
||||||
|
"shopName": "星巴克专星送 (国金中心店)",
|
||||||
|
"status": "等待付款",
|
||||||
|
"statusDesc": "24:58",
|
||||||
|
"deliveryTime": "11:17-11:32",
|
||||||
|
"address": "上海市浦东新区汤臣一品",
|
||||||
|
"phone": "13562365984",
|
||||||
|
"consignee": "张三",
|
||||||
|
"discountCarriage": "0",
|
||||||
|
"carriage": "6",
|
||||||
|
"packagingFee": "",
|
||||||
|
"recommendImg": "/static/image/shopping/jingdong/waimai/shop-recoomend/style-1.png",
|
||||||
|
"discount": "0",
|
||||||
|
"amountTo": "34.00",
|
||||||
|
"products": [
|
||||||
|
{
|
||||||
|
"image": "/static/image/shopping/jingdong/product/waimai/xingbake.png",
|
||||||
|
"title": "燕麦拿铁 (大杯)",
|
||||||
|
"desc": "不额外加糖/常温;一人份",
|
||||||
|
"price": "35.00",
|
||||||
|
"count": "1",
|
||||||
|
"discount": "0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"productsInfo": {
|
||||||
|
"cutleryCount": "商家按餐量提供",
|
||||||
|
"deliveryPreference": "允许敲门/按门铃;允许发短信",
|
||||||
|
"outOfStock": "缺货时与我电话沟通",
|
||||||
|
"deliveryTime": "今天10:37-11:02"
|
||||||
|
},
|
||||||
|
"orderInfo": [
|
||||||
|
{
|
||||||
|
"label": "订单编号",
|
||||||
|
"key": "orderNumber",
|
||||||
|
"value": "9817790982",
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "交易快照",
|
||||||
|
"key": "transactionSnapshot",
|
||||||
|
"value": "发生交易争执时,可作为判断依据"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "支付方式",
|
||||||
|
"key": "paymentMethod",
|
||||||
|
"value": "微信支付",
|
||||||
|
"type": "text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "下单时间",
|
||||||
|
"key": "orderTime",
|
||||||
|
"value": "2026-04-23 09:57:16",
|
||||||
|
"type": "time"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"promoType": "text",
|
||||||
|
"promoHighlight": "近90天600+人回购",
|
||||||
|
"totalPrice": "35.00",
|
||||||
|
"activeTab": "weizhifu"
|
||||||
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
@ -69,7 +69,7 @@
|
||||||
</image>
|
</image>
|
||||||
<view class="upload-screenshot-text">长按替换截图</view>
|
<view class="upload-screenshot-text">长按替换截图</view>
|
||||||
</view>
|
</view>
|
||||||
<view v-else class="upload-screenshot-content">
|
<view v-else class="screenshot-preview-box">
|
||||||
<image class="screenshot-preview" :src="screenshotImage" mode="widthFix"></image>
|
<image class="screenshot-preview" :src="screenshotImage" mode="widthFix"></image>
|
||||||
</view>
|
</view>
|
||||||
<!-- <image v-else class="w100 h100" :src="screenshotImage" mode="widthFix"></image> -->
|
<!-- <image v-else class="w100 h100" :src="screenshotImage" mode="widthFix"></image> -->
|
||||||
|
|
@ -112,7 +112,7 @@ import { ref, computed, onMounted, getCurrentInstance } from 'vue';
|
||||||
import { onShow } from '@dcloudio/uni-app';
|
import { onShow } from '@dcloudio/uni-app';
|
||||||
import ShoppingCard from '@/components/shopping/jingdong/shopping-card.vue';
|
import ShoppingCard from '@/components/shopping/jingdong/shopping-card.vue';
|
||||||
import { util } from '@/utils/common.js';
|
import { util } from '@/utils/common.js';
|
||||||
import { shoppingType, waimaiType } from './json/order.json';
|
import { shoppingType, waimaiType, defaultDataList } from './json/order.json';
|
||||||
|
|
||||||
const showActionMenu = ref(false);
|
const showActionMenu = ref(false);
|
||||||
const actionMenuState = ref({ x: 0, y: 0, item: null });
|
const actionMenuState = ref({ x: 0, y: 0, item: null });
|
||||||
|
|
@ -225,7 +225,7 @@ const handleDeleteOrder = () => {
|
||||||
|
|
||||||
// 1. 全量扫描并清理本地持久化图片文件
|
// 1. 全量扫描并清理本地持久化图片文件
|
||||||
const pathsToCleanup = [];
|
const pathsToCleanup = [];
|
||||||
|
|
||||||
// 收集单字段路径
|
// 收集单字段路径
|
||||||
if (itemToDel.courierImg) pathsToCleanup.push(itemToDel.courierImg);
|
if (itemToDel.courierImg) pathsToCleanup.push(itemToDel.courierImg);
|
||||||
if (itemToDel.deliveryImages) pathsToCleanup.push(itemToDel.deliveryImages);
|
if (itemToDel.deliveryImages) pathsToCleanup.push(itemToDel.deliveryImages);
|
||||||
|
|
@ -291,11 +291,28 @@ onMounted(() => {
|
||||||
});
|
});
|
||||||
|
|
||||||
onShow(() => {
|
onShow(() => {
|
||||||
const cachedData = uni.getStorageSync('jingdongShopping');
|
// 检查是否已经初始化过
|
||||||
if (cachedData && Array.isArray(cachedData)) {
|
const isInit = uni.getStorageSync('isInitJingdong');
|
||||||
mockOrderList.value = cachedData;
|
|
||||||
|
if (!isInit) {
|
||||||
|
// 真正意义上的首次进入:将默认数据存入缓存并打上初始化标签
|
||||||
|
uni.setStorageSync('jingdongShopping', defaultDataList);
|
||||||
|
uni.setStorageSync('jingdong_screenshot', '/static/image/shopping/jingdong/cainixihuan.png');
|
||||||
|
uni.setStorageSync('isInitJingdong', true);
|
||||||
|
mockOrderList.value = defaultDataList;
|
||||||
|
} else {
|
||||||
|
// 非首次进入:直接读取缓存(即使为空也是用户期望的空状态)
|
||||||
|
const cachedData = uni.getStorageSync('jingdongShopping');
|
||||||
|
if (cachedData && Array.isArray(cachedData)) {
|
||||||
|
mockOrderList.value = cachedData;
|
||||||
|
} else {
|
||||||
|
mockOrderList.value = [];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
console.log("订单列表", mockOrderList.value);
|
||||||
|
|
||||||
|
|
||||||
// 读取缓存的截图
|
// 读取缓存的截图
|
||||||
const cachedImage = uni.getStorageSync('jingdong_screenshot');
|
const cachedImage = uni.getStorageSync('jingdong_screenshot');
|
||||||
if (cachedImage) {
|
if (cachedImage) {
|
||||||
|
|
@ -303,8 +320,6 @@ onShow(() => {
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log('screenshotImage.value', screenshotImage.value)
|
console.log('screenshotImage.value', screenshotImage.value)
|
||||||
|
|
||||||
console.log("mockOrderList", mockOrderList.value);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// 长按替换截图 - 选择图片
|
// 长按替换截图 - 选择图片
|
||||||
|
|
@ -675,229 +690,7 @@ const filteredOrderList = computed(() => {
|
||||||
/**
|
/**
|
||||||
* 模拟订单列表
|
* 模拟订单列表
|
||||||
*/
|
*/
|
||||||
const mockOrderList = ref([
|
const mockOrderList = ref([]);
|
||||||
// {
|
|
||||||
// id: 123211111,
|
|
||||||
// shopType: 'waimai',
|
|
||||||
// shopName: '安野屋 (AARYE) 京...',
|
|
||||||
// status: '等待付款',
|
|
||||||
// statusDesc: '29分钟',
|
|
||||||
// products: [
|
|
||||||
// {
|
|
||||||
// image: '/static/image/shopping/jingdong/product1.png',
|
|
||||||
// title: '超值哈哈哈哈哈哈哈哈哈哈哈哈哈哈好一人份',
|
|
||||||
// desc: '不支持7天无理由退货',
|
|
||||||
// service: "",
|
|
||||||
// price: '69.00',
|
|
||||||
// count: 1,
|
|
||||||
// }
|
|
||||||
// ],
|
|
||||||
// promoType: 'text',
|
|
||||||
// promoHighlight: '近90天600+人回购',
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// id: 9632554,
|
|
||||||
// shopType: 'waimai',
|
|
||||||
// shopName: '安野屋 (AARYE) 京...',
|
|
||||||
// status: '骑手到店取餐中',
|
|
||||||
// trackingTitle: '10:22-10:55',
|
|
||||||
// trackingDesc: '骑手已到店,大王',
|
|
||||||
// trackingTime: '2026-03-10 15:14:30',
|
|
||||||
// products: [
|
|
||||||
// {
|
|
||||||
// image: '/static/image/shopping/jingdong/product1.png',
|
|
||||||
// title: '超值哈哈哈哈哈哈哈哈哈哈哈哈哈哈好热 少糖',
|
|
||||||
// desc: '不支持7天无理由退货',
|
|
||||||
// service: "",
|
|
||||||
// tags: [],
|
|
||||||
// price: '69.00',
|
|
||||||
// count: 1,
|
|
||||||
// }
|
|
||||||
// ]
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// id: 63254112,
|
|
||||||
// shopType: 'waimai',
|
|
||||||
// shopName: '安野屋 (AARYE) 京...',
|
|
||||||
// status: '商家备餐中',
|
|
||||||
// trackingTitle: '10:22-10:55',
|
|
||||||
// trackingDesc: '商家已接单,商品备餐中',
|
|
||||||
// trackingTime: '2026-03-10 15:14:30',
|
|
||||||
// products: [
|
|
||||||
// {
|
|
||||||
// image: '/static/image/shopping/jingdong/product1.png',
|
|
||||||
// title: '超值哈哈哈哈哈哈哈哈哈哈哈哈哈哈好热 少糖',
|
|
||||||
// desc: '不支持7天无理由退货',
|
|
||||||
// service: "",
|
|
||||||
// tags: [],
|
|
||||||
// price: '69.00',
|
|
||||||
// count: 1,
|
|
||||||
// }
|
|
||||||
// ]
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// id: 78456211,
|
|
||||||
// shopType: 'waimai',
|
|
||||||
// shopName: '瑞幸咖啡',
|
|
||||||
// status: '完成',
|
|
||||||
// statusColor: 'gray',
|
|
||||||
// products: [
|
|
||||||
// {
|
|
||||||
// image: '/static/image/shopping/jingdong/product1.png',
|
|
||||||
// title: '多肉桃桃哈哈哈哈哈哈哈哈哈哈好和和好',
|
|
||||||
// desc: '不支持7天无理由退货',
|
|
||||||
// service: "",
|
|
||||||
// tags: [],
|
|
||||||
// price: '69.00',
|
|
||||||
// count: 1,
|
|
||||||
// }
|
|
||||||
// ],
|
|
||||||
// promoType: 'coupon',
|
|
||||||
// promoText: '恭喜您获得3元京东购物券',
|
|
||||||
// promoAction: '去领券'
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// id: 56322115,
|
|
||||||
// shopType: 'waimai',
|
|
||||||
// shopName: '瑞幸咖啡',
|
|
||||||
// status: '完成',
|
|
||||||
// statusColor: 'gray',
|
|
||||||
// products: [
|
|
||||||
// {
|
|
||||||
// image: '/static/image/shopping/jingdong/product1.png',
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// image: '/static/image/shopping/jingdong/product1.png',
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// image: '/static/image/shopping/jingdong/product1.png',
|
|
||||||
// }
|
|
||||||
// ],
|
|
||||||
// price: '17.00',
|
|
||||||
// count: 2,
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// id: 52322221,
|
|
||||||
// shopType: 'waimai',
|
|
||||||
// shopName: '瑞幸咖啡',
|
|
||||||
// status: '已取消',
|
|
||||||
// statusColor: 'gray',
|
|
||||||
// products: [
|
|
||||||
// {
|
|
||||||
// image: '/static/image/shopping/jingdong/product1.png',
|
|
||||||
// title: '多肉桃桃哈哈哈哈哈哈哈哈哈哈好和和好',
|
|
||||||
// desc: '不支持7天无理由退货',
|
|
||||||
// tags: [],
|
|
||||||
// service: "",
|
|
||||||
// price: '69.00',
|
|
||||||
// count: 1,
|
|
||||||
// }
|
|
||||||
// ]
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// id: 8562245551,
|
|
||||||
// shopType: 'self',
|
|
||||||
// shopName: '安野屋 (AARYE) 京联名哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈好梦',
|
|
||||||
// status: '等待付款',
|
|
||||||
// statusDesc: '20小时11分钟',
|
|
||||||
// products: [
|
|
||||||
// {
|
|
||||||
// image: '/static/image/shopping/jingdong/product1.png',
|
|
||||||
// title: '安野哈哈哈哈哈哈哈哈哈哈哈哈好好',
|
|
||||||
// desc: '联名哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈好梦',
|
|
||||||
// tags: ['无理由退货政策'],
|
|
||||||
// service: "无理由退货政策",
|
|
||||||
// price: '69.00',
|
|
||||||
// count: 1,
|
|
||||||
// }
|
|
||||||
// ],
|
|
||||||
// promoType: 'text',
|
|
||||||
// promoHighlight: '白条支付券0.5元优惠券',
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// id: 5504455,
|
|
||||||
// shopType: 'none',
|
|
||||||
// shopName: '甜小南旗舰店',
|
|
||||||
// status: '正在出库',
|
|
||||||
// trackingTitle: '仓库处理中',
|
|
||||||
// trackingDesc: '预计 3月12日24:00 前发货,3月15日 24:00 前送达',
|
|
||||||
// trackingTime: '2026-03-10 15:14:30',
|
|
||||||
// products: [
|
|
||||||
// {
|
|
||||||
// image: '/static/image/shopping/jingdong/product1.png',
|
|
||||||
// title: '安野哈哈哈哈哈哈哈哈哈哈哈哈好好',
|
|
||||||
// desc: '联名哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈好梦',
|
|
||||||
// tags: ['无理由退货政策'],
|
|
||||||
// service: "无理由退货政策",
|
|
||||||
// price: '69.00',
|
|
||||||
// count: 1,
|
|
||||||
// }
|
|
||||||
// ],
|
|
||||||
// promoType: 'plus',
|
|
||||||
// promoText: '告别凑单, 享免运优惠',
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// id: 585552,
|
|
||||||
// shopType: 'self',
|
|
||||||
// shopName: '甜小南旗舰店',
|
|
||||||
// status: '完成',
|
|
||||||
// statusColor: 'gray',
|
|
||||||
// trackingTitle: '已签收',
|
|
||||||
// trackingDesc: '您的订单已签收,可对快递员的服务进行评价或打赏哦~',
|
|
||||||
// trackingTime: '2026-03-10 15:14:30',
|
|
||||||
// products: [
|
|
||||||
// {
|
|
||||||
// image: '/static/image/shopping/jingdong/product1.png',
|
|
||||||
// title: '安野哈哈哈哈哈哈哈哈哈哈哈哈好好',
|
|
||||||
// desc: '联名哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈好梦',
|
|
||||||
// tags: ['无理由退货政策'],
|
|
||||||
// service: "无理由退货政策",
|
|
||||||
// price: '69.00',
|
|
||||||
// count: 1,
|
|
||||||
// }
|
|
||||||
// ],
|
|
||||||
// promoType: 'plus',
|
|
||||||
// promoText: '告别凑单, 享免运优惠',
|
|
||||||
// hasMore: true,
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// id: 4545451,
|
|
||||||
// shopType: 'jd',
|
|
||||||
// shopName: '甜小南旗舰店',
|
|
||||||
// status: '完成',
|
|
||||||
// statusColor: 'gray',
|
|
||||||
// products: [
|
|
||||||
// {
|
|
||||||
// image: '/static/image/shopping/jingdong/product1.png',
|
|
||||||
// title: '安野哈哈哈哈哈哈哈哈哈哈哈哈好好',
|
|
||||||
// desc: '联名哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈好梦',
|
|
||||||
// tags: ['无理由退货政策'],
|
|
||||||
// service: "无理由退货政策",
|
|
||||||
// price: '1669.00',
|
|
||||||
// count: 1,
|
|
||||||
// }
|
|
||||||
// ],
|
|
||||||
// hasMore: true,
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// id: 1236524,
|
|
||||||
// shopType: 'self',
|
|
||||||
// shopName: '甜小南旗舰店',
|
|
||||||
// status: '已取消',
|
|
||||||
// statusColor: 'gray',
|
|
||||||
// products: [
|
|
||||||
// {
|
|
||||||
// image: '/static/image/shopping/jingdong/product1.png',
|
|
||||||
// title: '安野哈哈哈哈哈哈哈哈哈哈哈哈好好',
|
|
||||||
// desc: '联名哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈好梦',
|
|
||||||
// tags: ['无理由退货政策'],
|
|
||||||
// service: "无理由退货政策",
|
|
||||||
// price: '1669.00',
|
|
||||||
// count: 1,
|
|
||||||
// }
|
|
||||||
// ]
|
|
||||||
// }
|
|
||||||
]);
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="less">
|
<style lang="less">
|
||||||
|
|
@ -1156,6 +949,17 @@ const mockOrderList = ref([
|
||||||
margin-top: 16rpx;
|
margin-top: 16rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.screenshot-preview-box {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
|
// flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
|
||||||
.screenshot-preview {
|
.screenshot-preview {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|
|
||||||
|
|
@ -108,8 +108,6 @@
|
||||||
<text class="desc">您的订单已取消,请查看取消进度详情。</text>
|
<text class="desc">您的订单已取消,请查看取消进度详情。</text>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
|
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view v-if="order.type == 'weizhifu'" class="card location-box flex flex-justify-between flex-align-center">
|
<view v-if="order.type == 'weizhifu'" class="card location-box flex flex-justify-between flex-align-center">
|
||||||
|
|
@ -295,8 +293,10 @@
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="wx-font-medium flex flex-align-center">
|
<view class="wx-font-medium flex flex-align-center">
|
||||||
<text v-if="order.discountCarriage" style="color: #F10F1A;">已减¥{{ order.discountCarriage }}</text>
|
<text v-if="order.discountCarriage && Number(order.discountCarriage) > 0"
|
||||||
<text v-if="order.discountCarriage"
|
style="color: #F10F1A;">已减¥{{
|
||||||
|
order.discountCarriage }}</text>
|
||||||
|
<text v-if="order.discountCarriage && Number(order.discountCarriage) > 0"
|
||||||
style="margin: 0 12rpx;color: #8E8E8E;text-decoration: line-through;">¥{{
|
style="margin: 0 12rpx;color: #8E8E8E;text-decoration: line-through;">¥{{
|
||||||
order.discountCarriage }}</text>
|
order.discountCarriage }}</text>
|
||||||
<text style="color: #1A1A1A;font-weight: 500;">{{ !Number(order.carriage) || Number(order.carriage)
|
<text style="color: #1A1A1A;font-weight: 500;">{{ !Number(order.carriage) || Number(order.carriage)
|
||||||
|
|
@ -304,7 +304,7 @@
|
||||||
<uni-icons type="down" size="10" color="#1A1A1A" style="margin-left: 6rpx;"></uni-icons>
|
<uni-icons type="down" size="10" color="#1A1A1A" style="margin-left: 6rpx;"></uni-icons>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="item flex-justify-between">
|
<view v-if="order.packagingFee && Number(order.packagingFee) > 0" class="item flex-justify-between">
|
||||||
<text class="label shrink-0" style="color: #545454;">打包费</text>
|
<text class="label shrink-0" style="color: #545454;">打包费</text>
|
||||||
<view class="flex-1 flex-align-center wx-font-medium"
|
<view class="flex-1 flex-align-center wx-font-medium"
|
||||||
style="justify-content: flex-end; margin-left: 20rpx;font-weight: 500;">
|
style="justify-content: flex-end; margin-left: 20rpx;font-weight: 500;">
|
||||||
|
|
@ -315,7 +315,7 @@
|
||||||
<text class="label shrink-0" style="color: #545454;">合计</text>
|
<text class="label shrink-0" style="color: #545454;">合计</text>
|
||||||
<view class="flex-1 flex-align-center"
|
<view class="flex-1 flex-align-center"
|
||||||
style="justify-content: flex-end; margin-left: 20rpx;font-weight: 500;">
|
style="justify-content: flex-end; margin-left: 20rpx;font-weight: 500;">
|
||||||
<text v-if="order.discount > 0 && order.discount" class=" red">共减¥{{
|
<text v-if="Number(order.discount) + Number(order.discountCarriage) > 0" class=" red">共减¥{{
|
||||||
Number(order.discount) + Number(order.discountCarriage)
|
Number(order.discount) + Number(order.discountCarriage)
|
||||||
}}</text>
|
}}</text>
|
||||||
<text class="wx-font-medium money">
|
<text class="wx-font-medium money">
|
||||||
|
|
@ -352,8 +352,9 @@
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="wx-font-medium flex flex-align-center">
|
<view class="wx-font-medium flex flex-align-center">
|
||||||
<text v-if="order.discountCarriage" style="color: #F10F1A;">已减¥{{ order.discountCarriage }}</text>
|
<text v-if="order.discountCarriage && Number(order.discountCarriage) > 0" style="color: #F10F1A;">已减¥{{
|
||||||
<text v-if="order.discountCarriage"
|
order.discountCarriage }}</text>
|
||||||
|
<text v-if="order.discountCarriage && Number(order.discountCarriage) > 0"
|
||||||
style="margin: 0 12rpx;color: #8E8E8E;text-decoration: line-through;">¥{{
|
style="margin: 0 12rpx;color: #8E8E8E;text-decoration: line-through;">¥{{
|
||||||
order.discountCarriage }}</text>
|
order.discountCarriage }}</text>
|
||||||
<text style="color: #1A1A1A;">{{ !Number(order.carriage) || Number(order.carriage) <= 0 ? '免运费' : '运费¥'
|
<text style="color: #1A1A1A;">{{ !Number(order.carriage) || Number(order.carriage) <= 0 ? '免运费' : '运费¥'
|
||||||
|
|
@ -364,7 +365,10 @@
|
||||||
<view class="price">
|
<view class="price">
|
||||||
<view class="label">合计</view>
|
<view class="label">合计</view>
|
||||||
<view>
|
<view>
|
||||||
共减<text class="number wx-font-medium" style="font-size: 32rpx;">¥{{ order.discount }}</text>
|
<text v-if="Number(order.discount) + Number(order.discountCarriage) > 0" class="number wx-font-medium"
|
||||||
|
style="font-size: 32rpx;">共减¥{{
|
||||||
|
Number(order.discount) + Number(order.discountCarriage)
|
||||||
|
}}</text>
|
||||||
需付款 <text class="number wx-font-medium">
|
需付款 <text class="number wx-font-medium">
|
||||||
¥{{ (Number(order.totalPrice) + Number(order.carriage)) ?
|
¥{{ (Number(order.totalPrice) + Number(order.carriage)) ?
|
||||||
(Number(order.totalPrice)
|
(Number(order.totalPrice)
|
||||||
|
|
@ -474,7 +478,7 @@
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { onLoad, onShow, onPageScroll } from "@dcloudio/uni-app";
|
import { onLoad, onShow, onPageScroll } from "@dcloudio/uni-app";
|
||||||
import { ref, computed, watch, onMounted, onUnmounted, nextTick, reactive, toRefs } from "vue";
|
import { ref, computed, onUnmounted, nextTick, reactive, toRefs } from "vue";
|
||||||
import NavBar from "@/components/nav-bar/nav-bar.vue";
|
import NavBar from "@/components/nav-bar/nav-bar.vue";
|
||||||
import { util } from '@/utils/common.js';
|
import { util } from '@/utils/common.js';
|
||||||
|
|
||||||
|
|
@ -1079,7 +1083,7 @@ page {
|
||||||
font-size: 26rpx;
|
font-size: 26rpx;
|
||||||
color: #1A1A1A;
|
color: #1A1A1A;
|
||||||
line-height: 28rpx;
|
line-height: 28rpx;
|
||||||
font-weight: 700;
|
font-weight: 500;
|
||||||
}
|
}
|
||||||
|
|
||||||
.desc {
|
.desc {
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
<template>
|
||||||
|
<view class="container">
|
||||||
|
<view v-for="item in mockOrderList" :key="item.id">
|
||||||
|
{{ item.name }}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { ref } from 'vue';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 模拟订单列表
|
||||||
|
*/
|
||||||
|
const mockOrderList = ref([]);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less"></style>
|
||||||
|
After Width: | Height: | Size: 114 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 3.6 KiB |
|
After Width: | Height: | Size: 8.4 KiB |
|
After Width: | Height: | Size: 5.7 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 7.6 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 903 B |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 451 B |
|
|
@ -4,6 +4,22 @@
|
||||||
* 日期处理相关方法
|
* 日期处理相关方法
|
||||||
*/
|
*/
|
||||||
export const dateUtil = {
|
export const dateUtil = {
|
||||||
|
/**
|
||||||
|
* 安全解析日期,兼容 iOS
|
||||||
|
* @param {Date|string|number} date
|
||||||
|
* @returns {Date}
|
||||||
|
*/
|
||||||
|
parseSafe(date) {
|
||||||
|
if (!date) return new Date();
|
||||||
|
if (date instanceof Date) return date;
|
||||||
|
if (typeof date === 'string') {
|
||||||
|
// 兼容 iOS 的 YYYY-MM-DD 解析,并处理可能的空格/T问题
|
||||||
|
const normalizedDate = date.replace(/-/g, '/');
|
||||||
|
return new Date(normalizedDate);
|
||||||
|
}
|
||||||
|
return new Date(date);
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 格式化日期
|
* 格式化日期
|
||||||
* @param {Date|string|number} date - 日期对象或时间戳
|
* @param {Date|string|number} date - 日期对象或时间戳
|
||||||
|
|
@ -13,9 +29,7 @@ export const dateUtil = {
|
||||||
format(date, format = 'YYYY-MM-DD HH:mm:ss') {
|
format(date, format = 'YYYY-MM-DD HH:mm:ss') {
|
||||||
if (!date) return '';
|
if (!date) return '';
|
||||||
|
|
||||||
if (typeof date === 'string' || typeof date === 'number') {
|
date = this.parseSafe(date);
|
||||||
date = new Date(date);
|
|
||||||
}
|
|
||||||
|
|
||||||
const year = date.getFullYear();
|
const year = date.getFullYear();
|
||||||
const month = String(date.getMonth() + 1).padStart(2, '0');
|
const month = String(date.getMonth() + 1).padStart(2, '0');
|
||||||
|
|
@ -50,9 +64,7 @@ export const dateUtil = {
|
||||||
relative(date) {
|
relative(date) {
|
||||||
if (!date) return '';
|
if (!date) return '';
|
||||||
|
|
||||||
if (typeof date === 'string' || typeof date === 'number') {
|
date = this.parseSafe(date);
|
||||||
date = new Date(date);
|
|
||||||
}
|
|
||||||
|
|
||||||
const now = new Date();
|
const now = new Date();
|
||||||
const diff = now - date;
|
const diff = now - date;
|
||||||
|
|
@ -80,9 +92,7 @@ export const dateUtil = {
|
||||||
smart(date) {
|
smart(date) {
|
||||||
if (!date) return '';
|
if (!date) return '';
|
||||||
|
|
||||||
if (typeof date === 'string' || typeof date === 'number') {
|
date = this.parseSafe(date);
|
||||||
date = new Date(date);
|
|
||||||
}
|
|
||||||
|
|
||||||
const now = new Date();
|
const now = new Date();
|
||||||
const today = new Date(now.getFullYear(), now.getMonth(), now.getDate());
|
const today = new Date(now.getFullYear(), now.getMonth(), now.getDate());
|
||||||
|
|
@ -120,13 +130,7 @@ export const dateUtil = {
|
||||||
formatMessageTime(date, hideCurrentYear = false, format = 'YYYY/M/D') {
|
formatMessageTime(date, hideCurrentYear = false, format = 'YYYY/M/D') {
|
||||||
if (!date) return '';
|
if (!date) return '';
|
||||||
|
|
||||||
if (typeof date === 'string' || typeof date === 'number') {
|
date = this.parseSafe(date);
|
||||||
// 兼容 iOS 的 YYYY-MM-DD 解析
|
|
||||||
if (typeof date === 'string') {
|
|
||||||
date = date.replace(/-/g, '/');
|
|
||||||
}
|
|
||||||
date = new Date(date);
|
|
||||||
}
|
|
||||||
|
|
||||||
const now = new Date();
|
const now = new Date();
|
||||||
// 将时分秒抹零,只取日期部分进行比对
|
// 将时分秒抹零,只取日期部分进行比对
|
||||||
|
|
@ -464,7 +468,7 @@ export const util = {
|
||||||
* @param {string} backgroundColor - 颜色值
|
* @param {string} backgroundColor - 颜色值
|
||||||
* @returns {void}
|
* @returns {void}
|
||||||
*/
|
*/
|
||||||
setAndroidSystemBarColor(backgroundColor, frontColor = "#000000") {
|
setAndroidSystemBarColor(backgroundColor) {
|
||||||
// 使用同步方式判断或直接通过编译宏/plus判断
|
// 使用同步方式判断或直接通过编译宏/plus判断
|
||||||
const isAndroid = uni.getSystemInfoSync().platform === 'android';
|
const isAndroid = uni.getSystemInfoSync().platform === 'android';
|
||||||
if (isAndroid) {
|
if (isAndroid) {
|
||||||
|
|
@ -555,14 +559,14 @@ export const randomUtil = {
|
||||||
randomTime(startTime, endTime, format = 'YYYY-MM-DD HH:mm:ss') {
|
randomTime(startTime, endTime, format = 'YYYY-MM-DD HH:mm:ss') {
|
||||||
let end;
|
let end;
|
||||||
if (endTime) {
|
if (endTime) {
|
||||||
end = new Date(endTime).getTime();
|
end = dateUtil.parseSafe(endTime).getTime();
|
||||||
} else {
|
} else {
|
||||||
end = Date.now();
|
end = Date.now();
|
||||||
}
|
}
|
||||||
|
|
||||||
let start;
|
let start;
|
||||||
if (startTime) {
|
if (startTime) {
|
||||||
start = new Date(startTime).getTime();
|
start = dateUtil.parseSafe(startTime).getTime();
|
||||||
} else {
|
} else {
|
||||||
// 默认为结束时间往前推3个月
|
// 默认为结束时间往前推3个月
|
||||||
const date = new Date(end);
|
const date = new Date(end);
|
||||||
|
|
|
||||||