/**
* 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(
'
' +
''
);
}
/* ---------- 列表 ---------- */
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();
});
});
});
};
});