修复租赁合同合包页面语法错误并补全对象存储发布依赖。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
王冕
2026-07-12 22:52:37 +08:00
parent 131b963e4a
commit 9a4a4a4f6a
9 changed files with 508 additions and 160 deletions

534
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -29,6 +29,7 @@
"font:subset:beginner-guide": "node scripts/subset-beginner-guide-fonts.mjs"
},
"devDependencies": {
"@aws-sdk/client-s3": "^3.1085.0",
"@mermaid-js/mermaid-cli": "^11.16.0",
"@tailwindcss/vite": "^4.1.18",
"@vitejs/plugin-react": "^5.0.0",

View File

@@ -1,6 +1,6 @@
{
"version": 1,
"updatedAt": "2026-07-12T14:45:00.000Z",
"updatedAt": "2026-07-12T14:50:59.959Z",
"prototypes": {
"oneos-web-workbench": {
"title": "工作台",
@@ -7059,10 +7059,10 @@
},
"oneos-web-lease-contract": {
"title": "oneos web lease contract",
"version": "v1.1",
"revision": 1,
"lastUpdated": "2026-07-11T21:01:24.219Z",
"contentHash": "2a9d52b860d437019cf3f34650249c0afc238f46aaa672b4a90c9ad138ef03ec",
"version": "v1.3",
"revision": 3,
"lastUpdated": "2026-07-12T14:50:59.958Z",
"contentHash": "330315de025466bd4d99fab62d28f381c1f26dc1f2cb695e998c64ec49748cea",
"trackedFiles": [
"index.tsx",
"pages/01-车辆租赁合同-变更为三方合同.jsx",
@@ -7075,6 +7075,40 @@
"pages/08-车辆租赁合同.jsx"
],
"changelog": [
{
"version": "v1.3",
"date": "2026-07-12",
"time": "22:50",
"summary": "更新页面逻辑与交互",
"files": [
"index.tsx",
"pages/01-车辆租赁合同-变更为三方合同.jsx",
"pages/02-车辆租赁合同-查看.jsx",
"pages/03-车辆租赁合同-附加费用.jsx",
"pages/04-车辆租赁合同-新增.jsx",
"pages/05-车辆租赁合同-新增车辆.jsx",
"pages/06-车辆租赁合同-续签合同.jsx",
"pages/07-车辆租赁合同-转正式合同.jsx",
"pages/08-车辆租赁合同.jsx"
]
},
{
"version": "v1.2",
"date": "2026-07-12",
"time": "22:47",
"summary": "更新页面逻辑与交互",
"files": [
"index.tsx",
"pages/01-车辆租赁合同-变更为三方合同.jsx",
"pages/02-车辆租赁合同-查看.jsx",
"pages/03-车辆租赁合同-附加费用.jsx",
"pages/04-车辆租赁合同-新增.jsx",
"pages/05-车辆租赁合同-新增车辆.jsx",
"pages/06-车辆租赁合同-续签合同.jsx",
"pages/07-车辆租赁合同-转正式合同.jsx",
"pages/08-车辆租赁合同.jsx"
]
},
{
"version": "v1.1",
"date": "2026-07-12",
@@ -7480,6 +7514,44 @@
}
},
"recentUpdates": [
{
"prototypeId": "oneos-web-lease-contract",
"title": "oneos web lease contract",
"version": "v1.3",
"date": "2026-07-12",
"time": "22:50",
"summary": "更新页面逻辑与交互",
"files": [
"index.tsx",
"pages/01-车辆租赁合同-变更为三方合同.jsx",
"pages/02-车辆租赁合同-查看.jsx",
"pages/03-车辆租赁合同-附加费用.jsx",
"pages/04-车辆租赁合同-新增.jsx",
"pages/05-车辆租赁合同-新增车辆.jsx",
"pages/06-车辆租赁合同-续签合同.jsx",
"pages/07-车辆租赁合同-转正式合同.jsx",
"pages/08-车辆租赁合同.jsx"
]
},
{
"prototypeId": "oneos-web-lease-contract",
"title": "oneos web lease contract",
"version": "v1.2",
"date": "2026-07-12",
"time": "22:47",
"summary": "更新页面逻辑与交互",
"files": [
"index.tsx",
"pages/01-车辆租赁合同-变更为三方合同.jsx",
"pages/02-车辆租赁合同-查看.jsx",
"pages/03-车辆租赁合同-附加费用.jsx",
"pages/04-车辆租赁合同-新增.jsx",
"pages/05-车辆租赁合同-新增车辆.jsx",
"pages/06-车辆租赁合同-续签合同.jsx",
"pages/07-车辆租赁合同-转正式合同.jsx",
"pages/08-车辆租赁合同.jsx"
]
},
{
"prototypeId": "oneos-prototype-nav",
"title": "原型导航",
@@ -8210,44 +8282,6 @@
"VehiclePickupReceivableApp.jsx",
"VehiclePickupReceivableList.jsx"
]
},
{
"prototypeId": "vehicle-pickup-receivable",
"title": "提车应收款",
"version": "v1.190",
"date": "2026-07-12",
"time": "22:14",
"summary": "更新需求说明与标注",
"files": [
".spec/PRD.md",
".spec/prototype-comments.json",
"data/pickup-receivable-list-data.js",
"index.tsx",
"pickup-receivable-bridge.js",
"pickup-receivable-calc.js",
"styles/index.css",
"VehiclePickupReceivableApp.jsx",
"VehiclePickupReceivableList.jsx"
]
},
{
"prototypeId": "vehicle-pickup-receivable",
"title": "提车应收款",
"version": "v1.189",
"date": "2026-07-12",
"time": "22:14",
"summary": "更新需求说明与标注",
"files": [
".spec/PRD.md",
".spec/prototype-comments.json",
"data/pickup-receivable-list-data.js",
"index.tsx",
"pickup-receivable-bridge.js",
"pickup-receivable-calc.js",
"styles/index.css",
"VehiclePickupReceivableApp.jsx",
"VehiclePickupReceivableList.jsx"
]
}
]
}

View File

@@ -420,7 +420,7 @@ const Component = function() {
) : null;
return React.createElement('div', { style: styles.page },
React.createElement('div', { style: { display: 'flex', justifyContent: 'flex-end', alignItems: 'center', marginBottom: 16 } }, React.createElement('span', { style: { color: '#1890ff', cursor: 'pointer', fontSize: 14 }, onClick: function() { setReqSpecOpen(true); } }, '查看需求说明'))),
React.createElement('div', { style: { display: 'flex', justifyContent: 'flex-end', alignItems: 'center', marginBottom: 16 } }, React.createElement('span', { style: { color: '#1890ff', cursor: 'pointer', fontSize: 14 }, onClick: function() { setReqSpecOpen(true); } }, '查看需求说明')),
React.createElement('div', { style: styles.anchorWrap },
React.createElement('div', { style: { marginBottom: 8, fontWeight: 600, fontSize: 14 } }, '锚点导航'),
React.createElement('button', { style: styles.anchorItem, onClick: function() { scrollToCard('card-customer'); } }, '客户基本信息'),

View File

@@ -528,7 +528,7 @@ const Component = function() {
return React.createElement('div', { style: styles.page },
servicePopoverContentCustom,
React.createElement('div', { style: { display: 'flex', justifyContent: 'flex-end', alignItems: 'center', marginBottom: 16 } }, React.createElement('span', { style: { color: '#1890ff', cursor: 'pointer', fontSize: 14 }, onClick: function() { setReqSpecOpen(true); } }, '查看需求说明'))),
React.createElement('div', { style: { display: 'flex', justifyContent: 'flex-end', alignItems: 'center', marginBottom: 16 } }, React.createElement('span', { style: { color: '#1890ff', cursor: 'pointer', fontSize: 14 }, onClick: function() { setReqSpecOpen(true); } }, '查看需求说明')),
React.createElement('div', { style: styles.anchorWrap },
React.createElement('div', { style: { marginBottom: 8, fontWeight: 600, fontSize: 14 } }, '锚点导航'),
React.createElement('button', { style: styles.anchorItem, onClick: function() { scrollToCard('card-customer'); } }, '客户基本信息'),

View File

@@ -788,7 +788,7 @@ const Component = function() {
return React.createElement('div', { style: styles.page },
acroCss,
React.createElement('div', { style: { display: 'flex', justifyContent: 'flex-end', alignItems: 'center', marginBottom: 16 } }, React.createElement('button', { type: 'button', 'aria-label': '打开需求说明', style: { color: '#1677ff', cursor: 'pointer', border: 'none', background: 'none', padding: '8px 4px', minHeight: 40, borderRadius: 6 }, className: 'acro-text-base', onClick: function() { setReqSpecOpen(true); } }, '查看需求说明'))),
React.createElement('div', { style: { display: 'flex', justifyContent: 'flex-end', alignItems: 'center', marginBottom: 16 } }, React.createElement('button', { type: 'button', 'aria-label': '打开需求说明', style: { color: '#1677ff', cursor: 'pointer', border: 'none', background: 'none', padding: '8px 4px', minHeight: 40, borderRadius: 6 }, className: 'acro-text-base', onClick: function() { setReqSpecOpen(true); } }, '查看需求说明')),
React.createElement('div', { style: styles.anchorWrap, role: 'navigation', 'aria-label': '页面区块锚点导航' },
React.createElement('div', { style: { marginBottom: 8, fontWeight: 600, fontSize: 14 } }, '锚点导航'),
React.createElement('button', { type: 'button', style: styles.anchorItem, 'aria-label': '跳转到客户基本信息', onClick: function() { scrollToCard('card-customer'); } }, '客户基本信息'),

File diff suppressed because one or more lines are too long

View File

@@ -766,7 +766,7 @@ const Component = function() {
) : null;
return React.createElement('div', { style: styles.page },
React.createElement('div', { style: { display: 'flex', justifyContent: 'flex-end', alignItems: 'center', marginBottom: 16 } }, React.createElement('span', { style: { color: '#1890ff', cursor: 'pointer', fontSize: 14 }, onClick: function() { setReqSpecOpen(true); } }, '查看需求说明'))),
React.createElement('div', { style: { display: 'flex', justifyContent: 'flex-end', alignItems: 'center', marginBottom: 16 } }, React.createElement('span', { style: { color: '#1890ff', cursor: 'pointer', fontSize: 14 }, onClick: function() { setReqSpecOpen(true); } }, '查看需求说明')),
React.createElement('div', { style: styles.anchorWrap },
React.createElement('div', { style: { marginBottom: 8, fontWeight: 600, fontSize: 14 } }, '锚点导航'),
React.createElement('button', { style: styles.anchorItem, onClick: function() { scrollToCard('card-customer'); } }, '客户基本信息'),

View File

@@ -838,7 +838,7 @@ const Component = function() {
var reqSpecModalContent = reqSpecOpen ? React.createElement('div', { style: styles.modalMask, onClick: function(e) { if (e.target === e.currentTarget) setReqSpecOpen(false); } }, React.createElement('div', { style: Object.assign({}, styles.modalBox, { maxWidth: 720 }), onClick: function(e) { e.stopPropagation(); } }, React.createElement('div', { style: styles.modalHeader }, '需求说明'), React.createElement('div', { style: Object.assign({}, styles.modalBody, { maxHeight: '70vh', padding: '20px 24px' }) }, React.createElement('div', { style: { whiteSpace: 'pre-wrap', fontSize: 13, lineHeight: 1.6 } }, requirementContent)), React.createElement('div', { style: { padding: '12px 20px', borderTop: '1px solid #f0f0f0', textAlign: 'right' } }, React.createElement(Button, { onClick: function() { setReqSpecOpen(false); } }, '关闭')))) : null;
return React.createElement('div', { style: styles.page },
React.createElement('div', { style: { display: 'flex', justifyContent: 'flex-end', alignItems: 'center', marginBottom: 16 } }, React.createElement('span', { style: { color: '#1890ff', cursor: 'pointer', fontSize: 14 }, onClick: function() { setReqSpecOpen(true); } }, '查看需求说明'))),
React.createElement('div', { style: { display: 'flex', justifyContent: 'flex-end', alignItems: 'center', marginBottom: 16 } }, React.createElement('span', { style: { color: '#1890ff', cursor: 'pointer', fontSize: 14 }, onClick: function() { setReqSpecOpen(true); } }, '查看需求说明')),
React.createElement('div', { style: styles.anchorWrap },
React.createElement('div', { style: { marginBottom: 8, fontWeight: 600, fontSize: 14 } }, '锚点导航'),
React.createElement('button', { style: styles.anchorItem, onClick: function() { scrollToCard('card-customer'); } }, '客户基本信息'),