define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {
var Controller = {
index: function () {
// 初始化表格参数
Table.api.init({
extend: {
index_url: 'inspection/application/index' + location.search,
detail_url: 'inspection/application/detail',
audit_url: 'inspection/application/audit',
del_url: 'inspection/application/del',
multi_url: 'inspection/application/multi',
dragsort_url: ''
}
});
var table = $("#table");
// 初始化表格
table.bootstrapTable({
url: $.fn.bootstrapTable.defaults.extend.index_url,
pk: 'id',
sortName: 'id',
sortOrder: 'desc',
fixedColumns: true,
fixedRightNumber: 1,
columns: [
[
{checkbox: true, width: 50},
{field: 'id', title: __('Id'), operate: false, sortable: true, width: 80},
{field: 'name', title: '姓名', operate: 'LIKE', width: 100},
{field: 'phone', title: '申请手机号', operate: 'LIKE', width: 120},
{
field: 'user.username',
title: __('User'),
operate: 'LIKE',
formatter: function (value, row, index) {
// 显示用户头像和用户名
var avatar = row.user && row.user.avatar ? row.user.avatar : '/assets/img/avatar.png';
var username = row.user && row.user.username ? row.user.username : '游客';
var userId = row.user_id || '';
// 处理头像URL
var avatarUrl = avatar;
if (avatar && !avatar.startsWith('http') && !avatar.startsWith('//')) {
avatarUrl = Fast.api.cdnurl ? Fast.api.cdnurl(avatar) : avatar;
}
return '
' +
'

' +
'
' +
'
' + username + '
' +
'
ID: ' + userId + '
' +
'
' +
'
';
}
},
{field: 'supplier.name', title: '绑定供应商', operate: false, width: 120, formatter: function(value, row, index) {
if (row.supplier && row.supplier.name) {
return '' + row.supplier.name + '';
}
return '未绑定';
}},
{field: 'id_card', title: '身份证号', operate: false, width: 150},
{field: 'province_name', title: '省份', operate: false, width: 80},
{field: 'city_name', title: '城市', operate: false, width: 80},
{field: 'district_name', title: '区县', operate: false, width: 80},
{field: 'apply_time_text', title: '申请时间', operate: false, sortable: true, width: 140},
{field: 'audit_status', title: '审核状态', searchList: {"1":"审核中","2":"审核通过","3":"审核驳回"}, formatter: Table.api.formatter.status, custom: {"1":"warning","2":"success","3":"danger"}, width: 100},
{field: 'status', title: '状态', searchList: {"0":"禁用","1":"启用"}, table: table, formatter: Table.api.formatter.toggle, width: 80},
{field: 'audit_time_text', title: '审核时间', operate: false, width: 140},
{field: 'reject_reason', title: '驳回原因', operate: false, width: 200, formatter: function(value, row, index) {
return value ? '' + value + '' : '-';
}},
{field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, width: 150, fixed: 'right',
buttons: [
{
name: 'detail',
title: '查看详情',
text: '详情',
classname: 'btn btn-xs btn-info btn-dialog',
icon: 'fa fa-eye',
url: 'inspection/application/detail',
callback: function (data) {
Layer.alert("接收到回传数据:" + JSON.stringify(data), {title: "回传数据"});
},
visible: function (row) {
return true;
}
},
{
name: 'audit',
title: '审核',
text: '审核',
classname: 'btn btn-xs btn-warning btn-dialog',
icon: 'fa fa-check',
url: 'inspection/application/audit',
callback: function (data) {
table.bootstrapTable('refresh');
},
visible: function (row) {
return row.audit_status == 1; // 只有审核中状态才显示审核按钮
}
}
],
formatter: Table.api.formatter.operate
}
]
]
});
// 为表格绑定事件
Table.api.bindevent(table);
// 批量通过
$(document).on("click", ".btn-batch-pass", function () {
var ids = Table.api.selectedids(table);
if (ids.length == 0) {
Toastr.error(__('Please select at least one record'));
return false;
}
Layer.confirm(__('Are you sure you want to batch pass these applications?'), function(index) {
Fast.api.ajax({
url: "inspection/application/batchPass",
data: {ids: ids},
type: 'post'
}, function(data, ret) {
table.bootstrapTable('refresh');
Layer.close(index);
});
});
});
// 批量驳回
$(document).on("click", ".btn-batch-reject", function () {
var ids = Table.api.selectedids(table);
if (ids.length == 0) {
Toastr.error(__('Please select at least one record'));
return false;
}
// 弹出驳回原因输入框
Layer.prompt({
title: '批量驳回',
formType: 2,
value: '',
area: ['400px', '200px']
}, function(value, index) {
if (!value || value.trim() == '') {
Toastr.error('请输入驳回原因');
return false;
}
Layer.confirm(__('Are you sure you want to batch reject these applications?'), function(confirmIndex) {
Fast.api.ajax({
url: "inspection/application/batchReject",
data: {ids: ids, reject_reason: value},
type: 'post'
}, function(data, ret) {
table.bootstrapTable('refresh');
Layer.close(index);
Layer.close(confirmIndex);
});
});
});
});
// 单独的详情按钮事件
$(document).on("click", ".btn-detail", function () {
var ids = Table.api.selectedids(table);
if (ids.length != 1) {
Toastr.error(__('Please select one record'));
return false;
}
Fast.api.open("inspection/application/detail/ids/" + ids.join(","), '查看详情', {
area: ['90%', '90%']
});
});
// 单独的审核按钮事件
$(document).on("click", ".btn-audit", function () {
var ids = Table.api.selectedids(table);
if (ids.length != 1) {
Toastr.error(__('Please select one record'));
return false;
}
Fast.api.open("inspection/application/audit/ids/" + ids.join(","), '审核申请', {
area: ['800px', '600px'],
callback: function(data) {
table.bootstrapTable('refresh');
}
});
});
},
detail: function () {
// 详情页面逻辑
Controller.api.bindevent();
},
audit: function () {
// 审核页面逻辑
Controller.api.bindevent();
// 监听审核状态变化
$(document).on('change', 'input[name="audit_status"]', function() {
var status = $(this).val();
if (status == '3') {
// 审核驳回
$('#reject-reason-group').show();
$('#reject_reason').attr('data-rule', 'required');
$('#supplier-group').hide();
$('#c-supplier_id').removeAttr('data-rule');
} else {
// 审核通过
$('#reject-reason-group').hide();
$('#reject_reason').removeAttr('data-rule').val('');
$('#supplier-group').show();
$('#c-supplier_id').attr('data-rule', 'required');
}
});
// 初始化状态
$('input[name="audit_status"]:checked').trigger('change');
},
api: {
bindevent: function () {
Form.api.bindevent($("form[role=form]"));
}
}
};
return Controller;
});