From 9471ee3e8598e632d4597b6fd773804572b6630b Mon Sep 17 00:00:00 2001 From: mac Date: Fri, 10 Jul 2026 19:49:11 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E5=8F=B0+tip=E6=A0=B7=E5=BC=8F=E8=B0=83?= =?UTF-8?q?=E6=95=B4+tip/tab=E4=BD=8D=E7=BD=AE=E5=AF=B9=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增测试·无界工作台(所有人可见) - 为所有opc_owner用户添加测试工作台权限 - 预算模块tip改淡黄色+新文案 - 预算/已发生模块tip和tab位置对调(tip在上) - 版本号 v1.2.0.12 --- backend/migrations/__init__.py | 3 ++- backend/migrations/data_fixes.py | 23 +++++++++++++++++++++++ backend/routes.py | 4 ++-- static/modules/finance.js | 2 +- static/modules/plan.js | 8 ++++---- static/modules/projects.js | 8 +++++--- templates/index.html | 2 +- 7 files changed, 38 insertions(+), 12 deletions(-) diff --git a/backend/migrations/__init__.py b/backend/migrations/__init__.py index db13c5b..7bc65c6 100644 --- a/backend/migrations/__init__.py +++ b/backend/migrations/__init__.py @@ -17,7 +17,7 @@ def run_migrations(): """ from migrations.tables import migrate_create_tables from migrations.columns import migrate_add_columns - from migrations.data_fixes import migrate_fix_task_status, migrate_rename_tenant, migrate_drop_product_fields, migrate_fix_service_fee_standard, migrate_fix_expense_status, migrate_rename_xuehui_to_xueshu, migrate_rename_zong_to_overview + from migrations.data_fixes import migrate_fix_task_status, migrate_rename_tenant, migrate_drop_product_fields, migrate_fix_service_fee_standard, migrate_fix_expense_status, migrate_rename_xuehui_to_xueshu, migrate_rename_zong_to_overview, migrate_add_test_tenant from migrations.data_split import migrate_data_split from migrations.seed import migrate_seed_users, migrate_seed_demo_data @@ -30,6 +30,7 @@ def run_migrations(): migrate_fix_expense_status() migrate_rename_xuehui_to_xueshu() migrate_rename_zong_to_overview() + migrate_add_test_tenant() migrate_data_split() migrate_seed_users() migrate_seed_demo_data() diff --git a/backend/migrations/data_fixes.py b/backend/migrations/data_fixes.py index 003a5bb..1d3ce49 100644 --- a/backend/migrations/data_fixes.py +++ b/backend/migrations/data_fixes.py @@ -157,3 +157,26 @@ def migrate_rename_zong_to_overview(): pass finally: conn.close() + + +def migrate_add_test_tenant(): + """为所有 opc_owner 用户添加 测试·无界 工作台权限""" + from db import db, mysql + + conn = db() + try: + cur = conn.cursor(dictionary=True) + cur.execute("SELECT id, username FROM users WHERE role = 'opc_owner'") + users = cur.fetchall() + added = 0 + for u in users: + cur.execute("SELECT id FROM user_tenants WHERE user_id = %s AND tenant = %s", (u["id"], "测试·无界")) + if not cur.fetchone(): + cur.execute("INSERT INTO user_tenants (user_id, tenant) VALUES (%s, %s)", (u["id"], "测试·无界")) + added += 1 + if added: + conn.commit() + print(f"[migrate] 为 {added} 个 opc_owner 用户添加了 '测试·无界' 工作台权限") + cur.close() + finally: + conn.close() diff --git a/backend/routes.py b/backend/routes.py index 356f528..69e6e22 100644 --- a/backend/routes.py +++ b/backend/routes.py @@ -14,7 +14,7 @@ from helpers import add_file_index, attach_common, monthly_finance bp = Blueprint("api", __name__) -ALL_TENANTS = ["科普·无界", "科研·无界", "医患·无界", "MCN·无界", "学术·无界"] +ALL_TENANTS = ["科普·无界", "科研·无界", "医患·无界", "MCN·无界", "学术·无界", "测试·无界"] TABLES = { "sales": ("sales_leads", ["target_customer", "priority", "status", "tenant"]), @@ -75,7 +75,7 @@ def auth_login(): session["display_name"] = user["display_name"] session["role"] = user["role"] if user["role"] == "admin": - session["tenants"] = ["科普·无界", "科研·无界", "医患·无界", "MCN·无界", "学术·无界"] + session["tenants"] = ["科普·无界", "科研·无界", "医患·无界", "MCN·无界", "学术·无界", "测试·无界"] else: ut = rows(conn, "SELECT tenant FROM user_tenants WHERE user_id=?", (user["id"],)) session["tenants"] = [x["tenant"] for x in ut] diff --git a/static/modules/finance.js b/static/modules/finance.js index 5a55e3c..8a5d89b 100644 --- a/static/modules/finance.js +++ b/static/modules/finance.js @@ -118,11 +118,11 @@ function renderFinance() { const finFilterTabs = `
${isOverviewMode ? '' : ``}
`; document.querySelector("#finance").innerHTML = `
- ${finFilterTabs} ${isOverviewMode ? '' : `
已发生模块:只记录,已经发生的确收,毛利,回款,成本,支出
`} + ${finFilterTabs} ${state.finFilter !== 'expense' && state.finFilter !== 'overview' && state.finFilter !== 'quarterlyOverview' ? card(`
${finHeaderBase}
${finAddBtn}
`, "py-2 px-4") : ''}