refactor: 优化RFID模块类型定义与代码逻辑

1. 将三处any类型的params替换为Record<string, unknown>
2. 为接口方法添加Partial参数与返回值类型声明
3. 简化字典工具调用写法
4. 新增读取记录批量删除按日期分表逻辑
5. 修复设备新增默认状态初始化问题
main
zch 1 month ago
parent 92762ba820
commit 4edc4588d2

@ -66,7 +66,7 @@ export const delRfidDevice = (id: string | number | Array<string | number>) => {
*
* @param query
*/
export const getRfidDeviceList = (query?: RfidDeviceQuery) => {
export const getRfidDeviceList = (query?: Partial<RfidDeviceQuery>): AxiosPromise<RfidDeviceVO[]> => {
return request({
url: '/rfid/rfidDevice/getRfidDeviceList',
method: 'get',

@ -229,5 +229,5 @@ export interface RfidDeviceQuery extends PageQuery {
/**
*
*/
params?: any;
params?: Record<string, unknown>;
}

@ -20,7 +20,7 @@ export const listRfidLocation = (query?: RfidLocationQuery): AxiosPromise<RfidLo
*
* @param query
*/
export const getRfidLocationList = (query?: RfidLocationQuery) => {
export const getRfidLocationList = (query?: Partial<RfidLocationQuery>): AxiosPromise<RfidLocationVO[]> => {
return request({
url: '/rfid/rfidLocation/getRfidLocationList',
method: 'get',

@ -168,5 +168,5 @@ export interface RfidLocationQuery {
/**
*
*/
params?: any;
params?: Record<string, unknown>;
}

@ -70,7 +70,7 @@ export const delRfidReadRecord = (id: string | number | Array<string | number>,
*
* @param query
*/
export const getRfidReadRecordList = (query?: RfidReadRecordQuery) => {
export const getRfidReadRecordList = (query?: Partial<RfidReadRecordQuery>): AxiosPromise<RfidReadRecordVO[]> => {
return request({
url: '/rfid/rfidReadRecord/getRfidReadRecordList',
method: 'get',

@ -19,6 +19,11 @@ export interface RfidReadRecordVO {
*/
deviceName?: string;
/**
*
*/
locationAlias?: string;
/**
* (1-;0-)
*/
@ -161,5 +166,5 @@ export interface RfidReadRecordQuery extends PageQuery {
/**
*
*/
params?: any;
params?: Record<string, unknown>;
}

@ -253,9 +253,10 @@
import { listRfidDevice, getRfidDevice, delRfidDevice, addRfidDevice, updateRfidDevice } from "@/api/rfid/rfidDevice";
import { RfidDeviceVO, RfidDeviceQuery, RfidDeviceForm } from '@/api/rfid/rfidDevice/types';
import { getRfidLocationList } from "@/api/rfid/rfidLocation";
import { useDict } from '@/utils/dict';
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const { alarm_status, online_status, is_marked } = toRefs<any>(proxy?.useDict('alarm_status', 'online_status', 'is_marked'));
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const { alarm_status, online_status, is_marked } = toRefs(useDict('alarm_status', 'online_status', 'is_marked'));
type RfidLocationOption = {
id: number;
@ -309,10 +310,12 @@ const initFormData: RfidDeviceForm = {
deviceName: undefined,
locationId: undefined,
deviceAddress: undefined,
// RFID 使
devicePort: 20108,
readFrequency: undefined,
onlineStatus: undefined,
alarmStatus: undefined,
// 线/
onlineStatus: '1',
alarmStatus: '0',
isMarked: '1',
remark: undefined,
createdBy: undefined,

@ -199,6 +199,7 @@
<script setup name="RfidLocation" lang="ts">
import { listRfidLocation, getRfidLocation, delRfidLocation, addRfidLocation, updateRfidLocation, getRfidLocationList } from "@/api/rfid/rfidLocation";
import { RfidLocationVO, RfidLocationQuery, RfidLocationForm } from '@/api/rfid/rfidLocation/types';
import { useDict } from '@/utils/dict';
type RfidLocationOption = {
id: number;
@ -208,7 +209,7 @@ type RfidLocationOption = {
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const { location_type, is_marked } = toRefs<any>(proxy?.useDict('location_type', 'is_marked'));
const { location_type, is_marked } = toRefs(useDict('location_type', 'is_marked'));
const rfidLocationList = ref<RfidLocationVO[]>([]);
const rfidLocationOptions = ref<RfidLocationOption[]>([]);

@ -202,9 +202,10 @@ import { listRfidReadRecord, getRfidReadRecord, delRfidReadRecord, addRfidReadRe
import { RfidReadRecordVO, RfidReadRecordQuery, RfidReadRecordForm } from '@/api/rfid/rfidReadRecord/types';
import { getRfidDeviceList } from "@/api/rfid/rfidDevice";
import type { RfidDeviceVO } from '@/api/rfid/rfidDevice/types';
import { useDict } from '@/utils/dict';
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const { read_status, alarm_level, alarm_flag } = toRefs<any>(proxy?.useDict('read_status', 'alarm_level', 'alarm_flag'));
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const { read_status, alarm_level, alarm_flag } = toRefs(useDict('read_status', 'alarm_level', 'alarm_flag'));
const rfidReadRecordList = ref<RfidReadRecordVO[]>([]);
const buttonLoading = ref(false);
@ -213,6 +214,7 @@ const showSearch = ref(true);
const ids = ref<Array<string | number>>([]);
//
const selectedRecordTimes = ref<string[]>([]);
const selectedRecords = ref<RfidReadRecordVO[]>([]);
const single = ref(true);
const multiple = ref(true);
const total = ref(0);
@ -318,7 +320,7 @@ const getList = async () => {
/** 加载设备下拉(设备名称),使用 getRfidDeviceList 获取全量数据 */
const loadDeviceOptions = async () => {
const res: any = await getRfidDeviceList({ isMarked: "1" } as any);
const res = await getRfidDeviceList({ isMarked: "1" });
deviceOptions.value = res.data || [];
}
@ -351,12 +353,29 @@ const resetQuery = () => {
/** 多选框选中数据 */
const handleSelectionChange = (selection: RfidReadRecordVO[]) => {
ids.value = selection.map(item => item.id);
selectedRecords.value = selection;
//
selectedRecordTimes.value = selection.map(item => item.recordTime?.substring(0, 10) || '');
single.value = selection.length != 1;
multiple.value = !selection.length;
}
/** 按记录日期分组删除,避免跨天批量删除时只打到第一张分表 */
const buildDeleteGroups = (row?: RfidReadRecordVO): Map<string, Array<string | number>> => {
const records = row ? [row] : selectedRecords.value;
const deleteGroups = new Map<string, Array<string | number>>();
records.forEach((record) => {
const queryDate = record.recordTime?.substring(0, 10);
if (!queryDate) {
throw new Error("读取记录缺少记录时间,无法定位分表");
}
const groupIds = deleteGroups.get(queryDate) || [];
groupIds.push(record.id);
deleteGroups.set(queryDate, groupIds);
});
return deleteGroups;
}
/** 新增按钮操作 */
const handleAdd = () => {
reset();
@ -396,12 +415,13 @@ const submitForm = () => {
/** 删除按钮操作 */
const handleDelete = async (row?: RfidReadRecordVO) => {
const _ids = row?.id || ids.value;
//
const queryDate = row?.recordTime?.substring(0, 10) || selectedRecordTimes.value[0];
const deleteGroups = buildDeleteGroups(row);
try {
await proxy?.$modal.confirm('是否确认删除读取记录编号为"' + _ids + '"的数据项?');
loading.value = true;
await delRfidReadRecord(_ids, queryDate);
for (const [queryDate, groupIds] of deleteGroups) {
await delRfidReadRecord(groupIds, queryDate);
}
proxy?.$modal.msgSuccess("删除成功");
await getList();
} finally {

Loading…
Cancel
Save