@lambo-design/shared 1.0.0-beta.31 → 1.0.0-beta.310

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 (235) hide show
  1. package/config/config.js +20 -3
  2. package/config/index.js +7 -2
  3. package/config/locale.js +61 -0
  4. package/config/themes/atrovirens/atrovirens.css +589 -0
  5. package/config/themes/atrovirens/atrovirens.css.map +1 -0
  6. package/config/themes/atrovirens/atrovirens.less +680 -0
  7. package/config/themes/atrovirens/var.less +688 -0
  8. package/config/themes/blue/blue.css +589 -0
  9. package/config/themes/blue/blue.css.map +1 -0
  10. package/config/themes/blue/blue.less +683 -0
  11. package/config/themes/blue/var.less +691 -0
  12. package/config/themes/blue-white/blue-white.css +589 -0
  13. package/config/themes/blue-white/blue-white.css.map +1 -0
  14. package/config/themes/blue-white/blue-white.less +684 -0
  15. package/config/themes/blue-white/var.less +690 -0
  16. package/config/themes/blue-white-big/blue-white-big.css +589 -0
  17. package/config/themes/blue-white-big/blue-white-big.css.map +1 -0
  18. package/config/themes/blue-white-big/blue-white-big.less +684 -0
  19. package/config/themes/blue-white-big/var.less +690 -0
  20. package/config/themes/blue-white-tight/blue-white-tight.css +590 -0
  21. package/config/themes/blue-white-tight/blue-white-tight.css.map +1 -0
  22. package/config/themes/blue-white-tight/blue-white-tight.less +684 -0
  23. package/config/themes/blue-white-tight/var.less +692 -0
  24. package/config/themes/canglan/canglan.css +588 -0
  25. package/config/themes/canglan/canglan.css.map +1 -0
  26. package/config/themes/canglan/canglan.less +681 -0
  27. package/config/themes/canglan/var.less +692 -0
  28. package/config/themes/cuiwei/cuiwei.css +589 -0
  29. package/config/themes/cuiwei/cuiwei.css.map +1 -0
  30. package/config/themes/cuiwei/cuiwei.less +681 -0
  31. package/config/themes/cuiwei/var.less +690 -0
  32. package/config/themes/danqing/danqing.css +589 -0
  33. package/config/themes/danqing/danqing.css.map +1 -0
  34. package/config/themes/danqing/danqing.less +681 -0
  35. package/config/themes/danqing/danqing.wxss +576 -0
  36. package/config/themes/danqing/var.less +695 -0
  37. package/config/themes/deep/deep.css +589 -0
  38. package/config/themes/deep/deep.css.map +1 -0
  39. package/config/themes/deep/deep.less +681 -0
  40. package/config/themes/deep/var.less +693 -0
  41. package/config/themes/default/default.css +403 -57
  42. package/config/themes/default/default.css.map +1 -1
  43. package/config/themes/default/default.less +380 -16
  44. package/config/themes/default/var.less +389 -11
  45. package/config/themes/eap/eap.css +589 -0
  46. package/config/themes/eap/eap.css.map +1 -0
  47. package/config/themes/eap/eap.less +684 -0
  48. package/config/themes/eap/var.less +692 -0
  49. package/config/themes/gold/gold.css +589 -0
  50. package/config/themes/gold/gold.css.map +1 -0
  51. package/config/themes/gold/gold.less +684 -0
  52. package/config/themes/gold/var.less +385 -5
  53. package/config/themes/index.js +26 -4
  54. package/config/themes/lime/lime.css +589 -0
  55. package/config/themes/lime/lime.css.map +1 -0
  56. package/config/themes/lime/lime.less +684 -0
  57. package/config/themes/lime/var.less +384 -5
  58. package/config/themes/orange/orange.css +353 -7
  59. package/config/themes/orange/orange.css.map +1 -1
  60. package/config/themes/orange/orange.less +365 -0
  61. package/config/themes/orange/var.less +385 -5
  62. package/config/themes/red/red.css +353 -7
  63. package/config/themes/red/red.css.map +1 -1
  64. package/config/themes/red/red.less +365 -0
  65. package/config/themes/red/var.less +385 -5
  66. package/config/themes/sichuan/sichuan.css +589 -0
  67. package/config/themes/sichuan/sichuan.css.map +1 -0
  68. package/config/themes/sichuan/sichuan.less +684 -0
  69. package/config/themes/sichuan/var.less +690 -0
  70. package/config/themes/theme-atrovirens.js +571 -0
  71. package/config/themes/theme-blue.js +571 -0
  72. package/config/themes/theme-bw.js +571 -0
  73. package/config/themes/theme-bwb.js +571 -0
  74. package/config/themes/theme-bwt.js +572 -0
  75. package/config/themes/theme-canglan.js +573 -0
  76. package/config/themes/theme-cuiwei.js +573 -0
  77. package/config/themes/theme-danqing.js +574 -0
  78. package/config/themes/theme-deep.js +571 -0
  79. package/config/themes/theme-default.js +378 -60
  80. package/config/themes/theme-eap.js +571 -0
  81. package/config/themes/theme-gold.js +326 -8
  82. package/config/themes/theme-lime.js +326 -8
  83. package/config/themes/theme-orange.js +560 -29
  84. package/config/themes/theme-red.js +563 -33
  85. package/config/themes/theme-sichuan.js +571 -0
  86. package/config/themes/theme-white.js +571 -0
  87. package/config/themes/white/var.less +691 -0
  88. package/config/themes/white/white.css +589 -0
  89. package/config/themes/white/white.css.map +1 -0
  90. package/config/themes/white/white.less +684 -0
  91. package/directives/module/print.js +1 -0
  92. package/directives/module/vue-print-nb/README.md +63 -0
  93. package/directives/module/vue-print-nb/print.js +94 -0
  94. package/directives/module/vue-print-nb/printarea.js +532 -0
  95. package/index.js +7 -1
  96. package/nstyles/common.less +197 -0
  97. package/nstyles/components/404.less +46 -0
  98. package/nstyles/components/button.less +34 -0
  99. package/nstyles/components/date-picker.less +41 -0
  100. package/nstyles/components/drawer.less +20 -0
  101. package/nstyles/components/dropdown.less +18 -0
  102. package/nstyles/components/excel-flow.less +72 -0
  103. package/nstyles/components/form.less +313 -0
  104. package/nstyles/components/index.less +23 -0
  105. package/nstyles/components/layout/collect.less +10 -0
  106. package/nstyles/components/layout/detail-view.less +107 -0
  107. package/nstyles/components/layout/full-screen.less +7 -0
  108. package/nstyles/components/layout/index.less +7 -0
  109. package/nstyles/components/layout/other-menu.less +142 -0
  110. package/nstyles/components/layout/page-view.less +101 -0
  111. package/nstyles/components/layout/sider-trigger.less +41 -0
  112. package/nstyles/components/layout/tags-nav.less +113 -0
  113. package/nstyles/components/modal.less +90 -0
  114. package/nstyles/components/n-button.less +131 -0
  115. package/nstyles/components/n-image-preview.less +131 -0
  116. package/nstyles/components/n-model/index.less +19 -0
  117. package/nstyles/components/n-model/report-index.less +43 -0
  118. package/nstyles/components/n-panel.less +41 -0
  119. package/nstyles/components/n-picker.less +37 -0
  120. package/nstyles/components/n-sign.less +17 -0
  121. package/nstyles/components/n-tooltip.less +10 -0
  122. package/nstyles/components/panel.less +31 -0
  123. package/nstyles/components/select.less +3 -0
  124. package/nstyles/components/sign.less +27 -0
  125. package/nstyles/components/table.less +412 -0
  126. package/nstyles/components/tree.less +166 -0
  127. package/nstyles/components/upload.less +174 -0
  128. package/nstyles/index.less +5 -0
  129. package/nstyles/reset.less +73 -0
  130. package/nstyles/third/ag.less +206 -0
  131. package/nstyles/third/icons/sort-desc.svg +1 -0
  132. package/nstyles/third/icons/sort-up.svg +1 -0
  133. package/nstyles/third/icons/sorting.svg +1 -0
  134. package/nstyles/third/index.less +11 -0
  135. package/nstyles/third/view-design.less +378 -0
  136. package/nstyles/variables/base.less +143 -0
  137. package/nstyles/variables/index.less +4 -0
  138. package/nstyles/variables/theme/default/button.less +7 -0
  139. package/nstyles/variables/theme/default/common.less +60 -0
  140. package/nstyles/variables/theme/default/index.less +7 -0
  141. package/nstyles/variables/theme/default/layout.less +40 -0
  142. package/nstyles/variables/theme/default/table.less +37 -0
  143. package/nstyles/variables/theme/default/tag.less +3 -0
  144. package/nstyles/variables/theme/default/upload.less +3 -0
  145. package/nstyles/variables/theme/index.less +13 -0
  146. package/nstyles/variables/theme/lsv/button.less +7 -0
  147. package/nstyles/variables/theme/lsv/common.less +39 -0
  148. package/nstyles/variables/theme/lsv/index.less +5 -0
  149. package/nstyles/variables/theme/lsv/layout.less +21 -0
  150. package/nstyles/variables/theme/lsv/table.less +20 -0
  151. package/nstyles/variables/theme/lsv/tag.less +3 -0
  152. package/nstyles/variables/theme/small/button.less +7 -0
  153. package/nstyles/variables/theme/small/common.less +41 -0
  154. package/nstyles/variables/theme/small/index.less +5 -0
  155. package/nstyles/variables/theme/small/layout.less +21 -0
  156. package/nstyles/variables/theme/small/table.less +17 -0
  157. package/nstyles/variables/theme/small/tag.less +3 -0
  158. package/package.json +28 -7
  159. package/plugin/index.js +12 -0
  160. package/plugin/module/date-format.js +30 -0
  161. package/plugin/module/loading.js +26 -0
  162. package/plugin/module/warn-handler.js +11 -0
  163. package/styles/image/indicator-card-header.png +0 -0
  164. package/styles/image/inspur.png +0 -0
  165. package/styles/image/lan_navigator.png +0 -0
  166. package/styles/image/layout-header-bg-canglan.png +0 -0
  167. package/styles/image/layout-header-bg-cuiwei.png +0 -0
  168. package/styles/image/lv_navigator.png +0 -0
  169. package/utils/ajax/abort-controller.js +68 -0
  170. package/utils/ajax/cancel-token.js +69 -0
  171. package/utils/ajax/content-type.js +30 -0
  172. package/utils/ajax/headers.js +11 -0
  173. package/utils/ajax/interceptors.js +30 -5
  174. package/utils/ajax/sseFetchUtil.js +118 -0
  175. package/utils/ajax/throttle.js +46 -0
  176. package/utils/assist.js +155 -27
  177. package/utils/base64.js +126 -0
  178. package/utils/blob.js +47 -0
  179. package/utils/context-menu.js +65 -0
  180. package/utils/crypto/aes.js +23 -0
  181. package/utils/crypto/index.js +10 -0
  182. package/utils/crypto/rsa.js +23 -0
  183. package/utils/date.js +334 -305
  184. package/utils/dict/built-in-dict.js +20 -0
  185. package/utils/dict/index.js +191 -0
  186. package/utils/event.js +72 -0
  187. package/utils/excel.js +373 -241
  188. package/utils/file.js +19 -0
  189. package/utils/form/validate.js +29 -0
  190. package/utils/half-year.js +68 -0
  191. package/utils/index.js +37 -0
  192. package/utils/json.js +44 -0
  193. package/utils/locale/en-US.js +172 -0
  194. package/utils/locale/zh-CN.js +172 -0
  195. package/utils/lodop.js +5 -0
  196. package/utils/menu/index.js +292 -15
  197. package/utils/mime_type.js +67 -0
  198. package/utils/modelerUtil.js +4 -1
  199. package/utils/n/api.js +38 -0
  200. package/utils/n/date.js +57 -0
  201. package/utils/n/index.js +10 -0
  202. package/utils/n/is-type.js +176 -0
  203. package/utils/n/number.js +144 -0
  204. package/utils/n/permission-cache.js +11 -0
  205. package/utils/n/reuqest/axiosN.js +17 -0
  206. package/utils/n/reuqest/content-type.js +19 -0
  207. package/utils/n/reuqest/interceptors.js +95 -0
  208. package/utils/n/reuqest/url-params.js +12 -0
  209. package/utils/n/storage.js +51 -0
  210. package/utils/n/token.js +51 -0
  211. package/utils/n/user-cache.js +11 -0
  212. package/utils/n/user.js +34 -0
  213. package/utils/n/uuid.js +16 -0
  214. package/utils/n-generator-routers.js +208 -0
  215. package/utils/n-router.js +205 -0
  216. package/utils/n-theme.js +30 -0
  217. package/utils/number.js +72 -15
  218. package/utils/oss.js +57 -0
  219. package/utils/platform.js +824 -33
  220. package/utils/quarter.js +58 -0
  221. package/utils/storage.js +198 -0
  222. package/utils/style.js +24 -0
  223. package/utils/theme.js +98 -3
  224. package/utils/transfer-queue.js +7 -0
  225. package/utils/transform.js +205 -0
  226. package/utils/type.js +102 -0
  227. package/utils/util.js +795 -0
  228. package/utils/vForm.js +349 -0
  229. package/utils/validator.js +181 -0
  230. package/config/themes/gold/default.css +0 -243
  231. package/config/themes/gold/default.css.map +0 -1
  232. package/config/themes/gold/default.less +0 -320
  233. package/config/themes/lime/default.css +0 -243
  234. package/config/themes/lime/default.css.map +0 -1
  235. package/config/themes/lime/default.less +0 -320
package/utils/vForm.js ADDED
@@ -0,0 +1,349 @@
1
+ export function isNull(value) {
2
+ return (value === null) || (value === undefined);
3
+ }
4
+
5
+ export function isNotNull(value) {
6
+ return (value !== null) && (value !== undefined);
7
+ }
8
+
9
+ export function isEmptyStr(str) {
10
+ //return (str === undefined) || (!str) || (!/[^\s]/.test(str));
11
+ return (str === undefined) || (!str && (str !== 0) && (str !== '0')) || (!/[^\s]/.test(str));
12
+ }
13
+
14
+ export const generateId = function() {
15
+ return Math.floor(Math.random() * 100000 + Math.random() * 20000 + Math.random() * 5000);
16
+ };
17
+
18
+ export const deepClone = function (origin) {
19
+ if (origin === undefined) {
20
+ return undefined
21
+ }
22
+
23
+ return JSON.parse(JSON.stringify(origin))
24
+ }
25
+
26
+ export const overwriteObj = function(obj1, obj2) {
27
+ Object.keys(obj2).forEach(prop => {
28
+ obj1[prop] = obj2[prop]
29
+ })
30
+ }
31
+
32
+ /* 用Function对象实现eval函数功能 */
33
+ export const evalFn = function (fn, DSV = null, VFR = null) {
34
+ let f = new Function('DSV', 'VFR', 'return ' + fn);
35
+ return f(DSV, VFR);
36
+ };
37
+
38
+ export const addWindowResizeHandler = function (handler) {
39
+ let oldHandler = window.onresize
40
+ if (typeof window.onresize != 'function') {
41
+ window.onresize = handler
42
+ } else {
43
+ window.onresize = function () {
44
+ oldHandler()
45
+ handler()
46
+ }
47
+ }
48
+ }
49
+
50
+ const createStyleSheet = function() {
51
+ let head = document.head || document.getElementsByTagName('head')[0];
52
+ let style = document.createElement('style');
53
+ style.type = 'text/css';
54
+ head.appendChild(style);
55
+ return style.sheet;
56
+ }
57
+
58
+ export const insertCustomCssToHead = function (cssCode, formId = '') {
59
+ let head = document.getElementsByTagName('head')[0]
60
+ let oldStyle = document.getElementById('vform-custom-css')
61
+ if (!!oldStyle) {
62
+ head.removeChild(oldStyle) //先清除后插入!!
63
+ }
64
+ if (!!formId) {
65
+ oldStyle = document.getElementById('vform-custom-css' + '-' + formId)
66
+ !!oldStyle && head.removeChild(oldStyle) //先清除后插入!!
67
+ }
68
+
69
+ let newStyle = document.createElement('style')
70
+ newStyle.type = 'text/css'
71
+ newStyle.rel = 'stylesheet'
72
+ newStyle.id = !!formId ? 'vform-custom-css' + '-' + formId : 'vform-custom-css'
73
+ try {
74
+ newStyle.appendChild(document.createTextNode(cssCode))
75
+ } catch(ex) {
76
+ newStyle.styleSheet.cssText = cssCode
77
+ }
78
+
79
+ head.appendChild(newStyle)
80
+ }
81
+
82
+ export const insertGlobalFunctionsToHtml = function (functionsCode, formId = '') {
83
+ let bodyEle = document.getElementsByTagName('body')[0]
84
+ let oldScriptEle = document.getElementById('v_form_global_functions')
85
+ !!oldScriptEle && bodyEle.removeChild(oldScriptEle) //先清除后插入!!
86
+ if (!!formId) {
87
+ oldScriptEle = document.getElementById('v_form_global_functions' + '-' + formId)
88
+ !!oldScriptEle && bodyEle.removeChild(oldScriptEle) //先清除后插入!!
89
+ }
90
+
91
+ let newScriptEle = document.createElement('script')
92
+ newScriptEle.id = !!formId ? 'v_form_global_functions' + '-' + formId : 'v_form_global_functions'
93
+ newScriptEle.type = 'text/javascript'
94
+ newScriptEle.innerHTML = functionsCode
95
+ bodyEle.appendChild(newScriptEle)
96
+ }
97
+
98
+ export const optionExists = function(optionsObj, optionName) {
99
+ if (!optionsObj) {
100
+ return false
101
+ }
102
+
103
+ return Object.keys(optionsObj).indexOf(optionName) > -1
104
+ }
105
+
106
+ export const loadRemoteScript = function(srcPath, callback) { /*加载远程js,加载成功后执行回调函数*/
107
+ let sid = encodeURIComponent(srcPath)
108
+ let oldScriptEle = document.getElementById(sid)
109
+
110
+ if (!oldScriptEle) {
111
+ let s = document.createElement('script')
112
+ s.src = srcPath
113
+ s.id = sid
114
+ document.body.appendChild(s)
115
+
116
+ s.onload = s.onreadystatechange = function (_, isAbort) { /* 借鉴自ace.js */
117
+ if (isAbort || !s.readyState || s.readyState === "loaded" || s.readyState === "complete") {
118
+ s = s.onload = s.onreadystatechange = null
119
+ if (!isAbort) {
120
+ callback()
121
+ }
122
+ }
123
+ }
124
+ }
125
+ }
126
+
127
+ export function traverseFieldWidgets(widgetList, handler, parent = null) {
128
+ if (!widgetList) {
129
+ return
130
+ }
131
+
132
+ widgetList.forEach(w => {
133
+ if (w.formItemFlag) {
134
+ handler(w, parent)
135
+ } else if (w.type === 'grid') {
136
+ w.cols.forEach(col => {
137
+ traverseFieldWidgets(col.widgetList, handler, w)
138
+ })
139
+ } else if (w.type === 'table') {
140
+ w.rows.forEach(row => {
141
+ row.cols.forEach(cell => {
142
+ traverseFieldWidgets(cell.widgetList, handler, w)
143
+ })
144
+ })
145
+ } else if (w.type === 'tab') {
146
+ w.tabs.forEach(tab => {
147
+ traverseFieldWidgets(tab.widgetList, handler, w)
148
+ })
149
+ } else if (w.category === 'container') { //自定义容器
150
+ traverseFieldWidgets(w.widgetList, handler, w)
151
+ }
152
+ })
153
+ }
154
+
155
+ export function traverseContainerWidgets(widgetList, handler) {
156
+ if (!widgetList) {
157
+ return
158
+ }
159
+
160
+ widgetList.forEach(w => {
161
+ if (w.category === 'container') {
162
+ handler(w)
163
+ }
164
+
165
+ if (w.type === 'grid') {
166
+ w.cols.forEach(col => {
167
+ traverseContainerWidgets(col.widgetList, handler)
168
+ })
169
+ } else if (w.type === 'table') {
170
+ w.rows.forEach(row => {
171
+ row.cols.forEach(cell => {
172
+ traverseContainerWidgets(cell.widgetList, handler)
173
+ })
174
+ })
175
+ } else if (w.type === 'tab') {
176
+ w.tabs.forEach(tab => {
177
+ traverseContainerWidgets(tab.widgetList, handler)
178
+ })
179
+ } else if (w.category === 'container') { //自定义容器
180
+ traverseContainerWidgets(w.widgetList, handler)
181
+ }
182
+ })
183
+ }
184
+
185
+ export function traverseAllWidgets(widgetList, handler) {
186
+ if (!widgetList) {
187
+ return
188
+ }
189
+
190
+ widgetList.forEach(w => {
191
+ handler(w)
192
+
193
+ if (w.type === 'grid') {
194
+ w.cols.forEach(col => {
195
+ handler(col)
196
+ traverseAllWidgets(col.widgetList, handler)
197
+ })
198
+ } else if (w.type === 'table') {
199
+ w.rows.forEach(row => {
200
+ row.cols.forEach(cell => {
201
+ handler(cell)
202
+ traverseAllWidgets(cell.widgetList, handler)
203
+ })
204
+ })
205
+ } else if (w.type === 'tab') {
206
+ w.tabs.forEach(tab => {
207
+ traverseAllWidgets(tab.widgetList, handler)
208
+ })
209
+ } else if (w.type === 'sub-form') {
210
+ traverseAllWidgets(w.widgetList, handler)
211
+ } else if (w.category === 'container') { //自定义容器
212
+ traverseAllWidgets(w.widgetList, handler)
213
+ }
214
+ })
215
+ }
216
+
217
+ function handleWidgetForTraverse(widget, handler) {
218
+ if (!!widget.category) {
219
+ traverseFieldWidgetsOfContainer(widget, handler)
220
+ } else if (widget.formItemFlag) {
221
+ handler(widget)
222
+ }
223
+ }
224
+
225
+ /**
226
+ * 遍历容器内的字段组件
227
+ * @param con
228
+ * @param handler
229
+ */
230
+ export function traverseFieldWidgetsOfContainer(con, handler) {
231
+ if (con.type === 'grid') {
232
+ con.cols.forEach(col => {
233
+ col.widgetList.forEach(cw => {
234
+ handleWidgetForTraverse(cw, handler)
235
+ })
236
+ })
237
+ } else if (con.type === 'table') {
238
+ con.rows.forEach(row => {
239
+ row.cols.forEach(cell => {
240
+ cell.widgetList.forEach(cw => {
241
+ handleWidgetForTraverse(cw, handler)
242
+ })
243
+ })
244
+ })
245
+ } else if (con.type === 'tab') {
246
+ con.tabs.forEach(tab => {
247
+ tab.widgetList.forEach(cw => {
248
+ handleWidgetForTraverse(cw, handler)
249
+ })
250
+ })
251
+ } else if (con.type === 'sub-form') {
252
+ con.widgetList.forEach(cw => {
253
+ handleWidgetForTraverse(cw, handler)
254
+ })
255
+ } else if (con.category === 'container') { //自定义容器
256
+ con.widgetList.forEach(cw => {
257
+ handleWidgetForTraverse(cw, handler)
258
+ })
259
+ }
260
+ }
261
+
262
+ /**
263
+ * 获取所有字段组件
264
+ * @param widgetList
265
+ * @returns {[]}
266
+ */
267
+ export function getAllFieldWidgets(widgetList) {
268
+ if (!widgetList) {
269
+ return []
270
+ }
271
+
272
+ let result = []
273
+ // TODO 表单项formKey有没有影响 需不需要修改
274
+ let handlerFn = (w) => {
275
+ result.push({
276
+ type: w.type,
277
+ name: w.options.name || w.formKey,
278
+ field: w
279
+ })
280
+ }
281
+ traverseFieldWidgets(widgetList, handlerFn)
282
+
283
+ return result
284
+ }
285
+
286
+ /**
287
+ * 获取所有容器组件
288
+ * @param widgetList
289
+ * @returns {[]}
290
+ */
291
+ export function getAllContainerWidgets(widgetList) {
292
+ if (!widgetList) {
293
+ return []
294
+ }
295
+
296
+ let result = []
297
+ // TODO 表单项formKey有没有影响 需不需要修改
298
+ let handlerFn = (w) => {
299
+ result.push({
300
+ type: w.type,
301
+ name: w.options.name,
302
+ container: w
303
+ })
304
+ }
305
+ traverseContainerWidgets(widgetList, handlerFn)
306
+
307
+ return result
308
+ }
309
+
310
+
311
+ export function getQueryParam(variable) {
312
+ let query = window.location.search.substring(1);
313
+ let vars = query.split("&")
314
+ for (let i=0; i<vars.length; i++) {
315
+ let pair = vars[i].split("=")
316
+ if(pair[0] == variable) {
317
+ return pair[1]
318
+ }
319
+ }
320
+
321
+ return undefined;
322
+ }
323
+
324
+ export function getDefaultFormConfig() {
325
+ return {
326
+ modelName: 'formData',
327
+ refName: 'vForm',
328
+ rulesName: 'rules',
329
+ labelWidth: 80,
330
+ labelPosition: 'left',
331
+ size: '',
332
+ labelAlign: 'label-left-align',
333
+ cssCode: '',
334
+ customClass: [],
335
+ functions: '',
336
+ layoutType: 'PC',
337
+
338
+ onFormCreated: '',
339
+ onFormMounted: '',
340
+ onFormDataChange: '',
341
+ }
342
+ }
343
+
344
+ export function buildDefaultFormJson() {
345
+ return {
346
+ widgetList: [],
347
+ formConfig: deepClone( getDefaultFormConfig() )
348
+ }
349
+ }
@@ -0,0 +1,181 @@
1
+ /**
2
+ * 严格校验电话号码是否正确
3
+ * @param val
4
+ * @returns {boolean}
5
+ */
6
+ export function checkTel(val) {
7
+ let isPhone = /^([0-9]{3,4}-)?[0-9]{7,8}$/;
8
+ let isMob = /^((\+?86)|(\(\+86\)))?(13[0123456789][0-9]{8}|15[012356789][0-9]{8}|18[0123456789][0-9]{8}|14[57][0-9]{8}|17[678][0-9]{8})$/;
9
+ if (isMob.test(val) || isPhone.test(val)) {
10
+ return true;
11
+ } else {
12
+ return false;
13
+ }
14
+ }
15
+
16
+ /**
17
+ * 简单校验电话号码
18
+ * @param str
19
+ * @returns {boolean}
20
+ */
21
+ export const checkPhone = function (str) {
22
+ let reg = /^1[3456789]\d{9}$/
23
+ // ^1 以1开头
24
+ // [3456789] 第2位,使用原子表里的任意一个原子都可以
25
+ // \d{9}$ 第三位 朝后可以是任意数字 并且最后结尾必须是数字
26
+ if (reg.test(str)) {
27
+ return true
28
+ } else {
29
+ return false
30
+ }
31
+ }
32
+
33
+ /**
34
+ * 校验身份证号码
35
+ * @param idcard
36
+ * @returns {string}
37
+ */
38
+ export function checkIdCard(idcard) {
39
+ let Errors = new Array(
40
+ '验证通过!',
41
+ '身份证号码位数不对!',
42
+ '身份证号码出生日期超出范围或含有非法字符!',
43
+ '身份证号码校验错误!',
44
+ '身份证地区非法!',
45
+ )
46
+ let area = {
47
+ 11: '北京',
48
+ 12: '天津',
49
+ 13: '河北',
50
+ 14: '山西',
51
+ 15: '内蒙古',
52
+ 21: '辽宁',
53
+ 22: '吉林',
54
+ 23: '黑龙江',
55
+ 31: '上海',
56
+ 32: '江苏',
57
+ 33: '浙江',
58
+ 34: '安徽',
59
+ 35: '福建',
60
+ 36: '江西',
61
+ 37: '山东',
62
+ 41: '河南',
63
+ 42: '湖北',
64
+ 43: '湖南',
65
+ 44: '广东',
66
+ 45: '广西',
67
+ 46: '海南',
68
+ 50: '重庆',
69
+ 51: '四川',
70
+ 52: '贵州',
71
+ 53: '云南',
72
+ 54: '西藏',
73
+ 61: '陕西',
74
+ 62: '甘肃',
75
+ 63: '青海',
76
+ 64: '宁夏',
77
+ 65: '新疆',
78
+ 71: '台湾',
79
+ 81: '香港',
80
+ 82: '澳门',
81
+ 91: '国外',
82
+ }
83
+ let Y, JYM
84
+ let S, M, ereg
85
+ let idcard_array = new Array()
86
+ idcard_array = idcard.split('')
87
+ //地区检验
88
+ if (area[parseInt(idcard.substr(0, 2))] == null) return Errors[4]
89
+ //身份号码位数及格式检验
90
+ switch (idcard.length) {
91
+ case 15:
92
+ if (
93
+ (parseInt(idcard.substr(6, 2)) + 1900) % 4 == 0 ||
94
+ ((parseInt(idcard.substr(6, 2)) + 1900) % 100 == 0 &&
95
+ (parseInt(idcard.substr(6, 2)) + 1900) % 4 == 0)
96
+ ) {
97
+ ereg =
98
+ /^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/ //测试出生日期的合法性
99
+ } else {
100
+ ereg =
101
+ /^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/ //测试出生日期的合法性
102
+ }
103
+ if (ereg.test(idcard)) {
104
+ return Errors[0]
105
+ } else {
106
+ return Errors[2]
107
+ }
108
+ case 18:
109
+ if (
110
+ parseInt(idcard.substr(6, 4)) % 4 == 0 ||
111
+ (parseInt(idcard.substr(6, 4)) % 100 == 0 && parseInt(idcard.substr(6, 4)) % 4 == 0)
112
+ ) {
113
+ ereg =
114
+ /^[1-9][0-9]{5}(19|20)[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/ //闰年出生日期的合法性正则表达式
115
+ } else {
116
+ ereg =
117
+ /^[1-9][0-9]{5}(19|20)[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/ //平年出生日期的合法性正则表达式
118
+ }
119
+ if (ereg.test(idcard)) {
120
+ //测试出生日期的合法性
121
+ //计算校验位
122
+ S =
123
+ (parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7 +
124
+ (parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9 +
125
+ (parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10 +
126
+ (parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5 +
127
+ (parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8 +
128
+ (parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4 +
129
+ (parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2 +
130
+ parseInt(idcard_array[7]) * 1 +
131
+ parseInt(idcard_array[8]) * 6 +
132
+ parseInt(idcard_array[9]) * 3
133
+ Y = S % 11
134
+ M = 'F'
135
+ JYM = '10X98765432'
136
+ M = JYM.substr(Y, 1) //判断校验位
137
+ if (M == idcard_array[17]) return Errors[0] //检测ID的校验位
138
+ else return Errors[3]
139
+ } else return Errors[2]
140
+ default:
141
+ return Errors[1]
142
+ }
143
+ }
144
+
145
+ /**
146
+ *
147
+ * @param a
148
+ * @returns {string}
149
+ */
150
+ export function getBirthday(a) {
151
+ if (15 == a.length || 18 == a.length) {
152
+ let left = a.length - 12
153
+ let right = a.length - 4
154
+ let b = a.slice(left, right)
155
+ if (8 == b.length) {
156
+ return b.substring(0, 4) + '-' + b.substring(4, 6) + '-' + b.substring(6)
157
+ } else return '1970-01-01' //0;
158
+ } else return '1970-01-01' //1;
159
+ }
160
+
161
+ /**
162
+ * 校验车牌号
163
+ * @param str
164
+ * @returns {boolean}
165
+ */
166
+ export function checkVehicleNo(str) {
167
+ // 新能源车
168
+ const newReg =
169
+ /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z]-(([DF]((?![IO])[a-zA-Z0-9](?![IO]))[0-9]{4})|([0-9]{5}[DF]))$/
170
+
171
+ if (newReg.test(str)) {
172
+ return true
173
+ }
174
+
175
+ // 非新能源车
176
+ const reg =
177
+ /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z]-[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]$/
178
+
179
+ return reg.test(str)
180
+ }
181
+