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

280 lines
12 KiB

2 years ago
define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {
var Controller = {
index: function () {},
recyclebin: function () {
// 初始化表格参数配置
Table.api.init({
extend: {
'dragsort_url': ''
}
});
var table = $("#table");
// 初始化表格
table.bootstrapTable({
url: 'shopro/dispatch/selfetch/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/selfetch/restore',
refresh: true
},
{
name: 'Destroy',
text: __('Destroy'),
classname: 'btn btn-xs btn-danger btn-ajax btn-destroyit',
icon: 'fa fa-times',
url: 'shopro/dispatch/selfetch/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) {
function debounce(handle, delay) {
let time = null;
return function () {
let self = this,
arg = arguments;
clearTimeout(time);
time = setTimeout(function () {
handle.apply(self, arg);
}, delay)
}
}
var dispatchDetail = new Vue({
el: "#dispatchDetail",
data() {
return {
optType: type,
dispatchForm: {},
rules: {
name: [{
required: true,
message: '请输入自提点名称',
trigger: 'blur'
}],
expire_type: [{
required: true,
message: '请选择有效时间',
trigger: 'blur'
}],
expire_day: [{
required: true,
message: '请输入有效天数',
trigger: 'blur'
}],
expire_time: [{
required: true,
message: '请选择截至日期',
trigger: 'blur'
}],
store_ids: [{
required: true,
message: '请选择自提门店',
trigger: 'blur'
}],
},
dispatchFormInit: {
name: '',
store_ids: [],
expire_type: 'day',
expire_day: 0,
expire_time: '',
},
storeOptions: [],
dispatch_id: null,
limit: 6,
offset: 0,
currentPage: 1,
totalPage: 0,
searchPage: '',
self_user_type: 'all'
}
},
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) {
this.dispatchForm[key] = Config.row.selfetch[key]
}
this.dispatchForm.name = Config.row.name;
// this.dispatchForm.store_ids = this.dispatchForm.store_ids.split(',');
if (this.dispatchForm.expire_time) {
this.dispatchForm.expire_time = moment(this.dispatchForm.expire_time * 1000).format('YYYY-MM-DD HH:mm:ss');
}
this.storeOptions=this.dispatchForm.store_ids_list
if (this.dispatchForm.store_ids.length>0) {
this.self_user_type = 'part'
}
}
this.getstoreOptions()
},
methods: {
getstoreOptions() {
let that = this;
Fast.api.ajax({
url: 'shopro/store/store/select',
loading: true,
type: 'GET',
data: {
limit: that.limit,
offset: that.offset,
filter: '{"selfetch":"1"}',
op: '{"selfetch":"="}',
searchWhere: that.searchPage,
}
}, function (ret, res) {
that.storeOptions = res.data.rows;
that.totalPage = res.data.total;
return false;
})
},
debounceFilter: debounce(function () {
this.getstoreOptions()
}, 3000),
dataFilter(val) {
this.searchPage = val;
this.limit = 6;
this.offset = 0;
this.currentPage = 1;
this.debounceFilter()
},
//分页
pageSizeChange(val) {
this.offset = 0;
this.limit = val;
this.currentPage = 1;
this.getstoreOptions();
},
pageCurrentChange(val) {
this.offset = (val - 1) * 6;
this.limit = 6;
this.currentPage = 1;
this.getstoreOptions();
},
dispatchSub(type, issub) {
let that = this;
if (type == 'yes') {
this.$refs[issub].validate((valid) => {
if (valid) {
let subData = JSON.parse(JSON.stringify(that.dispatchForm));
if (that.self_user_type == 'all') {
subData.store_ids = ''
} else {
subData.store_ids = subData.store_ids.join(',');
}
if (subData.expire_type == 'day') {
delete subData.expire_time
} else {
delete subData.expire_day
subData.expire_time = moment(subData.expire_time).valueOf() / 1000;
}
// return false;
if (this.optType != 'add') {
Fast.api.ajax({
url: 'shopro/dispatch/selfetch/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/selfetch/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
})
}
},
createStore() {
let that = this;
Fast.api.open('shopro/store/store/add', '增加门店', {
callback(data) {
that.getstoreOptions();
}
})
}
},
})
},
api: {
bindevent: function () {
Form.api.bindevent($("form[role=form]"));
}
}
};
return Controller;
});