joy-admin-components 0.2.88 → 0.2.89
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/CmpDictionary/index.d.ts +42 -0
- package/dist/components/CmpIcon/index.d.ts +23 -0
- package/dist/components/ConfrimButton/index.d.ts +18 -0
- package/dist/components/DownExcelTemp/index.d.ts +19 -0
- package/dist/components/ImportButton/index.d.ts +19 -0
- package/dist/components/LayOutForm/index.d.ts +19 -0
- package/dist/components/Layer/index.d.ts +34 -0
- package/dist/components/ListPage/config.d.ts +47 -0
- package/dist/components/ListPage/index.d.ts +91 -0
- package/dist/components/SearchBar/index.d.ts +50 -0
- package/dist/components/VxeTable/index.d.ts +72 -0
- package/dist/index.d.ts +25 -1
- package/dist/joy-admin-components.es.js +1 -1
- package/dist/joy-admin-components.umd.js +1 -1
- package/dist/locales/en-us.d.ts +5 -0
- package/dist/locales/index.d.ts +24 -0
- package/dist/locales/zh-cn.d.ts +5 -0
- package/dist/utils/index.d.ts +440 -0
- package/package.json +1 -1
- package/src/components/CmpDictionary/index.d.ts +1 -1
- package/src/components/ConfrimButton/index.d.ts +1 -1
- package/src/components/ImportButton/index.d.ts +1 -1
- package/src/components/LayOutForm/index.d.ts +1 -1
- package/src/components/Layer/index.d.ts +1 -1
- package/src/components/SearchBar/index.d.ts +1 -1
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { DefineComponent } from 'vue';
|
|
2
|
+
import { SelectProps } from 'element-plus';
|
|
3
|
+
/**
|
|
4
|
+
* 字典选择器组件 - 基于 Element Plus Select 封装
|
|
5
|
+
* 支持 API 请求数据、全选、多语言等功能
|
|
6
|
+
*/
|
|
7
|
+
export interface CmpDictionaryProps extends /* @vue-ignore */ Partial<SelectProps> {
|
|
8
|
+
/** 获取下拉数据的 API 函数 */
|
|
9
|
+
api?: () => Promise<{ data: any[] }>;
|
|
10
|
+
/** 是否显示全选复选框(仅多选模式),默认 true */
|
|
11
|
+
showCheckAll?: boolean;
|
|
12
|
+
/** 选项点击回调函数 */
|
|
13
|
+
optionClick?: (item: any) => void;
|
|
14
|
+
/** 多选模式下的最大选择数量 */
|
|
15
|
+
maxLimit?: number;
|
|
16
|
+
/** 多选模式下的最小选择数量 */
|
|
17
|
+
minLimit?: number;
|
|
18
|
+
/** 静态数据源(如果提供则不使用 api) */
|
|
19
|
+
data?: any[];
|
|
20
|
+
/** 字段映射配置 */
|
|
21
|
+
labelValue?: {
|
|
22
|
+
label?: string;
|
|
23
|
+
labelEn?: string;
|
|
24
|
+
value?: string;
|
|
25
|
+
};
|
|
26
|
+
/** 是否使用本地 i18n 翻译 label,默认 false */
|
|
27
|
+
changeLocal?: boolean;
|
|
28
|
+
/** v-model 绑定值 */
|
|
29
|
+
modelValue?: any;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export interface CmpDictionaryEmits {
|
|
33
|
+
/** API 请求成功后触发 */
|
|
34
|
+
(e: 'success', data: any[]): void;
|
|
35
|
+
/** 选择值变化时触发 */
|
|
36
|
+
(e: 'change', value: any): void;
|
|
37
|
+
/** v-model 更新事件 */
|
|
38
|
+
(e: 'update:modelValue', value: any): void;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
declare const CmpDictionary: DefineComponent<CmpDictionaryProps, {}, any>;
|
|
42
|
+
export default CmpDictionary;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { DefineComponent } from 'vue';
|
|
2
|
+
/**
|
|
3
|
+
* 图标组件 - 基于 Element Plus Icon 封装
|
|
4
|
+
* 简化图标的使用,通过 name 属性指定图标名称
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```vue
|
|
8
|
+
* <CmpIcon name="Edit" />
|
|
9
|
+
* <CmpIcon name="Delete" />
|
|
10
|
+
* <CmpIcon name="Search" />
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
export interface CmpIconProps {
|
|
14
|
+
/**
|
|
15
|
+
* 图标名称
|
|
16
|
+
* 支持 Element Plus 所有图标名称
|
|
17
|
+
* @see https://element-plus.org/zh-CN/component/icon.html
|
|
18
|
+
*/
|
|
19
|
+
name: string;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
declare const CmpIcon: DefineComponent<CmpIconProps>;
|
|
23
|
+
export default CmpIcon;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { DefineComponent } from 'vue';
|
|
2
|
+
import { PopconfirmProps } from 'element-plus';
|
|
3
|
+
/**
|
|
4
|
+
* 确认按钮组件 - 基于 Element Plus Popconfirm 封装
|
|
5
|
+
* 点击后弹出确认气泡,确认后执行操作(自动防抖 500ms)
|
|
6
|
+
* 继承 Element Plus ElPopconfirm 所有属性
|
|
7
|
+
*/
|
|
8
|
+
export interface ConfrimButtonProps extends /* @vue-ignore */ Partial<PopconfirmProps> {}
|
|
9
|
+
|
|
10
|
+
export interface ConfrimButtonEmits {
|
|
11
|
+
/** 确认操作时触发(已防抖处理) */
|
|
12
|
+
(e: 'ok'): void;
|
|
13
|
+
/** 取消操作时触发 */
|
|
14
|
+
(e: 'no'): void;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
declare const ConfrimButton: DefineComponent<ConfrimButtonProps, {}, any>;
|
|
18
|
+
export default ConfrimButton;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { DefineComponent } from 'vue';
|
|
2
|
+
/**
|
|
3
|
+
* DownExcelTemp 组件 Props
|
|
4
|
+
*/
|
|
5
|
+
export interface DownExcelTempProps {
|
|
6
|
+
/**
|
|
7
|
+
* Excel 表配置
|
|
8
|
+
*/
|
|
9
|
+
sheetsConfig: Record<string, any>;
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* 导出的文件名
|
|
13
|
+
*/
|
|
14
|
+
fileName: string;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
declare const DownExcelTemp: DefineComponent<DownExcelTempProps>;
|
|
18
|
+
|
|
19
|
+
export default DownExcelTemp;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { DefineComponent } from 'vue';
|
|
2
|
+
/**
|
|
3
|
+
* 导入按钮组件 - 文件上传按钮
|
|
4
|
+
* 点击按钮选择文件,支持自定义文件类型
|
|
5
|
+
*/
|
|
6
|
+
export interface ImportButtonProps {
|
|
7
|
+
/** 接受的文件类型,默认 '.xlsx,.xls' */
|
|
8
|
+
accept?: string;
|
|
9
|
+
/** 按钮加载状态 */
|
|
10
|
+
loading?: boolean;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export interface ImportButtonEmits {
|
|
14
|
+
/** 文件选择后触发 */
|
|
15
|
+
(e: 'fileChange', file: File): void;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
declare const ImportButton: DefineComponent<ImportButtonProps, {}, any>;
|
|
19
|
+
export default ImportButton;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { DefineComponent } from 'vue';
|
|
2
|
+
import { FormProps } from 'element-plus';
|
|
3
|
+
/**
|
|
4
|
+
* LayOutForm 组件 - 带栅格布局的表单容器
|
|
5
|
+
* 继承 Element Plus ElForm 所有属性
|
|
6
|
+
* 自动为表单项添加栅格布局,支持多列表单
|
|
7
|
+
*/
|
|
8
|
+
export interface LayOutFormProps extends /* @vue-ignore */ FormProps {
|
|
9
|
+
/** 栅格间隔,默认 20 */
|
|
10
|
+
gutter?: number;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export interface LayOutFormEmits {
|
|
14
|
+
/** 组件挂载完成后触发,返回表单 ref */
|
|
15
|
+
(e: 'ref', formRef: any): void;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
declare const LayOutForm: DefineComponent<LayOutFormProps, {}, any>;
|
|
19
|
+
export default LayOutForm;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { DefineComponent } from 'vue';
|
|
2
|
+
/**
|
|
3
|
+
* Layer 组件 - 弹层组件(支持 Dialog 和 Drawer 两种模式)
|
|
4
|
+
* 基于 Element Plus 的 Dialog 和 Drawer 封装
|
|
5
|
+
*/
|
|
6
|
+
export interface LayerConfig {
|
|
7
|
+
/** 是否显示弹层 */
|
|
8
|
+
show: boolean;
|
|
9
|
+
/** 弹层类型:'layer' 为 Dialog,'drawer' 为 Drawer */
|
|
10
|
+
type?: 'layer' | 'drawer';
|
|
11
|
+
/** 弹层标题 */
|
|
12
|
+
title?: string;
|
|
13
|
+
/** 弹层宽度,Dialog 默认 500,Drawer 默认 '100%' */
|
|
14
|
+
width?: string | number;
|
|
15
|
+
/** 是否显示底部按钮 */
|
|
16
|
+
showButton?: boolean;
|
|
17
|
+
/** 自定义关闭回调(仅 Drawer 模式有效) */
|
|
18
|
+
onClose?: () => void;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export interface LayerProps {
|
|
22
|
+
/** 弹层配置对象 */
|
|
23
|
+
layer: LayerConfig;
|
|
24
|
+
/** 确认按钮加载状态 */
|
|
25
|
+
loading?: boolean;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export interface LayerEmits {
|
|
29
|
+
/** 点击确认按钮时触发(已防抖 300ms) */
|
|
30
|
+
(e: 'confirm'): void;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
declare const Layer: DefineComponent<LayerProps, {}, any>;
|
|
34
|
+
export default Layer;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ListPage 全局配置
|
|
3
|
+
* 可在项目入口文件(如 main.js)中调用 setListPageConfig 进行全局配置
|
|
4
|
+
*/
|
|
5
|
+
export interface ListPageConfig {
|
|
6
|
+
/** 页码参数名 */
|
|
7
|
+
pageNoKey: string;
|
|
8
|
+
/** 每页条数参数名 */
|
|
9
|
+
pageSizeKey: string;
|
|
10
|
+
/** 总条数字段名 */
|
|
11
|
+
totalKey: string;
|
|
12
|
+
/** 默认每页条数 */
|
|
13
|
+
defaultPageSize: number;
|
|
14
|
+
/** 每页条数选项 */
|
|
15
|
+
pageSizes: number[];
|
|
16
|
+
/** 响应数据字段映射 */
|
|
17
|
+
responseDataKeys: {
|
|
18
|
+
/** 数据列表字段名(优先级从左到右) */
|
|
19
|
+
rows: string[];
|
|
20
|
+
/** 总条数字段名 */
|
|
21
|
+
total: string[];
|
|
22
|
+
};
|
|
23
|
+
/** 是否显示搜索栏 */
|
|
24
|
+
showSearch: boolean;
|
|
25
|
+
/** 是否显示分页 */
|
|
26
|
+
showPage: boolean;
|
|
27
|
+
/** 是否显示阴影 */
|
|
28
|
+
showShadow: boolean;
|
|
29
|
+
/** 是否显示复选框列 */
|
|
30
|
+
showCheckBox: boolean;
|
|
31
|
+
/** 是否启用单元格选区复制功能 */
|
|
32
|
+
enableCellCopy: boolean;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* 设置全局配置
|
|
36
|
+
* @param config - 配置对象
|
|
37
|
+
*/
|
|
38
|
+
export declare function setListPageConfig(config: Partial<ListPageConfig>): void;
|
|
39
|
+
/**
|
|
40
|
+
* 获取当前配置
|
|
41
|
+
* @returns 当前配置对象
|
|
42
|
+
*/
|
|
43
|
+
export declare function getListPageConfig(): ListPageConfig;
|
|
44
|
+
/**
|
|
45
|
+
* 重置为默认配置
|
|
46
|
+
*/
|
|
47
|
+
export declare function resetListPageConfig(): void;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { DefineComponent } from 'vue';
|
|
2
|
+
/** 搜索表单项 */
|
|
3
|
+
export interface SearchFormItem {
|
|
4
|
+
/** 字段 key */
|
|
5
|
+
key: string;
|
|
6
|
+
/** 字段名称 */
|
|
7
|
+
name: string;
|
|
8
|
+
/** 字段值 */
|
|
9
|
+
value: any;
|
|
10
|
+
/** 表单项类型 */
|
|
11
|
+
type?: 'input' | 'select' | 'date' | 'custom' | 'br';
|
|
12
|
+
/** 日期类型 */
|
|
13
|
+
dateType?: 'date' | 'daterange' | 'datetimerange';
|
|
14
|
+
/** 是否隐藏 */
|
|
15
|
+
hidden?: boolean;
|
|
16
|
+
/** 自定义渲染函数(type 为 custom 时使用) */
|
|
17
|
+
render?: () => any;
|
|
18
|
+
/** 额外配置 */
|
|
19
|
+
option?: {
|
|
20
|
+
class?: string;
|
|
21
|
+
[key: string]: any;
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/** 搜索表单配置 */
|
|
26
|
+
export interface SearchFormConfig {
|
|
27
|
+
/** 表单项列表 */
|
|
28
|
+
items: SearchFormItem[];
|
|
29
|
+
/** 选中的行数据(多选) */
|
|
30
|
+
selections?: any[];
|
|
31
|
+
/** 是否显示搜索栏 */
|
|
32
|
+
showSearch?: boolean;
|
|
33
|
+
/** 是否显示分页 */
|
|
34
|
+
showPage?: boolean;
|
|
35
|
+
/** 是否显示阴影 */
|
|
36
|
+
showShadow?: boolean;
|
|
37
|
+
/** 是否显示复选框 */
|
|
38
|
+
showCheckBox?: boolean;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/** 表格配置 */
|
|
42
|
+
export interface TableConfig {
|
|
43
|
+
/** 数据格式化函数 */
|
|
44
|
+
dataFormat?: (data: any[]) => any[];
|
|
45
|
+
/** 重置回调函数 */
|
|
46
|
+
reset?: () => void | Promise<void>;
|
|
47
|
+
/** 自定义配置 */
|
|
48
|
+
customConfig?: Record<string, any>;
|
|
49
|
+
/** 列配置 */
|
|
50
|
+
columnConfig?: Record<string, any>;
|
|
51
|
+
/** 表格高度 */
|
|
52
|
+
height?: number | string;
|
|
53
|
+
[key: string]: any;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* ListPage 组件 - 列表页面容器
|
|
58
|
+
* 集成搜索栏、表格、分页等功能
|
|
59
|
+
* 基于 VxeTable 实现
|
|
60
|
+
*/
|
|
61
|
+
export interface ListPageProps {
|
|
62
|
+
/** 表格唯一标识,用于本地存储列设置 */
|
|
63
|
+
id: string;
|
|
64
|
+
/** 加载状态 */
|
|
65
|
+
loading?: boolean;
|
|
66
|
+
/** 是否立即请求数据,默认 true */
|
|
67
|
+
immediate?: boolean;
|
|
68
|
+
/** 搜索表单配置 */
|
|
69
|
+
searchForm?: SearchFormConfig;
|
|
70
|
+
/** 获取列表数据的 API 函数 */
|
|
71
|
+
api?: (params: any) => Promise<{ code: number; data: { rows: any[]; totalRows: number } }>;
|
|
72
|
+
/** 静态数据源(如果提供则不使用 api) */
|
|
73
|
+
data?: any[];
|
|
74
|
+
/** 表格配置 */
|
|
75
|
+
tableConfig?: TableConfig;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/** ListPage 暴露的方法 */
|
|
79
|
+
export interface ListPageExpose {
|
|
80
|
+
/** VxeTable 实例 */
|
|
81
|
+
tableRef: any;
|
|
82
|
+
/** 刷新列表数据 */
|
|
83
|
+
getList: (params?: any) => void;
|
|
84
|
+
/** 获取当前搜索参数 */
|
|
85
|
+
getPrm: () => any;
|
|
86
|
+
/** 重新计算表格高度 */
|
|
87
|
+
calculateTableHeight: () => void;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
declare const ListPage: DefineComponent<ListPageProps, {}, any>;
|
|
91
|
+
export default ListPage;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { DefineComponent } from 'vue';
|
|
2
|
+
/** 搜索表单项 */
|
|
3
|
+
export interface SearchBarFormItem {
|
|
4
|
+
/** 字段 key */
|
|
5
|
+
key: string;
|
|
6
|
+
/** 字段名称 */
|
|
7
|
+
name: string;
|
|
8
|
+
/** 字段值 */
|
|
9
|
+
value: any;
|
|
10
|
+
/** 表单项类型 */
|
|
11
|
+
type?: 'input' | 'select' | 'date' | 'custom' | 'br';
|
|
12
|
+
/** 日期类型 */
|
|
13
|
+
dateType?: 'date' | 'daterange' | 'datetimerange';
|
|
14
|
+
/** 是否隐藏 */
|
|
15
|
+
hidden?: boolean;
|
|
16
|
+
/** 自定义渲染函数(type 为 custom 时使用) */
|
|
17
|
+
render?: () => any;
|
|
18
|
+
/** 额外配置 */
|
|
19
|
+
option?: {
|
|
20
|
+
class?: string;
|
|
21
|
+
[key: string]: any;
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/** 搜索表单配置 */
|
|
26
|
+
export interface SearchBarForm {
|
|
27
|
+
/** 表单项列表 */
|
|
28
|
+
items: SearchBarFormItem[];
|
|
29
|
+
/** 表单数据对象 */
|
|
30
|
+
data?: Record<string, any>;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* SearchBar 组件 - 搜索栏
|
|
35
|
+
* 支持多种表单项类型,可折叠展开
|
|
36
|
+
*/
|
|
37
|
+
export interface SearchBarProps {
|
|
38
|
+
/** 搜索表单配置 */
|
|
39
|
+
form: SearchBarForm;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export interface SearchBarEmits {
|
|
43
|
+
/** 筛选按钮点击时触发 */
|
|
44
|
+
(e: 'confirm'): void;
|
|
45
|
+
/** 重置按钮点击时触发 */
|
|
46
|
+
(e: 'reset'): void;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
declare const SearchBar: DefineComponent<SearchBarProps, {}, any>;
|
|
50
|
+
export default SearchBar;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 注册 VxeTable 格式化器
|
|
3
|
+
*
|
|
4
|
+
* 注册以下格式化器到 VxeUI:
|
|
5
|
+
* - formatNumber: 千分位数字格式化(默认 2 位小数)
|
|
6
|
+
* - formatMoney: 金额格式化(默认 2 位小数)
|
|
7
|
+
* - formatPercent: 百分比格式化(默认 2 位小数)
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import { registerVxeFormatters } from 'joy-admin-components';
|
|
12
|
+
*
|
|
13
|
+
* // 在应用初始化时注册
|
|
14
|
+
* registerVxeFormatters();
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```vue
|
|
19
|
+
* <!-- 在表格列中使用 -->
|
|
20
|
+
* <vxe-column field="amount" title="金额" :formatter="['formatMoney', 2]" />
|
|
21
|
+
* <vxe-column field="quantity" title="数量" :formatter="['formatNumber', 0]" />
|
|
22
|
+
* <vxe-column field="rate" title="比率" :formatter="['formatPercent', 1]" />
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* @requires vxe-pc-ui - VxeUI 库
|
|
26
|
+
*/
|
|
27
|
+
export function registerVxeFormatters(): void;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* 注册 VxeTable 渲染器
|
|
31
|
+
*
|
|
32
|
+
* 注册以下渲染器到 VxeUI:
|
|
33
|
+
* - Enum: 枚举值渲染器
|
|
34
|
+
* - InputNumber: 数字输入渲染器
|
|
35
|
+
* - TrueFalse: 真假值渲染器
|
|
36
|
+
* - I18n: 国际化渲染器
|
|
37
|
+
* - Link: 跳转链接渲染器
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```ts
|
|
41
|
+
* import { registerVxeRenderers } from 'joy-admin-components';
|
|
42
|
+
*
|
|
43
|
+
* // 在应用初始化时注册
|
|
44
|
+
* registerVxeRenderers();
|
|
45
|
+
* ```
|
|
46
|
+
*
|
|
47
|
+
* @requires vxe-pc-ui - VxeUI 库
|
|
48
|
+
* @requires vue-router - Vue Router
|
|
49
|
+
* @requires vue-i18n - Vue I18n
|
|
50
|
+
*/
|
|
51
|
+
export function registerVxeRenderers(): void;
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* 一次性注册所有 VxeTable 插件(渲染器和格式化器)
|
|
55
|
+
*
|
|
56
|
+
* 这是一个便捷方法,等价于依次调用:
|
|
57
|
+
* - registerVxeFormatters()
|
|
58
|
+
* - registerVxeRenderers()
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```ts
|
|
62
|
+
* import { registerVxePlugins } from 'joy-admin-components';
|
|
63
|
+
*
|
|
64
|
+
* // 在应用初始化时一次性注册所有插件
|
|
65
|
+
* registerVxePlugins();
|
|
66
|
+
* ```
|
|
67
|
+
*
|
|
68
|
+
* @requires vxe-pc-ui - VxeUI 库
|
|
69
|
+
* @requires vue-router - Vue Router
|
|
70
|
+
* @requires vue-i18n - Vue I18n
|
|
71
|
+
*/
|
|
72
|
+
export function registerVxePlugins(): void;
|
package/dist/index.d.ts
CHANGED
|
@@ -1 +1,25 @@
|
|
|
1
|
-
|
|
1
|
+
import { default as LayOutForm } from './components/LayOutForm/index';
|
|
2
|
+
import { default as CmpDictionary } from './components/CmpDictionary/index';
|
|
3
|
+
import { default as CmpIcon } from './components/CmpIcon/index';
|
|
4
|
+
import { default as ConfrimButton } from './components/ConfrimButton/index';
|
|
5
|
+
import { default as ImportButton } from './components/ImportButton/index';
|
|
6
|
+
import { default as ListPage } from './components/ListPage/index';
|
|
7
|
+
import { default as SearchBar } from './components/SearchBar/index';
|
|
8
|
+
import { default as DownExcelTemp } from './components/DownExcelTemp/index';
|
|
9
|
+
import { default as Layer } from './components/Layer/index';
|
|
10
|
+
export { LayOutForm, CmpDictionary, CmpIcon, ConfrimButton, ImportButton, ListPage, SearchBar, DownExcelTemp, Layer, };
|
|
11
|
+
export * from './utils/index.js';
|
|
12
|
+
export { registerVxeFormatters, registerVxeRenderers, registerVxePlugins } from './components/VxeTable/index.jsx';
|
|
13
|
+
export { setupI18n, getI18n, getI18nT, zh_cn, en_us, messages } from './locales/index';
|
|
14
|
+
export { setListPageConfig, getListPageConfig, resetListPageConfig } from './components/ListPage/config';
|
|
15
|
+
export type * from './components/LayOutForm/index';
|
|
16
|
+
export type * from './components/CmpDictionary/index';
|
|
17
|
+
export type * from './components/CmpIcon/index';
|
|
18
|
+
export type * from './components/ConfrimButton/index';
|
|
19
|
+
export type * from './components/ImportButton/index';
|
|
20
|
+
export type * from './components/ListPage/index';
|
|
21
|
+
export type * from './components/SearchBar/index';
|
|
22
|
+
export type * from './components/DownExcelTemp/index';
|
|
23
|
+
export type * from './components/Layer/index';
|
|
24
|
+
export type * from './utils/index';
|
|
25
|
+
export type * from './components/VxeTable/index';
|
|
@@ -259,7 +259,7 @@ var fe = Object.create, J = Object.defineProperty, pe = Object.getOwnPropertyDes
|
|
|
259
259
|
function Oe(e = null) {
|
|
260
260
|
if (e) {
|
|
261
261
|
let { global: t } = e;
|
|
262
|
-
return t.messages.value
|
|
262
|
+
return t.messages.value?.zh_cn ? t.mergeLocaleMessage("zh_cn", we) : t.setLocaleMessage("zh_cn", we), t.messages.value?.en_us ? t.mergeLocaleMessage("en_us", Te) : t.setLocaleMessage("en_us", Te), De = e, e;
|
|
263
263
|
}
|
|
264
264
|
return De ||= ie({
|
|
265
265
|
legacy: !1,
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`element-plus`),require(`vue`),require(`file-saver`),require(`exceljs`),require(`dayjs`),require(`vue-i18n`),require(`lodash`),require(`vue-router`),require(`vuex`),require(`vxe-pc-ui`)):typeof define==`function`&&define.amd?define([`exports`,`element-plus`,`vue`,`file-saver`,`exceljs`,`dayjs`,`vue-i18n`,`lodash`,`vue-router`,`vuex`,`vxe-pc-ui`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.JoyAdminComponents={},e.ElementPlus,e.Vue,e.fileSaver,e.ExcelJS,e.dayjs,e.VueI18n,e._,e.VueRouter,e.Vuex,e.VxeUI))})(this,function(e,t,n,r,i,a,o,s,c,l,u){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var d=Object.create,f=Object.defineProperty,p=Object.getOwnPropertyDescriptor,m=Object.getOwnPropertyNames,h=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty,_=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),v=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=m(t),a=0,o=i.length,s;a<o;a++)s=i[a],!g.call(e,s)&&s!==n&&f(e,s,{get:(e=>t[e]).bind(null,s),enumerable:!(r=p(t,s))||r.enumerable});return e},y=(e,t,n)=>(n=e==null?{}:d(h(e)),v(t||!e||!e.__esModule?f(n,`default`,{value:e,enumerable:!0}):n,e));i=y(i),a=y(a);var b=(0,n.defineComponent)({name:`LayOutForm`,setup(e,{slots:r,attrs:i,emit:a}){let o=(0,n.ref)(null),s=()=>r.default?r.default().filter(e=>e.type!==Symbol.for(`v-cmt`)).map(e=>e.type===Symbol.for(`v-fgt`)?e.children:e).flat().map(e=>(0,n.h)(t.ElCol,{span:e.props?.span||e.props?.colProps?.span||24,...e.props?.colProps},{default:()=>e})):null;(0,n.onMounted)(()=>{a(`ref`,o.value)});function c(){return(0,n.h)(t.ElForm,{...i,ref:o},()=>(0,n.h)(t.ElRow,{gutter:i.gutter??20},{default:()=>s()}))}return c}}),x=_(((e,t)=>{(function(n,r){typeof e==`object`&&t!==void 0?t.exports=r():typeof define==`function`&&define.amd?define(r):(n=typeof globalThis<`u`?globalThis:n||self).dayjs_plugin_utc=r()})(e,(function(){"use strict";var e=`minute`,t=/[+-]\d\d(?::?\d\d)?/g,n=/([+-]|\d\d)/g;return function(r,i,a){var o=i.prototype;a.utc=function(e){return new i({date:e,utc:!0,args:arguments})},o.utc=function(t){var n=a(this.toDate(),{locale:this.$L,utc:!0});return t?n.add(this.utcOffset(),e):n},o.local=function(){return a(this.toDate(),{locale:this.$L,utc:!1})};var s=o.parse;o.parse=function(e){e.utc&&(this.$u=!0),this.$utils().u(e.$offset)||(this.$offset=e.$offset),s.call(this,e)};var c=o.init;o.init=function(){if(this.$u){var e=this.$d;this.$y=e.getUTCFullYear(),this.$M=e.getUTCMonth(),this.$D=e.getUTCDate(),this.$W=e.getUTCDay(),this.$H=e.getUTCHours(),this.$m=e.getUTCMinutes(),this.$s=e.getUTCSeconds(),this.$ms=e.getUTCMilliseconds()}else c.call(this)};var l=o.utcOffset;o.utcOffset=function(r,i){var a=this.$utils().u;if(a(r))return this.$u?0:a(this.$offset)?l.call(this):this.$offset;if(typeof r==`string`&&(r=function(e){e===void 0&&(e=``);var r=e.match(t);if(!r)return null;var i=(``+r[0]).match(n)||[`-`,0,0],a=i[0],o=60*i[1]+ +i[2];return o===0?0:a===`+`?o:-o}(r),r===null))return this;var o=Math.abs(r)<=16?60*r:r;if(o===0)return this.utc(i);var s=this.clone();if(i)return s.$offset=o,s.$u=!1,s;var c=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();return(s=this.local().add(o+c,e)).$offset=o,s.$x.$localOffset=c,s};var u=o.format;o.format=function(e){var t=e||(this.$u?`YYYY-MM-DDTHH:mm:ss[Z]`:``);return u.call(this,t)},o.valueOf=function(){var e=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||this.$d.getTimezoneOffset());return this.$d.valueOf()-6e4*e},o.isUTC=function(){return!!this.$u},o.toISOString=function(){return this.toDate().toISOString()},o.toString=function(){return this.toDate().toUTCString()};var d=o.toDate;o.toDate=function(e){return e===`s`&&this.$offset?a(this.format(`YYYY-MM-DD HH:mm:ss:SSS`)).toDate():d.call(this)};var f=o.diff;o.diff=function(e,t,n){if(e&&this.$u===e.$u)return f.call(this,e,t,n);var r=this.local(),i=a(e).local();return f.call(r,i,t,n)}}}))})),S=_(((e,t)=>{(function(n,r){typeof e==`object`&&t!==void 0?t.exports=r():typeof define==`function`&&define.amd?define(r):(n=typeof globalThis<`u`?globalThis:n||self).dayjs_plugin_timezone=r()})(e,(function(){"use strict";var e={year:0,month:1,day:2,hour:3,minute:4,second:5},t={};return function(n,r,i){var a,o=function(e,n,r){r===void 0&&(r={});var i=new Date(e);return function(e,n){n===void 0&&(n={});var r=n.timeZoneName||`short`,i=e+`|`+r,a=t[i];return a||(a=new Intl.DateTimeFormat(`en-US`,{hour12:!1,timeZone:e,year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`,timeZoneName:r}),t[i]=a),a}(n,r).formatToParts(i)},s=function(t,n){for(var r=o(t,n),a=[],s=0;s<r.length;s+=1){var c=r[s],l=c.type,u=c.value,d=e[l];d>=0&&(a[d]=parseInt(u,10))}var f=a[3],p=f===24?0:f,m=a[0]+`-`+a[1]+`-`+a[2]+` `+p+`:`+a[4]+`:`+a[5]+`:000`,h=+t;return(i.utc(m).valueOf()-(h-=h%1e3))/6e4},c=r.prototype;c.tz=function(e,t){e===void 0&&(e=a);var n,r=this.utcOffset(),o=this.toDate(),s=o.toLocaleString(`en-US`,{timeZone:e}),c=Math.round((o-new Date(s))/1e3/60),l=15*-Math.round(o.getTimezoneOffset()/15)-c;if(!Number(l))n=this.utcOffset(0,t);else if(n=i(s,{locale:this.$L}).$set(`millisecond`,this.$ms).utcOffset(l,!0),t){var u=n.utcOffset();n=n.add(r-u,`minute`)}return n.$x.$timezone=e,n},c.offsetName=function(e){var t=this.$x.$timezone||i.tz.guess(),n=o(this.valueOf(),t,{timeZoneName:e}).find((function(e){return e.type.toLowerCase()===`timezonename`}));return n&&n.value};var l=c.startOf;c.startOf=function(e,t){if(!this.$x||!this.$x.$timezone)return l.call(this,e,t);var n=i(this.format(`YYYY-MM-DD HH:mm:ss:SSS`),{locale:this.$L});return l.call(n,e,t).tz(this.$x.$timezone,!0)},i.tz=function(e,t,n){var r=n&&t,o=n||t||a,c=s(+i(),o);if(typeof e!=`string`)return i(e).tz(o);var l=function(e,t,n){var r=e-60*t*1e3,i=s(r,n);if(t===i)return[r,t];var a=s(r-=60*(i-t)*1e3,n);return i===a?[r,i]:[e-60*Math.min(i,a)*1e3,Math.max(i,a)]}(i.utc(e,r).valueOf(),c,o),u=l[0],d=l[1],f=i(u).utcOffset(d);return f.$x.$timezone=o,f},i.tz.guess=function(){return Intl.DateTimeFormat().resolvedOptions().timeZone},i.tz.setDefault=function(e){a=e}}}))})),C=y(x()),w=y(S()),T={"dao-ru":`导入`,"quan-xuan":`全选`,"xia-zai-dao-ru-mo-ban":`下载导入模板`,"xu-hao":`序号`,"qing-shu-ru":`请输入`,"qing-xuan-ze":`请选择`,"kai-shi-shi-jian":`开始时间`,"jie-shu-shi-jian":`结束时间`,"shai-xuan":`筛选`,"chong-zhi":`重置`,"guan-bi":`关闭`,"zhan-kai":`展开`,"qu-xiao":`取消`,"ti-jiao":`提交`,"que-ding":`确定`,"que-ding-guan-bi-ma":`确定关闭吗`,"xia-zai-dao-ru-mo-ban":`下载导入模板`,excel:{fieldsMappingRequired:`请输入列字段映射`,invalidInput:`非法输入`,invalidOption:`请输入有效选项!`,copyFailed:`复制失败`,sheetNameTooLong:`Sheet名称 "{0}" 长度超过31个字符,已自动截断为 "{1}"`},import:{versionMismatch:`模板版本有更新,请重新下载模板`},validate:{invalidInput:`请输入正确内容`},tools:{keysLengthError:`keys 长度必须大于2 默认前两位为 label value`}},E={"dao-ru":`Import`,"quan-xuan":`Select All`,"xia-zai-dao-ru-mo-ban":`Download Import Template`,"xu-hao":`No.`,"qing-shu-ru":`Please enter`,"qing-xuan-ze":`Please select`,"kai-shi-shi-jian":`Start Time`,"jie-shu-shi-jian":`End Time`,"shai-xuan":`Filter`,"chong-zhi":`Reset`,"guan-bi":`Collapse`,"zhan-kai":`Expand`,"qu-xiao":`Cancel`,"ti-jiao":`Submit`,"que-ding":`Confirm`,"que-ding-guan-bi-ma":`Are you sure to close?`,"xia-zai-dao-ru-mo-ban":`Download Import Template`,excel:{fieldsMappingRequired:`Please enter column field mapping`,invalidInput:`Invalid input`,invalidOption:`Please enter a valid option!`,copyFailed:`Copy failed`,sheetNameTooLong:`Sheet name "{0}" exceeds 31 characters, automatically truncated to "{1}"`},import:{versionMismatch:`Template version has been updated, please re-download the template`},validate:{invalidInput:`Please enter valid content`},tools:{keysLengthError:`Keys length must be greater than 2, default first two are label and value`}},D={zh_cn:T,en_us:E},O=null;function k(e=null){if(e){let{global:t}=e;return t.messages.value.zh_cn?t.mergeLocaleMessage(`zh_cn`,T):t.setLocaleMessage(`zh_cn`,T),t.messages.value.en_us?t.mergeLocaleMessage(`en_us`,E):t.setLocaleMessage(`en_us`,E),O=e,e}return O||=(0,o.createI18n)({legacy:!1,locale:`zh_cn`,fallbackLocale:`zh_cn`,messages:D}),O}function A(){return O||k()}function j(){return A().global.t}a.default.extend(C.default),a.default.extend(w.default);async function ee(e,t){let{fields:n,range:r=1}=t;if(!n){let e=j();throw Error(e(`excel.fieldsMappingRequired`))}let a=new i.default.Workbook;await a.xlsx.load(e);let o={};return a.eachSheet(function(e,t){let i=[];e.eachRow(function(e,t){if(t>r){let t={},r=!0;Object.keys(n).forEach(i=>{let a=e.getCell(n[i]).value;t[i]=a,a&&(r=!1)}),r||i.push(t)}}),o[e._name]=i}),a=null,o}var M={columnWidth:30};async function N(e,t,n=[],i={}){if(!e||!t)return;let{columnStyle:a}=i,{columnWidth:o}=M;t.forEach(e=>{e.width=e.width?e.width:o});let{workbook:s,worksheet:c}=P();c.columns=t,c.addRows(n),a&&await F(s,c,a);try{let t=await s.xlsx.writeBuffer();(0,r.saveAs)(new File([t],e,{type:`application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`}))}catch(e){console.log(e)}}function P(){let e=new i.default.Workbook;return e.creator=`distributor System`,e.lastModifiedBy=`distributor System`,e.created=new Date,e.modified=new Date,e.lastPrinted=new Date,{workbook:e,worksheet:e.addWorksheet(`Sheet1`)}}async function F(e,t,n){let r=Object.keys(n);for(let i of r){let r=n[i],{type:a}=r;switch(a){case`IMG`:await I(e,t,i,r);break}}}async function I(e,t,n,r){let i=t.getColumn(n),a=i.values;t.getColumn(n).width=20,t.eachRow((e,t)=>{t>1&&(e.height=40)});for(let n=0,r=a.length;n<r;n++){if(n<2)continue;let r=a[n];r&&(t.getCell(i.letter+n).value=``,await L(e,t,r,{width:100,height:50,col:i._number-1,row:n-1}))}}async function L(e,t,n,r){let{col:i,row:a,width:o,height:s}=r,{success:c,base64:l}=await R(n,.3);if(c){let n=e.addImage({base64:l,extension:`jpeg`});t.addImage(n,{tl:{col:i,row:a},ext:{width:o,height:s}})}}function R(e,t=1){let n=new Image;return n.setAttribute(`crossOrigin`,`anonymous`),n.crossOrigin=`anonymous`,n.src=e,new Promise((e,r)=>{n.onload=()=>{let r=document.createElement(`canvas`);r.width=n.width,r.height=n.height,r.getContext(`2d`).drawImage(n,0,0,r.width,r.height),e({success:!0,base64:r.toDataURL(`image/jpeg`,t)})},n.onerror=()=>{e({success:!1})}})}var z=`---`;async function B(e,t){let{fields:n,range:r=1}=t;if(!n){let e=j();throw Error(e(`excel.fieldsMappingRequired`))}let o=new i.default.Workbook;await o.xlsx.load(e);let s={};return o.eachSheet(function(e,t){if(e.state==`visible`){let t=[],i=n[e._name];if(i){let n=Object.values(i).some(e=>e.includes(`image`)),c={};n&&(e.getImages().forEach(e=>{let{tl:t}=e.range,n=o.model.media.find(t=>t.index===e.imageId);if(n){let e=n.buffer.toString(`base64`),r=`data:image/${n.extension};base64,${e}`,i=`${Math.ceil(t.row)}_${Math.ceil(t.col)}`;c[i]?c[i].push(r):c[i]=[r]}}),console.log(`withImages-imageMap`,c)),e.eachRow(function(e,o){if(o>r){let r={_excelRowNumber:o},s=!0;Object.keys(i).forEach(t=>{let[l,u]=i[t].split(z),d=e.getCell(l),f;f=u==`image`&&n?c[`${o}_${d._column._number}`]||``:d.result==null?d.value?.richText?d.value.richText.reduce((e,t)=>e+t.text,``):d.value?.hyperlink?d.value.text||d.value.hyperlink:d.type==4&&d.value?(0,a.default)(d.value).utc().format(`YYYY-MM-DD HH:mm:ss`):d.value:d.result,f&&u==`option`&&(f=f.split(z)[1]),r[t]=f,f&&(s=!1)}),s||t.push(r)}}),s[e._name]=t}}}),o=null,s}var te={date:`yyyy-mm-dd`,number:`0`,string:`@`};async function V(e,t){if(!e||t.length==0)return;let n=H(t);for(let e of n.worksheets){let{columnWidth:r}=M,i=t[e.name];if(!i)continue;let{tableHeader:a,tableData:o}=i;a.forEach(e=>{let{style:t={},required:n}=e,{font:r={}}=t;e.style={...t,font:{...r,color:{argb:n?`FFFF0000`:void 0}}}}),e.columns=a,e.addRows(o),a.forEach(t=>{let{header:i,key:a,width:o,option:s,numFmt:c,locked:l,optionFormater:u}=t,d=e.getColumn(a);if(d.numFmt=te[c]||c,d.width=o||r,d.protection={locked:l===!0},s){let t=n.addWorksheet(a);t.state=`hidden`,u||=e=>`${e.label}${z}${e.value}`,t.getColumn(1).values=s.map(u),Array(100).fill(``).forEach((t,n)=>{if(n>0){let t=j();e.getCell(`${d.letter}${n}`).dataValidation={type:`list`,formulae:[`${a}!$A$1:$A$${s.length}`],showErrorMessage:!0,error:t(`excel.invalidInput`),errorStyle:`stop`,errorMessage:t(`excel.invalidOption`)}}})}}),a.some(e=>e.locked)&&await e.protect(`6737187214`,{selectLockedCells:!0,selectUnlockedCells:!0})}try{let t=await n.xlsx.writeBuffer();(0,r.saveAs)(new File([t],e,{type:`application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`}))}catch(e){console.log(e)}}function H(e){let t=j(),n=new i.default.Workbook;return n.creator=`distributor System`,n.lastModifiedBy=`distributor System`,n.created=new Date,n.modified=new Date,n.lastPrinted=new Date,Object.keys(e).sort((t,n)=>(e[t].sort??0)-(e[n].sort??0)).forEach(r=>{let i=r,a=!1;/[\\/:*?\[\]]/g.test(r)&&(r=r.replace(/[\\/:*?\[\]]/g,``),a=!0),r.length>31&&(r=r.substring(0,31).trim(),a=!0,console.warn(t(`excel.sheetNameTooLong`,[i,r]))),a&&(e[r]=e[i],delete e[i]),n.addWorksheet(r)}),n}function U(e){return e<26?String.fromCharCode(65+e):String.fromCharCode(65+Math.floor((e-26)/26))+String.fromCharCode(65+(e-26)%26)}function W(e){return new Promise(t=>{setTimeout(()=>{t()},e)})}function ne(e){return JSON.parse(JSON.stringify(e))}function G(e){let t=[],n={},r=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);for(let i of e){n[i.id]={...i,children:r(n,i.id)?n[i.id].children:[]};let e=n[i.id];i.pid==-1?t.push(e):(r(n,i.pid)||(n[i.pid]={children:[]}),n[i.pid].children.push(e))}return t}function K(e,t=` `){return e?e.split(t).filter(e=>e.trim()):[]}var q=class{constructor(e,t=[`label`,`value`,`labelEn`]){this.list=e.map(e=>({...e,label:e[t[0]],labelEn:e[t[2]]??e[t[0]]??``,value:e[t[1]]})),this.map=new Map(this.list.map(e=>[e[t[1]],e]))}getName(e){if(!this.has(e))return`-`;let t=A().global.locale,{label:n,labelEn:r}=this.map.get(e);return(t.value==`zh_cn`?n:r)??n??`-`}getTag(e){if(!this.has(e))return`info`;let{tag:t=`info`}=this.map.get(e);return t}getItem(e){return this.has(e)?this.map.get(e):null}getColor(e){if(!this.has(e))return null;let{color:t}=this.map.get(e);return t}has(e){return this.map.has(e)}};function re(e,t=[],n=`i18nName`){if(e.length==0)return new q([]);if(t.length<2){let e=j();throw Error(e(`tools.keysLengthError`))}return new q(e.map(e=>{let r={};return n&&(r.labelEn=e[n]),t.forEach((t,n)=>{n===0?r.label=e[t]:n===1?r.value=e[t]:r[t]=e[t]}),r}))}function ie(e){return e?e.replace(/<[^>]+>/g,``):``}function ae(e){return e?(e.includes(`\\\\u`)&&(e=e.replace(/\\/g,``)),e.replace(/\\u[\dA-F]{4}/gi,e=>String.fromCharCode(parseInt(e.replace(/\\u/g,``),16)))):``}function oe(e,t=10){let n=1024*1024*t;return!(e.size>n)}function se(e){return Array.from(10).fill(0).map((t,n)=>e+`_`+n)}function ce(e){let t={};return e.map((e,n)=>{let{key:r,option:i,type:a,optionFormater:o}=e,s=U(n);i&&!o?t[r]=`${s}---option`:a===`image`?t[r]=`${s}---image`:t[r]=s}),t}function le(e,t){return t.split(`.`).reduce((e,t)=>e&&e[t],e)}var J=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},ue=[`onClick`],de=J({__name:`index`,props:(0,n.mergeModels)({api:{type:Function},showCheckAll:{type:Boolean,default:!0},maxLimit:{type:Number,default:void 0},minLimit:{type:Number,default:void 0},optionClick:{type:Function,default:()=>{}},data:{type:Array},labelValue:{type:Object,default:()=>({label:`label`,labelEn:`labelEn`,value:`value`})},changeLocal:{type:Boolean,default:!1}},{modelValue:{},modelModifiers:{}}),emits:(0,n.mergeModels)([`success`,`change`,`changeAll`],[`update:modelValue`]),setup(e,{emit:t}){let r=e,i=(0,n.useAttrs)(),{t:a,locale:s}=(0,o.useI18n)(),c=(0,n.useModel)(e,`modelValue`),l=(0,n.computed)(()=>i[`value-key`]!=null),u=(0,n.ref)(``),d=(0,n.computed)(()=>{if(i.remote!==void 0)return r.data;let e=K(u.value),{data:t,labelValue:n}=r,a=t||m.value;if(e.length==0)return a;let{label:o,labelEn:c}=n,l=s.value==`en_us`?c||`i18nName`:o;return e.length==1?a.filter(t=>t[l].toLowerCase().includes(e[0].toLowerCase())):a.filter(t=>{let n=!1;return n=e.some(e=>t[l].toLowerCase()==e.toLowerCase()),n})}),f=(0,n.computed)({get(){return i.multiple==null||c.value==null?!1:c.value.length==d.value.length},set(e){return e}}),p=t,m=(0,n.ref)([]);r.api&&(async()=>{let{data:e}=await r.api();m.value=[...e],p(`success`,m)})();function h(e){p(`change`,e),g.value&&(0,n.nextTick)(()=>{r.optionClick&&r.optionClick(g.value),g.value=null})}let g=(0,n.ref)(null);function _(){let e=i.multiple===void 0?void 0:[];p(`change`,e),(0,n.nextTick)(()=>{r.optionClick&&r.optionClick(e)})}function v(e){g.value=e}let y=r.labelValue.label.split(`-`),b=e=>{if(y.length==1){if(r.changeLocal)return a(e[r.labelValue.label]);let t=s.value==`en_us`?e[r.labelValue.labelEn||`i18nName`]:e[r.labelValue.label];return t||=e[r.labelValue.label],t+``}else{let t=[];return y.forEach(n=>{t.push(e[n])}),t.join(`-`)}};function x(e){let t=r.data?r.data:m.value;c.value=e?t.map(e=>l.value?e:e[r.labelValue.value]):[],(0,n.nextTick)(()=>{p(`change`,c.value),p(`changeAll`,c.value,t)})}function S(e){p(`change`,l.value?e:e[r.labelValue.value]),(0,n.nextTick)(()=>{r.optionClick&&r.optionClick(e)})}function C(e){let t=l.value?e:e[r.labelValue.value],n=l.value?c.value.some(t=>t[r.labelValue.value]===e[r.labelValue.value]):c.value.includes(t);return!!(r.maxLimit>0&&c.value.length>=r.maxLimit&&!n||r.minLimit>0&&c.value.length===r.minLimit&&n)}function w(e){return e.map(e=>({...e,label:b(e),value:l.value?e:e[r.labelValue.value]}))}let T=(0,n.ref)([]);T.value=w(r.data?r.data:m.value),(0,n.watch)(()=>r.data?r.data:m.value,e=>{let t=w(e);if(t.length!==T.value.length)T.value=t;else{let e=!1;for(let n=0;n<t.length;n++)if(t[n].value!==T.value[n]?.value){e=!0;break}e&&(T.value=t)}},{deep:!0});let E=(0,n.computed)(()=>i.multiple!==void 0&&(r.maxLimit>0||r.minLimit>0)?T.value.map(e=>({...e,disabled:C(e)})):T.value);return(t,r)=>{let a=(0,n.resolveComponent)(`el-checkbox`),o=(0,n.resolveComponent)(`el-select-v2`),s=(0,n.resolveComponent)(`el-option`),p=(0,n.resolveComponent)(`el-select`);return(0,n.unref)(i).v2==null?((0,n.openBlock)(),(0,n.createBlock)(p,(0,n.mergeProps)({key:1,modelValue:c.value,"onUpdate:modelValue":r[3]||=e=>c.value=e,filterable:``,"collapse-tags":``,"collapse-tags-tooltip":``,"filter-method":(0,n.unref)(i).remote==null?e=>u.value=e:void 0,clearable:``},(0,n.unref)(i),{onClear:_}),{default:(0,n.withCtx)(()=>[(0,n.unref)(i).multiple!=null&&e.showCheckAll&&e.maxLimit==null?(0,n.renderSlot)(t.$slots,`header`,{key:0},()=>[(0,n.createVNode)(a,{class:`mgl20`,modelValue:f.value,"onUpdate:modelValue":r[2]||=e=>f.value=e,onChange:x},{default:(0,n.withCtx)(()=>[(0,n.createTextVNode)((0,n.toDisplayString)(t.$t(`quan-xuan`)),1)]),_:1},8,[`modelValue`])],!0):(0,n.createCommentVNode)(``,!0),((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(d.value,(t,r)=>((0,n.openBlock)(),(0,n.createBlock)(s,{key:r,label:b(t),disabled:(0,n.unref)(i).multiple!=null&&(e.maxLimit>0||e.minLimit>0)?C(t):!1,onClick:(0,n.withModifiers)(e=>S(t),[`stop`]),value:l.value?t:t[e.labelValue.value]},null,8,[`label`,`disabled`,`onClick`,`value`]))),128))]),_:3},16,[`modelValue`,`filter-method`])):((0,n.openBlock)(),(0,n.createBlock)(o,(0,n.mergeProps)({key:0,options:E.value,modelValue:c.value,"onUpdate:modelValue":r[1]||=e=>c.value=e},(0,n.unref)(i),{filterable:``,"collapse-tags":``,"collapse-tags-tooltip":``,clearable:``,onChange:h}),(0,n.createSlots)({default:(0,n.withCtx)(({item:e})=>[(0,n.createElementVNode)(`div`,{onClick:t=>v(e)},(0,n.toDisplayString)(e.label),9,ue)]),_:2},[(0,n.unref)(i).multiple==null?void 0:{name:`header`,fn:(0,n.withCtx)(()=>[(0,n.renderSlot)(t.$slots,`header`,{},()=>[(0,n.createVNode)(a,{class:`mgl20`,modelValue:f.value,"onUpdate:modelValue":r[0]||=e=>f.value=e,onChange:x},{default:(0,n.withCtx)(()=>[(0,n.createTextVNode)((0,n.toDisplayString)(t.$t(`quan-xuan`)),1)]),_:1},8,[`modelValue`])],!0)]),key:`0`}]),1040,[`options`,`modelValue`]))}}},[[`__scopeId`,`data-v-7b9ec6d8`]]),fe=(0,n.defineComponent)({props:{name:{tyepe:String,required:!0}}});function pe(e,t,r,i,a,o){let s=(0,n.resolveComponent)(`el-icon`);return(0,n.openBlock)(),(0,n.createBlock)(s,{class:`cmp-icon`},{default:(0,n.withCtx)(()=>[((0,n.openBlock)(),(0,n.createBlock)((0,n.resolveDynamicComponent)(e.name)))]),_:1})}var Y=J(fe,[[`render`,pe],[`__scopeId`,`data-v-733f9daa`]]),me={class:`confirm-button-wrapper`},he=J({__name:`index`,emits:[`ok`,`no`],setup(e,{emit:t}){let r=t,i=(0,s.debounce)(()=>{r(`ok`)},500);function a(){r(`no`)}return(e,t)=>{let r=(0,n.resolveComponent)(`el-popconfirm`);return(0,n.openBlock)(),(0,n.createElementBlock)(`span`,me,[(0,n.createVNode)(r,(0,n.mergeProps)(e.$attrs,{onConfirm:(0,n.unref)(i),onCancel:a}),{reference:(0,n.withCtx)(()=>[(0,n.renderSlot)(e.$slots,`default`,{},void 0,!0)]),_:3},16,[`onConfirm`])])}}},[[`__scopeId`,`data-v-24cb35fd`]]),ge={class:`ImportButton`},_e=[`accept`],ve=J({__name:`index`,props:{accept:{type:String,default:`.xlsx,.xls`},fields:{type:Object,default:()=>({})},fileChange:{type:Function,required:!0},version:{type:Number,required:!1}},setup(e){let{t:r}=(0,o.useI18n)(),i=e,a=(0,n.ref)(null),s=(0,n.ref)(!1);function c(e){let t=e.match(/__v(\d+)/);return t?parseInt(t[1],10):null}async function l(e){s.value=!0;let n=e.target.files[0];if(console.log(`props.version`,i.version),i.version!==void 0){let e=c(n.name);if(console.log(`fileVersion`,e),e===null||e!==i.version){t.ElMessage.error(r(`import.versionMismatch`)),s.value=!1,a.value.value=null;return}}let o=await B(n,i.fields).catch(()=>{s.value=!1}).finally(()=>{a.value.value=null});await i.fileChange(o).finally(()=>{s.value=!1})}return(t,r)=>{let i=(0,n.resolveComponent)(`el-button`);return(0,n.openBlock)(),(0,n.createElementBlock)(`div`,ge,[(0,n.createVNode)(i,(0,n.mergeProps)({type:`primary`,loading:s.value,class:`mgr10`,onClick:r[0]||=e=>a.value.click()},t.$attrs),{default:(0,n.withCtx)(()=>[(0,n.renderSlot)(t.$slots,`default`,{},()=>[(0,n.createTextVNode)((0,n.toDisplayString)(t.$t(`dao-ru`)),1)],!0)]),_:3},16,[`loading`]),(0,n.createElementVNode)(`input`,{onChange:l,ref_key:`input`,ref:a,accept:e.accept,style:{position:`absolute`,width:`0px`,height:`0px`,opacity:`0`},type:`file`},null,40,_e)])}}},[[`__scopeId`,`data-v-b8f856ea`]]);function X(e){let t={};return e.forEach(e=>{let{key:n,type:r,option:i={},value:o,dateType:s=`date`}=e;if(n)if(r==`input`&&i?.multiple)t[n]=K(o);else if(r==`date`)if(s.includes(`range`)){let[e,r]=n,[i,c]=o||[];i&&s==`daterange`&&(i=(0,a.default)(i).format(`YYYY-MM-DD 00:00:00`),c=(0,a.default)(c).format(`YYYY-MM-DD 23:59:59`)),t[e]=i,t[r]=c}else t[n]=o;else t[n]=o}),t}var ye={key:0},be={class:`btns`},xe={class:`left`},Se={class:`right`},Ce=J({__name:`index`,props:{form:{type:Object,required:!0}},emits:[`confirm`,`reset`,`visibleChange`],setup(e,{expose:t,emit:r}){let i=e,a=r,c=(0,n.ref)(!0),l=(0,n.ref)(null),{t:u}=(0,o.useI18n)(),d={datetimerange:`YYYY-MM-DD HH:mm:ss`,daterange:`YYYY-MM-DD`,month:`YYYY-MM`},f=(0,n.computed)(()=>c.value?u(`guan-bi`):u(`zhan-kai`));function p(){a(`confirm`)}function m(e){e.option.onClear&&e.option.onClear(),a(`confirm`)}function h(){a(`reset`)}function g(){a(`confirm`)}function _(){return X(i.form.items)}let v=(0,s.cloneDeep)(i.form.items);function y(){i.form.items.forEach(e=>{let t=v.find(t=>t.key==e.key);t&&(e.value=t.value)})}return t({getPrm:_,reset:y}),(t,r)=>{let i=(0,n.resolveComponent)(`el-input`),o=(0,n.resolveComponent)(`el-date-picker`),s=(0,n.resolveComponent)(`el-form-item`),u=(0,n.resolveComponent)(`el-form`),_=(0,n.resolveComponent)(`el-link`),v=(0,n.resolveComponent)(`el-button`);return(0,n.openBlock)(),(0,n.createElementBlock)(`div`,{class:`searchBar-container mgt10 mgb10`,onKeydown:(0,n.withKeys)(p,[`enter`])},[(0,n.createElementVNode)(`div`,{class:`searchBar`,style:(0,n.normalizeStyle)({height:c.value?`auto`:`32px`})},[(0,n.createVNode)(u,{inline:``,model:e.form.data},{default:(0,n.withCtx)(()=>[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(e.form.items.filter(e=>!e.hidden),e=>((0,n.openBlock)(),(0,n.createElementBlock)(n.Fragment,{key:e.key},[e.type==`br`?((0,n.openBlock)(),(0,n.createElementBlock)(`br`,ye)):((0,n.openBlock)(),(0,n.createBlock)(s,{key:1,label:e.name},{default:(0,n.withCtx)(()=>[e.type===`input`?((0,n.openBlock)(),(0,n.createBlock)(i,{key:0,modelValue:e.value,"onUpdate:modelValue":t=>e.value=t,class:(0,n.normalizeClass)(e.option?.class||`w150`),placeholder:t.$t(`qing-shu-ru`),clearable:``},null,8,[`modelValue`,`onUpdate:modelValue`,`class`,`placeholder`])):e.type===`custom`?((0,n.openBlock)(),(0,n.createBlock)((0,n.resolveDynamicComponent)(e.render),{key:1})):(0,n.createCommentVNode)(``,!0),e.type===`select`?((0,n.openBlock)(),(0,n.createBlock)(de,(0,n.mergeProps)({key:2,class:e.option?.class||`w150`,modelValue:e.value,"onUpdate:modelValue":t=>e.value=t},{ref_for:!0},e.option,{onChange:p,onClear:t=>m(e),placeholder:t.$t(`qing-xuan-ze`)}),null,16,[`class`,`modelValue`,`onUpdate:modelValue`,`onClear`,`placeholder`])):(0,n.createCommentVNode)(``,!0),e.type===`date`?((0,n.openBlock)(),(0,n.createBlock)(o,(0,n.mergeProps)({key:3,class:{datetimerange:`w300`,daterange:`w200`}[e.dateType]||`w100`,modelValue:e.value,"onUpdate:modelValue":t=>e.value=t,"value-format":d[e.dateType]||`YYYY-MM-DD`,type:e.dateType||`date`,onFocus:t=>l.value=e,onChange:t=>g(e),placeholder:t.$t(`qing-xuan-ze`),"start-placeholder":t.$t(`kai-shi-shi-jian`),"end-placeholder":t.$t(`jie-shu-shi-jian`)},{ref_for:!0},e.option),null,16,[`class`,`modelValue`,`onUpdate:modelValue`,`value-format`,`type`,`onFocus`,`onChange`,`placeholder`,`start-placeholder`,`end-placeholder`])):(0,n.createCommentVNode)(``,!0)]),_:2},1032,[`label`]))],64))),128))]),_:1},8,[`model`])],4),(0,n.createElementVNode)(`div`,be,[(0,n.createElementVNode)(`div`,xe,[(0,n.renderSlot)(t.$slots,`table-header-left`,{},void 0,!0)]),(0,n.createElementVNode)(`div`,Se,[(0,n.createVNode)(_,{underline:`never`,class:`mgr10`,onClick:r[0]||=()=>{a(`visibleChange`,!c.value),c.value=!c.value}},{default:(0,n.withCtx)(()=>[(0,n.createVNode)(Y,{name:c.value?`ArrowUp`:`ArrowDown`},null,8,[`name`]),(0,n.createTextVNode)(` `+(0,n.toDisplayString)(f.value),1)]),_:1}),(0,n.createVNode)(v,{type:`primary`,onClick:p},{default:(0,n.withCtx)(()=>[(0,n.createTextVNode)((0,n.toDisplayString)(t.$t(`shai-xuan`)),1)]),_:1}),(0,n.createVNode)(v,{type:`primary`,onClick:h},{default:(0,n.withCtx)(()=>[(0,n.createTextVNode)((0,n.toDisplayString)(t.$t(`chong-zhi`)),1)]),_:1}),(0,n.renderSlot)(t.$slots,`btn`,{},void 0,!0)])])],32)}}},[[`__scopeId`,`data-v-db6f71dd`]]),we={pageNoKey:`pageNo`,pageSizeKey:`pageSize`,totalKey:`total`,defaultPageSize:10,pageSizes:[10,50,100,500],responseDataKeys:{rows:[`rows`,`records`,`list`],total:[`totalRows`,`total`]},showSearch:!1,showPage:!1,showShadow:!1,showCheckBox:!1,enableCellCopy:!0},Z={...we};function Te(e){Z={...Z,...e,responseDataKeys:{...Z.responseDataKeys,...e.responseDataKeys||{}}}}function Ee(){return Z}function De(){Z={...we}}var Oe={class:`center`},ke=J({__name:`index`,props:{id:{type:String,required:!1},loading:{type:Boolean,default:!1},immediate:{type:Boolean,default:!0},searchForm:{type:Object,default:()=>({items:[],selections:[]})},api:{type:Function},data:{type:Array},tableConfig:{type:Object,default:()=>({})}},setup(e,{expose:t}){let{t:r,locale:i}=(0,o.useI18n)(),a=(0,c.useRoute)(),l=Ee(),u=e,d=(0,n.ref)(!1),f=(0,n.ref)([]);u.searchForm.showSearch===void 0&&(u.searchForm.showSearch=l.showSearch),u.searchForm.showPage===void 0&&(u.searchForm.showPage=l.showPage),u.searchForm.showShadow===void 0&&(u.searchForm.showShadow=l.showShadow),u.searchForm.showCheckBox===void 0&&(u.searchForm.showCheckBox=l.showCheckBox),u.searchForm.enableCellCopy===void 0&&(u.searchForm.enableCellCopy=l.enableCellCopy),u.searchForm.selections||(u.searchForm.selections=[]);let p=(0,n.computed)(()=>{let e=a.path.replace(/\//g,`-`).replace(/^-/,``)||`default-table`;return u.id?`listPageId-${e}-${u.id}`:`listPageId-${e}`}),m=(0,s.cloneDeep)(u.searchForm.items),h=u.searchForm.pageNoKey||l.pageNoKey,g=u.searchForm.pageSizeKey||l.pageSizeKey,_=(0,n.reactive)({[h]:1,[g]:u.searchForm.defaultPageSize||l.defaultPageSize,total:0}),v=(0,n.ref)(null),y=(0,n.ref)(null),b=(0,n.ref)(450),x=(0,s.debounce)(()=>{(0,n.nextTick)(()=>{if(!y.value)return;let e=y.value.getBoundingClientRect(),t=window.innerHeight-e.top-100;b.value=Math.max(t,200)})},100),S=()=>{x()},C=()=>{if(!u.searchForm.enableCellCopy&&!l.enableCellCopy)return!1;let e=v.value;if(!e||!e.$el)return!1;let t=e.$el;return t.classList.add(`cell-copy-enabled`),t.setAttribute(`tabindex`,`-1`),t.removeEventListener(`mousedown`,F),t.removeEventListener(`mousemove`,I),t.removeEventListener(`mouseup`,L),t.removeEventListener(`keydown`,V),t.addEventListener(`mousedown`,F),t.addEventListener(`mousemove`,I),t.addEventListener(`mouseup`,L),t.addEventListener(`keydown`,V),!0};(0,n.onMounted)(()=>{x(),window.addEventListener(`resize`,S),(u.searchForm.enableCellCopy||l.enableCellCopy)&&(document.addEventListener(`mouseup`,H),document.addEventListener(`mousedown`,U),setTimeout(()=>{C()},500))}),(0,n.onUpdated)(()=>{(u.searchForm.enableCellCopy||l.enableCellCopy)&&setTimeout(()=>{C()},500)}),(0,n.onUnmounted)(()=>{if(window.removeEventListener(`resize`,S),u.searchForm.enableCellCopy||l.enableCellCopy){document.removeEventListener(`mouseup`,H),document.removeEventListener(`mousedown`,U);let e=v.value;if(e&&e.$el){let t=e.$el;t.removeEventListener(`mousedown`,F),t.removeEventListener(`mousemove`,I),t.removeEventListener(`mouseup`,L),t.removeEventListener(`keydown`,V)}}});let w=(0,n.computed)(()=>M.value.height||b.value),T;async function E(e){let{dataFormat:t}=u.tableConfig;e[h]!=1&&(e.nextSearchAfter=T),d.value=!0;let{code:r,data:i={}}=await u.api(e).finally(()=>{d.value=!1,u.searchForm.selections=[]});if(r==200){let e=[];for(let t of l.responseDataKeys.rows)if(i[t]){e=i[t];break}let r=0;for(let e of l.responseDataKeys.total)if(i[e]!==void 0){r=i[e];break}f.value=t?t(e):e,_.total=r,T=i.nextSearchAfter,(u.searchForm.enableCellCopy||l.enableCellCopy)&&(0,n.nextTick)(()=>{setTimeout(()=>{C()},100)})}}function D(e={}){let{searchData:t=()=>({})}=u.tableConfig,n=t();E({..._,...X(u.searchForm.items),...e,...n})}function O(){let{reset:e}=u.tableConfig;e&&e(),u.searchForm.items.forEach(e=>{let t=m.find(t=>(0,s.isArray)(e.key)&&(0,s.isArray)(t.key)?e.key.join(`,`)==t.key.join(`,`):t.key==e.key);t&&(e.value=t.value)}),D()}u.api&&u.immediate&&D();function k(){return{..._,...X(u.searchForm.items)}}let A=()=>{let e=v.value;e&&e.clearSort()},j=(0,n.reactive)({storage:!0}),ee=(0,n.reactive)({drag:!0,resizable:!0,maxFixedSize:0}),M=(0,n.computed)(()=>{let{customConfig:e,columnConfig:t,...n}=u.tableConfig;return{headerAlign:`left`,align:`center`,customConfig:{...j,...e},columnConfig:{...ee,...t},"virtual-x-config":{enabled:!1,scrollToLeftOnChange:!1},"virtual-y-config":{enabled:!0,gt:100},...n}}),N=(0,n.reactive)({isSelecting:!1,startCell:null,endCell:null,selectedCells:[]}),P=e=>{let t=e.closest(`.vxe-body--column`);if(!t||t.classList.contains(`col--checkbox`)||t.classList.contains(`col--seq`))return null;let n=t.closest(`.vxe-body--row`);if(!n)return null;let r=v.value;if(!r)return null;let i=-1,a=n.getAttribute(`data-rowid`);if(a!=null)i=parseInt(a,10);else{let e=n.parentElement;i=Array.from(e.querySelectorAll(`.vxe-body--row`)).indexOf(n)}if(i<0)return null;let o=-1,s=t.getAttribute(`data-colid`);if(s&&(o=r.getColumns().findIndex(e=>e.id===s)),o<0){let e=Array.from(n.querySelectorAll(`.vxe-body--column`)).indexOf(t),i=!!t.closest(`.vxe-table--fixed-left-wrapper`),a=!!t.closest(`.vxe-table--fixed-right-wrapper`),s=r.getColumns();if(i){let t=s.filter(e=>e.fixed===`left`);e<t.length&&(o=s.indexOf(t[e]))}else if(a){let t=s.filter(e=>e.fixed===`right`);e<t.length&&(o=s.indexOf(t[e]))}else{let t=u.searchForm.showCheckBox?1:0;o=s.filter(e=>e.fixed===`left`).length+e-t}}return o<0?null:{rowIndex:i,colIndex:o,cell:t}},F=e=>{let t=P(e.target);if(!t){R();return}N.isSelecting=!0,N.startCell={rowIndex:t.rowIndex,colIndex:t.colIndex},N.endCell={...N.startCell},z(),B()},I=e=>{if(!N.isSelecting)return;let t=P(e.target);t&&(N.endCell={rowIndex:t.rowIndex,colIndex:t.colIndex},z(),B())},L=()=>{N.isSelecting=!1},R=()=>{N.selectedCells=[],N.startCell=null,N.endCell=null;let e=v.value;e&&e.$el.querySelectorAll(`.cell-selected, .cell-border-top, .cell-border-right, .cell-border-bottom, .cell-border-left`).forEach(e=>{e.classList.remove(`cell-selected`,`cell-border-top`,`cell-border-right`,`cell-border-bottom`,`cell-border-left`)})},z=()=>{if(!N.startCell||!N.endCell){N.selectedCells=[];return}let e=N.startCell.rowIndex,t=N.endCell.rowIndex,n=N.startCell.colIndex,r=N.endCell.colIndex,i=Math.min(e,t),a=Math.max(e,t),o=Math.min(n,r),s=Math.max(n,r);N.selectedCells=[];for(let e=i;e<=a;e++)for(let t=o;t<=s;t++)N.selectedCells.push({rowIndex:e,colIndex:t})},B=()=>{(0,n.nextTick)(()=>{let e=v.value;if(!e)return;let t=e.$el;if(t.querySelectorAll(`.cell-selected, .cell-border-top, .cell-border-right, .cell-border-bottom, .cell-border-left`).forEach(e=>{e.classList.remove(`cell-selected`,`cell-border-top`,`cell-border-right`,`cell-border-bottom`,`cell-border-left`)}),N.selectedCells.length===0)return;let n=e.getColumns(),r=N.selectedCells.map(e=>e.rowIndex),i=N.selectedCells.map(e=>e.colIndex),a=Math.min(...r),o=Math.max(...r),s=Math.min(...i),c=Math.max(...i),l=[t.querySelector(`.vxe-table--body-wrapper tbody`),t.querySelector(`.vxe-table--fixed-left-wrapper tbody`),t.querySelector(`.vxe-table--fixed-right-wrapper tbody`)].filter(Boolean);N.selectedCells.forEach(({rowIndex:e,colIndex:t})=>{let r=n[t];if(!r)return;let i=r.fixed===`left`,d=r.fixed===`right`;for(let f of l){let l=f.querySelectorAll(`.vxe-body--row`)[e];if(!l)continue;let p=Array.from(l.querySelectorAll(`.vxe-body--column`)),m=null;if(i&&f.closest(`.vxe-table--fixed-left-wrapper`))m=p[n.filter(e=>e.fixed===`left`).indexOf(r)];else if(d&&f.closest(`.vxe-table--fixed-right-wrapper`))m=p[n.filter(e=>e.fixed===`right`).indexOf(r)];else if(!i&&!d&&f.closest(`.vxe-table--body-wrapper`)){let e=u.searchForm.showCheckBox?1:0;m=p[t-n.filter(e=>e.fixed===`left`).length+e]}if(m&&!m.classList.contains(`col--checkbox`)&&!m.classList.contains(`col--seq`)){m.classList.add(`cell-selected`),e===a&&m.classList.add(`cell-border-top`),e===o&&m.classList.add(`cell-border-bottom`),t===s&&m.classList.add(`cell-border-left`),t===c&&m.classList.add(`cell-border-right`);break}}})})},te=async()=>{if(N.selectedCells.length===0)return;let e=v.value;if(!e)return;let t=e.$el,n=e.getColumns(),r=[...new Set(N.selectedCells.map(e=>e.rowIndex))].sort((e,t)=>e-t),i=[...new Set(N.selectedCells.map(e=>e.colIndex))].sort((e,t)=>e-t),a=[t.querySelector(`.vxe-table--body-wrapper tbody`),t.querySelector(`.vxe-table--fixed-left-wrapper tbody`),t.querySelector(`.vxe-table--fixed-right-wrapper tbody`)].filter(Boolean),o=[];r.forEach(e=>{let t=[];i.forEach(r=>{let i=n[r];if(!i){t.push(``);return}let o=i.fixed===`left`,s=i.fixed===`right`,c=``;for(let t of a){let a=t.querySelectorAll(`.vxe-body--row`)[e];if(!a)continue;let l=Array.from(a.querySelectorAll(`.vxe-body--column`)),d=null;if(o&&t.closest(`.vxe-table--fixed-left-wrapper`))d=l[n.filter(e=>e.fixed===`left`).indexOf(i)];else if(s&&t.closest(`.vxe-table--fixed-right-wrapper`))d=l[n.filter(e=>e.fixed===`right`).indexOf(i)];else if(!o&&!s&&t.closest(`.vxe-table--body-wrapper`)){let e=u.searchForm.showCheckBox?1:0;d=l[r-n.filter(e=>e.fixed===`left`).length+e]}if(d&&!d.classList.contains(`col--checkbox`)&&!d.classList.contains(`col--seq`)){c=d.innerText||d.textContent||``,c=c.trim(),c=c.replace(/\n/g,` `).replace(/\s+/g,` `);break}}t.push(c)}),o.push(t.join(` `))});let s=o.join(`
|
|
1
|
+
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`element-plus`),require(`vue`),require(`file-saver`),require(`exceljs`),require(`dayjs`),require(`vue-i18n`),require(`lodash`),require(`vue-router`),require(`vuex`),require(`vxe-pc-ui`)):typeof define==`function`&&define.amd?define([`exports`,`element-plus`,`vue`,`file-saver`,`exceljs`,`dayjs`,`vue-i18n`,`lodash`,`vue-router`,`vuex`,`vxe-pc-ui`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.JoyAdminComponents={},e.ElementPlus,e.Vue,e.fileSaver,e.ExcelJS,e.dayjs,e.VueI18n,e._,e.VueRouter,e.Vuex,e.VxeUI))})(this,function(e,t,n,r,i,a,o,s,c,l,u){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var d=Object.create,f=Object.defineProperty,p=Object.getOwnPropertyDescriptor,m=Object.getOwnPropertyNames,h=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty,_=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),v=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=m(t),a=0,o=i.length,s;a<o;a++)s=i[a],!g.call(e,s)&&s!==n&&f(e,s,{get:(e=>t[e]).bind(null,s),enumerable:!(r=p(t,s))||r.enumerable});return e},y=(e,t,n)=>(n=e==null?{}:d(h(e)),v(t||!e||!e.__esModule?f(n,`default`,{value:e,enumerable:!0}):n,e));i=y(i),a=y(a);var b=(0,n.defineComponent)({name:`LayOutForm`,setup(e,{slots:r,attrs:i,emit:a}){let o=(0,n.ref)(null),s=()=>r.default?r.default().filter(e=>e.type!==Symbol.for(`v-cmt`)).map(e=>e.type===Symbol.for(`v-fgt`)?e.children:e).flat().map(e=>(0,n.h)(t.ElCol,{span:e.props?.span||e.props?.colProps?.span||24,...e.props?.colProps},{default:()=>e})):null;(0,n.onMounted)(()=>{a(`ref`,o.value)});function c(){return(0,n.h)(t.ElForm,{...i,ref:o},()=>(0,n.h)(t.ElRow,{gutter:i.gutter??20},{default:()=>s()}))}return c}}),x=_(((e,t)=>{(function(n,r){typeof e==`object`&&t!==void 0?t.exports=r():typeof define==`function`&&define.amd?define(r):(n=typeof globalThis<`u`?globalThis:n||self).dayjs_plugin_utc=r()})(e,(function(){"use strict";var e=`minute`,t=/[+-]\d\d(?::?\d\d)?/g,n=/([+-]|\d\d)/g;return function(r,i,a){var o=i.prototype;a.utc=function(e){return new i({date:e,utc:!0,args:arguments})},o.utc=function(t){var n=a(this.toDate(),{locale:this.$L,utc:!0});return t?n.add(this.utcOffset(),e):n},o.local=function(){return a(this.toDate(),{locale:this.$L,utc:!1})};var s=o.parse;o.parse=function(e){e.utc&&(this.$u=!0),this.$utils().u(e.$offset)||(this.$offset=e.$offset),s.call(this,e)};var c=o.init;o.init=function(){if(this.$u){var e=this.$d;this.$y=e.getUTCFullYear(),this.$M=e.getUTCMonth(),this.$D=e.getUTCDate(),this.$W=e.getUTCDay(),this.$H=e.getUTCHours(),this.$m=e.getUTCMinutes(),this.$s=e.getUTCSeconds(),this.$ms=e.getUTCMilliseconds()}else c.call(this)};var l=o.utcOffset;o.utcOffset=function(r,i){var a=this.$utils().u;if(a(r))return this.$u?0:a(this.$offset)?l.call(this):this.$offset;if(typeof r==`string`&&(r=function(e){e===void 0&&(e=``);var r=e.match(t);if(!r)return null;var i=(``+r[0]).match(n)||[`-`,0,0],a=i[0],o=60*i[1]+ +i[2];return o===0?0:a===`+`?o:-o}(r),r===null))return this;var o=Math.abs(r)<=16?60*r:r;if(o===0)return this.utc(i);var s=this.clone();if(i)return s.$offset=o,s.$u=!1,s;var c=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();return(s=this.local().add(o+c,e)).$offset=o,s.$x.$localOffset=c,s};var u=o.format;o.format=function(e){var t=e||(this.$u?`YYYY-MM-DDTHH:mm:ss[Z]`:``);return u.call(this,t)},o.valueOf=function(){var e=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||this.$d.getTimezoneOffset());return this.$d.valueOf()-6e4*e},o.isUTC=function(){return!!this.$u},o.toISOString=function(){return this.toDate().toISOString()},o.toString=function(){return this.toDate().toUTCString()};var d=o.toDate;o.toDate=function(e){return e===`s`&&this.$offset?a(this.format(`YYYY-MM-DD HH:mm:ss:SSS`)).toDate():d.call(this)};var f=o.diff;o.diff=function(e,t,n){if(e&&this.$u===e.$u)return f.call(this,e,t,n);var r=this.local(),i=a(e).local();return f.call(r,i,t,n)}}}))})),S=_(((e,t)=>{(function(n,r){typeof e==`object`&&t!==void 0?t.exports=r():typeof define==`function`&&define.amd?define(r):(n=typeof globalThis<`u`?globalThis:n||self).dayjs_plugin_timezone=r()})(e,(function(){"use strict";var e={year:0,month:1,day:2,hour:3,minute:4,second:5},t={};return function(n,r,i){var a,o=function(e,n,r){r===void 0&&(r={});var i=new Date(e);return function(e,n){n===void 0&&(n={});var r=n.timeZoneName||`short`,i=e+`|`+r,a=t[i];return a||(a=new Intl.DateTimeFormat(`en-US`,{hour12:!1,timeZone:e,year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`,timeZoneName:r}),t[i]=a),a}(n,r).formatToParts(i)},s=function(t,n){for(var r=o(t,n),a=[],s=0;s<r.length;s+=1){var c=r[s],l=c.type,u=c.value,d=e[l];d>=0&&(a[d]=parseInt(u,10))}var f=a[3],p=f===24?0:f,m=a[0]+`-`+a[1]+`-`+a[2]+` `+p+`:`+a[4]+`:`+a[5]+`:000`,h=+t;return(i.utc(m).valueOf()-(h-=h%1e3))/6e4},c=r.prototype;c.tz=function(e,t){e===void 0&&(e=a);var n,r=this.utcOffset(),o=this.toDate(),s=o.toLocaleString(`en-US`,{timeZone:e}),c=Math.round((o-new Date(s))/1e3/60),l=15*-Math.round(o.getTimezoneOffset()/15)-c;if(!Number(l))n=this.utcOffset(0,t);else if(n=i(s,{locale:this.$L}).$set(`millisecond`,this.$ms).utcOffset(l,!0),t){var u=n.utcOffset();n=n.add(r-u,`minute`)}return n.$x.$timezone=e,n},c.offsetName=function(e){var t=this.$x.$timezone||i.tz.guess(),n=o(this.valueOf(),t,{timeZoneName:e}).find((function(e){return e.type.toLowerCase()===`timezonename`}));return n&&n.value};var l=c.startOf;c.startOf=function(e,t){if(!this.$x||!this.$x.$timezone)return l.call(this,e,t);var n=i(this.format(`YYYY-MM-DD HH:mm:ss:SSS`),{locale:this.$L});return l.call(n,e,t).tz(this.$x.$timezone,!0)},i.tz=function(e,t,n){var r=n&&t,o=n||t||a,c=s(+i(),o);if(typeof e!=`string`)return i(e).tz(o);var l=function(e,t,n){var r=e-60*t*1e3,i=s(r,n);if(t===i)return[r,t];var a=s(r-=60*(i-t)*1e3,n);return i===a?[r,i]:[e-60*Math.min(i,a)*1e3,Math.max(i,a)]}(i.utc(e,r).valueOf(),c,o),u=l[0],d=l[1],f=i(u).utcOffset(d);return f.$x.$timezone=o,f},i.tz.guess=function(){return Intl.DateTimeFormat().resolvedOptions().timeZone},i.tz.setDefault=function(e){a=e}}}))})),C=y(x()),w=y(S()),T={"dao-ru":`导入`,"quan-xuan":`全选`,"xia-zai-dao-ru-mo-ban":`下载导入模板`,"xu-hao":`序号`,"qing-shu-ru":`请输入`,"qing-xuan-ze":`请选择`,"kai-shi-shi-jian":`开始时间`,"jie-shu-shi-jian":`结束时间`,"shai-xuan":`筛选`,"chong-zhi":`重置`,"guan-bi":`关闭`,"zhan-kai":`展开`,"qu-xiao":`取消`,"ti-jiao":`提交`,"que-ding":`确定`,"que-ding-guan-bi-ma":`确定关闭吗`,"xia-zai-dao-ru-mo-ban":`下载导入模板`,excel:{fieldsMappingRequired:`请输入列字段映射`,invalidInput:`非法输入`,invalidOption:`请输入有效选项!`,copyFailed:`复制失败`,sheetNameTooLong:`Sheet名称 "{0}" 长度超过31个字符,已自动截断为 "{1}"`},import:{versionMismatch:`模板版本有更新,请重新下载模板`},validate:{invalidInput:`请输入正确内容`},tools:{keysLengthError:`keys 长度必须大于2 默认前两位为 label value`}},E={"dao-ru":`Import`,"quan-xuan":`Select All`,"xia-zai-dao-ru-mo-ban":`Download Import Template`,"xu-hao":`No.`,"qing-shu-ru":`Please enter`,"qing-xuan-ze":`Please select`,"kai-shi-shi-jian":`Start Time`,"jie-shu-shi-jian":`End Time`,"shai-xuan":`Filter`,"chong-zhi":`Reset`,"guan-bi":`Collapse`,"zhan-kai":`Expand`,"qu-xiao":`Cancel`,"ti-jiao":`Submit`,"que-ding":`Confirm`,"que-ding-guan-bi-ma":`Are you sure to close?`,"xia-zai-dao-ru-mo-ban":`Download Import Template`,excel:{fieldsMappingRequired:`Please enter column field mapping`,invalidInput:`Invalid input`,invalidOption:`Please enter a valid option!`,copyFailed:`Copy failed`,sheetNameTooLong:`Sheet name "{0}" exceeds 31 characters, automatically truncated to "{1}"`},import:{versionMismatch:`Template version has been updated, please re-download the template`},validate:{invalidInput:`Please enter valid content`},tools:{keysLengthError:`Keys length must be greater than 2, default first two are label and value`}},D={zh_cn:T,en_us:E},O=null;function k(e=null){if(e){let{global:t}=e;return t.messages.value?.zh_cn?t.mergeLocaleMessage(`zh_cn`,T):t.setLocaleMessage(`zh_cn`,T),t.messages.value?.en_us?t.mergeLocaleMessage(`en_us`,E):t.setLocaleMessage(`en_us`,E),O=e,e}return O||=(0,o.createI18n)({legacy:!1,locale:`zh_cn`,fallbackLocale:`zh_cn`,messages:D}),O}function A(){return O||k()}function j(){return A().global.t}a.default.extend(C.default),a.default.extend(w.default);async function ee(e,t){let{fields:n,range:r=1}=t;if(!n){let e=j();throw Error(e(`excel.fieldsMappingRequired`))}let a=new i.default.Workbook;await a.xlsx.load(e);let o={};return a.eachSheet(function(e,t){let i=[];e.eachRow(function(e,t){if(t>r){let t={},r=!0;Object.keys(n).forEach(i=>{let a=e.getCell(n[i]).value;t[i]=a,a&&(r=!1)}),r||i.push(t)}}),o[e._name]=i}),a=null,o}var M={columnWidth:30};async function N(e,t,n=[],i={}){if(!e||!t)return;let{columnStyle:a}=i,{columnWidth:o}=M;t.forEach(e=>{e.width=e.width?e.width:o});let{workbook:s,worksheet:c}=P();c.columns=t,c.addRows(n),a&&await F(s,c,a);try{let t=await s.xlsx.writeBuffer();(0,r.saveAs)(new File([t],e,{type:`application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`}))}catch(e){console.log(e)}}function P(){let e=new i.default.Workbook;return e.creator=`distributor System`,e.lastModifiedBy=`distributor System`,e.created=new Date,e.modified=new Date,e.lastPrinted=new Date,{workbook:e,worksheet:e.addWorksheet(`Sheet1`)}}async function F(e,t,n){let r=Object.keys(n);for(let i of r){let r=n[i],{type:a}=r;switch(a){case`IMG`:await I(e,t,i,r);break}}}async function I(e,t,n,r){let i=t.getColumn(n),a=i.values;t.getColumn(n).width=20,t.eachRow((e,t)=>{t>1&&(e.height=40)});for(let n=0,r=a.length;n<r;n++){if(n<2)continue;let r=a[n];r&&(t.getCell(i.letter+n).value=``,await L(e,t,r,{width:100,height:50,col:i._number-1,row:n-1}))}}async function L(e,t,n,r){let{col:i,row:a,width:o,height:s}=r,{success:c,base64:l}=await R(n,.3);if(c){let n=e.addImage({base64:l,extension:`jpeg`});t.addImage(n,{tl:{col:i,row:a},ext:{width:o,height:s}})}}function R(e,t=1){let n=new Image;return n.setAttribute(`crossOrigin`,`anonymous`),n.crossOrigin=`anonymous`,n.src=e,new Promise((e,r)=>{n.onload=()=>{let r=document.createElement(`canvas`);r.width=n.width,r.height=n.height,r.getContext(`2d`).drawImage(n,0,0,r.width,r.height),e({success:!0,base64:r.toDataURL(`image/jpeg`,t)})},n.onerror=()=>{e({success:!1})}})}var z=`---`;async function B(e,t){let{fields:n,range:r=1}=t;if(!n){let e=j();throw Error(e(`excel.fieldsMappingRequired`))}let o=new i.default.Workbook;await o.xlsx.load(e);let s={};return o.eachSheet(function(e,t){if(e.state==`visible`){let t=[],i=n[e._name];if(i){let n=Object.values(i).some(e=>e.includes(`image`)),c={};n&&(e.getImages().forEach(e=>{let{tl:t}=e.range,n=o.model.media.find(t=>t.index===e.imageId);if(n){let e=n.buffer.toString(`base64`),r=`data:image/${n.extension};base64,${e}`,i=`${Math.ceil(t.row)}_${Math.ceil(t.col)}`;c[i]?c[i].push(r):c[i]=[r]}}),console.log(`withImages-imageMap`,c)),e.eachRow(function(e,o){if(o>r){let r={_excelRowNumber:o},s=!0;Object.keys(i).forEach(t=>{let[l,u]=i[t].split(z),d=e.getCell(l),f;f=u==`image`&&n?c[`${o}_${d._column._number}`]||``:d.result==null?d.value?.richText?d.value.richText.reduce((e,t)=>e+t.text,``):d.value?.hyperlink?d.value.text||d.value.hyperlink:d.type==4&&d.value?(0,a.default)(d.value).utc().format(`YYYY-MM-DD HH:mm:ss`):d.value:d.result,f&&u==`option`&&(f=f.split(z)[1]),r[t]=f,f&&(s=!1)}),s||t.push(r)}}),s[e._name]=t}}}),o=null,s}var te={date:`yyyy-mm-dd`,number:`0`,string:`@`};async function V(e,t){if(!e||t.length==0)return;let n=H(t);for(let e of n.worksheets){let{columnWidth:r}=M,i=t[e.name];if(!i)continue;let{tableHeader:a,tableData:o}=i;a.forEach(e=>{let{style:t={},required:n}=e,{font:r={}}=t;e.style={...t,font:{...r,color:{argb:n?`FFFF0000`:void 0}}}}),e.columns=a,e.addRows(o),a.forEach(t=>{let{header:i,key:a,width:o,option:s,numFmt:c,locked:l,optionFormater:u}=t,d=e.getColumn(a);if(d.numFmt=te[c]||c,d.width=o||r,d.protection={locked:l===!0},s){let t=n.addWorksheet(a);t.state=`hidden`,u||=e=>`${e.label}${z}${e.value}`,t.getColumn(1).values=s.map(u),Array(100).fill(``).forEach((t,n)=>{if(n>0){let t=j();e.getCell(`${d.letter}${n}`).dataValidation={type:`list`,formulae:[`${a}!$A$1:$A$${s.length}`],showErrorMessage:!0,error:t(`excel.invalidInput`),errorStyle:`stop`,errorMessage:t(`excel.invalidOption`)}}})}}),a.some(e=>e.locked)&&await e.protect(`6737187214`,{selectLockedCells:!0,selectUnlockedCells:!0})}try{let t=await n.xlsx.writeBuffer();(0,r.saveAs)(new File([t],e,{type:`application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`}))}catch(e){console.log(e)}}function H(e){let t=j(),n=new i.default.Workbook;return n.creator=`distributor System`,n.lastModifiedBy=`distributor System`,n.created=new Date,n.modified=new Date,n.lastPrinted=new Date,Object.keys(e).sort((t,n)=>(e[t].sort??0)-(e[n].sort??0)).forEach(r=>{let i=r,a=!1;/[\\/:*?\[\]]/g.test(r)&&(r=r.replace(/[\\/:*?\[\]]/g,``),a=!0),r.length>31&&(r=r.substring(0,31).trim(),a=!0,console.warn(t(`excel.sheetNameTooLong`,[i,r]))),a&&(e[r]=e[i],delete e[i]),n.addWorksheet(r)}),n}function U(e){return e<26?String.fromCharCode(65+e):String.fromCharCode(65+Math.floor((e-26)/26))+String.fromCharCode(65+(e-26)%26)}function W(e){return new Promise(t=>{setTimeout(()=>{t()},e)})}function ne(e){return JSON.parse(JSON.stringify(e))}function G(e){let t=[],n={},r=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);for(let i of e){n[i.id]={...i,children:r(n,i.id)?n[i.id].children:[]};let e=n[i.id];i.pid==-1?t.push(e):(r(n,i.pid)||(n[i.pid]={children:[]}),n[i.pid].children.push(e))}return t}function K(e,t=` `){return e?e.split(t).filter(e=>e.trim()):[]}var q=class{constructor(e,t=[`label`,`value`,`labelEn`]){this.list=e.map(e=>({...e,label:e[t[0]],labelEn:e[t[2]]??e[t[0]]??``,value:e[t[1]]})),this.map=new Map(this.list.map(e=>[e[t[1]],e]))}getName(e){if(!this.has(e))return`-`;let t=A().global.locale,{label:n,labelEn:r}=this.map.get(e);return(t.value==`zh_cn`?n:r)??n??`-`}getTag(e){if(!this.has(e))return`info`;let{tag:t=`info`}=this.map.get(e);return t}getItem(e){return this.has(e)?this.map.get(e):null}getColor(e){if(!this.has(e))return null;let{color:t}=this.map.get(e);return t}has(e){return this.map.has(e)}};function re(e,t=[],n=`i18nName`){if(e.length==0)return new q([]);if(t.length<2){let e=j();throw Error(e(`tools.keysLengthError`))}return new q(e.map(e=>{let r={};return n&&(r.labelEn=e[n]),t.forEach((t,n)=>{n===0?r.label=e[t]:n===1?r.value=e[t]:r[t]=e[t]}),r}))}function ie(e){return e?e.replace(/<[^>]+>/g,``):``}function ae(e){return e?(e.includes(`\\\\u`)&&(e=e.replace(/\\/g,``)),e.replace(/\\u[\dA-F]{4}/gi,e=>String.fromCharCode(parseInt(e.replace(/\\u/g,``),16)))):``}function oe(e,t=10){let n=1024*1024*t;return!(e.size>n)}function se(e){return Array.from(10).fill(0).map((t,n)=>e+`_`+n)}function ce(e){let t={};return e.map((e,n)=>{let{key:r,option:i,type:a,optionFormater:o}=e,s=U(n);i&&!o?t[r]=`${s}---option`:a===`image`?t[r]=`${s}---image`:t[r]=s}),t}function le(e,t){return t.split(`.`).reduce((e,t)=>e&&e[t],e)}var J=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},ue=[`onClick`],de=J({__name:`index`,props:(0,n.mergeModels)({api:{type:Function},showCheckAll:{type:Boolean,default:!0},maxLimit:{type:Number,default:void 0},minLimit:{type:Number,default:void 0},optionClick:{type:Function,default:()=>{}},data:{type:Array},labelValue:{type:Object,default:()=>({label:`label`,labelEn:`labelEn`,value:`value`})},changeLocal:{type:Boolean,default:!1}},{modelValue:{},modelModifiers:{}}),emits:(0,n.mergeModels)([`success`,`change`,`changeAll`],[`update:modelValue`]),setup(e,{emit:t}){let r=e,i=(0,n.useAttrs)(),{t:a,locale:s}=(0,o.useI18n)(),c=(0,n.useModel)(e,`modelValue`),l=(0,n.computed)(()=>i[`value-key`]!=null),u=(0,n.ref)(``),d=(0,n.computed)(()=>{if(i.remote!==void 0)return r.data;let e=K(u.value),{data:t,labelValue:n}=r,a=t||m.value;if(e.length==0)return a;let{label:o,labelEn:c}=n,l=s.value==`en_us`?c||`i18nName`:o;return e.length==1?a.filter(t=>t[l].toLowerCase().includes(e[0].toLowerCase())):a.filter(t=>{let n=!1;return n=e.some(e=>t[l].toLowerCase()==e.toLowerCase()),n})}),f=(0,n.computed)({get(){return i.multiple==null||c.value==null?!1:c.value.length==d.value.length},set(e){return e}}),p=t,m=(0,n.ref)([]);r.api&&(async()=>{let{data:e}=await r.api();m.value=[...e],p(`success`,m)})();function h(e){p(`change`,e),g.value&&(0,n.nextTick)(()=>{r.optionClick&&r.optionClick(g.value),g.value=null})}let g=(0,n.ref)(null);function _(){let e=i.multiple===void 0?void 0:[];p(`change`,e),(0,n.nextTick)(()=>{r.optionClick&&r.optionClick(e)})}function v(e){g.value=e}let y=r.labelValue.label.split(`-`),b=e=>{if(y.length==1){if(r.changeLocal)return a(e[r.labelValue.label]);let t=s.value==`en_us`?e[r.labelValue.labelEn||`i18nName`]:e[r.labelValue.label];return t||=e[r.labelValue.label],t+``}else{let t=[];return y.forEach(n=>{t.push(e[n])}),t.join(`-`)}};function x(e){let t=r.data?r.data:m.value;c.value=e?t.map(e=>l.value?e:e[r.labelValue.value]):[],(0,n.nextTick)(()=>{p(`change`,c.value),p(`changeAll`,c.value,t)})}function S(e){p(`change`,l.value?e:e[r.labelValue.value]),(0,n.nextTick)(()=>{r.optionClick&&r.optionClick(e)})}function C(e){let t=l.value?e:e[r.labelValue.value],n=l.value?c.value.some(t=>t[r.labelValue.value]===e[r.labelValue.value]):c.value.includes(t);return!!(r.maxLimit>0&&c.value.length>=r.maxLimit&&!n||r.minLimit>0&&c.value.length===r.minLimit&&n)}function w(e){return e.map(e=>({...e,label:b(e),value:l.value?e:e[r.labelValue.value]}))}let T=(0,n.ref)([]);T.value=w(r.data?r.data:m.value),(0,n.watch)(()=>r.data?r.data:m.value,e=>{let t=w(e);if(t.length!==T.value.length)T.value=t;else{let e=!1;for(let n=0;n<t.length;n++)if(t[n].value!==T.value[n]?.value){e=!0;break}e&&(T.value=t)}},{deep:!0});let E=(0,n.computed)(()=>i.multiple!==void 0&&(r.maxLimit>0||r.minLimit>0)?T.value.map(e=>({...e,disabled:C(e)})):T.value);return(t,r)=>{let a=(0,n.resolveComponent)(`el-checkbox`),o=(0,n.resolveComponent)(`el-select-v2`),s=(0,n.resolveComponent)(`el-option`),p=(0,n.resolveComponent)(`el-select`);return(0,n.unref)(i).v2==null?((0,n.openBlock)(),(0,n.createBlock)(p,(0,n.mergeProps)({key:1,modelValue:c.value,"onUpdate:modelValue":r[3]||=e=>c.value=e,filterable:``,"collapse-tags":``,"collapse-tags-tooltip":``,"filter-method":(0,n.unref)(i).remote==null?e=>u.value=e:void 0,clearable:``},(0,n.unref)(i),{onClear:_}),{default:(0,n.withCtx)(()=>[(0,n.unref)(i).multiple!=null&&e.showCheckAll&&e.maxLimit==null?(0,n.renderSlot)(t.$slots,`header`,{key:0},()=>[(0,n.createVNode)(a,{class:`mgl20`,modelValue:f.value,"onUpdate:modelValue":r[2]||=e=>f.value=e,onChange:x},{default:(0,n.withCtx)(()=>[(0,n.createTextVNode)((0,n.toDisplayString)(t.$t(`quan-xuan`)),1)]),_:1},8,[`modelValue`])],!0):(0,n.createCommentVNode)(``,!0),((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(d.value,(t,r)=>((0,n.openBlock)(),(0,n.createBlock)(s,{key:r,label:b(t),disabled:(0,n.unref)(i).multiple!=null&&(e.maxLimit>0||e.minLimit>0)?C(t):!1,onClick:(0,n.withModifiers)(e=>S(t),[`stop`]),value:l.value?t:t[e.labelValue.value]},null,8,[`label`,`disabled`,`onClick`,`value`]))),128))]),_:3},16,[`modelValue`,`filter-method`])):((0,n.openBlock)(),(0,n.createBlock)(o,(0,n.mergeProps)({key:0,options:E.value,modelValue:c.value,"onUpdate:modelValue":r[1]||=e=>c.value=e},(0,n.unref)(i),{filterable:``,"collapse-tags":``,"collapse-tags-tooltip":``,clearable:``,onChange:h}),(0,n.createSlots)({default:(0,n.withCtx)(({item:e})=>[(0,n.createElementVNode)(`div`,{onClick:t=>v(e)},(0,n.toDisplayString)(e.label),9,ue)]),_:2},[(0,n.unref)(i).multiple==null?void 0:{name:`header`,fn:(0,n.withCtx)(()=>[(0,n.renderSlot)(t.$slots,`header`,{},()=>[(0,n.createVNode)(a,{class:`mgl20`,modelValue:f.value,"onUpdate:modelValue":r[0]||=e=>f.value=e,onChange:x},{default:(0,n.withCtx)(()=>[(0,n.createTextVNode)((0,n.toDisplayString)(t.$t(`quan-xuan`)),1)]),_:1},8,[`modelValue`])],!0)]),key:`0`}]),1040,[`options`,`modelValue`]))}}},[[`__scopeId`,`data-v-7b9ec6d8`]]),fe=(0,n.defineComponent)({props:{name:{tyepe:String,required:!0}}});function pe(e,t,r,i,a,o){let s=(0,n.resolveComponent)(`el-icon`);return(0,n.openBlock)(),(0,n.createBlock)(s,{class:`cmp-icon`},{default:(0,n.withCtx)(()=>[((0,n.openBlock)(),(0,n.createBlock)((0,n.resolveDynamicComponent)(e.name)))]),_:1})}var Y=J(fe,[[`render`,pe],[`__scopeId`,`data-v-733f9daa`]]),me={class:`confirm-button-wrapper`},he=J({__name:`index`,emits:[`ok`,`no`],setup(e,{emit:t}){let r=t,i=(0,s.debounce)(()=>{r(`ok`)},500);function a(){r(`no`)}return(e,t)=>{let r=(0,n.resolveComponent)(`el-popconfirm`);return(0,n.openBlock)(),(0,n.createElementBlock)(`span`,me,[(0,n.createVNode)(r,(0,n.mergeProps)(e.$attrs,{onConfirm:(0,n.unref)(i),onCancel:a}),{reference:(0,n.withCtx)(()=>[(0,n.renderSlot)(e.$slots,`default`,{},void 0,!0)]),_:3},16,[`onConfirm`])])}}},[[`__scopeId`,`data-v-24cb35fd`]]),ge={class:`ImportButton`},_e=[`accept`],ve=J({__name:`index`,props:{accept:{type:String,default:`.xlsx,.xls`},fields:{type:Object,default:()=>({})},fileChange:{type:Function,required:!0},version:{type:Number,required:!1}},setup(e){let{t:r}=(0,o.useI18n)(),i=e,a=(0,n.ref)(null),s=(0,n.ref)(!1);function c(e){let t=e.match(/__v(\d+)/);return t?parseInt(t[1],10):null}async function l(e){s.value=!0;let n=e.target.files[0];if(console.log(`props.version`,i.version),i.version!==void 0){let e=c(n.name);if(console.log(`fileVersion`,e),e===null||e!==i.version){t.ElMessage.error(r(`import.versionMismatch`)),s.value=!1,a.value.value=null;return}}let o=await B(n,i.fields).catch(()=>{s.value=!1}).finally(()=>{a.value.value=null});await i.fileChange(o).finally(()=>{s.value=!1})}return(t,r)=>{let i=(0,n.resolveComponent)(`el-button`);return(0,n.openBlock)(),(0,n.createElementBlock)(`div`,ge,[(0,n.createVNode)(i,(0,n.mergeProps)({type:`primary`,loading:s.value,class:`mgr10`,onClick:r[0]||=e=>a.value.click()},t.$attrs),{default:(0,n.withCtx)(()=>[(0,n.renderSlot)(t.$slots,`default`,{},()=>[(0,n.createTextVNode)((0,n.toDisplayString)(t.$t(`dao-ru`)),1)],!0)]),_:3},16,[`loading`]),(0,n.createElementVNode)(`input`,{onChange:l,ref_key:`input`,ref:a,accept:e.accept,style:{position:`absolute`,width:`0px`,height:`0px`,opacity:`0`},type:`file`},null,40,_e)])}}},[[`__scopeId`,`data-v-b8f856ea`]]);function X(e){let t={};return e.forEach(e=>{let{key:n,type:r,option:i={},value:o,dateType:s=`date`}=e;if(n)if(r==`input`&&i?.multiple)t[n]=K(o);else if(r==`date`)if(s.includes(`range`)){let[e,r]=n,[i,c]=o||[];i&&s==`daterange`&&(i=(0,a.default)(i).format(`YYYY-MM-DD 00:00:00`),c=(0,a.default)(c).format(`YYYY-MM-DD 23:59:59`)),t[e]=i,t[r]=c}else t[n]=o;else t[n]=o}),t}var ye={key:0},be={class:`btns`},xe={class:`left`},Se={class:`right`},Ce=J({__name:`index`,props:{form:{type:Object,required:!0}},emits:[`confirm`,`reset`,`visibleChange`],setup(e,{expose:t,emit:r}){let i=e,a=r,c=(0,n.ref)(!0),l=(0,n.ref)(null),{t:u}=(0,o.useI18n)(),d={datetimerange:`YYYY-MM-DD HH:mm:ss`,daterange:`YYYY-MM-DD`,month:`YYYY-MM`},f=(0,n.computed)(()=>c.value?u(`guan-bi`):u(`zhan-kai`));function p(){a(`confirm`)}function m(e){e.option.onClear&&e.option.onClear(),a(`confirm`)}function h(){a(`reset`)}function g(){a(`confirm`)}function _(){return X(i.form.items)}let v=(0,s.cloneDeep)(i.form.items);function y(){i.form.items.forEach(e=>{let t=v.find(t=>t.key==e.key);t&&(e.value=t.value)})}return t({getPrm:_,reset:y}),(t,r)=>{let i=(0,n.resolveComponent)(`el-input`),o=(0,n.resolveComponent)(`el-date-picker`),s=(0,n.resolveComponent)(`el-form-item`),u=(0,n.resolveComponent)(`el-form`),_=(0,n.resolveComponent)(`el-link`),v=(0,n.resolveComponent)(`el-button`);return(0,n.openBlock)(),(0,n.createElementBlock)(`div`,{class:`searchBar-container mgt10 mgb10`,onKeydown:(0,n.withKeys)(p,[`enter`])},[(0,n.createElementVNode)(`div`,{class:`searchBar`,style:(0,n.normalizeStyle)({height:c.value?`auto`:`32px`})},[(0,n.createVNode)(u,{inline:``,model:e.form.data},{default:(0,n.withCtx)(()=>[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(e.form.items.filter(e=>!e.hidden),e=>((0,n.openBlock)(),(0,n.createElementBlock)(n.Fragment,{key:e.key},[e.type==`br`?((0,n.openBlock)(),(0,n.createElementBlock)(`br`,ye)):((0,n.openBlock)(),(0,n.createBlock)(s,{key:1,label:e.name},{default:(0,n.withCtx)(()=>[e.type===`input`?((0,n.openBlock)(),(0,n.createBlock)(i,{key:0,modelValue:e.value,"onUpdate:modelValue":t=>e.value=t,class:(0,n.normalizeClass)(e.option?.class||`w150`),placeholder:t.$t(`qing-shu-ru`),clearable:``},null,8,[`modelValue`,`onUpdate:modelValue`,`class`,`placeholder`])):e.type===`custom`?((0,n.openBlock)(),(0,n.createBlock)((0,n.resolveDynamicComponent)(e.render),{key:1})):(0,n.createCommentVNode)(``,!0),e.type===`select`?((0,n.openBlock)(),(0,n.createBlock)(de,(0,n.mergeProps)({key:2,class:e.option?.class||`w150`,modelValue:e.value,"onUpdate:modelValue":t=>e.value=t},{ref_for:!0},e.option,{onChange:p,onClear:t=>m(e),placeholder:t.$t(`qing-xuan-ze`)}),null,16,[`class`,`modelValue`,`onUpdate:modelValue`,`onClear`,`placeholder`])):(0,n.createCommentVNode)(``,!0),e.type===`date`?((0,n.openBlock)(),(0,n.createBlock)(o,(0,n.mergeProps)({key:3,class:{datetimerange:`w300`,daterange:`w200`}[e.dateType]||`w100`,modelValue:e.value,"onUpdate:modelValue":t=>e.value=t,"value-format":d[e.dateType]||`YYYY-MM-DD`,type:e.dateType||`date`,onFocus:t=>l.value=e,onChange:t=>g(e),placeholder:t.$t(`qing-xuan-ze`),"start-placeholder":t.$t(`kai-shi-shi-jian`),"end-placeholder":t.$t(`jie-shu-shi-jian`)},{ref_for:!0},e.option),null,16,[`class`,`modelValue`,`onUpdate:modelValue`,`value-format`,`type`,`onFocus`,`onChange`,`placeholder`,`start-placeholder`,`end-placeholder`])):(0,n.createCommentVNode)(``,!0)]),_:2},1032,[`label`]))],64))),128))]),_:1},8,[`model`])],4),(0,n.createElementVNode)(`div`,be,[(0,n.createElementVNode)(`div`,xe,[(0,n.renderSlot)(t.$slots,`table-header-left`,{},void 0,!0)]),(0,n.createElementVNode)(`div`,Se,[(0,n.createVNode)(_,{underline:`never`,class:`mgr10`,onClick:r[0]||=()=>{a(`visibleChange`,!c.value),c.value=!c.value}},{default:(0,n.withCtx)(()=>[(0,n.createVNode)(Y,{name:c.value?`ArrowUp`:`ArrowDown`},null,8,[`name`]),(0,n.createTextVNode)(` `+(0,n.toDisplayString)(f.value),1)]),_:1}),(0,n.createVNode)(v,{type:`primary`,onClick:p},{default:(0,n.withCtx)(()=>[(0,n.createTextVNode)((0,n.toDisplayString)(t.$t(`shai-xuan`)),1)]),_:1}),(0,n.createVNode)(v,{type:`primary`,onClick:h},{default:(0,n.withCtx)(()=>[(0,n.createTextVNode)((0,n.toDisplayString)(t.$t(`chong-zhi`)),1)]),_:1}),(0,n.renderSlot)(t.$slots,`btn`,{},void 0,!0)])])],32)}}},[[`__scopeId`,`data-v-db6f71dd`]]),we={pageNoKey:`pageNo`,pageSizeKey:`pageSize`,totalKey:`total`,defaultPageSize:10,pageSizes:[10,50,100,500],responseDataKeys:{rows:[`rows`,`records`,`list`],total:[`totalRows`,`total`]},showSearch:!1,showPage:!1,showShadow:!1,showCheckBox:!1,enableCellCopy:!0},Z={...we};function Te(e){Z={...Z,...e,responseDataKeys:{...Z.responseDataKeys,...e.responseDataKeys||{}}}}function Ee(){return Z}function De(){Z={...we}}var Oe={class:`center`},ke=J({__name:`index`,props:{id:{type:String,required:!1},loading:{type:Boolean,default:!1},immediate:{type:Boolean,default:!0},searchForm:{type:Object,default:()=>({items:[],selections:[]})},api:{type:Function},data:{type:Array},tableConfig:{type:Object,default:()=>({})}},setup(e,{expose:t}){let{t:r,locale:i}=(0,o.useI18n)(),a=(0,c.useRoute)(),l=Ee(),u=e,d=(0,n.ref)(!1),f=(0,n.ref)([]);u.searchForm.showSearch===void 0&&(u.searchForm.showSearch=l.showSearch),u.searchForm.showPage===void 0&&(u.searchForm.showPage=l.showPage),u.searchForm.showShadow===void 0&&(u.searchForm.showShadow=l.showShadow),u.searchForm.showCheckBox===void 0&&(u.searchForm.showCheckBox=l.showCheckBox),u.searchForm.enableCellCopy===void 0&&(u.searchForm.enableCellCopy=l.enableCellCopy),u.searchForm.selections||(u.searchForm.selections=[]);let p=(0,n.computed)(()=>{let e=a.path.replace(/\//g,`-`).replace(/^-/,``)||`default-table`;return u.id?`listPageId-${e}-${u.id}`:`listPageId-${e}`}),m=(0,s.cloneDeep)(u.searchForm.items),h=u.searchForm.pageNoKey||l.pageNoKey,g=u.searchForm.pageSizeKey||l.pageSizeKey,_=(0,n.reactive)({[h]:1,[g]:u.searchForm.defaultPageSize||l.defaultPageSize,total:0}),v=(0,n.ref)(null),y=(0,n.ref)(null),b=(0,n.ref)(450),x=(0,s.debounce)(()=>{(0,n.nextTick)(()=>{if(!y.value)return;let e=y.value.getBoundingClientRect(),t=window.innerHeight-e.top-100;b.value=Math.max(t,200)})},100),S=()=>{x()},C=()=>{if(!u.searchForm.enableCellCopy&&!l.enableCellCopy)return!1;let e=v.value;if(!e||!e.$el)return!1;let t=e.$el;return t.classList.add(`cell-copy-enabled`),t.setAttribute(`tabindex`,`-1`),t.removeEventListener(`mousedown`,F),t.removeEventListener(`mousemove`,I),t.removeEventListener(`mouseup`,L),t.removeEventListener(`keydown`,V),t.addEventListener(`mousedown`,F),t.addEventListener(`mousemove`,I),t.addEventListener(`mouseup`,L),t.addEventListener(`keydown`,V),!0};(0,n.onMounted)(()=>{x(),window.addEventListener(`resize`,S),(u.searchForm.enableCellCopy||l.enableCellCopy)&&(document.addEventListener(`mouseup`,H),document.addEventListener(`mousedown`,U),setTimeout(()=>{C()},500))}),(0,n.onUpdated)(()=>{(u.searchForm.enableCellCopy||l.enableCellCopy)&&setTimeout(()=>{C()},500)}),(0,n.onUnmounted)(()=>{if(window.removeEventListener(`resize`,S),u.searchForm.enableCellCopy||l.enableCellCopy){document.removeEventListener(`mouseup`,H),document.removeEventListener(`mousedown`,U);let e=v.value;if(e&&e.$el){let t=e.$el;t.removeEventListener(`mousedown`,F),t.removeEventListener(`mousemove`,I),t.removeEventListener(`mouseup`,L),t.removeEventListener(`keydown`,V)}}});let w=(0,n.computed)(()=>M.value.height||b.value),T;async function E(e){let{dataFormat:t}=u.tableConfig;e[h]!=1&&(e.nextSearchAfter=T),d.value=!0;let{code:r,data:i={}}=await u.api(e).finally(()=>{d.value=!1,u.searchForm.selections=[]});if(r==200){let e=[];for(let t of l.responseDataKeys.rows)if(i[t]){e=i[t];break}let r=0;for(let e of l.responseDataKeys.total)if(i[e]!==void 0){r=i[e];break}f.value=t?t(e):e,_.total=r,T=i.nextSearchAfter,(u.searchForm.enableCellCopy||l.enableCellCopy)&&(0,n.nextTick)(()=>{setTimeout(()=>{C()},100)})}}function D(e={}){let{searchData:t=()=>({})}=u.tableConfig,n=t();E({..._,...X(u.searchForm.items),...e,...n})}function O(){let{reset:e}=u.tableConfig;e&&e(),u.searchForm.items.forEach(e=>{let t=m.find(t=>(0,s.isArray)(e.key)&&(0,s.isArray)(t.key)?e.key.join(`,`)==t.key.join(`,`):t.key==e.key);t&&(e.value=t.value)}),D()}u.api&&u.immediate&&D();function k(){return{..._,...X(u.searchForm.items)}}let A=()=>{let e=v.value;e&&e.clearSort()},j=(0,n.reactive)({storage:!0}),ee=(0,n.reactive)({drag:!0,resizable:!0,maxFixedSize:0}),M=(0,n.computed)(()=>{let{customConfig:e,columnConfig:t,...n}=u.tableConfig;return{headerAlign:`left`,align:`center`,customConfig:{...j,...e},columnConfig:{...ee,...t},"virtual-x-config":{enabled:!1,scrollToLeftOnChange:!1},"virtual-y-config":{enabled:!0,gt:100},...n}}),N=(0,n.reactive)({isSelecting:!1,startCell:null,endCell:null,selectedCells:[]}),P=e=>{let t=e.closest(`.vxe-body--column`);if(!t||t.classList.contains(`col--checkbox`)||t.classList.contains(`col--seq`))return null;let n=t.closest(`.vxe-body--row`);if(!n)return null;let r=v.value;if(!r)return null;let i=-1,a=n.getAttribute(`data-rowid`);if(a!=null)i=parseInt(a,10);else{let e=n.parentElement;i=Array.from(e.querySelectorAll(`.vxe-body--row`)).indexOf(n)}if(i<0)return null;let o=-1,s=t.getAttribute(`data-colid`);if(s&&(o=r.getColumns().findIndex(e=>e.id===s)),o<0){let e=Array.from(n.querySelectorAll(`.vxe-body--column`)).indexOf(t),i=!!t.closest(`.vxe-table--fixed-left-wrapper`),a=!!t.closest(`.vxe-table--fixed-right-wrapper`),s=r.getColumns();if(i){let t=s.filter(e=>e.fixed===`left`);e<t.length&&(o=s.indexOf(t[e]))}else if(a){let t=s.filter(e=>e.fixed===`right`);e<t.length&&(o=s.indexOf(t[e]))}else{let t=u.searchForm.showCheckBox?1:0;o=s.filter(e=>e.fixed===`left`).length+e-t}}return o<0?null:{rowIndex:i,colIndex:o,cell:t}},F=e=>{let t=P(e.target);if(!t){R();return}N.isSelecting=!0,N.startCell={rowIndex:t.rowIndex,colIndex:t.colIndex},N.endCell={...N.startCell},z(),B()},I=e=>{if(!N.isSelecting)return;let t=P(e.target);t&&(N.endCell={rowIndex:t.rowIndex,colIndex:t.colIndex},z(),B())},L=()=>{N.isSelecting=!1},R=()=>{N.selectedCells=[],N.startCell=null,N.endCell=null;let e=v.value;e&&e.$el.querySelectorAll(`.cell-selected, .cell-border-top, .cell-border-right, .cell-border-bottom, .cell-border-left`).forEach(e=>{e.classList.remove(`cell-selected`,`cell-border-top`,`cell-border-right`,`cell-border-bottom`,`cell-border-left`)})},z=()=>{if(!N.startCell||!N.endCell){N.selectedCells=[];return}let e=N.startCell.rowIndex,t=N.endCell.rowIndex,n=N.startCell.colIndex,r=N.endCell.colIndex,i=Math.min(e,t),a=Math.max(e,t),o=Math.min(n,r),s=Math.max(n,r);N.selectedCells=[];for(let e=i;e<=a;e++)for(let t=o;t<=s;t++)N.selectedCells.push({rowIndex:e,colIndex:t})},B=()=>{(0,n.nextTick)(()=>{let e=v.value;if(!e)return;let t=e.$el;if(t.querySelectorAll(`.cell-selected, .cell-border-top, .cell-border-right, .cell-border-bottom, .cell-border-left`).forEach(e=>{e.classList.remove(`cell-selected`,`cell-border-top`,`cell-border-right`,`cell-border-bottom`,`cell-border-left`)}),N.selectedCells.length===0)return;let n=e.getColumns(),r=N.selectedCells.map(e=>e.rowIndex),i=N.selectedCells.map(e=>e.colIndex),a=Math.min(...r),o=Math.max(...r),s=Math.min(...i),c=Math.max(...i),l=[t.querySelector(`.vxe-table--body-wrapper tbody`),t.querySelector(`.vxe-table--fixed-left-wrapper tbody`),t.querySelector(`.vxe-table--fixed-right-wrapper tbody`)].filter(Boolean);N.selectedCells.forEach(({rowIndex:e,colIndex:t})=>{let r=n[t];if(!r)return;let i=r.fixed===`left`,d=r.fixed===`right`;for(let f of l){let l=f.querySelectorAll(`.vxe-body--row`)[e];if(!l)continue;let p=Array.from(l.querySelectorAll(`.vxe-body--column`)),m=null;if(i&&f.closest(`.vxe-table--fixed-left-wrapper`))m=p[n.filter(e=>e.fixed===`left`).indexOf(r)];else if(d&&f.closest(`.vxe-table--fixed-right-wrapper`))m=p[n.filter(e=>e.fixed===`right`).indexOf(r)];else if(!i&&!d&&f.closest(`.vxe-table--body-wrapper`)){let e=u.searchForm.showCheckBox?1:0;m=p[t-n.filter(e=>e.fixed===`left`).length+e]}if(m&&!m.classList.contains(`col--checkbox`)&&!m.classList.contains(`col--seq`)){m.classList.add(`cell-selected`),e===a&&m.classList.add(`cell-border-top`),e===o&&m.classList.add(`cell-border-bottom`),t===s&&m.classList.add(`cell-border-left`),t===c&&m.classList.add(`cell-border-right`);break}}})})},te=async()=>{if(N.selectedCells.length===0)return;let e=v.value;if(!e)return;let t=e.$el,n=e.getColumns(),r=[...new Set(N.selectedCells.map(e=>e.rowIndex))].sort((e,t)=>e-t),i=[...new Set(N.selectedCells.map(e=>e.colIndex))].sort((e,t)=>e-t),a=[t.querySelector(`.vxe-table--body-wrapper tbody`),t.querySelector(`.vxe-table--fixed-left-wrapper tbody`),t.querySelector(`.vxe-table--fixed-right-wrapper tbody`)].filter(Boolean),o=[];r.forEach(e=>{let t=[];i.forEach(r=>{let i=n[r];if(!i){t.push(``);return}let o=i.fixed===`left`,s=i.fixed===`right`,c=``;for(let t of a){let a=t.querySelectorAll(`.vxe-body--row`)[e];if(!a)continue;let l=Array.from(a.querySelectorAll(`.vxe-body--column`)),d=null;if(o&&t.closest(`.vxe-table--fixed-left-wrapper`))d=l[n.filter(e=>e.fixed===`left`).indexOf(i)];else if(s&&t.closest(`.vxe-table--fixed-right-wrapper`))d=l[n.filter(e=>e.fixed===`right`).indexOf(i)];else if(!o&&!s&&t.closest(`.vxe-table--body-wrapper`)){let e=u.searchForm.showCheckBox?1:0;d=l[r-n.filter(e=>e.fixed===`left`).length+e]}if(d&&!d.classList.contains(`col--checkbox`)&&!d.classList.contains(`col--seq`)){c=d.innerText||d.textContent||``,c=c.trim(),c=c.replace(/\n/g,` `).replace(/\s+/g,` `);break}}t.push(c)}),o.push(t.join(` `))});let s=o.join(`
|
|
2
2
|
`);try{await navigator.clipboard.writeText(s)}catch(e){console.error(`复制失败:`,e)}},V=e=>{!u.searchForm.enableCellCopy&&!l.enableCellCopy||((e.ctrlKey||e.metaKey)&&e.key===`c`?N.selectedCells.length>0&&(e.preventDefault(),e.stopPropagation(),te()):e.key===`Escape`&&R())},H=()=>{N.isSelecting=!1},U=e=>{let t=v.value;!t||!t.$el||t.$el.contains(e.target)||R()},W=e=>{_[h]=e,D()},ne=e=>{_[g]=e,_[h]=1,D()};function G(){let e=v.value.getCheckboxRecords();u.searchForm.selections=e}let K=e=>{let t=v.value;if(t){t.toggleCheckboxRow(e);let n=v.value.getCheckboxRecords();u.searchForm.selections=n}};return t({tableRef:v,getList:D,getPrm:k,clearSort:A,calculateTableHeight:x}),(t,r)=>{let a=(0,n.resolveComponent)(`el-button`),o=(0,n.resolveComponent)(`el-checkbox`),s=(0,n.resolveComponent)(`el-text`),c=(0,n.resolveComponent)(`vxe-column`),u=(0,n.resolveComponent)(`VxeTable`),m=(0,n.resolveComponent)(`el-pagination`);return(0,n.openBlock)(),(0,n.createElementBlock)(`div`,{class:(0,n.normalizeClass)({box:e.searchForm.showShadow})},[e.searchForm.showSearch?((0,n.openBlock)(),(0,n.createBlock)(Ce,{key:0,form:e.searchForm,onReset:O,onConfirm:r[1]||=e=>D(),onVisibleChange:(0,n.unref)(x)},{btn:(0,n.withCtx)(()=>[r[3]||=(0,n.createElementVNode)(`span`,{class:`mgr10`},null,-1),(0,n.renderSlot)(t.$slots,`search-bar-btn`,{},void 0,!0),(0,n.createVNode)(a,{class:`mgl10`,round:``,onClick:r[0]||=e=>v.value.openCustom()},{default:(0,n.withCtx)(()=>[(0,n.createVNode)(Y,{name:`Tools`})]),_:1})]),_:3},8,[`form`,`onVisibleChange`])):(0,n.createCommentVNode)(``,!0),(0,n.renderSlot)(t.$slots,`table-header-left`,{},void 0,!0),(0,n.createElementVNode)(`div`,{ref_key:`tableContentRef`,ref:y},[(0,n.createVNode)(u,(0,n.mergeProps)({id:p.value,ref_key:`tableRef`,ref:v,loading:e.loading||d.value,data:e.api?f.value:e.data,border:``},M.value,{height:w.value,onCheckboxChange:G,onCheckboxAll:G,onSortChange:M.value[`sort-config`]?.sortChange}),{default:(0,n.withCtx)(()=>[e.searchForm.showCheckBox==null||e.searchForm.showCheckBox?((0,n.openBlock)(),(0,n.createBlock)(c,{key:0,type:`checkbox`,width:(0,n.unref)(i)==`zh_cn`?80:150,title:t.$t(`xu-hao`),fixed:`left`},{checkbox:(0,n.withCtx)(({rowIndex:e,row:t,checked:r,disabled:i,indeterminate:a})=>[(0,n.createElementVNode)(`div`,Oe,[r?((0,n.openBlock)(),(0,n.createBlock)(o,{key:0,checked:!0,disabled:i,size:`default`,onClick:(0,n.withModifiers)(e=>!i&&K(t),[`stop`])},null,8,[`disabled`,`onClick`])):((0,n.openBlock)(),(0,n.createBlock)(o,{key:1,disabled:i,checked:!1,size:`default`,onClick:(0,n.withModifiers)(e=>!i&&K(t),[`stop`])},null,8,[`disabled`,`onClick`])),(0,n.createVNode)(s,{type:`info`,class:`mgl5`},{default:(0,n.withCtx)(()=>[(0,n.createTextVNode)((0,n.toDisplayString)(e+1),1)]),_:2},1024)])]),_:1},8,[`width`,`title`])):(0,n.createCommentVNode)(``,!0),(0,n.renderSlot)(t.$slots,`default`,{},void 0,!0)]),_:3},16,[`id`,`loading`,`data`,`height`,`onSortChange`])],512),e.searchForm.showPage?((0,n.openBlock)(),(0,n.createBlock)(m,{key:1,"current-page":_[(0,n.unref)(h)],"onUpdate:currentPage":r[2]||=e=>_[(0,n.unref)(h)]=e,class:`myPagination mgt10`,background:``,layout:`total, sizes, prev, pager, next`,total:_.total,"page-size":_[(0,n.unref)(g)],"page-sizes":e.searchForm.pageSizes||(0,n.unref)(l).pageSizes,onCurrentChange:W,onSizeChange:ne},null,8,[`current-page`,`total`,`page-size`,`page-sizes`])):(0,n.createCommentVNode)(``,!0)],2)}}},[[`__scopeId`,`data-v-c022c16d`]]),Ae={__name:`index`,props:{sheetsConfig:{type:Object,required:!0},fileName:{type:String,required:!0},version:{type:Number,required:!1}},setup(e){let t=e;function r(){V(t.fileName+(t.version?`__v${t.version}`:``),t.sheetsConfig)}return(e,t)=>{let i=(0,n.resolveComponent)(`el-link`);return(0,n.openBlock)(),(0,n.createBlock)(i,(0,n.mergeProps)({type:`primary`,underline:`never`},e.$attrs,{onClick:r}),{default:(0,n.withCtx)(()=>[(0,n.renderSlot)(e.$slots,`default`,{},()=>[(0,n.createTextVNode)((0,n.toDisplayString)(e.$t(`xia-zai-dao-ru-mo-ban`)),1)])]),_:3},16)}}},je={mounted(e,t){t.value&&Me(e)},updated(e,t){t.value?Me(e):Ne(e)},beforeUnmount(e){Ne(e)}};async function Me(e){await f();let t=e.querySelector(`.el-dialog`);if(!t)return;let n=e.querySelector(`.el-dialog__header`),r=e.querySelector(`.el-overlay`);r.style.cssText+=`overflow: hidden;`,n.style.cursor=`move`;let i=!1,a={window:{width:0,height:0},dialog:{x:0,y:0,width:0,height:0,marginTop:``},mouse:{x:0,y:0},drag:{x:0,y:0}};n.addEventListener(`mousedown`,c),document.addEventListener(`mousemove`,l),document.addEventListener(`mouseup`,u),window.addEventListener(`resize`,d);function o(){a.mouse.x-a.drag.x>=a.dialog.x&&(a.drag.x=a.mouse.x-a.dialog.x),a.drag.x-a.mouse.x>=a.window.width-(a.dialog.x+a.dialog.width)&&(a.drag.x=a.mouse.x+a.window.width-a.dialog.x-a.dialog.width),a.mouse.y-a.drag.y>=a.dialog.y&&(a.drag.y=a.mouse.y-a.dialog.y),a.drag.y-a.mouse.y>=a.window.height-(a.dialog.y+a.dialog.height)&&(a.drag.y=a.mouse.y+a.window.height-a.dialog.y-a.dialog.height),s()}function s(){let e=a.drag.y-a.mouse.y+a.dialog.y,n=a.drag.x-a.mouse.x+a.dialog.x;t.style.cssText+=`position: absolute; top: calc(${e}px - ${a.dialog.marginTop}); left: ${n}px;`}function c(e){e.button===0&&(a.window={width:document.body.clientWidth,height:document.body.clientHeight},a.dialog=t.getBoundingClientRect(),a.dialog.marginTop=window.getComputedStyle(t).marginTop,a.mouse={x:e.clientX,y:e.clientY},i=!0)}function l(e){i&&(a.drag={x:e.clientX,y:e.clientY},r.style.userSelect=`none`,o())}function u(e){r.style.userSelect=`auto`,i=!1}function d(e){}function f(){return new Promise((e,t)=>{setTimeout(()=>{e()},500)})}e.__mouseDown__=c,e.__mouseUp__=u,e.__mouseMove__=l,e.__sizeChange__=d}function Ne(e){document.removeEventListener(`mousedown`,e.__mouseDown__),document.removeEventListener(`mousemove`,e.__mouseMove__),document.removeEventListener(`mouseup`,e.__mouseUp__),window.removeEventListener(`resize`,e.__sizeChange__)}var Pe={key:0,class:`drawer-btn`},Fe={key:1},Ie={__name:`index`,props:{layer:{type:Object,default:()=>({show:!1,type:`layer`,title:``,showButton:!1}),required:!0},loading:{type:Boolean,default:!1}},emits:[`confirm`],setup(e,{emit:r}){let i=e,a=r,{t:c}=(0,o.useI18n)(),l=(0,s.debounce)(()=>{a(`confirm`)},300);async function u(){i.layer.type==`drawer`?i.layer.onClose?i.layer.onClose():i.layer.closeConfirm?await t.ElMessageBox.confirm(c(`que-ding-guan-bi-ma`),{confirmButtonText:c(`que-ding`),cancelButtonText:c(`qu-xiao`),type:`warning`}).catch(()=>{})==`confirm`&&(i.layer.show=!1):i.layer.show=!1:i.layer.show=!1}return(t,r)=>{let i=(0,n.resolveComponent)(`el-button`),a=(0,n.resolveComponent)(`el-drawer`),o=(0,n.resolveComponent)(`el-dialog`);return e.layer.type?((0,n.openBlock)(),(0,n.createBlock)(a,{key:0,modelValue:e.layer.show,"onUpdate:modelValue":r[0]||=t=>e.layer.show=t,size:e.layer.width||`100%`,title:e.layer.title,direction:`rtl`,"append-to-body":``,"before-close":u,class:`drawer-content`},{default:(0,n.withCtx)(()=>[(0,n.renderSlot)(t.$slots,`default`),r[2]||=(0,n.createElementVNode)(`p`,{class:`mgt50`},null,-1),e.layer.showButton?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,Pe,[(0,n.renderSlot)(t.$slots,`btn`,{},()=>[(0,n.createVNode)(i,{onClick:u},{default:(0,n.withCtx)(()=>[(0,n.createTextVNode)((0,n.toDisplayString)(t.$t(`qu-xiao`)),1)]),_:1}),(0,n.createVNode)(i,{type:`primary`,loading:e.loading,onClick:(0,n.unref)(l)},{default:(0,n.withCtx)(()=>[(0,n.createTextVNode)((0,n.toDisplayString)(t.$t(`ti-jiao`)),1)]),_:1},8,[`loading`,`onClick`])])])):(0,n.createCommentVNode)(``,!0)]),_:3},8,[`modelValue`,`size`,`title`])):(0,n.withDirectives)(((0,n.openBlock)(),(0,n.createElementBlock)(`div`,Fe,[(0,n.createVNode)(o,{"close-on-click-modal":!1,modelValue:e.layer.show,"onUpdate:modelValue":r[1]||=t=>e.layer.show=t,title:e.layer.title,width:e.layer.width||500,center:``},(0,n.createSlots)({default:(0,n.withCtx)(()=>[(0,n.renderSlot)(t.$slots,`default`)]),_:2},[e.layer.showButton?{name:`footer`,fn:(0,n.withCtx)(()=>[(0,n.renderSlot)(t.$slots,`btn`,{},()=>[(0,n.createVNode)(i,{onClick:u},{default:(0,n.withCtx)(()=>[(0,n.createTextVNode)((0,n.toDisplayString)(t.$t(`qu-xiao`)),1)]),_:1}),(0,n.createVNode)(i,{type:`primary`,onClick:(0,n.unref)(l)},{default:(0,n.withCtx)(()=>[(0,n.createTextVNode)((0,n.toDisplayString)(t.$t(`ti-jiao`)),1)]),_:1},8,[`onClick`])])]),key:`0`}:void 0]),1032,[`modelValue`,`title`,`width`])])),[[(0,n.unref)(je),e.layer.show]])}}};function Le(e,t={}){let n=j(),r={inForm:!0,required:!0,...t},i={phone:/^1(3[0-9]|4[01456879]|5[0-35-9]|6[2567]|7[0-8]|8[0-9]|9[0-35-9])\d{8}$/,password:/(?=.*\d)(?=.*[a-zA-Z])(?=.*[^a-zA-Z0-9]).{8,12}/,email:/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/}[e],{inForm:a,value:o,required:s,msg:c=n(`validate.invalidInput`)}=r;return a?function(e,t,n){if(s){i.test(t)?n():n(Error(c));return}t&&!i.test(t)?n(Error(c)):n()}:i.test(o)}var Re=class{constructor(e={}){this.config={clientCode:e.clientCode||`one-portal`,casServerUrl:`https://one-portal${e.isTest?`-test`:``}.joy-group.com/api`,casPortalUrl:`https://one-portal${e.isTest?`-test`:``}.joy-group.com`,serviceUrl:e.serviceUrl||window.location.origin+`/cas/callback`,tokenKey:e.tokenKey||`one_portal_token`,userKey:e.userKey||`one_portal_user`,debug:e.debug||!1,autoLogin:e.autoLogin!==!1,loginCallback:e.loginCallback||null,logoutCallback:e.logoutCallback||null,errorCallback:e.errorCallback||null},this.token=null,this.user=null,this.init()}init(){this.log(`OnePortal CAS SDK 初始化中...`),this.loadFromStorage();let e=new URLSearchParams(window.location.search).get(`ticket`);this.isLoggedIn()&&this.config.loginCallback?this.config.loginCallback(this.user,this.token):e?(this.log(`检测到ST票据:`,e),this.validateTicket(e)):this.config.autoLogin&&!this.isLoggedIn()&&(this.log(`用户未登录,准备跳转到CAS登录页面`),this.login())}loadFromStorage(){try{this.token=localStorage.getItem(this.config.tokenKey);let e=localStorage.getItem(this.config.userKey);e&&(this.user=JSON.parse(e)),this.log(`从本地存储加载数据:`,{token:!!this.token,user:!!this.user})}catch(e){this.log(`加载本地存储数据失败:`,e)}}saveToStorage(){try{this.token&&localStorage.setItem(this.config.tokenKey,this.token),this.user&&localStorage.setItem(this.config.userKey,JSON.stringify(this.user)),this.log(`数据已保存到本地存储`)}catch(e){this.log(`保存到本地存储失败:`,e)}}clearStorage(){try{localStorage.removeItem(this.config.tokenKey),localStorage.removeItem(this.config.userKey),this.log(`本地存储已清除`)}catch(e){this.log(`清除本地存储失败:`,e)}}isLoggedIn(){return!!(this.token&&this.user)}getUser(){return this.user}getToken(){return this.token}login(){let e=`${this.config.casPortalUrl}?appCode=${this.config.clientCode}&redirectUrl=${encodeURIComponent(this.config.serviceUrl)}`;this.log(`跳转到CAS登录页面:`,e),window.location.href=e}async validateTicket(e){try{this.log(`验证ST票据:`,e);let t=await fetch(`${this.config.casServerUrl}/auth/validateST?ticket=${e}`,{method:`GET`,headers:{"Content-Type":`application/json`}});if(!t.ok)throw Error(`HTTP ${t.status}: ${t.statusText}`);let n=await t.json();if(n.success&&n.data)return this.token=n.data.token,this.user=n.data.user,this.saveToStorage(),this.clearTicketFromUrl(),this.log(`ST票据验证成功,用户登录成功:`,this.user),this.config.loginCallback&&this.config.loginCallback(this.user,this.token),!0;throw Error(n.message||`ST票据验证失败`)}catch(e){return this.log(`ST票据验证失败:`,e),this.handleError(e),!1}}clearTicketFromUrl(){let e=new URL(window.location);e.searchParams.delete(`ticket`),window.history.replaceState({},document.title,e.toString())}async logout(e=!0){try{if(this.log(`用户登出`),this.token)try{await fetch(`${this.config.casServerUrl}/auth/logout`,{method:`POST`,headers:{AppId:this.config.clientCode,Authorization:`Bearer ${this.token}`,"Content-Type":`application/json`}})}catch(e){this.log(`调用服务端登出接口失败:`,e)}this.token=null,this.user=null,this.clearStorage(),this.config.logoutCallback&&this.config.logoutCallback(),e&&this.login()}catch(e){this.log(`登出失败:`,e),this.handleError(e)}}async request(e,t={}){let n={headers:{"Content-Type":`application/json`,...t.headers},...t};n.headers.appId=this.config.clientCode,this.token&&(n.headers.Authorization=`Bearer ${this.token}`);try{let t=await fetch(e,n);return t.status===401?(this.log(`Token已过期,需要重新登录`),this.logout(),null):t}catch(e){throw this.log(`请求失败:`,e),e}}async fetchUserInfo(){try{let e=await this.request(`${this.config.casServerUrl}/auth/user`);if(e&&e.ok){let t=await e.json();if(t.success&&t.data)return this.user=t.data,this.saveToStorage(),this.user}return null}catch(e){return this.log(`获取用户信息失败:`,e),null}}async refreshToken(){this.log(`Token刷新功能暂未实现`)}handleError(e){this.log(`发生错误:`,e),this.config.errorCallback&&this.config.errorCallback(e)}log(...e){this.config.debug&&console.log(`[OnePortal CAS SDK]`,...e)}checkLoginStatus(){return!this.isLoggedIn()&&this.config.autoLogin?(this.login(),!1):this.isLoggedIn()}setConfig(e,t){this.config[e]=t}getConfig(e){return this.config[e]}};function Q(e,t=2,n=`.`,r=`,`){(e==null||e===``)&&(e=0);let i=Number(e);e=isNaN(i)?0:i,t=Math.max(0,Math.floor(t));let a=e.toFixed(t).split(`.`),o=a[0],s=a[1],c=o.startsWith(`-`);return c&&(o=o.slice(1)),o=o.replace(/\B(?=(\d{3})+(?!\d))/g,r),c&&(o=`-`+o),t>0?o+n+s:o}function ze(e,t=2){return Q(e,t)}function Be(e,t=2){(e==null||e===``)&&(e=0);let n=Number(e);return e=isNaN(n)?0:n,Q(e*100,t)+`%`}function Ve(e,t={}){let{manual:r,log:i,params:a={},cb:o,format:s}=Object.assign({manual:!1,log:!1,params:null,format:null},t),c=(0,n.ref)([]),l=(0,n.ref)(!1),u=t=>{let n=t||a;l.value=!0,e(n).then(e=>{let{code:t,data:r,msg:l}=e;if(o){let{records:t,rows:n}=r||{};c.value=$(t||n?t||n:r,s),o(e)}if(r){if(r.records!=null||r.rows!=null){let{records:e,rows:t,total:i=0}=r||{};n&&n.total!=null&&(a.total=parseInt(i)),c.value=$(e||t||[],s)}else c.value=$(r,s);i&&console.log(`useRequest-res`,c.value)}}).catch(e=>{o&&(console.log(`useRequestErr`,e),o({code:500}))}).finally(()=>{l.value=!1})};return r||u(),[l,c,u]}function He(e){let t=(0,n.ref)(e),r=(0,n.ref)(``),i=(0,n.ref)(``);return(0,n.watch)(t,e=>{let t=e||[``,``];r.value=t[0],i.value=t[1]}),[t,r,i]}function Ue(e){return Object.prototype.toString.call(e).slice(8,-1).toLowerCase()}function $(e,t){if(!t)return e;if(e instanceof Array)return e.map(e=>{let n={};return t.forEach(t=>n[t]=e[t]),n});let n={};return t.forEach(t=>n[t]=e[t]),n}function We(e,t=[]){let{locale:r}=(0,o.useI18n)(),i=(0,n.ref)(e());return(0,n.watch)([r,...t],()=>{i.value=e()},{immediate:!0}),i}function Ge(e,t=`zh_cn`,n=`en_us`){return e&&(e[{en_us:n,zh_cn:t}[A().global.locale.value]]||e[t])||`-`}function Ke(e,t){let n=l.mapState;return typeof e==`string`&&e.length>0&&(n=(0,l.createNamespacedHelpers)(e).mapState),Ye(t,n)}function qe(e,t){let n=l.mapGetters;return typeof e==`string`&&e.length>0&&(n=(0,l.createNamespacedHelpers)(e).mapGetters),Ye(t,n)}function Je(e,t){let n=l.mapActions;return typeof e==`string`&&e.length>0&&(n=(0,l.createNamespacedHelpers)(e).mapActions),Xe(t,n)}function Ye(e,t){let r=(0,l.useStore)(),i=t(e),a={};return Object.keys(i).forEach(e=>{a[e]=(0,n.computed)(i[e].bind({$store:r}))}),a}function Xe(e,t){let n=(0,l.useStore)(),r=t(e),i={};return Object.keys(r).forEach(e=>{i[e]=r[e].bind({$store:n})}),i}var Ze={__name:`index`,props:{fontColor:String},setup(e){return(t,r)=>{let i=(0,n.resolveComponent)(`el-tag`);return(0,n.openBlock)(),(0,n.createBlock)(i,(0,n.mergeProps)(t.$attrs,{style:{backgroundColor:e.fontColor?`color-mix(in srgb, ${e.fontColor} 5%, transparent)`:void 0,color:e.fontColor,borderColor:e.fontColor?`color-mix(in srgb, ${e.fontColor} 5%, transparent)`:void 0}}),{default:(0,n.withCtx)(()=>[(0,n.renderSlot)(t.$slots,`default`)]),_:3},16,[`style`])}}};function Qe(e){return typeof e==`function`||Object.prototype.toString.call(e)===`[object Object]`&&!(0,n.isVNode)(e)}function $e(){u.VxeUI.formats.add(`formatNumber`,{cellFormatMethod({cellValue:e},t=2){return Q(e,t)}}),u.VxeUI.formats.add(`formatMoney`,{cellFormatMethod({cellValue:e},t=2){return ze(e,t)}}),u.VxeUI.formats.add(`formatPercent`,{cellFormatMethod({cellValue:e},t=2){return Be(e,t)}})}function et(){u.VxeUI.renderer.add(`Enum`,{renderTableDefault(e,t){if([null,void 0].includes(t.row[t.column.field]))return`-`;let r=t.row[t.column.field],{label:i,labelEn:a,tag:s,color:c}=e.enum.getItem(r),{locale:l}=(0,o.useI18n)(),u=l.value==`zh_cn`?i:a;return e.type==`tag`?c?(0,n.createVNode)(Ze,{fontColor:c},{default:()=>[(0,n.createTextVNode)(` `),u,(0,n.createTextVNode)(` `)]}):(0,n.createVNode)(Ze,{type:s},{default:()=>[(0,n.createTextVNode)(` `),u,(0,n.createTextVNode)(` `)]}):e.type==`text`?(0,n.createVNode)((0,n.resolveComponent)(`el-text`),{type:s},{default:()=>[(0,n.createTextVNode)(` `),u,(0,n.createTextVNode)(` `)]}):(0,n.createVNode)((0,n.resolveComponent)(`el-text`),null,{default:()=>[(0,n.createTextVNode)(` `),u,(0,n.createTextVNode)(` `)]})}}),u.VxeUI.renderer.add(`InputNumber`,{renderTableDefault(e,r){return(0,n.createVNode)(t.ElInputNumber,(0,n.mergeProps)({modelValue:r.row[r.column.field],"onUpdate:modelValue":e=>r.row[r.column.field]=e},e.props,{"step-strictly":!0,"value-on-clear":0}),null)}}),u.VxeUI.renderer.add(`TrueFalse`,{renderTableDefault(e,r){let{locale:i}=(0,o.useI18n)(),a=i.value==`zh_cn`;return(0,n.createVNode)(t.ElText,{type:r.row[r.column.field]?`success`:`danger`},{default:()=>[r.row[r.column.field]?a?`是`:`YES`:a?`否`:`NO`]})}}),u.VxeUI.renderer.add(`I18n`,{renderTableDefault(e,t){let{locale:n}=(0,o.useI18n)(),r=n.value==`zh_cn`?t.column.field:e.fieldEn;return t.row[r]||t.row[t.column.field]}}),u.VxeUI.renderer.add(`Link`,{renderTableDefault(e,r){let i=r.column.field,a=(0,c.useRouter)(),{multiple:o,to:s,openType:l=`system`}=e,u=r.row[i];function d(e,t){l==`blank`?window.open(e):a.push({path:e,query:{[i]:t}})}if(o){let e=u?.split(`,`)||[];return e.map((r,i)=>(0,n.createVNode)(`span`,null,[(0,n.createVNode)(t.ElLink,{underline:`never`,type:`primary`,onclick:()=>d(l==`stystem`?s:r,r)},Qe(r)?r:{default:()=>[r]}),i<e.length-1?`,`:``]))}return(0,n.createVNode)(t.ElLink,{underline:`never`,type:`primary`,onclick:()=>d(l==`stystem`?s:u,u)},Qe(u)?u:{default:()=>[u]})}})}function tt(){$e(),et()}e.CmpDictionary=de,e.CmpIcon=Y,e.ConfrimButton=he,e.DownExcelTemp=Ae,e.ImportButton=ve,e.LayOutForm=b,e.Layer=Ie,e.ListPage=ke,e.OnePortalCasSDK=Re,e.SearchBar=Ce,e.StatusMap=q,e._toRaw=ne,e._typeOf=Ue,e.arrToStatusMap=re,e.arrayToTree=G,e.checkFileSize=oe,e.creatValidator=Le,e.createImportFields=ce,e.createListPageId=se,e.en_us=E,e.exportExcel=N,e.exportExcelMuilti=V,e.formatMoney=ze,e.formatNumber=Q,e.formatPercent=Be,e.getI18n=A,e.getI18nT=j,e.getListPageConfig=Ee,e.getLocaleValue=Ge,e.getValueBykey=le,e.importExcel=ee,e.importExcelMuilti=B,e.messages=D,e.registerVxeFormatters=$e,e.registerVxePlugins=tt,e.registerVxeRenderers=et,e.resetListPageConfig=De,e.setListPageConfig=Te,e.setupI18n=k,e.sleep=W,e.stringToArray=K,e.stripHtmlTags=ie,e.unicode2Str=ae,e.useActions=Je,e.useDatePicker=He,e.useGetters=qe,e.useI18nReState=We,e.useRequest=Ve,e.useState=Ke,e.zh_cn=T});
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { I18n } from 'vue-i18n';
|
|
2
|
+
import { default as zh_cn } from './zh-cn';
|
|
3
|
+
import { default as en_us } from './en-us';
|
|
4
|
+
declare const messages: {
|
|
5
|
+
zh_cn: Record<string, string>;
|
|
6
|
+
en_us: Record<string, string>;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* 初始化组件库的 i18n 实例
|
|
10
|
+
* @param externalI18n - 外部项目传入的 i18n 实例
|
|
11
|
+
* @returns i18n 实例
|
|
12
|
+
*/
|
|
13
|
+
export declare function setupI18n(externalI18n?: any): I18n;
|
|
14
|
+
/**
|
|
15
|
+
* 获取当前 i18n 实例
|
|
16
|
+
* @returns i18n 实例
|
|
17
|
+
*/
|
|
18
|
+
export declare function getI18n(): I18n;
|
|
19
|
+
/**
|
|
20
|
+
* 获取 i18n 的 t 函数(用于工具函数中)
|
|
21
|
+
* @returns t 函数
|
|
22
|
+
*/
|
|
23
|
+
export declare function getI18nT(): any;
|
|
24
|
+
export { zh_cn, en_us, messages };
|
|
@@ -0,0 +1,440 @@
|
|
|
1
|
+
import { Ref } from 'vue';
|
|
2
|
+
// 验证工具类型
|
|
3
|
+
export interface ValidatorOptions {
|
|
4
|
+
/** 是否在表单中使用,默认 true */
|
|
5
|
+
inForm?: boolean;
|
|
6
|
+
/** 是否必填,默认 true */
|
|
7
|
+
required?: boolean;
|
|
8
|
+
/** 要验证的值(非表单模式) */
|
|
9
|
+
value?: string;
|
|
10
|
+
/** 错误提示信息 */
|
|
11
|
+
msg?: string;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* 创建表单验证器
|
|
16
|
+
* @param type 验证类型:'phone' | 'password' | 'email'
|
|
17
|
+
* @param opt 验证选项
|
|
18
|
+
*/
|
|
19
|
+
export function creatValidator(
|
|
20
|
+
type: 'phone' | 'password' | 'email',
|
|
21
|
+
opt?: ValidatorOptions
|
|
22
|
+
): boolean | ((rule: any, value: any, callback: any) => void);
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
// Excel 工具类型
|
|
26
|
+
export interface ImportExcelOptions {
|
|
27
|
+
/** 其他选项 */
|
|
28
|
+
[key: string]: any;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export interface ExportExcelOptions {
|
|
32
|
+
/** 其他选项 */
|
|
33
|
+
[key: string]: any;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* 导入 Excel 文件
|
|
38
|
+
* @param file Excel 文件对象
|
|
39
|
+
* @param options 导入选项
|
|
40
|
+
*/
|
|
41
|
+
export function importExcel(file: File, options?: ImportExcelOptions): Promise<any>;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* 导出 Excel 文件
|
|
45
|
+
* @param tableName 表格名称
|
|
46
|
+
* @param tableHeader 表头配置
|
|
47
|
+
* @param tableData 表格数据
|
|
48
|
+
* @param options 导出选项
|
|
49
|
+
*/
|
|
50
|
+
export function exportExcel(
|
|
51
|
+
tableName: string,
|
|
52
|
+
tableHeader: any[],
|
|
53
|
+
tableData?: any[],
|
|
54
|
+
options?: ExportExcelOptions
|
|
55
|
+
): Promise<void>;
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* 多 sheet 导入 Excel 配置
|
|
59
|
+
*/
|
|
60
|
+
export interface ImportExcelMuiltiOptions {
|
|
61
|
+
/** 按 sheet 名称映射字段配置 */
|
|
62
|
+
fields: Record<string, Record<string, string>>;
|
|
63
|
+
/** 有效数据起始行,默认 1 */
|
|
64
|
+
range?: number;
|
|
65
|
+
/** 是否读取图片 */
|
|
66
|
+
withImages?: boolean;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* 多 sheet 导入 Excel 文件
|
|
71
|
+
* @param file Excel 文件对象
|
|
72
|
+
* @param options 导入选项
|
|
73
|
+
* @returns 返回按 sheet 名称组织的数据对象
|
|
74
|
+
*/
|
|
75
|
+
export function importExcelMuilti(
|
|
76
|
+
file: File,
|
|
77
|
+
options: ImportExcelMuiltiOptions
|
|
78
|
+
): Promise<Record<string, any[]>>;
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* 多 sheet 导出 Excel 表头配置
|
|
82
|
+
*/
|
|
83
|
+
export interface ExportExcelMuiltiHeader {
|
|
84
|
+
/** 表头显示文本 */
|
|
85
|
+
header: string;
|
|
86
|
+
/** 数据字段 key */
|
|
87
|
+
key: string;
|
|
88
|
+
/** 列宽度 */
|
|
89
|
+
width?: number;
|
|
90
|
+
/** 列样式 */
|
|
91
|
+
style?: any;
|
|
92
|
+
/** 下拉选项配置 */
|
|
93
|
+
option?: Array<{ label: any; value: any }>;
|
|
94
|
+
/** 是否必填 */
|
|
95
|
+
required?: boolean;
|
|
96
|
+
/** 单元格数字格式:'date' | 'number' | 'string' 或自定义格式 */
|
|
97
|
+
numFmt?: string;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* 多 sheet 导出 Excel 配置
|
|
102
|
+
*/
|
|
103
|
+
export interface ExportExcelMuiltiSheet {
|
|
104
|
+
/** 表头配置 */
|
|
105
|
+
tableHeader: ExportExcelMuiltiHeader[];
|
|
106
|
+
/** 表格数据 */
|
|
107
|
+
tableData: any[];
|
|
108
|
+
/** sheet 排序顺序 */
|
|
109
|
+
sort?: number;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* 多 sheet 导出 Excel 文件
|
|
114
|
+
* @param tableName 导出表格名称
|
|
115
|
+
* @param sheets 按 sheet 名称配置的数据对象
|
|
116
|
+
*/
|
|
117
|
+
export function exportExcelMuilti(
|
|
118
|
+
tableName: string,
|
|
119
|
+
sheets: Record<string, ExportExcelMuiltiSheet>
|
|
120
|
+
): Promise<void>;
|
|
121
|
+
|
|
122
|
+
// 单点登录 SDK 类型
|
|
123
|
+
export default class OnePortalCasSDK {
|
|
124
|
+
constructor(...args: any[]);
|
|
125
|
+
[key: string]: any;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// ============== 数字格式化工具类型 ==============
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* 将数字添加千分位分隔符,并保留指定小数位数
|
|
132
|
+
* @param num 需要格式化的数字
|
|
133
|
+
* @param decimals 保留的小数位数,默认 2 位
|
|
134
|
+
* @param decimalSeparator 小数点分隔符,默认 '.'
|
|
135
|
+
* @param thousandSeparator 千分位分隔符,默认 ','
|
|
136
|
+
* @returns 格式化后的数字字符串
|
|
137
|
+
* @example
|
|
138
|
+
* formatNumber(1234567.89) // '1,234,567.89'
|
|
139
|
+
* formatNumber(1234567.89, 0) // '1,234,568'
|
|
140
|
+
* formatNumber(1234567.8912, 3) // '1,234,567.891'
|
|
141
|
+
*/
|
|
142
|
+
export function formatNumber(
|
|
143
|
+
num: number | string,
|
|
144
|
+
decimals?: number,
|
|
145
|
+
decimalSeparator?: string,
|
|
146
|
+
thousandSeparator?: string
|
|
147
|
+
): string;
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* 格式化金额(默认 2 位小数,带千分位)
|
|
151
|
+
* @param amount 金额
|
|
152
|
+
* @param decimals 小数位数,默认 2 位
|
|
153
|
+
* @returns 格式化后的金额字符串
|
|
154
|
+
* @example
|
|
155
|
+
* formatMoney(1234567.89) // '1,234,567.89'
|
|
156
|
+
* formatMoney(-1234567.89) // '-1,234,567.89'
|
|
157
|
+
*/
|
|
158
|
+
export function formatMoney(amount: number | string, decimals?: number): string;
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* 格式化百分比
|
|
162
|
+
* @param num 数字(如 0.1234 表示 12.34%)
|
|
163
|
+
* @param decimals 小数位数,默认 2 位
|
|
164
|
+
* @returns 格式化后的百分比字符串
|
|
165
|
+
* @example
|
|
166
|
+
* formatPercent(0.1234) // '12.34%'
|
|
167
|
+
* formatPercent(0.1234, 0) // '12%'
|
|
168
|
+
* formatPercent(1.5) // '150.00%'
|
|
169
|
+
*/
|
|
170
|
+
export function formatPercent(num: number | string, decimals?: number): string;
|
|
171
|
+
|
|
172
|
+
// ============== 通用工具函数类型 ==============
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* 延迟执行(Promise 版本)
|
|
176
|
+
* @param wait 等待时间(毫秒)
|
|
177
|
+
*/
|
|
178
|
+
export function sleep(wait: number): Promise<void>;
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* 深度克隆对象(通过 JSON 序列化)
|
|
182
|
+
* @param data 要克隆的数据
|
|
183
|
+
*/
|
|
184
|
+
export function _toRaw<T>(data: T): T;
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* 将扁平数组转换为树形结构
|
|
188
|
+
* @param items 扁平数组,每项需包含 id 和 pid 属性
|
|
189
|
+
*/
|
|
190
|
+
export function arrayToTree<T extends { id: any; pid: any }>(items: T[]): T[];
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* 将字符串按指定字符分割为数组
|
|
194
|
+
* @param str 要分割的字符串
|
|
195
|
+
* @param split 分隔符,默认为空格
|
|
196
|
+
*/
|
|
197
|
+
export function stringToArray(str: string, split?: string): string[];
|
|
198
|
+
|
|
199
|
+
/**
|
|
200
|
+
* StatusMap 类 - 创建一个可遍历、可快速取值的状态映射数据结构
|
|
201
|
+
*/
|
|
202
|
+
export class StatusMap {
|
|
203
|
+
list: any[];
|
|
204
|
+
map: Map<any, any>;
|
|
205
|
+
|
|
206
|
+
constructor(arrStatus: any[], keys?: string[]);
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* 根据 key 获取名称(支持多语言)
|
|
210
|
+
* @param key 状态值
|
|
211
|
+
* @param locale 语言环境,如 'zh_cn' 或 'en_us'
|
|
212
|
+
*/
|
|
213
|
+
getName(key: any, locale?: string): string;
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* 根据 key 获取标签类型
|
|
217
|
+
* @param key 状态值
|
|
218
|
+
*/
|
|
219
|
+
getTag(key: any): string;
|
|
220
|
+
|
|
221
|
+
/**
|
|
222
|
+
* 根据 key 获取完整数据项
|
|
223
|
+
* @param key 状态值
|
|
224
|
+
*/
|
|
225
|
+
getItem(key: any): any | null;
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* 根据 key 获取颜色
|
|
229
|
+
* @param key 状态值
|
|
230
|
+
*/
|
|
231
|
+
getColor(key: any): string | null;
|
|
232
|
+
|
|
233
|
+
/**
|
|
234
|
+
* 检查是否包含某个 key
|
|
235
|
+
* @param key 状态值
|
|
236
|
+
*/
|
|
237
|
+
has(key: any): boolean;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* 将数组转换为 StatusMap 对象
|
|
242
|
+
* @param arr 数组数据
|
|
243
|
+
* @param keys 键名映射数组,至少需要 2 个元素 [label键, value键, ...]
|
|
244
|
+
* @param labelEn 英文标签字段名,默认 'i18nName'
|
|
245
|
+
*/
|
|
246
|
+
export function arrToStatusMap(arr: any[], keys: string[], labelEn?: string): StatusMap;
|
|
247
|
+
|
|
248
|
+
/**
|
|
249
|
+
* 去除 HTML 标签
|
|
250
|
+
* @param html 包含 HTML 标签的字符串
|
|
251
|
+
*/
|
|
252
|
+
export function stripHtmlTags(html: string): string;
|
|
253
|
+
|
|
254
|
+
/**
|
|
255
|
+
* 将 Unicode 编码转换为普通字符串
|
|
256
|
+
* @param unicodeStr Unicode 字符串
|
|
257
|
+
*/
|
|
258
|
+
export function unicode2Str(unicodeStr: string): string;
|
|
259
|
+
|
|
260
|
+
/**
|
|
261
|
+
* 检查文件大小是否超过限制
|
|
262
|
+
* @param file 要检查的文件对象
|
|
263
|
+
* @param size 限制的文件大小(单位:MB),默认 10MB
|
|
264
|
+
* @returns 如果文件大小未超过限制,返回 true;否则返回 false
|
|
265
|
+
*/
|
|
266
|
+
export function checkFileSize(file: File, size?: number): boolean;
|
|
267
|
+
|
|
268
|
+
/**
|
|
269
|
+
* 根据页面名称创建 ListPage 的 ID 数组
|
|
270
|
+
* @param name 页面名称
|
|
271
|
+
*/
|
|
272
|
+
export function createListPageId(name: string): string[];
|
|
273
|
+
|
|
274
|
+
/**
|
|
275
|
+
* 根据表头生成导入字段映射
|
|
276
|
+
* @param header 表头配置数组
|
|
277
|
+
* @returns 字段映射对象
|
|
278
|
+
*/
|
|
279
|
+
export function createImportFields(header: any[]): Record<string, string>;
|
|
280
|
+
|
|
281
|
+
/**
|
|
282
|
+
* 根据链式 key 获取对象的值
|
|
283
|
+
* @param object 目标对象
|
|
284
|
+
* @param chainKey 链式 key,如 'a.b.c'
|
|
285
|
+
*/
|
|
286
|
+
export function getValueBykey<T = any>(object: any, chainKey: string): T | undefined;
|
|
287
|
+
|
|
288
|
+
/**
|
|
289
|
+
* 请求选项配置
|
|
290
|
+
*/
|
|
291
|
+
export interface UseRequestOptions {
|
|
292
|
+
/** 是否手动执行,默认 false */
|
|
293
|
+
manual?: boolean;
|
|
294
|
+
/** 是否打印日志 */
|
|
295
|
+
log?: boolean;
|
|
296
|
+
/** 首次执行传参 */
|
|
297
|
+
params?: any;
|
|
298
|
+
/** 回调函数 */
|
|
299
|
+
cb?: (res: any) => void;
|
|
300
|
+
/** 对返回的数据按属性名进行过滤 */
|
|
301
|
+
format?: string[] | null;
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
/**
|
|
305
|
+
* 请求简单封装
|
|
306
|
+
* @param apiHandle 请求 Promise
|
|
307
|
+
* @param opt 配置选项
|
|
308
|
+
* @returns [loading, resData, run] 加载状态、响应数据、执行函数
|
|
309
|
+
*/
|
|
310
|
+
export function useRequest(
|
|
311
|
+
apiHandle: (params?: any) => Promise<any>,
|
|
312
|
+
opt?: UseRequestOptions
|
|
313
|
+
): [Ref<boolean>, Ref<any>, (params?: any) => void];
|
|
314
|
+
|
|
315
|
+
/**
|
|
316
|
+
* 范围时间选择器值解构
|
|
317
|
+
* @param date 时间组件绑定的数组
|
|
318
|
+
* @returns [dateSource, start, end] 日期源、开始时间、结束时间
|
|
319
|
+
*/
|
|
320
|
+
export function useDatePicker(date: string[]): [Ref<string[]>, Ref<string>, Ref<string>];
|
|
321
|
+
|
|
322
|
+
/**
|
|
323
|
+
* 获取值的类型
|
|
324
|
+
* @param value 要检测类型的值
|
|
325
|
+
* @returns 类型字符串(小写),如 'string', 'number', 'array', 'object' 等
|
|
326
|
+
*/
|
|
327
|
+
export function _typeOf(value: any): string;
|
|
328
|
+
|
|
329
|
+
// i18n.js hooks
|
|
330
|
+
|
|
331
|
+
/**
|
|
332
|
+
* 国际化响应式状态
|
|
333
|
+
* @param state 返回值的函数
|
|
334
|
+
* @param otherWatch 其他需要监听的值数组
|
|
335
|
+
* @returns [data] 响应式数据
|
|
336
|
+
*/
|
|
337
|
+
export function useI18nReState<T>(state: () => T, otherWatch?: any[]): Ref<T>;
|
|
338
|
+
|
|
339
|
+
/**
|
|
340
|
+
* 根据当前语言环境获取对应字段的值
|
|
341
|
+
*
|
|
342
|
+
* 用于处理后端返回的多语言数据对象,自动根据当前 i18n 语言环境返回对应的字段值
|
|
343
|
+
*
|
|
344
|
+
* @param sourceData - 包含多语言字段的源数据对象
|
|
345
|
+
* @param zh - 中文字段名,指定 sourceData 中哪个字段是中文内容,默认 'zh_cn'
|
|
346
|
+
* @param en - 英文字段名,指定 sourceData 中哪个字段是英文内容,默认 'en_us'
|
|
347
|
+
* @returns 返回当前语言对应的字段值,找不到则返回中文字段值,都没有则返回 '-'
|
|
348
|
+
*
|
|
349
|
+
* @description
|
|
350
|
+
* 该函数会自动检测当前 i18n 的语言环境(zh_cn 或 en_us),并返回 sourceData 中对应的字段值。
|
|
351
|
+
*
|
|
352
|
+
* **工作原理:**
|
|
353
|
+
* 1. 根据 zh 和 en 参数确定字段映射关系
|
|
354
|
+
* 2. 获取当前 i18n 语言环境
|
|
355
|
+
* 3. 返回对应语言的字段值
|
|
356
|
+
* 4. 如果找不到当前语言字段,回退到中文字段
|
|
357
|
+
* 5. 如果中文字段也不存在,返回 '-'
|
|
358
|
+
*
|
|
359
|
+
* **回退机制:**
|
|
360
|
+
* sourceData[当前语言字段] → sourceData[中文字段] → '-'
|
|
361
|
+
*
|
|
362
|
+
* @example
|
|
363
|
+
* ```ts
|
|
364
|
+
* // 示例 1:标准用法(字段名为 zh_cn 和 en_us)
|
|
365
|
+
* const data = { zh_cn: '产品A', en_us: 'Product A' };
|
|
366
|
+
* getLocaleValue(data);
|
|
367
|
+
* // 当前语言为中文时返回 '产品A'
|
|
368
|
+
* // 当前语言为英文时返回 'Product A'
|
|
369
|
+
* ```
|
|
370
|
+
*
|
|
371
|
+
* @example
|
|
372
|
+
* ```ts
|
|
373
|
+
* // 示例 2:自定义字段名
|
|
374
|
+
* const data = { nameCn: '产品B', nameEn: 'Product B' };
|
|
375
|
+
* getLocaleValue(data, 'nameCn', 'nameEn');
|
|
376
|
+
* // 当前语言为中文时返回 '产品B'
|
|
377
|
+
* // 当前语言为英文时返回 'Product B'
|
|
378
|
+
* ```
|
|
379
|
+
*
|
|
380
|
+
* @example
|
|
381
|
+
* ```ts
|
|
382
|
+
* // 示例 3:只有中文字段(回退机制)
|
|
383
|
+
* const data = { nameCn: '产品C' };
|
|
384
|
+
* getLocaleValue(data, 'nameCn', 'nameEn');
|
|
385
|
+
* // 即使当前语言为英文,也会返回 '产品C'(回退到中文)
|
|
386
|
+
* ```
|
|
387
|
+
*
|
|
388
|
+
* @example
|
|
389
|
+
* ```ts
|
|
390
|
+
* // 示例 4:空数据
|
|
391
|
+
* getLocaleValue(null); // 返回 '-'
|
|
392
|
+
* getLocaleValue(undefined); // 返回 '-'
|
|
393
|
+
* ```
|
|
394
|
+
*
|
|
395
|
+
* @example
|
|
396
|
+
* ```ts
|
|
397
|
+
* // 示例 5:在列表渲染中使用
|
|
398
|
+
* const products = [
|
|
399
|
+
* { id: 1, nameCn: '苹果', nameEn: 'Apple' },
|
|
400
|
+
* { id: 2, nameCn: '香蕉', nameEn: 'Banana' }
|
|
401
|
+
* ];
|
|
402
|
+
* products.map(item => getLocaleValue(item, 'nameCn', 'nameEn'));
|
|
403
|
+
* // 当前语言为中文时返回 ['苹果', '香蕉']
|
|
404
|
+
* // 当前语言为英文时返回 ['Apple', 'Banana']
|
|
405
|
+
* ```
|
|
406
|
+
*/
|
|
407
|
+
export function getLocaleValue(
|
|
408
|
+
sourceData: Record<string, any> | null | undefined,
|
|
409
|
+
zh?: string,
|
|
410
|
+
en?: string
|
|
411
|
+
): string;
|
|
412
|
+
|
|
413
|
+
// storeHook.js hooks
|
|
414
|
+
|
|
415
|
+
/**
|
|
416
|
+
* 使用 Vuex State(支持模块化)
|
|
417
|
+
* @param moduleName 模块名称(可选)
|
|
418
|
+
* @param mapper state 映射对象或数组
|
|
419
|
+
* @returns 响应式 state 对象
|
|
420
|
+
*/
|
|
421
|
+
export function useState(moduleName: string, mapper: string[] | Record<string, any>): Record<string, Ref<any>>;
|
|
422
|
+
export function useState(mapper: string[] | Record<string, any>): Record<string, Ref<any>>;
|
|
423
|
+
|
|
424
|
+
/**
|
|
425
|
+
* 使用 Vuex Getters(支持模块化)
|
|
426
|
+
* @param moduleName 模块名称(可选)
|
|
427
|
+
* @param mapper getters 映射对象或数组
|
|
428
|
+
* @returns 响应式 getters 对象
|
|
429
|
+
*/
|
|
430
|
+
export function useGetters(moduleName: string, mapper: string[] | Record<string, any>): Record<string, Ref<any>>;
|
|
431
|
+
export function useGetters(mapper: string[] | Record<string, any>): Record<string, Ref<any>>;
|
|
432
|
+
|
|
433
|
+
/**
|
|
434
|
+
* 使用 Vuex Actions(支持模块化)
|
|
435
|
+
* @param moduleName 模块名称(可选)
|
|
436
|
+
* @param mapper actions 映射对象或数组
|
|
437
|
+
* @returns actions 对象
|
|
438
|
+
*/
|
|
439
|
+
export function useActions(moduleName: string, mapper: string[] | Record<string, any>): Record<string, (...args: any[]) => any>;
|
|
440
|
+
export function useActions(mapper: string[] | Record<string, any>): Record<string, (...args: any[]) => any>;
|
package/package.json
CHANGED
|
@@ -39,5 +39,5 @@ export interface CmpDictionaryEmits {
|
|
|
39
39
|
(e: 'update:modelValue', value: any): void;
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
declare const CmpDictionary: DefineComponent<CmpDictionaryProps, {}, any
|
|
42
|
+
declare const CmpDictionary: DefineComponent<CmpDictionaryProps, {}, any>;
|
|
43
43
|
export default CmpDictionary;
|
|
@@ -15,5 +15,5 @@ export interface ConfrimButtonEmits {
|
|
|
15
15
|
(e: 'no'): void;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
declare const ConfrimButton: DefineComponent<ConfrimButtonProps, {}, any
|
|
18
|
+
declare const ConfrimButton: DefineComponent<ConfrimButtonProps, {}, any>;
|
|
19
19
|
export default ConfrimButton;
|
|
@@ -16,5 +16,5 @@ export interface ImportButtonEmits {
|
|
|
16
16
|
(e: 'fileChange', file: File): void;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
-
declare const ImportButton: DefineComponent<ImportButtonProps, {}, any
|
|
19
|
+
declare const ImportButton: DefineComponent<ImportButtonProps, {}, any>;
|
|
20
20
|
export default ImportButton;
|
|
@@ -16,5 +16,5 @@ export interface LayOutFormEmits {
|
|
|
16
16
|
(e: 'ref', formRef: any): void;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
-
declare const LayOutForm: DefineComponent<LayOutFormProps, {}, any
|
|
19
|
+
declare const LayOutForm: DefineComponent<LayOutFormProps, {}, any>;
|
|
20
20
|
export default LayOutForm;
|