ocpview-plus 1.3.15 → 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,487 +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>
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>