留学万象
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

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