This commit is contained in:
oneao committed 2026-03-22 21:49:28 +08:00
1 parent aa813c9649
commit 62550b8182
45 files changed
+12535 -566

No files matched your search

@@ -0,0 +1,113 @@
import { updateColumnsApi } from "@/request/api";
import { ElMessage } from "element-plus";
export function updateEditTableColumns(tableRef) {
const $table = unref(tableRef);
if (!$table || typeof $table.getColumns !== "function") {
ElMessage.warning("表格尚未初始化完成");
return;
}
const columns = $table.getColumns();
if (!$table || $table.length === 0) {
ElMessage.warning("未获取到栏位信息");
return;
}
const newColumns = columns
.filter((item) => item.params.b_id !== undefined)
.map((item, index) => ({
b_id: item.params.b_id,
col_edit_width: item.renderWidth,
col_edit_position: index,
}));
updateColumnsApi(newColumns).then((res) => {
if (res.success) {
ElMessage.success("保存成功");
}
});
}
export function updateViewTableColumns(tableRef) {
const $table = unref(tableRef);
if (!$table || typeof $table.getColumns !== "function") {
ElMessage.warning("表格尚未初始化完成");
return;
}
const columns = $table.getColumns();
if (!$table || $table.length === 0) {
ElMessage.warning("未获取到栏位信息");
return;
}
const newColumns = columns
.filter((item) => item.params.b_id !== undefined)
.map((item, index) => ({
b_id: item.params.b_id,
col_Width: item.renderWidth,
col_Position: index,
}));
updateColumnsApi(newColumns).then((res) => {
if (res.success) {
ElMessage.success("保存成功");
}
});
}
/**
* 根据 format 判断列对齐方式
* @param {string} format
*/
export function getAlignByFormat(format) {
if (!format || typeof format !== "string") return "left";
const fmt = format.toLowerCase();
if (fmt.startsWith("money") || fmt.startsWith("number")) {
return "right";
}
if (fmt === "checkbox") {
return "center";
}
return "left";
}
/**
* 根据 format 格式化值
* @param {any} value 原始值
* @param {string} format 格式描述,如 money(2)、percent(1)
*/
export function formatValueByFormat(value, format) {
if (value === null || value === undefined || value === "") return "";
if (!format || typeof format !== "string") return value;
const fmt = format.trim().toLowerCase();
// money(n)
if (fmt.startsWith("money")) {
const match = fmt.match(/^money\((\d+)\)$/);
const decimals = match ? Number(match[1]) : 2;
const num = Number.parseFloat(value);
if (Number.isNaN(num)) return value;
// 使用Intl.NumberFormat来处理千分位
return new Intl.NumberFormat("en-US", {
minimumFractionDigits: decimals,
maximumFractionDigits: decimals,
}).format(num);
} else if (fmt.startsWith("date")) {
return formatToDate(value);
} else if (fmt.startsWith("number")) {
return Number(value) || 0;
}
return value;
}
@@ -0,0 +1,21 @@
import dayjs from "dayjs";
export function formatToDate(date) {
const validDate = dayjs(date);
if (!validDate.isValid()) {
return date;
}
return validDate.format("YYYY-MM-DD");
}
export function formatToDateTime(date) {
const validDate = dayjs(date);
if (!validDate.isValid()) {
return date;
}
return validDate.format("YYYY-MM-DD HH:mm:ss");
}
export function getDateTime() {
return dayjs().format("YYYY-MM-DD HH:mm:ss");
}