Compare commits
10 Commits
d701c62d11
...
68b687a455
Author | SHA1 | Date |
---|---|---|
|
68b687a455 | |
|
02acceb3bc | |
|
47fdf715f3 | |
|
d14e2c9eab | |
|
aff27335bf | |
|
8a868b0272 | |
|
0bcc07119e | |
|
a75b47c218 | |
|
3f94799b5f | |
|
efc090f4c8 |
.env.development
src
api
components/referrerList
filters
router/modules
views
accounts/extract
marketing
order
product/productExamine
promoter
system/exportFile
user/list
|
@ -5,7 +5,7 @@ ENV = 'development'
|
||||||
# base api
|
# base api
|
||||||
# www.shop.xyz
|
# www.shop.xyz
|
||||||
# VUE_APP_BASE_API = 'http://zkx.tropjoin.com'
|
# VUE_APP_BASE_API = 'http://zkx.tropjoin.com'
|
||||||
VUE_APP_BASE_API = 'http://testg.tropjoin.com'
|
VUE_APP_BASE_API = 'http://test.tropjoin.com'
|
||||||
# VUE_APP_BASE_API = 'https://api.tropjoin.com'
|
# VUE_APP_BASE_API = 'https://api.tropjoin.com'
|
||||||
|
|
||||||
# socket 连接地址
|
# socket 连接地址
|
||||||
|
|
|
@ -415,6 +415,12 @@ export function brokerageLogExport(data) {
|
||||||
export function bonusExport(data) {
|
export function bonusExport(data) {
|
||||||
return request.get(`user/brokerage/bonus/excel`, data)
|
return request.get(`user/brokerage/bonus/excel`, data)
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* @description 提现记录 -- 导出
|
||||||
|
*/
|
||||||
|
export function backListExport(data) {
|
||||||
|
return request.get(`user/extract/export/back_list`, data)
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* @description 签到配置 -- 列表
|
* @description 签到配置 -- 列表
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -8,6 +8,15 @@
|
||||||
<el-form-item label="手机号:">
|
<el-form-item label="手机号:">
|
||||||
<el-input v-model="tableFrom.phone" @keyup.enter.native="getList(1)" placeholder="请输入用户名称" clearable class="selWidth" />
|
<el-input v-model="tableFrom.phone" @keyup.enter.native="getList(1)" placeholder="请输入用户名称" clearable class="selWidth" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="ID号:">
|
||||||
|
<el-input v-model="tableFrom.number" @keyup.enter.native="getList(1)" placeholder="请输入ID号" clearable class="selWidth" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="身份证:">
|
||||||
|
<el-input v-model="tableFrom.card_id" @keyup.enter.native="getList(1)" placeholder="请输入身份证" clearable class="selWidth" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="真实姓名:">
|
||||||
|
<el-input v-model="tableFrom.real_name" @keyup.enter.native="getList(1)" placeholder="请输入真实姓名" clearable class="selWidth" />
|
||||||
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" size="small" @click="getList(1)">查询</el-button>
|
<el-button type="primary" size="small" @click="getList(1)">查询</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
@ -26,6 +35,9 @@
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="uid" label="ID" min-width="50" />
|
<el-table-column prop="uid" label="ID" min-width="50" />
|
||||||
|
<el-table-column prop="number" label="ID号" min-width="50" />
|
||||||
|
<el-table-column prop="card_id" label="身份证号" min-width="50" />
|
||||||
|
<el-table-column prop="real_name" label="真实姓名" min-width="50" />
|
||||||
<el-table-column label="昵称" min-width="90">
|
<el-table-column label="昵称" min-width="90">
|
||||||
<template slot-scope="{row}">
|
<template slot-scope="{row}">
|
||||||
<div class="acea-row">
|
<div class="acea-row">
|
||||||
|
|
|
@ -104,7 +104,8 @@ export function extractTypeFilter(status) {
|
||||||
0: '银行卡',
|
0: '银行卡',
|
||||||
1: '微信',
|
1: '微信',
|
||||||
2: '支付宝',
|
2: '支付宝',
|
||||||
3: '微信零钱'
|
3: '微信零钱',
|
||||||
|
5: '铸源星'
|
||||||
}
|
}
|
||||||
return statusMap[status]
|
return statusMap[status]
|
||||||
}
|
}
|
||||||
|
|
|
@ -199,6 +199,36 @@ const marketingRouter =
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: 'energy',
|
||||||
|
name: 'energy',
|
||||||
|
meta: {
|
||||||
|
title: '能量管理',
|
||||||
|
noCache: true
|
||||||
|
},
|
||||||
|
redirect: 'noRedirect',
|
||||||
|
component: () => import('@/views/marketing/energy/index'),
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: 'energyConfig',
|
||||||
|
name: 'energyConfig',
|
||||||
|
meta: {
|
||||||
|
title: '能量配置',
|
||||||
|
noCache: true
|
||||||
|
},
|
||||||
|
component: () => import('@/views/marketing/energy/energyConfig/index')
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'list',
|
||||||
|
name: 'energyList',
|
||||||
|
meta: {
|
||||||
|
title: '能量列表',
|
||||||
|
noCache: true
|
||||||
|
},
|
||||||
|
component: () => import('@/views/marketing/energy/energyGoods/index.vue')
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
path: 'allDiscount',
|
path: 'allDiscount',
|
||||||
name: 'allDiscount',
|
name: 'allDiscount',
|
||||||
|
|
|
@ -30,13 +30,12 @@
|
||||||
class="selWidth"
|
class="selWidth"
|
||||||
@change="getList(1)"
|
@change="getList(1)"
|
||||||
>
|
>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="(item, key) in status_name"
|
v-for="(item, key) in status_name"
|
||||||
:label="item"
|
:label="item"
|
||||||
:value="key"
|
:value="key"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="方式:" prop="extract_type">
|
<el-form-item label="方式:" prop="extract_type">
|
||||||
<el-select
|
<el-select
|
||||||
|
@ -47,11 +46,12 @@
|
||||||
class="selWidth"
|
class="selWidth"
|
||||||
@change="getList(1)"
|
@change="getList(1)"
|
||||||
>
|
>
|
||||||
<el-option label="全部" value="" />
|
<!-- <el-option label="全部" value="" /> -->
|
||||||
<el-option label="银行卡" value="0" />
|
<el-option label="银行卡" value="0" />
|
||||||
<el-option label="支付宝" value="2" />
|
<el-option label="铸源星" value="5" />
|
||||||
|
<!-- <el-option label="支付宝" value="2" />
|
||||||
<el-option label="微信" value="1" />
|
<el-option label="微信" value="1" />
|
||||||
<el-option label="微信零钱" value="3" />
|
<el-option label="微信零钱" value="3" /> -->
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="关键字:" prop="keyword">
|
<el-form-item label="关键字:" prop="keyword">
|
||||||
|
@ -137,9 +137,7 @@
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="审核状态" min-width="90">
|
<el-table-column label="审核状态" min-width="90">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span class="spBlock">{{
|
<span class="spBlock">{{ status_name[scope.row.status] }}</span>
|
||||||
status_name[scope.row.status]
|
|
||||||
}}</span>
|
|
||||||
<!-- <template v-if="scope.row.status === 0">
|
<!-- <template v-if="scope.row.status === 0">
|
||||||
<el-button type="danger" icon="el-icon-close" size="mini" @click="onExamine(scope.row.extract_id)">未通过</el-button>
|
<el-button type="danger" icon="el-icon-close" size="mini" @click="onExamine(scope.row.extract_id)">未通过</el-button>
|
||||||
<el-button type="primary" icon="el-icon-check" size="mini" @click="ok(scope.row.extract_id)">通过</el-button>
|
<el-button type="primary" icon="el-icon-check" size="mini" @click="ok(scope.row.extract_id)">通过</el-button>
|
||||||
|
@ -148,9 +146,7 @@
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="失败原因" min-width="120">
|
<el-table-column label="失败原因" min-width="120">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span class="spBlock">{{
|
<span class="spBlock">{{ scope.row.error_msg }}</span>
|
||||||
scope.row.error_msg
|
|
||||||
}}</span>
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="拒绝原因" min-width="120">
|
<el-table-column label="拒绝原因" min-width="120">
|
||||||
|
|
|
@ -0,0 +1,201 @@
|
||||||
|
<template>
|
||||||
|
<div class="divBox">
|
||||||
|
<div class="selCard">
|
||||||
|
<el-form size="small" label-width="85px" :inline="true">
|
||||||
|
<el-form-item label="是否显示:">
|
||||||
|
<el-select
|
||||||
|
v-model="tableFrom.status"
|
||||||
|
placeholder="请选择"
|
||||||
|
class="selWidth"
|
||||||
|
clearable
|
||||||
|
@change="getList"
|
||||||
|
>
|
||||||
|
<el-option label="显示" :value="1" />
|
||||||
|
<el-option label="不显示" :value="0" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
<el-card class="mt14">
|
||||||
|
<div class="mb14">
|
||||||
|
<el-button size="small" type="primary" @click="addSpike">添加配置</el-button>
|
||||||
|
</div>
|
||||||
|
<el-table
|
||||||
|
v-loading="listLoading"
|
||||||
|
:data="tableData.data"
|
||||||
|
size="small"
|
||||||
|
highlight-current-row
|
||||||
|
>
|
||||||
|
<el-table-column prop="seckill_time_id" label="编号" min-width="100" />
|
||||||
|
<el-table-column prop="title" label="名称" min-width="120" />
|
||||||
|
<el-table-column label="开始时间(整数小时)" min-width="120">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span>{{ scope.row.start_time }} :00</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="结束时间(整点)" min-width="120">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span>{{ scope.row.end_time }} :00</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="图片" min-width="100">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<div class="demo-image__preview">
|
||||||
|
<el-image
|
||||||
|
style="width: 36px; height: 36px"
|
||||||
|
:src="scope.row.pic"
|
||||||
|
:preview-src-list="[scope.row.pic]"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="是否可用" min-width="120">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-switch
|
||||||
|
v-model="scope.row.status"
|
||||||
|
:active-value="1"
|
||||||
|
:inactive-value="0"
|
||||||
|
active-text="启用"
|
||||||
|
inactive-text="禁用"
|
||||||
|
@click.native="onchangeIsShow(scope.row)"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="操作" min-width="90" fixed="right">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-button
|
||||||
|
type="text"
|
||||||
|
size="small"
|
||||||
|
class="mr10"
|
||||||
|
@click="handleEdit(scope.row.seckill_time_id)"
|
||||||
|
>编辑</el-button>
|
||||||
|
<el-button type="text" size="small" @click="handleDelete(scope.row.seckill_time_id,scope.$index)">删除</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<div class="block">
|
||||||
|
<el-pagination
|
||||||
|
background
|
||||||
|
:page-size="tableFrom.limit"
|
||||||
|
:current-page="tableFrom.page"
|
||||||
|
layout="total, prev, pager, next, jumper"
|
||||||
|
:total="tableData.total"
|
||||||
|
@size-change="handleSizeChange"
|
||||||
|
@current-change="pageChange"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
import {
|
||||||
|
spikeConfigLstApi,
|
||||||
|
spikeConfigDeleteApi,
|
||||||
|
spikeConfigurationApi,
|
||||||
|
spikeConfigUpdateApi,
|
||||||
|
spikeConfigStatusApi
|
||||||
|
} from '@/api/marketing'
|
||||||
|
import { roterPre } from '@/settings'
|
||||||
|
export default {
|
||||||
|
name: 'CouponList',
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
Loading: false,
|
||||||
|
dialogVisible: false,
|
||||||
|
roterPre: roterPre,
|
||||||
|
listLoading: true,
|
||||||
|
tableData: {
|
||||||
|
data: [],
|
||||||
|
total: 0
|
||||||
|
},
|
||||||
|
tableFrom: {
|
||||||
|
page: 1,
|
||||||
|
limit: 20,
|
||||||
|
status: ""
|
||||||
|
},
|
||||||
|
tableFromIssue: {
|
||||||
|
page: 1,
|
||||||
|
limit: 10,
|
||||||
|
coupon_id: 0
|
||||||
|
},
|
||||||
|
issueData: {
|
||||||
|
data: [],
|
||||||
|
total: 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
// 添加秒杀配置
|
||||||
|
addSpike() {
|
||||||
|
this.$modalForm(spikeConfigurationApi().then()).then(() =>
|
||||||
|
this.getList()
|
||||||
|
)
|
||||||
|
},
|
||||||
|
// 编辑
|
||||||
|
handleEdit(id) {
|
||||||
|
this.$modalForm(spikeConfigUpdateApi(id).then()).then(() =>
|
||||||
|
this.getList()
|
||||||
|
)
|
||||||
|
},
|
||||||
|
// 删除
|
||||||
|
handleDelete(id, idx) {
|
||||||
|
this.$modalSure().then(() => {
|
||||||
|
spikeConfigDeleteApi(id)
|
||||||
|
.then(({ message }) => {
|
||||||
|
this.$message.success(message)
|
||||||
|
this.tableData.data.splice(idx, 1)
|
||||||
|
})
|
||||||
|
.catch(({ message }) => {
|
||||||
|
this.$message.error(message)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleClose() {
|
||||||
|
this.dialogVisible = false
|
||||||
|
},
|
||||||
|
// 列表
|
||||||
|
getList() {
|
||||||
|
this.listLoading = true
|
||||||
|
console.log(this.tableFrom)
|
||||||
|
spikeConfigLstApi(this.tableFrom)
|
||||||
|
.then((res) => {
|
||||||
|
this.tableData.data = res.data.list
|
||||||
|
this.tableData.total = res.data.count
|
||||||
|
this.listLoading = false
|
||||||
|
})
|
||||||
|
.catch((res) => {
|
||||||
|
this.listLoading = false
|
||||||
|
this.$message.error(res.message)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
pageChange(page) {
|
||||||
|
this.tableFrom.page = page
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
handleSizeChange(val) {
|
||||||
|
this.tableFrom.limit = val
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
// 修改状态
|
||||||
|
onchangeIsShow(row) {
|
||||||
|
spikeConfigStatusApi(row.seckill_time_id, row.status )
|
||||||
|
.then(({ message }) => {
|
||||||
|
this.$message.success(message)
|
||||||
|
this.getList()
|
||||||
|
})
|
||||||
|
.catch(({ message }) => {
|
||||||
|
this.$message.error(message)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
@import '@/styles/form.scss';
|
||||||
|
</style>
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,3 @@
|
||||||
|
<template>
|
||||||
|
<router-view />
|
||||||
|
</template>
|
|
@ -45,7 +45,10 @@
|
||||||
</div>
|
</div>
|
||||||
<el-table v-loading="listLoading" :data="tableData.data" size="small">
|
<el-table v-loading="listLoading" :data="tableData.data" size="small">
|
||||||
<el-table-column prop="bill_id" label="ID" min-width="50" />
|
<el-table-column prop="bill_id" label="ID" min-width="50" />
|
||||||
<el-table-column label="用户昵称" prop="nickname" min-width="150" />
|
<el-table-column prop="user.number" label="用户ID" min-width="50" />
|
||||||
|
<el-table-column prop="order_sn" label="订单号" min-width="120" />
|
||||||
|
<el-table-column label="用户昵称" prop="nickname" min-width="100" />
|
||||||
|
<el-table-column label="手机号" prop="phone" min-width="150" />
|
||||||
<el-table-column label="铸源星标题" prop="title" min-width="120" />
|
<el-table-column label="铸源星标题" prop="title" min-width="120" />
|
||||||
<el-table-column label="铸源星变动" prop="number" min-width="90">
|
<el-table-column label="铸源星变动" prop="number" min-width="90">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
|
|
|
@ -835,7 +835,69 @@ export default {
|
||||||
|
|
||||||
exportRecord(excelData) {
|
exportRecord(excelData) {
|
||||||
exportOrderApi(excelData)
|
exportOrderApi(excelData)
|
||||||
.then((res) => {
|
.then(async (res) => {
|
||||||
|
if (res.data.filename) {
|
||||||
|
const loading = this.$loading({
|
||||||
|
lock: true,
|
||||||
|
text: "导出中...",
|
||||||
|
spinner: "el-icon-loading",
|
||||||
|
background: "hsla(0, 0%, 100%, .9)",
|
||||||
|
});
|
||||||
|
let excelData = JSON.parse(JSON.stringify(this.tableFrom)),
|
||||||
|
data = [];
|
||||||
|
excelData.page = 1;
|
||||||
|
excelData.limit = 200;
|
||||||
|
let pageCount = 1;
|
||||||
|
let lebData = {};
|
||||||
|
// let work;
|
||||||
|
for (let i = 0; i < pageCount; i++) {
|
||||||
|
lebData = await this.downData(excelData);
|
||||||
|
// if(work){
|
||||||
|
// work.setContent(lebData.export)
|
||||||
|
// }else{
|
||||||
|
// work = createWorkBook(lebData.header, lebData.title, data, lebData.foot,lebData.filename);
|
||||||
|
// }
|
||||||
|
//循环次数
|
||||||
|
pageCount = Math.ceil(lebData.count / excelData.limit);
|
||||||
|
// 数据同步
|
||||||
|
if (lebData.export.length) {
|
||||||
|
data = data.concat(lebData.export);
|
||||||
|
excelData.page++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
console.log("开始处理");
|
||||||
|
// 获取计算开始的时间
|
||||||
|
let start = performance.now();
|
||||||
|
// 新建一个线程
|
||||||
|
let worker = new Worker();
|
||||||
|
// 线程之间通过postMessage进行通信
|
||||||
|
worker.postMessage({
|
||||||
|
header: lebData.header,
|
||||||
|
title: lebData.title,
|
||||||
|
data,
|
||||||
|
foot: lebData.foot,
|
||||||
|
filename: lebData.filename,
|
||||||
|
});
|
||||||
|
// 监听message事件
|
||||||
|
worker.addEventListener("message", (e) => {
|
||||||
|
// 关闭线程
|
||||||
|
worker.terminate();
|
||||||
|
// 获取计算结束的时间
|
||||||
|
let end = performance.now();
|
||||||
|
// 得到总的计算时间
|
||||||
|
let durationTime = end - start;
|
||||||
|
|
||||||
|
console.log("计算结果:", e.data);
|
||||||
|
let { blob, filename } = e.data;
|
||||||
|
FileSaver.saveAs(blob, filename + ".xlsx");
|
||||||
|
loading.close();
|
||||||
|
console.log(`代码执行了 ${durationTime} 毫秒`);
|
||||||
|
});
|
||||||
|
// this.exportCsv(lebData.header,data,lebData.filename)
|
||||||
|
// createWorkBook(lebData.header, lebData.title, data, lebData.foot,lebData.filename)
|
||||||
|
// work.saveAndDowloade(lebData.filename)
|
||||||
|
return;
|
||||||
|
}
|
||||||
const h = this.$createElement;
|
const h = this.$createElement;
|
||||||
this.$msgbox({
|
this.$msgbox({
|
||||||
title: "提示",
|
title: "提示",
|
||||||
|
|
|
@ -175,10 +175,10 @@
|
||||||
}}
|
}}
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<!-- <li class="item">
|
<li class="item">
|
||||||
<div>优惠券金额:</div>
|
<div>优惠券金额:</div>
|
||||||
<div class="value">{{ orderDetailList.coupon_price ? orderDetailList.coupon_price : '-' }}</div>
|
<div class="value">{{ orderDetailList.coupon_price ? orderDetailList.coupon_price : '-' }}</div>
|
||||||
</li> -->
|
</li>
|
||||||
<li v-if="orderDetailList.integral" class="item">
|
<li v-if="orderDetailList.integral" class="item">
|
||||||
<div>铸源星抵扣:</div>
|
<div>铸源星抵扣:</div>
|
||||||
<div class="value">
|
<div class="value">
|
||||||
|
@ -223,7 +223,7 @@
|
||||||
{{ orderDetailList.delivery_type | sendWay }}
|
{{ orderDetailList.delivery_type | sendWay }}
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<li
|
<!-- <li
|
||||||
v-if="orderDetailList.platform_coupon_price > 0"
|
v-if="orderDetailList.platform_coupon_price > 0"
|
||||||
class="item"
|
class="item"
|
||||||
>
|
>
|
||||||
|
@ -241,7 +241,7 @@
|
||||||
orderDetailList.platform_coupon_price
|
orderDetailList.platform_coupon_price
|
||||||
}}元
|
}}元
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li> -->
|
||||||
<li class="item">
|
<li class="item">
|
||||||
<div>支付运费:</div>
|
<div>支付运费:</div>
|
||||||
<div class="value">{{ orderDetailList.pay_postage }}</div>
|
<div class="value">{{ orderDetailList.pay_postage }}</div>
|
||||||
|
@ -310,9 +310,13 @@
|
||||||
<div class="value">{{ orderDetailList.extension_one }}</div>
|
<div class="value">{{ orderDetailList.extension_one }}</div>
|
||||||
</li>
|
</li>
|
||||||
<li class="item">
|
<li class="item">
|
||||||
<div>上级成长值:</div>
|
<div>邀请人成长值:</div>
|
||||||
<div class="value">{{ orderDetailList.extension_two }}</div>
|
<div class="value">{{ orderDetailList.extension_two }}</div>
|
||||||
</li>
|
</li>
|
||||||
|
<li class="item">
|
||||||
|
<div>优惠活动:</div>
|
||||||
|
<div class="value">{{ orderDetailList.luck_prizes }}</div>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="section" v-if="orderDetailList.delivery_type === '1'">
|
<div class="section" v-if="orderDetailList.delivery_type === '1'">
|
||||||
|
|
|
@ -1,25 +1,57 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="divBox">
|
<div class="divBox">
|
||||||
<div class="selCard">
|
<div class="selCard">
|
||||||
<el-form size="small" inline :model="tableFrom" ref="searchForm" label-width="90px">
|
<el-form
|
||||||
|
size="small"
|
||||||
|
inline
|
||||||
|
:model="tableFrom"
|
||||||
|
ref="searchForm"
|
||||||
|
label-width="90px"
|
||||||
|
>
|
||||||
<el-form-item label="退款单状态:" class="width100" prop="status">
|
<el-form-item label="退款单状态:" class="width100" prop="status">
|
||||||
<el-radio-group v-model="tableFrom.status" type="button" @change="getList(1)">
|
<el-radio-group
|
||||||
<el-radio-button label>全部 {{ '(' +orderChartType.all?orderChartType.all:0 + ')' }}</el-radio-button>
|
v-model="tableFrom.status"
|
||||||
<el-radio-button
|
type="button"
|
||||||
label="0"
|
@change="getList(1)"
|
||||||
>待审核 {{ '(' +orderChartType.audit?orderChartType.audit:0+ ')' }}</el-radio-button>
|
>
|
||||||
<el-radio-button
|
<el-radio-button label
|
||||||
label="-1"
|
>全部
|
||||||
>审核未通过 {{ '(' +orderChartType.refuse?orderChartType.refuse:0+ ')' }}</el-radio-button>
|
{{
|
||||||
<el-radio-button
|
"(" + orderChartType.all ? orderChartType.all : 0 + ")"
|
||||||
label="1"
|
}}</el-radio-button
|
||||||
>审核通过 {{ '(' +orderChartType.agree?orderChartType.agree:0+ ')' }}</el-radio-button>
|
>
|
||||||
<el-radio-button
|
<el-radio-button label="0"
|
||||||
label="2"
|
>待审核
|
||||||
>待收货 {{ '(' +orderChartType.backgood?orderChartType.backgood:0+ ')' }}</el-radio-button>
|
{{
|
||||||
<el-radio-button
|
"(" + orderChartType.audit ? orderChartType.audit : 0 + ")"
|
||||||
label="3"
|
}}</el-radio-button
|
||||||
>已完成 {{ '(' +orderChartType.end?orderChartType.end:0+ ')' }}</el-radio-button>
|
>
|
||||||
|
<el-radio-button label="-1"
|
||||||
|
>审核未通过
|
||||||
|
{{
|
||||||
|
"(" + orderChartType.refuse ? orderChartType.refuse : 0 + ")"
|
||||||
|
}}</el-radio-button
|
||||||
|
>
|
||||||
|
<el-radio-button label="1"
|
||||||
|
>审核通过
|
||||||
|
{{
|
||||||
|
"(" + orderChartType.agree ? orderChartType.agree : 0 + ")"
|
||||||
|
}}</el-radio-button
|
||||||
|
>
|
||||||
|
<el-radio-button label="2"
|
||||||
|
>待收货
|
||||||
|
{{
|
||||||
|
"(" + orderChartType.backgood
|
||||||
|
? orderChartType.backgood
|
||||||
|
: 0 + ")"
|
||||||
|
}}</el-radio-button
|
||||||
|
>
|
||||||
|
<el-radio-button label="3"
|
||||||
|
>已完成
|
||||||
|
{{
|
||||||
|
"(" + orderChartType.end ? orderChartType.end : 0 + ")"
|
||||||
|
}}</el-radio-button
|
||||||
|
>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="时间选择:">
|
<el-form-item label="时间选择:">
|
||||||
|
@ -31,7 +63,7 @@
|
||||||
type="datetimerange"
|
type="datetimerange"
|
||||||
placement="bottom-end"
|
placement="bottom-end"
|
||||||
placeholder="自定义时间"
|
placeholder="自定义时间"
|
||||||
style="width: 280px;"
|
style="width: 280px"
|
||||||
:picker-options="pickerOptions"
|
:picker-options="pickerOptions"
|
||||||
@change="onchangeTime"
|
@change="onchangeTime"
|
||||||
/>
|
/>
|
||||||
|
@ -97,29 +129,33 @@
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="发起方:" prop="user_type">
|
<el-form-item label="发起方:" prop="user_type">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="tableFrom.user_type"
|
v-model="tableFrom.user_type"
|
||||||
placeholder="请选择"
|
placeholder="请选择"
|
||||||
class="selWidth"
|
class="selWidth"
|
||||||
clearable
|
clearable
|
||||||
@change="getList(1)"
|
@change="getList(1)"
|
||||||
>
|
>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in refundUserList"
|
v-for="item in refundUserList"
|
||||||
:key="item.value"
|
:key="item.value"
|
||||||
:label="item.label"
|
:label="item.label"
|
||||||
:value="item.value"
|
:value="item.value"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
|
||||||
<el-form-item>
|
|
||||||
<el-button type="primary" size="small" @click="getList(1)">搜索</el-button>
|
|
||||||
<el-button size="small" @click="searchReset()">重置</el-button>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
<el-form-item>
|
||||||
|
<el-button type="primary" size="small" @click="getList(1)"
|
||||||
|
>搜索</el-button
|
||||||
|
>
|
||||||
|
<el-button size="small" @click="searchReset()">重置</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
<el-card class="mt14">
|
<el-card class="mt14">
|
||||||
<el-button size="small" type="primary" class="mb20" @click="exports">导出列表</el-button>
|
<el-button size="small" type="primary" class="mb20" @click="exports"
|
||||||
|
>导出列表</el-button
|
||||||
|
>
|
||||||
<el-table
|
<el-table
|
||||||
v-loading="listLoading"
|
v-loading="listLoading"
|
||||||
:data="tableData.data"
|
:data="tableData.data"
|
||||||
|
@ -129,7 +165,11 @@
|
||||||
>
|
>
|
||||||
<el-table-column type="expand">
|
<el-table-column type="expand">
|
||||||
<template slot-scope="props">
|
<template slot-scope="props">
|
||||||
<el-form label-position="left" inline class="demo-table-expand demo-table-expands">
|
<el-form
|
||||||
|
label-position="left"
|
||||||
|
inline
|
||||||
|
class="demo-table-expand demo-table-expands"
|
||||||
|
>
|
||||||
<el-form-item label="退款商品总价:">
|
<el-form-item label="退款商品总价:">
|
||||||
<span>{{ getTotal(props.row.refundProduct) }}</span>
|
<span>{{ getTotal(props.row.refundProduct) }}</span>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
@ -150,53 +190,87 @@
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="退款单号" min-width="170">
|
<el-table-column label="退款单号" min-width="170">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span style="display: block;" v-text="scope.row.refund_order_sn" />
|
<span style="display: block" v-text="scope.row.refund_order_sn" />
|
||||||
<span v-show="scope.row.is_del > 0" style="color: #ED4014;display: block;">用户已删除</span>
|
<span
|
||||||
|
v-show="scope.row.is_del > 0"
|
||||||
|
style="color: #ed4014; display: block"
|
||||||
|
>用户已删除</span
|
||||||
|
>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="order.order_sn" label="订单号" min-width="130" />
|
<el-table-column prop="order.order_sn" label="订单号" min-width="130" />
|
||||||
<el-table-column prop="user.nickname" label="用户信息" min-width="130" />
|
<el-table-column
|
||||||
<el-table-column prop="merchant.mer_name" label="商户名称" min-width="130" />
|
prop="user.nickname"
|
||||||
<el-table-column prop="merchant.ext.com.name" label="商户名称" min-width="130" />
|
label="用户信息"
|
||||||
|
min-width="130"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
prop="merchant.mer_name"
|
||||||
|
label="商户名称"
|
||||||
|
min-width="130"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
prop="merchant.ext.com.name"
|
||||||
|
label="商户名称"
|
||||||
|
min-width="130"
|
||||||
|
/>
|
||||||
<el-table-column prop="mer_name" label="商户类别" min-width="90">
|
<el-table-column prop="mer_name" label="商户类别" min-width="90">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span v-if="scope.row.merchant" class="spBlock">{{ scope.row.merchant.is_trader ? '自营' : '非自营' }}</span>
|
<span v-if="scope.row.merchant" class="spBlock">{{
|
||||||
|
scope.row.merchant.is_trader ? "自营" : "非自营"
|
||||||
|
}}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="refund_price" label="退款金额" min-width="130" />
|
<el-table-column prop="refund_price" label="退款金额" min-width="130" />
|
||||||
<el-table-column label="退款类型" min-width="80">
|
<el-table-column label="退款类型" min-width="80">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span >{{ scope.row.refund_type==1?'退款':'退款退货' }}</span>
|
<span>{{ scope.row.refund_type == 1 ? "退款" : "退款退货" }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="nickname" label="商品信息" min-width="330">
|
<el-table-column prop="nickname" label="商品信息" min-width="330">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<div
|
<div
|
||||||
v-for="(val, i ) in scope.row.refundProduct"
|
v-for="(val, i) in scope.row.refundProduct"
|
||||||
:key="i"
|
:key="i"
|
||||||
class="tabBox acea-row row-middle"
|
class="tabBox acea-row row-middle"
|
||||||
>
|
>
|
||||||
<div class="demo-image__preview">
|
<div class="demo-image__preview">
|
||||||
<el-image
|
<el-image
|
||||||
:src="val.product && val.product.cart_info.product.image"
|
:src="val.product && val.product.cart_info.product.image"
|
||||||
:preview-src-list="[val.product && val.product.cart_info.product.image]"
|
:preview-src-list="[
|
||||||
|
val.product && val.product.cart_info.product.image,
|
||||||
|
]"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<span
|
<span class="tabBox_tit"
|
||||||
class="tabBox_tit"
|
>{{
|
||||||
>{{ val.product && val.product.cart_info.product.store_name + ' | ' }}{{ val.product && val.product.cart_info.productAttr.sku }}</span>
|
val.product &&
|
||||||
<span
|
val.product.cart_info.product.store_name + " | "
|
||||||
class="tabBox_pice"
|
}}{{
|
||||||
>{{ '¥'+ val.product.cart_info.productAttr.price + ' x '+ val.product.product_num }}</span>
|
val.product && val.product.cart_info.productAttr.sku
|
||||||
|
}}</span
|
||||||
|
>
|
||||||
|
<span class="tabBox_pice">{{
|
||||||
|
"¥" +
|
||||||
|
val.product.cart_info.productAttr.price +
|
||||||
|
" x " +
|
||||||
|
val.product.product_num
|
||||||
|
}}</span>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
<el-table-column prop="serviceScore" label="订单状态" min-width="250">
|
<el-table-column prop="serviceScore" label="订单状态" min-width="250">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span style="display: block">{{ scope.row.status | orderRefundFilter }}</span>
|
<span style="display: block">{{
|
||||||
<span style="display: block">退款原因:{{ scope.row.refund_message }}</span>
|
scope.row.status | orderRefundFilter
|
||||||
<span style="display: block">状态变更时间:{{ scope.row.status_time }}</span>
|
}}</span>
|
||||||
|
<span style="display: block"
|
||||||
|
>退款原因:{{ scope.row.refund_message }}</span
|
||||||
|
>
|
||||||
|
<span style="display: block"
|
||||||
|
>状态变更时间:{{ scope.row.status_time }}</span
|
||||||
|
>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="操作" min-width="90" fixed="right">
|
<el-table-column label="操作" min-width="90" fixed="right">
|
||||||
|
@ -205,10 +279,28 @@
|
||||||
type="text"
|
type="text"
|
||||||
size="small"
|
size="small"
|
||||||
@click="onOrderDetail(scope.row.order.order_sn)"
|
@click="onOrderDetail(scope.row.order.order_sn)"
|
||||||
>订单详情</el-button>
|
>订单详情</el-button
|
||||||
<el-button v-if="scope.row.status === 0" type="text" size="small" @click="onOrderStatus(scope.row.refund_order_id)">退款</el-button>
|
>
|
||||||
<el-button v-if="scope.row.status === 0" type="text" size="small" @click="onOrdermanual(scope.row.refund_order_id)">手动退款</el-button>
|
<el-button
|
||||||
<el-button type="text" size="small" @click="onRefundOrderDetail(scope.row.refund_order_id)">退款单详情</el-button>
|
v-if="scope.row.status === 0"
|
||||||
|
type="text"
|
||||||
|
size="small"
|
||||||
|
@click="onOrderStatus(scope.row.refund_order_id)"
|
||||||
|
>退款</el-button
|
||||||
|
>
|
||||||
|
<el-button
|
||||||
|
v-if="scope.row.status === 0"
|
||||||
|
type="text"
|
||||||
|
size="small"
|
||||||
|
@click="onOrdermanual(scope.row.refund_order_id)"
|
||||||
|
>手动退款</el-button
|
||||||
|
>
|
||||||
|
<el-button
|
||||||
|
type="text"
|
||||||
|
size="small"
|
||||||
|
@click="onRefundOrderDetail(scope.row.refund_order_id)"
|
||||||
|
>退款单详情</el-button
|
||||||
|
>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
|
@ -226,9 +318,13 @@
|
||||||
</el-card>
|
</el-card>
|
||||||
<!--导出订单列表-->
|
<!--导出订单列表-->
|
||||||
<file-list ref="exportList" />
|
<file-list ref="exportList" />
|
||||||
<!--详情-->
|
<!--详情-->
|
||||||
<details-from ref="orderDetail" :order-datalist="orderDatalist" @get-logistics="openLogistics" />
|
<details-from
|
||||||
<el-dialog
|
ref="orderDetail"
|
||||||
|
:order-datalist="orderDatalist"
|
||||||
|
@get-logistics="openLogistics"
|
||||||
|
/>
|
||||||
|
<el-dialog
|
||||||
v-if="dialogLogistics"
|
v-if="dialogLogistics"
|
||||||
title="物流查询"
|
title="物流查询"
|
||||||
:visible.sync="dialogLogistics"
|
:visible.sync="dialogLogistics"
|
||||||
|
@ -246,7 +342,6 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|
||||||
import {
|
import {
|
||||||
refundorderListApi,
|
refundorderListApi,
|
||||||
orderUpdateApi,
|
orderUpdateApi,
|
||||||
|
@ -254,23 +349,24 @@ import {
|
||||||
refundorderDetailApi,
|
refundorderDetailApi,
|
||||||
refundorderExpressApi,
|
refundorderExpressApi,
|
||||||
onOrdermanualApi,
|
onOrdermanualApi,
|
||||||
orderDeliveryApi, exportRefundOrderApi
|
orderDeliveryApi,
|
||||||
|
exportRefundOrderApi,
|
||||||
} from "@/api/order";
|
} from "@/api/order";
|
||||||
import createWorkBook from '@/utils/newToExcel.js';
|
import createWorkBook from "@/utils/newToExcel.js";
|
||||||
import detailsFrom from './refundDetail'
|
import detailsFrom from "./refundDetail";
|
||||||
import logisticsFrom from '../logistics'
|
import logisticsFrom from "../logistics";
|
||||||
import { fromList } from "@/libs/constants.js";
|
import { fromList } from "@/libs/constants.js";
|
||||||
import fileList from '@/components/exportFile/fileList'
|
import fileList from "@/components/exportFile/fileList";
|
||||||
import { roterPre } from "@/settings";
|
import { roterPre } from "@/settings";
|
||||||
import timeOptions from '@/utils/timeOptions';
|
import timeOptions from "@/utils/timeOptions";
|
||||||
export default {
|
export default {
|
||||||
components: { fileList,detailsFrom,logisticsFrom },
|
components: { fileList, detailsFrom, logisticsFrom },
|
||||||
name: "OrderRefund",
|
name: "OrderRefund",
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
pickerOptions: timeOptions,
|
pickerOptions: timeOptions,
|
||||||
orderId: 0,
|
orderId: 0,
|
||||||
logisticsName: 'refund',
|
logisticsName: "refund",
|
||||||
roterPre: roterPre,
|
roterPre: roterPre,
|
||||||
tableData: {
|
tableData: {
|
||||||
data: [],
|
data: [],
|
||||||
|
@ -278,24 +374,26 @@ export default {
|
||||||
},
|
},
|
||||||
listLoading: true,
|
listLoading: true,
|
||||||
orderStatusOptions: {
|
orderStatusOptions: {
|
||||||
'交易完成': '3',
|
交易完成: "3",
|
||||||
},
|
},
|
||||||
tableFrom: {
|
tableFrom: {
|
||||||
refund_order_sn: this.$route.query.refund_order_sn ? this.$route.query.refund_order_sn : "",
|
refund_order_sn: this.$route.query.refund_order_sn
|
||||||
|
? this.$route.query.refund_order_sn
|
||||||
|
: "",
|
||||||
order_sn: "",
|
order_sn: "",
|
||||||
status: "",
|
status: "",
|
||||||
date: "",
|
date: "",
|
||||||
page: 1,
|
page: 1,
|
||||||
limit: 20,
|
limit: 20,
|
||||||
is_trader: '',
|
is_trader: "",
|
||||||
refund_type:'',
|
refund_type: "",
|
||||||
user_type:'',
|
user_type: "",
|
||||||
order_status:''
|
order_status: "",
|
||||||
},
|
},
|
||||||
refundUserList: [
|
refundUserList: [
|
||||||
{ value: 1, label: '用户' },
|
{ value: 1, label: "用户" },
|
||||||
{ value: 3, label: '商户' },
|
{ value: 3, label: "商户" },
|
||||||
{ value: 4, label: '平台' }
|
{ value: 4, label: "平台" },
|
||||||
],
|
],
|
||||||
orderChartType: {},
|
orderChartType: {},
|
||||||
timeVal: [],
|
timeVal: [],
|
||||||
|
@ -316,7 +414,7 @@ export default {
|
||||||
orderDatalist: null,
|
orderDatalist: null,
|
||||||
orderDetails: {},
|
orderDetails: {},
|
||||||
result: [],
|
result: [],
|
||||||
dialogLogistics:false
|
dialogLogistics: false,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
|
@ -325,7 +423,7 @@ export default {
|
||||||
} else {
|
} else {
|
||||||
this.tableFrom.order_sn = "";
|
this.tableFrom.order_sn = "";
|
||||||
}
|
}
|
||||||
this.getList('');
|
this.getList("");
|
||||||
},
|
},
|
||||||
// 被缓存接收参数
|
// 被缓存接收参数
|
||||||
activated() {
|
activated() {
|
||||||
|
@ -334,69 +432,71 @@ export default {
|
||||||
} else {
|
} else {
|
||||||
this.tableFrom.order_sn = "";
|
this.tableFrom.order_sn = "";
|
||||||
}
|
}
|
||||||
this.getList('');
|
this.getList("");
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
// 退款
|
// 退款
|
||||||
onOrderStatus(id) {
|
onOrderStatus(id) {
|
||||||
this.$modalForm(refundorderStatusApi(id)).then(() => this.getList(''))
|
this.$modalForm(refundorderStatusApi(id)).then(() => this.getList(""));
|
||||||
},
|
},
|
||||||
onOrdermanual(id){
|
onOrdermanual(id) {
|
||||||
this.$confirm('请确认该订单已线下退款,请谨慎操作', '提示', {
|
this.$confirm("请确认该订单已线下退款,请谨慎操作", "提示", {
|
||||||
confirmButtonText: '确定',
|
confirmButtonText: "确定",
|
||||||
cancelButtonText: '取消',
|
cancelButtonText: "取消",
|
||||||
type: 'warning'
|
type: "warning",
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
onOrdermanualApi(id).then((res)=>{
|
onOrdermanualApi(id)
|
||||||
this.$message.success(res.message)
|
.then((res) => {
|
||||||
this.getList('');
|
this.$message.success(res.message);
|
||||||
}).catch(({ message }) => {
|
this.getList("");
|
||||||
this.$message.error(message)
|
})
|
||||||
|
.catch(({ message }) => {
|
||||||
|
this.$message.error(message);
|
||||||
});
|
});
|
||||||
})
|
});
|
||||||
},
|
},
|
||||||
// 详情
|
// 详情
|
||||||
onRefundOrderDetail(id) {
|
onRefundOrderDetail(id) {
|
||||||
this.orderId = id
|
this.orderId = id;
|
||||||
this.$refs.orderDetail.dialogVisible = true
|
this.$refs.orderDetail.dialogVisible = true;
|
||||||
this.loading = true
|
this.loading = true;
|
||||||
refundorderDetailApi(id)
|
refundorderDetailApi(id)
|
||||||
.then(res => {
|
.then((res) => {
|
||||||
this.orderDatalist = res.data
|
this.orderDatalist = res.data;
|
||||||
this.loading = false
|
this.loading = false;
|
||||||
this.$refs.orderDetail.onOrderLog(id)
|
this.$refs.orderDetail.onOrderLog(id);
|
||||||
})
|
})
|
||||||
.catch(({ message }) => {
|
.catch(({ message }) => {
|
||||||
this.loading = false
|
this.loading = false;
|
||||||
this.$message.error(message)
|
this.$message.error(message);
|
||||||
})
|
});
|
||||||
},
|
},
|
||||||
openLogistics(row) {
|
openLogistics(row) {
|
||||||
this.orderDetails = row
|
this.orderDetails = row;
|
||||||
this.getOrderData(row.refund_order_id)
|
this.getOrderData(row.refund_order_id);
|
||||||
this.dialogLogistics = true
|
this.dialogLogistics = true;
|
||||||
},
|
},
|
||||||
handleClose() {
|
handleClose() {
|
||||||
this.dialogLogistics = false
|
this.dialogLogistics = false;
|
||||||
this.dialogConfirm = false
|
this.dialogConfirm = false;
|
||||||
},
|
},
|
||||||
// 获取订单物流信息
|
// 获取订单物流信息
|
||||||
getOrderData(id) {
|
getOrderData(id) {
|
||||||
refundorderExpressApi(id)
|
refundorderExpressApi(id)
|
||||||
.then(async res => {
|
.then(async (res) => {
|
||||||
this.result = res.data
|
this.result = res.data;
|
||||||
})
|
|
||||||
.catch(res => {
|
|
||||||
this.$message.error(res.message)
|
|
||||||
})
|
})
|
||||||
|
.catch((res) => {
|
||||||
|
this.$message.error(res.message);
|
||||||
|
});
|
||||||
},
|
},
|
||||||
/**重置 */
|
/**重置 */
|
||||||
searchReset(){
|
searchReset() {
|
||||||
this.timeVal = []
|
this.timeVal = [];
|
||||||
this.tableFrom.date = ""
|
this.tableFrom.date = "";
|
||||||
this.$refs.searchForm.resetFields()
|
this.$refs.searchForm.resetFields();
|
||||||
this.tableFrom.order_sn = ""
|
this.tableFrom.order_sn = "";
|
||||||
this.getList(1)
|
this.getList(1);
|
||||||
},
|
},
|
||||||
// 订单详情
|
// 订单详情
|
||||||
onOrderDetail(order_sn) {
|
onOrderDetail(order_sn) {
|
||||||
|
@ -408,54 +508,64 @@ export default {
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
async exports() {
|
async exports() {
|
||||||
let excelData = JSON.parse(JSON.stringify(this.tableFrom)), data = []
|
let excelData = JSON.parse(JSON.stringify(this.tableFrom));
|
||||||
excelData.page = 1
|
this.exportRecord(excelData);
|
||||||
excelData.limit = 200
|
|
||||||
let pageCount = 1
|
|
||||||
let lebData = {};
|
|
||||||
for (let i = 0; i < pageCount; i++) {
|
|
||||||
lebData = await this.downData(excelData)
|
|
||||||
pageCount = Math.ceil(lebData.count/excelData.limit)
|
|
||||||
if (lebData.export.length) {
|
|
||||||
data = data.concat(lebData.export)
|
|
||||||
excelData.page++
|
|
||||||
}
|
|
||||||
}
|
|
||||||
createWorkBook(lebData.header, lebData.title, data, lebData.foot,lebData.filename);
|
|
||||||
return
|
|
||||||
},
|
},
|
||||||
/**订单列表 */
|
/**订单列表 */
|
||||||
downData(excelData) {
|
downData(excelData) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
exportRefundOrderApi(excelData).then((res) => {
|
exportRefundOrderApi(excelData).then((res) => {
|
||||||
return resolve(res.data)
|
return resolve(res.data);
|
||||||
})
|
});
|
||||||
})
|
});
|
||||||
},
|
},
|
||||||
// 导出
|
// 导出
|
||||||
exportRecord() {
|
exportRecord(excelData) {
|
||||||
exportRefundOrderApi(this.tableFrom)
|
exportRefundOrderApi(this.tableFrom)
|
||||||
.then((res) => {
|
.then(async (res) => {
|
||||||
|
if (res.data.filename) {
|
||||||
|
let data = [];
|
||||||
|
excelData.page = 1;
|
||||||
|
excelData.limit = 200;
|
||||||
|
let pageCount = 1;
|
||||||
|
let lebData = {};
|
||||||
|
for (let i = 0; i < pageCount; i++) {
|
||||||
|
lebData = await this.downData(excelData);
|
||||||
|
pageCount = Math.ceil(lebData.count / excelData.limit);
|
||||||
|
if (lebData.export.length) {
|
||||||
|
data = data.concat(lebData.export);
|
||||||
|
excelData.page++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
createWorkBook(
|
||||||
|
lebData.header,
|
||||||
|
lebData.title,
|
||||||
|
data,
|
||||||
|
lebData.foot,
|
||||||
|
lebData.filename
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
}
|
||||||
const h = this.$createElement;
|
const h = this.$createElement;
|
||||||
this.$msgbox({
|
this.$msgbox({
|
||||||
title: '提示',
|
title: "提示",
|
||||||
message: h('p', null, [
|
message: h("p", null, [
|
||||||
h('span', null, '文件正在生成中,请稍后点击"'),
|
h("span", null, '文件正在生成中,请稍后点击"'),
|
||||||
h('span', { style: 'color: teal' }, '导出记录'),
|
h("span", { style: "color: teal" }, "导出记录"),
|
||||||
h('span', null, '"查看~ '),
|
h("span", null, '"查看~ '),
|
||||||
]),
|
]),
|
||||||
confirmButtonText: '我知道了',
|
confirmButtonText: "我知道了",
|
||||||
}).then(action => {
|
}).then((action) => {
|
||||||
|
this.$router.push({ path: this.roterPre + "/group/exportList" });
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
.catch((res) => {
|
.catch((res) => {
|
||||||
this.$message.error(res.message)
|
this.$message.error(res.message);
|
||||||
})
|
});
|
||||||
},
|
},
|
||||||
// 导出列表
|
// 导出列表
|
||||||
getExportFileList() {
|
getExportFileList() {
|
||||||
this.$refs.exportList.exportFileList()
|
this.$refs.exportList.exportFileList();
|
||||||
},
|
},
|
||||||
getTotal(row) {
|
getTotal(row) {
|
||||||
let sum = 0;
|
let sum = 0;
|
||||||
|
@ -466,7 +576,7 @@ export default {
|
||||||
},
|
},
|
||||||
pageChangeLog(page) {
|
pageChangeLog(page) {
|
||||||
this.tableFromLog.page = page;
|
this.tableFromLog.page = page;
|
||||||
this.getList('');
|
this.getList("");
|
||||||
},
|
},
|
||||||
handleSizeChangeLog(val) {
|
handleSizeChangeLog(val) {
|
||||||
this.tableFromLog.limit = val;
|
this.tableFromLog.limit = val;
|
||||||
|
@ -477,22 +587,22 @@ export default {
|
||||||
this.tableFrom.date = tab;
|
this.tableFrom.date = tab;
|
||||||
this.tableFrom.page = 1;
|
this.tableFrom.page = 1;
|
||||||
this.timeVal = [];
|
this.timeVal = [];
|
||||||
this.getList('');
|
this.getList("");
|
||||||
},
|
},
|
||||||
// 具体日期
|
// 具体日期
|
||||||
onchangeTime(e) {
|
onchangeTime(e) {
|
||||||
this.timeVal = e;
|
this.timeVal = e;
|
||||||
this.tableFrom.date = e ? this.timeVal.join("-") : "";
|
this.tableFrom.date = e ? this.timeVal.join("-") : "";
|
||||||
this.tableFrom.page = 1;
|
this.tableFrom.page = 1;
|
||||||
this.getList('');
|
this.getList("");
|
||||||
},
|
},
|
||||||
// 编辑
|
// 编辑
|
||||||
edit(id) {
|
edit(id) {
|
||||||
this.$modalForm(orderUpdateApi(id)).then(() => this.getList(''));
|
this.$modalForm(orderUpdateApi(id)).then(() => this.getList(""));
|
||||||
},
|
},
|
||||||
// 发货
|
// 发货
|
||||||
send(id) {
|
send(id) {
|
||||||
this.$modalForm(orderDeliveryApi(id)).then(() => this.getList(''));
|
this.$modalForm(orderDeliveryApi(id)).then(() => this.getList(""));
|
||||||
},
|
},
|
||||||
// 列表
|
// 列表
|
||||||
getList(num) {
|
getList(num) {
|
||||||
|
@ -513,7 +623,7 @@ export default {
|
||||||
},
|
},
|
||||||
pageChange(page) {
|
pageChange(page) {
|
||||||
this.tableFrom.page = page;
|
this.tableFrom.page = page;
|
||||||
this.getList('');
|
this.getList("");
|
||||||
},
|
},
|
||||||
handleSizeChange(val) {
|
handleSizeChange(val) {
|
||||||
this.tableFrom.limit = val;
|
this.tableFrom.limit = val;
|
||||||
|
@ -526,7 +636,7 @@ export default {
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.demo-table-expands ::v-deep label {
|
.demo-table-expands ::v-deep label {
|
||||||
width: 110px !important;
|
width: 110px !important;
|
||||||
color: #99a9bf;
|
color: #99a9bf;
|
||||||
}
|
}
|
||||||
.el-dropdown-link {
|
.el-dropdown-link {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
|
|
@ -74,6 +74,9 @@
|
||||||
退货金额:{{ orderDatalist.refund_good_price }}
|
退货金额:{{ orderDatalist.refund_good_price }}
|
||||||
</div>
|
</div>
|
||||||
<div class="description-term">退折扣:{{ orderDatalist.amount }}</div>
|
<div class="description-term">退折扣:{{ orderDatalist.amount }}</div>
|
||||||
|
<div class="description-term">
|
||||||
|
退铸源星:{{ orderDatalist.integral }}
|
||||||
|
</div>
|
||||||
<div class="description-term">
|
<div class="description-term">
|
||||||
退运费金额:{{ orderDatalist.refund_postage }}
|
退运费金额:{{ orderDatalist.refund_postage }}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -936,6 +936,11 @@ const proOptions = [
|
||||||
name: "能量",
|
name: "能量",
|
||||||
value: "is_energy",
|
value: "is_energy",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "年货礼包",
|
||||||
|
value: "is_new_year",
|
||||||
|
},
|
||||||
|
|
||||||
// {
|
// {
|
||||||
// name: "活动专区",
|
// name: "活动专区",
|
||||||
// value: "is_activities",
|
// value: "is_activities",
|
||||||
|
@ -1014,6 +1019,10 @@ export default {
|
||||||
name: "能量",
|
name: "能量",
|
||||||
value: "is_energy",
|
value: "is_energy",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "年货礼包",
|
||||||
|
value: "is_new_year",
|
||||||
|
},
|
||||||
// {
|
// {
|
||||||
// name: "活动专区",
|
// name: "活动专区",
|
||||||
// value: "activity",
|
// value: "activity",
|
||||||
|
@ -1027,6 +1036,7 @@ export default {
|
||||||
is_new: 0,
|
is_new: 0,
|
||||||
is_benefit: 0,
|
is_benefit: 0,
|
||||||
is_energy: 0,
|
is_energy: 0,
|
||||||
|
is_new_year: 0,
|
||||||
ficti: 0,
|
ficti: 0,
|
||||||
is_ficti: "",
|
is_ficti: "",
|
||||||
content: "",
|
content: "",
|
||||||
|
@ -1203,9 +1213,32 @@ export default {
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
// 导出
|
// 导出
|
||||||
exportRecord() {
|
exportRecord(excelData) {
|
||||||
exportProductApi(this.tableFrom)
|
exportProductApi(this.tableFrom)
|
||||||
.then((res) => {
|
.then(async (res) => {
|
||||||
|
if (res.data.filename) {
|
||||||
|
let data = [];
|
||||||
|
excelData.page = 1;
|
||||||
|
excelData.limit = 200;
|
||||||
|
let pageCount = 1;
|
||||||
|
let lebData = {};
|
||||||
|
for (let i = 0; i < pageCount; i++) {
|
||||||
|
lebData = await this.downData(excelData);
|
||||||
|
pageCount = Math.ceil(lebData.count / excelData.limit);
|
||||||
|
if (lebData.export.length) {
|
||||||
|
data = data.concat(lebData.export);
|
||||||
|
excelData.page++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
createWorkBook(
|
||||||
|
lebData.header,
|
||||||
|
lebData.title,
|
||||||
|
data,
|
||||||
|
lebData.foot,
|
||||||
|
lebData.filename
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
}
|
||||||
const h = this.$createElement;
|
const h = this.$createElement;
|
||||||
this.$msgbox({
|
this.$msgbox({
|
||||||
title: "提示",
|
title: "提示",
|
||||||
|
@ -1405,6 +1438,7 @@ export default {
|
||||||
is_new: info.is_new,
|
is_new: info.is_new,
|
||||||
is_benefit: info.is_benefit,
|
is_benefit: info.is_benefit,
|
||||||
is_energy: info.is_energy,
|
is_energy: info.is_energy,
|
||||||
|
is_new_year: info.is_new_year,
|
||||||
ficti: info.ficti,
|
ficti: info.ficti,
|
||||||
content: info.content,
|
content: info.content,
|
||||||
store_name: info.store_name,
|
store_name: info.store_name,
|
||||||
|
@ -1424,6 +1458,7 @@ export default {
|
||||||
if (info.is_best === 1) this.checkboxGroup.push("is_best");
|
if (info.is_best === 1) this.checkboxGroup.push("is_best");
|
||||||
if (info.is_new === 1) this.checkboxGroup.push("is_new");
|
if (info.is_new === 1) this.checkboxGroup.push("is_new");
|
||||||
if (info.is_energy === 1) this.checkboxGroup.push("is_energy");
|
if (info.is_energy === 1) this.checkboxGroup.push("is_energy");
|
||||||
|
if (info.is_new_year === 1) this.checkboxGroup.push("is_new_year");
|
||||||
this.fullscreenLoading = false;
|
this.fullscreenLoading = false;
|
||||||
})
|
})
|
||||||
.catch((res) => {
|
.catch((res) => {
|
||||||
|
@ -1488,6 +1523,10 @@ export default {
|
||||||
? (this.formValidate.is_energy = 1)
|
? (this.formValidate.is_energy = 1)
|
||||||
: (this.formValidate.is_energy =
|
: (this.formValidate.is_energy =
|
||||||
0 && this.checkboxGroup.remove("is_energy"));
|
0 && this.checkboxGroup.remove("is_energy"));
|
||||||
|
this.checkboxGroup.includes("is_new_year")
|
||||||
|
? (this.formValidate.is_new_year = 1)
|
||||||
|
: (this.formValidate.is_new_year =
|
||||||
|
0 && this.checkboxGroup.remove("is_new_year"));
|
||||||
},
|
},
|
||||||
onChangeRecommend() {
|
onChangeRecommend() {
|
||||||
this.recommendForm.is_benefit = Number(
|
this.recommendForm.is_benefit = Number(
|
||||||
|
@ -1505,6 +1544,9 @@ export default {
|
||||||
this.recommendForm.is_energy = Number(
|
this.recommendForm.is_energy = Number(
|
||||||
this.recommendGroup.includes("is_energy")
|
this.recommendGroup.includes("is_energy")
|
||||||
);
|
);
|
||||||
|
this.recommendForm.is_new_year = Number(
|
||||||
|
this.recommendGroup.includes("is_new_year")
|
||||||
|
);
|
||||||
},
|
},
|
||||||
handleClose() {
|
handleClose() {
|
||||||
this.dialogVisible = false;
|
this.dialogVisible = false;
|
||||||
|
|
|
@ -58,9 +58,9 @@
|
||||||
</div>
|
</div>
|
||||||
<!-- <cards-data v-if="cardLists.length > 0" :card-lists="cardLists" /> -->
|
<!-- <cards-data v-if="cardLists.length > 0" :card-lists="cardLists" /> -->
|
||||||
<el-card>
|
<el-card>
|
||||||
<!-- <div class="mb20">
|
<div class="mb20">
|
||||||
<el-button size="small" type="primary" @click="exports">导出</el-button>
|
<el-button size="small" type="primary" @click="exports">导出</el-button>
|
||||||
</div> -->
|
</div>
|
||||||
<el-table v-loading="listLoading" :data="tableData.data" size="small">
|
<el-table v-loading="listLoading" :data="tableData.data" size="small">
|
||||||
<!-- <el-table-column prop="bill_id" label="ID" min-width="50" /> -->
|
<!-- <el-table-column prop="bill_id" label="ID" min-width="50" /> -->
|
||||||
<!-- <el-table-column label="用户昵称" prop="real_name" min-width="150" /> -->
|
<!-- <el-table-column label="用户昵称" prop="real_name" min-width="150" /> -->
|
||||||
|
@ -104,7 +104,7 @@
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import { backListApi, bonusExport } from "@/api/marketing";
|
import { backListApi, bonusExport, backListExport } from "@/api/marketing";
|
||||||
import fileList from "@/components/exportFile/fileList";
|
import fileList from "@/components/exportFile/fileList";
|
||||||
import cardsData from "@/components/cards/index";
|
import cardsData from "@/components/cards/index";
|
||||||
import createWorkBook from "@/utils/newToExcel.js";
|
import createWorkBook from "@/utils/newToExcel.js";
|
||||||
|
@ -187,7 +187,7 @@ export default {
|
||||||
/**列表 */
|
/**列表 */
|
||||||
downData(excelData) {
|
downData(excelData) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
bonusExport(excelData).then((res) => {
|
backListExport(excelData).then((res) => {
|
||||||
return resolve(res.data);
|
return resolve(res.data);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -61,7 +61,8 @@
|
||||||
<el-button size="small" type="primary" @click="exports">导出</el-button>
|
<el-button size="small" type="primary" @click="exports">导出</el-button>
|
||||||
</div>
|
</div>
|
||||||
<el-table v-loading="listLoading" :data="tableData.data" size="small">
|
<el-table v-loading="listLoading" :data="tableData.data" size="small">
|
||||||
<el-table-column prop="bill_id" label="ID" min-width="50" />
|
<el-table-column prop="bill_id" label="ID" min-width="60" />
|
||||||
|
<el-table-column prop="user.number" label="ID号" min-width="70" />
|
||||||
<el-table-column label="用户昵称" prop="nickname" min-width="150" />
|
<el-table-column label="用户昵称" prop="nickname" min-width="150" />
|
||||||
<el-table-column prop="user.phone" label="手机号" min-width="120" />
|
<el-table-column prop="user.phone" label="手机号" min-width="120" />
|
||||||
<el-table-column
|
<el-table-column
|
||||||
|
@ -105,11 +106,7 @@
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import {
|
import { integralLogTitle, bonusLogLst, bonusExport } from "@/api/marketing";
|
||||||
integralLogTitle,
|
|
||||||
bonusLogLst,
|
|
||||||
bonusExport,
|
|
||||||
} from "@/api/marketing";
|
|
||||||
import fileList from "@/components/exportFile/fileList";
|
import fileList from "@/components/exportFile/fileList";
|
||||||
import cardsData from "@/components/cards/index";
|
import cardsData from "@/components/cards/index";
|
||||||
import createWorkBook from "@/utils/newToExcel.js";
|
import createWorkBook from "@/utils/newToExcel.js";
|
||||||
|
|
|
@ -74,6 +74,7 @@
|
||||||
<script>
|
<script>
|
||||||
|
|
||||||
import { exportFileLstApi, excelFileType } from "@/api/order";
|
import { exportFileLstApi, excelFileType } from "@/api/order";
|
||||||
|
import axios from 'axios';
|
||||||
export default {
|
export default {
|
||||||
name: "FileList",
|
name: "FileList",
|
||||||
data() {
|
data() {
|
||||||
|
@ -126,8 +127,33 @@ export default {
|
||||||
|
|
||||||
},
|
},
|
||||||
// 下载
|
// 下载
|
||||||
downLoad(path) {
|
// downLoad(path) {
|
||||||
window.open(path)
|
// // window.open(path)
|
||||||
|
// const fileUrl = path; // 替换为实际的文件 URL
|
||||||
|
// const link = document.createElement('a');
|
||||||
|
// link.href = fileUrl;
|
||||||
|
// document.body.appendChild(link);
|
||||||
|
// link.click();
|
||||||
|
// document.body.removeChild(link);
|
||||||
|
// },
|
||||||
|
// 下载
|
||||||
|
async downLoad(path) {
|
||||||
|
try {
|
||||||
|
const response = await axios.get(path, {
|
||||||
|
responseType: 'blob'
|
||||||
|
});
|
||||||
|
const url = window.URL.createObjectURL(new Blob([response.data]));
|
||||||
|
const a = document.createElement('a');
|
||||||
|
a.href = url;
|
||||||
|
a.download = path.split('/').pop(); // 使用路径的最后一部分作为文件名
|
||||||
|
document.body.appendChild(a);
|
||||||
|
a.click();
|
||||||
|
document.body.removeChild(a);
|
||||||
|
window.URL.revokeObjectURL(url);
|
||||||
|
} catch (error) {
|
||||||
|
console.error('下载错误:', error);
|
||||||
|
this.$message.error('文件下载失败');
|
||||||
|
}
|
||||||
},
|
},
|
||||||
pageChange(page) {
|
pageChange(page) {
|
||||||
this.tableFrom.page = page;
|
this.tableFrom.page = page;
|
||||||
|
|
|
@ -1077,7 +1077,37 @@ export default {
|
||||||
},
|
},
|
||||||
exportRecord(excelData) {
|
exportRecord(excelData) {
|
||||||
exportUserApi(excelData)
|
exportUserApi(excelData)
|
||||||
.then((res) => {
|
.then(async (res) => {
|
||||||
|
if (res.data.filename) {
|
||||||
|
const loading = this.$loading({
|
||||||
|
lock: true,
|
||||||
|
text: "正在拼命导出中,请耐心等待...",
|
||||||
|
spinner: "el-icon-loading",
|
||||||
|
background: "hsla(0, 0%, 100%, .9)",
|
||||||
|
});
|
||||||
|
let data = [];
|
||||||
|
excelData.page = 1;
|
||||||
|
excelData.limit = 500;
|
||||||
|
let pageCount = 1;
|
||||||
|
let lebData = {};
|
||||||
|
for (let i = 0; i < pageCount; i++) {
|
||||||
|
lebData = await this.downData(excelData);
|
||||||
|
pageCount = Math.ceil(lebData.count / excelData.limit);
|
||||||
|
if (lebData.export.length) {
|
||||||
|
data = data.concat(lebData.export);
|
||||||
|
excelData.page++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
createWorkBook(
|
||||||
|
lebData.header,
|
||||||
|
lebData.title,
|
||||||
|
data,
|
||||||
|
lebData.foot,
|
||||||
|
lebData.filename
|
||||||
|
);
|
||||||
|
loading.close();
|
||||||
|
return;
|
||||||
|
}
|
||||||
const h = this.$createElement;
|
const h = this.$createElement;
|
||||||
this.$msgbox({
|
this.$msgbox({
|
||||||
title: "提示",
|
title: "提示",
|
||||||
|
|
Loading…
Reference in New Issue