meixioacomponent 0.4.2 → 0.4.6

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 (56) hide show
  1. package/lib/meixioacomponent.common.js +16241 -19856
  2. package/lib/meixioacomponent.umd.js +16353 -19968
  3. package/lib/meixioacomponent.umd.min.js +33 -34
  4. package/lib/style/element/index.css +1182 -1153
  5. package/lib/style/theme/light.less +5 -4
  6. package/package.json +2 -2
  7. package/packages/components/base/baseCropper/index.vue +2 -1
  8. package/packages/components/base/baseDialog/index.vue +13 -7
  9. package/packages/components/base/baseDrawer/index.vue +5 -2
  10. package/packages/components/base/baseIcon/index.vue +1 -2
  11. package/packages/components/base/baseList/index.js +6 -0
  12. package/packages/components/base/baseList/index.vue +48 -0
  13. package/packages/components/base/baseList/scrollbar/index.js +8 -0
  14. package/packages/components/base/baseList/scrollbar/src/bar.js +92 -0
  15. package/packages/components/base/baseList/scrollbar/src/main.js +150 -0
  16. package/packages/components/base/baseList/scrollbar/src/util.js +34 -0
  17. package/packages/components/base/baseNumberInput/index.js +6 -0
  18. package/packages/components/base/baseNumberInput/index.vue +191 -0
  19. package/packages/components/base/basePlainTable/basePlainTable.vue +78 -12
  20. package/packages/components/base/basePopoverButton/index.vue +1 -1
  21. package/packages/components/base/baseSection/baseSection.vue +24 -11
  22. package/packages/components/base/baseSingleImgUpload/index.js +6 -0
  23. package/packages/components/base/baseSingleImgUpload/index.vue +147 -0
  24. package/packages/components/base/baseStoreSelect/index.js +6 -0
  25. package/packages/components/base/baseStoreSelect/index.vue +159 -0
  26. package/packages/components/base/baseToggle/toggle.vue +22 -3
  27. package/packages/components/base/baseTreeSelect/index.vue +7 -1
  28. package/packages/components/base/baseUpload/baseUpload.vue +23 -0
  29. package/packages/components/base/baseUpload/baseUploadItem.vue +2 -3
  30. package/packages/components/base/baseUpload/mixins.js +12 -2
  31. package/packages/components/base/baseUploadTemplate/index.vue +19 -3
  32. package/packages/components/base/upload/upload.vue +36 -13
  33. package/packages/components/base/upload/uploadItem.vue +40 -17
  34. package/packages/components/dynamicmount/index.js +30 -29
  35. package/packages/components/index.js +19 -2
  36. package/packages/components/proForm/dialogForm/baseDialogForm.vue +29 -19
  37. package/packages/components/proForm/proForm/proFormItem/index.js +6 -0
  38. package/packages/components/proForm/proForm/{pro_form_item.vue → proFormItem/pro_form_item.vue} +161 -99
  39. package/packages/components/proForm/proForm/pro_form.vue +70 -16
  40. package/packages/components/proForm/proFormWrap/pro_form_wrap.vue +70 -28
  41. package/packages/components/proPageTable/oa_pro_colum_config.vue +24 -28
  42. package/packages/components/proPageTable/oa_pro_footer.vue +12 -10
  43. package/packages/components/proPageTable/oa_pro_screen.vue +1 -0
  44. package/packages/components/proPageTable/oa_pro_screen_item.vue +6 -6
  45. package/packages/components/proPageTable/oa_pro_table.vue +44 -20
  46. package/packages/components/style/element/index.css +1182 -1153
  47. package/packages/components/style/theme/light.less +5 -4
  48. package/packages/config/selectStore/SelectStore.js +26 -17
  49. package/packages/config/uploadRequest.js +1 -0
  50. package/packages/utils/upload.js +22 -21
  51. package/packages/utils/utils.js +110 -111
  52. package/src/App.vue +9 -14
  53. package/src/component/test.vue +333 -233
  54. package/src/component/testSelectStore.js +25 -13
  55. package/src/config/CompanyInfoConfig.js +4 -2
  56. package/packages/components/base/brieflyItem.vue +0 -198
@@ -45,13 +45,12 @@
45
45
  v-if="(isUploadProImg || type == 'img') && imgSrc"
46
46
  class="type-pre-views"
47
47
  >
48
- <div class="handleUploadItem">
48
+ <div class="handleUploadItem" v-if="!disabled">
49
49
  <base-icon
50
50
  :size="`l`"
51
51
  :color="`d`"
52
52
  :event="true"
53
53
  :plain="true"
54
- v-if="!disabled"
55
54
  style="width: 32px; height: 32px;"
56
55
  :name="`meixicomponenticon-close`"
57
56
  @iconClick="handleDeleteUploadItem"
@@ -224,12 +223,12 @@ export default {
224
223
  clickFile() {
225
224
  const { disabled } = this.$props
226
225
  if (disabled) return
226
+ this.$refs.inputFile.value = ''
227
227
  this.$refs.inputFile.click()
228
228
  },
229
229
 
230
230
  async returnFiles(files) {
231
231
  let list = []
232
- console.log(files)
233
232
  const { fileSize } = this.$props
234
233
  for (let i = 0; i < files.length; i++) {
235
234
  if (files[i].size < fileSize * 1048576) {
@@ -1,3 +1,4 @@
1
+ import { Notification } from 'element-ui'
1
2
  import componentConfig from '../../../config/componentConfig'
2
3
  import useUpload from '../../../config/use/UseUpload'
3
4
  export const baseUploadMixins = {
@@ -14,6 +15,7 @@ export const baseUploadMixins = {
14
15
  uploadPath: {
15
16
  type: [String, Array],
16
17
  default: () => {
18
+ // 第二位 代表 是oss 还是 只有miniio
17
19
  return [0, 1]
18
20
  },
19
21
  },
@@ -55,11 +57,19 @@ export const baseUploadMixins = {
55
57
  },
56
58
 
57
59
  uploadEd(list) {
60
+ const filterList = list.filter((item) => {
61
+ if (!item.upload || item.upload.state == 1) {
62
+ return item
63
+ } else {
64
+ Notification.error('文件取消上传或上传失败!')
65
+ }
66
+ })
58
67
  if (!this.isGroup) {
59
- this.module = list
68
+ this.module = filterList
60
69
  }
61
70
  this.uploadLoading = false
62
- this.$emit('uploadEd', list)
71
+ this.module = filterList
72
+ this.$emit('uploadEd', filterList)
63
73
  },
64
74
  },
65
75
  }
@@ -20,7 +20,7 @@
20
20
  <div class="custom-upload-content" v-on:paste="onPasteFile">
21
21
  <span class="notice-text">
22
22
  请选择需要导入的文件(
23
- <strong>点击此处后</strong>
23
+ <strong style="cursor: pointer;">点击此处后</strong>
24
24
  >支持黏贴文件上传)
25
25
  </span>
26
26
  <div class="upload-handle-wrap" v-show="stepActive == 0">
@@ -41,6 +41,7 @@
41
41
  :fileType="fileType"
42
42
  :auto-upload="false"
43
43
  style="display: none;"
44
+ :uploadPath="uploadPath"
44
45
  :uploadType="uploadType"
45
46
  ref="baseUploadItemRef"
46
47
  @uploadEd="uploadEd"
@@ -129,6 +130,10 @@ export default {
129
130
  type: Boolean,
130
131
  default: false,
131
132
  },
133
+
134
+ uploadedCallBack: {
135
+ type: Function,
136
+ },
132
137
  },
133
138
  components: { baseUploadItem, BaseDefaultSvg },
134
139
  computed: {
@@ -152,7 +157,7 @@ export default {
152
157
  },
153
158
  {
154
159
  type: 'primary',
155
- disabled: this.stepActive == 1 ? true : false,
160
+ disabled: this.stepActive == 1 || !this.fileName ? true : false,
156
161
  text: this.stepActive == 0 ? '导入文件' : '确定',
157
162
  click: () => {
158
163
  if (this.stepActive == 0) {
@@ -174,10 +179,16 @@ export default {
174
179
  uploadEd(e) {
175
180
  this.stepActive = 2
176
181
  const { url } = e[0]
182
+ console.log(e)
177
183
  if (url == 'cancel') {
178
184
  this.result = 'fail'
179
185
  } else {
180
- result = 'success'
186
+ this.result = 'success'
187
+ }
188
+ const { uploadedCallBack } = this.$props
189
+
190
+ if (uploadedCallBack) {
191
+ this.uploadedCallBack(this.result)
181
192
  }
182
193
  },
183
194
  onHandleFile() {
@@ -232,5 +243,10 @@ export default {
232
243
  justify-content: center;
233
244
  }
234
245
  }
246
+
247
+ /deep/.svg-icon {
248
+ width: 100px;
249
+ height: 100px;
250
+ }
235
251
  }
236
252
  </style>
@@ -27,6 +27,7 @@
27
27
  :key="index"
28
28
  :item="item"
29
29
  v-for="(item, index) in filterArray"
30
+ @deleteAppendixItem="deleteAppendixItem"
30
31
  ></uploadItemVue>
31
32
  </div>
32
33
  </div>
@@ -78,11 +79,11 @@ export default {
78
79
  },
79
80
 
80
81
  completed() {
81
- let uploadArray = this.$props.uploadArray
82
+ let uploadArray = this.uploadArray
82
83
  return (
83
- uploadArray.filter((item) => {
84
+ uploadArray?.filter((item) => {
84
85
  return item.process == 100
85
- }).length / uploadArray.length
86
+ }).length / uploadArray?.length
86
87
  )
87
88
  },
88
89
  totalStyle() {
@@ -114,24 +115,27 @@ export default {
114
115
  createUpload(uploadItem) {
115
116
  this.uploadArray.push(uploadItem)
116
117
  if (uploadItem.file && uploadItem.process != 100) {
117
- uploadItem.upload = new Upload({
118
- file: uploadItem.file,
119
- uploadProgressFn: (process) => {
120
- uploadItem.process = process
121
- },
122
- })
118
+ this.$set(
119
+ uploadItem,
120
+ 'upload',
121
+ new Upload({
122
+ file: uploadItem.file,
123
+ uploadProgressFn: (process) => {
124
+ uploadItem.process = process
125
+ },
126
+ }),
127
+ )
128
+
123
129
  uploadItem.upload
124
130
  .start()
125
131
  .then((uploadEdUrl) => {
126
132
  this.$set(uploadItem, 'url', uploadEdUrl)
127
- // uploadItem.url = uploadEdUrl;
128
133
  if (uploadItem.cb) {
129
134
  uploadItem.cb([uploadItem])
130
135
  }
131
136
  this.uploadEd()
132
137
  })
133
138
  .catch((error) => {
134
- // uploadItem.url = "cancel";
135
139
  this.$set(uploadItem, 'url', 'cancel')
136
140
  this.uploadEd()
137
141
  })
@@ -179,6 +183,21 @@ export default {
179
183
  }
180
184
  },
181
185
 
186
+ deleteAppendixItem(item) {
187
+ this.$confirm('此操作将取消当前未上传的文件, 是否继续?', '提示', {
188
+ confirmButtonText: '确定',
189
+ cancelButtonText: '取消',
190
+ type: 'warning',
191
+ })
192
+ .then(() => {
193
+ if (item.upload?.state == 0) {
194
+ item.upload.cancel()
195
+ }
196
+ // this.uploadEd()
197
+ })
198
+ .catch(() => {})
199
+ },
200
+
182
201
  uploadFailed() {
183
202
  if (this.$props.uploadEdEvent) {
184
203
  this.$props.uploadEdEvent()
@@ -236,8 +255,12 @@ export default {
236
255
  span {
237
256
  color: var(--bg-white) !important;
238
257
  }
239
- /deep/ i {
240
- color: var(--bg-white) !important;
258
+ /deep/ .base-icon-wrap {
259
+ background: var(--color-warn);
260
+ i {
261
+ color: white !important;
262
+ font-weight: var(--font-weight-kg);
263
+ }
241
264
  }
242
265
  }
243
266
  .upload-content {
@@ -6,7 +6,7 @@
6
6
  <div class="item-content">
7
7
  <div class="item-info">
8
8
  <span class="item-name">{{ fileName }}</span>
9
- <span class="item-size">({{ fileSize }})</span>
9
+ <span class="item-size">- ({{ fileSize }})</span>
10
10
  </div>
11
11
  <div class="item-process-wrap" v-if="type == 'upload'">
12
12
  <div class="item-process-bar" :style="barStyle"></div>
@@ -16,15 +16,17 @@
16
16
  <base-icon
17
17
  :size="`l`"
18
18
  :active="true"
19
- v-if="zhengqueShow"
20
- :name="`meixicomponenticon-zhengque`"
19
+ :event="true"
20
+ @iconClick="handleClose"
21
+ :name="uploadTypeIcon"
22
+ v-if="type == 'upload'"
21
23
  ></base-icon>
22
24
  <base-icon
23
25
  :size="`l`"
24
26
  :event="true"
25
- :name="`meixicomponenticon-lajixiang`"
26
27
  v-if="type == 'appendix'"
27
- @iconClick="deleteAppendixItem"
28
+ @iconClick="handleClose"
29
+ :name="`meixicomponenticon-lajixiang`"
28
30
  ></base-icon>
29
31
  </div>
30
32
  </div>
@@ -35,10 +37,10 @@ import {
35
37
  fileSuffix,
36
38
  filterFileSize,
37
39
  jugeFileTypeKey,
38
- } from "../../../utils/utils";
40
+ } from '../../../utils/utils'
39
41
  export default {
40
42
  data() {
41
- return {};
43
+ return {}
42
44
  },
43
45
  props: {
44
46
  item: {
@@ -48,37 +50,58 @@ export default {
48
50
 
49
51
  type: {
50
52
  type: String,
51
- default: "upload",
53
+ default: 'upload',
52
54
  },
53
55
  },
56
+ created() {},
54
57
  computed: {
55
58
  zhengqueShow() {
56
- return this.process == 100 && this.$props.type == "upload";
59
+ return this.process == 100 && this.$props.type == 'upload'
60
+ },
61
+ uploadTypeIcon() {
62
+ const { item } = this.$props
63
+ if (this.process == 100) {
64
+ const { upload } = item
65
+ if (upload.state == 1) {
66
+ return 'meixicomponenticon-zhengque'
67
+ } else if (upload.state == 2) {
68
+ return 'meixicomponenticon-close'
69
+ }
70
+ } else {
71
+ return 'meixicomponenticon-close'
72
+ }
57
73
  },
58
74
  fileName() {
59
- return this.item.file.name;
75
+ return this.item.file.name
60
76
  },
61
77
  svgKey() {
62
- return jugeFileTypeKey(fileSuffix(this.fileName));
78
+ return jugeFileTypeKey(fileSuffix(this.fileName))
63
79
  },
64
80
  process() {
65
- return this.$props.item.process;
81
+ return this.$props.item.process
66
82
  },
67
83
  fileSize() {
68
- return filterFileSize(this.$props.item.file.size);
84
+ return filterFileSize(this.$props.item.file.size)
69
85
  },
70
86
  barStyle() {
71
87
  return {
72
88
  width: `${this.process}%`,
73
- };
89
+ }
74
90
  },
75
91
  },
76
92
  methods: {
77
- deleteAppendixItem() {
78
- this.$emit("deleteAppendixItem");
93
+ handleClose() {
94
+ const { type } = this.$props
95
+ if (type == 'upload') {
96
+ if (this.process != 100) {
97
+ this.$emit('deleteAppendixItem', this.$props.item)
98
+ }
99
+ } else {
100
+ this.$emit('deleteAppendixItem', this.$props.item)
101
+ }
79
102
  },
80
103
  },
81
- };
104
+ }
82
105
  </script>
83
106
 
84
107
  <style lang="less" scoped>
@@ -1,7 +1,7 @@
1
- import Vue from "vue";
2
- import dynamicMountComponent from "./dynamicMount.vue";
3
- import componentConfig from "../../config/componentConfig";
4
- const ComponentInsertConstructor = Vue.extend(dynamicMountComponent);
1
+ import Vue from 'vue'
2
+ import dynamicMountComponent from './dynamicMount.vue'
3
+ import componentConfig from '../../config/componentConfig'
4
+ const ComponentInsertConstructor = Vue.extend(dynamicMountComponent)
5
5
 
6
6
  //使用方法
7
7
  // this.$dynmaicMount({
@@ -11,38 +11,39 @@ const ComponentInsertConstructor = Vue.extend(dynamicMountComponent);
11
11
  // });
12
12
 
13
13
  const Insert = (options) => {
14
- componentConfig.setDynamicId();
15
- let id = componentConfig.dynamicId;
16
- const componentInsertConstructor = new ComponentInsertConstructor();
17
- componentInsertConstructor.vm = componentInsertConstructor.$mount();
18
- componentInsertConstructor.dom = componentInsertConstructor.vm.$el;
19
- componentInsertConstructor.mountedDom = options.mountedDom;
20
- componentInsertConstructor.vm.id = id;
21
- componentInsertConstructor.vm.vueComponent = options.vueComponent;
22
- componentInsertConstructor.componentProps = options.componentProps;
23
- componentInsertConstructor.vm.init();
24
- let ele = document.createElement("div");
25
- ele.setAttribute("id", `dynamic-${id}`);
14
+ componentConfig.setDynamicId()
15
+ let id = componentConfig.dynamicId
16
+ const componentInsertConstructor = new ComponentInsertConstructor()
17
+ componentInsertConstructor.vm = componentInsertConstructor.$mount()
18
+ componentInsertConstructor.dom = componentInsertConstructor.vm.$el
19
+ componentInsertConstructor.mountedDom = options.mountedDom
20
+ componentInsertConstructor.vm.id = id
21
+ componentInsertConstructor.vm.vueComponent = options.vueComponent
22
+ componentInsertConstructor.componentProps = options.componentProps
23
+ componentInsertConstructor.vm.init()
24
+ let ele = document.createElement('div')
25
+ ele.setAttribute('id', `dynamic-${id}`)
26
+ ele.setAttribute('class', 'dynamic')
26
27
  if (options.mountedDom) {
27
- ele.style.height = "100%";
28
- componentInsertConstructor.vm.$el.style.height = "100%";
28
+ ele.style.height = '100%'
29
+ componentInsertConstructor.vm.$el.style.height = '100%'
29
30
  } else {
30
- ele.style.position = `fixed`;
31
- ele.style.zIndex = 9999;
32
- ele.style.top=`0px`;
33
- ele.style.left=`0px`;
31
+ ele.style.position = `fixed`
32
+ ele.style.zIndex = 9999
33
+ ele.style.top = `0px`
34
+ ele.style.left = `0px`
34
35
  }
35
- ele.appendChild(componentInsertConstructor.dom);
36
+ ele.appendChild(componentInsertConstructor.dom)
36
37
  if (options.mountedDom) {
37
- options.mountedDom.appendChild(ele);
38
+ options.mountedDom.appendChild(ele)
38
39
  } else {
39
- document.body.appendChild(ele);
40
+ document.body.appendChild(ele)
40
41
  }
41
- return componentInsertConstructor.vm;
42
- };
42
+ return componentInsertConstructor.vm
43
+ }
43
44
 
44
45
  export default {
45
46
  install(Vue, options = {}) {
46
- Vue.prototype.$dynmaicMount = Insert;
47
+ Vue.prototype.$dynmaicMount = Insert
47
48
  },
48
- };
49
+ }
@@ -36,6 +36,11 @@ import basePopoverButton from './base/basePopoverButton'
36
36
  import baseTreeSelect from './base/baseTreeSelect'
37
37
  import baseUploadTemplate from './base/baseUploadTemplate'
38
38
  import VueCropper from 'vue-cropper'
39
+ import baseList from './base/baseList'
40
+ import baseNumberInput from './base/baseNumberInput'
41
+ import baseStoreSelect from './base/baseStoreSelect'
42
+ import baseFormItem from './proForm/proForm/proFormItem'
43
+ import baseSingleImgUpload from './base/baseSingleImgUpload'
39
44
  // js 文件相关
40
45
  import Theme from '../config/theme/theme'
41
46
  import DynamicMount from './dynamicmount/index.js'
@@ -50,6 +55,8 @@ import useUpload from '../config/use/UseUpload'
50
55
  import useFixedHeader from '../config/use/useFixedHeader'
51
56
  import useCropper from '../config/use/useCropper'
52
57
 
58
+ import VueDND from 'awe-dnd'
59
+
53
60
  const meixicomponents = [
54
61
  baseAnchor,
55
62
  baseAppendix,
@@ -88,14 +95,20 @@ const meixicomponents = [
88
95
  basePopoverButton,
89
96
  baseTreeSelect,
90
97
  baseUploadTemplate,
98
+ baseList,
99
+ baseNumberInput,
100
+ baseStoreSelect,
101
+ baseFormItem,
102
+ baseSingleImgUpload
91
103
  ]
92
104
 
93
105
  const install = (Vue) => {
94
- meixicomponents.forEach((component) => {
95
- Vue.component(component.name, component)
106
+ meixicomponents.forEach((baseComponent) => {
107
+ Vue.component(baseComponent.name, baseComponent)
96
108
  })
97
109
  Vue.use(DynamicMount)
98
110
  Vue.use(VueCropper)
111
+ Vue.use(VueDND)
99
112
  }
100
113
 
101
114
  if (typeof window !== 'undefined' && window.Vue) {
@@ -143,6 +156,10 @@ export default {
143
156
  basePopoverButton,
144
157
  baseTreeSelect,
145
158
  baseUploadTemplate,
159
+ baseNumberInput,
160
+ baseStoreSelect,
161
+ baseFormItem,
162
+ baseSingleImgUpload,
146
163
  Theme,
147
164
  SelectStore,
148
165
  useImg,
@@ -48,6 +48,10 @@
48
48
  ></slot>
49
49
  </template>
50
50
  </template>
51
+
52
+ <template :slot="item.key" v-if="item.formType == 'template'">
53
+ <slot :name="`formWrap-${item.key}`"></slot>
54
+ </template>
51
55
  </pro_formVue>
52
56
  </div>
53
57
  </div>
@@ -165,6 +169,7 @@ export default {
165
169
  },
166
170
  methods: {
167
171
  createSlots() {
172
+ this.slotList = []
168
173
  for (let i = 0; i < this.module.length; i++) {
169
174
  let item = this.module[i]
170
175
  for (let j = 0; j < item.formList.length; j++) {
@@ -176,30 +181,35 @@ export default {
176
181
  }
177
182
  },
178
183
  disableWatcherResult(params) {
179
- const { result, type, key } = params
180
- let index = 0
181
- let cindex = -1
184
+ this.$nextTick(() => {
185
+ const { result, type, key } = params
186
+ let index = 0
187
+ let cindex = -1
182
188
 
183
- for (let i = 0; i < this.module.length; i++) {
184
- let item = this.module[i]
185
- for (let j = 0; j < item.formList.length; j++) {
186
- let citem = item.formList[j]
187
- if (citem.key == key) {
188
- index = i
189
- cindex = j
190
- break
189
+ for (let i = 0; i < this.module.length; i++) {
190
+ let item = this.module[i]
191
+ for (let j = 0; j < item.formList.length; j++) {
192
+ let citem = item.formList[j]
193
+ if (citem.key == key) {
194
+ index = i
195
+ cindex = j
196
+ break
197
+ }
191
198
  }
192
199
  }
193
- }
194
200
 
195
- if (cindex > -1) {
196
- let formItem = this.module[index].formList[cindex]
197
- if (type == 'hide') {
198
- this.$set(formItem, 'renderHide', result)
199
- } else if (type == 'disable') {
200
- this.$set(formItem, 'disabled', result)
201
+ if (cindex > -1) {
202
+ let formItem = this.module[index].formList[cindex]
203
+ if (type == 'hide') {
204
+ this.$set(formItem, 'renderHide', result)
205
+ } else if (type == 'disable') {
206
+ this.$set(formItem, 'disabled', result)
207
+ } else if (type == 'template') {
208
+ formItem.type = result
209
+ this.createSlots()
210
+ }
201
211
  }
202
- }
212
+ })
203
213
  },
204
214
  setLabelPosition(type) {
205
215
  if (!type) {
@@ -0,0 +1,6 @@
1
+ import baseFormItem from "./pro_form_item.vue";
2
+
3
+ baseFormItem.install = function (Vue) {
4
+ Vue.component(baseFormItem.name, baseFormItem);
5
+ };
6
+ export default baseFormItem;