centaline-data-driven 1.3.1 → 1.3.2

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "centaline-data-driven",
3
- "version": "1.3.01",
3
+ "version": "1.3.02",
4
4
  "description": "ccai",
5
5
  "author": "hjc <3226136347@qq.com>",
6
6
  "private": false,
@@ -21,7 +21,6 @@
21
21
  "save": "^2.4.0",
22
22
  "v-viewer": "^1.6.4",
23
23
  "vue": "2.5.17",
24
- "vue-pdf": "^4.3.0",
25
24
  "vue-ueditor-wrap": "^2.5.6",
26
25
  "vuedraggable": "^2.24.3"
27
26
  },
@@ -4,14 +4,15 @@
4
4
 
5
5
  <!-- <ct-searchlist :searchConditionApi="'/PropertyRETList/getLayoutOfSearch'" :searchDataApi="'/PropertyRETList/getListOfSearchModel'" :searchCategoryApi="'/PropertyRETList/getLayoutOfSearchCategory'"></ct-searchlist> -->
6
6
 
7
- <!-- <ct-searchlist :searchConditionApi="'/SystemParameterList/getLayoutOfSearch'"
8
- :searchDataApi="'/SystemParameterList/getListOfSearchModel'" :apiParam="para"></ct-searchlist> -->
7
+ <ct-searchlist :searchConditionApi="'/ProfileWorklistList/getLayoutOfSearch'"
8
+ :searchCategoryApi="'/ProfileWorklistList/getLayoutOfSearchCategory'"
9
+ :searchDataApi="'/ProfileWorklistList/getListOfSearchModel'" :apiParam="para"></ct-searchlist>
9
10
 
10
- <ct-searchlist :searchConditionApi="'/PropertyRETList/getLayoutOfSearch'"
11
+ <!-- <ct-searchlist :searchConditionApi="'/PropertyRETList/getLayoutOfSearch'"
11
12
  :searchDataApi="'/PropertyRETList/getListOfSearchModel'"
12
13
  :searchCategoryApi="'/PropertyRETList/getLayoutOfSearchCategory'"
13
14
  :searchStatsApi="'/exampleList/getListStats'"
14
- ></ct-searchlist>
15
+ ></ct-searchlist> -->
15
16
 
16
17
  <ct-dialog-list></ct-dialog-list>
17
18
  </div>
@@ -0,0 +1,11 @@
1
+ import browseIframe from './src/browseIframe'
2
+
3
+ browseIframe.install = function (Vue) {
4
+ Vue.component(browseIframe.name, browseIframe);
5
+ }
6
+
7
+ if (typeof window !== 'undefined' && window.Vue) {
8
+ window.Vue.use(browseIframe);
9
+ }
10
+
11
+ export default browseIframe;
@@ -0,0 +1,48 @@
1
+ <template>
2
+ <div style="width:100%;height:100%;">
3
+ <iframe :src="src" ref="iframe" style="width:100%;height:100%;"></iframe>
4
+ </div>
5
+ </template>
6
+ <script>
7
+ export default {
8
+ name: 'ct-iframe',
9
+ props: {
10
+ src:String,
11
+ },
12
+ data() {
13
+ return {
14
+
15
+ };
16
+ },
17
+ mounted () {
18
+ window.addEventListener('message', this.handleMessage)
19
+ },
20
+ handleMessage (event) {
21
+ var self=this;
22
+ var data = event.data;
23
+ switch (data.functionName) {
24
+ case 'new':
25
+ self.$emit('new',data.params);
26
+ break
27
+ case 'update':
28
+ self.$emit('update');
29
+ break
30
+ case 'delete':
31
+ self.$emit('delete');
32
+ break
33
+ case 'refresh':
34
+ self.$emit('refreshParent');
35
+ break
36
+ case 'close':
37
+ self.$emit('closeDialog');
38
+ break
39
+ }
40
+ },
41
+ methods: {
42
+
43
+ }
44
+ }
45
+ </script>
46
+ <style scoped>
47
+
48
+ </style>
@@ -75,8 +75,10 @@
75
75
  //'class': [
76
76
  // 'dialog-content '
77
77
  //]
78
- }, [
79
- h('table', {
78
+ },
79
+ [
80
+ h('table',
81
+ {
80
82
  attrs: {
81
83
  border: '0',
82
84
  cellspacing: '0',
@@ -92,7 +94,8 @@
92
94
  this.bodyClickHandler(event);
93
95
  }
94
96
  }
95
- }, [
97
+ },
98
+ [
96
99
  h('tbody', {}, [
97
100
  h('tr', {}, [
98
101
  h('td', {
@@ -152,8 +155,7 @@
152
155
  if(self.vmodel.pane && self.vmodel.pane.$el.clientHeight<ph){
153
156
  item.attrs.height=(self.vmodel.pane.$el.clientHeight-40)+'px';
154
157
  }
155
- // console.log(document.body.clientHeight);可见区域高度
156
- // console.log(item.attrs.height)
158
+
157
159
  return h('div', {
158
160
  style: {
159
161
  width: item.attrs.width,
@@ -167,7 +169,13 @@
167
169
  }, [])
168
170
  ]);
169
171
  }
170
- else {
172
+ else {var ph=0;
173
+ if(item.attrs.height){
174
+ ph=parseInt(item.attrs.height.replace('px',''));
175
+ }
176
+ if(self.vmodel.pane && self.vmodel.pane.$el.clientHeight<ph){
177
+ item.attrs.height=(self.vmodel.pane.$el.clientHeight-50)+'px';
178
+ }
171
179
  return h('div', {
172
180
  style: {
173
181
  }
@@ -176,11 +184,11 @@
176
184
  attrs: {
177
185
  name: 'name',
178
186
  id: 'id',
179
- src: 'http://10.88.22.35:3333/#/form',
187
+ src: item.attrs.src,
180
188
  frameborder: '0',
181
189
  align: "left",
182
- width: '100%',
183
- height: '100%',
190
+ width: item.attrs.width,
191
+ height: item.attrs.height,
184
192
  scrolling: "yes"
185
193
  }
186
194
  })
@@ -2,44 +2,46 @@
2
2
  <template>
3
3
  <div>
4
4
  <div style="position: relative">
5
- <el-carousel
6
- arrow="hover"
7
- height="199px"
8
- :autoplay="false"
9
- indicator-position="none"
10
- :initial-index="getinitialIndex(albumsList)"
11
- >
12
- <template v-for="(item, index) in albumsList.medias">
13
- <el-carousel-item :key="index">
14
- <div class="swiper-i">
15
- <img
16
- :src="item.mediaUrl + '/260/200'"
17
- @click="viewerfile(index)"
18
- />
19
- <img
20
- :src="item.albumBigImageUrl"
21
- alt=""
22
- class="hous-icon"
23
- v-if="item.albumBigImageUrl && item.albumBigImageUrl != ''"
24
- />
25
- </div> </el-carousel-item
26
- ></template>
27
- </el-carousel>
5
+ <template v-if="newMediaAlbums.length > 0">
6
+ <el-carousel
7
+ arrow="hover"
8
+ height="199px"
9
+ :autoplay="false"
10
+ indicator-position="none"
11
+ :initial-index="getinitialIndex(albumsList)"
12
+ >
13
+ <template v-for="(item, index) in albumsList.medias">
14
+ <el-carousel-item :key="index">
15
+ <div class="swiper-i">
16
+ <img :src="getShowUrl(item)" @click="viewerfile(index)" />
17
+ <img
18
+ :src="item.albumBigImageUrl"
19
+ alt=""
20
+ class="hous-icon"
21
+ v-if="item.albumBigImageUrl && item.albumBigImageUrl != ''"
22
+ />
23
+ </div> </el-carousel-item
24
+ ></template>
25
+ </el-carousel>
28
26
 
29
- <div class="hous-img" style="position: absolute; bottom: 0; z-index: 9">
30
- <div class="img-i" v-for="(item, index) in newMediaAlbums" :key="index">
31
- <img
32
- :src="getDefaultUrl(item) + '/140/135'"
33
- @click="handleClick(index)"
34
- />
35
- <div class="img-bot">
36
- <div>
37
- <img :src="item.albumSmallImageUrl" alt="" class="img-icon" />
38
- <span>{{ item.albumName }}</span>
27
+ <div class="hous-img" style="position: absolute; bottom: 0; z-index: 9">
28
+ <div
29
+ class="img-i"
30
+ v-for="(item, index) in newMediaAlbums"
31
+ :key="index"
32
+ >
33
+ <img :src="getDefaultUrl(item)" @click="handleClick(index)" />
34
+ <div class="img-bot">
35
+ <div>
36
+ <img :src="item.albumSmallImageUrl" alt="" class="img-icon" />
37
+ <span>{{ item.albumName }}</span>
38
+ </div>
39
39
  </div>
40
40
  </div>
41
- </div>
42
- </div>
41
+ </div> </template
42
+ ><template v-else>
43
+ <img :src="noMediaUrl" width="260px" height="199px" />
44
+ </template>
43
45
  </div>
44
46
  </div>
45
47
  </template>
@@ -48,12 +50,14 @@ export default {
48
50
  props: {
49
51
  mediaAlbums: Array,
50
52
  title: String,
53
+ noMediaUrl: String,
51
54
  },
52
55
  data() {
53
56
  return {
54
57
  newMediaAlbums: [],
55
58
  albumsList: [],
56
59
  activeAlbumsIndex: 0,
60
+ flagChange: true,
57
61
  };
58
62
  },
59
63
  created() {
@@ -70,6 +74,8 @@ export default {
70
74
  if (index == this.activeAlbumsIndex) return;
71
75
  this.albumsList = this.newMediaAlbums[index];
72
76
  this.activeAlbumsIndex = index;
77
+ this.flagChange = !this.flagChange;
78
+ this.$forceUpdate();
73
79
  },
74
80
  getinitialIndex(list) {
75
81
  var initialIndex = 0;
@@ -82,11 +88,21 @@ export default {
82
88
  },
83
89
  getDefaultUrl(list) {
84
90
  var initialIndex = this.getinitialIndex(list);
85
- return list.medias[initialIndex].mediaUrl;
91
+ return this.getShowUrl(list.medias[initialIndex]);
92
+ },
93
+
94
+ getShowUrl(list) {
95
+ if (list.mediaTypeID == "2") {
96
+ return list.mediaUrl + "/260/200";
97
+ } else {
98
+ return list.thumbnailUrl;
99
+ }
86
100
  },
87
101
  viewerfile(index) {
88
102
  var self = this;
89
103
 
104
+ var width = parseInt(window.document.body.clientWidth * 0.8);
105
+ width = width > 1160 ? 1160 : width;
90
106
  var dialogOption = {
91
107
  title: this.title || "预览媒体",
92
108
  pane: self.$common.getParentPane(self),
@@ -100,9 +116,7 @@ export default {
100
116
  index: index || 0,
101
117
  // width: self.modelPhotoselect.router.pageWidth + 'px',
102
118
  // height: self.modelPhotoselect.router.pageHeight+'px',
103
- width:
104
- parseInt(window.document.body.clientWidth * 0.8).toString() +
105
- "px",
119
+ width: width + "px",
106
120
  height:
107
121
  parseInt(window.document.body.clientHeight * 0.8).toString() +
108
122
  "px",
@@ -51,7 +51,7 @@
51
51
  <div class="hous-info base-box">
52
52
  <div class="info-conten">
53
53
  <div class="hous-t">
54
- <ct-albums :mediaAlbums="model.mediaAlbums" :title="model.title"> </ct-albums>
54
+ <ct-albums :mediaAlbums="model.mediaAlbums" :title="model.title" :noMediaUrl="model.noMediaUrl"> </ct-albums>
55
55
  </div>
56
56
  <div class="hous-b">
57
57
  <img src="../../../assets/ewm.png" alt="" class="code-ewm">
@@ -203,7 +203,7 @@
203
203
  <div class="info-conten">
204
204
  <div class="hous-t">
205
205
  <ct-albums
206
- :mediaAlbums="model.mediaAlbums"
206
+ :mediaAlbums="model.mediaAlbums" :noMediaUrl="model.noMediaUrl"
207
207
  :title="model.title"
208
208
  >
209
209
  </ct-albums>
@@ -764,6 +764,51 @@
764
764
  else if (field.isSeeVoice) {//看视频
765
765
  self.$common.browseVideo(field,submitData)
766
766
  }
767
+ else if (field.isUrlInLayer) {//URL页面(弹层)
768
+ var dialogOption = {
769
+ title: field.pageTitle,
770
+ pane: self.$common.getParentPane(self),
771
+ content: [{
772
+ attrs: {
773
+ apiParam: field.getActionPara(submitData).para,
774
+ src: 'http://10.88.22.50:3333/#/form',
775
+ width: field.dialogWidth + 'px',
776
+ height: field.dialogHeight + 'px'
777
+ },
778
+ on: {
779
+ submit(ev) {
780
+ if (!field.flagFreshCurrentRow && !field.flagAddRowAfterAction) {
781
+ self.model.doAction(ev);
782
+ }
783
+ self.$forceUpdate();
784
+ self.$refs.footer.$forceUpdate();
785
+ self.$common.closeDialog(dialogOption.dialog);
786
+ self.updateCurrentRow(field, ev);
787
+ },
788
+ new(ev) {
789
+
790
+ },
791
+ update() {
792
+
793
+ },
794
+ delete() {
795
+ var res={};
796
+ res.notification=self.model.Enum.ActionType.Delete;
797
+ res.content='';
798
+ self.model.doAction(res);
799
+ },
800
+ refreshParent() {
801
+ self.getPage(1);
802
+ self.$common.closeDialog(dialogOption.dialog);
803
+ },
804
+ closeDialog() {
805
+ self.$common.closeDialog(dialogOption.dialog);
806
+ }
807
+ }
808
+ }]
809
+ };
810
+ self.$common.openDialog(dialogOption);
811
+ }
767
812
  else {
768
813
  //self.operationLoading = true;
769
814
 
@@ -2,7 +2,7 @@
2
2
  <div style="height: 100%" id="viewer-file" ref="viewerfile">
3
3
  <el-container style="height: 100%; border: 1px solid #eee">
4
4
  <el-aside style="background-color: rgb(238, 241, 246)"
5
- ><div style="height: 100%">
5
+ ><div style="height: 100%" class="viewerMenu">
6
6
  <el-menu
7
7
  :default-openeds="openeds"
8
8
  :default-active="activeitem"
@@ -13,7 +13,18 @@
13
13
  :index="groupIndex.toString()"
14
14
  v-for="(group, groupIndex) in MediaAlbum"
15
15
  >
16
- <template slot="title"> <i></i><div style="padding: 0 10px !important">{{ group.albumName }}</div> </template>
16
+ <template slot="title">
17
+ <i></i>
18
+ <div
19
+ style="
20
+ padding: 0 10px !important;
21
+ height: 30px;
22
+ line-height: 30px;
23
+ "
24
+ >
25
+ {{ group.albumName }}
26
+ </div>
27
+ </template>
17
28
  <el-menu-item-group>
18
29
  <el-menu-item
19
30
  @click="handleClick(item, groupIndex, index)"
@@ -89,7 +100,7 @@
89
100
  <template v-else-if="itemFile.mediaTypeID == '6'">
90
101
  <template
91
102
  v-if="
92
- 'doc,docx,xlsx'.search(itemFile.fileExtension.toLowerCase()) >
103
+ 'doc,docx,xlsx'.search((itemFile.fileExtension).toLowerCase()) >
93
104
  -1
94
105
  "
95
106
  >
@@ -109,29 +120,35 @@
109
120
  'pdf'.search(itemFile.fileExtension.toLowerCase()) > -1
110
121
  "
111
122
  >
112
- <div
113
- class="viewerContent"
114
- style="height: 100%; width: 800px; text-align: center"
115
- >
116
- <ct-viewerPDF :pdfUrl="resultObject"> </ct-viewerPDF>
117
- </div>
123
+
124
+ <ct-viewerPDF :pdfUrl="resultObject" :displayAreaHeight="displayAreaHeight" :displayAreaWidth="displayAreaWidth"> </ct-viewerPDF>
125
+
118
126
  </template>
119
127
  </template>
120
128
  <template v-else> 不支持此类型:{{ itemFile.mediaTypeID }} </template>
121
129
 
122
130
  <template v-if="resultObject != ''">
123
- <div class="magnify-footer" :style="{width:displayAreaWidth+'px','bottom':(displayAreabtm+10)+'px'}">
124
- <div class="magnify-toolbar">
131
+ <div
132
+ class="magnify-footer"
133
+ :style="{
134
+ width: displayAreaWidth + 'px',
135
+ bottom: displayAreabtm + 10 + 'px',
136
+ }"
137
+ >
138
+ <div
139
+ class="magnify-toolbar"
140
+ :style="{ 'margin-left': displayArealeft + 'px' }"
141
+ >
125
142
  <a
126
143
  href="javascript:void(0)"
127
144
  class="magnify-btn el-icon-back"
128
- title="上一张"
145
+ title="上一个"
129
146
  @click="jump(-1)"
130
147
  ></a
131
148
  ><a
132
149
  href="javascript:void(0)"
133
150
  class="magnify-btn el-icon-right"
134
- title="下一张"
151
+ title="下一个"
135
152
  @click="jump(1)"
136
153
  ></a>
137
154
  <template v-if="itemFile.mediaTypeID == '2'">
@@ -211,6 +228,8 @@ export default {
211
228
  openeds: [],
212
229
  displayAreaWidth: 0,
213
230
  displayAreabtm: 0,
231
+ displayArealeft: 0,
232
+ displayAreaHeight: 0,
214
233
  };
215
234
  },
216
235
  created() {
@@ -227,10 +246,14 @@ export default {
227
246
  mounted() {
228
247
  var self = this;
229
248
  self.displayAreaWidth = this.DomWidth();
230
- self.displayAreabtm =self.leftDomTop( self.$refs.displayArea.$el);
249
+ self.displayArealeft = self.DomLeft();
250
+ self.displayAreabtm = self.DomTop(self.$refs.displayArea.$el);
251
+ self.displayAreaHeight =self.$refs.displayArea.$el.offsetHeight;
231
252
  window.onresize = () => {
232
- self.displayAreaWidth = self.DomWidth();
233
- self.displayAreabtm =self.leftDomTop( self.$refs.displayArea.$el);
253
+ self.displayAreaWidth = self.DomWidth();
254
+ self.displayArealeft = self.DomLeft();
255
+ self.displayAreabtm = self.DomTop(self.$refs.displayArea.$el);
256
+ self.displayAreaHeight =self.$refs.displayArea.$el.offsetHeight;
234
257
  };
235
258
 
236
259
  if (
@@ -244,20 +267,35 @@ export default {
244
267
  }
245
268
  },
246
269
  methods: {
247
- DomWidth(){
248
- let arrLength = (window.innerWidth-this.$refs.viewerfile.offsetWidth);
249
- arrLength=arrLength>0?arrLength:0;
250
- var Width= window.innerWidth-arrLength-this.$refs.displayArea.$el.offsetLeft-40;
251
-
270
+ DomWidth() {
271
+ let arrLength = window.innerWidth - this.$refs.viewerfile.offsetWidth;
272
+ arrLength = arrLength > 0 ? arrLength : 0;
273
+ var Width =
274
+ window.innerWidth -
275
+ arrLength -
276
+ this.$refs.displayArea.$el.offsetLeft -
277
+ 40;
278
+
252
279
  return Width;
253
280
  },
254
- leftDomTop() {
281
+ DomLeft() {
282
+ let arrLength = window.innerWidth - this.$refs.viewerfile.offsetWidth;
283
+ arrLength = arrLength > 0 ? arrLength : 0;
284
+ var Width =
285
+ window.innerWidth -
286
+ arrLength -
287
+ this.$refs.displayArea.$el.offsetLeft -
288
+ 40;
289
+
290
+ return Width / 2 - 524 + this.$refs.displayArea.$el.offsetLeft - 40;
291
+ },
292
+ DomTop() {
255
293
  const height = window.innerHeight; //可视区窗口高度
256
294
  const curDomHeight = this.$refs.viewerfile.offsetHeight;
257
295
  // const curDomHeight = dom.getBoundingClientRect().height
258
296
  const curDomY = this.$refs.viewerfile.getBoundingClientRect().y;
259
297
  let curDomBottom = height - curDomHeight - curDomY;
260
- curDomBottom=curDomBottom>0?curDomBottom:0;
298
+ curDomBottom = curDomBottom > 0 ? curDomBottom : 0;
261
299
  return curDomBottom;
262
300
  },
263
301
  FileExtension(item) {
@@ -291,7 +329,7 @@ export default {
291
329
  var index = -1;
292
330
  if (n > 0) {
293
331
  if (
294
- this.activeGroup * 1 + this.activeIndex + 1 + n >=
332
+ this.activeGroup * 1 + this.activeIndex + 1 + n >
295
333
  this.groupCountLen
296
334
  ) {
297
335
  groupIndex = 0;
@@ -364,9 +402,9 @@ export default {
364
402
  },
365
403
  };
366
404
  // 禁止右键菜单
367
- document.oncontextmenu = function () {
368
- return false;
369
- };
405
+ // document.oncontextmenu = function () {
406
+ // return false;
407
+ // };
370
408
  </script>
371
409
 
372
410
  <style>
@@ -393,7 +431,7 @@ html {
393
431
  position: fixed;
394
432
  height: 50px;
395
433
  bottom: 0px;
396
- text-align: center;
434
+ /* text-align: center; */
397
435
  color: #fff;
398
436
  z-index: 9;
399
437
  }
@@ -415,4 +453,18 @@ html {
415
453
  .magnify-btn-close:hover {
416
454
  color: #fff;
417
455
  }
456
+
457
+ .viewerMenu .el-submenu__title,
458
+ .viewerMenu .el-submenu .el-menu-item {
459
+ height: 30px;
460
+ line-height: 30px;
461
+ }
462
+ .viewerMenu .el-menu-item-group__title {
463
+ line-height: 1px;
464
+ height: 1px;
465
+ display: none;
466
+ }
467
+ .viewerMenu .el-submenu__title .el-submenu__icon-arrow {
468
+ display: inline-block;
469
+ }
418
470
  </style>
@@ -1,24 +1,23 @@
1
1
 
2
2
  <template>
3
3
  <div>
4
- <pdf
5
- v-for="i in numPages"
6
- :key="i"
7
- :src="fileUrl"
8
- :page="i"
9
- style="width: 100%"
4
+ <iframe
5
+ ref="previewPdf"
6
+ id="previewPdf"
7
+ :src="'/static/pdf/web/viewer.html?' + fileUrl"
8
+ :height="displayAreaHeight - 35 + 'px'"
9
+ :width="displayAreaWidth + 'px'"
10
+ @load="loadFrame()"
10
11
  >
11
- </pdf>
12
+ </iframe>
12
13
  </div>
13
14
  </template>
14
15
  <script>
15
- import pdf from "vue-pdf";
16
16
  export default {
17
- components: {
18
- pdf,
19
- },
20
17
  props: {
21
18
  pdfUrl: String,
19
+ displayAreaHeight: Number,
20
+ displayAreaWidth: Number,
22
21
  },
23
22
  data() {
24
23
  return {
@@ -29,18 +28,23 @@ export default {
29
28
  mounted() {
30
29
  this.init(this.pdfUrl);
31
30
  },
31
+ created() {
32
+ this.$nextTick(() => {
33
+ // 可以使用回调函数的写法
34
+ // 这个函数中DOM必定渲染完成
35
+ //this.loadFrame();
36
+ });
37
+ },
32
38
  methods: {
33
39
  init(pdfUrl) {
34
40
  var self = this;
35
- var loadingTask = pdf.createLoadingTask(pdfUrl);
36
- loadingTask
37
- .then((pdf) => {
38
- self.fileUrl = loadingTask;
39
- self.numPages = pdf.numPages;
40
- })
41
- .catch((err) => {
42
- console.error("pdf加载失败");
43
- });
41
+ self.fileUrl = 'r='+Math.random()+'&file='+encodeURIComponent(pdfUrl);
42
+ },
43
+ loadFrame() {
44
+ var doc = document.getElementById("previewPdf").contentWindow.document;
45
+ doc.getElementById("download").style.display = "none";
46
+ doc.getElementById("openFile").style.display = "none";
47
+ doc.getElementById("print").style.display = "none";
44
48
  },
45
49
  },
46
50
  watch: {
@@ -50,24 +54,4 @@ export default {
50
54
  },
51
55
  };
52
56
  </script>
53
-
54
- <style>
55
- .Imagebox {
56
- position: relative;
57
- width: 100%;
58
- height: 100%;
59
- overflow: hidden;
60
- }
61
-
62
- .scaleimg {
63
- max-height: 100%;
64
- max-width: 100%;
65
- cursor: move;
66
- position: absolute;
67
- top: 0;
68
- bottom: 0;
69
- left: 0;
70
- right: 0;
71
- margin: auto;
72
- }
73
- </style>
57
+