feat:模具组-产品型号多选

main
黄伟杰 2 weeks ago
parent 9e2bcf038d
commit 4330bbb9ce

@ -22,8 +22,8 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item :label="t('MoldManagement.MoldBrandFormPage.productName')" prop="productId"> <el-form-item :label="t('MoldManagement.MoldBrandFormPage.productName')" prop="productIds">
<el-select v-model="formData.productId" filterable clearable :placeholder="t('MoldManagement.MoldBrandFormPage.placeholderProduct')" class="w-1/1" @change="handleProductChange"> <el-select v-model="formData.productIds" multiple filterable clearable :placeholder="t('MoldManagement.MoldBrandFormPage.placeholderProduct')" class="w-1/1" @change="handleProductChange">
<el-option v-for="item in productList" :key="item.id" :label="item.name" :value="item.id" /> <el-option v-for="item in productList" :key="item.id" :label="item.name" :value="item.id" />
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -153,7 +153,7 @@ const formRules = reactive({
code: [{ validator: validateCode, trigger: 'blur' }], code: [{ validator: validateCode, trigger: 'blur' }],
name: [{ required: true, message: t('MoldManagement.MoldBrandFormPage.validatorNameRequired'), trigger: 'blur' }], name: [{ required: true, message: t('MoldManagement.MoldBrandFormPage.validatorNameRequired'), trigger: 'blur' }],
moldType: [{ required: true, message: t('MoldManagement.MoldBrandFormPage.validatorNameRequired'), trigger: 'blur' }], moldType: [{ required: true, message: t('MoldManagement.MoldBrandFormPage.validatorNameRequired'), trigger: 'blur' }],
productId: [{ required: true, message: t('MoldManagement.MoldBrandFormPage.validatorProductRequired'), trigger: 'change' }], productIds: [{ required: true, message: t('MoldManagement.MoldBrandFormPage.validatorProductRequired'), trigger: 'change' }],
moldSize: [{ required: true, message: t('MoldManagement.MoldBrandFormPage.validatorMoldSizeRequired'), trigger: 'blur' }], moldSize: [{ required: true, message: t('MoldManagement.MoldBrandFormPage.validatorMoldSizeRequired'), trigger: 'blur' }],
isEnable: [{ required: true, message: t('MoldManagement.MoldBrandFormPage.validatorIsEnableRequired'), trigger: 'change' }] isEnable: [{ required: true, message: t('MoldManagement.MoldBrandFormPage.validatorIsEnableRequired'), trigger: 'change' }]
}) })
@ -181,10 +181,11 @@ const resetForm = () => {
formRef.value?.resetFields() formRef.value?.resetFields()
} }
const handleProductChange = (value?: number) => { const handleProductChange = (value?: number[] | number) => {
const current = productList.value.find((item) => item.id === value) const ids = Array.isArray(value) ? value : value ? [value] : []
formData.value.productName = current?.name || '' formData.value.productIds = ids
formData.value.productIds = value ? [value] : [] const names = productList.value.filter((item) => ids.includes(item.id)).map((p) => p.name)
formData.value.productName = names.join(',')
} }
const open = async (type: string, id?: number) => { const open = async (type: string, id?: number) => {
@ -220,16 +221,12 @@ const emit = defineEmits(['success'])
const submitForm = async () => { const submitForm = async () => {
await formRef.value.validate() await formRef.value.validate()
formLoading.value = true formLoading.value = true
try { try {
handleProductChange(formData.value.productId) handleProductChange(formData.value.productIds)
const payload: MoldBrandVO = { const payload: MoldBrandVO = {
...formData.value, ...formData.value,
version: addVersionPrefix(formData.value.version), version: addVersionPrefix(formData.value.version),
productIds: Array.isArray(formData.value.productIds) productIds: Array.isArray(formData.value.productIds) ? formData.value.productIds : [],
? formData.value.productIds
: formData.value.productId
? [formData.value.productId]
: [],
isEnable: Boolean(formData.value.isEnable) isEnable: Boolean(formData.value.isEnable)
} }
if (formType.value === 'create') { if (formType.value === 'create') {

@ -22,8 +22,8 @@
:value="Number(dict.value)" /> :value="Number(dict.value)" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item prop="productId"> <el-form-item prop="productIds">
<el-select v-model="queryParams.productId" :placeholder="t('MoldManagement.MoldBrandPage.placeholderProduct')" <el-select v-model="queryParams.productIds" multiple :placeholder="t('MoldManagement.MoldBrandPage.placeholderProduct')"
clearable filterable class="!w-180px"> clearable filterable class="!w-180px">
<el-option v-for="product in productOptions" :key="product.id" :label="product.name" :value="product.id" /> <el-option v-for="product in productOptions" :key="product.id" :label="product.name" :value="product.id" />
</el-select> </el-select>
@ -185,7 +185,7 @@ const queryParams = reactive({
keyword: undefined as string | undefined, keyword: undefined as string | undefined,
code: undefined as string | undefined, code: undefined as string | undefined,
name: undefined as string | undefined, name: undefined as string | undefined,
productId: undefined as number | undefined, productIds: [] as number[],
productName: undefined as string | undefined, productName: undefined as string | undefined,
status: undefined as number | undefined, status: undefined as number | undefined,
currentDevice: undefined as string | undefined, currentDevice: undefined as string | undefined,
@ -244,8 +244,8 @@ const getList = async () => {
loading.value = true loading.value = true
try { try {
parseKeyword() parseKeyword()
const product = productOptions.value.find((item) => item.id === queryParams.productId) const selected = productOptions.value.filter((item) => (queryParams.productIds || []).includes(item.id))
queryParams.productName = product?.name queryParams.productName = selected.map((p) => p.name).join(',')
const data = await MoldBrandApi.getMoldBrandPage({ const data = await MoldBrandApi.getMoldBrandPage({
...queryParams, ...queryParams,
currentDevice: queryParams.currentDevice currentDevice: queryParams.currentDevice
@ -265,6 +265,8 @@ const resetQuery = () => {
queryFormRef.value?.resetFields() queryFormRef.value?.resetFields()
currentStatusKey.value = 'all' currentStatusKey.value = 'all'
queryParams.status = undefined queryParams.status = undefined
queryParams.productIds = []
queryParams.productName = undefined
handleQuery() handleQuery()
} }

Loading…
Cancel
Save