init
- 框架初始化 - 安装插件 - 修复PHP8.4报错
This commit is contained in:
254
public/assets/js/backend/shopro/dispatch/dispatch.js
Normal file
254
public/assets/js/backend/shopro/dispatch/dispatch.js
Normal file
@@ -0,0 +1,254 @@
|
||||
define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {
|
||||
|
||||
var Controller = {
|
||||
index: () => {
|
||||
const { reactive, onMounted } = Vue
|
||||
const index = {
|
||||
setup() {
|
||||
const state = reactive({
|
||||
dispatch_type: 'express',
|
||||
data: [],
|
||||
})
|
||||
|
||||
function getData() {
|
||||
Fast.api.ajax({
|
||||
url: 'shopro/dispatch/dispatch',
|
||||
type: 'GET',
|
||||
data: {
|
||||
page: pagination.page,
|
||||
list_rows: pagination.list_rows,
|
||||
type: state.dispatch_type
|
||||
},
|
||||
}, function (ret, res) {
|
||||
state.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 onChangeTab() {
|
||||
pagination.page = 1
|
||||
getData()
|
||||
}
|
||||
|
||||
function onAdd() {
|
||||
Fast.api.open(`shopro/dispatch/dispatch/add?type=add&dispatch_type=${state.dispatch_type}`, "添加", {
|
||||
callback() {
|
||||
getData()
|
||||
}
|
||||
})
|
||||
}
|
||||
function onEdit(id) {
|
||||
Fast.api.open(`shopro/dispatch/dispatch/edit?type=edit&id=${id}&dispatch_type=${state.dispatch_type}`, "编辑", {
|
||||
callback() {
|
||||
getData()
|
||||
}
|
||||
})
|
||||
}
|
||||
function onCopy(id) {
|
||||
Fast.api.open(`shopro/dispatch/dispatch/add?type=copy&id=${id}&dispatch_type=${state.dispatch_type}`, "复制", {
|
||||
callback() {
|
||||
getData()
|
||||
}
|
||||
})
|
||||
}
|
||||
function onDelete(id) {
|
||||
Fast.api.ajax({
|
||||
url: `shopro/dispatch/dispatch/delete/id/${id}?type=${state.dispatch_type}`,
|
||||
type: 'DELETE',
|
||||
}, function (ret, res) {
|
||||
getData()
|
||||
}, function (ret, res) { })
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
getData()
|
||||
})
|
||||
|
||||
return {
|
||||
state,
|
||||
getData,
|
||||
pagination,
|
||||
onChangeTab,
|
||||
onAdd,
|
||||
onEdit,
|
||||
onCopy,
|
||||
onDelete
|
||||
}
|
||||
}
|
||||
}
|
||||
createApp('index', index);
|
||||
},
|
||||
add: () => {
|
||||
Controller.form();
|
||||
},
|
||||
edit: () => {
|
||||
Controller.form();
|
||||
},
|
||||
form: () => {
|
||||
const { reactive, onMounted, getCurrentInstance } = Vue
|
||||
const addEdit = {
|
||||
setup() {
|
||||
const { proxy } = getCurrentInstance();
|
||||
|
||||
const state = reactive({
|
||||
type: new URLSearchParams(location.search).get('type'),
|
||||
id: new URLSearchParams(location.search).get('id'),
|
||||
dispatch_type: new URLSearchParams(location.search).get('dispatch_type'),
|
||||
priceType: 'number',
|
||||
})
|
||||
|
||||
const form = reactive({
|
||||
model: {
|
||||
// dispatch_type: state.dispatch_type,
|
||||
name: '',
|
||||
type: state.dispatch_type,
|
||||
express: [],
|
||||
autosend: {
|
||||
type: "text",
|
||||
content: ""
|
||||
}
|
||||
},
|
||||
rules: {
|
||||
name: [{ required: true, message: '请输入模板名称', trigger: 'blur' }],
|
||||
express: {
|
||||
first_num: [{ required: true, message: '请输入数量', trigger: 'blur' }],
|
||||
first_price: [{ required: true, message: '请输入运费', trigger: 'blur' }],
|
||||
additional_num: [{ required: true, message: '请输入数量', trigger: 'blur' }],
|
||||
additional_price: [{ required: true, message: '请输入续费', trigger: 'blur' }],
|
||||
district_text: [{ required: true, message: '请选择可配送区域', trigger: 'blur' }],
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
function getDetail() {
|
||||
Fast.api.ajax({
|
||||
url: `shopro/dispatch/dispatch/detail/id/${state.id}`,
|
||||
type: 'GET',
|
||||
data: {
|
||||
type: state.dispatch_type,
|
||||
}
|
||||
}, function (ret, res) {
|
||||
form.model = res.data;
|
||||
if (state.dispatch_type == 'express') {
|
||||
state.priceType = form.model.express.length > 0 ? form.model.express[0].type : 'number';
|
||||
}
|
||||
return false
|
||||
}, function (ret, res) { })
|
||||
}
|
||||
|
||||
function onAddTemplate() {
|
||||
form.model.express.push({
|
||||
type: state.priceType,
|
||||
first_num: 0,
|
||||
first_price: 0,
|
||||
additional_num: 0,
|
||||
additional_price: 0,
|
||||
province_ids: '',
|
||||
city_ids: '',
|
||||
district_ids: '',
|
||||
});
|
||||
}
|
||||
function onDeleteTemplate(index) {
|
||||
form.model.express.splice(index, 1);
|
||||
}
|
||||
|
||||
function onSelectArea(index) {
|
||||
let selected = {
|
||||
province: form.model.express[index].province_ids,
|
||||
city: form.model.express[index].city_ids,
|
||||
district: form.model.express[index].district_ids,
|
||||
}
|
||||
Fast.api.open(`shopro/data/area/select?selected=${encodeURI(JSON.stringify(selected))}`, "选择地区", {
|
||||
callback(data) {
|
||||
let text = [];
|
||||
for (var key in data) {
|
||||
let ids = [];
|
||||
for (var id in data[key]) {
|
||||
ids.push(id);
|
||||
text.push(data[key][id]);
|
||||
}
|
||||
form.model.express[index][key + '_ids'] = ids.join(',');
|
||||
}
|
||||
form.model.express[index].district_text = text.join(',');
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
function onChangeAutosendType(type) {
|
||||
form.model.autosend.content = type == 'text' ? '' : []
|
||||
}
|
||||
function onAddContent() {
|
||||
console.log(123, form.model.autosend.content)
|
||||
if(!form.model.autosend.content){
|
||||
form.model.autosend.content=[]
|
||||
}
|
||||
form.model.autosend.content.push({
|
||||
title: '',
|
||||
content: '',
|
||||
});
|
||||
}
|
||||
function onDeleteContent(index) {
|
||||
form.model.autosend.content.splice(index, 1);
|
||||
}
|
||||
|
||||
function onConfirm() {
|
||||
proxy.$refs['formRef'].validate((valid) => {
|
||||
if (valid) {
|
||||
let submitForm = JSON.parse(JSON.stringify(form.model));
|
||||
|
||||
if (state.dispatch_type == 'express') {
|
||||
submitForm.express.forEach((item) => {
|
||||
item.type = state.priceType;
|
||||
});
|
||||
|
||||
if (state.type == 'copy') {
|
||||
delete submitForm.id;
|
||||
submitForm.express.forEach((item) => {
|
||||
delete item.id;
|
||||
});
|
||||
}
|
||||
}else if(state.dispatch_type == 'autosend'){
|
||||
if (state.type == 'copy') {
|
||||
delete submitForm.id;
|
||||
}
|
||||
}
|
||||
Fast.api.ajax({
|
||||
url: state.type == 'add' || state.type == 'copy' ? 'shopro/dispatch/dispatch/add' : `shopro/dispatch/dispatch/edit/id/${state.id}`,
|
||||
type: 'POST',
|
||||
data: submitForm,
|
||||
}, function (ret, res) {
|
||||
Fast.api.close()
|
||||
}, function (ret, res) { })
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
(state.type == 'edit' || state.type == 'copy') && getDetail()
|
||||
})
|
||||
|
||||
return {
|
||||
state,
|
||||
form,
|
||||
onAddTemplate,
|
||||
onDeleteTemplate,
|
||||
onSelectArea,
|
||||
onChangeAutosendType,
|
||||
onAddContent,
|
||||
onDeleteContent,
|
||||
onConfirm
|
||||
}
|
||||
}
|
||||
}
|
||||
createApp('addEdit', addEdit);
|
||||
}
|
||||
};
|
||||
return Controller;
|
||||
});
|
||||
Reference in New Issue
Block a user