Sanakey
3 天以前 b5c1614fe473330ceca8b7cff0f1802e19bd5039
提交 | 用户 | 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 ];