1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
| import type { Ref } from 'vue';
|
| import type { VbenFormSchema } from '#/adapter/form';
| import type { CrmBusinessApi } from '#/api/crm/business';
| import type { DescriptionItemSchema } from '#/components/description';
|
| import { erpPriceInputFormatter, formatDateTime } from '../../../../packages/utils/src';
|
| import {
| DEFAULT_STATUSES,
| getBusinessStatusSimpleList,
| } from '#/api/crm/business/status';
|
| /** 详情页的字段 */
| export function useDetailSchema(): DescriptionItemSchema[] {
| return [
| {
| field: 'customerName',
| label: '客户名称',
| },
| {
| field: 'totalPrice',
| label: '商机金额(元)',
| render: (val) => erpPriceInputFormatter(val),
| },
| {
| field: 'statusTypeName',
| label: '商机组',
| },
| {
| field: 'ownerUserName',
| label: '负责人',
| },
| {
| field: 'createTime',
| label: '创建时间',
| render: (val) => formatDateTime(val) as string,
| },
| ];
| }
|
| /** 详情页的基础字段 */
| export function useDetailBaseSchema(): DescriptionItemSchema[] {
| return [
| {
| field: 'name',
| label: '商机名称',
| },
| {
| field: 'customerName',
| label: '客户名称',
| },
| {
| field: 'totalPrice',
| label: '商机金额(元)',
| render: (val) => erpPriceInputFormatter(val),
| },
| {
| field: 'dealTime',
| label: '预计成交日期',
| render: (val) => formatDateTime(val) as string,
| },
| {
| field: 'contactNextTime',
| label: '下次联系时间',
| render: (val) => formatDateTime(val) as string,
| },
| {
| field: 'statusTypeName',
| label: '商机状态组',
| },
| {
| field: 'statusName',
| label: '商机阶段',
| },
| {
| field: 'remark',
| label: '备注',
| },
| ];
| }
|
| /** 商机状态更新表单 */
| export function useStatusFormSchema(
| formData: Ref<CrmBusinessApi.Business | undefined>,
| ): VbenFormSchema[] {
| return [
| {
| fieldName: 'id',
| component: 'Input',
| dependencies: {
| triggerFields: [''],
| show: () => false,
| },
| },
| {
| fieldName: 'statusId',
| label: '商机状态',
| component: 'Input',
| dependencies: {
| triggerFields: [''],
| show: () => false,
| },
| },
| {
| fieldName: 'endStatus',
| label: '商机状态',
| component: 'Input',
| dependencies: {
| triggerFields: [''],
| show: () => false,
| },
| },
| {
| fieldName: 'status',
| label: '商机阶段',
| component: 'Select',
| dependencies: {
| triggerFields: [''],
| async componentProps() {
| const statusList = await getBusinessStatusSimpleList(
| formData.value?.statusTypeId ?? 0,
| );
| const statusOptions = statusList.map((item) => ({
| label: `${item.name}(赢单率:${item.percent}%)`,
| value: item.id,
| }));
| const options = DEFAULT_STATUSES.map((item) => ({
| label: `${item.name}(赢单率:${item.percent}%)`,
| value: item.endStatus,
| }));
| statusOptions.push(...options);
| return {
| options: statusOptions,
| };
| },
| },
| rules: 'required',
| },
| ];
| }
|
|