用户钱包及明细.搜索页修复.个人信息移除多余页面.商品列表字段优化,分类子商品展示
This commit is contained in:
@@ -6,4 +6,9 @@ export default {
|
||||
url: 'promotion/decorate/list?page=1',
|
||||
method: 'GET',
|
||||
}),
|
||||
spids: () =>
|
||||
request2({
|
||||
url: 'product/spu/page?recommendType=best&pageNo=1&pageSize=10',
|
||||
method: 'GET',
|
||||
}),
|
||||
};
|
||||
|
||||
+20
-3
@@ -12,6 +12,15 @@ export default {
|
||||
auth: true,
|
||||
},
|
||||
}),
|
||||
balance: () =>
|
||||
request2({
|
||||
url: '/app-api/pay/wallet/get',
|
||||
method: 'GET',
|
||||
custom: {
|
||||
showLoading: false,
|
||||
auth: true,
|
||||
},
|
||||
}),
|
||||
// profile: () =>
|
||||
// request({
|
||||
// url: '/user/api/user/profile',
|
||||
@@ -316,7 +325,8 @@ export default {
|
||||
url: 'product/favorite/delete-list',
|
||||
method: 'DELETE',
|
||||
data: {
|
||||
spuIds: id.split(','),
|
||||
spuIds: id.split(',').map(item=>item*1),
|
||||
// spuIds: id.split(',').join(','),
|
||||
},
|
||||
custom: {
|
||||
showSuccess: true,
|
||||
@@ -356,12 +366,19 @@ export default {
|
||||
},
|
||||
wallet: {
|
||||
log: (params) =>
|
||||
request({
|
||||
url: '/user/api/walletLog',
|
||||
request2({
|
||||
url: 'pay/wallet-transaction/page',
|
||||
method: 'GET',
|
||||
params,
|
||||
custom: {},
|
||||
}),
|
||||
// log: (params) =>
|
||||
// request({
|
||||
// url: '/user/api/walletLog',
|
||||
// method: 'GET',
|
||||
// params,
|
||||
// custom: {},
|
||||
// }),
|
||||
},
|
||||
account: {
|
||||
info: (params) =>
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
<view v-if="tagStyle.show" class="tag-icon-box">
|
||||
<image class="tag-icon" :src="sheep.$url.cdn(tagStyle.src)"></image>
|
||||
</view>
|
||||
<image class="md-img-box" :src="sheep.$url.cdn(data.image)" mode="widthFix"></image>
|
||||
<image class="md-img-box" :src="sheep.$url.cdn(data.image||data.picUrl)" mode="widthFix"></image>
|
||||
<view
|
||||
class="md-goods-content ss-flex-col ss-row-around ss-p-b-20 ss-p-t-20 ss-p-x-16"
|
||||
:id="elId"
|
||||
@@ -75,7 +75,7 @@
|
||||
class="md-goods-title ss-line-1"
|
||||
:style="[{ color: titleColor, width: titleWidth ? titleWidth + 'rpx' : '' }]"
|
||||
>
|
||||
{{ data.title }}
|
||||
{{ data.title||data.name }}
|
||||
</view>
|
||||
<view
|
||||
v-if="goodsFields.subtitle?.show"
|
||||
@@ -106,12 +106,12 @@
|
||||
</view>
|
||||
|
||||
<view
|
||||
v-if="goodsFields.original_price?.show && data.original_price > 0"
|
||||
v-if="(goodsFields.original_price?.show||goodsFields.marketPrice?.show) &&( data.original_price > 0|| data.marketPrice > 0)"
|
||||
class="goods-origin-price ss-m-t-16 font-OPPOSANS ss-flex"
|
||||
:style="[{ color: originPriceColor }]"
|
||||
>
|
||||
<text class="price-unit ss-font-20">{{ priceUnit }}</text>
|
||||
<view class="ss-m-l-8">{{ data.original_price }}</view>
|
||||
<view class="ss-m-l-8">{{ data.original_price||data.marketPrice }}</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
@@ -141,7 +141,7 @@
|
||||
<view v-if="grouponTag" class="groupon-tag ss-flex ss-row-center">
|
||||
<view class="tag-icon">拼团</view>
|
||||
</view>
|
||||
<image class="lg-img-box" :src="sheep.$url.cdn(data.image)" mode="aspectFill"></image>
|
||||
<image class="lg-img-box" :src="sheep.$url.cdn(data.image||data.picUrl)" mode="aspectFill"></image>
|
||||
<view class="lg-goods-content ss-flex-1 ss-flex-col ss-row-between ss-p-b-10 ss-p-t-20">
|
||||
<view>
|
||||
<view
|
||||
@@ -149,7 +149,7 @@
|
||||
class="lg-goods-title ss-line-2"
|
||||
:style="[{ color: titleColor }]"
|
||||
>
|
||||
{{ data.title }}
|
||||
{{ data.title||data.name }}
|
||||
</view>
|
||||
<view
|
||||
v-if="goodsFields.subtitle?.show"
|
||||
@@ -177,12 +177,12 @@
|
||||
{{ isArray(data.price) ? data.price[0] : data.price }}
|
||||
</view>
|
||||
<view
|
||||
v-if="goodsFields.original_price?.show && data.original_price > 0"
|
||||
v-if="(goodsFields.original_price?.show||goodsFields.marketPrice?.show) &&( data.original_price > 0|| data.marketPrice > 0)"
|
||||
class="goods-origin-price ss-flex ss-col-bottom font-OPPOSANS"
|
||||
:style="[{ color: originPriceColor }]"
|
||||
>
|
||||
<text class="price-unit ss-font-20">{{ priceUnit }}</text>
|
||||
<view class="ss-m-l-8">{{ data.original_price }}</view>
|
||||
<view class="ss-m-l-8">{{ data.original_price||data.marketPrice }}</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="ss-m-t-8 ss-flex ss-col-center ss-flex-wrap">
|
||||
@@ -204,7 +204,7 @@
|
||||
<image class="tag-icon" :src="sheep.$url.cdn(tagStyle.src)"></image>
|
||||
</view>
|
||||
|
||||
<image class="sl-img-box" :src="sheep.$url.cdn(data.image)" mode="aspectFill"></image>
|
||||
<image class="sl-img-box" :src="sheep.$url.cdn(data.image||data.picUrl)" mode="aspectFill"></image>
|
||||
|
||||
<view class="sl-goods-content">
|
||||
<view>
|
||||
@@ -213,7 +213,7 @@
|
||||
class="sl-goods-title ss-line-1"
|
||||
:style="[{ color: titleColor }]"
|
||||
>
|
||||
{{ data.title }}
|
||||
{{ data.title||data.name }}
|
||||
</view>
|
||||
<view
|
||||
v-if="goodsFields.subtitle?.show"
|
||||
@@ -241,12 +241,12 @@
|
||||
{{ isArray(data.price) ? data.price[0] : data.price }}
|
||||
</view>
|
||||
<view
|
||||
v-if="goodsFields.original_price?.show && data.original_price > 0"
|
||||
v-if="(goodsFields.original_price?.show||goodsFields.marketPrice?.show) &&( data.original_price > 0|| data.marketPrice > 0)"
|
||||
class="goods-origin-price ss-m-t-16 font-OPPOSANS ss-flex"
|
||||
:style="[{ color: originPriceColor }]"
|
||||
>
|
||||
<text class="price-unit ss-font-20">{{ priceUnit }}</text>
|
||||
<view class="ss-m-l-8">{{ data.original_price }}</view>
|
||||
<view class="ss-m-l-8">{{ data.original_price||data.marketPrice }}</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="ss-m-t-16 ss-flex ss-flex-wrap">
|
||||
@@ -313,6 +313,7 @@
|
||||
original_price: { show: true },
|
||||
sales: { show: true },
|
||||
stock: { show: true },
|
||||
salesCount: { show: true },
|
||||
};
|
||||
},
|
||||
},
|
||||
@@ -396,8 +397,8 @@
|
||||
// 格式化销量、库存信息
|
||||
const salesAndStock = computed(() => {
|
||||
let text = [];
|
||||
if (props.goodsFields.sales?.show) {
|
||||
text.push(formatSales(props.data.sales_show_type, props.data.sales));
|
||||
if (props.goodsFields.salesCount?.show) {
|
||||
text.push(formatSales(props.data.sales_show_type, props.data.salesCount));
|
||||
}
|
||||
if (props.goodsFields.stock?.show) {
|
||||
text.push(formatStock(props.data.stock_show_type, props.data.stock));
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
];
|
||||
|
||||
const numData = computed(() => sheep.$store('user').numData);
|
||||
console.log(numData)
|
||||
console.log('更换后的yuda订单数量',numData)
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
|
||||
// 用户信息
|
||||
const userInfo = computed(() => sheep.$store('user').userInfo);
|
||||
console.log(userInfo)
|
||||
console.log('用户信息',userInfo)
|
||||
|
||||
// 是否登录
|
||||
const isLogin = computed(() => sheep.$store('user').isLogin);
|
||||
|
||||
+178
-171
@@ -4,214 +4,221 @@
|
||||
*/
|
||||
|
||||
import Request from 'luch-request';
|
||||
import { baseUrl, apiPath } from '@/sheep/config';
|
||||
import {
|
||||
baseUrl,
|
||||
apiPath
|
||||
} from '@/sheep/config';
|
||||
import $store from '@/sheep/store';
|
||||
import $platform from '@/sheep/platform';
|
||||
import { showAuthModal } from '@/sheep/hooks/useModal';
|
||||
import {
|
||||
showAuthModal
|
||||
} from '@/sheep/hooks/useModal';
|
||||
|
||||
const options = {
|
||||
// 显示操作成功消息 默认不显示
|
||||
showSuccess: false,
|
||||
// 成功提醒 默认使用后端返回值
|
||||
successMsg: '',
|
||||
// 显示失败消息 默认显示
|
||||
showError: true,
|
||||
// 失败提醒 默认使用后端返回信息
|
||||
errorMsg: '',
|
||||
// 显示请求时loading模态框 默认显示
|
||||
showLoading: true,
|
||||
// loading提醒文字
|
||||
loadingMsg: '加载中',
|
||||
// 需要授权才能请求 默认放开
|
||||
auth: false,
|
||||
// ...
|
||||
// 显示操作成功消息 默认不显示
|
||||
showSuccess: false,
|
||||
// 成功提醒 默认使用后端返回值
|
||||
successMsg: '',
|
||||
// 显示失败消息 默认显示
|
||||
showError: true,
|
||||
// 失败提醒 默认使用后端返回信息
|
||||
errorMsg: '',
|
||||
// 显示请求时loading模态框 默认显示
|
||||
showLoading: true,
|
||||
// loading提醒文字
|
||||
loadingMsg: '加载中',
|
||||
// 需要授权才能请求 默认放开
|
||||
auth: false,
|
||||
// ...
|
||||
};
|
||||
|
||||
// Loading全局实例
|
||||
let LoadingInstance = {
|
||||
target: null,
|
||||
count: 0,
|
||||
target: null,
|
||||
count: 0,
|
||||
};
|
||||
|
||||
/**
|
||||
* 关闭loading
|
||||
*/
|
||||
function closeLoading() {
|
||||
if (LoadingInstance.count > 0) LoadingInstance.count--;
|
||||
if (LoadingInstance.count === 0) uni.hideLoading();
|
||||
if (LoadingInstance.count > 0) LoadingInstance.count--;
|
||||
if (LoadingInstance.count === 0) uni.hideLoading();
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 请求基础配置 可直接使用访问自定义请求
|
||||
*/
|
||||
const http = new Request({
|
||||
baseURL: 'https://api.shopro.sheepjs.com/',
|
||||
timeout: 8000,
|
||||
method: 'GET',
|
||||
header: {
|
||||
Accept: 'text/json',
|
||||
'Content-Type': 'application/json;charset=UTF-8',
|
||||
platform: $platform.name,
|
||||
},
|
||||
// #ifdef APP-PLUS
|
||||
sslVerify: false,
|
||||
// #endif
|
||||
// #ifdef H5
|
||||
// 跨域请求时是否携带凭证(cookies)仅H5支持(HBuilderX 2.6.15+)
|
||||
withCredentials: false,
|
||||
// #endif
|
||||
custom: options,
|
||||
baseURL: 'https://api.shopro.sheepjs.com/',
|
||||
timeout: 8000,
|
||||
method: 'GET',
|
||||
header: {
|
||||
Accept: 'text/json',
|
||||
'Content-Type': 'application/json;charset=UTF-8',
|
||||
platform: $platform.name,
|
||||
},
|
||||
// #ifdef APP-PLUS
|
||||
sslVerify: false,
|
||||
// #endif
|
||||
// #ifdef H5
|
||||
// 跨域请求时是否携带凭证(cookies)仅H5支持(HBuilderX 2.6.15+)
|
||||
withCredentials: false,
|
||||
// #endif
|
||||
custom: options,
|
||||
});
|
||||
|
||||
/**
|
||||
* @description 请求拦截器
|
||||
*/
|
||||
http.interceptors.request.use(
|
||||
(config) => {
|
||||
// console.log(config);
|
||||
if (config.custom.auth && !$store('user').isLogin) {
|
||||
showAuthModal();
|
||||
return Promise.reject();
|
||||
}
|
||||
if (config.custom.showLoading) {
|
||||
LoadingInstance.count++;
|
||||
LoadingInstance.count === 1 &&
|
||||
uni.showLoading({
|
||||
title: config.custom.loadingMsg,
|
||||
mask: true,
|
||||
fail: () => {
|
||||
uni.hideLoading();
|
||||
},
|
||||
});
|
||||
}
|
||||
const token = uni.getStorageSync('token');
|
||||
if (token) config.header['Authorization'] = token;
|
||||
// TODO 芋艿:特殊处理
|
||||
if (config.url.indexOf('/app-api/') !== -1) {
|
||||
config.header['Accept'] = '*/*'
|
||||
config.header['tenant-id'] = '1';
|
||||
config.header['Authorization'] = 'Bearer test247';
|
||||
}
|
||||
return config;
|
||||
},
|
||||
(error) => {
|
||||
return Promise.reject(error);
|
||||
},
|
||||
(config) => {
|
||||
// console.log(config);
|
||||
if (config.custom.auth && !$store('user').isLogin) {
|
||||
showAuthModal();
|
||||
return Promise.reject();
|
||||
}
|
||||
if (config.custom.showLoading) {
|
||||
LoadingInstance.count++;
|
||||
LoadingInstance.count === 1 &&
|
||||
uni.showLoading({
|
||||
title: config.custom.loadingMsg,
|
||||
mask: true,
|
||||
fail: () => {
|
||||
uni.hideLoading();
|
||||
},
|
||||
});
|
||||
}
|
||||
const token = uni.getStorageSync('token');
|
||||
if (token) config.header['Authorization'] = token;
|
||||
// TODO 芋艿:特殊处理
|
||||
if (config.url.indexOf('/app-api/') !== -1) {
|
||||
config.header['Accept'] = '*/*'
|
||||
config.header['tenant-id'] = '1';
|
||||
config.header['Authorization'] = 'Bearer test247';
|
||||
}
|
||||
return config;
|
||||
},
|
||||
(error) => {
|
||||
return Promise.reject(error);
|
||||
},
|
||||
);
|
||||
|
||||
/**
|
||||
* @description 响应拦截器
|
||||
*/
|
||||
http.interceptors.response.use(
|
||||
(response) => {
|
||||
// 自动设置登陆令牌
|
||||
if (response.header.authorization || response.header.Authorization) {
|
||||
$store('user').setToken(response.header.authorization || response.header.Authorization);
|
||||
}
|
||||
(response) => {
|
||||
// 自动设置登陆令牌
|
||||
if (response.header.authorization || response.header.Authorization) {
|
||||
$store('user').setToken(response.header.authorization || response.header.Authorization);
|
||||
}
|
||||
|
||||
response.config.custom.showLoading && closeLoading();
|
||||
if (response.data.code !== 0) {
|
||||
if (response.config.custom.showError)
|
||||
uni.showToast({
|
||||
title: response.data.msg || '服务器开小差啦,请稍后再试~',
|
||||
icon: 'none',
|
||||
mask: true,
|
||||
});
|
||||
return Promise.resolve(response.data);
|
||||
}
|
||||
if (
|
||||
response.data.error === 0 &&
|
||||
response.data.msg !== '' &&
|
||||
response.config.custom.showSuccess
|
||||
) {
|
||||
uni.showToast({
|
||||
title: response.config.custom.successMsg || response.data.msg,
|
||||
icon: 'none',
|
||||
});
|
||||
}
|
||||
return Promise.resolve(response.data);
|
||||
},
|
||||
(error) => {
|
||||
const userStore = $store('user');
|
||||
const isLogin = userStore.isLogin;
|
||||
let errorMessage = '网络请求出错';
|
||||
if (error !== undefined) {
|
||||
switch (error.statusCode) {
|
||||
case 400:
|
||||
errorMessage = '请求错误';
|
||||
break;
|
||||
case 401:
|
||||
if (isLogin) {
|
||||
errorMessage = '您的登陆已过期';
|
||||
} else {
|
||||
errorMessage = '请先登录';
|
||||
}
|
||||
userStore.logout(true);
|
||||
showAuthModal();
|
||||
break;
|
||||
case 403:
|
||||
errorMessage = '拒绝访问';
|
||||
break;
|
||||
case 404:
|
||||
errorMessage = '请求出错';
|
||||
break;
|
||||
case 408:
|
||||
errorMessage = '请求超时';
|
||||
break;
|
||||
case 429:
|
||||
errorMessage = '请求频繁, 请稍后再访问';
|
||||
break;
|
||||
case 500:
|
||||
errorMessage = '服务器开小差啦,请稍后再试~';
|
||||
break;
|
||||
case 501:
|
||||
errorMessage = '服务未实现';
|
||||
break;
|
||||
case 502:
|
||||
errorMessage = '网络错误';
|
||||
break;
|
||||
case 503:
|
||||
errorMessage = '服务不可用';
|
||||
break;
|
||||
case 504:
|
||||
errorMessage = '网络超时';
|
||||
break;
|
||||
case 505:
|
||||
errorMessage = 'HTTP版本不受支持';
|
||||
break;
|
||||
}
|
||||
if (error.errMsg.includes('timeout')) errorMessage = '请求超时';
|
||||
// #ifdef H5
|
||||
if (error.errMsg.includes('Network'))
|
||||
errorMessage = window.navigator.onLine ? '服务器异常' : '请检查您的网络连接';
|
||||
// #endif
|
||||
}
|
||||
response.config.custom.showLoading && closeLoading();
|
||||
if (response.data.code !== 0) {
|
||||
if (response.config.custom.showError)
|
||||
uni.showToast({
|
||||
title: response.data.msg || '服务器开小差啦,请稍后再试~',
|
||||
icon: 'none',
|
||||
mask: true,
|
||||
});
|
||||
return Promise.resolve(response.data);
|
||||
}
|
||||
if (
|
||||
response.data.error === 0 &&
|
||||
response.data.msg !== '' &&
|
||||
response.config.custom.showSuccess
|
||||
) {
|
||||
uni.showToast({
|
||||
title: response.config.custom.successMsg || response.data.msg,
|
||||
icon: 'none',
|
||||
});
|
||||
}
|
||||
return Promise.resolve(response.data);
|
||||
},
|
||||
(error) => {
|
||||
const userStore = $store('user');
|
||||
const isLogin = userStore.isLogin;
|
||||
let errorMessage = '网络请求出错';
|
||||
if (error !== undefined) {
|
||||
switch (error.statusCode) {
|
||||
case 400:
|
||||
errorMessage = '请求错误';
|
||||
break;
|
||||
case 401:
|
||||
if (isLogin) {
|
||||
errorMessage = '您的登陆已过期';
|
||||
} else {
|
||||
errorMessage = '请先登录';
|
||||
}
|
||||
userStore.logout(true);
|
||||
showAuthModal();
|
||||
break;
|
||||
case 403:
|
||||
errorMessage = '拒绝访问';
|
||||
break;
|
||||
case 404:
|
||||
errorMessage = '请求出错';
|
||||
break;
|
||||
case 408:
|
||||
errorMessage = '请求超时';
|
||||
break;
|
||||
case 429:
|
||||
errorMessage = '请求频繁, 请稍后再访问';
|
||||
break;
|
||||
case 500:
|
||||
errorMessage = '服务器开小差啦,请稍后再试~';
|
||||
break;
|
||||
case 501:
|
||||
errorMessage = '服务未实现';
|
||||
break;
|
||||
case 502:
|
||||
errorMessage = '网络错误';
|
||||
break;
|
||||
case 503:
|
||||
errorMessage = '服务不可用';
|
||||
break;
|
||||
case 504:
|
||||
errorMessage = '网络超时';
|
||||
break;
|
||||
case 505:
|
||||
errorMessage = 'HTTP版本不受支持';
|
||||
break;
|
||||
}
|
||||
if (error.errMsg.includes('timeout')) errorMessage = '请求超时';
|
||||
// #ifdef H5
|
||||
if (error.errMsg.includes('Network'))
|
||||
errorMessage = window.navigator.onLine ? '服务器异常' : '请检查您的网络连接';
|
||||
// #endif
|
||||
}
|
||||
|
||||
if (error && error.config) {
|
||||
if (error.config.custom.showError === false) {
|
||||
uni.showToast({
|
||||
title: error.data?.msg || errorMessage,
|
||||
icon: 'none',
|
||||
mask: true,
|
||||
});
|
||||
}
|
||||
error.config.custom.showLoading && closeLoading();
|
||||
}
|
||||
if (error && error.config) {
|
||||
if (error.config.custom.showError === false) {
|
||||
uni.showToast({
|
||||
title: error.data?.msg || errorMessage,
|
||||
icon: 'none',
|
||||
mask: true,
|
||||
});
|
||||
}
|
||||
error.config.custom.showLoading && closeLoading();
|
||||
}
|
||||
|
||||
return false;
|
||||
},
|
||||
return false;
|
||||
},
|
||||
);
|
||||
|
||||
const request = (config) => {
|
||||
if (config.url[0] !== '/') {
|
||||
config.url = '/app-api/' + config.url;
|
||||
}
|
||||
// TODO 芋艿:额外拼接
|
||||
if (config.url.indexOf('/app-api/') >= 0) {
|
||||
config.url = 'http://api-dashboard.yudao.iocoder.cn' + config.url; // 调用【云端】
|
||||
// config.url = 'http://127.0.0.1:48080' + config.url; // 调用【本地】
|
||||
}
|
||||
return http.middleware(config);
|
||||
if (config.url[0] !== '/') {
|
||||
config.url = '/app-api/' + config.url;
|
||||
}
|
||||
// TODO 芋艿:额外拼接
|
||||
if (config.url.indexOf('/app-api/') >= 0) {
|
||||
// 设置接口地址
|
||||
config.url = 'http://api-dashboard.yudao.iocoder.cn' + config.url; // 调用【云端】
|
||||
// config.url = 'https://app.test.huizhizao.vip/prod-api' + config.url; // 调用【云端】
|
||||
// config.url = 'http://127.0.0.1:48080' + config.url; // 调用【本地】
|
||||
}
|
||||
return http.middleware(config);
|
||||
};
|
||||
|
||||
export default request;
|
||||
export default request;
|
||||
@@ -16,7 +16,7 @@ const modal = defineStore({
|
||||
}
|
||||
}),
|
||||
persist: {
|
||||
enabled: true,
|
||||
enabled: true,
|
||||
strategies: [
|
||||
{
|
||||
key: 'modal-store',
|
||||
|
||||
+5
-2
@@ -45,7 +45,10 @@ const user = defineStore({
|
||||
// 获取个人信息
|
||||
async getInfo() {
|
||||
const { code, data } = await userApi.profile();
|
||||
if (code !== 0) return;
|
||||
// 为了兼容 获取用户余额 可能还会用到其他参数
|
||||
const { code:code2, data:data2 } = await userApi.balance();
|
||||
if (code !== 0||code2!=0) return;
|
||||
data.money=data2.balance/100;
|
||||
this.userInfo = data;
|
||||
|
||||
return Promise.resolve(data);
|
||||
@@ -65,7 +68,7 @@ const user = defineStore({
|
||||
const { code, data } = await userApi.data();
|
||||
const data2 = await userApi.data2();
|
||||
if (code === 0&&data2.code===0) {
|
||||
console.log(data);
|
||||
console.log('订单数据',data);
|
||||
this.numData = {order_num:{
|
||||
noget:data.deliveredCount,
|
||||
unpaid:data.unpaidCount,
|
||||
|
||||
Reference in New Issue
Block a user