wl-design-mobile 0.8.19 → 0.8.21

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 (101) hide show
  1. package/README.md +6 -6
  2. package/api/doc.js +25 -25
  3. package/api/x1.js +56 -56
  4. package/btn/components/lambo-info-btn.vue +123 -123
  5. package/btn/components/lambo-primary-btn.vue +117 -117
  6. package/btn/components/lambo-text-btn.vue +116 -116
  7. package/btn/lambo-btn-divide.vue +35 -120
  8. package/btn/lambo-btn-group.vue +46 -46
  9. package/btn/lambo-btn-split-line.vue +41 -41
  10. package/btn/lambo-btn.vue +68 -68
  11. package/btn/lambo-extend-btn.vue +121 -121
  12. package/btn/lambo-icon-btn.vue +82 -82
  13. package/card-item/card-row-icon.vue +71 -71
  14. package/card-item/filtrate-row.vue +73 -73
  15. package/card-item/lambo-card-footer.vue +40 -40
  16. package/card-item/lambo-card-head.vue +66 -66
  17. package/card-item/lambo-card-row.vue +59 -59
  18. package/collapse/lambo-collapse.vue +93 -93
  19. package/config/config.js +14 -14
  20. package/detail/lambo-detail-grid.vue +58 -58
  21. package/detail/lambo-detail-row.vue +59 -59
  22. package/doc/file/compoents/lambo-file-list.vue +42 -42
  23. package/doc/file/compoents/lambo-file-row.vue +77 -77
  24. package/doc/file/lambo-file-upload-collapse.vue +107 -107
  25. package/doc/file-type/file-type.js +286 -286
  26. package/doc/img/comonents/lambo-img-grid.vue +109 -109
  27. package/doc/img/lambo-img-upload-collapse.vue +107 -107
  28. package/doc/img/styles/css/index.css +3 -3
  29. package/edit/list/Lambo-edit-list.vue +87 -87
  30. package/edit/list/lambo-edit-card-group.vue +100 -100
  31. package/edit/list/styles/css/index.css +39 -39
  32. package/edit/select/lambo-edit-date-range.vue +147 -147
  33. package/edit/select/lambo-edit-date-time.vue +122 -122
  34. package/edit/select/lambo-edit-date.vue +120 -120
  35. package/edit/select/lambo-edit-input-textarea.vue +91 -91
  36. package/edit/select/lambo-edit-input.vue +91 -91
  37. package/edit/select/lambo-edit-multi-select.vue +168 -168
  38. package/edit/select/lambo-edit-search-single-select.vue +186 -186
  39. package/edit/select/lambo-edit-single-select.vue +162 -162
  40. package/edit/select/styles/css/index.css +133 -133
  41. package/flow/approval/flow-approval.vue +552 -552
  42. package/flow/comps/flow-attachment-list.vue +230 -230
  43. package/flow/comps/flow-attachment-modal.vue +194 -194
  44. package/flow/comps/flow-copy-users.vue +358 -358
  45. package/flow/comps/flow-node-card.vue +150 -150
  46. package/flow/comps/flow-node-header.vue +172 -172
  47. package/flow/comps/flow-util.js +156 -156
  48. package/flow/comps/icons/approved.svg +11 -11
  49. package/flow/comps/icons/canceled.svg +11 -11
  50. package/flow/comps/icons/rejected.svg +11 -11
  51. package/flow/comps/icons/underway.svg +11 -11
  52. package/flow/detail/flow-detail.vue +467 -467
  53. package/flow/index.js +51 -51
  54. package/flow/lambo-flow-detail.vue +912 -912
  55. package/flow/lambo-flow-edit.vue +15 -15
  56. package/flow/submit/flow-submit.vue +383 -383
  57. package/icon/lambo-required-red-star.vue +47 -47
  58. package/icon/lambo-vector-icon.vue +71 -71
  59. package/list/lambo-list.vue +412 -413
  60. package/nav/lambo-top-nav.vue +81 -81
  61. package/order/comps/icons/approved.svg +10 -10
  62. package/order/comps/icons/underway.svg +10 -10
  63. package/order/comps/order-attachment-list.vue +228 -228
  64. package/order/comps/order-attachment-modal.vue +194 -194
  65. package/order/comps/order-node-card.vue +126 -126
  66. package/order/comps/order-node-header.vue +133 -133
  67. package/order/comps/order-util.js +132 -132
  68. package/order/detail/order-detail.vue +432 -432
  69. package/order/handle/order-handle.vue +517 -517
  70. package/order/index.js +33 -33
  71. package/package.json +38 -37
  72. package/search/lambo-date-range-page.vue +196 -196
  73. package/search/lambo-date-range.vue +111 -111
  74. package/search/lambo-date.vue +105 -105
  75. package/search/lambo-input.vue +74 -74
  76. package/search/lambo-multi-select.vue +129 -129
  77. package/search/lambo-org-select-page.vue +109 -109
  78. package/search/lambo-search-box.vue +61 -61
  79. package/search/lambo-search-single-select.vue +152 -152
  80. package/search/lambo-single-select.vue +123 -123
  81. package/search/lambo-week-date-select.vue +521 -521
  82. package/search/styles/css/index.css +138 -138
  83. package/styles/base.less +77 -77
  84. package/styles/components/btn.less +7 -7
  85. package/styles/components/search.less +33 -33
  86. package/styles/components/tag.less +181 -181
  87. package/styles/index.less +4 -4
  88. package/table/lambo-ag-table.vue +227 -227
  89. package/tag/lambo-tag.vue +23 -23
  90. package/title/lambo-title1.vue +151 -151
  91. package/title/lambo-title2.vue +37 -37
  92. package/title/lambo-title3.vue +77 -77
  93. package/util/assist.js +43 -43
  94. package/util/axios/cacheconf.js +19 -19
  95. package/util/axios/index.js +11 -11
  96. package/util/axios/interceptors.js +101 -101
  97. package/util/bus.js +4 -4
  98. package/util/jssdk-sczy.js +104 -104
  99. package/util/jssdk.js +608 -565
  100. package/util/math.js +76 -76
  101. package/util/token.js +36 -36
@@ -1,228 +1,228 @@
1
- <template>
2
- <div class="attachment-section" :class="{ 'no-border': !showBorder }">
3
- <div class="attachment-header" v-if="showTitle || editable">
4
- <div class="attachment-title" v-if="showTitle">
5
- <van-icon name="paperclip" size="14" style="margin-right: 4px"></van-icon>
6
- 附件({{ attachments.length }})
7
- </div>
8
- <van-uploader
9
- v-if="editable"
10
- :after-read="handleAfterRead"
11
- :accept="accept"
12
- :show-preview="false"
13
- :show-upload-list="false"
14
- :disabled="uploading"
15
- >
16
- <div class="upload-btn" :class="{ uploading }">
17
- <van-icon :name="uploading ? 'replay' : 'plus'" size="14"></van-icon>
18
- {{ uploading ? '上传中' : '上传' }}
19
- </div>
20
- </van-uploader>
21
- </div>
22
- <div class="attachment-list" v-if="attachments && attachments.length > 0">
23
- <div
24
- v-for="(file, index) in attachments"
25
- :key="index"
26
- class="attachment-item"
27
- @click="handleClick(file)"
28
- >
29
- <van-icon :name="getFileIcon(file.fileName || file.name)" size="14"></van-icon>
30
- <span class="file-name">{{ file.fileName || file.name }}</span>
31
- <span class="file-size">{{ formatFileSize(file.fileSize || file.size) }}</span>
32
- <van-icon
33
- v-if="editable"
34
- name="cross"
35
- class="remove-file"
36
- @click.stop="handleRemove(index)"
37
- ></van-icon>
38
- </div>
39
- </div>
40
- </div>
41
- </template>
42
-
43
- <script>
44
- import { Toast } from 'vant'
45
- import { axios } from '../../util/axios'
46
- import { fileGetUrl, fileUploadUrl } from '../../api/doc'
47
- import { getFileIcon, formatFileSize } from './order-util.js'
48
-
49
- export default {
50
- name: 'OrderAttachmentList',
51
- props: {
52
- uploadEnabled: {
53
- type: Boolean,
54
- default: true
55
- },
56
- attachments: {
57
- type: Array,
58
- default: () => []
59
- },
60
- showTitle: {
61
- type: Boolean,
62
- default: true
63
- },
64
- showBorder: {
65
- type: Boolean,
66
- default: true
67
- },
68
- editable: {
69
- type: Boolean,
70
- default: false
71
- },
72
- accept: {
73
- type: String,
74
- default: ''
75
- }
76
- },
77
- data() {
78
- return {
79
- uploading: false
80
- }
81
- },
82
- methods: {
83
- getFileIcon,
84
- formatFileSize,
85
- handleClick(file) {
86
- this.$emit('click', file)
87
- },
88
- handleAfterRead(fileObj) {
89
- this.$emit('after-read', fileObj)
90
- if (!this.uploadEnabled) return
91
- const file = fileObj.file
92
- const formData = new FormData()
93
- formData.append('file', file)
94
- this.uploading = true
95
- axios.post(fileUploadUrl, formData).then(res => {
96
- if (res && res.code === 1 && res.data && res.data.length > 0 && res.data[0].fileId) {
97
- const resFile = res.data[0]
98
- const fileData = {
99
- fileId: resFile.fileId,
100
- fileName: resFile.fileName || file.name,
101
- fileSize: resFile.fileSize || file.size,
102
- fileUrl: resFile.fileUrl || resFile.url || resFile.downloadUrl || fileGetUrl + resFile.fileId
103
- }
104
- Toast.success(fileData.fileName + '上传成功')
105
- this.$emit('upload-success', fileData)
106
- return
107
- }
108
- Toast.fail('文件' + file.name + '上传失败')
109
- this.$emit('upload-error', res)
110
- }).catch(error => {
111
- Toast.fail('文件' + file.name + '上传异常')
112
- this.$emit('upload-error', error)
113
- }).finally(() => {
114
- this.uploading = false
115
- })
116
- },
117
- handleRemove(index) {
118
- this.$emit('remove', index)
119
- }
120
- }
121
- }
122
- </script>
123
-
124
- <style scoped>
125
- .attachment-section {
126
- margin-top: 12px;
127
- padding-top: 12px;
128
- border-top: 1px solid #f0f0f0;
129
- }
130
-
131
- .attachment-section.no-border {
132
- margin-top: 0;
133
- padding-top: 0;
134
- border-top: none;
135
- }
136
-
137
- .attachment-header {
138
- display: flex;
139
- align-items: center;
140
- justify-content: space-between;
141
- margin-bottom: 8px;
142
- }
143
-
144
- .attachment-title {
145
- font-size: 13px;
146
- font-weight: 500;
147
- color: #595959;
148
- display: flex;
149
- align-items: center;
150
- }
151
-
152
- .attachment-list {
153
- display: flex;
154
- flex-wrap: wrap;
155
- gap: 8px;
156
- }
157
-
158
- .attachment-item {
159
- display: inline-flex;
160
- align-items: center;
161
- padding: 6px 10px;
162
- background: #fff;
163
- border: 1px solid #e8e8e8;
164
- border-radius: 4px;
165
- cursor: pointer;
166
- transition: all 0.2s;
167
- font-size: 12px;
168
- gap: 6px;
169
- color: #595959;
170
- height: 32px;
171
- }
172
-
173
- .attachment-item:hover {
174
- background: #f0f0f0;
175
- color: #262626;
176
- }
177
-
178
- .attachment-item .van-icon {
179
- color: #8c8c8c;
180
- vertical-align: middle;
181
- flex-shrink: 0;
182
- }
183
-
184
- .file-name {
185
- max-width: 120px;
186
- overflow: hidden;
187
- text-overflow: ellipsis;
188
- white-space: nowrap;
189
- }
190
-
191
- .file-size {
192
- color: #bfbfbf;
193
- flex-shrink: 0;
194
- font-size: 11px;
195
- }
196
-
197
- .remove-file {
198
- color: #bfbfbf;
199
- margin-left: 4px;
200
- }
201
-
202
- .remove-file:hover {
203
- color: #ee0a24;
204
- }
205
-
206
- .upload-btn {
207
- display: inline-flex;
208
- align-items: center;
209
- padding: 6px 10px;
210
- background: #fff;
211
- border: 1px dashed #dcdee0;
212
- border-radius: 4px;
213
- cursor: pointer;
214
- font-size: 12px;
215
- color: #1989fa;
216
- transition: all 0.2s;
217
- }
218
-
219
- .upload-btn:hover {
220
- border-color: #1989fa;
221
- background: #e6f7ff;
222
- }
223
-
224
- .upload-btn.uploading {
225
- opacity: 0.6;
226
- cursor: not-allowed;
227
- }
228
- </style>
1
+ <template>
2
+ <div class="attachment-section" :class="{ 'no-border': !showBorder }">
3
+ <div class="attachment-header" v-if="showTitle || editable">
4
+ <div class="attachment-title" v-if="showTitle">
5
+ <van-icon name="paperclip" size="14" style="margin-right: 4px"></van-icon>
6
+ 附件({{ attachments.length }})
7
+ </div>
8
+ <van-uploader
9
+ v-if="editable"
10
+ :after-read="handleAfterRead"
11
+ :accept="accept"
12
+ :show-preview="false"
13
+ :show-upload-list="false"
14
+ :disabled="uploading"
15
+ >
16
+ <div class="upload-btn" :class="{ uploading }">
17
+ <van-icon :name="uploading ? 'replay' : 'plus'" size="14"></van-icon>
18
+ {{ uploading ? '上传中' : '上传' }}
19
+ </div>
20
+ </van-uploader>
21
+ </div>
22
+ <div class="attachment-list" v-if="attachments && attachments.length > 0">
23
+ <div
24
+ v-for="(file, index) in attachments"
25
+ :key="index"
26
+ class="attachment-item"
27
+ @click="handleClick(file)"
28
+ >
29
+ <van-icon :name="getFileIcon(file.fileName || file.name)" size="14"></van-icon>
30
+ <span class="file-name">{{ file.fileName || file.name }}</span>
31
+ <span class="file-size">{{ formatFileSize(file.fileSize || file.size) }}</span>
32
+ <van-icon
33
+ v-if="editable"
34
+ name="cross"
35
+ class="remove-file"
36
+ @click.stop="handleRemove(index)"
37
+ ></van-icon>
38
+ </div>
39
+ </div>
40
+ </div>
41
+ </template>
42
+
43
+ <script>
44
+ import { Toast } from 'vant'
45
+ import { axios } from '../../util/axios'
46
+ import { fileGetUrl, fileUploadUrl } from '../../api/doc'
47
+ import { getFileIcon, formatFileSize } from './order-util.js'
48
+
49
+ export default {
50
+ name: 'OrderAttachmentList',
51
+ props: {
52
+ uploadEnabled: {
53
+ type: Boolean,
54
+ default: true
55
+ },
56
+ attachments: {
57
+ type: Array,
58
+ default: () => []
59
+ },
60
+ showTitle: {
61
+ type: Boolean,
62
+ default: true
63
+ },
64
+ showBorder: {
65
+ type: Boolean,
66
+ default: true
67
+ },
68
+ editable: {
69
+ type: Boolean,
70
+ default: false
71
+ },
72
+ accept: {
73
+ type: String,
74
+ default: ''
75
+ }
76
+ },
77
+ data() {
78
+ return {
79
+ uploading: false
80
+ }
81
+ },
82
+ methods: {
83
+ getFileIcon,
84
+ formatFileSize,
85
+ handleClick(file) {
86
+ this.$emit('click', file)
87
+ },
88
+ handleAfterRead(fileObj) {
89
+ this.$emit('after-read', fileObj)
90
+ if (!this.uploadEnabled) return
91
+ const file = fileObj.file
92
+ const formData = new FormData()
93
+ formData.append('file', file)
94
+ this.uploading = true
95
+ axios.post(fileUploadUrl, formData).then(res => {
96
+ if (res && res.code === 1 && res.data && res.data.length > 0 && res.data[0].fileId) {
97
+ const resFile = res.data[0]
98
+ const fileData = {
99
+ fileId: resFile.fileId,
100
+ fileName: resFile.fileName || file.name,
101
+ fileSize: resFile.fileSize || file.size,
102
+ fileUrl: resFile.fileUrl || resFile.url || resFile.downloadUrl || fileGetUrl + resFile.fileId
103
+ }
104
+ Toast.success(fileData.fileName + '上传成功')
105
+ this.$emit('upload-success', fileData)
106
+ return
107
+ }
108
+ Toast.fail('文件' + file.name + '上传失败')
109
+ this.$emit('upload-error', res)
110
+ }).catch(error => {
111
+ Toast.fail('文件' + file.name + '上传异常')
112
+ this.$emit('upload-error', error)
113
+ }).finally(() => {
114
+ this.uploading = false
115
+ })
116
+ },
117
+ handleRemove(index) {
118
+ this.$emit('remove', index)
119
+ }
120
+ }
121
+ }
122
+ </script>
123
+
124
+ <style scoped>
125
+ .attachment-section {
126
+ margin-top: 12px;
127
+ padding-top: 12px;
128
+ border-top: 1px solid #f0f0f0;
129
+ }
130
+
131
+ .attachment-section.no-border {
132
+ margin-top: 0;
133
+ padding-top: 0;
134
+ border-top: none;
135
+ }
136
+
137
+ .attachment-header {
138
+ display: flex;
139
+ align-items: center;
140
+ justify-content: space-between;
141
+ margin-bottom: 8px;
142
+ }
143
+
144
+ .attachment-title {
145
+ font-size: 13px;
146
+ font-weight: 500;
147
+ color: #595959;
148
+ display: flex;
149
+ align-items: center;
150
+ }
151
+
152
+ .attachment-list {
153
+ display: flex;
154
+ flex-wrap: wrap;
155
+ gap: 8px;
156
+ }
157
+
158
+ .attachment-item {
159
+ display: inline-flex;
160
+ align-items: center;
161
+ padding: 6px 10px;
162
+ background: #fff;
163
+ border: 1px solid #e8e8e8;
164
+ border-radius: 4px;
165
+ cursor: pointer;
166
+ transition: all 0.2s;
167
+ font-size: 12px;
168
+ gap: 6px;
169
+ color: #595959;
170
+ height: 32px;
171
+ }
172
+
173
+ .attachment-item:hover {
174
+ background: #f0f0f0;
175
+ color: #262626;
176
+ }
177
+
178
+ .attachment-item .van-icon {
179
+ color: #8c8c8c;
180
+ vertical-align: middle;
181
+ flex-shrink: 0;
182
+ }
183
+
184
+ .file-name {
185
+ max-width: 120px;
186
+ overflow: hidden;
187
+ text-overflow: ellipsis;
188
+ white-space: nowrap;
189
+ }
190
+
191
+ .file-size {
192
+ color: #bfbfbf;
193
+ flex-shrink: 0;
194
+ font-size: 11px;
195
+ }
196
+
197
+ .remove-file {
198
+ color: #bfbfbf;
199
+ margin-left: 4px;
200
+ }
201
+
202
+ .remove-file:hover {
203
+ color: #ee0a24;
204
+ }
205
+
206
+ .upload-btn {
207
+ display: inline-flex;
208
+ align-items: center;
209
+ padding: 6px 10px;
210
+ background: #fff;
211
+ border: 1px dashed #dcdee0;
212
+ border-radius: 4px;
213
+ cursor: pointer;
214
+ font-size: 12px;
215
+ color: #1989fa;
216
+ transition: all 0.2s;
217
+ }
218
+
219
+ .upload-btn:hover {
220
+ border-color: #1989fa;
221
+ background: #e6f7ff;
222
+ }
223
+
224
+ .upload-btn.uploading {
225
+ opacity: 0.6;
226
+ cursor: not-allowed;
227
+ }
228
+ </style>