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.
265 lines
12 KiB
265 lines
12 KiB
define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'toastr'], function ($, undefined, Backend, Table, Form, Toastr) {
|
|
|
|
var Controller = {
|
|
index: function () {},
|
|
recyclebin: function () {
|
|
// 初始化表格参数配置
|
|
Table.api.init({
|
|
extend: {
|
|
'dragsort_url': ''
|
|
}
|
|
});
|
|
|
|
var table = $("#table");
|
|
|
|
// 初始化表格
|
|
table.bootstrapTable({
|
|
url: 'shopro/dispatch/express/recyclebin' + location.search,
|
|
pk: 'id',
|
|
sortName: 'deletetime',
|
|
columns: [
|
|
[{
|
|
checkbox: true
|
|
},
|
|
{
|
|
field: 'id',
|
|
title: __('Id')
|
|
},
|
|
{
|
|
field: 'name',
|
|
title: __('Title'),
|
|
align: 'left'
|
|
},
|
|
{
|
|
field: 'deletetime',
|
|
title: __('Deletetime'),
|
|
operate: 'RANGE',
|
|
addclass: 'datetimerange',
|
|
formatter: Table.api.formatter.datetime
|
|
},
|
|
{
|
|
field: 'operate',
|
|
width: '130px',
|
|
title: __('Operate'),
|
|
table: table,
|
|
events: Table.api.events.operate,
|
|
buttons: [{
|
|
name: 'Restore',
|
|
text: __('Restore'),
|
|
classname: 'btn btn-xs btn-info btn-ajax btn-restoreit',
|
|
icon: 'fa fa-rotate-left',
|
|
url: 'shopro/dispatch/express/restore',
|
|
refresh: true
|
|
},
|
|
{
|
|
name: 'Destroy',
|
|
text: __('Destroy'),
|
|
classname: 'btn btn-xs btn-danger btn-ajax btn-destroyit',
|
|
icon: 'fa fa-times',
|
|
url: 'shopro/dispatch/express/destroy',
|
|
refresh: true
|
|
}
|
|
],
|
|
formatter: Table.api.formatter.operate
|
|
}
|
|
]
|
|
]
|
|
});
|
|
|
|
// 为表格绑定事件
|
|
Table.api.bindevent(table);
|
|
},
|
|
add: function () {
|
|
Controller.detailInit('add');
|
|
},
|
|
edit: function () {
|
|
Controller.detailInit('edit');
|
|
},
|
|
detailInit: function (type) {
|
|
// 大于0的数、最多两位小数
|
|
Vue.directive('enterNumber', {
|
|
inserted: function (el) {
|
|
let changeValue = (el, type) => {
|
|
const e = document.createEvent('HTMLEvents')
|
|
e.initEvent(type, true, true)
|
|
el.dispatchEvent(e)
|
|
}
|
|
el.addEventListener("keyup", function (e) {
|
|
let input = e.target;
|
|
let reg = new RegExp('^((?:(?:[1-9]{1}\\d*)|(?:[0]{1}))(?:\\.(?:\\d){0,2})?)(?:\\d*)?$');
|
|
let matchRes = input.value.match(reg);
|
|
if (matchRes === null) {
|
|
input.value = "";
|
|
} else {
|
|
if (matchRes[1] !== matchRes[0]) {
|
|
input.value = matchRes[1];
|
|
}
|
|
}
|
|
changeValue(input, 'input')
|
|
});
|
|
}
|
|
});
|
|
var dispatchDetail = new Vue({
|
|
el: "#dispatchDetail",
|
|
data() {
|
|
return {
|
|
optType: type,
|
|
dispatchForm: {},
|
|
rules: {
|
|
name: [{
|
|
required: true,
|
|
message: '请输入模板名称',
|
|
trigger: 'blur'
|
|
}],
|
|
type: [{
|
|
required: true,
|
|
message: '请选择计价方式',
|
|
trigger: 'change'
|
|
}],
|
|
},
|
|
dispatchFormInit: {
|
|
name: '',
|
|
type: 'number',
|
|
express: [{
|
|
first_num: 0,
|
|
first_price: 0.00,
|
|
additional_num: 0,
|
|
additional_price: 0.00,
|
|
area_text: '',
|
|
province_ids: '',
|
|
city_ids: '',
|
|
area_ids: '',
|
|
weigh: '',
|
|
}],
|
|
},
|
|
dispatch_id: null,
|
|
deleteArr: ['createtime', 'deletetime', 'name', 'type', 'type_text', 'updatetime'],
|
|
|
|
}
|
|
},
|
|
mounted() {
|
|
if (this.optType == 'add') {
|
|
this.dispatchForm = JSON.parse(JSON.stringify(this.dispatchFormInit));
|
|
} else {
|
|
this.dispatch_id = Config.row.id;
|
|
this.dispatchForm = JSON.parse(JSON.stringify(this.dispatchFormInit));
|
|
for (key in this.dispatchForm) {
|
|
if (key == 'type') {
|
|
this.dispatchForm[key] = Config.row.express[0].type
|
|
} else {
|
|
this.dispatchForm[key] = Config.row[key]
|
|
}
|
|
}
|
|
this.dispatchForm.express.forEach(i => {
|
|
this.deleteArr.forEach(j => {
|
|
delete i[j]
|
|
})
|
|
})
|
|
}
|
|
},
|
|
methods: {
|
|
dispatchSub(type, issub) {
|
|
let that = this;
|
|
if (type == 'yes') {
|
|
this.$refs[issub].validate((valid) => {
|
|
if (valid) {
|
|
if (that.dispatchForm.express.length == 0) {
|
|
Toastr.error('请选择配送规则');
|
|
return false;
|
|
}
|
|
let isArea = true;
|
|
that.dispatchForm.express.forEach((i, index) => {
|
|
if (i.province_ids == '' && i.city_ids == '' && i.area_ids == '') {
|
|
isArea = false
|
|
}
|
|
})
|
|
if (!isArea) {
|
|
Toastr.error('请选择地址');
|
|
return false;
|
|
}
|
|
let subData = JSON.parse(JSON.stringify(that.dispatchForm));
|
|
let leng = subData.express.length;
|
|
subData.express.forEach((i, index) => {
|
|
i.weigh = leng - index;
|
|
delete i.area_text
|
|
})
|
|
if (this.optType != 'add') {
|
|
Fast.api.ajax({
|
|
url: 'shopro/dispatch/express/edit?ids=' + that.dispatch_id,
|
|
loading: true,
|
|
data: {
|
|
data: JSON.stringify(subData)
|
|
}
|
|
}, function (ret, res) {
|
|
Fast.api.close({
|
|
data: true
|
|
})
|
|
})
|
|
} else {
|
|
Fast.api.ajax({
|
|
url: 'shopro/dispatch/express/add',
|
|
loading: true,
|
|
type: "POST",
|
|
data: {
|
|
data: JSON.stringify(subData)
|
|
}
|
|
}, function (ret, res) {
|
|
Fast.api.close({
|
|
data: true
|
|
})
|
|
})
|
|
}
|
|
} else {
|
|
return false;
|
|
}
|
|
});
|
|
} else {
|
|
Fast.api.close({
|
|
data: false
|
|
})
|
|
}
|
|
},
|
|
editArea(index) {
|
|
let that = this;
|
|
let parmas = {
|
|
name: that.dispatchForm.express[index].area_text,
|
|
province_ids: that.dispatchForm.express[index].province_ids,
|
|
city_ids: that.dispatchForm.express[index].city_ids,
|
|
area_ids: that.dispatchForm.express[index].area_ids,
|
|
}
|
|
Fast.api.open('shopro/area/select?parmas=' + encodeURI(JSON.stringify(parmas)), '区域选择', {
|
|
callback(data) {
|
|
that.dispatchForm.express[index].area_text = data.data.name.join(',');
|
|
that.dispatchForm.express[index].province_ids = data.data.province.join(',')
|
|
that.dispatchForm.express[index].city_ids = data.data.city.join(',')
|
|
that.dispatchForm.express[index].area_ids = data.data.area.join(',')
|
|
}
|
|
})
|
|
},
|
|
delArea(index) {
|
|
this.dispatchForm.express.splice(index, 1);
|
|
},
|
|
addExpress() {
|
|
this.dispatchForm.express.push({
|
|
first_num: 0,
|
|
first_price: 0.00,
|
|
additional_num: 0,
|
|
additional_price: 0.00,
|
|
area_text: '',
|
|
province_ids: '',
|
|
city_ids: '',
|
|
area_ids: '',
|
|
weigh: '',
|
|
});
|
|
},
|
|
},
|
|
})
|
|
},
|
|
api: {
|
|
bindevent: function () {
|
|
Form.api.bindevent($("form[role=form]"));
|
|
}
|
|
}
|
|
};
|
|
return Controller;
|
|
}); |