fix: 删除重复类

main
zangch@mesnac.com 1 month ago
parent 95096ef6e6
commit 966c25ba6e

@ -0,0 +1,35 @@
import request from '@/utils/request';
export interface EmsClearAllConfig {
moduleKey: string;
entityName: string;
permission?: string;
}
/**
* mixin
* mixin
*/
export function useEmsClearAll(clearAllConfig: Ref<EmsClearAllConfig | null | undefined>, refreshList: () => Promise<unknown> | unknown) {
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const handleClearAll = async () => {
const config = clearAllConfig.value;
if (!config?.moduleKey || !config.entityName) {
proxy?.$modal.msgError('清空配置缺失,无法执行操作');
return;
}
await proxy?.$modal.confirm(`是否确认清空全部${config.entityName}数据?此操作不可恢复!`);
await request({
url: `/ems/common/clearAll/${config.moduleKey}`,
method: 'delete'
});
proxy?.$modal.msgSuccess(`已清空${config.entityName}`);
await refreshList();
};
return {
handleClearAll
};
}

@ -0,0 +1,61 @@
const pad = (value: number): string => String(value).padStart(2, '0');
const formatDateTime = (date: Date): string =>
`${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())} ${pad(date.getHours())}:${pad(date.getMinutes())}:${pad(date.getSeconds())}`;
const normalizeDate = (value: string | Date): Date => {
const date = value instanceof Date ? new Date(value) : new Date(String(value).replace(/-/g, '/'));
return Number.isNaN(date.getTime()) ? new Date() : date;
};
const iterateDates = (start: Date, end: Date, stepper: (date: Date) => void): string[] => {
const result: string[] = [];
const cursor = new Date(start);
while (cursor.getTime() <= end.getTime()) {
result.push(formatDateTime(cursor));
stepper(cursor);
}
return result;
};
export const getHoursBetween = (startTime: string | Date, endTime: string | Date): string[] => {
const start = normalizeDate(startTime);
const end = normalizeDate(endTime);
start.setMinutes(0, 0, 0);
end.setMinutes(0, 0, 0);
return iterateDates(start, end, (date) => date.setHours(date.getHours() + 1));
};
export const getDatesBetween = (startTime: string | Date, endTime: string | Date): string[] => {
const start = normalizeDate(startTime);
const end = normalizeDate(endTime);
start.setHours(0, 0, 0, 0);
end.setHours(0, 0, 0, 0);
return iterateDates(start, end, (date) => date.setDate(date.getDate() + 1));
};
export const getMonthsBetween = (startTime: string | Date, endTime: string | Date): string[] => {
const start = normalizeDate(startTime);
const end = normalizeDate(endTime);
start.setDate(1);
start.setHours(0, 0, 0, 0);
end.setDate(1);
end.setHours(0, 0, 0, 0);
return iterateDates(start, end, (date) => date.setMonth(date.getMonth() + 1));
};
export const getYearsBetween = (startTime: string | Date, endTime: string | Date): string[] => {
const start = normalizeDate(startTime);
const end = normalizeDate(endTime);
start.setMonth(0, 1);
start.setHours(0, 0, 0, 0);
end.setMonth(0, 1);
end.setHours(0, 0, 0, 0);
return iterateDates(start, end, (date) => date.setFullYear(date.getFullYear() + 1));
};

@ -0,0 +1,39 @@
const escapeCell = (value: string): string => {
const normalized = value.replace(/"/g, '""').replace(/\r?\n/g, ' ');
return `"${normalized}"`;
};
/**
* EMS Vue3
*
*/
export const handleExport = (tableId: string, fileName: string, includeHidden = false): void => {
const table = document.getElementById(tableId) as HTMLTableElement | null;
if (!table) {
return;
}
const rows = Array.from(table.querySelectorAll('tr')).map((row) => {
const cells = Array.from(row.querySelectorAll<HTMLTableCellElement>('th,td')).filter((cell) => {
if (includeHidden) {
return true;
}
return cell.offsetParent !== null;
});
return cells.map((cell) => escapeCell(cell.innerText.trim())).join(',');
});
const csvContent = `\uFEFF${rows.join('\r\n')}`;
const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });
const link = document.createElement('a');
const url = URL.createObjectURL(blob);
link.href = url;
link.download = `${fileName}.csv`;
link.style.display = 'none';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
URL.revokeObjectURL(url);
};
Loading…
Cancel
Save