1
1
<template >
2
- <Dialog v-model =" dialogVisible" :title =" dialogTitle" width =" 70% " >
2
+ <Dialog v-model =" dialogVisible" :title =" dialogTitle" width =" 820 " >
3
3
<el-form
4
4
ref =" formRef"
5
5
v-loading =" formLoading"
8
8
label-width =" 110px"
9
9
>
10
10
<el-row :gutter =" 20" >
11
- <el-col :span =" 24" class =" mb-10px" >
12
- <CardTitle title =" 基本信息" />
13
- </el-col >
14
- <el-col :span =" 12" >
15
- <el-form-item label =" 合同名称" prop =" name" >
16
- <el-input v-model =" formData.name" placeholder =" 请输入合同名称" />
17
- </el-form-item >
18
- </el-col >
19
11
<el-col :span =" 12" >
20
12
<el-form-item label =" 合同编号" prop =" no" >
21
13
<el-input v-model =" formData.no" placeholder =" 请输入合同编号" />
22
14
</el-form-item >
23
15
</el-col >
24
16
<el-col :span =" 12" >
25
- <el-form-item label =" 客户" prop =" customerId" >
26
- <el-select v-model =" formData.customerId" >
27
- <el-option
28
- v-for =" item in customerList"
29
- :key =" item.id"
30
- :label =" item.name"
31
- :value =" item.id!"
32
- />
33
- </el-select >
17
+ <el-form-item label =" 合同名称" prop =" name" >
18
+ <el-input v-model =" formData.name" placeholder =" 请输入合同名称" />
34
19
</el-form-item >
35
20
</el-col >
36
21
<el-col :span =" 12" >
37
- <el-form-item label =" 客户签约人 " prop =" contactId " >
38
- <el-select v-model =" formData.contactId " :disabled = " !formData. customerId" >
22
+ <el-form-item label =" 客户名称 " prop =" customerId " >
23
+ <el-select v-model =" formData.customerId" >
39
24
<el-option
40
- v-for =" item in getContactOptions "
25
+ v-for =" item in customerList "
41
26
:key =" item.id"
42
27
:label =" item.name"
43
28
:value =" item.id!"
44
29
/>
45
30
</el-select >
46
31
</el-form-item >
47
32
</el-col >
48
- <el-col :span =" 12" >
49
- <el-form-item label =" 公司签约人" prop =" signUserId" >
50
- <el-select v-model =" formData.signUserId" >
51
- <el-option
52
- v-for =" item in userList"
53
- :key =" item.id"
54
- :label =" item.nickname"
55
- :value =" item.id!"
56
- />
57
- </el-select >
58
- </el-form-item >
59
- </el-col >
60
- <el-col :span =" 12" >
61
- <el-form-item label =" 负责人" prop =" ownerUserId" >
62
- <el-select v-model =" formData.ownerUserId" >
63
- <el-option
64
- v-for =" item in userList"
65
- :key =" item.id"
66
- :label =" item.nickname"
67
- :value =" item.id!"
68
- />
69
- </el-select >
70
- </el-form-item >
71
- </el-col >
72
33
<el-col :span =" 12" >
73
34
<el-form-item label =" 商机名称" prop =" businessId" >
74
35
<el-select v-model =" formData.businessId" >
81
42
</el-select >
82
43
</el-form-item >
83
44
</el-col >
84
- <el-col :span =" 12" >
85
- <el-form-item label =" 合同金额(元)" prop =" price" >
86
- <el-input v-model =" formData.price" placeholder =" 请输入合同金额" />
87
- </el-form-item >
88
- </el-col >
89
45
<el-col :span =" 12" >
90
46
<el-form-item label =" 下单日期" prop =" orderDate" >
91
47
<el-date-picker
96
52
/>
97
53
</el-form-item >
98
54
</el-col >
55
+ <el-col :span =" 12" >
56
+ <el-form-item label =" 合同金额" prop =" price" >
57
+ <el-input v-model =" formData.price" placeholder =" 请输入合同金额" />
58
+ </el-form-item >
59
+ </el-col >
99
60
<el-col :span =" 12" >
100
61
<el-form-item label =" 开始时间" prop =" startTime" >
101
62
<el-date-picker
116
77
/>
117
78
</el-form-item >
118
79
</el-col >
80
+ <el-col :span =" 12" >
81
+ <el-form-item label =" 公司签约人" prop =" signUserId" >
82
+ <el-select v-model =" formData.signUserId" >
83
+ <el-option
84
+ v-for =" item in userList"
85
+ :key =" item.id"
86
+ :label =" item.nickname"
87
+ :value =" item.id!"
88
+ />
89
+ </el-select >
90
+ </el-form-item >
91
+ </el-col >
92
+ <el-col :span =" 12" >
93
+ <el-form-item label =" 客户签约人" prop =" contactId" >
94
+ <el-select v-model =" formData.contactId" :disabled =" !formData.customerId" >
95
+ <el-option
96
+ v-for =" item in getContactOptions"
97
+ :key =" item.id"
98
+ :label =" item.name"
99
+ :value =" item.id!"
100
+ />
101
+ </el-select >
102
+ </el-form-item >
103
+ </el-col >
104
+ <el-col :span =" 12" >
105
+ <el-form-item label =" 负责人" prop =" ownerUserId" >
106
+ <el-select v-model =" formData.ownerUserId" >
107
+ <el-option
108
+ v-for =" item in userList"
109
+ :key =" item.id"
110
+ :label =" item.nickname"
111
+ :value =" item.id!"
112
+ />
113
+ </el-select >
114
+ </el-form-item >
115
+ </el-col >
119
116
<el-col :span =" 24" >
120
117
<el-form-item label =" 备注" prop =" remark" >
121
118
<el-input
126
123
/>
127
124
</el-form-item >
128
125
</el-col >
126
+ <!-- TODO @puhui999:productItems 改成 products 会更好点;因为它不是 item 哈 -->
129
127
<el-col :span =" 24" >
130
128
<el-form-item label =" 产品列表" prop =" productList" >
131
129
<ProductList v-model =" formData.productItems" />
132
130
</el-form-item >
133
131
</el-col >
134
132
<el-col :span =" 12" >
135
133
<el-form-item label =" 整单折扣(%)" prop =" discountPercent" >
136
- <el-input v-model =" formData.discountPercent" placeholder =" 请输入整单折扣" />
134
+ <el-input-number
135
+ v-model =" formData.discountPercent"
136
+ :min =" 0"
137
+ :max =" 100"
138
+ :precision =" 0"
139
+ placeholder =" 请输入整单折扣"
140
+ class =" !w-100%"
141
+ />
137
142
</el-form-item >
138
143
</el-col >
139
144
<el-col :span =" 12" >
140
145
<el-form-item label =" 产品总金额(元)" prop =" productPrice" >
141
- {{ floatToFixed2 (formData.productPrice) }}
146
+ {{ fenToYuan (formData.productPrice) }}
142
147
</el-form-item >
143
148
</el-col >
144
- <el-col :span =" 24" >
145
- <CardTitle class =" mb-10px" title =" 审批信息" />
146
- </el-col >
147
- <!-- TODO 芋艿:需要后面在 review 下,目前看不到信息 -->
148
- <el-col :span =" 12" >
149
- <el-button
150
- class =" m-20px"
151
- link
152
- type =" primary"
153
- @click =" BPMLModelRef?.handleBpmnDetail('contract-approve')"
154
- >
155
- 查看工作流
156
- </el-button >
157
- </el-col >
158
149
</el-row >
159
150
</el-form >
160
151
<template #footer >
161
152
<el-button :disabled =" formLoading" type =" primary" @click =" submitForm" >保存</el-button >
162
153
<el-button @click =" dialogVisible = false" >取 消</el-button >
163
154
</template >
164
155
</Dialog >
165
- <BPMLModel ref =" BPMLModelRef" />
166
156
</template >
167
157
<script lang="ts" setup>
168
158
import * as CustomerApi from ' @/api/crm/customer'
@@ -171,8 +161,7 @@ import * as UserApi from '@/api/system/user'
171
161
import * as ContactApi from ' @/api/crm/contact'
172
162
import * as BusinessApi from ' @/api/crm/business'
173
163
import ProductList from ' ./components/ProductList.vue'
174
- import BPMLModel from ' @/views/crm/contract/components/BPMLModel.vue'
175
- import { floatToFixed2 } from ' @/utils'
164
+ import { fenToYuan } from ' @/utils'
176
165
177
166
const { t } = useI18n () // 国际化
178
167
const message = useMessage () // 消息弹窗
@@ -190,9 +179,8 @@ const formRules = reactive({
190
179
no: [{ required: true , message: ' 合同编号不能为空' , trigger: ' blur' }]
191
180
})
192
181
const formRef = ref () // 表单 Ref
193
- const BPMLModelRef = ref <InstanceType <typeof BPMLModel >>() // TODO @puhui999:这个变量不太对;另外,可以不做 bpm model 窗口,而是可以点击跳转到工作流详情里;
194
182
195
- // 监听合同产品变化,计算合同产品总价
183
+ /** 监听合同产品变化,计算合同产品总价 */
196
184
watch (
197
185
() => formData .value .productItems ,
198
186
(val ) => {
@@ -227,7 +215,6 @@ const open = async (type: string, id?: number) => {
227
215
}
228
216
await getAllApi ()
229
217
}
230
-
231
218
defineExpose ({ open }) // 提供 open 方法,用于打开弹窗
232
219
233
220
/** 提交表单 */
0 commit comments