swordpass-ui 1.0.0

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 (330) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +37 -0
  3. package/lib/demo.html +10 -0
  4. package/lib/img/icon_found_img.c785c1b7.png +0 -0
  5. package/lib/sword-vue-ui.common.js +61402 -0
  6. package/lib/sword-vue-ui.css +1 -0
  7. package/lib/sword-vue-ui.umd.js +61412 -0
  8. package/lib/sword-vue-ui.umd.min.js +6 -0
  9. package/package.json +109 -0
  10. package/packages/AddQueryStrategy/index.js +7 -0
  11. package/packages/AddQueryStrategy/src/main.vue +236 -0
  12. package/packages/Autocomplete/index.js +7 -0
  13. package/packages/Autocomplete/src/main.vue +192 -0
  14. package/packages/Button/index.js +7 -0
  15. package/packages/Button/src/main.vue +90 -0
  16. package/packages/Cascader/index.js +7 -0
  17. package/packages/Cascader/src/main.vue +210 -0
  18. package/packages/Chart/index.js +7 -0
  19. package/packages/Chart/src/Chart.vue +831 -0
  20. package/packages/Checkbox/index.js +7 -0
  21. package/packages/Checkbox/src/main.vue +200 -0
  22. package/packages/Collapse/index.js +7 -0
  23. package/packages/Collapse/src/ClCollapse.vue +67 -0
  24. package/packages/Collapse/src/ClCollapseItem.vue +21 -0
  25. package/packages/CollapseItem/index.js +7 -0
  26. package/packages/CustomDialog/index.js +7 -0
  27. package/packages/CustomDialog/src/customDialog.js +99 -0
  28. package/packages/CustomDialog/src/main.vue +1944 -0
  29. package/packages/DataView/index.js +7 -0
  30. package/packages/DataView/src/DataView.vue +45 -0
  31. package/packages/Date/index.js +7 -0
  32. package/packages/Date/src/main.vue +180 -0
  33. package/packages/DatePicker/index.js +7 -0
  34. package/packages/DatePicker/src/main.vue +155 -0
  35. package/packages/Demension/index.js +7 -0
  36. package/packages/Demension/src/main.vue +379 -0
  37. package/packages/Dialog/index.js +7 -0
  38. package/packages/Dialog/src/main.vue +160 -0
  39. package/packages/Dictionary/index.js +7 -0
  40. package/packages/Dictionary/src/main.vue +204 -0
  41. package/packages/DimensionSelector/index.js +7 -0
  42. package/packages/DimensionSelector/src/main.vue +359 -0
  43. package/packages/DimensionSelectorInput/index.js +7 -0
  44. package/packages/DimensionSelectorInput/src/main.vue +79 -0
  45. package/packages/Divider/index.js +7 -0
  46. package/packages/Divider/src/main.vue +38 -0
  47. package/packages/Duration/index.js +7 -0
  48. package/packages/Duration/src/main.vue +172 -0
  49. package/packages/Editor/index.js +7 -0
  50. package/packages/Editor/src/main.vue +280 -0
  51. package/packages/Explain/index.js +7 -0
  52. package/packages/Explain/src/main.vue +55 -0
  53. package/packages/FieldTail/index.js +7 -0
  54. package/packages/FieldTail/src/main.vue +163 -0
  55. package/packages/File/index.js +7 -0
  56. package/packages/File/src/FileCard.vue +169 -0
  57. package/packages/File/src/FileList.vue +180 -0
  58. package/packages/File/src/FileTable.vue +223 -0
  59. package/packages/File/src/main.vue +467 -0
  60. package/packages/FileUpload/index.js +7 -0
  61. package/packages/FileUpload/src/main.vue +222 -0
  62. package/packages/FlowChart/index.js +7 -0
  63. package/packages/FlowChart/src/main.vue +386 -0
  64. package/packages/FormItem/index.js +7 -0
  65. package/packages/FormItem/src/main.vue +167 -0
  66. package/packages/Global/index.js +12 -0
  67. package/packages/Global/src/GlobalQuery.vue +200 -0
  68. package/packages/Global/src/GlobalValidate.vue +69 -0
  69. package/packages/Icon/index.js +7 -0
  70. package/packages/Icon/src/icons/ad.js +14 -0
  71. package/packages/Icon/src/icons/address-book.js +14 -0
  72. package/packages/Icon/src/icons/arrow.js +14 -0
  73. package/packages/Icon/src/icons/attachment.js +18 -0
  74. package/packages/Icon/src/icons/balance.js +14 -0
  75. package/packages/Icon/src/icons/ban.js +14 -0
  76. package/packages/Icon/src/icons/bell.js +14 -0
  77. package/packages/Icon/src/icons/block.js +26 -0
  78. package/packages/Icon/src/icons/book.js +14 -0
  79. package/packages/Icon/src/icons/bookmark.js +14 -0
  80. package/packages/Icon/src/icons/bug.js +22 -0
  81. package/packages/Icon/src/icons/bullhorn.js +14 -0
  82. package/packages/Icon/src/icons/calc.js +14 -0
  83. package/packages/Icon/src/icons/checkbox.js +14 -0
  84. package/packages/Icon/src/icons/circle.js +14 -0
  85. package/packages/Icon/src/icons/close.js +14 -0
  86. package/packages/Icon/src/icons/cloud-sun.js +14 -0
  87. package/packages/Icon/src/icons/coffee.js +14 -0
  88. package/packages/Icon/src/icons/component.js +14 -0
  89. package/packages/Icon/src/icons/compress.js +14 -0
  90. package/packages/Icon/src/icons/copyright.js +14 -0
  91. package/packages/Icon/src/icons/dialog.js +14 -0
  92. package/packages/Icon/src/icons/download.js +14 -0
  93. package/packages/Icon/src/icons/duration.js +14 -0
  94. package/packages/Icon/src/icons/excel.js +18 -0
  95. package/packages/Icon/src/icons/expand.js +14 -0
  96. package/packages/Icon/src/icons/export.js +21 -0
  97. package/packages/Icon/src/icons/eye-slash.js +14 -0
  98. package/packages/Icon/src/icons/eye.js +14 -0
  99. package/packages/Icon/src/icons/file.js +18 -0
  100. package/packages/Icon/src/icons/form.js +14 -0
  101. package/packages/Icon/src/icons/ganged.js +14 -0
  102. package/packages/Icon/src/icons/gaode.js +27 -0
  103. package/packages/Icon/src/icons/gift.js +14 -0
  104. package/packages/Icon/src/icons/home.js +14 -0
  105. package/packages/Icon/src/icons/image.js +14 -0
  106. package/packages/Icon/src/icons/import.js +18 -0
  107. package/packages/Icon/src/icons/index.js +67 -0
  108. package/packages/Icon/src/icons/info.js +21 -0
  109. package/packages/Icon/src/icons/laptop.js +14 -0
  110. package/packages/Icon/src/icons/line.js +34 -0
  111. package/packages/Icon/src/icons/lock.js +14 -0
  112. package/packages/Icon/src/icons/map.js +18 -0
  113. package/packages/Icon/src/icons/more.js +19 -0
  114. package/packages/Icon/src/icons/move.js +14 -0
  115. package/packages/Icon/src/icons/org.js +18 -0
  116. package/packages/Icon/src/icons/palette.js +14 -0
  117. package/packages/Icon/src/icons/plan.js +17 -0
  118. package/packages/Icon/src/icons/ppt.js +18 -0
  119. package/packages/Icon/src/icons/question.js +18 -0
  120. package/packages/Icon/src/icons/radio.js +14 -0
  121. package/packages/Icon/src/icons/refresh.js +14 -0
  122. package/packages/Icon/src/icons/search.js +14 -0
  123. package/packages/Icon/src/icons/select.js +14 -0
  124. package/packages/Icon/src/icons/setting.js +18 -0
  125. package/packages/Icon/src/icons/simple-collapse.js +18 -0
  126. package/packages/Icon/src/icons/simple-expand.js +14 -0
  127. package/packages/Icon/src/icons/sort.js +22 -0
  128. package/packages/Icon/src/icons/sword.js +26 -0
  129. package/packages/Icon/src/icons/table.js +14 -0
  130. package/packages/Icon/src/icons/time.js +14 -0
  131. package/packages/Icon/src/icons/tree.js +14 -0
  132. package/packages/Icon/src/icons/typography.js +18 -0
  133. package/packages/Icon/src/icons/upload.js +18 -0
  134. package/packages/Icon/src/icons/user.js +14 -0
  135. package/packages/Icon/src/icons/users.js +30 -0
  136. package/packages/Icon/src/icons/video.js +14 -0
  137. package/packages/Icon/src/icons/word.js +18 -0
  138. package/packages/Icon/src/main.vue +432 -0
  139. package/packages/Image/index.js +7 -0
  140. package/packages/Image/src/main.vue +66 -0
  141. package/packages/Input/index.js +7 -0
  142. package/packages/Input/src/main.vue +552 -0
  143. package/packages/JobSelector/index.js +7 -0
  144. package/packages/JobSelector/src/main.vue +339 -0
  145. package/packages/JobSelectorInput/index.js +7 -0
  146. package/packages/JobSelectorInput/src/main.vue +87 -0
  147. package/packages/Map/index.js +7 -0
  148. package/packages/Map/src/Map.vue +427 -0
  149. package/packages/Milepost/index.js +7 -0
  150. package/packages/Milepost/src/main.vue +45 -0
  151. package/packages/OnlineForm/index.js +7 -0
  152. package/packages/OnlineForm/src/Form.vue +359 -0
  153. package/packages/OrgPostDialog/index.js +7 -0
  154. package/packages/OrgPostDialog/src/main.vue +244 -0
  155. package/packages/OrgSelector/index.js +7 -0
  156. package/packages/OrgSelector/src/main.vue +493 -0
  157. package/packages/OrgSelectorInput/index.js +7 -0
  158. package/packages/OrgSelectorInput/src/OrgSelectorInput.vue +216 -0
  159. package/packages/PostSelector/index.js +7 -0
  160. package/packages/PostSelector/src/main.vue +463 -0
  161. package/packages/PostSelectorInput/index.js +7 -0
  162. package/packages/PostSelectorInput/src/PostSelectorInput.vue +200 -0
  163. package/packages/Preview/index.js +7 -0
  164. package/packages/Preview/src/FillPage.vue +311 -0
  165. package/packages/Preview/src/FrameViewer.vue +135 -0
  166. package/packages/Preview/src/Loading.vue +126 -0
  167. package/packages/Preview/src/PdfViewer.vue +125 -0
  168. package/packages/Preview/src/TextViewer.vue +99 -0
  169. package/packages/Preview/src/main.vue +242 -0
  170. package/packages/Preview/src/watermark.js +124 -0
  171. package/packages/ProcessRecord/index.js +7 -0
  172. package/packages/ProcessRecord/src/main.vue +392 -0
  173. package/packages/Qrcode/index.js +7 -0
  174. package/packages/Qrcode/src/Qrcode.vue +105 -0
  175. package/packages/QuerySqlPreview/index.js +7 -0
  176. package/packages/QuerySqlPreview/src/QuerySqlPreview.vue +163 -0
  177. package/packages/Radio/index.js +7 -0
  178. package/packages/Radio/src/main.vue +172 -0
  179. package/packages/Rate/index.js +7 -0
  180. package/packages/Rate/src/main.vue +89 -0
  181. package/packages/ReadonlyInput/index.js +7 -0
  182. package/packages/ReadonlyInput/src/main.vue +92 -0
  183. package/packages/RelevantFlow/index.js +7 -0
  184. package/packages/RelevantFlow/src/main.vue +547 -0
  185. package/packages/RelevantFlow/src/relevantFlow.js +28 -0
  186. package/packages/RoleSelector/index.js +7 -0
  187. package/packages/RoleSelector/src/main.vue +358 -0
  188. package/packages/RoleSelectorInput/index.js +7 -0
  189. package/packages/RoleSelectorInput/src/main.vue +84 -0
  190. package/packages/SaveButton/index.js +7 -0
  191. package/packages/SaveButton/src/main.vue +73 -0
  192. package/packages/Select/index.js +7 -0
  193. package/packages/Select/src/main.vue +330 -0
  194. package/packages/SelectTree/index.js +7 -0
  195. package/packages/SelectTree/src/SelectTree.vue +352 -0
  196. package/packages/Selector/index.js +7 -0
  197. package/packages/Selector/src/main.vue +617 -0
  198. package/packages/SidebarDialog/index.js +7 -0
  199. package/packages/SidebarDialog/src/main.vue +156 -0
  200. package/packages/Slider/index.js +7 -0
  201. package/packages/Slider/src/main.vue +84 -0
  202. package/packages/Step/index.js +7 -0
  203. package/packages/StepLayout/index.js +7 -0
  204. package/packages/Steps/index.js +7 -0
  205. package/packages/Steps/src/Step.vue +122 -0
  206. package/packages/Steps/src/StepLayout.vue +35 -0
  207. package/packages/Steps/src/Steps.vue +65 -0
  208. package/packages/Subtable/index.js +33 -0
  209. package/packages/Subtable/src/SubDialog.vue +1926 -0
  210. package/packages/Subtable/src/SubExportDialog.vue +115 -0
  211. package/packages/Subtable/src/SubImportDialog.vue +316 -0
  212. package/packages/Subtable/src/SubPagination.vue +112 -0
  213. package/packages/Subtable/src/SubtableBackfill.vue +83 -0
  214. package/packages/Subtable/src/dialog.js +42 -0
  215. package/packages/Switch/index.js +7 -0
  216. package/packages/Switch/src/main.vue +83 -0
  217. package/packages/Table/index.js +7 -0
  218. package/packages/Table/src/CustomColumn.vue +351 -0
  219. package/packages/Table/src/Table.vue +979 -0
  220. package/packages/TableColumn/index.js +7 -0
  221. package/packages/TableColumn/src/main.vue +177 -0
  222. package/packages/TableSearchField/index.js +7 -0
  223. package/packages/TableSearchField/src/main.vue +334 -0
  224. package/packages/TableSearchPanel/index.js +7 -0
  225. package/packages/TableSearchPanel/src/main.vue +149 -0
  226. package/packages/Tabs/index.js +7 -0
  227. package/packages/Tabs/src/Tabs.vue +140 -0
  228. package/packages/Tag/index.js +7 -0
  229. package/packages/Tag/src/main.vue +264 -0
  230. package/packages/TemplateBatchUpdate/index.js +7 -0
  231. package/packages/TemplateBatchUpdate/src/TemplateBatchUpdateDialog.vue +174 -0
  232. package/packages/TemplateForm/index.js +7 -0
  233. package/packages/TemplateForm/src/main.vue +645 -0
  234. package/packages/TemplateFormDialog/index.js +7 -0
  235. package/packages/TemplateFormDialog/src/main.vue +61 -0
  236. package/packages/TemplateImportResult/index.js +7 -0
  237. package/packages/TemplateImportResult/src/main.vue +158 -0
  238. package/packages/TemplatePreview/index.js +19 -0
  239. package/packages/TemplatePreview/src/TemplatePreview.vue +169 -0
  240. package/packages/TemplatePreview/src/TemplatePreviewFile.vue +171 -0
  241. package/packages/TemplatePreview/src/TemplatePreviewImage.vue +83 -0
  242. package/packages/TemplateTaskCirculate/index.js +7 -0
  243. package/packages/TemplateTaskCirculate/src/main.vue +238 -0
  244. package/packages/Text/index.js +7 -0
  245. package/packages/Text/src/main.vue +57 -0
  246. package/packages/TimePicker/index.js +7 -0
  247. package/packages/TimePicker/src/main.vue +139 -0
  248. package/packages/TimeSelect/index.js +7 -0
  249. package/packages/TimeSelect/src/main.vue +96 -0
  250. package/packages/Tree/index.js +7 -0
  251. package/packages/Tree/src/main.vue +439 -0
  252. package/packages/TreeDialog/index.js +7 -0
  253. package/packages/TreeDialog/src/main.vue +293 -0
  254. package/packages/TreeListDialog/index.js +7 -0
  255. package/packages/TreeListDialog/src/main.vue +219 -0
  256. package/packages/Typography/index.js +8 -0
  257. package/packages/Typography/src/create-header.js +72 -0
  258. package/packages/UserDialog/index.js +7 -0
  259. package/packages/UserDialog/src/main.vue +250 -0
  260. package/packages/UserSelector/index.js +7 -0
  261. package/packages/UserSelector/src/main.vue +746 -0
  262. package/packages/UserSelectorInput/index.js +7 -0
  263. package/packages/UserSelectorInput/src/main.vue +319 -0
  264. package/packages/picture/index.js +7 -0
  265. package/packages/picture/src/main.vue +530 -0
  266. package/packages/plugins/Echarts.js +30 -0
  267. package/packages/plugins/Map.js +29 -0
  268. package/packages/plugins/Preview.js +49 -0
  269. package/packages/plugins/Qrcode.js +7 -0
  270. package/packages/plugins/XLSX.js +7 -0
  271. package/packages/plugins/wangeditor.js +19 -0
  272. package/src/assets/icon_found_img.png +0 -0
  273. package/src/assets/table-no-data.png +0 -0
  274. package/src/directive/badge.js +53 -0
  275. package/src/directive/copy.js +47 -0
  276. package/src/directive/ellipsis.js +6 -0
  277. package/src/directive/expandClick.js +23 -0
  278. package/src/directive/express.js +86 -0
  279. package/src/directive/form.js +122 -0
  280. package/src/directive/format.js +24 -0
  281. package/src/directive/formulas.js +708 -0
  282. package/src/directive/index.js +42 -0
  283. package/src/directive/permissionLine.js +59 -0
  284. package/src/directive/permissionLineLable.js +56 -0
  285. package/src/directive/permit.js +23 -0
  286. package/src/directive/popconfirm.js +86 -0
  287. package/src/directive/relatedQuery.js +61 -0
  288. package/src/directive/resize.js +18 -0
  289. package/src/directive/subSort.js +18 -0
  290. package/src/directive/tableDrag.js +25 -0
  291. package/src/directive/tooltip.js +37 -0
  292. package/src/filter/computerSize.js +23 -0
  293. package/src/filter/dateFormat.js +10 -0
  294. package/src/filter/index.js +10 -0
  295. package/src/index.js +267 -0
  296. package/src/locale/format.js +44 -0
  297. package/src/locale/index.js +48 -0
  298. package/src/locale/lang/en.js +59 -0
  299. package/src/locale/lang/zh-CN.js +58 -0
  300. package/src/locale/lang/zh-TW.js +57 -0
  301. package/src/locale/validate/dict.js +223 -0
  302. package/src/math.js +270 -0
  303. package/src/mixins/emitter.js +33 -0
  304. package/src/mixins/form.js +25 -0
  305. package/src/mixins/formDataUpdate.js +32 -0
  306. package/src/mixins/ganged.js +126 -0
  307. package/src/mixins/inputName.js +30 -0
  308. package/src/mixins/linkage.js +403 -0
  309. package/src/mixins/locale.js +9 -0
  310. package/src/mixins/mobileMode.js +27 -0
  311. package/src/mixins/onlineHottable.js +105 -0
  312. package/src/mixins/onlineSubtable.js +468 -0
  313. package/src/mixins/permission.js +84 -0
  314. package/src/mixins/querySqlPreview.js +747 -0
  315. package/src/mixins/regionValidator.js +70 -0
  316. package/src/mixins/script.js +35 -0
  317. package/src/mixins/templatePreview.js +3673 -0
  318. package/src/service.js +336 -0
  319. package/src/services/CustomQuery.js +199 -0
  320. package/src/services/SubPagination.js +132 -0
  321. package/src/styles/index.scss +7 -0
  322. package/src/styles/selector.scss +127 -0
  323. package/src/styles/variables.scss +71 -0
  324. package/src/util/base64.js +21 -0
  325. package/src/util/brower.js +15 -0
  326. package/src/util/clone.js +61 -0
  327. package/src/util/path.js +4 -0
  328. package/src/util/request.js +14 -0
  329. package/src/utils.js +1205 -0
  330. package/src/validate.js +184 -0
@@ -0,0 +1,53 @@
1
+ import Vue from 'vue'
2
+
3
+ const SUCCESS = '#72c140'
4
+ const ERROR = '#ed5b56'
5
+ const WARNING = '#f0af41'
6
+ const INFO = '#4091f7'
7
+ const HEIGHT = 20
8
+
9
+ export default function(el, binding) {
10
+ const { modifiers, value } = binding
11
+ if (
12
+ value !== null &&
13
+ value !== undefined &&
14
+ value.constructor == Number &&
15
+ value <= 0
16
+ ) {
17
+ if (el.flag) {
18
+ el.removeChild(el.lastChild)
19
+ el.flag = false
20
+ }
21
+ return
22
+ }
23
+ const modifiersKey = Object.keys(modifiers)
24
+ let isDot = modifiersKey.includes('dot')
25
+ let backgroundColor = ''
26
+ if (modifiersKey.includes('success')) {
27
+ backgroundColor = SUCCESS
28
+ } else if (modifiersKey.includes('warning')) {
29
+ backgroundColor = WARNING
30
+ } else if (modifiersKey.includes('info')) {
31
+ backgroundColor = INFO
32
+ } else {
33
+ backgroundColor = ERROR
34
+ }
35
+
36
+ const targetTemplate = isDot
37
+ ? `<div style="border:1px solid #fff;position:absolute;top:-5px;right:-5px;height:10px;width:10px;border-radius:50%;background:${backgroundColor}"></div>`
38
+ : `<div style="border:1px solid #fff;background:${backgroundColor};position:absolute;top:-${HEIGHT /
39
+ 2}px;right:-${HEIGHT /
40
+ 2}px;height:${HEIGHT}px;min-width:${HEIGHT}px;border-radius:${HEIGHT /
41
+ 2}px;text-align:center;line-height:${HEIGHT}px;color:#fff;padding:0 5px;">${value}</div>`
42
+
43
+ el.style.position = el.style.position || 'relative'
44
+ const badge = Vue.extend({
45
+ template: targetTemplate,
46
+ })
47
+ const component = new badge().$mount().$el
48
+ if (el.flag) {
49
+ el.removeChild(el.lastChild)
50
+ }
51
+ el.appendChild(component)
52
+ el.flag = true
53
+ }
@@ -0,0 +1,47 @@
1
+ import { Message } from 'element-ui'
2
+
3
+ export default {
4
+ bind(el, binding) {
5
+ // 双击触发复制
6
+ if (binding.modifiers.dblclick) {
7
+ el.addEventListener('dblclick', () => handleClick(el.innerText))
8
+ el.style.cursor = 'copy'
9
+ }
10
+ // 点击icon触发复制
11
+ else if (binding.modifiers.icon) {
12
+ if (el.hasIcon) return
13
+ const iconElement = document.createElement('i')
14
+ iconElement.setAttribute('class', 'el-icon-document-copy')
15
+ iconElement.setAttribute('style', 'margin-left:5px')
16
+ el.appendChild(iconElement)
17
+ el.hasIcon = true
18
+ iconElement.addEventListener('click', () => handleClick(el.innerText))
19
+ iconElement.style.cursor = 'copy'
20
+ }
21
+ // 单击触发复制
22
+ else {
23
+ el.addEventListener('click', () => handleClick(el.innerText))
24
+ el.style.cursor = 'copy'
25
+ }
26
+ },
27
+ }
28
+
29
+ function handleClick(text) {
30
+ // 创建元素
31
+ if (!document.getElementById('copyTarget')) {
32
+ const copyTarget = document.createElement('input')
33
+ copyTarget.setAttribute(
34
+ 'style',
35
+ 'position:fixed;top:0;left:0;opacity:0;z-index:-1000;'
36
+ )
37
+ copyTarget.setAttribute('id', 'copyTarget')
38
+ document.body.appendChild(copyTarget)
39
+ }
40
+
41
+ // 复制内容
42
+ const input = document.getElementById('copyTarget')
43
+ input.value = text
44
+ input.select()
45
+ document.execCommand('copy')
46
+ Message({ message: '复制成功', type: 'success' })
47
+ }
@@ -0,0 +1,6 @@
1
+ export default function(el, binding) {
2
+ binding.arg && (el.style.width = binding.arg + 'px')
3
+ el.style.whiteSpace = 'nowrap'
4
+ el.style.overflow = 'hidden'
5
+ el.style.textOverflow = 'ellipsis'
6
+ }
@@ -0,0 +1,23 @@
1
+ export default function(el, binding) {
2
+ const s = document.styleSheets[document.styleSheets.length - 1]
3
+ const DEFAULT = 10 // 默认向外扩展10px
4
+ const [top, right, bottom, left] =
5
+ (binding.expression && binding.expression.split(',')) || []
6
+ const ruleStr = `content:"";position:absolute;top:-${top ||
7
+ DEFAULT}px;bottom:-${bottom || DEFAULT}px;right:-${right ||
8
+ DEFAULT}px;left:-${left || DEFAULT}px;`
9
+ const classNameList = el.className.split(' ')
10
+ el.className = classNameList.includes('expand_click_range')
11
+ ? classNameList.join(' ')
12
+ : [...classNameList, 'expand_click_range'].join(' ')
13
+ el.style.position = el.style.position || 'relative'
14
+ if (s.insertRule) {
15
+ s.insertRule(
16
+ '.expand_click_range::before' + '{' + ruleStr + '}',
17
+ s.cssRules.length
18
+ )
19
+ } else {
20
+ /* IE */
21
+ s.addRule('.expand_click_range::before', ruleStr, -1)
22
+ }
23
+ }
@@ -0,0 +1,86 @@
1
+ import utils from '@/utils.js'
2
+ import FormMath from '@/math.js'
3
+
4
+ // 判断输入框是否作为计算字段,是则添加监听
5
+ export default {
6
+ componentUpdated: function(el, binding, vnode) {
7
+ const inst = vnode.context
8
+ if (!inst.$vnode.data.model) {
9
+ return
10
+ }
11
+ let elAttr = inst.$vnode.data.model.expression
12
+
13
+ if (
14
+ inst.$vnode &&
15
+ inst.$vnode.componentOptions &&
16
+ inst.$vnode.componentOptions.propsData &&
17
+ inst.$vnode.componentOptions.propsData.modelExpression
18
+ ) {
19
+ elAttr = inst.$vnode.componentOptions.propsData.modelExpression
20
+ }
21
+
22
+ if (elAttr && !inst._expressInit) {
23
+ inst._expressInit = true
24
+ // 子表每一行数据作用域所在的dom元素
25
+ let { subScopeEl, subname } = utils.getSubScopeElAndIndex(el)
26
+ let aliasElAttr = null
27
+ // 子表数据,需要找到配置了data-subname的元素
28
+ if (subScopeEl) {
29
+ if (!subname) {
30
+ throw '无法获取到当前子表前缀'
31
+ }
32
+ const elAttrAry = elAttr.split('.'),
33
+ elAttrArySize = elAttrAry.length
34
+ if (elAttrArySize < 1) {
35
+ throw `子表中的数据绑定表达式${elAttr}错误`
36
+ }
37
+ aliasElAttr = `${subname}.${elAttrAry[elAttrArySize - 1]}`
38
+ }
39
+ const p = utils.getOnlineFormInstance(inst)
40
+ if (
41
+ p.watchMap &&
42
+ (p.watchMap.has(elAttr) || p.watchMap.has(aliasElAttr))
43
+ ) {
44
+ if (!inst._watchers.some((m) => m.expression === 'inputVal')) {
45
+ inst.$watch(
46
+ 'inputVal',
47
+ function(newVal, oldVal) {
48
+ if (newVal !== oldVal) {
49
+ const elAttrExpList = p.watchMap.get(elAttr) || []
50
+ const aliasElAttrExpList = p.watchMap.get(aliasElAttr) || []
51
+ const unionExpList = elAttrExpList.concat(aliasElAttrExpList)
52
+ const attrExpObj = {}
53
+ unionExpList.forEach((item) => {
54
+ let result = 0
55
+ const t = item.target
56
+ const targetList = attrExpObj[t] || []
57
+ if (targetList.indexOf(item.exp) < 0) {
58
+ targetList.push(item.exp)
59
+ attrExpObj[t] = targetList
60
+ if (subScopeEl && t.split('.').length == 2) {
61
+ const index = subScopeEl.dataset['index']
62
+ if (index === undefined) {
63
+ throw '获取不到当前子表行的索引,无法完成计算.'
64
+ }
65
+ result = FormMath.calcSubExpValue(
66
+ item.exp,
67
+ p,
68
+ subname,
69
+ index
70
+ )
71
+ p.$emit(t, { result, index })
72
+ } else {
73
+ result = FormMath.calcExpValue(item.exp, p)
74
+ p.$emit(t, { result })
75
+ }
76
+ }
77
+ })
78
+ }
79
+ },
80
+ { immediate: true }
81
+ )
82
+ }
83
+ }
84
+ }
85
+ },
86
+ }
@@ -0,0 +1,122 @@
1
+ // 广播事件发送到指定componentName的组件
2
+ function broadcast(componentName, eventName, params) {
3
+ this.$children.forEach((child) => {
4
+ var name = child.$options.componentName
5
+
6
+ if (name === componentName) {
7
+ child.$emit.apply(child, [eventName].concat(params))
8
+ } else {
9
+ broadcast.apply(child, [componentName, eventName].concat([params]))
10
+ }
11
+ })
12
+ }
13
+
14
+ // 广播事件发送到指定componentGroup的组件
15
+ function broadcastGroup(componentGroup, eventName, params) {
16
+ this.$children.forEach((child) => {
17
+ var name = child.$options.componentGroup
18
+
19
+ if (name === componentGroup) {
20
+ child.$emit.apply(child, [eventName].concat(params))
21
+ } else {
22
+ broadcastGroup.apply(child, [componentGroup, eventName].concat([params]))
23
+ }
24
+ })
25
+ }
26
+
27
+ function setFormExtend(el, binding) {
28
+ // 在注入的elForm对象上挂载表单扩展属性
29
+ const elFormInst = el.__vue__
30
+ if (elFormInst && binding.value) {
31
+ elFormInst.$nextTick(() => {
32
+ broadcast.apply(elFormInst, [
33
+ 'ClFormItem',
34
+ 'formExtend:update',
35
+ binding.value,
36
+ ])
37
+ broadcast.apply(elFormInst, [
38
+ 'ClReadonlyInput',
39
+ 'formExtend:update',
40
+ binding.value,
41
+ ])
42
+ broadcastGroup.apply(elFormInst, [
43
+ 'ClFormInputs',
44
+ 'formExtend:update',
45
+ binding.value,
46
+ ])
47
+ })
48
+ }
49
+ }
50
+
51
+ // 表单指令,会在表单的vue实例上添加一个map,用以存放数学运算的表达式
52
+ export default {
53
+ bind: function(el, binding, vnode) {
54
+ // 修正vee-validate中对于元素上的aria-invalid属性更新的问题
55
+ const judgeAriaInvalid = (fields) => {
56
+ if (!fields || fields.length == 0) {
57
+ return
58
+ }
59
+
60
+ const fieldInst = fields.items[0]
61
+ const includes = function(collection, item) {
62
+ return collection.indexOf(item) !== -1
63
+ }
64
+ const isCheckboxOrRadioInput = function(el) {
65
+ return includes(['radio', 'checkbox'], el.type)
66
+ }
67
+ const isCallable = function(func) {
68
+ return typeof func === 'function'
69
+ }
70
+ Object.getPrototypeOf(
71
+ fieldInst
72
+ ).constructor.prototype.updateAriaAttrs = function updateAriaAttrs() {
73
+ var this$1 = this
74
+
75
+ if (!this.aria || !this.el || !isCallable(this.el.setAttribute)) {
76
+ return
77
+ }
78
+
79
+ var applyAriaAttrs = function(el) {
80
+ el.setAttribute('aria-required', this$1.isRequired ? 'true' : 'false')
81
+ el.setAttribute(
82
+ 'aria-invalid',
83
+ this$1.flags.invalid ? 'true' : 'false'
84
+ )
85
+ // 组件初次加载时,既不显示验证失败也不显示验证成功
86
+ if (this$1.flags.invalid == null) {
87
+ el.removeAttribute('aria-invalid')
88
+ }
89
+ }
90
+
91
+ if (!isCheckboxOrRadioInput(this.el)) {
92
+ applyAriaAttrs(this.el)
93
+ return
94
+ }
95
+
96
+ var els = document.querySelectorAll(
97
+ 'input[name="' + this.el.name + '"]'
98
+ )
99
+ window.toArray(els).forEach(applyAriaAttrs)
100
+ }
101
+ }
102
+
103
+ const inst = vnode.context
104
+
105
+ inst.$root.$validator && judgeAriaInvalid(inst.$root.$validator.fields)
106
+ if (inst && !inst.hasOwnProperty('watchMap')) {
107
+ inst['watchMap'] = new Map()
108
+ inst.$watch(
109
+ 'data',
110
+ function() {
111
+ inst.$emit('updateData')
112
+ },
113
+ { deep: true }
114
+ )
115
+ }
116
+
117
+ setFormExtend(el, binding)
118
+ },
119
+ update: function(el, binding) {
120
+ setFormExtend(el, binding)
121
+ },
122
+ }
@@ -0,0 +1,24 @@
1
+ export default function(el, binding) {
2
+ const { value, modifiers } = binding
3
+ if (!value) return
4
+ let formatValue = value
5
+ if (modifiers.toFixed) {
6
+ formatValue = value.toFixed(2)
7
+ }
8
+ if (modifiers.price) {
9
+ formatValue = formatNumber(formatValue)
10
+ }
11
+ el.innerText = formatValue
12
+ }
13
+
14
+ function formatNumber(num) {
15
+ num += ''
16
+ let strs = num.split('.')
17
+ let x1 = strs[0]
18
+ let x2 = strs.length > 1 ? '.' + strs[1] : ''
19
+ var rgx = /(\d+)(\d{3})/
20
+ while (rgx.test(x1)) {
21
+ x1 = x1.replace(rgx, '$1' + ',' + '$2')
22
+ }
23
+ return x1 + x2
24
+ }