feat:采集点类型-添加分类顺序

main
黄伟杰 1 month ago
parent cd2172a46a
commit f0e3fe1e8b

@ -5,6 +5,7 @@ export interface DeviceAttributeTypeVO {
id: number // ID id: number // ID
code: string // 分类编码 code: string // 分类编码
name: string // 分类名称 name: string // 分类名称
sort: number // 分类顺序
remark: string // 备注 remark: string // 备注
} }
@ -31,8 +32,8 @@ export const DeviceAttributeTypeApi = {
}, },
// 删除采集点分类 // 删除采集点分类
deleteDeviceAttributeType: async (id: number) => { deleteDeviceAttributeType: async (ids: string) => {
return await request.delete({ url: `/iot/device-attribute-type/delete?id=` + id }) return await request.delete({ url: `/iot/device-attribute-type/delete?ids=` + ids })
}, },
// 导出采集点分类 Excel // 导出采集点分类 Excel
@ -40,8 +41,8 @@ export const DeviceAttributeTypeApi = {
return await request.download({ url: `/iot/device-attribute-type/export-excel`, params }) return await request.download({ url: `/iot/device-attribute-type/export-excel`, params })
}, },
// 获得采集点分类列表 // 获得采集点分类列表
getDeviceAttributeTypeList: async () => { getDeviceAttributeTypeList: async () => {
return await request.get({ url: `/iot/device-attribute-type/list`}) return await request.get({ url: `/iot/device-attribute-type/list` })
}, },
} }

@ -13,6 +13,9 @@
<el-form-item label="分类名称" prop="name"> <el-form-item label="分类名称" prop="name">
<el-input v-model="formData.name" placeholder="请输入分类名称" /> <el-input v-model="formData.name" placeholder="请输入分类名称" />
</el-form-item> </el-form-item>
<el-form-item label="分类顺序" prop="sort">
<el-input v-model="formData.sort" placeholder="请输入分类顺序" />
</el-form-item>
<el-form-item label="备注" prop="remark"> <el-form-item label="备注" prop="remark">
<el-input v-model="formData.remark" placeholder="请输入备注" /> <el-input v-model="formData.remark" placeholder="请输入备注" />
</el-form-item> </el-form-item>
@ -40,11 +43,13 @@ const formData = ref({
id: undefined, id: undefined,
code: undefined, code: undefined,
name: undefined, name: undefined,
sort: 0,
remark: undefined, remark: undefined,
}) })
const formRules = reactive({ const formRules = reactive({
code: [{ required: true, message: '分类编码不能为空', trigger: 'blur' }], code: [{ required: true, message: '分类编码不能为空', trigger: 'blur' }],
name: [{ required: true, message: '分类名称不能为空', trigger: 'blur' }], name: [{ required: true, message: '分类名称不能为空', trigger: 'blur' }],
sort: [{ required: true, message: '分类顺序不能为空', trigger: 'blur' }],
}) })
const formRef = ref() // Ref const formRef = ref() // Ref
@ -59,6 +64,7 @@ const open = async (type: string, id?: number) => {
formLoading.value = true formLoading.value = true
try { try {
formData.value = await DeviceAttributeTypeApi.getDeviceAttributeType(id) formData.value = await DeviceAttributeTypeApi.getDeviceAttributeType(id)
;(formData.value as any).sort = Number((formData.value as any).sort ?? 0)
} finally { } finally {
formLoading.value = false formLoading.value = false
} }
@ -75,6 +81,7 @@ const submitForm = async () => {
formLoading.value = true formLoading.value = true
try { try {
const data = formData.value as unknown as DeviceAttributeTypeVO const data = formData.value as unknown as DeviceAttributeTypeVO
data.sort = Number((data as any).sort ?? 0)
if (formType.value === 'create') { if (formType.value === 'create') {
await DeviceAttributeTypeApi.createDeviceAttributeType(data) await DeviceAttributeTypeApi.createDeviceAttributeType(data)
message.success(t('common.createSuccess')) message.success(t('common.createSuccess'))
@ -96,8 +103,9 @@ const resetForm = () => {
id: undefined, id: undefined,
code: undefined, code: undefined,
name: undefined, name: undefined,
sort: 0,
remark: undefined, remark: undefined,
} }
formRef.value?.resetFields() formRef.value?.resetFields()
} }
</script> </script>

@ -26,7 +26,7 @@
class="!w-240px" class="!w-240px"
/> />
</el-form-item> </el-form-item>
<el-form-item label="备注" prop="remark"> <!-- <el-form-item label="备注" prop="remark">
<el-input <el-input
v-model="queryParams.remark" v-model="queryParams.remark"
placeholder="请输入备注" placeholder="请输入备注"
@ -34,8 +34,8 @@
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
class="!w-240px" class="!w-240px"
/> />
</el-form-item> </el-form-item> -->
<el-form-item label="创建时间" prop="createTime"> <!-- <el-form-item label="创建时间" prop="createTime">
<el-date-picker <el-date-picker
v-model="queryParams.createTime" v-model="queryParams.createTime"
value-format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss"
@ -45,7 +45,7 @@
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-220px" class="!w-220px"
/> />
</el-form-item> </el-form-item> -->
<el-form-item> <el-form-item>
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button> <el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button> <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
@ -57,6 +57,14 @@
> >
<Icon icon="ep:plus" class="mr-5px" /> 新增 <Icon icon="ep:plus" class="mr-5px" /> 新增
</el-button> </el-button>
<el-button
type="danger"
plain
@click="handleBatchDelete"
v-hasPermi="['iot:device-attribute-type:delete']"
>
<Icon icon="ep:delete" class="mr-5px" /> 批量删除
</el-button>
<el-button <el-button
type="success" type="success"
plain plain
@ -72,9 +80,19 @@
<!-- 列表 --> <!-- 列表 -->
<ContentWrap> <ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true"> <el-table
ref="tableRef"
v-loading="loading"
:data="list"
:stripe="true"
:show-overflow-tooltip="true"
row-key="id"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" reserve-selection />
<el-table-column label="分类编码" align="center" prop="code" /> <el-table-column label="分类编码" align="center" prop="code" />
<el-table-column label="分类名称" align="center" prop="name" /> <el-table-column label="分类名称" align="center" prop="name" />
<el-table-column label="分类顺序" align="center" prop="sort" />
<el-table-column label="备注" align="center" prop="remark" /> <el-table-column label="备注" align="center" prop="remark" />
<el-table-column <el-table-column
label="创建时间" label="创建时间"
@ -83,7 +101,7 @@
:formatter="dateFormatter" :formatter="dateFormatter"
width="180px" width="180px"
/> />
<el-table-column label="操作" align="center" min-width="120px"> <el-table-column label="操作" align="center" width="150px" fixed="right">
<template #default="scope"> <template #default="scope">
<el-button <el-button
link link
@ -129,6 +147,8 @@ defineOptions({ name: 'DeviceAttributeType' })
const message = useMessage() // const message = useMessage() //
const { t } = useI18n() // const { t } = useI18n() //
const tableRef = ref()
const loading = ref(true) // const loading = ref(true) //
const list = ref<DeviceAttributeTypeVO[]>([]) // const list = ref<DeviceAttributeTypeVO[]>([]) //
const total = ref(0) // const total = ref(0) //
@ -143,6 +163,11 @@ const queryParams = reactive({
const queryFormRef = ref() // const queryFormRef = ref() //
const exportLoading = ref(false) // const exportLoading = ref(false) //
const selectedIds = ref<number[]>([])
const handleSelectionChange = (rows: any[]) => {
selectedIds.value = rows?.map((row) => row.id).filter((id) => id !== undefined) ?? []
}
/** 查询列表 */ /** 查询列表 */
const getList = async () => { const getList = async () => {
loading.value = true loading.value = true
@ -174,18 +199,32 @@ const openForm = (type: string, id?: number) => {
} }
/** 删除按钮操作 */ /** 删除按钮操作 */
const handleDelete = async (id: number) => { const buildIdsParam = (ids: number | number[]) => {
return Array.isArray(ids) ? ids.join(',') : String(ids)
}
const handleDelete = async (ids: number | number[]) => {
try { try {
// //
await message.delConfirm() await message.delConfirm()
// //
await DeviceAttributeTypeApi.deleteDeviceAttributeType(id) await DeviceAttributeTypeApi.deleteDeviceAttributeType(buildIdsParam(ids))
message.success(t('common.delSuccess')) message.success(t('common.delSuccess'))
selectedIds.value = []
tableRef.value?.clearSelection?.()
// //
await getList() await getList()
} catch {} } catch {}
} }
const handleBatchDelete = async () => {
if (!selectedIds.value.length) {
message.error('请选择需要删除的数据')
return
}
await handleDelete(selectedIds.value)
}
/** 导出按钮操作 */ /** 导出按钮操作 */
const handleExport = async () => { const handleExport = async () => {
try { try {

Loading…
Cancel
Save