@kyfe/fms-vue2-components 0.0.3 → 0.0.4

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 (154) hide show
  1. package/dist/assets/css/fms-ks-clamp-text.css +1 -0
  2. package/dist/assets/css/fms-ks-components.css +1 -0
  3. package/dist/assets/css/fms-ks-popover.css +1 -0
  4. package/dist/assets/css/fms-ks-search-tips-new.css +1 -0
  5. package/dist/assets/css/fms-ks-search-tips.css +1 -0
  6. package/dist/assets/css/fms-ks-select-box.css +1 -0
  7. package/dist/assets/css/fms-ks-select.css +1 -0
  8. package/dist/date-picker-bottom.17e75dc0.js +45 -0
  9. package/dist/date-picker-dropdown.1d8e9f00.js +34 -0
  10. package/dist/date-picker-right.b939e886.js +23 -0
  11. package/dist/date-picker-top.c38046f7.js +23 -0
  12. package/dist/date-range-select.647edaf6.js +69 -0
  13. package/dist/date-select.96eb3a9d.js +60 -0
  14. package/dist/date-week-month.169b98bc.js +57 -0
  15. package/dist/datetime-popup/index.js +411 -0
  16. package/dist/filter.c93f4ddb.js +45 -0
  17. package/dist/fms-copy-box/index.js +1 -1
  18. package/dist/fms-ks-block-title/index.js +38 -0
  19. package/dist/fms-ks-block-title/style.css +1 -0
  20. package/dist/fms-ks-clamp-text/index.js +9 -0
  21. package/dist/fms-ks-clamp-text.24eb5e8d.js +53 -0
  22. package/dist/fms-ks-components/index.js +9 -0
  23. package/dist/fms-ks-components.a5d9329b.js +4392 -0
  24. package/dist/fms-ks-decrypt/index.js +2 -2
  25. package/dist/fms-ks-decrypt.2f88e659.js +312 -0
  26. package/dist/fms-ks-file-upload/index.js +32 -31
  27. package/dist/fms-ks-file-upload/style.css +1 -1
  28. package/dist/fms-ks-form-grid/index.js +101 -0
  29. package/dist/fms-ks-form-grid/style.css +1 -0
  30. package/dist/fms-ks-more-lines/index.js +31 -0
  31. package/dist/fms-ks-more-lines/style.css +1 -0
  32. package/dist/fms-ks-page-popup/index.js +68 -0
  33. package/dist/fms-ks-page-popup/style.css +1 -0
  34. package/dist/fms-ks-picker/index.js +9 -0
  35. package/dist/fms-ks-picker.766b55f9.js +61 -0
  36. package/dist/fms-ks-popover/index.js +9 -0
  37. package/dist/fms-ks-popover.55ab4b82.js +95 -0
  38. package/dist/fms-ks-search-tips/index.js +9 -0
  39. package/dist/fms-ks-search-tips-new/index.js +9 -0
  40. package/dist/fms-ks-search-tips-new.7d08f710.js +125 -0
  41. package/dist/fms-ks-search-tips.d36859c3.js +142 -0
  42. package/dist/fms-ks-select/index.js +9 -0
  43. package/dist/fms-ks-select-box/index.js +9 -0
  44. package/dist/fms-ks-select-box.a00f0f08.js +43 -0
  45. package/dist/fms-ks-select.59416fd8.js +157 -0
  46. package/dist/fms-ks-warn-drawer/index.js +37 -0
  47. package/dist/fms-ks-warn-drawer/style.css +1 -0
  48. package/dist/fms-scroll-list/index.js +3 -1
  49. package/dist/index.js +30 -30
  50. package/dist/mixin.f4bc60f0.js +59 -0
  51. package/dist/month-range-select.374653da.js +97 -0
  52. package/dist/month-select.30ae7335.js +71 -0
  53. package/dist/oa-datetime-picker-new/style.css +1 -0
  54. package/dist/quarter-select.b6256880.js +73 -0
  55. package/dist/utils.159fba19.js +64 -0
  56. package/dist/week-select.27efca5c.js +70 -0
  57. package/package.json +31 -31
  58. package/src/assets/images/attachment/icon_default.svg +23 -0
  59. package/src/assets/images/attachment/icon_default_new.png +0 -0
  60. package/src/assets/images/attachment/icon_excel.svg +20 -0
  61. package/src/assets/images/attachment/icon_excel_new.png +0 -0
  62. package/src/assets/images/attachment/icon_file.png +0 -0
  63. package/src/assets/images/attachment/icon_pdf_new.png +0 -0
  64. package/src/assets/images/attachment/icon_ppt.svg +20 -0
  65. package/src/assets/images/attachment/icon_ppt_new.png +0 -0
  66. package/src/assets/images/attachment/icon_preview_file.png +0 -0
  67. package/src/assets/images/attachment/icon_txt.png +0 -0
  68. package/src/assets/images/attachment/icon_word.svg +19 -0
  69. package/src/assets/images/attachment/icon_word_new.png +0 -0
  70. package/src/assets/images/attachment/icon_xmind.png +0 -0
  71. package/src/assets/images/icon-arrow.png +0 -0
  72. package/src/assets/images/icon-forewarning.svg +1 -0
  73. package/src/components/date-picker/index.vue +205 -0
  74. package/src/components/datetime-picker-general/index.vue +161 -0
  75. package/src/components/datetime-popup/date-picker.js +217 -0
  76. package/src/components/datetime-popup/index.js +37 -0
  77. package/src/components/datetime-popup/index.vue +111 -0
  78. package/src/components/datetime-popup/mixin.js +125 -0
  79. package/src/components/datetime-popup/time-picker.js +102 -0
  80. package/src/components/datetime-popup/utils.js +124 -0
  81. package/src/components/datetime-popup//347/244/272/344/276/213/345/233/276.png +0 -0
  82. package/src/components/decrypt/README.md +0 -0
  83. package/src/components/decrypt/index.vue +73 -0
  84. package/src/components/fms-ks-block-title/fms-ks-block-title.vue +75 -0
  85. package/src/components/fms-ks-block-title/index.js +7 -0
  86. package/src/components/fms-ks-block-title//346/240/207/351/242/230.md +0 -0
  87. package/src/components/fms-ks-clamp-text/fms-ks-clamp-text.vue +66 -0
  88. package/src/components/fms-ks-clamp-text/images/icon-clamp.png +0 -0
  89. package/src/components/fms-ks-clamp-text/index.js +7 -0
  90. package/src/components/fms-ks-clamp-text//346/226/207/346/234/254/346/224/266/350/265/267/345/261/225/345/274/200.md +0 -0
  91. package/src/components/fms-ks-components/fms-ks-components.vue +699 -0
  92. package/src/components/fms-ks-components/index.js +7 -0
  93. package/src/components/fms-ks-components/money-directive.js +73 -0
  94. package/src/components/fms-ks-components//350/241/250/345/215/225/351/205/215/347/275/256/347/273/204/344/273/266/350/257/264/346/230/216.md +10 -0
  95. package/src/components/fms-ks-file-upload/fms-ks-file-upload.vue +8 -1
  96. package/src/components/fms-ks-form-grid/fields-conversion.js +107 -0
  97. package/src/components/fms-ks-form-grid/fms-ks-form-grid.vue +127 -0
  98. package/src/components/fms-ks-form-grid/index.js +7 -0
  99. package/src/components/fms-ks-more-lines/fms-ks-more-lines.vue +108 -0
  100. package/src/components/fms-ks-more-lines/index.js +7 -0
  101. package/src/components/fms-ks-more-lines//346/233/264/345/244/232.md +0 -0
  102. package/src/components/fms-ks-page-popup/fms-ks-page-popup.vue +153 -0
  103. package/src/components/fms-ks-page-popup/index.js +7 -0
  104. package/src/components/fms-ks-page-popup//345/274/271/345/207/272/345/261/202.md +0 -0
  105. package/src/components/fms-ks-picker/fms-ks-picker.vue +67 -0
  106. package/src/components/fms-ks-picker/index.js +7 -0
  107. package/src/components/fms-ks-picker//351/200/211/346/213/251/345/274/271/345/207/272/345/261/202.md +0 -0
  108. package/src/components/fms-ks-popover/click-outside.js +68 -0
  109. package/src/components/fms-ks-popover/fms-ks-popover.vue +89 -0
  110. package/src/components/fms-ks-popover/index.js +7 -0
  111. package/src/components/fms-ks-popover//345/274/271/345/207/272/345/261/202.md +0 -0
  112. package/src/components/fms-ks-search-tips/fms-ks-search-tips.vue +296 -0
  113. package/src/components/fms-ks-search-tips/index.js +7 -0
  114. package/src/components/fms-ks-search-tips//350/277/234/347/250/213/346/220/234/347/264/242.md +118 -0
  115. package/src/components/fms-ks-search-tips-new/fms-ks-search-tips-new.vue +242 -0
  116. package/src/components/fms-ks-search-tips-new/index.js +7 -0
  117. package/src/components/fms-ks-search-tips-new/style.less +137 -0
  118. package/src/components/fms-ks-search-tips-new//350/277/234/347/250/213/346/220/234/347/264/242-/346/226/260.md +118 -0
  119. package/src/components/fms-ks-select/fms-ks-select.vue +421 -0
  120. package/src/components/fms-ks-select/index.js +7 -0
  121. package/src/components/fms-ks-select//351/200/211/346/213/251/346/241/206.md +0 -0
  122. package/src/components/fms-ks-select-box/fms-ks-select-box.vue +84 -0
  123. package/src/components/fms-ks-select-box/index.js +7 -0
  124. package/src/components/fms-ks-select-box//344/270/215/351/234/200/350/246/201popup/347/232/204select.md +0 -0
  125. package/src/components/fms-ks-warn-drawer/fms-ks-warn-drawer.vue +111 -0
  126. package/src/components/fms-ks-warn-drawer/index.js +7 -0
  127. package/src/components/fms-ks-warn-drawer//351/242/204/350/255/246/346/217/220/347/244/272.md +0 -0
  128. package/src/components/ks-decrypt/README.md +140 -0
  129. package/src/components/ks-decrypt/index.vue +155 -0
  130. package/src/components/ks-popover/index.vue +483 -0
  131. package/src/components/ks-popover/mixin.js +28 -0
  132. package/src/components/ks-popover/utils.js +60 -0
  133. package/src/components/oa-datetime-picker/index.vue +169 -0
  134. package/src/components/oa-datetime-picker-new/components/date-picker/README.md +21 -0
  135. package/src/components/oa-datetime-picker-new/components/date-picker/date-picker-bottom.vue +121 -0
  136. package/src/components/oa-datetime-picker-new/components/date-picker/date-picker-dropdown.vue +78 -0
  137. package/src/components/oa-datetime-picker-new/components/date-picker/date-picker-right.vue +86 -0
  138. package/src/components/oa-datetime-picker-new/components/date-picker/date-picker-top.vue +82 -0
  139. package/src/components/oa-datetime-picker-new/components/date-picker/date-picker.js +12 -0
  140. package/src/components/oa-datetime-picker-new/components/date-picker/date-range-select.vue +106 -0
  141. package/src/components/oa-datetime-picker-new/components/date-picker/date-select.vue +66 -0
  142. package/src/components/oa-datetime-picker-new/components/date-picker/date-week-month.vue +131 -0
  143. package/src/components/oa-datetime-picker-new/components/date-picker/index.js +39 -0
  144. package/src/components/oa-datetime-picker-new/components/date-picker/mixin.js +85 -0
  145. package/src/components/oa-datetime-picker-new/components/date-picker/month-range-select.vue +127 -0
  146. package/src/components/oa-datetime-picker-new/components/date-picker/month-select.vue +87 -0
  147. package/src/components/oa-datetime-picker-new/components/date-picker/quarter-select.vue +95 -0
  148. package/src/components/oa-datetime-picker-new/components/date-picker/style.less +117 -0
  149. package/src/components/oa-datetime-picker-new/components/date-picker/utils.js +109 -0
  150. package/src/components/oa-datetime-picker-new/components/date-picker/week-select.vue +100 -0
  151. package/src/components/oa-datetime-picker-new/index.vue +212 -0
  152. package/src/index.js +8 -2
  153. package/vite.config.js +12 -1
  154. package/dist/fms-ks-decrypt.bcc12f44.js +0 -335
@@ -0,0 +1,421 @@
1
+ <template>
2
+ <div class="flow-fms-select-component">
3
+ <van-field :name="title"
4
+ error-message-align="right"
5
+ readonly
6
+ :required="required"
7
+ :rules="[{ required: required, message: `请选择${label}` }]"
8
+ :value="value"
9
+ :label="label"
10
+ v-bind="$attrs"
11
+ :placeholder="placeholder"
12
+ @click="openPicker">
13
+ <span slot="label" :class="{'tips-label': tipText||$attrs.headerTips}">
14
+ {{ label }}
15
+ <ks-popover v-if="tipText||$attrs.headerTips"
16
+ v-model="showPopover"
17
+ trigger='click'
18
+ placement="bottom"
19
+ theme="dark"
20
+ get-container=".flow-fms-select-component"
21
+ :offset="[60,10]">
22
+ <div v-html="tipText||$attrs.headerTips" style="font-size:14px;width: 300px;padding: 12px;line-height:20px;">
23
+ </div>
24
+ <template slot='reference'>
25
+ <van-icon name="question-o"
26
+ style="color:#858793;" />
27
+ </template>
28
+ </ks-popover>
29
+ </span>
30
+ </van-field>
31
+ <van-popup v-model="show"
32
+ class="flow-fms-select-popup"
33
+ :class="{'is-custome-toolbar': customeToolbar}"
34
+ get-container="body"
35
+ position="bottom">
36
+ <!-- 新版样式 -->
37
+ <div v-if="customeToolbar">
38
+ <div class="fms-select__header">
39
+ <div v-if="customeToolbar"
40
+ class="custome-toolbar">
41
+ <strong>{{label}}</strong>
42
+ <van-icon name="cross"
43
+ color="#A2A2AD"
44
+ @click="show = false;" />
45
+ </div>
46
+ <div class="fms-select__search" v-if="search.show">
47
+ <ks-search
48
+ v-model.trim="searchValue"
49
+ v-bind="search.props"
50
+ @input="handleSearchInput"
51
+ />
52
+ </div>
53
+ </div>
54
+ <van-picker v-if="type === 'single'"
55
+ :columns="columns"
56
+ :title="label"
57
+ @cancel="show = false"
58
+ @confirm="onChange"
59
+ ref="single" />
60
+ <div class="muiltiple"
61
+ v-else>
62
+ <div v-for="(col, i) in columnList" :key="col.code">
63
+ <van-cell
64
+ v-if="col.show === undefined || col.show"
65
+ clickable
66
+ :title="col.text"
67
+ :title-style="`${col.active ? 'color: #8b83ff' : ''}`"
68
+ @click="clickHandle(col, i)"
69
+ class="muiltiple-item">
70
+ <template #right-icon>
71
+ <van-checkbox v-model="col.active"
72
+ ref="checkboxes"
73
+ icon-size="16px"
74
+ checked-color="#8b83ff" />
75
+ </template>
76
+ </van-cell>
77
+ </div>
78
+ </div>
79
+ <div class="custome-btn">
80
+ <div class="van-picker__selectAll"
81
+ v-if="showSelectAll && type === 'multiple'">
82
+ <van-checkbox v-model="selectAll"
83
+ ref="checkboxes"
84
+ icon-size="16px"
85
+ checked-color="#8b83ff"
86
+ @click="selectAllChange">全选</van-checkbox>
87
+ </div>
88
+ <van-button type="primary"
89
+ class="btn"
90
+ @click="customeConfirm">确定</van-button>
91
+ </div>
92
+ </div>
93
+ <!-- 旧版样式 -->
94
+ <div v-else>
95
+ <van-picker v-if="type === 'single'"
96
+ :columns="columns"
97
+ show-toolbar
98
+ :title="label"
99
+ @cancel="show = false"
100
+ @confirm="onChange" />
101
+ <div class="muiltiple"
102
+ v-else>
103
+ <div class="van-hairline--top-bottom van-picker__toolbar">
104
+ <button type="button"
105
+ class="van-picker__cancel"
106
+ @click="show = false">取消</button>
107
+ <div class="van-ellipsis van-picker__title">
108
+ {{label}}
109
+ </div>
110
+ <button type="button"
111
+ class="van-picker__confirm"
112
+ @click="onChange">确认</button>
113
+ </div>
114
+ <div class="van-picker__columns">
115
+ <div class="van-picker-column">
116
+ <ul class="van-picker-column__wrapper">
117
+ <li role="button"
118
+ tabindex="0"
119
+ class="van-ellipsis van-picker-column__item van-hairline-unset--top-bottom"
120
+ v-for="(col, i) in columnList"
121
+ :key="col.code"
122
+ @click="clickHandle(col, i)">
123
+ <span>{{col.text}}</span>
124
+ <van-icon v-show="col.active"
125
+ name="success"
126
+ class="selected-icon" />
127
+ </li>
128
+ </ul>
129
+ </div>
130
+ <!-- 这里是遮罩 -->
131
+ <!-- <div class="van-picker__mask"
132
+ style="background-size: 100% 88px;"></div> -->
133
+ <!-- <div class="van-hairline-unset--top-bottom van-picker__frame"
134
+ style="height: 44px;"></div> -->
135
+ </div>
136
+ </div>
137
+ </div>
138
+ </van-popup>
139
+ </div>
140
+ </template>
141
+
142
+ <script>
143
+ import { cloneDeep } from 'lodash'
144
+ import FmsPopover from '../fms-ks-popover/fms-ks-popover.vue'
145
+ export default {
146
+ name: 'FmsKsSelect',
147
+ components: {
148
+ FmsPopover
149
+ },
150
+ props: {
151
+ value: [String, Number, Array],
152
+ label: String,
153
+ placeholder: String,
154
+ required: Boolean,
155
+ tipText: String,
156
+ popoverStyle: {
157
+ type: Object,
158
+ default: () => { }
159
+ },
160
+ arrowStyle: {
161
+ type: Object,
162
+ default: () => { }
163
+ },
164
+ type: { // 单选与多选 'single' 'multiple'
165
+ type: String,
166
+ default: () => 'single'
167
+ },
168
+ columns: {
169
+ type: Array,
170
+ default: () => []
171
+ },
172
+ // 自定义picker顶部栏
173
+ customeToolbar: {
174
+ type: Boolean,
175
+ default: true
176
+ },
177
+ // 是否显示全选
178
+ showSelectAll: Boolean,
179
+ search: {
180
+ type: Object,
181
+ default: () => ({})
182
+ }
183
+ },
184
+ watch: {
185
+ value: {
186
+ handler () {
187
+ this.exchangeActiveOfList()
188
+ },
189
+ immediate: true
190
+ },
191
+ show (val) {
192
+ if (val) {
193
+ this.exchangeActiveOfList()
194
+ } else {
195
+ this.searchValue = ''
196
+ this.columnList.forEach(item => {
197
+ item.show = true
198
+ })
199
+ }
200
+ },
201
+ columns () {
202
+ this.columnList = cloneDeep(this.columns)
203
+ }
204
+ },
205
+ data () {
206
+ return {
207
+ showPopover: false,
208
+ show: false,
209
+ columnList: cloneDeep(this.columns),
210
+ selectAll: false,
211
+ searchValue: ''
212
+ }
213
+ },
214
+ methods: {
215
+ //点击提示
216
+ setPopoverOpt () {
217
+ console.log('1222--', this.showPopover)
218
+ this.showPopover = !this.showPopover
219
+ },
220
+ exchangeActiveOfList () {
221
+ if (this.type === 'multiple') {
222
+ const textList = this.value instanceof Array ? this.value : (this.value || '').split(',')
223
+ // // 形如 ['增值税', '其他']
224
+ // 将对应的columnList中的值切换为active
225
+ this.columnList.forEach(item => {
226
+ item.active = (textList.includes(item.text))
227
+ })
228
+ }
229
+ },
230
+ onChange (value) {
231
+ console.log('点击', this.columnList)
232
+ if (this.type === 'single') {
233
+ this.$emit('input', value && value.code)
234
+ this.$emit('blur')
235
+ } else {
236
+ // 如果是多选,将code以数组的形式传出去
237
+ const selectedList = this.columnList.filter(item => item.active)
238
+ console.log('selectedList', selectedList)
239
+ this.value = selectedList.map(item => item.text).join(',')
240
+ this.$emit('input', selectedList.map(item => item.code))
241
+ this.$emit('blur')
242
+ }
243
+ this.show = false
244
+ },
245
+ clickHandle (col, index) {
246
+ // TODO:没看懂,为什么第一次进来,第一次点击这里,会触发父组件的filter和bindProps方法重新执行
247
+ console.log('col', col, index)
248
+ const newCol = {
249
+ ...col,
250
+ active: !col.active
251
+ }
252
+ this.columnList.splice(index, 1, newCol)
253
+ this.selectAll = !this.columnList.some(x => !x.active)
254
+ },
255
+ customeConfirm () {
256
+ if (this.type === 'single') {
257
+ this.$refs.single.confirm()
258
+ } else {
259
+ this.onChange()
260
+ }
261
+ },
262
+ // 打开选择器,如果是禁用状态,则禁止打开
263
+ openPicker () {
264
+ this.$emit('openPicker')
265
+ if (!this.$attrs.disabled) {
266
+ this.show = true
267
+ }
268
+ },
269
+ selectAllChange () {
270
+ this.selectAll = !this.selectAll
271
+ this.columnList = this.columnList.map(x => {
272
+ x.active = this.selectAll
273
+ return x
274
+ })
275
+ },
276
+ handleSearchInput() {
277
+ this.columnList.forEach(item => {
278
+ if (!this.searchValue || item.text.includes(this.searchValue)) {
279
+ this.$set(item, 'show', true)
280
+ } else {
281
+ this.$set(item, 'show', false)
282
+ }
283
+ })
284
+ }
285
+ }
286
+ }
287
+ </script>
288
+
289
+ <style scoped lang="less">
290
+ .flow-fms-select-component {
291
+ .van-cell:after {
292
+ position: absolute;
293
+ content: " ";
294
+ pointer-events: none;
295
+ right: 0;
296
+ bottom: 0;
297
+ left: 16px;
298
+ right: 16px;
299
+ border-bottom: 1px solid #d9d9d9;
300
+ -webkit-transform: scaleY(0.5);
301
+ transform: scaleY(0.5);
302
+ }
303
+ /deep/ .van-popover {
304
+ .van-popover__arrow {
305
+ left: 30%;
306
+ }
307
+ }
308
+
309
+ .tips-label {
310
+ display: inline-flex;
311
+ align-items: center;
312
+ ::v-deep .van-popover__wrapper {
313
+ margin-left: 2px;
314
+ }
315
+ }
316
+ }
317
+ .flow-fms-select-popup {
318
+ &.is-custome-toolbar {
319
+ border-radius: 12px 12px 0 0;
320
+ .van-icon-cross {
321
+ font-size: 16px!important;
322
+ }
323
+ .muiltiple {
324
+ max-height: 300px;
325
+ min-height: 100px;
326
+ overflow: auto;
327
+ margin-bottom: 2px;
328
+ .van-cell__title span {
329
+ word-break: break-all;
330
+ }
331
+ }
332
+ }
333
+ .fms-select__header {
334
+ border-bottom: 1px solid #ebedf5;
335
+ }
336
+ .custome-toolbar {
337
+ height: 48px;
338
+ display: flex;
339
+ align-items: center;
340
+ justify-content: space-between;
341
+ padding: 0 16px;
342
+ strong {
343
+ font-size: 16px;
344
+ color: #333333;
345
+ }
346
+ .van-icon-cross {
347
+ font-size: 16px!important;
348
+ }
349
+ }
350
+ .custome-btn {
351
+ display: flex;
352
+ align-items: center;
353
+ padding: 0 16px;
354
+ background: #fff;
355
+ padding-bottom: 24px;
356
+ padding-bottom: calc(constant(safe-area-inset-bottom) + 24px);
357
+ padding-bottom: calc(env(safe-area-inset-bottom) + 24px);
358
+ .btn {
359
+ background: #7972fe;
360
+ border-radius: 8px;
361
+ color: #fff;
362
+ font-size: 16px;
363
+ flex: 2;
364
+ height: 40px;
365
+ }
366
+ }
367
+ .muiltiple {
368
+ /deep/ .van-checkbox__icon .van-icon {
369
+ width: 16px;
370
+ height: 16px;
371
+ }
372
+ .muiltiple-item {
373
+ padding: 12px 16px;
374
+ &::after {
375
+ left: 0px !important;
376
+ right: 0px !important;
377
+ }
378
+ /deep/ .van-cell__title {
379
+ font-size: 14px;
380
+ color: #333;
381
+ }
382
+ }
383
+ }
384
+ .van-picker__columns {
385
+ max-height: 200px;
386
+ height: auto !important;
387
+ .van-picker-column {
388
+ max-height: 200px;
389
+ overflow-y: auto;
390
+ }
391
+ }
392
+ .van-picker-column__item {
393
+ position: relative;
394
+ display: flex;
395
+ align-items: center;
396
+ height: auto !important;
397
+ font-size: 14px;
398
+ span {
399
+ padding: 14px 0;
400
+ text-align: center;
401
+ width: calc(100% - 16px);
402
+ white-space: pre-wrap;
403
+ line-height: 1.2;
404
+ word-break: break-all;
405
+ }
406
+ }
407
+ .van-picker__selectAll {
408
+ display: flex;
409
+ align-items: center;
410
+ // margin-right: 24px;
411
+ flex: 1;
412
+ .van-checkbox {
413
+ width: 100%;
414
+ }
415
+ }
416
+ .selected-icon {
417
+ width: 16px;
418
+ color: #7972fe;
419
+ }
420
+ }
421
+ </style>
@@ -0,0 +1,7 @@
1
+ import FmsKsSelect from './fms-ks-select.vue'
2
+
3
+ FmsKsSelect.install = function(Vue) {
4
+ Vue.component(FmsKsSelect.name, FmsKsSelect)
5
+ }
6
+
7
+ export default FmsKsSelect
@@ -0,0 +1,84 @@
1
+ <template>
2
+ <van-field class="fms-select-box"
3
+ :name="label"
4
+ input-align="right"
5
+ error-message-align="right"
6
+ readonly
7
+ :required="required"
8
+ :rules="[{ required: required, message: `请选择${label}` }]"
9
+ :value="value"
10
+ :label="label">
11
+ <template #label>
12
+ <slot name="label"/>
13
+ </template>
14
+ <template #input>
15
+ <!-- value{{value}}{{columns}} -->
16
+ <div class="list"
17
+ :value="value">
18
+ <!-- TODO:这里有点扯,页面选择后输出为10,但是最终拿到的是餐饮,所以这里需要通过item.text判断 -->
19
+ <div class="item"
20
+ :class="{active: value === item.text }"
21
+ v-for="item in columns"
22
+ :key="item.code"
23
+ @click="change(item.code, item.text)">
24
+ {{item.text}}
25
+ </div>
26
+ </div>
27
+ </template>
28
+ </van-field>
29
+ </template>
30
+
31
+ <script>
32
+ export default {
33
+ name: 'FmsKsSelectBox',
34
+ props: [
35
+ 'value', 'required', 'label', 'columns'
36
+ ],
37
+ data () {
38
+ return {
39
+
40
+ }
41
+ },
42
+ methods: {
43
+ change (code, text) {
44
+ console.log('val', code)
45
+ if (text !== this.value) {
46
+ this.$emit('input', code)
47
+ this.$emit('change', code)
48
+ } else {
49
+ this.$emit('input', code)
50
+ }
51
+ }
52
+ }
53
+ }
54
+ </script>
55
+
56
+ <style lang="less" scoped>
57
+ .fms-select-box {
58
+ /deep/ .van-field__label {
59
+ color: #858793;
60
+ }
61
+ .list {
62
+ display: flex;
63
+ .item {
64
+ // width: 64px;
65
+ height: 22px;
66
+ background: #f7f8fa;
67
+ border-radius: 16px;
68
+ font-size: 13px;
69
+ font-family: PingFangSC, PingFangSC-Regular;
70
+ font-weight: 400;
71
+ text-align: center;
72
+ color: #1b2240;
73
+ line-height: 22px;
74
+ letter-spacing: -0.3px;
75
+ margin-left: 12px;
76
+ padding: 0 12px;
77
+ &.active {
78
+ background: #7972fe;
79
+ color: #fff;
80
+ }
81
+ }
82
+ }
83
+ }
84
+ </style>
@@ -0,0 +1,7 @@
1
+ import FmsKsSelectBox from './fms-ks-select-box.vue'
2
+
3
+ FmsKsSelectBox.install = function(Vue) {
4
+ Vue.component(FmsKsSelectBox.name, FmsKsSelectBox)
5
+ }
6
+
7
+ export default FmsKsSelectBox
@@ -0,0 +1,111 @@
1
+ <!--预警组件-->
2
+ <template>
3
+ <div class="flow-fms-warning-box">
4
+ <div class="flow-fms-warning-title">
5
+ <div class="flow-fms-title-text">
6
+ <img class="icon-waring" :src="require('@/assets/images/icon-forewarning.svg')">单据存在<span class="flow-fms-warning-number">1</span>项预警
7
+ </div>
8
+ <div @click="arrowClick" class="arrow-icon">
9
+ <img :class="{ 'closures': arrowShow }"
10
+ src="@/assets/images/icon-arrow.png"
11
+ class="arrow">
12
+ </div>
13
+ </div>
14
+ <div v-if="arrowShow"
15
+ class="flow-fms-warning-detail">
16
+ <div class="flow-fms-waring-present">预警信息供参考,请结合实际合理性审批</div>
17
+ <div class="title flow-fms-warning-content">{{ title }}</div>
18
+ <slot :warningInfos="warningInfos"></slot>
19
+ </div>
20
+ </div>
21
+ </template>
22
+
23
+ <script>
24
+ export default {
25
+ name: 'FmsKsWarnDrawer',
26
+ props: ['warningInfos', 'warningColor', 'title'],
27
+ data () {
28
+ return {
29
+ arrowShow: false,
30
+ }
31
+ },
32
+ methods: {
33
+ arrowClick () {
34
+ this.arrowShow = !this.arrowShow
35
+ },
36
+ }
37
+ }
38
+ </script>
39
+ <style scoped lang="less">
40
+ .flow-fms-warning-box {
41
+ position: absolute;
42
+ bottom: 0;
43
+ z-index: 999;
44
+ width: 100%;
45
+ .flow-fms-warning-title {
46
+ border-radius: 10px 20px 0 0;
47
+ height: 36px;
48
+ background-color: #ffecec;
49
+ line-height: 36px;
50
+ font-size: 14px;
51
+ font-weight: 600;
52
+ display: flex;
53
+ align-items: center;
54
+ justify-content: space-between;
55
+ padding: 0 20px;
56
+ .arrow-icon {
57
+ width: 100px;
58
+ height: 36px;
59
+ display: flex;
60
+ align-items: center;
61
+ justify-content: flex-end;
62
+ }
63
+ .flow-fms-title-text {
64
+ .flow-fms-warning-number {
65
+ color: #fd4948;
66
+ margin: 0 5px;
67
+ }
68
+ .icon-waring {
69
+ width: 12px;
70
+ margin-right: 4px;
71
+ }
72
+ }
73
+ .arrow {
74
+ display: block;
75
+ width: 17px;
76
+ height: 17px;
77
+ &.closures {
78
+ transform: rotate(180deg);
79
+ }
80
+ }
81
+ }
82
+ .flow-fms-warning-detail {
83
+ background-color: #ffffff;
84
+ padding: 8px 16px 10px 16px;
85
+ max-height: 55vh;
86
+ overflow: auto;
87
+ .flow-fms-waring-present {
88
+ font-size: 12px;
89
+ color: #6e6d72;
90
+ }
91
+ .flow-fms-warning-content {
92
+ font-size: 12px;
93
+ margin-top: 10px;
94
+ .red {
95
+ color: #fd4948;
96
+ }
97
+ .yellow {
98
+ color: #ffbb00;
99
+ }
100
+ .orange {
101
+ color: #ff7613;
102
+ }
103
+ }
104
+ }
105
+ .title {
106
+ font-size: 12px;
107
+ margin: 5px 0;
108
+ color: #fd4948;
109
+ }
110
+ }
111
+ </style>
@@ -0,0 +1,7 @@
1
+ import FmsKsWarnDrawer from './fms-ks-warn-drawer.vue'
2
+
3
+ FmsKsWarnDrawer.install = function(Vue) {
4
+ Vue.component(FmsKsWarnDrawer.name, FmsKsSelectBox)
5
+ }
6
+
7
+ export default FmsKsWarnDrawer