update 部分退款 取消订单 拣货完成

This commit is contained in:
qijq 2025-07-31 12:37:52 +08:00
parent adbe417bd2
commit 3ac04df21a
21 changed files with 1659 additions and 120 deletions

View File

@ -4,20 +4,24 @@
"version" : "0.0", "version" : "0.0",
"configurations" : [ "configurations" : [
{ {
"app-plus" : { "app-plus" :
"launchtype" : "remote" {
}, "launchtype" : "remote"
"default" : { },
"launchtype" : "local" "default" :
}, {
"h5" : { "launchtype" : "local"
"launchtype" : "local" },
}, "h5" :
"mp-weixin" : { {
"launchtype" : "local" "launchtype" : "local"
}, },
"provider" : "aliyun", "mp-weixin" :
"type" : "uniCloud" {
"launchtype" : "local"
},
"provider" : "aliyun",
"type" : "uniCloud"
}, },
{ {
"playground" : "custom", "playground" : "custom",

View File

@ -32,7 +32,7 @@ export default {
}, },
onShow: function () { onShow: function () {
this.globalData.isAppActive = true; this.globalData.isAppActive = true;
webSocketManager.closeAllGlobalConnections();
setTimeout(() => { setTimeout(() => {
if (this.userInfo && Object.keys(this.userInfo).length > 0) { if (this.userInfo && Object.keys(this.userInfo).length > 0) {
this.connectSocket(this.userInfo); this.connectSocket(this.userInfo);

View File

@ -115,6 +115,36 @@ export function GetSalesReturnOrderPass(params) {
}); });
} }
export function GetInitiativeOrderRefund(params) {
return http({
url: "/shop/shop-order-return/mch/order/doRefund",
method: "post",
data: params,
baseURL: config.adminApi,
});
}
/**
* 拣货完成
* @author Seven
* @data 2025-3-28
* @param {
* order_id : "DD-20241206-13"
* store_id : 3
* }
* @returns { }
* @see https://mall.gpxscs.cn/api/admin/shop/shop-order-info/picking/completed
*/
export function GetOrderPicking(params) {
return http({
url: "/shop/shop-order-info/picking/completed",
method: "post",
params,
baseURL: config.adminApi,
});
}
/** /**
* 获取订单列表 模拟数据 * 获取订单列表 模拟数据
**/ **/

View File

@ -12,15 +12,15 @@ import config from "../../config/config";
* @see https://mall.gpxscs.cn/api/admin/shop/shop-product-base/saveProduct * @see https://mall.gpxscs.cn/api/admin/shop/shop-product-base/saveProduct
*/ */
export function UpdateCommodityInfo(params) { export function UpdateCommodityInfo(data) {
return http({ return http({
url: "/shop/shop-product-base/saveProduct", url: "/shop/shop-product-base/saveProduct",
method: "post", method: "post",
baseURL: config.adminApi, baseURL: config.adminApi,
headers: { headers: {
"content-type": "application/x-www-form-urlencoded;charset=UTF-8", "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8",
}, },
params, data,
}); });
} }
@ -42,10 +42,7 @@ export function UpdateCommodityPriceAndQuantity(params) {
url: "/shop/shop-product-item/editQuantity", url: "/shop/shop-product-item/editQuantity",
method: "post", method: "post",
baseURL: config.adminApi, baseURL: config.adminApi,
headers: { data: params,
"content-type": "application/x-www-form-urlencoded;charset=UTF-8",
},
params,
}); });
} }

View File

@ -0,0 +1,537 @@
<template>
<view>
<view class="tui-select--mask" :class="{'tui-select--mask-show':show}" :style="getStyles" @tap.stop="maskClose">
</view>
<view class="tui-select--wrap" :class="{'tui-select--wrap-show':show}"
:style="{borderTopLeftRadius:radius+'rpx',borderTopRightRadius:radius+'rpx',background:background,zIndex:zIndex}">
<view class="tui-select--header"
:style="{background:background,borderTopLeftRadius:radius+'rpx',borderTopRightRadius:radius+'rpx'}">
<text class="tui-select--header-text"
:style="{fontSize:titleSize+'rpx',color:titleColor,fontWeight:fontWeight}">{{title}}</text>
<view class="tui-select--header-close" @tap.stop="handleClose">
<icon type="clear" color="#ccc" :size="16"></icon>
</view>
<view class="tui-select--header-line" :style="{background:dividerColor}"></view>
</view>
<scroll-view scroll-y class="tui-select--scroll" :show-scrollbar="false" :style="{height:height+'rpx'}">
<view class="tui-select--list">
<view class="tui-select--item" :style="{padding:padding}" @tap="itemClick(index)"
v-for="(model,index) in itemList" :key="index"
:class="{'tui-select--reverse':reverse,'tui-select--item-active':highlight && !model.disabled,'tui-select--disabled':model.disabled}">
<view class="tui-select--checkbox" :class="{'tui-select--is-checkmark ':isCheckMark}"
:style="{background:model[checkedField] && !isCheckMark ?getCheckboxColor:'transparent',borderColor:model[checkedField] && !isCheckMark ?getCheckboxColor:borderColor}">
<view class="tui-select--checkmark"
:style="{borderBottomColor:checkmarkColor,borderRightColor:checkmarkColor}"
v-if="model[checkedField]"></view>
</view>
<view class="tui-select--flex">
<view class="tui-select--icon-box"
:class="{'tui-select--icon-ml':!reverse,'tui-select--icon-mr':reverse}"
:style="{width:iconWidth+'rpx',height:iconWidth+'rpx',background:iconBgColor}"
v-if="model[srcField]">
<image :src="model[srcField]" :style="{width:iconWidth+'rpx',height:iconWidth+'rpx'}"
mode="scaleToFill"></image>
</view>
<text class="tui-select--item-text"
:class="{'tui-select--text-pl':!reverse,'tui-select--text-pr':reverse}"
:style="{fontSize:size+'rpx',color:color}">{{model[textField]}}</text>
</view>
<view v-if="dividerLine" class="tui-select--item-line"
:style="{background:dividerColor,left:reverse?0:bottomLeft+'rpx',right:reverse?bottomLeft+'rpx':0}">
</view>
</view>
</view>
</scroll-view>
<view class="tui-select--btn-wrap">
<view class="tui-select--btn" :style="{background:getBtnBackground}">
<text class="tui-select--btn" :class="['tui-select--btn-text']" :style="{color:btnColor}"
@tap.stop="handleClick">{{btnText}}</text>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
name: "tui-select",
emits: ['confirm', 'close'],
props: {
show: {
type: Boolean,
default: false
},
list: {
type: Array,
default () {
return []
}
},
textField: {
type: String,
default: 'text'
},
valueField: {
type: String,
default: 'value'
},
srcField: {
type: String,
default: 'src'
},
checkedField: {
type: String,
default: 'checked'
},
height: {
type: [Number, String],
default: 600
},
radius: {
type: [Number, String],
default: 24
},
title: {
type: String,
default: '请选择'
},
titleSize: {
type: [Number, String],
default: 32
},
titleColor: {
type: String,
default: '#333'
},
fontWeight: {
type: [Number, String],
default: 400
},
multiple: {
type: Boolean,
default: false
},
background: {
type: String,
default: '#fff'
},
padding: {
type: String,
default: '30rpx'
},
//
checkboxColor: {
type: String,
default: ''
},
borderColor: {
type: String,
default: '#ccc'
},
isCheckMark: {
type: Boolean,
default: false
},
checkmarkColor: {
type: String,
default: '#fff'
},
reverse: {
type: Boolean,
default: false
},
dividerLine: {
type: Boolean,
default: true
},
dividerColor: {
type: String,
default: '#EEEEEE'
},
bottomLeft: {
type: [Number, String],
default: 30
},
highlight: {
type: Boolean,
default: true
},
iconWidth: {
type: [Number, String],
default: 48
},
//v2.9.0+
iconBgColor: {
type: String,
default: '#F8F8F8'
},
size: {
type: [Number, String],
default: 30
},
color: {
type: String,
default: '#333'
},
btnText: {
type: String,
default: '确定'
},
btnBackground: {
type: String,
default: ''
},
btnColor: {
type: String,
default: '#fff'
},
maskBackground: {
type: String,
default: 'rgba(0,0,0,.6)'
},
maskClosable: {
type: Boolean,
default: false
},
zIndex: {
type: [Number, String],
default: 1000
}
},
computed: {
getStyles() {
return `background:${this.maskBackground};z-index:${Number(this.zIndex)-1};`
},
getCheckboxColor() {
return this.checkboxColor || (uni && uni.$tui && uni.$tui.color.primary) || '#5677fc'
},
getBtnBackground() {
return this.btnBackground || (uni && uni.$tui && uni.$tui.color.primary) || '#5677fc'
}
},
watch: {
list(newVal) {
this.initData(newVal)
}
},
data() {
return {
itemList: [],
index: -1
};
},
created() {
this.initData(this.list)
},
methods: {
initData(vals) {
vals = JSON.parse(JSON.stringify(vals))
if (vals && vals.length > 0) {
if (typeof vals[0] !== 'object') {
vals = vals.map(item => {
return {
[this.textField]: item,
[this.checkedField]: false,
disabled: false
}
})
} else {
vals.map((item, index) => {
item[this.checkedField] = item[this.checkedField] || false
if (!this.multiple && item[this.checkedField]) {
this.index = index
}
})
}
this.itemList = vals;
}
},
itemClick(index) {
let vals = [...this.itemList]
let item = vals[index]
if (item && item.disabled) return;
if (this.multiple) {
item[this.checkedField] = !item[this.checkedField];
} else {
vals.forEach((item, idx) => {
if (index === idx) {
item[this.checkedField] = true
} else {
item[this.checkedField] = false
}
})
this.index = index
}
this.itemList = vals;
},
handleClick() {
if (this.multiple) {
let items = []
this.itemList.forEach((item, idx) => {
if (item[this.checkedField]) {
items.push(item)
}
})
this.$emit('confirm', {
options: items
})
} else {
let index = this.index;
this.$emit('confirm', {
index: index,
options: index === -1 ? '' : this.list[index]
})
}
},
maskClose() {
if (!this.maskClosable) return;
this.handleClose()
},
handleClose() {
this.$emit('close', {})
}
}
}
</script>
<style scoped>
.tui-select--mask {
position: fixed;
left: 0;
right: 0;
top: 0;
bottom: 0;
transition: all ease-in-out .3s;
visibility: hidden;
opacity: 0;
}
.tui-select--mask-show {
opacity: 1;
visibility: visible;
}
.tui-select--wrap {
position: fixed;
left: 0;
right: 0;
bottom: 0;
width: 100%;
transform: translate3d(0, 100%, 0);
transition: all 0.3s ease-in-out;
min-height: 20rpx;
opacity: 0;
visibility: hidden;
padding-bottom: constant(safe-area-inset-bottom);
padding-bottom: env(safe-area-inset-bottom);
}
.tui-select--wrap-show {
transform: translate3d(0, 0, 0);
opacity: 1;
visibility: visible;
}
.tui-select--scroll {
width: 100%;
flex: 1;
}
.tui-select--list {
width: 100%;
}
.tui-select--item {
width: 100%;
display: flex;
box-sizing: border-box;
flex: 1;
flex-direction: row;
align-items: center;
position: relative;
/* #ifdef H5 */
cursor: pointer;
/* #endif */
position: relative;
}
.tui-select--disabled {
opacity: .5;
/* #ifdef H5 */
cursor: not-allowed;
/* #endif */
}
.tui-select--item-line {
position: absolute;
bottom: 0;
height: 1px;
-webkit-transform: scaleY(0.5);
transform: scaleY(0.5);
transform-origin: 0 100%;
z-index: 1;
}
.tui-select--item-active:active {
background: rgba(0, 0, 0, .2);
}
.tui-select--flex {
width: 100%;
display: flex;
box-sizing: border-box;
flex: 1;
flex-direction: row;
align-items: center;
}
.tui-select--reverse {
justify-content: space-between;
flex-direction: row-reverse;
}
.tui-select--checkbox {
font-size: 0;
color: rgba(0, 0, 0, 0);
width: 40rpx;
height: 40rpx;
border-width: 1px;
border-style: solid;
display: inline-flex;
box-sizing: border-box;
border-radius: 50%;
vertical-align: top;
flex-shrink: 0;
flex-direction: row;
align-items: center;
justify-content: center;
overflow: hidden;
position: relative;
}
.tui-select--is-checkmark {
border-width: 0 !important;
background: transparent !important;
}
.tui-select--checkmark {
width: 20rpx;
height: 40rpx;
border-bottom-style: solid;
border-bottom-width: 3px;
border-bottom-color: #FFFFFF;
border-right-style: solid;
border-right-width: 3px;
border-right-color: #FFFFFF;
box-sizing: border-box;
transform: rotate(45deg) scale(0.5) translateZ(0);
transform-origin: 54% 48%;
}
.tui-select--item-text {
word-break: break-all;
font-weight: normal;
}
.tui-select--text-pl {
padding-left: 20rpx;
}
.tui-select--text-pr {
padding-right: 20rpx;
}
.tui-select--icon-box {
overflow: hidden;
background-color: #F8F8F8;
flex-shrink: 0;
}
.tui-select--icon-ml {
margin-left: 20rpx;
}
.tui-select--icon-mr {
margin-right: 20rpx;
}
.tui-select--header {
width: 100%;
display: flex;
flex: 1;
height: 98rpx;
flex-direction: row;
align-items: center;
justify-content: center;
position: relative;
}
.tui-select--header-line {
position: absolute;
left: 0;
bottom: 0;
right: 0;
height: 1px;
-webkit-transform: scaleY(0.5);
transform: scaleY(0.5);
transform-origin: 0 100%;
z-index: 1;
}
.tui-select--header-text {
text-align: center;
width: 100%;
white-space: nowrap;
overflow: hidden;
box-sizing: border-box;
text-overflow: ellipsis;
flex: 1;
padding: 0 88rpx;
}
.tui-select--header-close {
width: 50rpx;
height: 50rpx;
position: absolute;
right: 32rpx;
top: 24rpx;
text-align: right;
/* #ifdef H5 */
cursor: pointer;
/* #endif */
}
.tui-select--btn-wrap {
width: 100%;
display: flex;
box-sizing: border-box;
flex: 1;
flex-direction: row;
align-items: center;
justify-content: center;
padding: 32rpx;
}
.tui-select--btn {
width: 100%;
display: flex;
flex: 1;
flex-direction: row;
align-items: center;
justify-content: center;
height: 84rpx;
border-radius: 44rpx;
/* #ifdef H5 */
cursor: pointer;
/* #endif */
font-size: 30rpx;
font-weight: normal;
text-align: center;
}
.tui-select--btn-text:active {
background: rgba(0, 0, 0, .2);
}
</style>

View File

@ -23,7 +23,8 @@
"Camera" : {}, "Camera" : {},
"Record" : {}, "Record" : {},
"VideoPlayer" : {}, "VideoPlayer" : {},
"UIWebview" : {} "UIWebview" : {},
"Push" : {}
}, },
/* */ /* */
"distribute" : { "distribute" : {
@ -62,7 +63,15 @@
}, },
/* SDK */ /* SDK */
"sdkConfigs" : { "sdkConfigs" : {
"maps" : {} "maps" : {},
"push" : {
"unipush" : {
"version" : "2",
"offline" : false,
"appid": "rQxaGAKl7t83KlTubAaKC3",
"appkey": "QSElTn6ttq5nmrIZtFhCT"
}
}
}, },
"icons" : { "icons" : {
"android" : { "android" : {

View File

@ -7,7 +7,8 @@
"dependencies": { "dependencies": {
"axios": "^0.27.2", "axios": "^0.27.2",
"axios-adapter-uniapp": "^0.1.4", "axios-adapter-uniapp": "^0.1.4",
"lodash": "^4.17.21" "lodash": "^4.17.21",
"qs": "^6.14.0"
}, },
"devDependencies": { "devDependencies": {
"sass": "^1.80.6", "sass": "^1.80.6",
@ -345,6 +346,33 @@
"node": ">=8" "node": ">=8"
} }
}, },
"node_modules/call-bind-apply-helpers": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
"integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
"dependencies": {
"es-errors": "^1.3.0",
"function-bind": "^1.1.2"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/call-bound": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
"integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
"dependencies": {
"call-bind-apply-helpers": "^1.0.2",
"get-intrinsic": "^1.3.0"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/chokidar": { "node_modules/chokidar": {
"version": "4.0.1", "version": "4.0.1",
"resolved": "https://mirrors.tencent.com/npm/chokidar/-/chokidar-4.0.1.tgz", "resolved": "https://mirrors.tencent.com/npm/chokidar/-/chokidar-4.0.1.tgz",
@ -392,6 +420,46 @@
"node": ">=0.10" "node": ">=0.10"
} }
}, },
"node_modules/dunder-proto": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
"integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
"dependencies": {
"call-bind-apply-helpers": "^1.0.1",
"es-errors": "^1.3.0",
"gopd": "^1.2.0"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/es-define-property": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
"integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
"engines": {
"node": ">= 0.4"
}
},
"node_modules/es-errors": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
"integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
"engines": {
"node": ">= 0.4"
}
},
"node_modules/es-object-atoms": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
"integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
"dependencies": {
"es-errors": "^1.3.0"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/fill-range": { "node_modules/fill-range": {
"version": "7.1.1", "version": "7.1.1",
"resolved": "https://mirrors.tencent.com/npm/fill-range/-/fill-range-7.1.1.tgz", "resolved": "https://mirrors.tencent.com/npm/fill-range/-/fill-range-7.1.1.tgz",
@ -437,6 +505,82 @@
"node": ">= 6" "node": ">= 6"
} }
}, },
"node_modules/function-bind": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/get-intrinsic": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
"integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
"dependencies": {
"call-bind-apply-helpers": "^1.0.2",
"es-define-property": "^1.0.1",
"es-errors": "^1.3.0",
"es-object-atoms": "^1.1.1",
"function-bind": "^1.1.2",
"get-proto": "^1.0.1",
"gopd": "^1.2.0",
"has-symbols": "^1.1.0",
"hasown": "^2.0.2",
"math-intrinsics": "^1.1.0"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/get-proto": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
"integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
"dependencies": {
"dunder-proto": "^1.0.1",
"es-object-atoms": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/gopd": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
"integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/has-symbols": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
"integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/hasown": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
"integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
"dependencies": {
"function-bind": "^1.1.2"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/immutable": { "node_modules/immutable": {
"version": "4.3.7", "version": "4.3.7",
"resolved": "https://mirrors.tencent.com/npm/immutable/-/immutable-4.3.7.tgz", "resolved": "https://mirrors.tencent.com/npm/immutable/-/immutable-4.3.7.tgz",
@ -482,6 +626,14 @@
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
"license": "MIT" "license": "MIT"
}, },
"node_modules/math-intrinsics": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
"integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
"engines": {
"node": ">= 0.4"
}
},
"node_modules/micromatch": { "node_modules/micromatch": {
"version": "4.0.8", "version": "4.0.8",
"resolved": "https://mirrors.tencent.com/npm/micromatch/-/micromatch-4.0.8.tgz", "resolved": "https://mirrors.tencent.com/npm/micromatch/-/micromatch-4.0.8.tgz",
@ -528,6 +680,17 @@
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"node_modules/object-inspect": {
"version": "1.13.4",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
"integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/picomatch": { "node_modules/picomatch": {
"version": "2.3.1", "version": "2.3.1",
"resolved": "https://mirrors.tencent.com/npm/picomatch/-/picomatch-2.3.1.tgz", "resolved": "https://mirrors.tencent.com/npm/picomatch/-/picomatch-2.3.1.tgz",
@ -541,6 +704,20 @@
"url": "https://github.com/sponsors/jonschlinkert" "url": "https://github.com/sponsors/jonschlinkert"
} }
}, },
"node_modules/qs": {
"version": "6.14.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz",
"integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==",
"dependencies": {
"side-channel": "^1.1.0"
},
"engines": {
"node": ">=0.6"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/readdirp": { "node_modules/readdirp": {
"version": "4.0.2", "version": "4.0.2",
"resolved": "https://mirrors.tencent.com/npm/readdirp/-/readdirp-4.0.2.tgz", "resolved": "https://mirrors.tencent.com/npm/readdirp/-/readdirp-4.0.2.tgz",
@ -614,6 +791,74 @@
} }
} }
}, },
"node_modules/side-channel": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
"integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
"dependencies": {
"es-errors": "^1.3.0",
"object-inspect": "^1.13.3",
"side-channel-list": "^1.0.0",
"side-channel-map": "^1.0.1",
"side-channel-weakmap": "^1.0.2"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/side-channel-list": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
"integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
"dependencies": {
"es-errors": "^1.3.0",
"object-inspect": "^1.13.3"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/side-channel-map": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
"integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
"dependencies": {
"call-bound": "^1.0.2",
"es-errors": "^1.3.0",
"get-intrinsic": "^1.2.5",
"object-inspect": "^1.13.3"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/side-channel-weakmap": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
"integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
"dependencies": {
"call-bound": "^1.0.2",
"es-errors": "^1.3.0",
"get-intrinsic": "^1.2.5",
"object-inspect": "^1.13.3",
"side-channel-map": "^1.0.1"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/source-map-js": { "node_modules/source-map-js": {
"version": "1.2.1", "version": "1.2.1",
"resolved": "https://mirrors.tencent.com/npm/source-map-js/-/source-map-js-1.2.1.tgz", "resolved": "https://mirrors.tencent.com/npm/source-map-js/-/source-map-js-1.2.1.tgz",
@ -787,6 +1032,24 @@
"fill-range": "^7.1.1" "fill-range": "^7.1.1"
} }
}, },
"call-bind-apply-helpers": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
"integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
"requires": {
"es-errors": "^1.3.0",
"function-bind": "^1.1.2"
}
},
"call-bound": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
"integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
"requires": {
"call-bind-apply-helpers": "^1.0.2",
"get-intrinsic": "^1.3.0"
}
},
"chokidar": { "chokidar": {
"version": "4.0.1", "version": "4.0.1",
"resolved": "https://mirrors.tencent.com/npm/chokidar/-/chokidar-4.0.1.tgz", "resolved": "https://mirrors.tencent.com/npm/chokidar/-/chokidar-4.0.1.tgz",
@ -816,6 +1079,34 @@
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"dunder-proto": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
"integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
"requires": {
"call-bind-apply-helpers": "^1.0.1",
"es-errors": "^1.3.0",
"gopd": "^1.2.0"
}
},
"es-define-property": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
"integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="
},
"es-errors": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
"integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="
},
"es-object-atoms": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
"integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
"requires": {
"es-errors": "^1.3.0"
}
},
"fill-range": { "fill-range": {
"version": "7.1.1", "version": "7.1.1",
"resolved": "https://mirrors.tencent.com/npm/fill-range/-/fill-range-7.1.1.tgz", "resolved": "https://mirrors.tencent.com/npm/fill-range/-/fill-range-7.1.1.tgz",
@ -841,6 +1132,55 @@
"mime-types": "^2.1.12" "mime-types": "^2.1.12"
} }
}, },
"function-bind": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="
},
"get-intrinsic": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
"integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
"requires": {
"call-bind-apply-helpers": "^1.0.2",
"es-define-property": "^1.0.1",
"es-errors": "^1.3.0",
"es-object-atoms": "^1.1.1",
"function-bind": "^1.1.2",
"get-proto": "^1.0.1",
"gopd": "^1.2.0",
"has-symbols": "^1.1.0",
"hasown": "^2.0.2",
"math-intrinsics": "^1.1.0"
}
},
"get-proto": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
"integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
"requires": {
"dunder-proto": "^1.0.1",
"es-object-atoms": "^1.0.0"
}
},
"gopd": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
"integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="
},
"has-symbols": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
"integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ=="
},
"hasown": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
"integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
"requires": {
"function-bind": "^1.1.2"
}
},
"immutable": { "immutable": {
"version": "4.3.7", "version": "4.3.7",
"resolved": "https://mirrors.tencent.com/npm/immutable/-/immutable-4.3.7.tgz", "resolved": "https://mirrors.tencent.com/npm/immutable/-/immutable-4.3.7.tgz",
@ -876,6 +1216,11 @@
"resolved": "http://npm.ifengqun.com:4873/lodash/-/lodash-4.17.21.tgz", "resolved": "http://npm.ifengqun.com:4873/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
}, },
"math-intrinsics": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
"integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="
},
"micromatch": { "micromatch": {
"version": "4.0.8", "version": "4.0.8",
"resolved": "https://mirrors.tencent.com/npm/micromatch/-/micromatch-4.0.8.tgz", "resolved": "https://mirrors.tencent.com/npm/micromatch/-/micromatch-4.0.8.tgz",
@ -913,6 +1258,11 @@
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"object-inspect": {
"version": "1.13.4",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
"integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew=="
},
"picomatch": { "picomatch": {
"version": "2.3.1", "version": "2.3.1",
"resolved": "https://mirrors.tencent.com/npm/picomatch/-/picomatch-2.3.1.tgz", "resolved": "https://mirrors.tencent.com/npm/picomatch/-/picomatch-2.3.1.tgz",
@ -920,6 +1270,14 @@
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"qs": {
"version": "6.14.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz",
"integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==",
"requires": {
"side-channel": "^1.1.0"
}
},
"readdirp": { "readdirp": {
"version": "4.0.2", "version": "4.0.2",
"resolved": "https://mirrors.tencent.com/npm/readdirp/-/readdirp-4.0.2.tgz", "resolved": "https://mirrors.tencent.com/npm/readdirp/-/readdirp-4.0.2.tgz",
@ -947,6 +1305,50 @@
"neo-async": "^2.6.2" "neo-async": "^2.6.2"
} }
}, },
"side-channel": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
"integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
"requires": {
"es-errors": "^1.3.0",
"object-inspect": "^1.13.3",
"side-channel-list": "^1.0.0",
"side-channel-map": "^1.0.1",
"side-channel-weakmap": "^1.0.2"
}
},
"side-channel-list": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
"integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
"requires": {
"es-errors": "^1.3.0",
"object-inspect": "^1.13.3"
}
},
"side-channel-map": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
"integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
"requires": {
"call-bound": "^1.0.2",
"es-errors": "^1.3.0",
"get-intrinsic": "^1.2.5",
"object-inspect": "^1.13.3"
}
},
"side-channel-weakmap": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
"integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
"requires": {
"call-bound": "^1.0.2",
"es-errors": "^1.3.0",
"get-intrinsic": "^1.2.5",
"object-inspect": "^1.13.3",
"side-channel-map": "^1.0.1"
}
},
"source-map-js": { "source-map-js": {
"version": "1.2.1", "version": "1.2.1",
"resolved": "https://mirrors.tencent.com/npm/source-map-js/-/source-map-js-1.2.1.tgz", "resolved": "https://mirrors.tencent.com/npm/source-map-js/-/source-map-js-1.2.1.tgz",

View File

@ -6,6 +6,7 @@
"dependencies": { "dependencies": {
"axios": "^0.27.2", "axios": "^0.27.2",
"axios-adapter-uniapp": "^0.1.4", "axios-adapter-uniapp": "^0.1.4",
"lodash": "^4.17.21" "lodash": "^4.17.21",
"qs": "^6.14.0"
} }
} }

View File

@ -257,7 +257,13 @@
<view class="time" v-if="auditInfo.approval_status != 4"> <view class="time" v-if="auditInfo.approval_status != 4">
申请时间{{ auditInfo.created_at }} 申请时间{{ auditInfo.created_at }}
</view> </view>
<u-form :model="form" class="form" ref="uForm" label-width="70"> <u-form
:model="form"
class="form"
ref="uForm"
label-width="70"
v-if="auditInfo.approval_invalid_col.length > 0"
>
<u-form-item <u-form-item
:label="item.label" :label="item.label"
:prop="item.key" :prop="item.key"
@ -1374,6 +1380,10 @@ export default {
}); });
}, },
loginOut() { loginOut() {
// uni.switchTab({
// url: "/pages/order/order",
// });
this.$store.dispatch("user/LoginOut"); this.$store.dispatch("user/LoginOut");
}, },
}, },

View File

@ -52,11 +52,12 @@
shopStatus == 1 ? '#D8F1EC' : shopStatus == 2 ? '#ffecf2' : '#eee', shopStatus == 1 ? '#D8F1EC' : shopStatus == 2 ? '#ffecf2' : '#eee',
}" }"
> >
<u-cell-group :border="false"> <u-cell-group :border="false" handleShowTime="">
<u-cell <u-cell
@click="handleShowTime" @click=""
iconStyle="marginRight:6px; color: #279B8B;" iconStyle="marginRight:6px; color: #279B8B;"
:border="false" :border="false"
url="/pages/my/storeBusinessStatus/businessStatus"
isLink isLink
icon="hourglass-half-fill" icon="hourglass-half-fill"
title="营业中" title="营业中"
@ -66,7 +67,7 @@
iconStyle="marginRight:6px; color: #fe411b" iconStyle="marginRight:6px; color: #fe411b"
:border="false" :border="false"
isLink isLink
url="/pages/my/shopQRcode/shopQRcode" url="/pages/my/storeBusinessStatus/businessStatus"
icon="hourglass-half-fill" icon="hourglass-half-fill"
title="已停业" title="已停业"
v-if="shopStatus == 2" v-if="shopStatus == 2"
@ -75,7 +76,7 @@
iconStyle="marginRight:6px; color: #666" iconStyle="marginRight:6px; color: #666"
:border="false" :border="false"
isLink isLink
url="/pages/my/shopQRcode/shopQRcode" url="/pages/my/storeBusinessStatus/businessStatus"
icon="hourglass-half-fill" icon="hourglass-half-fill"
title="已打烊" title="已打烊"
v-if="shopStatus == 3" v-if="shopStatus == 3"
@ -277,11 +278,32 @@ export default {
url: "/pages/my/shopInfo", url: "/pages/my/shopInfo",
}); });
}, },
toServices() { toServices() {
// uni.navigateTo({ let item = {
// url: "/pages/my/shopInfo", user_friend_id: 36,
// }); user_id: 10001,
friend_id: 10001,
friend_note: "",
user_friend_addtime: "2025-05-09 10:03:33",
friend_state: 2,
friend_invite: 2,
username: "系统客服",
avatar:
"https://media-mall-prod-1259811287.cos.ap-guangzhou.myqcloud.com/media/media/plantform/20250307/c4cab676e06a49b282c2cbbe481f0fa1.png",
sign: "",
level_name: "v1",
user_nickname: "系统客服",
user_avatar:
"https://media-mall-prod-1259811287.cos.ap-guangzhou.myqcloud.com/media/media/plantform/20250307/c4cab676e06a49b282c2cbbe481f0fa1.png",
user_sign: "",
user_level_name: "v1",
rid: 2,
id: 776395489,
};
uni.navigateTo({
url: `/pages/IM/IMmsgContent?item=${JSON.stringify(item)}`,
});
}, },
outLogin() { outLogin() {
this.$store.dispatch("user/LoginOut"); this.$store.dispatch("user/LoginOut");

View File

@ -29,7 +29,15 @@
dashboardInfo.store_info.store_biz_state == 1 ? "营业中" : "停业中" dashboardInfo.store_info.store_biz_state == 1 ? "营业中" : "停业中"
}} }}
</view> </view>
<view class="tips">本店停业中不会自动恢复营业</view> <view class="tips" v-if="dashboardInfo.store_info.store_biz_state != 1">
本店停业中不会自动恢复营业
</view>
<view
class="tips"
v-else="dashboardInfo.store_info.store_biz_state != 1"
>
本店目前正常营业中
</view>
</view> </view>
<view class="business-box"> <view class="business-box">
<u-cell-group :border="false" class="business-time-content"> <u-cell-group :border="false" class="business-time-content">

View File

@ -122,7 +122,7 @@
<view class="order-num-block"> <view class="order-num-block">
<view class="order-serial-num"> <view class="order-serial-num">
# #
<text <block
style=" style="
font-size: 46rpx; font-size: 46rpx;
padding-left: 4rpx; padding-left: 4rpx;
@ -130,7 +130,7 @@
" "
> >
{{ item.orderNum }} {{ item.orderNum }}
</text> </block>
</view> </view>
<view class="delivery-status"> <view class="delivery-status">
{{ sfFormatStatus(item.order_state_id) }} {{ sfFormatStatus(item.order_state_id) }}
@ -163,9 +163,16 @@
<view class="picking-info"> <view class="picking-info">
<view class="picking-status"> <view class="picking-status">
<view class="picking-name">拣货中</view> <view class="picking-name">拣货中</view>
<view class="picking-time">已用时 03:54</view> <view class="picking-time">
{{ getRemainingTime(item.arrival_time) }}
</view>
</view> </view>
<u-button class="picking-btn">拣货完成</u-button> <u-button
class="picking-btn"
@click="handerShowOrderPickingPopup(item)"
>
拣货完成
</u-button>
</view> </view>
<view class="delivery-status-info"> <view class="delivery-status-info">
<view class="delivery-status"> <view class="delivery-status">
@ -174,17 +181,17 @@
<view class="delivery-num">{{ item.order_pickup_num_str }}</view> <view class="delivery-num">{{ item.order_pickup_num_str }}</view>
</view> </view>
<view class="order-remark"> <view class="order-remark">
<text style="color: #fff; font-weight: bold">备注</text> <block style="color: #fff; font-weight: bold">备注</block>
<text style="color: #fff"> <block style="color: #fff">
{{ item.buyer_info.order_message }} {{ item.buyer_info.order_message }}
</text> </block>
</view> </view>
<view class="commodity-info-block"> <view class="commodity-info-block">
<view class="commodity-num"> <view class="commodity-num">
<text style="font-size: 36rpx"> <block style="font-size: 36rpx">
{{ item.order_items.length || 0 }} {{ item.order_items.length || 0 }}
</text> </block>
<text>件商品</text> <block>件商品</block>
</view> </view>
<view <view
class="commodity-info" class="commodity-info"
@ -199,22 +206,24 @@
<view class="commodity-name">{{ group.item_name || 0 }}</view> <view class="commodity-name">{{ group.item_name || 0 }}</view>
<view class="commodity-barcode"> <view class="commodity-barcode">
条码 条码
<text style="padding-left: 8rpx"> <block style="padding-left: 8rpx">
{{ group.item_barcode || 0 }} {{ group.item_barcode || 0 }}
</text> </block>
</view> </view>
<view class="commodity-specification"> <view class="commodity-specification">
规格 规格
<text style="padding-left: 8rpx"> <block style="padding-left: 8rpx">
{{ group.specification || 0 }} {{ group.specification || 0 }}
</text> </block>
</view> </view>
</view> </view>
<view class="commodity-num"> <view class="commodity-num">
X <view class="">
<text style="padding-left: 8rpx"> X
{{ group.order_item_quantity || 0 }} <text style="padding-left: 8rpx">
</text> {{ group.order_item_quantity || 0 }}
</text>
</view>
</view> </view>
<view class="commodity-price"> <view class="commodity-price">
{{ group.order_item_amount || 0 }} {{ group.order_item_amount || 0 }}
@ -238,14 +247,14 @@
style="color: #333333; font-weight: 700" style="color: #333333; font-weight: 700"
> >
商家活动支付 商家活动支付
<text> <block>
<u-icon <u-icon
style="display: inline-block; margin-left: 8rpx" style="display: inline-block; margin-left: 8rpx"
name="question-circle" name="question-circle"
size="12" size="12"
color="aaaaaa" color="aaaaaa"
></u-icon> ></u-icon>
</text> </block>
</view> </view>
<view class="cost-info-num"> <view class="cost-info-num">
{{ item.order_discount_amount }} {{ item.order_discount_amount }}
@ -257,14 +266,14 @@
style="color: #333333; font-weight: 700" style="color: #333333; font-weight: 700"
> >
平台服务费 平台服务费
<text> <block>
<u-icon <u-icon
style="display: inline-block; margin-left: 8rpx" style="display: inline-block; margin-left: 8rpx"
name="question-circle" name="question-circle"
size="12" size="12"
color="#aaaaaa" color="#aaaaaa"
></u-icon> ></u-icon>
</text> </block>
</view> </view>
<view class="cost-info-num">{{ item.platform_fee }}</view> <view class="cost-info-num">{{ item.platform_fee }}</view>
</view> </view>
@ -274,40 +283,47 @@
style="color: #333333; font-weight: 700" style="color: #333333; font-weight: 700"
> >
配送费用 配送费用
<text> <block>
<u-icon <u-icon
style="display: inline-block; margin-left: 8rpx" style="display: inline-block; margin-left: 8rpx"
name="question-circle" name="question-circle"
size="12" size="12"
color="#aaaaaa" color="#aaaaaa"
></u-icon> ></u-icon>
</text> </block>
</view> </view>
<view class="cost-info-num"> <view class="cost-info-num">
{{ item.order_shipping_fee }} {{ item.order_shipping_fee }}
</view> </view>
</view> </view>
<view class="cost-info-income"> <!-- <view class="cost-info-income">
<view class="predict-income"> <view class="predict-income">
预计收入 预计收入
<text <block
style="font-size: 40rpx; color: #333333; font-weight: 700" style="font-size: 40rpx; color: #333333; font-weight: 700"
> >
24.95 24.95
</text> </block>
</view> </view>
<view class="customer-actual-payment"> <view class="customer-actual-payment">
顾客实际支付 30.50 顾客实际支付 30.50
</view> </view>
</view> </view> -->
</view> </view>
</view> </view>
<view class="order-btn-block"> <view class="order-btn-block">
<!-- <view class="btn-list"> <view class="btn-list">
<u-button class="btn-item">取消订单</u-button> <u-button class="btn-item" @click="handerShowCancelOrder(item)">
<u-button class="btn-item">退差价</u-button> 取消订单
<u-button class="btn-item">部分退款</u-button> </u-button>
</view> --> <!-- <u-button class="btn-item">退差价</u-button> -->
<u-button
class="btn-item"
@click="handerShowPartOrderRefund(item)"
>
部分退款
</u-button>
</view>
<view class="arrow-item" @click="showRefundOrderInfo(item, index)"> <view class="arrow-item" @click="showRefundOrderInfo(item, index)">
{{ item.showRefundOrderInfo ? "收起订单" : "展开订单" }} {{ item.showRefundOrderInfo ? "收起订单" : "展开订单" }}
<u-icon <u-icon
@ -383,7 +399,7 @@
font-weight: bold; font-weight: bold;
" "
> >
{{ item.orderNum }} {{ item.order_pickup_num }}
</text> </text>
</view> </view>
<view class="delivery-status" style="color: red"> <view class="delivery-status" style="color: red">
@ -950,13 +966,219 @@
:hairline="true" :hairline="true"
:plain="true" :plain="true"
shape="circle" shape="circle"
@click="handerRetrunOrder()" @click="getInitiativeOrderRefund()"
> >
确认 确认
</u-button> </u-button>
</view> </view>
</view> </view>
</u-popup> </u-popup>
<u-popup
class="affirm-popup"
zIndex="10077"
:show="showCancelOrderPopup"
mode="center"
@close="showCancelOrderPopup = false"
>
<view class="affirm-popup-content">
<view class="affirm-popup-title">取消订单</view>
<view class="affirm-popup-tips">
取消订单后金额将原路退回给用户确定取消
</view>
<view class="affirm-popup-form">
<u--form
labelPosition="left"
:model="form"
ref="uForm"
label-width="100"
:rules="rules"
>
<u-form-item
label="退款原因"
prop="reason"
class="form-item"
required
>
<u--textarea
class="u-textarea"
v-model="form.reason"
count
autoHeight
maxlength="100"
placeholder="请输入取消订单原因"
></u--textarea>
</u-form-item>
</u--form>
</view>
<view class="popup-btn-list">
<u-button
class="btn-item"
:hairline="true"
:plain="true"
shape="circle"
@click="showCancelOrderPopup = false"
>
取消
</u-button>
<u-button
class="btn-item btn-item-2"
:hairline="true"
:plain="true"
shape="circle"
@click="getInitiativeOrderRefund"
>
确定
</u-button>
</view>
</view>
</u-popup>
<u-popup
class="part-order-refund-popup"
zIndex="10080"
:show="showPartOrderRefundPopup"
mode="bottom"
closeable
@close="showPartOrderRefundPopup = false"
>
<view class="part-order-refund-popup-content">
<view class="part-order-refund-popup-title">部分退款</view>
<scroll-view
scroll-y
class="specification-type-search-scroll"
:show-scrollbar="false"
:style="{
maxHeight: currOrderItem.order_items.length >= 5 ? '500px' : 'none',
overflowY:
currOrderItem.order_items.length >= 5 ? 'auto' : 'visible',
}"
>
<view class="affirm-popup-form">
<u--form
labelPosition="left"
:model="form"
ref="uForm"
label-width="100"
:rules="rules"
>
<u-form-item
label="退款原因"
prop="reason"
class="form-item"
required
>
<u--textarea
class="u-textarea"
v-model="form.reason"
count
autoHeight
maxlength="100"
placeholder="请输入取消订单原因"
></u--textarea>
</u-form-item>
</u--form>
</view>
<view class="radio-list" v-if="currOrderItem.order_items.length > 0">
<u-checkbox-group
v-model="commodityCheckBoxList"
placement="column"
>
<view
class="commodity-info-item"
v-for="(item, index) of currOrderItem.order_items"
:key="index"
>
<view class="commodity-info-box">
<image
class="commodity-info-img"
:src="item.order_item_image"
></image>
<view class="commodity-content">
<view class="commodity-name">
{{ item.item_name || 0 }}
</view>
<view style="padding-left: 8rpx">
X{{ item.order_item_quantity || 0 }}
</view>
<view class="commodity-price">
{{
item.order_item_quantity * item.item_unit_price || 0
}}
</view>
</view>
</view>
<u-number-box
:min="1"
:max="item.order_item_quantity_2"
v-model="item.order_item_quantity"
></u-number-box>
<u-checkbox
:customStyle="{ marginBottom: '8px' }"
:key="index"
:name="item.item_id"
></u-checkbox>
</view>
</u-checkbox-group>
</view>
</scroll-view>
<view class="popup-btn-list">
<u-button
class="btn-item"
:hairline="true"
:plain="true"
shape="circle"
@click="showPartOrderRefundPopup = false"
>
取消
</u-button>
<u-button
class="btn-item btn-item-2"
:hairline="true"
:plain="true"
shape="circle"
@click="getInitiativeOrderRefund"
>
确认
</u-button>
</view>
</view>
</u-popup>
<u-popup
class="affirm-popup"
zIndex="10077"
:show="showOrderPickingPopup"
mode="center"
@close="showOrderPickingPopup = false"
>
<view class="affirm-popup-content">
<view class="affirm-popup-title">取消订单</view>
<view class="affirm-popup-tips">
确定将取货号 {{ currOrderItem.order_pickup_num }} 提前拣货完成
</view>
<view class="popup-btn-list">
<u-button
class="btn-item"
:hairline="true"
:plain="true"
shape="circle"
@click="showOrderPickingPopup = false"
>
取消
</u-button>
<u-button
class="btn-item btn-item-2"
:hairline="true"
:plain="true"
shape="circle"
@click="getOrderPicking"
>
确定
</u-button>
</view>
</view>
</u-popup>
<u-toast ref="uToast"></u-toast>
</view> </view>
</template> </template>
@ -969,6 +1191,8 @@ import {
GetSalesReturnOrderDetails, GetSalesReturnOrderDetails,
GetSalesReturnOrderNoPass, GetSalesReturnOrderNoPass,
GetSalesReturnOrderPass, GetSalesReturnOrderPass,
GetInitiativeOrderRefund,
GetOrderPicking,
} from "../../api/order"; } from "../../api/order";
import { mapState } from "vuex"; import { mapState } from "vuex";
import { GetAuditInfo } from "../../api/audit"; import { GetAuditInfo } from "../../api/audit";
@ -979,6 +1203,7 @@ import tabbar from "@/components/tabbar/tabbar.vue";
import tuiGallery from "@/components/tui-gallery/tui-gallery.vue"; import tuiGallery from "@/components/tui-gallery/tui-gallery.vue";
import tuiRadio from "@/components/tui-radio/tui-radio.vue"; import tuiRadio from "@/components/tui-radio/tui-radio.vue";
import tuiRadioGroup from "@/components/tui-radio-group/tui-radio-group.vue"; import tuiRadioGroup from "@/components/tui-radio-group/tui-radio-group.vue";
import tuiSelect from "@/components/tui-select/tui-select.vue";
export default { export default {
components: { components: {
tuiTabs, tuiTabs,
@ -989,6 +1214,7 @@ export default {
tuiGallery, tuiGallery,
tuiRadio, tuiRadio,
tuiRadioGroup, tuiRadioGroup,
tuiSelect,
}, },
data() { data() {
return { return {
@ -1199,6 +1425,28 @@ export default {
], ],
retrunOrderMsg: "", retrunOrderMsg: "",
currReturnId: "", currReturnId: "",
currOrderItem: {
order_items: [],
},
isCancelOrder: false,
showCancelOrderPopup: false,
showPartOrderRefundPopup: false,
form: {
reason: "",
},
rules: {
reason: [
{
required: true,
message: "请输入取消订单原因",
//
trigger: ["change", "blur"],
},
],
},
commodityCheckBoxList: [],
refreshInterval: null, //
showOrderPickingPopup: false,
}; };
}, },
computed: { computed: {
@ -1234,6 +1482,19 @@ export default {
this.keyword = ""; this.keyword = "";
this.getOrderList(); this.getOrderList();
}, },
mounted() {
// 1
this.refreshInterval = setInterval(() => {
this.$forceUpdate(); //
}, 1000);
},
beforeDestroy() {
//
if (this.refreshInterval) {
clearInterval(this.refreshInterval);
}
},
// onReachBottom() { // onReachBottom() {
// clearTimeout(this.time); // clearTimeout(this.time);
// this.loadingDownOnlinData = true; // this.loadingDownOnlinData = true;
@ -1265,7 +1526,6 @@ export default {
this.showOrderLoading = true; this.showOrderLoading = true;
} }
this.params = { this.params = {
storeId: this.dashboardInfo.store_info.store_id, storeId: this.dashboardInfo.store_info.store_id,
keyword: this.keyword, keyword: this.keyword,
@ -1296,7 +1556,10 @@ export default {
} }
if (this.orderInfo.order_count) { if (this.orderInfo.order_count) {
this.tabs[0].num = this.orderInfo.order_count.same_city_order_count; // this.tabs[0].num =
this.orderInfo.order_count.same_city_order.progress_count +
this.orderInfo.order_count.same_city_order.overtime_count +
this.orderInfo.order_count.same_city_order.refund_count; //
// this.tabs[2].num = this.orderInfo.order_count.logistics_order_count; // // this.tabs[2].num = this.orderInfo.order_count.logistics_order_count; //
// this.tabs[3].num = this.orderInfo.order_count.all_order_count; // // this.tabs[3].num = this.orderInfo.order_count.all_order_count; //
@ -1328,6 +1591,21 @@ export default {
this.loadingDownOnlinData = false; this.loadingDownOnlinData = false;
// uni.stopPullDownRefresh(); // uni.stopPullDownRefresh();
}, },
getRemainingTime(arrivalTime) {
if (!arrivalTime) return "时间未设定";
const now = Date.now();
const remainingMs = arrivalTime - now;
if (remainingMs <= 0) return "已超时";
//
const minutes = Math.floor(remainingMs / (1000 * 60));
const seconds = Math.floor((remainingMs % (1000 * 60)) / 1000);
// MM:SS
return `${minutes}:${seconds.toString().padStart(2, "0")}`;
},
handelSalesReturnSearch(item) { handelSalesReturnSearch(item) {
if (item.value == this.salesReturnBtnSearchAcitve) return; if (item.value == this.salesReturnBtnSearchAcitve) return;
this.pageNum = 1; this.pageNum = 1;
@ -1607,7 +1885,93 @@ export default {
this.getSalesReturnOrderList(); this.getSalesReturnOrderList();
} }
} }
this.showReturnOrderPopup = false; },
handerShowCancelOrder(item) {
this.currOrderItem = JSON.parse(JSON.stringify(item));
this.showCancelOrderPopup = true;
this.isCancelOrder = true;
},
handerShowPartOrderRefund(item) {
let _item = JSON.parse(JSON.stringify(item));
_item.order_items.forEach((group) => {
group.order_item_quantity_2 = group.order_item_quantity;
});
this.currOrderItem = _item;
this.showPartOrderRefundPopup = true;
this.isCancelOrder = false;
},
getInitiativeOrderRefund() {
var params = {
order_id: this.currOrderItem.order_id,
reason: this.form.reason,
};
if (!this.isCancelOrder) {
if (this.commodityCheckBoxList.length <= 0) {
this.$refs.uToast.show({
message: "请先选择你要退的商品",
type: "error",
duration: 1000,
zIndex: 12000,
position: "top",
});
return;
}
const matchedItems = this.currOrderItem.order_items.filter((item) =>
this.commodityCheckBoxList.includes(item.item_id)
);
params.order_return_vo = {
order_id: this.currOrderItem.order_id,
return_items: matchedItems.map((item) => {
return {
order_item_id: item.item_id,
return_item_num: item.order_item_quantity,
return_refund_amount:
item.order_item_quantity * item.item_unit_price,
};
}),
};
}
this.$refs.uForm.validate().then(async (valid) => {
let res = await GetInitiativeOrderRefund(params);
if (res && res.status == 200) {
this.showCancelOrderPopup = false;
this.showPartOrderRefundPopup = false;
if (!this.isCancelOrder) {
uni.$u.toast("部分订单退款成功");
} else {
uni.$u.toast("取消订单成功");
}
this.form.reason = "";
this.pageNum = 1;
this.commodityCheckBoxList = [];
this.getOrderList();
}
this.showCancelOrderPopup = false;
this.showPartOrderRefundPopup = false;
});
},
handerShowOrderPickingPopup(item) {
this.currOrderItem = item;
this.showOrderPickingPopup = true;
},
async getOrderPicking(item) {
let params = {
order_id: this.currOrderItem.order_id,
store_id: this.currOrderItem.store_info.store_id,
};
let res = await GetOrderPicking(params);
if (res && res.status == 200) {
this.showOrderPickingPopup = false;
uni.$u.toast("操作成功");
}
this.showOrderPickingPopup = false;
}, },
}, },
}; };
@ -2072,6 +2436,123 @@ export default {
} }
} }
.part-order-refund-popup {
::v-deep.u-popup__content {
border-top-left-radius: 16rpx;
border-top-right-radius: 16rpx;
}
::v-deep.u-fade-enter-to {
z-index: 10079 !important;
}
.part-order-refund-popup-content {
.part-order-refund-popup-title {
padding: 40rpx;
text-align: center;
font-weight: bold;
}
.affirm-popup-form {
padding: 20rpx 60rpx;
}
.radio-list {
.commodity-info-item {
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 28rpx;
.commodity-info-box {
display: flex;
align-items: center;
justify-content: space-between;
.commodity-info-img {
margin-right: 20rpx;
width: 120rpx;
height: 120rpx;
}
}
}
}
}
.popup-btn-list {
display: flex;
margin: 50rpx;
.btn-item {
width: 46%;
height: 64rpx;
border-color: #909193;
&::after {
border: none;
}
}
.btn-item-2 {
background: $base-color;
color: #fff;
border: none;
}
}
}
.affirm-popup {
::v-deep.u-popup__content {
border-radius: 16rpx;
}
::v-deep.u-fade-enter-to {
z-index: 10076 !important;
}
.affirm-popup-content {
width: 600rpx;
.affirm-popup-title {
padding: 60rpx 0 20rpx;
text-align: center;
font-size: 28rpx;
font-weight: bold;
}
.affirm-popup-tips {
padding: 0 32rpx;
font-size: 28rpx;
text-align: center;
}
.u-form {
padding: 0 60rpx;
}
.popup-btn-list {
display: flex;
margin: 50rpx;
.btn-item {
width: 46%;
height: 64rpx;
border-color: #909193;
&::after {
border: none;
}
}
.btn-item-2 {
background: $base-color;
color: #fff;
border: none;
}
}
}
}
.tui-animation { .tui-animation {
display: inline-block; display: inline-block;
transform: rotate(0deg); transform: rotate(0deg);

View File

@ -236,6 +236,9 @@
v-if="currSpecificationList.length > 0" v-if="currSpecificationList.length > 0"
> >
<view class="productList-price-popup-title">价格/库存修改</view> <view class="productList-price-popup-title">价格/库存修改</view>
<view class="productList-price-popup-tips">
注意修改这里的价格外面列表价格只会显示最低价
</view>
<view class="select-commodity-price-list"> <view class="select-commodity-price-list">
<scroll-view <scroll-view
scroll-y scroll-y
@ -464,57 +467,66 @@ export default {
// 1. // 1.
let productSpec = JSON.parse(JSON.stringify(item.product_spec)); let productSpec = JSON.parse(JSON.stringify(item.product_spec));
if (productSpec.length > 0) {
productSpec = JSON.parse(productSpec); productSpec = JSON.parse(productSpec);
if (!Array.isArray(productSpec)) { if (!Array.isArray(productSpec)) {
productSpec = [productSpec]; // productSpec = [productSpec]; //
}
const specItemMap = [];
productSpec.forEach((specGroup) => {
if (specGroup.item && Array.isArray(specGroup.item)) {
specGroup.item.forEach((item) => {
specItemMap.push(item.id);
});
} }
}); const specItemMap = [];
this.currSpecificationList = this.selectCommodisItems productSpec.forEach((specGroup) => {
.map((item) => { if (specGroup.item && Array.isArray(specGroup.item)) {
try { specGroup.item.forEach((item) => {
// specItemMap.push(item.id);
const itemSpec = });
typeof item.item_spec === "string" }
? JSON.parse(item.item_spec) });
: item.item_spec; this.currSpecificationList = this.selectCommodisItems
.map((item) => {
try {
//
const itemSpec =
typeof item.item_spec === "string"
? JSON.parse(item.item_spec)
: item.item_spec;
if (Array.isArray(itemSpec) && itemSpec.length > 0) { if (Array.isArray(itemSpec) && itemSpec.length > 0) {
const firstSpec = itemSpec[0]; const firstSpec = itemSpec[0];
// //
if (firstSpec.item && firstSpec.item.id) { if (firstSpec.item && firstSpec.item.id) {
const matchedSpec = specItemMap.find( const matchedSpec = specItemMap.find(
(id) => id == firstSpec.item.id (id) => id == firstSpec.item.id
); );
if (matchedSpec) { if (matchedSpec) {
return { return {
...item, ...item,
spec_item_id: matchedSpec, spec_item_id: matchedSpec,
item_is_default: Boolean(item.item_is_default), item_is_default: Boolean(item.item_is_default),
// //
}; };
}
} }
} }
} catch (e) {
console.error(`处理商品 ${item.item_id} 时出错:`, e);
} }
} catch (e) { })
console.error(`处理商品 ${item.item_id} 时出错:`, e); .filter((item) => item != undefined);
} } else {
}) this.currSpecificationList = [
.filter((item) => item != undefined); {
console.log(this.currSpecificationList); ...item,
item_quantity: item.itemQuantity,
item_quantity_2: "",
item_unit_price: item.product_unit_price,
item_quantity_2: "",
},
];
}
this.showBottomPopup = true; this.showBottomPopup = true;
console.log(this.currSpecificationList);
} }
}, },
async getProductCategoryTree() { async getProductCategoryTree() {
@ -722,8 +734,15 @@ export default {
url: "../../news/search/search", url: "../../news/search/search",
}); });
}, },
async updateCommodityPriceAndQuantity(item) { async updateCommodityPriceAndQuantity() {
let params = {}; let params = this.currSpecificationList.map((item) => {
return {
item_id: item.item_id,
product_id: item.product_id,
item_quantity: item.item_quantity_2 || item.item_quantity,
item_unit_price: item.item_quantity_2 || item.item_unit_price,
};
});
let res = await UpdateCommodityPriceAndQuantity(params); let res = await UpdateCommodityPriceAndQuantity(params);
if (res && res.status) { if (res && res.status) {
@ -731,6 +750,8 @@ export default {
message: "修改成功", message: "修改成功",
type: "succeed", type: "succeed",
duration: 1000, duration: 1000,
zIndex: 12000,
position: "top",
}); });
// //
@ -1218,6 +1239,13 @@ page {
border-top-right-radius: 16rpx; border-top-right-radius: 16rpx;
} }
.productList-price-popup-tips {
padding: 20rpx;
text-align: center;
background: #fff;
color: red;
}
.select-commodity-price-list { .select-commodity-price-list {
background: #f8f8f8; background: #f8f8f8;
} }

View File

@ -2,6 +2,7 @@ import axios from "axios";
import config from "../config/config"; import config from "../config/config";
import axiosAdapterUniapp from "axios-adapter-uniapp"; import axiosAdapterUniapp from "axios-adapter-uniapp";
import $store from "../store/index"; import $store from "../store/index";
import qs from "qs";
const service = axios.create({ const service = axios.create({
baseURL: config.baseApi, // url = base url + request url baseURL: config.baseApi, // url = base url + request url
@ -19,6 +20,13 @@ service.interceptors.request.use(
if (uni.getStorageSync("ukey")) { if (uni.getStorageSync("ukey")) {
config.headers["Authorization"] = "Bearer " + uni.getStorageSync("ukey"); config.headers["Authorization"] = "Bearer " + uni.getStorageSync("ukey");
} }
if (
config.data &&
config.headers["Content-Type"] ===
"application/x-www-form-urlencoded;charset=UTF-8"
) {
config.data = qs.stringify(config.data);
}
return config; return config;
}, },
@ -34,7 +42,7 @@ service.interceptors.response.use(
(response) => { (response) => {
const res = response.data; const res = response.data;
if (res.status == 250) { if (res && res.status == 250) {
uni.$u.toast(`提示:${res.msg}`); uni.$u.toast(`提示:${res.msg}`);
// uni.showToast({ // uni.showToast({
@ -44,7 +52,9 @@ service.interceptors.response.use(
// }); // });
} }
if (res.code == 30) { console.log(res);
if (res && res.code == 30) {
uni.$u.toast(`token已经过期需要重新登录`); uni.$u.toast(`token已经过期需要重新登录`);
// uni.showToast({ // uni.showToast({