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,301 +1,301 @@
1
- <template>
2
- <div>
3
- <template v-if="modeltype==='upload'">
4
- <Modal title="上传文件" v-model="showUpload" class-name="vertical-center-modal—bill" :footer-hide="true">
5
- <div class="demo-spin-col-bill">
6
- <RadioGroup v-if="showType" v-model="type" style="margin-bottom:24px">
7
- <Radio v-for="(item,index) in myConfig.typeData" :key="index" :label="item.code">
8
- <span>{{item.name}}</span>
9
- </Radio>
10
- </RadioGroup>
11
- <div style="height:220px;background-color: #F5F7FA;border:1px #DCDFE6 dashed">
12
- <Row type="flex" justify="center" >
13
- <Col style="margin-top:30px;margin-bottom:10px">
14
- <Icon custom="iconfont icon-custom-excel" size="60" />
15
- </Col>
16
- </Row>
17
- <Row type="flex" justify="center">
18
- <Col>
19
- <Input v-model="name" style="width:150px;" :border="false" placeholder="(支持xls、xlsx格式)" clearable disabled/>
20
- </Col>
21
- </Row>
22
- <Row type="flex" justify="center" :gutter="10">
23
- <Col>
24
- <Upload ref="upload"
25
- :before-upload="handleUpload"
26
- accept=".xlsx,.xls"
27
- :format="myConfig.fileType"
28
- :on-format-error="handleFormatError"
29
- :on-success="handleSuccess"
30
- :show-upload-list="false"
31
- :action="url">
32
- <Button style="width:150px;">选择文件</Button>
33
- </Upload>
34
- </Col>
35
- </Row>
36
- </div>
37
- <Spin v-show="loading" fix>
38
- <Icon type="ios-loading" size="18" class="demo-spin-icon-load"></Icon>
39
- <div>导入中</div>
40
- </Spin>
41
- </div>
42
- </Modal>
43
- </template>
44
- <template v-if="modeltype === 'down'">
45
- <Modal v-model="showUpload" title="选择模版" @on-ok="downTemplate" class-name="vertical-center-modal—bill">
46
- <RadioGroup v-model="type">
47
- <Radio v-for="(item,index) in myConfig.typeData" :key="index" :label="item.code">
48
- <span>{{item.name}}</span>
49
- </Radio>
50
- </RadioGroup>
51
- </Modal>
52
- </template>
53
- <template v-if="modeltype === 'export'">
54
- <Modal
55
- v-model="showUpload"
56
- title="导出选择"
57
- @on-ok="confirmExport"
58
- class-name="vertical-center-modal—bill"
59
- >
60
- <RadioGroup v-model="type">
61
- <Radio
62
- v-for="(item, index) in myConfig.typeData"
63
- :key="index"
64
- :label="item.code"
65
- >
66
- <span>{{ item.name }}</span>
67
- </Radio>
68
- </RadioGroup>
69
- </Modal>
70
- </template>
71
- </div>
72
- </template>
73
- <script>
74
- export default {
75
- name:'mbillimport',
76
- data () {
77
- return {
78
- myConfig:{
79
- typeData:[],
80
- fileType:['xlsx','xls'],
81
- setImportUrl:null
82
- },
83
- initConfig:{
84
- typeData:[],
85
- fileType:['xlsx','xls'],
86
- setImportUrl:null
87
- },
88
- file: null,
89
- name:'',
90
- type:'',
91
- showType:false,
92
- showUpload:false,
93
- modeltype:'upload',
94
- param:{},
95
- curlUrl:'',
96
- loading:false,
97
- downMethod:'exportTemplate',
98
- importMethod:'import'
99
- };
100
- },
101
- props:{
102
- config: {
103
- type:Object,
104
- default () {
105
- return {};
106
- }
107
- },
108
- } ,
109
- computed:{
110
- filename(){
111
- if (this.name) {
112
- return this.name;
113
- } else {
114
- return '(支持xls、xlsx格式)';
115
- }
116
- },
117
- url() {
118
- let url = this.curlUrl;
119
- let para = this.$Method.copy(this.param);
120
- if (this.showType) {
121
- if (this.myConfig.typeData.length > 0) {
122
- if (this.type) {
123
- para.billmoduleid = para.billmoduleid+'_' + this.type;
124
- }
125
- }
126
- }
127
- return url+'&param=' +encodeURI(JSON.stringify(para));
128
- }
129
- },
130
- methods: {
131
- init () {
132
- this.myConfig = Object.assign({},this.initConfig, this.config);
133
- if (this.myConfig.typeData && this.myConfig.typeData.length > 0) {
134
- this.showType = true;
135
- this.type = this.myConfig.typeData[0].code;
136
- }
137
- if (this.myConfig.importMethod) {
138
- this.importMethod = this.myConfig.importMethod;
139
- }
140
- if (this.myConfig.downMethod) {
141
- this.downMethod = this.myConfig.downMethod;
142
- }
143
- },
144
- setModeltype(value) {
145
- this.modeltype = value;
146
- },
147
-
148
- setExportUrl(url, method, param, typeData) {
149
- this.modeltype = "export";
150
- this.curlUrl = this.getResturl(url, method, {}, this);
151
- this.param = param;
152
- this.myConfig.typeData = typeData;
153
- this.showUpload = true;
154
- },
155
-
156
- confirmExport() {
157
- if (!this.type) {
158
- this.$Message.error("请选择导出类型");
159
- return;
160
- }
161
- let newParam = Object.assign({}, this.param);
162
- // 拼接 billmoduleid_xxx
163
- newParam.billmoduleid = newParam.billmoduleid + "_" + this.type.split("_")[1];
164
- this.downloadExcel(this.curlUrl, this, newParam);
165
- },
166
-
167
- setShowUpload(flag) {
168
- if (flag) {
169
- this.init ();
170
- }
171
- this.showUpload = flag;
172
- },
173
- setUrl(url,method,param) {
174
- if (url) {
175
- url = url.replace('rest', this.importMethod);
176
- }
177
- let self = this;
178
- this.curlUrl = this.getResturl(url,method,{},self);
179
- if (this.myConfig.setImportUrl) {
180
- this.curlUrl = this.myConfig.setImportUrl(this.curlUrl,'import');
181
- }
182
- Object.assign(this.param, param);
183
-
184
- if (this.myConfig.typeData.length > 1) {
185
- if (!this.type) {
186
- this.type = this.myConfig.typeData[0].code;
187
- }
188
- }
189
- },
190
- setDownUrl(url,param) {
191
- if (url) {
192
- url = url.replace('rest', this.downMethod);
193
- }
194
- let self = this;
195
- this.curlUrl = this.getResturl(url,null,{},self);
196
- if (this.myConfig.typeData.length > 1) {
197
- this.param = param;
198
- this.type = this.myConfig.typeData[0].code;
199
- this.showUpload = true;
200
- } else {
201
- let temp = this.curlUrl +'&param=' +encodeURI(JSON.stringify(param));
202
- if (this.myConfig.setImportUrl) {
203
- temp = this.myConfig.setImportUrl(temp,'down');
204
- }
205
- window.open(temp,'_self');
206
- }
207
- },
208
- handleUpload (file) {
209
- if (!this.checkFormat(file)) {
210
- this.handleFormatError(file);
211
- this.file = null;
212
- this.name = '';
213
- return false;
214
- } else {
215
- this.file = file;
216
- this.name = file.name;
217
- this.upload();
218
- }
219
- return false;
220
- },
221
- checkFormat(file) {
222
- const _file_format = file.name.split('.').pop().toLocaleLowerCase();
223
- const checked = this.myConfig.fileType.some(item => item.toLocaleLowerCase() === _file_format);
224
- return checked;
225
- },
226
- upload () {
227
- if (!this.name) {
228
- this.file = null;
229
- }
230
- if (this.file !== null) {
231
- this.loading = true;
232
- this.$refs.upload.post(this.file);
233
- }
234
- },
235
- handleFormatError (file) {
236
- let type = this.myConfig.fileType.join(',');
237
- this.alert('文件[' + file.name + ']的格式不正确,请上传格式为(' + type + ')的文件');
238
- },
239
- handleSuccess(res) {
240
- if (res && Number(res.returncode) !== 0) {
241
- this.showUpload = false;
242
- this.file = null;
243
- this.name = '';
244
- this.alert(res.data);
245
- } else {
246
- this.showUpload = false;
247
- this.file = null;
248
- this.name = '';
249
- if (this.myConfig.importSuccess) {
250
- this.myConfig.importSuccess(res);
251
- } else {
252
- if (this.$parent.doImportSuccess) {
253
- this.$parent.doImportSuccess();
254
- }
255
- this.alert(res.elapsed,'导入成功');
256
- }
257
- }
258
- this.loading = false;
259
-
260
- },
261
- downTemplate() {
262
- if (this.type) {
263
- let param = this.$Method.copy(this.param);
264
- if (param.billmoduleid) {
265
- param.billmoduleid = param.billmoduleid + '_' + this.type;
266
- let temp = this.url +'&param=' +encodeURI(JSON.stringify(param));
267
- window.open(temp,'_self');
268
- this.showUpload = false;
269
- }
270
-
271
- }
272
- }
273
- }
274
- };
275
- </script>
276
- <style lang="less" scoped>
277
- .ivu-modal-wrap.vertical-center-modal—bill .ivu-modal-header{
278
- border-bottom:none;
279
- border-radius:10px;
280
- }
281
- .ivu-modal-wrap.vertical-center-modal—bill .ivu-modal-body{
282
- padding-top: 8px;
283
- padding-right: 28px;
284
- padding-bottom: 32px;
285
- padding-left: 28px;
286
- }
287
- .demo-spin-icon-load{
288
- animation: ani-demo-spin 1s linear infinite;
289
- }
290
- @keyframes ani-demo-spin {
291
- from { transform: rotate(0deg);}
292
- 50% { transform: rotate(180deg);}
293
- to { transform: rotate(360deg);}
294
- }
295
- .demo-spin-col-bill{
296
- position: relative;
297
- }
298
- </style>
299
- <style>
300
-
301
- </style>
1
+ <template>
2
+ <div>
3
+ <template v-if="modeltype==='upload'">
4
+ <Modal title="上传文件" v-model="showUpload" class-name="vertical-center-modal—bill" :footer-hide="true">
5
+ <div class="demo-spin-col-bill">
6
+ <RadioGroup v-if="showType" v-model="type" style="margin-bottom:24px">
7
+ <Radio v-for="(item,index) in myConfig.typeData" :key="index" :label="item.code">
8
+ <span>{{item.name}}</span>
9
+ </Radio>
10
+ </RadioGroup>
11
+ <div style="height:220px;background-color: #F5F7FA;border:1px #DCDFE6 dashed">
12
+ <Row type="flex" justify="center" >
13
+ <Col style="margin-top:30px;margin-bottom:10px">
14
+ <Icon custom="iconfont icon-custom-excel" size="60" />
15
+ </Col>
16
+ </Row>
17
+ <Row type="flex" justify="center">
18
+ <Col>
19
+ <Input v-model="name" style="width:150px;" :border="false" placeholder="(支持xls、xlsx格式)" clearable disabled/>
20
+ </Col>
21
+ </Row>
22
+ <Row type="flex" justify="center" :gutter="10">
23
+ <Col>
24
+ <Upload ref="upload"
25
+ :before-upload="handleUpload"
26
+ accept=".xlsx,.xls"
27
+ :format="myConfig.fileType"
28
+ :on-format-error="handleFormatError"
29
+ :on-success="handleSuccess"
30
+ :show-upload-list="false"
31
+ :action="url">
32
+ <Button style="width:150px;">选择文件</Button>
33
+ </Upload>
34
+ </Col>
35
+ </Row>
36
+ </div>
37
+ <Spin v-show="loading" fix>
38
+ <Icon type="ios-loading" size="18" class="demo-spin-icon-load"></Icon>
39
+ <div>导入中</div>
40
+ </Spin>
41
+ </div>
42
+ </Modal>
43
+ </template>
44
+ <template v-if="modeltype === 'down'">
45
+ <Modal v-model="showUpload" title="选择模版" @on-ok="downTemplate" class-name="vertical-center-modal—bill">
46
+ <RadioGroup v-model="type">
47
+ <Radio v-for="(item,index) in myConfig.typeData" :key="index" :label="item.code">
48
+ <span>{{item.name}}</span>
49
+ </Radio>
50
+ </RadioGroup>
51
+ </Modal>
52
+ </template>
53
+ <template v-if="modeltype === 'export'">
54
+ <Modal
55
+ v-model="showUpload"
56
+ title="导出选择"
57
+ @on-ok="confirmExport"
58
+ class-name="vertical-center-modal—bill"
59
+ >
60
+ <RadioGroup v-model="type">
61
+ <Radio
62
+ v-for="(item, index) in myConfig.typeData"
63
+ :key="index"
64
+ :label="item.code"
65
+ >
66
+ <span>{{ item.name }}</span>
67
+ </Radio>
68
+ </RadioGroup>
69
+ </Modal>
70
+ </template>
71
+ </div>
72
+ </template>
73
+ <script>
74
+ export default {
75
+ name:'mbillimport',
76
+ data () {
77
+ return {
78
+ myConfig:{
79
+ typeData:[],
80
+ fileType:['xlsx','xls'],
81
+ setImportUrl:null
82
+ },
83
+ initConfig:{
84
+ typeData:[],
85
+ fileType:['xlsx','xls'],
86
+ setImportUrl:null
87
+ },
88
+ file: null,
89
+ name:'',
90
+ type:'',
91
+ showType:false,
92
+ showUpload:false,
93
+ modeltype:'upload',
94
+ param:{},
95
+ curlUrl:'',
96
+ loading:false,
97
+ downMethod:'exportTemplate',
98
+ importMethod:'import'
99
+ };
100
+ },
101
+ props:{
102
+ config: {
103
+ type:Object,
104
+ default () {
105
+ return {};
106
+ }
107
+ },
108
+ } ,
109
+ computed:{
110
+ filename(){
111
+ if (this.name) {
112
+ return this.name;
113
+ } else {
114
+ return '(支持xls、xlsx格式)';
115
+ }
116
+ },
117
+ url() {
118
+ let url = this.curlUrl;
119
+ let para = this.$Method.copy(this.param);
120
+ if (this.showType) {
121
+ if (this.myConfig.typeData.length > 0) {
122
+ if (this.type) {
123
+ para.billmoduleid = para.billmoduleid+'_' + this.type;
124
+ }
125
+ }
126
+ }
127
+ return url+'&param=' +encodeURI(JSON.stringify(para));
128
+ }
129
+ },
130
+ methods: {
131
+ init () {
132
+ this.myConfig = Object.assign({},this.initConfig, this.config);
133
+ if (this.myConfig.typeData && this.myConfig.typeData.length > 0) {
134
+ this.showType = true;
135
+ this.type = this.myConfig.typeData[0].code;
136
+ }
137
+ if (this.myConfig.importMethod) {
138
+ this.importMethod = this.myConfig.importMethod;
139
+ }
140
+ if (this.myConfig.downMethod) {
141
+ this.downMethod = this.myConfig.downMethod;
142
+ }
143
+ },
144
+ setModeltype(value) {
145
+ this.modeltype = value;
146
+ },
147
+
148
+ setExportUrl(url, method, param, typeData) {
149
+ this.modeltype = "export";
150
+ this.curlUrl = this.getResturl(url, method, {}, this);
151
+ this.param = param;
152
+ this.myConfig.typeData = typeData;
153
+ this.showUpload = true;
154
+ },
155
+
156
+ confirmExport() {
157
+ if (!this.type) {
158
+ this.$Message.error("请选择导出类型");
159
+ return;
160
+ }
161
+ let newParam = Object.assign({}, this.param);
162
+ // 拼接 billmoduleid_xxx
163
+ newParam.billmoduleid = newParam.billmoduleid + "_" + this.type.split("_")[1];
164
+ this.downloadExcel(this.curlUrl, this, newParam);
165
+ },
166
+
167
+ setShowUpload(flag) {
168
+ if (flag) {
169
+ this.init ();
170
+ }
171
+ this.showUpload = flag;
172
+ },
173
+ setUrl(url,method,param) {
174
+ if (url) {
175
+ url = url.replace('rest', this.importMethod);
176
+ }
177
+ let self = this;
178
+ this.curlUrl = this.getResturl(url,method,{},self);
179
+ if (this.myConfig.setImportUrl) {
180
+ this.curlUrl = this.myConfig.setImportUrl(this.curlUrl,'import');
181
+ }
182
+ Object.assign(this.param, param);
183
+
184
+ if (this.myConfig.typeData.length > 1) {
185
+ if (!this.type) {
186
+ this.type = this.myConfig.typeData[0].code;
187
+ }
188
+ }
189
+ },
190
+ setDownUrl(url,param) {
191
+ if (url) {
192
+ url = url.replace('rest', this.downMethod);
193
+ }
194
+ let self = this;
195
+ this.curlUrl = this.getResturl(url,null,{},self);
196
+ if (this.myConfig.typeData.length > 1) {
197
+ this.param = param;
198
+ this.type = this.myConfig.typeData[0].code;
199
+ this.showUpload = true;
200
+ } else {
201
+ let temp = this.curlUrl +'&param=' +encodeURI(JSON.stringify(param));
202
+ if (this.myConfig.setImportUrl) {
203
+ temp = this.myConfig.setImportUrl(temp,'down');
204
+ }
205
+ window.open(temp,'_self');
206
+ }
207
+ },
208
+ handleUpload (file) {
209
+ if (!this.checkFormat(file)) {
210
+ this.handleFormatError(file);
211
+ this.file = null;
212
+ this.name = '';
213
+ return false;
214
+ } else {
215
+ this.file = file;
216
+ this.name = file.name;
217
+ this.upload();
218
+ }
219
+ return false;
220
+ },
221
+ checkFormat(file) {
222
+ const _file_format = file.name.split('.').pop().toLocaleLowerCase();
223
+ const checked = this.myConfig.fileType.some(item => item.toLocaleLowerCase() === _file_format);
224
+ return checked;
225
+ },
226
+ upload () {
227
+ if (!this.name) {
228
+ this.file = null;
229
+ }
230
+ if (this.file !== null) {
231
+ this.loading = true;
232
+ this.$refs.upload.post(this.file);
233
+ }
234
+ },
235
+ handleFormatError (file) {
236
+ let type = this.myConfig.fileType.join(',');
237
+ this.alert('文件[' + file.name + ']的格式不正确,请上传格式为(' + type + ')的文件');
238
+ },
239
+ handleSuccess(res) {
240
+ if (res && Number(res.returncode) !== 0) {
241
+ this.showUpload = false;
242
+ this.file = null;
243
+ this.name = '';
244
+ this.alert(res.data);
245
+ } else {
246
+ this.showUpload = false;
247
+ this.file = null;
248
+ this.name = '';
249
+ if (this.myConfig.importSuccess) {
250
+ this.myConfig.importSuccess(res);
251
+ } else {
252
+ if (this.$parent.doImportSuccess) {
253
+ this.$parent.doImportSuccess();
254
+ }
255
+ this.alert(res.elapsed,'导入成功');
256
+ }
257
+ }
258
+ this.loading = false;
259
+
260
+ },
261
+ downTemplate() {
262
+ if (this.type) {
263
+ let param = this.$Method.copy(this.param);
264
+ if (param.billmoduleid) {
265
+ param.billmoduleid = param.billmoduleid + '_' + this.type;
266
+ let temp = this.url +'&param=' +encodeURI(JSON.stringify(param));
267
+ window.open(temp,'_self');
268
+ this.showUpload = false;
269
+ }
270
+
271
+ }
272
+ }
273
+ }
274
+ };
275
+ </script>
276
+ <style lang="less" scoped>
277
+ .ivu-modal-wrap.vertical-center-modal—bill .ivu-modal-header{
278
+ border-bottom:none;
279
+ border-radius:10px;
280
+ }
281
+ .ivu-modal-wrap.vertical-center-modal—bill .ivu-modal-body{
282
+ padding-top: 8px;
283
+ padding-right: 28px;
284
+ padding-bottom: 32px;
285
+ padding-left: 28px;
286
+ }
287
+ .demo-spin-icon-load{
288
+ animation: ani-demo-spin 1s linear infinite;
289
+ }
290
+ @keyframes ani-demo-spin {
291
+ from { transform: rotate(0deg);}
292
+ 50% { transform: rotate(180deg);}
293
+ to { transform: rotate(360deg);}
294
+ }
295
+ .demo-spin-col-bill{
296
+ position: relative;
297
+ }
298
+ </style>
299
+ <style>
300
+
301
+ </style>