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.
 
 
 
 
 
 
ymww_backend/public/assets/js/backend/shopro/config.js

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;
});