@cfmm/umi-plugins-ui-v2 0.0.25 → 0.0.26
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/cjs/components/DataChangeTips.less +12 -0
- package/dist/cjs/components/DataChangeTips.tpl +44 -0
- package/dist/cjs/components/GlobalHeader.tpl +5 -0
- package/dist/cjs/components/MyFooterToolbar.tpl +12 -13
- package/dist/cjs/locales/en-US.d.ts +3 -0
- package/dist/cjs/locales/enUS/DataChangeTips.d.ts +6 -0
- package/dist/cjs/locales/enUS/DataChangeTips.js +11 -0
- package/dist/cjs/locales/enUS/index.d.ts +3 -0
- package/dist/cjs/locales/enUS/index.js +2 -1
- package/dist/cjs/locales/th-TH.d.ts +3 -0
- package/dist/cjs/locales/zh-CN.d.ts +3 -0
- package/dist/cjs/locales/zh-TW.d.ts +3 -0
- package/dist/cjs/locales/zhCN/DataChangeTips.d.ts +6 -0
- package/dist/cjs/locales/zhCN/DataChangeTips.js +11 -0
- package/dist/cjs/locales/zhCN/index.d.ts +3 -0
- package/dist/cjs/locales/zhCN/index.js +2 -1
- package/dist/cjs/locales/zhTW/DataChangeTips.d.ts +6 -0
- package/dist/cjs/locales/zhTW/DataChangeTips.js +11 -0
- package/dist/cjs/locales/zhTW/index.d.ts +3 -0
- package/dist/cjs/locales/zhTW/index.js +2 -1
- package/dist/cjs/utils/excelHelper.tpl +200 -24
- package/dist/cjs/writeTmpFile/writeIndex.js +2 -2
- package/dist/esm/components/DataChangeTips.less +12 -0
- package/dist/esm/components/DataChangeTips.tpl +44 -0
- package/dist/esm/components/GlobalHeader.tpl +5 -0
- package/dist/esm/components/MyFooterToolbar.tpl +12 -13
- package/dist/esm/locales/en-US.d.ts +3 -0
- package/dist/esm/locales/enUS/DataChangeTips.d.ts +6 -0
- package/dist/esm/locales/enUS/DataChangeTips.js +5 -0
- package/dist/esm/locales/enUS/index.d.ts +3 -0
- package/dist/esm/locales/enUS/index.js +2 -1
- package/dist/esm/locales/th-TH.d.ts +3 -0
- package/dist/esm/locales/zh-CN.d.ts +3 -0
- package/dist/esm/locales/zh-TW.d.ts +3 -0
- package/dist/esm/locales/zhCN/DataChangeTips.d.ts +6 -0
- package/dist/esm/locales/zhCN/DataChangeTips.js +5 -0
- package/dist/esm/locales/zhCN/index.d.ts +3 -0
- package/dist/esm/locales/zhCN/index.js +2 -1
- package/dist/esm/locales/zhTW/DataChangeTips.d.ts +6 -0
- package/dist/esm/locales/zhTW/DataChangeTips.js +5 -0
- package/dist/esm/locales/zhTW/index.d.ts +3 -0
- package/dist/esm/locales/zhTW/index.js +2 -1
- package/dist/esm/utils/excelHelper.tpl +200 -24
- package/dist/esm/writeTmpFile/writeIndex.js +2 -2
- package/package.json +1 -1
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { WarningOutlined } from '@ant-design/icons';
|
|
2
|
+
import { useIntl, useMemoizedFn } from '@umijs/max';
|
|
3
|
+
import { Popconfirm, PopconfirmProps } from 'antd';
|
|
4
|
+
import React, { useState } from 'react';
|
|
5
|
+
import styles from './DataChangeTips.less';
|
|
6
|
+
|
|
7
|
+
interface DataChangeTipsProps extends Omit<PopconfirmProps, 'title'> {
|
|
8
|
+
title?: PopconfirmProps['title'];
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
const DataChangeTips: React.FC<DataChangeTipsProps> = (props) => {
|
|
12
|
+
const { open, onConfirm, ...restProps } = props;
|
|
13
|
+
|
|
14
|
+
const { formatMessage } = useIntl();
|
|
15
|
+
const [canShowTip, setCanShowTip] = useState(true);
|
|
16
|
+
|
|
17
|
+
const handleConfirm = useMemoizedFn((e) => {
|
|
18
|
+
setCanShowTip(false);
|
|
19
|
+
onConfirm?.(e);
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
const options = {
|
|
23
|
+
...restProps,
|
|
24
|
+
open: open && canShowTip,
|
|
25
|
+
zIndex: 999,
|
|
26
|
+
placement: restProps.placement || 'topRight',
|
|
27
|
+
icon: restProps.icon || (
|
|
28
|
+
<WarningOutlined className={`${styles.cfmmUI} ${styles.saveTipIcon}`} style={{ color: 'red', fontSize: 16 }} />
|
|
29
|
+
),
|
|
30
|
+
title: restProps.title || formatMessage({ id: 'cfmmUI.DataChangeTips.saveTipTitle', defaultMessage: '保存提醒' }),
|
|
31
|
+
okText: restProps.okText || formatMessage({ id: 'cfmmUI.DataChangeTips.noTip', defaultMessage: '不再提示' }),
|
|
32
|
+
description:
|
|
33
|
+
restProps.description ||
|
|
34
|
+
formatMessage({
|
|
35
|
+
id: 'cfmmUI.DataChangeTips.saveTip',
|
|
36
|
+
defaultMessage: '数据有变化,请记得保存以免数据丢失',
|
|
37
|
+
}),
|
|
38
|
+
onConfirm: handleConfirm,
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
return <Popconfirm {...options}>{props.children}</Popconfirm>;
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
export default DataChangeTips;
|
|
@@ -153,6 +153,11 @@ const GlobalHeader: React.FC<GlobalHeaderProps> = (props) => {
|
|
|
153
153
|
}}
|
|
154
154
|
className={styles.action}
|
|
155
155
|
onClick={() => {
|
|
156
|
+
// 打开调试控制台时,无法点击切换全屏的,但按键F11可以。
|
|
157
|
+
// 浏览器触发操作系统全屏时,需要把整个浏览器窗口交给 OS 接管(隐藏任务栏、地址栏、标签栏)。
|
|
158
|
+
// 但 DevTools 停靠(docked)时,它和页面共用同一个浏览器窗口
|
|
159
|
+
// Chrome 无法在这个状态下把整个窗口交给 OS 全屏,因为 DevTools 也占了窗口的一部分。
|
|
160
|
+
// F11 走的是另一条路——直接由浏览器进程通知 OS,不经过 Fullscreen API,所以不受 DevTools 状态影响。
|
|
156
161
|
toggleFull();
|
|
157
162
|
}}
|
|
158
163
|
>
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { FooterToolbar } from '@ant-design/pro-components';
|
|
2
|
-
import { useIntl, useModel, useSelectedRoutes } from '@umijs/max';
|
|
2
|
+
import { useIntl, useLocation, useModel, useSelectedRoutes } from '@umijs/max';
|
|
3
3
|
import classnames from 'classnames';
|
|
4
4
|
import React, { useEffect, useRef, useState } from 'react';
|
|
5
5
|
import { MyFooterToolbarProps } from '../types';
|
|
6
6
|
import "./MyFooterToolbar.css";
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
|
-
* 适配qiankun子应用的FooterToolbar
|
|
9
|
+
* 适配qiankun子应用的FooterToolbar
|
|
10
10
|
* @param {MyFooterToolbarProps} props
|
|
11
11
|
*/
|
|
12
12
|
const MyFooterToolbar = (props: MyFooterToolbarProps) => {
|
|
@@ -15,22 +15,21 @@ const MyFooterToolbar = (props: MyFooterToolbarProps) => {
|
|
|
15
15
|
|
|
16
16
|
const { collapsed } = window.__POWERED_BY_QIANKUN__ ? useModel("@@qiankunStateFromMaster") : {};
|
|
17
17
|
const pathnameRef = useRef(location.pathname);
|
|
18
|
+
const { pathname } = useLocation();
|
|
18
19
|
const selectedRoutes = useSelectedRoutes();
|
|
19
20
|
const [curIsActiveTabs, setCurIsActiveTabs] = useState<boolean>(false);
|
|
20
21
|
|
|
21
22
|
useEffect(() => {
|
|
22
|
-
|
|
23
|
+
// qiankun子应用走不同逻辑(修复单据页跳转到其他页面操作按钮仍显示的bug)
|
|
24
|
+
if(window.__POWERED_BY_QIANKUN__) {
|
|
25
|
+
let locationPathname = location.pathname;
|
|
26
|
+
const firstSeg = locationPathname.split('/').filter(Boolean)[0];
|
|
27
|
+
locationPathname = locationPathname.replace(`/${firstSeg}`, '');
|
|
28
|
+
setCurIsActiveTabs(pathname === locationPathname);
|
|
29
|
+
} else {
|
|
30
|
+
setCurIsActiveTabs(pathnameRef.current === location.pathname);
|
|
31
|
+
}
|
|
23
32
|
}, [selectedRoutes]);
|
|
24
|
-
|
|
25
|
-
// 没有bug但是子应用需要传递appname
|
|
26
|
-
// const { collapsed } = useQiankunData();
|
|
27
|
-
// const { pathname } = useLocation();
|
|
28
|
-
// const selectedRoutes = useSelectedRoutes();
|
|
29
|
-
// const [curIsActiveTabs, setCurIsActiveTabs] = useState<boolean>(false);
|
|
30
|
-
|
|
31
|
-
// useEffect(() => {
|
|
32
|
-
// setCurIsActiveTabs(pathname === location.pathname.replace(`/${APP_NAME}`, ''));
|
|
33
|
-
// }, [selectedRoutes]);
|
|
34
33
|
|
|
35
34
|
return (
|
|
36
35
|
<>
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
declare const _default: {
|
|
2
|
+
"cfmmUI.DataChangeTips.saveTipTitle": string;
|
|
3
|
+
"cfmmUI.DataChangeTips.noTip": string;
|
|
4
|
+
"cfmmUI.DataChangeTips.saveTip": string;
|
|
2
5
|
"cfmmUI.DataPermissionSelect.title": string;
|
|
3
6
|
"cfmmUI.DataPermissionSelect.dataScope": string;
|
|
4
7
|
"cfmmUI.DataPermissionSelect.dataScope.all": string;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _default = exports.default = {
|
|
8
|
+
"cfmmUI.DataChangeTips.saveTipTitle": "Save Reminder",
|
|
9
|
+
"cfmmUI.DataChangeTips.noTip": "No More Tips",
|
|
10
|
+
"cfmmUI.DataChangeTips.saveTip": "Data Has Changed, Please Save To Avoid Data Loss"
|
|
11
|
+
};
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
declare const _default: {
|
|
2
|
+
"cfmmUI.DataChangeTips.saveTipTitle": string;
|
|
3
|
+
"cfmmUI.DataChangeTips.noTip": string;
|
|
4
|
+
"cfmmUI.DataChangeTips.saveTip": string;
|
|
2
5
|
"cfmmUI.DataPermissionSelect.title": string;
|
|
3
6
|
"cfmmUI.DataPermissionSelect.dataScope": string;
|
|
4
7
|
"cfmmUI.DataPermissionSelect.dataScope.all": string;
|
|
@@ -16,6 +16,7 @@ var _ActionLogDrawer = _interopRequireDefault(require("./ActionLogDrawer"));
|
|
|
16
16
|
var _TimeTypeSelect = _interopRequireDefault(require("./TimeTypeSelect"));
|
|
17
17
|
var _GlobalHeader = _interopRequireDefault(require("./GlobalHeader"));
|
|
18
18
|
var _DataPermissionSelect = _interopRequireDefault(require("./DataPermissionSelect"));
|
|
19
|
+
var _DataChangeTips = _interopRequireDefault(require("./DataChangeTips"));
|
|
19
20
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
20
21
|
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
21
22
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
@@ -23,4 +24,4 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
23
24
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
24
25
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
25
26
|
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
26
|
-
var _default = exports.default = _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, _common.default), _pages.default), _MyFooterToolbar.default), _DynamicIconModal.default), _GlobalFooter.default), _GlobalHeader.default), _EditMultiLangForm.default), _PermissionSelect.default), _File.default), _ActionLogDrawer.default), _TimeTypeSelect.default), _DataPermissionSelect.default);
|
|
27
|
+
var _default = exports.default = _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, _common.default), _pages.default), _MyFooterToolbar.default), _DynamicIconModal.default), _GlobalFooter.default), _GlobalHeader.default), _EditMultiLangForm.default), _PermissionSelect.default), _File.default), _ActionLogDrawer.default), _TimeTypeSelect.default), _DataPermissionSelect.default), _DataChangeTips.default);
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
declare const _default: {
|
|
2
|
+
"cfmmUI.DataChangeTips.saveTipTitle": string;
|
|
3
|
+
"cfmmUI.DataChangeTips.noTip": string;
|
|
4
|
+
"cfmmUI.DataChangeTips.saveTip": string;
|
|
2
5
|
"cfmmUI.DataPermissionSelect.title": string;
|
|
3
6
|
"cfmmUI.DataPermissionSelect.dataScope": string;
|
|
4
7
|
"cfmmUI.DataPermissionSelect.dataScope.all": string;
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
declare const _default: {
|
|
2
|
+
"cfmmUI.DataChangeTips.saveTipTitle": string;
|
|
3
|
+
"cfmmUI.DataChangeTips.noTip": string;
|
|
4
|
+
"cfmmUI.DataChangeTips.saveTip": string;
|
|
2
5
|
"cfmmUI.DataPermissionSelect.title": string;
|
|
3
6
|
"cfmmUI.DataPermissionSelect.dataScope": string;
|
|
4
7
|
"cfmmUI.DataPermissionSelect.dataScope.all": string;
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
declare const _default: {
|
|
2
|
+
"cfmmUI.DataChangeTips.saveTipTitle": string;
|
|
3
|
+
"cfmmUI.DataChangeTips.noTip": string;
|
|
4
|
+
"cfmmUI.DataChangeTips.saveTip": string;
|
|
2
5
|
"cfmmUI.DataPermissionSelect.title": string;
|
|
3
6
|
"cfmmUI.DataPermissionSelect.dataScope": string;
|
|
4
7
|
"cfmmUI.DataPermissionSelect.dataScope.all": string;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _default = exports.default = {
|
|
8
|
+
"cfmmUI.DataChangeTips.saveTipTitle": "保存提醒",
|
|
9
|
+
"cfmmUI.DataChangeTips.noTip": "不再提示",
|
|
10
|
+
"cfmmUI.DataChangeTips.saveTip": "数据有变化,请记得保存以免数据丢失"
|
|
11
|
+
};
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
declare const _default: {
|
|
2
|
+
"cfmmUI.DataChangeTips.saveTipTitle": string;
|
|
3
|
+
"cfmmUI.DataChangeTips.noTip": string;
|
|
4
|
+
"cfmmUI.DataChangeTips.saveTip": string;
|
|
2
5
|
"cfmmUI.DataPermissionSelect.title": string;
|
|
3
6
|
"cfmmUI.DataPermissionSelect.dataScope": string;
|
|
4
7
|
"cfmmUI.DataPermissionSelect.dataScope.all": string;
|
|
@@ -16,6 +16,7 @@ var _ActionLogDrawer = _interopRequireDefault(require("./ActionLogDrawer"));
|
|
|
16
16
|
var _TimeTypeSelect = _interopRequireDefault(require("./TimeTypeSelect"));
|
|
17
17
|
var _GlobalHeader = _interopRequireDefault(require("./GlobalHeader"));
|
|
18
18
|
var _DataPermissionSelect = _interopRequireDefault(require("./DataPermissionSelect"));
|
|
19
|
+
var _DataChangeTips = _interopRequireDefault(require("./DataChangeTips"));
|
|
19
20
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
20
21
|
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
21
22
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
@@ -23,4 +24,4 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
23
24
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
24
25
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
25
26
|
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
26
|
-
var _default = exports.default = _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, _common.default), _pages.default), _MyFooterToolbar.default), _DynamicIconModal.default), _GlobalFooter.default), _GlobalHeader.default), _EditMultiLangForm.default), _PermissionSelect.default), _File.default), _ActionLogDrawer.default), _TimeTypeSelect.default), _DataPermissionSelect.default);
|
|
27
|
+
var _default = exports.default = _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, _common.default), _pages.default), _MyFooterToolbar.default), _DynamicIconModal.default), _GlobalFooter.default), _GlobalHeader.default), _EditMultiLangForm.default), _PermissionSelect.default), _File.default), _ActionLogDrawer.default), _TimeTypeSelect.default), _DataPermissionSelect.default), _DataChangeTips.default);
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _default = exports.default = {
|
|
8
|
+
"cfmmUI.DataChangeTips.saveTipTitle": "保存提醒",
|
|
9
|
+
"cfmmUI.DataChangeTips.noTip": "不再提示",
|
|
10
|
+
"cfmmUI.DataChangeTips.saveTip": "數據有變化,請記得保存以免資料丟失"
|
|
11
|
+
};
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
declare const _default: {
|
|
2
|
+
"cfmmUI.DataChangeTips.saveTipTitle": string;
|
|
3
|
+
"cfmmUI.DataChangeTips.noTip": string;
|
|
4
|
+
"cfmmUI.DataChangeTips.saveTip": string;
|
|
2
5
|
"cfmmUI.DataPermissionSelect.title": string;
|
|
3
6
|
"cfmmUI.DataPermissionSelect.dataScope": string;
|
|
4
7
|
"cfmmUI.DataPermissionSelect.dataScope.all": string;
|
|
@@ -16,6 +16,7 @@ var _ActionLogDrawer = _interopRequireDefault(require("./ActionLogDrawer"));
|
|
|
16
16
|
var _TimeTypeSelect = _interopRequireDefault(require("./TimeTypeSelect"));
|
|
17
17
|
var _GlobalHeader = _interopRequireDefault(require("./GlobalHeader"));
|
|
18
18
|
var _DataPermissionSelect = _interopRequireDefault(require("./DataPermissionSelect"));
|
|
19
|
+
var _DataChangeTips = _interopRequireDefault(require("./DataChangeTips"));
|
|
19
20
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
20
21
|
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
21
22
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
@@ -23,4 +24,4 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
23
24
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
24
25
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
25
26
|
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
26
|
-
var _default = exports.default = _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, _common.default), _pages.default), _MyFooterToolbar.default), _DynamicIconModal.default), _GlobalFooter.default), _GlobalHeader.default), _EditMultiLangForm.default), _PermissionSelect.default), _File.default), _ActionLogDrawer.default), _TimeTypeSelect.default), _DataPermissionSelect.default);
|
|
27
|
+
var _default = exports.default = _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, _common.default), _pages.default), _MyFooterToolbar.default), _DynamicIconModal.default), _GlobalFooter.default), _GlobalHeader.default), _EditMultiLangForm.default), _PermissionSelect.default), _File.default), _ActionLogDrawer.default), _TimeTypeSelect.default), _DataPermissionSelect.default), _DataChangeTips.default);
|
|
@@ -188,6 +188,46 @@ type RowStyleType = {
|
|
|
188
188
|
bgColor?: string;
|
|
189
189
|
};
|
|
190
190
|
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* 数据区单元格样式(仅作用于「数据行」,不包含标题行、注意事项、编号行、表头行)
|
|
194
|
+
*
|
|
195
|
+
* 合并优先级(后者覆盖前者):{@link ExcelExportOptions.dataCellStyle}
|
|
196
|
+
* → {@link ExcelExportOptions.columnDataStyles}
|
|
197
|
+
* → {@link ExcelExportOptions.rowDataStyles}(仅单元格字段,不含 {@link ExcelDataRowStyle.height})
|
|
198
|
+
* → {@link ExcelExportOptions.cellDataStyles}
|
|
199
|
+
*/
|
|
200
|
+
export interface ExcelDataCellStyle {
|
|
201
|
+
/** 是否绘制四边边框,默认 true(与历史行为一致) */
|
|
202
|
+
border?: boolean;
|
|
203
|
+
/** 四边统一的边框线型,默认 thin */
|
|
204
|
+
borderStyle?: ExcelJS.BorderStyle;
|
|
205
|
+
alignment?: Partial<ExcelJS.Alignment>;
|
|
206
|
+
font?: Partial<ExcelJS.Font>;
|
|
207
|
+
fill?: ExcelJS.Fill;
|
|
208
|
+
numFmt?: string;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/** 列级配置:在整列数据单元格上应用 {@link ExcelDataCellStyle},并可单独设列宽(会合并进工作表列定义) */
|
|
212
|
+
export type ExcelDataColumnStyle = Partial<ExcelDataCellStyle> & {
|
|
213
|
+
/** 列宽(Excel 字符宽度近似值),覆盖 {@link ExcelExportOptions.worksheetColumns} 中同列下标的 width */
|
|
214
|
+
width?: number;
|
|
215
|
+
};
|
|
216
|
+
|
|
217
|
+
/** 数据行级配置:在整行数据单元格上应用 {@link ExcelDataCellStyle},并可单独设行高 */
|
|
218
|
+
export type ExcelDataRowStyle = Partial<ExcelDataCellStyle> & {
|
|
219
|
+
/** 覆盖全局 {@link ExcelExportOptions.dataRowHeight} */
|
|
220
|
+
height?: number;
|
|
221
|
+
};
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* 生成 {@link ExcelExportOptions.cellDataStyles} 的键:数据行下标、列下标均为从 0 开始
|
|
225
|
+
* @example excelDataCellKey(0, 2) // 第 1 条数据第 3 列 -> '0,2'
|
|
226
|
+
*/
|
|
227
|
+
export function excelDataCellKey(dataRowIndex: number, colIndex: number): string {
|
|
228
|
+
return `${dataRowIndex},${colIndex}`;
|
|
229
|
+
}
|
|
230
|
+
|
|
191
231
|
/**
|
|
192
232
|
* Excel导出统一配置选项
|
|
193
233
|
*/
|
|
@@ -214,18 +254,145 @@ export interface ExcelExportOptions {
|
|
|
214
254
|
mergeCells?: string[];
|
|
215
255
|
/** 数据行高度,默认 22 */
|
|
216
256
|
dataRowHeight?: number;
|
|
257
|
+
/**
|
|
258
|
+
* 数据行统一单元格样式(对齐、字体、填充、数字格式、边框等)。
|
|
259
|
+
* 仅作用于数据行,不包含标题/注意事项/编号行/表头。
|
|
260
|
+
*/
|
|
261
|
+
dataCellStyle?: ExcelDataCellStyle;
|
|
262
|
+
/**
|
|
263
|
+
* 数据行按「列」覆盖样式,key 为从 0 开始的列索引。
|
|
264
|
+
* 在 {@link dataCellStyle} 之上合并,优先级低于行、单元格。
|
|
265
|
+
* `width` 会写入工作表列宽(与 {@link worksheetColumns} 同列合并时,此处优先)。
|
|
266
|
+
*/
|
|
267
|
+
columnDataStyles?: Record<number, ExcelDataColumnStyle>;
|
|
268
|
+
/**
|
|
269
|
+
* 数据行按「行」覆盖样式,key 为从 0 开始的数据行索引(第 1 条数据为 0)。
|
|
270
|
+
* 可设置 {@link ExcelDataRowStyle.height} 控制该行高度;其余字段作用于该行所有数据列单元格。
|
|
271
|
+
*/
|
|
272
|
+
rowDataStyles?: Record<number, ExcelDataRowStyle>;
|
|
273
|
+
/**
|
|
274
|
+
* 数据行按「单元格」覆盖样式,key 为 `数据行索引,列索引`(均为 0 起),建议使用 {@link excelDataCellKey}。
|
|
275
|
+
* 优先级最高。
|
|
276
|
+
*/
|
|
277
|
+
cellDataStyles?: Record<string, Partial<ExcelDataCellStyle>>;
|
|
217
278
|
}
|
|
218
279
|
|
|
219
280
|
// 兼容旧版本的类型别名
|
|
220
281
|
export type ExcelHeaderOptions = ExcelExportOptions;
|
|
221
282
|
|
|
283
|
+
const DEFAULT_DATA_ALIGNMENT: Partial<ExcelJS.Alignment> = {
|
|
284
|
+
horizontal: 'center',
|
|
285
|
+
vertical: 'middle',
|
|
286
|
+
};
|
|
287
|
+
|
|
288
|
+
function buildDataCellBorder(style: ExcelJS.BorderStyle): ExcelJS.Borders {
|
|
289
|
+
const side = { style } as ExcelJS.Border;
|
|
290
|
+
return {
|
|
291
|
+
top: side,
|
|
292
|
+
left: side,
|
|
293
|
+
bottom: side,
|
|
294
|
+
right: side,
|
|
295
|
+
} as ExcelJS.Borders;
|
|
296
|
+
}
|
|
297
|
+
|
|
222
298
|
/**
|
|
223
|
-
*
|
|
224
|
-
*
|
|
225
|
-
* @
|
|
226
|
-
*
|
|
227
|
-
*
|
|
228
|
-
*
|
|
299
|
+
* 对「数据区」的单个单元格写入显示样式(边框、对齐、字体、填充、数字格式)。
|
|
300
|
+
*
|
|
301
|
+
* 【作用范围】仅应在 {@link genExcelAdvanced} 写入每条数据行时调用;标题行、注意事项、编号行、
|
|
302
|
+
* 表头行由 `genExcelAdvanced` 单独写样式,不走本函数。
|
|
303
|
+
*
|
|
304
|
+
* 【样式来源与优先级】自低至高:`dataCellStyle`(全局默认)→ `columnDataStyles` → `rowDataStyles`
|
|
305
|
+
* → `cellDataStyles`;同一属性后者覆盖前者。`columnDataStyles` 中的 `width` 不在此处理,由工作表列定义合并。
|
|
306
|
+
*
|
|
307
|
+
* @param cell ExcelJS 单元格实例
|
|
308
|
+
* @param dataRowIndex 数据行在业务数据中的下标(第 1 条为 0),非工作表物理行号
|
|
309
|
+
* @param colIndex 列下标(第 1 列为 0)
|
|
310
|
+
* @param options 导出选项
|
|
311
|
+
*/
|
|
312
|
+
function applyDataCellAppearance(
|
|
313
|
+
cell: ExcelJS.Cell,
|
|
314
|
+
dataRowIndex: number,
|
|
315
|
+
colIndex: number,
|
|
316
|
+
options?: ExcelExportOptions,
|
|
317
|
+
): void {
|
|
318
|
+
// 取出四层覆盖:全局列、行、单元格(键为 "行,列")
|
|
319
|
+
const unified = options?.dataCellStyle;
|
|
320
|
+
const colOv = options?.columnDataStyles?.[colIndex];
|
|
321
|
+
const rowOv = options?.rowDataStyles?.[dataRowIndex];
|
|
322
|
+
const cellOv = options?.cellDataStyles?.[excelDataCellKey(dataRowIndex, colIndex)];
|
|
323
|
+
|
|
324
|
+
// 是否画四边线及线型(自最细粒度向全局回落,缺省为画 thin 边框)
|
|
325
|
+
const drawBorder =
|
|
326
|
+
cellOv?.border ?? rowOv?.border ?? colOv?.border ?? unified?.border ?? true;
|
|
327
|
+
|
|
328
|
+
const borderStyle =
|
|
329
|
+
cellOv?.borderStyle ??
|
|
330
|
+
rowOv?.borderStyle ??
|
|
331
|
+
colOv?.borderStyle ??
|
|
332
|
+
unified?.borderStyle ??
|
|
333
|
+
'thin';
|
|
334
|
+
|
|
335
|
+
if (drawBorder) {
|
|
336
|
+
cell.border = buildDataCellBorder(borderStyle);
|
|
337
|
+
} else {
|
|
338
|
+
delete (cell as { border?: ExcelJS.Borders }).border;
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
// 对齐:先默认居中,再逐层叠加深覆盖
|
|
342
|
+
cell.alignment = {
|
|
343
|
+
...DEFAULT_DATA_ALIGNMENT,
|
|
344
|
+
...(unified?.alignment ?? {}),
|
|
345
|
+
...(colOv?.alignment ?? {}),
|
|
346
|
+
...(rowOv?.alignment ?? {}),
|
|
347
|
+
...(cellOv?.alignment ?? {}),
|
|
348
|
+
};
|
|
349
|
+
|
|
350
|
+
// 字体:浅合并四层;有任一字段时再赋值,避免清空 Excel 默认字体
|
|
351
|
+
const mergedFont = {
|
|
352
|
+
...(unified?.font ?? {}),
|
|
353
|
+
...(colOv?.font ?? {}),
|
|
354
|
+
...(rowOv?.font ?? {}),
|
|
355
|
+
...(cellOv?.font ?? {}),
|
|
356
|
+
};
|
|
357
|
+
if (Object.keys(mergedFont).length > 0) {
|
|
358
|
+
cell.font = { ...cell.font, ...mergedFont };
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
// 填充:取最先命中的高优先级非空 fill
|
|
362
|
+
const fill = cellOv?.fill ?? rowOv?.fill ?? colOv?.fill ?? unified?.fill;
|
|
363
|
+
if (fill) {
|
|
364
|
+
cell.fill = fill;
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
// 数字/文本格式(如 '0.00'、'@')
|
|
368
|
+
const numFmt = cellOv?.numFmt ?? rowOv?.numFmt ?? colOv?.numFmt ?? unified?.numFmt;
|
|
369
|
+
if (numFmt !== undefined && numFmt !== '') {
|
|
370
|
+
cell.numFmt = numFmt;
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
/**
|
|
375
|
+
* 通用 Excel 导出:用 ExcelJS 构建工作簿,按固定顺序拼装版式后写出 xlsx 并触发浏览器下载。
|
|
376
|
+
*
|
|
377
|
+
* 【整体流程概要】
|
|
378
|
+
* 1. 创建工作簿与工作表,根据表头确定列数;
|
|
379
|
+
* 2. 合并列宽:`worksheetColumns` 与 `columnDataStyles[].width` 按列下标合并;
|
|
380
|
+
* 3. 自上而下追加可选区块:标题行 → 注意事项 → 隐藏编号行 → 单级或多级表头;
|
|
381
|
+
* 4. 按需执行 `mergeCells`(A1 记法,对应此时工作表中的行号);
|
|
382
|
+
* 5. 拉取 `data`(同步数组或异步函数),逐行 `addRow`,对数据区内每个单元格调用
|
|
383
|
+
* {@link applyDataCellAppearance},并按 `rowDataStyles` / `dataRowHeight` 设行高;
|
|
384
|
+
* 6. 若存在表头锁定或锁定列则 `workSheet.protect`;
|
|
385
|
+
* 7. `writeBuffer` + {@link fileDownloadFromBlob}。
|
|
386
|
+
*
|
|
387
|
+
* 【与样式相关的约定】
|
|
388
|
+
* - 标题、注意事项、表头等使用 `options` 中专有字段写死样式,**不参与** `dataCellStyle` 等数据区配置;
|
|
389
|
+
* - 数据行下标 `dataRowIndex` 从 0 起,与 Excel 中「第几行」无关(前面区块会占掉若干行)。
|
|
390
|
+
*
|
|
391
|
+
* @param fileName 下载文件名(含扩展名,如 `.xlsx`)
|
|
392
|
+
* @param workSheetName 工作表名称
|
|
393
|
+
* @param headerColumns 表头:一维为单级表头,二维为多级表头(末行决定列数)
|
|
394
|
+
* @param data 数据行二维数组,或返回该数组的同步/异步函数(便于分页拉取)
|
|
395
|
+
* @param options 标题、表头区样式、列宽、数据区样式、合并、保护密码等
|
|
229
396
|
*/
|
|
230
397
|
export const genExcelAdvanced = async (
|
|
231
398
|
fileName: string,
|
|
@@ -234,12 +401,13 @@ export const genExcelAdvanced = async (
|
|
|
234
401
|
data: any[] | (() => Promise<any[]>) | (() => any[]),
|
|
235
402
|
options?: ExcelExportOptions,
|
|
236
403
|
): Promise<void> => {
|
|
237
|
-
//
|
|
404
|
+
// 缺少文件名、表名或表头时无法建表,直接返回
|
|
238
405
|
if (!fileName || !workSheetName || !headerColumns.length) {
|
|
239
406
|
console.error('genExcelAdvanced: 缺少必要参数');
|
|
240
407
|
return;
|
|
241
408
|
}
|
|
242
409
|
|
|
410
|
+
// 新建工作簿并打时间戳元数据(部分客户端会显示/使用)
|
|
243
411
|
const workBook = new ExcelJS.Workbook();
|
|
244
412
|
workBook.created = new Date();
|
|
245
413
|
workBook.modified = new Date();
|
|
@@ -257,11 +425,23 @@ export const genExcelAdvanced = async (
|
|
|
257
425
|
: (headerColumns as string[]);
|
|
258
426
|
const colCount = lastHeaderRow.length;
|
|
259
427
|
|
|
260
|
-
//
|
|
261
|
-
|
|
428
|
+
// 列宽:worksheetColumns 为基底,columnDataStyles[colIndex].width 逐项覆盖(仅列级属性,不在单元格里设置)
|
|
429
|
+
const defaultColWidth = 20;
|
|
430
|
+
const wsCols = options?.worksheetColumns;
|
|
431
|
+
const mergedColumns: NonNullable<Worksheet['columns']> = [];
|
|
432
|
+
for (let c = 0; c < colCount; c++) {
|
|
433
|
+
const fromWs = wsCols?.[c] as NonNullable<Worksheet['columns']>[number] | undefined;
|
|
434
|
+
const widthFromStyle = options?.columnDataStyles?.[c]?.width;
|
|
435
|
+
mergedColumns.push({
|
|
436
|
+
...fromWs,
|
|
437
|
+
width: widthFromStyle ?? fromWs?.width ?? defaultColWidth,
|
|
438
|
+
});
|
|
439
|
+
}
|
|
440
|
+
workSheet.columns = mergedColumns;
|
|
262
441
|
|
|
263
442
|
// 是否锁定基础行(默认为 true)
|
|
264
443
|
const lockHeaderRows = options?.lockHeaderRows !== false;
|
|
444
|
+
// 物理行号:追加行时递增,用于 mergeCells 与「第几行」对应
|
|
265
445
|
let currentRowIndex = 0;
|
|
266
446
|
|
|
267
447
|
// ========== 第一行:标题(可选) ==========
|
|
@@ -413,36 +593,32 @@ export const genExcelAdvanced = async (
|
|
|
413
593
|
});
|
|
414
594
|
}
|
|
415
595
|
|
|
416
|
-
// ==========
|
|
596
|
+
// ========== 锁定列:仅作用于数据行单元格的 protection,需与 workSheet.protect 配合 ==========
|
|
417
597
|
const lockedColumns = options?.lockedColumns ?? [];
|
|
418
598
|
const hasLockedColumns = lockedColumns.length > 0;
|
|
419
599
|
|
|
420
|
-
// ==========
|
|
600
|
+
// ========== 数据:支持传入数组或异步工厂(如大数据分批 resolve) ==========
|
|
421
601
|
const rows = typeof data === 'function' ? await data() : data;
|
|
422
602
|
|
|
423
|
-
// ==========
|
|
603
|
+
// ========== 数据行:每格套用 applyDataCellAppearance;行高来自 rowDataStyles 或全局 dataRowHeight ==========
|
|
424
604
|
if (rows?.length > 0) {
|
|
425
|
-
rows.forEach((row) => {
|
|
605
|
+
rows.forEach((row, dataRowIndex) => {
|
|
426
606
|
const dataRow = workSheet.addRow(row);
|
|
607
|
+
const rowStyle = options?.rowDataStyles?.[dataRowIndex];
|
|
427
608
|
dataRow.eachCell({ includeEmpty: true }, (cell, colNumber) => {
|
|
428
609
|
if (colNumber <= colCount) {
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
left: { style: 'thin' },
|
|
432
|
-
bottom: { style: 'thin' },
|
|
433
|
-
right: { style: 'thin' },
|
|
434
|
-
};
|
|
435
|
-
cell.alignment = { horizontal: 'center', vertical: 'middle' };
|
|
610
|
+
const colIndex = colNumber - 1;
|
|
611
|
+
applyDataCellAppearance(cell, dataRowIndex, colIndex, options);
|
|
436
612
|
if (hasLockedColumns) {
|
|
437
|
-
cell.protection = { locked: lockedColumns.includes(
|
|
613
|
+
cell.protection = { locked: lockedColumns.includes(colIndex) };
|
|
438
614
|
}
|
|
439
615
|
}
|
|
440
616
|
});
|
|
441
|
-
dataRow.height = options?.dataRowHeight ?? 22;
|
|
617
|
+
dataRow.height = rowStyle?.height ?? options?.dataRowHeight ?? 22;
|
|
442
618
|
});
|
|
443
619
|
}
|
|
444
620
|
|
|
445
|
-
// ==========
|
|
621
|
+
// ========== 工作表保护:锁定表头区或部分列时启用(密码可选) ==========
|
|
446
622
|
if (lockHeaderRows || hasLockedColumns) {
|
|
447
623
|
workSheet.protect(options?.sheetPassword ?? '', {
|
|
448
624
|
selectLockedCells: true,
|
|
@@ -454,7 +630,7 @@ export const genExcelAdvanced = async (
|
|
|
454
630
|
});
|
|
455
631
|
}
|
|
456
632
|
|
|
457
|
-
// ==========
|
|
633
|
+
// ========== 序列化为 xlsx 二进制并触发本地下载 ==========
|
|
458
634
|
try {
|
|
459
635
|
const buffer = await workBook.xlsx.writeBuffer();
|
|
460
636
|
fileDownloadFromBlob(fileName, buffer as unknown as Blob);
|
|
@@ -5,6 +5,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _default = exports.default = {
|
|
8
|
-
path:
|
|
9
|
-
content: "\n // \u5BFC\u5165\u7EC4\u4EF6\n import QrCodeModal from \"./components/QrCodeModal\";\n import CreateForm from \"./components/AddDrawerForm\";\n import MyFooterToolbar from \"./components/MyFooterToolbar\";\n import DropdownButton from \"./components/DropdownButton\";\n import DynamicIcon, { getAntdIconList } from \"./components/DynamicIcon\";\n import DynamicIconModal from \"./components/DynamicIconModal\";\n import HighlightStr from \"./components/HighlightStr\";\n import EditMultiLangForm from \"./components/EditMultiLangForm\";\n import MyColorPicker from \"./components/MyColorPicker\";\n import MySelect from \"./components/MySelect\";\n import MySelectLang from \"./components/MySelectLang\";\n import PermissionSelect from \"./components/PermissionSelect\";\n import DataPermissionSelect from \"./components/DataPermissionSelect\";\n import UTCDatePicker from \"./components/UTCDatePicker\";\n import ProFormUTCDatePicker from \"./components/ProFormUTCDatePicker\";\n import UTCRangePicker from \"./components/UTCRangePicker\";\n import ProFormUTCRangePicker from \"./components/ProFormUTCRangePicker\";\n import RandomAvatar from \"./components/RandomAvatar\";\n import RefDrawerForm from \"./components/RefDrawerForm\";\n import UpdateForm from \"./components/UpdateForm\";\n import ViewTableItemDrawer from \"./components/ViewTableItemDrawer\";\n import WangEditor from \"./components/WangEditor\";\n import WangEditorView from \"./components/WangEditorView\";\n import MyUpload from \"./components/MyUpload\";\n import CopyButton from \"./components/CopyButton\";\n import ImportExecl from \"./components/ImportExecl\";\n import MyPageContainer from \"./components/MyPageContainer\";\n import MyReactEcharts from \"./components/MyReactEcharts\";\n import MyTagList from \"./components/MyTagList\";\n import VolumeFormItem from \"./components/VolumeFormItem\";\n import ReportTable from \"./components/ReportTable\";\n import DicDropDownList from \"./components/DicDropDownList\";\n import ActionLogDrawer from \"./components/ActionLogDrawer\";\n import DndTabs from \"./components/DndTabs\";\n import DndTag from \"./components/DndTag\";\n import TimeTypeSelect from \"./components/TimeTypeSelect\";\n import ImportDataUpload from \"./components/ImportDataUpload\";\n import PDFWrapper from \"./components/PDFWrapper\";\n import ExportPageWrapper from \"./components/ExportPageWrapper\";\n import { PageExporter } from \"./utils/exportPage\";\n import MySetps from \"./components/MySetps\";\n import CrudTable from \"./components/CrudTable\";\n\n import MenuFooter from \"./components/MenuFooter\";\n import GlobalHeader from \"./components/GlobalHeader\";\n import GlobalFooter from \"./components/GlobalFooter\";\n import AvatarDropdown from \"./components/AvatarDropdown\";\n import HeaderSearch from \"./components/HeaderSearch\";\n import ThemeSwitch from \"./components/ThemeSwitch\";\n import KeepAliveTabs from \"./components/KeepAliveTabs\";\n import KeepAliveDndTabs from \"./components/KeepAliveDndTabs\";\n\n import Authorized from \"./components/Authorized\";\n import AuthorizedRoute from \"./components/AuthorizedRoute\";\n import AuthorizeRender from \"./components/AuthorizeRender\";\n import CheckPermissions from \"./components/CheckPermissions\";\n import PromiseRender from \"./components/PromiseRender\";\n import Secured from \"./components/Secured\";\n import renderAuthorize from \"./components/renderAuthorize\";\n import { getAuthorityFunction } from \"./utils/authorityFunction\";\n\n import LoadingSvg from \"./components/LoadingSvg\";\n import PageLoading from \"./components/PageLoading\";\n import NoFoundPage from \"./components/NoFoundPage\";\n import UserDisable from \"./components/UserDisable\";\n import UserNoPermission from \"./components/UserNoPermission\";\n import UserNoPagePermission from \"./components/UserNoPagePermission\";\n\n import useAction from \"./hooks/useAction\";\n import useFormatLocale from \"./hooks/useFormatLocale\";\n import useActionLocales from \"./hooks/useActionLocales\";\n import useQueryTableList from \"./hooks/useQueryTableList\";\n import useAuthority from \"./hooks/useAuthority\";\n import useColumnTitle, { useBatchColumnTitles } from \"./hooks/useColumnTitle\";\n import useMemoizedFn from \"./hooks/useMemoizedFn\";\n import { useKeepAliveTabs } from \"./hooks/useKeepAliveTabs\";\n import { usePageExport } from \"./hooks/usePageExport\";\n import { useRouteAuth } from \"./hooks/useRouteAuth\";\n import { useFetchList } from \"./hooks/useFetchList\";\n\n // \u5BFC\u51FAhooks\n export {\n useAction,\n useFormatLocale,\n useActionLocales,\n useQueryTableList,\n useAuthority,\n useColumnTitle,\n useBatchColumnTitles,\n useMemoizedFn,\n useKeepAliveTabs,\n usePageExport,\n useRouteAuth,\n useFetchList,\n }\n\n // \u5BFC\u51FA\u7EC4\u4EF6\n export { \n QrCodeModal, \n CreateForm, \n MyFooterToolbar,\n DropdownButton,\n DynamicIcon,\n DynamicIconModal,\n HighlightStr,\n getAntdIconList,\n EditMultiLangForm,\n MyColorPicker,\n MySelect,\n MySelectLang,\n PermissionSelect,\n DataPermissionSelect,\n UTCDatePicker,\n ProFormUTCDatePicker,\n UTCRangePicker,\n ProFormUTCRangePicker,\n RandomAvatar,\n RefDrawerForm,\n UpdateForm,\n ViewTableItemDrawer,\n WangEditor,\n WangEditorView,\n MyUpload,\n CopyButton,\n ImportExecl,\n MyPageContainer,\n MyReactEcharts,\n MyTagList,\n VolumeFormItem,\n ReportTable,\n DicDropDownList,\n ActionLogDrawer,\n DndTabs,\n DndTag,\n TimeTypeSelect,\n ImportDataUpload,\n PDFWrapper,\n ExportPageWrapper,\n PageExporter,\n MySetps,\n CrudTable,\n\n MenuFooter,\n GlobalHeader,\n GlobalFooter,\n AvatarDropdown,\n HeaderSearch,\n ThemeSwitch,\n KeepAliveTabs,\n KeepAliveDndTabs,\n \n Authorized,\n AuthorizedRoute,\n AuthorizeRender,\n CheckPermissions,\n PromiseRender,\n Secured,\n renderAuthorize,\n getAuthorityFunction,\n\n PageLoading,\n LoadingSvg,\n NoFoundPage,\n UserDisable,\n UserNoPermission,\n UserNoPagePermission,\n };\n "
|
|
8
|
+
path: 'index.tsx',
|
|
9
|
+
content: "\n // \u5BFC\u5165\u7EC4\u4EF6\n import QrCodeModal from \"./components/QrCodeModal\";\n import CreateForm from \"./components/AddDrawerForm\";\n import MyFooterToolbar from \"./components/MyFooterToolbar\";\n import DropdownButton from \"./components/DropdownButton\";\n import DynamicIcon, { getAntdIconList } from \"./components/DynamicIcon\";\n import DynamicIconModal from \"./components/DynamicIconModal\";\n import HighlightStr from \"./components/HighlightStr\";\n import EditMultiLangForm from \"./components/EditMultiLangForm\";\n import MyColorPicker from \"./components/MyColorPicker\";\n import MySelect from \"./components/MySelect\";\n import MySelectLang from \"./components/MySelectLang\";\n import PermissionSelect from \"./components/PermissionSelect\";\n import DataPermissionSelect from \"./components/DataPermissionSelect\";\n import UTCDatePicker from \"./components/UTCDatePicker\";\n import ProFormUTCDatePicker from \"./components/ProFormUTCDatePicker\";\n import UTCRangePicker from \"./components/UTCRangePicker\";\n import ProFormUTCRangePicker from \"./components/ProFormUTCRangePicker\";\n import RandomAvatar from \"./components/RandomAvatar\";\n import RefDrawerForm from \"./components/RefDrawerForm\";\n import UpdateForm from \"./components/UpdateForm\";\n import ViewTableItemDrawer from \"./components/ViewTableItemDrawer\";\n import WangEditor from \"./components/WangEditor\";\n import WangEditorView from \"./components/WangEditorView\";\n import MyUpload from \"./components/MyUpload\";\n import CopyButton from \"./components/CopyButton\";\n import ImportExecl from \"./components/ImportExecl\";\n import MyPageContainer from \"./components/MyPageContainer\";\n import MyReactEcharts from \"./components/MyReactEcharts\";\n import MyTagList from \"./components/MyTagList\";\n import VolumeFormItem from \"./components/VolumeFormItem\";\n import ReportTable from \"./components/ReportTable\";\n import DicDropDownList from \"./components/DicDropDownList\";\n import ActionLogDrawer from \"./components/ActionLogDrawer\";\n import DndTabs from \"./components/DndTabs\";\n import DndTag from \"./components/DndTag\";\n import TimeTypeSelect from \"./components/TimeTypeSelect\";\n import ImportDataUpload from \"./components/ImportDataUpload\";\n import PDFWrapper from \"./components/PDFWrapper\";\n import ExportPageWrapper from \"./components/ExportPageWrapper\";\n import { PageExporter } from \"./utils/exportPage\";\n import MySetps from \"./components/MySetps\";\n import CrudTable from \"./components/CrudTable\";\n import DataChangeTips from \"./components/DataChangeTips\";\n\n import MenuFooter from \"./components/MenuFooter\";\n import GlobalHeader from \"./components/GlobalHeader\";\n import GlobalFooter from \"./components/GlobalFooter\";\n import AvatarDropdown from \"./components/AvatarDropdown\";\n import HeaderSearch from \"./components/HeaderSearch\";\n import ThemeSwitch from \"./components/ThemeSwitch\";\n import KeepAliveTabs from \"./components/KeepAliveTabs\";\n import KeepAliveDndTabs from \"./components/KeepAliveDndTabs\";\n\n import Authorized from \"./components/Authorized\";\n import AuthorizedRoute from \"./components/AuthorizedRoute\";\n import AuthorizeRender from \"./components/AuthorizeRender\";\n import CheckPermissions from \"./components/CheckPermissions\";\n import PromiseRender from \"./components/PromiseRender\";\n import Secured from \"./components/Secured\";\n import renderAuthorize from \"./components/renderAuthorize\";\n import { getAuthorityFunction } from \"./utils/authorityFunction\";\n\n import LoadingSvg from \"./components/LoadingSvg\";\n import PageLoading from \"./components/PageLoading\";\n import NoFoundPage from \"./components/NoFoundPage\";\n import UserDisable from \"./components/UserDisable\";\n import UserNoPermission from \"./components/UserNoPermission\";\n import UserNoPagePermission from \"./components/UserNoPagePermission\";\n\n import useAction from \"./hooks/useAction\";\n import useFormatLocale from \"./hooks/useFormatLocale\";\n import useActionLocales from \"./hooks/useActionLocales\";\n import useQueryTableList from \"./hooks/useQueryTableList\";\n import useAuthority from \"./hooks/useAuthority\";\n import useColumnTitle, { useBatchColumnTitles } from \"./hooks/useColumnTitle\";\n import useMemoizedFn from \"./hooks/useMemoizedFn\";\n import { useKeepAliveTabs } from \"./hooks/useKeepAliveTabs\";\n import { usePageExport } from \"./hooks/usePageExport\";\n import { useRouteAuth } from \"./hooks/useRouteAuth\";\n import { useFetchList } from \"./hooks/useFetchList\";\n\n // \u5BFC\u51FAhooks\n export {\n useAction,\n useFormatLocale,\n useActionLocales,\n useQueryTableList,\n useAuthority,\n useColumnTitle,\n useBatchColumnTitles,\n useMemoizedFn,\n useKeepAliveTabs,\n usePageExport,\n useRouteAuth,\n useFetchList,\n }\n\n // \u5BFC\u51FA\u7EC4\u4EF6\n export { \n QrCodeModal, \n CreateForm, \n MyFooterToolbar,\n DropdownButton,\n DynamicIcon,\n DynamicIconModal,\n HighlightStr,\n getAntdIconList,\n EditMultiLangForm,\n MyColorPicker,\n MySelect,\n MySelectLang,\n PermissionSelect,\n DataPermissionSelect,\n UTCDatePicker,\n ProFormUTCDatePicker,\n UTCRangePicker,\n ProFormUTCRangePicker,\n RandomAvatar,\n RefDrawerForm,\n UpdateForm,\n ViewTableItemDrawer,\n WangEditor,\n WangEditorView,\n MyUpload,\n CopyButton,\n ImportExecl,\n MyPageContainer,\n MyReactEcharts,\n MyTagList,\n VolumeFormItem,\n ReportTable,\n DicDropDownList,\n ActionLogDrawer,\n DndTabs,\n DndTag,\n TimeTypeSelect,\n ImportDataUpload,\n PDFWrapper,\n ExportPageWrapper,\n PageExporter,\n MySetps,\n CrudTable,\n DataChangeTips,\n\n MenuFooter,\n GlobalHeader,\n GlobalFooter,\n AvatarDropdown,\n HeaderSearch,\n ThemeSwitch,\n KeepAliveTabs,\n KeepAliveDndTabs,\n \n Authorized,\n AuthorizedRoute,\n AuthorizeRender,\n CheckPermissions,\n PromiseRender,\n Secured,\n renderAuthorize,\n getAuthorityFunction,\n\n PageLoading,\n LoadingSvg,\n NoFoundPage,\n UserDisable,\n UserNoPermission,\n UserNoPagePermission,\n };\n "
|
|
10
10
|
};
|