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,487 @@
1
+ <template>
2
+ <div>
3
+ <template v-if="myConfig.modeType === 'normal'">
4
+ <Card :padding="0" :class="cardClass">
5
+ <template v-if="showTitle" #title>
6
+ <p :style="pStyle" @click="toggle" >
7
+ <span :class="titleClass" v-text="myConfig.title" /><Icon v-if="myConfig.hide" class="efuture-title-icon" :style="iconStyle" type='ios-arrow-forward'/>
8
+ </p>
9
+ </template>
10
+ <template #extra>
11
+ <a v-if="!showAdd && !readOnly && myConfig.addBtnType === '1'" href="#" @click.prevent="add">{{myConfig.addBtnName}} </a>
12
+ </template>
13
+ <div v-show="showForm" style="padding:16px">
14
+ <FormDetail v-if="showAdd" ref="addform" :config="myConfig" :isAdd="true" @doAction="newDoAction" :dictData="dictData"/>
15
+ <FormDetail v-for="temp in data" :ref="temp.index" :key="temp.index" :valueData="temp" :index="temp.index" style="margin-bottom:10px;" :config="myConfig" @doAction="doAction" :dictData="dictData"/>
16
+ <Row v-if="!readOnly && !showAdd && myConfig.addBtnType === '2'" type="flex" justify="center" style="margin-top: 10px;margin-bottom:10px;" >
17
+ <Col span="22" ><Button type="default" style="background-color:#f8f8f9" @click="add" long>{{myConfig.addBtnName}}</Button> </Col>
18
+ </Row>
19
+ </div>
20
+ </Card>
21
+ </template>
22
+ <template v-if="myConfig.modeType === 'pop'">
23
+ <Card :padding="0" :class="cardClass">
24
+ <template v-if="showTitle" #title>
25
+ <p :style="pStyle" @click="toggle" >
26
+ <span :class="titleClass" v-text="myConfig.title" /><Icon v-if="myConfig.hide" class="efuture-title-icon" :style="iconStyle" type='ios-arrow-forward'/>
27
+ </p>
28
+ </template>
29
+ <template #extra>
30
+ <a href="#" v-if="showBtn && !btnReadOnly" @click.prevent="editDetails">{{myConfig.editBtnName}} </a>
31
+ <span v-if="showBtn && btnReadOnly" >{{myConfig.editBtnName}} </span>
32
+ </template>
33
+ <div v-show="showForm" style="padding:16px">
34
+ <FormDetail v-for="temp in data" :ref="temp.index+'_static'" :key="temp.index+'_static'" :valueData="temp" :index="temp.index" style="margin-bottom:10px;" :config="myConfig" @doAction="doAction" :dictData="dictData" btnType="3" />
35
+ </div>
36
+ <Modal v-model="editFlag" fullscreen :closable="false">
37
+ <template v-if="showTitle" #header>
38
+ <p v-if="showTitle" :style="pStyle" >
39
+ <span :class="titleClass" v-text="myConfig.title" />
40
+ <a href="#" style="float:right;margin-right:20px;font-size: 12px;" @click.prevent="addDetails">{{myConfig.addBtnName}} </a>
41
+ </p>
42
+ </template>
43
+ <FormDetail v-for="temp in popData" :ref="temp.index" :key="temp.index" :valueData="temp" :index="temp.index" style="margin-bottom:10px;" :config="myConfig" @doAction="doAction" :dictData="dictData" btnType="2"/>
44
+ <template #footer>
45
+ <Row type="flex" justify="center" align="middle" style="margin-top: 10px;margin-bottom: 10px;" :gutter="16">
46
+ <Col>
47
+ <Button type="primary" @click="save">保存</Button>
48
+ <Button style="margin-left: 20px;" @click="cancel">放弃</Button>
49
+ </Col>
50
+ </Row>
51
+ </template>
52
+ </Modal>
53
+ </Card>
54
+ </template>
55
+ <template v-if="myConfig.modeType === 'group'">
56
+ <Card :padding="0" :class="cardClass">
57
+ <template v-if="showTitle" #title>
58
+ <p :style="pStyle" @click="toggle" >
59
+ <span :class="titleClass" v-text="myConfig.title" /><Icon v-if="myConfig.hide" class="efuture-title-icon" :style="iconStyle" type='ios-arrow-forward'/>
60
+ </p>
61
+ </template>
62
+ <template #extra>
63
+ <a href="#" style="font-size: 12px;" @click.prevent="addDetails">{{myConfig.addBtnName}} </a>
64
+ </template>
65
+ <FormDetail v-for="temp in popData" :id="temp.index" :ref="temp.index" :key="temp.index" :valueData="temp" :index="temp.index" style="margin-bottom:10px;" :config="myConfig" @doAction="doAction" :dictData="dictData" btnType="2"/>
66
+ </Card>
67
+ </template>
68
+ </div>
69
+ </template>
70
+
71
+ <script>
72
+ import FormDetail from './formdetailtwo.vue';
73
+ export default {
74
+ name:'detail',
75
+ components:{
76
+ FormDetail
77
+ },
78
+ data () {
79
+ return {
80
+ readOnly:false,
81
+ showAdd:false,
82
+ isGrid:false,
83
+ myConfig:{
84
+ title:'',
85
+ titleType:1,
86
+ addBtnType:'1',
87
+ hide:true,
88
+ addBtnName:'新增',
89
+ editBtnName:'编辑',
90
+ modeType:'normal'
91
+ },
92
+ showForm:true,
93
+ editFlag:false,
94
+ showTitle:false,
95
+ showBtn:true,
96
+ iconStyle:'',
97
+ pStyle:'',
98
+ data:[],
99
+ popData:[],
100
+ delData:[],
101
+ btnReadOnly:false
102
+ };
103
+ },
104
+ props:{
105
+ config:{
106
+ type:Object,
107
+ default:null
108
+ },
109
+ dictData: {
110
+ type: Object,
111
+ default:null
112
+ }
113
+ },
114
+ created () {
115
+ this.init();
116
+ },
117
+ computed: {
118
+ titleClass () {
119
+ return `efuture-title-font-${this.myConfig.titleType}`;
120
+ },
121
+ cardClass() {
122
+ if (this.myConfig.showSubSpecialStyle) {
123
+ return (`efuture-card-head-title-${this.myConfig.titleType}` + ' efuture-card-head-title' + ` efuture-card-extra-title-${this.myConfig.titleType}`);
124
+ } else {
125
+ return `efuture-card-head-title-${this.myConfig.titleType}` + ` efuture-card-extra-title-${this.myConfig.titleType}`;
126
+ }
127
+ }
128
+ },
129
+ methods:{
130
+ init (){
131
+ this.myConfig = Object.assign({},this.myConfig,this.config);
132
+ delete this.myConfig.formConfig.name;
133
+ delete this.myConfig.formConfig.title;
134
+ delete this.myConfig.gridConfig.name;
135
+ delete this.myConfig.gridConfig.title;
136
+ if (this.myConfig.title) {
137
+ this.showTitle = true;
138
+ this.popTitle = this.myConfig.title;
139
+ }
140
+ if (this.myConfig.hide) {
141
+ this.pStyle = 'cursor:pointer';
142
+ if (this.showForm) {
143
+ this.iconStyle = 'transform: rotate(90deg)';
144
+ } else {
145
+ this.iconStyle = '';
146
+ }
147
+ }
148
+ },
149
+ setShowGrid(value) {
150
+ this.showForm = value;
151
+ this.setTitleStyle();
152
+ },
153
+ toggle () {
154
+ if (this.myConfig.hide) {
155
+ this.showForm = !this.showForm;
156
+ this.setTitleStyle();
157
+ }
158
+ },
159
+ setTitleStyle () {
160
+ if (this.showForm) {
161
+ this.iconStyle = 'transform: rotate(90deg)';
162
+ } else {
163
+ this.iconStyle = '';
164
+ }
165
+ },
166
+ addDetails(obj) {
167
+ let row = null;
168
+ let index = 'formdetail_' + this.popData.length;
169
+ if (this.myConfig.addRowBefore) {
170
+ row = this.myConfig.addRowBefore(index);
171
+ if (row === false) {
172
+ return;
173
+ }
174
+ }
175
+ if (!row || row === true) {
176
+ row = {};
177
+ }
178
+ if (obj) {
179
+ row = Object.assign({},row, obj);
180
+ }
181
+ row.index = index;
182
+ row.flag = 'I';
183
+ this.popData.push(row);
184
+ this.$nextTick(() => {
185
+ document.getElementById(index).scrollIntoView();
186
+ });
187
+ },
188
+ getRowObject(index) {
189
+ if (this.$refs[index] && this.$refs[index][0]) {
190
+ return this.$refs[index][0];
191
+ }
192
+ return null;
193
+ },
194
+ add (obj) {
195
+ let row = null;
196
+ if (this.myConfig.addRowBefore) {
197
+ row = this.myConfig.addRowBefore();
198
+ if (row === false) {
199
+ return;
200
+ }
201
+ }
202
+ if (!row || row === true) {
203
+ row = {};
204
+ }
205
+ if (obj) {
206
+ row = Object.assign({},row, obj);
207
+ }
208
+ if (!this.showForm) {
209
+ this.iconStyle = 'transform: rotate(90deg)';
210
+ this.showForm = true;
211
+ }
212
+ this.showAdd = true;
213
+ let self = this;
214
+ row.flag = 'I';
215
+ self.$nextTick(() =>{
216
+ self.$refs.addform.setData(row);
217
+ self.$refs.addform.setFormReadOnly(false);
218
+ });
219
+ },
220
+ newDoAction (obj) {
221
+ if (this['new' + obj.name]) {
222
+ this['new' + obj.name](obj);
223
+ }
224
+ },
225
+ newsaveForm (obj) {
226
+ let temp = obj.para.data;
227
+ temp.index = 'formdetail_' + this.data.length;
228
+ temp.flag = 'I';
229
+ this.data.push(temp);
230
+ this.showAdd = false;
231
+ this.$nextTick(() => {
232
+ if (this.$refs[temp.index] && this.$refs[temp.index][0]) {
233
+ this.$refs[temp.index][0].setReadOnly(true);
234
+ }
235
+ });
236
+ },
237
+ isChange () {
238
+ let flag = false;
239
+ if (this.data && this.data.length > 0) {
240
+ this.data.forEach(el => {
241
+ if (!flag) {
242
+ if (this.$refs[el.index] && this.$refs[el.index][0]) {
243
+ flag = this.$refs[el.index][0].isChange();
244
+ }
245
+ }
246
+ });
247
+ }
248
+ return flag;
249
+ },
250
+ isEdit() {
251
+ return this.showAdd;
252
+ },
253
+ newcancelForm () {
254
+ this.showAdd = false;
255
+ },
256
+ doAction (obj) {
257
+ if (this[obj.name]) {
258
+ this[obj.name](obj);
259
+ }
260
+ },
261
+ getData (flag) {
262
+ let data = [];
263
+ if (this.myConfig.modeType === 'normal') {
264
+ this.data.forEach(el => {
265
+ let obj = this.$Method.copy(el);
266
+ if (!flag) {
267
+ delete obj.index;
268
+ }
269
+ data.push(obj);
270
+ });
271
+ } else {
272
+ this.popData.forEach(el => {
273
+ if (this.$refs[el.index] && this.$refs[el.index][0]) {
274
+ data.push(this.$refs[el.index][0].getData());
275
+ }
276
+ });
277
+ }
278
+ return data;
279
+ },
280
+ setData (data) {
281
+ this.data = [];
282
+ this.delData = [];
283
+ this.popData = [];
284
+ data.forEach((el, index) => {
285
+ el.index = 'formdetail_' + index;
286
+ });
287
+ this.$nextTick(() => {
288
+ this.data =this.$Method.copy(data);
289
+ this.popData = this.$Method.copy(data);
290
+ });
291
+ },
292
+ saveForm (obj) {
293
+ let index = this.data.findIndex(el => el.index === obj.para.index);
294
+ if (index > -1) {
295
+ if (this.data[index].flag === undefined) {
296
+ obj.para.data.flag = 'U';
297
+ }
298
+ this.data.splice(index, 1, obj.para.data);
299
+ this.$nextTick(() => {
300
+ if (this.$refs[this.data[index].index] && this.$refs[this.data[index].index][0]) {
301
+ this.$refs[this.data[index].index][0].setReadOnly(true);
302
+ }
303
+ });
304
+ }
305
+ },
306
+ delForm (obj) {
307
+ if (this.myConfig.modeType !== 'normal') {
308
+ this.delCommonForm(this.popData, obj);
309
+ } else {
310
+ this.delCommonForm(this.data, obj);
311
+ }
312
+
313
+ },
314
+ delCommonForm(data, obj) {
315
+ let index = data.findIndex(el => el.index === obj.para.index);
316
+ let that = this;
317
+ if (index > -1) {
318
+ if (this.myConfig.delRowBefore) {
319
+ let obj = {};
320
+ obj.index = index;
321
+ obj.gridObject = that;
322
+ obj.form = Object.assign({}, data[index]);
323
+ let flag = this.myConfig.delRowBefore(obj);
324
+ if (flag === false) {
325
+ return;
326
+ }
327
+ }
328
+ let form = this.$Method.copy(data[index]);
329
+ if (form.flag === undefined || form.flag === 'U') {
330
+ form.flag = 'D';
331
+ delete form.index;
332
+ this.delData.push(form);
333
+ }
334
+ data.splice(index, 1);
335
+ }
336
+ },
337
+ editForm(obj) {
338
+ this.showAdd = false;
339
+ if (this.$refs.addform) {
340
+ this.$refs.addform.clearData(obj);
341
+ }
342
+ },
343
+ setReadOnly(value) {
344
+ this.readOnly = value;
345
+ this.$nextTick(() => {
346
+ this.data.forEach(el => {
347
+ if (this.$refs[el.index] && this.$refs[el.index][0]) {
348
+ this.$refs[el.index][0].setReadOnly(value);
349
+ }
350
+ });
351
+ });
352
+ if (this.readOnly) {
353
+ this.showAdd = false;
354
+ }
355
+ },
356
+ clearData () {
357
+ this.data = [];
358
+ this.delData = [];
359
+ this.popData = [];
360
+ this.showAdd = false;
361
+ if (this.$refs.addform) {
362
+ this.$refs.addform.clearData();
363
+ }
364
+ },
365
+ getChangeData() {
366
+ if (this.myConfig.modeType !== 'normal' ) {
367
+ return this.getCommonChangeData(this.popData);
368
+ } else {
369
+ return this.getCommonChangeData(this.data);
370
+ }
371
+ },
372
+ getCommonChangeData(data) {
373
+ let changeData = [];
374
+ if (data.length > 0) {
375
+ if (this.myConfig.modeType !== 'normal') {
376
+ data.forEach(el => {
377
+ if (this.$refs[el.index] && this.$refs[el.index][0]) {
378
+ if (this.$refs[el.index][0].isChange()) {
379
+ changeData.push(this.$refs[el.index][0].getChangeData());
380
+ }
381
+ }
382
+ });
383
+ } else {
384
+ data.forEach(el => {
385
+ if (el.flag !== undefined) {
386
+ changeData.push(el);
387
+ }
388
+ });
389
+ }
390
+ }
391
+ return changeData.concat(this.delData);
392
+ },
393
+ editDetails() {
394
+ if (this.myConfig.detailsGroup !== undefined) {
395
+ this.myConfig.editDetailsGroup(this.myConfig.detailsGroup);
396
+ } else {
397
+ if (this.myConfig.modeType === 'pop') {
398
+ this.popData = [];
399
+ this.$nextTick(() => {
400
+ this.popData = this.$Method.copy(this.data);
401
+ this.$nextTick(() => {
402
+ if (this.checkIsEdit()) {
403
+ this.editFlag = true;
404
+ this.setReadOnly(false);
405
+ } else {
406
+ this.editFlag = false;
407
+ this.setReadOnly(true);
408
+ }
409
+ });
410
+ });
411
+ } else {
412
+ if (this.checkIsEdit()) {
413
+ this.editFlag = true;
414
+ this.setReadOnly(false);
415
+ } else {
416
+ this.editFlag = false;
417
+ this.setReadOnly(true);
418
+ }
419
+ }
420
+
421
+ }
422
+ },
423
+ checkIsEdit() {
424
+ let flag = true;
425
+ if (this.myConfig.editObjectBefore) {
426
+ flag = this.myConfig.editObjectBefore(this.myConfig.name);
427
+ }
428
+ return flag;
429
+ },
430
+ save () {
431
+ if (this.checkValidate()){
432
+ return;
433
+ }
434
+ let obj = {};
435
+ obj.name = 'saveDetails';
436
+ obj.detailsname = this.myConfig.name;
437
+ this.editFlag = false;
438
+ this.$emit('doAction', obj);
439
+ },
440
+ checkValidate () {
441
+ let flag = false;
442
+ if (this.myConfig.modeType !== 'normal') {
443
+ this.popData.some(el => {
444
+ if (this.$refs[el.index] && this.$refs[el.index][0]) {
445
+ flag = this.$refs[el.index][0].checkValidate();
446
+ if (flag) {
447
+ return true;
448
+ }
449
+ }
450
+ });
451
+ if (flag) {
452
+ this.alert('必填项不允许为空');
453
+ }
454
+ }
455
+ return flag;
456
+ },
457
+ cancel() {
458
+ this.editFlag = false;
459
+ this.popData = this.$Method.copy(this.data);
460
+ this.delData = [];
461
+ },
462
+ setShowBtn(value) {
463
+ this.showBtn = value;
464
+ if (this.myConfig.modeType === 'pop') {
465
+ this.data.forEach(el => {
466
+ if (this.$refs[el.index] && this.$refs[el.index][0]) {
467
+ this.$refs[el.index][0].setShowBtn(value);
468
+ }
469
+ });
470
+ }
471
+ },
472
+ setBtnReadOnly(value) {
473
+ this.btnReadOnly = value;
474
+ if (this.myConfig.modeType === 'pop') {
475
+ this.data.forEach(el => {
476
+ if (this.$refs[el.index + '_static'] && this.$refs[el.index + '_static'][0]) {
477
+ this.$refs[el.index + '_static'][0].setBtnReadOnly(value);
478
+ }
479
+ });
480
+ }
481
+ }
482
+
483
+ },
484
+ mounted () {
485
+ }
486
+ };
487
+ </script>
@@ -0,0 +1,29 @@
1
+ <template>
2
+ <div>
3
+ <Form ref="form" :model="form" :rules="formRules" :label-position="myConfig.labelPosition" :label-width="myConfig.labelWidth" :inline="myConfig.inline" :id="myConfig.name" @submit.enter.prevent>
4
+ <Row type="flex" justify="start">
5
+ <template v-for="(item,index) in items" :key="'form'+index">
6
+ <Col v-if="item.status" :span="initFormItemCol(index)" v-show="item.visible !== false" >
7
+ <FormItem v-if="item.type !== 'Divider' && item.status && item.visible !== false" :label="item.label" :prop="item.name||item.sname" :style="getFormItemStyle(item)" :show-message="false">
8
+ <ControlBox :ref="item.name||item.sname" :valueData="form" :config="item" @inputValue="input" @doAction="doAction" ></ControlBox>
9
+ </FormItem>
10
+ <ControlBox v-if="item.type === 'Divider'" :ref="item.dividerName" :config="item"></ControlBox>
11
+ </Col>
12
+ </template>
13
+ </Row>
14
+ </Form>
15
+ </div>
16
+ </template>
17
+ <script>
18
+ import Base from './baseform.vue';
19
+ export default {
20
+ name: 'FormBox',
21
+ extends: Base,
22
+ created () {
23
+ this.init();
24
+ },
25
+ methods:{
26
+
27
+ }
28
+ };
29
+ </script>