@agile-team/wl-skills-kit 2.11.1 → 2.11.2

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.
Files changed (85) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +1 -1
  3. package/bin/wl-skills.js +27 -3
  4. package/files/.wl-skills/docs/jh-pagination.md +505 -505
  5. package/files/.wl-skills/docs/request.md +940 -940
  6. package/files/.wl-skills/guides/architecture.md +1 -1
  7. package/files/.wl-skills/skills/core/convention-audit/SKILL.md +3 -3
  8. package/files/.wl-skills/skills/core/spec-doc-parse/SKILL.md +332 -332
  9. package/files/.wl-skills/skills/core/spec-doc-parse/USAGE.md +97 -97
  10. package/files/.wl-skills/skills/sync/permission-sync/USAGE.md +107 -107
  11. package/files/.wl-skills/src/components/global/C_ParentView/index.vue +3 -3
  12. package/files/.wl-skills/src/components/global/C_RightToolbar/index.vue +157 -157
  13. package/files/.wl-skills/src/components/global/C_SvgIcon/index.vue +31 -31
  14. package/files/.wl-skills/src/components/global/C_SvgIcon/svgicon.js +10 -10
  15. package/files/.wl-skills/src/components/global/C_TagStatus/README.md +264 -264
  16. package/files/.wl-skills/src/components/global/C_TagStatus/config.ts +192 -192
  17. package/files/.wl-skills/src/components/global/C_TagStatus/index.vue +106 -106
  18. package/files/.wl-skills/src/components/global/C_TagStatus/types.ts +64 -64
  19. package/files/.wl-skills/src/components/global/C_Tree/README.md +153 -153
  20. package/files/.wl-skills/src/components/global/C_Tree/index.scss +42 -42
  21. package/files/.wl-skills/src/components/global/C_Tree/index.vue +78 -78
  22. package/files/.wl-skills/src/components/global/C_Tree/types.ts +59 -59
  23. package/files/.wl-skills/src/components/local/c_formModal/README.md +235 -235
  24. package/files/.wl-skills/src/components/local/c_formModal/data.ts +95 -95
  25. package/files/.wl-skills/src/components/local/c_formModal/index.scss +8 -8
  26. package/files/.wl-skills/src/components/local/c_formModal/index.vue +107 -107
  27. package/files/.wl-skills/src/components/local/c_formSections/data.ts +175 -175
  28. package/files/.wl-skills/src/components/local/c_formSections/index.scss +280 -280
  29. package/files/.wl-skills/src/components/local/c_formSections/index.vue +429 -429
  30. package/files/.wl-skills/src/components/local/c_listModal/data.ts +41 -41
  31. package/files/.wl-skills/src/components/local/c_listModal/index.vue +136 -136
  32. package/files/.wl-skills/src/components/local/c_spliterTitle/index.scss +25 -25
  33. package/files/.wl-skills/src/components/local/c_spliterTitle/index.vue +21 -21
  34. package/files/.wl-skills/src/components/remote/AGGrid/README.md +530 -530
  35. package/files/.wl-skills/src/components/remote/BaseForm/README.md +508 -508
  36. package/files/.wl-skills/src/components/remote/BaseQuery/README.md +865 -865
  37. package/files/.wl-skills/src/components/remote/BaseTable/README.md +941 -941
  38. package/files/.wl-skills/src/components/remote/BaseToolbar/README.md +496 -496
  39. package/files/.wl-skills/src/types/page.ts +24 -24
  40. package/files/.wl-skills/standards/04-coding-basics.md +39 -1
  41. package/files/.wl-skills/standards/09-typescript.md +26 -3
  42. package/files/.wl-skills/standards/index.md +2 -2
  43. package/files/.wl-skills/templates/README.md +44 -44
  44. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-add/api.md +54 -54
  45. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-add/data.ts +346 -346
  46. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-add/index.scss +1 -1
  47. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-add/index.vue +28 -28
  48. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-add-form/data.ts +115 -115
  49. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-add-form/index.scss +44 -44
  50. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-add-form/index.vue +43 -43
  51. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-change/data.ts +338 -338
  52. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-change/index.scss +1 -1
  53. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-change/index.vue +28 -28
  54. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-change-form/data.ts +115 -115
  55. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-change-form/index.scss +44 -44
  56. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-change-form/index.vue +43 -43
  57. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-archive/api.md +88 -88
  58. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-archive/data.ts +601 -601
  59. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-archive/index.scss +1 -1
  60. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-archive/index.vue +64 -64
  61. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-detail/api.md +67 -67
  62. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-detail/data.ts +286 -286
  63. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-detail/index.scss +139 -139
  64. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-detail/index.vue +318 -318
  65. package/files/.wl-skills/templates/produce/aiflow/mmwr-temp-customer-archive/api.md +98 -98
  66. package/files/.wl-skills/templates/produce/aiflow/mmwr-temp-customer-archive/data.ts +543 -543
  67. package/files/.wl-skills/templates/produce/aiflow/mmwr-temp-customer-archive/index.scss +1 -1
  68. package/files/.wl-skills/templates/produce/aiflow/mmwr-temp-customer-archive/index.vue +52 -52
  69. package/files/.wl-skills/templates/sale/demo/add-demo/data.ts +518 -518
  70. package/files/.wl-skills/templates/sale/demo/billet-flame-cut-plan/data.ts +524 -524
  71. package/files/.wl-skills/templates/sale/demo/billet-flame-cut-plan/index.scss +154 -154
  72. package/files/.wl-skills/templates/sale/demo/billet-flame-cut-plan/index.vue +117 -117
  73. package/files/.wl-skills/templates/sale/demo/domestic-trade-order/data.ts +308 -308
  74. package/files/.wl-skills/templates/sale/demo/domestic-trade-order/index.scss +99 -99
  75. package/files/.wl-skills/templates/sale/demo/domestic-trade-order/index.vue +77 -77
  76. package/files/.wl-skills/templates/sale/demo/heat-batch-return/data.ts +367 -367
  77. package/files/.wl-skills/templates/sale/demo/heat-batch-return/index.scss +100 -100
  78. package/files/.wl-skills/templates/sale/demo/heat-batch-return/index.vue +170 -170
  79. package/files/.wl-skills/templates/sale/demo/heat-batch-return/meltDialog.vue +320 -320
  80. package/files/.wl-skills/templates/sale/demo/metallurgical-spec/data.ts +824 -824
  81. package/lib/ast-rules.js +304 -9
  82. package/mcp/config.js +46 -46
  83. package/mcp/registry.js +6 -1
  84. package/mcp/tools/projectTools.js +9 -1
  85. package/package.json +2 -2
@@ -1,318 +1,318 @@
1
- <template>
2
- <div class="app-container temp-customer-detail" v-loading="loading">
3
- <!-- 标题栏 -->
4
- <div class="title-bar">
5
- <span class="customer-name">{{ form.customerName }}</span>
6
- <el-tag type="warning" effect="plain" size="small" class="status-tag">
7
- {{ form.convertStatus || "未转换" }}
8
- </el-tag>
9
- </div>
10
-
11
- <!-- 工具栏 -->
12
- <div class="page-toolbar">
13
- <el-button type="primary" @click="handleSave">保存</el-button>
14
- <el-button @click="handleTempSave">暂存</el-button>
15
- <el-button type="success" plain @click="handleConvert">转化</el-button>
16
- <el-button plain @click="handleAssign">分配</el-button>
17
- <el-button plain @click="handleClaim">认领</el-button>
18
- <el-button type="warning" @click="handleRecycle">回收</el-button>
19
- <el-button type="danger" plain @click="handleReturn">退回</el-button>
20
- </div>
21
-
22
- <el-form :model="form" label-position="top" class="detail-form">
23
- <!-- 头部信息网格 -->
24
- <div class="header-info">
25
- <el-row :gutter="12">
26
- <el-col :span="4">
27
- <el-form-item label="临时编号">
28
- <el-input v-model="form.tempCode" disabled />
29
- </el-form-item>
30
- </el-col>
31
- <el-col :span="4">
32
- <el-form-item label="正式编号">
33
- <el-input v-model="form.formalCode" disabled />
34
- </el-form-item>
35
- </el-col>
36
- <el-col :span="4">
37
- <el-form-item label="*使用组织">
38
- <el-select v-model="form.useOrg" placeholder="请选择" style="width:100%">
39
- <el-option v-for="o in OPTS.useOrg" :key="o.value" :label="o.label" :value="o.value" />
40
- </el-select>
41
- </el-form-item>
42
- </el-col>
43
- <el-col :span="4">
44
- <el-form-item label="*产品线">
45
- <el-select v-model="form.product" placeholder="请选择" style="width:100%">
46
- <el-option v-for="o in OPTS.product" :key="o.value" :label="o.label" :value="o.value" />
47
- </el-select>
48
- </el-form-item>
49
- </el-col>
50
- <el-col :span="4">
51
- <el-form-item label="最后跟进人">
52
- <el-input v-model="form.lastFollowPerson" disabled />
53
- </el-form-item>
54
- </el-col>
55
- <el-col :span="4">
56
- <el-form-item label="最后跟进时间">
57
- <el-date-picker v-model="form.lastFollowDate" type="date" placeholder="请选择"
58
- value-format="YYYY-MM-DD" style="width:100%" />
59
- </el-form-item>
60
- </el-col>
61
- </el-row>
62
- <el-row :gutter="12">
63
- <el-col :span="4">
64
- <el-form-item label="创建人">
65
- <el-input v-model="form.creator" disabled />
66
- </el-form-item>
67
- </el-col>
68
- <el-col :span="4">
69
- <el-form-item label="创建时间">
70
- <el-input v-model="form.createTime" disabled />
71
- </el-form-item>
72
- </el-col>
73
- </el-row>
74
- </div>
75
-
76
- <!-- 基本信息 -->
77
- <div class="form-section">
78
- <div class="section-title">基本信息</div>
79
- <el-row :gutter="12">
80
- <el-col :span="16">
81
- <el-row :gutter="12">
82
- <el-col :span="14">
83
- <el-form-item label="*客户名称">
84
- <div class="name-field">
85
- <el-input v-model="form.customerName" placeholder="请输入客户名称" />
86
- <span class="name-badge">CN</span>
87
- </div>
88
- </el-form-item>
89
- </el-col>
90
- <el-col :span="5">
91
- <el-form-item label="*客户类型">
92
- <el-select v-model="form.customerType" placeholder="请选择" style="width:100%">
93
- <el-option v-for="o in OPTS.customerType" :key="o.value" :label="o.label" :value="o.value" />
94
- </el-select>
95
- </el-form-item>
96
- </el-col>
97
- <el-col :span="5">
98
- <el-form-item label="*客户等级">
99
- <el-select v-model="form.customerLevel" placeholder="请选择" style="width:100%">
100
- <el-option v-for="o in OPTS.customerLevel" :key="o.value" :label="o.label" :value="o.value" />
101
- </el-select>
102
- </el-form-item>
103
- </el-col>
104
- </el-row>
105
- </el-col>
106
- <el-col :span="8">
107
- <el-form-item label="营业执照">
108
- <div class="upload-box">
109
- <div class="upload-placeholder">
110
- <div class="upload-icon">+</div>
111
- <div class="upload-text">点击/拖拽上传</div>
112
- </div>
113
- </div>
114
- </el-form-item>
115
- </el-col>
116
- </el-row>
117
- </div>
118
-
119
- <!-- 联系信息 -->
120
- <div class="form-section">
121
- <div class="section-title">联系信息</div>
122
- <el-row :gutter="12">
123
- <el-col :span="4">
124
- <el-form-item label="*联系人">
125
- <el-input v-model="form.contactPerson" placeholder="请输入" />
126
- </el-form-item>
127
- </el-col>
128
- <el-col :span="4">
129
- <el-form-item label="*手机号">
130
- <el-input v-model="form.contactPhone" placeholder="请输入" />
131
- </el-form-item>
132
- </el-col>
133
- <el-col :span="4">
134
- <el-form-item label="*公司电话">
135
- <el-input v-model="form.companyPhone1" placeholder="请输入" />
136
- </el-form-item>
137
- </el-col>
138
- <el-col :span="4">
139
- <el-form-item label="*公司电话">
140
- <el-input v-model="form.companyPhone2" placeholder="请输入" />
141
- </el-form-item>
142
- </el-col>
143
- <el-col :span="8">
144
- <el-form-item label="公司传真">
145
- <el-input v-model="form.companyFax" placeholder="请输入" />
146
- </el-form-item>
147
- </el-col>
148
- </el-row>
149
- <el-row :gutter="12">
150
- <el-col :span="4">
151
- <el-form-item label="*职位">
152
- <el-input v-model="form.position" placeholder="请输入" />
153
- </el-form-item>
154
- </el-col>
155
- <el-col :span="8">
156
- <el-form-item label="Email">
157
- <el-input v-model="form.email" placeholder="请输入" />
158
- </el-form-item>
159
- </el-col>
160
- <el-col :span="12">
161
- <el-form-item label="*地址">
162
- <el-input v-model="form.address" placeholder="请输入" />
163
- </el-form-item>
164
- </el-col>
165
- </el-row>
166
- </div>
167
-
168
- <!-- 送货信息 -->
169
- <div class="form-section">
170
- <div class="section-title">送货信息</div>
171
- <el-row :gutter="12">
172
- <el-col :span="4">
173
- <el-form-item label="收货人">
174
- <el-input v-model="form.consignee" placeholder="请输入" />
175
- </el-form-item>
176
- </el-col>
177
- <el-col :span="8">
178
- <el-form-item label="收货联系方式">
179
- <el-input v-model="form.deliveryContact" placeholder="请输入" />
180
- </el-form-item>
181
- </el-col>
182
- <el-col :span="12">
183
- <el-form-item label="收货地址">
184
- <el-input v-model="form.deliveryAddress" placeholder="请输入" />
185
- </el-form-item>
186
- </el-col>
187
- </el-row>
188
- </div>
189
-
190
- <!-- 银行信息 -->
191
- <div class="form-section">
192
- <div class="section-title">银行信息</div>
193
- <el-row :gutter="12">
194
- <el-col :span="4">
195
- <el-form-item label="币别">
196
- <el-select v-model="form.currency" style="width:100%">
197
- <el-option v-for="o in OPTS.currency" :key="o.value" :label="o.label" :value="o.value" />
198
- </el-select>
199
- </el-form-item>
200
- </el-col>
201
- <el-col :span="4">
202
- <el-form-item label="销项税率">
203
- <el-input v-model="form.taxRate" placeholder="--" />
204
- </el-form-item>
205
- </el-col>
206
- </el-row>
207
- <el-row :gutter="12">
208
- <el-col :span="8">
209
- <el-form-item label="银行类型">
210
- <el-input v-model="form.bankType" placeholder="请输入" />
211
- </el-form-item>
212
- </el-col>
213
- <el-col :span="8">
214
- <el-form-item label="银行账户名称">
215
- <el-input v-model="form.bankAccountName" placeholder="请输入" />
216
- </el-form-item>
217
- </el-col>
218
- </el-row>
219
- <el-row :gutter="12">
220
- <el-col :span="8">
221
- <el-form-item label="银行账户">
222
- <el-input v-model="form.bankAccount" placeholder="请输入" />
223
- </el-form-item>
224
- </el-col>
225
- <el-col :span="16">
226
- <el-form-item label="银行网点">
227
- <el-input v-model="form.bankBranch" placeholder="请输入" />
228
- </el-form-item>
229
- </el-col>
230
- </el-row>
231
- </div>
232
-
233
- <!-- 发票信息 -->
234
- <div class="form-section">
235
- <div class="section-title">发票信息</div>
236
- <el-row :gutter="12">
237
- <el-col :span="6">
238
- <el-form-item label="发票抬头">
239
- <el-input v-model="form.invoiceHeader" placeholder="请输入" />
240
- </el-form-item>
241
- </el-col>
242
- <el-col :span="6">
243
- <el-form-item label="税号">
244
- <el-input v-model="form.taxNumber" placeholder="请输入" />
245
- </el-form-item>
246
- </el-col>
247
- <el-col :span="6">
248
- <el-form-item label="收票邮箱">
249
- <el-input v-model="form.invoiceEmail" placeholder="请输入" />
250
- </el-form-item>
251
- </el-col>
252
- <el-col :span="6">
253
- <el-form-item label="电话">
254
- <el-input v-model="form.invoicePhone" placeholder="请输入" />
255
- </el-form-item>
256
- </el-col>
257
- </el-row>
258
- <el-row :gutter="12">
259
- <el-col :span="12">
260
- <el-form-item label="收票地址">
261
- <el-input v-model="form.invoiceAddress" placeholder="请输入" />
262
- </el-form-item>
263
- </el-col>
264
- </el-row>
265
- </div>
266
-
267
- <!-- 跟进记录 -->
268
- <div class="form-section">
269
- <div class="section-title">跟进记录</div>
270
- <el-table :data="form.followRecords" border size="small">
271
- <el-table-column type="index" label="序号" width="55" align="center" />
272
- <el-table-column label="使用组织" prop="useOrg" min-width="120" />
273
- <el-table-column label="产品线" prop="product" width="80" />
274
- <el-table-column label="类型" prop="type" width="90" />
275
- <el-table-column label="活动日期" prop="activityDate" width="105" />
276
- <el-table-column label="活动单号" prop="activityCode" min-width="150" />
277
- <el-table-column label="活动标题" prop="activityTitle" min-width="150" />
278
- <el-table-column label="活动内容" prop="activityContent" min-width="100" />
279
- <el-table-column label="附件" prop="attachment" width="90">
280
- <template #default="{ row }">
281
- <a v-if="row.attachment" href="javascript:void(0)" class="link-text">{{ row.attachment }}</a>
282
- </template>
283
- </el-table-column>
284
- <el-table-column label="创建时间" prop="createTime" width="140" />
285
- <el-table-column label="操作" width="100" fixed="right">
286
- <template #default="{ $index }">
287
- <el-button type="primary" link size="small">编辑</el-button>
288
- <el-button type="danger" link size="small" @click="removeFollowRecord($index)">删除</el-button>
289
- </template>
290
- </el-table-column>
291
- </el-table>
292
- <div class="add-row-btn" @click="addFollowRecord">+ 新增行</div>
293
- </div>
294
- </el-form>
295
- </div>
296
- </template>
297
-
298
- <script setup lang="ts">
299
- import { useRoute } from "vue-router";
300
- import { useTempCustomerDetail, OPTS } from "./data";
301
-
302
- const route = useRoute();
303
- const {
304
- loading, form,
305
- loadDetail, handleSave, handleTempSave,
306
- handleConvert, handleAssign, handleClaim, handleRecycle, handleReturn,
307
- addFollowRecord, removeFollowRecord
308
- } = useTempCustomerDetail();
309
-
310
- onMounted(() => {
311
- const id = route.query.id as string;
312
- if (id) loadDetail(id);
313
- });
314
- </script>
315
-
316
- <style scoped lang="scss">
317
- @import "./index.scss";
318
- </style>
1
+ <template>
2
+ <div class="app-container temp-customer-detail" v-loading="loading">
3
+ <!-- 标题栏 -->
4
+ <div class="title-bar">
5
+ <span class="customer-name">{{ form.customerName }}</span>
6
+ <el-tag type="warning" effect="plain" size="small" class="status-tag">
7
+ {{ form.convertStatus || "未转换" }}
8
+ </el-tag>
9
+ </div>
10
+
11
+ <!-- 工具栏 -->
12
+ <div class="page-toolbar">
13
+ <el-button type="primary" @click="handleSave">保存</el-button>
14
+ <el-button @click="handleTempSave">暂存</el-button>
15
+ <el-button type="success" plain @click="handleConvert">转化</el-button>
16
+ <el-button plain @click="handleAssign">分配</el-button>
17
+ <el-button plain @click="handleClaim">认领</el-button>
18
+ <el-button type="warning" @click="handleRecycle">回收</el-button>
19
+ <el-button type="danger" plain @click="handleReturn">退回</el-button>
20
+ </div>
21
+
22
+ <el-form :model="form" label-position="top" class="detail-form">
23
+ <!-- 头部信息网格 -->
24
+ <div class="header-info">
25
+ <el-row :gutter="12">
26
+ <el-col :span="4">
27
+ <el-form-item label="临时编号">
28
+ <el-input v-model="form.tempCode" disabled />
29
+ </el-form-item>
30
+ </el-col>
31
+ <el-col :span="4">
32
+ <el-form-item label="正式编号">
33
+ <el-input v-model="form.formalCode" disabled />
34
+ </el-form-item>
35
+ </el-col>
36
+ <el-col :span="4">
37
+ <el-form-item label="*使用组织">
38
+ <el-select v-model="form.useOrg" placeholder="请选择" style="width:100%">
39
+ <el-option v-for="o in OPTS.useOrg" :key="o.value" :label="o.label" :value="o.value" />
40
+ </el-select>
41
+ </el-form-item>
42
+ </el-col>
43
+ <el-col :span="4">
44
+ <el-form-item label="*产品线">
45
+ <el-select v-model="form.product" placeholder="请选择" style="width:100%">
46
+ <el-option v-for="o in OPTS.product" :key="o.value" :label="o.label" :value="o.value" />
47
+ </el-select>
48
+ </el-form-item>
49
+ </el-col>
50
+ <el-col :span="4">
51
+ <el-form-item label="最后跟进人">
52
+ <el-input v-model="form.lastFollowPerson" disabled />
53
+ </el-form-item>
54
+ </el-col>
55
+ <el-col :span="4">
56
+ <el-form-item label="最后跟进时间">
57
+ <el-date-picker v-model="form.lastFollowDate" type="date" placeholder="请选择"
58
+ value-format="YYYY-MM-DD" style="width:100%" />
59
+ </el-form-item>
60
+ </el-col>
61
+ </el-row>
62
+ <el-row :gutter="12">
63
+ <el-col :span="4">
64
+ <el-form-item label="创建人">
65
+ <el-input v-model="form.creator" disabled />
66
+ </el-form-item>
67
+ </el-col>
68
+ <el-col :span="4">
69
+ <el-form-item label="创建时间">
70
+ <el-input v-model="form.createTime" disabled />
71
+ </el-form-item>
72
+ </el-col>
73
+ </el-row>
74
+ </div>
75
+
76
+ <!-- 基本信息 -->
77
+ <div class="form-section">
78
+ <div class="section-title">基本信息</div>
79
+ <el-row :gutter="12">
80
+ <el-col :span="16">
81
+ <el-row :gutter="12">
82
+ <el-col :span="14">
83
+ <el-form-item label="*客户名称">
84
+ <div class="name-field">
85
+ <el-input v-model="form.customerName" placeholder="请输入客户名称" />
86
+ <span class="name-badge">CN</span>
87
+ </div>
88
+ </el-form-item>
89
+ </el-col>
90
+ <el-col :span="5">
91
+ <el-form-item label="*客户类型">
92
+ <el-select v-model="form.customerType" placeholder="请选择" style="width:100%">
93
+ <el-option v-for="o in OPTS.customerType" :key="o.value" :label="o.label" :value="o.value" />
94
+ </el-select>
95
+ </el-form-item>
96
+ </el-col>
97
+ <el-col :span="5">
98
+ <el-form-item label="*客户等级">
99
+ <el-select v-model="form.customerLevel" placeholder="请选择" style="width:100%">
100
+ <el-option v-for="o in OPTS.customerLevel" :key="o.value" :label="o.label" :value="o.value" />
101
+ </el-select>
102
+ </el-form-item>
103
+ </el-col>
104
+ </el-row>
105
+ </el-col>
106
+ <el-col :span="8">
107
+ <el-form-item label="营业执照">
108
+ <div class="upload-box">
109
+ <div class="upload-placeholder">
110
+ <div class="upload-icon">+</div>
111
+ <div class="upload-text">点击/拖拽上传</div>
112
+ </div>
113
+ </div>
114
+ </el-form-item>
115
+ </el-col>
116
+ </el-row>
117
+ </div>
118
+
119
+ <!-- 联系信息 -->
120
+ <div class="form-section">
121
+ <div class="section-title">联系信息</div>
122
+ <el-row :gutter="12">
123
+ <el-col :span="4">
124
+ <el-form-item label="*联系人">
125
+ <el-input v-model="form.contactPerson" placeholder="请输入" />
126
+ </el-form-item>
127
+ </el-col>
128
+ <el-col :span="4">
129
+ <el-form-item label="*手机号">
130
+ <el-input v-model="form.contactPhone" placeholder="请输入" />
131
+ </el-form-item>
132
+ </el-col>
133
+ <el-col :span="4">
134
+ <el-form-item label="*公司电话">
135
+ <el-input v-model="form.companyPhone1" placeholder="请输入" />
136
+ </el-form-item>
137
+ </el-col>
138
+ <el-col :span="4">
139
+ <el-form-item label="*公司电话">
140
+ <el-input v-model="form.companyPhone2" placeholder="请输入" />
141
+ </el-form-item>
142
+ </el-col>
143
+ <el-col :span="8">
144
+ <el-form-item label="公司传真">
145
+ <el-input v-model="form.companyFax" placeholder="请输入" />
146
+ </el-form-item>
147
+ </el-col>
148
+ </el-row>
149
+ <el-row :gutter="12">
150
+ <el-col :span="4">
151
+ <el-form-item label="*职位">
152
+ <el-input v-model="form.position" placeholder="请输入" />
153
+ </el-form-item>
154
+ </el-col>
155
+ <el-col :span="8">
156
+ <el-form-item label="Email">
157
+ <el-input v-model="form.email" placeholder="请输入" />
158
+ </el-form-item>
159
+ </el-col>
160
+ <el-col :span="12">
161
+ <el-form-item label="*地址">
162
+ <el-input v-model="form.address" placeholder="请输入" />
163
+ </el-form-item>
164
+ </el-col>
165
+ </el-row>
166
+ </div>
167
+
168
+ <!-- 送货信息 -->
169
+ <div class="form-section">
170
+ <div class="section-title">送货信息</div>
171
+ <el-row :gutter="12">
172
+ <el-col :span="4">
173
+ <el-form-item label="收货人">
174
+ <el-input v-model="form.consignee" placeholder="请输入" />
175
+ </el-form-item>
176
+ </el-col>
177
+ <el-col :span="8">
178
+ <el-form-item label="收货联系方式">
179
+ <el-input v-model="form.deliveryContact" placeholder="请输入" />
180
+ </el-form-item>
181
+ </el-col>
182
+ <el-col :span="12">
183
+ <el-form-item label="收货地址">
184
+ <el-input v-model="form.deliveryAddress" placeholder="请输入" />
185
+ </el-form-item>
186
+ </el-col>
187
+ </el-row>
188
+ </div>
189
+
190
+ <!-- 银行信息 -->
191
+ <div class="form-section">
192
+ <div class="section-title">银行信息</div>
193
+ <el-row :gutter="12">
194
+ <el-col :span="4">
195
+ <el-form-item label="币别">
196
+ <el-select v-model="form.currency" style="width:100%">
197
+ <el-option v-for="o in OPTS.currency" :key="o.value" :label="o.label" :value="o.value" />
198
+ </el-select>
199
+ </el-form-item>
200
+ </el-col>
201
+ <el-col :span="4">
202
+ <el-form-item label="销项税率">
203
+ <el-input v-model="form.taxRate" placeholder="--" />
204
+ </el-form-item>
205
+ </el-col>
206
+ </el-row>
207
+ <el-row :gutter="12">
208
+ <el-col :span="8">
209
+ <el-form-item label="银行类型">
210
+ <el-input v-model="form.bankType" placeholder="请输入" />
211
+ </el-form-item>
212
+ </el-col>
213
+ <el-col :span="8">
214
+ <el-form-item label="银行账户名称">
215
+ <el-input v-model="form.bankAccountName" placeholder="请输入" />
216
+ </el-form-item>
217
+ </el-col>
218
+ </el-row>
219
+ <el-row :gutter="12">
220
+ <el-col :span="8">
221
+ <el-form-item label="银行账户">
222
+ <el-input v-model="form.bankAccount" placeholder="请输入" />
223
+ </el-form-item>
224
+ </el-col>
225
+ <el-col :span="16">
226
+ <el-form-item label="银行网点">
227
+ <el-input v-model="form.bankBranch" placeholder="请输入" />
228
+ </el-form-item>
229
+ </el-col>
230
+ </el-row>
231
+ </div>
232
+
233
+ <!-- 发票信息 -->
234
+ <div class="form-section">
235
+ <div class="section-title">发票信息</div>
236
+ <el-row :gutter="12">
237
+ <el-col :span="6">
238
+ <el-form-item label="发票抬头">
239
+ <el-input v-model="form.invoiceHeader" placeholder="请输入" />
240
+ </el-form-item>
241
+ </el-col>
242
+ <el-col :span="6">
243
+ <el-form-item label="税号">
244
+ <el-input v-model="form.taxNumber" placeholder="请输入" />
245
+ </el-form-item>
246
+ </el-col>
247
+ <el-col :span="6">
248
+ <el-form-item label="收票邮箱">
249
+ <el-input v-model="form.invoiceEmail" placeholder="请输入" />
250
+ </el-form-item>
251
+ </el-col>
252
+ <el-col :span="6">
253
+ <el-form-item label="电话">
254
+ <el-input v-model="form.invoicePhone" placeholder="请输入" />
255
+ </el-form-item>
256
+ </el-col>
257
+ </el-row>
258
+ <el-row :gutter="12">
259
+ <el-col :span="12">
260
+ <el-form-item label="收票地址">
261
+ <el-input v-model="form.invoiceAddress" placeholder="请输入" />
262
+ </el-form-item>
263
+ </el-col>
264
+ </el-row>
265
+ </div>
266
+
267
+ <!-- 跟进记录 -->
268
+ <div class="form-section">
269
+ <div class="section-title">跟进记录</div>
270
+ <el-table :data="form.followRecords" border size="small">
271
+ <el-table-column type="index" label="序号" width="55" align="center" />
272
+ <el-table-column label="使用组织" prop="useOrg" min-width="120" />
273
+ <el-table-column label="产品线" prop="product" width="80" />
274
+ <el-table-column label="类型" prop="type" width="90" />
275
+ <el-table-column label="活动日期" prop="activityDate" width="105" />
276
+ <el-table-column label="活动单号" prop="activityCode" min-width="150" />
277
+ <el-table-column label="活动标题" prop="activityTitle" min-width="150" />
278
+ <el-table-column label="活动内容" prop="activityContent" min-width="100" />
279
+ <el-table-column label="附件" prop="attachment" width="90">
280
+ <template #default="{ row }">
281
+ <a v-if="row.attachment" href="javascript:void(0)" class="link-text">{{ row.attachment }}</a>
282
+ </template>
283
+ </el-table-column>
284
+ <el-table-column label="创建时间" prop="createTime" width="140" />
285
+ <el-table-column label="操作" width="100" fixed="right">
286
+ <template #default="{ $index }">
287
+ <el-button type="primary" link size="small">编辑</el-button>
288
+ <el-button type="danger" link size="small" @click="removeFollowRecord($index)">删除</el-button>
289
+ </template>
290
+ </el-table-column>
291
+ </el-table>
292
+ <div class="add-row-btn" @click="addFollowRecord">+ 新增行</div>
293
+ </div>
294
+ </el-form>
295
+ </div>
296
+ </template>
297
+
298
+ <script setup lang="ts">
299
+ import { useRoute } from "vue-router";
300
+ import { useTempCustomerDetail, OPTS } from "./data";
301
+
302
+ const route = useRoute();
303
+ const {
304
+ loading, form,
305
+ loadDetail, handleSave, handleTempSave,
306
+ handleConvert, handleAssign, handleClaim, handleRecycle, handleReturn,
307
+ addFollowRecord, removeFollowRecord
308
+ } = useTempCustomerDetail();
309
+
310
+ onMounted(() => {
311
+ const id = route.query.id as string;
312
+ if (id) loadDetail(id);
313
+ });
314
+ </script>
315
+
316
+ <style scoped lang="scss">
317
+ @import "./index.scss";
318
+ </style>