@bdsoft/element 1.1.25 → 1.1.27
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/BdElement.js +22921 -0
- package/dist/cjs/_virtual/_plugin-vue_export-helper.cjs +9 -0
- package/dist/cjs/global/index.cjs +14 -0
- package/dist/cjs/index.cjs +18276 -0
- package/dist/cjs/node_modules/.pnpm/splitpanes@4.0.4_vue@3.5.25_typescript@5.4.5_/node_modules/splitpanes/dist/splitpanes.css.cjs +1 -0
- package/dist/cjs/src/assets/css/element.scss.cjs +1 -0
- package/dist/cjs/src/assets/css/layout.scss.cjs +1 -0
- package/dist/cjs/src/assets/css/tailwind.scss.cjs +1 -0
- package/dist/cjs/src/assets/images/ff.png.cjs +3 -0
- package/dist/cjs/src/assets/images/menu/add.png.cjs +3 -0
- package/dist/cjs/src/assets/images/menu/del.png.cjs +3 -0
- package/dist/cjs/src/assets/images/menu/edit.png.cjs +3 -0
- package/dist/cjs/src/components/3dcloudwords/index.cjs +344 -0
- package/dist/cjs/src/components/3dcloudwords/index.vue.cjs +125 -0
- package/dist/cjs/src/components/badge/index.vue.cjs +96 -0
- package/dist/cjs/src/components/badge/index.vue2.cjs +1 -0
- package/dist/cjs/src/components/basic/Finish.vue.cjs +55 -0
- package/dist/cjs/src/components/basic/Finish.vue2.cjs +1 -0
- package/dist/cjs/src/components/button/index.vue.cjs +44 -0
- package/dist/cjs/src/components/carousel/index.vue.cjs +97 -0
- package/dist/cjs/src/components/carousel/index.vue2.cjs +1 -0
- package/dist/cjs/src/components/chartconfig/index.vue.cjs +327 -0
- package/dist/cjs/src/components/contextMenu/index.vue.cjs +152 -0
- package/dist/cjs/src/components/contextMenu/index.vue2.cjs +1 -0
- package/dist/cjs/src/components/countup/countUp.cjs +165 -0
- package/dist/cjs/src/components/countup/index.vue.cjs +116 -0
- package/dist/cjs/src/components/empty/assets/build.png.cjs +3 -0
- package/dist/cjs/src/components/empty/assets/emptybg.gif.cjs +3 -0
- package/dist/cjs/src/components/empty/assets/emptybg.png.cjs +3 -0
- package/dist/cjs/src/components/empty/assets/emptybg2.jpg.cjs +3 -0
- package/dist/cjs/src/components/empty/assets/emptybg3.jpg.cjs +3 -0
- package/dist/cjs/src/components/empty/assets/wuxiao.png.cjs +3 -0
- package/dist/cjs/src/components/empty/assets/wuxiao.webp.cjs +3 -0
- package/dist/cjs/src/components/empty/building.vue.cjs +95 -0
- package/dist/cjs/src/components/empty/building.vue2.cjs +1 -0
- package/dist/cjs/src/components/empty/empty.vue.cjs +108 -0
- package/dist/cjs/src/components/empty/empty.vue2.cjs +1 -0
- package/dist/cjs/src/components/empty/invalid.vue.cjs +20 -0
- package/dist/cjs/src/components/empty/invalid.vue2.cjs +1 -0
- package/dist/cjs/src/components/error/Error.vue.cjs +47 -0
- package/dist/cjs/src/components/error/Error.vue2.cjs +1 -0
- package/dist/cjs/src/components/form/Form.vue.cjs +92 -0
- package/dist/cjs/src/components/form/FormItem.vue.cjs +107 -0
- package/dist/cjs/src/components/form/FormItem.vue2.cjs +3 -0
- package/dist/cjs/src/components/layout/bar.vue.cjs +45 -0
- package/dist/cjs/src/components/layout/bar.vue2.cjs +1 -0
- package/dist/cjs/src/components/layout/layout1.vue.cjs +79 -0
- package/dist/cjs/src/components/layout/layout2.vue.cjs +174 -0
- package/dist/cjs/src/components/layout/layout2.vue2.cjs +1 -0
- package/dist/cjs/src/components/layout/layout3.vue.cjs +111 -0
- package/dist/cjs/src/components/layout/layout3.vue2.cjs +1 -0
- package/dist/cjs/src/components/layout/layout4.vue.cjs +70 -0
- package/dist/cjs/src/components/layout/layout4.vue2.cjs +1 -0
- package/dist/cjs/src/components/layout/nav.vue.cjs +222 -0
- package/dist/cjs/src/components/layout/nav.vue2.cjs +1 -0
- package/dist/cjs/src/components/layout/nav.vue3.cjs +1 -0
- package/dist/cjs/src/components/loading/index.vue.cjs +26 -0
- package/dist/cjs/src/components/loading/index.vue2.cjs +1 -0
- package/dist/cjs/src/components/notice/NoticeList.vue.cjs +202 -0
- package/dist/cjs/src/components/notice/NoticeList.vue2.cjs +1 -0
- package/dist/cjs/src/components/notice/NoticeListPaging.vue.cjs +343 -0
- package/dist/cjs/src/components/notice/NoticeListPaging.vue2.cjs +1 -0
- package/dist/cjs/src/components/notice/NoticeView.vue.cjs +134 -0
- package/dist/cjs/src/components/notice/NoticeView.vue2.cjs +1 -0
- package/dist/cjs/src/components/pagination/index.vue.cjs +97 -0
- package/dist/cjs/src/components/pagination/index.vue2.cjs +1 -0
- package/dist/cjs/src/components/pagination/scroll-to.cjs +40 -0
- package/dist/cjs/src/components/progress/bar.vue.cjs +64 -0
- package/dist/cjs/src/components/progress/bar.vue2.cjs +1 -0
- package/dist/cjs/src/components/progress/progress.vue.cjs +51 -0
- package/dist/cjs/src/components/progress/progress.vue2.cjs +1 -0
- package/dist/cjs/src/components/statisticalCount/index.vue.cjs +88 -0
- package/dist/cjs/src/components/statisticalCount/index.vue2.cjs +1 -0
- package/dist/cjs/src/components/username/index.vue.cjs +59 -0
- package/dist/cjs/src/components/username/index.vue2.cjs +1 -0
- package/dist/cjs/src/index.cjs +68 -0
- package/dist/cjs/src/utils/coms/load.cjs +23 -0
- package/dist/cjs/src/utils/func.cjs +48 -0
- package/dist/cjs/src/utils/hookDialog.cjs +27 -0
- package/dist/cjs/src/utils/hookPage.cjs +42 -0
- package/dist/cjs/src/utils/message.cjs +164 -0
- package/dist/cjs/src/xm_components/HeadSearch/hook/hookSearch.cjs +64 -0
- package/dist/cjs/src/xm_components/HeadSearch/index.vue.cjs +139 -0
- package/dist/cjs/src/xm_components/HeadSearch/index.vue2.cjs +1 -0
- package/dist/cjs/src/xm_components/Milestone/index.vue.cjs +88 -0
- package/dist/cjs/src/xm_components/Milestone/index.vue2.cjs +1 -0
- package/dist/cjs/src/xm_components/MultiStatisticalCard/index.vue.cjs +88 -0
- package/dist/cjs/src/xm_components/MultiStatisticalCard/index.vue2.cjs +1 -0
- package/dist/cjs/src/xm_components/StatisticalCard/index.vue.cjs +163 -0
- package/dist/cjs/src/xm_components/StatisticalCard/index.vue2.cjs +1 -0
- package/dist/es/_virtual/_plugin-vue_export-helper.js +10 -0
- package/dist/es/global/index.js +14 -0
- package/dist/es/index.js +18247 -0
- package/dist/es/node_modules/.pnpm/splitpanes@4.0.4_vue@3.5.25_typescript@5.4.5_/node_modules/splitpanes/dist/splitpanes.css.js +1 -0
- package/dist/es/src/assets/css/element.scss.js +1 -0
- package/dist/es/src/assets/css/layout.scss.js +1 -0
- package/dist/es/src/assets/css/tailwind.scss.js +1 -0
- package/dist/es/src/assets/images/ff.png.js +4 -0
- package/dist/es/src/assets/images/menu/add.png.js +4 -0
- package/dist/es/src/assets/images/menu/del.png.js +4 -0
- package/dist/es/src/assets/images/menu/edit.png.js +4 -0
- package/dist/es/src/components/3dcloudwords/index.js +345 -0
- package/dist/es/src/components/3dcloudwords/index.vue.js +126 -0
- package/dist/es/src/components/badge/index.vue.js +97 -0
- package/dist/es/src/components/badge/index.vue2.js +1 -0
- package/dist/es/src/components/basic/Finish.vue.js +56 -0
- package/dist/es/src/components/basic/Finish.vue2.js +1 -0
- package/dist/es/src/components/button/index.vue.js +45 -0
- package/dist/es/src/components/carousel/index.vue.js +98 -0
- package/dist/es/src/components/carousel/index.vue2.js +1 -0
- package/dist/es/src/components/chartconfig/index.vue.js +328 -0
- package/dist/es/src/components/contextMenu/index.vue.js +153 -0
- package/dist/es/src/components/contextMenu/index.vue2.js +1 -0
- package/dist/es/src/components/countup/countUp.js +165 -0
- package/dist/es/src/components/countup/index.vue.js +117 -0
- package/dist/es/src/components/empty/assets/build.png.js +4 -0
- package/dist/es/src/components/empty/assets/emptybg.gif.js +4 -0
- package/dist/es/src/components/empty/assets/emptybg.png.js +4 -0
- package/dist/es/src/components/empty/assets/emptybg2.jpg.js +4 -0
- package/dist/es/src/components/empty/assets/emptybg3.jpg.js +4 -0
- package/dist/es/src/components/empty/assets/wuxiao.png.js +4 -0
- package/dist/es/src/components/empty/assets/wuxiao.webp.js +4 -0
- package/dist/es/src/components/empty/building.vue.js +95 -0
- package/dist/es/src/components/empty/building.vue2.js +1 -0
- package/dist/es/src/components/empty/empty.vue.js +108 -0
- package/dist/es/src/components/empty/empty.vue2.js +1 -0
- package/dist/es/src/components/empty/invalid.vue.js +21 -0
- package/dist/es/src/components/empty/invalid.vue2.js +1 -0
- package/dist/es/src/components/error/Error.vue.js +48 -0
- package/dist/es/src/components/error/Error.vue2.js +1 -0
- package/dist/es/src/components/form/Form.vue.js +93 -0
- package/dist/es/src/components/form/FormItem.vue.js +108 -0
- package/dist/es/src/components/form/FormItem.vue2.js +4 -0
- package/dist/es/src/components/layout/bar.vue.js +46 -0
- package/dist/es/src/components/layout/bar.vue2.js +1 -0
- package/dist/es/src/components/layout/layout1.vue.js +80 -0
- package/dist/es/src/components/layout/layout2.vue.js +175 -0
- package/dist/es/src/components/layout/layout2.vue2.js +1 -0
- package/dist/es/src/components/layout/layout3.vue.js +112 -0
- package/dist/es/src/components/layout/layout3.vue2.js +1 -0
- package/dist/es/src/components/layout/layout4.vue.js +71 -0
- package/dist/es/src/components/layout/layout4.vue2.js +1 -0
- package/dist/es/src/components/layout/nav.vue.js +223 -0
- package/dist/es/src/components/layout/nav.vue2.js +1 -0
- package/dist/es/src/components/layout/nav.vue3.js +1 -0
- package/dist/es/src/components/loading/index.vue.js +27 -0
- package/dist/es/src/components/loading/index.vue2.js +1 -0
- package/dist/es/src/components/notice/NoticeList.vue.js +203 -0
- package/dist/es/src/components/notice/NoticeList.vue2.js +1 -0
- package/dist/es/src/components/notice/NoticeListPaging.vue.js +344 -0
- package/dist/es/src/components/notice/NoticeListPaging.vue2.js +1 -0
- package/dist/es/src/components/notice/NoticeView.vue.js +135 -0
- package/dist/es/src/components/notice/NoticeView.vue2.js +1 -0
- package/dist/es/src/components/pagination/index.vue.js +98 -0
- package/dist/es/src/components/pagination/index.vue2.js +1 -0
- package/dist/es/src/components/pagination/scroll-to.js +40 -0
- package/dist/es/src/components/progress/bar.vue.js +65 -0
- package/dist/es/src/components/progress/bar.vue2.js +1 -0
- package/dist/es/src/components/progress/progress.vue.js +52 -0
- package/dist/es/src/components/progress/progress.vue2.js +1 -0
- package/dist/es/src/components/statisticalCount/index.vue.js +89 -0
- package/dist/es/src/components/statisticalCount/index.vue2.js +1 -0
- package/dist/es/src/components/username/index.vue.js +60 -0
- package/dist/es/src/components/username/index.vue2.js +1 -0
- package/dist/es/src/index.js +68 -0
- package/dist/es/src/utils/coms/load.js +24 -0
- package/dist/es/src/utils/func.js +48 -0
- package/dist/es/src/utils/hookDialog.js +27 -0
- package/dist/es/src/utils/hookPage.js +42 -0
- package/dist/es/src/utils/message.js +153 -0
- package/dist/es/src/xm_components/HeadSearch/hook/hookSearch.js +65 -0
- package/dist/es/src/xm_components/HeadSearch/index.vue.js +140 -0
- package/dist/es/src/xm_components/HeadSearch/index.vue2.js +1 -0
- package/dist/es/src/xm_components/Milestone/index.vue.js +89 -0
- package/dist/es/src/xm_components/Milestone/index.vue2.js +1 -0
- package/dist/es/src/xm_components/MultiStatisticalCard/index.vue.js +89 -0
- package/dist/es/src/xm_components/MultiStatisticalCard/index.vue2.js +1 -0
- package/dist/es/src/xm_components/StatisticalCard/index.vue.js +164 -0
- package/dist/es/src/xm_components/StatisticalCard/index.vue2.js +1 -0
- package/global/index.js +1 -1
- package/package.json +26 -10
- package/index.html +0 -13
- package/vite.config.js +0 -51
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
const { ref: ref, computed: computed, provide: provide, onMounted: onMounted, onUnmounted: onUnmounted, watch: watch, createElementBlock: createElementBlock, openBlock: openBlock, renderSlot: renderSlot, createBlock: createBlock, Teleport: Teleport, createVNode: createVNode, Transition: Transition, withCtx: withCtx, createCommentVNode: createCommentVNode, normalizeStyle: normalizeStyle, createElementVNode: createElementVNode, Fragment: Fragment, renderList: renderList, createTextVNode: createTextVNode, toDisplayString: toDisplayString, normalizeClass: normalizeClass } = Vue;
|
|
2
|
+
import "./index.vue2.js";
|
|
3
|
+
import _export_sfc from "../../../_virtual/_plugin-vue_export-helper.js";
|
|
4
|
+
const _hoisted_1 = { class: "context-menu-container" };
|
|
5
|
+
const _hoisted_2 = ["onClick"];
|
|
6
|
+
const _sfc_main = {
|
|
7
|
+
__name: "index",
|
|
8
|
+
props: {
|
|
9
|
+
options: {
|
|
10
|
+
type: Array,
|
|
11
|
+
default: () => []
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
emits: ["menu-click", "show-menu", "hide-menu"],
|
|
15
|
+
setup(__props, { expose: __expose, emit: __emit }) {
|
|
16
|
+
const props = __props;
|
|
17
|
+
const emit = __emit;
|
|
18
|
+
const menuRef = ref(null);
|
|
19
|
+
const isMenuVisible = ref(false);
|
|
20
|
+
const menuX = ref(0);
|
|
21
|
+
const menuY = ref(0);
|
|
22
|
+
const currentItem = ref(null);
|
|
23
|
+
const menuOptions = computed(() => props.options);
|
|
24
|
+
const currentItemData = ref(null);
|
|
25
|
+
provide("showContextMenu", (itemData, event) => {
|
|
26
|
+
event.preventDefault();
|
|
27
|
+
currentItemData.value = itemData;
|
|
28
|
+
const { clientX, clientY } = event;
|
|
29
|
+
const menuWidth = 180;
|
|
30
|
+
const menuHeight = props.options.length * 40;
|
|
31
|
+
let x = clientX;
|
|
32
|
+
if (x + menuWidth > window.innerWidth) {
|
|
33
|
+
x = Math.max(0, window.innerWidth - menuWidth);
|
|
34
|
+
}
|
|
35
|
+
let y = clientY;
|
|
36
|
+
if (y + menuHeight > window.innerHeight) {
|
|
37
|
+
y = Math.max(0, window.innerHeight - menuHeight);
|
|
38
|
+
}
|
|
39
|
+
menuX.value = x;
|
|
40
|
+
menuY.value = y;
|
|
41
|
+
isMenuVisible.value = true;
|
|
42
|
+
});
|
|
43
|
+
const showMenu = (item, event) => {
|
|
44
|
+
event.preventDefault();
|
|
45
|
+
currentItem.value = item;
|
|
46
|
+
const { x, y } = calculateMenuPosition(event.clientX, event.clientY);
|
|
47
|
+
menuX.value = x;
|
|
48
|
+
menuY.value = y;
|
|
49
|
+
isMenuVisible.value = true;
|
|
50
|
+
emit("show-menu", { item, x, y });
|
|
51
|
+
};
|
|
52
|
+
const calculateMenuPosition = (clientX, clientY) => {
|
|
53
|
+
const menuWidth = 180;
|
|
54
|
+
const menuHeight = 40 * menuOptions.value.length;
|
|
55
|
+
let x = clientX;
|
|
56
|
+
let y = clientY;
|
|
57
|
+
if (x + menuWidth > window.innerWidth) {
|
|
58
|
+
x = window.innerWidth - menuWidth;
|
|
59
|
+
}
|
|
60
|
+
if (y + menuHeight > window.innerHeight) {
|
|
61
|
+
y = window.innerHeight - menuHeight;
|
|
62
|
+
}
|
|
63
|
+
return { x, y };
|
|
64
|
+
};
|
|
65
|
+
const handleMenuItemClick = (item, index2) => {
|
|
66
|
+
isMenuVisible.value = false;
|
|
67
|
+
emit("menu-click", { item, index: index2, data: currentItem.value });
|
|
68
|
+
if (typeof item.click === "function") {
|
|
69
|
+
item.click(currentItem.value);
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
const handleEnter = (el) => {
|
|
73
|
+
el.style.opacity = "0";
|
|
74
|
+
el.style.transform = "translateY(-10px)";
|
|
75
|
+
el.style.transition = "opacity 0.2s, transform 0.2s";
|
|
76
|
+
setTimeout(() => {
|
|
77
|
+
el.style.opacity = "1";
|
|
78
|
+
el.style.transform = "translateY(0)";
|
|
79
|
+
}, 10);
|
|
80
|
+
};
|
|
81
|
+
const closeMenuOnClickOutside = (event) => {
|
|
82
|
+
if (menuRef.value && !menuRef.value.contains(event.target)) {
|
|
83
|
+
isMenuVisible.value = false;
|
|
84
|
+
emit("hide-menu");
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
const closeMenuOnEsc = (event) => {
|
|
88
|
+
if (event.key === "Escape") {
|
|
89
|
+
isMenuVisible.value = false;
|
|
90
|
+
emit("hide-menu");
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
onMounted(() => {
|
|
94
|
+
document.addEventListener("click", closeMenuOnClickOutside);
|
|
95
|
+
document.addEventListener("keydown", closeMenuOnEsc);
|
|
96
|
+
});
|
|
97
|
+
onUnmounted(() => {
|
|
98
|
+
document.removeEventListener("click", closeMenuOnClickOutside);
|
|
99
|
+
document.removeEventListener("keydown", closeMenuOnEsc);
|
|
100
|
+
});
|
|
101
|
+
__expose({
|
|
102
|
+
showMenu
|
|
103
|
+
});
|
|
104
|
+
watch(() => props.options, (newOptions) => {
|
|
105
|
+
if (isMenuVisible.value && menuRef.value) {
|
|
106
|
+
const menuHeight = 40 * newOptions.length;
|
|
107
|
+
menuRef.value.style.height = `${menuHeight}px`;
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
return (_ctx, _cache) => {
|
|
111
|
+
return openBlock(), createElementBlock("div", _hoisted_1, [
|
|
112
|
+
renderSlot(_ctx.$slots, "default", {}, void 0, true),
|
|
113
|
+
(openBlock(), createBlock(Teleport, { to: "body" }, [
|
|
114
|
+
createVNode(Transition, {
|
|
115
|
+
name: "menu-fade",
|
|
116
|
+
onEnter: handleEnter
|
|
117
|
+
}, {
|
|
118
|
+
default: withCtx(() => [
|
|
119
|
+
isMenuVisible.value ? (openBlock(), createElementBlock("div", {
|
|
120
|
+
key: 0,
|
|
121
|
+
class: "context-menu",
|
|
122
|
+
ref_key: "menuRef",
|
|
123
|
+
ref: menuRef,
|
|
124
|
+
style: normalizeStyle({ top: menuY.value + "px", left: menuX.value + "px" })
|
|
125
|
+
}, [
|
|
126
|
+
createElementVNode("ul", null, [
|
|
127
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(menuOptions.value, (item, index2) => {
|
|
128
|
+
return openBlock(), createElementBlock("li", {
|
|
129
|
+
key: index2,
|
|
130
|
+
class: "menu-item",
|
|
131
|
+
onClick: ($event) => handleMenuItemClick(item, index2)
|
|
132
|
+
}, [
|
|
133
|
+
createTextVNode(toDisplayString(item.label) + " ", 1),
|
|
134
|
+
item.icon ? (openBlock(), createElementBlock("span", {
|
|
135
|
+
key: 0,
|
|
136
|
+
class: normalizeClass(item.icon)
|
|
137
|
+
}, null, 2)) : createCommentVNode("", true)
|
|
138
|
+
], 8, _hoisted_2);
|
|
139
|
+
}), 128))
|
|
140
|
+
])
|
|
141
|
+
], 4)) : createCommentVNode("", true)
|
|
142
|
+
]),
|
|
143
|
+
_: 1
|
|
144
|
+
})
|
|
145
|
+
]))
|
|
146
|
+
]);
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
};
|
|
150
|
+
const index = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-d29d1e99"]]);
|
|
151
|
+
export {
|
|
152
|
+
index as default
|
|
153
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
var CountUp = function(target, startVal, endVal, decimals, duration, options) {
|
|
2
|
+
var lastTime = 0;
|
|
3
|
+
var vendors = ["webkit", "moz", "ms", "o"];
|
|
4
|
+
for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
|
|
5
|
+
window.requestAnimationFrame = window[vendors[x] + "RequestAnimationFrame"];
|
|
6
|
+
window.cancelAnimationFrame = window[vendors[x] + "CancelAnimationFrame"] || window[vendors[x] + "CancelRequestAnimationFrame"];
|
|
7
|
+
}
|
|
8
|
+
if (!window.requestAnimationFrame) {
|
|
9
|
+
window.requestAnimationFrame = function(callback, element) {
|
|
10
|
+
var currTime = (/* @__PURE__ */ new Date()).getTime();
|
|
11
|
+
var timeToCall = Math.max(0, 16 - (currTime - lastTime));
|
|
12
|
+
var id = window.setTimeout(function() {
|
|
13
|
+
callback(currTime + timeToCall);
|
|
14
|
+
}, timeToCall);
|
|
15
|
+
lastTime = currTime + timeToCall;
|
|
16
|
+
return id;
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
if (!window.cancelAnimationFrame) {
|
|
20
|
+
window.cancelAnimationFrame = function(id) {
|
|
21
|
+
clearTimeout(id);
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
var self = this;
|
|
25
|
+
self.options = {
|
|
26
|
+
useEasing: true,
|
|
27
|
+
// toggle easing
|
|
28
|
+
useGrouping: true,
|
|
29
|
+
// 1,000,000 vs 1000000
|
|
30
|
+
separator: ",",
|
|
31
|
+
// character to use as a separator
|
|
32
|
+
decimal: ".",
|
|
33
|
+
// character to use as a decimal
|
|
34
|
+
easingFn: null,
|
|
35
|
+
// optional custom easing closure function, default is Robert Penner's easeOutExpo
|
|
36
|
+
formattingFn: null
|
|
37
|
+
// optional custom formatting function, default is self.formatNumber below
|
|
38
|
+
};
|
|
39
|
+
for (var key in options) {
|
|
40
|
+
if (options.hasOwnProperty(key)) {
|
|
41
|
+
self.options[key] = options[key];
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
if (self.options.separator === "") {
|
|
45
|
+
self.options.useGrouping = false;
|
|
46
|
+
}
|
|
47
|
+
if (!self.options.prefix)
|
|
48
|
+
self.options.prefix = "";
|
|
49
|
+
if (!self.options.suffix)
|
|
50
|
+
self.options.suffix = "";
|
|
51
|
+
self.d = typeof target === "string" ? document.getElementById(target) : target;
|
|
52
|
+
self.startVal = Number(startVal);
|
|
53
|
+
self.endVal = Number(endVal);
|
|
54
|
+
self.countDown = self.startVal > self.endVal;
|
|
55
|
+
self.frameVal = self.startVal;
|
|
56
|
+
self.decimals = Math.max(0, decimals || 0);
|
|
57
|
+
self.dec = Math.pow(10, self.decimals);
|
|
58
|
+
self.duration = Number(duration) * 1e3 || 2e3;
|
|
59
|
+
self.formatNumber = function(nStr) {
|
|
60
|
+
nStr = nStr.toFixed(self.decimals);
|
|
61
|
+
nStr += "";
|
|
62
|
+
var x2, x1, x22, rgx;
|
|
63
|
+
x2 = nStr.split(".");
|
|
64
|
+
x1 = x2[0];
|
|
65
|
+
x22 = x2.length > 1 ? self.options.decimal + x2[1] : "";
|
|
66
|
+
rgx = /(\d+)(\d{3})/;
|
|
67
|
+
if (self.options.useGrouping) {
|
|
68
|
+
while (rgx.test(x1)) {
|
|
69
|
+
x1 = x1.replace(rgx, "$1" + self.options.separator + "$2");
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return self.options.prefix + x1 + x22 + self.options.suffix;
|
|
73
|
+
};
|
|
74
|
+
self.easeOutExpo = function(t, b, c, d) {
|
|
75
|
+
return c * (-Math.pow(2, -10 * t / d) + 1) * 1024 / 1023 + b;
|
|
76
|
+
};
|
|
77
|
+
self.easingFn = self.options.easingFn ? self.options.easingFn : self.easeOutExpo;
|
|
78
|
+
self.formattingFn = self.options.formattingFn ? self.options.formattingFn : self.formatNumber;
|
|
79
|
+
self.version = function() {
|
|
80
|
+
return "1.7.1";
|
|
81
|
+
};
|
|
82
|
+
self.printValue = function(value) {
|
|
83
|
+
var _a, _b, _c;
|
|
84
|
+
var result = self.formattingFn(value);
|
|
85
|
+
if (((_a = self.d) == null ? void 0 : _a.tagName) === "INPUT") {
|
|
86
|
+
this.d.value = result;
|
|
87
|
+
} else if (((_b = self.d) == null ? void 0 : _b.tagName) === "text" || ((_c = self.d) == null ? void 0 : _c.tagName) === "tspan") {
|
|
88
|
+
this.d.textContent = result;
|
|
89
|
+
} else {
|
|
90
|
+
this.d.innerHTML = result;
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
self.count = function(timestamp) {
|
|
94
|
+
if (!self.startTime) {
|
|
95
|
+
self.startTime = timestamp;
|
|
96
|
+
}
|
|
97
|
+
self.timestamp = timestamp;
|
|
98
|
+
var progress = timestamp - self.startTime;
|
|
99
|
+
self.remaining = self.duration - progress;
|
|
100
|
+
if (self.options.useEasing) {
|
|
101
|
+
if (self.countDown) {
|
|
102
|
+
self.frameVal = self.startVal - self.easingFn(progress, 0, self.startVal - self.endVal, self.duration);
|
|
103
|
+
} else {
|
|
104
|
+
self.frameVal = self.easingFn(progress, self.startVal, self.endVal - self.startVal, self.duration);
|
|
105
|
+
}
|
|
106
|
+
} else {
|
|
107
|
+
if (self.countDown) {
|
|
108
|
+
self.frameVal = self.startVal - (self.startVal - self.endVal) * (progress / self.duration);
|
|
109
|
+
} else {
|
|
110
|
+
self.frameVal = self.startVal + (self.endVal - self.startVal) * (progress / self.duration);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
if (self.countDown) {
|
|
114
|
+
self.frameVal = self.frameVal < self.endVal ? self.endVal : self.frameVal;
|
|
115
|
+
} else {
|
|
116
|
+
self.frameVal = self.frameVal > self.endVal ? self.endVal : self.frameVal;
|
|
117
|
+
}
|
|
118
|
+
self.frameVal = Math.round(self.frameVal * self.dec) / self.dec;
|
|
119
|
+
self.printValue(self.frameVal);
|
|
120
|
+
if (progress < self.duration) {
|
|
121
|
+
self.rAF = requestAnimationFrame(self.count);
|
|
122
|
+
} else {
|
|
123
|
+
if (self.callback) {
|
|
124
|
+
self.callback();
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
self.start = function(callback) {
|
|
129
|
+
self.callback = callback;
|
|
130
|
+
self.rAF = requestAnimationFrame(self.count);
|
|
131
|
+
return false;
|
|
132
|
+
};
|
|
133
|
+
self.pauseResume = function() {
|
|
134
|
+
if (!self.paused) {
|
|
135
|
+
self.paused = true;
|
|
136
|
+
cancelAnimationFrame(self.rAF);
|
|
137
|
+
} else {
|
|
138
|
+
self.paused = false;
|
|
139
|
+
delete self.startTime;
|
|
140
|
+
self.duration = self.remaining;
|
|
141
|
+
self.startVal = self.frameVal;
|
|
142
|
+
requestAnimationFrame(self.count);
|
|
143
|
+
}
|
|
144
|
+
};
|
|
145
|
+
self.reset = function() {
|
|
146
|
+
self.paused = false;
|
|
147
|
+
delete self.startTime;
|
|
148
|
+
self.startVal = startVal;
|
|
149
|
+
cancelAnimationFrame(self.rAF);
|
|
150
|
+
self.printValue(self.startVal);
|
|
151
|
+
};
|
|
152
|
+
self.update = function(newEndVal) {
|
|
153
|
+
cancelAnimationFrame(self.rAF);
|
|
154
|
+
self.paused = false;
|
|
155
|
+
delete self.startTime;
|
|
156
|
+
self.startVal = self.frameVal;
|
|
157
|
+
self.endVal = Number(newEndVal);
|
|
158
|
+
self.countDown = self.startVal > self.endVal;
|
|
159
|
+
self.rAF = requestAnimationFrame(self.count);
|
|
160
|
+
};
|
|
161
|
+
self.printValue(self.startVal);
|
|
162
|
+
};
|
|
163
|
+
export {
|
|
164
|
+
CountUp
|
|
165
|
+
};
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
const { ref: ref, watch: watch, onMounted: onMounted, nextTick: nextTick, createElementBlock: createElementBlock, openBlock: openBlock, createCommentVNode: createCommentVNode, createElementVNode: createElementVNode, renderSlot: renderSlot, toDisplayString: toDisplayString, normalizeStyle: normalizeStyle, normalizeClass: normalizeClass } = Vue;
|
|
2
|
+
import { CountUp } from "./countUp.js";
|
|
3
|
+
const _hoisted_1 = {
|
|
4
|
+
key: 0,
|
|
5
|
+
style: { "color": "#606266" }
|
|
6
|
+
};
|
|
7
|
+
const _hoisted_2 = ["id"];
|
|
8
|
+
const _sfc_main = {
|
|
9
|
+
__name: "index",
|
|
10
|
+
props: {
|
|
11
|
+
idName: {
|
|
12
|
+
type: String,
|
|
13
|
+
default: ""
|
|
14
|
+
},
|
|
15
|
+
// 标题显示
|
|
16
|
+
title: {
|
|
17
|
+
type: String,
|
|
18
|
+
default: ""
|
|
19
|
+
},
|
|
20
|
+
startVal: {
|
|
21
|
+
type: Number,
|
|
22
|
+
default: 0
|
|
23
|
+
},
|
|
24
|
+
endVal: {
|
|
25
|
+
type: Number,
|
|
26
|
+
default: 0
|
|
27
|
+
},
|
|
28
|
+
iconType: {
|
|
29
|
+
type: String,
|
|
30
|
+
default: ""
|
|
31
|
+
},
|
|
32
|
+
color: {
|
|
33
|
+
type: String,
|
|
34
|
+
default: "#3b3a3a"
|
|
35
|
+
// D9524E
|
|
36
|
+
},
|
|
37
|
+
introText: {
|
|
38
|
+
type: String,
|
|
39
|
+
default: ""
|
|
40
|
+
},
|
|
41
|
+
docTypeText: {
|
|
42
|
+
type: String,
|
|
43
|
+
default: ""
|
|
44
|
+
},
|
|
45
|
+
countSize: {
|
|
46
|
+
type: String,
|
|
47
|
+
default: `30px`
|
|
48
|
+
},
|
|
49
|
+
countWeight: {
|
|
50
|
+
type: Number,
|
|
51
|
+
default: 700
|
|
52
|
+
},
|
|
53
|
+
delay: {
|
|
54
|
+
type: Number,
|
|
55
|
+
default: 500
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
setup(__props) {
|
|
59
|
+
const props = __props;
|
|
60
|
+
const className = ref("");
|
|
61
|
+
function transformValue(val) {
|
|
62
|
+
let endVal = 0;
|
|
63
|
+
let unit = "";
|
|
64
|
+
if (val < 1e3) {
|
|
65
|
+
endVal = val;
|
|
66
|
+
} else if (val >= 1e3 && val < 1e6) {
|
|
67
|
+
endVal = parseInt(val / 1e3);
|
|
68
|
+
unit = "K+";
|
|
69
|
+
} else if (val >= 1e6 && val < 1e10) {
|
|
70
|
+
endVal = parseInt(val / 1e6);
|
|
71
|
+
unit = "M+";
|
|
72
|
+
} else {
|
|
73
|
+
endVal = parseInt(val / 1e9);
|
|
74
|
+
unit = "B+";
|
|
75
|
+
}
|
|
76
|
+
return {
|
|
77
|
+
val: endVal,
|
|
78
|
+
unit
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
let demo = {};
|
|
82
|
+
watch(() => props.endVal, (val) => {
|
|
83
|
+
const endVal = val;
|
|
84
|
+
if (demo.update) {
|
|
85
|
+
demo.update(endVal);
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
onMounted(() => {
|
|
89
|
+
nextTick(() => {
|
|
90
|
+
setTimeout(() => {
|
|
91
|
+
transformValue(props.endVal);
|
|
92
|
+
const endVal = props.endVal;
|
|
93
|
+
props.idName;
|
|
94
|
+
demo = new CountUp(props.idName, props.startVal, endVal, props.decimals, props.duration, props.options);
|
|
95
|
+
if (!demo.error) {
|
|
96
|
+
demo.start();
|
|
97
|
+
}
|
|
98
|
+
}, props.delay);
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
return (_ctx, _cache) => {
|
|
102
|
+
return openBlock(), createElementBlock("div", null, [
|
|
103
|
+
__props.title ? (openBlock(), createElementBlock("div", _hoisted_1, toDisplayString(__props.title), 1)) : createCommentVNode("", true),
|
|
104
|
+
createElementVNode("div", {
|
|
105
|
+
class: normalizeClass(className.value),
|
|
106
|
+
style: normalizeStyle({ textAlign: "center", color: __props.color, fontSize: __props.countSize, fontWeight: __props.countWeight, fontFamily: "PingFang SC" })
|
|
107
|
+
}, [
|
|
108
|
+
createElementVNode("span", { id: __props.idName }, toDisplayString(__props.startVal), 9, _hoisted_2)
|
|
109
|
+
], 6),
|
|
110
|
+
renderSlot(_ctx.$slots, "intro")
|
|
111
|
+
]);
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
export {
|
|
116
|
+
_sfc_main as default
|
|
117
|
+
};
|