位置:public/assets/js/backend/test/a.js
//RequireJS的标准语法,意思是模块依赖'jquery', 'bootstrap', 'backend', 'table', 'form'这五个模块,同时把他们加载为对应的$, undefined, Backend, Table, Form
define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {
//定义一个Controller 对象,对象下有index/add/edit/api四个方法
var Controller = {
index: function () {//实现主页index方法的功能
// 初始化表格参数配置
Table.api.init({
extend: {
index_url: 'test/a/index' + location.search,//主页index的地址
add_url: 'test/a/add',//添加页面的url
edit_url: 'test/a/edit',//编辑页面的url
del_url: 'test/a/del',//删除页面的url
multi_url: 'test/a/multi',//多选操作的url
import_url: 'test/a/import',//导入操作的url
table: 'test',//对应的数据库表为fa_test
}
});
//给变量table赋值为一个jQuery对象,该对象的选择器被设置为id为table的元素
var table = $("#table");
// 初始化表格
table.bootstrapTable({
//指BootstrapTable默认的索引URL,它是一种加载数据的方式,可将静态数据加载到表格中
url: $.fn.bootstrapTable.defaults.extend.index_url,
pk: 'id',//BootstrapTable中的pk:'id'表示主键,其代表了一个表的记录的唯一标识,
sortName: 'weigh',//用于指定表格中排序所用的列名称(这里以weight作为排序字段)
sortOrder:'asc',//排序方式(asc表示升序,desc表示降序)
fixedColumns: true,//是 BootstrapTable 的一个可选设置,用于确保表格中的列总是固定在浏览器视窗里,即便列表内容滚动,也仍保持固定。固定表格操作栏
fixedRightNumber: 1,//在表中用于指示将固定在表右侧的列数。这意味着当您水平滚动时,这些列将保持不变,而其他列将滚动。就相当于对“操作”这1列的固定
columns: [//表格的具体每一列的信息
[
{checkbox: true},//开启复选框的功能
//下面均为列信息中。
//'field'使用字段名称来定义要呈现的数据字段,而'title'表示该字段的显示标题,
{field: 'id', title: __('Id')},
{field: 'user_id', title: __('User_id')},
{field: 'admin_id', title: __('Admin_id')},
{field: 'category_id', title: __('Category_id')},
{field: 'category_ids', title: __('Category_ids'), operate: 'LIKE'},
{field: 'tags', title: __('Tags'), operate: 'LIKE', formatter: Table.api.formatter.flag},
{field: 'week', title: __('Week'), searchList: {"monday":__('Week monday'),"tuesday":__('Week tuesday'),"wednesday":__('Week wednesday')}, formatter: Table.api.formatter.normal},
{field: 'flag', title: __('Flag'), searchList: {"hot":__('Flag hot'),"index":__('Flag index'),"recommend":__('Flag recommend')}, operate:'FIND_IN_SET', formatter: Table.api.formatter.label},
{field: 'genderdata', title: __('Genderdata'), searchList: {"male":__('Genderdata male'),"female":__('Genderdata female')}, formatter: Table.api.formatter.normal},
{field: 'hobbydata', title: __('Hobbydata'), searchList: {"music":__('Hobbydata music'),"reading":__('Hobbydata reading'),"swimming":__('Hobbydata swimming')}, operate:'FIND_IN_SET', formatter: Table.api.formatter.label},
{field: 'title', title: __('Title'), operate: 'LIKE'},
{field: 'image', title: __('Image'), operate: false, events: Table.api.events.image, formatter: Table.api.formatter.image},
{field: 'images', title: __('Images'), operate: false, events: Table.api.events.image, formatter: Table.api.formatter.images},
{field: 'attachfile', title: __('Attachfile'), operate: false, formatter: Table.api.formatter.file},
{field: 'keywords', title: __('Keywords'), operate: 'LIKE'},
{field: 'description', title: __('Description'), operate: 'LIKE'},
{field: 'city', title: __('City'), operate: 'LIKE'},
{field: 'price', title: __('Price'), operate:'BETWEEN'},
{field: 'views', title: __('Views')},
{field: 'workrange', title: __('Workrange'), operate: 'LIKE'},
{field: 'startdate', title: __('Startdate'), operate:'RANGE', addclass:'datetimerange', autocomplete:false},
{field: 'activitytime', title: __('Activitytime'), operate:'RANGE', addclass:'datetimerange', autocomplete:false},
{field: 'year', title: __('Year')},
{field: 'times', title: __('Times')},
{field: 'refreshtime', title: __('Refreshtime'), operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime},
{field: 'createtime', title: __('Createtime'), operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime},
{field: 'updatetime', title: __('Updatetime'), operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime},
{field: 'weigh', title: __('Weigh'), operate: false},
{field: 'switch', title: __('Switch'), searchList: {"1":__('Yes'),"0":__('No')}, table: table, formatter: Table.api.formatter.toggle},
{field: 'status', title: __('Status'), searchList: {"normal":__('Normal'),"hidden":__('Hidden')}, formatter: Table.api.formatter.status},
{field: 'state', title: __('State'), searchList: {"0":__('State 0'),"1":__('State 1'),"2":__('State 2')}, formatter: Table.api.formatter.normal},
{field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}
]
]
});
// 为表格绑定事件
Table.api.bindevent(table);
},
//实现回收站功能
recyclebin: function () {
// 初始化表格参数配置
//用于初始化Bootstrap表库中的拖放排序功能。“dragsort_url”参数用于定义将用于执行表行重新排序的AJAX请求的url路径。
Table.api.init({
extend: {
'dragsort_url': ''//即表示令移动功能指向的url为空
}
});
//给变量table赋值为一个jQuery对象,该对象的选择器被设置为id为table的元素
var table = $("#table");
// 初始化表格
table.bootstrapTable({
url: 'test/a/recyclebin' + location.search,//回收站url
pk: 'id',//主键为id
sortName: 'id',//排序字段为id
columns: [//所有列信息展示
[
{checkbox: true},//多选按钮展示
{field: 'id', title: __('Id')},
{field: 'title', title: __('Title'), align: 'left'},
{
field: 'deletetime',
title: __('Deletetime'),
operate: 'RANGE',
addclass: 'datetimerange',
formatter: Table.api.formatter.datetime
//Bootstrap Table中一个格式化器,Table.api.formatter.datetime是指用于将日期/时间类型数据转换成格式化的日期/时间格式
},
{
field: 'operate',
width: '140px',
title: __('Operate'),
table: table,
events: Table.api.events.operate,//是一个bootstrap table的事件,它会在表格中的操作列被激活(比如点击编辑按钮)时发生。
buttons: [//按钮
{
name: 'Restore',//名称
text: __('Restore'),//按钮名称
classname: 'btn btn-xs btn-info btn-ajax btn-restoreit',//按钮样式
icon: 'fa fa-rotate-left',//按钮图标
url: 'test/a/restore',//按钮
refresh: true//点击按钮之后执行刷新
},
{
name: 'Destroy',
text: __('Destroy'),
classname: 'btn btn-xs btn-danger btn-ajax btn-destroyit',
icon: 'fa fa-times',
url: 'test/a/destroy',
refresh: true
}
],
formatter: Table.api.formatter.operate//是bootstrap table中的一个函数,可以为表格中每行添加操作按钮。它会分析函数中传入的value,然后在每行末尾添加可编辑、删除、查看等操作按钮。
}
]
]
});
// 为表格绑定事件
Table.api.bindevent(table);
},
add: function () {//执行添加功能
Controller.api.bindevent();
},
edit: function () {//执行编辑功能
Controller.api.bindevent();
},
api: {//它指的是bindEvent函数,该函数用于将事件绑定到提供的表单。通过调用该函数,可以在与表单交互时触发事件,例如当用户单击按钮或更改输入时。
bindevent: function () {
Form.api.bindevent($("form[role=form]"));
}
}
};
return Controller;//是指返回Controller类的特定实例的函数
});