v1.0.10
This commit is contained in:
@@ -0,0 +1,197 @@
|
||||
/**
|
||||
* 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 || '已提交');
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user