ocpview-plus 1.3.15 → 1.3.16

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 (213) hide show
  1. package/README.md +55 -43
  2. package/dist/ocpviewplus.min.esm.js +574 -482
  3. package/dist/ocpviewplus.min.js +9 -9
  4. package/dist/style.css +1 -1
  5. package/dist/styles/efviewplus.css +1 -1
  6. package/package.json +146 -146
  7. package/src/components/base/ContractPrintMixins.js +30 -30
  8. package/src/components/base/controlbase.vue +190 -190
  9. package/src/components/base/controlbox.vue +102 -102
  10. package/src/components/base/index.js +2 -2
  11. package/src/components/base/load.js +19 -19
  12. package/src/components/base/probase.js +220 -220
  13. package/src/components/base/size.js +78 -78
  14. package/src/components/billbox/billbox.vue +67 -67
  15. package/src/components/billbox/index.js +1 -1
  16. package/src/components/cascaderbox/cascaderbox.vue +184 -184
  17. package/src/components/cascaderbox/index.js +2 -2
  18. package/src/components/checkbox/checkbox.vue +75 -75
  19. package/src/components/checkbox/checkgroupbox.vue +103 -103
  20. package/src/components/checkbox/index.js +2 -2
  21. package/src/components/colorbox/colorbox.vue +43 -43
  22. package/src/components/colorbox/index.js +1 -1
  23. package/src/components/combobox/combobox.vue +219 -219
  24. package/src/components/combobox/index.js +1 -1
  25. package/src/components/conditionbox/conditionbase.vue +194 -194
  26. package/src/components/conditionbox/conditionbox.vue +62 -62
  27. package/src/components/conditionbox/conditionfilterbox.vue +479 -479
  28. package/src/components/conditionbox/conditionselectorbox.vue +237 -237
  29. package/src/components/conditionbox/index.js +4 -4
  30. package/src/components/conditionbox/queryconditionbox.vue +25 -25
  31. package/src/components/conditionbox/queryconditionboxbase.vue +123 -123
  32. package/src/components/conditionbox/searchconditionbox.vue +113 -113
  33. package/src/components/conditionbox/searchgrid.vue +391 -391
  34. package/src/components/datebox/DateBoxV1.vue +22 -22
  35. package/src/components/datebox/datebox.vue +129 -129
  36. package/src/components/datebox/daterangebox.vue +154 -154
  37. package/src/components/datebox/index.js +5 -5
  38. package/src/components/form/baseform.vue +676 -676
  39. package/src/components/form/detailsbox.vue +487 -487
  40. package/src/components/form/formbox.vue +28 -28
  41. package/src/components/form/formcardbox.vue +267 -267
  42. package/src/components/form/formcardbox2.vue +228 -228
  43. package/src/components/form/formcardgroupbox.vue +251 -251
  44. package/src/components/form/formcompro.js +18 -18
  45. package/src/components/form/formdetail.vue +128 -128
  46. package/src/components/form/formdetailtwo.vue +302 -302
  47. package/src/components/form/index.js +9 -9
  48. package/src/components/form/toolanchor.js +45 -45
  49. package/src/components/form/workform.vue +167 -167
  50. package/src/components/grid/basegrid.vue +1062 -1062
  51. package/src/components/grid/editgrid.vue +51 -51
  52. package/src/components/grid/editgridbase.vue +1062 -1062
  53. package/src/components/grid/editgridcard.vue +193 -193
  54. package/src/components/grid/expandrow.vue +137 -137
  55. package/src/components/grid/index.js +5 -5
  56. package/src/components/grid/viewgrid.vue +121 -121
  57. package/src/components/grid/viewgridbase.vue +1286 -1286
  58. package/src/components/icon/common-icon.vue +53 -53
  59. package/src/components/icon/eicon.vue +28 -28
  60. package/src/components/icon/icons.vue +42 -42
  61. package/src/components/icon/index.js +1 -1
  62. package/src/components/label/index.js +2 -2
  63. package/src/components/label/showtext.vue +94 -94
  64. package/src/components/load/loadcartoon.vue +227 -227
  65. package/src/components/map/index.js +1 -1
  66. package/src/components/map/mapbox.vue +348 -348
  67. package/src/components/masterplate/RewriteBillListDetails/BillInfoPanel.vue +184 -184
  68. package/src/components/masterplate/RewriteBillListDetails/BillInfoPanelEditTable.vue +838 -838
  69. package/src/components/masterplate/RewriteBillListDetails/BillInfoPanelEditTableControlbox.vue +126 -126
  70. package/src/components/masterplate/RewriteBillListDetails/BillInfoPanelEditTableControlboxNumberbox.vue +27 -27
  71. package/src/components/masterplate/RewriteBillListDetails/BillListPanel.vue +126 -126
  72. package/src/components/masterplate/RewriteBillListDetails/BillListPanelQueryBar.vue +280 -280
  73. package/src/components/masterplate/RewriteBillListDetails/BillListPanelTable.vue +346 -346
  74. package/src/components/masterplate/RewriteBillListDetails/index.vue +325 -325
  75. package/src/components/masterplate/RewriteBillListDetails/mixins/useVxeGridEditTypeKeydownEventHook.js +251 -251
  76. package/src/components/masterplate/RewriteListdetails/BillListPanelV2.vue +115 -115
  77. package/src/components/masterplate/RewriteListdetails/BillListPanelV2QueryBar.vue +24 -24
  78. package/src/components/masterplate/RewriteListdetails/BillListPanelV3.vue +121 -121
  79. package/src/components/masterplate/RewriteListdetails/BillListPanelV3QueryBar.vue +275 -275
  80. package/src/components/masterplate/RewriteListdetails/indexV2.vue +320 -320
  81. package/src/components/masterplate/RewriteListdetails/indexV3.vue +331 -331
  82. package/src/components/masterplate/appendix.vue +586 -586
  83. package/src/components/masterplate/approval.vue +863 -863
  84. package/src/components/masterplate/base.vue +1028 -1028
  85. package/src/components/masterplate/billasyncimport.vue +614 -614
  86. package/src/components/masterplate/billconditionbox.vue +223 -223
  87. package/src/components/masterplate/billconditionsbox.vue +427 -427
  88. package/src/components/masterplate/billdetailform.vue +1028 -1028
  89. package/src/components/masterplate/billimport.vue +301 -301
  90. package/src/components/masterplate/billquerygrid.vue +391 -391
  91. package/src/components/masterplate/billsinglegrid.vue +234 -234
  92. package/src/components/masterplate/birtreport.vue +185 -185
  93. package/src/components/masterplate/contractappendix.vue +688 -688
  94. package/src/components/masterplate/detailbtntoolbar.vue +311 -311
  95. package/src/components/masterplate/detailsbox.vue +386 -386
  96. package/src/components/masterplate/editgridcard.vue +292 -292
  97. package/src/components/masterplate/editgridcard2.vue +127 -127
  98. package/src/components/masterplate/formcard.vue +105 -105
  99. package/src/components/masterplate/formcardgroupbox.vue +167 -167
  100. package/src/components/masterplate/formdetailtwo.vue +366 -366
  101. package/src/components/masterplate/gridcolset.vue +226 -226
  102. package/src/components/masterplate/index.js +54 -54
  103. package/src/components/masterplate/layouttemplate.vue +51 -51
  104. package/src/components/masterplate/leftlistrightdetails.vue +581 -581
  105. package/src/components/masterplate/leftlistrightlist.vue +464 -464
  106. package/src/components/masterplate/lefttreerightdetails.vue +636 -636
  107. package/src/components/masterplate/levelreport.vue +510 -510
  108. package/src/components/masterplate/listbtntoolbar.vue +276 -276
  109. package/src/components/masterplate/listdetails.vue +768 -768
  110. package/src/components/masterplate/operlog.vue +272 -272
  111. package/src/components/masterplate/options.vue +110 -110
  112. package/src/components/masterplate/page.vue +102 -102
  113. package/src/components/masterplate/promptmessage.vue +73 -73
  114. package/src/components/masterplate/querybar.vue +490 -490
  115. package/src/components/masterplate/report.vue +357 -357
  116. package/src/components/masterplate/rowbtntoolbar.vue +126 -126
  117. package/src/components/masterplate/simpletree.vue +137 -137
  118. package/src/components/masterplate/simpleviewgrid.vue +144 -144
  119. package/src/components/mychart/bar/bar.vue +201 -201
  120. package/src/components/mychart/basechart.vue +190 -190
  121. package/src/components/mychart/complexmychart/barline.vue +153 -153
  122. package/src/components/mychart/gauge/gauge.vue +82 -82
  123. package/src/components/mychart/index.js +8 -8
  124. package/src/components/mychart/line/line.vue +201 -201
  125. package/src/components/mychart/liquidfill/liquidfill.vue +108 -108
  126. package/src/components/mychart/pie/pie.vue +95 -95
  127. package/src/components/mychart/radar/radar.vue +121 -121
  128. package/src/components/mychart/scatter/scatter.vue +75 -75
  129. package/src/components/numberbox/NumberBoxV1.vue +39 -39
  130. package/src/components/numberbox/append.js +11 -11
  131. package/src/components/numberbox/index.js +4 -4
  132. package/src/components/numberbox/numberbox.vue +302 -302
  133. package/src/components/numberbox/numberrangebox.vue +422 -422
  134. package/src/components/picturebox/filebox.vue +369 -369
  135. package/src/components/picturebox/index.js +2 -2
  136. package/src/components/picturebox/picturebox.vue +541 -541
  137. package/src/components/picturebox/uploadbox.vue +164 -164
  138. package/src/components/poptagbox/index.js +1 -1
  139. package/src/components/poptagbox/poptagbox.vue +388 -388
  140. package/src/components/poptextbox/index.js +1 -1
  141. package/src/components/poptextbox/poptextbox.vue +624 -624
  142. package/src/components/radiobox/index.js +1 -1
  143. package/src/components/radiobox/radiogroupbox.vue +75 -75
  144. package/src/components/richtextbox/editor.vue +150 -150
  145. package/src/components/richtextbox/index.js +1 -1
  146. package/src/components/richtextbox/richtextbox.vue +448 -448
  147. package/src/components/textbox/index.js +1 -1
  148. package/src/components/textbox/textbox.vue +97 -97
  149. package/src/components/timebox/index.js +1 -1
  150. package/src/components/timebox/timebox.vue +75 -75
  151. package/src/components/toolbar/ebutton.vue +169 -169
  152. package/src/components/toolbar/index.js +3 -3
  153. package/src/components/toolbar/toolbar.vue +445 -445
  154. package/src/components/tree/CompatTree.vue +297 -297
  155. package/src/components/tree/basetree.vue +1098 -1098
  156. package/src/components/tree/index.js +2 -2
  157. package/src/components/tree/treedata.vue +53 -53
  158. package/src/components/tree/treedatabase.vue +189 -189
  159. package/src/components/upload/billimport.vue +233 -233
  160. package/src/components/upload/index.js +1 -1
  161. package/src/components/videobox/index.js +1 -1
  162. package/src/components/videobox/uploadbox.vue +148 -148
  163. package/src/components/videobox/videobox.vue +503 -503
  164. package/src/components/wrichtextbox/editor.vue +219 -219
  165. package/src/components/wrichtextbox/index.js +1 -1
  166. package/src/components/wrichtextbox/wrichtextbox.vue +62 -62
  167. package/src/index.js +231 -231
  168. package/src/locale/format.js +51 -51
  169. package/src/locale/index.js +63 -63
  170. package/src/locale/lang/zh-CN.js +123 -123
  171. package/src/locale/lang/zh-TW.js +114 -114
  172. package/src/locale/lang/zh-UG.js +115 -115
  173. package/src/locale/lang.js +15 -15
  174. package/src/method/case/case.js +1274 -1274
  175. package/src/method/config/queryconfig.js +24 -24
  176. package/src/method/const/const.js +815 -815
  177. package/src/method/index.js +7 -7
  178. package/src/plugins/theme/theme-variable.css +114 -114
  179. package/src/plugins/vxeTable/index.js +241 -241
  180. package/src/plugins/vxeTable/renderer/components/TableFilterInput.vue +51 -51
  181. package/src/plugins/vxeTable/renderer/filter.js +32 -32
  182. package/src/static/excel/exportexcel.js +626 -626
  183. package/src/static/iview/coustom.js +462 -462
  184. package/src/store/index.js +18 -18
  185. package/src/store/modules/app.js +53 -53
  186. package/src/styles/README.md +3 -3
  187. package/src/styles/common.less +80 -80
  188. package/src/styles/components/anchor.less +74 -74
  189. package/src/styles/components/approval.less +135 -135
  190. package/src/styles/components/button.less +208 -208
  191. package/src/styles/components/card.less +51 -51
  192. package/src/styles/components/content.less +38 -38
  193. package/src/styles/components/font.less +313 -313
  194. package/src/styles/components/form.less +71 -71
  195. package/src/styles/components/iconfont/fonts/iconfont.less +1384 -1384
  196. package/src/styles/components/iconfont/fonts/iconfont.svg +703 -703
  197. package/src/styles/components/index.less +16 -16
  198. package/src/styles/components/input.less +290 -290
  199. package/src/styles/components/modal.less +203 -203
  200. package/src/styles/components/page.less +340 -340
  201. package/src/styles/components/select.less +361 -361
  202. package/src/styles/components/steps.less +367 -367
  203. package/src/styles/components/table.less +544 -544
  204. package/src/styles/components/tabs.less +249 -249
  205. package/src/styles/components/upload.less +82 -82
  206. package/src/styles/custom.less +67 -67
  207. package/src/styles/index.less +6 -6
  208. package/src/styles/pack.less +6 -6
  209. package/src/utils/EfuMessenger.js +155 -155
  210. package/src/utils/assist.js +353 -353
  211. package/src/utils/index.js +1 -1
  212. package/src/utils/random_str.js +10 -10
  213. package/src/components/masterplate/detailgridbox.vue +0 -386
@@ -1,688 +1,688 @@
1
- <template>
2
- <Card :bordered="false" :padding="0" dis-hover>
3
- <p v-if="showTitle" @click="toggle" style="cursor:pointer;">
4
- <Row type="flex" justify="start" align="middle" style="margin-top:14px;margin-bottom:14px">
5
- <Icon custom='iconfont icon-custom-pack' color="#f3b352" v-show="showGrid" size="14"/>
6
- <Icon v-show="!showGrid" color="#f3b352" custom='iconfont icon-custom-spread' size="14"/>
7
- <span style="margin-left:10px;font-size: 14px;font-weight:bold" v-text="myConfig.title"/>
8
- </Row>
9
- </p>
10
- <div style="padding-left:24px">
11
- <Divider v-if="showTitle" style="margin-top:0px;margin-bottom:10px;"/>
12
- <Upload v-show="false" id="billiviewUp"
13
- multiple
14
- ref="billupload"
15
- :accept="FileAccept"
16
- :format="FileFormat"
17
- :data="headers"
18
- :show-upload-list="false"
19
- :on-success="handleSuccess"
20
- :on-exceeded-size="handleMaxSize"
21
- :before-upload="handleBeforeUpload"
22
- :on-format-error="handleFormatError"
23
- :max-size="fileSize"
24
- :action="uploadfile">
25
- <a>上传</a>
26
- </Upload>
27
- <div v-show="showGrid">
28
- <EditGridCardS ref="grid" :config="myConfig" :dictData="dictData"></EditGridCardS>
29
- </div>
30
- </div>
31
- <div ref="photo" v-show="false">
32
- <li><img :src="imgUrl" :data-original="`${imgUrl}`" style="width: 100%; height: 100%;"/></li>
33
- </div>
34
- <Modal :styles="{top:'20px', width:'80%'}" title="文本" v-model="txtPanelFlag" :footer-hide="true">
35
- <div v-html="textStr"/>
36
- </Modal>
37
- <Modal :styles="{top:'20px', width:'80%'}" title="PDF" v-model="pdfFlag" :footer-hide="true">
38
- <div ref="pdf" style="height:630px"/>
39
- </Modal>
40
- </Card>
41
- </template>
42
- <script>
43
- import load from '@/components/base/load';
44
- import EditGridCardS from './editgridcard2.vue';
45
- import {embed} from 'pdfobject';
46
- import $ from 'jquery';
47
- import Viewer from 'viewerjs';
48
- import Cookies from 'js-cookie';
49
- import {resolveComponent} from 'vue';
50
-
51
- export default {
52
- name: 'mappendix',
53
- components: {EditGridCardS},
54
- mixins: [load],
55
- data () {
56
- return {
57
- myConfig: {
58
- headStyle: '',
59
- readOnly: false,
60
- showAddBtn:true,
61
- showDelBatchBtn:true,
62
- downfile: '',
63
- delfile: '',
64
- pdffile: '/mss-sysconf-boot/downloadPdf?filekey=',
65
- notdelfile: false,
66
- showfilemode: false,
67
- filemodedata: [],
68
- showPage: false,
69
- fileSize: 20,
70
- fileNum: 10,
71
- title: '附件',
72
- dynamicHeight: true,
73
- showTitle: true,
74
- scenetype: '3',
75
- height: 840,
76
- items: [{
77
- label: '操作状态',
78
- name: 'modflag',
79
- type: 'ComboBox',
80
- data: [{code: 'N', name: '初始'}, {code: 'M', name: '待删除'},
81
- {code: 'I', name: '新增'}, {code: 'D', name: '删除'}],
82
- visible: false,
83
- width: 100,
84
- readOnly: true
85
- }, {
86
- label: '附件类型',
87
- name: 'filememo',
88
- type: 'ComboBox',
89
- dictkey: 'CUSTFILETYPE',
90
- codeWithName: false,
91
- width: 300,
92
- visible: false,
93
- readOnly: true
94
- }, {
95
- label: '附件类型',
96
- name: 'filemode',
97
- type: 'TextBox',
98
- width: 300,
99
- readOnly: true
100
- }, {
101
- label: '文件名称',
102
- name: 'filename',
103
- type: 'TextBox',
104
- minWidth: 200,
105
- readOnly: true
106
- }, {
107
- label: '文件大小',
108
- name: 'filesize',
109
- render: this.sizeActionRender,
110
- width: 120,
111
- readOnly: true
112
- }, {
113
- label: '上传日期',
114
- name: 'ph_timestamp',
115
- type: 'DateBox',
116
- vtype: 'datetime',
117
- width: 150,
118
- readOnly: true
119
- }, {
120
- label: '操作',
121
- key: 'action',
122
- align: 'center',
123
- render: this.actionRender,
124
- width: 350,
125
- }]
126
- },
127
- loadFlag: false,
128
- billno: '',
129
- filememo: '',
130
- modulecode: '',
131
- idkey: '',
132
- showGrid: true,
133
- uploadfile: '',
134
- textStr: '',
135
- imgUrl: '',
136
- txtPanelFlag: false,
137
- pdfFlag: false,
138
- btnReadOnly: false,
139
- loading: true,
140
- fileSize: 0,
141
- initData: [],
142
- notShowBtn: [],
143
- rowBtnData: [
144
- {
145
- icon: 'custom-fileupload',
146
- name: 'upFile',
147
- text: '上传'
148
- },
149
- {
150
- icon: 'custom-filedel',
151
- name: 'delFile',
152
- text: '删除'
153
- },
154
- {
155
- icon: 'custom-filedown',
156
- name: 'downFile',
157
- text: '下载'
158
- },
159
- {
160
- icon: 'custom-filesearch',
161
- name: 'searchFile',
162
- text: '查看'
163
- },
164
- {
165
- icon: 'custom-filerecall',
166
- name: 'recall',
167
- text: '撤回'
168
- },
169
- {
170
- icon: 'custom-fileupload',
171
- name: 'reupFile',
172
- text: '变更'
173
- },
174
- ]
175
- };
176
- },
177
- created () {
178
- this.myConfig = Object.assign({}, this.myConfig, this.config);
179
-
180
- if (this.myConfig.showTitle !== undefined) {
181
- this.showTitle = this.myConfig.showTitle;
182
- }
183
-
184
- if (!this.myConfig.downfile) {
185
- this.myConfig.downfile = this.OmdUrl.downfile;
186
- }
187
- if (!this.myConfig.delfile) {
188
- this.myConfig.delfile = this.OmdUrl.delfile;
189
- }
190
- if (!this.myConfig.uploadfile) {
191
- this.myConfig.uploadfile = this.OmdUrl.uploadfile;
192
- }
193
- if (!this.myConfig.pdffile) {
194
- this.myConfig.pdffile = this.OmdUrl.pdffile;
195
- }
196
- // this.myConfig.showAddBtn = true;
197
- // this.myConfig.showDelBatchBtn = true;
198
- this.myConfig.generalOrientation = true;
199
- if (this.myConfig.fileSize !== undefined) {
200
- this.fileSize = Number(this.myConfig.fileSize) * 1024;
201
- }
202
- // if (this.myConfig.notdelfile) {
203
- // this.myConfig.items[0].visible = true;
204
- // } else {
205
- // this.myConfig.items[0].visible = false;
206
- // }
207
-
208
- if (this.myConfig.uploadfile.indexOf('?') != -1) {
209
- this.uploadfile = this.myConfig.uploadfile + '&token=' + this.getToken();
210
- } else {
211
- this.uploadfile = this.myConfig.uploadfile + '?token=' + this.getToken();
212
- }
213
-
214
- if (this.myConfig.notShowBtn !== undefined) {
215
- this.notShowBtn = this.myConfig.notShowBtn;
216
- }
217
- },
218
- computed: {
219
- headers () {
220
- let obj = {};
221
- if (this.modulecode) {
222
- obj.billmoduleid = this.modulecode;
223
- }
224
- obj.billno = this.billno;
225
- obj.scenetype = this.myConfig.scenetype;
226
- obj.usercode = this.getUserCode()
227
- obj.username = this.getUserName();
228
- if (this.myConfig.notdelfile) {
229
- obj.modflag = 'I';
230
- } else {
231
- obj.modflag = 'N';
232
- }
233
- if (obj.scenetype === '4') {
234
- obj.idkey = this.idkey;
235
- }
236
- if (this.filememo) {
237
- obj.filememo = this.filememo;
238
- }
239
- return obj;
240
- },
241
- FileFormat () {
242
- if (this.myConfig.fileType) {
243
- return this.myConfig.fileType;
244
- } else {
245
- return [];
246
- }
247
- },
248
- FileAccept () {
249
- if (this.myConfig.fileType) {
250
- let str = '';
251
- this.myConfig.fileType.forEach(e => {
252
- str = str + '.' + e + ',';
253
- });
254
- return str;
255
- } else {
256
- return '';
257
- }
258
- }
259
- },
260
- props: {
261
- config: {
262
- type: Object,
263
- default: null
264
- },
265
- dictData: {
266
- type: Object,
267
- default:null
268
- }
269
- },
270
- methods: {
271
- handleFormatError (file) {
272
- let type = this.myConfig.fileType.join(',');
273
- this.alert('文件[' + file.name + ']的格式不正确,请上传格式为(' + type + ')的文件');
274
- this.loadFlag = true;
275
- },
276
- toggle () {
277
- this.showGrid = !this.showGrid;
278
- },
279
- setShowGrid (value) {
280
- this.showGrid = value;
281
- },
282
- actionRender (h, params) {
283
- let btnConfig = {};
284
- btnConfig.showNum = 5;
285
- btnConfig.fontStyle = '';
286
- btnConfig.items = [];
287
- if (params.row.filekey) {
288
- let del = this.$Method.copy(this.rowBtnData[1]);
289
- if (this.myConfig.readOnly) {
290
- del.readOnly = true;
291
- }
292
- if (params.row.scenetype !== '0' && params.row.modflag !== 'M' && this.notShowBtn.indexOf(del.name) < 0) {
293
- btnConfig.items.push(del);
294
- }
295
- } else {
296
- let up = this.$Method.copy(this.rowBtnData[0]);
297
- if (this.myConfig.readOnly) {
298
- up.readOnly = true;
299
- }
300
- if (this.notShowBtn.indexOf(up.name) < 0) {
301
- btnConfig.items.push(up);
302
- }
303
-
304
- }
305
- btnConfig.items.push(this.$Method.copy(this.rowBtnData[2]));
306
- if (this.isType(params.row.filetype) !== '0') {
307
- btnConfig.items.push(this.$Method.copy(this.rowBtnData[3]));
308
- }
309
- let recall = this.$Method.copy(this.rowBtnData[4]);
310
- if (this.myConfig.readOnly) {
311
- recall.readOnly = true;
312
- }
313
- if (this.myConfig.notdelfile) {
314
- if (params.row.modflag === 'N' && this.notShowBtn.indexOf(recall.name) < 0) {
315
- btnConfig.items.push(recall);
316
- }
317
- let reupFile = this.$Method.copy(this.rowBtnData[5])
318
- if ((!params.row.filekey || params.row.filekey !== '') && params.row.modflag === 'N' && this.notShowBtn.indexOf(reupFile.name) < 0) {
319
- btnConfig.items.push(reupFile);
320
- }
321
- }
322
- return h('div', [
323
- h(resolveComponent('RowBtnToolbar'), {
324
- config: btnConfig,
325
- onDoAction: (val) => {
326
- if (val.name === 'upFile') {
327
- this.editGrid(params);
328
- }
329
- if (val.name === 'delFile') {
330
- this.delFile(params);
331
- }
332
- if (val.name === 'downFile') {
333
- this.downFile(params);
334
- }
335
- if (val.name === 'searchFile') {
336
- this.searchFile(params);
337
- }
338
- if (val.name === 'recall') {
339
- this.recall(params);
340
- }
341
- if (val.name === 'reupFile') {
342
- this.reupFile(params);
343
- }
344
- }
345
- })
346
- ]);
347
- },
348
- sizeActionRender (h, params) {
349
- let fize = Number(params.row.filesize);
350
- let str = '';
351
- if (fize < 1024) {
352
- str = fize + 'B';
353
- }
354
- if (fize > 1024 && fize < 1048576) {
355
- str = parseFloat(fize / 1024).toFixed(2) + 'K';
356
- }
357
- if (fize > 1048576 && fize < 1073741824) {
358
- str = parseFloat(fize / 1048576).toFixed(2) + 'M';
359
- }
360
- if (fize > 1073741824) {
361
- str = parseFloat(fize / 1073741824).toFixed(2) + 'G';
362
- }
363
- return h('span', str);
364
- },
365
- downFile (params) {
366
- let downUrl = this.myConfig.downfile + params.row.filekey + "&ent_id=" + this.getEnt_id() + "&token=" + this.getToken() + "&billno=" + this.billno;
367
- window.open(downUrl);
368
- },
369
- delCommon (filekey, notdelfile) {
370
- let delUrl = this.myConfig.delfile + filekey + "&ent_id=" + this.getEnt_id() + "&notdelfile=Y&token=" + this.getToken() + "&billno=" + this.billno;
371
- $.ajax({
372
- type: 'GET',
373
- url: encodeURI(delUrl),
374
- async: true,
375
- dataType: 'json'
376
- });
377
- },
378
- delFile (params) {
379
- if (!this.checkIsEdit()) {
380
- return;
381
- }
382
- if (!this.myConfig.notdelfile) {
383
- this.delCommon(params.row.filekey, 'N');
384
- let row = this.$Method.copy(params.row);
385
- row.filekey = '';
386
- row.filename = '';
387
- row.filetype = '';
388
- row.filesize = '';
389
- row.inputer = '';
390
- row.inputer_name = '';
391
- row.lastmoddate = '';
392
- row.ph_timestamp = '';
393
- this.$refs.grid.updateRow(params.index, row);
394
- // this.$refs.grid.delRow(params.index);
395
- } else {
396
- if (params.row.modflag === 'M') {
397
- this.alert('当前状态不允许删除');
398
- return;
399
- }
400
- if (params.row.modflag === 'I') {
401
- this.delCommon(params.row.filekey, 'N');
402
- this.$refs.grid.delRow(params.index);
403
- }
404
- if (params.row.modflag === 'N') {
405
- let row = this.$Method.copy(params.row);
406
- row.modflag = 'M';
407
- this.$refs.grid.updateRow(params.index, row);
408
- }
409
- }
410
- if (this.myConfig.readOnly) {
411
- this.setReadOnly(false);
412
- }
413
- },
414
- recall (params) {
415
- if (params.row.modflag !== 'M') {
416
- this.alert('当前状态不用撤回');
417
- return;
418
- }
419
- let row = this.$Method.copy(params.row);
420
- row.modflag = 'N';
421
- this.$refs.grid.updateRow(params.index, row);
422
- },
423
- searchFile (params) {
424
- if (this.isType(params.row.filetype) === '1') {
425
- this.showTxt(params);
426
- }
427
- if (this.isType(params.row.filetype) === '2') {
428
- this.showPhoto(params);
429
- }
430
- if (this.isType(params.row.filetype) === '3') {
431
- this.showPdf(params);
432
- }
433
- },
434
- handleSuccess (response, file, fileList) {
435
- this.getFilesInfo(this.billno, this.modulecode, this.myConfig.notdelfile, this.myConfig.scenetype, this.doInitData);
436
- this.flag = false;
437
- if (this.myConfig.scenetype === '4') {
438
- this.loadFlag = true;
439
- } else {
440
- this.hideLoading();
441
- }
442
- this.$emit('handleSuccessAfter' , response, file, fileList);
443
- },
444
- handleMaxSize (file) {
445
- this.alert('文件[' + file.name + ']的文件大小不允许超过' + this.myConfig.fileSize + 'M');
446
- if (this.myConfig.scenetype === '4') {
447
- this.loadFlag = true;
448
- } else {
449
- this.hideLoading();
450
- }
451
- },
452
- isType (filetype) {
453
- var type = '';
454
- if (!filetype) {
455
- filetype = '';
456
- }
457
- filetype = filetype.toLowerCase();
458
- if (filetype === 'log' || filetype === 'xml' || filetype === 'txt') {
459
- type = '1';
460
- } else if (filetype === 'bmp' || filetype === 'jpg' || filetype === 'png'
461
- || filetype === 'gif' || filetype === 'jpeg' || filetype === 'apng'
462
- || filetype === 'svg') {
463
- type = '2';
464
- } else if (filetype === 'pdf') {
465
- type = '3';
466
- } else {
467
- type = '0';
468
- }
469
- return type;
470
- },
471
- setPro (obj) {
472
- if (obj) {
473
- this.myConfig = Object.assign({}, this.myConfig, obj);
474
- }
475
- },
476
- setReadOnly (value) {
477
- let obj = {};
478
- obj.readOnly = value;
479
- this.setPro(obj);
480
- this.$refs.grid.setReadOnly(value);
481
- this.setBtnReadOnly(value);
482
- },
483
- showTxt (params) {
484
- let downUrl = this.myConfig.downfile + params.row.filekey + '&token=' + this.getToken();
485
- let htmlObj = $.ajax({
486
- url: encodeURI(downUrl),
487
- async: false
488
- });
489
- let str = htmlObj.responseText;
490
- str = str.replace(/\r\n/ig, '<br/>');
491
- this.textStr = str;
492
- this.txtPanelFlag = true;
493
- },
494
- showPhoto (params) {
495
- let downUrl = this.myConfig.downfile + params.row.filekey + '&token=' + this.getToken();
496
- this.imgUrl = downUrl;
497
- this.$nextTick(() => {
498
- if (this.viewer == undefined) {
499
- this.viewer = new Viewer(this.$refs.photo, {
500
- url: "data-original",
501
- show: function () {
502
- this.viewer.update();
503
- },
504
- });
505
- }
506
- this.viewer.show();
507
- })
508
-
509
- },
510
- showPdf (params) {
511
- let pdfUrl = this.myConfig.pdffile + params.row.filekey + '&token=' + this.getToken();
512
- //this.pdfSrc = pdfUrl;
513
- embed(encodeURI(pdfUrl), this.$refs.pdf);
514
- //pdfObject.embed(encodeURI(pdfUrl), this.$refs.pdf);
515
- this.pdfFlag = true;
516
- },
517
- getChangeData () {
518
- return this.$refs.grid.getChangeData();
519
- },
520
- setData (key, billmoduleid, idkey) {
521
- if (key) {
522
- this.billno = key;
523
- this.modulecode = billmoduleid;
524
- this.idkey = idkey;
525
- if (this.myConfig.scenetype === '4') {
526
- this.getFilesInfoByIdkey(this.idkey, this.doInitData);
527
- } else {
528
- this.getFilesInfo(key, this.modulecode, this.myConfig.notdelfile, '3', this.doInitData);
529
- }
530
- this.btnReadOnly = false;
531
- } else {
532
- this.btnReadOnly = true;
533
- this.billno = '';
534
- this.modulecode = '';
535
- this.idkey = '';
536
- this.$refs.grid.setData([]);
537
- }
538
- },
539
- setBillno (value) {
540
- this.billno = value;
541
- if (this.billno) {
542
- this.btnReadOnly = true;
543
- }
544
- },
545
- setModulecode (value) {
546
- this.modulecode = value;
547
- },
548
- doInitData (data) {
549
- this.$refs.grid.setData(data);
550
- },
551
- clearData () {
552
- this.billno = '';
553
- this.$refs.grid.clearData();
554
- },
555
- getData () {
556
- return this.$refs.grid.getData();
557
- },
558
- doCommonAllfile (flag) {
559
- let data = this.$refs.grid.getData();
560
- if (data.length === 0) {
561
- return;
562
- }
563
- let usercode = Cookies.get('user_code') ? Cookies.get('user_code') : 0;
564
- let username = Cookies.get('user_name') ? Cookies.get('user_name') : 0;
565
- let filekey = '';
566
- data.forEach(el => {
567
- if (flag) {
568
- filekey = filekey + el.filekey + ",";
569
- } else {
570
- if (el.modflag === 'M') {
571
- filekey = filekey + el.filekey + ",";
572
- }
573
- }
574
- });
575
- if (filekey) {
576
- filekey = filekey.substring(0, filekey.length - 1);
577
- } else {
578
- return;
579
- }
580
- let delUrl = this.myConfig.delfile + filekey + "&ent_id=" + this.getEnt_id();
581
- let token = this.getToken();
582
- if (token) {
583
- delUrl = delUrl + '&token=' + token;
584
- }
585
- delUrl = delUrl + '&billno=' + this.billno;
586
- delUrl = delUrl + '&billmoduleid=' + this.modulecode;
587
- data.forEach(el => {
588
- delUrl = delUrl + '&filememo=' + el.filememo;
589
- });
590
-
591
- let notdelfile = 'N';
592
- if (this.myConfig.notdelfile) {
593
- notdelfile = 'Y';
594
- }
595
- delUrl = delUrl + '&usercode=' + usercode + '&username=' + username + '&notdelfile=' + notdelfile;
596
- $.ajax({
597
- type: 'GET',
598
- url: encodeURI(delUrl),
599
- async: true,
600
- dataType: 'json'
601
- });
602
- },
603
- dellAllfile () {
604
- this.doCommonAllfile(true);
605
- },
606
- updateAllfile () {
607
- this.doCommonAllfile(false);
608
- },
609
- handleBeforeUpload () {
610
- let check = true;
611
- if (this.$refs.billupload && this.$refs.billupload.fileList) {
612
- check = this.$refs.billupload.fileList.length < this.myConfig.fileNum;
613
- if (!check) {
614
- this.alert('上传的文件数量过多(一次最多允许上传' + this.myConfig.fileNum + '个文件)');
615
- }
616
- }
617
- if (!this.flag) {
618
- this.flag = true;
619
- this.loadingtext = '上传中';
620
- if (this.myConfig.scenetype === '4') {
621
- this.loadFlag = false;
622
- } else {
623
- this.showLoading();
624
- }
625
-
626
- }
627
- return check;
628
- },
629
- editGrid (params) {
630
- if (this.myConfig.beforeUpload) {
631
- this.myConfig.beforeUpload();
632
- }
633
- if (!this.billno) {
634
- this.alert('单据主健信息为空,不允许上传');
635
- return;
636
- }
637
- if (this.checkIsEdit()) {
638
- this.$nextTick(() => {
639
- this.$refs.billupload.clearFiles();
640
- });
641
- if (this.myConfig.readOnly) {
642
- this.setReadOnly(false);
643
- }
644
- this.filememo = params.row.filememo;
645
- document.querySelector('#billiviewUp input').click();
646
- }
647
- },
648
- reupFile (params) {
649
- if (this.myConfig.beforeUpload) {
650
- this.myConfig.beforeUpload();
651
- }
652
- if (!this.billno) {
653
- this.alert('单据主健信息为空,不允许上传');
654
- return;
655
- }
656
- if (this.checkIsEdit()) {
657
- this.$nextTick(() => {
658
- this.$refs.billupload.clearFiles();
659
- });
660
- if (this.myConfig.readOnly) {
661
- this.setReadOnly(false);
662
- }
663
- this.filememo = params.row.filememo;
664
- document.querySelector('#billiviewUp input').click();
665
- }
666
- },
667
- isChange () {
668
- return this.$refs.grid.isChange();
669
- },
670
- checkIsEdit () {
671
- let flag = true;
672
- if (this.myConfig.editObjectBefore) {
673
- flag = this.myConfig.editObjectBefore(this.myConfig.name);
674
- }
675
- return flag;
676
- },
677
- setBtnReadOnly (value) {
678
- if (!value) {
679
- if (this.billno) {
680
- this.btnReadOnly = value;
681
- }
682
- } else {
683
- this.btnReadOnly = value;
684
- }
685
- },
686
- }
687
- };
688
- </script>
1
+ <template>
2
+ <Card :bordered="false" :padding="0" dis-hover>
3
+ <p v-if="showTitle" @click="toggle" style="cursor:pointer;">
4
+ <Row type="flex" justify="start" align="middle" style="margin-top:14px;margin-bottom:14px">
5
+ <Icon custom='iconfont icon-custom-pack' color="#f3b352" v-show="showGrid" size="14"/>
6
+ <Icon v-show="!showGrid" color="#f3b352" custom='iconfont icon-custom-spread' size="14"/>
7
+ <span style="margin-left:10px;font-size: 14px;font-weight:bold" v-text="myConfig.title"/>
8
+ </Row>
9
+ </p>
10
+ <div style="padding-left:24px">
11
+ <Divider v-if="showTitle" style="margin-top:0px;margin-bottom:10px;"/>
12
+ <Upload v-show="false" id="billiviewUp"
13
+ multiple
14
+ ref="billupload"
15
+ :accept="FileAccept"
16
+ :format="FileFormat"
17
+ :data="headers"
18
+ :show-upload-list="false"
19
+ :on-success="handleSuccess"
20
+ :on-exceeded-size="handleMaxSize"
21
+ :before-upload="handleBeforeUpload"
22
+ :on-format-error="handleFormatError"
23
+ :max-size="fileSize"
24
+ :action="uploadfile">
25
+ <a>上传</a>
26
+ </Upload>
27
+ <div v-show="showGrid">
28
+ <EditGridCardS ref="grid" :config="myConfig" :dictData="dictData"></EditGridCardS>
29
+ </div>
30
+ </div>
31
+ <div ref="photo" v-show="false">
32
+ <li><img :src="imgUrl" :data-original="`${imgUrl}`" style="width: 100%; height: 100%;"/></li>
33
+ </div>
34
+ <Modal :styles="{top:'20px', width:'80%'}" title="文本" v-model="txtPanelFlag" :footer-hide="true">
35
+ <div v-html="textStr"/>
36
+ </Modal>
37
+ <Modal :styles="{top:'20px', width:'80%'}" title="PDF" v-model="pdfFlag" :footer-hide="true">
38
+ <div ref="pdf" style="height:630px"/>
39
+ </Modal>
40
+ </Card>
41
+ </template>
42
+ <script>
43
+ import load from '@/components/base/load';
44
+ import EditGridCardS from './editgridcard2.vue';
45
+ import {embed} from 'pdfobject';
46
+ import $ from 'jquery';
47
+ import Viewer from 'viewerjs';
48
+ import Cookies from 'js-cookie';
49
+ import {resolveComponent} from 'vue';
50
+
51
+ export default {
52
+ name: 'mappendix',
53
+ components: {EditGridCardS},
54
+ mixins: [load],
55
+ data () {
56
+ return {
57
+ myConfig: {
58
+ headStyle: '',
59
+ readOnly: false,
60
+ showAddBtn:true,
61
+ showDelBatchBtn:true,
62
+ downfile: '',
63
+ delfile: '',
64
+ pdffile: '/mss-sysconf-boot/downloadPdf?filekey=',
65
+ notdelfile: false,
66
+ showfilemode: false,
67
+ filemodedata: [],
68
+ showPage: false,
69
+ fileSize: 20,
70
+ fileNum: 10,
71
+ title: '附件',
72
+ dynamicHeight: true,
73
+ showTitle: true,
74
+ scenetype: '3',
75
+ height: 840,
76
+ items: [{
77
+ label: '操作状态',
78
+ name: 'modflag',
79
+ type: 'ComboBox',
80
+ data: [{code: 'N', name: '初始'}, {code: 'M', name: '待删除'},
81
+ {code: 'I', name: '新增'}, {code: 'D', name: '删除'}],
82
+ visible: false,
83
+ width: 100,
84
+ readOnly: true
85
+ }, {
86
+ label: '附件类型',
87
+ name: 'filememo',
88
+ type: 'ComboBox',
89
+ dictkey: 'CUSTFILETYPE',
90
+ codeWithName: false,
91
+ width: 300,
92
+ visible: false,
93
+ readOnly: true
94
+ }, {
95
+ label: '附件类型',
96
+ name: 'filemode',
97
+ type: 'TextBox',
98
+ width: 300,
99
+ readOnly: true
100
+ }, {
101
+ label: '文件名称',
102
+ name: 'filename',
103
+ type: 'TextBox',
104
+ minWidth: 200,
105
+ readOnly: true
106
+ }, {
107
+ label: '文件大小',
108
+ name: 'filesize',
109
+ render: this.sizeActionRender,
110
+ width: 120,
111
+ readOnly: true
112
+ }, {
113
+ label: '上传日期',
114
+ name: 'ph_timestamp',
115
+ type: 'DateBox',
116
+ vtype: 'datetime',
117
+ width: 150,
118
+ readOnly: true
119
+ }, {
120
+ label: '操作',
121
+ key: 'action',
122
+ align: 'center',
123
+ render: this.actionRender,
124
+ width: 350,
125
+ }]
126
+ },
127
+ loadFlag: false,
128
+ billno: '',
129
+ filememo: '',
130
+ modulecode: '',
131
+ idkey: '',
132
+ showGrid: true,
133
+ uploadfile: '',
134
+ textStr: '',
135
+ imgUrl: '',
136
+ txtPanelFlag: false,
137
+ pdfFlag: false,
138
+ btnReadOnly: false,
139
+ loading: true,
140
+ fileSize: 0,
141
+ initData: [],
142
+ notShowBtn: [],
143
+ rowBtnData: [
144
+ {
145
+ icon: 'custom-fileupload',
146
+ name: 'upFile',
147
+ text: '上传'
148
+ },
149
+ {
150
+ icon: 'custom-filedel',
151
+ name: 'delFile',
152
+ text: '删除'
153
+ },
154
+ {
155
+ icon: 'custom-filedown',
156
+ name: 'downFile',
157
+ text: '下载'
158
+ },
159
+ {
160
+ icon: 'custom-filesearch',
161
+ name: 'searchFile',
162
+ text: '查看'
163
+ },
164
+ {
165
+ icon: 'custom-filerecall',
166
+ name: 'recall',
167
+ text: '撤回'
168
+ },
169
+ {
170
+ icon: 'custom-fileupload',
171
+ name: 'reupFile',
172
+ text: '变更'
173
+ },
174
+ ]
175
+ };
176
+ },
177
+ created () {
178
+ this.myConfig = Object.assign({}, this.myConfig, this.config);
179
+
180
+ if (this.myConfig.showTitle !== undefined) {
181
+ this.showTitle = this.myConfig.showTitle;
182
+ }
183
+
184
+ if (!this.myConfig.downfile) {
185
+ this.myConfig.downfile = this.OmdUrl.downfile;
186
+ }
187
+ if (!this.myConfig.delfile) {
188
+ this.myConfig.delfile = this.OmdUrl.delfile;
189
+ }
190
+ if (!this.myConfig.uploadfile) {
191
+ this.myConfig.uploadfile = this.OmdUrl.uploadfile;
192
+ }
193
+ if (!this.myConfig.pdffile) {
194
+ this.myConfig.pdffile = this.OmdUrl.pdffile;
195
+ }
196
+ // this.myConfig.showAddBtn = true;
197
+ // this.myConfig.showDelBatchBtn = true;
198
+ this.myConfig.generalOrientation = true;
199
+ if (this.myConfig.fileSize !== undefined) {
200
+ this.fileSize = Number(this.myConfig.fileSize) * 1024;
201
+ }
202
+ // if (this.myConfig.notdelfile) {
203
+ // this.myConfig.items[0].visible = true;
204
+ // } else {
205
+ // this.myConfig.items[0].visible = false;
206
+ // }
207
+
208
+ if (this.myConfig.uploadfile.indexOf('?') != -1) {
209
+ this.uploadfile = this.myConfig.uploadfile + '&token=' + this.getToken();
210
+ } else {
211
+ this.uploadfile = this.myConfig.uploadfile + '?token=' + this.getToken();
212
+ }
213
+
214
+ if (this.myConfig.notShowBtn !== undefined) {
215
+ this.notShowBtn = this.myConfig.notShowBtn;
216
+ }
217
+ },
218
+ computed: {
219
+ headers () {
220
+ let obj = {};
221
+ if (this.modulecode) {
222
+ obj.billmoduleid = this.modulecode;
223
+ }
224
+ obj.billno = this.billno;
225
+ obj.scenetype = this.myConfig.scenetype;
226
+ obj.usercode = this.getUserCode()
227
+ obj.username = this.getUserName();
228
+ if (this.myConfig.notdelfile) {
229
+ obj.modflag = 'I';
230
+ } else {
231
+ obj.modflag = 'N';
232
+ }
233
+ if (obj.scenetype === '4') {
234
+ obj.idkey = this.idkey;
235
+ }
236
+ if (this.filememo) {
237
+ obj.filememo = this.filememo;
238
+ }
239
+ return obj;
240
+ },
241
+ FileFormat () {
242
+ if (this.myConfig.fileType) {
243
+ return this.myConfig.fileType;
244
+ } else {
245
+ return [];
246
+ }
247
+ },
248
+ FileAccept () {
249
+ if (this.myConfig.fileType) {
250
+ let str = '';
251
+ this.myConfig.fileType.forEach(e => {
252
+ str = str + '.' + e + ',';
253
+ });
254
+ return str;
255
+ } else {
256
+ return '';
257
+ }
258
+ }
259
+ },
260
+ props: {
261
+ config: {
262
+ type: Object,
263
+ default: null
264
+ },
265
+ dictData: {
266
+ type: Object,
267
+ default:null
268
+ }
269
+ },
270
+ methods: {
271
+ handleFormatError (file) {
272
+ let type = this.myConfig.fileType.join(',');
273
+ this.alert('文件[' + file.name + ']的格式不正确,请上传格式为(' + type + ')的文件');
274
+ this.loadFlag = true;
275
+ },
276
+ toggle () {
277
+ this.showGrid = !this.showGrid;
278
+ },
279
+ setShowGrid (value) {
280
+ this.showGrid = value;
281
+ },
282
+ actionRender (h, params) {
283
+ let btnConfig = {};
284
+ btnConfig.showNum = 5;
285
+ btnConfig.fontStyle = '';
286
+ btnConfig.items = [];
287
+ if (params.row.filekey) {
288
+ let del = this.$Method.copy(this.rowBtnData[1]);
289
+ if (this.myConfig.readOnly) {
290
+ del.readOnly = true;
291
+ }
292
+ if (params.row.scenetype !== '0' && params.row.modflag !== 'M' && this.notShowBtn.indexOf(del.name) < 0) {
293
+ btnConfig.items.push(del);
294
+ }
295
+ } else {
296
+ let up = this.$Method.copy(this.rowBtnData[0]);
297
+ if (this.myConfig.readOnly) {
298
+ up.readOnly = true;
299
+ }
300
+ if (this.notShowBtn.indexOf(up.name) < 0) {
301
+ btnConfig.items.push(up);
302
+ }
303
+
304
+ }
305
+ btnConfig.items.push(this.$Method.copy(this.rowBtnData[2]));
306
+ if (this.isType(params.row.filetype) !== '0') {
307
+ btnConfig.items.push(this.$Method.copy(this.rowBtnData[3]));
308
+ }
309
+ let recall = this.$Method.copy(this.rowBtnData[4]);
310
+ if (this.myConfig.readOnly) {
311
+ recall.readOnly = true;
312
+ }
313
+ if (this.myConfig.notdelfile) {
314
+ if (params.row.modflag === 'N' && this.notShowBtn.indexOf(recall.name) < 0) {
315
+ btnConfig.items.push(recall);
316
+ }
317
+ let reupFile = this.$Method.copy(this.rowBtnData[5])
318
+ if ((!params.row.filekey || params.row.filekey !== '') && params.row.modflag === 'N' && this.notShowBtn.indexOf(reupFile.name) < 0) {
319
+ btnConfig.items.push(reupFile);
320
+ }
321
+ }
322
+ return h('div', [
323
+ h(resolveComponent('RowBtnToolbar'), {
324
+ config: btnConfig,
325
+ onDoAction: (val) => {
326
+ if (val.name === 'upFile') {
327
+ this.editGrid(params);
328
+ }
329
+ if (val.name === 'delFile') {
330
+ this.delFile(params);
331
+ }
332
+ if (val.name === 'downFile') {
333
+ this.downFile(params);
334
+ }
335
+ if (val.name === 'searchFile') {
336
+ this.searchFile(params);
337
+ }
338
+ if (val.name === 'recall') {
339
+ this.recall(params);
340
+ }
341
+ if (val.name === 'reupFile') {
342
+ this.reupFile(params);
343
+ }
344
+ }
345
+ })
346
+ ]);
347
+ },
348
+ sizeActionRender (h, params) {
349
+ let fize = Number(params.row.filesize);
350
+ let str = '';
351
+ if (fize < 1024) {
352
+ str = fize + 'B';
353
+ }
354
+ if (fize > 1024 && fize < 1048576) {
355
+ str = parseFloat(fize / 1024).toFixed(2) + 'K';
356
+ }
357
+ if (fize > 1048576 && fize < 1073741824) {
358
+ str = parseFloat(fize / 1048576).toFixed(2) + 'M';
359
+ }
360
+ if (fize > 1073741824) {
361
+ str = parseFloat(fize / 1073741824).toFixed(2) + 'G';
362
+ }
363
+ return h('span', str);
364
+ },
365
+ downFile (params) {
366
+ let downUrl = this.myConfig.downfile + params.row.filekey + "&ent_id=" + this.getEnt_id() + "&token=" + this.getToken() + "&billno=" + this.billno;
367
+ window.open(downUrl);
368
+ },
369
+ delCommon (filekey, notdelfile) {
370
+ let delUrl = this.myConfig.delfile + filekey + "&ent_id=" + this.getEnt_id() + "&notdelfile=Y&token=" + this.getToken() + "&billno=" + this.billno;
371
+ $.ajax({
372
+ type: 'GET',
373
+ url: encodeURI(delUrl),
374
+ async: true,
375
+ dataType: 'json'
376
+ });
377
+ },
378
+ delFile (params) {
379
+ if (!this.checkIsEdit()) {
380
+ return;
381
+ }
382
+ if (!this.myConfig.notdelfile) {
383
+ this.delCommon(params.row.filekey, 'N');
384
+ let row = this.$Method.copy(params.row);
385
+ row.filekey = '';
386
+ row.filename = '';
387
+ row.filetype = '';
388
+ row.filesize = '';
389
+ row.inputer = '';
390
+ row.inputer_name = '';
391
+ row.lastmoddate = '';
392
+ row.ph_timestamp = '';
393
+ this.$refs.grid.updateRow(params.index, row);
394
+ // this.$refs.grid.delRow(params.index);
395
+ } else {
396
+ if (params.row.modflag === 'M') {
397
+ this.alert('当前状态不允许删除');
398
+ return;
399
+ }
400
+ if (params.row.modflag === 'I') {
401
+ this.delCommon(params.row.filekey, 'N');
402
+ this.$refs.grid.delRow(params.index);
403
+ }
404
+ if (params.row.modflag === 'N') {
405
+ let row = this.$Method.copy(params.row);
406
+ row.modflag = 'M';
407
+ this.$refs.grid.updateRow(params.index, row);
408
+ }
409
+ }
410
+ if (this.myConfig.readOnly) {
411
+ this.setReadOnly(false);
412
+ }
413
+ },
414
+ recall (params) {
415
+ if (params.row.modflag !== 'M') {
416
+ this.alert('当前状态不用撤回');
417
+ return;
418
+ }
419
+ let row = this.$Method.copy(params.row);
420
+ row.modflag = 'N';
421
+ this.$refs.grid.updateRow(params.index, row);
422
+ },
423
+ searchFile (params) {
424
+ if (this.isType(params.row.filetype) === '1') {
425
+ this.showTxt(params);
426
+ }
427
+ if (this.isType(params.row.filetype) === '2') {
428
+ this.showPhoto(params);
429
+ }
430
+ if (this.isType(params.row.filetype) === '3') {
431
+ this.showPdf(params);
432
+ }
433
+ },
434
+ handleSuccess (response, file, fileList) {
435
+ this.getFilesInfo(this.billno, this.modulecode, this.myConfig.notdelfile, this.myConfig.scenetype, this.doInitData);
436
+ this.flag = false;
437
+ if (this.myConfig.scenetype === '4') {
438
+ this.loadFlag = true;
439
+ } else {
440
+ this.hideLoading();
441
+ }
442
+ this.$emit('handleSuccessAfter' , response, file, fileList);
443
+ },
444
+ handleMaxSize (file) {
445
+ this.alert('文件[' + file.name + ']的文件大小不允许超过' + this.myConfig.fileSize + 'M');
446
+ if (this.myConfig.scenetype === '4') {
447
+ this.loadFlag = true;
448
+ } else {
449
+ this.hideLoading();
450
+ }
451
+ },
452
+ isType (filetype) {
453
+ var type = '';
454
+ if (!filetype) {
455
+ filetype = '';
456
+ }
457
+ filetype = filetype.toLowerCase();
458
+ if (filetype === 'log' || filetype === 'xml' || filetype === 'txt') {
459
+ type = '1';
460
+ } else if (filetype === 'bmp' || filetype === 'jpg' || filetype === 'png'
461
+ || filetype === 'gif' || filetype === 'jpeg' || filetype === 'apng'
462
+ || filetype === 'svg') {
463
+ type = '2';
464
+ } else if (filetype === 'pdf') {
465
+ type = '3';
466
+ } else {
467
+ type = '0';
468
+ }
469
+ return type;
470
+ },
471
+ setPro (obj) {
472
+ if (obj) {
473
+ this.myConfig = Object.assign({}, this.myConfig, obj);
474
+ }
475
+ },
476
+ setReadOnly (value) {
477
+ let obj = {};
478
+ obj.readOnly = value;
479
+ this.setPro(obj);
480
+ this.$refs.grid.setReadOnly(value);
481
+ this.setBtnReadOnly(value);
482
+ },
483
+ showTxt (params) {
484
+ let downUrl = this.myConfig.downfile + params.row.filekey + '&token=' + this.getToken();
485
+ let htmlObj = $.ajax({
486
+ url: encodeURI(downUrl),
487
+ async: false
488
+ });
489
+ let str = htmlObj.responseText;
490
+ str = str.replace(/\r\n/ig, '<br/>');
491
+ this.textStr = str;
492
+ this.txtPanelFlag = true;
493
+ },
494
+ showPhoto (params) {
495
+ let downUrl = this.myConfig.downfile + params.row.filekey + '&token=' + this.getToken();
496
+ this.imgUrl = downUrl;
497
+ this.$nextTick(() => {
498
+ if (this.viewer == undefined) {
499
+ this.viewer = new Viewer(this.$refs.photo, {
500
+ url: "data-original",
501
+ show: function () {
502
+ this.viewer.update();
503
+ },
504
+ });
505
+ }
506
+ this.viewer.show();
507
+ })
508
+
509
+ },
510
+ showPdf (params) {
511
+ let pdfUrl = this.myConfig.pdffile + params.row.filekey + '&token=' + this.getToken();
512
+ //this.pdfSrc = pdfUrl;
513
+ embed(encodeURI(pdfUrl), this.$refs.pdf);
514
+ //pdfObject.embed(encodeURI(pdfUrl), this.$refs.pdf);
515
+ this.pdfFlag = true;
516
+ },
517
+ getChangeData () {
518
+ return this.$refs.grid.getChangeData();
519
+ },
520
+ setData (key, billmoduleid, idkey) {
521
+ if (key) {
522
+ this.billno = key;
523
+ this.modulecode = billmoduleid;
524
+ this.idkey = idkey;
525
+ if (this.myConfig.scenetype === '4') {
526
+ this.getFilesInfoByIdkey(this.idkey, this.doInitData);
527
+ } else {
528
+ this.getFilesInfo(key, this.modulecode, this.myConfig.notdelfile, '3', this.doInitData);
529
+ }
530
+ this.btnReadOnly = false;
531
+ } else {
532
+ this.btnReadOnly = true;
533
+ this.billno = '';
534
+ this.modulecode = '';
535
+ this.idkey = '';
536
+ this.$refs.grid.setData([]);
537
+ }
538
+ },
539
+ setBillno (value) {
540
+ this.billno = value;
541
+ if (this.billno) {
542
+ this.btnReadOnly = true;
543
+ }
544
+ },
545
+ setModulecode (value) {
546
+ this.modulecode = value;
547
+ },
548
+ doInitData (data) {
549
+ this.$refs.grid.setData(data);
550
+ },
551
+ clearData () {
552
+ this.billno = '';
553
+ this.$refs.grid.clearData();
554
+ },
555
+ getData () {
556
+ return this.$refs.grid.getData();
557
+ },
558
+ doCommonAllfile (flag) {
559
+ let data = this.$refs.grid.getData();
560
+ if (data.length === 0) {
561
+ return;
562
+ }
563
+ let usercode = Cookies.get('user_code') ? Cookies.get('user_code') : 0;
564
+ let username = Cookies.get('user_name') ? Cookies.get('user_name') : 0;
565
+ let filekey = '';
566
+ data.forEach(el => {
567
+ if (flag) {
568
+ filekey = filekey + el.filekey + ",";
569
+ } else {
570
+ if (el.modflag === 'M') {
571
+ filekey = filekey + el.filekey + ",";
572
+ }
573
+ }
574
+ });
575
+ if (filekey) {
576
+ filekey = filekey.substring(0, filekey.length - 1);
577
+ } else {
578
+ return;
579
+ }
580
+ let delUrl = this.myConfig.delfile + filekey + "&ent_id=" + this.getEnt_id();
581
+ let token = this.getToken();
582
+ if (token) {
583
+ delUrl = delUrl + '&token=' + token;
584
+ }
585
+ delUrl = delUrl + '&billno=' + this.billno;
586
+ delUrl = delUrl + '&billmoduleid=' + this.modulecode;
587
+ data.forEach(el => {
588
+ delUrl = delUrl + '&filememo=' + el.filememo;
589
+ });
590
+
591
+ let notdelfile = 'N';
592
+ if (this.myConfig.notdelfile) {
593
+ notdelfile = 'Y';
594
+ }
595
+ delUrl = delUrl + '&usercode=' + usercode + '&username=' + username + '&notdelfile=' + notdelfile;
596
+ $.ajax({
597
+ type: 'GET',
598
+ url: encodeURI(delUrl),
599
+ async: true,
600
+ dataType: 'json'
601
+ });
602
+ },
603
+ dellAllfile () {
604
+ this.doCommonAllfile(true);
605
+ },
606
+ updateAllfile () {
607
+ this.doCommonAllfile(false);
608
+ },
609
+ handleBeforeUpload () {
610
+ let check = true;
611
+ if (this.$refs.billupload && this.$refs.billupload.fileList) {
612
+ check = this.$refs.billupload.fileList.length < this.myConfig.fileNum;
613
+ if (!check) {
614
+ this.alert('上传的文件数量过多(一次最多允许上传' + this.myConfig.fileNum + '个文件)');
615
+ }
616
+ }
617
+ if (!this.flag) {
618
+ this.flag = true;
619
+ this.loadingtext = '上传中';
620
+ if (this.myConfig.scenetype === '4') {
621
+ this.loadFlag = false;
622
+ } else {
623
+ this.showLoading();
624
+ }
625
+
626
+ }
627
+ return check;
628
+ },
629
+ editGrid (params) {
630
+ if (this.myConfig.beforeUpload) {
631
+ this.myConfig.beforeUpload();
632
+ }
633
+ if (!this.billno) {
634
+ this.alert('单据主健信息为空,不允许上传');
635
+ return;
636
+ }
637
+ if (this.checkIsEdit()) {
638
+ this.$nextTick(() => {
639
+ this.$refs.billupload.clearFiles();
640
+ });
641
+ if (this.myConfig.readOnly) {
642
+ this.setReadOnly(false);
643
+ }
644
+ this.filememo = params.row.filememo;
645
+ document.querySelector('#billiviewUp input').click();
646
+ }
647
+ },
648
+ reupFile (params) {
649
+ if (this.myConfig.beforeUpload) {
650
+ this.myConfig.beforeUpload();
651
+ }
652
+ if (!this.billno) {
653
+ this.alert('单据主健信息为空,不允许上传');
654
+ return;
655
+ }
656
+ if (this.checkIsEdit()) {
657
+ this.$nextTick(() => {
658
+ this.$refs.billupload.clearFiles();
659
+ });
660
+ if (this.myConfig.readOnly) {
661
+ this.setReadOnly(false);
662
+ }
663
+ this.filememo = params.row.filememo;
664
+ document.querySelector('#billiviewUp input').click();
665
+ }
666
+ },
667
+ isChange () {
668
+ return this.$refs.grid.isChange();
669
+ },
670
+ checkIsEdit () {
671
+ let flag = true;
672
+ if (this.myConfig.editObjectBefore) {
673
+ flag = this.myConfig.editObjectBefore(this.myConfig.name);
674
+ }
675
+ return flag;
676
+ },
677
+ setBtnReadOnly (value) {
678
+ if (!value) {
679
+ if (this.billno) {
680
+ this.btnReadOnly = value;
681
+ }
682
+ } else {
683
+ this.btnReadOnly = value;
684
+ }
685
+ },
686
+ }
687
+ };
688
+ </script>