提交 | 用户 | age
|
f353bc
|
1 |
// import {FormSchema} from '@/components/Table'; |
S |
2 |
import {treeOptionsListApi} from "@/api/demo/tree"; |
|
3 |
import {areaRecord} from "@/api/demo/cascader"; |
|
4 |
import dayjs from "dayjs"; |
|
5 |
import {optionsListApi} from "@/api/demo/select"; |
|
6 |
import {Input, FormItem, FormItemRest} from "ant-design-vue"; |
|
7 |
import { ApiSelect, FormSchema } from '@/components/Form'; |
|
8 |
|
|
9 |
import companyType from './drawer-form/companyType'; |
|
10 |
import annualPurchaseAmount from './drawer-form/annualPurchaseAmount'; |
|
11 |
import timeZone from './drawer-form/timeZone'; |
|
12 |
import {uploadApi} from "@/api/sys/upload"; |
|
13 |
|
|
14 |
// const custom_typeKey2typeValueRules = (model) => { |
|
15 |
// return [ |
|
16 |
// { |
|
17 |
// // required: true, |
|
18 |
// // trigger: 'blur', |
|
19 |
// validator: async () => { |
|
20 |
// Logger.log('custom_typeKey2typeValueRules', model); |
|
21 |
// if (!model.typeKey) return Promise.reject('请选择类型'); |
|
22 |
// if (!model.typeValue) return Promise.reject('请输入数据'); |
|
23 |
// Promise.resolve(); |
|
24 |
// }, |
|
25 |
// }, |
|
26 |
// ]; |
|
27 |
// }; |
|
28 |
|
|
29 |
export const schemas: FormSchema[] = [ |
|
30 |
{ |
b5c161
|
31 |
field: 'field001', |
f353bc
|
32 |
component: 'Input', |
b5c161
|
33 |
label: '公司网址(可通过网址/公司名称自动匹配客户信息)', |
f353bc
|
34 |
colProps: { |
S |
35 |
span: 24, |
|
36 |
}, |
|
37 |
}, |
|
38 |
{ |
|
39 |
field: 'cluesName', |
|
40 |
component: 'Input', |
b5c161
|
41 |
label: '公司名称', |
f353bc
|
42 |
colProps: { |
S |
43 |
span: 24, |
|
44 |
}, |
|
45 |
rules: [{required: true, trigger: 'blur'}], |
|
46 |
}, |
|
47 |
{ |
|
48 |
field: 'field8', |
|
49 |
component: 'ApiCascader', |
|
50 |
label: '国家地区', |
|
51 |
colProps: { |
|
52 |
span: 16, |
|
53 |
}, |
|
54 |
componentProps: { |
|
55 |
api: areaRecord, |
|
56 |
apiParamKey: 'parentCode', |
|
57 |
// dataField: 'data', |
|
58 |
labelField: 'name', |
|
59 |
valueField: 'code', |
|
60 |
initFetchParams: { |
|
61 |
parentCode: '', |
|
62 |
}, |
|
63 |
isLeaf: (record) => { |
|
64 |
return !(record.levelType < 3); |
|
65 |
}, |
|
66 |
onChange: (e, ...v) => { |
|
67 |
console.log('ApiCascader====>:', e, v); |
|
68 |
}, |
|
69 |
}, |
b5c161
|
70 |
rules: [{required: true, trigger: 'blur'}], |
f353bc
|
71 |
}, |
b5c161
|
72 |
|
S |
73 |
{ |
|
74 |
field: 'customerFrom', |
|
75 |
component: 'ApiTreeSelect', |
|
76 |
label: '客户来源', |
|
77 |
componentProps: { |
|
78 |
api: treeOptionsListApi, |
|
79 |
treeCheckable: true, |
|
80 |
treeCheckStrictly: true, // 父子节点是否不再关联 |
|
81 |
resultField: 'list', |
|
82 |
onChange: (e, v) => { |
|
83 |
console.log('ApiTreeSelect====>:', e, v); |
|
84 |
}, |
|
85 |
}, |
|
86 |
colProps: { |
|
87 |
span: 24, |
|
88 |
}, |
|
89 |
rules: [{required: true, trigger: 'blur'}], |
|
90 |
}, |
|
91 |
|
f353bc
|
92 |
// { |
S |
93 |
// field: 'field9', |
|
94 |
// component: 'ApiCascader', |
|
95 |
// label: '联动ApiCascader', |
|
96 |
// required: true, |
|
97 |
// colProps: { |
|
98 |
// span: 8, |
|
99 |
// }, |
|
100 |
// componentProps: { |
|
101 |
// api: areaRecord, |
|
102 |
// apiParamKey: 'parentCode', |
|
103 |
// // dataField: 'data', |
|
104 |
// labelField: 'name', |
|
105 |
// valueField: 'code', |
|
106 |
// initFetchParams: { |
|
107 |
// parentCode: '', |
|
108 |
// }, |
|
109 |
// isLeaf: (record) => { |
|
110 |
// return !(record.levelType < 3); |
|
111 |
// }, |
|
112 |
// onChange: (e, ...v) => { |
|
113 |
// console.log('ApiCascader====>:', e, v); |
|
114 |
// }, |
|
115 |
// }, |
|
116 |
// }, |
|
117 |
{ |
|
118 |
field: 'field30', |
|
119 |
component: 'ApiSelect', |
b5c161
|
120 |
label: '客户标签', |
f353bc
|
121 |
// required: true, |
S |
122 |
componentProps: { |
|
123 |
// more details see /src/components/Form/src/components/ApiSelect.vue |
|
124 |
api: optionsListApi, |
|
125 |
params: { |
|
126 |
id: 1, |
|
127 |
}, |
|
128 |
mode: 'multiple', |
|
129 |
resultField: 'list', |
|
130 |
// use name as label |
|
131 |
labelField: 'name', |
|
132 |
// use id as value |
|
133 |
valueField: 'id', |
|
134 |
// not request untill to select |
|
135 |
immediate: true, |
|
136 |
onChange: (e, v) => { |
|
137 |
console.log('ApiSelect====>:', e, v); |
|
138 |
}, |
|
139 |
// atfer request callback |
|
140 |
onOptionsChange: (options) => { |
|
141 |
// console.log('get options', options.length, options); |
|
142 |
}, |
|
143 |
}, |
|
144 |
colProps: { |
b5c161
|
145 |
span:24, |
f353bc
|
146 |
}, |
S |
147 |
// defaultValue: '0', |
|
148 |
}, |
|
149 |
{ |
b5c161
|
150 |
field: 'customerGrouping', |
S |
151 |
component: 'ApiTreeSelect', |
|
152 |
label: '客户分组', |
|
153 |
componentProps: { |
|
154 |
api: treeOptionsListApi, |
|
155 |
// treeCheckable: true, |
|
156 |
treeCheckStrictly: true, // 父子节点是否不再关联 |
|
157 |
resultField: 'list', |
|
158 |
onChange: (e, v) => { |
|
159 |
console.log('ApiTreeSelect====>:', e, v); |
|
160 |
}, |
|
161 |
}, |
f353bc
|
162 |
colProps: { |
b5c161
|
163 |
span: 24, |
S |
164 |
}, |
|
165 |
rules: [{required: true, trigger: 'blur'}], |
|
166 |
}, |
|
167 |
{ |
|
168 |
field: 'customerStage', |
|
169 |
component: 'ApiSelect', |
|
170 |
label: '客户阶段', |
|
171 |
// required: true, |
|
172 |
componentProps: { |
|
173 |
// more details see /src/components/Form/src/components/ApiSelect.vue |
|
174 |
api: optionsListApi, |
|
175 |
params: { |
|
176 |
id: 1, |
|
177 |
}, |
|
178 |
mode: 'multiple', |
|
179 |
resultField: 'list', |
|
180 |
// use name as label |
|
181 |
labelField: 'name', |
|
182 |
// use id as value |
|
183 |
valueField: 'id', |
|
184 |
// not request untill to select |
|
185 |
immediate: true, |
|
186 |
onChange: (e, v) => { |
|
187 |
console.log('ApiSelect====>:', e, v); |
|
188 |
}, |
|
189 |
// atfer request callback |
|
190 |
onOptionsChange: (options) => { |
|
191 |
// console.log('get options', options.length, options); |
|
192 |
}, |
|
193 |
}, |
|
194 |
colProps: { |
|
195 |
span:24, |
|
196 |
}, |
|
197 |
// defaultValue: '0', |
|
198 |
}, |
|
199 |
{ |
|
200 |
field: 'customerNumber', |
|
201 |
component: 'RadioGroup', |
|
202 |
defaultValue: '0', |
|
203 |
label: '客户编号', |
|
204 |
componentProps: { |
|
205 |
options: [ |
|
206 |
{label: '自动生成', value: '0'}, |
|
207 |
{label: '自定义', value: '1'}, |
|
208 |
], |
|
209 |
}, |
|
210 |
colProps: { |
|
211 |
span: 24, |
f353bc
|
212 |
}, |
S |
213 |
}, |
|
214 |
{ |
b5c161
|
215 |
field: 'customerRate', |
S |
216 |
component: 'Rate', |
|
217 |
label: '客户评分', |
|
218 |
componentProps: { |
|
219 |
}, |
|
220 |
colProps: { |
|
221 |
span: 24, |
|
222 |
}, |
|
223 |
}, |
|
224 |
{ |
|
225 |
field: 'field002', |
|
226 |
component: 'Input', |
|
227 |
label: '客户代码(与生产单的客户代码一致)', |
|
228 |
colProps: { |
|
229 |
span: 24, |
|
230 |
}, |
|
231 |
}, |
|
232 |
{ |
|
233 |
component: 'Select', |
|
234 |
label: '客户类型', |
|
235 |
field: 'customerType', |
|
236 |
colProps: {span: 24}, |
|
237 |
componentProps: { |
|
238 |
options: [ |
|
239 |
{ |
|
240 |
label: '原材料供应商', |
|
241 |
value: '1', |
|
242 |
}, |
|
243 |
{ |
|
244 |
label: '生产商', |
|
245 |
value: '2', |
|
246 |
}, |
|
247 |
{ |
|
248 |
label: '加盟商', |
|
249 |
value: '3', |
|
250 |
}, |
|
251 |
{ |
|
252 |
label: '渠道商', |
|
253 |
value: '4', |
|
254 |
}, |
|
255 |
{ |
|
256 |
label: '贸易商', |
|
257 |
value: '5', |
|
258 |
}, |
|
259 |
{ |
|
260 |
label: '代理商', |
|
261 |
value: '6', |
|
262 |
}, |
|
263 |
{ |
|
264 |
label: '批发商', |
|
265 |
value: '7', |
|
266 |
}, |
|
267 |
], |
|
268 |
}, |
|
269 |
rules: [{required: true, trigger: 'blur'}], |
|
270 |
}, |
|
271 |
{ |
|
272 |
component: 'Select', |
|
273 |
label: '公海分组', |
|
274 |
field: 'publicPoolGroup', |
|
275 |
colProps: {span: 16}, |
|
276 |
componentProps: { |
|
277 |
options: [ |
|
278 |
{ |
|
279 |
label: '未知', |
|
280 |
value: '1', |
|
281 |
}, |
|
282 |
{ |
|
283 |
label: '公共公海分组', |
|
284 |
value: '2', |
|
285 |
}, |
|
286 |
], |
|
287 |
}, |
|
288 |
rules: [{required: true, trigger: 'blur'}], |
|
289 |
}, |
|
290 |
{ |
f353bc
|
291 |
field: 'typeKey', |
b5c161
|
292 |
defaultValue: '', |
f353bc
|
293 |
fields: ['typeValue'], |
S |
294 |
defaultValueObj: {typeValue: ''}, |
|
295 |
component: 'Input', |
|
296 |
// label: 'renderColContent渲染', |
|
297 |
/**!!!renderColContent 没有FormItem 包裹, 若想要 Form 提交需要带上数据须 <FormItem name={}></FormItem> 包裹: 示例如下*/ |
|
298 |
renderColContent({model, field}, {disabled}) { |
|
299 |
return ( |
|
300 |
<FormItem |
|
301 |
name="typeKey" |
|
302 |
label="座机" |
|
303 |
// rules={[{ trigger: 'blur',required: true, }]} |
|
304 |
// rules={custom_typeKey2typeValueRules(model)} |
|
305 |
> |
|
306 |
<Input.Group compact> |
|
307 |
<ApiSelect |
|
308 |
style="width: 120px" |
|
309 |
v-model:api={optionsListApi} |
|
310 |
showSearch |
|
311 |
v-model:value={model['field']} |
|
312 |
optionFilterProp="label" |
|
313 |
resultField="list" |
|
314 |
labelField="name" |
|
315 |
valueField="id" |
|
316 |
/> |
|
317 |
<FormItemRest> |
|
318 |
<Input |
|
319 |
style="width: calc(100% - 120px); margin-left: -1px;" |
|
320 |
placeholder="电话号码" |
|
321 |
v-model:value={model['typeValue']} |
|
322 |
disabled={disabled} |
|
323 |
// rules={[{ type: 'number',trigger: 'blur',required: true, }]} |
|
324 |
// rules={custom_typeKey2typeValueRules(model)} |
|
325 |
/> |
|
326 |
</FormItemRest> |
|
327 |
</Input.Group> |
|
328 |
</FormItem> |
|
329 |
); |
|
330 |
}, |
|
331 |
colProps: { |
|
332 |
span: 16, |
|
333 |
}, |
|
334 |
dynamicDisabled: ({values}) => { |
|
335 |
return !!values.field_disabled; |
|
336 |
}, |
|
337 |
}, |
|
338 |
{ |
b5c161
|
339 |
field: 'salesman', |
f353bc
|
340 |
component: 'Input', |
b5c161
|
341 |
label: '业务员', |
f353bc
|
342 |
colProps: { |
S |
343 |
span: 24, |
|
344 |
}, |
b5c161
|
345 |
rules: [{required: true, trigger: 'blur'}], |
f353bc
|
346 |
}, |
S |
347 |
{ |
|
348 |
field: '', |
|
349 |
defaultValue: '', |
|
350 |
component: 'Input', |
|
351 |
// label: 'renderColContent渲染', |
|
352 |
/**!!!renderColContent 没有FormItem 包裹, 若想要 Form 提交需要带上数据须 <FormItem name={}></FormItem> 包裹: 示例如下*/ |
|
353 |
renderColContent({model, field}, {disabled}) { |
|
354 |
return ( |
b5c161
|
355 |
<div class="font-size-16px mb-10px">公司其他信息</div> |
f353bc
|
356 |
); |
S |
357 |
}, |
|
358 |
colProps: { |
|
359 |
span: 24, |
|
360 |
}, |
|
361 |
}, |
|
362 |
{ |
|
363 |
component: 'Select', |
|
364 |
label: '公司类型', |
|
365 |
field: 'companyType', |
|
366 |
colProps: {span: 16}, |
|
367 |
componentProps: { |
|
368 |
options: companyType, |
|
369 |
}, |
|
370 |
defaultValue: '1' |
b5c161
|
371 |
}, |
S |
372 |
{ |
|
373 |
component: 'Select', |
|
374 |
label: '时区', |
|
375 |
field: 'timeZone', |
|
376 |
colProps: {span: 16}, |
|
377 |
componentProps: { |
|
378 |
options: timeZone, |
|
379 |
}, |
f353bc
|
380 |
}, |
S |
381 |
{ |
|
382 |
component: 'Select', |
|
383 |
label: '采购意向', |
|
384 |
field: 'purchasingIntention', |
|
385 |
colProps: {span: 16}, |
|
386 |
componentProps: { |
|
387 |
options: [ |
|
388 |
{ |
|
389 |
label: '未知', |
|
390 |
value: '1', |
|
391 |
}, |
|
392 |
{ |
|
393 |
label: '低', |
|
394 |
value: '2', |
|
395 |
}, |
|
396 |
{ |
|
397 |
label: '中', |
|
398 |
value: '3', |
|
399 |
}, |
|
400 |
{ |
|
401 |
label: '高', |
|
402 |
value: '4', |
|
403 |
}, |
|
404 |
], |
|
405 |
}, |
|
406 |
}, |
|
407 |
{ |
|
408 |
component: 'Select', |
|
409 |
label: '年采购额', |
|
410 |
field: 'annualPurchaseAmount', |
|
411 |
colProps: {span: 16}, |
|
412 |
componentProps: { |
|
413 |
options: annualPurchaseAmount, |
|
414 |
}, |
|
415 |
}, |
|
416 |
{ |
b5c161
|
417 |
field: 'productGrouping', |
S |
418 |
component: 'ApiTreeSelect', |
|
419 |
label: '产品分组', |
f353bc
|
420 |
componentProps: { |
b5c161
|
421 |
api: treeOptionsListApi, |
S |
422 |
treeCheckable: true, |
|
423 |
treeCheckStrictly: true, // 父子节点是否不再关联 |
|
424 |
resultField: 'list', |
|
425 |
onChange: (e, v) => { |
|
426 |
console.log('ApiTreeSelect====>:', e, v); |
|
427 |
}, |
f353bc
|
428 |
}, |
S |
429 |
colProps: { |
b5c161
|
430 |
span: 24, |
f353bc
|
431 |
}, |
S |
432 |
}, |
|
433 |
{ |
|
434 |
field: 'detailedAddress', |
|
435 |
component: 'Input', |
|
436 |
label: '详细地址', |
|
437 |
colProps: { |
|
438 |
span: 24, |
|
439 |
}, |
|
440 |
}, |
|
441 |
{ |
|
442 |
field: 'cluesNotes', |
|
443 |
component: 'InputTextArea', |
b5c161
|
444 |
label: '公司备注', |
f353bc
|
445 |
colProps: { |
S |
446 |
span: 24, |
|
447 |
}, |
|
448 |
}, |
|
449 |
]; |