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.
645 lines
27 KiB
645 lines
27 KiB
define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {
|
|
|
|
var Controller = {
|
|
index: () => {
|
|
const { reactive, onMounted, getCurrentInstance } = Vue
|
|
const index = {
|
|
setup() {
|
|
const { proxy } = getCurrentInstance();
|
|
|
|
const state = reactive({
|
|
data: [],
|
|
tabActive: null,
|
|
configis_upgrade: false,
|
|
})
|
|
const type = reactive({
|
|
data: {
|
|
api: Config.configList.filter((item) => {
|
|
if (item.status) return item;
|
|
})
|
|
}
|
|
})
|
|
|
|
const form = reactive({
|
|
model: {},
|
|
rules: {
|
|
rechargewithdraw: {
|
|
recharge: {
|
|
quick_amounts: {
|
|
money: [{ required: true, message: '请输入金额', trigger: 'blur' }],
|
|
gift: [{ required: true, message: '请输入内容', trigger: 'blur' }],
|
|
}
|
|
}
|
|
},
|
|
commission: {
|
|
agent_form: {
|
|
background_image: [{ required: true, message: '请选择表单背景图', trigger: 'blur' }],
|
|
content: {
|
|
type: [{ required: true, message: '表单类型', trigger: 'change' }],
|
|
name: [{ required: true, message: '表单名称', trigger: 'blur' }],
|
|
},
|
|
},
|
|
}
|
|
},
|
|
})
|
|
|
|
function getData() {
|
|
if (!state.tabActive) return;
|
|
if (state.tabActive == 'shopro/config/platform') {
|
|
getPlatformStatus()
|
|
} else if (state.tabActive == 'shopro/pay_config') {
|
|
getPayConfig()
|
|
} else {
|
|
Fast.api.ajax({
|
|
url: state.tabActive,
|
|
type: 'GET',
|
|
}, function (ret, res) {
|
|
form.model = res.data;
|
|
|
|
// 用户配置
|
|
if (state.tabActive == 'shopro/config/user') {
|
|
getGroupSelect()
|
|
}
|
|
|
|
if (state.tabActive == 'shopro/config/dispatch') {
|
|
form.model.sender.area_arr = []
|
|
form.model.sender.area_arr.push(form.model.sender.province_name)
|
|
form.model.sender.area_arr.push(form.model.sender.city_name)
|
|
form.model.sender.area_arr.push(form.model.sender.district_name)
|
|
|
|
express.form.model = form.model.kdniao.express
|
|
getExpressSelect()
|
|
getAreaSelect()
|
|
}
|
|
|
|
if (state.tabActive == 'shopro/config/commission') {
|
|
if (form.model.become_agent.type == 'goods') {
|
|
getGoodsList(form.model.become_agent.value);
|
|
}
|
|
if (!Config.is_pro) {
|
|
state.configis_upgrade = true
|
|
|
|
}
|
|
}
|
|
|
|
if (state.tabActive == 'shopro/config/chat') {
|
|
getChatConfig()
|
|
}
|
|
return false
|
|
}, function (ret, res) { })
|
|
}
|
|
}
|
|
|
|
// 基础配置
|
|
function onSelectRichtext(type) {
|
|
Fast.api.open(`shopro/data/richtext/select`, '选择富文本', {
|
|
callback(data) {
|
|
form.model[type].id = data.id;
|
|
form.model[type].title = data.title;
|
|
}
|
|
})
|
|
}
|
|
|
|
// 用户配置
|
|
const group = reactive({
|
|
select: []
|
|
})
|
|
function getGroupSelect() {
|
|
Fast.api.ajax({
|
|
url: 'shopro/user/group/select',
|
|
type: 'GET',
|
|
}, function (ret, res) {
|
|
group.select = res.data
|
|
return false
|
|
}, function (ret, res) { })
|
|
}
|
|
|
|
// 平台配置
|
|
const platform = reactive({
|
|
data: [{
|
|
value: 'H5',
|
|
label: 'H5',
|
|
color: '#fc800e',
|
|
},
|
|
{
|
|
value: 'WechatOfficialAccount',
|
|
label: '微信公众号',
|
|
color: '#07c160',
|
|
},
|
|
{
|
|
value: 'WechatMiniProgram',
|
|
label: '微信小程序',
|
|
color: '#6f74e9',
|
|
},
|
|
{
|
|
value: 'App',
|
|
label: 'App',
|
|
color: '#806af6',
|
|
}],
|
|
status: {},
|
|
})
|
|
function getPlatformStatus() {
|
|
Fast.api.ajax({
|
|
url: 'shopro/config/platformStatus',
|
|
type: 'GET',
|
|
}, function (ret, res) {
|
|
platform.status = res.data
|
|
return false
|
|
}, function (ret, res) { })
|
|
}
|
|
function onEditPlatform(item) {
|
|
Fast.api.open(`shopro/config/platform/platform/${item.value}?platform=${item.value}&label=${item.label}`, `平台-${item.label}`, {
|
|
callback() {
|
|
getData()
|
|
}
|
|
})
|
|
}
|
|
|
|
// 物流配置
|
|
const area = reactive({
|
|
select: []
|
|
})
|
|
function getAreaSelect() {
|
|
Fast.api.ajax({
|
|
url: 'shopro/data/area/select',
|
|
type: 'GET',
|
|
}, function (ret, res) {
|
|
area.select = res.data;
|
|
return false
|
|
}, function (ret, res) { })
|
|
}
|
|
|
|
const express = reactive({
|
|
form: {
|
|
model: {}
|
|
},
|
|
})
|
|
const deliverCompany = reactive({
|
|
loading: false,
|
|
select: [],
|
|
pagination: {
|
|
page: 1,
|
|
list_rows: 10,
|
|
total: 0,
|
|
}
|
|
})
|
|
function getExpressSelect(keyword) {
|
|
let search = {};
|
|
if (keyword) {
|
|
search = { keyword: keyword };
|
|
}
|
|
Fast.api.ajax({
|
|
url: 'shopro/data/express',
|
|
type: 'GET',
|
|
data: {
|
|
page: deliverCompany.pagination.page,
|
|
list_rows: deliverCompany.pagination.list_rows,
|
|
search: JSON.stringify(search),
|
|
}
|
|
}, function (ret, res) {
|
|
deliverCompany.select = res.data.data
|
|
deliverCompany.pagination.total = res.data.total
|
|
return false
|
|
}, function (ret, res) { })
|
|
}
|
|
function onChangeExpressCode(code) {
|
|
express.form.model = {}
|
|
express.form.model.code = code
|
|
express.form.model.name = proxy.$refs[`express-${code}`][0].label;
|
|
}
|
|
function remoteMethod(keyword) {
|
|
deliverCompany.loading = true;
|
|
setTimeout(() => {
|
|
deliverCompany.loading = false;
|
|
getExpressSelect(keyword);
|
|
}, 200);
|
|
}
|
|
|
|
function onThinkApi() {
|
|
window.open('https://docs.topthink.com/think-api/1835396');
|
|
}
|
|
|
|
// 充值提现
|
|
function onAddTemplate() {
|
|
form.model.recharge.quick_amounts.push({
|
|
money: '',
|
|
gift: '',
|
|
});
|
|
}
|
|
function onDeleteTemplate(index) {
|
|
form.model.recharge.quick_amounts.splice(index, 1);
|
|
}
|
|
|
|
// 分销配置
|
|
function onChangeBecomeAgentType(type) {
|
|
if (type === 'user') {
|
|
form.model.invite_lock = 'share';
|
|
}
|
|
if (type === 'apply') {
|
|
form.model.agent_form.status = '1';
|
|
}
|
|
if (type === 'goods') {
|
|
tempGoods.list = [];
|
|
}
|
|
form.model.become_agent.value = '';
|
|
}
|
|
const tempGoods = reactive({
|
|
list: [],
|
|
});
|
|
async function getGoodsList(ids) {
|
|
Fast.api.ajax({
|
|
url: 'shopro/goods/goods/select',
|
|
type: 'GET',
|
|
data: {
|
|
type: 'select',
|
|
search: JSON.stringify({ id: [ids, 'in'] }),
|
|
},
|
|
}, function (ret, res) {
|
|
tempGoods.list = res.data;
|
|
return false
|
|
}, function (ret, res) { })
|
|
}
|
|
function onSelectGoods() {
|
|
let ids = [];
|
|
tempGoods.list.forEach((i) => {
|
|
ids.push(i.id);
|
|
});
|
|
Fast.api.open(`shopro/goods/goods/select?multiple=true&ids=${ids.join(',')}`, "选择商品", {
|
|
callback(data) {
|
|
tempGoods.list = data;
|
|
let ids = [];
|
|
tempGoods.list.forEach((item) => {
|
|
ids.push(item.id);
|
|
});
|
|
form.model.become_agent.value = ids.join(',');
|
|
}
|
|
})
|
|
}
|
|
function onDeleteGoods(index) {
|
|
tempGoods.list.splice(index, 1);
|
|
let ids = [];
|
|
tempGoods.list.forEach((gl) => {
|
|
ids.push(gl.id);
|
|
});
|
|
form.model.become_agent.value = ids.join(',');
|
|
}
|
|
|
|
const become_register_options = [
|
|
{
|
|
value: 'text',
|
|
label: '文本内容',
|
|
},
|
|
{
|
|
value: 'number',
|
|
label: '纯数字',
|
|
},
|
|
{
|
|
value: 'image',
|
|
label: '上传图片',
|
|
},
|
|
];
|
|
function onAddContent() {
|
|
form.model.agent_form.content.push({
|
|
type: '',
|
|
name: '',
|
|
});
|
|
}
|
|
function onDeleteContent(index) {
|
|
form.model.agent_form.content.splice(index, 1);
|
|
}
|
|
|
|
// 支付配置
|
|
const payConfig = reactive({
|
|
data: []
|
|
})
|
|
function getPayConfig() {
|
|
Fast.api.ajax({
|
|
url: 'shopro/pay_config',
|
|
type: 'GET',
|
|
}, function (ret, res) {
|
|
payConfig.data = res.data.data
|
|
pagination.total = res.data.total
|
|
return false
|
|
}, function (ret, res) { })
|
|
}
|
|
const pagination = reactive({
|
|
page: 1,
|
|
list_rows: 10,
|
|
total: 0,
|
|
})
|
|
function onCommandPayConfig(item) {
|
|
Fast.api.ajax({
|
|
url: `shopro/pay_config/edit/id/${item.id}`,
|
|
type: 'POST',
|
|
data: {
|
|
status: item.type
|
|
}
|
|
}, function (ret, res) {
|
|
getPayConfig()
|
|
}, function (ret, res) { })
|
|
}
|
|
function onAddPayConfig() {
|
|
Fast.api.open('shopro/pay_config/add?type=add', "添加", {
|
|
callback() {
|
|
getPayConfig()
|
|
}
|
|
})
|
|
}
|
|
function onEditPayConfig(id) {
|
|
Fast.api.open(`shopro/pay_config/edit?type=edit&id=${id}`, "编辑", {
|
|
callback() {
|
|
getPayConfig()
|
|
}
|
|
})
|
|
}
|
|
function onDeletePayConfig(id) {
|
|
Fast.api.ajax({
|
|
url: `shopro/pay_config/delete/id/${id}`,
|
|
type: 'DELETE',
|
|
}, function (ret, res) {
|
|
getPayConfig()
|
|
}, function (ret, res) { })
|
|
}
|
|
function onRecyclebinPayConfig() {
|
|
Fast.api.open(`shopro/pay_config/recyclebin`, "回收站", {
|
|
callback() {
|
|
getPayConfig()
|
|
}
|
|
})
|
|
}
|
|
|
|
// 客服配置
|
|
const chat = reactive({
|
|
config: {}
|
|
})
|
|
function getChatConfig() {
|
|
Fast.api.ajax({
|
|
url: `shopro/chat/index/init`,
|
|
type: 'GET',
|
|
}, function (ret, res) {
|
|
chat.config = res.data
|
|
return false
|
|
}, function (ret, res) { })
|
|
}
|
|
|
|
function onConfirm() {
|
|
const submitForm = JSON.parse(JSON.stringify(form.model))
|
|
if (state.tabActive == 'shopro/config/dispatch') {
|
|
if (submitForm.sender.area_arr) {
|
|
submitForm.sender.province_name = submitForm.sender.area_arr[0]
|
|
submitForm.sender.city_name = submitForm.sender.area_arr[1]
|
|
submitForm.sender.district_name = submitForm.sender.area_arr[2]
|
|
delete submitForm.sender.area_arr
|
|
|
|
} else {
|
|
submitForm.sender.province_name = ''
|
|
submitForm.sender.city_name = ''
|
|
submitForm.sender.district_name = ''
|
|
|
|
}
|
|
submitForm.kdniao.express = express.form.model
|
|
}
|
|
if (state.tabActive == 'shopro/config/redis') {
|
|
if (submitForm.empty_password) {
|
|
delete submitForm.password
|
|
}
|
|
}
|
|
proxy.$refs['formRef'].validate((valid) => {
|
|
if (valid) {
|
|
Fast.api.ajax({
|
|
url: state.tabActive,
|
|
type: 'POST',
|
|
data: submitForm,
|
|
}, function (ret, res) {
|
|
}, function (ret, res) { })
|
|
}
|
|
});
|
|
}
|
|
|
|
function onOper(type) {
|
|
switch (type) {
|
|
case 'close':
|
|
state.configis_upgrade = false
|
|
break;
|
|
case 'refresh':
|
|
window.location.reload();
|
|
break;
|
|
case 'upgrade':
|
|
window.open("https://www.fastadmin.net/store/shopro.html")
|
|
break;
|
|
}
|
|
}
|
|
|
|
onMounted(() => {
|
|
state.tabActive = type.data.api.length ? type.data.api[0].name : null;
|
|
getData()
|
|
})
|
|
|
|
return {
|
|
onClipboard,
|
|
state,
|
|
type,
|
|
form,
|
|
getData,
|
|
onSelectRichtext,
|
|
group,
|
|
platform,
|
|
onEditPlatform,
|
|
|
|
area,
|
|
express,
|
|
deliverCompany,
|
|
getExpressSelect,
|
|
onChangeExpressCode,
|
|
remoteMethod,
|
|
onThinkApi,
|
|
|
|
onAddTemplate,
|
|
onDeleteTemplate,
|
|
|
|
onChangeBecomeAgentType,
|
|
tempGoods,
|
|
onSelectGoods,
|
|
onDeleteGoods,
|
|
become_register_options,
|
|
onAddContent,
|
|
onDeleteContent,
|
|
|
|
payConfig,
|
|
pagination,
|
|
onCommandPayConfig,
|
|
onAddPayConfig,
|
|
onEditPayConfig,
|
|
onDeletePayConfig,
|
|
onRecyclebinPayConfig,
|
|
|
|
chat,
|
|
|
|
onConfirm,
|
|
onOper
|
|
}
|
|
}
|
|
}
|
|
createApp('index', index);
|
|
},
|
|
platform: () => {
|
|
const { reactive, onMounted, getCurrentInstance } = Vue
|
|
const platform = {
|
|
setup() {
|
|
const { proxy } = getCurrentInstance();
|
|
|
|
const state = reactive({
|
|
platform: new URLSearchParams(location.search).get('platform'),
|
|
label: new URLSearchParams(location.search).get('label'),
|
|
})
|
|
|
|
const form = reactive({
|
|
model: {
|
|
app_id: '',
|
|
secret: '',
|
|
status: '',
|
|
payment: {
|
|
alipay: '',
|
|
wechat: '',
|
|
methods: [],
|
|
},
|
|
share: {
|
|
methods: [],
|
|
forwardInfo: {
|
|
title: '',
|
|
subtitle: '',
|
|
image: '',
|
|
},
|
|
linkAddress: '',
|
|
posterInfo: {
|
|
user_bg: '',
|
|
goods_bg: '',
|
|
groupon_bg: '',
|
|
},
|
|
},
|
|
download: {
|
|
android: '',
|
|
ios: '',
|
|
local: '',
|
|
},
|
|
},
|
|
rules: {}
|
|
})
|
|
|
|
function getDetail() {
|
|
Fast.api.ajax({
|
|
url: `shopro/config/platform/platform/${state.platform}`,
|
|
type: 'GET',
|
|
}, function (ret, res) {
|
|
form.model = res.data;
|
|
if (isEmpty(form.model.share)) {
|
|
form.model.share = {
|
|
methods: [],
|
|
forwardInfo: {
|
|
title: '',
|
|
subtitle: '',
|
|
image: '',
|
|
},
|
|
linkAddress: '',
|
|
posterInfo: {
|
|
user_bg: '',
|
|
goods_bg: '',
|
|
groupon_bg: '',
|
|
},
|
|
};
|
|
}
|
|
if (isEmpty(form.model.download)) {
|
|
form.model.download = {
|
|
android: '',
|
|
ios: '',
|
|
local: '',
|
|
};
|
|
}
|
|
if (state.platform != 'H5' && !form.model.share.methods.includes('forward')) {
|
|
form.model.share.methods.push('forward');
|
|
}
|
|
if (form.model.payment.wechat === 0) {
|
|
form.model.payment.wechat = ''
|
|
}
|
|
if (form.model.payment.alipay === 0) {
|
|
form.model.payment.alipay = ''
|
|
}
|
|
return false
|
|
}, function (ret, res) { })
|
|
}
|
|
|
|
function onConfiguration() {
|
|
if (state.platform == 'H5') {
|
|
window.open('https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter2_6_1.shtml');
|
|
}
|
|
if (state.platform == 'App') {
|
|
window.open('https://open.weixin.qq.com/');
|
|
}
|
|
}
|
|
|
|
const payConfig = reactive({
|
|
select: {
|
|
alipay: [],
|
|
wechat: [],
|
|
}
|
|
})
|
|
function getPayConfigSelect() {
|
|
Fast.api.ajax({
|
|
url: 'shopro/pay_config/select',
|
|
type: 'GET',
|
|
}, function (ret, res) {
|
|
payConfig.select.alipay = []
|
|
payConfig.select.wechat = []
|
|
res.data.forEach(item => {
|
|
if (item.type == 'alipay') {
|
|
payConfig.select.alipay.push(item)
|
|
}
|
|
if (item.type == 'wechat') {
|
|
payConfig.select.wechat.push(item)
|
|
}
|
|
})
|
|
return false
|
|
}, function (ret, res) { })
|
|
}
|
|
function onAddPayConfig() {
|
|
Fast.api.open('shopro/pay_config/add?type=add', "添加", {
|
|
callback() {
|
|
getPayConfigSelect()
|
|
}
|
|
})
|
|
}
|
|
|
|
function onConfirm() {
|
|
proxy.$refs['formRef'].validate((valid) => {
|
|
if (valid) {
|
|
Fast.api.ajax({
|
|
url: `shopro/config/platform/platform/${state.platform}`,
|
|
type: 'POST',
|
|
data: form.model,
|
|
}, function (ret, res) {
|
|
Fast.api.close()
|
|
}, function (ret, res) { })
|
|
}
|
|
});
|
|
}
|
|
|
|
onMounted(() => {
|
|
getPayConfigSelect()
|
|
getDetail()
|
|
})
|
|
|
|
return {
|
|
state,
|
|
form,
|
|
onConfiguration,
|
|
payConfig,
|
|
onAddPayConfig,
|
|
onConfirm,
|
|
}
|
|
}
|
|
}
|
|
createApp('platform', platform);
|
|
},
|
|
};
|
|
return Controller;
|
|
});
|
|
|