1
1
<template >
2
2
<Dialog :title =" dialogTitle" v-model =" dialogVisible" >
3
- <!-- TODO @zange:改成每行两个哈; -->
4
3
<el-form
5
4
ref =" formRef"
6
5
:model =" formData"
15
14
</el-form-item >
16
15
</el-col >
17
16
<el-col :span =" 12" >
18
- <el-form-item label =" 产品编码" prop =" no" >
19
- <el-input v-model =" formData.no" placeholder =" 请输入产品编码" />
20
- </el-form-item >
21
- </el-col >
22
- </el-row >
23
- <el-row >
24
- <el-col :span =" 12" >
25
- <el-form-item label =" 单位" prop =" unit" >
26
- <el-select v-model =" formData.unit" class =" w-1/1" placeholder =" 请选择单位" >
17
+ <el-form-item label =" 负责人" prop =" ownerUserId" >
18
+ <el-select
19
+ v-model =" formData.ownerUserId"
20
+ placeholder =" 请选择负责人"
21
+ :disabled =" formData.id"
22
+ class =" w-1/1"
23
+ >
27
24
<el-option
28
- v-for =" dict in getIntDictOptions(DICT_TYPE.PRODUCT_UNIT) "
29
- :key =" dict.value "
30
- :label =" dict.label "
31
- :value =" dict.value "
25
+ v-for =" user in userList "
26
+ :key =" user.id "
27
+ :label =" user.nickname "
28
+ :value =" user.id "
32
29
/>
33
30
</el-select >
34
31
</el-form-item >
35
32
</el-col >
36
33
<el-col :span =" 12" >
37
- <el-form-item label =" 价格" prop =" price" >
38
- <el-input type =" number" v-model =" formData.price" placeholder =" 请输入价格" />
34
+ <el-form-item label =" 产品类型" prop =" categoryId" >
35
+ <el-cascader
36
+ v-model =" formData.categoryId"
37
+ :options =" productCategoryList"
38
+ :props =" defaultProps"
39
+ class =" w-1/1"
40
+ clearable
41
+ placeholder =" 请选择产品类型"
42
+ filterable
43
+ />
39
44
</el-form-item >
40
45
</el-col >
41
- </el-row >
42
- <el-row >
43
46
<el-col :span =" 12" >
44
- <el-form-item label =" 状态 " prop =" status " >
45
- <el-select v-model =" formData.status " placeholder =" 请选择状态 " >
47
+ <el-form-item label =" 产品单位 " prop =" unit " >
48
+ <el-select v-model =" formData.unit " class = " w-1/1 " placeholder =" 请选择单位 " >
46
49
<el-option
47
- v-for =" dict in getIntDictOptions(DICT_TYPE.CRM_PRODUCT_STATUS )"
50
+ v-for =" dict in getIntDictOptions(DICT_TYPE.PRODUCT_UNIT )"
48
51
:key =" dict.value"
49
52
:label =" dict.label"
50
53
:value =" dict.value"
53
56
</el-form-item >
54
57
</el-col >
55
58
<el-col :span =" 12" >
56
- <el-form-item label =" 产品分类" prop =" categoryId" >
57
- <el-cascader
58
- v-model =" formData.categoryId"
59
- :options =" productCategoryList"
60
- :props =" defaultProps"
61
- class =" w-1/1"
62
- clearable
63
- placeholder =" 请选择产品分类"
64
- filterable
59
+ <el-form-item label =" 产品编码" prop =" no" >
60
+ <el-input v-model =" formData.no" placeholder =" 请输入产品编码" />
61
+ </el-form-item >
62
+ </el-col >
63
+ <el-col :span =" 12" >
64
+ <el-form-item label =" 价格" prop =" price" >
65
+ <el-input
66
+ type =" number"
67
+ v-model =" formData.price"
68
+ placeholder =" 请输入价格"
69
+ :min =" 0"
70
+ :precision =" 2"
71
+ :step =" 0.1"
65
72
/>
66
73
</el-form-item >
67
74
</el-col >
68
- </el-row >
69
- <el-row >
70
75
<el-col :span =" 12" >
71
76
<el-form-item label =" 产品描述" prop =" description" >
72
77
<el-input v-model =" formData.description" placeholder =" 请输入产品描述" />
73
78
</el-form-item >
74
79
</el-col >
75
80
<el-col :span =" 12" >
76
- <el-form-item label =" 负责人" prop =" ownerUserId" >
77
- <el-select
78
- v-model =" formData.ownerUserId"
79
- placeholder =" 请选择负责人"
80
- :disabled =" formData.id"
81
- >
81
+ <el-form-item label =" 上架状态" prop =" status" >
82
+ <el-select v-model =" formData.status" placeholder =" 请选择状态" class =" w-1/1" >
82
83
<el-option
83
- v-for =" user in userList "
84
- :key =" user.id "
85
- :label =" user.nickname "
86
- :value =" user.id "
84
+ v-for =" dict in getIntDictOptions(DICT_TYPE.CRM_PRODUCT_STATUS) "
85
+ :key =" dict.value "
86
+ :label =" dict.label "
87
+ :value =" dict.value "
87
88
/>
88
89
</el-select >
89
90
</el-form-item >
@@ -103,6 +104,7 @@ import * as ProductCategoryApi from '@/api/crm/product/productCategory'
103
104
import { defaultProps , handleTree } from ' @/utils/tree'
104
105
import { getSimpleUserList , UserVO } from ' @/api/system/user'
105
106
import { useUserStore } from ' @/store/modules/user'
107
+ import { fenToYuan , yuanToFen } from ' @/utils'
106
108
107
109
defineOptions ({ name: ' CrmProductForm' })
108
110
@@ -119,19 +121,18 @@ const formData = ref({
119
121
name: undefined ,
120
122
no: undefined ,
121
123
unit: undefined ,
122
- price: undefined ,
124
+ price: Number ( undefined ) ,
123
125
status: undefined ,
124
126
categoryId: undefined ,
125
127
description: undefined ,
126
- ownerUserId: undefined
128
+ ownerUserId: - 1
127
129
})
128
130
const formRules = reactive ({
129
131
name: [{ required: true , message: ' 产品名称不能为空' , trigger: ' blur' }],
130
132
no: [{ required: true , message: ' 产品编码不能为空' , trigger: ' blur' }],
131
133
status: [{ required: true , message: ' 状态不能为空' , trigger: ' change' }],
132
134
categoryId: [{ required: true , message: ' 产品分类ID不能为空' , trigger: ' blur' }],
133
135
ownerUserId: [{ required: true , message: ' 负责人不能为空' , trigger: ' blur' }],
134
- unit: [{ required: true , message: ' 单位不能为空' , trigger: ' blur' }],
135
136
price: [{ required: true , message: ' 价格不能为空' , trigger: ' blur' }]
136
137
})
137
138
@@ -143,22 +144,23 @@ const open = async (type: string, id?: number) => {
143
144
dialogTitle .value = t (' action.' + type )
144
145
formType .value = type
145
146
resetForm ()
146
- formData .value .ownerUserId = userId
147
147
// 修改时,设置数据
148
148
if (id ) {
149
149
formLoading .value = true
150
150
try {
151
151
formData .value = await ProductApi .getProduct (id )
152
+ formData .value .price = fenToYuan (formData .value .price )
152
153
} finally {
153
154
formLoading .value = false
154
155
}
156
+ } else {
157
+ formData .value .ownerUserId = userId
155
158
}
156
159
}
157
160
defineExpose ({ open }) // 提供 open 方法,用于打开弹窗
158
161
159
162
/** 提交表单 */
160
163
const emit = defineEmits ([' success' ]) // 定义 success 事件,用于操作成功后的回调
161
-
162
164
const submitForm = async () => {
163
165
// 校验表单
164
166
if (! formRef ) return
@@ -167,7 +169,10 @@ const submitForm = async () => {
167
169
// 提交请求
168
170
formLoading .value = true
169
171
try {
170
- const data = formData .value as unknown as ProductApi .ProductVO
172
+ const data = {
173
+ ... formData .value ,
174
+ price: yuanToFen (formData .value .price )
175
+ } as unknown as ProductApi .ProductVO
171
176
if (formType .value === ' create' ) {
172
177
await ProductApi .createProduct (data )
173
178
message .success (t (' common.createSuccess' ))
@@ -190,20 +195,23 @@ const resetForm = () => {
190
195
name: undefined ,
191
196
no: undefined ,
192
197
unit: undefined ,
193
- price: undefined ,
198
+ price: Number ( undefined ) ,
194
199
status: undefined ,
195
200
categoryId: undefined ,
196
201
description: undefined ,
197
- ownerUserId: undefined
202
+ ownerUserId: - 1
198
203
}
199
204
formRef .value ?.resetFields ()
200
205
}
206
+
207
+ /** 初始化 */
201
208
const productCategoryList = ref <any []>([]) // 产品分类树
202
209
const userList = ref <UserVO []>([]) // 系统用户
203
-
204
210
onMounted (async () => {
211
+ // 产品分类树
205
212
const data = await ProductCategoryApi .getProductCategoryList ({})
206
213
productCategoryList .value = handleTree (data , ' id' , ' parentId' )
207
- userList .value = await getSimpleUserList ()
214
+ // 系统用户列表
215
+ userList .value = await getSimpleUserList () // TODO 芋艿:替换成用户组件
208
216
})
209
217
</script >
0 commit comments