ocpview-plus 1.3.14 → 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,614 +1,614 @@
1
- <template>
2
- <div>
3
- <template v-if="modeltype==='upload'">
4
- <Modal title="导入" v-model="showUpload" class-name="vertical-center-modal—bill" :width="modelWidth" :footer-hide="true" @on-visible-change="visibleChange">
5
- <Row type="flex" justify="start" :gutter="5">
6
- <Col span='16'>
7
- <Card :padding="0" :bordered="false" dis-hover >
8
- <div style="margin-bottom:10px;display: flex;justify-content: space-between;">
9
- <div>
10
- <span class="efuture-title-verticalline"/> <span style="font-size: 14px;font-weight:bold">任务文件</span>
11
- </div>
12
- <Button size="small" customIcon="iconfont icon-custom-anniu-shuaxin" @click="Refurbish">刷新</Button>
13
- </div>
14
- <SimpleViewGrid
15
- ref="grid"
16
- :config="gridConfig"
17
- :dictData="dictData"
18
- @rowclick="gridClick"
19
- />
20
- </Card>
21
- <Divider style="margin:12px 0"/>
22
- <Card :padding="0" :bordered="false" dis-hover >
23
- <div style="margin-bottom:10px;display: flex;justify-content: space-between;">
24
- <div>
25
- <span class="efuture-title-verticalline"/> <span style="font-size: 14px;font-weight:bold">导入错误信息</span>
26
- </div>
27
- <Button size="small" customIcon="iconfont icon-custom-filedown" @click="downErr">下载</Button>
28
- </div>
29
- <SimpleViewGrid
30
- ref="griderr"
31
- :config="gridErrConfig"
32
- :dictData="dictData"
33
- />
34
- </Card>
35
- </Col>
36
- <Col span='8'>
37
- <p style="margin-bottom:10px;">
38
- <span class="efuture-title-verticalline"/> <span style="font-size: 14px;font-weight:bold">导入文件</span>
39
- </p>
40
- <div class="demo-spin-col-bill">
41
- <RadioGroup v-if="showType" v-model="type" style="margin-bottom:24px">
42
- <Radio v-for="(item,index) in myConfig.typeData" :key="index" :label="item.code">
43
- <span>{{item.name}}</span>
44
- </Radio>
45
- </RadioGroup>
46
- <div :style="divStyle">
47
- <Row type="flex" justify="center" >
48
- <Col style="margin-top:30px;margin-bottom:10px">
49
- <Icon custom="iconfont icon-custom-excel" size="60" />
50
- </Col>
51
- </Row>
52
- <Row type="flex" justify="center">
53
- <Col>
54
- <Input v-model="name" style="width:150px;" :border="false" placeholder="(支持xls、xlsx格式)" clearable disabled/>
55
- </Col>
56
- </Row>
57
- <Row type="flex" justify="center" :gutter="10">
58
- <Col>
59
- <Upload ref="upload"
60
- :before-upload="handleUpload"
61
- accept=".xlsx,.xls"
62
- :format="myConfig.fileType"
63
- :on-format-error="handleFormatError"
64
- :on-success="handleSuccess"
65
- :show-upload-list="false"
66
- :action="url">
67
- <Button style="width:150px;">选择文件</Button>
68
- </Upload>
69
- </Col>
70
- </Row>
71
- </div>
72
- <Spin v-show="loading" fix>
73
- <Icon type="ios-loading" size="18" class="demo-spin-icon-load"></Icon>
74
- <div>导入中</div>
75
- </Spin>
76
- </div>
77
- </Col>
78
- </Row>
79
- </Modal>
80
- </template>
81
- <template v-if="modeltype === 'down'">
82
- <Modal v-model="showUpload" title="选择模版" @on-ok="downTemplate" class-name="vertical-center-modal—bill">
83
- <RadioGroup v-model="type">
84
- <Radio v-for="(item,index) in myConfig.typeData" :key="index" :label="item.code">
85
- <span>{{item.name}}</span>
86
- </Radio>
87
- </RadioGroup>
88
- </Modal>
89
- </template>
90
- <template v-if="modeltype === 'export'">
91
- <Modal v-model="showUpload" title="导出" :width="modelWidth" class-name="vertical-center-modal—bill" :footer-hide="true">
92
- <Row type="flex" justify="start" align="middle" :gutter="0" style="margin-bottom:20px">
93
- <Col span="3">
94
- <Button @click="doAsyncExport">生成导出任务</Button>
95
- </Col>
96
- <Col v-if="checkExport" span="21">
97
- <p v-if="checkExportFailFlag" style="border:1px solid #F3B352;background-color:#FFF7EB;padding-left:30px;padding-right:30px"> <Icon custom="iconfont icon-custom-daishenpi" size="20" color="#F3B352"/> <span style="margin-left: 12px;font-size:18px;color:#F3B352;font-weight:bold">已存在生成中的导出任务,请稍后生成导出任务</span> </p>
98
- <p v-if="checkExportSuccessFlag" style="border:1px solid #739943;background-color:#FBFFF6;padding-left:30px;padding-right:30px"> <Icon custom="iconfont icon-custom-wancheng" size="20" color="#739943"/> <span style="margin-left: 12px;font-size:18px;color:#739943;font-weight:bold">导出任务已生成,请稍后在任务列表下载文件</span> </p>
99
- </Col>
100
- </Row>
101
- <div style="margin-bottom:10px;display: flex;justify-content: space-between;">
102
- <div>
103
- <span class="efuture-title-verticalline"/> <span style="font-size: 14px;font-weight:bold" v-text="exportGridConfig.gridtitle" />
104
- </div>
105
- <Button size="small" customIcon="iconfont icon-custom-anniu-shuaxin" @click="Refurbish">刷新</Button>
106
- </div>
107
- <SimpleViewGrid
108
- ref="grid"
109
- :config="exportGridConfig"
110
- :dictData="dictData"
111
- />
112
- </Modal>
113
- </template>
114
- </div>
115
- </template>
116
- <script>
117
- import { resolveComponent } from 'vue';
118
- export default {
119
- name:'mbillasyncimport',
120
- data () {
121
- return {
122
- myConfig:{
123
- typeData:[],
124
- fileType:['xlsx','xls'],
125
- setImportUrl:null,
126
- resources:'',
127
- },
128
- initConfig:{
129
- typeData:[],
130
- fileType:['xlsx','xls'],
131
- setImportUrl:null,
132
- resources:'',
133
- },
134
- gridConfig:{
135
- gridtitle:'任务文件',
136
- showPage:false,
137
- dynamicHeight:false,
138
- height:250,
139
- items:[{
140
- label:'日期',
141
- name:'taskdate',
142
- type:'DateBox',
143
- vtype:'datetime',
144
- width:150
145
- }, {
146
- label:'状态',
147
- name:'taskstatus',
148
- type:'ComboBox',
149
- codeWithName:false,
150
- data:[{ code : 'N', name : '进行中'},{ code : 'F', name : '导入失败'}, { code : 'Y', name : '已生成'} ,{ code : 'E', name : '部分导入成功'}],
151
- width:100,
152
- },{
153
- label:'文件名称',
154
- name:'filename',
155
- type:'TextBox'
156
- },{
157
- label:'操作',
158
- key:'action',
159
- align: 'center',
160
- render: this.actionRender,
161
- width:200
162
- }]
163
- },
164
- gridErrConfig:{
165
- gridtitle:'任务文件',
166
- showPage:false,
167
- dynamicHeight:false,
168
- height:250,
169
- items:[{
170
- label:'错误信息',
171
- name:'errmsg',
172
- type:'TextBox'
173
- }]
174
- },
175
- exportGridConfig:{
176
- gridtitle:'任务日志',
177
- showPage:false,
178
- dynamicHeight:false,
179
- height:250,
180
- items:[{
181
- label:'日期',
182
- name:'taskdate',
183
- type:'DateBox',
184
- vtype:'datetime',
185
- width:150
186
- }, {
187
- label:'状态',
188
- name:'taskstatus',
189
- type:'ComboBox',
190
- codeWithName:false,
191
- data:[{ code : 'N', name : '进行中'},{ code : 'F', name : '导入失败'}, { code : 'Y', name : '已完成'} ,{ code : 'C', name : '已取消'},],
192
- width:100,
193
- },{
194
- label:'文件名称',
195
- name:'filename',
196
- type:'TextBox'
197
- },{
198
- label:'操作',
199
- key:'action',
200
- align: 'center',
201
- render: this.actionRender,
202
- width:250
203
- }]
204
- },
205
- file: null,
206
- name:'',
207
- type:'',
208
- showType:false,
209
- showUpload:false,
210
- modeltype:'upload',
211
- param:{},
212
- curlUrl:'',
213
- loading:false,
214
- checkExport:false,
215
- isExport:false,
216
- downMethod:'exportTemplate',
217
- importMethod:'asyncImport',
218
- billkey:'',
219
- rowBtnData:[
220
- {
221
- icon:'custom-filedown',
222
- name:'downFile',
223
- text:'下载'
224
- },
225
- {
226
- icon:'custom-filedel',
227
- name:'delTask',
228
- text:'删除'
229
- },
230
- {
231
- icon:'custom-filerecall',
232
- name:'cancelTask',
233
- text:'取消'
234
- }
235
- ],
236
- checkExportFailFlag: false,
237
- checkExportSuccessFlag:true,
238
- actionGrid:null,
239
- modulecode:''
240
- };
241
- },
242
- props:{
243
- config: {
244
- type:Object,
245
- default () {
246
- return {};
247
- }
248
- },
249
- } ,
250
- computed:{
251
- filename(){
252
- if (this.name) {
253
- return this.name;
254
- } else {
255
- return '(支持xls、xlsx格式)';
256
- }
257
- },
258
- modelWidth() {
259
- return this.clientWidth * 0.8;
260
- },
261
- clientWidth () {
262
- return this.$Store.state.app.clientWidth;
263
- },
264
- clientHeight () {
265
- return this.$Store.state.app.clientHeight;
266
- },
267
- divStyle() {
268
- let height = 560;
269
- let style = 'border:1px solid #DCDFE6;'
270
- style = style + 'height:' + height + 'px;'
271
- return style;
272
- },
273
- url() {
274
- let url = this.curlUrl;
275
- let para = this.$Method.copy(this.param);
276
- if (this.showType) {
277
- if (this.myConfig.typeData.length > 0) {
278
- if (this.type) {
279
- para.billmoduleid = para.billmoduleid+'_' + this.type;
280
- }
281
- }
282
- }
283
- return url+'&param=' +encodeURI(JSON.stringify(para));
284
- }
285
- },
286
- methods: {
287
- init () {
288
- this.myConfig = Object.assign({},this.initConfig, this.config);
289
- if (this.myConfig.typeData && this.myConfig.typeData.length > 0) {
290
- this.showType = true;
291
- this.type = this.myConfig.typeData[0].code;
292
- }
293
- if (this.myConfig.importMethod) {
294
- this.importMethod = this.myConfig.importMethod;
295
- }
296
- if (this.myConfig.downMethod) {
297
- this.downMethod = this.myConfig.downMethod;
298
- }
299
- if (!this.myConfig.downfile) {
300
- this.myConfig.downfile = this.OmdUrl.downfile;
301
- }
302
- },
303
- setModeltype(value) {
304
- this.modeltype = value;
305
- },
306
- initData(billkey,modulecode,grid) {
307
- let para = {};
308
- if (billkey) {
309
- para.billkey = billkey;
310
- para.tasktype = '1';
311
- this.billkey = billkey;
312
- this.setImpExportData(para);
313
- } else {
314
- this.billkey = '';
315
- para.modulecode = modulecode;
316
- para.tasktype = '2';
317
- this.actionGrid = grid;
318
- this.modulecode = modulecode;
319
- this.setImpExportData(para);
320
- }
321
- },
322
- clearData() {
323
- this.$refs.grid.clearData();
324
- this.$refs.griderr.clearData();
325
- },
326
- setImpExportData (para) {
327
- let self = this;
328
- self.$refs.grid.clearData();
329
- self.synchroPost(this.myConfig.resources, 'importexportservice.search', para, function (data) {
330
- if (data.impexporthead) {
331
- self.$refs.grid.setData(data.impexporthead);
332
- }
333
- });
334
- },
335
- setImpErrData(taskid) {
336
- let self = this;
337
- let para = {};
338
- para.taskid = taskid;
339
- self.$refs.griderr.setData([])
340
- self.synchroPost(this.myConfig.resources, 'importexportservice.searchImportErr', para, function (data) {
341
- if (data.imperrmsgdetail) {
342
- self.$refs.griderr.setData(data.imperrmsgdetail);
343
- }
344
- });
345
- },
346
- setShowUpload(flag) {
347
- if (flag) {
348
- this.init();
349
- }
350
- this.showUpload = flag;
351
- },
352
- setResources(url) {
353
- this.myConfig.resources = url;
354
- },
355
- setUrl(url,method,param) {
356
- if (url) {
357
- url = url.replace('rest', this.importMethod);
358
- }
359
- let self = this;
360
- this.curlUrl = this.getResturl(url,method,{},self);
361
- if (this.myConfig.setImportUrl) {
362
- this.curlUrl = this.myConfig.setImportUrl(this.curlUrl,'import');
363
- }
364
- Object.assign(this.param, param);
365
-
366
- if (this.myConfig.typeData.length > 1) {
367
- if (!this.type) {
368
- this.type = this.myConfig.typeData[0].code;
369
- }
370
- }
371
- },
372
- setDownUrl(url,param) {
373
- if (url) {
374
- url = url.replace('rest', this.downMethod);
375
- }
376
- let self = this;
377
- this.curlUrl = this.getResturl(url,null,{},self);
378
- if (this.myConfig.typeData.length > 1) {
379
- this.param = param;
380
- this.type = this.myConfig.typeData[0].code;
381
- this.showUpload = true;
382
- } else {
383
- let temp = this.curlUrl +'&param=' +encodeURI(JSON.stringify(param));
384
- if (this.myConfig.setImportUrl) {
385
- temp = this.myConfig.setImportUrl(temp,'down');
386
- }
387
- window.open(temp,'_self');
388
- }
389
- },
390
- handleUpload (file) {
391
- if (!this.checkFormat(file)) {
392
- this.handleFormatError(file);
393
- this.file = null;
394
- this.name = '';
395
- return false;
396
- } else {
397
- if (this.checkTask()) {
398
- this.alert('存在进行中的导入任务,请稍后导入数据');
399
- this.file = null;
400
- this.name = '';
401
- return false;
402
- } else {
403
- this.file = file;
404
- this.name = file.name;
405
- this.isExport = true;
406
- this.upload();
407
- }
408
- }
409
- return false;
410
- },
411
- checkFormat(file) {
412
- const _file_format = file.name.split('.').pop().toLocaleLowerCase();
413
- const checked = this.myConfig.fileType.some(item => item.toLocaleLowerCase() === _file_format);
414
- return checked;
415
- },
416
- checkTask() {
417
- let self = this;
418
- let para = {};
419
- if (this.modeltype === 'upload') {
420
- para.tasktype = '1';
421
- para.billkey = this.billkey;
422
- } else {
423
- para.tasktype = '2';
424
- para.modulecode = this.modulecode;
425
- }
426
- let flag = false;
427
- self.synchroPost(this.myConfig.resources, 'importexportservice.checkTask', para, function (data) {
428
- if (data.flag === '-1') {
429
- flag = true;
430
- }
431
- });
432
- return flag;
433
- },
434
- upload () {
435
- if (!this.name) {
436
- this.file = null;
437
- }
438
- if (this.file !== null) {
439
- this.loading = true;
440
- this.$refs.upload.post(this.file);
441
- }
442
- },
443
-
444
- handleFormatError (file) {
445
- let type = this.myConfig.fileType.join(',');
446
- this.alert('文件[' + file.name + ']的格式不正确,请上传格式为(' + type + ')的文件');
447
- },
448
- handleSuccess(res) {
449
- let self = this;
450
- setTimeout(() => {
451
- self.file = null;
452
- self.name = '';
453
- self.Refurbish();
454
- if (self.myConfig.importSuccess) {
455
- self.myConfig.importSuccess(res);
456
- }
457
- self.loading = false;
458
- }, 2000)
459
-
460
- },
461
- downTemplate() {
462
- if (this.type) {
463
- let param = this.$Method.copy(this.param);
464
- if (param.billmoduleid) {
465
- param.billmoduleid = param.billmoduleid + '_' + this.type;
466
- let temp = this.url +'&param=' +encodeURI(JSON.stringify(param));
467
- window.open(temp,'_self');
468
- this.showUpload = false;
469
- }
470
- }
471
- },
472
- actionRender (h, params) {
473
- let btnConfig = {};
474
- btnConfig.showNum = 4;
475
- btnConfig.fontStyle = '';
476
- btnConfig.items = [];
477
- if (params.row.filekey) {
478
- let del = this.$Method.copy(this.rowBtnData[0]);
479
- btnConfig.items.push(del);
480
- }
481
- if (this.modeltype === 'export') {
482
- if (params.row.taskstatus === 'N') {
483
- btnConfig.items.push(this.$Method.copy(this.rowBtnData[2]));
484
- }
485
- }
486
- btnConfig.items.push(this.$Method.copy(this.rowBtnData[1]));
487
- return h('div', [
488
- h(resolveComponent('RowBtnToolbar'), {
489
- config:btnConfig,
490
- onDoAction:(val) => {
491
- if (val.name === 'delTask') {
492
- this.delTask(params);
493
- }
494
- if (val.name === 'downFile') {
495
- this.downFile(params);
496
- }
497
- if (val.name === 'cancelTask') {
498
- this.cancelTask(params);
499
- }
500
- this.checkExport = false;
501
- this.checkExportFailFlag = false;
502
- this.checkExportSuccessFlag = false;
503
- }
504
- })
505
- ]);
506
- },
507
- delTask(params) {
508
- this.$refs.grid.delRow(params.index);
509
- let self = this;
510
- let para = {};
511
- para.taskid= params.row.taskid;
512
- self.asyncPost(this.myConfig.resources, 'importexportservice.taskDel', para, function (data) {
513
- if (data.flag === '1') {
514
- }
515
- });
516
- },
517
- cancelTask(params) {
518
- let self = this;
519
- let para = {};
520
- para.taskid= params.row.taskid;
521
- self.asyncPost(this.myConfig.resources, 'importexportservice.taskCancel', para, function (data) {
522
- if (data.flag === '1') {
523
- self.$refs.grid.updataRow(params.index,{taskstatus:'C'});
524
- }
525
- });
526
- },
527
- gridClick(e) {
528
- this.setImpErrData(e.taskid);
529
- },
530
- downErr() {
531
- let data = this.$refs.griderr.getData();
532
- if (data.length === 0) {
533
- this.alert('没有错误信息可下载');
534
- return;
535
- } else {
536
- this.$Method.exportExcel(this.gridErrConfig.items, this.$refs.griderr.getData(),null,'错误信息');
537
- }
538
-
539
- },
540
- Refurbish() {
541
- let para = {};
542
- if (this.modeltype === 'upload') {
543
- para.tasktype = '1';
544
- para.billkey = this.billkey;
545
- this.$refs.griderr.clearData();
546
- this.setImpExportData(para);
547
- } else {
548
- para.tasktype = '2';
549
- para.modulecode = this.modulecode;
550
- this.setImpExportData(para);
551
- }
552
-
553
- },
554
- downFile(params) {
555
- if (!params.row.filekey) {
556
- return;
557
- }
558
- let downUrl = this.myConfig.downfile + params.row.filekey + "&ent_id=" + this.getEnt_id() + "&token=" + this.getToken();
559
- window.open(downUrl);
560
- },
561
- doAsyncExport() {
562
- this.checkExport = false;
563
- this.checkExportFailFlag = false;
564
- this.checkExportSuccessFlag = false;
565
- this.$nextTick(() => {
566
- if (this.checkTask()){
567
- this.checkExportFailFlag = true;
568
- this.checkExport = true;
569
- } else {
570
- this.actionGrid.export(true,this.exportFinish)
571
- }
572
- });
573
-
574
- },
575
- exportFinish() {
576
- this.checkExportSuccessFlag = true;
577
- this.checkExport = true;
578
- this.Refurbish();
579
- },
580
- visibleChange(value) {
581
- if (this.modeltype === 'upload'){
582
- if (this.isExport) {
583
- if (this.$parent.asyncImportClose) {
584
- this.$parent.asyncImportClose(value);
585
- }
586
- }
587
-
588
- }
589
- }
590
- }
591
- };
592
- </script>
593
- <style lang="less" scoped>
594
- .ivu-modal-wrap.vertical-center-modal—bill .ivu-modal-header{
595
- border-radius:10px;
596
- }
597
- .ivu-modal-wrap.vertical-center-modal—bill .ivu-modal-body{
598
- padding-top: 8px;
599
- padding-right: 28px;
600
- padding-bottom: 32px;
601
- padding-left: 28px;
602
- }
603
- .demo-spin-icon-load{
604
- animation: ani-demo-spin 1s linear infinite;
605
- }
606
- @keyframes ani-demo-spin {
607
- from { transform: rotate(0deg);}
608
- 50% { transform: rotate(180deg);}
609
- to { transform: rotate(360deg);}
610
- }
611
- .demo-spin-col-bill{
612
- position: relative;
613
- }
614
- </style>
1
+ <template>
2
+ <div>
3
+ <template v-if="modeltype==='upload'">
4
+ <Modal title="导入" v-model="showUpload" class-name="vertical-center-modal—bill" :width="modelWidth" :footer-hide="true" @on-visible-change="visibleChange">
5
+ <Row type="flex" justify="start" :gutter="5">
6
+ <Col span='16'>
7
+ <Card :padding="0" :bordered="false" dis-hover >
8
+ <div style="margin-bottom:10px;display: flex;justify-content: space-between;">
9
+ <div>
10
+ <span class="efuture-title-verticalline"/> <span style="font-size: 14px;font-weight:bold">任务文件</span>
11
+ </div>
12
+ <Button size="small" customIcon="iconfont icon-custom-anniu-shuaxin" @click="Refurbish">刷新</Button>
13
+ </div>
14
+ <SimpleViewGrid
15
+ ref="grid"
16
+ :config="gridConfig"
17
+ :dictData="dictData"
18
+ @rowclick="gridClick"
19
+ />
20
+ </Card>
21
+ <Divider style="margin:12px 0"/>
22
+ <Card :padding="0" :bordered="false" dis-hover >
23
+ <div style="margin-bottom:10px;display: flex;justify-content: space-between;">
24
+ <div>
25
+ <span class="efuture-title-verticalline"/> <span style="font-size: 14px;font-weight:bold">导入错误信息</span>
26
+ </div>
27
+ <Button size="small" customIcon="iconfont icon-custom-filedown" @click="downErr">下载</Button>
28
+ </div>
29
+ <SimpleViewGrid
30
+ ref="griderr"
31
+ :config="gridErrConfig"
32
+ :dictData="dictData"
33
+ />
34
+ </Card>
35
+ </Col>
36
+ <Col span='8'>
37
+ <p style="margin-bottom:10px;">
38
+ <span class="efuture-title-verticalline"/> <span style="font-size: 14px;font-weight:bold">导入文件</span>
39
+ </p>
40
+ <div class="demo-spin-col-bill">
41
+ <RadioGroup v-if="showType" v-model="type" style="margin-bottom:24px">
42
+ <Radio v-for="(item,index) in myConfig.typeData" :key="index" :label="item.code">
43
+ <span>{{item.name}}</span>
44
+ </Radio>
45
+ </RadioGroup>
46
+ <div :style="divStyle">
47
+ <Row type="flex" justify="center" >
48
+ <Col style="margin-top:30px;margin-bottom:10px">
49
+ <Icon custom="iconfont icon-custom-excel" size="60" />
50
+ </Col>
51
+ </Row>
52
+ <Row type="flex" justify="center">
53
+ <Col>
54
+ <Input v-model="name" style="width:150px;" :border="false" placeholder="(支持xls、xlsx格式)" clearable disabled/>
55
+ </Col>
56
+ </Row>
57
+ <Row type="flex" justify="center" :gutter="10">
58
+ <Col>
59
+ <Upload ref="upload"
60
+ :before-upload="handleUpload"
61
+ accept=".xlsx,.xls"
62
+ :format="myConfig.fileType"
63
+ :on-format-error="handleFormatError"
64
+ :on-success="handleSuccess"
65
+ :show-upload-list="false"
66
+ :action="url">
67
+ <Button style="width:150px;">选择文件</Button>
68
+ </Upload>
69
+ </Col>
70
+ </Row>
71
+ </div>
72
+ <Spin v-show="loading" fix>
73
+ <Icon type="ios-loading" size="18" class="demo-spin-icon-load"></Icon>
74
+ <div>导入中</div>
75
+ </Spin>
76
+ </div>
77
+ </Col>
78
+ </Row>
79
+ </Modal>
80
+ </template>
81
+ <template v-if="modeltype === 'down'">
82
+ <Modal v-model="showUpload" title="选择模版" @on-ok="downTemplate" class-name="vertical-center-modal—bill">
83
+ <RadioGroup v-model="type">
84
+ <Radio v-for="(item,index) in myConfig.typeData" :key="index" :label="item.code">
85
+ <span>{{item.name}}</span>
86
+ </Radio>
87
+ </RadioGroup>
88
+ </Modal>
89
+ </template>
90
+ <template v-if="modeltype === 'export'">
91
+ <Modal v-model="showUpload" title="导出" :width="modelWidth" class-name="vertical-center-modal—bill" :footer-hide="true">
92
+ <Row type="flex" justify="start" align="middle" :gutter="0" style="margin-bottom:20px">
93
+ <Col span="3">
94
+ <Button @click="doAsyncExport">生成导出任务</Button>
95
+ </Col>
96
+ <Col v-if="checkExport" span="21">
97
+ <p v-if="checkExportFailFlag" style="border:1px solid #F3B352;background-color:#FFF7EB;padding-left:30px;padding-right:30px"> <Icon custom="iconfont icon-custom-daishenpi" size="20" color="#F3B352"/> <span style="margin-left: 12px;font-size:18px;color:#F3B352;font-weight:bold">已存在生成中的导出任务,请稍后生成导出任务</span> </p>
98
+ <p v-if="checkExportSuccessFlag" style="border:1px solid #739943;background-color:#FBFFF6;padding-left:30px;padding-right:30px"> <Icon custom="iconfont icon-custom-wancheng" size="20" color="#739943"/> <span style="margin-left: 12px;font-size:18px;color:#739943;font-weight:bold">导出任务已生成,请稍后在任务列表下载文件</span> </p>
99
+ </Col>
100
+ </Row>
101
+ <div style="margin-bottom:10px;display: flex;justify-content: space-between;">
102
+ <div>
103
+ <span class="efuture-title-verticalline"/> <span style="font-size: 14px;font-weight:bold" v-text="exportGridConfig.gridtitle" />
104
+ </div>
105
+ <Button size="small" customIcon="iconfont icon-custom-anniu-shuaxin" @click="Refurbish">刷新</Button>
106
+ </div>
107
+ <SimpleViewGrid
108
+ ref="grid"
109
+ :config="exportGridConfig"
110
+ :dictData="dictData"
111
+ />
112
+ </Modal>
113
+ </template>
114
+ </div>
115
+ </template>
116
+ <script>
117
+ import { resolveComponent } from 'vue';
118
+ export default {
119
+ name:'mbillasyncimport',
120
+ data () {
121
+ return {
122
+ myConfig:{
123
+ typeData:[],
124
+ fileType:['xlsx','xls'],
125
+ setImportUrl:null,
126
+ resources:'',
127
+ },
128
+ initConfig:{
129
+ typeData:[],
130
+ fileType:['xlsx','xls'],
131
+ setImportUrl:null,
132
+ resources:'',
133
+ },
134
+ gridConfig:{
135
+ gridtitle:'任务文件',
136
+ showPage:false,
137
+ dynamicHeight:false,
138
+ height:250,
139
+ items:[{
140
+ label:'日期',
141
+ name:'taskdate',
142
+ type:'DateBox',
143
+ vtype:'datetime',
144
+ width:150
145
+ }, {
146
+ label:'状态',
147
+ name:'taskstatus',
148
+ type:'ComboBox',
149
+ codeWithName:false,
150
+ data:[{ code : 'N', name : '进行中'},{ code : 'F', name : '导入失败'}, { code : 'Y', name : '已生成'} ,{ code : 'E', name : '部分导入成功'}],
151
+ width:100,
152
+ },{
153
+ label:'文件名称',
154
+ name:'filename',
155
+ type:'TextBox'
156
+ },{
157
+ label:'操作',
158
+ key:'action',
159
+ align: 'center',
160
+ render: this.actionRender,
161
+ width:200
162
+ }]
163
+ },
164
+ gridErrConfig:{
165
+ gridtitle:'任务文件',
166
+ showPage:false,
167
+ dynamicHeight:false,
168
+ height:250,
169
+ items:[{
170
+ label:'错误信息',
171
+ name:'errmsg',
172
+ type:'TextBox'
173
+ }]
174
+ },
175
+ exportGridConfig:{
176
+ gridtitle:'任务日志',
177
+ showPage:false,
178
+ dynamicHeight:false,
179
+ height:250,
180
+ items:[{
181
+ label:'日期',
182
+ name:'taskdate',
183
+ type:'DateBox',
184
+ vtype:'datetime',
185
+ width:150
186
+ }, {
187
+ label:'状态',
188
+ name:'taskstatus',
189
+ type:'ComboBox',
190
+ codeWithName:false,
191
+ data:[{ code : 'N', name : '进行中'},{ code : 'F', name : '导入失败'}, { code : 'Y', name : '已完成'} ,{ code : 'C', name : '已取消'},],
192
+ width:100,
193
+ },{
194
+ label:'文件名称',
195
+ name:'filename',
196
+ type:'TextBox'
197
+ },{
198
+ label:'操作',
199
+ key:'action',
200
+ align: 'center',
201
+ render: this.actionRender,
202
+ width:250
203
+ }]
204
+ },
205
+ file: null,
206
+ name:'',
207
+ type:'',
208
+ showType:false,
209
+ showUpload:false,
210
+ modeltype:'upload',
211
+ param:{},
212
+ curlUrl:'',
213
+ loading:false,
214
+ checkExport:false,
215
+ isExport:false,
216
+ downMethod:'exportTemplate',
217
+ importMethod:'asyncImport',
218
+ billkey:'',
219
+ rowBtnData:[
220
+ {
221
+ icon:'custom-filedown',
222
+ name:'downFile',
223
+ text:'下载'
224
+ },
225
+ {
226
+ icon:'custom-filedel',
227
+ name:'delTask',
228
+ text:'删除'
229
+ },
230
+ {
231
+ icon:'custom-filerecall',
232
+ name:'cancelTask',
233
+ text:'取消'
234
+ }
235
+ ],
236
+ checkExportFailFlag: false,
237
+ checkExportSuccessFlag:true,
238
+ actionGrid:null,
239
+ modulecode:''
240
+ };
241
+ },
242
+ props:{
243
+ config: {
244
+ type:Object,
245
+ default () {
246
+ return {};
247
+ }
248
+ },
249
+ } ,
250
+ computed:{
251
+ filename(){
252
+ if (this.name) {
253
+ return this.name;
254
+ } else {
255
+ return '(支持xls、xlsx格式)';
256
+ }
257
+ },
258
+ modelWidth() {
259
+ return this.clientWidth * 0.8;
260
+ },
261
+ clientWidth () {
262
+ return this.$Store.state.app.clientWidth;
263
+ },
264
+ clientHeight () {
265
+ return this.$Store.state.app.clientHeight;
266
+ },
267
+ divStyle() {
268
+ let height = 560;
269
+ let style = 'border:1px solid #DCDFE6;'
270
+ style = style + 'height:' + height + 'px;'
271
+ return style;
272
+ },
273
+ url() {
274
+ let url = this.curlUrl;
275
+ let para = this.$Method.copy(this.param);
276
+ if (this.showType) {
277
+ if (this.myConfig.typeData.length > 0) {
278
+ if (this.type) {
279
+ para.billmoduleid = para.billmoduleid+'_' + this.type;
280
+ }
281
+ }
282
+ }
283
+ return url+'&param=' +encodeURI(JSON.stringify(para));
284
+ }
285
+ },
286
+ methods: {
287
+ init () {
288
+ this.myConfig = Object.assign({},this.initConfig, this.config);
289
+ if (this.myConfig.typeData && this.myConfig.typeData.length > 0) {
290
+ this.showType = true;
291
+ this.type = this.myConfig.typeData[0].code;
292
+ }
293
+ if (this.myConfig.importMethod) {
294
+ this.importMethod = this.myConfig.importMethod;
295
+ }
296
+ if (this.myConfig.downMethod) {
297
+ this.downMethod = this.myConfig.downMethod;
298
+ }
299
+ if (!this.myConfig.downfile) {
300
+ this.myConfig.downfile = this.OmdUrl.downfile;
301
+ }
302
+ },
303
+ setModeltype(value) {
304
+ this.modeltype = value;
305
+ },
306
+ initData(billkey,modulecode,grid) {
307
+ let para = {};
308
+ if (billkey) {
309
+ para.billkey = billkey;
310
+ para.tasktype = '1';
311
+ this.billkey = billkey;
312
+ this.setImpExportData(para);
313
+ } else {
314
+ this.billkey = '';
315
+ para.modulecode = modulecode;
316
+ para.tasktype = '2';
317
+ this.actionGrid = grid;
318
+ this.modulecode = modulecode;
319
+ this.setImpExportData(para);
320
+ }
321
+ },
322
+ clearData() {
323
+ this.$refs.grid.clearData();
324
+ this.$refs.griderr.clearData();
325
+ },
326
+ setImpExportData (para) {
327
+ let self = this;
328
+ self.$refs.grid.clearData();
329
+ self.synchroPost(this.myConfig.resources, 'importexportservice.search', para, function (data) {
330
+ if (data.impexporthead) {
331
+ self.$refs.grid.setData(data.impexporthead);
332
+ }
333
+ });
334
+ },
335
+ setImpErrData(taskid) {
336
+ let self = this;
337
+ let para = {};
338
+ para.taskid = taskid;
339
+ self.$refs.griderr.setData([])
340
+ self.synchroPost(this.myConfig.resources, 'importexportservice.searchImportErr', para, function (data) {
341
+ if (data.imperrmsgdetail) {
342
+ self.$refs.griderr.setData(data.imperrmsgdetail);
343
+ }
344
+ });
345
+ },
346
+ setShowUpload(flag) {
347
+ if (flag) {
348
+ this.init();
349
+ }
350
+ this.showUpload = flag;
351
+ },
352
+ setResources(url) {
353
+ this.myConfig.resources = url;
354
+ },
355
+ setUrl(url,method,param) {
356
+ if (url) {
357
+ url = url.replace('rest', this.importMethod);
358
+ }
359
+ let self = this;
360
+ this.curlUrl = this.getResturl(url,method,{},self);
361
+ if (this.myConfig.setImportUrl) {
362
+ this.curlUrl = this.myConfig.setImportUrl(this.curlUrl,'import');
363
+ }
364
+ Object.assign(this.param, param);
365
+
366
+ if (this.myConfig.typeData.length > 1) {
367
+ if (!this.type) {
368
+ this.type = this.myConfig.typeData[0].code;
369
+ }
370
+ }
371
+ },
372
+ setDownUrl(url,param) {
373
+ if (url) {
374
+ url = url.replace('rest', this.downMethod);
375
+ }
376
+ let self = this;
377
+ this.curlUrl = this.getResturl(url,null,{},self);
378
+ if (this.myConfig.typeData.length > 1) {
379
+ this.param = param;
380
+ this.type = this.myConfig.typeData[0].code;
381
+ this.showUpload = true;
382
+ } else {
383
+ let temp = this.curlUrl +'&param=' +encodeURI(JSON.stringify(param));
384
+ if (this.myConfig.setImportUrl) {
385
+ temp = this.myConfig.setImportUrl(temp,'down');
386
+ }
387
+ window.open(temp,'_self');
388
+ }
389
+ },
390
+ handleUpload (file) {
391
+ if (!this.checkFormat(file)) {
392
+ this.handleFormatError(file);
393
+ this.file = null;
394
+ this.name = '';
395
+ return false;
396
+ } else {
397
+ if (this.checkTask()) {
398
+ this.alert('存在进行中的导入任务,请稍后导入数据');
399
+ this.file = null;
400
+ this.name = '';
401
+ return false;
402
+ } else {
403
+ this.file = file;
404
+ this.name = file.name;
405
+ this.isExport = true;
406
+ this.upload();
407
+ }
408
+ }
409
+ return false;
410
+ },
411
+ checkFormat(file) {
412
+ const _file_format = file.name.split('.').pop().toLocaleLowerCase();
413
+ const checked = this.myConfig.fileType.some(item => item.toLocaleLowerCase() === _file_format);
414
+ return checked;
415
+ },
416
+ checkTask() {
417
+ let self = this;
418
+ let para = {};
419
+ if (this.modeltype === 'upload') {
420
+ para.tasktype = '1';
421
+ para.billkey = this.billkey;
422
+ } else {
423
+ para.tasktype = '2';
424
+ para.modulecode = this.modulecode;
425
+ }
426
+ let flag = false;
427
+ self.synchroPost(this.myConfig.resources, 'importexportservice.checkTask', para, function (data) {
428
+ if (data.flag === '-1') {
429
+ flag = true;
430
+ }
431
+ });
432
+ return flag;
433
+ },
434
+ upload () {
435
+ if (!this.name) {
436
+ this.file = null;
437
+ }
438
+ if (this.file !== null) {
439
+ this.loading = true;
440
+ this.$refs.upload.post(this.file);
441
+ }
442
+ },
443
+
444
+ handleFormatError (file) {
445
+ let type = this.myConfig.fileType.join(',');
446
+ this.alert('文件[' + file.name + ']的格式不正确,请上传格式为(' + type + ')的文件');
447
+ },
448
+ handleSuccess(res) {
449
+ let self = this;
450
+ setTimeout(() => {
451
+ self.file = null;
452
+ self.name = '';
453
+ self.Refurbish();
454
+ if (self.myConfig.importSuccess) {
455
+ self.myConfig.importSuccess(res);
456
+ }
457
+ self.loading = false;
458
+ }, 2000)
459
+
460
+ },
461
+ downTemplate() {
462
+ if (this.type) {
463
+ let param = this.$Method.copy(this.param);
464
+ if (param.billmoduleid) {
465
+ param.billmoduleid = param.billmoduleid + '_' + this.type;
466
+ let temp = this.url +'&param=' +encodeURI(JSON.stringify(param));
467
+ window.open(temp,'_self');
468
+ this.showUpload = false;
469
+ }
470
+ }
471
+ },
472
+ actionRender (h, params) {
473
+ let btnConfig = {};
474
+ btnConfig.showNum = 4;
475
+ btnConfig.fontStyle = '';
476
+ btnConfig.items = [];
477
+ if (params.row.filekey) {
478
+ let del = this.$Method.copy(this.rowBtnData[0]);
479
+ btnConfig.items.push(del);
480
+ }
481
+ if (this.modeltype === 'export') {
482
+ if (params.row.taskstatus === 'N') {
483
+ btnConfig.items.push(this.$Method.copy(this.rowBtnData[2]));
484
+ }
485
+ }
486
+ btnConfig.items.push(this.$Method.copy(this.rowBtnData[1]));
487
+ return h('div', [
488
+ h(resolveComponent('RowBtnToolbar'), {
489
+ config:btnConfig,
490
+ onDoAction:(val) => {
491
+ if (val.name === 'delTask') {
492
+ this.delTask(params);
493
+ }
494
+ if (val.name === 'downFile') {
495
+ this.downFile(params);
496
+ }
497
+ if (val.name === 'cancelTask') {
498
+ this.cancelTask(params);
499
+ }
500
+ this.checkExport = false;
501
+ this.checkExportFailFlag = false;
502
+ this.checkExportSuccessFlag = false;
503
+ }
504
+ })
505
+ ]);
506
+ },
507
+ delTask(params) {
508
+ this.$refs.grid.delRow(params.index);
509
+ let self = this;
510
+ let para = {};
511
+ para.taskid= params.row.taskid;
512
+ self.asyncPost(this.myConfig.resources, 'importexportservice.taskDel', para, function (data) {
513
+ if (data.flag === '1') {
514
+ }
515
+ });
516
+ },
517
+ cancelTask(params) {
518
+ let self = this;
519
+ let para = {};
520
+ para.taskid= params.row.taskid;
521
+ self.asyncPost(this.myConfig.resources, 'importexportservice.taskCancel', para, function (data) {
522
+ if (data.flag === '1') {
523
+ self.$refs.grid.updataRow(params.index,{taskstatus:'C'});
524
+ }
525
+ });
526
+ },
527
+ gridClick(e) {
528
+ this.setImpErrData(e.taskid);
529
+ },
530
+ downErr() {
531
+ let data = this.$refs.griderr.getData();
532
+ if (data.length === 0) {
533
+ this.alert('没有错误信息可下载');
534
+ return;
535
+ } else {
536
+ this.$Method.exportExcel(this.gridErrConfig.items, this.$refs.griderr.getData(),null,'错误信息');
537
+ }
538
+
539
+ },
540
+ Refurbish() {
541
+ let para = {};
542
+ if (this.modeltype === 'upload') {
543
+ para.tasktype = '1';
544
+ para.billkey = this.billkey;
545
+ this.$refs.griderr.clearData();
546
+ this.setImpExportData(para);
547
+ } else {
548
+ para.tasktype = '2';
549
+ para.modulecode = this.modulecode;
550
+ this.setImpExportData(para);
551
+ }
552
+
553
+ },
554
+ downFile(params) {
555
+ if (!params.row.filekey) {
556
+ return;
557
+ }
558
+ let downUrl = this.myConfig.downfile + params.row.filekey + "&ent_id=" + this.getEnt_id() + "&token=" + this.getToken();
559
+ window.open(downUrl);
560
+ },
561
+ doAsyncExport() {
562
+ this.checkExport = false;
563
+ this.checkExportFailFlag = false;
564
+ this.checkExportSuccessFlag = false;
565
+ this.$nextTick(() => {
566
+ if (this.checkTask()){
567
+ this.checkExportFailFlag = true;
568
+ this.checkExport = true;
569
+ } else {
570
+ this.actionGrid.export(true,this.exportFinish)
571
+ }
572
+ });
573
+
574
+ },
575
+ exportFinish() {
576
+ this.checkExportSuccessFlag = true;
577
+ this.checkExport = true;
578
+ this.Refurbish();
579
+ },
580
+ visibleChange(value) {
581
+ if (this.modeltype === 'upload'){
582
+ if (this.isExport) {
583
+ if (this.$parent.asyncImportClose) {
584
+ this.$parent.asyncImportClose(value);
585
+ }
586
+ }
587
+
588
+ }
589
+ }
590
+ }
591
+ };
592
+ </script>
593
+ <style lang="less" scoped>
594
+ .ivu-modal-wrap.vertical-center-modal—bill .ivu-modal-header{
595
+ border-radius:10px;
596
+ }
597
+ .ivu-modal-wrap.vertical-center-modal—bill .ivu-modal-body{
598
+ padding-top: 8px;
599
+ padding-right: 28px;
600
+ padding-bottom: 32px;
601
+ padding-left: 28px;
602
+ }
603
+ .demo-spin-icon-load{
604
+ animation: ani-demo-spin 1s linear infinite;
605
+ }
606
+ @keyframes ani-demo-spin {
607
+ from { transform: rotate(0deg);}
608
+ 50% { transform: rotate(180deg);}
609
+ to { transform: rotate(360deg);}
610
+ }
611
+ .demo-spin-col-bill{
612
+ position: relative;
613
+ }
614
+ </style>