ocpview-plus 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (195) hide show
  1. package/LICENSE +0 -0
  2. package/README.md +0 -0
  3. package/dist/efviewplus.min.esm.js +99954 -0
  4. package/dist/efviewplus.min.js +142 -0
  5. package/dist/locale/lang.js +1 -0
  6. package/dist/locale/zh-CN.js +1 -0
  7. package/dist/locale/zh-TW.js +1 -0
  8. package/dist/locale/zh-UG.js +1 -0
  9. package/dist/style.css +9 -0
  10. package/dist/styles/efviewplus.css +1 -0
  11. package/package.json +144 -0
  12. package/src/components/base/controlbase.vue +191 -0
  13. package/src/components/base/controlbox.vue +102 -0
  14. package/src/components/base/index.js +3 -0
  15. package/src/components/base/load.js +20 -0
  16. package/src/components/base/probase.js +220 -0
  17. package/src/components/base/size.js +78 -0
  18. package/src/components/billbox/billbox.vue +68 -0
  19. package/src/components/billbox/index.js +2 -0
  20. package/src/components/cascaderbox/cascaderbox.vue +184 -0
  21. package/src/components/cascaderbox/index.js +2 -0
  22. package/src/components/checkbox/checkbox.vue +76 -0
  23. package/src/components/checkbox/checkgroupbox.vue +104 -0
  24. package/src/components/checkbox/index.js +3 -0
  25. package/src/components/colorbox/colorbox.vue +44 -0
  26. package/src/components/colorbox/index.js +2 -0
  27. package/src/components/combobox/combobox.vue +220 -0
  28. package/src/components/combobox/index.js +2 -0
  29. package/src/components/conditionbox/conditionbase.vue +195 -0
  30. package/src/components/conditionbox/conditionbox.vue +63 -0
  31. package/src/components/conditionbox/conditionfilterbox.vue +477 -0
  32. package/src/components/conditionbox/conditionselectorbox.vue +237 -0
  33. package/src/components/conditionbox/index.js +5 -0
  34. package/src/components/conditionbox/queryconditionbox.vue +26 -0
  35. package/src/components/conditionbox/queryconditionboxbase.vue +124 -0
  36. package/src/components/conditionbox/searchconditionbox.vue +114 -0
  37. package/src/components/conditionbox/searchgrid.vue +391 -0
  38. package/src/components/datebox/datebox.vue +129 -0
  39. package/src/components/datebox/daterangebox.vue +155 -0
  40. package/src/components/datebox/index.js +3 -0
  41. package/src/components/form/baseform.vue +677 -0
  42. package/src/components/form/detailsbox.vue +487 -0
  43. package/src/components/form/formbox.vue +29 -0
  44. package/src/components/form/formcardbox.vue +268 -0
  45. package/src/components/form/formcardgroupbox.vue +252 -0
  46. package/src/components/form/formcompro.js +19 -0
  47. package/src/components/form/formdetail.vue +129 -0
  48. package/src/components/form/formdetailtwo.vue +302 -0
  49. package/src/components/form/index.js +8 -0
  50. package/src/components/form/toolanchor.js +46 -0
  51. package/src/components/form/workform.vue +168 -0
  52. package/src/components/grid/basegrid.vue +1061 -0
  53. package/src/components/grid/editgrid.vue +51 -0
  54. package/src/components/grid/editgridbase.vue +947 -0
  55. package/src/components/grid/editgridcard.vue +193 -0
  56. package/src/components/grid/expandrow.vue +137 -0
  57. package/src/components/grid/index.js +6 -0
  58. package/src/components/grid/viewgrid.vue +122 -0
  59. package/src/components/grid/viewgridbase.vue +1284 -0
  60. package/src/components/icon/common-icon.vue +53 -0
  61. package/src/components/icon/eicon.vue +29 -0
  62. package/src/components/icon/icons.vue +42 -0
  63. package/src/components/icon/index.js +2 -0
  64. package/src/components/label/index.js +3 -0
  65. package/src/components/label/showtext.vue +95 -0
  66. package/src/components/load/loadcartoon.vue +228 -0
  67. package/src/components/map/index.js +2 -0
  68. package/src/components/map/mapbox.vue +348 -0
  69. package/src/components/masterplate/appendix.vue +586 -0
  70. package/src/components/masterplate/approval.vue +803 -0
  71. package/src/components/masterplate/base.vue +985 -0
  72. package/src/components/masterplate/billasyncimport.vue +614 -0
  73. package/src/components/masterplate/billconditionbox.vue +224 -0
  74. package/src/components/masterplate/billconditionsbox.vue +427 -0
  75. package/src/components/masterplate/billdetailform.vue +990 -0
  76. package/src/components/masterplate/billimport.vue +263 -0
  77. package/src/components/masterplate/billquerygrid.vue +316 -0
  78. package/src/components/masterplate/billsinglegrid.vue +234 -0
  79. package/src/components/masterplate/birtreport.vue +185 -0
  80. package/src/components/masterplate/detailbtntoolbar.vue +311 -0
  81. package/src/components/masterplate/detailsbox.vue +386 -0
  82. package/src/components/masterplate/editgridcard.vue +222 -0
  83. package/src/components/masterplate/editgridcard2.vue +109 -0
  84. package/src/components/masterplate/formcard.vue +106 -0
  85. package/src/components/masterplate/formcardgroupbox.vue +168 -0
  86. package/src/components/masterplate/formdetailtwo.vue +356 -0
  87. package/src/components/masterplate/gridcolset.vue +227 -0
  88. package/src/components/masterplate/index.js +23 -0
  89. package/src/components/masterplate/layouttemplate.vue +33 -0
  90. package/src/components/masterplate/leftlistrightdetails.vue +474 -0
  91. package/src/components/masterplate/leftlistrightlist.vue +465 -0
  92. package/src/components/masterplate/lefttreerightdetails.vue +619 -0
  93. package/src/components/masterplate/levelreport.vue +510 -0
  94. package/src/components/masterplate/listbtntoolbar.vue +257 -0
  95. package/src/components/masterplate/listdetails.vue +769 -0
  96. package/src/components/masterplate/operlog.vue +272 -0
  97. package/src/components/masterplate/options.vue +110 -0
  98. package/src/components/masterplate/page.vue +102 -0
  99. package/src/components/masterplate/promptmessage.vue +74 -0
  100. package/src/components/masterplate/querybar.vue +490 -0
  101. package/src/components/masterplate/report.vue +357 -0
  102. package/src/components/masterplate/rowbtntoolbar.vue +126 -0
  103. package/src/components/masterplate/simpletree.vue +129 -0
  104. package/src/components/masterplate/simpleviewgrid.vue +144 -0
  105. package/src/components/mychart/bar/bar.vue +202 -0
  106. package/src/components/mychart/basechart.vue +190 -0
  107. package/src/components/mychart/complexmychart/barline.vue +154 -0
  108. package/src/components/mychart/gauge/gauge.vue +83 -0
  109. package/src/components/mychart/index.js +9 -0
  110. package/src/components/mychart/line/line.vue +202 -0
  111. package/src/components/mychart/liquidfill/liquidfill.vue +109 -0
  112. package/src/components/mychart/pie/pie.vue +96 -0
  113. package/src/components/mychart/radar/radar.vue +122 -0
  114. package/src/components/mychart/scatter/scatter.vue +76 -0
  115. package/src/components/numberbox/append.js +11 -0
  116. package/src/components/numberbox/index.js +3 -0
  117. package/src/components/numberbox/numberbox.vue +303 -0
  118. package/src/components/numberbox/numberrangebox.vue +423 -0
  119. package/src/components/picturebox/filebox.vue +365 -0
  120. package/src/components/picturebox/index.js +3 -0
  121. package/src/components/picturebox/picturebox.vue +541 -0
  122. package/src/components/picturebox/uploadbox.vue +164 -0
  123. package/src/components/poptagbox/index.js +2 -0
  124. package/src/components/poptagbox/poptagbox.vue +389 -0
  125. package/src/components/poptextbox/index.js +2 -0
  126. package/src/components/poptextbox/poptextbox.vue +601 -0
  127. package/src/components/radiobox/index.js +2 -0
  128. package/src/components/radiobox/radiogroupbox.vue +76 -0
  129. package/src/components/richtextbox/editor.vue +150 -0
  130. package/src/components/richtextbox/index.js +2 -0
  131. package/src/components/richtextbox/richtextbox.vue +448 -0
  132. package/src/components/textbox/index.js +2 -0
  133. package/src/components/textbox/textbox.vue +98 -0
  134. package/src/components/timebox/index.js +2 -0
  135. package/src/components/timebox/timebox.vue +76 -0
  136. package/src/components/toolbar/ebutton.vue +169 -0
  137. package/src/components/toolbar/index.js +3 -0
  138. package/src/components/toolbar/toolbar.vue +446 -0
  139. package/src/components/tree/basetree.vue +725 -0
  140. package/src/components/tree/index.js +3 -0
  141. package/src/components/tree/treedata.vue +51 -0
  142. package/src/components/tree/treedatabase.vue +189 -0
  143. package/src/components/upload/billimport.vue +233 -0
  144. package/src/components/upload/index.js +2 -0
  145. package/src/components/videobox/index.js +2 -0
  146. package/src/components/videobox/uploadbox.vue +148 -0
  147. package/src/components/videobox/videobox.vue +503 -0
  148. package/src/components/wrichtextbox/editor.vue +219 -0
  149. package/src/components/wrichtextbox/index.js +2 -0
  150. package/src/components/wrichtextbox/wrichtextbox.vue +63 -0
  151. package/src/index.js +215 -0
  152. package/src/locale/format.js +51 -0
  153. package/src/locale/index.js +63 -0
  154. package/src/locale/lang/zh-CN.js +123 -0
  155. package/src/locale/lang/zh-TW.js +114 -0
  156. package/src/locale/lang/zh-UG.js +115 -0
  157. package/src/locale/lang.js +15 -0
  158. package/src/method/case/case.js +1180 -0
  159. package/src/method/config/queryconfig.js +24 -0
  160. package/src/method/const/const.js +815 -0
  161. package/src/method/index.js +8 -0
  162. package/src/static/excel/exportexcel.js +627 -0
  163. package/src/static/iview/coustom.js +463 -0
  164. package/src/store/index.js +19 -0
  165. package/src/store/modules/app.js +53 -0
  166. package/src/styles/README.md +3 -0
  167. package/src/styles/common.less +75 -0
  168. package/src/styles/components/anchor.less +74 -0
  169. package/src/styles/components/approval.less +136 -0
  170. package/src/styles/components/button.less +208 -0
  171. package/src/styles/components/card.less +51 -0
  172. package/src/styles/components/content.less +38 -0
  173. package/src/styles/components/font.less +314 -0
  174. package/src/styles/components/form.less +72 -0
  175. package/src/styles/components/iconfont/fonts/iconfont.less +1376 -0
  176. package/src/styles/components/iconfont/fonts/iconfont.svg +699 -0
  177. package/src/styles/components/iconfont/fonts/iconfont.ttf +0 -0
  178. package/src/styles/components/iconfont/fonts/iconfont.woff +0 -0
  179. package/src/styles/components/iconfont/fonts/iconfont.woff2 +0 -0
  180. package/src/styles/components/index.less +16 -0
  181. package/src/styles/components/input.less +290 -0
  182. package/src/styles/components/modal.less +203 -0
  183. package/src/styles/components/page.less +340 -0
  184. package/src/styles/components/select.less +361 -0
  185. package/src/styles/components/steps.less +367 -0
  186. package/src/styles/components/table.less +544 -0
  187. package/src/styles/components/tabs.less +249 -0
  188. package/src/styles/components/upload.less +83 -0
  189. package/src/styles/custom.less +67 -0
  190. package/src/styles/index.less +6 -0
  191. package/src/styles/pack.less +6 -0
  192. package/src/utils/EfuMessenger.js +155 -0
  193. package/src/utils/assist.js +353 -0
  194. package/src/utils/index.js +1 -0
  195. package/src/utils/random_str.js +10 -0
@@ -0,0 +1,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 : '已生成'}],
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>