完善分类属性

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

View File

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

View File

@ -8,14 +8,19 @@
:inline="true" :inline="true"
label-width="68px" label-width="68px"
> >
<el-form-item label="所属分类" prop="productCategoryId"> <el-form-item label="" prop="productCategoryId">
<el-select <el-select
v-model="queryParams.productCategoryId" v-model="queryParams.productCategoryId"
placeholder="请选择所属分类" placeholder="请选择"
clearable clearable
class="!w-240px" 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-select>
</el-form-item> </el-form-item>
<el-form-item label="属性英文" prop="productPropertiesEn"> <el-form-item label="属性英文" prop="productPropertiesEn">
@ -27,6 +32,21 @@
class="!w-240px" class="!w-240px"
/> />
</el-form-item> </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-form-item label="属性中文" prop="productPropertiesCn">
<el-input <el-input
v-model="queryParams.productPropertiesCn" v-model="queryParams.productPropertiesCn"
@ -73,7 +93,12 @@
clearable clearable
class="!w-240px" 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-select>
</el-form-item> </el-form-item>
<el-form-item label="创建时间" prop="createTime"> <el-form-item label="创建时间" prop="createTime">
@ -114,8 +139,12 @@
<!-- 列表 --> <!-- 列表 -->
<ContentWrap> <ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true"> <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="id" />
<el-table-column label="所属分类" align="center" prop="productCategoryId" /> <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"> <el-table-column label="单数属性" align="center" prop="ifSingleProperty">
<template #default="scope"> <template #default="scope">
<dict-tag :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="scope.row.ifSingleProperty" /> <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" /> <dict-tag :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="scope.row.ifAttachment" />
</template> </template>
</el-table-column> </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 <el-table-column
label="创建时间" label="创建时间"
align="center" align="center"
@ -172,7 +205,7 @@
</ContentWrap> </ContentWrap>
<!-- 表单弹窗添加/修改 --> <!-- 表单弹窗添加/修改 -->
<ProductCategoryPropertiesForm ref="formRef" @success="getList" /> <ProductCategoryPropertiesForm ref="formRef" @success="getList" :product-category-list="productCategoryList" />
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
@ -181,7 +214,10 @@ import { dateFormatter } from '@/utils/formatTime'
import download from '@/utils/download' import download from '@/utils/download'
import { ProductCategoryPropertiesApi, ProductCategoryPropertiesVO } from '@/api/erp/product/category/productcategoryproperties' import { ProductCategoryPropertiesApi, ProductCategoryPropertiesVO } from '@/api/erp/product/category/productcategoryproperties'
import ProductCategoryPropertiesForm from './ProductCategoryPropertiesForm.vue' import ProductCategoryPropertiesForm from './ProductCategoryPropertiesForm.vue'
import { ProductCategoryApi , ProductCategoryVO } from '@/api/erp/product/category'
/** ERP 产品分类的数组 */
const productCategoryList = ref<ProductCategoryVO[]>([])
/** ERP 产品分类属性 列表 */ /** ERP 产品分类属性 列表 */
defineOptions({ name: 'ProductCategoryProperties' }) 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(() => { onMounted(() => {
getList() getList()
searchProductCategory()
}) })
</script> </script>