仅“协议附件/缴费截图”审核
+审核通过后仅写 biz_protocol_audit 记录,不改协议单主状态(状态仍由业务流程控制)
From 8e2dd8b9f01539f9801e7871324e106fe3d7f846 Mon Sep 17 00:00:00 2001 From: zlwu <704541015@qq.com> Date: Sun, 17 May 2026 08:36:37 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../page-2026-05-16T05-37-34-857Z.yml | 5 + .../page-2026-05-16T05-37-57-758Z.yml | 119 + .../page-2026-05-16T05-40-18-880Z.yml | 29 + .../page-2026-05-16T05-40-31-785Z.yml | 29 + .../page-2026-05-16T05-41-00-624Z.yml | 119 + .../page-2026-05-16T05-41-36-020Z.yml | 29 + .../page-2026-05-16T05-41-45-619Z.yml | 29 + .../page-2026-05-16T05-42-20-871Z.yml | 119 + .../zkxw-cell-storage-modules-overview.html | 151 + .../zkxw-installment-warning-rule.html | 76 + .../78964-1778664283/state/server-stopped | 1 + .../78964-1778664283/state/server.pid | 1 + AGENTS.md | 9 +- backend/.env.example | 6 +- backend/README.md | 2 +- backend/app.pid | 2 +- backend/app/api/__init__.py | 12 + backend/app/api/admin.py | 158 +- backend/app/api/basic_info.py | 860 +++++ backend/app/api/collection_protocol.py | 513 +++ backend/app/api/ethnic.py | 24 + backend/app/api/leave.py | 205 ++ backend/app/api/menu.py | 100 +- backend/app/api/operations.py | 598 +++ backend/app/api/public.py | 2 +- backend/app/api/workflow.py | 514 +++ backend/app/core/config.py | 2 +- backend/app/crud/cell_sample_type.py | 174 + backend/app/crud/clean_room.py | 344 ++ backend/app/crud/collection_protocol.py | 1580 ++++++++ backend/app/crud/collection_protocol_no.py | 339 ++ backend/app/crud/collection_region.py | 308 ++ backend/app/crud/customer.py | 194 + backend/app/crud/dept.py | 2 +- backend/app/crud/dict_data.py | 4 +- backend/app/crud/dict_type.py | 2 +- backend/app/crud/ethnic.py | 30 + backend/app/crud/exhibition_appointment.py | 238 ++ backend/app/crud/express_company.py | 2 +- backend/app/crud/item_unit.py | 2 +- backend/app/crud/leave.py | 144 + backend/app/crud/menu.py | 2 +- backend/app/crud/post.py | 2 +- backend/app/crud/role.py | 13 +- backend/app/crud/sample_code.py | 341 ++ backend/app/crud/site.py | 2 +- backend/app/crud/storage_facility.py | 356 ++ backend/app/crud/tenant.py | 2 +- backend/app/crud/user.py | 94 +- backend/app/crud/workflow.py | 760 ++++ backend/app/main.py | 8 +- backend/app/models/models.py | 701 +++- backend/app/schemas/attachment.py | 13 + backend/app/schemas/leave.py | 40 + backend/app/schemas/workflow.py | 115 + backend/app/services/web_auth_roles.py | 2 +- backend/app/services/workflow_callback.py | 106 + backend/app/services/workflow_engine.py | 389 ++ backend/requirements.txt | 1 + .../tests/test_basic_info_tenant_ownership.py | 254 ++ .../test_collection_protocol_conventions.py | 249 ++ .../test_collection_protocol_save_bundle.py | 83 + backend/tests/test_ethnic.py | 17 + ...-protocol-party-customer-apgar-decimal.sql | 4 + ...er-biz-protocol-sample-status-nullable.sql | 3 + docs/sql/sys-ethnic.sql | 83 + docs/sql/zkxw-init-dept-data.sql | 20 - docs/sql/zkxw-init-dict-data.sql | 24 - docs/sql/zkxw-init-menu-data.sql | 24 - docs/sql/zkxw-init-role-data.sql | 28 - docs/sql/zkxw-init-site-post-unit-express.sql | 26 - docs/sql/zkxw-init-user-data.sql | 24 - docs/sql/zkxw-requirements-v0.3-schema.sql | 1638 --------- docs/sql/zkxw.sql | 2550 +++++++++++++ ...026-05-13-cell-storage-protocol-modules.md | 59 + .../2026-05-13-flow-designer-enhancements.md | 535 +++ ...3-flow-designer-enterprise-enhancements.md | 612 ++++ .../plans/2026-05-13-workflow-module.md | 2502 +++++++++++++ .../plans/2026-05-15-operations-support.md | 618 ++++ .../2026-05-15-storage-facility-redesign.md | 924 +++++ ...13-cell-storage-protocol-modules-design.md | 4 +- .../2026-05-13-workflow-module-design.md | 351 ++ .../2026-05-15-operations-support-design.md | 48 + docs/中科兴皖需求V0.3.md | 57 +- login-success.png | Bin 0 -> 77493 bytes .../basic-info-management/.openspec.yaml | 2 + .../changes/basic-info-management/design.md | 77 + .../changes/basic-info-management/proposal.md | 34 + .../specs/cell-sample-type-management/spec.md | 37 + .../collection-protocol-no-management/spec.md | 37 + .../spec.md | 33 + .../specs/customer-management/spec.md | 47 + .../specs/sample-code-management/spec.md | 37 + .../changes/basic-info-management/tasks.md | 35 + .../.openspec.yaml | 2 + .../cell-storage-protocol-modules/design.md | 43 + .../cell-storage-protocol-modules/proposal.md | 32 + .../cell-storage-collection-protocol/spec.md | 33 + .../cell-storage-installment-warning/spec.md | 33 + .../specs/cell-storage-protocol-audit/spec.md | 37 + .../cell-storage-receipt-confirm/spec.md | 33 + .../specs/cell-storage-refund-confirm/spec.md | 28 + .../cell-storage-protocol-modules/tasks.md | 39 + openspec/changes/dict-management/proposal.md | 4 +- .../dict-management/specs/dict-crud/spec.md | 6 +- .../specs/api-conventions/spec.md | 4 +- .../specs/coding-conventions/spec.md | 2 +- .../specs/ui-conventions/spec.md | 411 +++ web-admin/package.json | 1 + web-admin/pnpm-lock.yaml | 30 + web-admin/public/avatart.jpg | Bin 0 -> 16907 bytes web-admin/public/logo1.jpg | Bin 411065 -> 0 bytes web-admin/public/logo1_副本.jpg | Bin 411065 -> 0 bytes web-admin/src/App.vue | 2 +- web-admin/src/api/admin.ts | 586 ++- web-admin/src/api/collection-protocol.ts | 134 + web-admin/src/api/ethnic.ts | 15 + web-admin/src/api/leave.ts | 78 + web-admin/src/api/workflow.ts | 206 ++ web-admin/src/assets/styles/core/app.scss | 11 +- .../src/assets/styles/core/el-light.scss | 3 +- web-admin/src/assets/styles/core/el-ui.scss | 54 + .../business/system-view-dialog/index.vue | 211 ++ .../components/core/forms/art-form/index.vue | 18 +- .../core/forms/art-search-bar/index.vue | 18 +- .../art-menus/art-sidebar-menu/index.vue | 8 + .../art-menus/art-sidebar-menu/style.scss | 8 + .../art-menus/art-sidebar-menu/theme.scss | 15 +- .../widget/SidebarSubmenu.vue | 14 +- .../art-settings-panel/widget/SettingItem.vue | 8 +- .../core/layouts/art-work-tab/index.vue | 12 +- web-admin/src/router/index.ts | 2 +- web-admin/src/router/modules/sqxp.ts | 255 +- web-admin/src/store/modules/worktab.ts | 14 +- web-admin/src/types/api.d.ts | 231 +- web-admin/src/types/router/index.ts | 4 +- web-admin/src/utils/fetch-paged-list.ts | 6 +- web-admin/src/utils/http/index.ts | 2 +- web-admin/src/utils/navigation/jump.ts | 5 + web-admin/src/utils/sort-order.ts | 5 +- web-admin/src/utils/tree-path.ts | 17 +- web-admin/src/utils/ui/ep-icon-map.ts | 12 +- web-admin/src/utils/user-avatar.ts | 8 +- .../basic-info/cell-sample-type/index.vue | 403 +++ .../collection-protocol-no/index.vue | 684 ++++ .../basic-info/collection-region/index.vue | 665 ++++ .../src/views/basic-info/customer/index.vue | 431 +++ .../views/basic-info/sample-code/index.vue | 710 ++++ .../installment-warning/index.vue | 107 + .../cell-storage/payment-confirm/index.vue | 125 + .../cell-storage/protocol-audit/index.vue | 410 +++ .../protocol/ProtocolAttachmentReadonly.vue | 208 ++ .../protocol/ProtocolFormDialog.vue | 3198 +++++++++++++++++ .../protocol/ProtocolViewDialog.vue | 865 +++++ .../src/views/cell-storage/protocol/index.vue | 410 +++ .../cell-storage/refund-confirm/index.vue | 124 + .../src/views/dashboard/console/index.vue | 10 +- .../src/views/operations/clean-room/index.vue | 829 +++++ web-admin/src/views/operations/demo/index.vue | 35 + .../exhibition-appointment/index.vue | 363 ++ .../operations/storage-facility/index.vue | 1285 +++++++ web-admin/src/views/system/category/index.vue | 64 +- web-admin/src/views/system/dept/index.vue | 266 +- web-admin/src/views/system/dict/index.vue | 122 +- web-admin/src/views/system/express/index.vue | 76 +- web-admin/src/views/system/leave/index.vue | 331 ++ web-admin/src/views/system/menu/index.vue | 110 +- web-admin/src/views/system/order/index.vue | 18 +- web-admin/src/views/system/post/index.vue | 515 ++- web-admin/src/views/system/product/index.vue | 31 +- web-admin/src/views/system/role/index.vue | 550 ++- web-admin/src/views/system/site/index.vue | 241 +- web-admin/src/views/system/tenant/index.vue | 84 +- web-admin/src/views/system/unit/index.vue | 76 +- web-admin/src/views/system/user/detail.vue | 12 +- web-admin/src/views/system/user/index.vue | 85 +- .../views/system/user/modules/user-dialog.vue | 5 +- .../workflow/components/ApprovalDialog.vue | 288 ++ .../workflow/components/ProcessStatusTag.vue | 25 + .../system/workflow/designer/FlowDesigner.vue | 1641 +++++++++ .../system/workflow/my-applications/index.vue | 518 +++ .../views/system/workflow/process/index.vue | 352 ++ .../system/workflow/task-completed/index.vue | 532 +++ .../system/workflow/task-pending/index.vue | 545 +++ 代码助手.md | 125 - 民族.sql | 118 + 186 files changed, 38821 insertions(+), 2571 deletions(-) create mode 100644 .playwright-mcp/page-2026-05-16T05-37-34-857Z.yml create mode 100644 .playwright-mcp/page-2026-05-16T05-37-57-758Z.yml create mode 100644 .playwright-mcp/page-2026-05-16T05-40-18-880Z.yml create mode 100644 .playwright-mcp/page-2026-05-16T05-40-31-785Z.yml create mode 100644 .playwright-mcp/page-2026-05-16T05-41-00-624Z.yml create mode 100644 .playwright-mcp/page-2026-05-16T05-41-36-020Z.yml create mode 100644 .playwright-mcp/page-2026-05-16T05-41-45-619Z.yml create mode 100644 .playwright-mcp/page-2026-05-16T05-42-20-871Z.yml create mode 100644 .superpowers/brainstorm/78964-1778664283/content/zkxw-cell-storage-modules-overview.html create mode 100644 .superpowers/brainstorm/78964-1778664283/content/zkxw-installment-warning-rule.html create mode 100644 .superpowers/brainstorm/78964-1778664283/state/server-stopped create mode 100644 .superpowers/brainstorm/78964-1778664283/state/server.pid create mode 100644 backend/app/api/basic_info.py create mode 100644 backend/app/api/collection_protocol.py create mode 100644 backend/app/api/ethnic.py create mode 100644 backend/app/api/leave.py create mode 100644 backend/app/api/operations.py create mode 100644 backend/app/api/workflow.py create mode 100644 backend/app/crud/cell_sample_type.py create mode 100644 backend/app/crud/clean_room.py create mode 100644 backend/app/crud/collection_protocol.py create mode 100644 backend/app/crud/collection_protocol_no.py create mode 100644 backend/app/crud/collection_region.py create mode 100644 backend/app/crud/customer.py create mode 100644 backend/app/crud/ethnic.py create mode 100644 backend/app/crud/exhibition_appointment.py create mode 100644 backend/app/crud/leave.py create mode 100644 backend/app/crud/sample_code.py create mode 100644 backend/app/crud/storage_facility.py create mode 100644 backend/app/crud/workflow.py create mode 100644 backend/app/schemas/attachment.py create mode 100644 backend/app/schemas/leave.py create mode 100644 backend/app/schemas/workflow.py create mode 100644 backend/app/services/workflow_callback.py create mode 100644 backend/app/services/workflow_engine.py create mode 100644 backend/tests/test_basic_info_tenant_ownership.py create mode 100644 backend/tests/test_collection_protocol_conventions.py create mode 100644 backend/tests/test_collection_protocol_save_bundle.py create mode 100644 backend/tests/test_ethnic.py create mode 100644 docs/sql/alter-biz-protocol-party-customer-apgar-decimal.sql create mode 100644 docs/sql/alter-biz-protocol-sample-status-nullable.sql create mode 100644 docs/sql/sys-ethnic.sql delete mode 100644 docs/sql/zkxw-init-dept-data.sql delete mode 100644 docs/sql/zkxw-init-dict-data.sql delete mode 100644 docs/sql/zkxw-init-menu-data.sql delete mode 100644 docs/sql/zkxw-init-role-data.sql delete mode 100644 docs/sql/zkxw-init-site-post-unit-express.sql delete mode 100644 docs/sql/zkxw-init-user-data.sql delete mode 100644 docs/sql/zkxw-requirements-v0.3-schema.sql create mode 100644 docs/sql/zkxw.sql create mode 100644 docs/superpowers/plans/2026-05-13-cell-storage-protocol-modules.md create mode 100644 docs/superpowers/plans/2026-05-13-flow-designer-enhancements.md create mode 100644 docs/superpowers/plans/2026-05-13-flow-designer-enterprise-enhancements.md create mode 100644 docs/superpowers/plans/2026-05-13-workflow-module.md create mode 100644 docs/superpowers/plans/2026-05-15-operations-support.md create mode 100644 docs/superpowers/plans/2026-05-15-storage-facility-redesign.md create mode 100644 docs/superpowers/specs/2026-05-13-workflow-module-design.md create mode 100644 docs/superpowers/specs/2026-05-15-operations-support-design.md create mode 100644 login-success.png create mode 100644 openspec/changes/basic-info-management/.openspec.yaml create mode 100644 openspec/changes/basic-info-management/design.md create mode 100644 openspec/changes/basic-info-management/proposal.md create mode 100644 openspec/changes/basic-info-management/specs/cell-sample-type-management/spec.md create mode 100644 openspec/changes/basic-info-management/specs/collection-protocol-no-management/spec.md create mode 100644 openspec/changes/basic-info-management/specs/collection-region-hospital-management/spec.md create mode 100644 openspec/changes/basic-info-management/specs/customer-management/spec.md create mode 100644 openspec/changes/basic-info-management/specs/sample-code-management/spec.md create mode 100644 openspec/changes/basic-info-management/tasks.md create mode 100644 openspec/changes/cell-storage-protocol-modules/.openspec.yaml create mode 100644 openspec/changes/cell-storage-protocol-modules/design.md create mode 100644 openspec/changes/cell-storage-protocol-modules/proposal.md create mode 100644 openspec/changes/cell-storage-protocol-modules/specs/cell-storage-collection-protocol/spec.md create mode 100644 openspec/changes/cell-storage-protocol-modules/specs/cell-storage-installment-warning/spec.md create mode 100644 openspec/changes/cell-storage-protocol-modules/specs/cell-storage-protocol-audit/spec.md create mode 100644 openspec/changes/cell-storage-protocol-modules/specs/cell-storage-receipt-confirm/spec.md create mode 100644 openspec/changes/cell-storage-protocol-modules/specs/cell-storage-refund-confirm/spec.md create mode 100644 openspec/changes/cell-storage-protocol-modules/tasks.md create mode 100644 web-admin/public/avatart.jpg delete mode 100644 web-admin/public/logo1.jpg delete mode 100644 web-admin/public/logo1_副本.jpg create mode 100644 web-admin/src/api/collection-protocol.ts create mode 100644 web-admin/src/api/ethnic.ts create mode 100644 web-admin/src/api/leave.ts create mode 100644 web-admin/src/api/workflow.ts create mode 100644 web-admin/src/components/business/system-view-dialog/index.vue create mode 100644 web-admin/src/views/basic-info/cell-sample-type/index.vue create mode 100644 web-admin/src/views/basic-info/collection-protocol-no/index.vue create mode 100644 web-admin/src/views/basic-info/collection-region/index.vue create mode 100644 web-admin/src/views/basic-info/customer/index.vue create mode 100644 web-admin/src/views/basic-info/sample-code/index.vue create mode 100644 web-admin/src/views/cell-storage/installment-warning/index.vue create mode 100644 web-admin/src/views/cell-storage/payment-confirm/index.vue create mode 100644 web-admin/src/views/cell-storage/protocol-audit/index.vue create mode 100644 web-admin/src/views/cell-storage/protocol/ProtocolAttachmentReadonly.vue create mode 100644 web-admin/src/views/cell-storage/protocol/ProtocolFormDialog.vue create mode 100644 web-admin/src/views/cell-storage/protocol/ProtocolViewDialog.vue create mode 100644 web-admin/src/views/cell-storage/protocol/index.vue create mode 100644 web-admin/src/views/cell-storage/refund-confirm/index.vue create mode 100644 web-admin/src/views/operations/clean-room/index.vue create mode 100644 web-admin/src/views/operations/demo/index.vue create mode 100644 web-admin/src/views/operations/exhibition-appointment/index.vue create mode 100644 web-admin/src/views/operations/storage-facility/index.vue create mode 100644 web-admin/src/views/system/leave/index.vue create mode 100644 web-admin/src/views/system/workflow/components/ApprovalDialog.vue create mode 100644 web-admin/src/views/system/workflow/components/ProcessStatusTag.vue create mode 100644 web-admin/src/views/system/workflow/designer/FlowDesigner.vue create mode 100644 web-admin/src/views/system/workflow/my-applications/index.vue create mode 100644 web-admin/src/views/system/workflow/process/index.vue create mode 100644 web-admin/src/views/system/workflow/task-completed/index.vue create mode 100644 web-admin/src/views/system/workflow/task-pending/index.vue delete mode 100644 代码助手.md create mode 100644 民族.sql diff --git a/.playwright-mcp/page-2026-05-16T05-37-34-857Z.yml b/.playwright-mcp/page-2026-05-16T05-37-34-857Z.yml new file mode 100644 index 000000000..e6aca3cc0 --- /dev/null +++ b/.playwright-mcp/page-2026-05-16T05-37-34-857Z.yml @@ -0,0 +1,5 @@ +- generic [ref=e1]: + - generic "Toggle devtools panel" [ref=e2] [cursor=pointer]: + - img [ref=e3] + - generic "Toggle Component Inspector" [ref=e8] [cursor=pointer]: + - img [ref=e9] \ No newline at end of file diff --git a/.playwright-mcp/page-2026-05-16T05-37-57-758Z.yml b/.playwright-mcp/page-2026-05-16T05-37-57-758Z.yml new file mode 100644 index 000000000..146b60852 --- /dev/null +++ b/.playwright-mcp/page-2026-05-16T05-37-57-758Z.yml @@ -0,0 +1,119 @@ +- generic [active] [ref=e13]: + - generic [ref=e64]: + - complementary [ref=e65]: + - generic [ref=e67]: + - generic [ref=e68] [cursor=pointer]: + - img "中科兴皖" [ref=e70] + - paragraph [ref=e71]: 中科兴皖 + - menubar [ref=e75]: + - menuitem "工作台" [ref=e76] [cursor=pointer]: + - generic [ref=e78]: 工作台 + - menuitem "运营支撑" [expanded] [ref=e79]: + - generic [ref=e80] [cursor=pointer]: + - img [ref=e83] + - generic [ref=e85]: 运营支撑 + - img [ref=e87] + - menu [ref=e89]: + - menuitem "洁净室管理" [ref=e90] [cursor=pointer]: + - generic [ref=e91]: 洁净室管理 + - menuitem "库位管理" [ref=e92] [cursor=pointer]: + - generic [ref=e93]: 库位管理 + - menuitem "展馆预约" [ref=e94] [cursor=pointer]: + - generic [ref=e95]: 展馆预约 + - menuitem "demo" [ref=e96] [cursor=pointer]: + - generic [ref=e97]: demo + - menuitem "基础信息管理" [expanded] [ref=e98]: + - generic [ref=e99] [cursor=pointer]: + - img [ref=e102] + - generic [ref=e104]: 基础信息管理 + - img [ref=e106] + - menu [ref=e108]: + - menuitem "客户管理" [ref=e109] [cursor=pointer]: + - generic [ref=e110]: 客户管理 + - menuitem "细胞样本类型管理" [ref=e111] [cursor=pointer]: + - generic [ref=e112]: 细胞样本类型管理 + - menuitem "采集地区及医院管理" [ref=e113] [cursor=pointer]: + - generic [ref=e114]: 采集地区及医院管理 + - menuitem "采集协议号管理" [ref=e115] [cursor=pointer]: + - generic [ref=e116]: 采集协议号管理 + - menuitem "样本编码管理" [ref=e117] [cursor=pointer]: + - generic [ref=e118]: 样本编码管理 + - menuitem "细胞存储管理" [expanded] [ref=e119]: + - generic [ref=e120] [cursor=pointer]: + - img [ref=e123] + - generic [ref=e125]: 细胞存储管理 + - img [ref=e127] + - menu [ref=e129]: + - menuitem "采集协议单" [ref=e130] [cursor=pointer]: + - generic [ref=e131]: 采集协议单 + - menuitem "采集协议单审核" [ref=e132] [cursor=pointer]: + - generic [ref=e133]: 采集协议单审核 + - menuitem "收款确认(财务)" [ref=e134] [cursor=pointer]: + - generic [ref=e135]: 收款确认(财务) + - menuitem "退费确认(财务)" [ref=e136] [cursor=pointer]: + - generic [ref=e137]: 退费确认(财务) + - menuitem "分期缴费预警" [ref=e138] [cursor=pointer]: + - generic [ref=e139]: 分期缴费预警 + - menuitem "工作流管理" [expanded] [ref=e140]: + - generic [ref=e141] [cursor=pointer]: + - img [ref=e144] + - generic [ref=e147]: 工作流管理 + - img [ref=e149] + - menu [ref=e151]: + - menuitem "流程配置" [ref=e152] [cursor=pointer]: + - generic [ref=e153]: 流程配置 + - menuitem "待办中心" [ref=e154] [cursor=pointer]: + - generic [ref=e155]: 待办中心 + - menuitem "已办中心" [ref=e156] [cursor=pointer]: + - generic [ref=e157]: 已办中心 + - menuitem "我的申请" [ref=e158] [cursor=pointer]: + - generic [ref=e159]: 我的申请 + - menuitem "请假申请" [ref=e160] [cursor=pointer]: + - generic [ref=e161]: 请假申请 + - main [ref=e162]: + - generic [ref=e164]: + - generic [ref=e165]: + - generic [ref=e166]: + - img [ref=e169] [cursor=pointer] + - img [ref=e173] [cursor=pointer] + - navigation "breadcrumb" [ref=e175]: + - list [ref=e176]: + - listitem [ref=e177]: + - generic [ref=e179]: 工作台 + - generic [ref=e180]: + - img [ref=e183] [cursor=pointer] + - img [ref=e187] [cursor=pointer] + - generic [ref=e188]: + - list [ref=e190]: + - listitem [ref=e191] [cursor=pointer]: 工作台 + - img [ref=e195] [cursor=pointer] + - generic [ref=e199]: + - generic [ref=e200]: + - heading "工作台" [level=1] [ref=e201] + - paragraph [ref=e202]: 以下为固定参考页,新增管理端界面请对照布局与类名;视觉以文档为准。 + - generic [ref=e203]: + - heading "快速入口" [level=2] [ref=e205]: 快速入口 + - generic [ref=e207]: + - paragraph [ref=e208]: "详见仓库根目录 `.cursorrules` 中「页面级 UI 模板(固定五页)」。" + - generic [ref=e209]: + - button "商品单位" [ref=e210] [cursor=pointer]: + - generic [ref=e211]: 商品单位 + - button "用户管理" [ref=e212] [cursor=pointer]: + - generic [ref=e213]: 用户管理 + - button "商品分类" [ref=e214] [cursor=pointer]: + - generic [ref=e215]: 商品分类 + - button "租户管理" [ref=e216] [cursor=pointer]: + - generic [ref=e217]: 租户管理 + - button "客户管理" [ref=e218] [cursor=pointer]: + - generic [ref=e219]: 客户管理 + - generic [ref=e1]: + - generic "Toggle devtools panel" [ref=e2] [cursor=pointer]: + - img [ref=e3] + - generic "Toggle Component Inspector" [ref=e8] [cursor=pointer]: + - img [ref=e9] + - alert [ref=e220]: + - img [ref=e222] + - generic [ref=e224]: + - heading "登录成功" [level=2] [ref=e225] + - paragraph [ref=e227]: 欢迎回来,系统管理员! + - img [ref=e229] [cursor=pointer] \ No newline at end of file diff --git a/.playwright-mcp/page-2026-05-16T05-40-18-880Z.yml b/.playwright-mcp/page-2026-05-16T05-40-18-880Z.yml new file mode 100644 index 000000000..1c2a6a107 --- /dev/null +++ b/.playwright-mcp/page-2026-05-16T05-40-18-880Z.yml @@ -0,0 +1,29 @@ +- generic [active] [ref=e13]: + - generic [ref=e231]: + - generic [ref=e233]: + - img "中科兴皖" [ref=e235] + - heading "一体化管理门户" [level=1] [ref=e236] + - paragraph [ref=e237]: 安全 · 高效 · 可扩展 + - generic [ref=e238]: + - generic [ref=e240]: 系统管理 + - generic [ref=e242]: 权限配置 + - generic [ref=e244]: 数据统计 + - generic [ref=e246]: + - generic [ref=e247]: + - heading "欢迎登录" [level=2] [ref=e248] + - paragraph [ref=e249]: 请输入您的账号信息 + - generic [ref=e250]: + - generic [ref=e254]: + - img [ref=e257] + - textbox "请输入用户名" [ref=e259] + - generic [ref=e263]: + - img [ref=e266] + - textbox "请输入密码" [ref=e269] + - button "登 录" [ref=e272] [cursor=pointer]: + - generic [ref=e273]: 登 录 + - generic [ref=e274]: 中科兴皖 © 2026 + - generic [ref=e1]: + - generic "Toggle devtools panel" [ref=e2] [cursor=pointer]: + - img [ref=e3] + - generic "Toggle Component Inspector" [ref=e8] [cursor=pointer]: + - img [ref=e9] \ No newline at end of file diff --git a/.playwright-mcp/page-2026-05-16T05-40-31-785Z.yml b/.playwright-mcp/page-2026-05-16T05-40-31-785Z.yml new file mode 100644 index 000000000..1c2a6a107 --- /dev/null +++ b/.playwright-mcp/page-2026-05-16T05-40-31-785Z.yml @@ -0,0 +1,29 @@ +- generic [active] [ref=e13]: + - generic [ref=e231]: + - generic [ref=e233]: + - img "中科兴皖" [ref=e235] + - heading "一体化管理门户" [level=1] [ref=e236] + - paragraph [ref=e237]: 安全 · 高效 · 可扩展 + - generic [ref=e238]: + - generic [ref=e240]: 系统管理 + - generic [ref=e242]: 权限配置 + - generic [ref=e244]: 数据统计 + - generic [ref=e246]: + - generic [ref=e247]: + - heading "欢迎登录" [level=2] [ref=e248] + - paragraph [ref=e249]: 请输入您的账号信息 + - generic [ref=e250]: + - generic [ref=e254]: + - img [ref=e257] + - textbox "请输入用户名" [ref=e259] + - generic [ref=e263]: + - img [ref=e266] + - textbox "请输入密码" [ref=e269] + - button "登 录" [ref=e272] [cursor=pointer]: + - generic [ref=e273]: 登 录 + - generic [ref=e274]: 中科兴皖 © 2026 + - generic [ref=e1]: + - generic "Toggle devtools panel" [ref=e2] [cursor=pointer]: + - img [ref=e3] + - generic "Toggle Component Inspector" [ref=e8] [cursor=pointer]: + - img [ref=e9] \ No newline at end of file diff --git a/.playwright-mcp/page-2026-05-16T05-41-00-624Z.yml b/.playwright-mcp/page-2026-05-16T05-41-00-624Z.yml new file mode 100644 index 000000000..3358df39e --- /dev/null +++ b/.playwright-mcp/page-2026-05-16T05-41-00-624Z.yml @@ -0,0 +1,119 @@ +- generic [active] [ref=e13]: + - generic [ref=e280]: + - complementary [ref=e281]: + - generic [ref=e283]: + - generic [ref=e284] [cursor=pointer]: + - img "中科兴皖" [ref=e286] + - paragraph [ref=e287]: 中科兴皖 + - menubar [ref=e291]: + - menuitem "工作台" [ref=e292] [cursor=pointer]: + - generic [ref=e294]: 工作台 + - menuitem "运营支撑" [expanded] [ref=e295]: + - generic [ref=e296] [cursor=pointer]: + - img [ref=e299] + - generic [ref=e301]: 运营支撑 + - img [ref=e303] + - menu [ref=e305]: + - menuitem "洁净室管理" [ref=e306] [cursor=pointer]: + - generic [ref=e307]: 洁净室管理 + - menuitem "库位管理" [ref=e308] [cursor=pointer]: + - generic [ref=e309]: 库位管理 + - menuitem "展馆预约" [ref=e310] [cursor=pointer]: + - generic [ref=e311]: 展馆预约 + - menuitem "demo" [ref=e312] [cursor=pointer]: + - generic [ref=e313]: demo + - menuitem "基础信息管理" [expanded] [ref=e314]: + - generic [ref=e315] [cursor=pointer]: + - img [ref=e318] + - generic [ref=e320]: 基础信息管理 + - img [ref=e322] + - menu [ref=e324]: + - menuitem "客户管理" [ref=e325] [cursor=pointer]: + - generic [ref=e326]: 客户管理 + - menuitem "细胞样本类型管理" [ref=e327] [cursor=pointer]: + - generic [ref=e328]: 细胞样本类型管理 + - menuitem "采集地区及医院管理" [ref=e329] [cursor=pointer]: + - generic [ref=e330]: 采集地区及医院管理 + - menuitem "采集协议号管理" [ref=e331] [cursor=pointer]: + - generic [ref=e332]: 采集协议号管理 + - menuitem "样本编码管理" [ref=e333] [cursor=pointer]: + - generic [ref=e334]: 样本编码管理 + - menuitem "细胞存储管理" [expanded] [ref=e335]: + - generic [ref=e336] [cursor=pointer]: + - img [ref=e339] + - generic [ref=e341]: 细胞存储管理 + - img [ref=e343] + - menu [ref=e345]: + - menuitem "采集协议单" [ref=e346] [cursor=pointer]: + - generic [ref=e347]: 采集协议单 + - menuitem "采集协议单审核" [ref=e348] [cursor=pointer]: + - generic [ref=e349]: 采集协议单审核 + - menuitem "收款确认(财务)" [ref=e350] [cursor=pointer]: + - generic [ref=e351]: 收款确认(财务) + - menuitem "退费确认(财务)" [ref=e352] [cursor=pointer]: + - generic [ref=e353]: 退费确认(财务) + - menuitem "分期缴费预警" [ref=e354] [cursor=pointer]: + - generic [ref=e355]: 分期缴费预警 + - menuitem "工作流管理" [expanded] [ref=e356]: + - generic [ref=e357] [cursor=pointer]: + - img [ref=e360] + - generic [ref=e363]: 工作流管理 + - img [ref=e365] + - menu [ref=e367]: + - menuitem "流程配置" [ref=e368] [cursor=pointer]: + - generic [ref=e369]: 流程配置 + - menuitem "待办中心" [ref=e370] [cursor=pointer]: + - generic [ref=e371]: 待办中心 + - menuitem "已办中心" [ref=e372] [cursor=pointer]: + - generic [ref=e373]: 已办中心 + - menuitem "我的申请" [ref=e374] [cursor=pointer]: + - generic [ref=e375]: 我的申请 + - menuitem "请假申请" [ref=e376] [cursor=pointer]: + - generic [ref=e377]: 请假申请 + - main [ref=e378]: + - generic [ref=e380]: + - generic [ref=e381]: + - generic [ref=e382]: + - img [ref=e385] [cursor=pointer] + - img [ref=e389] [cursor=pointer] + - navigation "breadcrumb" [ref=e391]: + - list [ref=e392]: + - listitem [ref=e393]: + - generic [ref=e395]: 工作台 + - generic [ref=e396]: + - img [ref=e399] [cursor=pointer] + - img [ref=e403] [cursor=pointer] + - generic [ref=e404]: + - list [ref=e406]: + - listitem [ref=e407] [cursor=pointer]: 工作台 + - img [ref=e411] [cursor=pointer] + - generic [ref=e415]: + - generic [ref=e416]: + - heading "工作台" [level=1] [ref=e417] + - paragraph [ref=e418]: 以下为固定参考页,新增管理端界面请对照布局与类名;视觉以文档为准。 + - generic [ref=e419]: + - heading "快速入口" [level=2] [ref=e421]: 快速入口 + - generic [ref=e423]: + - paragraph [ref=e424]: "详见仓库根目录 `.cursorrules` 中「页面级 UI 模板(固定五页)」。" + - generic [ref=e425]: + - button "商品单位" [ref=e426] [cursor=pointer]: + - generic [ref=e427]: 商品单位 + - button "用户管理" [ref=e428] [cursor=pointer]: + - generic [ref=e429]: 用户管理 + - button "商品分类" [ref=e430] [cursor=pointer]: + - generic [ref=e431]: 商品分类 + - button "租户管理" [ref=e432] [cursor=pointer]: + - generic [ref=e433]: 租户管理 + - button "客户管理" [ref=e434] [cursor=pointer]: + - generic [ref=e435]: 客户管理 + - generic [ref=e1]: + - generic "Toggle devtools panel" [ref=e2] [cursor=pointer]: + - img [ref=e3] + - generic "Toggle Component Inspector" [ref=e8] [cursor=pointer]: + - img [ref=e9] + - alert [ref=e436]: + - img [ref=e438] + - generic [ref=e440]: + - heading "登录成功" [level=2] [ref=e441] + - paragraph [ref=e443]: 欢迎回来,系统管理员! + - img [ref=e445] [cursor=pointer] \ No newline at end of file diff --git a/.playwright-mcp/page-2026-05-16T05-41-36-020Z.yml b/.playwright-mcp/page-2026-05-16T05-41-36-020Z.yml new file mode 100644 index 000000000..2fecfa76a --- /dev/null +++ b/.playwright-mcp/page-2026-05-16T05-41-36-020Z.yml @@ -0,0 +1,29 @@ +- generic [active] [ref=e13]: + - generic [ref=e447]: + - generic [ref=e449]: + - img "中科兴皖" [ref=e451] + - heading "一体化管理门户" [level=1] [ref=e452] + - paragraph [ref=e453]: 安全 · 高效 · 可扩展 + - generic [ref=e454]: + - generic [ref=e456]: 系统管理 + - generic [ref=e458]: 权限配置 + - generic [ref=e460]: 数据统计 + - generic [ref=e462]: + - generic [ref=e463]: + - heading "欢迎登录" [level=2] [ref=e464] + - paragraph [ref=e465]: 请输入您的账号信息 + - generic [ref=e466]: + - generic [ref=e470]: + - img [ref=e473] + - textbox "请输入用户名" [ref=e475] + - generic [ref=e479]: + - img [ref=e482] + - textbox "请输入密码" [ref=e485] + - button "登 录" [ref=e488] [cursor=pointer]: + - generic [ref=e489]: 登 录 + - generic [ref=e490]: 中科兴皖 © 2026 + - generic [ref=e1]: + - generic "Toggle devtools panel" [ref=e2] [cursor=pointer]: + - img [ref=e3] + - generic "Toggle Component Inspector" [ref=e8] [cursor=pointer]: + - img [ref=e9] \ No newline at end of file diff --git a/.playwright-mcp/page-2026-05-16T05-41-45-619Z.yml b/.playwright-mcp/page-2026-05-16T05-41-45-619Z.yml new file mode 100644 index 000000000..2fecfa76a --- /dev/null +++ b/.playwright-mcp/page-2026-05-16T05-41-45-619Z.yml @@ -0,0 +1,29 @@ +- generic [active] [ref=e13]: + - generic [ref=e447]: + - generic [ref=e449]: + - img "中科兴皖" [ref=e451] + - heading "一体化管理门户" [level=1] [ref=e452] + - paragraph [ref=e453]: 安全 · 高效 · 可扩展 + - generic [ref=e454]: + - generic [ref=e456]: 系统管理 + - generic [ref=e458]: 权限配置 + - generic [ref=e460]: 数据统计 + - generic [ref=e462]: + - generic [ref=e463]: + - heading "欢迎登录" [level=2] [ref=e464] + - paragraph [ref=e465]: 请输入您的账号信息 + - generic [ref=e466]: + - generic [ref=e470]: + - img [ref=e473] + - textbox "请输入用户名" [ref=e475] + - generic [ref=e479]: + - img [ref=e482] + - textbox "请输入密码" [ref=e485] + - button "登 录" [ref=e488] [cursor=pointer]: + - generic [ref=e489]: 登 录 + - generic [ref=e490]: 中科兴皖 © 2026 + - generic [ref=e1]: + - generic "Toggle devtools panel" [ref=e2] [cursor=pointer]: + - img [ref=e3] + - generic "Toggle Component Inspector" [ref=e8] [cursor=pointer]: + - img [ref=e9] \ No newline at end of file diff --git a/.playwright-mcp/page-2026-05-16T05-42-20-871Z.yml b/.playwright-mcp/page-2026-05-16T05-42-20-871Z.yml new file mode 100644 index 000000000..453ee9499 --- /dev/null +++ b/.playwright-mcp/page-2026-05-16T05-42-20-871Z.yml @@ -0,0 +1,119 @@ +- generic [active] [ref=e13]: + - generic [ref=e496]: + - complementary [ref=e497]: + - generic [ref=e499]: + - generic [ref=e500] [cursor=pointer]: + - img "中科兴皖" [ref=e502] + - paragraph [ref=e503]: 中科兴皖 + - menubar [ref=e507]: + - menuitem "工作台" [ref=e508] [cursor=pointer]: + - generic [ref=e510]: 工作台 + - menuitem "运营支撑" [expanded] [ref=e511]: + - generic [ref=e512] [cursor=pointer]: + - img [ref=e515] + - generic [ref=e517]: 运营支撑 + - img [ref=e519] + - menu [ref=e521]: + - menuitem "洁净室管理" [ref=e522] [cursor=pointer]: + - generic [ref=e523]: 洁净室管理 + - menuitem "库位管理" [ref=e524] [cursor=pointer]: + - generic [ref=e525]: 库位管理 + - menuitem "展馆预约" [ref=e526] [cursor=pointer]: + - generic [ref=e527]: 展馆预约 + - menuitem "demo" [ref=e528] [cursor=pointer]: + - generic [ref=e529]: demo + - menuitem "基础信息管理" [expanded] [ref=e530]: + - generic [ref=e531] [cursor=pointer]: + - img [ref=e534] + - generic [ref=e536]: 基础信息管理 + - img [ref=e538] + - menu [ref=e540]: + - menuitem "客户管理" [ref=e541] [cursor=pointer]: + - generic [ref=e542]: 客户管理 + - menuitem "细胞样本类型管理" [ref=e543] [cursor=pointer]: + - generic [ref=e544]: 细胞样本类型管理 + - menuitem "采集地区及医院管理" [ref=e545] [cursor=pointer]: + - generic [ref=e546]: 采集地区及医院管理 + - menuitem "采集协议号管理" [ref=e547] [cursor=pointer]: + - generic [ref=e548]: 采集协议号管理 + - menuitem "样本编码管理" [ref=e549] [cursor=pointer]: + - generic [ref=e550]: 样本编码管理 + - menuitem "细胞存储管理" [expanded] [ref=e551]: + - generic [ref=e552] [cursor=pointer]: + - img [ref=e555] + - generic [ref=e557]: 细胞存储管理 + - img [ref=e559] + - menu [ref=e561]: + - menuitem "采集协议单" [ref=e562] [cursor=pointer]: + - generic [ref=e563]: 采集协议单 + - menuitem "采集协议单审核" [ref=e564] [cursor=pointer]: + - generic [ref=e565]: 采集协议单审核 + - menuitem "收款确认(财务)" [ref=e566] [cursor=pointer]: + - generic [ref=e567]: 收款确认(财务) + - menuitem "退费确认(财务)" [ref=e568] [cursor=pointer]: + - generic [ref=e569]: 退费确认(财务) + - menuitem "分期缴费预警" [ref=e570] [cursor=pointer]: + - generic [ref=e571]: 分期缴费预警 + - menuitem "工作流管理" [expanded] [ref=e572]: + - generic [ref=e573] [cursor=pointer]: + - img [ref=e576] + - generic [ref=e579]: 工作流管理 + - img [ref=e581] + - menu [ref=e583]: + - menuitem "流程配置" [ref=e584] [cursor=pointer]: + - generic [ref=e585]: 流程配置 + - menuitem "待办中心" [ref=e586] [cursor=pointer]: + - generic [ref=e587]: 待办中心 + - menuitem "已办中心" [ref=e588] [cursor=pointer]: + - generic [ref=e589]: 已办中心 + - menuitem "我的申请" [ref=e590] [cursor=pointer]: + - generic [ref=e591]: 我的申请 + - menuitem "请假申请" [ref=e592] [cursor=pointer]: + - generic [ref=e593]: 请假申请 + - main [ref=e594]: + - generic [ref=e596]: + - generic [ref=e597]: + - generic [ref=e598]: + - img [ref=e601] [cursor=pointer] + - img [ref=e605] [cursor=pointer] + - navigation "breadcrumb" [ref=e607]: + - list [ref=e608]: + - listitem [ref=e609]: + - generic [ref=e611]: 工作台 + - generic [ref=e612]: + - img [ref=e615] [cursor=pointer] + - img [ref=e619] [cursor=pointer] + - generic [ref=e620]: + - list [ref=e622]: + - listitem [ref=e623] [cursor=pointer]: 工作台 + - img [ref=e627] [cursor=pointer] + - generic [ref=e631]: + - generic [ref=e632]: + - heading "工作台" [level=1] [ref=e633] + - paragraph [ref=e634]: 以下为固定参考页,新增管理端界面请对照布局与类名;视觉以文档为准。 + - generic [ref=e635]: + - heading "快速入口" [level=2] [ref=e637]: 快速入口 + - generic [ref=e639]: + - paragraph [ref=e640]: "详见仓库根目录 `.cursorrules` 中「页面级 UI 模板(固定五页)」。" + - generic [ref=e641]: + - button "商品单位" [ref=e642] [cursor=pointer]: + - generic [ref=e643]: 商品单位 + - button "用户管理" [ref=e644] [cursor=pointer]: + - generic [ref=e645]: 用户管理 + - button "商品分类" [ref=e646] [cursor=pointer]: + - generic [ref=e647]: 商品分类 + - button "租户管理" [ref=e648] [cursor=pointer]: + - generic [ref=e649]: 租户管理 + - button "客户管理" [ref=e650] [cursor=pointer]: + - generic [ref=e651]: 客户管理 + - generic [ref=e1]: + - generic "Toggle devtools panel" [ref=e2] [cursor=pointer]: + - img [ref=e3] + - generic "Toggle Component Inspector" [ref=e8] [cursor=pointer]: + - img [ref=e9] + - alert [ref=e652]: + - img [ref=e654] + - generic [ref=e656]: + - heading "登录成功" [level=2] [ref=e657] + - paragraph [ref=e659]: 欢迎回来,系统管理员! + - img [ref=e661] [cursor=pointer] \ No newline at end of file diff --git a/.superpowers/brainstorm/78964-1778664283/content/zkxw-cell-storage-modules-overview.html b/.superpowers/brainstorm/78964-1778664283/content/zkxw-cell-storage-modules-overview.html new file mode 100644 index 000000000..081ca34a1 --- /dev/null +++ b/.superpowers/brainstorm/78964-1778664283/content/zkxw-cell-storage-modules-overview.html @@ -0,0 +1,151 @@ +
用于对齐:菜单结构、核心数据表、关键状态流转与后续页面原型拆分
+ +主表:biz_collection_protocol,关联采集信息/样本/运输/当事人/缴费等子表
表:biz_protocol_audit(按协议单维度记录审核结果/备注/审核人)
表:biz_protocol_payment_detail(pay_status=dfj/jfqrz/yjf 等)
表:同上(pay_status=tfqrz/ytf)+ 财务确认附件字段
字段:installment_due_date(明细应缴日)+ 状态过滤(未缴费/确认中)
dsx 待生效 → sxz 生效中 →(到期)→ ygq 已过期
+任意阶段可 → yzf 已作废(毁约/异常终止/作废)
+可选:→ zky 转科研(后续再做,当前仅保留字段/入口)
+dfj 待缴费 → jfqrz 缴费确认中 → yjf 已缴费
+tfqrz 退费确认中 → ytf 已退费(通常由业务发起后进入)
+收款确认页面主要处理:jfqrz → yjf;退费确认页面主要处理:tfqrz → ytf
+你在浏览器里点选 A 或 B 即可(也可以回终端用文字说明)。
+目标:确定“预警/逾期”的判定口径,便于后端列表筛选与前端状态标签统一
+ +按 installment_due_date(YYYYMMDD)计算;仅展示分期明细(installment_no 不为空)
过滤状态:通常只看 dfj(待缴费)与(可选)jfqrz(确认中)
你可以点 A/B/C/D,再点 1 或 2;也可以直接在终端回复(例如:A + 1)。
+