8
8
label-width =" 100px"
9
9
v-loading =" formLoading"
10
10
>
11
- <el-form-item label =" 名称" prop =" name" >
12
- <el-input v-model =" formData.name" placeholder =" 请输入名称" />
13
- </el-form-item >
14
- <el-form-item label =" 条码" prop =" barCode" >
15
- <el-input v-model =" formData.barCode" placeholder =" 请输入条码" />
16
- </el-form-item >
17
- <el-form-item label =" 分类编号" prop =" categoryId" >
18
- <el-input v-model =" formData.categoryId" placeholder =" 请输入分类编号" />
19
- </el-form-item >
20
- <el-form-item label =" 单位编号" prop =" unitId" >
21
- <el-input v-model =" formData.unitId" placeholder =" 请输入单位编号" />
22
- </el-form-item >
23
- <el-form-item label =" 状态" prop =" status" >
24
- <el-radio-group v-model =" formData.status" >
25
- <el-radio label =" 1" >请选择字典生成</el-radio >
26
- </el-radio-group >
27
- </el-form-item >
28
- <el-form-item label =" 规格" prop =" standard" >
29
- <el-input v-model =" formData.standard" placeholder =" 请输入规格" />
30
- </el-form-item >
31
- <el-form-item label =" 备注" prop =" remark" >
32
- <el-input v-model =" formData.remark" placeholder =" 请输入备注" />
33
- </el-form-item >
34
- <el-form-item label =" 保质期天数" prop =" expiryDay" >
35
- <el-input v-model =" formData.expiryDay" placeholder =" 请输入保质期天数" />
36
- </el-form-item >
37
- <el-form-item label =" 基础重量(kg)" prop =" weight" >
38
- <el-input v-model =" formData.weight" placeholder =" 请输入基础重量(kg)" />
39
- </el-form-item >
40
- <el-form-item label =" 采购价格,单位:元" prop =" purchasePrice" >
41
- <el-input v-model =" formData.purchasePrice" placeholder =" 请输入采购价格,单位:元" />
42
- </el-form-item >
43
- <el-form-item label =" 销售价格,单位:元" prop =" salePrice" >
44
- <el-input v-model =" formData.salePrice" placeholder =" 请输入销售价格,单位:元" />
45
- </el-form-item >
46
- <el-form-item label =" 最低价格,单位:元" prop =" minPrice" >
47
- <el-input v-model =" formData.minPrice" placeholder =" 请输入最低价格,单位:元" />
48
- </el-form-item >
11
+ <el-row :gutter =" 20" >
12
+ <el-col :span =" 12" >
13
+ <el-form-item label =" 名称" prop =" name" >
14
+ <el-input v-model =" formData.name" placeholder =" 请输入名称" />
15
+ </el-form-item >
16
+ </el-col >
17
+ <el-col :span =" 12" >
18
+ <el-form-item label =" 条码" prop =" barCode" >
19
+ <el-input v-model =" formData.barCode" placeholder =" 请输入条码" />
20
+ </el-form-item >
21
+ </el-col >
22
+ <el-col :span =" 12" >
23
+ <el-form-item label =" 分类" prop =" categoryId" >
24
+ <el-tree-select
25
+ v-model =" formData.categoryId"
26
+ :data =" categoryList"
27
+ :props =" defaultProps"
28
+ check-strictly
29
+ default-expand-all
30
+ placeholder =" 请选择分类"
31
+ class =" w-1/1"
32
+ />
33
+ </el-form-item >
34
+ </el-col >
35
+ <el-col :span =" 12" >
36
+ <el-form-item label =" 单位" prop =" unitId" >
37
+ <el-select v-model =" formData.unitId" clearable placeholder =" 请选择单位" class =" w-1/1" >
38
+ <el-option
39
+ v-for =" unit in unitList"
40
+ :key =" unit.id"
41
+ :label =" unit.name"
42
+ :value =" unit.id"
43
+ />
44
+ </el-select >
45
+ </el-form-item >
46
+ </el-col >
47
+ <el-col :span =" 12" >
48
+ <el-form-item label =" 状态" prop =" status" >
49
+ <el-radio-group v-model =" formData.status" >
50
+ <el-radio
51
+ v-for =" dict in getIntDictOptions(DICT_TYPE.COMMON_STATUS)"
52
+ :key =" dict.value"
53
+ :label =" dict.value"
54
+ >
55
+ {{ dict.label }}
56
+ </el-radio >
57
+ </el-radio-group >
58
+ </el-form-item >
59
+ </el-col >
60
+ <el-col :span =" 12" >
61
+ <el-form-item label =" 规格" prop =" standard" >
62
+ <el-input v-model =" formData.standard" placeholder =" 请输入规格" />
63
+ </el-form-item >
64
+ </el-col >
65
+ <el-col :span =" 12" >
66
+ <el-form-item label =" 保质期天数" prop =" expiryDay" >
67
+ <el-input-number
68
+ v-model =" formData.expiryDay"
69
+ placeholder =" 请输入保质期天数"
70
+ :min =" 0"
71
+ :precision =" 0"
72
+ class =" !w-1/1"
73
+ />
74
+ </el-form-item >
75
+ </el-col >
76
+ <el-col :span =" 12" >
77
+ <el-form-item label =" 重量(kg)" prop =" weight" >
78
+ <el-input-number
79
+ v-model =" formData.weight"
80
+ placeholder =" 请输入重量(kg)"
81
+ :min =" 0"
82
+ class =" !w-1/1"
83
+ />
84
+ </el-form-item >
85
+ </el-col >
86
+ <el-col :span =" 12" >
87
+ <el-form-item label =" 采购价格" prop =" purchasePrice" >
88
+ <el-input-number
89
+ v-model =" formData.purchasePrice"
90
+ placeholder =" 请输入采购价格,单位:元"
91
+ :min =" 0"
92
+ :precision =" 2"
93
+ class =" !w-1/1"
94
+ />
95
+ </el-form-item >
96
+ </el-col >
97
+ <el-col :span =" 12" >
98
+ <el-form-item label =" 销售价格" prop =" salePrice" >
99
+ <el-input-number
100
+ v-model =" formData.salePrice"
101
+ placeholder =" 请输入销售价格,单位:元"
102
+ :min =" 0"
103
+ :precision =" 2"
104
+ class =" !w-1/1"
105
+ />
106
+ </el-form-item >
107
+ </el-col >
108
+ <el-col :span =" 12" >
109
+ <el-form-item label =" 最低价格" prop =" minPrice" >
110
+ <el-input-number
111
+ v-model =" formData.minPrice"
112
+ placeholder =" 请输入最低价格,单位:元"
113
+ :min =" 0"
114
+ :precision =" 2"
115
+ class =" !w-1/1"
116
+ />
117
+ </el-form-item >
118
+ </el-col >
119
+ <el-col :span =" 24" >
120
+ <el-form-item label =" 备注" prop =" remark" >
121
+ <el-input type =" textarea" v-model =" formData.remark" placeholder =" 请输入备注" />
122
+ </el-form-item >
123
+ </el-col >
124
+ </el-row >
49
125
</el-form >
50
126
<template #footer >
51
127
<el-button @click =" submitForm" type =" primary" :disabled =" formLoading" >确 定</el-button >
54
130
</Dialog >
55
131
</template >
56
132
<script setup lang="ts">
57
- import { ProductApi } from ' @/api/erp/product'
133
+ import { ProductApi , ProductVO } from ' @/api/erp/product'
134
+ import { ProductCategoryApi , ProductCategoryVO } from ' @/api/erp/product/category'
135
+ import { ProductUnitApi , ProductUnitVO } from ' @/api/erp/product/unit'
136
+ import { CommonStatusEnum } from ' @/utils/constants'
137
+ import { defaultProps , handleTree } from ' @/utils/tree'
138
+ import { DICT_TYPE , getIntDictOptions } from ' @/utils/dict'
58
139
59
140
/** ERP 产品 表单 */
60
141
defineOptions ({ name: ' ProductForm' })
@@ -89,6 +170,8 @@ const formRules = reactive({
89
170
status: [{ required: true , message: ' 产品状态不能为空' , trigger: ' blur' }]
90
171
})
91
172
const formRef = ref () // 表单 Ref
173
+ const categoryList = ref <ProductCategoryVO []>([]) // 产品分类列表
174
+ const unitList = ref <ProductUnitVO []>([]) // 产品单位列表
92
175
93
176
/** 打开弹窗 */
94
177
const open = async (type : string , id ? : number ) => {
@@ -105,6 +188,11 @@ const open = async (type: string, id?: number) => {
105
188
formLoading .value = false
106
189
}
107
190
}
191
+ // 产品分类
192
+ const categoryData = await ProductCategoryApi .getProductCategorySimpleList ()
193
+ categoryList .value = handleTree (categoryData , ' id' , ' parentId' )
194
+ // 产品单位
195
+ unitList .value = await ProductUnitApi .getProductUnitSimpleList ()
108
196
}
109
197
defineExpose ({ open }) // 提供 open 方法,用于打开弹窗
110
198
@@ -116,7 +204,7 @@ const submitForm = async () => {
116
204
// 提交请求
117
205
formLoading .value = true
118
206
try {
119
- const data = formData .value as unknown as ProductApi . ProductVO
207
+ const data = formData .value as unknown as ProductVO
120
208
if (formType .value === ' create' ) {
121
209
await ProductApi .createProduct (data )
122
210
message .success (t (' common.createSuccess' ))
@@ -140,7 +228,7 @@ const resetForm = () => {
140
228
barCode: undefined ,
141
229
categoryId: undefined ,
142
230
unitId: undefined ,
143
- status: undefined ,
231
+ status: CommonStatusEnum . ENABLE ,
144
232
standard: undefined ,
145
233
remark: undefined ,
146
234
expiryDay: undefined ,
0 commit comments