/** * ChatHub 租户管理 JavaScript */ define(['jquery', 'bootstrap', 'template'], function ($, Bootstrap, Template) { var Controller = { index: function () { // 初始化表格 Controller.api.initTable(); // 绑定事件 Controller.api.bindEvents(); }, add: function () { // 初始化表单 Controller.api.initForm(); }, edit: function () { // 初始化表单 Controller.api.initForm(); // 填充数据 Controller.api.fillFormData(); }, dashboard: function () { // 初始化仪表盘 Controller.api.initDashboard(); }, api: { // 初始化表格 initTable: function () { // 加载租户列表 Controller.api.loadTenants(); // 绑定筛选事件 $('.filter-select, .filter-input').on('change', function () { Controller.api.loadTenants(1); }); }, // 加载租户列表 loadTenants: function (page) { page = page || 1; $.ajax({ url: Fast.api.fixurl('chathub/index/index'), type: 'GET', data: { page: page, filter: JSON.stringify(Controller.api.getFilters()) }, success: function (res) { if (res.rows && res.rows.length > 0) { Controller.api.renderTenants(res.rows); Controller.api.renderPagination(res.total, page); $('#empty-state').hide(); $('.table-container table').show(); $('.pagination-wrapper').show(); } else { $('#empty-state').show(); $('.table-container table').hide(); $('.pagination-wrapper').hide(); } } }); }, // 获取筛选条件 getFilters: function () { return { status: $('.filter-select').eq(0).val(), channel_type: $('.filter-select').eq(1).val(), search: $('.filter-input').val() }; }, // 渲染租户列表 renderTenants: function (tenants) { var html = ''; tenants.forEach(function (tenant) { var statusClass = 'status-' + tenant.status; var channelIcon = tenant.channel_type === 'web_widget' ? 'fa-globe' : 'fa-code'; var channelText = tenant.channel_type_text || (tenant.channel_type === 'web_widget' ? '网页组件' : 'API接口'); html += ''; html += ''; html += '
'; html += '
' + tenant.tenant_name.charAt(0).toUpperCase() + '
'; html += '
'; html += '

' + tenant.tenant_name + '

'; html += '

' + (tenant.agent_name || '未配置') + '

'; html += '
'; html += '
'; html += ''; html += '' + tenant.domain + ''; html += ' ' + channelText + ''; html += '' + tenant.status_text + ''; html += '' + (tenant.provisioned_at || '-') + ''; html += ''; html += '
'; html += ' '; if (tenant.status !== 'active') { html += ' '; } html += ' '; html += '
'; html += ''; html += ''; }); $('#tenant-list').html(html); }, // 渲染分页 renderPagination: function (total, currentPage) { var pageSize = 10; var totalPages = Math.ceil(total / pageSize); var html = ''; if (currentPage > 1) { html += '上一页'; } for (var i = 1; i <= totalPages; i++) { if (i === currentPage) { html += '' + i + ''; } else { html += '' + i + ''; } } if (currentPage < totalPages) { html += '下一页'; } $('#pagination').html(html); $('#pagination-info').text('显示 ' + ((currentPage-1)*pageSize+1) + '-' + Math.min(currentPage*pageSize, total) + ' 条,共 ' + total + ' 条'); }, // 开通租户 provisionTenant: function (id) { if (confirm('确定要开通这个租户吗?')) { Fast.api.ajax({ url: Fast.api.fixurl('chathub/index/provision/ids/' + id), type: 'POST' }, function (res) { Controller.api.loadTenants(); }); } }, // 删除租户 deleteTenant: function (id) { if (confirm('确定要删除这个租户吗?此操作不可恢复。')) { Fast.api.ajax({ url: Fast.api.fixurl('chathub/index/del/ids/' + id), type: 'POST' }, function (res) { Controller.api.loadTenants(); }); } }, // 初始化表单 initForm: function () { // 通道类型选择 $('.channel-option').click(function () { $('.channel-option').removeClass('active'); $(this).addClass('active'); $('input[name="row[channel_type]"]').val($(this).data('value')); }); // 表单提交 $('#tenant-form').on('submit', function (e) { e.preventDefault(); var formData = $(this).serialize(); var url = $(this).attr('action'); $.ajax({ url: url, type: 'POST', data: formData, success: function (res) { if (res.code === 1) { Fast.api.msg('操作成功!'); setTimeout(function () { location.href = Fast.api.fixurl('chathub/index/index'); }, 1000); } else { Fast.api.msg(res.msg || '操作失败', 'danger'); } }, error: function () { Fast.api.msg('网络错误,请重试', 'danger'); } }); }); }, // 填充表单数据 fillFormData: function () { // 从页面获取数据并填充 var row = window.rowData || {}; if (row.tenant_name) { $('input[name="row[tenant_name]"]').val(row.tenant_name); } if (row.domain) { $('input[name="row[domain]"]').val(row.domain); } if (row.agent_name) { $('input[name="row[agent_name]"]').val(row.agent_name); } if (row.status) { $('select[name="row[status]"]').val(row.status); } if (row.channel_type) { $('.channel-option').removeClass('active'); $('.channel-option[data-value="' + row.channel_type + '"]').addClass('active'); $('input[name="row[channel_type]"]').val(row.channel_type); } }, // 初始化仪表盘 initDashboard: function () { // 添加动画效果 $('.stat-card').each(function (index) { $(this).css({ 'opacity': '0', 'transform': 'translateY(20px)', 'animation': 'fadeInUp 0.5s ease forwards', 'animation-delay': (index * 0.1) + 's' }); }); }, // 绑定事件 bindEvents: function () { // 刷新按钮 $(document).on('click', '.btn-refresh', function () { Controller.api.loadTenants(); }); } } }; return Controller; });