eoss-mobiles 0.1.13

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 (285) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/README.md +28 -0
  3. package/lib/action-sheet.js +313 -0
  4. package/lib/button-group.js +421 -0
  5. package/lib/button.js +278 -0
  6. package/lib/calendar.js +301 -0
  7. package/lib/cascader.js +336 -0
  8. package/lib/cell.js +366 -0
  9. package/lib/checkbox.js +2170 -0
  10. package/lib/circle.js +299 -0
  11. package/lib/config/api.js +31 -0
  12. package/lib/count-down.js +299 -0
  13. package/lib/date.js +956 -0
  14. package/lib/empty.js +274 -0
  15. package/lib/eoss-mobile.common.js +15072 -0
  16. package/lib/field.js +440 -0
  17. package/lib/flow.js +5664 -0
  18. package/lib/form.js +714 -0
  19. package/lib/grid-item.js +274 -0
  20. package/lib/grid.js +317 -0
  21. package/lib/image-preview.js +325 -0
  22. package/lib/index.js +1 -0
  23. package/lib/list.js +315 -0
  24. package/lib/loading.js +279 -0
  25. package/lib/nav-bar.js +283 -0
  26. package/lib/pagination.js +323 -0
  27. package/lib/picker.js +2714 -0
  28. package/lib/popover.js +306 -0
  29. package/lib/popup.js +297 -0
  30. package/lib/radio.js +2137 -0
  31. package/lib/rate.js +300 -0
  32. package/lib/search.js +316 -0
  33. package/lib/selector.js +3496 -0
  34. package/lib/skeleton.js +277 -0
  35. package/lib/stepper.js +300 -0
  36. package/lib/switch.js +304 -0
  37. package/lib/tab.js +274 -0
  38. package/lib/table-column.js +2991 -0
  39. package/lib/table.js +2652 -0
  40. package/lib/tabs.js +315 -0
  41. package/lib/tag.js +281 -0
  42. package/lib/theme-chalk/action-sheet.css +0 -0
  43. package/lib/theme-chalk/base.css +1 -0
  44. package/lib/theme-chalk/button-group.css +1 -0
  45. package/lib/theme-chalk/button.css +1 -0
  46. package/lib/theme-chalk/calendar.css +1 -0
  47. package/lib/theme-chalk/cascader.css +1 -0
  48. package/lib/theme-chalk/cell.css +1 -0
  49. package/lib/theme-chalk/checkbox.css +1 -0
  50. package/lib/theme-chalk/circle.css +1 -0
  51. package/lib/theme-chalk/count-down.css +0 -0
  52. package/lib/theme-chalk/date.css +0 -0
  53. package/lib/theme-chalk/empty.css +0 -0
  54. package/lib/theme-chalk/field.css +1 -0
  55. package/lib/theme-chalk/flow.css +1 -0
  56. package/lib/theme-chalk/fonts/iconfont.scss +530 -0
  57. package/lib/theme-chalk/fonts/iconfont.ttf +0 -0
  58. package/lib/theme-chalk/fonts/iconfont.woff +0 -0
  59. package/lib/theme-chalk/form.css +0 -0
  60. package/lib/theme-chalk/grid-item.css +1 -0
  61. package/lib/theme-chalk/grid.css +0 -0
  62. package/lib/theme-chalk/icon.css +1 -0
  63. package/lib/theme-chalk/image-preview.css +0 -0
  64. package/lib/theme-chalk/index.css +1 -0
  65. package/lib/theme-chalk/list.css +0 -0
  66. package/lib/theme-chalk/loading.css +0 -0
  67. package/lib/theme-chalk/nav-bar.css +0 -0
  68. package/lib/theme-chalk/navbar.css +1 -0
  69. package/lib/theme-chalk/pagination.css +1 -0
  70. package/lib/theme-chalk/picker.css +1 -0
  71. package/lib/theme-chalk/popover.css +0 -0
  72. package/lib/theme-chalk/popup.css +0 -0
  73. package/lib/theme-chalk/radio.css +1 -0
  74. package/lib/theme-chalk/rate.css +0 -0
  75. package/lib/theme-chalk/search.css +0 -0
  76. package/lib/theme-chalk/selector.css +1 -0
  77. package/lib/theme-chalk/skeleton.css +0 -0
  78. package/lib/theme-chalk/stepper.css +1 -0
  79. package/lib/theme-chalk/switch.css +1 -0
  80. package/lib/theme-chalk/tab.css +0 -0
  81. package/lib/theme-chalk/table-column.css +0 -0
  82. package/lib/theme-chalk/table.css +1 -0
  83. package/lib/theme-chalk/tabs.css +1 -0
  84. package/lib/theme-chalk/tag.css +1 -0
  85. package/lib/theme-chalk/theme.css +0 -0
  86. package/lib/theme-chalk/tree.css +1 -0
  87. package/lib/theme-chalk/uploader.css +0 -0
  88. package/lib/uploader.js +307 -0
  89. package/lib/utils/axios.js +199 -0
  90. package/lib/utils/date-util.js +320 -0
  91. package/lib/utils/http.js +74 -0
  92. package/lib/utils/rules.js +21 -0
  93. package/lib/utils/store.js +24 -0
  94. package/lib/utils/util.js +1315 -0
  95. package/package.json +153 -0
  96. package/packages/action-sheet/index.js +5 -0
  97. package/packages/action-sheet/src/main.vue +32 -0
  98. package/packages/button/index.js +5 -0
  99. package/packages/button/src/main.vue +15 -0
  100. package/packages/button-group/index.js +5 -0
  101. package/packages/button-group/src/main.vue +80 -0
  102. package/packages/calendar/index.js +5 -0
  103. package/packages/calendar/src/main.vue +34 -0
  104. package/packages/cascader/index.js +5 -0
  105. package/packages/cascader/src/main.vue +40 -0
  106. package/packages/cell/index.js +5 -0
  107. package/packages/cell/src/main.vue +72 -0
  108. package/packages/checkbox/index.js +5 -0
  109. package/packages/checkbox/src/main.vue +149 -0
  110. package/packages/circle/index.js +5 -0
  111. package/packages/circle/src/main.vue +27 -0
  112. package/packages/count-down/index.js +5 -0
  113. package/packages/count-down/src/main.vue +27 -0
  114. package/packages/date/index.js +5 -0
  115. package/packages/date/src/date-time.vue +290 -0
  116. package/packages/date/src/main.vue +319 -0
  117. package/packages/empty/index.js +5 -0
  118. package/packages/empty/src/main.vue +16 -0
  119. package/packages/field/index.js +5 -0
  120. package/packages/field/src/main.vue +130 -0
  121. package/packages/flow/index.js +5 -0
  122. package/packages/flow/src/components/Handle.vue +1031 -0
  123. package/packages/flow/src/components/Message.vue +96 -0
  124. package/packages/flow/src/components/Opinion.vue +112 -0
  125. package/packages/flow/src/components/Reject.vue +202 -0
  126. package/packages/flow/src/components/StartFlow.vue +440 -0
  127. package/packages/flow/src/components/TaskRead.vue +237 -0
  128. package/packages/flow/src/main.vue +43 -0
  129. package/packages/form/index.js +5 -0
  130. package/packages/form/src/main.vue +158 -0
  131. package/packages/grid/index.js +5 -0
  132. package/packages/grid/src/main.vue +28 -0
  133. package/packages/grid-item/index.js +5 -0
  134. package/packages/grid-item/src/main.vue +16 -0
  135. package/packages/image-preview/index.js +5 -0
  136. package/packages/image-preview/src/main.vue +34 -0
  137. package/packages/list/index.js +5 -0
  138. package/packages/list/src/main.vue +32 -0
  139. package/packages/loading/index.js +5 -0
  140. package/packages/loading/src/main.vue +20 -0
  141. package/packages/nav-bar/index.js +5 -0
  142. package/packages/nav-bar/src/main.vue +16 -0
  143. package/packages/pagination/index.js +5 -0
  144. package/packages/pagination/src/main.vue +29 -0
  145. package/packages/picker/index.js +5 -0
  146. package/packages/picker/src/main.vue +500 -0
  147. package/packages/popover/index.js +5 -0
  148. package/packages/popover/src/main.vue +32 -0
  149. package/packages/popup/index.js +5 -0
  150. package/packages/popup/src/main.vue +27 -0
  151. package/packages/radio/index.js +5 -0
  152. package/packages/radio/src/main.vue +147 -0
  153. package/packages/rate/index.js +5 -0
  154. package/packages/rate/src/main.vue +27 -0
  155. package/packages/search/index.js +5 -0
  156. package/packages/search/src/main.vue +39 -0
  157. package/packages/selector/index.js +5 -0
  158. package/packages/selector/src/main.vue +77 -0
  159. package/packages/selector/src/selector-field.vue +225 -0
  160. package/packages/selector/src/selector-tree.vue +472 -0
  161. package/packages/selector/src/tree.vue +179 -0
  162. package/packages/skeleton/index.js +5 -0
  163. package/packages/skeleton/src/main.vue +17 -0
  164. package/packages/stepper/index.js +5 -0
  165. package/packages/stepper/src/main.vue +25 -0
  166. package/packages/switch/index.js +5 -0
  167. package/packages/switch/src/main.vue +29 -0
  168. package/packages/tab/index.js +5 -0
  169. package/packages/tab/src/main.vue +16 -0
  170. package/packages/table/index.js +5 -0
  171. package/packages/table/src/main.vue +830 -0
  172. package/packages/table-column/index.js +5 -0
  173. package/packages/table-column/src/main.vue +742 -0
  174. package/packages/table-column/src/mixins/table.js +12 -0
  175. package/packages/tabs/index.js +5 -0
  176. package/packages/tabs/src/main.vue +34 -0
  177. package/packages/tag/index.js +5 -0
  178. package/packages/tag/src/main.vue +16 -0
  179. package/packages/theme-chalk/README.md +33 -0
  180. package/packages/theme-chalk/lib/action-sheet.css +0 -0
  181. package/packages/theme-chalk/lib/base.css +1 -0
  182. package/packages/theme-chalk/lib/button-group.css +1 -0
  183. package/packages/theme-chalk/lib/button.css +1 -0
  184. package/packages/theme-chalk/lib/calendar.css +1 -0
  185. package/packages/theme-chalk/lib/cascader.css +1 -0
  186. package/packages/theme-chalk/lib/cell.css +1 -0
  187. package/packages/theme-chalk/lib/checkbox.css +1 -0
  188. package/packages/theme-chalk/lib/circle.css +1 -0
  189. package/packages/theme-chalk/lib/count-down.css +0 -0
  190. package/packages/theme-chalk/lib/date.css +0 -0
  191. package/packages/theme-chalk/lib/empty.css +0 -0
  192. package/packages/theme-chalk/lib/field.css +1 -0
  193. package/packages/theme-chalk/lib/flow.css +1 -0
  194. package/packages/theme-chalk/lib/fonts/iconfont.scss +530 -0
  195. package/packages/theme-chalk/lib/fonts/iconfont.ttf +0 -0
  196. package/packages/theme-chalk/lib/fonts/iconfont.woff +0 -0
  197. package/packages/theme-chalk/lib/form.css +0 -0
  198. package/packages/theme-chalk/lib/grid-item.css +1 -0
  199. package/packages/theme-chalk/lib/grid.css +0 -0
  200. package/packages/theme-chalk/lib/icon.css +1 -0
  201. package/packages/theme-chalk/lib/image-preview.css +0 -0
  202. package/packages/theme-chalk/lib/index.css +1 -0
  203. package/packages/theme-chalk/lib/list.css +0 -0
  204. package/packages/theme-chalk/lib/loading.css +0 -0
  205. package/packages/theme-chalk/lib/nav-bar.css +0 -0
  206. package/packages/theme-chalk/lib/navbar.css +1 -0
  207. package/packages/theme-chalk/lib/pagination.css +1 -0
  208. package/packages/theme-chalk/lib/picker.css +1 -0
  209. package/packages/theme-chalk/lib/popover.css +0 -0
  210. package/packages/theme-chalk/lib/popup.css +0 -0
  211. package/packages/theme-chalk/lib/radio.css +1 -0
  212. package/packages/theme-chalk/lib/rate.css +0 -0
  213. package/packages/theme-chalk/lib/search.css +0 -0
  214. package/packages/theme-chalk/lib/selector.css +1 -0
  215. package/packages/theme-chalk/lib/skeleton.css +0 -0
  216. package/packages/theme-chalk/lib/stepper.css +1 -0
  217. package/packages/theme-chalk/lib/switch.css +1 -0
  218. package/packages/theme-chalk/lib/tab.css +0 -0
  219. package/packages/theme-chalk/lib/table-column.css +0 -0
  220. package/packages/theme-chalk/lib/table.css +1 -0
  221. package/packages/theme-chalk/lib/tabs.css +1 -0
  222. package/packages/theme-chalk/lib/tag.css +1 -0
  223. package/packages/theme-chalk/lib/theme.css +0 -0
  224. package/packages/theme-chalk/lib/tree.css +1 -0
  225. package/packages/theme-chalk/lib/uploader.css +0 -0
  226. package/packages/theme-chalk/package.json +35 -0
  227. package/packages/theme-chalk/src/action-sheet.scss +0 -0
  228. package/packages/theme-chalk/src/base.scss +182 -0
  229. package/packages/theme-chalk/src/button-group.scss +26 -0
  230. package/packages/theme-chalk/src/button.scss +3 -0
  231. package/packages/theme-chalk/src/calendar.scss +12 -0
  232. package/packages/theme-chalk/src/cascader.scss +12 -0
  233. package/packages/theme-chalk/src/cell.scss +14 -0
  234. package/packages/theme-chalk/src/checkbox.scss +10 -0
  235. package/packages/theme-chalk/src/circle.scss +7 -0
  236. package/packages/theme-chalk/src/common/var.scss +1525 -0
  237. package/packages/theme-chalk/src/count-down.scss +0 -0
  238. package/packages/theme-chalk/src/date.scss +0 -0
  239. package/packages/theme-chalk/src/empty.scss +0 -0
  240. package/packages/theme-chalk/src/field.scss +28 -0
  241. package/packages/theme-chalk/src/flow.scss +542 -0
  242. package/packages/theme-chalk/src/fonts/iconfont.scss +530 -0
  243. package/packages/theme-chalk/src/fonts/iconfont.ttf +0 -0
  244. package/packages/theme-chalk/src/fonts/iconfont.woff +0 -0
  245. package/packages/theme-chalk/src/form.scss +15 -0
  246. package/packages/theme-chalk/src/grid-item.scss +8 -0
  247. package/packages/theme-chalk/src/grid.scss +0 -0
  248. package/packages/theme-chalk/src/icon.scss +1661 -0
  249. package/packages/theme-chalk/src/image-preview.scss +0 -0
  250. package/packages/theme-chalk/src/index.scss +38 -0
  251. package/packages/theme-chalk/src/list.scss +0 -0
  252. package/packages/theme-chalk/src/loading.scss +0 -0
  253. package/packages/theme-chalk/src/mixins/color.scss +117 -0
  254. package/packages/theme-chalk/src/mixins/mixins.scss +25 -0
  255. package/packages/theme-chalk/src/nav-bar.scss +0 -0
  256. package/packages/theme-chalk/src/navbar.scss +6 -0
  257. package/packages/theme-chalk/src/pagination.scss +10 -0
  258. package/packages/theme-chalk/src/picker.scss +27 -0
  259. package/packages/theme-chalk/src/popover.scss +0 -0
  260. package/packages/theme-chalk/src/popup.scss +0 -0
  261. package/packages/theme-chalk/src/radio.scss +7 -0
  262. package/packages/theme-chalk/src/rate.scss +0 -0
  263. package/packages/theme-chalk/src/search.scss +0 -0
  264. package/packages/theme-chalk/src/selector.scss +218 -0
  265. package/packages/theme-chalk/src/skeleton.scss +0 -0
  266. package/packages/theme-chalk/src/stepper.scss +10 -0
  267. package/packages/theme-chalk/src/switch.scss +6 -0
  268. package/packages/theme-chalk/src/tab.scss +0 -0
  269. package/packages/theme-chalk/src/table-column.scss +0 -0
  270. package/packages/theme-chalk/src/table.scss +42 -0
  271. package/packages/theme-chalk/src/tabs.scss +21 -0
  272. package/packages/theme-chalk/src/tag.scss +13 -0
  273. package/packages/theme-chalk/src/theme.scss +2 -0
  274. package/packages/theme-chalk/src/tree.scss +115 -0
  275. package/packages/theme-chalk/src/uploader.scss +0 -0
  276. package/packages/uploader/index.js +5 -0
  277. package/packages/uploader/src/main.vue +31 -0
  278. package/src/config/api.js +29 -0
  279. package/src/index.js +130 -0
  280. package/src/utils/axios.js +198 -0
  281. package/src/utils/date-util.js +312 -0
  282. package/src/utils/http.js +66 -0
  283. package/src/utils/rules.js +18 -0
  284. package/src/utils/store.js +21 -0
  285. package/src/utils/util.js +1346 -0
@@ -0,0 +1,147 @@
1
+ <template>
2
+ <div class="em-radio-group">
3
+ <van-radio-group v-model="newRadio" v-on="$listeners" v-bind="$attrs">
4
+ <van-radio
5
+ v-for="item of newData"
6
+ :key="item[valueKey]"
7
+ v-bind="item"
8
+ :name="item[valueKey]"
9
+ >
10
+ {{ item[labelKey] }}
11
+ <slot slot="icon" :checked="item[valueKey] == newRadio"></slot>
12
+ </van-radio>
13
+ </van-radio-group>
14
+ </div>
15
+ </template>
16
+ <script>
17
+ import { findSysCode } from '../../../src/config/api';
18
+ import request from '../../../src/utils/http.js';
19
+ export default {
20
+ name: 'EmRadioGroup',
21
+ inheritAttrs: false,
22
+ data() {
23
+ return { newData: [] };
24
+ },
25
+ props: {
26
+ data: {
27
+ type: Array,
28
+ default: () => []
29
+ },
30
+ //所有单选框的选中状态颜色
31
+ groupCheckedColor: {
32
+ type: String,
33
+ default: '#1989fa'
34
+ },
35
+ //所有单选框的图标大小,默认单位为px
36
+ groupIconSize: {
37
+ type: [String, Number],
38
+ default: '20px'
39
+ },
40
+ //是否禁用所有单选框
41
+ groupDisabled: {
42
+ type: Boolean,
43
+ default: false
44
+ },
45
+ //排列方向,可选值为horizontal
46
+ groupDirection: {
47
+ type: String,
48
+ default: 'vertical'
49
+ },
50
+ value: {
51
+ type: String,
52
+ default: ''
53
+ },
54
+ sysAppCode: {
55
+ type: String,
56
+ default: ''
57
+ },
58
+ method: {
59
+ type: String,
60
+ default: 'get'
61
+ },
62
+ url: {
63
+ type: String
64
+ },
65
+ valueKey: {
66
+ type: String,
67
+ default: 'value'
68
+ },
69
+ labelKey: {
70
+ type: String,
71
+ default: 'name'
72
+ },
73
+ param: {
74
+ type: Object,
75
+ default: () => {}
76
+ },
77
+ isTable: {
78
+ type: Boolean,
79
+ default: false
80
+ }
81
+ },
82
+ computed: {
83
+ newRadio: {
84
+ get() {
85
+ return this.value;
86
+ },
87
+
88
+ set(val) {
89
+ this.$emit('input', val);
90
+ }
91
+ }
92
+ },
93
+ watch: {
94
+ data: {
95
+ handler(val) {
96
+ this.newData = val;
97
+ },
98
+ deep: true,
99
+ immediate: true
100
+ }
101
+ },
102
+ mounted() {
103
+ if ((this.sysAppCode || this.url) && this.data.length == 0) {
104
+ this.getSysCode();
105
+ }
106
+ },
107
+ methods: {
108
+ /**
109
+ * handleChange
110
+ * @desc:当绑定值变化时触发的事件
111
+ * @date 2023年3月6日
112
+ * @author liufan
113
+ */
114
+ // handleChange(val) {
115
+ // this.$emit('change', val);
116
+ // },
117
+ getSysCode() {
118
+ const { url, method, sysAppCode, param } = this;
119
+ let params = {
120
+ url: url || findSysCode,
121
+ type: method,
122
+ params: {
123
+ sysAppCode,
124
+ ...param
125
+ }
126
+ };
127
+ request(params)
128
+ .then(res => {
129
+ const { rCode, results, msg } = res;
130
+ if (rCode == 0) {
131
+ results.map(item => {
132
+ item.name = item.shortName;
133
+ item.value = item.cciValue;
134
+ });
135
+ this.newData = results;
136
+ if (this.isTable) this.$emit('tableColumns', this.newData);
137
+ } else {
138
+ this.$toast(msg);
139
+ }
140
+ })
141
+ .catch(err => {
142
+ this.$toast(err.message);
143
+ });
144
+ }
145
+ }
146
+ };
147
+ </script>
@@ -0,0 +1,5 @@
1
+ import EmRate from './src/main';
2
+
3
+ EmRate.install = Vue => Vue.component(EmRate.name, EmRate);
4
+
5
+ export default EmRate;
@@ -0,0 +1,27 @@
1
+ <template>
2
+ <div class="em-rate">
3
+ <van-rate v-model="newValue" v-bind="$attrs" v-on="$listeners" />
4
+ </div>
5
+ </template>
6
+
7
+ <script>
8
+ export default {
9
+ name:'EmRate',
10
+ inheritAttrs:false,
11
+ props:{
12
+ value:Number
13
+ },
14
+ computed:{
15
+ newValue:{
16
+ get(){
17
+ return this.value
18
+ },
19
+ set(val){}
20
+ }
21
+ }
22
+ }
23
+ </script>
24
+
25
+ <style>
26
+
27
+ </style>
@@ -0,0 +1,5 @@
1
+ import EmSearch from './src/main';
2
+
3
+ EmSearch.install = Vue => Vue.component(EmSearch.name, EmSearch);
4
+
5
+ export default EmSearch;
@@ -0,0 +1,39 @@
1
+ <template>
2
+ <van-search
3
+ v-model="newValue"
4
+ v-bind="$attrs"
5
+ v-on="$listeners"
6
+ :clearable="clearable"
7
+ >
8
+ <template v-for="(index, name) of $slots" :slot="name">
9
+ <slot :name="name" />
10
+ </template>
11
+ </van-search>
12
+ </template>
13
+
14
+ <script>
15
+ export default {
16
+ name: 'EmSearch',
17
+ inheritAttrs: false,
18
+ props: {
19
+ value: {
20
+ type: String
21
+ },
22
+ clearable: {
23
+ type: Boolean,
24
+ default: false
25
+ }
26
+ },
27
+ computed: {
28
+ newValue: {
29
+ get() {
30
+ return this.value;
31
+ },
32
+ set(val) {
33
+ this.$emit('input', val);
34
+ }
35
+ }
36
+ },
37
+ methods: {}
38
+ };
39
+ </script>
@@ -0,0 +1,5 @@
1
+ import EmSelector from './src/main';
2
+
3
+ EmSelector.install = Vue => Vue.component(EmSelector.name, EmSelector);
4
+
5
+ export default EmSelector;
@@ -0,0 +1,77 @@
1
+ <template>
2
+ <div class="em-selector">
3
+ <selector-field
4
+ v-if="!this.$scopedSlots.input && !this.$slots.input"
5
+ v-bind="$attrs"
6
+ :data="selectList"
7
+ @change="handleChangeSel"
8
+ @click="handleSelector"
9
+ />
10
+ <slot v-else name="input" :click="handleSelector" />
11
+ <em-selector-tree
12
+ v-if="showSelectorTree"
13
+ v-bind="$attrs"
14
+ v-on="$listeners"
15
+ :selectList="selectList"
16
+ @dispose="handleDispose"
17
+ @close="handleDispose()"
18
+ ></em-selector-tree>
19
+ </div>
20
+ </template>
21
+
22
+ <script>
23
+ import EmSelectorTree from './selector-tree.vue';
24
+ import selectorField from './selector-field.vue';
25
+ export default {
26
+ components: { EmSelectorTree, selectorField },
27
+ name: 'EmSelector',
28
+ inheritAttrs: false,
29
+ props: { value: { type: Array, default: () => [] } },
30
+ data() {
31
+ return {
32
+ showSelectorTree: false
33
+ };
34
+ },
35
+ computed: {
36
+ selectList: {
37
+ get() {
38
+ return this.value;
39
+ },
40
+ set(val) {
41
+ this.$emit('input', val);
42
+ }
43
+ }
44
+ },
45
+
46
+ methods: {
47
+ handleSelector() {
48
+ if (this.$attrs.disabled) return;
49
+ this.showSelectorTree = !this.showSelectorTree;
50
+ },
51
+ /**
52
+ * handleDispose
53
+ * @desc:确认选人
54
+ * @date 2023年3月6日
55
+ * @author liufan
56
+ * @param {Object} val 选中的人员/单位
57
+ */
58
+ handleDispose(val) {
59
+ if (val) {
60
+ const { list } = val;
61
+ this.selectList = list;
62
+ }
63
+ this.showSelectorTree = false;
64
+ },
65
+ /**
66
+ * handleChangeSel
67
+ * @desc:输入框数据发生变化时
68
+ * @date 2023年3月6日
69
+ * @author liufan
70
+ * @param {Array} val 变化后的选中数据
71
+ */
72
+ handleChangeSel(val) {
73
+ this.$emit('input', val.list);
74
+ }
75
+ }
76
+ };
77
+ </script>
@@ -0,0 +1,225 @@
1
+ <template>
2
+ <div class="selector-field">
3
+ <em-input
4
+ :class="{'hide-label':hideLabel}"
5
+ v-bind="$attrs"
6
+ readonly
7
+ clickable
8
+ right-icon="arrow"
9
+ :disabled="disabled"
10
+ @click="clickTree()"
11
+ >
12
+ <template slot="input">
13
+ <div style="width:100%">
14
+ <div @click.stop="handleClick" style="width:100%">
15
+ <div
16
+ v-if="newNextUserList.length > 0 && multiple"
17
+ class="selector-checkList"
18
+ >
19
+ <em-checkbox-group
20
+ style="margin-right:5px"
21
+ v-for="item of newNextUserList"
22
+ :key="item.id"
23
+ :isGroup="false"
24
+ v-model="item.checked"
25
+ :name="item.name"
26
+ direction="horizontal"
27
+ @change="handleChange($event, item)"
28
+ />
29
+ </div>
30
+
31
+ <em-radio-group
32
+ v-else-if="newNextUserList.length > 0"
33
+ v-model="selectValue"
34
+ :data="newNextUserList"
35
+ direction="horizontal"
36
+ @change="handleChange"
37
+ />
38
+ </div>
39
+ <div class="select-list" v-if="newSelectList.length > 0">
40
+ <div v-for="(r, i) in newSelectList" :key="i" class="item">
41
+ {{
42
+ r[labelKey].length > 10
43
+ ? r[labelKey].slice(0, 10) + '...'
44
+ : r[labelKey]
45
+ }}
46
+ <div class="delte" @click.stop="delteList(i, r)">
47
+ <img
48
+ src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAAAXNSR0IArs4c6QAABXxJREFUWEfVWUtIHVcY/v7YjVGSaBpFTAQ3JooLpSg+qxSapF30kY2bVshakNgo1rcmPioxtQSyDqTdZJMmXbSaQtH6RClmEWJ0I8SEEK1PfGxqTvkOM8PM3JnrnauF+sMFvXPmzDff+c/3/+e7giMSckRw4kBAlVJ5AEoAvA/gOIDTxt98/78BrADYMf4eFZHpaImJCqhSqhBAPYDPAz74MYBeEZkIeF8wRpVS+QD6AJQGfZBr/AiAWhGZinSeiBhVSnFZmwwWYyKdfJ9xe2QXQJeIMD3Cxr5AlVJxAP4AQDZDYnd3FwsLC3j58iXevHmjP4yUlBT9SUtLQ3p6OmJjY/2AkNWPRGQ7HNKwQJVS8QCGAHxgn0Qphbdv3+LJkyeYnp7GixcvsLa25vmchIQEXLhwAXl5ebh48SKSk5MhEvLYvwCUi8iWH1hfoEopUkAmC+w3r6+vY3BwEA8ePMDr16+xt8cV3D9iYmKQmpqKiooKXLp0CadOnXLfNGkwu+s1mydQA+TvAIrtNy0uLqKvrw/j4+Mgq9EE2SwqKkJtbS3OnTvnnmIMwMciEgLWD2insXmsiV69eoX29nY8ffo0Gnwh9+Tk5Oj5zp49677GzdXs/jIEqCHi4wDeMwevrq6io6MDY2N84cOL4uJitLW1ITEx0T7pPwCK3MXBC+ifdp3c3NzEjRs3MDw8HPVy+24QEZSVlaG1tRUnTpywDxsRkQ/tXziAGhWHbOpgHnLT3L59+9BBms9gzl6/fl1vMpcakFWrgrmBPrKXRWpiVVWV1kh3xMXFaTaooZQnv83Fh1OeqKVcle3tULmk1t69e1frri0ei8gX1gvZ2GOD4Shp9+/f1xN4SRA18ebNm2D+dnd3Y2SEVTE0SktL0djYqPOwpaVFa687KF0kpLKy0n0p38xVi1GlVA2A782RW1tbqKur04LuFVlZWVqqkpKSsLS0hJ6eHoyOjlrMksmSkhI0NDRYYyhJz58/95yPBeHWrVuIj2eNseIbEennf3agDkl69uwZqqurwc3kFSYQsnXmzBksLy+jq6tLg2UQZFNTk3WNrNtfxD0nN9OdO3eQnZ1tv2RJlR0okV8zRw0MDKC5OUTOQjCbS0uwZJZgGQRJtvkC4VLDPmFnZycuX75s/+oHEeFKOxj9EcBX5qh79+7p/IwkCNZcYuYsgzlppoRf/rrnZp5evXrV/vVPIvK1G+ivAD4xR5GFhw8fRoJTj3GLdzRF4sqVK3rj2eI3Efn0yAI9Mkt/ZDaTQ55mZ2e1PPk1xIctT2ywKU+ZmZn7ypND8Hd2dlBfX4+JCe8D4/nz59Hf3x9I8GtqajA3N+e5QQsLC9Hb24vjx3k8s8JT8AOVUOodW78gJZQtHfXZHYFKKG9WSv0MwGoEwjUlLHX5+fn6ODI/Px+2KcnIyNDHkKmpKbA0u8OnKXkkIl+aY49mm2ew6miceZhj1+OXqxFXBJ+BzE12Ya7DXvjG2QDKXHUcRXioY5c/MzNzUFyO+3Nzc3V37zrkRXYUMcB2A2iwz8pc5K4ks9GeQK18EwGZpKowd13RIyKOOuooofbBhoVD44HsWrGysqLBDg0N4d27d1Gxe+zYMZSXl2uQp0/T/HMEm18aESEWTzgDglbOsNsl2djY0BJzEAOC0nby5Ek3SLolZX7WTiSWDo0Ih1tit3QmJye1iPMFvIKAWBwKCgrCWTp0SWg8BLd0zIf6uSbmdR7WeMCjQeFlktFg4MGOh0Gf8HVH7OP3dfOMzUUfignODXaYtmMPgG4vC8f9UhEBtbH7/zZy3W9nGBXfAvgs4Nb/BcB3/7k17gGYDPPHBupMuB8b+KMDf2yI2Ao/0NIHZO9QhwfK0UN9csDJ/gXzxuhJ8IbhCwAAAABJRU5ErkJggg=="
49
+ />
50
+ </div>
51
+ </div>
52
+ </div>
53
+
54
+ <div v-else>
55
+ {{
56
+ disabled
57
+ ? ' 暂无数据'
58
+ : !$attrs.placeholder
59
+ ? '请选择' + $attrs.label
60
+ : $attrs.placeholder
61
+ }}
62
+ </div>
63
+ </div>
64
+ </template>
65
+ </em-input>
66
+ </div>
67
+ </template>
68
+ <script>
69
+ export default {
70
+ name: 'selectorField',
71
+ data() {
72
+ return {
73
+ newSelectList: [],
74
+ newNextUserList: [],
75
+ selectValue: ''
76
+ };
77
+ },
78
+ props: {
79
+ hideLabel:{
80
+ type:Boolean,
81
+ default:false
82
+ },
83
+ disabled: {
84
+ type: Boolean,
85
+ default: false
86
+ },
87
+ data: {
88
+ type: Array,
89
+ default: () => []
90
+ },
91
+ nextUserList: {
92
+ type: Array,
93
+ default: () => []
94
+ },
95
+ labelKey:{
96
+ type: String,
97
+ default:'showname'
98
+ },
99
+ valueKey:{
100
+ type: String,
101
+ default:'showid'
102
+ },
103
+ multiple: { type: Boolean, default: true }
104
+ },
105
+ inheritAttrs: false,
106
+ watch: {
107
+ nextUserList: {
108
+ handler(val) {
109
+ const _that = this
110
+ val.map(item => {
111
+ !item[_that.valueKey] && (item[_that.valueKey] = item.userId || item.userid);
112
+ !item[_that.labelKey] && (item[_that.labelKey] = item.username || item.userName);
113
+ item.name = item.username || item[_that.labelKey];
114
+ item.value = item.userId || item[_that.valueKey];
115
+ });
116
+ this.newNextUserList = val;
117
+ },
118
+ deep: true,
119
+ immediate: true
120
+ },
121
+ data: {
122
+ handler(val) {
123
+ this.getDefault();
124
+ },
125
+ deep: true,
126
+ immediate: true
127
+ }
128
+ },
129
+ methods: {
130
+ handleClick() {},
131
+ getDefault() {
132
+ let selectArr = [];
133
+ const _that = this
134
+ if (this.multiple) {
135
+ this.data.map(item => {
136
+ !item[_that.valueKey] && (item[_that.valueKey] = item.userId || item.userid);
137
+ !item[_that.labelKey] && (item[_that.labelKey] = item.username || item.userName);
138
+ });
139
+ selectArr = this.newNextUserList.filter(
140
+ x => x.checked && this.multiple
141
+ );
142
+ this.newSelectList = [...this.data, ...selectArr];
143
+ this.newSelectList = this.arrDistinctByProp(
144
+ this.newSelectList,
145
+ _that.valueKey
146
+ );
147
+ } else {
148
+ this.selectValue = '';
149
+ this.data.map(item => {
150
+ !item[_that.valueKey] && (item[_that.valueKey] = item.userId || item.userid);
151
+ !item[_that.labelKey] && (item[_that.labelKey] = item.username || item.userName);
152
+ this.selectValue = item[_that.valueKey] || item.userId;
153
+ });
154
+
155
+ this.newSelectList = this.data;
156
+ }
157
+ },
158
+ arrDistinctByProp(arr, prop) {
159
+ let obj = {};
160
+ return arr.reduce(function(preValue, item) {
161
+ obj[item[prop]] ? '' : (obj[item[prop]] = true && preValue.push(item));
162
+ return preValue;
163
+ }, []);
164
+ },
165
+ handleChange(val, info) {
166
+ const _this = this;
167
+ if (_this.multiple) {
168
+ if (info.checked) {
169
+ if (this.newSelectList.length > 0 && !this.multiple) {
170
+ this.newSelectList = info;
171
+ } else {
172
+ this.newSelectList.push(info);
173
+ }
174
+ } else {
175
+ this.newSelectList = this.newSelectList.filter(obj => {
176
+ return obj[_this.valueKey] != info[_this.valueKey];
177
+ });
178
+ }
179
+ } else {
180
+ let data = this.newNextUserList.filter(
181
+ x => x.userId === val || x[_this.valueKey] === val
182
+ );
183
+ if (data.length > 0) this.newSelectList = data;
184
+ }
185
+
186
+ this.$parent.$emit('change', {list:_this.newSelectList});
187
+ this.$emit('change', {list:_this.newSelectList});
188
+ },
189
+ /**
190
+ * clickTree
191
+ * @desc:打开选人/单位页面
192
+ * @date 2023年3月6日
193
+ * @author liufan
194
+ */
195
+ clickTree() {
196
+ if (this.disabled === true) {
197
+ return; // 表单禁用不显示弹窗
198
+ }
199
+ this.$emit('click');
200
+ },
201
+ /**
202
+ * delteList
203
+ * @desc:删除选中的数据
204
+ * @date 2023年3月6日
205
+ * @author liufan
206
+ * @param {String} val 当前数据的下标
207
+ */
208
+ delteList(val, res) {
209
+ if (this.disabled) return;
210
+ const _that = this
211
+ this.newSelectList.splice(val, 1);
212
+ this.$set(res, 'checked', false);
213
+ this.newNextUserList.map(x => {
214
+ if (x[_that.valueKey] === res[_that.valueKey]) {
215
+ x.checked = false;
216
+ }
217
+ });
218
+ !this.multiple && (this.selectValue = '');
219
+ let info = {list:this.newSelectList}
220
+ this.$parent.$emit('change', info);
221
+ this.$emit('change', info);
222
+ }
223
+ }
224
+ };
225
+ </script>