/** * channel.js - 渠道管理逻辑(渠道列表 + 年度统计 + 效率数据) */ $(function () { renderShell('渠道管理', '业务模块 / 渠道管理'); renderPage(); initPage('channel', function (user) { if (!checkPagePermission('channel')) return; loadList(1); loadStats(); }); var currentPage = 1; var pageRows = []; /** 渲染页面内容(统计卡+工具栏+表格+分页) */ function renderPage() { $('#page-content').html( '
' + '
' + '
' + ' ' + ' ' + ' ' + ' ' + ' ' + ' ' + ' ' + '
' + '
' + ' ' + ' ' + '
ID渠道名称类型联系人电话邮箱效率评分备注创建时间操作
' + ' ' + '
' ); } /* ---------- 列表 ---------- */ function loadList(page) { currentPage = page; var params = buildFilterParam(); delete params.year; // 年度仅用于统计 params.page = page; params.limit = PAGE_SIZE; httpGet('channel/list.php', params).then(function (data) { var rows = data.list || []; pageRows = rows; var html = ''; rows.forEach(function (r) { html += '' + '' + r.id + '' + '' + escHtml(r.channel_name) + '' + '' + escHtml(r.channel_type || '-') + '' + '' + escHtml(r.contact_person || '-') + '' + '' + escHtml(r.contact_phone || '-') + '' + '' + escHtml(r.contact_email || '-') + '' + '' + escHtml(r.efficiency_score) + '' + '' + escHtml((r.remark || '-').substring(0, 20)) + '' + '' + fmtDate(r.created_at) + '' + '编辑' + '删除'; }); if (!rows.length) { html = '暂无渠道数据(渠道表为新增加的业务表,可在 sql/system_tables.sql 中创建)'; } $('#channel-tbody').html(html); renderPagination($('#pagination'), data, loadList); }); } /* ---------- 年度统计 ---------- */ function loadStats() { httpGet('channel/stats.php').then(function (data) { var years = data.years || []; var html = ''; years.forEach(function (y) { html += ''; }); $('#year-select').html(html); $('#stat-summary').html( '
' + data.summary.channel_count + '
' + data.year + '年渠道数
' + '
' + data.summary.avg_score + '
平均效率评分
' + '
' + data.summary.max_score + '
最高评分
' + '
' + data.summary.min_score + '
最低评分
' ); window._channelStatData = data; }); } $('#year-select').on('change', function () { var y = $(this).val(); if (!y) return; httpGet('channel/stats.php', { year: y }).then(function (data) { $('#stat-summary').html( '
' + data.summary.channel_count + '
' + data.year + '年渠道数
' + '
' + data.summary.avg_score + '
平均效率评分
' + '
' + data.summary.max_score + '
最高评分
' + '
' + data.summary.min_score + '
最低评分
' ); window._channelStatData = data; }); }); /* ---------- 新增/编辑 ---------- */ $('#btn-add').on('click', function () { openForm(null); }); window.editChannel = function (id) { var row = null; pageRows.forEach(function (r) { if (r.id == id) row = r; }); openForm(row); }; function openForm(ch) { var isEdit = !!ch; var c = ch || {}; var content = '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '' + '
'; var idx = Dialog.open({ title: isEdit ? '编辑渠道' : '新增渠道', area: ['680px', 'auto'], content: content, btn: false }); $('#form-cancel').on('click', function () { Dialog.close(idx); }); $('#channel-form').on('submit', function (e) { e.preventDefault(); var data = {}; $(this).find('input, textarea').each(function () { var name = $(this).attr('name'); if (!name) return; data[name] = $(this).val(); }); if (!data.channel_name) { Dialog.error('渠道名称为必填项'); return; } if (isEdit) data.id = c.id; httpPost(isEdit ? 'channel/save.php' : 'channel/save.php', data).then(function () { Dialog.success('保存成功', function () { Dialog.close(idx); loadList(currentPage); loadStats(); }); }); }); } window.delChannel = function (id) { Dialog.confirm('确定删除该渠道吗?', function () { httpPost('channel/delete.php', { id: id }).then(function () { Dialog.success('删除成功', function () { loadList(currentPage); loadStats(); }); }); }); }; });