meixioacomponent 1.1.49 → 2.0.1

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 (107) hide show
  1. package/lib/components/index.d.ts +1 -1
  2. package/lib/components/index.d.ts.map +1 -1
  3. package/lib/components/index.js +3 -3
  4. package/lib/config/use/UseImg.d.ts.map +1 -1
  5. package/lib/config/use/UseImg.js +1 -0
  6. package/lib/meixioacomponent.common.js +17531 -38668
  7. package/lib/meixioacomponent.umd.js +17584 -38721
  8. package/lib/meixioacomponent.umd.min.js +6 -159
  9. package/lib/style/font-family.less +2 -1
  10. package/lib/style/index.less +9 -2
  11. package/lib/style/meixioacomponenticonfont/TCloudNumberVF.ttf +0 -0
  12. package/lib/style/tableStyle.less +15 -13
  13. package/lib/style/tdesignStyle.less +9 -0
  14. package/lib/style/variables.less +1 -1
  15. package/package.json +3 -3
  16. package/packages/components/base/baseAppendix/baseAppendix.vue +12 -11
  17. package/packages/components/base/baseArea/baseArea.vue +49 -54
  18. package/packages/components/base/baseAvatar/baseAvatar.vue +16 -14
  19. package/packages/components/base/baseButton/baseButton.vue +80 -0
  20. package/packages/components/base/baseButton/index.js +6 -0
  21. package/packages/components/base/baseButtonHandle/baseButtonHandle.vue +36 -4
  22. package/packages/components/base/baseDialog/index.vue +131 -102
  23. package/packages/components/base/baseDialogTable/dialogTable.vue +1 -0
  24. package/packages/components/base/baseDrawer/index.vue +119 -89
  25. package/packages/components/base/baseEdito/baseEdito.vue +56 -50
  26. package/packages/components/base/baseFixedHeader/baseFixedHeader.vue +44 -37
  27. package/packages/components/base/baseImageViewer/image-viewer.vue +29 -311
  28. package/packages/components/base/baseImg/baseImg.vue +8 -7
  29. package/packages/components/base/baseInforWrap/baseInforWrap.vue +14 -7
  30. package/packages/components/base/baseLineInfoItem/baseLineInfoItem.vue +4 -4
  31. package/packages/components/base/baseList/index.vue +10 -23
  32. package/packages/components/base/baseMoverVerifiBar/baseMoverVerifiBar.vue +7 -13
  33. package/packages/components/base/baseNumberInput/index.vue +42 -158
  34. package/packages/components/base/basePagination/index.vue +24 -31
  35. package/packages/components/base/basePlainTable/basePlainTable.vue +89 -183
  36. package/packages/components/base/basePopoverButton/index.vue +45 -36
  37. package/packages/components/base/baseSection/baseSection.vue +17 -8
  38. package/packages/components/base/baseSingleImgUpload/index.vue +2 -2
  39. package/packages/components/base/baseSkeleton/baseSkeleton.vue +0 -1
  40. package/packages/components/base/baseStoreSelect/index.vue +48 -64
  41. package/packages/components/base/baseTag/index.vue +12 -96
  42. package/packages/components/base/baseText/index.vue +66 -79
  43. package/packages/components/base/baseTimeLine/baseTimeLineLeft.vue +1 -1
  44. package/packages/components/base/baseTimeLine/baseTimeLineRight.vue +1 -1
  45. package/packages/components/base/baseTimeTypeSelect/base_time_type_select.vue +73 -78
  46. package/packages/components/base/baseToggle/toggle.vue +28 -48
  47. package/packages/components/base/baseTreeSelect/index.vue +20 -147
  48. package/packages/components/base/baseUpload/baseUploadItem.vue +74 -77
  49. package/packages/components/base/baseUpload/mixins.js +0 -1
  50. package/packages/components/base/baseUpload/uploadMediaView.vue +14 -13
  51. package/packages/components/base/baseUploadImgAndName/index.vue +28 -11
  52. package/packages/components/base/baseUploadTemplate/index.vue +27 -11
  53. package/packages/components/base/baseVideo/index.vue +9 -7
  54. package/packages/components/base/upload/upload.vue +17 -14
  55. package/packages/components/base/upload/uploadItem.vue +40 -46
  56. package/packages/components/dialogCache/index.vue +30 -24
  57. package/packages/components/index.js +3 -3
  58. package/packages/components/index.ts +4 -3
  59. package/packages/components/mixins/tableSectionMixins.js +0 -12
  60. package/packages/components/proForm/dialogForm/baseDialogForm.vue +17 -14
  61. package/packages/components/proForm/proForm/proFormItem/pro_form_item.vue +95 -79
  62. package/packages/components/proForm/proForm/pro_form.vue +47 -52
  63. package/packages/components/proPageTable/oaProTableSearch/oa_pro-table-search.vue +2 -2
  64. package/packages/components/proPageTable/oaProTableSearch/oa_pro_screen.vue +19 -10
  65. package/packages/components/proPageTable/oaProTableSearch/oa_pro_screen_item.vue +28 -27
  66. package/packages/components/proPageTable/oa_pro_colum_config.vue +8 -10
  67. package/packages/components/proPageTable/oa_pro_footer.vue +15 -15
  68. package/packages/components/proPageTable/oa_pro_table-header.vue +19 -31
  69. package/packages/components/proPageTable/oa_pro_table.vue +208 -284
  70. package/packages/components/proPageTable/oa_pro_table_check_handle_bar.vue +28 -16
  71. package/packages/components/searchHeader/searchHeader.vue +16 -17
  72. package/packages/components/style/font-family.less +2 -1
  73. package/packages/components/style/index.less +9 -2
  74. package/packages/components/style/meixioacomponenticonfont/TCloudNumberVF.ttf +0 -0
  75. package/packages/components/style/tableStyle.less +15 -13
  76. package/packages/components/style/tdesignStyle.less +9 -0
  77. package/packages/components/style/variables.less +1 -1
  78. package/packages/config/use/UseImg.js +1 -0
  79. package/packages/config/use/UseImg.ts +1 -0
  80. package/packages/utils/upload.js +61 -72
  81. package/packages/utils/utils.js +316 -276
  82. package/lib/fonts/element-icons.f1a45d74.ttf +0 -0
  83. package/lib/fonts/element-icons.ff18efd1.woff +0 -0
  84. package/lib/style/element/common_class.less +0 -3
  85. package/lib/style/element/fonts/element-icons.ttf +0 -0
  86. package/lib/style/element/fonts/element-icons.woff +0 -0
  87. package/lib/style/element/index.css +0 -30219
  88. package/packages/components/base/elDatePicker/basic/date-table.vue +0 -441
  89. package/packages/components/base/elDatePicker/basic/month-table.vue +0 -269
  90. package/packages/components/base/elDatePicker/basic/time-spinner.vue +0 -304
  91. package/packages/components/base/elDatePicker/basic/year-table.vue +0 -111
  92. package/packages/components/base/elDatePicker/index.js +0 -6
  93. package/packages/components/base/elDatePicker/index.vue +0 -28
  94. package/packages/components/base/elDatePicker/panel/date-range.vue +0 -680
  95. package/packages/components/base/elDatePicker/panel/date.vue +0 -609
  96. package/packages/components/base/elDatePicker/panel/month-range.vue +0 -289
  97. package/packages/components/base/elDatePicker/panel/time-range.vue +0 -248
  98. package/packages/components/base/elDatePicker/panel/time-select.vue +0 -178
  99. package/packages/components/base/elDatePicker/panel/time.vue +0 -186
  100. package/packages/components/base/elDatePicker/picker/date-picker.js +0 -55
  101. package/packages/components/base/elDatePicker/picker/time-picker.js +0 -39
  102. package/packages/components/base/elDatePicker/picker/time-select.js +0 -21
  103. package/packages/components/base/elDatePicker/picker.vue +0 -956
  104. package/packages/components/style/element/common_class.less +0 -3
  105. package/packages/components/style/element/fonts/element-icons.ttf +0 -0
  106. package/packages/components/style/element/fonts/element-icons.woff +0 -0
  107. package/packages/components/style/element/index.css +0 -30219
@@ -8,54 +8,50 @@
8
8
  <slot name="edito-title-slot"></slot>
9
9
  </div>
10
10
  <div class="edito-content-wrap">
11
- <el-input
12
- type="textarea"
13
- v-model="textValue"
14
- :autosize="{ minRows: 4, maxRows: 22 }"
15
- placeholder="请输入内容"
16
- >
17
- </el-input>
11
+ <t-textarea
12
+ v-model="textValue"
13
+ placeholder="请输入内容"
14
+ :autosize="{ minRows: 4, maxRows: 22 }"
15
+ />
18
16
  <baseUploadVue
19
- ref="baseUpload"
20
- v-model="imgList"
21
- v-show="imgList.length > 0"
17
+ ref="baseUpload"
18
+ v-model="imgList"
19
+ v-show="imgList.length > 0"
22
20
  ></baseUploadVue>
23
21
  <baseAppendixVue
24
- :key="appendixKey"
25
- ref="baseAppendix"
26
- v-model="appendix"
27
- v-show="appendix.length > 0"
28
- style="margin-top: calc(var(--margin-5) * 2)"
22
+ :key="appendixKey"
23
+ ref="baseAppendix"
24
+ v-model="appendix"
25
+ v-show="appendix.length > 0"
26
+ style="margin-top: calc(var(--margin-5) * 2)"
29
27
  ></baseAppendixVue>
30
28
  </div>
31
29
  <div class="base-edito-handle" v-if="useUpload">
32
- <base-icon
33
- :size="`m`"
34
- :color="`d`"
35
- :event="true"
36
- :title="`图片`"
37
- @iconClick="addImg"
38
- :name="`icon-tupian_huaban`"
39
- ></base-icon>
40
- <base-icon
41
- :size="`m`"
42
- :color="`d`"
43
- :event="true"
44
- :title="`附件`"
45
- @iconClick="addAppendix"
46
- :name="`meixicomponenticon-weibiaoti--`"
47
- ></base-icon>
30
+
31
+ <t-button shape="square" variant="outline" @click="addImg">
32
+ <template #icon>
33
+ <image-icon
34
+ ></image-icon>
35
+ </template>
36
+ </t-button>
37
+
38
+ <t-button shape="square" variant="outline" @click="addAppendix">
39
+ <template #icon>
40
+ <combination-icon></combination-icon>
41
+ </template>
42
+ </t-button>
43
+
48
44
  </div>
49
45
  <baseUploadItemVue
50
- v-model="appendix"
51
- ref="baseUploadItem"
52
- style="display: none"
53
- :uploadType="`multiple`"
54
- @uploadEd="uploadEd"
46
+ v-model="appendix"
47
+ ref="baseUploadItem"
48
+ style="display: none"
49
+ :uploadType="`multiple`"
50
+ @uploadEd="uploadEd"
55
51
  ></baseUploadItemVue>
56
52
  <baseButtonHandle
57
- :config="handleConfig"
58
- style="margin-top: var(--margin-5)"
53
+ :config="handleConfig"
54
+ style="margin-top: var(--margin-5)"
59
55
  ></baseButtonHandle>
60
56
  </div>
61
57
  </div>
@@ -66,6 +62,7 @@ import baseUploadVue from "../baseUpload/baseUpload.vue";
66
62
  import baseAppendixVue from "../baseAppendix/baseAppendix.vue";
67
63
  import baseUploadItemVue from "../baseUpload/baseUploadItem.vue";
68
64
  import baseButtonHandle from "../baseButtonHandle/baseButtonHandle.vue";
65
+ import {ImageIcon,CombinationIcon} from "tdesign-icons-vue"
69
66
  //
70
67
 
71
68
  export default {
@@ -121,6 +118,8 @@ export default {
121
118
  baseAppendixVue,
122
119
  baseButtonHandle,
123
120
  baseUploadItemVue,
121
+ ImageIcon,
122
+ CombinationIcon
124
123
  },
125
124
  methods: {
126
125
  addImg() {
@@ -134,19 +133,19 @@ export default {
134
133
  let obj = {
135
134
  textValue: this.textValue,
136
135
  imgList: this.imgList
137
- .filter((item) => {
138
- return item.process == 100;
139
- })
140
- .map((item) => {
141
- return item.url;
142
- }),
136
+ .filter((item) => {
137
+ return item.process == 100;
138
+ })
139
+ .map((item) => {
140
+ return item.url;
141
+ }),
143
142
  appendix: this.appendix
144
- .filter((item) => {
145
- return item.process == 100;
146
- })
147
- .map((item) => {
148
- return item.url;
149
- }),
143
+ .filter((item) => {
144
+ return item.process == 100;
145
+ })
146
+ .map((item) => {
147
+ return item.url;
148
+ }),
150
149
  };
151
150
 
152
151
  //console.log(obj);
@@ -168,32 +167,39 @@ export default {
168
167
  background: var(--color-gray-s);
169
168
  border: 2px solid var(--color-border);
170
169
  padding: var(--padding-5) calc(var(--padding-5) * 2);
170
+
171
171
  .no-launch {
172
172
  width: 100%;
173
173
  height: auto;
174
174
  cursor: pointer;
175
175
  padding: calc(var(--padding-5) * 2) 0px;
176
+
176
177
  span {
177
178
  color: var(--font-color-s);
178
179
  font-size: var(--font-base-s);
179
180
  }
180
181
  }
182
+
181
183
  .edito-title-wrap {
182
184
  width: 100%;
183
185
  }
186
+
184
187
  .edito-content-wrap {
185
188
  width: 100%;
186
189
  height: auto;
187
190
  padding: var(--padding-5) 0px;
188
191
  }
192
+
189
193
  /deep/ textarea {
190
194
  resize: none !important;
191
195
  font-weight: var(--font-weight-g);
192
196
  color: var(--font-color-d) !important;
193
197
  }
198
+
194
199
  .base-edito-handle {
195
200
  display: flex;
196
201
  align-items: center;
202
+
197
203
  /deep/ i {
198
204
  font-weight: var(--font-weight-kg);
199
205
  }
@@ -4,50 +4,42 @@
4
4
  <span class="header-text">{{ currentNews.content }}</span>
5
5
 
6
6
  <div class="content-handle-wrap" v-if="showHandle">
7
- <base-icon
8
- :size="`s`"
9
- :event="true"
10
- :plain="true"
11
- :disable="upDisable"
12
- :color="`text-white`"
13
- :name="`meixicomponenticon-shouqi`"
14
- @iconClick="upNews"
15
- >
16
- </base-icon>
17
- <base-icon
18
- :size="`s`"
19
- :event="true"
20
- :plain="true"
21
- :color="`text-white`"
22
- :name="`meixicomponenticon-xiala`"
23
- :disable="downDisable"
24
- @iconClick="downNews"
25
- >
26
- </base-icon>
7
+
8
+ <t-button shape="square" variant="outline" @click="upNews">
9
+ <template #icon>
10
+ <arrow-up-icon
11
+ >
12
+ </arrow-up-icon>
13
+ </template>
14
+ </t-button>
15
+
16
+ <t-button shape="square" variant="outline" @click="downNews">
17
+ <template #icon>
18
+ <arrow-down-icon
19
+ >
20
+ </arrow-down-icon>
21
+ </template>
22
+ </t-button>
23
+
27
24
  </div>
28
- <el-button
29
- size="mini"
30
- @click="newsConfirm"
31
- :type="currentNews.type"
32
- v-if="currentNews.event"
33
- >确定</el-button
34
- >
25
+
26
+ <base-button :type="currentNews.type" v-if="currentNews.event" @click="newsConfirm" size="small">确定
27
+ </base-button>
28
+
35
29
  </div>
30
+ <t-button shape="square" variant="outline" @click="closeHeader">
31
+ <template #icon>
32
+ <close-icon>
33
+ </close-icon>
34
+ </template>
35
+ </t-button>
36
36
 
37
- <base-icon
38
- :size="`s`"
39
- :event="true"
40
- :title="`关闭`"
41
- :color="`text-white`"
42
- :name="`meixicomponenticon-close`"
43
- class="header-close-icon"
44
- @iconClick="closeHeader"
45
- >
46
- </base-icon>
47
37
  </div>
48
38
  </template>
49
39
 
50
40
  <script>
41
+ import {ArrowDownIcon, ArrowUpIcon, CloseIcon} from "tdesign-icons-vue"
42
+
51
43
  export default {
52
44
  name: "baseFixedHeader",
53
45
  data() {
@@ -61,6 +53,11 @@ export default {
61
53
  default: () => [],
62
54
  },
63
55
  },
56
+ components: {
57
+ ArrowDownIcon,
58
+ ArrowUpIcon,
59
+ CloseIcon
60
+ },
64
61
  computed: {
65
62
  currentNews() {
66
63
  return this.$props.newsList[this.index];
@@ -85,9 +82,11 @@ export default {
85
82
  this.index = this.$props.newsList.length - 1;
86
83
  },
87
84
  upNews() {
85
+ if (this.upDisable) return;
88
86
  this.index -= 1;
89
87
  },
90
88
  downNews() {
89
+ if (this.downDisable) return;
91
90
  this.index += 1;
92
91
  },
93
92
  newsConfirm() {
@@ -126,24 +125,29 @@ export default {
126
125
  flex-flow: row nowrap;
127
126
  justify-content: center;
128
127
  transition: all 0.7s ease-in;
128
+
129
129
  .fixed-header-content {
130
130
  display: flex;
131
131
  align-items: center;
132
132
  justify-content: center;
133
+
133
134
  .header-text {
134
135
  font-size: var(--font-size-base);
135
136
  }
137
+
136
138
  .content-handle-wrap {
137
139
  display: flex;
138
140
  flex-flow: column;
139
141
  align-items: center;
140
142
  justify-items: center;
141
143
  margin: 0px calc(var(--margin-5) * 4);
144
+
142
145
  .plain + .plain {
143
146
  margin: 0px;
144
147
  }
145
148
  }
146
149
  }
150
+
147
151
  .header-close-icon {
148
152
  position: absolute;
149
153
  top: 50%;
@@ -151,12 +155,15 @@ export default {
151
155
  transform: translateY(-50%);
152
156
  }
153
157
  }
158
+
154
159
  .header-primary {
155
160
  background: var(--color-primary);
156
161
  }
162
+
157
163
  .header-danger {
158
164
  background: var(--color-error);
159
165
  }
166
+
160
167
  .header-primary,
161
168
  .header-danger {
162
169
  .fixed-header-content {
@@ -1,93 +1,15 @@
1
- <!-- element 源码 勿动 -->
2
1
  <template>
3
- <transition name="viewer-fade">
4
- <div
5
- tabindex="-1"
6
- ref="el-image-viewer__wrapper"
7
- class="el-image-viewer__wrapper"
8
- :style="{ 'z-index': viewerZIndex }"
9
- >
10
- <div class="el-image-viewer__mask" @click.self="handleMaskClick"></div>
11
- <!-- CLOSE -->
12
- <span class="el-image-viewer__btn el-image-viewer__close" @click="hide">
13
- <i class="el-icon-close"></i>
14
- </span>
15
- <!-- ARROW -->
16
- <template v-if="!isSingle">
17
- <span
18
- class="el-image-viewer__btn el-image-viewer__prev"
19
- :class="{ 'is-disabled': !infinite && isFirst }"
20
- @click="prev"
21
- >
22
- <i class="el-icon-arrow-left" />
23
- </span>
24
- <span
25
- class="el-image-viewer__btn el-image-viewer__next"
26
- :class="{ 'is-disabled': !infinite && isLast }"
27
- @click="next"
28
- >
29
- <i class="el-icon-arrow-right" />
30
- </span>
31
- </template>
32
- <!-- ACTIONS -->
33
- <div class="el-image-viewer__btn el-image-viewer__actions">
34
- <div class="el-image-viewer__actions__inner">
35
- <i class="el-icon-zoom-out" @click="handleActions('zoomOut')"></i>
36
- <i class="el-icon-zoom-in" @click="handleActions('zoomIn')"></i>
37
- <i class="el-image-viewer__actions__divider"></i>
38
- <i :class="mode.icon" @click="toggleMode"></i>
39
- <i class="el-image-viewer__actions__divider"></i>
40
- <i
41
- class="el-icon-refresh-left"
42
- @click="handleActions('anticlocelise')"
43
- ></i>
44
- <i
45
- class="el-icon-refresh-right"
46
- @click="handleActions('clocelise')"
47
- ></i>
48
- </div>
49
- </div>
50
- <!-- CANVAS -->
51
- <div class="el-image-viewer__canvas">
52
- <div v-for="(url, i) in urlList" :key="url">
53
- <img
54
- v-if="i === index"
55
- ref="img"
56
- class="el-image-viewer__img"
57
- :key="url"
58
- :src="currentImg"
59
- :style="imgStyle"
60
- @load="handleImgLoad"
61
- @error="handleImgError"
62
- @mousedown="handleMouseDown"
63
- />
64
- </div>
65
- </div>
66
- </div>
67
- </transition>
2
+ <div>
3
+ <t-image-viewer :visible="visible" :images="urlList" :closeOnEscKeydown="true" :z-index="zIndex"
4
+ :close-on-overlay="maskClosable" :index="initialIndex" @index-change="onSwitch" @close="onClose">
5
+ </t-image-viewer>
6
+ </div>
7
+
68
8
  </template>
69
9
 
70
10
  <script>
71
- import { on, off } from "element-ui/src/utils/dom";
72
- import { rafThrottle, isFirefox } from "element-ui/src/utils/util";
73
- import { PopupManager } from "element-ui/src/utils/popup";
74
-
75
- const Mode = {
76
- CONTAIN: {
77
- name: "contain",
78
- icon: "el-icon-full-screen",
79
- },
80
- ORIGINAL: {
81
- name: "original",
82
- icon: "el-icon-c-scale-to-original",
83
- },
84
- };
85
-
86
- const mousewheelEventName = isFirefox() ? "DOMMouseScroll" : "mousewheel";
87
-
88
11
  export default {
89
12
  name: "imageViewer",
90
-
91
13
  props: {
92
14
  urlList: {
93
15
  type: Array,
@@ -99,11 +21,13 @@ export default {
99
21
  },
100
22
  onSwitch: {
101
23
  type: Function,
102
- default: () => {},
24
+ default: () => {
25
+ },
103
26
  },
104
27
  onClose: {
105
28
  type: Function,
106
- default: () => {},
29
+ default: () => {
30
+ },
107
31
  },
108
32
  initialIndex: {
109
33
  type: Number,
@@ -117,241 +41,35 @@ export default {
117
41
  type: Boolean,
118
42
  default: true,
119
43
  },
44
+ value: {
45
+ type: Boolean,
46
+ default: false
47
+ }
120
48
  },
121
49
 
122
50
  data() {
123
51
  return {
124
- index: this.initialIndex,
125
- isShow: false,
126
- infinite: true,
127
- loading: false,
128
- mode: Mode.CONTAIN,
129
- transform: {
130
- scale: 1,
131
- deg: 0,
132
- offsetX: 0,
133
- offsetY: 0,
134
- enableTransition: false,
135
- },
52
+ visible: false
136
53
  };
137
54
  },
138
55
  computed: {
139
- isSingle() {
140
- return this.urlList.length <= 1;
141
- },
142
- isFirst() {
143
- return this.index === 0;
144
- },
145
- isLast() {
146
- return this.index === this.urlList.length - 1;
147
- },
148
- currentImg() {
149
- return this.urlList[this.index];
150
- },
151
- imgStyle() {
152
- const { scale, deg, offsetX, offsetY, enableTransition } = this.transform;
153
- const style = {
154
- transform: `scale(${scale}) rotate(${deg}deg)`,
155
- transition: enableTransition ? "transform .3s" : "",
156
- "margin-left": `${offsetX}px`,
157
- "margin-top": `${offsetY}px`,
158
- };
159
- if (this.mode === Mode.CONTAIN) {
160
- style.maxWidth = style.maxHeight = "100%";
161
- }
162
- return style;
163
- },
164
- viewerZIndex() {
165
- const nextZIndex = PopupManager.nextZIndex();
166
- return this.zIndex > nextZIndex ? this.zIndex : nextZIndex;
167
- },
168
- },
169
- watch: {
170
- index: {
171
- handler: function (val) {
172
- this.reset();
173
- this.onSwitch(val);
56
+ model: {
57
+ set(val) {
58
+ this.$emit('input', val)
174
59
  },
175
- },
176
- currentImg(val) {
177
- this.$nextTick((_) => {
178
- const $img = this.$refs.img[0];
179
- if (!$img.complete) {
180
- this.loading = true;
181
- }
182
- });
183
- },
184
- },
185
- methods: {
186
- hide() {
187
- this.deviceSupportUninstall();
188
-
189
- this.onClose();
190
- },
191
- deviceSupportInstall() {
192
- this._keyDownHandler = (e) => {
193
- e.stopPropagation();
194
- const keyCode = e.keyCode;
195
- switch (keyCode) {
196
- // ESC
197
- case 27:
198
- this.hide();
199
- break;
200
- // SPACE
201
- case 32:
202
- this.toggleMode();
203
- break;
204
- // LEFT_ARROW
205
- case 37:
206
- this.prev();
207
- break;
208
- // UP_ARROW
209
- case 38:
210
- this.handleActions("zoomIn");
211
- break;
212
- // RIGHT_ARROW
213
- case 39:
214
- this.next();
215
- break;
216
- // DOWN_ARROW
217
- case 40:
218
- this.handleActions("zoomOut");
219
- break;
220
- }
221
- };
222
- this._mouseWheelHandler = rafThrottle((e) => {
223
- const delta = e.wheelDelta ? e.wheelDelta : -e.detail;
224
- if (delta > 0) {
225
- this.handleActions("zoomIn", {
226
- zoomRate: 0.015,
227
- enableTransition: false,
228
- });
229
- } else {
230
- this.handleActions("zoomOut", {
231
- zoomRate: 0.015,
232
- enableTransition: false,
233
- });
234
- }
235
- });
236
- on(document, "keydown", this._keyDownHandler);
237
- on(document, mousewheelEventName, this._mouseWheelHandler);
238
- },
239
- deviceSupportUninstall() {
240
- off(document, "keydown", this._keyDownHandler);
241
- off(document, mousewheelEventName, this._mouseWheelHandler);
242
- this._keyDownHandler = null;
243
- this._mouseWheelHandler = null;
244
- },
245
- handleImgLoad(e) {
246
- this.loading = false;
247
-
248
- this.$nextTick(() => {
249
- let item = this.$refs.img[0];
250
-
251
- if (item.clientHeight > document.body.clientHeight) {
252
- this.transform.scale = document.body.clientHeight / item.clientHeight;
253
- }
254
- });
255
- },
256
- handleImgError(e) {
257
- this.loading = false;
258
- e.target.alt = "加载失败";
259
- },
260
- handleMouseDown(e) {
261
- if (this.loading || e.button !== 0) return;
262
-
263
- const { offsetX, offsetY } = this.transform;
264
- const startX = e.pageX;
265
- const startY = e.pageY;
266
- this._dragHandler = rafThrottle((ev) => {
267
- this.transform.offsetX = offsetX + ev.pageX - startX;
268
- this.transform.offsetY = offsetY + ev.pageY - startY;
269
- });
270
- on(document, "mousemove", this._dragHandler);
271
- on(document, "mouseup", (ev) => {
272
- off(document, "mousemove", this._dragHandler);
273
- });
274
-
275
- e.preventDefault();
276
- },
277
- handleMaskClick() {
278
- if (this.maskClosable) {
279
- this.hide();
60
+ get() {
61
+ return this.$props.value
280
62
  }
281
- },
282
- reset() {
283
- this.transform = {
284
- scale: 1,
285
- deg: 0,
286
- offsetX: 0,
287
- offsetY: 0,
288
- enableTransition: false,
289
- };
290
- },
291
- toggleMode() {
292
- if (this.loading) return;
293
-
294
- const modeNames = Object.keys(Mode);
295
- const modeValues = Object.values(Mode);
296
- const index = modeValues.indexOf(this.mode);
297
- const nextIndex = (index + 1) % modeNames.length;
298
- this.mode = Mode[modeNames[nextIndex]];
299
- this.reset();
300
- },
301
- prev() {
302
- if (this.isFirst && !this.infinite) return;
303
- const len = this.urlList.length;
304
- this.index = (this.index - 1 + len) % len;
305
- },
306
- next() {
307
- if (this.isLast && !this.infinite) return;
308
- const len = this.urlList.length;
309
- this.index = (this.index + 1) % len;
310
- },
311
- handleActions(action, options = {}) {
312
- if (this.loading) return;
313
- const { zoomRate, rotateDeg, enableTransition } = {
314
- zoomRate: 0.2,
315
- rotateDeg: 90,
316
- enableTransition: true,
317
- ...options,
318
- };
319
- const { transform } = this;
320
- switch (action) {
321
- case "zoomOut":
322
- if (transform.scale > 0.2) {
323
- transform.scale = parseFloat(
324
- (transform.scale - zoomRate).toFixed(3)
325
- );
326
- }
327
- break;
328
- case "zoomIn":
329
- transform.scale = parseFloat((transform.scale + zoomRate).toFixed(3));
330
- break;
331
- case "clocelise":
332
- transform.deg += rotateDeg;
333
- break;
334
- case "anticlocelise":
335
- transform.deg -= rotateDeg;
336
- break;
337
- }
338
- transform.enableTransition = enableTransition;
339
- },
340
- },
341
- mounted() {
342
- this.deviceSupportInstall();
343
- if (this.appendToBody) {
344
- document.body.appendChild(this.$el);
345
- }
346
- // add tabindex then wrapper can be focusable via Javascript
347
- // focus wrapper so arrow key can't cause inner scroll behavior underneath
348
- this.$refs["el-image-viewer__wrapper"].focus();
349
- },
350
- destroyed() {
351
- // if appendToBody is true, remove DOM node after destroy
352
- if (this.appendToBody && this.$el && this.$el.parentNode) {
353
- this.$el.parentNode.removeChild(this.$el);
354
63
  }
355
64
  },
65
+ watch: {},
66
+ methods: {},
67
+ mounted() {
68
+ this.$nextTick(() => {
69
+ this.visible=true
70
+ })
71
+ }
72
+
73
+
356
74
  };
357
75
  </script>