ocpview-plus 0.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 (195) hide show
  1. package/LICENSE +0 -0
  2. package/README.md +0 -0
  3. package/dist/efviewplus.min.esm.js +99954 -0
  4. package/dist/efviewplus.min.js +142 -0
  5. package/dist/locale/lang.js +1 -0
  6. package/dist/locale/zh-CN.js +1 -0
  7. package/dist/locale/zh-TW.js +1 -0
  8. package/dist/locale/zh-UG.js +1 -0
  9. package/dist/style.css +9 -0
  10. package/dist/styles/efviewplus.css +1 -0
  11. package/package.json +144 -0
  12. package/src/components/base/controlbase.vue +191 -0
  13. package/src/components/base/controlbox.vue +102 -0
  14. package/src/components/base/index.js +3 -0
  15. package/src/components/base/load.js +20 -0
  16. package/src/components/base/probase.js +220 -0
  17. package/src/components/base/size.js +78 -0
  18. package/src/components/billbox/billbox.vue +68 -0
  19. package/src/components/billbox/index.js +2 -0
  20. package/src/components/cascaderbox/cascaderbox.vue +184 -0
  21. package/src/components/cascaderbox/index.js +2 -0
  22. package/src/components/checkbox/checkbox.vue +76 -0
  23. package/src/components/checkbox/checkgroupbox.vue +104 -0
  24. package/src/components/checkbox/index.js +3 -0
  25. package/src/components/colorbox/colorbox.vue +44 -0
  26. package/src/components/colorbox/index.js +2 -0
  27. package/src/components/combobox/combobox.vue +220 -0
  28. package/src/components/combobox/index.js +2 -0
  29. package/src/components/conditionbox/conditionbase.vue +195 -0
  30. package/src/components/conditionbox/conditionbox.vue +63 -0
  31. package/src/components/conditionbox/conditionfilterbox.vue +477 -0
  32. package/src/components/conditionbox/conditionselectorbox.vue +237 -0
  33. package/src/components/conditionbox/index.js +5 -0
  34. package/src/components/conditionbox/queryconditionbox.vue +26 -0
  35. package/src/components/conditionbox/queryconditionboxbase.vue +124 -0
  36. package/src/components/conditionbox/searchconditionbox.vue +114 -0
  37. package/src/components/conditionbox/searchgrid.vue +391 -0
  38. package/src/components/datebox/datebox.vue +129 -0
  39. package/src/components/datebox/daterangebox.vue +155 -0
  40. package/src/components/datebox/index.js +3 -0
  41. package/src/components/form/baseform.vue +677 -0
  42. package/src/components/form/detailsbox.vue +487 -0
  43. package/src/components/form/formbox.vue +29 -0
  44. package/src/components/form/formcardbox.vue +268 -0
  45. package/src/components/form/formcardgroupbox.vue +252 -0
  46. package/src/components/form/formcompro.js +19 -0
  47. package/src/components/form/formdetail.vue +129 -0
  48. package/src/components/form/formdetailtwo.vue +302 -0
  49. package/src/components/form/index.js +8 -0
  50. package/src/components/form/toolanchor.js +46 -0
  51. package/src/components/form/workform.vue +168 -0
  52. package/src/components/grid/basegrid.vue +1061 -0
  53. package/src/components/grid/editgrid.vue +51 -0
  54. package/src/components/grid/editgridbase.vue +947 -0
  55. package/src/components/grid/editgridcard.vue +193 -0
  56. package/src/components/grid/expandrow.vue +137 -0
  57. package/src/components/grid/index.js +6 -0
  58. package/src/components/grid/viewgrid.vue +122 -0
  59. package/src/components/grid/viewgridbase.vue +1284 -0
  60. package/src/components/icon/common-icon.vue +53 -0
  61. package/src/components/icon/eicon.vue +29 -0
  62. package/src/components/icon/icons.vue +42 -0
  63. package/src/components/icon/index.js +2 -0
  64. package/src/components/label/index.js +3 -0
  65. package/src/components/label/showtext.vue +95 -0
  66. package/src/components/load/loadcartoon.vue +228 -0
  67. package/src/components/map/index.js +2 -0
  68. package/src/components/map/mapbox.vue +348 -0
  69. package/src/components/masterplate/appendix.vue +586 -0
  70. package/src/components/masterplate/approval.vue +803 -0
  71. package/src/components/masterplate/base.vue +985 -0
  72. package/src/components/masterplate/billasyncimport.vue +614 -0
  73. package/src/components/masterplate/billconditionbox.vue +224 -0
  74. package/src/components/masterplate/billconditionsbox.vue +427 -0
  75. package/src/components/masterplate/billdetailform.vue +990 -0
  76. package/src/components/masterplate/billimport.vue +263 -0
  77. package/src/components/masterplate/billquerygrid.vue +316 -0
  78. package/src/components/masterplate/billsinglegrid.vue +234 -0
  79. package/src/components/masterplate/birtreport.vue +185 -0
  80. package/src/components/masterplate/detailbtntoolbar.vue +311 -0
  81. package/src/components/masterplate/detailsbox.vue +386 -0
  82. package/src/components/masterplate/editgridcard.vue +222 -0
  83. package/src/components/masterplate/editgridcard2.vue +109 -0
  84. package/src/components/masterplate/formcard.vue +106 -0
  85. package/src/components/masterplate/formcardgroupbox.vue +168 -0
  86. package/src/components/masterplate/formdetailtwo.vue +356 -0
  87. package/src/components/masterplate/gridcolset.vue +227 -0
  88. package/src/components/masterplate/index.js +23 -0
  89. package/src/components/masterplate/layouttemplate.vue +33 -0
  90. package/src/components/masterplate/leftlistrightdetails.vue +474 -0
  91. package/src/components/masterplate/leftlistrightlist.vue +465 -0
  92. package/src/components/masterplate/lefttreerightdetails.vue +619 -0
  93. package/src/components/masterplate/levelreport.vue +510 -0
  94. package/src/components/masterplate/listbtntoolbar.vue +257 -0
  95. package/src/components/masterplate/listdetails.vue +769 -0
  96. package/src/components/masterplate/operlog.vue +272 -0
  97. package/src/components/masterplate/options.vue +110 -0
  98. package/src/components/masterplate/page.vue +102 -0
  99. package/src/components/masterplate/promptmessage.vue +74 -0
  100. package/src/components/masterplate/querybar.vue +490 -0
  101. package/src/components/masterplate/report.vue +357 -0
  102. package/src/components/masterplate/rowbtntoolbar.vue +126 -0
  103. package/src/components/masterplate/simpletree.vue +129 -0
  104. package/src/components/masterplate/simpleviewgrid.vue +144 -0
  105. package/src/components/mychart/bar/bar.vue +202 -0
  106. package/src/components/mychart/basechart.vue +190 -0
  107. package/src/components/mychart/complexmychart/barline.vue +154 -0
  108. package/src/components/mychart/gauge/gauge.vue +83 -0
  109. package/src/components/mychart/index.js +9 -0
  110. package/src/components/mychart/line/line.vue +202 -0
  111. package/src/components/mychart/liquidfill/liquidfill.vue +109 -0
  112. package/src/components/mychart/pie/pie.vue +96 -0
  113. package/src/components/mychart/radar/radar.vue +122 -0
  114. package/src/components/mychart/scatter/scatter.vue +76 -0
  115. package/src/components/numberbox/append.js +11 -0
  116. package/src/components/numberbox/index.js +3 -0
  117. package/src/components/numberbox/numberbox.vue +303 -0
  118. package/src/components/numberbox/numberrangebox.vue +423 -0
  119. package/src/components/picturebox/filebox.vue +365 -0
  120. package/src/components/picturebox/index.js +3 -0
  121. package/src/components/picturebox/picturebox.vue +541 -0
  122. package/src/components/picturebox/uploadbox.vue +164 -0
  123. package/src/components/poptagbox/index.js +2 -0
  124. package/src/components/poptagbox/poptagbox.vue +389 -0
  125. package/src/components/poptextbox/index.js +2 -0
  126. package/src/components/poptextbox/poptextbox.vue +601 -0
  127. package/src/components/radiobox/index.js +2 -0
  128. package/src/components/radiobox/radiogroupbox.vue +76 -0
  129. package/src/components/richtextbox/editor.vue +150 -0
  130. package/src/components/richtextbox/index.js +2 -0
  131. package/src/components/richtextbox/richtextbox.vue +448 -0
  132. package/src/components/textbox/index.js +2 -0
  133. package/src/components/textbox/textbox.vue +98 -0
  134. package/src/components/timebox/index.js +2 -0
  135. package/src/components/timebox/timebox.vue +76 -0
  136. package/src/components/toolbar/ebutton.vue +169 -0
  137. package/src/components/toolbar/index.js +3 -0
  138. package/src/components/toolbar/toolbar.vue +446 -0
  139. package/src/components/tree/basetree.vue +725 -0
  140. package/src/components/tree/index.js +3 -0
  141. package/src/components/tree/treedata.vue +51 -0
  142. package/src/components/tree/treedatabase.vue +189 -0
  143. package/src/components/upload/billimport.vue +233 -0
  144. package/src/components/upload/index.js +2 -0
  145. package/src/components/videobox/index.js +2 -0
  146. package/src/components/videobox/uploadbox.vue +148 -0
  147. package/src/components/videobox/videobox.vue +503 -0
  148. package/src/components/wrichtextbox/editor.vue +219 -0
  149. package/src/components/wrichtextbox/index.js +2 -0
  150. package/src/components/wrichtextbox/wrichtextbox.vue +63 -0
  151. package/src/index.js +215 -0
  152. package/src/locale/format.js +51 -0
  153. package/src/locale/index.js +63 -0
  154. package/src/locale/lang/zh-CN.js +123 -0
  155. package/src/locale/lang/zh-TW.js +114 -0
  156. package/src/locale/lang/zh-UG.js +115 -0
  157. package/src/locale/lang.js +15 -0
  158. package/src/method/case/case.js +1180 -0
  159. package/src/method/config/queryconfig.js +24 -0
  160. package/src/method/const/const.js +815 -0
  161. package/src/method/index.js +8 -0
  162. package/src/static/excel/exportexcel.js +627 -0
  163. package/src/static/iview/coustom.js +463 -0
  164. package/src/store/index.js +19 -0
  165. package/src/store/modules/app.js +53 -0
  166. package/src/styles/README.md +3 -0
  167. package/src/styles/common.less +75 -0
  168. package/src/styles/components/anchor.less +74 -0
  169. package/src/styles/components/approval.less +136 -0
  170. package/src/styles/components/button.less +208 -0
  171. package/src/styles/components/card.less +51 -0
  172. package/src/styles/components/content.less +38 -0
  173. package/src/styles/components/font.less +314 -0
  174. package/src/styles/components/form.less +72 -0
  175. package/src/styles/components/iconfont/fonts/iconfont.less +1376 -0
  176. package/src/styles/components/iconfont/fonts/iconfont.svg +699 -0
  177. package/src/styles/components/iconfont/fonts/iconfont.ttf +0 -0
  178. package/src/styles/components/iconfont/fonts/iconfont.woff +0 -0
  179. package/src/styles/components/iconfont/fonts/iconfont.woff2 +0 -0
  180. package/src/styles/components/index.less +16 -0
  181. package/src/styles/components/input.less +290 -0
  182. package/src/styles/components/modal.less +203 -0
  183. package/src/styles/components/page.less +340 -0
  184. package/src/styles/components/select.less +361 -0
  185. package/src/styles/components/steps.less +367 -0
  186. package/src/styles/components/table.less +544 -0
  187. package/src/styles/components/tabs.less +249 -0
  188. package/src/styles/components/upload.less +83 -0
  189. package/src/styles/custom.less +67 -0
  190. package/src/styles/index.less +6 -0
  191. package/src/styles/pack.less +6 -0
  192. package/src/utils/EfuMessenger.js +155 -0
  193. package/src/utils/assist.js +353 -0
  194. package/src/utils/index.js +1 -0
  195. package/src/utils/random_str.js +10 -0
@@ -0,0 +1,541 @@
1
+ <template>
2
+ <div v-show="myConfig.visible" ref="preview" :style="divStyle">
3
+ <Row type="flex" :justify="rowJustify" align="middle" :gutter="16">
4
+ <Col v-for="(item,index) in imgData" :key="'pic_' + index" :span="colSpan">
5
+ <Badge>
6
+ <template #count>
7
+ <div style="text-align: center;">
8
+ <a v-if="!myConfig.readOnly && (showDelBtn || item.delUrl !== undefined)" href="#" @click.prevent="delFile(index)" style="display:block; height: 50%;">
9
+ <Icon type="md-close-circle" color="#ed4014" size="16" />
10
+ </a>
11
+ <a v-if="showDownBtn && item.url !== undefined" href="#" @click.prevent="downFile(index)" style="display:block; height: 50%;">
12
+ <Icon type="md-cloud-download" color="#ed4014" size="16" />
13
+ </a>
14
+ </div>
15
+  </template>
16
+ <a href="#" @click.prevent="preview()" >
17
+ <img :ref="'img_'+item.fileKey" :src="item.url" :data-original="`${item.url}`" :style="imgStyle" />
18
+ </a>
19
+ </Badge>
20
+ </Col>
21
+ <Col :span="colSpan">
22
+ <UploadBox ref="uploadbox" v-show="showUpload" :config="myConfig" :readOnly="myConfig.readOnly" @success="handleSuccess" :headers="headers" :style="imgStyle">
23
+ <template #btn>
24
+ <Row type="flex" justify="center" align="middle" :style="btnStyle">
25
+ <Icon :custom="myConfig.defaultIcon" :size="myConfig.iconSize" :color="iconColor"/>
26
+ <span v-if="myConfig.text">{{myConfig.text}}</span>
27
+ </Row>
28
+ </template>
29
+ </UploadBox>
30
+ </Col>
31
+ </Row>
32
+ <Row v-show="showMemo" type="flex" justify="start" align="middle" :gutter="16">
33
+ <Col span='24'>
34
+ <ShowText :label="myConfig.memo" contentAlign="left" :class="myConfig.memoClass"></ShowText>
35
+ </Col>
36
+ </Row>
37
+ </div>
38
+ </template>
39
+ <script>
40
+ import Base from '@/components/base/controlbase.vue';
41
+ import UploadBox from './uploadbox.vue';
42
+ import Viewer from 'viewerjs';
43
+ import $ from 'jquery';
44
+ export default {
45
+ name: 'picturebox',
46
+ extends: Base,
47
+ data () {
48
+ return {
49
+ myConfig:{
50
+ fileNum: 1,
51
+ fileSize: 2,
52
+ fileType:['jpg','jpeg','png','gif'],
53
+ icon:'',
54
+ iconSize:18,
55
+ iconColor:'',
56
+ text:'',
57
+ imgPath:'',
58
+ notdelfile:'N',
59
+ downfile:'',
60
+ delfile:'',
61
+ uploadfile:'',
62
+ multiSelect:false,
63
+ simpleFlag:false,
64
+ childColNum:6,
65
+ proName:{
66
+ 'billmoduleid':'billmoduleid',
67
+ 'billno':'billno'
68
+ },
69
+ memo:'',
70
+ memoClass:'',
71
+ defaultIcon:'iconfont icon-custom-shangchuanlogo'
72
+ },
73
+ rowJustify:'center',
74
+ visible: false,
75
+ headers:{
76
+ 'billmoduleid':'',
77
+ 'billno':''
78
+ },
79
+ imgData:[],
80
+ userInfo:'',
81
+ value:'',
82
+ fileSize:2048,
83
+ showUpload:true,
84
+ showDelBtn:true,
85
+ showDownBtn:true,
86
+ showPreview:true,
87
+ uploadFlag:false,
88
+ showMemo:false,
89
+ prefixCls:'demo-upload',
90
+ imgStyle:{},
91
+ style: {},
92
+ btnStyle:{},
93
+ defaultvalue:'',
94
+ divStyle:{}
95
+ };
96
+ },
97
+ components:{
98
+ UploadBox
99
+ },
100
+ computed:{
101
+ colSpan () {
102
+ return this.getSpan();
103
+ },
104
+ iconColor () {
105
+ if (this.myConfig.readOnly) {
106
+ return '#e3e5e8';
107
+ } else {
108
+ return '#f3b352'
109
+ }
110
+ }
111
+ } ,
112
+ props:{
113
+ showStyle: {
114
+ type:String,
115
+ default:'FormItem'
116
+ },
117
+ fileKey:{
118
+ type:String,
119
+ default:''
120
+ }
121
+ },
122
+ methods: {
123
+ customInit() {
124
+ if (this.myConfig.fileSize) {
125
+ this.fileSize = Number(this.myConfig.fileSize) * 1024;
126
+ }
127
+ if (this.myConfig.showDelBtn !== undefined) {
128
+ this.showDelBtn = this.myConfig.showDelBtn;
129
+ }
130
+ if (this.myConfig.showDownBtn !== undefined) {
131
+ this.showDownBtn = this.myConfig.showDownBtn;
132
+ }
133
+ if (this.myConfig.showPreview !== undefined) {
134
+ this.showPreview = this.myConfig.showPreview;
135
+ }
136
+ if (this.myConfig.headers !== undefined) {
137
+ this.headers = Object.assign({},this.headers,this.myConfig.headers);
138
+ }
139
+
140
+ if (this.myConfig.width) {
141
+ this.style.width = (Number(this.myConfig.width) -2) + 'px';
142
+ this.btnStyle.width = (Number(this.myConfig.width) -2) + 'px';
143
+ } else {
144
+ this.style.width = '98%';
145
+ this.btnStyle.width = '98%';
146
+ }
147
+ if (this.myConfig.height) {
148
+ this.style.height = this.myConfig.height + 'px';
149
+ this.style['line-height'] = this.myConfig.height + 'px';
150
+ this.btnStyle.height = (Number(this.myConfig.height) -2) + 'px';
151
+ this.btnStyle['line-height'] = (Number(this.myConfig.height) -2) + 'px';
152
+
153
+ } else {
154
+ this.style.height = '60px';
155
+ this.style['line-height'] = '60px';
156
+ this.btnStyle.height = '58px';
157
+ this.btnStyle['line-height'] = '58px';
158
+ }
159
+ Object.assign(this.imgStyle , this.style);
160
+
161
+ if (this.myConfig.imgWidth) {
162
+ this.imgStyle.width = this.myConfig.imgWidth+ 'px';
163
+ this.btnStyle.width = this.myConfig.imgWidth+ 'px';
164
+ }
165
+
166
+ if (this.myConfig.imgHeight) {
167
+ this.imgStyle.height = this.myConfig.imgHeight+ 'px';
168
+ this.imgStyle['line-height'] = this.myConfig.imgHeight + 'px';
169
+ this.btnStyle.height = (Number(this.myConfig.imgHeight) -2) + 'px';
170
+ this.btnStyle['line-height'] = (Number(this.myConfig.imgHeight) -2) + 'px';
171
+ }
172
+ if (this.myConfig.divStyle) {
173
+ Object.assign(this.divStyle , this.myConfig.divStyle);
174
+ }
175
+
176
+ if (!this.myConfig.simpleFlag) {
177
+ if (!this.myConfig.downfile) {
178
+ this.myConfig.downfile = this.OmdUrl.downfile;
179
+ }
180
+ if (!this.myConfig.delfile) {
181
+ this.myConfig.delfile = this.OmdUrl.delfile;
182
+ }
183
+ if (!this.myConfig.uploadfile) {
184
+ this.myConfig.uploadfile = this.OmdUrl.uploadfile;
185
+ }
186
+ let usercode = this.getUserCode();
187
+ let username = this.getUserName();
188
+
189
+ let userInfo = '&usercode=' + usercode + '&username=' + username + '&ent_id=' + this.getEnt_id() +'&token=' + this.getToken();
190
+ let notdelfile = this.myConfig.notdelfile;
191
+ if (this.myConfig.notdelfile !== undefined) {
192
+ notdelfile = this.myConfig.notdelfile;
193
+ }
194
+ if (notdelfile !== 'Y') {
195
+ userInfo = userInfo + '&notdelfile=N';
196
+ } else {
197
+ userInfo = userInfo + '&notdelfile=Y';
198
+ }
199
+ this.userInfo = encodeURI(userInfo);
200
+ } else {
201
+ this.userInfo = this.userInfo + '&ent_id=' + this.getEnt_id();
202
+ }
203
+ if (this.myConfig.uploadfile.indexOf('uploadFile') !=-1) {
204
+ let url = 'ent_id=' + this.getEnt_id() +'&token=' + this.getToken();
205
+ if (this.myConfig.uploadfile.indexOf('?') != -1) {
206
+ this.myConfig.uploadfile = this.myConfig.uploadfile + '&' + encodeURI(url);
207
+ } else {
208
+ this.myConfig.uploadfile = this.myConfig.uploadfile + '?' + encodeURI(url);
209
+ }
210
+ this.headers = {};
211
+ } else {
212
+ if (this.myConfig.uploadfile.indexOf('?') != -1) {
213
+ this.myConfig.uploadfile = this.myConfig.uploadfile + '&' + 'ent_id=' + this.getEnt_id() +'&token=' + this.getToken();
214
+ } else {
215
+ this.myConfig.uploadfile = this.myConfig.uploadfile + '?' + 'ent_id=' + this.getEnt_id() +'&token=' + this.getToken();
216
+ }
217
+ }
218
+ if (this.myConfig.memo) {
219
+ this.showMemo = true;
220
+ } else {
221
+ this.showMemo = false;
222
+ }
223
+ if (!this.myConfig.multiSelect) {
224
+ this.initFile();
225
+ } else {
226
+ this.rowJustify = 'start';
227
+ }
228
+ },
229
+ initFile() {
230
+ let value = this.fatherValue;
231
+ if (this.fileKey) {
232
+ value = this.fileKey;
233
+ }
234
+ this.imgData = [];
235
+ let obj = {};
236
+ obj.filename = 'img';
237
+ if (value) {
238
+ this.value = value;
239
+ this.showUpload = false;
240
+ obj.fileKey = this.value;
241
+ this.addImgData(obj);
242
+ } else {
243
+ if (this.config.imgPath) {
244
+ let obj = {};
245
+ obj.filename = 'img';
246
+ obj.imgPath = this.config.imgPath;
247
+ this.addImgData (obj);
248
+ this.showUpload = false;
249
+ } else {
250
+ this.showUpload = true;
251
+ }
252
+ }
253
+ if(this.showUpload) {
254
+ if (this.$refs.uploadbox) {
255
+ this.$refs.uploadbox.clearData();
256
+ }
257
+ }
258
+ },
259
+ setImgPath() {
260
+ this.imgData = [];
261
+ if (this.config.imgPath) {
262
+ let obj = {};
263
+ obj.filename = 'img';
264
+ obj.imgPath = this.config.imgPath;
265
+ this.addImgData (obj);
266
+ this.showUpload = false;
267
+ } else {
268
+ this.showUpload = true;
269
+ }
270
+ },
271
+ handleView () {
272
+ this.preview();
273
+ },
274
+ handleRemove () {
275
+ this.delFile();
276
+ this.$refs.upload.clearFiles();
277
+ this.showUpload = true;
278
+ },
279
+ handleSuccess (obj) {
280
+ if (this.myConfig.multiSelect) {
281
+ this.refurbish();
282
+ } else {
283
+ this.imgData = [];
284
+ let data = obj.data;
285
+ if (obj.data instanceof Array) {
286
+ data = obj.data[0]
287
+ }
288
+ this.addImgData(data);
289
+ this.setFatherValue();
290
+ this.showUpload = false;
291
+ }
292
+ if (this.config.onOpenChange) {
293
+ this.config.onOpenChange(false);
294
+ }
295
+ },
296
+ refurbish() {
297
+ if (this.headers.billno && this.headers.billmoduleid) {
298
+ this.getFilesInfo(this.headers.billno,this.headers.billmoduleid,this.myConfig.notdelfile,'2',this.setImgData);
299
+ } else {
300
+ this.imgData = [];
301
+ }
302
+ },
303
+ addImgData(temp) {
304
+ let fileKey = '';
305
+ if (temp.fileKey !== undefined) {
306
+ fileKey = temp.fileKey;
307
+ }
308
+ if (temp.filekey !== undefined) {
309
+ fileKey = temp.filekey;
310
+ }
311
+ if (fileKey) {
312
+ let obj = {};
313
+ if (this.config.customImgPath) {
314
+ obj = this.config.customImgPath(temp);
315
+ } else {
316
+ this.value = fileKey;
317
+ if (!this.myConfig.downfile) {
318
+ return;
319
+ }
320
+ obj.downUrl = this.myConfig.downfile + fileKey + this.userInfo;
321
+ if (temp.filename) {
322
+ obj.title = temp.filename;
323
+ } else {
324
+ obj.title = '';
325
+ }
326
+ obj.url = obj.downUrl;
327
+ }
328
+ obj.filekey = fileKey;
329
+ this.imgData.push(obj);
330
+ } else {
331
+ let obj = {};
332
+ if (temp.url !== undefined) {
333
+ let list = temp.url.split('/');
334
+ this.value = list[list.length - 1];
335
+ obj.title = temp.file;
336
+ obj.url = temp.url;
337
+ obj.downUrl = temp.url;
338
+ obj.filekey = this.value;
339
+ } else {
340
+ obj.title =temp.filename;
341
+ obj.url = temp.imgPath;
342
+ obj.downUrl = temp.imgPath;
343
+ }
344
+ this.imgData.push(obj);
345
+ }
346
+ },
347
+ setImgData (data) {
348
+ this.imgData = [];
349
+ let notdelfile = this.myConfig.notdelfile;
350
+ if (this.config.notdelfile !== undefined) {
351
+ notdelfile = this.config.notdelfile;
352
+ }
353
+ let addflag = false;
354
+ if (data && data.length > 0) {
355
+ data.forEach(el => {
356
+ addflag = false;
357
+ let obj = {};
358
+ Object.assign(obj, el);
359
+ if (obj.modflag) {
360
+ if (notdelfile === 'Y' && obj.modflag === 'M') {
361
+ addflag = true;
362
+ }
363
+ }
364
+ if (!addflag) {
365
+ this.imgData.push(obj);
366
+ }
367
+ });
368
+ }
369
+ },
370
+ preview () {
371
+ if (!this.showPreview) {
372
+ return;
373
+ }
374
+
375
+ if (this.viewer == undefined) {
376
+ this.viewer = new Viewer(this.$refs.preview, {
377
+ url: "data-original",
378
+ show: function () {
379
+ this.viewer.update();
380
+ },
381
+ });
382
+ // this.viewer = new Viewer(this.$refs.preview, {
383
+ // 'url': 'original'
384
+ // });
385
+ }
386
+ this.viewer.show();
387
+ },
388
+ delFile(index) {
389
+ let delUrl = '';
390
+ if (index || index === 0) {
391
+ if (this.imgData[index].filekey) {
392
+ if (this.myConfig.delfile) {
393
+ delUrl = this.myConfig.delfile + this.imgData[index].filekey + this.userInfo;
394
+ }
395
+ }
396
+ if (delUrl) {
397
+ if (delUrl.indexOf('deleteFile') !=-1) {
398
+ $.ajax({
399
+ type : 'POST',
400
+ url : encodeURI(delUrl),
401
+ async : true,
402
+ dataType : 'json'
403
+ });
404
+ } else {
405
+ this.asyncPost(encodeURI(delUrl),'',{},null,null,null,'get');
406
+ }
407
+ }
408
+ if (this.imgData[index].filekey) {
409
+ if (this.$refs.uploadbox) {
410
+ this.$refs.uploadbox.delFile(this.imgData[index].filekey);
411
+ }
412
+ }
413
+ this.imgData.splice(index,1);
414
+ } else {
415
+ let self = this;
416
+ this.imgData.forEach(el => {
417
+ let tempDelUrl = '';
418
+ if (self.myConfig.delfile && el.filekey) {
419
+ delUrl = self.myConfig.delfile + el.filekey + self.userInfo;
420
+ }
421
+ if (tempDelUrl) {
422
+ if (tempDelUrl.indexOf('deleteFile') !=-1) {
423
+ this.asyncPost(encodeURI(el.delUrl),'',null,null,null,null,'post');
424
+ } else {
425
+ this.asyncPost(encodeURI(el.delUrl),'',{},null,null,null,'get');
426
+ }
427
+ }
428
+ });
429
+ this.imgData = [];
430
+ }
431
+ if (!this.myConfig.multiSelect) {
432
+ this.value = '';
433
+ this.showUpload = true;
434
+ this.setFatherValue();
435
+ }
436
+
437
+ },
438
+ downFile (index) {
439
+ window.open(encodeURI(this.imgData[index].url), '_self');
440
+ },
441
+ valueToFatherValue() {
442
+ let para= {};
443
+ if (!this.value) {
444
+ para.value = '';
445
+ } else {
446
+ para.value = this.value;
447
+ }
448
+ return para;
449
+ },
450
+ setFatherValue() {
451
+ let para = this.valueToFatherValue();
452
+ para.name = this.myConfig.name;
453
+ this.$emit('inputValue', para);
454
+ },
455
+ watchCustomFatherValue() {
456
+ this.initFile();
457
+ },
458
+ getSpan() {
459
+ if (this.myConfig.multiSelect) {
460
+ return 24/Number(this.myConfig.childColNum);
461
+ } else {
462
+ if (this.myConfig.isGrid) {
463
+ return null;
464
+ } else {
465
+ return 24;
466
+ }
467
+ }
468
+ },
469
+ setReadOnly(value) {
470
+ let obj = {};
471
+ obj.readOnly = value;
472
+ if (obj.readOnly === false) {
473
+ if (this.config.readOnly !== true) {
474
+ this.setPro(obj);
475
+ }
476
+ } else {
477
+ this.setPro(obj);
478
+ }
479
+ },
480
+ checkPara () {
481
+ if (this.$parent && this.$parent.valueData) {
482
+ this.setHeaders(this.$parent.valueData);
483
+ }
484
+ if (!this.isHeadersOk()) {
485
+ if (this.myConfig.paraErrorInfo) {
486
+ this.alert(this.myConfig.paraErrorInfo);
487
+ return false;
488
+ }
489
+ }
490
+ return true;
491
+ },
492
+ setHeaders(data) {
493
+ for (let temp in this.headers) {
494
+ this.headers[temp] = '';
495
+ }
496
+ if (data) {
497
+ for (let pro in this.myConfig.proName) {
498
+ if (data[this.myConfig.proName[pro]]) {
499
+ this.headers[pro] = data[this.myConfig.proName[pro]];
500
+ } else {
501
+ this.headers[pro] = '';
502
+ }
503
+ }
504
+ }
505
+ this.headers.scenetype = '1';
506
+ if (this.myConfig.multiSelect) {
507
+ this.headers.scenetype = '2';
508
+ }
509
+ this.headers.usercode = this.getUserCode();
510
+ this.headers.username = this.getUserName();
511
+
512
+ },
513
+ isHeadersOk() {
514
+ let flag = true;
515
+ for (let pro in this.headers) {
516
+ if (!this.headers[pro]) {
517
+ flag = false;
518
+ break;
519
+ }
520
+ }
521
+ return flag;
522
+ },
523
+ setProValue(data) {
524
+ if (this.myConfig.multiSelect) {
525
+ if (data) {
526
+ this.setHeaders(data);
527
+ if (this.isHeadersOk()) {
528
+ this.refurbish();
529
+ } else {
530
+ this.imgData = [];
531
+ }
532
+ }
533
+
534
+ }
535
+ }
536
+ },
537
+ mounted () {
538
+ //this.uploadList = this.$refs.upload.fileList;
539
+ }
540
+ };
541
+ </script>
@@ -0,0 +1,164 @@
1
+ <template>
2
+ <Upload
3
+ ref="upload"
4
+ :show-upload-list="false"
5
+ :default-file-list="defaultList"
6
+ :on-success="handleSuccess"
7
+ :format="myConfig.fileType"
8
+ :disabled="disabled"
9
+ :max-size="fileSize"
10
+ :data="headers"
11
+ :on-format-error="handleFormatError"
12
+ :on-exceeded-size="handleMaxSize"
13
+ :before-upload="handleBeforeUpload"
14
+ :multiple="multiSelect"
15
+ type="drag"
16
+ :class="uploadClass"
17
+ :action="uploadUrl"
18
+ >
19
+ <slot name="btn"></slot>
20
+ </Upload>
21
+ </template>
22
+ <script>
23
+ export default {
24
+ name: 'uploadbox',
25
+ data() {
26
+ return {
27
+ defaultList: [],
28
+ fileSize: 2048,
29
+ myConfig: {},
30
+ uploadUrl: '',
31
+ disabled: false,
32
+ };
33
+ },
34
+ props: {
35
+ config: {
36
+ type: Object,
37
+ default: null,
38
+ },
39
+ headers: {
40
+ type: Object,
41
+ default: null,
42
+ },
43
+ readOnly:{
44
+ type:Boolean,
45
+ default:false
46
+ },
47
+ multiSelect:{
48
+ type:Boolean,
49
+ default:true
50
+ }
51
+ },
52
+ computed: {
53
+ uploadClass () {
54
+ if (this.disabled) {
55
+ return 'efuture-upload-disabled';
56
+ } else {
57
+ return '';
58
+ }
59
+ }
60
+ },
61
+ created() {
62
+ this.myConfig = Object.assign({}, this.myConfig, this.config);
63
+ if (this.myConfig.fileSize !== undefined) {
64
+ this.fileSize = 1024 * Number(this.myConfig.fileSize);
65
+ }
66
+ this.uploadUrl = this.myConfig.uploadfile;
67
+ },
68
+ methods: {
69
+ handleSuccess(res, file) {
70
+ if (res.data && res.data.length > 0) {
71
+ if (res.data[0].filekey) {
72
+ file.filekey = res.data[0].filekey;
73
+ } else {
74
+ if (res.data[0].fileKey) {
75
+ file.filekey = res.data[0].fileKey;
76
+ } else {
77
+ if (res.data[0].url !== undefined) {
78
+ let list = res.data[0].url.split('/');
79
+ file.filekey = list[list.length - 1];
80
+ }
81
+ }
82
+ }
83
+ }
84
+ this.$emit('success', res);
85
+ },
86
+ handleFormatError(file) {
87
+ let type = this.myConfig.fileType.join(',');
88
+ this.alert('文件[' + file.name + ']的格式不正确,请上传格式为(' + type + ')的文件');
89
+ },
90
+ handleMaxSize(file) {
91
+ let error = '';
92
+ let size = Number(this.myConfig.fileSize);
93
+ if (size > 1024) {
94
+ let size_G = size / 1024;
95
+ error = size_G.toFixed(2) + 'G';
96
+ } else if (size < 1) {
97
+ let size_k = size * 1024;
98
+ error = size_k.toFixed(2) + 'K';
99
+ } else {
100
+ error = size + 'M';
101
+ }
102
+ this.alert('文件[' +file.name +']的文件大小不允许超过' + error);
103
+ },
104
+ handleBeforeUpload() {
105
+ if (!this.myConfig.multiSelect) {
106
+ const check = this.$refs.upload.fileList.length < this.myConfig.fileNum;
107
+ if (!check) {
108
+ this.alert('上传的文件数量过多,请先删除部分已上传文件再上传');
109
+ }
110
+ return check;
111
+ } else {
112
+ return true;
113
+ }
114
+ },
115
+ delFile(filekey) {
116
+ const index = this.$refs.upload.fileList.findIndex(el => el.filekey === filekey);
117
+ if (index > -1) {
118
+ this.$refs.upload.fileList.splice(index, 1);
119
+ }
120
+ },
121
+ onClick() {
122
+ let flag = true;
123
+ if (this.$parent.$parent.$parent.checkPara) {
124
+ flag = this.$parent.$parent.$parent.checkPara();
125
+ }
126
+ if (flag) {
127
+ if (this.config.onOpenChange) {
128
+ this.config.onOpenChange(true);
129
+ }
130
+ }
131
+
132
+ if (flag) {
133
+ if (this.$refs.upload.$refs && this.$refs.upload.$refs.input) {
134
+ this.$refs.upload.$refs.input.click();
135
+ }
136
+ }
137
+ return flag;
138
+ },
139
+ clearData () {
140
+ this.$refs.upload.clearFiles();
141
+ }
142
+ },
143
+ watch: {
144
+ config: {
145
+ handler(data) {
146
+ if (this.readOnly || data.readOnly) {
147
+ this.disabled = true;
148
+ } else {
149
+ this.disabled = false;
150
+ }
151
+ },
152
+ deep: true,
153
+ immediate: true,
154
+ },
155
+ readOnly(value) {
156
+ if (value || this.config.readOnly) {
157
+ this.disabled = true;
158
+ } else {
159
+ this.disabled = false;
160
+ }
161
+ }
162
+ },
163
+ };
164
+ </script>