完善分类属性

pull/744/head
没钱 2025-03-06 18:59:04 +08:00
parent eb450b5c75
commit 6ee1941db5
3 changed files with 102 additions and 23 deletions

View File

@ -11,7 +11,7 @@
<el-form-item label="类别" prop="productCategoryId">
<el-select
v-model="queryParams.productCategoryId"
placeholder="请选择故障部位"
placeholder="请选择类别"
clearable
class="!w-240px"
>

View File

@ -9,48 +9,60 @@
>
<el-form-item label="所属分类" prop="productCategoryId">
<el-select v-model="formData.productCategoryId" placeholder="请选择所属分类">
<el-option label="请选择字典生成" value="" />
<el-option
v-for="dict in productCategoryList"
:key="dict.id"
:label="dict.name"
:value="dict.id"
/>
</el-select>
</el-form-item>
<el-form-item label="单数属性" prop="ifSingleProperty">
<el-checkbox-group v-model="formData.ifSingleProperty">
<el-checkbox
<el-radio-group v-model="formData.ifSingleProperty">
<el-radio
v-for="dict in getBoolDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-checkbox-group>
</el-radio-group>
</el-form-item>
<el-form-item label="设备属性英文" prop="productPropertiesEn">
<el-form-item label="属性英文" prop="productPropertiesEn">
<el-input v-model="formData.productPropertiesEn" placeholder="请输入设备属性英文" />
</el-form-item>
<el-form-item label="设备属性中文" prop="productPropertiesCn">
<el-form-item label="属性中文" prop="productPropertiesCn">
<el-input v-model="formData.productPropertiesCn" placeholder="请输入设备属性中文" />
</el-form-item>
<el-form-item label="必填" prop="ifRequired">
<el-select v-model="formData.ifRequired" placeholder="请选择是否必填">
<el-option
<el-radio-group v-model="formData.ifRequired">
<el-radio
v-for="dict in getBoolDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-radio-group>
</el-form-item>
<el-form-item label="配件" prop="ifAttachment">
<el-select v-model="formData.ifAttachment" placeholder="请选择是否配件">
<el-option
<el-radio-group v-model="formData.ifAttachment">
<el-radio
v-for="dict in getBoolDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-radio-group>
</el-form-item>
<el-form-item label="记录sn" prop="ifSn">
<el-radio-group v-model="formData.ifSn">
<el-radio value="1">请选择字典生成</el-radio>
<el-radio
v-for="dict in getBoolDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-radio-group>
</el-form-item>
</el-form>
@ -61,9 +73,16 @@
</Dialog>
</template>
<script setup lang="ts">
import { defineProps } from 'vue';
import { getBoolDictOptions, DICT_TYPE } from '@/utils/dict'
import { ProductCategoryPropertiesApi, ProductCategoryPropertiesVO } from '@/api/erp/product/category/productcategoryproperties'
import { ProductCategoryVO } from '@/api/erp/product/category'
/** 从父组件取productCategoryList数组*/
defineProps<{
productCategoryList: ProductCategoryVO[]
}
>();
/** ERP 产品分类属性 表单 */
defineOptions({ name: 'ProductCategoryPropertiesForm' })
@ -89,7 +108,9 @@ const formRules = reactive({
ifSingleProperty: [{ required: true, message: '单数属性不能为空', trigger: 'blur' }],
ifRequired: [{ required: true, message: '必填不能为空', trigger: 'change' }],
ifAttachment: [{ required: true, message: '配件不能为空', trigger: 'change' }],
ifSn: [{ required: true, message: '记录sn不能为空', trigger: 'blur' }]
ifSn: [{ required: true, message: '记录sn不能为空', trigger: 'blur' }],
productPropertiesCn : [{ required: true, message: '属性中文不能为空', trigger: 'blur' }],
productPropertiesEn : [{ required: true, message: '属性英文不能为空', trigger: 'blur' }]
})
const formRef = ref() // Ref

View File

@ -8,14 +8,19 @@
:inline="true"
label-width="68px"
>
<el-form-item label="所属分类" prop="productCategoryId">
<el-form-item label="" prop="productCategoryId">
<el-select
v-model="queryParams.productCategoryId"
placeholder="请选择所属分类"
placeholder="请选择"
clearable
class="!w-240px"
>
<el-option label="请选择字典生成" value="" />
<el-option
v-for="dict in productCategoryList"
:key="dict.id"
:label="dict.name"
:value="dict.id"
/>
</el-select>
</el-form-item>
<el-form-item label="属性英文" prop="productPropertiesEn">
@ -27,6 +32,21 @@
class="!w-240px"
/>
</el-form-item>
<el-form-item label="单数属性" prop="ifSingleProperty">
<el-select
v-model="queryParams.ifSingleProperty"
placeholder="请选择单身属性"
clearable
class="!w-240px"
>
<el-option
v-for="dict in getBoolDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="属性中文" prop="productPropertiesCn">
<el-input
v-model="queryParams.productPropertiesCn"
@ -73,7 +93,12 @@
clearable
class="!w-240px"
>
<el-option label="请选择字典生成" value="" />
<el-option
v-for="dict in getBoolDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="创建时间" prop="createTime">
@ -114,8 +139,12 @@
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="分类属性编号" align="center" prop="id" />
<el-table-column label="所属分类" align="center" prop="productCategoryId" />
<el-table-column label="编号" align="center" prop="id" />
<el-table-column label="所属分类" align="center" prop="productCategoryId">
<template #default="scope">
{{ getCategoryName(scope.row.productCategoryId) }}
</template>
</el-table-column>
<el-table-column label="单数属性" align="center" prop="ifSingleProperty">
<template #default="scope">
<dict-tag :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="scope.row.ifSingleProperty" />
@ -133,7 +162,11 @@
<dict-tag :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="scope.row.ifAttachment" />
</template>
</el-table-column>
<el-table-column label="记录sn" align="center" prop="ifSn" />
<el-table-column label="记录sn" align="center" prop="ifSn">
<template #default="scope">
<dict-tag :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="scope.row.ifRequired" />
</template>
</el-table-column>
<el-table-column
label="创建时间"
align="center"
@ -172,7 +205,7 @@
</ContentWrap>
<!-- 表单弹窗添加/修改 -->
<ProductCategoryPropertiesForm ref="formRef" @success="getList" />
<ProductCategoryPropertiesForm ref="formRef" @success="getList" :product-category-list="productCategoryList" />
</template>
<script setup lang="ts">
@ -181,7 +214,10 @@ import { dateFormatter } from '@/utils/formatTime'
import download from '@/utils/download'
import { ProductCategoryPropertiesApi, ProductCategoryPropertiesVO } from '@/api/erp/product/category/productcategoryproperties'
import ProductCategoryPropertiesForm from './ProductCategoryPropertiesForm.vue'
import { ProductCategoryApi , ProductCategoryVO } from '@/api/erp/product/category'
/** ERP 产品分类的数组 */
const productCategoryList = ref<ProductCategoryVO[]>([])
/** ERP 产品分类属性 列表 */
defineOptions({ name: 'ProductCategoryProperties' })
@ -264,8 +300,30 @@ const handleExport = async () => {
}
}
/** 根据用户输入搜索类别 */
const searchProductCategory = async () => {
//param
const params = {
status: 0
}
try {
productCategoryList.value = await ProductCategoryApi.getProductCategoryList(params)
} catch (error) {
productCategoryList.value = []
}
}
/** 根据 productCategoryId 获取类别名称 */
const getCategoryName = (id: number | undefined) => {
if (!id) return ''
const category = productCategoryList.value.find(item => item.id === id)
return category ? category.name : '' // name
}
/** 初始化 **/
onMounted(() => {
getList()
searchProductCategory()
})
</script>