🔱: [client] sync upgrade with 4 commits [trident-sync]

build: publish success
build: publish success
perf: antdv示例增加保存列宽功能
This commit is contained in:
GitHub Actions Bot
2025-03-19 19:25:03 +00:00
parent 2b4b15f558
commit d2652baf22
4 changed files with 65 additions and 6 deletions
@@ -0,0 +1,33 @@
import { debounce } from "lodash-es";
import { LocalStorage } from "/@/utils/util.storage";
export class ColumnSizeSaver {
save: (key: string, size: number) => void;
constructor() {
this.save = debounce((key: string, size: number) => {
const saveKey = this.getKey();
let data = LocalStorage.get(saveKey);
if (!data) {
data = {};
}
data[key] = size;
LocalStorage.set(saveKey, data);
});
}
getKey() {
const loc = window.location;
const currentUrl = `${loc.pathname}${loc.search}${loc.hash}`;
return `columnSize-${currentUrl}`;
}
get(key: string) {
const saveKey = this.getKey();
const row = LocalStorage.get(saveKey);
return row?.[key];
}
clear() {
const saveKey = this.getKey();
LocalStorage.remove(saveKey);
}
}
export const columnSizeSaver = new ColumnSizeSaver();
@@ -11,11 +11,13 @@ import { useCrudPermission } from "../permission";
import { GetSignedUrl } from "/@/views/crud/component/uploader/s3/api";
import { notification } from "ant-design-vue";
import { usePreferences } from "/@/vben/preferences";
import { columnSizeSaver } from "/@/plugin/fast-crud/column-size-saver";
function install(app: any, options: any = {}) {
app.use(UiAntdv);
//设置日志级别
setLogger({ level: "debug" });
app.use(FastCrud, {
i18n: options.i18n,
async dictRequest({ url }: any) {
@@ -53,6 +55,7 @@ function install(app: any, options: any = {}) {
onResizeColumn: (w: number, col: any) => {
if (crudBinding.value?.table?.columnsMap && crudBinding.value?.table?.columnsMap[col.key]) {
crudBinding.value.table.columnsMap[col.key].width = w;
columnSizeSaver.save(col.key, w);
}
},
conditionalRender: {
@@ -72,6 +75,11 @@ function install(app: any, options: any = {}) {
toolbar: {
export: {
fileType: "excel"
},
columnsFilter: {
async onReset() {
columnSizeSaver.clear();
}
}
},
rowHandle: {
@@ -381,7 +389,10 @@ function install(app: any, options: any = {}) {
}
if (columnProps.column.resizable == null) {
columnProps.column.resizable = true;
if (!columnProps.column.width) {
const savedColumnWidth = columnSizeSaver.get(columnProps.key as string);
if (savedColumnWidth) {
columnProps.column.width = savedColumnWidth;
} else if (!columnProps.column.width) {
columnProps.column.width = 200;
}
}