define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) { var Controller = { index: function () { // 初始化表格参数 Table.api.init({ extend: { index_url: 'commission/log/index' + location.search, add_url: '', edit_url: '', del_url: 'commission/log/del', multi_url: 'commission/log/multi', import_url: 'commission/log/import', table: 'commission_log', } }); var table = $("#table"); // 获取后台配置 var eventTypes = Controller.api.parseConfigJson('commission_log_event_types', { "agent": __('分销商日志'), "level": __('等级变动日志'), "order": __('分销业绩'), "team": __('团队日志'), "reward": __('佣金日志'), "share": __('分享日志'), "bind": __('绑定日志') }); var operTypes = Controller.api.parseConfigJson('commission_log_oper_types', { "admin": __('管理员'), "system": __('系统'), "user": __('用户') }); var displayConfig = Controller.api.parseConfigJson('commission_log_user_display_config', { showAvatar: true, avatarSize: 40, showMobile: true, showId: true, systemAvatarUrl: '/assets/img/system-avatar.png', defaultAvatarUrl: '/assets/img/avatar.png' }); // 创建统一的代理商信息展示方法 function formatAgentInfo(row) { if (!row.agent || !row.agent.user) { return '-'; } return Controller.api.formatUserInfo(row.agent.user, row.agent_id, '分销商', displayConfig); } // 创建统一的操作人信息展示方法 function formatOperatorInfo(row) { return Controller.api.formatOperatorInfo(row.oper, row.oper_type, displayConfig); } // 初始化表格 table.bootstrapTable({ url: $.fn.bootstrapTable.defaults.extend.index_url, pk: 'id', sortName: 'id', columns: [ [ {checkbox: true}, {field: 'id', title: __('ID'), width: 60}, {field: 'event_text', title: __('事件类型'), searchList: eventTypes}, { field: 'agent.username', title: __('分销商'), operate: 'LIKE', formatter: function (value, row, index) { return formatAgentInfo(row); } }, {field: 'remark', title: __('备注'), operate: 'LIKE'}, {field: 'oper_type', title: __('操作人类型'), searchList: operTypes}, { field: 'oper.oper_type_text', title: __('操作人'), operate: 'LIKE', formatter: function (value, row, index) { return formatOperatorInfo(row); } }, {field: 'createtime', title: __('创建时间'), operate: 'RANGE', addclass: 'datetimerange', autocomplete: false, formatter: Table.api.formatter.datetime}, {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, buttons: [ { name: 'del', text: __('删除'), title: __('删除'), classname: 'btn btn-xs btn-danger btn-delone', icon: 'fa fa-trash', url: 'commission/log/del', callback: function (data) { table.bootstrapTable('refresh'); } } ], formatter: Table.api.formatter.operate} ] ] }); // 为表格绑定事件 Table.api.bindevent(table); }, api: { // 解析Config中的JSON字符串的辅助函数 parseConfigJson: function(configKey, defaultValue) { var configValue = Config[configKey] || defaultValue || {}; // 如果是字符串,尝试解析JSON if (typeof configValue === 'string') { try { return JSON.parse(configValue); } catch (e) { return defaultValue || {}; } } return configValue; }, // 统一的用户信息展示方法 formatUserInfo: function(user, userId, userType, config) { if (!user) return '-'; config = config || { showAvatar: true, avatarSize: 40, showMobile: true, showId: true, defaultAvatarUrl: '/assets/img/avatar.png' }; var avatar = user.avatar ? user.avatar : config.defaultAvatarUrl; var nickname = user.nickname || user.username || (userType || '用户'); var mobile = user.mobile || ''; // 处理头像URL var avatarUrl = avatar; if (avatar && !avatar.startsWith('http') && !avatar.startsWith('//')) { avatarUrl = Fast.api.cdnurl ? Fast.api.cdnurl(avatar) : avatar; } var typeColor = userType === '管理员' ? '#dc3545' : (userType === '用户' ? '#17a2b8' : '#337ab7'); var html = '