@smallwei/avue 3.8.2 → 3.8.3
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/README.md +206 -86
- package/dist/avue.js +37301 -0
- package/dist/avue.js.map +1 -0
- package/dist/avue.min.js +6 -0
- package/dist/avue.min.mjs +2 -0
- package/dist/avue.mjs +2 -0
- package/dist/index.css +1 -0
- package/es/avue.min.mjs +2 -0
- package/es/avue.min.ts +2 -0
- package/es/avue.mjs +2 -0
- package/es/avue.ts +2 -0
- package/es/core/create.mjs +8 -0
- package/es/core/create.ts +16 -0
- package/es/core/dataformat.mjs +184 -0
- package/es/core/dataformat.ts +190 -0
- package/es/core/detail.mjs +74 -0
- package/es/core/detail.ts +81 -0
- package/es/core/dic.mjs +213 -0
- package/es/core/dic.ts +235 -0
- package/es/core/locale.mjs +8 -0
- package/es/core/locale.ts +9 -0
- package/es/core/packages.mjs +61 -0
- package/es/core/packages.ts +62 -0
- package/es/core/slot.mjs +32 -0
- package/es/core/slot.ts +30 -0
- package/es/global/variable.mjs +80 -0
- package/es/global/variable.ts +84 -0
- package/es/icon.mjs +9 -0
- package/es/icon.ts +11 -0
- package/es/index.mjs +127 -0
- package/es/index.ts +177 -0
- package/es/locale/browser/en.mjs +288 -0
- package/es/locale/browser/zh-cn.mjs +288 -0
- package/es/locale/browser/zh.mjs +288 -0
- package/es/locale/index.mjs +141 -0
- package/es/locale/index.ts +196 -0
- package/es/locale/lang/en.mjs +282 -0
- package/es/locale/lang/en.ts +282 -0
- package/es/locale/lang/zh-cn.mjs +282 -0
- package/es/locale/lang/zh-cn.ts +282 -0
- package/es/locale/lang/zh.mjs +282 -0
- package/es/locale/lang/zh.ts +282 -0
- package/es/packages/core/common/event.mjs +58 -0
- package/es/packages/core/common/event.ts +56 -0
- package/es/packages/core/common/init.mjs +134 -0
- package/es/packages/core/common/init.ts +133 -0
- package/es/packages/core/common/props.mjs +239 -0
- package/es/packages/core/common/props.ts +240 -0
- package/es/packages/core/components/dialog-form/index.mjs +29 -0
- package/es/packages/core/components/dialog-form/index.ts +29 -0
- package/es/packages/core/components/dialog-form/index.vue +108 -0
- package/es/packages/core/components/form/custom.mjs +41 -0
- package/es/packages/core/components/form/custom.ts +41 -0
- package/es/packages/core/components/form/index.vue +176 -0
- package/es/packages/core/components/icon/index.vue +37 -0
- package/es/packages/core/components/image-preview/index.mjs +34 -0
- package/es/packages/core/components/image-preview/index.ts +37 -0
- package/es/packages/core/components/image-preview/index.vue +215 -0
- package/es/packages/core/directive/contextmenu.mjs +92 -0
- package/es/packages/core/directive/contextmenu.ts +103 -0
- package/es/packages/core/directive/permission.mjs +19 -0
- package/es/packages/core/directive/permission.ts +18 -0
- package/es/packages/data/box/index.vue +66 -0
- package/es/packages/data/card/index.vue +62 -0
- package/es/packages/data/cardText/index.vue +56 -0
- package/es/packages/data/countdown/index.vue +81 -0
- package/es/packages/data/dashboard/index.vue +72 -0
- package/es/packages/data/display/index.vue +63 -0
- package/es/packages/data/icons/index.vue +68 -0
- package/es/packages/data/imgText/index.vue +72 -0
- package/es/packages/data/list/index.vue +69 -0
- package/es/packages/data/notice/index.vue +63 -0
- package/es/packages/data/operaText/index.vue +62 -0
- package/es/packages/data/panel/index.vue +62 -0
- package/es/packages/data/pay/index.vue +92 -0
- package/es/packages/data/price/index.vue +55 -0
- package/es/packages/data/product/index.vue +106 -0
- package/es/packages/data/profile/index.vue +91 -0
- package/es/packages/data/progress/index.vue +64 -0
- package/es/packages/data/rank/index.vue +92 -0
- package/es/packages/data/rotate/index.vue +69 -0
- package/es/packages/data/statistic/index.vue +71 -0
- package/es/packages/data/tabs/index.vue +64 -0
- package/es/packages/data/task/index.vue +82 -0
- package/es/packages/data/weather/index.vue +103 -0
- package/es/packages/element-plus/array/index.vue +115 -0
- package/es/packages/element-plus/article/index.vue +73 -0
- package/es/packages/element-plus/card/index.vue +103 -0
- package/es/packages/element-plus/cascader/index.vue +132 -0
- package/es/packages/element-plus/chat/index.vue +513 -0
- package/es/packages/element-plus/checkbox/index.vue +84 -0
- package/es/packages/element-plus/comment/index.vue +76 -0
- package/es/packages/element-plus/count-up/index.vue +107 -0
- package/es/packages/element-plus/crud/column/column-default.vue +128 -0
- package/es/packages/element-plus/crud/column/column-dynamic.vue +86 -0
- package/es/packages/element-plus/crud/column/column-menu.vue +267 -0
- package/es/packages/element-plus/crud/column/column-slot.vue +348 -0
- package/es/packages/element-plus/crud/column/column.vue +119 -0
- package/es/packages/element-plus/crud/column/menu.vue +78 -0
- package/es/packages/element-plus/crud/config.mjs +74 -0
- package/es/packages/element-plus/crud/config.ts +74 -0
- package/es/packages/element-plus/crud/dialog/dialog-column.vue +102 -0
- package/es/packages/element-plus/crud/dialog/dialog-excel.vue +204 -0
- package/es/packages/element-plus/crud/dialog/dialog-filter.vue +159 -0
- package/es/packages/element-plus/crud/dialog/dialog-form.vue +352 -0
- package/es/packages/element-plus/crud/grid/index.vue +271 -0
- package/es/packages/element-plus/crud/grid/item.vue +39 -0
- package/es/packages/element-plus/crud/index.vue +1018 -0
- package/es/packages/element-plus/crud/menu/header-menu.vue +175 -0
- package/es/packages/element-plus/crud/menu/header-search.vue +228 -0
- package/es/packages/element-plus/crud/menu/table-page.vue +108 -0
- package/es/packages/element-plus/date/index.vue +81 -0
- package/es/packages/element-plus/draggable/index.vue +444 -0
- package/es/packages/element-plus/dynamic/index.vue +353 -0
- package/es/packages/element-plus/flow/index.vue +339 -0
- package/es/packages/element-plus/flow/node.vue +84 -0
- package/es/packages/element-plus/form/config.mjs +6 -0
- package/es/packages/element-plus/form/config.ts +6 -0
- package/es/packages/element-plus/form/index.vue +954 -0
- package/es/packages/element-plus/form/menu.vue +63 -0
- package/es/packages/element-plus/group/index.vue +90 -0
- package/es/packages/element-plus/input/index.vue +1264 -0
- package/es/packages/element-plus/input-color/index.vue +70 -0
- package/es/packages/element-plus/input-cron/index.vue +363 -0
- package/es/packages/element-plus/input-icon/index.vue +143 -0
- package/es/packages/element-plus/input-map/index.vue +311 -0
- package/es/packages/element-plus/input-number/index.vue +91 -0
- package/es/packages/element-plus/input-table/index.vue +279 -0
- package/es/packages/element-plus/input-tag/index.vue +79 -0
- package/es/packages/element-plus/input-tree/index.vue +194 -0
- package/es/packages/element-plus/license/index.vue +155 -0
- package/es/packages/element-plus/login/index.vue +203 -0
- package/es/packages/element-plus/mention/index.vue +117 -0
- package/es/packages/element-plus/radio/index.vue +38 -0
- package/es/packages/element-plus/rate/index.vue +51 -0
- package/es/packages/element-plus/search/index.vue +129 -0
- package/es/packages/element-plus/select/index.vue +292 -0
- package/es/packages/element-plus/sign/index.vue +230 -0
- package/es/packages/element-plus/slider/index.vue +66 -0
- package/es/packages/element-plus/switch/index.vue +72 -0
- package/es/packages/element-plus/tabs/index.vue +62 -0
- package/es/packages/element-plus/text-ellipsis/index.vue +104 -0
- package/es/packages/element-plus/time/index.vue +81 -0
- package/es/packages/element-plus/title/index.vue +30 -0
- package/es/packages/element-plus/tree/index.vue +460 -0
- package/es/packages/element-plus/upload/index.vue +728 -0
- package/es/packages/element-plus/verify/index.vue +62 -0
- package/es/packages/element-plus/video/index.vue +90 -0
- package/es/plugin/ali/index.mjs +4 -0
- package/es/plugin/ali/index.ts +6 -0
- package/es/plugin/clipboard/index.mjs +61 -0
- package/es/plugin/clipboard/index.ts +67 -0
- package/es/plugin/export/_blob.mjs +151 -0
- package/es/plugin/export/_blob.ts +176 -0
- package/es/plugin/export/_export2Excel.mjs +141 -0
- package/es/plugin/export/_export2Excel.ts +166 -0
- package/es/plugin/export/index.mjs +263 -0
- package/es/plugin/export/index.ts +274 -0
- package/es/plugin/logs/index.mjs +46 -0
- package/es/plugin/logs/index.ts +66 -0
- package/es/plugin/print/index.mjs +145 -0
- package/es/plugin/print/index.ts +155 -0
- package/es/plugin/qiniu/index.mjs +78 -0
- package/es/plugin/qiniu/index.ts +88 -0
- package/es/plugin/screenshot/index.mjs +8 -0
- package/es/plugin/screenshot/index.ts +9 -0
- package/es/plugin/video/index.mjs +52 -0
- package/es/plugin/video/index.ts +60 -0
- package/es/plugin/watermark/index.mjs +114 -0
- package/es/plugin/watermark/index.ts +127 -0
- package/es/plugin/watermark/watermark.mjs +109 -0
- package/es/plugin/watermark/watermark.ts +121 -0
- package/es/ui/data/index.mjs +49 -0
- package/es/ui/data/index.ts +51 -0
- package/es/ui/element-plus/index.mjs +87 -0
- package/es/ui/element-plus/index.ts +89 -0
- package/es/ui/index.mjs +4 -0
- package/es/ui/index.ts +6 -0
- package/es/utils/bem.mjs +29 -0
- package/es/utils/bem.ts +36 -0
- package/es/utils/mock.mjs +137 -0
- package/es/utils/mock.ts +151 -0
- package/es/utils/util.mjs +370 -0
- package/es/utils/util.ts +392 -0
- package/es/utils/validate.mjs +18 -0
- package/es/utils/validate.ts +23 -0
- package/es/version.mjs +1 -0
- package/es/version.ts +1 -0
- package/lib/avue.js +11 -35880
- package/lib/avue.min.js +11 -6
- package/lib/avue.min.ts +2 -0
- package/lib/avue.ts +2 -0
- package/lib/core/create.js +14 -0
- package/lib/core/create.ts +16 -0
- package/lib/core/dataformat.js +194 -0
- package/lib/core/dataformat.ts +190 -0
- package/lib/core/detail.js +81 -0
- package/lib/core/detail.ts +81 -0
- package/lib/core/dic.js +220 -0
- package/lib/core/dic.ts +235 -0
- package/lib/core/locale.js +10 -0
- package/lib/core/locale.ts +9 -0
- package/lib/core/packages.js +66 -0
- package/lib/core/packages.ts +62 -0
- package/lib/core/slot.js +34 -0
- package/lib/core/slot.ts +30 -0
- package/lib/global/variable.js +83 -0
- package/lib/global/variable.ts +84 -0
- package/lib/icon.js +44 -0
- package/lib/icon.ts +11 -0
- package/lib/index.js +134 -0
- package/lib/index.ts +177 -0
- package/lib/locale/browser/en.js +288 -0
- package/lib/locale/browser/zh-cn.js +288 -0
- package/lib/locale/browser/zh.js +288 -0
- package/lib/locale/index.js +153 -47
- package/lib/locale/index.ts +196 -0
- package/lib/locale/lang/en.js +284 -100
- package/lib/locale/lang/en.ts +282 -0
- package/lib/locale/lang/zh-cn.js +284 -0
- package/lib/locale/lang/zh-cn.ts +282 -0
- package/lib/locale/lang/zh.js +284 -100
- package/lib/locale/lang/zh.ts +282 -0
- package/lib/packages/core/common/event.js +61 -0
- package/lib/packages/core/common/event.ts +56 -0
- package/lib/packages/core/common/init.js +140 -0
- package/lib/packages/core/common/init.ts +133 -0
- package/lib/packages/core/common/props.js +245 -0
- package/lib/packages/core/common/props.ts +240 -0
- package/lib/packages/core/components/dialog-form/index.js +35 -0
- package/lib/packages/core/components/dialog-form/index.ts +29 -0
- package/lib/packages/core/components/dialog-form/index.vue +108 -0
- package/lib/packages/core/components/form/custom.js +43 -0
- package/lib/packages/core/components/form/custom.ts +41 -0
- package/lib/packages/core/components/form/index.vue +176 -0
- package/lib/packages/core/components/icon/index.vue +37 -0
- package/lib/packages/core/components/image-preview/index.js +40 -0
- package/lib/packages/core/components/image-preview/index.ts +37 -0
- package/lib/packages/core/components/image-preview/index.vue +215 -0
- package/lib/packages/core/directive/contextmenu.js +94 -0
- package/lib/packages/core/directive/contextmenu.ts +103 -0
- package/lib/packages/core/directive/permission.js +21 -0
- package/lib/packages/core/directive/permission.ts +18 -0
- package/lib/packages/data/box/index.vue +66 -0
- package/lib/packages/data/card/index.vue +62 -0
- package/lib/packages/data/cardText/index.vue +56 -0
- package/lib/packages/data/countdown/index.vue +81 -0
- package/lib/packages/data/dashboard/index.vue +72 -0
- package/lib/packages/data/display/index.vue +63 -0
- package/lib/packages/data/icons/index.vue +68 -0
- package/lib/packages/data/imgText/index.vue +72 -0
- package/lib/packages/data/list/index.vue +69 -0
- package/lib/packages/data/notice/index.vue +63 -0
- package/lib/packages/data/operaText/index.vue +62 -0
- package/lib/packages/data/panel/index.vue +62 -0
- package/lib/packages/data/pay/index.vue +92 -0
- package/lib/packages/data/price/index.vue +55 -0
- package/lib/packages/data/product/index.vue +106 -0
- package/lib/packages/data/profile/index.vue +91 -0
- package/lib/packages/data/progress/index.vue +64 -0
- package/lib/packages/data/rank/index.vue +92 -0
- package/lib/packages/data/rotate/index.vue +69 -0
- package/lib/packages/data/statistic/index.vue +71 -0
- package/lib/packages/data/tabs/index.vue +64 -0
- package/lib/packages/data/task/index.vue +82 -0
- package/lib/packages/data/weather/index.vue +103 -0
- package/lib/packages/element-plus/array/index.vue +115 -0
- package/lib/packages/element-plus/article/index.vue +73 -0
- package/lib/packages/element-plus/card/index.vue +103 -0
- package/lib/packages/element-plus/cascader/index.vue +132 -0
- package/lib/packages/element-plus/chat/index.vue +513 -0
- package/lib/packages/element-plus/checkbox/index.vue +84 -0
- package/lib/packages/element-plus/comment/index.vue +76 -0
- package/lib/packages/element-plus/count-up/index.vue +107 -0
- package/lib/packages/element-plus/crud/column/column-default.vue +128 -0
- package/lib/packages/element-plus/crud/column/column-dynamic.vue +86 -0
- package/lib/packages/element-plus/crud/column/column-menu.vue +267 -0
- package/lib/packages/element-plus/crud/column/column-slot.vue +348 -0
- package/lib/packages/element-plus/crud/column/column.vue +119 -0
- package/lib/packages/element-plus/crud/column/menu.vue +78 -0
- package/lib/packages/element-plus/crud/config.js +76 -0
- package/lib/packages/element-plus/crud/config.ts +74 -0
- package/lib/packages/element-plus/crud/dialog/dialog-column.vue +102 -0
- package/lib/packages/element-plus/crud/dialog/dialog-excel.vue +204 -0
- package/lib/packages/element-plus/crud/dialog/dialog-filter.vue +159 -0
- package/lib/packages/element-plus/crud/dialog/dialog-form.vue +352 -0
- package/lib/packages/element-plus/crud/grid/index.vue +271 -0
- package/lib/packages/element-plus/crud/grid/item.vue +39 -0
- package/lib/packages/element-plus/crud/index.vue +1018 -0
- package/lib/packages/element-plus/crud/menu/header-menu.vue +175 -0
- package/lib/packages/element-plus/crud/menu/header-search.vue +228 -0
- package/lib/packages/element-plus/crud/menu/table-page.vue +108 -0
- package/lib/packages/element-plus/date/index.vue +81 -0
- package/lib/packages/element-plus/draggable/index.vue +444 -0
- package/lib/packages/element-plus/dynamic/index.vue +353 -0
- package/lib/packages/element-plus/flow/index.vue +339 -0
- package/lib/packages/element-plus/flow/node.vue +84 -0
- package/lib/packages/element-plus/form/config.js +8 -0
- package/lib/packages/element-plus/form/config.ts +6 -0
- package/lib/packages/element-plus/form/index.vue +954 -0
- package/lib/packages/element-plus/form/menu.vue +63 -0
- package/lib/packages/element-plus/group/index.vue +90 -0
- package/lib/packages/element-plus/input/index.vue +1264 -0
- package/lib/packages/element-plus/input-color/index.vue +70 -0
- package/lib/packages/element-plus/input-cron/index.vue +363 -0
- package/lib/packages/element-plus/input-icon/index.vue +143 -0
- package/lib/packages/element-plus/input-map/index.vue +311 -0
- package/lib/packages/element-plus/input-number/index.vue +91 -0
- package/lib/packages/element-plus/input-table/index.vue +279 -0
- package/lib/packages/element-plus/input-tag/index.vue +79 -0
- package/lib/packages/element-plus/input-tree/index.vue +194 -0
- package/lib/packages/element-plus/license/index.vue +155 -0
- package/lib/packages/element-plus/login/index.vue +203 -0
- package/lib/packages/element-plus/mention/index.vue +117 -0
- package/lib/packages/element-plus/radio/index.vue +38 -0
- package/lib/packages/element-plus/rate/index.vue +51 -0
- package/lib/packages/element-plus/search/index.vue +129 -0
- package/lib/packages/element-plus/select/index.vue +292 -0
- package/lib/packages/element-plus/sign/index.vue +230 -0
- package/lib/packages/element-plus/slider/index.vue +66 -0
- package/lib/packages/element-plus/switch/index.vue +72 -0
- package/lib/packages/element-plus/tabs/index.vue +62 -0
- package/lib/packages/element-plus/text-ellipsis/index.vue +104 -0
- package/lib/packages/element-plus/time/index.vue +81 -0
- package/lib/packages/element-plus/title/index.vue +30 -0
- package/lib/packages/element-plus/tree/index.vue +460 -0
- package/lib/packages/element-plus/upload/index.vue +728 -0
- package/lib/packages/element-plus/verify/index.vue +62 -0
- package/lib/packages/element-plus/video/index.vue +90 -0
- package/lib/plugin/ali/index.js +8 -0
- package/lib/plugin/ali/index.ts +6 -0
- package/lib/plugin/clipboard/index.js +64 -0
- package/lib/plugin/clipboard/index.ts +67 -0
- package/lib/plugin/export/_blob.js +151 -0
- package/lib/plugin/export/_blob.ts +176 -0
- package/lib/plugin/export/_export2Excel.js +145 -0
- package/lib/plugin/export/_export2Excel.ts +166 -0
- package/lib/plugin/export/index.js +268 -0
- package/lib/plugin/export/index.ts +274 -0
- package/lib/plugin/logs/index.js +48 -0
- package/lib/plugin/logs/index.ts +66 -0
- package/lib/plugin/print/index.js +147 -0
- package/lib/plugin/print/index.ts +155 -0
- package/lib/plugin/qiniu/index.js +82 -0
- package/lib/plugin/qiniu/index.ts +88 -0
- package/lib/plugin/screenshot/index.js +14 -0
- package/lib/plugin/screenshot/index.ts +9 -0
- package/lib/plugin/video/index.js +55 -0
- package/lib/plugin/video/index.ts +60 -0
- package/lib/plugin/watermark/index.js +121 -0
- package/lib/plugin/watermark/index.ts +127 -0
- package/lib/plugin/watermark/watermark.js +111 -0
- package/lib/plugin/watermark/watermark.ts +121 -0
- package/lib/ui/data/index.js +54 -0
- package/lib/ui/data/index.ts +51 -0
- package/lib/ui/element-plus/index.js +92 -0
- package/lib/ui/element-plus/index.ts +89 -0
- package/lib/ui/index.js +9 -0
- package/lib/ui/index.ts +6 -0
- package/lib/utils/bem.js +31 -0
- package/lib/utils/bem.ts +36 -0
- package/lib/utils/mock.js +142 -0
- package/lib/utils/mock.ts +151 -0
- package/lib/utils/util.js +403 -0
- package/lib/utils/util.ts +392 -0
- package/lib/utils/validate.js +21 -0
- package/lib/utils/validate.ts +23 -0
- package/lib/version.js +4 -0
- package/lib/version.ts +1 -0
- package/package.json +20 -10
- package/types/index.d.ts +139 -47
- package/types/shims-aliases.d.ts +4 -0
- package/lib/avue.js.map +0 -1
- package/lib/locale/format.js +0 -44
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { randomId } from '../../utils/util';
|
|
2
|
+
|
|
3
|
+
class WaterMark {
|
|
4
|
+
CONTAINERID: string;
|
|
5
|
+
option: Record<string, any>;
|
|
6
|
+
styleStr: string;
|
|
7
|
+
isOberserve: boolean;
|
|
8
|
+
|
|
9
|
+
constructor(opt: Record<string, any> = {}) {
|
|
10
|
+
this.CONTAINERID = randomId();
|
|
11
|
+
this.drawCanvas = this.drawCanvas.bind(this);
|
|
12
|
+
this.parentObserver = this.parentObserver.bind(this);
|
|
13
|
+
this.Repaint = this.Repaint.bind(this);
|
|
14
|
+
this.styleStr = '';
|
|
15
|
+
this.isOberserve = false;
|
|
16
|
+
this.init(opt);
|
|
17
|
+
this.drawCanvas();
|
|
18
|
+
this.parentObserver();
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
init(opt: Record<string, any>) {
|
|
22
|
+
this.option = Object.assign(
|
|
23
|
+
{
|
|
24
|
+
width: 400,
|
|
25
|
+
height: 200,
|
|
26
|
+
text: 'avueJS',
|
|
27
|
+
fontSize: '30px',
|
|
28
|
+
fontStyle: 'microsoft yahei',
|
|
29
|
+
textAlign: 'center',
|
|
30
|
+
color: 'rgba(100,100,100,0.15)',
|
|
31
|
+
degree: -20,
|
|
32
|
+
},
|
|
33
|
+
opt
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
drawCanvas() {
|
|
38
|
+
this.isOberserve = true;
|
|
39
|
+
const divContainer = document.createElement('div');
|
|
40
|
+
const canvas = document.createElement('canvas');
|
|
41
|
+
const context = canvas.getContext('2d');
|
|
42
|
+
divContainer.id = this.CONTAINERID;
|
|
43
|
+
|
|
44
|
+
canvas.width = this.option.width;
|
|
45
|
+
canvas.height = this.option.height;
|
|
46
|
+
if (!context) return;
|
|
47
|
+
context.font = `${this.option.fontSize} ${this.option.fontStyle}`;
|
|
48
|
+
context.textAlign = this.option.textAlign;
|
|
49
|
+
context.fillStyle = this.option.color;
|
|
50
|
+
context.translate(canvas.width / 2, canvas.height / 2);
|
|
51
|
+
context.rotate((this.option.degree * Math.PI) / 180);
|
|
52
|
+
context.fillText(this.option.text, 0, 0);
|
|
53
|
+
|
|
54
|
+
const backgroundUrl = canvas.toDataURL('image/png');
|
|
55
|
+
const flag = this.option.id;
|
|
56
|
+
let el: HTMLElement | null = null;
|
|
57
|
+
if (flag) el = document.getElementById(flag);
|
|
58
|
+
this.styleStr = `
|
|
59
|
+
position:${flag ? 'absolute' : 'fixed'};
|
|
60
|
+
top:0;
|
|
61
|
+
left:0;
|
|
62
|
+
width:${flag && el ? el.offsetWidth + 'px' : '100%'};
|
|
63
|
+
height:${flag && el ? el.offsetHeight + 'px' : '100%'};
|
|
64
|
+
z-index:9999;
|
|
65
|
+
pointer-events:none;
|
|
66
|
+
background-repeat:repeat;
|
|
67
|
+
background-image:url('${backgroundUrl}')`;
|
|
68
|
+
divContainer.setAttribute('style', this.styleStr);
|
|
69
|
+
if (flag && el) {
|
|
70
|
+
el.appendChild(divContainer);
|
|
71
|
+
} else {
|
|
72
|
+
document.body.appendChild(divContainer);
|
|
73
|
+
}
|
|
74
|
+
this.wmObserver(divContainer);
|
|
75
|
+
this.isOberserve = false;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
wmObserver(divContainer: HTMLElement) {
|
|
79
|
+
const wmConf = { attributes: true, childList: true, characterData: true };
|
|
80
|
+
const wmObserver = new MutationObserver((mo) => {
|
|
81
|
+
if (!this.isOberserve) {
|
|
82
|
+
const target = mo[0].target as HTMLElement;
|
|
83
|
+
target.setAttribute('style', this.styleStr);
|
|
84
|
+
target.setAttribute('id', this.CONTAINERID);
|
|
85
|
+
wmObserver.takeRecords();
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
wmObserver.observe(divContainer, wmConf);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
parentObserver() {
|
|
92
|
+
const bodyObserver = new MutationObserver(() => {
|
|
93
|
+
if (!this.isOberserve) {
|
|
94
|
+
const wm = document.querySelector<HTMLElement>(`#${this.CONTAINERID}`);
|
|
95
|
+
if (!wm) {
|
|
96
|
+
this.drawCanvas();
|
|
97
|
+
} else if (wm.getAttribute('style') !== this.styleStr) {
|
|
98
|
+
wm.setAttribute('style', this.styleStr);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
const parentNode = document.querySelector<HTMLElement>(`#${this.CONTAINERID}`)?.parentNode;
|
|
103
|
+
if (parentNode) {
|
|
104
|
+
bodyObserver.observe(parentNode, { childList: true });
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
Repaint(opt: Record<string, any> = {}) {
|
|
109
|
+
this.remove();
|
|
110
|
+
this.init(opt);
|
|
111
|
+
this.drawCanvas();
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
remove() {
|
|
115
|
+
this.isOberserve = true;
|
|
116
|
+
const wm = document.querySelector<HTMLElement>(`#${this.CONTAINERID}`);
|
|
117
|
+
wm?.parentNode?.removeChild(wm);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
export default WaterMark;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import DataTabs from '../../packages/data/tabs/index.vue';
|
|
2
|
+
import DataCardText from '../../packages/data/cardText/index.vue';
|
|
3
|
+
import DataBox from '../../packages/data/box/index.vue';
|
|
4
|
+
import DataProgress from '../../packages/data/progress/index.vue';
|
|
5
|
+
import DataIcons from '../../packages/data/icons/index.vue';
|
|
6
|
+
import DataCard from '../../packages/data/card/index.vue';
|
|
7
|
+
import DataDisplay from '../../packages/data/display/index.vue';
|
|
8
|
+
import DataImgText from '../../packages/data/imgText/index.vue';
|
|
9
|
+
import DataOperaText from '../../packages/data/operaText/index.vue';
|
|
10
|
+
import DataRotate from '../../packages/data/rotate/index.vue';
|
|
11
|
+
import DataPay from '../../packages/data/pay/index.vue';
|
|
12
|
+
import DataPrice from '../../packages/data/price/index.vue';
|
|
13
|
+
import DataPanel from '../../packages/data/panel/index.vue';
|
|
14
|
+
import DataStatistic from '../../packages/data/statistic/index.vue';
|
|
15
|
+
import DataWeather from '../../packages/data/weather/index.vue';
|
|
16
|
+
import DataRank from '../../packages/data/rank/index.vue';
|
|
17
|
+
import DataProfile from '../../packages/data/profile/index.vue';
|
|
18
|
+
import DataProduct from '../../packages/data/product/index.vue';
|
|
19
|
+
import DataCountdown from '../../packages/data/countdown/index.vue';
|
|
20
|
+
import DataNotice from '../../packages/data/notice/index.vue';
|
|
21
|
+
import DataTask from '../../packages/data/task/index.vue';
|
|
22
|
+
import DataList from '../../packages/data/list/index.vue';
|
|
23
|
+
import DataDashboard from '../../packages/data/dashboard/index.vue';
|
|
24
|
+
const dataComponents = {
|
|
25
|
+
DataTabs,
|
|
26
|
+
DataCardText,
|
|
27
|
+
DataBox,
|
|
28
|
+
DataProgress,
|
|
29
|
+
DataIcons,
|
|
30
|
+
DataCard,
|
|
31
|
+
DataDisplay,
|
|
32
|
+
DataImgText,
|
|
33
|
+
DataOperaText,
|
|
34
|
+
DataRotate,
|
|
35
|
+
DataPay,
|
|
36
|
+
DataPrice,
|
|
37
|
+
DataPanel,
|
|
38
|
+
DataStatistic,
|
|
39
|
+
DataWeather,
|
|
40
|
+
DataRank,
|
|
41
|
+
DataProfile,
|
|
42
|
+
DataProduct,
|
|
43
|
+
DataCountdown,
|
|
44
|
+
DataNotice,
|
|
45
|
+
DataTask,
|
|
46
|
+
DataList,
|
|
47
|
+
DataDashboard,
|
|
48
|
+
};
|
|
49
|
+
export default dataComponents;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import DataTabs from '../../packages/data/tabs/index.vue';
|
|
2
|
+
import DataCardText from '../../packages/data/cardText/index.vue';
|
|
3
|
+
import DataBox from '../../packages/data/box/index.vue';
|
|
4
|
+
import DataProgress from '../../packages/data/progress/index.vue';
|
|
5
|
+
import DataIcons from '../../packages/data/icons/index.vue';
|
|
6
|
+
import DataCard from '../../packages/data/card/index.vue';
|
|
7
|
+
import DataDisplay from '../../packages/data/display/index.vue';
|
|
8
|
+
import DataImgText from '../../packages/data/imgText/index.vue';
|
|
9
|
+
import DataOperaText from '../../packages/data/operaText/index.vue';
|
|
10
|
+
import DataRotate from '../../packages/data/rotate/index.vue';
|
|
11
|
+
import DataPay from '../../packages/data/pay/index.vue';
|
|
12
|
+
import DataPrice from '../../packages/data/price/index.vue';
|
|
13
|
+
import DataPanel from '../../packages/data/panel/index.vue';
|
|
14
|
+
import DataStatistic from '../../packages/data/statistic/index.vue';
|
|
15
|
+
import DataWeather from '../../packages/data/weather/index.vue';
|
|
16
|
+
import DataRank from '../../packages/data/rank/index.vue';
|
|
17
|
+
import DataProfile from '../../packages/data/profile/index.vue';
|
|
18
|
+
import DataProduct from '../../packages/data/product/index.vue';
|
|
19
|
+
import DataCountdown from '../../packages/data/countdown/index.vue';
|
|
20
|
+
import DataNotice from '../../packages/data/notice/index.vue';
|
|
21
|
+
import DataTask from '../../packages/data/task/index.vue';
|
|
22
|
+
import DataList from '../../packages/data/list/index.vue';
|
|
23
|
+
import DataDashboard from '../../packages/data/dashboard/index.vue';
|
|
24
|
+
|
|
25
|
+
const dataComponents = {
|
|
26
|
+
DataTabs,
|
|
27
|
+
DataCardText,
|
|
28
|
+
DataBox,
|
|
29
|
+
DataProgress,
|
|
30
|
+
DataIcons,
|
|
31
|
+
DataCard,
|
|
32
|
+
DataDisplay,
|
|
33
|
+
DataImgText,
|
|
34
|
+
DataOperaText,
|
|
35
|
+
DataRotate,
|
|
36
|
+
DataPay,
|
|
37
|
+
DataPrice,
|
|
38
|
+
DataPanel,
|
|
39
|
+
DataStatistic,
|
|
40
|
+
DataWeather,
|
|
41
|
+
DataRank,
|
|
42
|
+
DataProfile,
|
|
43
|
+
DataProduct,
|
|
44
|
+
DataCountdown,
|
|
45
|
+
DataNotice,
|
|
46
|
+
DataTask,
|
|
47
|
+
DataList,
|
|
48
|
+
DataDashboard,
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
export default dataComponents;
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import CountUp from '../../packages/element-plus/count-up/index.vue';
|
|
2
|
+
import Article from '../../packages/element-plus/article/index.vue';
|
|
3
|
+
import Crud from '../../packages/element-plus/crud/index.vue';
|
|
4
|
+
import Card from '../../packages/element-plus/card/index.vue';
|
|
5
|
+
import Chat from '../../packages/element-plus/chat/index.vue';
|
|
6
|
+
import Comment from '../../packages/element-plus/comment/index.vue';
|
|
7
|
+
import Form from '../../packages/element-plus/form/index.vue';
|
|
8
|
+
import Checkbox from '../../packages/element-plus/checkbox/index.vue';
|
|
9
|
+
import Date from '../../packages/element-plus/date/index.vue';
|
|
10
|
+
import Draggable from '../../packages/element-plus/draggable/index.vue';
|
|
11
|
+
import Flow from '../../packages/element-plus/flow/index.vue';
|
|
12
|
+
import Group from '../../packages/element-plus/group/index.vue';
|
|
13
|
+
import License from '../../packages/element-plus/license/index.vue';
|
|
14
|
+
import Time from '../../packages/element-plus/time/index.vue';
|
|
15
|
+
import Input from '../../packages/element-plus/input/index.vue';
|
|
16
|
+
import Radio from '../../packages/element-plus/radio/index.vue';
|
|
17
|
+
import Select from '../../packages/element-plus/select/index.vue';
|
|
18
|
+
import Cascader from '../../packages/element-plus/cascader/index.vue';
|
|
19
|
+
import InputColor from '../../packages/element-plus/input-color/index.vue';
|
|
20
|
+
import InputNumber from '../../packages/element-plus/input-number/index.vue';
|
|
21
|
+
import InputTree from '../../packages/element-plus/input-tree/index.vue';
|
|
22
|
+
import InputMap from '../../packages/element-plus/input-map/index.vue';
|
|
23
|
+
import InputIcon from '../../packages/element-plus/input-icon/index.vue';
|
|
24
|
+
import InputTag from '../../packages/element-plus/input-tag/index.vue';
|
|
25
|
+
import InputTable from '../../packages/element-plus/input-table/index.vue';
|
|
26
|
+
import InputCron from '../../packages/element-plus/input-cron/index.vue';
|
|
27
|
+
import Mention from '../../packages/element-plus/mention/index.vue';
|
|
28
|
+
import Verifys from '../../packages/element-plus/verify/index.vue';
|
|
29
|
+
import Switchs from '../../packages/element-plus/switch/index.vue';
|
|
30
|
+
import Rate from '../../packages/element-plus/rate/index.vue';
|
|
31
|
+
import Upload from '../../packages/element-plus/upload/index.vue';
|
|
32
|
+
import Sign from '../../packages/element-plus/sign/index.vue';
|
|
33
|
+
import Slider from '../../packages/element-plus/slider/index.vue';
|
|
34
|
+
import Tree from '../../packages/element-plus/tree/index.vue';
|
|
35
|
+
import Title from '../../packages/element-plus/title/index.vue';
|
|
36
|
+
import Search from '../../packages/element-plus/search/index.vue';
|
|
37
|
+
import Tabs from '../../packages/element-plus/tabs/index.vue';
|
|
38
|
+
import Dynamic from '../../packages/element-plus/dynamic/index.vue';
|
|
39
|
+
import Video from '../../packages/element-plus/video/index.vue';
|
|
40
|
+
import Login from '../../packages/element-plus/login/index.vue';
|
|
41
|
+
import Arrays from '../../packages/element-plus/array/index.vue';
|
|
42
|
+
import textEllipsis from '../../packages/element-plus/text-ellipsis/index.vue';
|
|
43
|
+
const elementComponents = {
|
|
44
|
+
Arrays,
|
|
45
|
+
Article,
|
|
46
|
+
Crud,
|
|
47
|
+
Card,
|
|
48
|
+
Chat,
|
|
49
|
+
Comment,
|
|
50
|
+
Form,
|
|
51
|
+
Checkbox,
|
|
52
|
+
Date,
|
|
53
|
+
CountUp,
|
|
54
|
+
Draggable,
|
|
55
|
+
Flow,
|
|
56
|
+
Group,
|
|
57
|
+
License,
|
|
58
|
+
Time,
|
|
59
|
+
Input,
|
|
60
|
+
Radio,
|
|
61
|
+
Select,
|
|
62
|
+
Cascader,
|
|
63
|
+
InputColor,
|
|
64
|
+
InputNumber,
|
|
65
|
+
InputTree,
|
|
66
|
+
InputIcon,
|
|
67
|
+
InputMap,
|
|
68
|
+
InputTag,
|
|
69
|
+
InputTable,
|
|
70
|
+
InputCron,
|
|
71
|
+
Mention,
|
|
72
|
+
Switchs,
|
|
73
|
+
Rate,
|
|
74
|
+
Upload,
|
|
75
|
+
Slider,
|
|
76
|
+
Tree,
|
|
77
|
+
Title,
|
|
78
|
+
Search,
|
|
79
|
+
Tabs,
|
|
80
|
+
Dynamic,
|
|
81
|
+
Video,
|
|
82
|
+
Verifys,
|
|
83
|
+
textEllipsis,
|
|
84
|
+
Sign,
|
|
85
|
+
Login,
|
|
86
|
+
};
|
|
87
|
+
export default elementComponents;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import CountUp from '../../packages/element-plus/count-up/index.vue';
|
|
2
|
+
import Article from '../../packages/element-plus/article/index.vue';
|
|
3
|
+
import Crud from '../../packages/element-plus/crud/index.vue';
|
|
4
|
+
import Card from '../../packages/element-plus/card/index.vue';
|
|
5
|
+
import Chat from '../../packages/element-plus/chat/index.vue';
|
|
6
|
+
import Comment from '../../packages/element-plus/comment/index.vue';
|
|
7
|
+
import Form from '../../packages/element-plus/form/index.vue';
|
|
8
|
+
import Checkbox from '../../packages/element-plus/checkbox/index.vue';
|
|
9
|
+
import Date from '../../packages/element-plus/date/index.vue';
|
|
10
|
+
import Draggable from '../../packages/element-plus/draggable/index.vue';
|
|
11
|
+
import Flow from '../../packages/element-plus/flow/index.vue';
|
|
12
|
+
import Group from '../../packages/element-plus/group/index.vue';
|
|
13
|
+
import License from '../../packages/element-plus/license/index.vue';
|
|
14
|
+
import Time from '../../packages/element-plus/time/index.vue';
|
|
15
|
+
import Input from '../../packages/element-plus/input/index.vue';
|
|
16
|
+
import Radio from '../../packages/element-plus/radio/index.vue';
|
|
17
|
+
import Select from '../../packages/element-plus/select/index.vue';
|
|
18
|
+
import Cascader from '../../packages/element-plus/cascader/index.vue';
|
|
19
|
+
import InputColor from '../../packages/element-plus/input-color/index.vue';
|
|
20
|
+
import InputNumber from '../../packages/element-plus/input-number/index.vue';
|
|
21
|
+
import InputTree from '../../packages/element-plus/input-tree/index.vue';
|
|
22
|
+
import InputMap from '../../packages/element-plus/input-map/index.vue';
|
|
23
|
+
import InputIcon from '../../packages/element-plus/input-icon/index.vue';
|
|
24
|
+
import InputTag from '../../packages/element-plus/input-tag/index.vue';
|
|
25
|
+
import InputTable from '../../packages/element-plus/input-table/index.vue';
|
|
26
|
+
import InputCron from '../../packages/element-plus/input-cron/index.vue';
|
|
27
|
+
import Mention from '../../packages/element-plus/mention/index.vue';
|
|
28
|
+
import Verifys from '../../packages/element-plus/verify/index.vue';
|
|
29
|
+
import Switchs from '../../packages/element-plus/switch/index.vue';
|
|
30
|
+
import Rate from '../../packages/element-plus/rate/index.vue';
|
|
31
|
+
import Upload from '../../packages/element-plus/upload/index.vue';
|
|
32
|
+
import Sign from '../../packages/element-plus/sign/index.vue';
|
|
33
|
+
import Slider from '../../packages/element-plus/slider/index.vue';
|
|
34
|
+
import Tree from '../../packages/element-plus/tree/index.vue';
|
|
35
|
+
import Title from '../../packages/element-plus/title/index.vue';
|
|
36
|
+
import Search from '../../packages/element-plus/search/index.vue';
|
|
37
|
+
import Tabs from '../../packages/element-plus/tabs/index.vue';
|
|
38
|
+
import Dynamic from '../../packages/element-plus/dynamic/index.vue';
|
|
39
|
+
import Video from '../../packages/element-plus/video/index.vue';
|
|
40
|
+
import Login from '../../packages/element-plus/login/index.vue';
|
|
41
|
+
import Arrays from '../../packages/element-plus/array/index.vue';
|
|
42
|
+
import textEllipsis from '../../packages/element-plus/text-ellipsis/index.vue';
|
|
43
|
+
|
|
44
|
+
const elementComponents = {
|
|
45
|
+
Arrays,
|
|
46
|
+
Article,
|
|
47
|
+
Crud,
|
|
48
|
+
Card,
|
|
49
|
+
Chat,
|
|
50
|
+
Comment,
|
|
51
|
+
Form,
|
|
52
|
+
Checkbox,
|
|
53
|
+
Date,
|
|
54
|
+
CountUp,
|
|
55
|
+
Draggable,
|
|
56
|
+
Flow,
|
|
57
|
+
Group,
|
|
58
|
+
License,
|
|
59
|
+
Time,
|
|
60
|
+
Input,
|
|
61
|
+
Radio,
|
|
62
|
+
Select,
|
|
63
|
+
Cascader,
|
|
64
|
+
InputColor,
|
|
65
|
+
InputNumber,
|
|
66
|
+
InputTree,
|
|
67
|
+
InputIcon,
|
|
68
|
+
InputMap,
|
|
69
|
+
InputTag,
|
|
70
|
+
InputTable,
|
|
71
|
+
InputCron,
|
|
72
|
+
Mention,
|
|
73
|
+
Switchs,
|
|
74
|
+
Rate,
|
|
75
|
+
Upload,
|
|
76
|
+
Slider,
|
|
77
|
+
Tree,
|
|
78
|
+
Title,
|
|
79
|
+
Search,
|
|
80
|
+
Tabs,
|
|
81
|
+
Dynamic,
|
|
82
|
+
Video,
|
|
83
|
+
Verifys,
|
|
84
|
+
textEllipsis,
|
|
85
|
+
Sign,
|
|
86
|
+
Login,
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
export default elementComponents;
|
package/es/ui/index.mjs
ADDED
package/es/ui/index.ts
ADDED
package/es/utils/bem.mjs
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
const ELEMENT = '__';
|
|
2
|
+
const MODS = '--';
|
|
3
|
+
const join = (name, el, symbol) => (el ? name + symbol + el : name);
|
|
4
|
+
const prefix = (name, mods) => {
|
|
5
|
+
if (typeof mods === 'string') {
|
|
6
|
+
return join(name, mods, MODS);
|
|
7
|
+
}
|
|
8
|
+
if (Array.isArray(mods)) {
|
|
9
|
+
return mods.map((item) => prefix(name, item));
|
|
10
|
+
}
|
|
11
|
+
const ret = {};
|
|
12
|
+
Object.keys(mods || {}).forEach((key) => {
|
|
13
|
+
ret[name + MODS + key] = mods[key];
|
|
14
|
+
});
|
|
15
|
+
return ret;
|
|
16
|
+
};
|
|
17
|
+
export default {
|
|
18
|
+
methods: {
|
|
19
|
+
b(el, mods) {
|
|
20
|
+
const { name } = this.$options;
|
|
21
|
+
if (el && typeof el !== 'string') {
|
|
22
|
+
mods = el;
|
|
23
|
+
el = '';
|
|
24
|
+
}
|
|
25
|
+
el = join(name, el, ELEMENT);
|
|
26
|
+
return mods ? [el, prefix(el, mods)] : el;
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
};
|
package/es/utils/bem.ts
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
const ELEMENT = '__';
|
|
2
|
+
const MODS = '--';
|
|
3
|
+
|
|
4
|
+
const join = (name: string, el: string, symbol: string) => (el ? name + symbol + el : name);
|
|
5
|
+
|
|
6
|
+
const prefix = (name: string, mods: any): any => {
|
|
7
|
+
if (typeof mods === 'string') {
|
|
8
|
+
return join(name, mods, MODS);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
if (Array.isArray(mods)) {
|
|
12
|
+
return mods.map((item) => prefix(name, item));
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const ret: Record<string, any> = {};
|
|
16
|
+
Object.keys(mods || {}).forEach((key) => {
|
|
17
|
+
ret[name + MODS + key] = mods[key];
|
|
18
|
+
});
|
|
19
|
+
return ret;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export default {
|
|
23
|
+
methods: {
|
|
24
|
+
b(this: any, el: any, mods: any) {
|
|
25
|
+
const { name } = this.$options;
|
|
26
|
+
|
|
27
|
+
if (el && typeof el !== 'string') {
|
|
28
|
+
mods = el;
|
|
29
|
+
el = '';
|
|
30
|
+
}
|
|
31
|
+
el = join(name, el, ELEMENT);
|
|
32
|
+
|
|
33
|
+
return mods ? [el, prefix(el, mods)] : el;
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
};
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import packages from '../core/packages.mjs';
|
|
2
|
+
export default (column, dicData, defaultForm, run) => {
|
|
3
|
+
if (!run)
|
|
4
|
+
return;
|
|
5
|
+
const win = window;
|
|
6
|
+
if (!win.Mock) {
|
|
7
|
+
packages.logs('mock');
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
const mockjs = win.Mock;
|
|
11
|
+
const Random = (mockjs || {}).Random;
|
|
12
|
+
const form = {};
|
|
13
|
+
function createName({ en }) {
|
|
14
|
+
if (en) {
|
|
15
|
+
return Random.name(true);
|
|
16
|
+
}
|
|
17
|
+
return Random.cname();
|
|
18
|
+
}
|
|
19
|
+
function createImage({ size, text, base64 }) {
|
|
20
|
+
const imageSize = size || Random.natural(200, 400);
|
|
21
|
+
const textColor = text ? '#000000' : Random.color();
|
|
22
|
+
const bgColor = text ? '#ffffff' : Random.color();
|
|
23
|
+
if (base64) {
|
|
24
|
+
return Random.dataImage(imageSize, text);
|
|
25
|
+
}
|
|
26
|
+
return Random.image(imageSize, bgColor, textColor, 'png', text || Random.name());
|
|
27
|
+
}
|
|
28
|
+
function createId({ uuid }) {
|
|
29
|
+
if (uuid) {
|
|
30
|
+
return mockjs.mock('@guid');
|
|
31
|
+
}
|
|
32
|
+
return mockjs.mock('@id');
|
|
33
|
+
}
|
|
34
|
+
function createTel() {
|
|
35
|
+
return mockjs.mock(/^1[3-9]\d{9}$/);
|
|
36
|
+
}
|
|
37
|
+
function createNumber({ max, min, precision }) {
|
|
38
|
+
if (precision) {
|
|
39
|
+
const number = Random.float(min, max, precision) + '';
|
|
40
|
+
const index = number.indexOf('.') + 1;
|
|
41
|
+
return Number(number.substring(0, index + precision));
|
|
42
|
+
}
|
|
43
|
+
return Random.integer(min, max);
|
|
44
|
+
}
|
|
45
|
+
function createUrl({ header }) {
|
|
46
|
+
let url = Random.url();
|
|
47
|
+
const index = url.indexOf('://');
|
|
48
|
+
if (header === false) {
|
|
49
|
+
url = url.substring(index + 3);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
url = 'http://' + url.substring(index + 3);
|
|
53
|
+
}
|
|
54
|
+
return url;
|
|
55
|
+
}
|
|
56
|
+
function createDatetime({ format, now }) {
|
|
57
|
+
if (now) {
|
|
58
|
+
return Random.now(format);
|
|
59
|
+
}
|
|
60
|
+
return Random.datetime(format);
|
|
61
|
+
}
|
|
62
|
+
function createText({ min, max }) {
|
|
63
|
+
return Random.csentence(min, max);
|
|
64
|
+
}
|
|
65
|
+
function createCounty() {
|
|
66
|
+
return Random.county(true);
|
|
67
|
+
}
|
|
68
|
+
function createDic({ dic, props, columnType, multiple }) {
|
|
69
|
+
const value = props.value || 'value';
|
|
70
|
+
const len = dic.length;
|
|
71
|
+
if (len === 0)
|
|
72
|
+
return;
|
|
73
|
+
if (['checkbox'].includes(columnType) || multiple) {
|
|
74
|
+
const number = createNumber({
|
|
75
|
+
min: 1,
|
|
76
|
+
max: len,
|
|
77
|
+
});
|
|
78
|
+
const result = [];
|
|
79
|
+
for (let i = 0; i < number; i++) {
|
|
80
|
+
let flag = true;
|
|
81
|
+
while (flag) {
|
|
82
|
+
const numbers = createNumber({
|
|
83
|
+
min: 0,
|
|
84
|
+
max: len - 1,
|
|
85
|
+
});
|
|
86
|
+
const values = dic[numbers][value];
|
|
87
|
+
if (!result.includes(values)) {
|
|
88
|
+
result.push(values);
|
|
89
|
+
flag = false;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return result;
|
|
94
|
+
}
|
|
95
|
+
const number = createNumber({
|
|
96
|
+
min: 0,
|
|
97
|
+
max: len - 1,
|
|
98
|
+
});
|
|
99
|
+
return dic[number][value];
|
|
100
|
+
}
|
|
101
|
+
function create() {
|
|
102
|
+
Object.keys(column).forEach((index) => {
|
|
103
|
+
const ele = column[index];
|
|
104
|
+
const isObject = typeof ele.mock === 'object';
|
|
105
|
+
const params = isObject ? ele.mock || {} : {};
|
|
106
|
+
params.dic = dicData[ele.prop] || [];
|
|
107
|
+
params.props = ele.props || {};
|
|
108
|
+
params.columnType = ele.type;
|
|
109
|
+
params.multiple = ele.multiple;
|
|
110
|
+
const dataGenerator = {
|
|
111
|
+
name: createName,
|
|
112
|
+
number: createNumber,
|
|
113
|
+
datetime: createDatetime,
|
|
114
|
+
word: createText,
|
|
115
|
+
tel: createTel,
|
|
116
|
+
id: createId,
|
|
117
|
+
image: createImage,
|
|
118
|
+
url: createUrl,
|
|
119
|
+
county: createCounty,
|
|
120
|
+
dic: createDic,
|
|
121
|
+
};
|
|
122
|
+
if (isObject && dataGenerator[params.type]) {
|
|
123
|
+
if (params.array) {
|
|
124
|
+
form[ele.prop] = Array.from({ length: params.array }, () => dataGenerator[params.type](params));
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
form[ele.prop] = dataGenerator[params.type](params);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
else if (ele.mock instanceof Function) {
|
|
131
|
+
form[ele.prop] = ele.mock(defaultForm, mockjs);
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
create();
|
|
136
|
+
return form;
|
|
137
|
+
};
|