You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
291 lines
11 KiB
291 lines
11 KiB
define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {
|
|
|
|
var Controller = {
|
|
index: () => {
|
|
const { reactive, onMounted } = Vue
|
|
const index = {
|
|
setup() {
|
|
const state = reactive({
|
|
data: [],
|
|
order: '',
|
|
sort: '',
|
|
filter: {
|
|
drawer: false,
|
|
data: {
|
|
status: 'all',
|
|
user: { field: 'user_id', value: '' },
|
|
withdraw_type: 'all',
|
|
createtime: [],
|
|
updatetime: [],
|
|
},
|
|
tools: {
|
|
user: {
|
|
type: 'tinputprepend',
|
|
label: '用户信息',
|
|
placeholder: '请输入查询内容',
|
|
value: {
|
|
field: 'user_id',
|
|
value: '',
|
|
},
|
|
options: {
|
|
data: [{
|
|
label: '用户ID',
|
|
value: 'user_id',
|
|
},
|
|
{
|
|
label: '用户昵称',
|
|
value: 'user.nickname',
|
|
},
|
|
{
|
|
label: '用户手机号',
|
|
value: 'user.mobile',
|
|
}]
|
|
}
|
|
},
|
|
withdraw_type: {
|
|
type: 'tselect',
|
|
label: '提现方式',
|
|
value: '',
|
|
options: {
|
|
data: [{
|
|
label: '全部',
|
|
value: 'all',
|
|
},
|
|
{
|
|
label: '支付宝账户',
|
|
value: 'alipay',
|
|
},
|
|
{
|
|
label: '微信零钱',
|
|
value: 'wechat',
|
|
},
|
|
{
|
|
label: '银行卡',
|
|
value: 'bank',
|
|
}]
|
|
},
|
|
},
|
|
createtime: {
|
|
type: 'tdatetimerange',
|
|
label: '下单时间',
|
|
value: [],
|
|
},
|
|
updatetime: {
|
|
type: 'tdatetimerange',
|
|
label: '上次操作时间',
|
|
value: [],
|
|
},
|
|
},
|
|
condition: {},
|
|
},
|
|
statusStyle: {
|
|
'-1': 'sa-color--danger',
|
|
0: 'sa-color--info',
|
|
1: 'sa-color--warning',
|
|
2: 'sa-color--success',
|
|
}
|
|
})
|
|
|
|
const type = reactive({
|
|
data: {
|
|
status: [{
|
|
name: '全部',
|
|
type: 'all',
|
|
},
|
|
{
|
|
name: '待审核',
|
|
type: '0',
|
|
},
|
|
{
|
|
name: '处理中',
|
|
type: '1',
|
|
},
|
|
{
|
|
name: '已处理',
|
|
type: '2',
|
|
},
|
|
{
|
|
name: '已拒绝',
|
|
type: '-1',
|
|
},],
|
|
}
|
|
})
|
|
|
|
function getData() {
|
|
let tempSearch = JSON.parse(JSON.stringify(state.filter.data));
|
|
let search = composeFilter(tempSearch, {
|
|
'user.nickname': 'like',
|
|
'user.mobile': 'like',
|
|
createtime: 'range',
|
|
updatetime: 'range',
|
|
});
|
|
Fast.api.ajax({
|
|
url: 'shopro/withdraw',
|
|
type: 'GET',
|
|
data: {
|
|
page: pagination.page,
|
|
list_rows: pagination.list_rows,
|
|
order: state.order,
|
|
sort: state.sort,
|
|
...search,
|
|
},
|
|
}, function (ret, res) {
|
|
state.data = res.data.data
|
|
pagination.total = res.data.total
|
|
return false
|
|
}, function (ret, res) { })
|
|
}
|
|
|
|
function onChangeSort({ prop, order }) {
|
|
state.order = order == 'ascending' ? 'asc' : 'desc';
|
|
state.sort = prop;
|
|
getData();
|
|
}
|
|
function onOpenFilter() {
|
|
state.filter.drawer = true
|
|
}
|
|
function onChangeFilter() {
|
|
pagination.page = 1
|
|
getData()
|
|
state.filter.drawer && (state.filter.drawer = false)
|
|
}
|
|
|
|
function onChangeTab() {
|
|
pagination.page = 1
|
|
getData()
|
|
}
|
|
|
|
const pagination = reactive({
|
|
page: 1,
|
|
list_rows: 10,
|
|
total: 0,
|
|
})
|
|
|
|
const handlePopover = reactive({
|
|
flag: {}
|
|
})
|
|
|
|
function onAgree(id, index, type) {
|
|
handlePopover.flag[index] = false;
|
|
Fast.api.ajax({
|
|
url: `shopro/withdraw/handle/id/${id}`,
|
|
type: 'POST',
|
|
data: {
|
|
action: type,
|
|
},
|
|
}, function (ret, res) {
|
|
getData();
|
|
}, function (ret, res) { })
|
|
}
|
|
|
|
function onRefuse(id) {
|
|
Fast.api.open(`shopro/withdraw/handle/id/${id}?id=${id}`, "拒绝", {
|
|
callback() {
|
|
getData()
|
|
}
|
|
})
|
|
}
|
|
|
|
function onLog(id) {
|
|
Fast.api.open(`shopro/withdraw/log/id/${id}?id=${id}`, "日志")
|
|
}
|
|
|
|
onMounted(() => {
|
|
getData()
|
|
})
|
|
|
|
return {
|
|
onClipboard,
|
|
state,
|
|
type,
|
|
getData,
|
|
onChangeSort,
|
|
onOpenFilter,
|
|
onChangeFilter,
|
|
onChangeTab,
|
|
pagination,
|
|
handlePopover,
|
|
onAgree,
|
|
onRefuse,
|
|
onLog,
|
|
}
|
|
}
|
|
}
|
|
createApp('index', index);
|
|
},
|
|
handle: () => {
|
|
const { reactive, getCurrentInstance } = Vue
|
|
const handle = {
|
|
setup() {
|
|
const { proxy } = getCurrentInstance();
|
|
|
|
const state = reactive({
|
|
id: new URLSearchParams(location.search).get('id'),
|
|
})
|
|
|
|
const form = reactive({
|
|
model: {
|
|
action: 'refuse',
|
|
refuse_msg: '',
|
|
},
|
|
rules: {
|
|
refuse_msg: [{ required: true, message: '请输入拒绝理由', trigger: 'blur' }],
|
|
},
|
|
});
|
|
|
|
function onConfirm() {
|
|
proxy.$refs['formRef'].validate((valid) => {
|
|
if (valid) {
|
|
Fast.api.ajax({
|
|
url: `shopro/withdraw/handle/id/${state.id}`,
|
|
type: 'POST',
|
|
data: form.model
|
|
}, function (ret, res) {
|
|
Fast.api.close()
|
|
}, function (ret, res) { })
|
|
}
|
|
});
|
|
}
|
|
|
|
return {
|
|
state,
|
|
form,
|
|
onConfirm,
|
|
}
|
|
}
|
|
}
|
|
createApp('handle', handle);
|
|
},
|
|
log: () => {
|
|
const { reactive, onMounted } = Vue
|
|
const log = {
|
|
setup() {
|
|
const state = reactive({
|
|
id: new URLSearchParams(location.search).get('id'),
|
|
data: [],
|
|
})
|
|
|
|
function getData() {
|
|
Fast.api.ajax({
|
|
url: `shopro/withdraw/log/id/${state.id}`,
|
|
type: 'GET',
|
|
}, function (ret, res) {
|
|
state.data = res.data
|
|
return false
|
|
}, function (ret, res) { })
|
|
}
|
|
|
|
onMounted(() => {
|
|
getData()
|
|
})
|
|
|
|
return {
|
|
state,
|
|
}
|
|
}
|
|
}
|
|
createApp('log', log);
|
|
},
|
|
};
|
|
return Controller;
|
|
});
|
|
|