@chenchaolong/plugin-trade-compliance-workbench 1.0.18 → 1.0.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/catalog-import/catalog-import.pipeline.d.ts.map +1 -1
- package/dist/lib/catalog-import/catalog-import.pipeline.js +2 -1
- package/dist/lib/catalog-import/catalog-import.pipeline.js.map +1 -1
- package/dist/lib/catalog-import/confidence.js +2 -2
- package/dist/lib/catalog-import/confidence.js.map +1 -1
- package/dist/lib/catalog-import/contracts.d.ts +5 -2
- package/dist/lib/catalog-import/contracts.d.ts.map +1 -1
- package/dist/lib/catalog-import/outcome.d.ts +19 -0
- package/dist/lib/catalog-import/outcome.d.ts.map +1 -0
- package/dist/lib/catalog-import/outcome.js +18 -0
- package/dist/lib/catalog-import/outcome.js.map +1 -0
- package/dist/lib/catalog-import/spreadsheet-structure.d.ts +15 -0
- package/dist/lib/catalog-import/spreadsheet-structure.d.ts.map +1 -0
- package/dist/lib/catalog-import/spreadsheet-structure.js +44 -0
- package/dist/lib/catalog-import/spreadsheet-structure.js.map +1 -0
- package/dist/lib/catalog-import/spreadsheet.parser.d.ts.map +1 -1
- package/dist/lib/catalog-import/spreadsheet.parser.js +71 -0
- package/dist/lib/catalog-import/spreadsheet.parser.js.map +1 -1
- package/dist/lib/domain/contract-number.js +2 -2
- package/dist/lib/domain/contract-number.js.map +1 -1
- package/dist/lib/entities/catalog.entity.d.ts +5 -1
- package/dist/lib/entities/catalog.entity.d.ts.map +1 -1
- package/dist/lib/entities/catalog.entity.js +16 -0
- package/dist/lib/entities/catalog.entity.js.map +1 -1
- package/dist/lib/remote-components/trade-compliance-workbench/app.css +1 -1
- package/dist/lib/remote-components/trade-compliance-workbench/app.js +5 -5
- package/dist/lib/remote-ui/app-source.d.ts.map +1 -1
- package/dist/lib/remote-ui/app-source.js +208 -67
- package/dist/lib/remote-ui/app-source.js.map +1 -1
- package/dist/lib/remote-ui/components/forms.js +1 -1
- package/dist/lib/remote-ui/components/forms.js.map +1 -1
- package/dist/lib/remote-ui/components/task-status.d.ts +2 -1
- package/dist/lib/remote-ui/components/task-status.d.ts.map +1 -1
- package/dist/lib/remote-ui/components/task-status.js +5 -4
- package/dist/lib/remote-ui/components/task-status.js.map +1 -1
- package/dist/lib/remote-ui/contracts.d.ts +3 -0
- package/dist/lib/remote-ui/contracts.d.ts.map +1 -1
- package/dist/lib/remote-ui/import-task-status.d.ts +10 -0
- package/dist/lib/remote-ui/import-task-status.d.ts.map +1 -0
- package/dist/lib/remote-ui/import-task-status.js +236 -0
- package/dist/lib/remote-ui/import-task-status.js.map +1 -0
- package/dist/lib/remote-ui/model.d.ts.map +1 -1
- package/dist/lib/remote-ui/model.js +2 -1
- package/dist/lib/remote-ui/model.js.map +1 -1
- package/dist/lib/remote-ui/pages/analytics-prototype.css +307 -0
- package/dist/lib/remote-ui/pages/catalogs.css +681 -0
- package/dist/lib/remote-ui/pages/catalogs.d.ts +9 -3
- package/dist/lib/remote-ui/pages/catalogs.d.ts.map +1 -1
- package/dist/lib/remote-ui/pages/catalogs.js +36 -7
- package/dist/lib/remote-ui/pages/catalogs.js.map +1 -1
- package/dist/lib/remote-ui/pages/contracts.css +259 -0
- package/dist/lib/remote-ui/pages/contracts.d.ts.map +1 -1
- package/dist/lib/remote-ui/pages/contracts.js +36 -13
- package/dist/lib/remote-ui/pages/contracts.js.map +1 -1
- package/dist/lib/remote-ui/pages/files-prototype.css +547 -0
- package/dist/lib/remote-ui/pages/files.d.ts +3 -2
- package/dist/lib/remote-ui/pages/files.d.ts.map +1 -1
- package/dist/lib/remote-ui/pages/files.js +15 -15
- package/dist/lib/remote-ui/pages/files.js.map +1 -1
- package/dist/lib/remote-ui/pages/procurement-contracts.css +939 -0
- package/dist/lib/remote-ui/pages/procurement.js +1 -1
- package/dist/lib/remote-ui/pages/procurement.js.map +1 -1
- package/dist/lib/remote-ui/pages/sales-files.css +512 -0
- package/dist/lib/remote-ui/pages/sales.js +2 -2
- package/dist/lib/remote-ui/pages/sales.js.map +1 -1
- package/dist/lib/remote-ui/pages/settings.css +178 -0
- package/dist/lib/remote-ui/pages/settings.js +1 -1
- package/dist/lib/remote-ui/pages/settings.js.map +1 -1
- package/dist/lib/remote-ui/polling.d.ts +1 -1
- package/dist/lib/remote-ui/polling.d.ts.map +1 -1
- package/dist/lib/remote-ui/polling.js +4 -2
- package/dist/lib/remote-ui/polling.js.map +1 -1
- package/dist/lib/remote-ui/purchase-review-adapter.d.ts +4 -0
- package/dist/lib/remote-ui/purchase-review-adapter.d.ts.map +1 -0
- package/dist/lib/remote-ui/purchase-review-adapter.js +78 -0
- package/dist/lib/remote-ui/purchase-review-adapter.js.map +1 -0
- package/dist/lib/remote-ui/styles.css +588 -0
- package/dist/lib/sales-file.service.d.ts.map +1 -1
- package/dist/lib/sales-file.service.js +19 -7
- package/dist/lib/sales-file.service.js.map +1 -1
- package/dist/lib/types.d.ts +12 -1
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/lib/types.js +1 -1
- package/dist/lib/types.js.map +1 -1
- package/dist/lib/workbench-view.provider.d.ts +24 -0
- package/dist/lib/workbench-view.provider.d.ts.map +1 -1
- package/dist/lib/workbench-view.provider.js +19 -4
- package/dist/lib/workbench-view.provider.js.map +1 -1
- package/dist/lib/workbench.plugin.d.ts.map +1 -1
- package/dist/lib/workbench.plugin.js +1 -2
- package/dist/lib/workbench.plugin.js.map +1 -1
- package/dist/lib/workbench.service.d.ts +7 -1
- package/dist/lib/workbench.service.d.ts.map +1 -1
- package/dist/lib/workbench.service.js +276 -75
- package/dist/lib/workbench.service.js.map +1 -1
- package/package.json +4 -1
|
@@ -0,0 +1,512 @@
|
|
|
1
|
+
.tcw-sales-files-page {
|
|
2
|
+
--sf-blue: #1769ff;
|
|
3
|
+
--sf-blue-soft: #f1f6ff;
|
|
4
|
+
--sf-border: #dbe3ef;
|
|
5
|
+
--sf-text: #172033;
|
|
6
|
+
color: var(--sf-text);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.tcw-sales-heading {
|
|
10
|
+
display: flex;
|
|
11
|
+
align-items: flex-start;
|
|
12
|
+
justify-content: space-between;
|
|
13
|
+
gap: 10px;
|
|
14
|
+
margin: 0 0 10px;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.tcw-sales-heading .tcw-list-heading {
|
|
18
|
+
margin: 0;
|
|
19
|
+
color: #111b2f;
|
|
20
|
+
font-size: 20px;
|
|
21
|
+
line-height: 1.25;
|
|
22
|
+
font-weight: 700;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.tcw-sales-heading p {
|
|
26
|
+
margin: 8px 0 0;
|
|
27
|
+
color: #687389;
|
|
28
|
+
font-size: 14px;
|
|
29
|
+
line-height: 1.5;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.tcw-sales-heading > .tcw-button {
|
|
33
|
+
min-height: 36px;
|
|
34
|
+
border-color: var(--sf-blue);
|
|
35
|
+
color: var(--sf-blue);
|
|
36
|
+
background: #fff;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.tcw-sales-files-page .tcw-filter-panel {
|
|
40
|
+
margin-bottom: 8px;
|
|
41
|
+
padding: 10px 12px;
|
|
42
|
+
border-color: var(--sf-border);
|
|
43
|
+
border-radius: 7px;
|
|
44
|
+
box-shadow: 0 1px 4px rgba(24, 45, 78, .04);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.tcw-sales-files-page .tcw-filter-grid {
|
|
48
|
+
gap: 8px 10px;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.tcw-sales-files-page .tcw-filter-control {
|
|
52
|
+
gap: 8px;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.tcw-sales-files-page .tcw-filter-control > span {
|
|
56
|
+
color: #263147;
|
|
57
|
+
font-size: 14px;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.tcw-sales-files-page .tcw-filter-control input,
|
|
61
|
+
.tcw-sales-files-page .tcw-filter-control select {
|
|
62
|
+
height: 34px;
|
|
63
|
+
border-color: #cfd8e5;
|
|
64
|
+
border-radius: 4px;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.tcw-sales-files-page .tcw-filter-actions .tcw-button {
|
|
68
|
+
min-height: 34px;
|
|
69
|
+
padding-inline: 16px;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.tcw-sales-files-page .tcw-button--primary,
|
|
73
|
+
.tcw-sales-files-page .tcw-pagination button:not(:disabled):hover {
|
|
74
|
+
border-color: var(--sf-blue);
|
|
75
|
+
background: var(--sf-blue);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.tcw-sales-files-page .tcw-notice {
|
|
79
|
+
min-height: 40px;
|
|
80
|
+
margin-bottom: 12px;
|
|
81
|
+
align-items: center;
|
|
82
|
+
border-color: #9bc0ff;
|
|
83
|
+
border-radius: 6px;
|
|
84
|
+
color: #1763d7;
|
|
85
|
+
background: var(--sf-blue-soft);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.tcw-sales-files-page .tcw-grid-section {
|
|
89
|
+
border-color: var(--sf-border);
|
|
90
|
+
border-radius: 6px;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.tcw-sales-files-page .tcw-data-table {
|
|
94
|
+
color: #1c273a;
|
|
95
|
+
font-size: 12px;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.tcw-sales-files-page .tcw-data-table th,
|
|
99
|
+
.tcw-sales-files-page .tcw-data-table td {
|
|
100
|
+
height: 36px;
|
|
101
|
+
padding: 6px 10px;
|
|
102
|
+
border-bottom-color: #e2e8f1;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
.tcw-sales-files-page .tcw-data-table th {
|
|
106
|
+
color: #283448;
|
|
107
|
+
background: #f8fafc;
|
|
108
|
+
font-weight: 650;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
.tcw-sales-files-page .tcw-row-actions {
|
|
112
|
+
gap: 11px;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.tcw-sales-files-page .tcw-data-table .action-column {
|
|
116
|
+
overflow: visible;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
.tcw-sales-files-page--orders .tcw-data-table {
|
|
120
|
+
table-layout: fixed;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
.tcw-sales-files-page--orders .tcw-data-table :is(th, td):not(.action-column) {
|
|
124
|
+
width: auto !important;
|
|
125
|
+
min-width: 0 !important;
|
|
126
|
+
max-width: none !important;
|
|
127
|
+
overflow: hidden;
|
|
128
|
+
text-overflow: ellipsis;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
.tcw-sales-files-page--orders .tcw-data-table th.tcw-align-right {
|
|
132
|
+
white-space: normal;
|
|
133
|
+
overflow-wrap: anywhere;
|
|
134
|
+
line-height: 1.25;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
.tcw-sales-files-page--orders .tcw-row-actions {
|
|
138
|
+
width: 100%;
|
|
139
|
+
min-width: 0;
|
|
140
|
+
justify-content: flex-start;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
.tcw-sales-files-page--orders .tcw-row-actions > button {
|
|
144
|
+
flex: 0 0 auto;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
.tcw-sales-files-page .tcw-row-actions button,
|
|
148
|
+
.tcw-sales-files-page .tcw-table-link {
|
|
149
|
+
color: #1265e8;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
.tcw-sales-files-page .tcw-pagination {
|
|
153
|
+
min-height: 48px;
|
|
154
|
+
border-top: 0;
|
|
155
|
+
color: #1d293c;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
.tcw-sales-files-page .tcw-tag {
|
|
159
|
+
min-height: 22px;
|
|
160
|
+
border: 0;
|
|
161
|
+
border-radius: 999px;
|
|
162
|
+
color: #14935a;
|
|
163
|
+
background: #e5f8ee;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
.tcw-sales-files-page .tcw-tag--warning {
|
|
167
|
+
color: #ed7a15;
|
|
168
|
+
background: #fff0e3;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
.tcw-sales-page--orders .tcw-context-bar,
|
|
172
|
+
.tcw-sales-page--lines .tcw-context-bar,
|
|
173
|
+
.tcw-sales-files-page--history .tcw-context-bar {
|
|
174
|
+
min-height: 58px;
|
|
175
|
+
margin-bottom: 12px;
|
|
176
|
+
padding: 8px 14px;
|
|
177
|
+
border-color: var(--sf-border);
|
|
178
|
+
border-radius: 7px;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
.tcw-sales-page--orders .tcw-context-bar strong {
|
|
182
|
+
margin-right: 10px;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
.tcw-sales-page--orders .tcw-metric-grid {
|
|
186
|
+
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
187
|
+
gap: 12px;
|
|
188
|
+
margin-bottom: 12px;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
.tcw-sales-page--orders .tcw-metric-grid article {
|
|
192
|
+
position: relative;
|
|
193
|
+
min-height: 64px;
|
|
194
|
+
padding: 10px 12px 9px 50px;
|
|
195
|
+
border: 1px solid var(--sf-border);
|
|
196
|
+
border-radius: 7px;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
.tcw-sales-page--orders .tcw-metric-grid article::before {
|
|
200
|
+
position: absolute;
|
|
201
|
+
top: 12px;
|
|
202
|
+
left: 12px;
|
|
203
|
+
display: grid;
|
|
204
|
+
width: 28px;
|
|
205
|
+
height: 28px;
|
|
206
|
+
place-items: center;
|
|
207
|
+
border-radius: 50%;
|
|
208
|
+
color: var(--sf-blue);
|
|
209
|
+
background: #eaf1ff;
|
|
210
|
+
font-family: remixicon;
|
|
211
|
+
font-size: 18px;
|
|
212
|
+
content: "\ea71";
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
.tcw-sales-page--orders .tcw-metric-grid article:nth-child(3)::before { color: #11a963; background: #e5f8ee; content: "\f0d7"; }
|
|
216
|
+
.tcw-sales-page--orders .tcw-metric-grid article:nth-child(4)::before { color: #f17d1d; background: #fff0e3; content: "\ef63"; }
|
|
217
|
+
.tcw-sales-page--orders .tcw-metric-grid article:nth-child(n+5) { min-height: 72px; }
|
|
218
|
+
.tcw-sales-page--orders .tcw-sales-top { margin-bottom: 12px; }
|
|
219
|
+
.tcw-sales-page--orders .tcw-metric-grid article strong { font-size: 20px; }
|
|
220
|
+
.tcw-sales-page--orders .tcw-metric-grid article small { position: static; margin-top: 2px; font-size: 12px; line-height: 1.4; }
|
|
221
|
+
|
|
222
|
+
.tcw-sales-page--lines .tcw-order-summary {
|
|
223
|
+
display: grid;
|
|
224
|
+
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
225
|
+
min-height: 60px;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
.tcw-sales-page--lines .tcw-order-summary strong,
|
|
229
|
+
.tcw-sales-page--lines .tcw-order-summary span {
|
|
230
|
+
display: grid;
|
|
231
|
+
gap: 7px;
|
|
232
|
+
color: #162136;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
.tcw-sales-page--lines .tcw-order-summary strong::before { color: #6b7689; font-size: 12px; font-weight: 400; content: "销售订单编号"; }
|
|
236
|
+
.tcw-sales-page--lines .tcw-order-summary span:nth-child(2)::before { color: #6b7689; font-size: 12px; content: "客户合同编号"; }
|
|
237
|
+
.tcw-sales-page--lines .tcw-order-summary span:nth-child(3)::before { color: #6b7689; font-size: 12px; content: "采购合同编号"; }
|
|
238
|
+
|
|
239
|
+
.tcw-sales-page--lines .tcw-data-table .action-column {
|
|
240
|
+
position: sticky;
|
|
241
|
+
right: 0;
|
|
242
|
+
z-index: 2;
|
|
243
|
+
background: #fff;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
.tcw-sales-page--lines .tcw-data-table thead .action-column {
|
|
247
|
+
z-index: 3;
|
|
248
|
+
background: #f8fafc;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
.tcw-sales-page--lines .tcw-row-actions {
|
|
252
|
+
justify-content: center;
|
|
253
|
+
white-space: nowrap;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
.tcw-sales-files-page--history .tcw-context-bar .tcw-button { order: 3; margin-left: auto; border-color: var(--sf-blue); color: var(--sf-blue); }
|
|
257
|
+
|
|
258
|
+
.tcw-modal-backdrop:has(:is(.tcw-sales-customer-dialog, .tcw-sales-order-dialog, .tcw-sales-risk-dialog)) {
|
|
259
|
+
background: rgba(255, 255, 255, .68);
|
|
260
|
+
backdrop-filter: blur(2px);
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
.tcw-modal-backdrop:has(.tcw-sales-generate-dialog) {
|
|
264
|
+
background: rgba(255, 255, 255, .68);
|
|
265
|
+
backdrop-filter: blur(2px);
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
.tcw-modal-backdrop:has(.tcw-sales-bank-dialog input[value="CI"]) {
|
|
269
|
+
background: rgba(255, 255, 255, .68);
|
|
270
|
+
backdrop-filter: blur(2px);
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
.tcw-modal-backdrop:has(.tcw-sales-bank-dialog input[value="PI"]) {
|
|
274
|
+
background: rgba(0, 0, 0, .52);
|
|
275
|
+
backdrop-filter: none;
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
.tcw-modal:has(.tcw-sales-risk-dialog),
|
|
279
|
+
.tcw-modal:has(.tcw-sales-file-dialog),
|
|
280
|
+
.tcw-modal:has(.tcw-sales-customer-dialog),
|
|
281
|
+
.tcw-modal:has(.tcw-sales-order-dialog),
|
|
282
|
+
.tcw-modal:has(.tcw-sales-bank-dialog),
|
|
283
|
+
.tcw-modal:has(.tcw-sales-generate-dialog),
|
|
284
|
+
.tcw-modal:has(.tcw-sales-file-delete-dialog) {
|
|
285
|
+
border-radius: 8px;
|
|
286
|
+
box-shadow: 0 18px 55px rgba(16, 28, 48, .26);
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
.tcw-modal:has(.tcw-sales-risk-dialog) { width: min(760px, calc(100vw - 40px)); }
|
|
290
|
+
.tcw-modal:has(.tcw-sales-file-dialog) { width: min(640px, calc(100vw - 40px)); min-height: min(580px, calc(100vh - 40px)); transform: translate(12px, 4px); }
|
|
291
|
+
.tcw-modal:has(.tcw-sales-customer-dialog) { width: min(740px, calc(100vw - 40px)); max-height: min(560px, calc(100vh - 40px)); }
|
|
292
|
+
.tcw-modal:has(.tcw-sales-order-dialog) { width: min(760px, calc(100vw - 40px)); max-height: min(560px, calc(100vh - 40px)); }
|
|
293
|
+
.tcw-modal:has(.tcw-sales-generate-dialog) { width: min(740px, calc(100vw - 40px)); max-height: min(500px, calc(100vh - 40px)); }
|
|
294
|
+
.tcw-modal:has(.tcw-sales-file-delete-dialog) { width: min(540px, calc(100vw - 40px)); min-height: min(392px, calc(100vh - 40px)); transform: translateY(8px); }
|
|
295
|
+
.tcw-modal:has(.tcw-sales-risk-dialog) > header,
|
|
296
|
+
.tcw-modal:has(.tcw-sales-file-dialog) > header,
|
|
297
|
+
.tcw-modal:has(.tcw-sales-customer-dialog) > header,
|
|
298
|
+
.tcw-modal:has(.tcw-sales-order-dialog) > header { min-height: 50px; padding-inline: 16px; }
|
|
299
|
+
.tcw-modal:has(.tcw-sales-bank-dialog) > header,
|
|
300
|
+
.tcw-modal:has(.tcw-sales-generate-dialog) > header,
|
|
301
|
+
.tcw-modal:has(.tcw-sales-file-delete-dialog) > header { min-height: 50px; padding-inline: 16px; }
|
|
302
|
+
.tcw-modal:has(.tcw-sales-risk-dialog) > footer,
|
|
303
|
+
.tcw-modal:has(.tcw-sales-file-dialog) > footer,
|
|
304
|
+
.tcw-modal:has(.tcw-sales-customer-dialog) > footer,
|
|
305
|
+
.tcw-modal:has(.tcw-sales-order-dialog) > footer { min-height: 52px; padding-inline: 16px; }
|
|
306
|
+
.tcw-modal:has(.tcw-sales-bank-dialog) > footer,
|
|
307
|
+
.tcw-modal:has(.tcw-sales-generate-dialog) > footer,
|
|
308
|
+
.tcw-modal:has(.tcw-sales-file-delete-dialog) > footer { min-height: 52px; padding-inline: 16px; }
|
|
309
|
+
.tcw-modal:has(.tcw-sales-file-dialog) > .tcw-modal-body,
|
|
310
|
+
.tcw-modal:has(.tcw-sales-bank-dialog) > .tcw-modal-body,
|
|
311
|
+
.tcw-modal:has(.tcw-sales-generate-dialog) > .tcw-modal-body,
|
|
312
|
+
.tcw-modal:has(.tcw-sales-file-delete-dialog) > .tcw-modal-body { padding: 12px 16px; }
|
|
313
|
+
|
|
314
|
+
.tcw-sales-bank-dialog { display: grid; gap: 14px; }
|
|
315
|
+
.tcw-bank-order-summary { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px 12px; margin: 0; padding: 10px 12px; border: 1px solid #a9c7ff; border-radius: 7px; background: #f8fbff; }
|
|
316
|
+
.tcw-bank-order-summary div { min-width: 0; }
|
|
317
|
+
.tcw-bank-order-summary dt { color: #66738a; font-size: 12px; }
|
|
318
|
+
.tcw-bank-order-summary dd { margin: 7px 0 0; overflow: hidden; color: #17233a; font-weight: 650; text-overflow: ellipsis; white-space: nowrap; }
|
|
319
|
+
.tcw-bank-dialog-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(290px, .9fr); gap: 12px; }
|
|
320
|
+
.tcw-bank-dialog-grid > section { display: grid; align-content: start; gap: 10px; }
|
|
321
|
+
.tcw-bank-dialog-grid > aside { min-height: 88px; padding: 8px 10px; border: 1px solid var(--sf-border); border-radius: 7px; }
|
|
322
|
+
.tcw-bank-dialog-grid h3 { margin: 0 0 8px; font-size: 15px; }
|
|
323
|
+
.tcw-bank-dialog-grid p { margin: 0 0 12px; color: #687389; }
|
|
324
|
+
.tcw-bank-preview-file { display: flex; align-items: center; gap: 8px; padding: 10px; border: 1px solid #dfe6f0; border-radius: 6px; }
|
|
325
|
+
.tcw-bank-preview-file > i { display: grid; width: 28px; height: 28px; place-items: center; border-radius: 5px; color: #1769ff; background: #eaf2ff; font-size: 16px; }
|
|
326
|
+
.tcw-bank-preview-file span { display: grid; gap: 5px; }
|
|
327
|
+
.tcw-bank-preview-file small { color: #6b778c; }
|
|
328
|
+
.tcw-sales-bank-dialog > .tcw-notice { margin: 0; }
|
|
329
|
+
|
|
330
|
+
.tcw-sales-generate-dialog { display: grid; gap: 14px; }
|
|
331
|
+
.tcw-sales-generate-summary { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px 12px; margin: 0; padding: 10px 12px; border: 1px solid #a9c7ff; border-radius: 7px; background: #f8fbff; }
|
|
332
|
+
.tcw-sales-generate-summary dt { color: #66738a; font-size: 12px; }
|
|
333
|
+
.tcw-sales-generate-summary dd { margin: 7px 0 0; overflow: hidden; color: #17233a; font-size: 16px; text-overflow: ellipsis; white-space: nowrap; }
|
|
334
|
+
.tcw-sales-generate-summary > div:nth-child(4) dd { font-size: 16px; font-weight: 700; }
|
|
335
|
+
.tcw-sales-generate-content { display: grid; grid-template-columns: minmax(0, 1.02fr) minmax(300px, .98fr); gap: 12px; }
|
|
336
|
+
.tcw-sales-generate-content > section { display: grid; align-content: start; gap: 8px; }
|
|
337
|
+
.tcw-sales-generate-content .tcw-form-field { grid-template-columns: 86px minmax(0, 1fr); align-items: center; gap: 12px; }
|
|
338
|
+
.tcw-sales-generate-content .tcw-form-field > span { font-weight: 650; }
|
|
339
|
+
.tcw-sales-generate-content :is(input, select) { height: 32px; }
|
|
340
|
+
.tcw-sales-generate-content textarea { min-height: 52px; }
|
|
341
|
+
.tcw-sales-generate-content > aside { min-height: 128px; padding: 8px 10px; border: 1px solid var(--sf-border); border-radius: 7px; background: #fbfcfe; }
|
|
342
|
+
.tcw-sales-generate-content h3 { margin: 0 0 10px; font-size: 15px; }
|
|
343
|
+
.tcw-sales-generate-content p { margin: 0 0 12px; color: #687389; }
|
|
344
|
+
.tcw-sales-generate-content ul { display: grid; gap: 10px; margin: 0; padding: 0; list-style: none; }
|
|
345
|
+
.tcw-sales-generate-content li { display: flex; align-items: center; gap: 12px; }
|
|
346
|
+
.tcw-sales-generate-content li i { color: var(--sf-blue); font-size: 22px; }
|
|
347
|
+
.tcw-sales-generate-dialog > .tcw-notice { margin: 0; border-color: #f0cf91; color: #996816; background: #fff8e8; }
|
|
348
|
+
|
|
349
|
+
.tcw-sales-file-delete-dialog { display: grid; gap: 12px; }
|
|
350
|
+
.tcw-sales-file-delete-dialog h3 { margin: 0; font-size: 17px; }
|
|
351
|
+
.tcw-delete-critical { display: flex; gap: 9px; padding: 10px 12px; border: 1px solid #ffb8b8; border-radius: 6px; color: #e22932; background: #fff1f1; line-height: 1.45; }
|
|
352
|
+
.tcw-delete-critical > i { flex: 0 0 auto; font-size: 18px; }
|
|
353
|
+
.tcw-sales-file-delete-dialog dl { display: grid; grid-template-columns: 1fr 1fr; gap: 10px 16px; margin: 0; padding: 10px 12px; border: 1px solid var(--sf-border); border-radius: 6px; font-size: 12px; }
|
|
354
|
+
.tcw-sales-file-delete-dialog dt { color: #69758a; font-size: 12px; }
|
|
355
|
+
.tcw-sales-file-delete-dialog dd { margin: 4px 0 0; overflow-wrap: anywhere; font-weight: 650; }
|
|
356
|
+
.tcw-sales-file-delete-dialog > p { margin: 0; padding: 8px 10px; border: 1px solid #f0cf91; border-radius: 5px; color: #996816; background: #fff8e8; }
|
|
357
|
+
|
|
358
|
+
@media (min-width: 981px) {
|
|
359
|
+
.tcw-modal:has(.tcw-sales-customer-dialog) { width: min(740px, calc(100vw - 40px)); height: min(560px, calc(100vh - 40px)); max-height: min(560px, calc(100vh - 40px)); transform: translate(16px, 18px); }
|
|
360
|
+
.tcw-modal:has(.tcw-sales-order-dialog) { width: min(760px, calc(100vw - 40px)); height: min(560px, calc(100vh - 40px)); max-height: min(560px, calc(100vh - 40px)); transform: translate(16px, 18px); }
|
|
361
|
+
.tcw-modal:has(.tcw-sales-risk-dialog) { width: min(760px, calc(100vw - 40px)); height: min(580px, calc(100vh - 40px)); max-height: min(580px, calc(100vh - 40px)); transform: translate(16px, 18px); }
|
|
362
|
+
.tcw-modal:has(.tcw-sales-bank-dialog input[value="PI"]) { width: min(760px, calc(100vw - 40px)); height: min(560px, calc(100vh - 40px)); min-height: min(560px, calc(100vh - 40px)); max-height: min(560px, calc(100vh - 40px)); transform: none; }
|
|
363
|
+
.tcw-modal:has(.tcw-sales-bank-dialog input[value="CI"]) { width: min(760px, calc(100vw - 40px)); height: min(540px, calc(100vh - 40px)); min-height: min(540px, calc(100vh - 40px)); max-height: min(540px, calc(100vh - 40px)); transform: translate(16px, 20px); }
|
|
364
|
+
.tcw-modal:has(.tcw-sales-generate-dialog) { width: min(740px, calc(100vw - 40px)); height: min(500px, calc(100vh - 40px)); min-height: min(500px, calc(100vh - 40px)); max-height: min(500px, calc(100vh - 40px)); transform: translate(16px, 20px); }
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
@media (min-width: 981px) and (max-height: 960px) {
|
|
368
|
+
.tcw-sales-page--lines > .tcw-sales-heading--lines {
|
|
369
|
+
margin-bottom: 12px;
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
.tcw-sales-page--lines .tcw-order-summary {
|
|
373
|
+
min-height: 68px;
|
|
374
|
+
margin-bottom: 10px;
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
.tcw-sales-page--lines > .tcw-notice {
|
|
378
|
+
margin-bottom: 10px;
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
.tcw-sales-page--lines > .tcw-filter-panel {
|
|
382
|
+
margin-bottom: 10px;
|
|
383
|
+
padding: 14px 20px;
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
.tcw-sales-customer-dialog,
|
|
388
|
+
.tcw-sales-order-dialog {
|
|
389
|
+
display: grid;
|
|
390
|
+
grid-template-columns: minmax(0, 1.15fr) minmax(280px, .85fr);
|
|
391
|
+
gap: 0 28px;
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
.tcw-sales-customer-dialog > section,
|
|
395
|
+
.tcw-sales-order-dialog > section { min-width: 0; padding-right: 28px; border-right: 1px solid var(--sf-border); }
|
|
396
|
+
.tcw-sales-customer-dialog > aside,
|
|
397
|
+
.tcw-sales-order-dialog > aside { min-width: 0; }
|
|
398
|
+
.tcw-sales-customer-dialog .tcw-field-grid { gap: 7px 14px; }
|
|
399
|
+
.tcw-sales-customer-dialog .tcw-form-field,
|
|
400
|
+
.tcw-sales-order-dialog .tcw-form-field { gap: 6px; }
|
|
401
|
+
.tcw-sales-customer-dialog .tcw-form-field { gap: 3px; }
|
|
402
|
+
.tcw-sales-customer-dialog input,
|
|
403
|
+
.tcw-sales-order-dialog input { height: 37px; }
|
|
404
|
+
.tcw-sales-customer-dialog input { height: 32px; }
|
|
405
|
+
.tcw-sales-customer-dialog input:disabled,
|
|
406
|
+
.tcw-sales-order-dialog input:disabled,
|
|
407
|
+
.tcw-sales-customer-dialog textarea:disabled { color: #41506a; background: #f8fafc; opacity: 1; }
|
|
408
|
+
.tcw-sales-customer-dialog aside dl,
|
|
409
|
+
.tcw-sales-order-dialog aside dl { display: grid; gap: 0; margin: 0 0 18px; }
|
|
410
|
+
.tcw-sales-customer-dialog aside dl > div,
|
|
411
|
+
.tcw-sales-order-dialog aside dl > div { display: grid; grid-template-columns: minmax(112px, .85fr) minmax(0, 1.15fr); align-items: center; min-height: 47px; border-bottom: 1px solid #e8edf4; }
|
|
412
|
+
.tcw-sales-customer-dialog dt,
|
|
413
|
+
.tcw-sales-order-dialog dt { color: #3c485d; font-weight: 650; }
|
|
414
|
+
.tcw-sales-customer-dialog dd,
|
|
415
|
+
.tcw-sales-order-dialog dd { margin: 0; color: #18243a; }
|
|
416
|
+
.tcw-sales-customer-dialog > .tcw-notice,
|
|
417
|
+
.tcw-sales-order-dialog > .tcw-notice { grid-column: 1 / -1; margin: 20px 0 0; }
|
|
418
|
+
.tcw-sales-customer-dialog > .tcw-notice { margin-top: 10px; }
|
|
419
|
+
.tcw-sales-customer-dialog aside dl > div { min-height: 39px; }
|
|
420
|
+
.tcw-sales-customer-dialog aside textarea { max-height: 140px; }
|
|
421
|
+
.tcw-sales-order-dialog aside .tcw-notice { margin: 18px 0 0; }
|
|
422
|
+
|
|
423
|
+
.tcw-modal:has(.tcw-sales-risk-dialog) > .tcw-modal-body {
|
|
424
|
+
min-height: 0;
|
|
425
|
+
overflow-y: auto;
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
.tcw-sales-risk-dialog {
|
|
429
|
+
display: grid;
|
|
430
|
+
grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr);
|
|
431
|
+
gap: 18px;
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
.tcw-sales-risk-dialog > section:first-child { grid-column: 1 / -1; }
|
|
435
|
+
.tcw-sales-risk-dialog > section { min-width: 0; }
|
|
436
|
+
.tcw-sales-risk-dialog h3 { margin: 0 0 12px; font-size: 16px; }
|
|
437
|
+
.tcw-sales-risk-dialog .tcw-preflight-summary { margin: 0; border: 1px solid var(--sf-border); border-radius: 7px; overflow: hidden; }
|
|
438
|
+
.tcw-sales-risk-dialog .tcw-preflight-summary > div { border: 0; border-bottom: 1px solid #e5eaf1; background: #fff; }
|
|
439
|
+
.tcw-sales-risk-result { scroll-margin-block: 16px; }
|
|
440
|
+
.tcw-sales-match-result { scroll-margin-block: 16px; }
|
|
441
|
+
.tcw-sales-risk-dialog .tcw-grid-section { border-color: var(--sf-border); }
|
|
442
|
+
.tcw-sales-risk-dialog .tcw-data-table { min-width: 560px; }
|
|
443
|
+
|
|
444
|
+
.tcw-sales-file-dialog .tcw-preflight-summary {
|
|
445
|
+
padding: 2px;
|
|
446
|
+
border: 1px solid #a9c7ff;
|
|
447
|
+
border-radius: 7px;
|
|
448
|
+
background: #f8fbff;
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
.tcw-sales-file-dialog .tcw-preflight-summary > div { border: 0; background: transparent; }
|
|
452
|
+
.tcw-sales-file-dialog .tcw-notice { margin-bottom: 0; }
|
|
453
|
+
|
|
454
|
+
@media (max-width: 980px) {
|
|
455
|
+
.tcw-modal:has(.tcw-sales-risk-dialog) {
|
|
456
|
+
max-height: calc(100vh - 12px);
|
|
457
|
+
transform: none;
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
.tcw-modal:has(.tcw-sales-risk-dialog) > .tcw-modal-body {
|
|
461
|
+
min-height: 0;
|
|
462
|
+
overflow-y: auto;
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
.tcw-modal:has(.tcw-sales-file-dialog),
|
|
466
|
+
.tcw-modal:has(.tcw-sales-bank-dialog),
|
|
467
|
+
.tcw-modal:has(.tcw-sales-generate-dialog),
|
|
468
|
+
.tcw-modal:has(.tcw-sales-file-delete-dialog) { min-height: 0; transform: none; }
|
|
469
|
+
.tcw-sales-page--lines > .tcw-sales-heading--lines {
|
|
470
|
+
position: static;
|
|
471
|
+
flex-direction: column;
|
|
472
|
+
flex-wrap: wrap;
|
|
473
|
+
min-height: 116px;
|
|
474
|
+
align-items: flex-start;
|
|
475
|
+
}
|
|
476
|
+
.tcw-sales-page--lines > .tcw-filter-panel {
|
|
477
|
+
padding-block: 12px;
|
|
478
|
+
}
|
|
479
|
+
.tcw-sales-page--lines .tcw-filter-grid {
|
|
480
|
+
gap: 10px;
|
|
481
|
+
}
|
|
482
|
+
.tcw-sales-heading--lines > div {
|
|
483
|
+
width: 100%;
|
|
484
|
+
min-width: 0;
|
|
485
|
+
}
|
|
486
|
+
.tcw-sales-heading--lines p,
|
|
487
|
+
.tcw-sales-heading--lines > .tcw-button {
|
|
488
|
+
max-width: 100%;
|
|
489
|
+
overflow-wrap: anywhere;
|
|
490
|
+
white-space: normal;
|
|
491
|
+
}
|
|
492
|
+
.tcw-sales-heading { flex-direction: column; }
|
|
493
|
+
.tcw-sales-page--orders .tcw-metric-grid { grid-template-columns: 1fr 1fr; }
|
|
494
|
+
.tcw-sales-risk-dialog { grid-template-columns: 1fr; }
|
|
495
|
+
.tcw-sales-risk-dialog > section:first-child { grid-column: auto; }
|
|
496
|
+
.tcw-sales-customer-dialog,
|
|
497
|
+
.tcw-sales-order-dialog { grid-template-columns: 1fr; }
|
|
498
|
+
.tcw-sales-customer-dialog > section,
|
|
499
|
+
.tcw-sales-order-dialog > section { padding: 0 0 18px; border-right: 0; border-bottom: 1px solid var(--sf-border); }
|
|
500
|
+
.tcw-sales-customer-dialog > aside,
|
|
501
|
+
.tcw-sales-order-dialog > aside { padding-top: 18px; }
|
|
502
|
+
.tcw-sales-generate-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
|
|
503
|
+
.tcw-sales-generate-content { grid-template-columns: 1fr; }
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
@media (max-width: 640px) {
|
|
507
|
+
.tcw-sales-heading .tcw-list-heading { font-size: 18px; }
|
|
508
|
+
.tcw-sales-page--orders .tcw-metric-grid { grid-template-columns: 1fr; }
|
|
509
|
+
.tcw-sales-page--lines .tcw-order-summary { grid-template-columns: 1fr; }
|
|
510
|
+
.tcw-sales-generate-summary { grid-template-columns: 1fr; }
|
|
511
|
+
.tcw-sales-generate-content .tcw-form-field { grid-template-columns: 1fr; gap: 6px; }
|
|
512
|
+
}
|
|
@@ -78,7 +78,7 @@ export function SalesPage(props) {
|
|
|
78
78
|
{ type: 'custom', key: 'sanctionStatus', header: '制裁风险', width: 120, truncate: false, render: (_, row) => _jsx(Status, { value: row.sanctionStatus }) }, { type: 'text', key: 'complianceCheckedAt', header: '最近检查时间', width: 170, truncate: false, format: formatBeijingDateTime }
|
|
79
79
|
];
|
|
80
80
|
const openOrders = (row) => row.profitRateStatus === 'MISSING' ? setConfirmCustomer(row) : props.onRouteChange({ type: 'sales', level: 'orders', customerId: row.id });
|
|
81
|
-
return _jsxs("main", { className: "tcw-sales-files-page tcw-sales-page tcw-sales-page--customers", children: [_jsx(PageHeading, { title: "\u5BA2\u6237\u4FE1\u606F\u5217\u8868", description: "\u7EF4\u62A4\u9500\u552E\u5BA2\u6237\u4E3B\u4F53\uFF0C\u70B9\u51FB\u8BA2\u5355\u8BE6\u60C5\u8FDB\u5165\u8BE5\u5BA2\u6237\u7684\u9500\u552E\u8BA2\u5355\u5217\u8868\u3002" }), _jsx(FilterPanel, { definitions: customerFilters, values: filters, onChange: (key, value) => setFilters(current => ({ ...current, [key]: value })), onQuery: () => void query('salesCustomers'), onReset: () => reset('salesCustomers') }), _jsx(InfoNotice, { children: "\u5BA2\u6237\u9ED8\u8BA4\u5B9A\u4EF7\u5229\u6DA6\u7387\u4E0D\u80FD\u4E3A\u7A7A\uFF1B\u5236\u88C1\u547D\u4E2D\u53EA\u63D0\u793A\uFF0C\u4E0D\u963B\u6B62\u540E\u7EED\u9500\u552E\u4E1A\u52A1\u3002" }), _jsx(DataGrid, { columns: columns, rows: props.customers.items, rowKey: "id", pagination: pagination(props.customers), onPageChange: page => void query('salesCustomers', page), onPageSizeChange: pageSize => void queryDispatcher.pageSize('salesCustomers', pageSize, filters), emptyText: "\u6682\u65E0\u5BA2\u6237\u6570\u636E", actionWidth:
|
|
81
|
+
return _jsxs("main", { className: "tcw-sales-files-page tcw-sales-page tcw-sales-page--customers", children: [_jsx(PageHeading, { title: "\u5BA2\u6237\u4FE1\u606F\u5217\u8868", description: "\u7EF4\u62A4\u9500\u552E\u5BA2\u6237\u4E3B\u4F53\uFF0C\u70B9\u51FB\u8BA2\u5355\u8BE6\u60C5\u8FDB\u5165\u8BE5\u5BA2\u6237\u7684\u9500\u552E\u8BA2\u5355\u5217\u8868\u3002" }), _jsx(FilterPanel, { definitions: customerFilters, values: filters, onChange: (key, value) => setFilters(current => ({ ...current, [key]: value })), onQuery: () => void query('salesCustomers'), onReset: () => reset('salesCustomers') }), _jsx(InfoNotice, { children: "\u5BA2\u6237\u9ED8\u8BA4\u5B9A\u4EF7\u5229\u6DA6\u7387\u4E0D\u80FD\u4E3A\u7A7A\uFF1B\u5236\u88C1\u547D\u4E2D\u53EA\u63D0\u793A\uFF0C\u4E0D\u963B\u6B62\u540E\u7EED\u9500\u552E\u4E1A\u52A1\u3002" }), _jsx(DataGrid, { columns: columns, rows: props.customers.items, rowKey: "id", pagination: pagination(props.customers), onPageChange: page => void query('salesCustomers', page), onPageSizeChange: pageSize => void queryDispatcher.pageSize('salesCustomers', pageSize, filters), emptyText: "\u6682\u65E0\u5BA2\u6237\u6570\u636E", actionWidth: 190, actions: row => _jsxs(_Fragment, { children: [_jsxs("button", { type: "button", onClick: () => openOrders(row), children: [_jsx("i", { className: "ri-file-list-3-line", "aria-hidden": "true" }), "\u8BA2\u5355"] }), _jsxs("button", { type: "button", "aria-label": "\u7EF4\u62A4\u5BA2\u6237\u4FE1\u606F", onClick: () => setRateDialog({ customer: row, enterOrders: false }), children: [_jsx("i", { className: "ri-user-settings-line", "aria-hidden": "true" }), "\u5BA2\u6237\u7EF4\u62A4"] })] }) }), _jsx(ConfirmDialog, { open: Boolean(confirmCustomer), title: "\u9ED8\u8BA4\u5229\u6DA6\u7387\u672A\u7EF4\u62A4", message: "\u8BE5\u5BA2\u6237\u5C1A\u672A\u7EF4\u62A4\u9ED8\u8BA4\u5B9A\u4EF7\u5229\u6DA6\u7387\u3002\u662F\u5426\u5148\u7EF4\u62A4\u5229\u6DA6\u7387\u540E\u8FDB\u5165\u8BA2\u5355\u5217\u8868\uFF1F", onCancel: () => setConfirmCustomer(null), onConfirm: () => { if (confirmCustomer)
|
|
82
82
|
setRateDialog({ customer: confirmCustomer, enterOrders: true }); setConfirmCustomer(null); } }), rateDialog && _jsx(CustomerMaintenanceDialog, { state: rateDialog, busy: props.busy, onClose: () => setRateDialog(null), onSave: async (rate) => { await props.onAction('save_customer_profit_rate', { customerId: rateDialog.customer.id, rate }); const next = rateDialog.enterOrders; const id = rateDialog.customer.id; setRateDialog(null); if (next)
|
|
83
83
|
props.onRouteChange({ type: 'sales', level: 'orders', customerId: id });
|
|
84
84
|
else
|
|
@@ -91,7 +91,7 @@ export function SalesPage(props) {
|
|
|
91
91
|
{ type: 'text', key: 'orderAmountCny', header: '销售总额 CNY', width: 140, align: 'right', truncate: false, format: money }, { type: 'text', key: 'receivedAmountCny', header: '已收款 CNY', width: 140, align: 'right', truncate: false, format: money }, { type: 'text', key: 'unreceivedAmountCny', header: '未收款 CNY', width: 140, align: 'right', truncate: false, format: money },
|
|
92
92
|
{ type: 'custom', key: 'paymentStatus', header: '收款状态', width: 110, truncate: false, render: (_, row) => paymentLabel(row.paymentStatus) }, { type: 'text', key: 'effectivePricingProfitRate', header: '订单利润率', width: 120, truncate: false, format: percent }, { type: 'text', key: 'pricingProfitRateSource', header: '利润率来源', width: 150, truncate: false, format: sourceLabel }
|
|
93
93
|
];
|
|
94
|
-
return _jsxs("main", { className: "tcw-sales-files-page tcw-sales-page tcw-sales-page--orders", children: [_jsxs("section", { className: "tcw-context-bar", children: [_jsx("strong", { children: "\u5BA2\u6237\u6458\u8981" }), _jsxs("span", { children: [props.orders.customer?.code || '—', " \u00B7 ", props.orders.customer?.name || '—'] }), _jsx("span", { children: props.orders.customer?.country || '—' })] }), _jsx(PageHeading, { title: "\u9500\u552E\u8BA2\u5355\u5217\u8868", description: "\u67E5\u770B\u5F53\u524D\u5BA2\u6237\u7684\u6D3E\u751F\u9500\u552E\u8BA2\u5355\uFF0C\u70B9\u51FB\u5546\u54C1\u8BE6\u60C5\u8FDB\u5165\u5546\u54C1\u5217\u8868\uFF1B\u53EF\u7EF4\u62A4\u8BA2\u5355\u5B9A\u4EF7\u5229\u6DA6\u7387\u548C\u5DF2\u6536\u6B3E\u3002", action: _jsxs("button", { type: "button", className: "tcw-button tcw-button--secondary", onClick: () => props.onRouteChange({ type: 'sales', level: 'customers' }), children: [_jsx("i", { className: "ri-arrow-left-line", "aria-hidden": "true" }), "\u8FD4\u56DE\u5BA2\u6237\u4FE1\u606F\u5217\u8868"] }) }), _jsx("section", { className: "tcw-metric-grid", children: [['订单总数', String(metrics.orderCount)], ['销售总额', money(metrics.salesAmountCny)], ['已收款', money(metrics.receivedAmountCny)], ['未收款', money(metrics.unreceivedAmountCny)]].map(([label, value]) => _jsxs("article", { children: [_jsx("span", { children: label }), _jsx("strong", { children: value }), _jsx("small", { children: label === '订单总数' ? '笔' : 'CNY' })] }, label)) }), _jsx(FilterPanel, { definitions: orderFilters, values: filters, onChange: (key, value) => setFilters(current => ({ ...current, [key]: value })), onQuery: () => void query('salesOrders'), onReset: () => reset('salesOrders') }), _jsx(DataGrid, { columns: columns, rows: props.orders.items, rowKey: row => `${row.customerContractId}:${row.purchaseOrderId}`, pagination: pagination(props.orders), onPageChange: page => void query('salesOrders', page), onPageSizeChange: pageSize => void queryDispatcher.pageSize('salesOrders', pageSize, filters), emptyText: "\u6682\u65E0\u9500\u552E\u8BA2\u5355", actionWidth:
|
|
94
|
+
return _jsxs("main", { className: "tcw-sales-files-page tcw-sales-page tcw-sales-page--orders", children: [_jsxs("section", { className: "tcw-context-bar", children: [_jsx("strong", { children: "\u5BA2\u6237\u6458\u8981" }), _jsxs("span", { children: [props.orders.customer?.code || '—', " \u00B7 ", props.orders.customer?.name || '—'] }), _jsx("span", { children: props.orders.customer?.country || '—' })] }), _jsx(PageHeading, { title: "\u9500\u552E\u8BA2\u5355\u5217\u8868", description: "\u67E5\u770B\u5F53\u524D\u5BA2\u6237\u7684\u6D3E\u751F\u9500\u552E\u8BA2\u5355\uFF0C\u70B9\u51FB\u5546\u54C1\u8BE6\u60C5\u8FDB\u5165\u5546\u54C1\u5217\u8868\uFF1B\u53EF\u7EF4\u62A4\u8BA2\u5355\u5B9A\u4EF7\u5229\u6DA6\u7387\u548C\u5DF2\u6536\u6B3E\u3002", action: _jsxs("button", { type: "button", className: "tcw-button tcw-button--secondary", onClick: () => props.onRouteChange({ type: 'sales', level: 'customers' }), children: [_jsx("i", { className: "ri-arrow-left-line", "aria-hidden": "true" }), "\u8FD4\u56DE\u5BA2\u6237\u4FE1\u606F\u5217\u8868"] }) }), _jsx("section", { className: "tcw-metric-grid", children: [['订单总数', String(metrics.orderCount)], ['销售总额', money(metrics.salesAmountCny)], ['已收款', money(metrics.receivedAmountCny)], ['未收款', money(metrics.unreceivedAmountCny)]].map(([label, value]) => _jsxs("article", { children: [_jsx("span", { children: label }), _jsx("strong", { children: value }), _jsx("small", { children: label === '订单总数' ? '笔' : 'CNY' })] }, label)) }), _jsx(FilterPanel, { definitions: orderFilters, values: filters, onChange: (key, value) => setFilters(current => ({ ...current, [key]: value })), onQuery: () => void query('salesOrders'), onReset: () => reset('salesOrders') }), _jsx(DataGrid, { columns: columns, rows: props.orders.items, rowKey: row => `${row.customerContractId}:${row.purchaseOrderId}`, pagination: pagination(props.orders), onPageChange: page => void query('salesOrders', page), onPageSizeChange: pageSize => void queryDispatcher.pageSize('salesOrders', pageSize, filters), emptyText: "\u6682\u65E0\u9500\u552E\u8BA2\u5355", actionWidth: 360, actions: row => _jsxs(_Fragment, { children: [_jsxs("button", { type: "button", onClick: () => props.onRouteChange({ type: 'sales', level: 'lines', customerId: row.customerId, orderKey: `${row.customerContractId}:${row.purchaseOrderId}` }), children: [_jsx("i", { className: "ri-list-check-2", "aria-hidden": "true" }), "\u5546\u54C1\u8BE6\u60C5"] }), _jsxs("button", { type: "button", "aria-label": "\u7EF4\u62A4\u9500\u552E\u8BA2\u5355\u6570\u636E", onClick: event => { resetSalesPageScroll(event.currentTarget); setManualDialog({ order: row, field: 'pricingProfitRateOverride' }); }, children: [_jsx("i", { className: "ri-percent-line", "aria-hidden": "true" }), "\u5229\u6DA6\u7387"] }), _jsxs("button", { type: "button", onClick: event => { resetSalesPageScroll(event.currentTarget); setManualDialog({ order: row, field: 'receivedAmountCny' }); }, children: [_jsx("i", { className: "ri-money-cny-circle-line", "aria-hidden": "true" }), "\u6536\u6B3E"] }), _jsxs("button", { type: "button", "aria-label": "\u751F\u6210\u9500\u552E\u6587\u4EF6", onClick: event => { resetSalesPageScroll(event.currentTarget); setGenerationDialog(row); }, children: [_jsx("i", { className: "ri-file-excel-2-line", "aria-hidden": "true" }), "\u751F\u6210\u6587\u4EF6"] })] }) }), manualDialog && _jsx(SalesOrderMaintenanceDialog, { state: manualDialog, busy: props.busy, onClose: () => setManualDialog(null), onSave: async (value) => { const { order, field } = manualDialog; await props.onAction('save_derived_manual_data', createSalesOrderMaintenancePayload(order, field, value)); setManualDialog(null); void query('salesOrders'); } }), generationDialog && _jsx(SalesGenerateFileDialog, { order: generationDialog, busy: props.busy, onClose: () => setGenerationDialog(null), onConfirm: async (draft) => {
|
|
95
95
|
try {
|
|
96
96
|
const translationFailures = await completeSalesGeneration(generationDialog, draft, props.onAction, props.onOpenFiles, () => setGenerationDialog(null));
|
|
97
97
|
const details = translationFailures.map(failure => `${failure.field}:${failure.sourceValue}(${failure.message})`).join(';');
|