@utogether/udp-core 1.0.1-beta.1 → 1.0.1-beta.11

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.
Files changed (147) hide show
  1. package/build/plugins.ts +39 -32
  2. package/dist/{403-Dp617CWX.js → 403-Dsgsr2M-.js} +1 -1
  3. package/dist/{404-Cz_Axb6Y.js → 404-DmPHEfqM.js} +1 -1
  4. package/dist/{500-BGCtRNse.js → 500-OYEgHR2a.js} +1 -1
  5. package/dist/{AuthorityInfo-DGGfm7IS.js → AuthorityInfo-B1H1txG-.js} +1 -1
  6. package/dist/AuthorityInfo.vue_vue_type_style_index_0_lang-BUlmQtjQ.js +100 -0
  7. package/dist/{Company-IV3GTnzY.js → Company-C8ojgx93.js} +3 -3
  8. package/dist/{CompanyPanel-qV-_VtoL.js → CompanyPanel-Dageer1t.js} +16 -16
  9. package/dist/{Department-B3W-OxW8.js → Department-Dr94_85I.js} +3 -3
  10. package/dist/{DepartmentPanel-Cw3OWxE7.js → DepartmentPanel-Bc5r1HpT.js} +1 -1
  11. package/dist/{DesignPanel-BFxR2fHJ.js → DesignPanel-CcWt1Myp.js} +1 -1
  12. package/dist/{DesignPanel.vue_vue_type_style_index_0_lang-DljbeFba.js → DesignPanel.vue_vue_type_style_index_0_lang-CKA6nx1l.js} +24 -26
  13. package/dist/DictView-BHj6wexC.js +110 -0
  14. package/dist/InvOrganization-DP3Le9g-.js +72 -0
  15. package/dist/Org-BRGHTwsw.js +39 -0
  16. package/dist/{Preview-BlDMmpdR.js → Preview-CqMaUD_3.js} +1 -1
  17. package/dist/{ReportDefine-Cub_85LA.js → ReportDefine-PEQdTCOY.js} +1 -1
  18. package/dist/{ReportDesign-hFhq5UVE.js → ReportDesign-CB4bv8ba.js} +43 -43
  19. package/dist/{ReportQuery-ChkWEyxT.js → ReportQuery-B7t4lMK0.js} +1 -1
  20. package/dist/{ReportQueryFrom-KVyD_8Dj.js → ReportQueryFrom-VBxUIMRJ.js} +1 -1
  21. package/dist/{ReportQueryFrom.vue_vue_type_style_index_0_lang-CLNODquq.js → ReportQueryFrom.vue_vue_type_style_index_0_lang-HeLA4Qs5.js} +1 -1
  22. package/dist/{ReportTemplate-ag9NDvh2.js → ReportTemplate-DNkv7F5p.js} +28 -28
  23. package/dist/{Role-_q3lQ8CZ.js → Role-BGfTpZK4.js} +6 -6
  24. package/dist/{RoleAssign-DZb9IRsm.js → RoleAssign-DrKFWZzA.js} +8 -8
  25. package/dist/{RolePanel-CsLsz-Ds.js → RolePanel-3lvRh7aS.js} +1 -1
  26. package/dist/{RolePanel-BQb1LlhD.js → RolePanel-BRI5QYe4.js} +1 -1
  27. package/dist/RolePanel.vue_vue_type_script_setup_true_lang-BXKZb7yt.js +132 -0
  28. package/dist/{RolePanel.vue_vue_type_script_setup_true_lang-BrnRgHEk.js → RolePanel.vue_vue_type_script_setup_true_lang-Cci_Ysty.js} +44 -38
  29. package/dist/{ScrollPanel.vue_vue_type_style_index_0_lang-CaFKRwXu.js → ScrollPanel.vue_vue_type_style_index_0_lang-BmId6zzA.js} +21 -21
  30. package/dist/{Staff-BSf9Ypbk.js → Staff-Dr0dq3fW.js} +3 -3
  31. package/dist/{StaffInfo-BNKasyMF.js → StaffInfo-_N9g2hPa.js} +1 -1
  32. package/dist/{StaffInfo.vue_vue_type_script_setup_true_lang-DDZ7ukd0.js → StaffInfo.vue_vue_type_script_setup_true_lang-DiTJY2ug.js} +11 -11
  33. package/dist/{StaffPanel-Bpq0WVlH.js → StaffPanel-mxJQiW3G.js} +1 -1
  34. package/dist/{StaffPanel.vue_vue_type_script_setup_true_lang-BhiJ0Q-Q.js → StaffPanel.vue_vue_type_script_setup_true_lang-GRGn-5t6.js} +2 -2
  35. package/dist/{SysUser-FAABuNti.js → SysUser-DgA19hZE.js} +2 -2
  36. package/dist/{SysUserPanel-PxJeOgHm.js → SysUserPanel-Bc85z5_K.js} +1 -1
  37. package/dist/SysUserPanel.vue_vue_type_script_setup_true_lang-BHDrP1Pk.js +294 -0
  38. package/dist/{SystemMenu-C-7NAGon.js → SystemMenu-Be-gFIie.js} +26 -26
  39. package/dist/{UserInfo-ClXKtyGo.js → UserInfo-BCYuwFmr.js} +1 -1
  40. package/dist/{UserInfo.vue_vue_type_style_index_0_lang-8N7P4Hl7.js → UserInfo.vue_vue_type_style_index_0_lang-B1lgokO6.js} +39 -37
  41. package/dist/{childView-C_HmDQNd.js → childView-DhcBr1UA.js} +1 -1
  42. package/dist/{childView-uUlBcTza.js → childView-Dk4zZoXd.js} +1 -1
  43. package/dist/{childView.vue_vue_type_style_index_0_lang-Ckjmw6wJ.js → childView.vue_vue_type_style_index_0_lang-CVnLnl03.js} +40 -40
  44. package/dist/{childView.vue_vue_type_style_index_0_lang-y0sDvYx5.js → childView.vue_vue_type_style_index_0_lang-D4GYVhOc.js} +1 -1
  45. package/dist/{code-rule-AgCVDKFy.js → code-rule-BSwPwuAL.js} +9 -10
  46. package/dist/core.es.js +14 -11
  47. package/dist/{cron-task-C6FgQxTi.js → cron-task-T1ztyra7.js} +1 -1
  48. package/dist/{frameView-BDgISK7N.js → frameView-BDgngiBq.js} +1 -1
  49. package/dist/img/l_img.svg +1 -1
  50. package/dist/img/minicolors.png +0 -0
  51. package/dist/img/v_img.svg +1 -1
  52. package/dist/index-BSj2AtVL.js +4468 -0
  53. package/dist/{layoutView-yb3DV2DQ.js → layoutView-i7dLLBzJ.js} +1181 -1176
  54. package/dist/{login-RRpljbkm.js → login-K5Ludp8x.js} +105 -113
  55. package/dist/{login-log-CvVnyGi3.js → login-log-kqKzKTto.js} +1 -1
  56. package/dist/{lov-view-C9-rjzZR.js → lov-view-lAexiucu.js} +2 -2
  57. package/dist/{menuInfo-CzPQyFhp.js → menuInfo-BaN5YZPp.js} +1 -1
  58. package/dist/{menuInfo.vue_vue_type_style_index_0_lang-BumXunCg.js → menuInfo.vue_vue_type_style_index_0_lang-yI4QOYxG.js} +100 -97
  59. package/dist/{pda-app-Dvy3U-b6.js → pda-app-DEtDXFvM.js} +211 -197
  60. package/dist/{resource-Fy0lFkSV.js → resource-Bztmz7pn.js} +15 -15
  61. package/dist/{su-welcome-DYvSCUST.js → su-welcome-Bx8nBPi9.js} +109 -110
  62. package/dist/sys-config-nvrtYGgi.js +290 -0
  63. package/dist/udp-core.css +2 -2
  64. package/dist/{utogether-CjmJiHoE.js → utogether-yPnwDAIH.js} +1 -1
  65. package/index.ts +40 -36
  66. package/package.json +18 -18
  67. package/src/App.vue +65 -70
  68. package/src/api/index.ts +31 -31
  69. package/src/components/SuCharts/src/UserInfo.vue +78 -78
  70. package/src/components/SuScrollTree/ScrollPanel.vue +3 -3
  71. package/src/components/udp/count-down.vue +536 -0
  72. package/src/components/udp/flip-down/FlipCard/flip-card.vue +251 -0
  73. package/src/components/udp/flip-down/FlipCard/interfaces.ts +4 -0
  74. package/src/components/udp/flip-down/FlipClock/flip-clock.vue +113 -0
  75. package/src/components/udp/form-upload.vue +414 -64
  76. package/src/components/udp/form.vue +112 -0
  77. package/src/components/udp/grid.vue +495 -0
  78. package/src/components/udp/index.ts +10 -4
  79. package/src/components/udp/lov.vue +388 -0
  80. package/src/components/udp/modal-form.vue +13 -3
  81. package/src/components/udp/modal-grid.vue +298 -0
  82. package/src/components/udp/upload.vue +423 -0
  83. package/src/components/udp/utils.ts +447 -40
  84. package/src/directives/permission/index.ts +1 -1
  85. package/src/layout/components/lay-navbar/index.vue +239 -237
  86. package/src/layout/components/lay-panel/index.vue +150 -150
  87. package/src/layout/components/lay-search/index.vue +25 -25
  88. package/src/layout/components/lay-select-org/index.vue +64 -69
  89. package/src/layout/components/lay-sidebar/breadCrumb.vue +1 -1
  90. package/src/layout/components/lay-sidebar/horizontal.vue +190 -191
  91. package/src/layout/components/lay-sidebar/mixNav.vue +260 -258
  92. package/src/layout/components/lay-sidebar/sidebar-logo.vue +92 -98
  93. package/src/layout/components/lay-tag/index.vue +625 -625
  94. package/src/layout/hooks/useNav.ts +173 -173
  95. package/src/layout/layoutView.vue +215 -215
  96. package/src/main.ts +119 -109
  97. package/src/plugins/i18n/en.ts +302 -289
  98. package/src/plugins/i18n/zh.ts +349 -337
  99. package/src/plugins/vxe-table/index.ts +53 -46
  100. package/src/plugins/vxe-table/render.tsx +956 -817
  101. package/src/router/index.ts +177 -183
  102. package/src/router/modules/remaining.ts +58 -83
  103. package/src/store/modules/permission.ts +1 -4
  104. package/src/style/button.scss +85 -78
  105. package/src/style/tailwind.css +1 -68
  106. package/src/style/vxetable.scss +44 -11
  107. package/src/utils/authority/index.ts +1 -1
  108. package/src/utils/{http → udp/http}/index.ts +283 -297
  109. package/src/utils/{http → udp/http}/types.d.ts +8 -5
  110. package/src/utils/udp/useRender.ts +17 -6
  111. package/src/views/login/login-view.vue +300 -314
  112. package/src/views/organization/company/CompanyPanel.vue +259 -259
  113. package/src/views/organization/inv-org/InvOrganization.vue +68 -54
  114. package/src/views/organization/org/Org.vue +9 -5
  115. package/src/views/system/menu/SystemMenu.vue +183 -197
  116. package/src/views/system/menu/menuInfo.vue +363 -371
  117. package/src/views/system/role/AuthorityInfo.vue +19 -15
  118. package/src/views/system/role/Role.vue +1 -5
  119. package/src/views/system/role/RolePanel.vue +11 -2
  120. package/src/views/system/role/UserInfo.vue +195 -193
  121. package/src/views/system/role-assign/RoleAssign.vue +57 -57
  122. package/src/views/system/role-assign/RolePanel.vue +139 -136
  123. package/src/views/system/sys/sys-config.vue +287 -291
  124. package/src/views/system/sysUser/SysUserPanel.vue +278 -278
  125. package/src/views/uapp/pda/pda-app.vue +208 -176
  126. package/src/views/udev/dict/DictView.vue +118 -106
  127. package/src/views/udev/dict/childView.vue +7 -7
  128. package/src/views/udev/lov/lov-view.vue +91 -91
  129. package/src/views/ufile/aggregation/File.vue +5 -5
  130. package/src/views/ufile/file/water-mark.vue +14 -14
  131. package/src/views/uhome/su-welcome.vue +3 -3
  132. package/src/views/ulogin/login.vue +12 -8
  133. package/src/views/upms/user/login-log.vue +1 -1
  134. package/src/views/urpt/design/DesignPanel.vue +507 -526
  135. package/src/views/urpt/design/ReportDesign.vue +15 -19
  136. package/src/views/urpt/static-resource/resource.vue +3 -3
  137. package/src/views/urpt/template/ReportTemplate.vue +7 -7
  138. package/types/global.d.ts +2 -1
  139. package/vite.config.ts +6 -2
  140. package/dist/AuthorityInfo.vue_vue_type_style_index_0_lang-BqccGW7v.js +0 -102
  141. package/dist/DictView-C-i7e4hZ.js +0 -95
  142. package/dist/InvOrganization-cfT6riGU.js +0 -260
  143. package/dist/Org-CA7vTDIF.js +0 -35
  144. package/dist/RolePanel.vue_vue_type_script_setup_true_lang-cmW7zBLu.js +0 -126
  145. package/dist/SysUserPanel.vue_vue_type_script_setup_true_lang-njefUln5.js +0 -288
  146. package/dist/index-DzOzUkf6.js +0 -3388
  147. package/dist/sys-config-DJ1vNQTy.js +0 -277
@@ -0,0 +1,251 @@
1
+ <script setup lang="ts">
2
+ import { ref } from 'vue';
3
+ import type { FlipCardHandleInterface } from './interfaces';
4
+
5
+ const { initFrontText, initBackText, duration } = defineProps({
6
+ // 初始前牌文字
7
+ initFrontText: { type: [String, Number], default: '0' },
8
+ // 初始后牌文字
9
+ initBackText: { type: [String, Number], default: '1' },
10
+ // 翻牌动画时间,与CSS中设置的animation-duration保持一致
11
+ duration: { type: Number, default: 600 }
12
+ });
13
+ // 是否正在翻转中
14
+ const isFlipping = ref(false);
15
+ // 翻转类型,down=向下翻转,up=向上翻转
16
+ const flipType = ref<string>('down');
17
+ // 前牌文字
18
+ const frontText = ref<string | number>(initFrontText);
19
+ // 后牌文字
20
+ const backText = ref<string | number>(initBackText);
21
+ // 翻转
22
+ const flip = ({
23
+ type,
24
+ newFrontText,
25
+ newBackText
26
+ }: {
27
+ type: string;
28
+ newFrontText: string | number;
29
+ newBackText: string | number;
30
+ }) => {
31
+ if (isFlipping.value) {
32
+ return false;
33
+ }
34
+ frontText.value = newFrontText;
35
+ backText.value = newBackText;
36
+ flipType.value = type;
37
+ isFlipping.value = true;
38
+
39
+ setTimeout(() => {
40
+ frontText.value = newBackText;
41
+ isFlipping.value = false;
42
+ }, duration);
43
+ };
44
+
45
+ defineExpose<FlipCardHandleInterface>({
46
+ // 下翻牌
47
+ flipDown: (newFrontText, newBackText) => {
48
+ flip({ type: 'down', newFrontText, newBackText });
49
+ },
50
+ // 上翻牌
51
+ flipUp: (newFrontText, newBackText) => {
52
+ flip({ type: 'up', newFrontText, newBackText });
53
+ }
54
+ });
55
+ </script>
56
+
57
+ <template>
58
+ <div class="M-FlipCard" :class="{ down: flipType === 'down', up: flipType === 'up', go: isFlipping }">
59
+ <div class="digital front" :class="'number' + frontText" />
60
+ <div class="digital back" :class="'number' + backText" />
61
+ </div>
62
+ </template>
63
+
64
+ <style scoped>
65
+ .M-FlipCard {
66
+ display: inline-block;
67
+ position: relative;
68
+ width: 36px;
69
+ height: 60px;
70
+ line-height: 60px;
71
+ border: solid 1px #222;
72
+ border-radius: 10px;
73
+ background: #fff;
74
+ font-size: 46px;
75
+ font-weight: 700;
76
+ color: #ec685c;
77
+ box-shadow: 0 0 6px rgba(0, 0, 0, 0.5);
78
+ text-align: center;
79
+ /* font-family: 'Helvetica Neue'; */
80
+ }
81
+
82
+ .M-FlipCard .digital:before,
83
+ .M-FlipCard .digital:after {
84
+ content: '';
85
+ position: absolute;
86
+ left: 0;
87
+ right: 0;
88
+ /* background: #000; */
89
+ background: #222;
90
+ overflow: hidden;
91
+ box-sizing: border-box;
92
+ }
93
+
94
+ .M-FlipCard .digital:before {
95
+ top: 0;
96
+ bottom: 50%;
97
+ border-radius: 10px 10px 0 0;
98
+ /* border-bottom: solid 1px #666; */
99
+ }
100
+
101
+ .M-FlipCard .digital:after {
102
+ top: 50%;
103
+ bottom: 0;
104
+ border-radius: 0 0 10px 10px;
105
+ line-height: 0;
106
+ }
107
+
108
+ /*向下翻*/
109
+ .M-FlipCard.down .front:before {
110
+ z-index: 3;
111
+ }
112
+
113
+ .M-FlipCard.down .back:after {
114
+ z-index: 2;
115
+ transform-origin: 50% 0%;
116
+ transform: perspective(160px) rotateX(180deg);
117
+ }
118
+
119
+ .M-FlipCard.down .front:after,
120
+ .M-FlipCard.down .back:before {
121
+ z-index: 1;
122
+ }
123
+
124
+ .M-FlipCard.down.go .front:before {
125
+ transform-origin: 50% 100%;
126
+ animation: frontFlipDown 0.6s ease-in-out both;
127
+ box-shadow: 0 -2px 6px rgba(255, 255, 255, 0.3);
128
+ backface-visibility: hidden;
129
+ }
130
+
131
+ .M-FlipCard.down.go .back:after {
132
+ animation: backFlipDown 0.6s ease-in-out both;
133
+ }
134
+
135
+ /*向上翻*/
136
+ .M-FlipCard.up .front:after {
137
+ z-index: 3;
138
+ }
139
+
140
+ .M-FlipCard.up .back:before {
141
+ z-index: 2;
142
+ transform-origin: 50% 100%;
143
+ transform: perspective(160px) rotateX(-180deg);
144
+ }
145
+
146
+ .M-FlipCard.up .front:before,
147
+ .M-FlipCard.up .back:after {
148
+ z-index: 1;
149
+ }
150
+
151
+ .M-FlipCard.up.go .front:after {
152
+ transform-origin: 50% 0;
153
+ animation: frontFlipUp 0.6s ease-in-out both;
154
+ box-shadow: 0 2px 6px rgba(255, 255, 255, 0.3);
155
+ backface-visibility: hidden;
156
+ }
157
+
158
+ .M-FlipCard.up.go .back:before {
159
+ animation: backFlipUp 0.6s ease-in-out both;
160
+ }
161
+
162
+ @keyframes frontFlipDown {
163
+ 0% {
164
+ transform: perspective(160px) rotateX(0deg);
165
+ }
166
+
167
+ 100% {
168
+ transform: perspective(160px) rotateX(-180deg);
169
+ }
170
+ }
171
+
172
+ @keyframes backFlipDown {
173
+ 0% {
174
+ transform: perspective(160px) rotateX(180deg);
175
+ }
176
+
177
+ 100% {
178
+ transform: perspective(160px) rotateX(0deg);
179
+ }
180
+ }
181
+
182
+ @keyframes frontFlipUp {
183
+ 0% {
184
+ transform: perspective(160px) rotateX(0deg);
185
+ }
186
+
187
+ 100% {
188
+ transform: perspective(160px) rotateX(180deg);
189
+ }
190
+ }
191
+
192
+ @keyframes backFlipUp {
193
+ 0% {
194
+ transform: perspective(160px) rotateX(-180deg);
195
+ }
196
+
197
+ 100% {
198
+ transform: perspective(160px) rotateX(0deg);
199
+ }
200
+ }
201
+
202
+ .M-FlipCard .number0:before,
203
+ .M-FlipCard .number0:after {
204
+ content: '0';
205
+ }
206
+
207
+ .M-FlipCard .number1:before,
208
+ .M-FlipCard .number1:after {
209
+ content: '1';
210
+ }
211
+
212
+ .M-FlipCard .number2:before,
213
+ .M-FlipCard .number2:after {
214
+ content: '2';
215
+ }
216
+
217
+ .M-FlipCard .number3:before,
218
+ .M-FlipCard .number3:after {
219
+ content: '3';
220
+ }
221
+
222
+ .M-FlipCard .number4:before,
223
+ .M-FlipCard .number4:after {
224
+ content: '4';
225
+ }
226
+
227
+ .M-FlipCard .number5:before,
228
+ .M-FlipCard .number5:after {
229
+ content: '5';
230
+ }
231
+
232
+ .M-FlipCard .number6:before,
233
+ .M-FlipCard .number6:after {
234
+ content: '6';
235
+ }
236
+
237
+ .M-FlipCard .number7:before,
238
+ .M-FlipCard .number7:after {
239
+ content: '7';
240
+ }
241
+
242
+ .M-FlipCard .number8:before,
243
+ .M-FlipCard .number8:after {
244
+ content: '8';
245
+ }
246
+
247
+ .M-FlipCard .number9:before,
248
+ .M-FlipCard .number9:after {
249
+ content: '9';
250
+ }
251
+ </style>
@@ -0,0 +1,4 @@
1
+ export interface FlipCardHandleInterface {
2
+ flipDown: (newFrontText: string | number, newBackText: string | number) => void;
3
+ flipUp: (newFrontText: string | number, newBackText: string | number) => void;
4
+ }
@@ -0,0 +1,113 @@
1
+ <script setup lang="ts">
2
+ import { ref, onMounted } from 'vue';
3
+ import FlipCard from '../FlipCard/flip-card.vue';
4
+ import type { FlipCardHandleInterface } from '../FlipCard/interfaces.ts';
5
+
6
+ const timer = ref<ReturnType<typeof setInterval> | null>(null);
7
+
8
+ const flipCardHour1Ref = ref<FlipCardHandleInterface | null>(null);
9
+ const flipCardHour2Ref = ref<FlipCardHandleInterface | null>(null);
10
+ const flipCardMinute1Ref = ref<FlipCardHandleInterface | null>(null);
11
+ const flipCardMinute2Ref = ref<FlipCardHandleInterface | null>(null);
12
+ const flipCardSecond1Ref = ref<FlipCardHandleInterface | null>(null);
13
+ const flipCardSecond2Ref = ref<FlipCardHandleInterface | null>(null);
14
+
15
+ const flipCards = [
16
+ flipCardHour1Ref,
17
+ flipCardHour2Ref,
18
+ flipCardMinute1Ref,
19
+ flipCardMinute2Ref,
20
+ flipCardSecond1Ref,
21
+ flipCardSecond2Ref
22
+ ];
23
+
24
+ onMounted(() => {
25
+ // 开始计时
26
+ const run = () => {
27
+ timer.value = setInterval(() => {
28
+ // 获取当前时间
29
+ const now = new Date();
30
+ const nowTimeStr = formatDate(new Date(now.getTime() - 1000), 'hhiiss');
31
+ const nextTimeStr = formatDate(now, 'hhiiss');
32
+ for (let i = 0; i < flipCards.length; i++) {
33
+ if (nowTimeStr[i] === nextTimeStr[i]) {
34
+ continue;
35
+ }
36
+ flipCards[i].value?.flipDown(nowTimeStr[i], nextTimeStr[i]);
37
+ }
38
+ }, 1000);
39
+ };
40
+ run();
41
+ });
42
+
43
+ // 正则格式化日期
44
+ const formatDate = (date: Date, dateFormat: string) => {
45
+ /* 单独格式化年份,根据y的字符数量输出年份
46
+ * 例如:yyyy => 2019
47
+ yy => 19
48
+ y => 9
49
+ */
50
+ const yearMatch = dateFormat.match(/(y+)/);
51
+ if (yearMatch) {
52
+ dateFormat = dateFormat.replace(yearMatch[0], (date.getFullYear() + '').slice(-yearMatch[0].length));
53
+ }
54
+ // 格式化月、日、时、分、秒
55
+ const formatMap: Record<string, number> = {
56
+ 'm+': date.getMonth() + 1,
57
+ 'd+': date.getDate(),
58
+ 'h+': date.getHours(),
59
+ 'i+': date.getMinutes(),
60
+ 's+': date.getSeconds()
61
+ };
62
+ for (const key in formatMap) {
63
+ const match = dateFormat.match(new RegExp(`(${key})`));
64
+ if (match) {
65
+ // 取出对应的值
66
+ const str = formatMap[key] + '';
67
+ /* 根据设置的格式,输出对应的字符
68
+ * 例如: 早上8时,hh => 08,h => 8
69
+ * 但是,当数字>=10时,无论格式为一位还是多位,不做截取,这是与年份格式化不一致的地方
70
+ * 例如: 下午15时,hh => 15, h => 15
71
+ */
72
+ dateFormat = dateFormat.replace(match[0], match[0].length === 1 ? str : str.padStart(2, '0'));
73
+ }
74
+ }
75
+
76
+ return dateFormat;
77
+ };
78
+
79
+ // 初始化
80
+ const now = new Date();
81
+ const initNowTimeStr = formatDate(new Date(now.getTime()), 'hhiiss');
82
+ </script>
83
+
84
+ <template>
85
+ <div className="FlipClock">
86
+ <FlipCard ref="flipCardHour1Ref" :init-front-text="initNowTimeStr[0]" />
87
+ <FlipCard ref="flipCardHour2Ref" :init-front-text="initNowTimeStr[1]" />
88
+ <em>:</em>
89
+ <FlipCard ref="flipCardMinute1Ref" :init-front-text="initNowTimeStr[2]" />
90
+ <FlipCard ref="flipCardMinute2Ref" :init-front-text="initNowTimeStr[3]" />
91
+ <em>:</em>
92
+ <FlipCard ref="flipCardSecond1Ref" :init-front-text="initNowTimeStr[4]" />
93
+ <FlipCard ref="flipCardSecond2Ref" :init-front-text="initNowTimeStr[5]" />
94
+ </div>
95
+ </template>
96
+
97
+ <style scoped>
98
+ .FlipClock {
99
+ text-align: center;
100
+ }
101
+
102
+ .FlipClock .M-FlipCard {
103
+ margin: 0 3px;
104
+ }
105
+
106
+ .FlipClock em {
107
+ display: inline-block;
108
+ line-height: 55px;
109
+ font-size: 42px;
110
+ font-style: normal;
111
+ vertical-align: top;
112
+ }
113
+ </style>