update 部分退款 取消订单 拣货完成
This commit is contained in:
parent
adbe417bd2
commit
3ac04df21a
@ -4,20 +4,24 @@
|
||||
"version" : "0.0",
|
||||
"configurations" : [
|
||||
{
|
||||
"app-plus" : {
|
||||
"launchtype" : "remote"
|
||||
},
|
||||
"default" : {
|
||||
"launchtype" : "local"
|
||||
},
|
||||
"h5" : {
|
||||
"launchtype" : "local"
|
||||
},
|
||||
"mp-weixin" : {
|
||||
"launchtype" : "local"
|
||||
},
|
||||
"provider" : "aliyun",
|
||||
"type" : "uniCloud"
|
||||
"app-plus" :
|
||||
{
|
||||
"launchtype" : "remote"
|
||||
},
|
||||
"default" :
|
||||
{
|
||||
"launchtype" : "local"
|
||||
},
|
||||
"h5" :
|
||||
{
|
||||
"launchtype" : "local"
|
||||
},
|
||||
"mp-weixin" :
|
||||
{
|
||||
"launchtype" : "local"
|
||||
},
|
||||
"provider" : "aliyun",
|
||||
"type" : "uniCloud"
|
||||
},
|
||||
{
|
||||
"playground" : "custom",
|
||||
|
||||
@ -32,7 +32,7 @@ export default {
|
||||
},
|
||||
onShow: function () {
|
||||
this.globalData.isAppActive = true;
|
||||
|
||||
webSocketManager.closeAllGlobalConnections();
|
||||
setTimeout(() => {
|
||||
if (this.userInfo && Object.keys(this.userInfo).length > 0) {
|
||||
this.connectSocket(this.userInfo);
|
||||
|
||||
@ -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,
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取订单列表 模拟数据
|
||||
**/
|
||||
|
||||
@ -12,15 +12,15 @@ import config from "../../config/config";
|
||||
* @see https://mall.gpxscs.cn/api/admin/shop/shop-product-base/saveProduct
|
||||
*/
|
||||
|
||||
export function UpdateCommodityInfo(params) {
|
||||
export function UpdateCommodityInfo(data) {
|
||||
return http({
|
||||
url: "/shop/shop-product-base/saveProduct",
|
||||
method: "post",
|
||||
baseURL: config.adminApi,
|
||||
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",
|
||||
method: "post",
|
||||
baseURL: config.adminApi,
|
||||
headers: {
|
||||
"content-type": "application/x-www-form-urlencoded;charset=UTF-8",
|
||||
},
|
||||
params,
|
||||
data: params,
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
537
java-mall-app-shop-admin/components/tui-select/tui-select.vue
Normal file
537
java-mall-app-shop-admin/components/tui-select/tui-select.vue
Normal 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>
|
||||
@ -23,7 +23,8 @@
|
||||
"Camera" : {},
|
||||
"Record" : {},
|
||||
"VideoPlayer" : {},
|
||||
"UIWebview" : {}
|
||||
"UIWebview" : {},
|
||||
"Push" : {}
|
||||
},
|
||||
/* 应用发布信息 */
|
||||
"distribute" : {
|
||||
@ -62,7 +63,15 @@
|
||||
},
|
||||
/* SDK配置 */
|
||||
"sdkConfigs" : {
|
||||
"maps" : {}
|
||||
"maps" : {},
|
||||
"push" : {
|
||||
"unipush" : {
|
||||
"version" : "2",
|
||||
"offline" : false,
|
||||
"appid": "rQxaGAKl7t83KlTubAaKC3",
|
||||
"appkey": "QSElTn6ttq5nmrIZtFhCT"
|
||||
}
|
||||
}
|
||||
},
|
||||
"icons" : {
|
||||
"android" : {
|
||||
|
||||
404
java-mall-app-shop-admin/package-lock.json
generated
404
java-mall-app-shop-admin/package-lock.json
generated
@ -7,7 +7,8 @@
|
||||
"dependencies": {
|
||||
"axios": "^0.27.2",
|
||||
"axios-adapter-uniapp": "^0.1.4",
|
||||
"lodash": "^4.17.21"
|
||||
"lodash": "^4.17.21",
|
||||
"qs": "^6.14.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"sass": "^1.80.6",
|
||||
@ -345,6 +346,33 @@
|
||||
"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": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://mirrors.tencent.com/npm/chokidar/-/chokidar-4.0.1.tgz",
|
||||
@ -392,6 +420,46 @@
|
||||
"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": {
|
||||
"version": "7.1.1",
|
||||
"resolved": "https://mirrors.tencent.com/npm/fill-range/-/fill-range-7.1.1.tgz",
|
||||
@ -437,6 +505,82 @@
|
||||
"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": {
|
||||
"version": "4.3.7",
|
||||
"resolved": "https://mirrors.tencent.com/npm/immutable/-/immutable-4.3.7.tgz",
|
||||
@ -482,6 +626,14 @@
|
||||
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
|
||||
"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": {
|
||||
"version": "4.0.8",
|
||||
"resolved": "https://mirrors.tencent.com/npm/micromatch/-/micromatch-4.0.8.tgz",
|
||||
@ -528,6 +680,17 @@
|
||||
"dev": 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": {
|
||||
"version": "2.3.1",
|
||||
"resolved": "https://mirrors.tencent.com/npm/picomatch/-/picomatch-2.3.1.tgz",
|
||||
@ -541,6 +704,20 @@
|
||||
"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": {
|
||||
"version": "4.0.2",
|
||||
"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": {
|
||||
"version": "1.2.1",
|
||||
"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"
|
||||
}
|
||||
},
|
||||
"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": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://mirrors.tencent.com/npm/chokidar/-/chokidar-4.0.1.tgz",
|
||||
@ -816,6 +1079,34 @@
|
||||
"dev": 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": {
|
||||
"version": "7.1.1",
|
||||
"resolved": "https://mirrors.tencent.com/npm/fill-range/-/fill-range-7.1.1.tgz",
|
||||
@ -841,6 +1132,55 @@
|
||||
"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": {
|
||||
"version": "4.3.7",
|
||||
"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",
|
||||
"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": {
|
||||
"version": "4.0.8",
|
||||
"resolved": "https://mirrors.tencent.com/npm/micromatch/-/micromatch-4.0.8.tgz",
|
||||
@ -913,6 +1258,11 @@
|
||||
"dev": 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": {
|
||||
"version": "2.3.1",
|
||||
"resolved": "https://mirrors.tencent.com/npm/picomatch/-/picomatch-2.3.1.tgz",
|
||||
@ -920,6 +1270,14 @@
|
||||
"dev": 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": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://mirrors.tencent.com/npm/readdirp/-/readdirp-4.0.2.tgz",
|
||||
@ -947,6 +1305,50 @@
|
||||
"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": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://mirrors.tencent.com/npm/source-map-js/-/source-map-js-1.2.1.tgz",
|
||||
|
||||
@ -6,6 +6,7 @@
|
||||
"dependencies": {
|
||||
"axios": "^0.27.2",
|
||||
"axios-adapter-uniapp": "^0.1.4",
|
||||
"lodash": "^4.17.21"
|
||||
"lodash": "^4.17.21",
|
||||
"qs": "^6.14.0"
|
||||
}
|
||||
}
|
||||
|
||||
@ -257,7 +257,13 @@
|
||||
<view class="time" v-if="auditInfo.approval_status != 4">
|
||||
申请时间:{{ auditInfo.created_at }}
|
||||
</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
|
||||
:label="item.label"
|
||||
:prop="item.key"
|
||||
@ -1374,6 +1380,10 @@ export default {
|
||||
});
|
||||
},
|
||||
loginOut() {
|
||||
// uni.switchTab({
|
||||
// url: "/pages/order/order",
|
||||
// });
|
||||
|
||||
this.$store.dispatch("user/LoginOut");
|
||||
},
|
||||
},
|
||||
|
||||
@ -52,11 +52,12 @@
|
||||
shopStatus == 1 ? '#D8F1EC' : shopStatus == 2 ? '#ffecf2' : '#eee',
|
||||
}"
|
||||
>
|
||||
<u-cell-group :border="false">
|
||||
<u-cell-group :border="false" handleShowTime="">
|
||||
<u-cell
|
||||
@click="handleShowTime"
|
||||
@click=""
|
||||
iconStyle="marginRight:6px; color: #279B8B;"
|
||||
:border="false"
|
||||
url="/pages/my/storeBusinessStatus/businessStatus"
|
||||
isLink
|
||||
icon="hourglass-half-fill"
|
||||
title="营业中"
|
||||
@ -66,7 +67,7 @@
|
||||
iconStyle="marginRight:6px; color: #fe411b"
|
||||
:border="false"
|
||||
isLink
|
||||
url="/pages/my/shopQRcode/shopQRcode"
|
||||
url="/pages/my/storeBusinessStatus/businessStatus"
|
||||
icon="hourglass-half-fill"
|
||||
title="已停业"
|
||||
v-if="shopStatus == 2"
|
||||
@ -75,7 +76,7 @@
|
||||
iconStyle="marginRight:6px; color: #666"
|
||||
:border="false"
|
||||
isLink
|
||||
url="/pages/my/shopQRcode/shopQRcode"
|
||||
url="/pages/my/storeBusinessStatus/businessStatus"
|
||||
icon="hourglass-half-fill"
|
||||
title="已打烊"
|
||||
v-if="shopStatus == 3"
|
||||
@ -277,11 +278,32 @@ export default {
|
||||
url: "/pages/my/shopInfo",
|
||||
});
|
||||
},
|
||||
|
||||
toServices() {
|
||||
// uni.navigateTo({
|
||||
// url: "/pages/my/shopInfo",
|
||||
// });
|
||||
let item = {
|
||||
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() {
|
||||
this.$store.dispatch("user/LoginOut");
|
||||
|
||||
@ -29,7 +29,15 @@
|
||||
dashboardInfo.store_info.store_biz_state == 1 ? "营业中" : "停业中"
|
||||
}}
|
||||
</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 class="business-box">
|
||||
<u-cell-group :border="false" class="business-time-content">
|
||||
|
||||
@ -122,7 +122,7 @@
|
||||
<view class="order-num-block">
|
||||
<view class="order-serial-num">
|
||||
#
|
||||
<text
|
||||
<block
|
||||
style="
|
||||
font-size: 46rpx;
|
||||
padding-left: 4rpx;
|
||||
@ -130,7 +130,7 @@
|
||||
"
|
||||
>
|
||||
{{ item.orderNum }}
|
||||
</text>
|
||||
</block>
|
||||
</view>
|
||||
<view class="delivery-status">
|
||||
{{ sfFormatStatus(item.order_state_id) }}
|
||||
@ -163,9 +163,16 @@
|
||||
<view class="picking-info">
|
||||
<view class="picking-status">
|
||||
<view class="picking-name">拣货中</view>
|
||||
<view class="picking-time">已用时 03:54</view>
|
||||
<view class="picking-time">
|
||||
{{ getRemainingTime(item.arrival_time) }}
|
||||
</view>
|
||||
</view>
|
||||
<u-button class="picking-btn">拣货完成</u-button>
|
||||
<u-button
|
||||
class="picking-btn"
|
||||
@click="handerShowOrderPickingPopup(item)"
|
||||
>
|
||||
拣货完成
|
||||
</u-button>
|
||||
</view>
|
||||
<view class="delivery-status-info">
|
||||
<view class="delivery-status">
|
||||
@ -174,17 +181,17 @@
|
||||
<view class="delivery-num">{{ item.order_pickup_num_str }}</view>
|
||||
</view>
|
||||
<view class="order-remark">
|
||||
<text style="color: #fff; font-weight: bold">备注:</text>
|
||||
<text style="color: #fff">
|
||||
<block style="color: #fff; font-weight: bold">备注:</block>
|
||||
<block style="color: #fff">
|
||||
{{ item.buyer_info.order_message }}
|
||||
</text>
|
||||
</block>
|
||||
</view>
|
||||
<view class="commodity-info-block">
|
||||
<view class="commodity-num">
|
||||
<text style="font-size: 36rpx">
|
||||
<block style="font-size: 36rpx">
|
||||
{{ item.order_items.length || 0 }}
|
||||
</text>
|
||||
<text>件商品</text>
|
||||
</block>
|
||||
<block>件商品</block>
|
||||
</view>
|
||||
<view
|
||||
class="commodity-info"
|
||||
@ -199,22 +206,24 @@
|
||||
<view class="commodity-name">{{ group.item_name || 0 }}</view>
|
||||
<view class="commodity-barcode">
|
||||
条码
|
||||
<text style="padding-left: 8rpx">
|
||||
<block style="padding-left: 8rpx">
|
||||
{{ group.item_barcode || 0 }}
|
||||
</text>
|
||||
</block>
|
||||
</view>
|
||||
<view class="commodity-specification">
|
||||
规格
|
||||
<text style="padding-left: 8rpx">
|
||||
<block style="padding-left: 8rpx">
|
||||
{{ group.specification || 0 }}
|
||||
</text>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
<view class="commodity-num">
|
||||
X
|
||||
<text style="padding-left: 8rpx">
|
||||
{{ group.order_item_quantity || 0 }}
|
||||
</text>
|
||||
<view class="">
|
||||
X
|
||||
<text style="padding-left: 8rpx">
|
||||
{{ group.order_item_quantity || 0 }}
|
||||
</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="commodity-price">
|
||||
¥{{ group.order_item_amount || 0 }}
|
||||
@ -238,14 +247,14 @@
|
||||
style="color: #333333; font-weight: 700"
|
||||
>
|
||||
商家活动支付
|
||||
<text>
|
||||
<block>
|
||||
<u-icon
|
||||
style="display: inline-block; margin-left: 8rpx"
|
||||
name="question-circle"
|
||||
size="12"
|
||||
color="aaaaaa"
|
||||
></u-icon>
|
||||
</text>
|
||||
</block>
|
||||
</view>
|
||||
<view class="cost-info-num">
|
||||
¥{{ item.order_discount_amount }}
|
||||
@ -257,14 +266,14 @@
|
||||
style="color: #333333; font-weight: 700"
|
||||
>
|
||||
平台服务费
|
||||
<text>
|
||||
<block>
|
||||
<u-icon
|
||||
style="display: inline-block; margin-left: 8rpx"
|
||||
name="question-circle"
|
||||
size="12"
|
||||
color="#aaaaaa"
|
||||
></u-icon>
|
||||
</text>
|
||||
</block>
|
||||
</view>
|
||||
<view class="cost-info-num">¥{{ item.platform_fee }}</view>
|
||||
</view>
|
||||
@ -274,40 +283,47 @@
|
||||
style="color: #333333; font-weight: 700"
|
||||
>
|
||||
配送费用
|
||||
<text>
|
||||
<block>
|
||||
<u-icon
|
||||
style="display: inline-block; margin-left: 8rpx"
|
||||
name="question-circle"
|
||||
size="12"
|
||||
color="#aaaaaa"
|
||||
></u-icon>
|
||||
</text>
|
||||
</block>
|
||||
</view>
|
||||
<view class="cost-info-num">
|
||||
¥{{ item.order_shipping_fee }}
|
||||
</view>
|
||||
</view>
|
||||
<view class="cost-info-income">
|
||||
<!-- <view class="cost-info-income">
|
||||
<view class="predict-income">
|
||||
预计收入
|
||||
<text
|
||||
<block
|
||||
style="font-size: 40rpx; color: #333333; font-weight: 700"
|
||||
>
|
||||
¥24.95
|
||||
</text>
|
||||
</block>
|
||||
</view>
|
||||
<view class="customer-actual-payment">
|
||||
顾客实际支付 ¥30.50
|
||||
</view>
|
||||
</view>
|
||||
</view> -->
|
||||
</view>
|
||||
</view>
|
||||
<view class="order-btn-block">
|
||||
<!-- <view class="btn-list">
|
||||
<u-button class="btn-item">取消订单</u-button>
|
||||
<u-button class="btn-item">退差价</u-button>
|
||||
<u-button class="btn-item">部分退款</u-button>
|
||||
</view> -->
|
||||
<view class="btn-list">
|
||||
<u-button class="btn-item" @click="handerShowCancelOrder(item)">
|
||||
取消订单
|
||||
</u-button>
|
||||
<!-- <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)">
|
||||
{{ item.showRefundOrderInfo ? "收起订单" : "展开订单" }}
|
||||
<u-icon
|
||||
@ -383,7 +399,7 @@
|
||||
font-weight: bold;
|
||||
"
|
||||
>
|
||||
{{ item.orderNum }}
|
||||
{{ item.order_pickup_num }}
|
||||
</text>
|
||||
</view>
|
||||
<view class="delivery-status" style="color: red">
|
||||
@ -950,13 +966,219 @@
|
||||
:hairline="true"
|
||||
:plain="true"
|
||||
shape="circle"
|
||||
@click="handerRetrunOrder()"
|
||||
@click="getInitiativeOrderRefund()"
|
||||
>
|
||||
确认
|
||||
</u-button>
|
||||
</view>
|
||||
</view>
|
||||
</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>
|
||||
</template>
|
||||
|
||||
@ -969,6 +1191,8 @@ import {
|
||||
GetSalesReturnOrderDetails,
|
||||
GetSalesReturnOrderNoPass,
|
||||
GetSalesReturnOrderPass,
|
||||
GetInitiativeOrderRefund,
|
||||
GetOrderPicking,
|
||||
} from "../../api/order";
|
||||
import { mapState } from "vuex";
|
||||
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 tuiRadio from "@/components/tui-radio/tui-radio.vue";
|
||||
import tuiRadioGroup from "@/components/tui-radio-group/tui-radio-group.vue";
|
||||
import tuiSelect from "@/components/tui-select/tui-select.vue";
|
||||
export default {
|
||||
components: {
|
||||
tuiTabs,
|
||||
@ -989,6 +1214,7 @@ export default {
|
||||
tuiGallery,
|
||||
tuiRadio,
|
||||
tuiRadioGroup,
|
||||
tuiSelect,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
@ -1199,6 +1425,28 @@ export default {
|
||||
],
|
||||
retrunOrderMsg: "",
|
||||
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: {
|
||||
@ -1234,6 +1482,19 @@ export default {
|
||||
this.keyword = "";
|
||||
this.getOrderList();
|
||||
},
|
||||
mounted() {
|
||||
// 每1秒刷新一次数据(触发界面更新)
|
||||
this.refreshInterval = setInterval(() => {
|
||||
this.$forceUpdate(); // 强制更新视图
|
||||
}, 1000);
|
||||
},
|
||||
|
||||
beforeDestroy() {
|
||||
// 组件销毁时清除定时器
|
||||
if (this.refreshInterval) {
|
||||
clearInterval(this.refreshInterval);
|
||||
}
|
||||
},
|
||||
// onReachBottom() {
|
||||
// clearTimeout(this.time);
|
||||
// this.loadingDownOnlinData = true;
|
||||
@ -1265,7 +1526,6 @@ export default {
|
||||
this.showOrderLoading = true;
|
||||
}
|
||||
|
||||
|
||||
this.params = {
|
||||
storeId: this.dashboardInfo.store_info.store_id,
|
||||
keyword: this.keyword,
|
||||
@ -1296,7 +1556,10 @@ export default {
|
||||
}
|
||||
|
||||
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[3].num = this.orderInfo.order_count.all_order_count; //所有订单总数
|
||||
|
||||
@ -1328,6 +1591,21 @@ export default {
|
||||
this.loadingDownOnlinData = false;
|
||||
// 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) {
|
||||
if (item.value == this.salesReturnBtnSearchAcitve) return;
|
||||
this.pageNum = 1;
|
||||
@ -1607,7 +1885,93 @@ export default {
|
||||
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 {
|
||||
display: inline-block;
|
||||
transform: rotate(0deg);
|
||||
|
||||
@ -236,6 +236,9 @@
|
||||
v-if="currSpecificationList.length > 0"
|
||||
>
|
||||
<view class="productList-price-popup-title">价格/库存修改</view>
|
||||
<view class="productList-price-popup-tips">
|
||||
注意:修改这里的价格,外面列表价格只会显示最低价
|
||||
</view>
|
||||
<view class="select-commodity-price-list">
|
||||
<scroll-view
|
||||
scroll-y
|
||||
@ -464,57 +467,66 @@ export default {
|
||||
|
||||
// 1. 解析产品规格模板
|
||||
let productSpec = JSON.parse(JSON.stringify(item.product_spec));
|
||||
|
||||
productSpec = JSON.parse(productSpec);
|
||||
if (!Array.isArray(productSpec)) {
|
||||
productSpec = [productSpec]; // 确保是数组格式
|
||||
}
|
||||
|
||||
const specItemMap = [];
|
||||
|
||||
productSpec.forEach((specGroup) => {
|
||||
if (specGroup.item && Array.isArray(specGroup.item)) {
|
||||
specGroup.item.forEach((item) => {
|
||||
specItemMap.push(item.id);
|
||||
});
|
||||
if (productSpec.length > 0) {
|
||||
productSpec = JSON.parse(productSpec);
|
||||
if (!Array.isArray(productSpec)) {
|
||||
productSpec = [productSpec]; // 确保是数组格式
|
||||
}
|
||||
});
|
||||
const specItemMap = [];
|
||||
|
||||
this.currSpecificationList = this.selectCommodisItems
|
||||
.map((item) => {
|
||||
try {
|
||||
// 解析规格数据(兼容字符串和对象)
|
||||
const itemSpec =
|
||||
typeof item.item_spec === "string"
|
||||
? JSON.parse(item.item_spec)
|
||||
: item.item_spec;
|
||||
productSpec.forEach((specGroup) => {
|
||||
if (specGroup.item && Array.isArray(specGroup.item)) {
|
||||
specGroup.item.forEach((item) => {
|
||||
specItemMap.push(item.id);
|
||||
});
|
||||
}
|
||||
});
|
||||
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) {
|
||||
const firstSpec = itemSpec[0];
|
||||
if (Array.isArray(itemSpec) && itemSpec.length > 0) {
|
||||
const firstSpec = itemSpec[0];
|
||||
|
||||
// 匹配规格逻辑
|
||||
if (firstSpec.item && firstSpec.item.id) {
|
||||
const matchedSpec = specItemMap.find(
|
||||
(id) => id == firstSpec.item.id
|
||||
);
|
||||
// 匹配规格逻辑
|
||||
if (firstSpec.item && firstSpec.item.id) {
|
||||
const matchedSpec = specItemMap.find(
|
||||
(id) => id == firstSpec.item.id
|
||||
);
|
||||
|
||||
if (matchedSpec) {
|
||||
return {
|
||||
...item,
|
||||
spec_item_id: matchedSpec,
|
||||
item_is_default: Boolean(item.item_is_default),
|
||||
// 保留原始数据(调试用)
|
||||
};
|
||||
if (matchedSpec) {
|
||||
return {
|
||||
...item,
|
||||
spec_item_id: matchedSpec,
|
||||
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);
|
||||
console.log(this.currSpecificationList);
|
||||
})
|
||||
.filter((item) => item != undefined);
|
||||
} else {
|
||||
this.currSpecificationList = [
|
||||
{
|
||||
...item,
|
||||
item_quantity: item.itemQuantity,
|
||||
item_quantity_2: "",
|
||||
item_unit_price: item.product_unit_price,
|
||||
item_quantity_2: "",
|
||||
},
|
||||
];
|
||||
}
|
||||
this.showBottomPopup = true;
|
||||
console.log(this.currSpecificationList);
|
||||
}
|
||||
},
|
||||
async getProductCategoryTree() {
|
||||
@ -722,8 +734,15 @@ export default {
|
||||
url: "../../news/search/search",
|
||||
});
|
||||
},
|
||||
async updateCommodityPriceAndQuantity(item) {
|
||||
let params = {};
|
||||
async updateCommodityPriceAndQuantity() {
|
||||
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);
|
||||
if (res && res.status) {
|
||||
@ -731,6 +750,8 @@ export default {
|
||||
message: "修改成功",
|
||||
type: "succeed",
|
||||
duration: 1000,
|
||||
zIndex: 12000,
|
||||
position: "top",
|
||||
});
|
||||
|
||||
// 静默更新数组
|
||||
@ -1218,6 +1239,13 @@ page {
|
||||
border-top-right-radius: 16rpx;
|
||||
}
|
||||
|
||||
.productList-price-popup-tips {
|
||||
padding: 20rpx;
|
||||
text-align: center;
|
||||
background: #fff;
|
||||
color: red;
|
||||
}
|
||||
|
||||
.select-commodity-price-list {
|
||||
background: #f8f8f8;
|
||||
}
|
||||
|
||||
BIN
java-mall-app-shop-admin/static/mp3/您有新的小发同城订单.MP3
Normal file
BIN
java-mall-app-shop-admin/static/mp3/您有新的小发同城订单.MP3
Normal file
Binary file not shown.
BIN
java-mall-app-shop-admin/static/mp3/您有新的消息,请尽快回复.MP3
Normal file
BIN
java-mall-app-shop-admin/static/mp3/您有新的消息,请尽快回复.MP3
Normal file
Binary file not shown.
BIN
java-mall-app-shop-admin/static/mp3/您有新的预约订单.MP3
Normal file
BIN
java-mall-app-shop-admin/static/mp3/您有新的预约订单.MP3
Normal file
Binary file not shown.
BIN
java-mall-app-shop-admin/static/mp3/您有订单快超时了.MP3
Normal file
BIN
java-mall-app-shop-admin/static/mp3/您有订单快超时了.MP3
Normal file
Binary file not shown.
BIN
java-mall-app-shop-admin/static/mp3/您有退货订单,请注意查看.MP3
Normal file
BIN
java-mall-app-shop-admin/static/mp3/您有退货订单,请注意查看.MP3
Normal file
Binary file not shown.
BIN
java-mall-app-shop-admin/static/mp3/您有部分退款订单,请注意查看.MP3
Normal file
BIN
java-mall-app-shop-admin/static/mp3/您有部分退款订单,请注意查看.MP3
Normal file
Binary file not shown.
BIN
java-mall-app-shop-admin/static/mp3/您的预约订单快到时间了.MP3
Normal file
BIN
java-mall-app-shop-admin/static/mp3/您的预约订单快到时间了.MP3
Normal file
Binary file not shown.
@ -2,6 +2,7 @@ import axios from "axios";
|
||||
import config from "../config/config";
|
||||
import axiosAdapterUniapp from "axios-adapter-uniapp";
|
||||
import $store from "../store/index";
|
||||
import qs from "qs";
|
||||
|
||||
const service = axios.create({
|
||||
baseURL: config.baseApi, // url = base url + request url
|
||||
@ -19,6 +20,13 @@ service.interceptors.request.use(
|
||||
if (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;
|
||||
},
|
||||
@ -34,7 +42,7 @@ service.interceptors.response.use(
|
||||
(response) => {
|
||||
const res = response.data;
|
||||
|
||||
if (res.status == 250) {
|
||||
if (res && res.status == 250) {
|
||||
uni.$u.toast(`提示:${res.msg}`);
|
||||
|
||||
// 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.showToast({
|
||||
|
||||
Loading…
Reference in New Issue
Block a user