```javascript
/**
* 自定義模塊功能封裝
*
* @author liang <23426945@qq.com>
* @version 1.0.0
* @datetime 2020-07-28
*
* 添加、編輯、單個刪除、批量刪除、表格搜索、修改字段
* 請求接口、批量操作數據
*/
layui.define(['table', 'admin', 'view', 'form'], function(exports){
var table = layui.table
,admin = layui.admin
,form = layui.form
,$ = layui.$
,view = layui.view
// 調試模式
let debug = true
var obj = new Object();
// 添加和編輯
obj.addEdit = (opt, param, editData = {}) => {
let init = {
title: '添加'
,area: ['500px', '450px']
,id: 'LAY-popup-user-add'
}
// package.addEdit({
// title: '添加出勤',
// area: ['500px', '400px'],
// }, {
// url: '/index/attendance/add',
// tableId: 'attendance',
// viewPath: 'worker/attendance/form',
// formFilter: 'layuiadmin-form-useradmin',
// }, data);
let url = param.url
let tableId = param.tableId
let viewPath = param.viewPath
let formFilter = param.formFilter
init.success = function (layero, index) {
view(this.id).render(viewPath, editData).done(function(){
form.render(null, formFilter);
let submitFilter = $('[lay-filter="' + formFilter + '"] [lay-submit]').attr('lay-filter')
// 監聽提交
form.on('submit(' + submitFilter + ')', function(data){
//獲取提交的字段
var field = data.field;
// 如果是編輯操作,將id傳入
if (editData.id != undefined) {
field.id = editData.id
}
// 前臺用戶表單
if (formFilter == 'layuiadmin-form-member') {
field.avatar = $('#avatar-hidden').val()
}
// 調試模式
if (debug === true) {
console.log(field)
}
admin.req({
url: url
,type: 'post'
,data: field
,done: res => {
console.log(res)
layer.msg(res.msg)
if (res.status == 200) {
layui.table.reload(tableId); //重載表格
layer.close(index); //執行關閉
}
}
})
});
});
}
admin.popup(Object.assign(init, opt))
}
// 批量刪除
obj.batchdel = (opt, param) => {
// package.batchdel({
// title: '批量刪除'
// },{
// msg: '確定刪除嗎?',
// url: '/index/attendance/del',
// tableId: 'attendance',
// })
let msg = param.msg
let url = param.url
let tableId = param.tableId
let init = {
title: '批量刪除'
}
var checkStatus = table.checkStatus(tableId)
,checkData = checkStatus.data; //得到選中的數據
if(checkData.length === 0){
return layer.msg('請選擇數據');
}
var ids = [];
for (var v of checkData) ids.push(v.id);
let requsest = {ids: ids}
layer.confirm(msg, Object.assign(init, opt), function(index) {
admin.req({
url: url,
type: 'post',
data: requsest,
done: res => {
if (debug === true) {
console.log(res)
}
layer.msg(res.msg, {
time: 1500,
});
if (res.status == 200) {
table.reload(tableId);
}
}
});
layer.close(index)
});
}
// 批量操作數據
// opt, param, data 補充的數據
obj.batch = (opt, param, data = {}) => {
// package.batch({
// title: '批量通過'
// }, {
// msg: '確定批量通過嗎?',
// url: '/shop.merch/adoptReject',
// tableId: 'merch-apply',
// }, {
// status: 2
// })
let msg = param.msg
let url = param.url
let tableId = param.tableId
let init = {
title: '批量操作'
}
var checkStatus = table.checkStatus(tableId)
,checkData = checkStatus.data; //得到選中的數據
if(checkData.length === 0){
return layer.msg('請選擇數據');
}
var ids = [];
for (var v of checkData) ids.push(v.id);
let requsest = Object.assign({ids: ids}, data)
if (debug === true) {
console.log(requsest)
}
layer.confirm(msg, Object.assign(init, opt), function(index) {
admin.req({
url: url,
type: 'post',
data: requsest,
done: res => {
if (debug === true) {
console.log(res)
}
layer.msg(res.msg, {
time: 1500,
});
if (res.status == 200) {
table.reload(tableId);
}
}
});
layer.close(index)
});
}
// 單個刪除
obj.del = (opt, param, data) => {
// package.del({
// title: '刪除'
// },{
// msg: '確定刪除嗎?',
// url: '/index/attendance/del',
// tableId: 'attendance',
// }, data)
let msg = param.msg
let url = param.url
let tableId = param.tableId
let init = {
title: '批量刪除'
}
layer.confirm(msg, Object.assign(init, opt), function(index){
admin.req({
url: url,
type: 'get',
data: {id: data.id},
success: res => {
if (debug === true) {
console.log(res)
}
layer.msg(res.msg)
if (res.status == 200) {
table.reload(tableId)
}
}
})
layer.close(index);
});
}
// 數據表格搜索
obj.search = (param) => {
// package.search({
// // 數據表格容器ID
// tableId: 'attendance',
// // 表單容器的 lay-filter
// formFilter: 'layadmin-userfront-formlist',
// // 提交按鈕的 lay-filter
// submitFilter: 'LAY-user-front-search',
// });
let tableId = param.tableId
let formFilter = param.formFilter
let submitFilter = param.submitFilter
form.render(null, formFilter);
//監聽搜索
form.on('submit(' + submitFilter + ')', function(data){
var field = data.field;
if (debug === true) {
console.log(field)
}
//執行重載
table.reload(tableId, {
where: field
,page: {
curr: 1
}
,text: {
none: '沒有查詢到數據'
}
});
});
}
// 數據表格搜索 v2
// 自動匹配搜索表單提交按鈕事件過濾器的值
obj.searchTable = (param) => {
// package.searchTable({
// // 數據表格容器ID
// tableId: 'order-close',
// // 搜索表單容器事件過濾器
// layfilter: 'search-form',
// });
let submitFilter = $('[lay-filter="' + param.layfilter + '"] [lay-submit]').attr('lay-filter')
// 更新渲染
form.render(null, param.layfilter);
//監聽搜索
form.on('submit(' + submitFilter + ')', function(data){
// 搜索表單字段
var field = data.field;
// 調試模式輸出表單數據
if (debug === true) console.log(field);
// 表單重載,從第一頁開始
table.reload(param.tableId, {
where: field
,page: {
curr: 1
}
,text: {
none: '沒有查詢到數據'
}
});
});
}
// 修改某個字段 直接執行修改
obj.switch = (param) => {
// package.switch({
// url: '/admin/switchStatus',
// data: {
// id: data.id,
// status: data.status,
// },
// tableId: 'admin',
// })
let url = param.url;
let data = param.data;
let tableId = param.tableId;
admin.req({
url: url,
type: 'post',
data: data,
done: res => {
if (debug === true) console.log(res);
layer.msg(res.msg, {
time: 1000,
})
if (res.status == 200) {
table.reload(tableId)
}
}
})
}
// 修改某個字段 先詢問再修改
obj.switchMsg = (param) => {
// package.switchMsg({
// url: '/admin/switchStatus',
// tableId: 'admin',
// data: {
// id: data.id,
// status: data.status,
// },
// msg: '確定要下架嗎?',
// ConfirmOpt: {
// title: '下架商品'
// },
// successMsgOpt: {
// time: 1200,
// }
// })
layer.confirm(param.msg, param.ConfirmOpt, function(index){
admin.req({
url: param.url,
type: 'post',
data: param.data,
done: res => {
if (debug === true) console.log(res);
layer.msg(res.msg, param.successMsgOpt)
if (res.status == 200) {
table.reload(param.tableId)
}
}
})
layer.close(index);
});
}
// 發送添加和編輯請求
obj.addEditReq = (param) => {
// package.addEditReq({
// // 提交按鈕事件過濾器
// submitFilter: 'form-submit'
// // 添加數據的接口
// ,url: '/shop.merch/add'
// // 可選項,請求類型,默認post
// ,type: 'post'
// // 可選項,hash路徑值(添加成功時跳轉的路徑),默認返回上一頁
// ,hash: '/merch'
// })
// 監聽提交
form.on('submit(' + param.submitFilter + ')', function(data){
//獲取提交的字段
var field = data.field;
if (debug === true) {
console.log(field)
}
admin.req({
url: param.url
,type: param.type ? param.type : 'post'
,data: field
,done: res => {
if (debug === true) {
console.log(res)
}
if (res.status == 200) {
layer.msg(res.msg, {
time: 1000
},()=>{
param.hash ? location.hash = param.hash : history.go(-1)
})
} else {
layer.msg(res.msg)
}
}
})
return false
});
}
exports('package', obj);
});
```