Files
superlink/static/js/marketing.js
T
nanguaboss 71c6e8d9c1 v1.0.10
2026-08-03 00:07:01 +08:00

198 lines
9.4 KiB
JavaScript

/**
* marketing.js - 营销服务逻辑(EDM行业+区域二级联动筛选+导出邮箱列表;数据定制/媒体批发占位)
* 页面:edm.html / data_custom.html / media_wholesale.html
*/
$(function () {
// 根据当前页面文件名决定初始化方式
var pageFile = location.pathname.split('/').pop();
if (pageFile === 'data_custom.html') {
initDataCustom();
return;
}
if (pageFile === 'media_wholesale.html') {
initMediaWholesale();
return;
}
/* ============ EDM 页面 ============ */
renderShell('营销服务', '营销服务 / EDM筛选');
renderEdmPage();
initPage('marketing', function (user) {
if (!checkPagePermission('marketing')) return;
loadIndustries();
loadRegions();
loadEmails(1);
});
var currentPage = 1;
/** 渲染 EDM 页面内容(工具栏+表格+分页) */
function renderEdmPage() {
$('#page-content').html(
'<div class="card">' +
' <div class="toolbar">' +
' <select data-filter="industry" id="filter-industry"><option value="">全部行业</option></select>' +
' <select data-filter="province" id="filter-province"><option value="">选择省份/州</option></select>' +
' <select data-filter="city" id="filter-city"><option value="">选择城市/区</option></select>' +
' <input type="text" data-filter="keyword" placeholder="姓名/邮箱关键词">' +
' <button class="btn btn-primary" id="btn-search">筛选</button>' +
' <button class="btn" id="btn-reset">重置</button>' +
' <span class="spacer"></span>' +
' <span style="font-size:13px;color:#8a94a6;">命中 <b id="email-total" style="color:#2a5298;">0</b> 个邮箱</span>' +
' <button class="btn btn-success" id="btn-export">导出CSV</button>' +
' </div>' +
' <div class="table-wrap"><table class="grid">' +
' <thead><tr><th><input type="checkbox" id="check-all"></th><th>邮箱</th><th>姓名</th><th>当前公司</th><th>工作所在地</th><th>家乡</th></tr></thead>' +
' <tbody id="edm-tbody"></tbody>' +
' </table></div>' +
' <div class="pagination" id="pagination"></div>' +
'</div>'
);
$('#check-all').on('change', function () { $('.row-check').prop('checked', this.checked); });
}
function loadIndustries() {
httpGet('marketing/edm.php', { action: 'industries' }).then(function (d) {
var html = '<option value="">全部行业</option>';
(d.industries || []).forEach(function (i) {
html += '<option value="' + escHtml(i) + '">' + escHtml(i) + '</option>';
});
$('#filter-industry').html(html);
});
}
function loadRegions() {
httpGet('marketing/edm.php', { action: 'regions' }).then(function (d) {
var regions = d.regions || {};
var html = '<option value="">选择省份/州</option>';
Object.keys(regions).forEach(function (p) {
html += '<option value="' + escHtml(p) + '">' + escHtml(p) + '</option>';
});
$('#filter-province').html(html).data('regions', regions);
$('#filter-city').html('<option value="">选择城市/区</option>');
});
}
// 二级联动:选省后加载市
$('#filter-province').on('change', function () {
var regions = $(this).data('regions') || {};
var province = $(this).val();
var html = '<option value="">选择城市/区</option>';
(regions[province] || []).forEach(function (c) {
html += '<option value="' + escHtml(c) + '">' + escHtml(c) + '</option>';
});
$('#filter-city').html(html);
});
function loadEmails(page) {
currentPage = page;
var params = buildFilterParam();
params.action = 'filter';
params.page = page;
params.limit = PAGE_SIZE;
httpGet('marketing/edm.php', params).then(function (data) {
var rows = data.list || [];
var html = '';
rows.forEach(function (r) {
html += '<tr>' +
'<td><input type="checkbox" class="row-check" value="' + r.email + '"></td>' +
'<td>' + escHtml(r.email) + '</td>' +
'<td>' + escHtml(r.full_name || '-') + '</td>' +
'<td>' + escHtml(r.company_name || '-') + '</td>' +
'<td>' + escHtml(r.work_location || '-') + '</td>' +
'<td>' + escHtml(r.hometown || '-') + '</td></tr>';
});
if (!rows.length) {
html = '<tr><td colspan="6" class="empty-tip" style="padding:40px 0;">暂无匹配邮箱</td></tr>';
}
$('#edm-tbody').html(html);
renderPagination($('#pagination'), data, loadEmails);
$('#email-total').text(data.total || 0);
});
}
$('#btn-search').on('click', function () { loadEmails(1); });
$('#btn-reset').on('click', function () {
$('.toolbar [data-filter]').val('');
$('#filter-city').html('<option value="">选择城市/区</option>');
loadEmails(1);
});
/* ---------- 导出CSV(仅导出勾选的邮箱,未勾选弹窗提醒) ---------- */
$('#btn-export').on('click', function () {
var emails = [];
$('.row-check:checked').each(function () { emails.push($(this).val()); });
if (!emails.length) {
layer.alert('请先选择需要导出的邮箱', { icon: 2, title: '提示' });
return;
}
download('marketing/edm_export.php', { emails: emails.join(',') });
});
/* ============ 数据定制(占位) ============ */
function initDataCustom() {
renderShell('数据定制', '营销服务 / 数据定制');
initPage('marketing', function (user) {
if (!checkPagePermission('marketing')) return;
httpGet('marketing/data_custom.php').then(function (d) {
$('#page-content').html(
'<div class="card"><div class="placeholder-box">' +
'<div class="big">' + (ICONS.data || '') + '</div>' +
'<h3>' + escHtml(d.title || '数据定制') + '</h3>' +
'<p>' + escHtml(d.description || '功能建设中') + '</p>' +
'</div>' +
'<div class="form-grid" style="max-width:720px;margin:0 auto;">' +
' <div class="form-item"><label>联系人</label><input type="text" id="dc-name"></div>' +
' <div class="form-item"><label>联系电话</label><input type="text" id="dc-phone"></div>' +
' <div class="form-item full"><label>定制需求说明</label><textarea id="dc-req" style="min-height:90px;"></textarea></div>' +
' <div class="form-item full" style="text-align:right;"><button class="btn btn-primary" id="dc-submit">提交需求(占位)</button></div>' +
'</div></div>'
);
$('#dc-submit').on('click', function () {
httpPost('marketing/data_custom.php', {
action: 'submit',
contact_name: $('#dc-name').val(),
contact_phone: $('#dc-phone').val(),
requirements: $('#dc-req').val()
}).then(function (d) {
Dialog.alert(d.msg || '已提交');
});
});
});
});
}
/* ============ 媒体批发(占位) ============ */
function initMediaWholesale() {
renderShell('媒体批发', '营销服务 / 媒体批发');
initPage('marketing', function (user) {
if (!checkPagePermission('marketing')) return;
httpGet('marketing/media_wholesale.php').then(function (d) {
$('#page-content').html(
'<div class="card"><div class="placeholder-box">' +
'<div class="big">' + (ICONS.media || '') + '</div>' +
'<h3>' + escHtml(d.title || '媒体批发') + '</h3>' +
'<p>' + escHtml(d.description || '功能建设中') + '</p>' +
'</div>' +
'<div class="form-grid" style="max-width:720px;margin:0 auto;">' +
' <div class="form-item full"><label>媒体账号ID(逗号分隔)</label><input type="text" id="mw-ids" placeholder="如 1,2,3"></div>' +
' <div class="form-item full"><label>需求说明</label><textarea id="mw-req" style="min-height:90px;"></textarea></div>' +
' <div class="form-item full" style="text-align:right;"><button class="btn btn-primary" id="mw-submit">提交询价(占位)</button></div>' +
'</div></div>'
);
$('#mw-submit').on('click', function () {
httpPost('marketing/media_wholesale.php', {
action: 'inquiry',
media_ids: $('#mw-ids').val(),
remark: $('#mw-req').val()
}).then(function (d) {
Dialog.alert(d.msg || '已提交');
});
});
});
});
}
});