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,581 +1,581 @@
1
- <template>
2
- <div :style="'background:#fff;overflow: hidden;height:' + clientHeight +'px'">
3
- <div ref="head">
4
- <Card :padding="0" style="padding-top:14px;padding-left:16px;padding-right:16px;border-radius:0px;"
5
- :bordered="false" dis-hover>
6
- <ListBtnToolbar ref="menutoolbar" :config="menuToolbar" :moduleMethod="moduleMethod"
7
- @doAction="doAction"/>
8
- <Divider style="margin-top:16px;margin-bottom:0px;"/>
9
- </Card>
10
- </div>
11
- <div class="efuture-demo-split" :style="'height:' + clientHeight2 +'px'">
12
- <Split v-model="myConfig.splitNum">
13
- <template #left>
14
- <div class="efuture-demo-split-pane" style="padding:14px 16px;">
15
- <Card :padding="0" :bordered="false" dis-hover>
16
- <p style="margin-bottom:10px;">
17
- <span class="efuture-title-verticalline"/> <span
18
- style="font-size: 14px;font-weight:bold" v-text="myConfig.gridtitle"/>
19
- </p>
20
- <div ref="para">
21
- <Input :placeholder="searchPlaceholder" v-model="searchValue" search
22
- style="width: 98%;margin-top:10xp;margin-bottom:10px" @on-search="search"
23
- @on-enter="search"/>
24
- </div>
25
- <SimpleViewGrid
26
- ref="grid"
27
- :config="myConfig.gridConfig"
28
- :dictData="dictData"
29
- @rowclick="gridClick"
30
- />
31
- </Card>
32
- </div>
33
- </template>
34
- <template #right>
35
- <div class="efuture-demo-split-pane" style="padding:14px 0px;">
36
- <Card :padding="0" :bordered="false" dis-hover>
37
- <BillDetailForm ref="form" :config="myConfig.detailConfig" :dictData="dictData"/>
38
- </Card>
39
- </div>
40
- </template>
41
- </Split>
42
- </div>
43
- <Modal title="操作日志" v-model="showBilloperlog" :width="logcurrentWidth" :footer-hide="true">
44
- <BillOperLog ref="billoperlog" :config="billOperLogConfig"/>
45
- </Modal>
46
- </div>
47
- </template>
48
-
49
- <script>
50
- import ListBtnToolbar from './listbtntoolbar.vue';
51
- import BillDetailForm from '@/components/masterplate/billdetailform.vue';
52
- import elementResizeDetectorMaker from 'element-resize-detector';
53
- import BillOperLog from './operlog.vue';
54
-
55
- export default {
56
- name: 'mleftlistrightdetails',
57
- components: {BillOperLog, ListBtnToolbar, BillDetailForm},
58
- data() {
59
- return {
60
- myConfig: {
61
- billKey: 'ph_key',
62
- gridtitle: '列表',
63
- splitNum: 0.33,
64
- resources: '',
65
- className: '',
66
- gridConfig: {},
67
- formConfig: {},
68
- adjustHeight: 160,
69
- quickQueryConfig: {}
70
- },
71
- searchPlaceholder: '请输入',
72
- menuToolbar: {
73
- enablePermissions: true
74
- },
75
- ph_key: '',
76
- searchValue: '',
77
- headHeight: 63,
78
- showBilloperlog:false,
79
- billOperLogConfig:{
80
- showOperLog:false,
81
- operLogKey:'billno'
82
- },
83
- logName:[],
84
- logData:null,
85
- };
86
- },
87
- props: {
88
- config: {
89
- type: Object,
90
- default: null
91
- },
92
- dictData: {
93
- type: Object,
94
- default: null
95
- },
96
- moduleMethod: {
97
- type: Array,
98
- default: () => {
99
- return [];
100
- }
101
- }
102
- },
103
- computed: {
104
- clientHeight() {
105
- return this.$Store.state.app.clientHeight;
106
- },
107
- clientHeight2() {
108
- return this.$Store.state.app.clientHeight - this.headHeight;
109
- },
110
- logcurrentWidth () {
111
- return this.$Store.state.app.clientWidth * 0.8;
112
- },
113
- },
114
- created() {
115
- this.myConfig = Object.assign({}, this.myConfig, this.config);
116
- this.myConfig.gridConfig.onSelectionChange = this.gridOnSelectionChange;
117
- this.myConfig.gridConfig.overrideData = this.gridOverrideData;
118
- this.myConfig.gridConfig.resources = this.myConfig.resources;
119
- this.myConfig.gridConfig.method = this.myConfig.classPrefix + '.search';
120
- this.myConfig.gridConfig.response = this.myConfig.response;
121
- this.myConfig.gridConfig.height = 1;
122
- this.myConfig.gridConfig.adjustHeight = 0;
123
- this.myConfig.gridConfig.pageShowElevator = false;
124
- this.myConfig.gridConfig.pageSize = "small";
125
- this.myConfig.gridConfig.showBorder = true;
126
- this.myConfig.gridConfig.showStripe = true;
127
- this.myConfig.gridConfig.generalOrientation = true;
128
- if (this.myConfig.gridConfig.title !== undefined) {
129
- this.myConfig.gridtitle = this.myConfig.gridConfig.title;
130
- }
131
-
132
- if (this.myConfig.gridConfig.multiSelect === undefined) {
133
- this.myConfig.gridConfig.multiSelect = false;
134
- }
135
- let searchPlaceholder = '';
136
- this.myConfig.gridConfig.items.forEach(el => {
137
- if (el.type !== 'CheckBox') {
138
- if (el.tooltip === undefined) {
139
- el.tooltip = true;
140
- }
141
- }
142
- if (el.condition) {
143
- searchPlaceholder = searchPlaceholder + el.label + '/';
144
- }
145
- });
146
- if (searchPlaceholder) {
147
- searchPlaceholder = searchPlaceholder.substring(0, searchPlaceholder.length - 1);
148
- this.searchPlaceholder = this.searchPlaceholder + searchPlaceholder;
149
- }
150
-
151
- // 处理按钮
152
- if (this.myConfig.menuToolbar && this.myConfig.menuToolbar.items) {
153
- this.menuToolbar = this.$Method.copy(this.myConfig.menuToolbar);
154
- }
155
-
156
- if (this.myConfig.billOperLogConfig) {
157
- this.billOperLogConfig = Object.assign({},this.billOperLogConfig, this.myConfig.billOperLogConfig);
158
- if (this.billOperLogConfig.showOperLog) {
159
- this.menuToolbar.billoperlog = true;
160
- this.setLogName();
161
- }
162
- }
163
-
164
- this.myConfig.detailConfig.modetype = '2';
165
- this.myConfig.detailConfig.billKey = this.myConfig.billKey;
166
- this.myConfig.detailConfig.showAnchorLink = false;
167
- this.myConfig.detailConfig.response = this.myConfig.response;
168
- this.myConfig.detailConfig.adjustHeight = 0;
169
- this.myConfig.detailConfig.resources = this.myConfig.resources;
170
- },
171
- methods: {
172
- setLogName() {
173
- this.logName.push({code:this.myConfig.response,name:'主表'});
174
- this.myConfig.detailConfig.formsConfig.items.forEach(el => {
175
- this.initLogName(el.items,this.myConfig.response,el.title)
176
- });
177
- if (this.myConfig.detailConfig.billDetailConfig !== undefined && this.myConfig.detailConfig.billDetailConfig.items) {
178
- this.myConfig.detailConfig.billDetailConfig.items.forEach(el => {
179
- if (el.type === 'EditGridCard') {
180
- this.logName.push({code:el.name,name:el.title,isdetail:'1'});
181
- this.initLogName(el.items,el.name,el.title,{isdetail:'1'});
182
- } else if (el.type === 'DetailsBox') {
183
- this.logName.push({code:el.name,name:el.title,isdetail:'1'});
184
- this.initLogName(el.formConfig.items,el.name,el.title,{isdetail:'1'});
185
- this.logName.push({code:el.gridName, name:el.gridConfig.title,isdetail:'2',headtitle:el.title,uniqueKeys:el.uniqueKeys});
186
- this.initLogName(el.gridConfig.items,el.gridName,el.gridConfig.title,{headtitle:el.title,uniqueKeys:el.uniqueKeys,isdetail:'2'});
187
- }
188
- });
189
- }
190
- this.billOperLogConfig.logName = this.$Method.copy(this.logName);
191
- },
192
- initLogName(list,headname,headtitle,pro) {
193
- if (!pro) {
194
- pro = {};
195
- }
196
- list.forEach(el => {
197
- if (el.name) {
198
- let obj = {};
199
- obj.title = headtitle;
200
- obj.code = headname+'.' + el.name;
201
- obj.name = el.label;
202
- Object.assign(obj,pro);
203
- this.logName.push(obj);
204
- }
205
- if (el.textName) {
206
- let obj = {};
207
- obj.title = headtitle;
208
- obj.code = headname +'.' + el.textName;
209
- obj.name = el.label;
210
- Object.assign(obj,pro);
211
- this.logName.push(obj);
212
- }
213
- if (el.sname) {
214
- let obj = {};
215
- obj.title = el.headtitle;
216
- obj.code = headname +'.' + el.sname;
217
- obj.name = el.label;
218
- Object.assign(obj,pro);
219
- this.logName.push(obj);
220
- }
221
- if (el.ename) {
222
- let obj = {};
223
- obj.title = el.headtitle;
224
- obj.code = headname + '.' + el.ename;
225
- obj.name = el.label;
226
- Object.assign(obj,pro);
227
- this.logName.push(obj);
228
- }
229
- });
230
- },
231
- openBilloperlog() {
232
- if (this.logData != null) {
233
- this.$refs.billoperlog.setData(this.logData[this.billOperLogConfig.operLogKey],this.logData);
234
- this.showBilloperlog = true;
235
- } else {
236
- this.alert('未产生日志');
237
- }
238
- },
239
- search() {
240
- this.$refs.form.clearData();
241
- this.$refs.grid.clearSearchBeforeSearchParam();
242
- this.$refs.grid.setSearchBeforeSearchParam(this.getSearchParam());
243
- this.$refs.grid.refurbish();
244
- },
245
- getSearchParam() {
246
- let para = {};
247
- if (this.searchValue) {
248
- para['$or'] = [];
249
- this.myConfig.gridConfig.items.forEach(el => {
250
- if (el.condition) {
251
- let obj = {};
252
- obj[el.name] = {'LIKE': '%' + this.searchValue + '%'};
253
- para['$or'].push(obj);
254
- }
255
- })
256
- }
257
- return para;
258
- },
259
- refurbish(ph_key) {
260
- if (ph_key) {
261
- this.ph_key = ph_key;
262
- } else {
263
- this.ph_key = '';
264
- }
265
- this.$refs.form.clearData();
266
- this.$refs.grid.refurbish();
267
- },
268
- gridOnSelectionChange(rows) {
269
- let obj = {};
270
- obj.name = 'gridOnSelectionChange';
271
- obj.para = rows;
272
- this.$emit('doAction', obj);
273
- },
274
- gridOverrideData(data) {
275
- if (data && data.length > 0) {
276
- let self = this;
277
- this.$nextTick(() => {
278
- let index = 0;
279
- if (self.ph_key) {
280
- let culIndex = data.findIndex(
281
- el => el[self.myConfig.billKey] === self.ph_key
282
- );
283
- if (culIndex > -1) {
284
- index = culIndex;
285
- }
286
- }
287
- self.$refs.grid.setRowHighlight(index, true);
288
- self.ph_key = data[index][self.billKey];
289
- self.initForm(data[index]);
290
- self.$refs.menutoolbar.setAllReadOnly(false);
291
- self.$refs.menutoolbar.setReadOnly('saveData', true);
292
- });
293
- } else {
294
- this.$refs.form.clearData();
295
- this.$refs.form.setReadOnly(true);
296
- this.$refs.menutoolbar.setAllReadOnly(true);
297
- this.$refs.menutoolbar.setReadOnly('addData', false);
298
- }
299
- return data;
300
- },
301
- gridClick(e) {
302
- let obj = {};
303
- let self = this;
304
- obj.onOk = () => {
305
- self.ph_key = e.ph_key;
306
- self.initForm(e);
307
- self.$refs.menutoolbar.setAllReadOnly(false);
308
- self.$refs.menutoolbar.setReadOnly('saveData', true);
309
- };
310
- obj.onCancel = () => {
311
- let data = self.$refs.form.getData();
312
- if (data.ph_key) {
313
- let data = self.$refs.grid.getData();
314
- let culIndex = data.findIndex(
315
- el => el[self.myConfig.billKey] === self.ph_key
316
- );
317
- if (culIndex > -1) {
318
- self.$refs.grid.clearCurrentRow();
319
- self.$nextTick(() => {
320
- self.$refs.grid.setRowHighlight(culIndex, true);
321
- });
322
- }
323
- } else {
324
- self.$refs.grid.clearCurrentRow();
325
- }
326
- };
327
- this.checkData(obj);
328
- },
329
- getForm() {
330
- return this.$refs.form;
331
- },
332
- getGrid() {
333
- return this.$refs.grid;
334
- },
335
- quickChagne() {
336
- this.ph_key = '';
337
- this.search();
338
- },
339
- getMenuToolbar() {
340
- return this.$refs.menutoolbar;
341
- },
342
- initForm(para) {
343
- this.$refs.form.clearData();
344
- let data = this.getFormData(para);
345
- this.logData = this.$Method.copy(data);
346
- if (this.$parent.setBillData) {
347
- data = this.$parent.setBillData(data);
348
- }
349
- this.$refs.form.setData(data);
350
- this.$nextTick(() => {
351
- this.$refs.form.setReadOnly(true);
352
- });
353
-
354
- if (this.$parent.initFormAfter) {
355
- this.$parent.initFormAfter(data);
356
- }
357
- },
358
- getFormData(para) {
359
- if (this.$parent.getFormData) {
360
- return this.$parent.getFormData(para);
361
- }
362
- let result = {};
363
- let self = this;
364
- if (!para.ph_key) {
365
- para.ph_key = this.ph_key;
366
- }
367
- self.synchroPost(
368
- self.myConfig.resources,
369
- self.myConfig.classPrefix + '.get',
370
- {ph_key: para.ph_key},
371
- function (data) {
372
- result = data[self.config.response];
373
- }
374
- );
375
- return result;
376
- },
377
- doAction(obj) {
378
- const method = obj.name;
379
- const methodBefore = method + 'Before';
380
- const methodAfter = method + 'After';
381
- if (
382
- obj.name === 'addData' ||
383
- obj.name === 'editData' ||
384
- obj.name === 'openBilloperlog' ||
385
- obj.name === 'searchData'
386
- ) {
387
- let flag = true;
388
- if (this.$parent[methodBefore]) {
389
- flag = this.$parent[methodBefore](obj);
390
- }
391
- if (flag) {
392
- if (obj.name === 'addData') {
393
- this.$refs.form.setReadOnly(false);
394
- this.$refs.form.clearData();
395
- this.$refs.menutoolbar.setAllReadOnly(true);
396
- this.$refs.menutoolbar.setReadOnly('saveData', false);
397
- this.$refs.grid.clearCurrentRow();
398
- }
399
- if (obj.name === 'editData') {
400
- this.$refs.form.setReadOnly(false);
401
- this.$refs.menutoolbar.setReadOnly('editData', true);
402
- this.$refs.menutoolbar.setReadOnly('saveData', false);
403
- }
404
- if (obj.name === 'searchData') {
405
- let temp = {};
406
- let self = this;
407
- temp.onOk = () => {
408
- self.$refs.quick.filterSearch();
409
- };
410
- this.checkData(temp);
411
- }
412
-
413
- // '打开日志'
414
- if (obj.name === 'openBilloperlog') {
415
- if (this.$parent.openBilloperlog) {
416
- this.$parent.openBilloperlog();
417
- } else {
418
- this.openBilloperlog();
419
- }
420
- }
421
-
422
- if (this.$parent[methodAfter]) {
423
- this.$parent[methodAfter]();
424
- }
425
- }
426
- } else {
427
- let flag = true;
428
- if (this.$parent[methodBefore]) {
429
- flag = this.$parent[methodBefore](obj);
430
- }
431
- if (!flag) {
432
- return;
433
- }
434
- if (obj.name === 'saveData') {
435
- let flag = this.$refs.form.checkValidate();
436
- if (flag) {
437
- this.alert('必填项不允许为空');
438
- return false;
439
- }
440
- flag = this.$refs.form.isEdit();
441
- if (flag) {
442
- this.alert('存在数据未确认');
443
- return false;
444
- }
445
- let data = this.$refs.form.getChangeData();
446
- if (data.flag === 'U') {
447
- obj.editFlag = true;
448
- }
449
- obj.para = [];
450
- obj.para.push(data);
451
- }
452
- if (obj.name === 'delData') {
453
- let tempData = this.$refs.grid.getSelection();
454
- if (tempData && tempData.length > 0) {
455
- tempData.forEach(el => {
456
- el.flag = 'D';
457
- });
458
- obj.para = tempData;
459
- } else {
460
- this.alert('没有数据可删除,请检查');
461
- return false;
462
- }
463
- }
464
- obj.onOk = this.onOk;
465
- if (obj.name === 'delData') {
466
- let text = '删除';
467
- let self = this;
468
- self.$Modal.confirm({
469
- title: '确认',
470
- content: '是否确认' + text + '数据?',
471
- onOk: () => {
472
- self.$emit('doAction', obj);
473
- }
474
- });
475
- } else {
476
- this.$emit('doAction', obj);
477
- }
478
- }
479
- },
480
- onOk(action, data) {
481
- if (action.name === 'saveData') {
482
- this.ph_key = data[0].ph_key;
483
- if (action.editFlag) {
484
- this.$refs.grid.refurbish({}, true);
485
- } else {
486
- this.$refs.grid.refurbish();
487
- }
488
- this.initForm(data[0]);
489
- this.$refs.menutoolbar.setReadOnly('editData', false);
490
- this.$refs.menutoolbar.setReadOnly('saveData', true);
491
- }
492
- if (action.name === 'delData') {
493
- this.ph_key = '';
494
- this.$refs.form.clearData();
495
- this.$refs.grid.refurbish();
496
- this.$refs.form.setReadOnly(true);
497
- this.$refs.menutoolbar.setAllReadOnly(false);
498
- this.$refs.menutoolbar.setReadOnly('saveData', true);
499
- }
500
- },
501
- checkData(obj) {
502
- let tempflag = false;
503
- tempflag = this.$refs.form.isEdit();
504
- if (tempflag) {
505
- let self = this;
506
- self.$Modal.confirm({
507
- title: '确认',
508
- content: '数据存在数据未确认,是否放弃?',
509
- onOk: () => {
510
- this.checkChangeData(obj);
511
- },
512
- onCancel: () => {
513
- if (obj.onCancel) {
514
- obj.onCancel();
515
- }
516
- }
517
- });
518
- } else {
519
- this.checkChangeData(obj);
520
- }
521
- },
522
- checkChangeData(obj) {
523
- let flag = false;
524
- flag = this.$refs.form.isChange();
525
- if (flag) {
526
- let self = this;
527
- self.$Modal.confirm({
528
- title: '确认',
529
- content: '数据有修改未保存,是否放弃修改?',
530
- onOk: () => {
531
- if (obj.onOk) {
532
- obj.onOk();
533
- }
534
- },
535
- onCancel: () => {
536
- if (obj.onCancel) {
537
- obj.onCancel();
538
- }
539
- }
540
- });
541
- } else {
542
- if (obj.onOk) {
543
- obj.onOk();
544
- }
545
- }
546
- },
547
- setOutsideHeight() {
548
- let height = this.$refs.head.offsetHeight + this.$refs.para.offsetHeight + 80;
549
- this.$refs.grid.setOutsideHeight(height);
550
- let height2 = this.$refs.head.offsetHeight;
551
- this.$refs.form.setOutsideHeight(height2);
552
- },
553
- getChangeData() {
554
- return this.$refs.form.getChangeData();
555
- },
556
- setDetailVisible(name, value) {
557
- this.$refs.form.setVisible(name, value);
558
- }
559
- },
560
- mounted() {
561
- this.observer = elementResizeDetectorMaker();
562
- if (this.$refs.head) {
563
- this.observer.listenTo(this.$refs.head, this.setOutsideHeight);
564
- }
565
- if (this.$refs.para) {
566
- this.observer.listenTo(this.$refs.para, this.setOutsideHeight);
567
- }
568
- this.$refs.grid.refurbish();
569
- this.headHeight = this.$refs.head.offsetHeight;
570
- this.$nextTick(() => {
571
- this.$refs.form.setReadOnly(true);
572
- this.$refs.menutoolbar.setAllReadOnly(false);
573
- this.$refs.menutoolbar.setReadOnly('saveData', true);
574
- });
575
- },
576
- beforeUnmount() {
577
- this.observer.removeListener(this.$refs.head, this.setOutsideHeight);
578
- this.observer.removeListener(this.$refs.para, this.setOutsideHeight);
579
- }
580
- };
581
- </script>
1
+ <template>
2
+ <div :style="'background:#fff;overflow: hidden;height:' + clientHeight +'px'">
3
+ <div ref="head">
4
+ <Card :padding="0" style="padding-top:14px;padding-left:16px;padding-right:16px;border-radius:0px;"
5
+ :bordered="false" dis-hover>
6
+ <ListBtnToolbar ref="menutoolbar" :config="menuToolbar" :moduleMethod="moduleMethod"
7
+ @doAction="doAction"/>
8
+ <Divider style="margin-top:16px;margin-bottom:0px;"/>
9
+ </Card>
10
+ </div>
11
+ <div class="efuture-demo-split" :style="'height:' + clientHeight2 +'px'">
12
+ <Split v-model="myConfig.splitNum">
13
+ <template #left>
14
+ <div class="efuture-demo-split-pane" style="padding:14px 16px;">
15
+ <Card :padding="0" :bordered="false" dis-hover>
16
+ <p style="margin-bottom:10px;">
17
+ <span class="efuture-title-verticalline"/> <span
18
+ style="font-size: 14px;font-weight:bold" v-text="myConfig.gridtitle"/>
19
+ </p>
20
+ <div ref="para">
21
+ <Input :placeholder="searchPlaceholder" v-model="searchValue" search
22
+ style="width: 98%;margin-top:10xp;margin-bottom:10px" @on-search="search"
23
+ @on-enter="search"/>
24
+ </div>
25
+ <SimpleViewGrid
26
+ ref="grid"
27
+ :config="myConfig.gridConfig"
28
+ :dictData="dictData"
29
+ @rowclick="gridClick"
30
+ />
31
+ </Card>
32
+ </div>
33
+ </template>
34
+ <template #right>
35
+ <div class="efuture-demo-split-pane" style="padding:14px 0px;">
36
+ <Card :padding="0" :bordered="false" dis-hover>
37
+ <BillDetailForm ref="form" :config="myConfig.detailConfig" :dictData="dictData"/>
38
+ </Card>
39
+ </div>
40
+ </template>
41
+ </Split>
42
+ </div>
43
+ <Modal title="操作日志" v-model="showBilloperlog" :width="logcurrentWidth" :footer-hide="true">
44
+ <BillOperLog ref="billoperlog" :config="billOperLogConfig"/>
45
+ </Modal>
46
+ </div>
47
+ </template>
48
+
49
+ <script>
50
+ import ListBtnToolbar from './listbtntoolbar.vue';
51
+ import BillDetailForm from '@/components/masterplate/billdetailform.vue';
52
+ import elementResizeDetectorMaker from 'element-resize-detector';
53
+ import BillOperLog from './operlog.vue';
54
+
55
+ export default {
56
+ name: 'mleftlistrightdetails',
57
+ components: {BillOperLog, ListBtnToolbar, BillDetailForm},
58
+ data() {
59
+ return {
60
+ myConfig: {
61
+ billKey: 'ph_key',
62
+ gridtitle: '列表',
63
+ splitNum: 0.33,
64
+ resources: '',
65
+ className: '',
66
+ gridConfig: {},
67
+ formConfig: {},
68
+ adjustHeight: 160,
69
+ quickQueryConfig: {}
70
+ },
71
+ searchPlaceholder: '请输入',
72
+ menuToolbar: {
73
+ enablePermissions: true
74
+ },
75
+ ph_key: '',
76
+ searchValue: '',
77
+ headHeight: 63,
78
+ showBilloperlog:false,
79
+ billOperLogConfig:{
80
+ showOperLog:false,
81
+ operLogKey:'billno'
82
+ },
83
+ logName:[],
84
+ logData:null,
85
+ };
86
+ },
87
+ props: {
88
+ config: {
89
+ type: Object,
90
+ default: null
91
+ },
92
+ dictData: {
93
+ type: Object,
94
+ default: null
95
+ },
96
+ moduleMethod: {
97
+ type: Array,
98
+ default: () => {
99
+ return [];
100
+ }
101
+ }
102
+ },
103
+ computed: {
104
+ clientHeight() {
105
+ return this.$Store.state.app.clientHeight;
106
+ },
107
+ clientHeight2() {
108
+ return this.$Store.state.app.clientHeight - this.headHeight;
109
+ },
110
+ logcurrentWidth () {
111
+ return this.$Store.state.app.clientWidth * 0.8;
112
+ },
113
+ },
114
+ created() {
115
+ this.myConfig = Object.assign({}, this.myConfig, this.config);
116
+ this.myConfig.gridConfig.onSelectionChange = this.gridOnSelectionChange;
117
+ this.myConfig.gridConfig.overrideData = this.gridOverrideData;
118
+ this.myConfig.gridConfig.resources = this.myConfig.resources;
119
+ this.myConfig.gridConfig.method = this.myConfig.classPrefix + '.search';
120
+ this.myConfig.gridConfig.response = this.myConfig.response;
121
+ this.myConfig.gridConfig.height = 1;
122
+ this.myConfig.gridConfig.adjustHeight = 0;
123
+ this.myConfig.gridConfig.pageShowElevator = false;
124
+ this.myConfig.gridConfig.pageSize = "small";
125
+ this.myConfig.gridConfig.showBorder = true;
126
+ this.myConfig.gridConfig.showStripe = true;
127
+ this.myConfig.gridConfig.generalOrientation = true;
128
+ if (this.myConfig.gridConfig.title !== undefined) {
129
+ this.myConfig.gridtitle = this.myConfig.gridConfig.title;
130
+ }
131
+
132
+ if (this.myConfig.gridConfig.multiSelect === undefined) {
133
+ this.myConfig.gridConfig.multiSelect = false;
134
+ }
135
+ let searchPlaceholder = '';
136
+ this.myConfig.gridConfig.items.forEach(el => {
137
+ if (el.type !== 'CheckBox') {
138
+ if (el.tooltip === undefined) {
139
+ el.tooltip = true;
140
+ }
141
+ }
142
+ if (el.condition) {
143
+ searchPlaceholder = searchPlaceholder + el.label + '/';
144
+ }
145
+ });
146
+ if (searchPlaceholder) {
147
+ searchPlaceholder = searchPlaceholder.substring(0, searchPlaceholder.length - 1);
148
+ this.searchPlaceholder = this.searchPlaceholder + searchPlaceholder;
149
+ }
150
+
151
+ // 处理按钮
152
+ if (this.myConfig.menuToolbar && this.myConfig.menuToolbar.items) {
153
+ this.menuToolbar = this.$Method.copy(this.myConfig.menuToolbar);
154
+ }
155
+
156
+ if (this.myConfig.billOperLogConfig) {
157
+ this.billOperLogConfig = Object.assign({},this.billOperLogConfig, this.myConfig.billOperLogConfig);
158
+ if (this.billOperLogConfig.showOperLog) {
159
+ this.menuToolbar.billoperlog = true;
160
+ this.setLogName();
161
+ }
162
+ }
163
+
164
+ this.myConfig.detailConfig.modetype = '2';
165
+ this.myConfig.detailConfig.billKey = this.myConfig.billKey;
166
+ this.myConfig.detailConfig.showAnchorLink = false;
167
+ this.myConfig.detailConfig.response = this.myConfig.response;
168
+ this.myConfig.detailConfig.adjustHeight = 0;
169
+ this.myConfig.detailConfig.resources = this.myConfig.resources;
170
+ },
171
+ methods: {
172
+ setLogName() {
173
+ this.logName.push({code:this.myConfig.response,name:'主表'});
174
+ this.myConfig.detailConfig.formsConfig.items.forEach(el => {
175
+ this.initLogName(el.items,this.myConfig.response,el.title)
176
+ });
177
+ if (this.myConfig.detailConfig.billDetailConfig !== undefined && this.myConfig.detailConfig.billDetailConfig.items) {
178
+ this.myConfig.detailConfig.billDetailConfig.items.forEach(el => {
179
+ if (el.type === 'EditGridCard') {
180
+ this.logName.push({code:el.name,name:el.title,isdetail:'1'});
181
+ this.initLogName(el.items,el.name,el.title,{isdetail:'1'});
182
+ } else if (el.type === 'DetailsBox') {
183
+ this.logName.push({code:el.name,name:el.title,isdetail:'1'});
184
+ this.initLogName(el.formConfig.items,el.name,el.title,{isdetail:'1'});
185
+ this.logName.push({code:el.gridName, name:el.gridConfig.title,isdetail:'2',headtitle:el.title,uniqueKeys:el.uniqueKeys});
186
+ this.initLogName(el.gridConfig.items,el.gridName,el.gridConfig.title,{headtitle:el.title,uniqueKeys:el.uniqueKeys,isdetail:'2'});
187
+ }
188
+ });
189
+ }
190
+ this.billOperLogConfig.logName = this.$Method.copy(this.logName);
191
+ },
192
+ initLogName(list,headname,headtitle,pro) {
193
+ if (!pro) {
194
+ pro = {};
195
+ }
196
+ list.forEach(el => {
197
+ if (el.name) {
198
+ let obj = {};
199
+ obj.title = headtitle;
200
+ obj.code = headname+'.' + el.name;
201
+ obj.name = el.label;
202
+ Object.assign(obj,pro);
203
+ this.logName.push(obj);
204
+ }
205
+ if (el.textName) {
206
+ let obj = {};
207
+ obj.title = headtitle;
208
+ obj.code = headname +'.' + el.textName;
209
+ obj.name = el.label;
210
+ Object.assign(obj,pro);
211
+ this.logName.push(obj);
212
+ }
213
+ if (el.sname) {
214
+ let obj = {};
215
+ obj.title = el.headtitle;
216
+ obj.code = headname +'.' + el.sname;
217
+ obj.name = el.label;
218
+ Object.assign(obj,pro);
219
+ this.logName.push(obj);
220
+ }
221
+ if (el.ename) {
222
+ let obj = {};
223
+ obj.title = el.headtitle;
224
+ obj.code = headname + '.' + el.ename;
225
+ obj.name = el.label;
226
+ Object.assign(obj,pro);
227
+ this.logName.push(obj);
228
+ }
229
+ });
230
+ },
231
+ openBilloperlog() {
232
+ if (this.logData != null) {
233
+ this.$refs.billoperlog.setData(this.logData[this.billOperLogConfig.operLogKey],this.logData);
234
+ this.showBilloperlog = true;
235
+ } else {
236
+ this.alert('未产生日志');
237
+ }
238
+ },
239
+ search() {
240
+ this.$refs.form.clearData();
241
+ this.$refs.grid.clearSearchBeforeSearchParam();
242
+ this.$refs.grid.setSearchBeforeSearchParam(this.getSearchParam());
243
+ this.$refs.grid.refurbish();
244
+ },
245
+ getSearchParam() {
246
+ let para = {};
247
+ if (this.searchValue) {
248
+ para['$or'] = [];
249
+ this.myConfig.gridConfig.items.forEach(el => {
250
+ if (el.condition) {
251
+ let obj = {};
252
+ obj[el.name] = {'LIKE': '%' + this.searchValue + '%'};
253
+ para['$or'].push(obj);
254
+ }
255
+ })
256
+ }
257
+ return para;
258
+ },
259
+ refurbish(ph_key) {
260
+ if (ph_key) {
261
+ this.ph_key = ph_key;
262
+ } else {
263
+ this.ph_key = '';
264
+ }
265
+ this.$refs.form.clearData();
266
+ this.$refs.grid.refurbish();
267
+ },
268
+ gridOnSelectionChange(rows) {
269
+ let obj = {};
270
+ obj.name = 'gridOnSelectionChange';
271
+ obj.para = rows;
272
+ this.$emit('doAction', obj);
273
+ },
274
+ gridOverrideData(data) {
275
+ if (data && data.length > 0) {
276
+ let self = this;
277
+ this.$nextTick(() => {
278
+ let index = 0;
279
+ if (self.ph_key) {
280
+ let culIndex = data.findIndex(
281
+ el => el[self.myConfig.billKey] === self.ph_key
282
+ );
283
+ if (culIndex > -1) {
284
+ index = culIndex;
285
+ }
286
+ }
287
+ self.$refs.grid.setRowHighlight(index, true);
288
+ self.ph_key = data[index][self.billKey];
289
+ self.initForm(data[index]);
290
+ self.$refs.menutoolbar.setAllReadOnly(false);
291
+ self.$refs.menutoolbar.setReadOnly('saveData', true);
292
+ });
293
+ } else {
294
+ this.$refs.form.clearData();
295
+ this.$refs.form.setReadOnly(true);
296
+ this.$refs.menutoolbar.setAllReadOnly(true);
297
+ this.$refs.menutoolbar.setReadOnly('addData', false);
298
+ }
299
+ return data;
300
+ },
301
+ gridClick(e) {
302
+ let obj = {};
303
+ let self = this;
304
+ obj.onOk = () => {
305
+ self.ph_key = e.ph_key;
306
+ self.initForm(e);
307
+ self.$refs.menutoolbar.setAllReadOnly(false);
308
+ self.$refs.menutoolbar.setReadOnly('saveData', true);
309
+ };
310
+ obj.onCancel = () => {
311
+ let data = self.$refs.form.getData();
312
+ if (data.ph_key) {
313
+ let data = self.$refs.grid.getData();
314
+ let culIndex = data.findIndex(
315
+ el => el[self.myConfig.billKey] === self.ph_key
316
+ );
317
+ if (culIndex > -1) {
318
+ self.$refs.grid.clearCurrentRow();
319
+ self.$nextTick(() => {
320
+ self.$refs.grid.setRowHighlight(culIndex, true);
321
+ });
322
+ }
323
+ } else {
324
+ self.$refs.grid.clearCurrentRow();
325
+ }
326
+ };
327
+ this.checkData(obj);
328
+ },
329
+ getForm() {
330
+ return this.$refs.form;
331
+ },
332
+ getGrid() {
333
+ return this.$refs.grid;
334
+ },
335
+ quickChagne() {
336
+ this.ph_key = '';
337
+ this.search();
338
+ },
339
+ getMenuToolbar() {
340
+ return this.$refs.menutoolbar;
341
+ },
342
+ initForm(para) {
343
+ this.$refs.form.clearData();
344
+ let data = this.getFormData(para);
345
+ this.logData = this.$Method.copy(data);
346
+ if (this.$parent.setBillData) {
347
+ data = this.$parent.setBillData(data);
348
+ }
349
+ this.$refs.form.setData(data);
350
+ this.$nextTick(() => {
351
+ this.$refs.form.setReadOnly(true);
352
+ });
353
+
354
+ if (this.$parent.initFormAfter) {
355
+ this.$parent.initFormAfter(data);
356
+ }
357
+ },
358
+ getFormData(para) {
359
+ if (this.$parent.getFormData) {
360
+ return this.$parent.getFormData(para);
361
+ }
362
+ let result = {};
363
+ let self = this;
364
+ if (!para.ph_key) {
365
+ para.ph_key = this.ph_key;
366
+ }
367
+ self.synchroPost(
368
+ self.myConfig.resources,
369
+ self.myConfig.classPrefix + '.get',
370
+ {ph_key: para.ph_key},
371
+ function (data) {
372
+ result = data[self.config.response];
373
+ }
374
+ );
375
+ return result;
376
+ },
377
+ doAction(obj) {
378
+ const method = obj.name;
379
+ const methodBefore = method + 'Before';
380
+ const methodAfter = method + 'After';
381
+ if (
382
+ obj.name === 'addData' ||
383
+ obj.name === 'editData' ||
384
+ obj.name === 'openBilloperlog' ||
385
+ obj.name === 'searchData'
386
+ ) {
387
+ let flag = true;
388
+ if (this.$parent[methodBefore]) {
389
+ flag = this.$parent[methodBefore](obj);
390
+ }
391
+ if (flag) {
392
+ if (obj.name === 'addData') {
393
+ this.$refs.form.setReadOnly(false);
394
+ this.$refs.form.clearData();
395
+ this.$refs.menutoolbar.setAllReadOnly(true);
396
+ this.$refs.menutoolbar.setReadOnly('saveData', false);
397
+ this.$refs.grid.clearCurrentRow();
398
+ }
399
+ if (obj.name === 'editData') {
400
+ this.$refs.form.setReadOnly(false);
401
+ this.$refs.menutoolbar.setReadOnly('editData', true);
402
+ this.$refs.menutoolbar.setReadOnly('saveData', false);
403
+ }
404
+ if (obj.name === 'searchData') {
405
+ let temp = {};
406
+ let self = this;
407
+ temp.onOk = () => {
408
+ self.$refs.quick.filterSearch();
409
+ };
410
+ this.checkData(temp);
411
+ }
412
+
413
+ // '打开日志'
414
+ if (obj.name === 'openBilloperlog') {
415
+ if (this.$parent.openBilloperlog) {
416
+ this.$parent.openBilloperlog();
417
+ } else {
418
+ this.openBilloperlog();
419
+ }
420
+ }
421
+
422
+ if (this.$parent[methodAfter]) {
423
+ this.$parent[methodAfter]();
424
+ }
425
+ }
426
+ } else {
427
+ let flag = true;
428
+ if (this.$parent[methodBefore]) {
429
+ flag = this.$parent[methodBefore](obj);
430
+ }
431
+ if (!flag) {
432
+ return;
433
+ }
434
+ if (obj.name === 'saveData') {
435
+ let flag = this.$refs.form.checkValidate();
436
+ if (flag) {
437
+ this.alert('必填项不允许为空');
438
+ return false;
439
+ }
440
+ flag = this.$refs.form.isEdit();
441
+ if (flag) {
442
+ this.alert('存在数据未确认');
443
+ return false;
444
+ }
445
+ let data = this.$refs.form.getChangeData();
446
+ if (data.flag === 'U') {
447
+ obj.editFlag = true;
448
+ }
449
+ obj.para = [];
450
+ obj.para.push(data);
451
+ }
452
+ if (obj.name === 'delData') {
453
+ let tempData = this.$refs.grid.getSelection();
454
+ if (tempData && tempData.length > 0) {
455
+ tempData.forEach(el => {
456
+ el.flag = 'D';
457
+ });
458
+ obj.para = tempData;
459
+ } else {
460
+ this.alert('没有数据可删除,请检查');
461
+ return false;
462
+ }
463
+ }
464
+ obj.onOk = this.onOk;
465
+ if (obj.name === 'delData') {
466
+ let text = '删除';
467
+ let self = this;
468
+ self.$Modal.confirm({
469
+ title: '确认',
470
+ content: '是否确认' + text + '数据?',
471
+ onOk: () => {
472
+ self.$emit('doAction', obj);
473
+ }
474
+ });
475
+ } else {
476
+ this.$emit('doAction', obj);
477
+ }
478
+ }
479
+ },
480
+ onOk(action, data) {
481
+ if (action.name === 'saveData') {
482
+ this.ph_key = data[0].ph_key;
483
+ if (action.editFlag) {
484
+ this.$refs.grid.refurbish({}, true);
485
+ } else {
486
+ this.$refs.grid.refurbish();
487
+ }
488
+ this.initForm(data[0]);
489
+ this.$refs.menutoolbar.setReadOnly('editData', false);
490
+ this.$refs.menutoolbar.setReadOnly('saveData', true);
491
+ }
492
+ if (action.name === 'delData') {
493
+ this.ph_key = '';
494
+ this.$refs.form.clearData();
495
+ this.$refs.grid.refurbish();
496
+ this.$refs.form.setReadOnly(true);
497
+ this.$refs.menutoolbar.setAllReadOnly(false);
498
+ this.$refs.menutoolbar.setReadOnly('saveData', true);
499
+ }
500
+ },
501
+ checkData(obj) {
502
+ let tempflag = false;
503
+ tempflag = this.$refs.form.isEdit();
504
+ if (tempflag) {
505
+ let self = this;
506
+ self.$Modal.confirm({
507
+ title: '确认',
508
+ content: '数据存在数据未确认,是否放弃?',
509
+ onOk: () => {
510
+ this.checkChangeData(obj);
511
+ },
512
+ onCancel: () => {
513
+ if (obj.onCancel) {
514
+ obj.onCancel();
515
+ }
516
+ }
517
+ });
518
+ } else {
519
+ this.checkChangeData(obj);
520
+ }
521
+ },
522
+ checkChangeData(obj) {
523
+ let flag = false;
524
+ flag = this.$refs.form.isChange();
525
+ if (flag) {
526
+ let self = this;
527
+ self.$Modal.confirm({
528
+ title: '确认',
529
+ content: '数据有修改未保存,是否放弃修改?',
530
+ onOk: () => {
531
+ if (obj.onOk) {
532
+ obj.onOk();
533
+ }
534
+ },
535
+ onCancel: () => {
536
+ if (obj.onCancel) {
537
+ obj.onCancel();
538
+ }
539
+ }
540
+ });
541
+ } else {
542
+ if (obj.onOk) {
543
+ obj.onOk();
544
+ }
545
+ }
546
+ },
547
+ setOutsideHeight() {
548
+ let height = this.$refs.head.offsetHeight + this.$refs.para.offsetHeight + 80;
549
+ this.$refs.grid.setOutsideHeight(height);
550
+ let height2 = this.$refs.head.offsetHeight;
551
+ this.$refs.form.setOutsideHeight(height2);
552
+ },
553
+ getChangeData() {
554
+ return this.$refs.form.getChangeData();
555
+ },
556
+ setDetailVisible(name, value) {
557
+ this.$refs.form.setVisible(name, value);
558
+ }
559
+ },
560
+ mounted() {
561
+ this.observer = elementResizeDetectorMaker();
562
+ if (this.$refs.head) {
563
+ this.observer.listenTo(this.$refs.head, this.setOutsideHeight);
564
+ }
565
+ if (this.$refs.para) {
566
+ this.observer.listenTo(this.$refs.para, this.setOutsideHeight);
567
+ }
568
+ this.$refs.grid.refurbish();
569
+ this.headHeight = this.$refs.head.offsetHeight;
570
+ this.$nextTick(() => {
571
+ this.$refs.form.setReadOnly(true);
572
+ this.$refs.menutoolbar.setAllReadOnly(false);
573
+ this.$refs.menutoolbar.setReadOnly('saveData', true);
574
+ });
575
+ },
576
+ beforeUnmount() {
577
+ this.observer.removeListener(this.$refs.head, this.setOutsideHeight);
578
+ this.observer.removeListener(this.$refs.para, this.setOutsideHeight);
579
+ }
580
+ };
581
+ </script>