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,446 +1,446 @@
1
- <template>
2
- <div v-show="btnShow">
3
- <template v-if="tooltype === 'form'">
4
- <div v-if="visible">
5
- <Row v-if="'horizontal' === type" type="flex" justify="start" :gutter="myConfig.spacing">
6
- <Col v-for="(btn,index) in btnList" :key="'btn_' + index" v-show="btn.visible" >
7
- <Ebutton v-if="btntype === 'Ebutton'" :ref="btn.name" :config="btn" @click="click" :amplify="amplify" :fontplacement="fontplacement" :dynamic="myConfig.btnDynamic"></Ebutton>
8
- <Button v-if="btntype === 'Button'" :ref="btn.name" @click="action(btn.name)" :icon="btn.iconcls" :type="btn.type" :size="buttonSize" :disabled="btn.disabled">{{btn.text}}</Button>
9
- </Col>
10
- </Row>
11
- <template v-if="'vertical' === type">
12
- <Row v-for="(btn,index) in btnList" type="flex" :justify="vjustify" :key="'btn_' + index" style="margin-top: 5px;">
13
- <Ebutton v-if="btntype === 'Ebutton'" :ref="btn.name" :config="btn" @click="click" :amplify="amplify" :fontplacement="fontplacement" :dynamic="myConfig.btnDynamic"> </Ebutton>
14
- <Button v-if="btntype === 'Button'" v-show="btn.visible" :ref="btn.name" @click="action(btn.name)" :icon="btn.iconcls" :type="btn.type" :size="buttonSize">{{btn.text}}</Button>
15
- </Row>
16
- </template>
17
- </div>
18
- </template>
19
- <template v-if="tooltype === 'row'">
20
- <div v-if="visible">
21
- <Row v-if="showType" type="flex" justify="center" :gutter="8">
22
- <Col v-for="(item,index) in btnList" :key="'btn_' + index" v-show="item.visible">
23
- <Button v-if="myConfig.icon === true" size="small" :type="getType(item)" :icon="item.icon" :custom-icon="item.customIcon" @click="action(item.name)"></Button>
24
- <Button v-else size="small" :type="getType(item)" @click="action(item.name)" >{{item.text}}</Button>
25
- </Col>
26
- </Row>
27
- <Dropdown v-if="!showType" @on-click="action">
28
- <a href="javascript:void(0)">
29
- 操作
30
- <CommonIcon type="ios-arrow-down"></CommonIcon>
31
- </a>
32
- <template #list>
33
- <DropdownMenu>
34
- <DropdownItem v-for="(item,index) in btnList" :key="'btndropdown_' + index" v-show="item.visible" :name="item.name">{{item.text}}</DropdownItem>
35
- </DropdownMenu>
36
- </template>
37
- </Dropdown>
38
- </div>
39
- </template>
40
- <template v-if="tooltype === 'batch'">
41
- <Row v-if="visible" type="flex" justify="end" :gutter="8">
42
- <Col v-if="showAddData">
43
- <Button icon="ios-add" @click="action('addData')" >新建</Button>
44
- </Col>
45
- <Col>
46
- <Dropdown v-if="showBatchAction" @on-click="action">
47
- <Button>
48
- 批量操作
49
- <CommonIcon type="ios-arrow-down"></CommonIcon>
50
- </Button>
51
- <template #list>
52
- <DropdownMenu>
53
- <DropdownItem v-for="(item,index) in btnList" :key="'dropbtn_' + index" v-show="item.visible" :name="item.name">{{item.text}}</DropdownItem>
54
- </DropdownMenu>
55
- </template>
56
- </Dropdown>
57
- </Col>
58
- </Row>
59
- </template>
60
- </div>
61
- </template>
62
- <script>
63
- import { oneOf } from '../../utils/assist';
64
- import Ebutton from './ebutton.vue';
65
- export default {
66
- name: 'Toolbar',
67
- data () {
68
- return {
69
- globalConfig:{
70
- moduleMethod:[],
71
- },
72
- btnList: [],
73
- myConfig:{
74
- spacing:16
75
- },
76
- modulecode:'' ,
77
- token:'',
78
- buttonSize:'default',
79
- btnShow:true,
80
- showType:true,
81
- visible:true,
82
- showAddData:false,
83
- showBatchAction:false,
84
- vjustify:'center',
85
- defaultStatus:{ // 按钮同斥规则 N:新增后, V:查看, E:编辑后, S:保存后, A:审核后, C:取消后, D:删除后(默认)
86
- 'N' : ['saveData'],
87
- 'V' : [ 'addData', 'editData', 'auditData', 'delData'],
88
- 'E' : [ 'addData', 'saveData', 'delData'],
89
- 'S' : [ 'addData', 'editData', 'auditData', 'delData','printData' ],
90
- 'A' : [ 'addData', 'copyData', 'cancelData'],
91
- 'C' : [ 'addData', 'printData'],
92
- 'D' : [ 'addData']
93
- },
94
- defaultRule: {
95
- // 按钮可用规则 Y:已审核, N:录入, C:已取消
96
- billstatus: {
97
- Y: [ 'addData', 'cancelData', 'printData' ],
98
- N: [ 'addData', 'editData', 'auditData', 'delData', 'printData' ],
99
- C: [ 'addData', 'printData' ]
100
- }
101
- },
102
- };
103
- },
104
- props: {
105
- type: {
106
- validator (value) {
107
- return oneOf(value, ['horizontal', 'vertical']);
108
- },
109
- default: 'vertical'
110
- },
111
- config: {
112
- type: Object,
113
- default: () => {
114
- return {};
115
- }
116
- },
117
-
118
- amplify: {
119
- type: Boolean,
120
- default:true
121
- },
122
- fontplacement: {
123
- validator (value) {
124
- return oneOf(value, ['bottom', 'right']);
125
- },
126
- default: 'right'
127
- },
128
- showback: {
129
- type: Boolean,
130
- default: false
131
- },
132
- tooltype: {
133
- type: String,
134
- default:'form'
135
- },
136
- btntype: {
137
- validator (value) {
138
- return oneOf(value, ['Button', 'Ebutton']);
139
- },
140
- default: 'Ebutton'
141
- },
142
- moduleMethod:{
143
- type:Array,
144
- default: () => {
145
- return [];
146
- }
147
- },
148
- billmoduleid:{
149
- type: String,
150
- default:''
151
- },
152
- checkBtn:{
153
- type:Boolean,
154
- default:false
155
- },
156
- row:{
157
- type: Object,
158
- default: () => {
159
- return {};
160
- }
161
- }
162
-
163
- },
164
- created () {
165
- this.init();
166
- },
167
- components: {
168
- Ebutton
169
- },
170
- methods: {
171
- init() {
172
- if (this.config) {
173
- this.myConfig = Object.assign({}, this.myConfig, this.config);
174
- }
175
- if (!this.myConfig.items) {
176
- this.myConfig.items = [];
177
- }
178
- if (this.myConfig.buttonSize) {
179
- this.buttonSize = this.myConfig.buttonSize;
180
- }
181
- if (this.moduleMethod.length > 0) {
182
- this.globalConfig.moduleMethod = this.$Method.copy(this.moduleMethod);
183
- }
184
- this.filterBtn();
185
- if (this.btnList.length > 0) {
186
- this.visible = true;
187
- } else {
188
- if (this.tooltype === 'batch') {
189
- this.visible = this.showAddData;
190
- } else {
191
- this.visible = false;
192
- }
193
- }
194
- this.btnList.forEach(el => {
195
- if (el.visible === undefined) {
196
- el.visible = true;
197
- }
198
- });
199
-
200
- },
201
- filterBtn() {
202
- if (this.checkBtn) {
203
- this.getModuleMethod();
204
- }
205
- this.filterBtnByToken();
206
- },
207
- getModuleMethod() {
208
- this.modulecode = this.$Method.getUrlParam('modulecode');
209
- if (!this.modulecode) {
210
- this.modulecode = this.$Method.getUrlParam('billmoduleid');
211
- }
212
- if (this.billmoduleid) {
213
- this.modulecode = this.billmoduleid;
214
- }
215
- this.token = this.$Method.getUrlParam('token');
216
- if (this.modulecode && this.token) {
217
- let btnList = this.getUserModuleMethod(this.modulecode);
218
- if (btnList) {
219
- this.globalConfig.moduleMethod = btnList.modulemethod;
220
- }
221
- }
222
- },
223
- filterBtnByToken() {
224
- let items = this.commonFilterBtn();
225
- let formItems = [];
226
- let rowItems = [];
227
- let batchItems = [];
228
- items.forEach(el => {
229
- if (el.name === 'addData') {
230
- this.showAddData = true;
231
- }
232
- if (el.iconcls === 'batch') {
233
- batchItems.push(el);
234
- } else if (el.iconcls === 'row') {
235
- rowItems.push(el);
236
- } else {
237
- formItems.push(el);
238
- }
239
- });
240
-
241
- if (batchItems.length > 0) {
242
- this.showBatchAction = true;
243
- }
244
-
245
- if (this.tooltype === 'batch') {
246
- this.btnList = this.$Method.copy(batchItems);
247
- } else if (this.tooltype === 'row') {
248
- this.btnList = this.$Method.copy(rowItems);
249
- } else {
250
- if (this.fontplacement === 'right') {
251
- this.vjustify = 'start';
252
- }
253
- this.btnList = this.$Method.copy(formItems);
254
- if (this.isBillImport()) {
255
- let importconfig = {};
256
- if (this.myConfig.importbtn && JSON.stringify(this.myConfig.importbtn) !== '{}') {
257
- importconfig = Object.assign({},{iconcls:'_download',name:'downTemplate',text:'导入模版'},this.myConfig.backbtn) ;
258
- importconfig.name = 'downTemplate';
259
- } else {
260
- importconfig = {
261
- iconcls:'_download',
262
- name:'downTemplate',
263
- text:'导入模版'
264
- };
265
- }
266
- importconfig.visible = true;
267
- this.btnList.push(importconfig);
268
- }
269
-
270
- if (this.showback) {
271
- let back = {};
272
- if (this.myConfig.backbtn && JSON.stringify(this.myConfig.backbtn) !== '{}') {
273
- back = Object.assign({},{iconcls:'_back',name:'back',text:'返回'},this.myConfig.backbtn) ;
274
- back.name = 'back';
275
- } else {
276
- back = {
277
- iconcls:'_back',
278
- name:'back',
279
- text:'返回'
280
- };
281
- }
282
- back.visible = true;
283
- this.btnList.push(back);
284
- }
285
- this.initStatus();
286
- }
287
- },
288
- commonFilterBtn() {
289
- let tokenlength = this.globalConfig.moduleMethod.length;
290
- if (tokenlength <= 0) {
291
- return this.myConfig.items;
292
- }
293
- let items = [];
294
- this.globalConfig.moduleMethod.forEach(el => {
295
- let index = this.myConfig.items.findIndex(el2 => el2.name === el.name);
296
- if (index > -1) {
297
- items.push(this.$Method.copy(this.myConfig.items[index]));
298
- }
299
- });
300
- let index2 = this.myConfig.items.findIndex(el => el.name === 'editRowForm');
301
- if (index2 > -1) {
302
- items.push(this.$Method.copy(this.myConfig.items[index2]));
303
- }
304
- return items;
305
- },
306
- initStatus() {
307
- if (this.myConfig.status) {
308
- Object.keys(this.defaultStatus).forEach(temp => {
309
- if (this.myConfig.status[temp] === undefined) {
310
- this.myConfig.status[temp] = [];
311
- }
312
- let array = this.myConfig.status[temp].concat(this.defaultStatus[temp]);
313
- this.myConfig.status[temp] = this.uniqueArr(array);
314
- });
315
- } else {
316
- this.myConfig.status = this.$Method.copy(this.defaultStatus);
317
- }
318
- if (this.myConfig.rule) {
319
- Object.keys(this.defaultRule).forEach(temp2 => {
320
- if (this.myConfig.rule[temp2]) {
321
- Object.keys(this.defaultRule[temp2]).forEach(temp3 => {
322
- if (this.defaultStatus[temp2]) {
323
- if (this.myConfig.rule[temp2][temp3] === undefined) {
324
- this.myConfig.rule[temp2][temp3] = [];
325
- }
326
- if (this.defaultStatus[temp2][temp3] === undefined) {
327
- this.defaultStatus[temp2][temp3] = [];
328
- }
329
- } else {
330
- this.defaultStatus[temp2] ={};
331
- this.defaultStatus[temp2][temp3] = [];
332
- if (this.myConfig.rule[temp2][temp3] === undefined) {
333
- this.myConfig.rule[temp2][temp3] = [];
334
- }
335
- }
336
- let rule = this.myConfig.rule[temp2][temp3].concat(this.defaultStatus[temp2][temp3]);
337
- this.myConfig.rule[temp2][temp3] = this.uniqueArr(rule);
338
- });
339
- }
340
- });
341
- } else {
342
- this.myConfig.rule = this.$Method.copy(this.defaultRule);
343
- }
344
- },
345
- click(name) {
346
- let para = {};
347
- para.name = name;
348
- this.$emit('doAction', para);
349
- },
350
- changedStatusCommon(para) {
351
- this.btnList.forEach(el => {
352
- this.setReadOnly(el.name,true);
353
- });
354
- if (!para) {
355
- para = [];
356
- }
357
- para = para.concat(['back','downTemplate','editRowForm']);
358
- para.forEach(name =>{
359
- this.setReadOnly(name,false);
360
- });
361
- },
362
- changedStatus(flag) {
363
- if (flag) {
364
- let para = this.myConfig.status[flag];
365
- this.changedStatusCommon(para);
366
- }
367
- },
368
- isBillImport(){
369
- return this.btnList.some(item => item.name === 'billImport');
370
- },
371
-
372
- gridChangedStatus(name, code) {
373
- if (this.myConfig && this.myConfig.rule && this.myConfig.rule[name]) {
374
- let para = this.myConfig.rule[name][code];
375
- this.changedStatusCommon(para);
376
- }
377
- },
378
- uniqueArr(array) {
379
- let r = [];
380
- const lenght = array.length ;
381
- for (let i = 0, l = lenght; i < l; i++) {
382
- for (let j = i + 1; j < l; j++)
383
- if (array[i] === array[j]) j = ++i;
384
- r.push(array[i]);
385
- }
386
- return r;
387
- },
388
- action(name) {
389
- let para = {};
390
- para.name = name;
391
- this.$emit('doAction', para);
392
- },
393
- getType(item) {
394
- if (item.type) {
395
- return item.type;
396
- } else {
397
- return 'text';
398
- }
399
- },
400
- setVisible(name,value,tempBtntype) {
401
- let btntype = this.btntype;
402
- if (tempBtntype) {
403
- btntype = tempBtntype;
404
- }
405
- if (btntype === 'Ebutton') {
406
- if (this.$refs[name] && this.$refs[name][0]) {
407
- this.$refs[name][0].setVisible(value);
408
- }
409
- } else {
410
- const index = this.btnList.findIndex(item => item.name === name);
411
- if (index > -1) {
412
- let newConfig = this.$Method.copy(this.btnList[index]);
413
- newConfig.visible = value;
414
- this.btnList.splice(index,1,newConfig);
415
- }
416
- }
417
- },
418
- setReadOnly(name, value,tempBtntype) {
419
- let btntype = this.btntype;
420
- if (tempBtntype) {
421
- btntype = tempBtntype;
422
- }
423
- if (btntype === 'Ebutton') {
424
- if (this.$refs[name] && this.$refs[name][0]) {
425
- this.$refs[name][0].setEnabled(value);
426
- }
427
- } else {
428
- const index = this.btnList.findIndex(item => item.name === name);
429
- if (index > -1) {
430
- let newConfig = this.$Method.copy(this.btnList[index]);
431
- newConfig.disabled = value;
432
- this.btnList.splice(index,1,newConfig);
433
- }
434
- }
435
- }
436
-
437
- },
438
- mounted () {
439
- //this.changedStatus('V');
440
- let self = this;
441
- if (self.config.customInit) {
442
- self.config.customInit(self.row,self);
443
- }
444
- }
445
- };
1
+ <template>
2
+ <div v-show="btnShow">
3
+ <template v-if="tooltype === 'form'">
4
+ <div v-if="visible">
5
+ <Row v-if="'horizontal' === type" type="flex" justify="start" :gutter="myConfig.spacing">
6
+ <Col v-for="(btn,index) in btnList" :key="'btn_' + index" v-show="btn.visible" >
7
+ <Ebutton v-if="btntype === 'Ebutton'" :ref="btn.name" :config="btn" @click="click" :amplify="amplify" :fontplacement="fontplacement" :dynamic="myConfig.btnDynamic"></Ebutton>
8
+ <Button v-if="btntype === 'Button'" :ref="btn.name" @click="action(btn.name)" :icon="btn.iconcls" :type="btn.type" :size="buttonSize" :disabled="btn.disabled">{{btn.text}}</Button>
9
+ </Col>
10
+ </Row>
11
+ <template v-if="'vertical' === type">
12
+ <Row v-for="(btn,index) in btnList" type="flex" :justify="vjustify" :key="'btn_' + index" style="margin-top: 5px;">
13
+ <Ebutton v-if="btntype === 'Ebutton'" :ref="btn.name" :config="btn" @click="click" :amplify="amplify" :fontplacement="fontplacement" :dynamic="myConfig.btnDynamic"> </Ebutton>
14
+ <Button v-if="btntype === 'Button'" v-show="btn.visible" :ref="btn.name" @click="action(btn.name)" :icon="btn.iconcls" :type="btn.type" :size="buttonSize">{{btn.text}}</Button>
15
+ </Row>
16
+ </template>
17
+ </div>
18
+ </template>
19
+ <template v-if="tooltype === 'row'">
20
+ <div v-if="visible">
21
+ <Row v-if="showType" type="flex" justify="center" :gutter="8">
22
+ <Col v-for="(item,index) in btnList" :key="'btn_' + index" v-show="item.visible">
23
+ <Button v-if="myConfig.icon === true" size="small" :type="getType(item)" :icon="item.icon" :custom-icon="item.customIcon" @click="action(item.name)"></Button>
24
+ <Button v-else size="small" :type="getType(item)" @click="action(item.name)" >{{item.text}}</Button>
25
+ </Col>
26
+ </Row>
27
+ <Dropdown v-if="!showType" @on-click="action">
28
+ <a href="javascript:void(0)">
29
+ 操作
30
+ <CommonIcon type="ios-arrow-down"></CommonIcon>
31
+ </a>
32
+ <template #list>
33
+ <DropdownMenu>
34
+ <DropdownItem v-for="(item,index) in btnList" :key="'btndropdown_' + index" v-show="item.visible" :name="item.name">{{item.text}}</DropdownItem>
35
+ </DropdownMenu>
36
+ </template>
37
+ </Dropdown>
38
+ </div>
39
+ </template>
40
+ <template v-if="tooltype === 'batch'">
41
+ <Row v-if="visible" type="flex" justify="end" :gutter="8">
42
+ <Col v-if="showAddData">
43
+ <Button icon="ios-add" @click="action('addData')" >新建</Button>
44
+ </Col>
45
+ <Col>
46
+ <Dropdown v-if="showBatchAction" @on-click="action">
47
+ <Button>
48
+ 批量操作
49
+ <CommonIcon type="ios-arrow-down"></CommonIcon>
50
+ </Button>
51
+ <template #list>
52
+ <DropdownMenu>
53
+ <DropdownItem v-for="(item,index) in btnList" :key="'dropbtn_' + index" v-show="item.visible" :name="item.name">{{item.text}}</DropdownItem>
54
+ </DropdownMenu>
55
+ </template>
56
+ </Dropdown>
57
+ </Col>
58
+ </Row>
59
+ </template>
60
+ </div>
61
+ </template>
62
+ <script>
63
+ import { oneOf } from '../../utils/assist';
64
+ import Ebutton from './ebutton.vue';
65
+ export default {
66
+ name: 'Toolbar',
67
+ data () {
68
+ return {
69
+ globalConfig:{
70
+ moduleMethod:[],
71
+ },
72
+ btnList: [],
73
+ myConfig:{
74
+ spacing:16
75
+ },
76
+ modulecode:'' ,
77
+ token:'',
78
+ buttonSize:'default',
79
+ btnShow:true,
80
+ showType:true,
81
+ visible:true,
82
+ showAddData:false,
83
+ showBatchAction:false,
84
+ vjustify:'center',
85
+ defaultStatus:{ // 按钮同斥规则 N:新增后, V:查看, E:编辑后, S:保存后, A:审核后, C:取消后, D:删除后(默认)
86
+ 'N' : ['saveData'],
87
+ 'V' : [ 'addData', 'editData', 'auditData', 'delData'],
88
+ 'E' : [ 'addData', 'saveData', 'delData'],
89
+ 'S' : [ 'addData', 'editData', 'auditData', 'delData','printData' ],
90
+ 'A' : [ 'addData', 'copyData', 'cancelData'],
91
+ 'C' : [ 'addData', 'printData'],
92
+ 'D' : [ 'addData']
93
+ },
94
+ defaultRule: {
95
+ // 按钮可用规则 Y:已审核, N:录入, C:已取消
96
+ billstatus: {
97
+ Y: [ 'addData', 'cancelData', 'printData' ],
98
+ N: [ 'addData', 'editData', 'auditData', 'delData', 'printData' ],
99
+ C: [ 'addData', 'printData' ]
100
+ }
101
+ },
102
+ };
103
+ },
104
+ props: {
105
+ type: {
106
+ validator (value) {
107
+ return oneOf(value, ['horizontal', 'vertical']);
108
+ },
109
+ default: 'vertical'
110
+ },
111
+ config: {
112
+ type: Object,
113
+ default: () => {
114
+ return {};
115
+ }
116
+ },
117
+
118
+ amplify: {
119
+ type: Boolean,
120
+ default:true
121
+ },
122
+ fontplacement: {
123
+ validator (value) {
124
+ return oneOf(value, ['bottom', 'right']);
125
+ },
126
+ default: 'right'
127
+ },
128
+ showback: {
129
+ type: Boolean,
130
+ default: false
131
+ },
132
+ tooltype: {
133
+ type: String,
134
+ default:'form'
135
+ },
136
+ btntype: {
137
+ validator (value) {
138
+ return oneOf(value, ['Button', 'Ebutton']);
139
+ },
140
+ default: 'Ebutton'
141
+ },
142
+ moduleMethod:{
143
+ type:Array,
144
+ default: () => {
145
+ return [];
146
+ }
147
+ },
148
+ billmoduleid:{
149
+ type: String,
150
+ default:''
151
+ },
152
+ checkBtn:{
153
+ type:Boolean,
154
+ default:false
155
+ },
156
+ row:{
157
+ type: Object,
158
+ default: () => {
159
+ return {};
160
+ }
161
+ }
162
+
163
+ },
164
+ created () {
165
+ this.init();
166
+ },
167
+ components: {
168
+ Ebutton
169
+ },
170
+ methods: {
171
+ init() {
172
+ if (this.config) {
173
+ this.myConfig = Object.assign({}, this.myConfig, this.config);
174
+ }
175
+ if (!this.myConfig.items) {
176
+ this.myConfig.items = [];
177
+ }
178
+ if (this.myConfig.buttonSize) {
179
+ this.buttonSize = this.myConfig.buttonSize;
180
+ }
181
+ if (this.moduleMethod.length > 0) {
182
+ this.globalConfig.moduleMethod = this.$Method.copy(this.moduleMethod);
183
+ }
184
+ this.filterBtn();
185
+ if (this.btnList.length > 0) {
186
+ this.visible = true;
187
+ } else {
188
+ if (this.tooltype === 'batch') {
189
+ this.visible = this.showAddData;
190
+ } else {
191
+ this.visible = false;
192
+ }
193
+ }
194
+ this.btnList.forEach(el => {
195
+ if (el.visible === undefined) {
196
+ el.visible = true;
197
+ }
198
+ });
199
+
200
+ },
201
+ filterBtn() {
202
+ if (this.checkBtn) {
203
+ this.getModuleMethod();
204
+ }
205
+ this.filterBtnByToken();
206
+ },
207
+ getModuleMethod() {
208
+ this.modulecode = this.$Method.getUrlParam('modulecode');
209
+ if (!this.modulecode) {
210
+ this.modulecode = this.$Method.getUrlParam('billmoduleid');
211
+ }
212
+ if (this.billmoduleid) {
213
+ this.modulecode = this.billmoduleid;
214
+ }
215
+ this.token = this.$Method.getUrlParam('token');
216
+ if (this.modulecode && this.token) {
217
+ let btnList = this.getUserModuleMethod(this.modulecode);
218
+ if (btnList) {
219
+ this.globalConfig.moduleMethod = btnList.modulemethod;
220
+ }
221
+ }
222
+ },
223
+ filterBtnByToken() {
224
+ let items = this.commonFilterBtn();
225
+ let formItems = [];
226
+ let rowItems = [];
227
+ let batchItems = [];
228
+ items.forEach(el => {
229
+ if (el.name === 'addData') {
230
+ this.showAddData = true;
231
+ }
232
+ if (el.iconcls === 'batch') {
233
+ batchItems.push(el);
234
+ } else if (el.iconcls === 'row') {
235
+ rowItems.push(el);
236
+ } else {
237
+ formItems.push(el);
238
+ }
239
+ });
240
+
241
+ if (batchItems.length > 0) {
242
+ this.showBatchAction = true;
243
+ }
244
+
245
+ if (this.tooltype === 'batch') {
246
+ this.btnList = this.$Method.copy(batchItems);
247
+ } else if (this.tooltype === 'row') {
248
+ this.btnList = this.$Method.copy(rowItems);
249
+ } else {
250
+ if (this.fontplacement === 'right') {
251
+ this.vjustify = 'start';
252
+ }
253
+ this.btnList = this.$Method.copy(formItems);
254
+ if (this.isBillImport()) {
255
+ let importconfig = {};
256
+ if (this.myConfig.importbtn && JSON.stringify(this.myConfig.importbtn) !== '{}') {
257
+ importconfig = Object.assign({},{iconcls:'_download',name:'downTemplate',text:'导入模版'},this.myConfig.backbtn) ;
258
+ importconfig.name = 'downTemplate';
259
+ } else {
260
+ importconfig = {
261
+ iconcls:'_download',
262
+ name:'downTemplate',
263
+ text:'导入模版'
264
+ };
265
+ }
266
+ importconfig.visible = true;
267
+ this.btnList.push(importconfig);
268
+ }
269
+
270
+ if (this.showback) {
271
+ let back = {};
272
+ if (this.myConfig.backbtn && JSON.stringify(this.myConfig.backbtn) !== '{}') {
273
+ back = Object.assign({},{iconcls:'_back',name:'back',text:'返回'},this.myConfig.backbtn) ;
274
+ back.name = 'back';
275
+ } else {
276
+ back = {
277
+ iconcls:'_back',
278
+ name:'back',
279
+ text:'返回'
280
+ };
281
+ }
282
+ back.visible = true;
283
+ this.btnList.push(back);
284
+ }
285
+ this.initStatus();
286
+ }
287
+ },
288
+ commonFilterBtn() {
289
+ let tokenlength = this.globalConfig.moduleMethod.length;
290
+ if (tokenlength <= 0) {
291
+ return this.myConfig.items;
292
+ }
293
+ let items = [];
294
+ this.globalConfig.moduleMethod.forEach(el => {
295
+ let index = this.myConfig.items.findIndex(el2 => el2.name === el.name);
296
+ if (index > -1) {
297
+ items.push(this.$Method.copy(this.myConfig.items[index]));
298
+ }
299
+ });
300
+ let index2 = this.myConfig.items.findIndex(el => el.name === 'editRowForm');
301
+ if (index2 > -1) {
302
+ items.push(this.$Method.copy(this.myConfig.items[index2]));
303
+ }
304
+ return items;
305
+ },
306
+ initStatus() {
307
+ if (this.myConfig.status) {
308
+ Object.keys(this.defaultStatus).forEach(temp => {
309
+ if (this.myConfig.status[temp] === undefined) {
310
+ this.myConfig.status[temp] = [];
311
+ }
312
+ let array = this.myConfig.status[temp].concat(this.defaultStatus[temp]);
313
+ this.myConfig.status[temp] = this.uniqueArr(array);
314
+ });
315
+ } else {
316
+ this.myConfig.status = this.$Method.copy(this.defaultStatus);
317
+ }
318
+ if (this.myConfig.rule) {
319
+ Object.keys(this.defaultRule).forEach(temp2 => {
320
+ if (this.myConfig.rule[temp2]) {
321
+ Object.keys(this.defaultRule[temp2]).forEach(temp3 => {
322
+ if (this.defaultStatus[temp2]) {
323
+ if (this.myConfig.rule[temp2][temp3] === undefined) {
324
+ this.myConfig.rule[temp2][temp3] = [];
325
+ }
326
+ if (this.defaultStatus[temp2][temp3] === undefined) {
327
+ this.defaultStatus[temp2][temp3] = [];
328
+ }
329
+ } else {
330
+ this.defaultStatus[temp2] ={};
331
+ this.defaultStatus[temp2][temp3] = [];
332
+ if (this.myConfig.rule[temp2][temp3] === undefined) {
333
+ this.myConfig.rule[temp2][temp3] = [];
334
+ }
335
+ }
336
+ let rule = this.myConfig.rule[temp2][temp3].concat(this.defaultStatus[temp2][temp3]);
337
+ this.myConfig.rule[temp2][temp3] = this.uniqueArr(rule);
338
+ });
339
+ }
340
+ });
341
+ } else {
342
+ this.myConfig.rule = this.$Method.copy(this.defaultRule);
343
+ }
344
+ },
345
+ click(name) {
346
+ let para = {};
347
+ para.name = name;
348
+ this.$emit('doAction', para);
349
+ },
350
+ changedStatusCommon(para) {
351
+ this.btnList.forEach(el => {
352
+ this.setReadOnly(el.name,true);
353
+ });
354
+ if (!para) {
355
+ para = [];
356
+ }
357
+ para = para.concat(['back','downTemplate','editRowForm']);
358
+ para.forEach(name =>{
359
+ this.setReadOnly(name,false);
360
+ });
361
+ },
362
+ changedStatus(flag) {
363
+ if (flag) {
364
+ let para = this.myConfig.status[flag];
365
+ this.changedStatusCommon(para);
366
+ }
367
+ },
368
+ isBillImport(){
369
+ return this.btnList.some(item => item.name === 'billImport');
370
+ },
371
+
372
+ gridChangedStatus(name, code) {
373
+ if (this.myConfig && this.myConfig.rule && this.myConfig.rule[name]) {
374
+ let para = this.myConfig.rule[name][code];
375
+ this.changedStatusCommon(para);
376
+ }
377
+ },
378
+ uniqueArr(array) {
379
+ let r = [];
380
+ const lenght = array.length ;
381
+ for (let i = 0, l = lenght; i < l; i++) {
382
+ for (let j = i + 1; j < l; j++)
383
+ if (array[i] === array[j]) j = ++i;
384
+ r.push(array[i]);
385
+ }
386
+ return r;
387
+ },
388
+ action(name) {
389
+ let para = {};
390
+ para.name = name;
391
+ this.$emit('doAction', para);
392
+ },
393
+ getType(item) {
394
+ if (item.type) {
395
+ return item.type;
396
+ } else {
397
+ return 'text';
398
+ }
399
+ },
400
+ setVisible(name,value,tempBtntype) {
401
+ let btntype = this.btntype;
402
+ if (tempBtntype) {
403
+ btntype = tempBtntype;
404
+ }
405
+ if (btntype === 'Ebutton') {
406
+ if (this.$refs[name] && this.$refs[name][0]) {
407
+ this.$refs[name][0].setVisible(value);
408
+ }
409
+ } else {
410
+ const index = this.btnList.findIndex(item => item.name === name);
411
+ if (index > -1) {
412
+ let newConfig = this.$Method.copy(this.btnList[index]);
413
+ newConfig.visible = value;
414
+ this.btnList.splice(index,1,newConfig);
415
+ }
416
+ }
417
+ },
418
+ setReadOnly(name, value,tempBtntype) {
419
+ let btntype = this.btntype;
420
+ if (tempBtntype) {
421
+ btntype = tempBtntype;
422
+ }
423
+ if (btntype === 'Ebutton') {
424
+ if (this.$refs[name] && this.$refs[name][0]) {
425
+ this.$refs[name][0].setEnabled(value);
426
+ }
427
+ } else {
428
+ const index = this.btnList.findIndex(item => item.name === name);
429
+ if (index > -1) {
430
+ let newConfig = this.$Method.copy(this.btnList[index]);
431
+ newConfig.disabled = value;
432
+ this.btnList.splice(index,1,newConfig);
433
+ }
434
+ }
435
+ }
436
+
437
+ },
438
+ mounted () {
439
+ //this.changedStatus('V');
440
+ let self = this;
441
+ if (self.config.customInit) {
442
+ self.config.customInit(self.row,self);
443
+ }
444
+ }
445
+ };
446
446
  </script>