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 * @param query
*/ */
export const getRfidDeviceList = (query?: RfidDeviceQuery) => { export const getRfidDeviceList = (query?: Partial<RfidDeviceQuery>): AxiosPromise<RfidDeviceVO[]> => {
return request({ return request({
url: '/rfid/rfidDevice/getRfidDeviceList', url: '/rfid/rfidDevice/getRfidDeviceList',
method: 'get', 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 * @param query
*/ */
export const getRfidLocationList = (query?: RfidLocationQuery) => { export const getRfidLocationList = (query?: Partial<RfidLocationQuery>): AxiosPromise<RfidLocationVO[]> => {
return request({ return request({
url: '/rfid/rfidLocation/getRfidLocationList', url: '/rfid/rfidLocation/getRfidLocationList',
method: 'get', 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 * @param query
*/ */
export const getRfidReadRecordList = (query?: RfidReadRecordQuery) => { export const getRfidReadRecordList = (query?: Partial<RfidReadRecordQuery>): AxiosPromise<RfidReadRecordVO[]> => {
return request({ return request({
url: '/rfid/rfidReadRecord/getRfidReadRecordList', url: '/rfid/rfidReadRecord/getRfidReadRecordList',
method: 'get', method: 'get',

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

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

@ -202,9 +202,10 @@ import { listRfidReadRecord, getRfidReadRecord, delRfidReadRecord, addRfidReadRe
import { RfidReadRecordVO, RfidReadRecordQuery, RfidReadRecordForm } from '@/api/rfid/rfidReadRecord/types'; import { RfidReadRecordVO, RfidReadRecordQuery, RfidReadRecordForm } from '@/api/rfid/rfidReadRecord/types';
import { getRfidDeviceList } from "@/api/rfid/rfidDevice"; import { getRfidDeviceList } from "@/api/rfid/rfidDevice";
import type { RfidDeviceVO } from '@/api/rfid/rfidDevice/types'; import type { RfidDeviceVO } from '@/api/rfid/rfidDevice/types';
import { useDict } from '@/utils/dict';
const { proxy } = getCurrentInstance() as ComponentInternalInstance; const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const { read_status, alarm_level, alarm_flag } = toRefs<any>(proxy?.useDict('read_status', 'alarm_level', 'alarm_flag')); const { read_status, alarm_level, alarm_flag } = toRefs(useDict('read_status', 'alarm_level', 'alarm_flag'));
const rfidReadRecordList = ref<RfidReadRecordVO[]>([]); const rfidReadRecordList = ref<RfidReadRecordVO[]>([]);
const buttonLoading = ref(false); const buttonLoading = ref(false);
@ -213,6 +214,7 @@ const showSearch = ref(true);
const ids = ref<Array<string | number>>([]); const ids = ref<Array<string | number>>([]);
// //
const selectedRecordTimes = ref<string[]>([]); const selectedRecordTimes = ref<string[]>([]);
const selectedRecords = ref<RfidReadRecordVO[]>([]);
const single = ref(true); const single = ref(true);
const multiple = ref(true); const multiple = ref(true);
const total = ref(0); const total = ref(0);
@ -318,7 +320,7 @@ const getList = async () => {
/** 加载设备下拉(设备名称),使用 getRfidDeviceList 获取全量数据 */ /** 加载设备下拉(设备名称),使用 getRfidDeviceList 获取全量数据 */
const loadDeviceOptions = async () => { const loadDeviceOptions = async () => {
const res: any = await getRfidDeviceList({ isMarked: "1" } as any); const res = await getRfidDeviceList({ isMarked: "1" });
deviceOptions.value = res.data || []; deviceOptions.value = res.data || [];
} }
@ -351,12 +353,29 @@ const resetQuery = () => {
/** 多选框选中数据 */ /** 多选框选中数据 */
const handleSelectionChange = (selection: RfidReadRecordVO[]) => { const handleSelectionChange = (selection: RfidReadRecordVO[]) => {
ids.value = selection.map(item => item.id); ids.value = selection.map(item => item.id);
selectedRecords.value = selection;
// //
selectedRecordTimes.value = selection.map(item => item.recordTime?.substring(0, 10) || ''); selectedRecordTimes.value = selection.map(item => item.recordTime?.substring(0, 10) || '');
single.value = selection.length != 1; single.value = selection.length != 1;
multiple.value = !selection.length; 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 = () => { const handleAdd = () => {
reset(); reset();
@ -396,12 +415,13 @@ const submitForm = () => {
/** 删除按钮操作 */ /** 删除按钮操作 */
const handleDelete = async (row?: RfidReadRecordVO) => { const handleDelete = async (row?: RfidReadRecordVO) => {
const _ids = row?.id || ids.value; const _ids = row?.id || ids.value;
// const deleteGroups = buildDeleteGroups(row);
const queryDate = row?.recordTime?.substring(0, 10) || selectedRecordTimes.value[0];
try { try {
await proxy?.$modal.confirm('是否确认删除读取记录编号为"' + _ids + '"的数据项?'); await proxy?.$modal.confirm('是否确认删除读取记录编号为"' + _ids + '"的数据项?');
loading.value = true; loading.value = true;
await delRfidReadRecord(_ids, queryDate); for (const [queryDate, groupIds] of deleteGroups) {
await delRfidReadRecord(groupIds, queryDate);
}
proxy?.$modal.msgSuccess("删除成功"); proxy?.$modal.msgSuccess("删除成功");
await getList(); await getList();
} finally { } finally {

Loading…
Cancel
Save