Commit 59439369 by 张倩

后台原型更新

parent cb0f9d52
<!DOCTYPE html>
<!DOCTYPE html>
......@@ -505,20 +505,21 @@ td{padding:9px 10px;vertical-align:middle;line-height:1.4}
</div>
</div>
<!-- 提现周期 -->
<!-- 结算周期配置 -->
<div style="margin-top:14px;padding:12px 14px;background:#fff8e6;border:1px solid #ffe58f;border-radius:6px">
<div style="font-size:12px;font-weight:500;color:#d48806;margin-bottom:10px;display:flex;align-items:center;gap:5px"><i class="ti ti-clock-dollar"></i>合伙人佣金入账周期配置</div>
<div style="display:flex;gap:8px;align-items:center">
<span style="font-size:13px;font-weight:500;color:#1a1a1a">T +</span>
<input type="number" id="wd-days" min="0" step="1" value="30" style="width:80px;height:32px;border:1px solid #d9d9d9;border-radius:6px;padding:0 10px;font-size:13px;outline:none;text-align:center" oninput="updateWdPreview()">
<span style="font-size:13px;color:#595959">天(工作日)</span>
<span class="req" style="margin-left:-4px">*</span>
<div style="height:32px;display:flex;align-items:center;padding:0 12px;background:#fffbe6;border:1px solid #ffe58f;border-radius:6px;font-size:12px;color:#d48806;white-space:nowrap;margin-left:8px" id="wd-preview">
<i class="ti ti-eye" style="margin-right:4px"></i>审核通过后 <b style="color:#1a1a1a;margin:0 3px">30</b> 个工作日入账
</div>
<div style="font-size:12px;font-weight:500;color:#d48806;margin-bottom:10px;display:flex;align-items:center;gap:5px"><i class="ti ti-clock-dollar"></i>结算周期配置</div>
<div style="display:flex;gap:6px;align-items:center">
<select id="wd-period" style="width:100px;height:32px;border:1px solid #d9d9d9;border-radius:6px;padding:0 8px;font-size:13px;outline:none;background:#fff">
<option value="当月">当月</option>
<option value="次月" selected>次月</option>
<option value="次次月">次次月</option>
</select>
<select id="wd-day" style="width:70px;height:32px;border:1px solid #d9d9d9;border-radius:6px;padding:0 8px;font-size:13px;outline:none;background:#fff"></select>
<span style="font-size:13px;color:#595959"></span>
<span class="req">*</span>
</div>
<div class="form-hint" style="margin-top:8px">
仅输入正整数。按工作日计算,遇节假日顺延。T+0 = 审核通过即入账;T+30 ≈ 一个月后入账
遇法定节假日延后到下一个工作日
</div>
</div>
</div>
......@@ -670,14 +671,14 @@ td{padding:9px 10px;vertical-align:middle;line-height:1.4}
<div class="rule-detail-row"><span>比例设置</span><span class="rule-detail-val">30%</span></div>
</div>
</div>
<!-- 提现周期 -->
<div style="margin-top:14px;padding:10px 14px;background:#fff8e6;border:1px solid #ffe58f;border-radius:6px;display:flex;align-items:center;gap:12px;flex-wrap:wrap">
<!-- 结算周期 -->
<div style="margin-top:14px;padding:10px 14px;background:#fff8e6;border:1px solid #ffe58f;border-radius:6px;display:flex;align-items:center;gap:16px;flex-wrap:wrap">
<div style="display:flex;align-items:center;gap:5px">
<i class="ti ti-clock-dollar" style="color:#d48806;font-size:16px"></i>
<span style="font-size:12px;color:#8c8c8c">合伙人佣金入账周期</span>
<span style="font-size:12px;color:#8c8c8c">结算周期</span>
</div>
<span style="font-size:14px;font-weight:600;color:#d48806;background:#fff;border:1px solid #ffe58f;padding:2px 12px;border-radius:4px;font-family:monospace">T + 30 天</span>
<span style="font-size:12px;color:#595959">审核通过后 30 个工作日入账(遇节假日顺延</span>
<span style="font-size:13px;font-weight:600;color:#d48806;background:#fff;border:1px solid #ffe58f;padding:2px 12px;border-radius:4px">次月6日</span>
<span style="font-size:11px;color:#8c8c8c">(遇法定节假日延后到下一个工作日</span>
</div>
</div>
</div>
......@@ -768,23 +769,23 @@ function switchDetailTab(el, key) {
/* ===== 产品数据 ===== */
var PRODUCTS = [
{ cat:'异地用工', name:'岗位外包', owner:'李玲玲', assignees:['李明','赵磊'], rel:'—', price:'61元/人/月',
rules:['渠道:比例 2% 续费','对接人:比例 5% 续费','合伙人:比例 30% 续费'], wdCycle:30, status:'on', main:true, priority:0, mat:0 },
rules:['渠道:比例 2% 续费','对接人:比例 5% 续费','合伙人:比例 30% 续费'], settle:'次月6日', status:'on', main:true, priority:0, mat:0 },
{ cat:'财税服务', name:'测试固定返佣产品', owner:'李玲玲', assignees:['刘婷'], rel:'—', price:'1000-14000元/人',
rules:['渠道:固定 ¥60 一次性','对接人:固定 ¥150 一次性','合伙人:固定 ¥300 一次性'], wdCycle:5, status:'on', main:true, priority:0, mat:0 },
rules:['渠道:固定 ¥60 一次性','对接人:固定 ¥150 一次性','合伙人:固定 ¥300 一次性'], settle:'次月20日', status:'on', main:true, priority:0, mat:0 },
{ cat:'资质许可', name:'资质认证许可证代办', owner:'Candy Gao', assignees:[], rel:'资质认证', price:'100',
rules:['渠道:固定 ¥0 一次性','对接人:固定 ¥0 一次性','合伙人:固定 ¥120 一次性'], wdCycle:30, status:'on', main:true, priority:0, mat:0 },
rules:['渠道:固定 ¥0 一次性','对接人:固定 ¥0 一次性','合伙人:固定 ¥120 一次性'], settle:'次月6日', status:'on', main:true, priority:0, mat:0 },
{ cat:'智能工资条', name:'智能工资条', owner:'张美玉', assignees:[], rel:'—', price:'1-50人 0.80元...',
rules:['渠道:固定 ¥0 续费','对接人:固定 ¥0 续费','合伙人:固定 ¥20.14 续费'], wdCycle:7, status:'on', main:true, priority:0, mat:0 },
rules:['渠道:固定 ¥0 续费','对接人:固定 ¥0 续费','合伙人:固定 ¥20.14 续费'], settle:'次月15日', status:'on', main:true, priority:0, mat:0 },
{ cat:'异地用工', name:'ben01', owner:'孙彬彬', assignees:['黄慧慧','刘铭阳','徐露','楚冠军','...'], rel:'—', price:'60/人',
rules:['渠道:比例 10%(成交额) 续费','对接人:比例 5%(服务费) 续费','合伙人:固定 ¥200 续费'], wdCycle:30, status:'draft', main:true, priority:0, mat:0 },
rules:['渠道:比例 10%(成交额) 续费','对接人:比例 5%(服务费) 续费','合伙人:固定 ¥200 续费'], settle:'次次月5日', status:'draft', main:true, priority:0, mat:0 },
{ cat:'异地用工', name:'劳务派遣', owner:'李玲玲', assignees:[], rel:'—', price:'60元/人/月',
rules:['渠道:固定 ¥0 续费','对接人:固定 ¥0 续费','合伙人:比例 30%(成交额) 续费'], wdCycle:30, status:'on', main:false, priority:0, mat:0 },
rules:['渠道:固定 ¥0 续费','对接人:固定 ¥0 续费','合伙人:比例 30%(成交额) 续费'], settle:'次月6日', status:'on', main:false, priority:0, mat:0 },
{ cat:'人事代理', name:'社保公积金托管', owner:'郭欢', assignees:[], rel:'—', price:'1-5人 1,000元/年...',
rules:['渠道:固定 ¥0 续费','对接人:固定 ¥0 续费','合伙人:比例 30%(成交额) 续费'], wdCycle:30, status:'on', main:false, priority:0, mat:0 },
rules:['渠道:固定 ¥0 续费','对接人:固定 ¥0 续费','合伙人:比例 30%(成交额) 续费'], settle:'次月6日', status:'on', main:false, priority:0, mat:0 },
{ cat:'工商服务', name:'财税风险规划方案', owner:'毕潇然', assignees:[], rel:'中小微企业T...', price:'一单一议',
rules:['渠道:固定 ¥0 续费','对接人:固定 ¥0 续费','合伙人:比例 10%(成交额) 续费'], wdCycle:7, status:'on', main:false, priority:0, mat:0 },
rules:['渠道:固定 ¥0 续费','对接人:固定 ¥0 续费','合伙人:比例 10%(成交额) 续费'], settle:'当月25日', status:'on', main:false, priority:0, mat:0 },
{ cat:'财税服务', name:'测测试', owner:'问贝', assignees:[], rel:'—', price:'33',
rules:['渠道:固定 ¥200 一次性','对接人:固定 ¥400 一次性','合伙人:固定 ¥800 一次性'], wdCycle:null, status:'draft', main:false, priority:0, mat:0 },
rules:['渠道:固定 ¥200 一次性','对接人:固定 ¥400 一次性','合伙人:固定 ¥800 一次性'], settle:'', status:'draft', main:false, priority:0, mat:0 },
];
function renderProducts() {
......@@ -793,7 +794,7 @@ function renderProducts() {
var assigneeHtml = d.assignees.length
? d.assignees.map(function(a){ return '<span class="person-tag">'+a+'</span>'; }).join('')
: '<span class="muted">未配置</span>';
var rulesHtml = '<div class="rule-cell">' + d.rules.map(function(r){ return r; }).join('<br>') + (d.wdCycle !== null && d.wdCycle !== undefined ? '<br><span style="color:#d48806"><i class="ti ti-clock-dollar" style="font-size:10px"></i> T+'+d.wdCycle+'天</span>' : '') + '</div>';
var rulesHtml = '<div class="rule-cell">' + d.rules.map(function(r){ return r; }).join('<br>') + (d.settle ? '<br><i class="ti ti-clock-dollar" style="font-size:10px;color:#d48806"></i> <span style="color:#d48806;font-size:10px">' + d.settle + '</span>' : '') + '</div>';
var opOn = d.status==='on' ? '<button class="btn-link" style="color:#cf1322">下架</button>' : '<button class="btn-link" style="color:#389e0d">上架</button>';
return '<tr>'
+ '<td>'+d.cat+'</td>'
......@@ -826,14 +827,14 @@ function updateRuleFields(prefix) {
/* ===== 新增分类 ===== */
function openAddCategory() { alert('新增产品分类弹窗(待实现)'); }
/* ===== 提现周期预览 ===== */
function updateWdPreview() {
var el = document.getElementById('wd-preview');
var v = parseInt(document.getElementById('wd-days').value);
if (isNaN(v) || v < 0) { el.innerHTML = '<i class="ti ti-eye" style="margin-right:4px"></i>请输入有效天数'; return; }
if (v === 0) { el.innerHTML = '<i class="ti ti-eye" style="margin-right:4px"></i>审核通过 <b style="color:#1a1a1a;margin:0 3px">即时</b> 入账'; return; }
el.innerHTML = '<i class="ti ti-eye" style="margin-right:4px"></i>审核通过后 <b style="color:#1a1a1a;margin:0 3px">' + v + '</b> 个工作日入账';
}
/* ===== 结算周期下拉初始化 ===== */
(function(){
var daySel = document.getElementById('wd-day');
if(daySel){
daySel.innerHTML = '';
for(var i=1;i<=31;i++) daySel.innerHTML += '<option value="'+i+'"'+(i===6?' selected':'')+'>'+i+'</option>';
}
})();
/* 初始化 */
renderProducts();
......
<!DOCTYPE html>
<!DOCTYPE html>
......@@ -154,7 +154,7 @@ td{padding:9px 10px;vertical-align:middle}
<div class="filter-item"><label>合伙人</label><input type="text" placeholder="请选择"></div>
<div class="filter-item"><label>渠道管理员</label><input type="text" placeholder="请选择"></div>
<div class="filter-item"><label>对接人</label><input type="text" placeholder="请选择"></div>
<div class="filter-item"><label>状态</label><select id="p-status-filter" onchange="pRender()"><option value="">全部状态</option><option value="pending">待审核</option><option value="waitSettle">已审核待入账</option><option value="settled">已审核</option><option value="cancelled">已取消</option></select></div>
<div class="filter-item"><label>状态</label><select id="p-status-filter" onchange="pRender()"><option value="">全部状态</option><option value="pending">待审核</option><option value="finRejected">财务已拒回</option><option value="finAudit">待财务审核</option><option value="waitSettle">已审核待入账</option><option value="settled">已入账</option><option value="cancelled">已取消</option></select></div>
<div class="filter-btns">
<button class="btn btn-primary"><i class="ti ti-search"></i>查询</button>
<button class="btn"><i class="ti ti-refresh"></i>重置</button>
......@@ -164,8 +164,10 @@ td{padding:9px 10px;vertical-align:middle}
<div class="content">
<div class="status-tabs" id="p-tabs">
<div class="status-tab active" onclick="pSwitchTab('pending',this)">待审核 (<span id="p-cnt-pending">0</span>)</div>
<div class="status-tab" onclick="pSwitchTab('finRejected',this)">财务已拒回 (<span id="p-cnt-finRejected">0</span>)</div>
<div class="status-tab" onclick="pSwitchTab('finAudit',this)">待财务审核 (<span id="p-cnt-finAudit">0</span>)</div>
<div class="status-tab" onclick="pSwitchTab('waitSettle',this)">已审核待入账 (<span id="p-cnt-waitSettle">0</span>)</div>
<div class="status-tab" onclick="pSwitchTab('settled',this)">审核 (<span id="p-cnt-settled">0</span>)</div>
<div class="status-tab" onclick="pSwitchTab('settled',this)">入账 (<span id="p-cnt-settled">0</span>)</div>
<div class="status-tab" onclick="pSwitchTab('cancelled',this)">已取消 (<span id="p-cnt-cancelled">0</span>)</div>
<div class="status-tab" onclick="pSwitchTab('all',this)">全部 (<span id="p-cnt-all">0</span>)</div>
</div>
......@@ -745,21 +747,23 @@ td{padding:9px 10px;vertical-align:middle}
<script>
/* ===== 合伙人佣金结算 数据驱动 ===== */
var P_STATUS = { pending:['待审核','tag-orange'], waitSettle:['已审核待入账','tag-blue'], settled:['已审核','tag-green'], cancelled:['已取消','tag-gray'] };
var P_STATUS = { pending:['待审核','tag-orange'], finAudit:['待财务审核','tag-purple'], waitSettle:['已审核待入账','tag-blue'], settled:['已入账','tag-green'], cancelled:['已取消','tag-gray'], finRejected:['财务已拒回','tag-red'] };
var P_DATA = [
{ id:'1356660', cat:'异地用工', catCls:'tag-blue', name:'劳务派遣', utype:'企业用户', customer:'张情测试合伙人企业', partner:'15011348374', chMgr:'王利娟', assignee:'李明', custMgr:'张情', amount:60, comm:18, rule:'比例 30% 续费', cycle:30, status:'pending', auditTime:'', expectDate:'2026-08-11', settleDate:'' },
{ id:'1356657', cat:'异地用工', catCls:'tag-blue', name:'企业员工社保代缴', utype:'企业用户', customer:'张情测试合伙人企业', partner:'15011348374', chMgr:'王利娟', assignee:'', custMgr:'张情', amount:60, comm:18, rule:'比例 30% 续费', cycle:30, status:'pending', auditTime:'', expectDate:'2026-08-11', settleDate:'' },
{ id:'1356654', cat:'异地用工', catCls:'tag-blue', name:'岗位外包', utype:'企业用户', customer:'张情测试合伙人企业', partner:'15011348374', chMgr:'王利娟', assignee:'赵磊', custMgr:'张情', amount:60, comm:18, rule:'比例 30% 续费', cycle:30, status:'pending', auditTime:'', expectDate:'2026-08-11', settleDate:'' },
{ id:'1356651', cat:'异地用工', catCls:'tag-blue', name:'岗位外包', utype:'企业用户', customer:'远航科技有限公司', partner:'13812345678', chMgr:'王利娟', assignee:'李明', custMgr:'张情', amount:120, comm:36, rule:'比例 30% 续费', cycle:30, status:'pending', auditTime:'', expectDate:'2026-08-11', settleDate:'' },
{ id:'1356649', cat:'财税服务', catCls:'tag-purple', name:'代理记账', utype:'企业用户', customer:'启航教育咨询', partner:'13987654321', chMgr:'王利娟', assignee:'刘婷', custMgr:'张美玉', amount:2000, comm:600, rule:'比例 30% 续费', cycle:7, status:'pending', auditTime:'', expectDate:'2026-07-18', settleDate:'' },
{ id:'1356645', cat:'异地用工', catCls:'tag-blue', name:'劳务派遣', utype:'企业用户', customer:'锦绣餐饮集团', partner:'13611112222', chMgr:'王利娟', assignee:'赵磊', custMgr:'郭欢', amount:60, comm:-18, rule:'比例 30% 退费冲账', cycle:30, status:'pending', auditTime:'', expectDate:'2026-08-11', settleDate:'' },
{ id:'1356640', cat:'异地用工', catCls:'tag-blue', name:'岗位外包', utype:'企业用户', customer:'张情测试合伙人企业', partner:'15011348374', chMgr:'王利娟', assignee:'李明', custMgr:'张情', amount:60, comm:18, rule:'比例 30% 续费', cycle:30, status:'waitSettle', auditTime:'2026-07-01 10:30', expectDate:'2026-08-14', settleDate:'' },
{ id:'1356638', cat:'财税服务', catCls:'tag-purple', name:'测试固定返佣产品', utype:'企业用户', customer:'新桥律师事务所', partner:'15066667777', chMgr:'王利娟', assignee:'刘婷', custMgr:'赵磊', amount:5000, comm:300, rule:'固定 ¥300 一次性', cycle:7, status:'waitSettle', auditTime:'2026-07-04 14:20', expectDate:'2026-07-15', settleDate:'' },
{ id:'1356635', cat:'异地用工', catCls:'tag-blue', name:'劳务派遣', utype:'企业用户', customer:'华盛机构', partner:'13400001111', chMgr:'王利娟', assignee:'赵磊', custMgr:'郭欢', amount:60, comm:-18, rule:'比例 30% 退费冲账', cycle:30, status:'waitSettle', auditTime:'2026-06-28 09:10', expectDate:'2026-08-11', settleDate:'' },
{ id:'1356658', cat:'财税服务', catCls:'tag-purple', name:'代理记账', utype:'企业用户', customer:'张情测试合伙人企业', partner:'15011348374', chMgr:'王利娟', assignee:'赵磊', custMgr:'张情', amount:60, comm:18, rule:'比例 30% 续费', cycle:30, status:'settled', auditTime:'2026-06-01 10:00', expectDate:'2026-07-15', settleDate:'2026-07-15 00:05' },
{ id:'1356632', cat:'异地用工', catCls:'tag-blue', name:'岗位外包', utype:'企业用户', customer:'远航科技有限公司', partner:'13812345678', chMgr:'王利娟', assignee:'李明', custMgr:'张情', amount:120, comm:36, rule:'比例 30% 续费', cycle:7, status:'settled', auditTime:'2026-06-20 11:30', expectDate:'2026-06-30', settleDate:'2026-06-30 00:05' },
{ id:'1356630', cat:'异地用工', catCls:'tag-blue', name:'劳务派遣', utype:'企业用户', customer:'顺达物流有限公司', partner:'13722223333', chMgr:'王利娟', assignee:'李明', custMgr:'赛晓丽', amount:60, comm:18, rule:'比例 30% 续费', cycle:30, status:'settled', auditTime:'2026-05-28 09:15', expectDate:'2026-07-10', settleDate:'2026-07-10 00:05' },
{ id:'1356628', cat:'财税服务', catCls:'tag-purple', name:'代理记账', utype:'企业用户', customer:'某某科技有限公司', partner:'15133334444', chMgr:'王利娟', assignee:'刘婷', custMgr:'李鹏飞', amount:1000, comm:0, rule:'—', cycle:30, status:'cancelled', auditTime:'2026-06-15 16:00', expectDate:'2026-07-28', settleDate:'' },
{id:'1356660',cat:'异地用工',catCls:'tag-blue',name:'劳务派遣',utype:'企业用户',customer:'张情测试合伙人企业',partner:'15011348374',chMgr:'王利娟',assignee:'李明',custMgr:'张情',amount:60,comm:18,rule:'比例 30% 续费',settle:'次月6日',expectDate:'2026-08-06',status:'pending',bizAuditTime:'',bizAuditor:'',finAuditTime:'',finAuditor:'',settleDate:''},
{id:'1356657',cat:'异地用工',catCls:'tag-blue',name:'企业员工社保代缴',utype:'企业用户',customer:'张情测试合伙人企业',partner:'15011348374',chMgr:'王利娟',assignee:'',custMgr:'张情',amount:60,comm:18,rule:'比例 30% 续费',settle:'次月6日',expectDate:'2026-08-06',status:'pending',bizAuditTime:'',bizAuditor:'',finAuditTime:'',finAuditor:'',settleDate:''},
{id:'1356654',cat:'异地用工',catCls:'tag-blue',name:'岗位外包',utype:'企业用户',customer:'张情测试合伙人企业',partner:'15011348374',chMgr:'王利娟',assignee:'赵磊',custMgr:'张情',amount:60,comm:18,rule:'比例 30% 续费',settle:'次月15日',expectDate:'2026-08-15',status:'pending',bizAuditTime:'',bizAuditor:'',finAuditTime:'',finAuditor:'',settleDate:''},
{id:'1356649',cat:'财税服务',catCls:'tag-purple',name:'代理记账',utype:'企业用户',customer:'启航教育咨询',partner:'13987654321',chMgr:'王利娟',assignee:'刘婷',custMgr:'张美玉',amount:2000,comm:600,rule:'比例 30% 续费',settle:'次月15日',expectDate:'2026-08-15',status:'pending',bizAuditTime:'',bizAuditor:'',finAuditTime:'',finAuditor:'',settleDate:''},
{id:'1356645',cat:'异地用工',catCls:'tag-blue',name:'劳务派遣',utype:'企业用户',customer:'锦绣餐饮集团',partner:'13611112222',chMgr:'王利娟',assignee:'赵磊',custMgr:'郭欢',amount:60,comm:-18,rule:'比例 30% 退费冲账',settle:'次月6日',expectDate:'2026-08-06',status:'pending',bizAuditTime:'',bizAuditor:'',finAuditTime:'',finAuditor:'',settleDate:''},
{id:'1356640',cat:'异地用工',catCls:'tag-blue',name:'岗位外包',utype:'企业用户',customer:'张情测试合伙人企业',partner:'15011348374',chMgr:'王利娟',assignee:'李明',custMgr:'张情',amount:60,comm:18,rule:'比例 30% 续费',settle:'次月6日',expectDate:'2026-07-07',status:'finAudit',bizAuditTime:'2026-07-01 10:30',bizAuditor:'王利娟',finAuditTime:'',finAuditor:'',settleDate:''},
{id:'1356638',cat:'财税服务',catCls:'tag-purple',name:'测试固定返佣产品',utype:'企业用户',customer:'新桥律师事务所',partner:'15066667777',chMgr:'王利娟',assignee:'刘婷',custMgr:'赵磊',amount:5000,comm:300,rule:'固定 ¥300 一次性',settle:'次月15日',expectDate:'2026-07-15',status:'finAudit',bizAuditTime:'2026-07-04 14:20',bizAuditor:'王利娟',finAuditTime:'',finAuditor:'',settleDate:''},
{id:'1356635',cat:'异地用工',catCls:'tag-blue',name:'劳务派遣',utype:'企业用户',customer:'华盛机构',partner:'13400001111',chMgr:'王利娟',assignee:'赵磊',custMgr:'郭欢',amount:60,comm:-18,rule:'比例 30% 退费冲账',settle:'次月6日',expectDate:'2026-07-07',status:'finAudit',bizAuditTime:'2026-06-28 09:10',bizAuditor:'王利娟',finAuditTime:'',finAuditor:'',settleDate:''},
{id:'1356633',cat:'异地用工',catCls:'tag-blue',name:'岗位外包',utype:'企业用户',customer:'安达信息技术',partner:'13555556666',chMgr:'王利娟',assignee:'李明',custMgr:'李鹏飞',amount:120,comm:36,rule:'比例 30% 续费',settle:'次月6日',expectDate:'2026-07-07',status:'waitSettle',bizAuditTime:'2026-06-20 11:30',bizAuditor:'王利娟',finAuditTime:'2026-07-07 10:00',finAuditor:'张美玉',settleDate:''},
{id:'1356631',cat:'异地用工',catCls:'tag-blue',name:'劳务派遣',utype:'企业用户',customer:'安达信息技术',partner:'13555556666',chMgr:'王利娟',assignee:'李明',custMgr:'李鹏飞',amount:60,comm:-50,rule:'比例 30% 退费冲账',settle:'次月6日',expectDate:'2026-07-07',status:'waitSettle',bizAuditTime:'2026-06-22 09:10',bizAuditor:'王利娟',finAuditTime:'2026-07-07 10:00',finAuditor:'张美玉',settleDate:''},
{id:'1356658',cat:'财税服务',catCls:'tag-purple',name:'代理记账',utype:'企业用户',customer:'张情测试合伙人企业',partner:'15011348374',chMgr:'王利娟',assignee:'赵磊',custMgr:'张情',amount:60,comm:18,rule:'比例 30% 续费',settle:'次月6日',expectDate:'2026-07-07',status:'settled',bizAuditTime:'2026-06-15 10:00',bizAuditor:'王利娟',finAuditTime:'2026-07-07 10:05',finAuditor:'张美玉',settleDate:'2026-07-07 10:05'},
{id:'1356632',cat:'异地用工',catCls:'tag-blue',name:'岗位外包',utype:'企业用户',customer:'远航科技有限公司',partner:'13812345678',chMgr:'王利娟',assignee:'李明',custMgr:'张情',amount:120,comm:36,rule:'比例 30% 续费',settle:'次月15日',expectDate:'2026-07-15',status:'settled',bizAuditTime:'2026-06-20 11:30',bizAuditor:'王利娟',finAuditTime:'2026-07-15 09:00',finAuditor:'张美玉',settleDate:'2026-07-15 09:00'},
{id:'1356628',cat:'财税服务',catCls:'tag-purple',name:'代理记账',utype:'企业用户',customer:'某某科技有限公司',partner:'15133334444',chMgr:'王利娟',assignee:'刘婷',custMgr:'李鹏飞',amount:1000,comm:0,rule:'—',settle:'次月6日',expectDate:'',status:'cancelled',bizAuditTime:'2026-06-15 16:00',bizAuditor:'王利娟',finAuditTime:'',finAuditor:'',settleDate:''},
{id:'1356626',cat:'异地用工',catCls:'tag-blue',name:'岗位外包',utype:'企业用户',customer:'顺达物流有限公司',partner:'13722223333',chMgr:'王利娟',assignee:'赵磊',custMgr:'郭欢',amount:60,comm:18,rule:'比例 30% 续费',settle:'次月6日',expectDate:'2026-07-07',status:'finRejected',bizAuditTime:'2026-06-20 11:00',bizAuditor:'王利娟',finAuditTime:'2026-07-07 10:30',finAuditor:'张美玉',finRejectReason:'佣金金额与订单不符,请核实',settleDate:''},
{id:'1356624',cat:'财税服务',catCls:'tag-purple',name:'代理记账',utype:'企业用户',customer:'启航教育咨询',partner:'13987654321',chMgr:'王利娟',assignee:'刘婷',custMgr:'张美玉',amount:2000,comm:600,rule:'比例 30% 续费',settle:'次月15日',expectDate:'2026-07-15',status:'finRejected',bizAuditTime:'2026-06-25 14:00',bizAuditor:'王利娟',finAuditTime:'2026-07-15 09:20',finAuditor:'张美玉',finRejectReason:'客户已退款,订单需重新确认',settleDate:''},
];
var pCurTab = 'pending';
function pSwitchTab(tab, el) {
......@@ -769,59 +773,101 @@ function pSwitchTab(tab, el) {
pRender();
}
function pRender() {
var counts = { pending:0, waitSettle:0, settled:0, cancelled:0 };
P_DATA.forEach(function(d){ counts[d.status]++; });
['pending','waitSettle','settled','cancelled'].forEach(function(k){ document.getElementById('p-cnt-'+k).textContent = counts[k]; });
var counts = {pending:0,finAudit:0,waitSettle:0,settled:0,cancelled:0,finRejected:0};
P_DATA.forEach(function(d){counts[d.status]++;});
['pending','finAudit','waitSettle','settled','cancelled','finRejected'].forEach(function(k){document.getElementById('p-cnt-'+k).textContent=counts[k];});
document.getElementById('p-cnt-all').textContent = P_DATA.length;
var tab = pCurTab;
var list = tab === 'all' ? P_DATA.slice() : P_DATA.filter(function(d){ return d.status === tab; });
var posSum = 0, negSum = 0;
list.forEach(function(d){ if(d.comm>=0) posSum+=d.comm; else negSum+=d.comm; });
var isWait = (tab==='waitSettle'), isSettled = (tab==='settled'), isPending = (tab==='pending'), isCancelled = (tab==='cancelled');
document.getElementById('p-batch-btn').style.display = isPending ? '' : 'none';
document.getElementById('p-summary-text').innerHTML = '共 '+list.length+' 条,佣金总额 <b>\u00a5'+((posSum+negSum).toFixed(2))+'</b>\u3000正向 <b>\u00a5'+(posSum.toFixed(2))+'</b>\u3000负向 <b style="color:#cf1322">\u00a5'+(negSum.toFixed(2))+'</b>';
document.getElementById('p-total-count').textContent = list.length;
var thExtra = '';
if(isPending) thExtra = '<th>预计入账时间</th>';
else if(isWait) thExtra = '<th>审核时间</th><th>预计入账时间</th>';
else if(isSettled || tab==='all') thExtra = '<th>审核时间</th><th>预计入账时间</th><th>实际入账时间</th>';
else if(isCancelled) thExtra = '<th>审核时间</th><th>预计入账时间</th>';
document.getElementById('p-thead').innerHTML = '<tr>'+(isPending?'<th class="cb"><input type="checkbox" onchange="pToggleAll(this)"></th>':'')+'<th>订单编号</th><th>产品类型</th><th>产品名称</th><th>用户类型</th><th>所属客户</th><th>合伙人</th><th>渠道管理员</th><th>对接人</th><th>客户经理</th><th>订单金额</th><th>佣金金额</th><th>佣金规则</th>'+thExtra+'<th>状态</th><th>操作</th></tr>';
document.getElementById('p-tbody').innerHTML = list.map(function(d,i){
var st=P_STATUS[d.status]; var cc=d.comm<0?'#cf1322':'#389e0d'; var cv=d.comm<0?'-\u00a5'+Math.abs(d.comm).toFixed(2):'\u00a5'+d.comm.toFixed(2);
var ruleCell = '<td style="color:#8c8c8c;font-size:11px">'+d.rule+'<br><span style="font-family:monospace;font-weight:500;color:#d48806">T+'+d.cycle+'\u5929</span></td>';
var extra='';
if(isPending) extra='<td>'+d.expectDate+'</td>';
else if(isWait) extra='<td style="color:#8c8c8c;font-size:11px">'+(d.auditTime||'\u2014')+'</td><td style="font-weight:500;color:#1677ff">'+d.expectDate+'</td>';
else if(isSettled || tab==='all') extra='<td style="color:#8c8c8c;font-size:11px">'+(d.auditTime||'\u2014')+'</td><td>'+d.expectDate+'</td><td style="font-weight:500;color:#389e0d">'+(d.settleDate||'\u2014')+'</td>';
else if(isCancelled) extra='<td style="color:#8c8c8c;font-size:11px">'+(d.auditTime||'\u2014')+'</td><td>'+d.expectDate+'</td>';
var list = tab==='all' ? P_DATA.slice() : P_DATA.filter(function(d){return d.status===tab;});
var sf = document.getElementById('p-status-filter').value;
if(sf) list = list.filter(function(d){return d.status===sf;});
var posSum=0,negSum=0;
list.forEach(function(d){if(d.comm>=0)posSum+=d.comm;else negSum+=d.comm;});
var isPending=(tab==='pending'),isFin=(tab==='finAudit'),isWait=(tab==='waitSettle'),isSettled=(tab==='settled'),isCancelled=(tab==='cancelled'),isFinRej=(tab==='finRejected');
var bb=document.getElementById('p-batch-btn');
if(isPending||isFinRej){bb.style.display='';bb.textContent='批量审核';bb.onclick=pBatchBizAudit;}
else if(isFin){bb.style.display='';bb.textContent='批量财务审核';bb.onclick=pBatchFinAudit;}
else{bb.style.display='none';}
document.getElementById('p-summary-text').innerHTML='共 '+list.length+' 条,佣金总额 <b>¥'+((posSum+negSum).toFixed(2))+'</b> 正向 <b>¥'+(posSum.toFixed(2))+'</b> 负向 <b style="color:#cf1322">¥'+(negSum.toFixed(2))+'</b>';
document.getElementById('p-total-count').textContent=list.length;
var thExtra='';var thPre='';
if(isPending) thPre='<th>预计入账时间</th>';
else if(isFin) { thPre='<th>预计入账时间</th>'; thExtra='<th>业务审核人/时间</th>'; }
else if(isWait) { thPre='<th>预计入账时间</th>'; thExtra='<th>业务审核人/时间</th><th>财务审核人/时间</th>'; }
else if(isSettled||tab==='all') { thPre='<th>预计入账时间</th>'; thExtra='<th>业务审核人/时间</th><th>财务审核人/时间</th><th>实际入账时间</th>'; }
else if(isCancelled) thExtra='<th>业务审核人/时间</th>';
else if(isFinRej) thExtra='<th>业务审核人/时间</th><th>财务拒回原因</th><th>财务拒回时间</th>';
document.getElementById('p-thead').innerHTML='<tr>'+((isPending||isFin||isFinRej)?'<th class="cb"><input type="checkbox" onchange="pToggleAll(this)"></th>':'')+thPre+'<th>订单编号</th><th>产品类型</th><th>产品名称</th><th>用户类型</th><th>所属客户</th><th>合伙人</th><th>渠道管理员</th><th>对接人</th><th>客户经理</th><th>订单金额</th><th>佣金金额</th><th>佣金规则</th>'+thExtra+'<th>状态</th><th>操作</th></tr>';
document.getElementById('p-tbody').innerHTML=list.map(function(d,i){
var st=P_STATUS[d.status];var cc=d.comm<0?'#cf1322':'#389e0d';var cv=d.comm<0?'-¥'+Math.abs(d.comm).toFixed(2):'¥'+d.comm.toFixed(2);
var spTag=d.settle?'<span style="color:#d48806;font-size:11px">'+d.settle+'</span>':'';
var ruleCell='<td style="color:#8c8c8c;font-size:11px">'+d.rule+'<br>'+spTag+'</td>';
var extra='';var preTd='';
var ba=d.bizAuditor?d.bizAuditor+'<br><span style="color:#8c8c8c;font-size:10px">'+d.bizAuditTime+'</span>':'—';
var fa=d.finAuditor?d.finAuditor+'<br><span style="color:#8c8c8c;font-size:10px">'+d.finAuditTime+'</span>':'—';
var ep=d.expectDate||'—';
if(isPending) { preTd='<td style="font-weight:500">'+ep+'</td>'; extra=''; }
else if(isFin) { preTd='<td style="font-weight:500;color:#1677ff">'+ep+'</td>'; extra='<td style="font-size:11px">'+ba+'</td>'; }
else if(isWait) { preTd='<td>'+ep+'</td>'; extra='<td style="font-size:11px">'+ba+'</td><td style="font-size:11px">'+fa+'</td>'; }
else if(isSettled||tab==='all') extra='<td style="font-size:11px">'+ba+'</td><td style="font-size:11px">'+fa+'</td><td>'+ep+'</td><td style="font-weight:500;color:#389e0d">'+(d.settleDate||'—')+'</td>';
else if(isCancelled) extra='<td style="font-size:11px">'+ba+'</td>';
else if(isFinRej) extra='<td style="font-size:11px">'+ba+'</td><td style="color:#cf1322;font-size:11px">'+(d.finRejectReason||'—')+'</td><td style="font-size:11px">'+(d.finAuditTime||'')+'</td>';
var ops='<button class="btn-link">操作记录</button>';
if(d.status==='pending') ops+='<button class="btn-link" onclick="pAuditOne('+i+')">审核</button>';
ops+='<button class="btn-link">更多</button>';
return '<tr>'+(isPending?'<td class="cb"><input type="checkbox" class="p-row-cb" data-idx="'+i+'"></td>':'')+'<td style="color:#1677ff;cursor:pointer">'+d.id+'</td><td><span class="tag '+d.catCls+'">'+d.cat+'</span></td><td>'+d.name+'</td><td>'+d.utype+'</td><td>'+d.customer+'</td><td>'+d.partner+'</td><td style="color:#1677ff">'+d.chMgr+'</td><td>'+(d.assignee?'<span class="tag tag-blue">'+d.assignee+'</span>':'<span class="muted">\u2014</span>')+'</td><td>'+d.custMgr+'</td><td>'+d.amount.toFixed(2)+'</td><td style="font-weight:500;color:'+cc+'">'+cv+'</td>'+ruleCell+extra+'<td><span class="tag '+st[1]+'">'+st[0]+'</span></td><td>'+ops+'</td></tr>';
}).join('')||'<tr><td colspan="18" style="text-align:center;color:#bfbfbf;padding:36px 0">\u6682\u65e0\u6570\u636e</td></tr>';
if(d.status==='pending'||d.status==='finRejected') ops+='<button class="btn-link" onclick="pBizAuditOne('+i+')">审核</button>';
if(d.status==='finAudit') ops+='<button class="btn-link" onclick="pFinAuditOne('+i+')">财务审核</button>';
return '<tr>'+((isPending||isFin||isFinRej)?'<td class="cb"><input type="checkbox" class="p-row-cb" data-idx="'+i+'"></td>':'')+preTd+'<td style="color:#1677ff;cursor:pointer">'+d.id+'</td><td><span class="tag '+d.catCls+'">'+d.cat+'</span></td><td>'+d.name+'</td><td>'+d.utype+'</td><td>'+d.customer+'</td><td>'+d.partner+'</td><td style="color:#1677ff">'+d.chMgr+'</td><td>'+(d.assignee?'<span class="tag tag-blue">'+d.assignee+'</span>':'<span class="muted"></span>')+'</td><td>'+d.custMgr+'</td><td>'+d.amount.toFixed(2)+'</td><td style="font-weight:500;color:'+cc+'">'+cv+'</td>'+ruleCell+extra+'<td><span class="tag '+st[1]+'">'+st[0]+'</span></td><td>'+ops+'</td></tr>';
}).join('')||'<tr><td colspan="20" style="text-align:center;color:#bfbfbf;padding:36px 0">暂无数据</td></tr>';
}
function pToggleAll(el){document.querySelectorAll('.p-row-cb').forEach(function(cb){cb.checked=el.checked});}
function pAuditOne(i){
function nowTs(){var n=new Date();return n.getFullYear()+'-'+String(n.getMonth()+1).padStart(2,'0')+'-'+String(n.getDate()).padStart(2,'0')+' '+String(n.getHours()).padStart(2,'0')+':'+String(n.getMinutes()).padStart(2,'0');}
function pBizAuditOne(i){
var list=pCurTab==='all'?P_DATA.slice():P_DATA.filter(function(x){return x.status===pCurTab;});
var d=list[i]; if(!d)return;
if(confirm('\u786e\u8ba4\u5ba1\u6838\u901a\u8fc7\uff1f\u5ba1\u6838\u901a\u8fc7\u540e\u5c06\u8fdb\u5165\u201c\u5df2\u5ba1\u6838\u5f85\u5165\u8d26\u201d\u72b6\u6001\uff0cT+'+d.cycle+'\u5929\u540e\u81ea\u52a8\u5165\u8d26\u3002')){
var now=new Date(); d.status='waitSettle'; d.auditTime=now.getFullYear()+'-'+String(now.getMonth()+1).padStart(2,'0')+'-'+String(now.getDate()).padStart(2,'0')+' '+String(now.getHours()).padStart(2,'0')+':'+String(now.getMinutes()).padStart(2,'0');
var exp=new Date(now.getTime()+d.cycle*24*60*60*1000); d.expectDate=exp.getFullYear()+'-'+String(exp.getMonth()+1).padStart(2,'0')+'-'+String(exp.getDate()).padStart(2,'0');
pRender();
var d=list[i];if(!d)return;
if(confirm('确认业务审核通过?通过后进入"待财务审核"')){d.status='finAudit';d.bizAuditTime=nowTs();d.bizAuditor='王利娟';pRender();}
}
function pBatchBizAudit(){
var cbs=document.querySelectorAll('.p-row-cb:checked');if(!cbs.length){alert('请先勾选');return;}
if(confirm('确认批量业务审核通过 '+cbs.length+' 条?')){
var list=pCurTab==='all'?P_DATA.slice():P_DATA.filter(function(x){return x.status===pCurTab;});
var ts=nowTs();cbs.forEach(function(cb){var d=list[parseInt(cb.dataset.idx)];if(d){d.status='finAudit';d.bizAuditTime=ts;d.bizAuditor='王利娟';}});pRender();
}
}
function pBatchAudit(){
var cbs=document.querySelectorAll('.p-row-cb:checked'); if(!cbs.length){alert('\u8bf7\u5148\u52fe\u9009');return;}
if(confirm('\u786e\u8ba4\u6279\u91cf\u5ba1\u6838\u901a\u8fc7 '+cbs.length+' \u6761\u8bb0\u5f55\uff1f')){
function pFinAuditOne(i){
var list=pCurTab==='all'?P_DATA.slice():P_DATA.filter(function(x){return x.status===pCurTab;});
var d=list[i];if(!d)return;
var pid=d.partner;
var batch=P_DATA.filter(function(x){return x.partner===pid&&(x.status==='finAudit'||x.status==='waitSettle');});
var net=0;batch.forEach(function(x){net+=x.comm;});
var action=prompt('合伙人 '+pid+'\n本批净额:¥'+net.toFixed(2)+'\n'+(net>=0?'净额≥0,通过后直接入账':'净额<0,通过后进待入账等补平')+'\n\n请输入操作:\n1 = 审核通过\n2 = 拒回(退回业务审核员重审)');
if(action==='1'){
var ts=nowTs();var target=net>=0?'settled':'waitSettle';
batch.forEach(function(x){x.status=target;x.finAuditTime=ts;x.finAuditor='张美玉';if(target==='settled')x.settleDate=ts;});pRender();
} else if(action==='2'){
var reason=prompt('请输入拒回原因:');
if(reason){
var ts=nowTs();
batch.forEach(function(x){x.status='finRejected';x.finAuditTime=ts;x.finAuditor='张美玉';x.finRejectReason=reason;});pRender();
}
}
}
function pBatchFinAudit(){
var cbs=document.querySelectorAll('.p-row-cb:checked');if(!cbs.length){alert('请先勾选');return;}
if(confirm('确认批量财务审核通过?系统将按合伙人维度计算净额。')){
var list=pCurTab==='all'?P_DATA.slice():P_DATA.filter(function(x){return x.status===pCurTab;});
var now=new Date(); var ts=now.getFullYear()+'-'+String(now.getMonth()+1).padStart(2,'0')+'-'+String(now.getDate()).padStart(2,'0')+' '+String(now.getHours()).padStart(2,'0')+':'+String(now.getMinutes()).padStart(2,'0');
cbs.forEach(function(cb){var d=list[parseInt(cb.dataset.idx)];if(d){d.status='waitSettle';d.auditTime=ts;var exp=new Date(now.getTime()+d.cycle*24*60*60*1000);d.expectDate=exp.getFullYear()+'-'+String(exp.getMonth()+1).padStart(2,'0')+'-'+String(exp.getDate()).padStart(2,'0');}});
var ts=nowTs();
var groups={};cbs.forEach(function(cb){var d=list[parseInt(cb.dataset.idx)];if(d){if(!groups[d.partner])groups[d.partner]=[];groups[d.partner].push(d);}});
for(var pid in groups){
var all=P_DATA.filter(function(x){return x.partner===pid&&(x.status==='finAudit'||x.status==='waitSettle');});
var net=0;all.forEach(function(x){net+=x.comm;});
var target=net>=0?'settled':'waitSettle';
all.forEach(function(x){x.status=target;x.finAuditTime=ts;x.finAuditor='张美玉';if(target==='settled')x.settleDate=ts;});
}
pRender();
}
}
pRender();
function switchPage(id, el) {
document.querySelectorAll('.page').forEach(function(p) { p.classList.remove('active'); });
document.querySelectorAll('.nav-item').forEach(function(n) { n.classList.remove('active'); });
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment