ocpview-plus 1.3.15 → 1.3.17

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,386 +1,386 @@
1
- <template>
2
- <Card :bordered="false" :padding="0" dis-hover>
3
- <p @click="toggle" style="cursor:pointer;" >
4
- <Row type="flex" :gutter="0" justify="start" align="middle" style="margin-bottom:14px;margin-top:14px;">
5
- <Col span="18">
6
- <Icon custom='iconfont icon-custom-pack' color="#f3b352" v-show="showForm" size="14" /><Icon v-show="!showForm" color="#f3b352" custom='iconfont icon-custom-spread' size="14"/>
7
- <span style="margin-left:10px;font-size: 14px;font-weight:bold" v-text="myConfig.title" />
8
- </Col>
9
- <Col v-show="showForm" span="6">
10
- <Row type="flex" justify="end" :gutter="0" align="middle">
11
- <Dropdown placement="bottom-start" style="float:right">
12
- <Button style="height:21px" type="info">
13
- 更多操作
14
- <Icon type="ios-arrow-down"></Icon>
15
- </Button>
16
- <template #list>
17
- <DropdownMenu>
18
- <DropdownItem>
19
- <Button @click.stop="openForm" >全部展开</Button>
20
- </DropdownItem>
21
- <DropdownItem >
22
- <Button @click.stop="closeForm">全部收起</Button>
23
- </DropdownItem>
24
- </DropdownMenu>
25
- </template>
26
- </Dropdown>
27
- </Row>
28
- </Col>
29
- </Row>
30
- </p>
31
- <Divider style="margin-left:24px;margin-bottom:10px;margin-top: 0px;"/>
32
- <div style="margin-left:24px;" v-show="showForm" >
33
- <Row style="margin-bottom:10px;">
34
- <Button style="padding-left:0px;padding-right:0px" customIcon="iconfont icon-custom-rowadd3" type="text" :disabled="btnReadOnly" @click="add" >添加</Button>
35
- </Row>
36
- <FormDetail v-if="showAdd" ref="addform" :config="myConfig" :isAdd="true" @doAction="newDoAction" :dictData="dictData"/>
37
- <FormDetail v-for="(temp,index) in data" :ref="temp.curlIndex" :key="temp.curlIndex" :valueData="temp" :curlIndex="temp.curlIndex" :index="index" :config="myConfig" @doAction="doAction" :dictData="dictData"/>
38
- </div>
39
- </Card>
40
- </template>
41
-
42
- <script>
43
- import FormDetail from './formdetailtwo.vue';
44
- import random from '../../utils/random_str';
45
- export default {
46
- name:'mdetail',
47
- components:{
48
- FormDetail
49
- },
50
- data () {
51
- return {
52
- readOnly:false,
53
- showAdd:false,
54
- isGrid:false,
55
- myConfig:{
56
- title:'',
57
- titleType:1,
58
- addBtnType:'1',
59
- hide:true,
60
- addBtnName:'新增',
61
- editBtnName:'编辑'
62
- },
63
- showForm:true,
64
- editFlag:false,
65
- showBtn:true,
66
- iconStyle:'',
67
- pStyle:'',
68
- data:[],
69
- delData:[],
70
- btnReadOnly:false
71
- };
72
- },
73
- props:{
74
- config:{
75
- type:Object,
76
- default:null
77
- },
78
- dictData: {
79
- type: Object,
80
- default:null
81
- }
82
- },
83
- created () {
84
- this.init();
85
- },
86
- computed: {
87
- },
88
- methods:{
89
- init (){
90
- this.myConfig = Object.assign({},this.myConfig,this.config);
91
- if (this.myConfig.effectKey) {
92
- if (this.myConfig.gridConfig) {
93
- if (this.myConfig.gridConfig.effectKey === undefined) {
94
- this.myConfig.gridConfig.effectKey = this.myConfig.effectKey;
95
- }
96
- }
97
- }
98
- delete this.myConfig.formConfig.name;
99
- delete this.myConfig.formConfig.title;
100
- delete this.myConfig.gridConfig.name;
101
- delete this.myConfig.gridConfig.title;
102
- },
103
- setShowGrid (value) {
104
- this.showForm = value;
105
- },
106
- toggle () {
107
- this.showForm = !this.showForm;
108
- },
109
- getRowObject(index) {
110
- if (index < this.date.length) {
111
- if (this.$refs[this.date[index].curlIndex] && this.$refs[this.date[index].curlIndex][0]) {
112
- return this.$refs[this.date[index].curlIndex][0];
113
- }
114
- }
115
- return null;
116
- },
117
- getRandom() {
118
- return random(8);
119
- },
120
- add (obj) {
121
- let row = null;
122
- if (this.myConfig.addRowBefore) {
123
- row = this.myConfig.addRowBefore();
124
- if (row === false) {
125
- return;
126
- }
127
- }
128
- if (!row || row === true) {
129
- row = {};
130
- }
131
- if (obj) {
132
- row = Object.assign({},row, obj);
133
- }
134
- if (!this.showForm) {
135
- this.showForm = true;
136
- }
137
- this.showAdd = false;
138
- let self = this;
139
- this.$nextTick(() => {
140
- this.showAdd = true;
141
- this.$nextTick(() => {
142
- setTimeout(() => {
143
- row.flag = 'I';
144
- self.$refs.addform.clearData();
145
- self.$refs.addform.setData(row);
146
- self.$refs.addform.setFormReadOnly(false);
147
- }, 200);
148
- });
149
- });
150
- },
151
- newDoAction (obj) {
152
- if (this['new' + obj.name]) {
153
- this['new' + obj.name](obj);
154
- }
155
- },
156
- newsaveForm (obj) {
157
- let flag = true;
158
- let temp = obj.para.data;
159
- temp.curlIndex = 'formdetail_' + this.getRandom();
160
- temp.flag = 'I';
161
- if (this.myConfig.newSaveFormBefore) {
162
- flag = this.myConfig.newSaveFormBefore(temp);
163
- }
164
- if (flag) {
165
- this.data.push(temp);
166
- this.showAdd = false;
167
- }
168
-
169
- },
170
- isChange () {
171
- let flag = false;
172
- if (this.data && this.data.length > 0) {
173
- this.data.forEach(el => {
174
- if (!flag) {
175
- if (this.$refs[el.curlIndex] && this.$refs[el.curlIndex][0]) {
176
- flag = this.$refs[el.curlIndex][0].isChange();
177
- }
178
- }
179
- });
180
- }
181
- return flag;
182
- },
183
- isEdit() {
184
- return this.showAdd;
185
- },
186
- newcancelForm () {
187
- this.showAdd = false;
188
- },
189
- doAction (obj) {
190
- if (this[obj.name]) {
191
- this[obj.name](obj);
192
- }
193
- },
194
- getData (flag) {
195
- let data = [];
196
- this.data.forEach(el => {
197
- let obj = this.$Method.copy(el);
198
- if (!flag) {
199
- delete obj.curlIndex;
200
- }
201
- data.push(obj);
202
- });
203
- return data;
204
- },
205
- setData (data) {
206
- this.data = [];
207
- this.delData = [];
208
- data.forEach(el => {
209
- el.curlIndex = 'formdetail_' + this.getRandom();
210
- });
211
- this.$nextTick(() => {
212
- this.data =this.$Method.copy(data);
213
- });
214
- },
215
- setEffectData(data) {
216
- this.data.forEach(el => {
217
- if (this.$refs[el.curlIndex] && this.$refs[el.curlIndex][0]) {
218
- let tmp = [];
219
- if (this.myConfig.effectKey) {
220
- let tmpIdex = data.findIndex(el2 => el[this.myConfig.effectKey] === el2[this.myConfig.effectKey]);
221
- if (tmpIdex > -1) {
222
- tmp = this.$Method.copy(data[tmpIdex]);
223
- }
224
- this.$refs[el.curlIndex][0].setEffectData(tmp);
225
- }
226
- }
227
- });
228
- },
229
-
230
- saveForm (obj) {
231
- let index = this.data.findIndex(el => el.curlIndex === obj.para.curlIndex);
232
- if (index > -1) {
233
- if (this.data[index].flag === undefined) {
234
- obj.para.data.flag = 'U';
235
- }
236
- this.data.splice(index, 1, obj.para.data);
237
- }
238
- },
239
- delForm (obj) {
240
- this.delCommonForm(obj);
241
- },
242
- delCommonForm(obj) {
243
- let index = this.data.findIndex(el => el.curlIndex === obj.para.curlIndex);
244
- let that = this;
245
- if (index > -1) {
246
- let form = this.$Method.copy(this.data[index]);
247
- if (this.$refs[obj.para.curlIndex] && this.$refs[obj.para.curlIndex][0]) {
248
- form = this.$refs[obj.para.curlIndex][0].getData();
249
- }
250
- if (this.myConfig.delRowBefore) {
251
- let obj = {};
252
- obj.index = index;
253
- obj.gridObject = that;
254
- obj.form = Object.assign({}, form);
255
- let flag = this.myConfig.delRowBefore(obj);
256
- if (flag === false) {
257
- return;
258
- }
259
- }
260
- if (form.flag === undefined || form.flag === 'U') {
261
- form.flag = 'D';
262
- delete form.index;
263
- delete form.curlIndex;
264
- this.delData.push(form);
265
- }
266
- this.data.splice(index, 1);
267
- }
268
- },
269
- editForm(obj) {
270
- this.showAdd = false;
271
- if (this.$refs.addform) {
272
- this.$refs.addform.clearData(obj);
273
- }
274
- },
275
- setReadOnly(value) {
276
- this.readOnly = value;
277
- this.$nextTick(() => {
278
- this.data.forEach(el => {
279
- if (this.$refs[el.curlIndex] && this.$refs[el.curlIndex][0]) {
280
- this.$refs[el.curlIndex][0].setReadOnly(value);
281
- }
282
- });
283
- });
284
- if (this.readOnly) {
285
- this.showAdd = false;
286
- }
287
- this.setBtnReadOnly(value);
288
- },
289
- clearData () {
290
- this.data = [];
291
- this.delData = [];
292
- this.showAdd = false;
293
- if (this.$refs.addform) {
294
- this.$refs.addform.clearData();
295
- }
296
- },
297
- getChangeData() {
298
- return this.getCommonChangeData(this.data);
299
- },
300
- getCommonChangeData(data) {
301
- let changeData = [];
302
- if (data.length > 0) {
303
- data.forEach(el => {
304
- if (this.$refs[el.curlIndex] && this.$refs[el.curlIndex][0]) {
305
- if (this.$refs[el.curlIndex][0].isChange()) {
306
- changeData.push(this.$refs[el.curlIndex][0].getChangeData());
307
- }
308
- }
309
- });
310
- }
311
- return changeData.concat(this.delData);
312
- },
313
- editDetails() {
314
- if (this.checkIsEdit()) {
315
- this.editFlag = true;
316
- this.setReadOnly(false);
317
- } else {
318
- this.editFlag = false;
319
- this.setReadOnly(true);
320
- }
321
- },
322
- checkIsEdit() {
323
- let flag = true;
324
- if (this.myConfig.editObjectBefore) {
325
- flag = this.myConfig.editObjectBefore(this.myConfig.name);
326
- }
327
- return flag;
328
- },
329
- save () {
330
- if (this.checkValidate()){
331
- return;
332
- }
333
- let obj = {};
334
- obj.name = 'saveDetails';
335
- obj.detailsname = this.myConfig.name;
336
- this.editFlag = false;
337
- this.$emit('doAction', obj);
338
- },
339
- delRowData (obj) {
340
- this.delForm(obj);
341
- },
342
- checkValidate () {
343
- let flag = false;
344
- this.data.some(el => {
345
- if (this.$refs[el.curlIndex] && this.$refs[el.curlIndex][0]) {
346
- flag = this.$refs[el.curlIndex][0].checkValidate();
347
- if (flag) {
348
- return true;
349
- }
350
- }
351
- });
352
- if (flag) {
353
- this.alert('必填项不允许为空');
354
- }
355
- return flag;
356
- },
357
- cancel() {
358
- this.editFlag = false;
359
- this.delData = [];
360
- },
361
- setShowBtn(value) {
362
- this.showBtn = value;
363
- },
364
- setBtnReadOnly(value) {
365
- this.btnReadOnly = value;
366
- },
367
- openForm () {
368
- this.data.forEach(el => {
369
- if (this.$refs[el.curlIndex] && this.$refs[el.curlIndex][0]) {
370
- this.$refs[el.curlIndex][0].setShowForm(true);
371
- }
372
- });
373
- },
374
- closeForm() {
375
- this.data.forEach(el => {
376
- if (this.$refs[el.curlIndex] && this.$refs[el.curlIndex][0]) {
377
- this.$refs[el.curlIndex][0].setShowForm(false);
378
- }
379
- });
380
- this.showAdd = false;
381
- },
382
- },
383
- mounted () {
384
- }
385
- };
386
- </script>
1
+ <template>
2
+ <Card :bordered="false" :padding="0" dis-hover>
3
+ <p @click="toggle" style="cursor:pointer;" >
4
+ <Row type="flex" :gutter="0" justify="start" align="middle" style="margin-bottom:14px;margin-top:14px;">
5
+ <Col span="18">
6
+ <Icon custom='iconfont icon-custom-pack' color="#f3b352" v-show="showForm" size="14" /><Icon v-show="!showForm" color="#f3b352" custom='iconfont icon-custom-spread' size="14"/>
7
+ <span style="margin-left:10px;font-size: 14px;font-weight:bold" v-text="myConfig.title" />
8
+ </Col>
9
+ <Col v-show="showForm" span="6">
10
+ <Row type="flex" justify="end" :gutter="0" align="middle">
11
+ <Dropdown placement="bottom-start" style="float:right">
12
+ <Button style="height:21px" type="info">
13
+ 更多操作
14
+ <Icon type="ios-arrow-down"></Icon>
15
+ </Button>
16
+ <template #list>
17
+ <DropdownMenu>
18
+ <DropdownItem>
19
+ <Button @click.stop="openForm" >全部展开</Button>
20
+ </DropdownItem>
21
+ <DropdownItem >
22
+ <Button @click.stop="closeForm">全部收起</Button>
23
+ </DropdownItem>
24
+ </DropdownMenu>
25
+ </template>
26
+ </Dropdown>
27
+ </Row>
28
+ </Col>
29
+ </Row>
30
+ </p>
31
+ <Divider style="margin-left:24px;margin-bottom:10px;margin-top: 0px;"/>
32
+ <div style="margin-left:24px;" v-show="showForm" >
33
+ <Row style="margin-bottom:10px;">
34
+ <Button style="padding-left:0px;padding-right:0px" customIcon="iconfont icon-custom-rowadd3" type="text" :disabled="btnReadOnly" @click="add" >添加</Button>
35
+ </Row>
36
+ <FormDetail v-if="showAdd" ref="addform" :config="myConfig" :isAdd="true" @doAction="newDoAction" :dictData="dictData"/>
37
+ <FormDetail v-for="(temp,index) in data" :ref="temp.curlIndex" :key="temp.curlIndex" :valueData="temp" :curlIndex="temp.curlIndex" :index="index" :config="myConfig" @doAction="doAction" :dictData="dictData"/>
38
+ </div>
39
+ </Card>
40
+ </template>
41
+
42
+ <script>
43
+ import FormDetail from './formdetailtwo.vue';
44
+ import random from '../../utils/random_str';
45
+ export default {
46
+ name:'mdetail',
47
+ components:{
48
+ FormDetail
49
+ },
50
+ data () {
51
+ return {
52
+ readOnly:false,
53
+ showAdd:false,
54
+ isGrid:false,
55
+ myConfig:{
56
+ title:'',
57
+ titleType:1,
58
+ addBtnType:'1',
59
+ hide:true,
60
+ addBtnName:'新增',
61
+ editBtnName:'编辑'
62
+ },
63
+ showForm:true,
64
+ editFlag:false,
65
+ showBtn:true,
66
+ iconStyle:'',
67
+ pStyle:'',
68
+ data:[],
69
+ delData:[],
70
+ btnReadOnly:false
71
+ };
72
+ },
73
+ props:{
74
+ config:{
75
+ type:Object,
76
+ default:null
77
+ },
78
+ dictData: {
79
+ type: Object,
80
+ default:null
81
+ }
82
+ },
83
+ created () {
84
+ this.init();
85
+ },
86
+ computed: {
87
+ },
88
+ methods:{
89
+ init (){
90
+ this.myConfig = Object.assign({},this.myConfig,this.config);
91
+ if (this.myConfig.effectKey) {
92
+ if (this.myConfig.gridConfig) {
93
+ if (this.myConfig.gridConfig.effectKey === undefined) {
94
+ this.myConfig.gridConfig.effectKey = this.myConfig.effectKey;
95
+ }
96
+ }
97
+ }
98
+ delete this.myConfig.formConfig.name;
99
+ delete this.myConfig.formConfig.title;
100
+ delete this.myConfig.gridConfig.name;
101
+ delete this.myConfig.gridConfig.title;
102
+ },
103
+ setShowGrid (value) {
104
+ this.showForm = value;
105
+ },
106
+ toggle () {
107
+ this.showForm = !this.showForm;
108
+ },
109
+ getRowObject(index) {
110
+ if (index < this.date.length) {
111
+ if (this.$refs[this.date[index].curlIndex] && this.$refs[this.date[index].curlIndex][0]) {
112
+ return this.$refs[this.date[index].curlIndex][0];
113
+ }
114
+ }
115
+ return null;
116
+ },
117
+ getRandom() {
118
+ return random(8);
119
+ },
120
+ add (obj) {
121
+ let row = null;
122
+ if (this.myConfig.addRowBefore) {
123
+ row = this.myConfig.addRowBefore();
124
+ if (row === false) {
125
+ return;
126
+ }
127
+ }
128
+ if (!row || row === true) {
129
+ row = {};
130
+ }
131
+ if (obj) {
132
+ row = Object.assign({},row, obj);
133
+ }
134
+ if (!this.showForm) {
135
+ this.showForm = true;
136
+ }
137
+ this.showAdd = false;
138
+ let self = this;
139
+ this.$nextTick(() => {
140
+ this.showAdd = true;
141
+ this.$nextTick(() => {
142
+ setTimeout(() => {
143
+ row.flag = 'I';
144
+ self.$refs.addform.clearData();
145
+ self.$refs.addform.setData(row);
146
+ self.$refs.addform.setFormReadOnly(false);
147
+ }, 200);
148
+ });
149
+ });
150
+ },
151
+ newDoAction (obj) {
152
+ if (this['new' + obj.name]) {
153
+ this['new' + obj.name](obj);
154
+ }
155
+ },
156
+ newsaveForm (obj) {
157
+ let flag = true;
158
+ let temp = obj.para.data;
159
+ temp.curlIndex = 'formdetail_' + this.getRandom();
160
+ temp.flag = 'I';
161
+ if (this.myConfig.newSaveFormBefore) {
162
+ flag = this.myConfig.newSaveFormBefore(temp);
163
+ }
164
+ if (flag) {
165
+ this.data.push(temp);
166
+ this.showAdd = false;
167
+ }
168
+
169
+ },
170
+ isChange () {
171
+ let flag = false;
172
+ if (this.data && this.data.length > 0) {
173
+ this.data.forEach(el => {
174
+ if (!flag) {
175
+ if (this.$refs[el.curlIndex] && this.$refs[el.curlIndex][0]) {
176
+ flag = this.$refs[el.curlIndex][0].isChange();
177
+ }
178
+ }
179
+ });
180
+ }
181
+ return flag;
182
+ },
183
+ isEdit() {
184
+ return this.showAdd;
185
+ },
186
+ newcancelForm () {
187
+ this.showAdd = false;
188
+ },
189
+ doAction (obj) {
190
+ if (this[obj.name]) {
191
+ this[obj.name](obj);
192
+ }
193
+ },
194
+ getData (flag) {
195
+ let data = [];
196
+ this.data.forEach(el => {
197
+ let obj = this.$Method.copy(el);
198
+ if (!flag) {
199
+ delete obj.curlIndex;
200
+ }
201
+ data.push(obj);
202
+ });
203
+ return data;
204
+ },
205
+ setData (data) {
206
+ this.data = [];
207
+ this.delData = [];
208
+ data.forEach(el => {
209
+ el.curlIndex = 'formdetail_' + this.getRandom();
210
+ });
211
+ this.$nextTick(() => {
212
+ this.data =this.$Method.copy(data);
213
+ });
214
+ },
215
+ setEffectData(data) {
216
+ this.data.forEach(el => {
217
+ if (this.$refs[el.curlIndex] && this.$refs[el.curlIndex][0]) {
218
+ let tmp = [];
219
+ if (this.myConfig.effectKey) {
220
+ let tmpIdex = data.findIndex(el2 => el[this.myConfig.effectKey] === el2[this.myConfig.effectKey]);
221
+ if (tmpIdex > -1) {
222
+ tmp = this.$Method.copy(data[tmpIdex]);
223
+ }
224
+ this.$refs[el.curlIndex][0].setEffectData(tmp);
225
+ }
226
+ }
227
+ });
228
+ },
229
+
230
+ saveForm (obj) {
231
+ let index = this.data.findIndex(el => el.curlIndex === obj.para.curlIndex);
232
+ if (index > -1) {
233
+ if (this.data[index].flag === undefined) {
234
+ obj.para.data.flag = 'U';
235
+ }
236
+ this.data.splice(index, 1, obj.para.data);
237
+ }
238
+ },
239
+ delForm (obj) {
240
+ this.delCommonForm(obj);
241
+ },
242
+ delCommonForm(obj) {
243
+ let index = this.data.findIndex(el => el.curlIndex === obj.para.curlIndex);
244
+ let that = this;
245
+ if (index > -1) {
246
+ let form = this.$Method.copy(this.data[index]);
247
+ if (this.$refs[obj.para.curlIndex] && this.$refs[obj.para.curlIndex][0]) {
248
+ form = this.$refs[obj.para.curlIndex][0].getData();
249
+ }
250
+ if (this.myConfig.delRowBefore) {
251
+ let obj = {};
252
+ obj.index = index;
253
+ obj.gridObject = that;
254
+ obj.form = Object.assign({}, form);
255
+ let flag = this.myConfig.delRowBefore(obj);
256
+ if (flag === false) {
257
+ return;
258
+ }
259
+ }
260
+ if (form.flag === undefined || form.flag === 'U') {
261
+ form.flag = 'D';
262
+ delete form.index;
263
+ delete form.curlIndex;
264
+ this.delData.push(form);
265
+ }
266
+ this.data.splice(index, 1);
267
+ }
268
+ },
269
+ editForm(obj) {
270
+ this.showAdd = false;
271
+ if (this.$refs.addform) {
272
+ this.$refs.addform.clearData(obj);
273
+ }
274
+ },
275
+ setReadOnly(value) {
276
+ this.readOnly = value;
277
+ this.$nextTick(() => {
278
+ this.data.forEach(el => {
279
+ if (this.$refs[el.curlIndex] && this.$refs[el.curlIndex][0]) {
280
+ this.$refs[el.curlIndex][0].setReadOnly(value);
281
+ }
282
+ });
283
+ });
284
+ if (this.readOnly) {
285
+ this.showAdd = false;
286
+ }
287
+ this.setBtnReadOnly(value);
288
+ },
289
+ clearData () {
290
+ this.data = [];
291
+ this.delData = [];
292
+ this.showAdd = false;
293
+ if (this.$refs.addform) {
294
+ this.$refs.addform.clearData();
295
+ }
296
+ },
297
+ getChangeData() {
298
+ return this.getCommonChangeData(this.data);
299
+ },
300
+ getCommonChangeData(data) {
301
+ let changeData = [];
302
+ if (data.length > 0) {
303
+ data.forEach(el => {
304
+ if (this.$refs[el.curlIndex] && this.$refs[el.curlIndex][0]) {
305
+ if (this.$refs[el.curlIndex][0].isChange()) {
306
+ changeData.push(this.$refs[el.curlIndex][0].getChangeData());
307
+ }
308
+ }
309
+ });
310
+ }
311
+ return changeData.concat(this.delData);
312
+ },
313
+ editDetails() {
314
+ if (this.checkIsEdit()) {
315
+ this.editFlag = true;
316
+ this.setReadOnly(false);
317
+ } else {
318
+ this.editFlag = false;
319
+ this.setReadOnly(true);
320
+ }
321
+ },
322
+ checkIsEdit() {
323
+ let flag = true;
324
+ if (this.myConfig.editObjectBefore) {
325
+ flag = this.myConfig.editObjectBefore(this.myConfig.name);
326
+ }
327
+ return flag;
328
+ },
329
+ save () {
330
+ if (this.checkValidate()){
331
+ return;
332
+ }
333
+ let obj = {};
334
+ obj.name = 'saveDetails';
335
+ obj.detailsname = this.myConfig.name;
336
+ this.editFlag = false;
337
+ this.$emit('doAction', obj);
338
+ },
339
+ delRowData (obj) {
340
+ this.delForm(obj);
341
+ },
342
+ checkValidate () {
343
+ let flag = false;
344
+ this.data.some(el => {
345
+ if (this.$refs[el.curlIndex] && this.$refs[el.curlIndex][0]) {
346
+ flag = this.$refs[el.curlIndex][0].checkValidate();
347
+ if (flag) {
348
+ return true;
349
+ }
350
+ }
351
+ });
352
+ if (flag) {
353
+ this.alert('必填项不允许为空');
354
+ }
355
+ return flag;
356
+ },
357
+ cancel() {
358
+ this.editFlag = false;
359
+ this.delData = [];
360
+ },
361
+ setShowBtn(value) {
362
+ this.showBtn = value;
363
+ },
364
+ setBtnReadOnly(value) {
365
+ this.btnReadOnly = value;
366
+ },
367
+ openForm () {
368
+ this.data.forEach(el => {
369
+ if (this.$refs[el.curlIndex] && this.$refs[el.curlIndex][0]) {
370
+ this.$refs[el.curlIndex][0].setShowForm(true);
371
+ }
372
+ });
373
+ },
374
+ closeForm() {
375
+ this.data.forEach(el => {
376
+ if (this.$refs[el.curlIndex] && this.$refs[el.curlIndex][0]) {
377
+ this.$refs[el.curlIndex][0].setShowForm(false);
378
+ }
379
+ });
380
+ this.showAdd = false;
381
+ },
382
+ },
383
+ mounted () {
384
+ }
385
+ };
386
+ </script>