feat: 绩效模块重构 + UI 统一样式 + 标题联动

- 新增绩效模块(季度考核表,目标/完成/权重/评分,localStorage)
- 产品模块增加版本迭代/产品运营双Tab
- 方案模块Tab改为下划线样式
- 顶部标题随模块切换联动更新
- OPC来信弹窗恢复并采用信件样式排版
- 费用模块移入业务顶部Tab(平台费用)
- 侧边栏:项目→业务,台账→Focus,新增绩效
- 顶部品牌区增加版本号显示v1.0.0.2
This commit is contained in:
mac
2026-07-07 15:56:13 +08:00
parent c12389fb89
commit 075350a026
7 changed files with 208 additions and 29 deletions

View File

@@ -84,7 +84,9 @@ function renderExpense() {
EXPENSE_TYPES.forEach(function(t) { modal += '<option>' + t + '</option>'; });
modal += '</select></label><label class="block"><span class="text-xs text-slate-500 mb-1 block">月份 <span class="text-red-500">*</span></span><select name="expense_month" required class="form-ctrl bg-white">' + monthOpts + '</select></label></div><div class="grid grid-cols-2 gap-3"><label class="block"><span class="text-xs text-slate-500 mb-1 block">金额(元)</span><input name="amount" type="number" step="0.01" class="form-ctrl" placeholder="0.00"></label><label class="block"><span class="text-xs text-slate-500 mb-1 block">已发生金额(元)</span><input name="incurred_amount" type="number" step="0.01" class="form-ctrl" placeholder="0.00"></label></div><label class="block"><span class="text-xs text-slate-500 mb-1 block">费用说明</span><textarea name="notes" class="form-ctrl" rows="3" placeholder="备注信息"></textarea></label><div class="flex justify-end gap-3 pt-2"><button type="button" class="btn btn-ghost btn-sm px-6" onclick="closeExpenseModal()">取消</button><button type="submit" class="btn btn-primary btn-sm px-8">保存</button></div></form></div></div>';
document.querySelector("#expense").innerHTML = '<div class="grid gap-4">' +
var target = document.querySelector("#financeExpense") || document.querySelector("#financeTabExpense") || document.querySelector("#expense");
if (!target) return;
target.innerHTML = '<div class="grid gap-4">' +
'<div class="card p-3"><div class="flex justify-between items-center"><div class="flex items-center gap-2">' + toolbar + '</div><button class="btn btn-primary btn-sm" onclick="openExpenseModal()">新增费用</button></div></div>' +
'<div class="grid grid-cols-3 gap-3">' +
'<div class="metric-card p-3"><span class="flex items-center gap-2 text-xs text-slate-500">费用记录</span><strong class="mt-2 block text-xl">' + filtered.length + '</strong></div>' +