@ibiz-template/vue3-components 0.0.1-alpha.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 (306) hide show
  1. package/es/common/app-icon/app-icon.d.ts +19 -0
  2. package/es/common/app-icon/app-icon.js +71 -0
  3. package/es/common/app-keep-alive/app-keep-alive.d.ts +47 -0
  4. package/es/common/app-keep-alive/app-keep-alive.js +297 -0
  5. package/es/common/app-keep-alive/scheduler.d.ts +39 -0
  6. package/es/common/app-keep-alive/scheduler.js +171 -0
  7. package/es/common/app-router-view/app-router-view.d.ts +30 -0
  8. package/es/common/app-router-view/app-router-view.js +73 -0
  9. package/es/common/app-user/app-user.d.ts +8 -0
  10. package/es/common/app-user/app-user.js +60 -0
  11. package/es/common/grid-pagination/grid-pagination.d.ts +41 -0
  12. package/es/common/grid-pagination/grid-pagination.js +84 -0
  13. package/es/common/grid-pagination/index.d.ts +40 -0
  14. package/es/common/grid-pagination/index.js +9 -0
  15. package/es/common/index.d.ts +8 -0
  16. package/es/common/index.js +8 -0
  17. package/es/common/quick-search/quick-search.d.ts +30 -0
  18. package/es/common/quick-search/quick-search.js +63 -0
  19. package/es/common/tab-page-exp/tab-page-exp.d.ts +69 -0
  20. package/es/common/tab-page-exp/tab-page-exp.js +117 -0
  21. package/es/control/app-menu/app-menu-provider.d.ts +13 -0
  22. package/es/control/app-menu/app-menu-provider.js +14 -0
  23. package/es/control/app-menu/app-menu.d.ts +54 -0
  24. package/es/control/app-menu/app-menu.js +178 -0
  25. package/es/control/app-menu/index.d.ts +53 -0
  26. package/es/control/app-menu/index.js +12 -0
  27. package/es/control/grid-control/grid-control.d.ts +158 -0
  28. package/es/control/grid-control/grid-control.util.d.ts +38 -0
  29. package/es/control/grid-control/grid-control.util.js +84 -0
  30. package/es/control/grid-control/grid-field-column/grid-field-column.d.ts +26 -0
  31. package/es/control/grid-control/grid-field-column-provider.d.ts +15 -0
  32. package/es/control/grid-control/grid-field-column-provider.js +20 -0
  33. package/es/control/grid-control/grid-provider.d.ts +13 -0
  34. package/es/control/grid-control/grid-provider.js +14 -0
  35. package/es/control/grid-control/index.d.ts +114 -0
  36. package/es/control/grid-control/index.js +23 -0
  37. package/es/control/index.d.ts +3 -0
  38. package/es/control/index.js +3 -0
  39. package/es/control/toolbar-control/index.d.ts +43 -0
  40. package/es/control/toolbar-control/index.js +12 -0
  41. package/es/control/toolbar-control/toolbar-control.d.ts +44 -0
  42. package/es/control/toolbar-control/toolbar-provider.d.ts +13 -0
  43. package/es/control/toolbar-control/toolbar-provider.js +14 -0
  44. package/es/index.d.ts +4 -0
  45. package/es/index.js +4 -0
  46. package/es/layout/app-layout/app-layout.d.ts +32 -0
  47. package/es/layout/control-base/control-base.d.ts +17 -0
  48. package/es/layout/control-base/control-base.js +42 -0
  49. package/es/layout/control-layout/control-layout.d.ts +19 -0
  50. package/es/layout/control-shell/control-shell.d.ts +18 -0
  51. package/es/layout/index.d.ts +10 -0
  52. package/es/layout/index.js +20 -0
  53. package/es/layout/md-view-base/md-view-base.d.ts +12 -0
  54. package/es/layout/md-view-base/md-view-base.js +35 -0
  55. package/es/layout/router-shell/router-shell.d.ts +27 -0
  56. package/es/layout/router-shell/router-shell.js +96 -0
  57. package/es/layout/view-base/view-base.d.ts +18 -0
  58. package/es/layout/view-layout/view-layout.d.ts +44 -0
  59. package/es/layout/view-shell/view-shell.d.ts +42 -0
  60. package/es/shims-vue.d.ts +5 -0
  61. package/es/util/install.d.ts +3 -0
  62. package/es/util/install.js +9 -0
  63. package/es/views/edit-view/index.d.ts +3 -0
  64. package/es/views/edit-view/index.js +9 -0
  65. package/es/views/edit-view/src/edit-view.css +6 -0
  66. package/es/views/edit-view/src/edit-view.d.ts +3 -0
  67. package/es/views/edit-view/src/edit-view.js +15 -0
  68. package/es/views/grid-view/grid-view-engine.d.ts +8 -0
  69. package/es/views/grid-view/grid-view-engine.js +21 -0
  70. package/es/views/grid-view/grid-view-provider.d.ts +13 -0
  71. package/es/views/grid-view/grid-view-provider.js +14 -0
  72. package/es/views/grid-view/grid-view.d.ts +32 -0
  73. package/es/views/grid-view/grid-view.js +64 -0
  74. package/es/views/grid-view/index.d.ts +32 -0
  75. package/es/views/grid-view/index.js +14 -0
  76. package/es/views/index-view/index-view-default.d.ts +22 -0
  77. package/es/views/index-view/index-view-default.js +117 -0
  78. package/es/views/index-view/index-view-engine.d.ts +6 -0
  79. package/es/views/index-view/index-view-engine.js +9 -0
  80. package/es/views/index-view/index-view-exp.d.ts +29 -0
  81. package/es/views/index-view/index-view-exp.js +177 -0
  82. package/es/views/index-view/index-view-provider.d.ts +13 -0
  83. package/es/views/index-view/index-view-provider.js +14 -0
  84. package/es/views/index-view/index-view.d.ts +44 -0
  85. package/es/views/index-view/index-view.js +155 -0
  86. package/es/views/index-view/index.d.ts +44 -0
  87. package/es/views/index-view/index.js +14 -0
  88. package/es/views/index.d.ts +4 -0
  89. package/es/views/index.js +6 -0
  90. package/lib/common/app-icon/app-icon.d.ts +19 -0
  91. package/lib/common/app-icon/app-icon.js +71 -0
  92. package/lib/common/app-keep-alive/app-keep-alive.d.ts +47 -0
  93. package/lib/common/app-keep-alive/app-keep-alive.js +297 -0
  94. package/lib/common/app-keep-alive/scheduler.d.ts +39 -0
  95. package/lib/common/app-keep-alive/scheduler.js +171 -0
  96. package/lib/common/app-router-view/app-router-view.d.ts +30 -0
  97. package/lib/common/app-router-view/app-router-view.js +73 -0
  98. package/lib/common/app-user/app-user.d.ts +8 -0
  99. package/lib/common/app-user/app-user.js +60 -0
  100. package/lib/common/grid-pagination/grid-pagination.d.ts +41 -0
  101. package/lib/common/grid-pagination/grid-pagination.js +84 -0
  102. package/lib/common/grid-pagination/index.d.ts +40 -0
  103. package/lib/common/grid-pagination/index.js +9 -0
  104. package/lib/common/index.d.ts +8 -0
  105. package/lib/common/index.js +66 -0
  106. package/lib/common/quick-search/quick-search.d.ts +30 -0
  107. package/lib/common/quick-search/quick-search.js +63 -0
  108. package/lib/common/tab-page-exp/tab-page-exp.d.ts +69 -0
  109. package/lib/common/tab-page-exp/tab-page-exp.js +117 -0
  110. package/lib/control/app-menu/app-menu-provider.d.ts +13 -0
  111. package/lib/control/app-menu/app-menu-provider.js +14 -0
  112. package/lib/control/app-menu/app-menu.d.ts +54 -0
  113. package/lib/control/app-menu/app-menu.js +178 -0
  114. package/lib/control/app-menu/index.d.ts +53 -0
  115. package/lib/control/app-menu/index.js +12 -0
  116. package/lib/control/grid-control/grid-control.d.ts +158 -0
  117. package/lib/control/grid-control/grid-control.util.d.ts +38 -0
  118. package/lib/control/grid-control/grid-control.util.js +84 -0
  119. package/lib/control/grid-control/grid-field-column/grid-field-column.d.ts +26 -0
  120. package/lib/control/grid-control/grid-field-column-provider.d.ts +15 -0
  121. package/lib/control/grid-control/grid-field-column-provider.js +20 -0
  122. package/lib/control/grid-control/grid-provider.d.ts +13 -0
  123. package/lib/control/grid-control/grid-provider.js +14 -0
  124. package/lib/control/grid-control/index.d.ts +114 -0
  125. package/lib/control/grid-control/index.js +24 -0
  126. package/lib/control/index.d.ts +3 -0
  127. package/lib/control/index.js +26 -0
  128. package/lib/control/toolbar-control/index.d.ts +43 -0
  129. package/lib/control/toolbar-control/index.js +12 -0
  130. package/lib/control/toolbar-control/toolbar-control.d.ts +44 -0
  131. package/lib/control/toolbar-control/toolbar-provider.d.ts +13 -0
  132. package/lib/control/toolbar-control/toolbar-provider.js +14 -0
  133. package/lib/index.d.ts +4 -0
  134. package/lib/index.js +34 -0
  135. package/lib/layout/app-layout/app-layout.d.ts +32 -0
  136. package/lib/layout/control-base/control-base.d.ts +17 -0
  137. package/lib/layout/control-base/control-base.js +42 -0
  138. package/lib/layout/control-layout/control-layout.d.ts +19 -0
  139. package/lib/layout/control-shell/control-shell.d.ts +18 -0
  140. package/lib/layout/index.d.ts +10 -0
  141. package/lib/layout/index.js +44 -0
  142. package/lib/layout/md-view-base/md-view-base.d.ts +12 -0
  143. package/lib/layout/md-view-base/md-view-base.js +35 -0
  144. package/lib/layout/router-shell/router-shell.d.ts +27 -0
  145. package/lib/layout/router-shell/router-shell.js +96 -0
  146. package/lib/layout/view-base/view-base.d.ts +18 -0
  147. package/lib/layout/view-layout/view-layout.d.ts +44 -0
  148. package/lib/layout/view-shell/view-shell.d.ts +42 -0
  149. package/lib/shims-vue.d.ts +5 -0
  150. package/lib/util/install.d.ts +3 -0
  151. package/lib/util/install.js +9 -0
  152. package/lib/views/edit-view/index.d.ts +3 -0
  153. package/lib/views/edit-view/index.js +8 -0
  154. package/lib/views/edit-view/src/edit-view.css +6 -0
  155. package/lib/views/edit-view/src/edit-view.d.ts +3 -0
  156. package/lib/views/edit-view/src/edit-view.js +14 -0
  157. package/lib/views/grid-view/grid-view-engine.d.ts +8 -0
  158. package/lib/views/grid-view/grid-view-engine.js +21 -0
  159. package/lib/views/grid-view/grid-view-provider.d.ts +13 -0
  160. package/lib/views/grid-view/grid-view-provider.js +14 -0
  161. package/lib/views/grid-view/grid-view.d.ts +32 -0
  162. package/lib/views/grid-view/grid-view.js +64 -0
  163. package/lib/views/grid-view/index.d.ts +32 -0
  164. package/lib/views/grid-view/index.js +14 -0
  165. package/lib/views/index-view/index-view-default.d.ts +22 -0
  166. package/lib/views/index-view/index-view-default.js +117 -0
  167. package/lib/views/index-view/index-view-engine.d.ts +6 -0
  168. package/lib/views/index-view/index-view-engine.js +9 -0
  169. package/lib/views/index-view/index-view-exp.d.ts +29 -0
  170. package/lib/views/index-view/index-view-exp.js +177 -0
  171. package/lib/views/index-view/index-view-provider.d.ts +13 -0
  172. package/lib/views/index-view/index-view-provider.js +14 -0
  173. package/lib/views/index-view/index-view.d.ts +44 -0
  174. package/lib/views/index-view/index-view.js +155 -0
  175. package/lib/views/index-view/index.d.ts +44 -0
  176. package/lib/views/index-view/index.js +14 -0
  177. package/lib/views/index.d.ts +4 -0
  178. package/lib/views/index.js +20 -0
  179. package/package.json +71 -0
  180. package/src/common/app-col/app-col.tsx +90 -0
  181. package/src/common/app-icon/app-icon.tsx +58 -0
  182. package/src/common/app-keep-alive/app-keep-alive.ts +441 -0
  183. package/src/common/app-keep-alive/scheduler.ts +281 -0
  184. package/src/common/app-router-view/app-router-view.tsx +73 -0
  185. package/src/common/app-row/app-row.tsx +31 -0
  186. package/src/common/app-user/app-user.scss +32 -0
  187. package/src/common/app-user/app-user.tsx +61 -0
  188. package/src/common/index.ts +9 -0
  189. package/src/common/quick-search/quick-search.scss +15 -0
  190. package/src/common/quick-search/quick-search.tsx +59 -0
  191. package/src/common/tab-page-exp/tab-page-exp.scss +43 -0
  192. package/src/common/tab-page-exp/tab-page-exp.tsx +125 -0
  193. package/src/control/app-menu/app-menu-provider.ts +14 -0
  194. package/src/control/app-menu/app-menu-state.ts +20 -0
  195. package/src/control/app-menu/app-menu.controller.ts +97 -0
  196. package/src/control/app-menu/app-menu.scss +163 -0
  197. package/src/control/app-menu/app-menu.tsx +305 -0
  198. package/src/control/app-menu/index.ts +12 -0
  199. package/src/control/form/form/form-control.tsx +98 -0
  200. package/src/control/form/form/form-state.ts +39 -0
  201. package/src/control/form/form/form.controller.ts +260 -0
  202. package/src/control/form/form/form.scss +10 -0
  203. package/src/control/form/form/index.ts +30 -0
  204. package/src/control/form/form-detail/form-detail/form-detail-state.ts +92 -0
  205. package/src/control/form/form-detail/form-detail/form-detail.ts +214 -0
  206. package/src/control/form/form-detail/form-detail/index.ts +2 -0
  207. package/src/control/form/form-detail/form-group-panel/form-group-panel-provider.ts +27 -0
  208. package/src/control/form/form-detail/form-group-panel/form-group-panel-state.ts +29 -0
  209. package/src/control/form/form-detail/form-group-panel/form-group-panel.controller.ts +103 -0
  210. package/src/control/form/form-detail/form-group-panel/index.ts +3 -0
  211. package/src/control/form/form-detail/form-item/form-item-container/form-item-container.scss +90 -0
  212. package/src/control/form/form-detail/form-item/form-item-container/form-item-container.tsx +68 -0
  213. package/src/control/form/form-detail/form-item/form-item-provider.ts +28 -0
  214. package/src/control/form/form-detail/form-item/form-item-state.ts +48 -0
  215. package/src/control/form/form-detail/form-item/form-item.controller.ts +341 -0
  216. package/src/control/form/form-detail/form-item/form-item.scss +4 -0
  217. package/src/control/form/form-detail/form-item/form-item.tsx +69 -0
  218. package/src/control/form/form-detail/form-item/index.ts +3 -0
  219. package/src/control/form/form-detail/form-page/form-page-item.tsx +59 -0
  220. package/src/control/form/form-detail/form-page/form-page-provider.ts +27 -0
  221. package/src/control/form/form-detail/form-page/form-page-state.ts +12 -0
  222. package/src/control/form/form-detail/form-page/form-page.controller.ts +20 -0
  223. package/src/control/form/form-detail/form-page/form-page.scss +42 -0
  224. package/src/control/form/form-detail/form-page/form-page.tsx +56 -0
  225. package/src/control/form/form-detail/index.ts +3 -0
  226. package/src/control/form/index.ts +12 -0
  227. package/src/control/form/search-form/index.ts +15 -0
  228. package/src/control/form/search-form/search-form-provider.ts +14 -0
  229. package/src/control/form/search-form/search-form-state.ts +12 -0
  230. package/src/control/form/search-form/search-form.controller.ts +135 -0
  231. package/src/control/form/search-form/search-form.scss +48 -0
  232. package/src/control/form/search-form/search-form.tsx +70 -0
  233. package/src/control/grid/grid/grid-column.controller.ts +98 -0
  234. package/src/control/grid/grid/grid-control.tsx +174 -0
  235. package/src/control/grid/grid/grid-control.util.ts +135 -0
  236. package/src/control/grid/grid/grid-provider.ts +13 -0
  237. package/src/control/grid/grid/grid-row.controller.ts +114 -0
  238. package/src/control/grid/grid/grid-state.ts +20 -0
  239. package/src/control/grid/grid/grid.controller.ts +531 -0
  240. package/src/control/grid/grid/grid.scss +79 -0
  241. package/src/control/grid/grid-field-column/grid-field-column-provider.ts +26 -0
  242. package/src/control/grid/grid-field-column/grid-field-column.controller.ts +189 -0
  243. package/src/control/grid/grid-field-column/grid-field-column.scss +19 -0
  244. package/src/control/grid/grid-field-column/grid-field-column.tsx +87 -0
  245. package/src/control/grid/grid-pagination/grid-pagination.scss +7 -0
  246. package/src/control/grid/grid-pagination/grid-pagination.tsx +88 -0
  247. package/src/control/grid/index.ts +23 -0
  248. package/src/control/index.ts +4 -0
  249. package/src/control/panel/index.ts +23 -0
  250. package/src/control/panel/panel/panel-item-state.ts +73 -0
  251. package/src/control/panel/panel/panel-item.controller.ts +161 -0
  252. package/src/control/panel/panel/panel-state.ts +22 -0
  253. package/src/control/panel/panel/panel.controller.ts +256 -0
  254. package/src/control/panel/panel-container/index.ts +23 -0
  255. package/src/control/panel/panel-container/panel-container-provider.ts +28 -0
  256. package/src/control/panel/panel-container/panel-container-state.ts +12 -0
  257. package/src/control/panel/panel-container/panel-container.controller.ts +18 -0
  258. package/src/control/panel/panel-container/panel-container.scss +66 -0
  259. package/src/control/panel/panel-container/panel-container.tsx +93 -0
  260. package/src/control/panel/panel-ctrl-pos/index.ts +13 -0
  261. package/src/control/panel/panel-ctrl-pos/panel-ctrl-pos-provider.ts +28 -0
  262. package/src/control/panel/panel-ctrl-pos/panel-ctrl-pos.controller.ts +23 -0
  263. package/src/control/panel/panel-ctrl-pos/panel-ctrl-pos.tsx +39 -0
  264. package/src/control/panel/view-layout-panel/view-layout-panel-provider.ts +14 -0
  265. package/src/control/panel/view-layout-panel/view-layout-panel.controller.ts +62 -0
  266. package/src/control/panel/view-layout-panel/view-layout-panel.scss +3 -0
  267. package/src/control/panel/view-layout-panel/view-layout-panel.tsx +127 -0
  268. package/src/control/panel/view-layout-panel.json +141 -0
  269. package/src/control/toolbar/index.ts +12 -0
  270. package/src/control/toolbar/toolbar-control.scss +46 -0
  271. package/src/control/toolbar/toolbar-control.tsx +127 -0
  272. package/src/control/toolbar/toolbar-provider.ts +14 -0
  273. package/src/control/toolbar/toolbar-state.ts +31 -0
  274. package/src/control/toolbar/toolbar.controllerr.ts +112 -0
  275. package/src/editor/index.ts +14 -0
  276. package/src/editor/text-box/ibiz-input/ibiz-input.scss +48 -0
  277. package/src/editor/text-box/ibiz-input/ibiz-input.tsx +176 -0
  278. package/src/editor/text-box/index.ts +1 -0
  279. package/src/editor/text-box/text-box-provider.ts +39 -0
  280. package/src/editor/text-box/text-box.controller.ts +21 -0
  281. package/src/index.ts +57 -0
  282. package/src/layout/app-layout/app-layout.scss +133 -0
  283. package/src/layout/app-layout/app-layout.tsx +149 -0
  284. package/src/layout/control-base/control-base.tsx +37 -0
  285. package/src/layout/control-layout/control-layout.scss +4 -0
  286. package/src/layout/control-layout/control-layout.tsx +29 -0
  287. package/src/layout/index.ts +15 -0
  288. package/src/layout/md-view-base/md-view-base.tsx +69 -0
  289. package/src/layout/view-base/view-base.scss +11 -0
  290. package/src/layout/view-base/view-base.tsx +147 -0
  291. package/src/layout/view-layout/view-layout.scss +198 -0
  292. package/src/layout/view-layout/view-layout.tsx +115 -0
  293. package/src/shims-vue.d.ts +5 -0
  294. package/src/util/install.ts +11 -0
  295. package/src/views/grid-view/grid-view-engine.ts +68 -0
  296. package/src/views/grid-view/index.ts +12 -0
  297. package/src/views/index-view/index-view-default.ts +168 -0
  298. package/src/views/index-view/index-view-engine.ts +10 -0
  299. package/src/views/index-view/index-view-exp.ts +261 -0
  300. package/src/views/index-view/index-view-provider.ts +14 -0
  301. package/src/views/index-view/index-view.tsx +249 -0
  302. package/src/views/index-view/index.ts +14 -0
  303. package/src/views/index.ts +3 -0
  304. package/src/views/view/ibiz-view.tsx +49 -0
  305. package/src/views/view/index.ts +12 -0
  306. package/src/views/view/view-provider.ts +14 -0
@@ -0,0 +1,189 @@
1
+ /* eslint-disable @typescript-eslint/no-unused-vars */
2
+ import { RuntimeError } from '@ibiz-template/core';
3
+ import {
4
+ CodeListItem,
5
+ getWFContext,
6
+ IModalData,
7
+ OpenAppViewCommand,
8
+ } from '@ibiz-template/runtime';
9
+ import { IDEGridFieldColumn } from '@ibiz/model-core';
10
+ import { clone } from 'ramda';
11
+ import { GridColumnController } from '../grid/grid-column.controller';
12
+ import { GridRowController } from '../grid/grid-row.controller';
13
+
14
+ /**
15
+ * 表格属性列控制器
16
+ * @return {*}
17
+ * @author: zhujiamin
18
+ * @Date: 2022-09-01 18:25:20
19
+ */
20
+ export class GridFieldColumnController extends GridColumnController<IDEGridFieldColumn> {
21
+ /**
22
+ * 代码表项
23
+ *
24
+ * @author lxm
25
+ * @date 2022-09-28 16:09:51
26
+ * @type {readonly}
27
+ */
28
+ codeListItems?: readonly CodeListItem[];
29
+
30
+ /**
31
+ * 是否是链接列
32
+ *
33
+ * @author lxm
34
+ * @date 2022-09-28 17:09:15
35
+ * @returns {*}
36
+ */
37
+ get isLinkColumn(): boolean {
38
+ return !!this.model.enableLinkView && !!this.model.linkAppViewId;
39
+ }
40
+
41
+ /**
42
+ * 是否有触发界面行为
43
+ *
44
+ * @author lxm
45
+ * @date 2022-12-08 14:12:37
46
+ * @readonly
47
+ * @type {boolean}
48
+ */
49
+ get hasAction(): boolean {
50
+ return !!this.model.deuiactionId;
51
+ }
52
+
53
+ /**
54
+ * 行是否可点击(影响列的界面样式)
55
+ *
56
+ * @author lxm
57
+ * @date 2022-12-08 15:12:58
58
+ * @readonly
59
+ */
60
+ clickable(row: GridRowController) {
61
+ const value = row.data[this.model.codeName!];
62
+ return (this.isLinkColumn || this.hasAction) && value;
63
+ }
64
+
65
+ /**
66
+ * 公共参数处理,计算上下文和视图参数
67
+ * @return {*}
68
+ * @author: zhujiamin
69
+ * @Date: 2022-08-25 15:44:14
70
+ */
71
+ public handlePublicParams(
72
+ _data: IData,
73
+ _context: IContext,
74
+ _params: IParams,
75
+ ) {
76
+ // const { navigateContexts, navigateParams } = this.model;
77
+ // let selfContext = {};
78
+ // if (navigateContexts && data) {
79
+ // selfContext = convertNavData(navigateContexts!, context, params, data);
80
+ // }
81
+ // const _context = Object.assign(context.clone(), selfContext);
82
+ // let selfParams = {};
83
+ // if (navigateParams && data) {
84
+ // selfParams = convertNavData(navigateParams!, context, params, data);
85
+ // }
86
+ // const _params: IParams = { ...params, ...selfParams };
87
+ return { context: this.context, params: this.params };
88
+ }
89
+
90
+ /**
91
+ * 打开链接视图
92
+ *
93
+ * @author lxm
94
+ * @date 2022-09-28 18:09:14
95
+ * @param {GridRowController} row 行数据
96
+ * @param {MouseEvent} event 原生事件
97
+ * @returns {*} {Promise<void>}
98
+ */
99
+ async openLinkView(row: GridRowController, event: MouseEvent): Promise<void> {
100
+ const curValue = row.data[this.model.codeName!];
101
+ if (!curValue) {
102
+ // 当前值不存在,不继续走打开链接视图逻辑
103
+ return;
104
+ }
105
+ const valueItem = this.model.linkValueItem || 'srfkey';
106
+ const value = row.data[valueItem];
107
+ if (!value) {
108
+ throw new RuntimeError('链接值项取不到值');
109
+ }
110
+ const { linkAppViewId } = this.model;
111
+ if (!linkAppViewId) {
112
+ return;
113
+ }
114
+ // const { deName } = linkView.appEntity;
115
+ const wfContext = getWFContext(row.data);
116
+ const tempContext = Object.assign(this.context.clone(), {
117
+ // [deName!]: value,
118
+ ...wfContext,
119
+ });
120
+ const tempParams = clone(this.params);
121
+ const { context: newContext, params: newParams } = this.handlePublicParams(
122
+ row.data,
123
+ tempContext,
124
+ tempParams,
125
+ );
126
+ // 打开视图
127
+ const res: IModalData = await ibiz.commands.execute(
128
+ OpenAppViewCommand.TAG,
129
+ linkAppViewId,
130
+ newContext,
131
+ newParams,
132
+ { event },
133
+ );
134
+ if (res?.ok) {
135
+ this.grid.load();
136
+ }
137
+ }
138
+
139
+ /**
140
+ * 触发表格列附加界面行为
141
+ *
142
+ * @author lxm
143
+ * @date 2022-12-08 15:12:35
144
+ * @param {GridRowController} row 行数据
145
+ * @param {MouseEvent} event 鼠标事件
146
+ * @returns {*} {Promise<void>}
147
+ */
148
+ async triggerAction(
149
+ _row: GridRowController,
150
+ _event: MouseEvent,
151
+ ): Promise<void> {
152
+ // if (this.model.viewLogic) {
153
+ // await executeViewLogic(
154
+ // this.model.viewLogic,
155
+ // this.context,
156
+ // [row.data],
157
+ // this.params,
158
+ // {
159
+ // event,
160
+ // neuron: this.grid.nerve.self,
161
+ // view: this.grid.ctx.view,
162
+ // },
163
+ // );
164
+ // }
165
+ }
166
+
167
+ /**
168
+ * 加载代码表数据
169
+ *
170
+ * @author lxm
171
+ * @date 2022-09-28 15:09:38
172
+ * @returns {*}
173
+ */
174
+ async loadCodeList(): Promise<readonly CodeListItem[] | undefined> {
175
+ const appCodeListId = this.model.appCodeListId!;
176
+ if (!appCodeListId) {
177
+ return;
178
+ }
179
+ const app = ibiz.hub.getApp(this.context.srfappid);
180
+
181
+ const dataItems = await app.codeList.get(
182
+ appCodeListId,
183
+ this.context,
184
+ this.params,
185
+ );
186
+ this.codeListItems = dataItems;
187
+ return dataItems;
188
+ }
189
+ }
@@ -0,0 +1,19 @@
1
+ @include b(grid-field-column) {
2
+ @include set-component-css-var('grid-field-column', $grid-field-column);
3
+
4
+ display: flex;
5
+ align-items: center;
6
+ justify-content: getCssVar('grid-field-column', 'justify-content');
7
+ width: 100%;
8
+ height: 100%;
9
+ padding: getCssVar('grid-field-column', 'cell-padding');
10
+
11
+ @include e(text) {
12
+ @include overflow-wrap;
13
+ }
14
+
15
+ @include m(clickable) {
16
+ color: getCssVar('grid-field-column', 'font-color');
17
+ cursor: pointer;
18
+ }
19
+ }
@@ -0,0 +1,87 @@
1
+ import { computed, defineComponent } from 'vue';
2
+ import { useNamespace } from '@ibiz-template/vue3-util';
3
+ import './grid-field-column.scss';
4
+ import { GridRowController } from '../grid/grid-row.controller';
5
+ import { GridFieldColumnController } from './grid-field-column.controller';
6
+
7
+ export const GridFieldColumn = defineComponent({
8
+ name: 'GridFieldColumn',
9
+ props: {
10
+ controller: {
11
+ type: GridFieldColumnController,
12
+ required: true,
13
+ },
14
+ row: {
15
+ type: GridRowController,
16
+ required: true,
17
+ },
18
+ },
19
+ setup(props) {
20
+ const ns = useNamespace('grid-field-column');
21
+
22
+ const codeList = props.controller.model.appCodeListId;
23
+
24
+ /**
25
+ * 单元格点击事件
26
+ *
27
+ * @author lxm
28
+ * @date 2022-09-28 18:09:27
29
+ * @param {MouseEvent} event
30
+ */
31
+ const onCellClick = (event: MouseEvent) => {
32
+ if (props.controller.isLinkColumn) {
33
+ // 阻止触发行点击
34
+ event.stopPropagation();
35
+ props.controller.openLinkView(props.row, event);
36
+ } else if (props.controller.hasAction) {
37
+ // 阻止触发行点击
38
+ event.stopPropagation();
39
+ props.controller.triggerAction(props.row, event);
40
+ }
41
+ };
42
+
43
+ const alignStyle = computed(() => {
44
+ let justContent = '';
45
+ switch (props.controller.model.align) {
46
+ case 'LEFT':
47
+ justContent = 'flex-start';
48
+ break;
49
+ case 'RIGHT':
50
+ justContent = 'flex-end';
51
+ break;
52
+ default:
53
+ justContent = 'center';
54
+ break;
55
+ }
56
+ return ns.cssVarBlock({ 'justify-content': justContent });
57
+ });
58
+
59
+ return { ns, alignStyle, codeList, onCellClick };
60
+ },
61
+ render() {
62
+ const c = this.controller;
63
+ const fieldValue = this.row.data[this.controller.model.codeName!];
64
+ return (
65
+ <div
66
+ class={[this.ns.b(), c.clickable(this.row) && this.ns.m('clickable')]}
67
+ style={this.alignStyle}
68
+ onClick={this.onCellClick}
69
+ >
70
+ {/* {this.codeList ? (
71
+ <code-list
72
+ class={this.ns.e('text')}
73
+ codeListItems={c.codeListItems}
74
+ codeList={this.codeList}
75
+ value={fieldValue}
76
+ ></code-list>
77
+ ) : ( */}
78
+ <span class={this.ns.e('text')}>
79
+ {fieldValue}
80
+ {fieldValue != null && c.model.unitName}
81
+ </span>
82
+ {/* )} */}
83
+ </div>
84
+ );
85
+ },
86
+ });
87
+ export default GridFieldColumn;
@@ -0,0 +1,7 @@
1
+ // @include b(grid-page) {
2
+ // display: flex;
3
+
4
+ // @include b(grid-page-btn) {
5
+ // margin-right: 10px;
6
+ // }
7
+ // }
@@ -0,0 +1,88 @@
1
+ import { computed, defineComponent } from 'vue';
2
+ import { useNamespace } from '@ibiz-template/vue3-util';
3
+ import './grid-pagination.scss';
4
+
5
+ export const GridPagination = defineComponent({
6
+ name: 'GridPagination',
7
+ props: {
8
+ total: {
9
+ type: Number,
10
+ required: true,
11
+ },
12
+ curPage: {
13
+ type: Number,
14
+ required: true,
15
+ },
16
+ size: {
17
+ type: Number,
18
+ required: true,
19
+ },
20
+ },
21
+ emits: ['change', 'pageSizeChange', 'pageReset'],
22
+ setup(props, { emit }) {
23
+ const ns = useNamespace('grid-page');
24
+
25
+ const start = computed(() => {
26
+ return (props.curPage - 1) * props.size + 1;
27
+ });
28
+
29
+ const end = computed(() => {
30
+ return props.curPage * props.size;
31
+ });
32
+
33
+ const onPageChange = (page: number) => {
34
+ emit('change', page);
35
+ };
36
+ const onPageSizeChange = (size: number) => {
37
+ emit('pageSizeChange', size);
38
+ };
39
+ const pageReset = () => {
40
+ emit('pageReset');
41
+ };
42
+ const inputChange = (event: MouseEvent) => {
43
+ // 阻止change冒泡
44
+ event.stopPropagation();
45
+ };
46
+
47
+ return {
48
+ ns,
49
+ start,
50
+ end,
51
+ onPageChange,
52
+ onPageSizeChange,
53
+ pageReset,
54
+ inputChange,
55
+ };
56
+ },
57
+ render() {
58
+ return (
59
+ <div class={this.ns.b()}>
60
+ <el-pagination
61
+ layout='slot, prev, pager, next, sizes, jumper'
62
+ background
63
+ total={this.total}
64
+ current-page={this.curPage}
65
+ page-size={this.size}
66
+ page-sizes={[10, 20, 30, 40, 50, 60, 70, 80, 90, 100]}
67
+ {...{
68
+ 'onUpdate:currentPage': this.onPageChange,
69
+ 'onUpdate:pageSize': this.onPageSizeChange,
70
+ onChange: this.inputChange,
71
+ }}
72
+ >
73
+ <span class={this.ns.b('btn')}>
74
+ <el-button title='刷新' onClick={this.pageReset}>
75
+ <ion-icon name='refresh'></ion-icon>
76
+ </el-button>
77
+ </span>
78
+ <span>
79
+ 显示&nbsp;{this.start}&nbsp;-&nbsp;{this.end}&nbsp;条,共&nbsp;
80
+ {this.total}
81
+ &nbsp;条数据
82
+ </span>
83
+ </el-pagination>
84
+ </div>
85
+ );
86
+ },
87
+ });
88
+ export default GridPagination;
@@ -0,0 +1,23 @@
1
+ import { ControlType } from '@ibiz-template/runtime';
2
+ import { App } from 'vue';
3
+ import { GridControl } from './grid/grid-control';
4
+ import GridFieldColumn from './grid-field-column/grid-field-column';
5
+ import { withInstall } from '../../util/install';
6
+ import { GridProvider } from './grid/grid-provider';
7
+ import { GridFieldColumnProvider } from './grid-field-column/grid-field-column-provider';
8
+ import GridPagination from './grid-pagination/grid-pagination';
9
+ import { GridController } from './grid/grid.controller';
10
+
11
+ export { GridControl, GridFieldColumn, GridController };
12
+ export const IBizGrid = withInstall(GridControl, function (v: App) {
13
+ v.component(GridControl.name, GridControl);
14
+ v.component(GridFieldColumn.name, GridFieldColumn);
15
+ v.component(GridPagination.name, GridPagination);
16
+ ibiz.register.gridColumn.register(
17
+ 'DEFGRIDCOLUMN',
18
+ new GridFieldColumnProvider(),
19
+ );
20
+ ibiz.register.control.register(ControlType.GRID, new GridProvider());
21
+ });
22
+
23
+ export default IBizGrid;
@@ -0,0 +1,4 @@
1
+ export * from './app-menu';
2
+ export * from './grid';
3
+ export * from './toolbar';
4
+ export * from './panel';
@@ -0,0 +1,23 @@
1
+ import { ControlType } from '@ibiz-template/runtime';
2
+ import { App } from 'vue';
3
+ import { withInstall } from '../../util/install';
4
+ import IBizPanelContainer from './panel-container';
5
+ import IBizPanelCtrlPos from './panel-ctrl-pos';
6
+ import { ViewLayoutPanel } from './view-layout-panel/view-layout-panel';
7
+ import { ViewLayoutPanelProvider } from './view-layout-panel/view-layout-panel-provider';
8
+
9
+ export * from './panel-container';
10
+ export * from './panel-ctrl-pos';
11
+
12
+ export { ViewLayoutPanel };
13
+ export const IBizPanel = withInstall(ViewLayoutPanel, function (v: App) {
14
+ v.component(ViewLayoutPanel.name, ViewLayoutPanel);
15
+ ibiz.register.control.register(
16
+ ControlType.VIEW_LAYOUT_PANEL,
17
+ new ViewLayoutPanelProvider(),
18
+ );
19
+ v.use(IBizPanelContainer);
20
+ v.use(IBizPanelCtrlPos);
21
+ });
22
+
23
+ export default IBizPanel;
@@ -0,0 +1,73 @@
1
+ import { ILayoutController } from '@ibiz-template/runtime';
2
+
3
+ /**
4
+ * 面板成员状态
5
+ *
6
+ * @author lxm
7
+ * @date 2023-02-07 06:04:35
8
+ * @export
9
+ * @class PanelItemState
10
+ */
11
+ export class PanelItemState {
12
+ /**
13
+ * 是否显示
14
+ *
15
+ * @author lxm
16
+ * @date 2023-02-08 04:00:08
17
+ * @type {boolean}
18
+ * @memberof PanelItemState
19
+ */
20
+ declare visible: boolean;
21
+
22
+ /**
23
+ * 是否必填
24
+ *
25
+ * @author chitanda
26
+ * @date 2023-01-04 10:01:27
27
+ * @type {boolean}
28
+ */
29
+ required: boolean = false;
30
+
31
+ /**
32
+ * 是否禁用
33
+ *
34
+ * @author lxm
35
+ * @date 2023-02-08 03:59:01
36
+ * @type {boolean}
37
+ * @memberof PanelItemState
38
+ */
39
+ disabled: boolean = false;
40
+
41
+ /**
42
+ * 布局
43
+ *
44
+ * @author chitanda
45
+ * @date 2023-01-04 10:01:15
46
+ * @type {ILayoutController}
47
+ */
48
+ layoutController: ILayoutController = {
49
+ width: 'auto',
50
+ height: 'auto',
51
+ extraStyle: {},
52
+ extraClass: '',
53
+ contentStyle: {},
54
+ };
55
+
56
+ constructor(protected parent?: PanelItemState) {
57
+ // 定义是否显示,set方法需要返回true,否则vue proxy报错
58
+ let $visible: boolean = true;
59
+ Object.defineProperty(this, 'visible', {
60
+ enumerable: true,
61
+ configurable: true,
62
+ get() {
63
+ // 有父先看父的显示
64
+ return this.parent?.visible !== false && $visible;
65
+ },
66
+ set(val) {
67
+ $visible = val;
68
+ // eslint-disable-next-line no-setter-return
69
+ return true;
70
+ },
71
+ });
72
+ }
73
+ }
@@ -0,0 +1,161 @@
1
+ import { isOverlap } from '@ibiz-template/core';
2
+ import {
3
+ calcLayoutContentStyle,
4
+ PanelNotifyState,
5
+ verifyPanelGroupLogic,
6
+ } from '@ibiz-template/runtime';
7
+ import { IPanelItem } from '@ibiz/model-core';
8
+ import { PanelItemState } from './panel-item-state';
9
+ import { PanelController } from './panel.controller';
10
+
11
+ export class PanelItemController<T extends IPanelItem = IPanelItem> {
12
+ /**
13
+ * 面板项状态
14
+ *
15
+ * @author chitanda
16
+ * @date 2023-01-04 09:01:04
17
+ * @type {PanelItemState}
18
+ */
19
+ state: PanelItemState;
20
+
21
+ /**
22
+ * Creates an instance of PanelItemController.
23
+ * @author lxm
24
+ * @date 2023-04-27 06:37:12
25
+ * @param {T} model 面板成员模型
26
+ * @param {PanelController} panel 面板控制器
27
+ * @param {PanelItemController} [parent] 父容器控制器
28
+ */
29
+ constructor(
30
+ public readonly model: T,
31
+ public readonly panel: PanelController,
32
+ public readonly parent?: PanelItemController,
33
+ ) {
34
+ this.state = this.createState();
35
+ }
36
+
37
+ /**
38
+ * 子类不可覆盖或重写此方法,在 init 时需要重写的使用 onInit 方法。
39
+ *
40
+ * @author lxm
41
+ * @date 2022-08-18 22:08:30
42
+ * @returns {*} {Promise<void>}
43
+ */
44
+ async init(): Promise<void> {
45
+ await this.onInit();
46
+ }
47
+
48
+ protected async onInit(): Promise<void> {
49
+ // 初始化布局参数
50
+ const { width, height, sysCss, itemType } = this.model;
51
+ // 初始化布局参数
52
+ if (width) {
53
+ this.state.layoutController.width = `${width}`;
54
+ }
55
+ if (height) {
56
+ this.state.layoutController.height = `${height}`;
57
+ }
58
+ // 给col添加各自类型的类名
59
+ this.state.layoutController.extraClass = `ibiz-panel-col__${itemType!.toLowerCase()} `;
60
+ if (sysCss?.cssName) {
61
+ this.state.layoutController.extraClass = sysCss.cssName;
62
+ }
63
+
64
+ // 设置layout的visible关联自身的visible
65
+ Object.defineProperty(this.state.layoutController, 'visible', {
66
+ configurable: true,
67
+ enumerable: true,
68
+ get: () => {
69
+ return this.state.visible;
70
+ },
71
+ });
72
+
73
+ if (this.model.layoutPos) {
74
+ // 设置自身内容样式
75
+ this.state.layoutController.contentStyle = calcLayoutContentStyle(
76
+ this.model.layoutPos!,
77
+ );
78
+ }
79
+ }
80
+
81
+ /**
82
+ * 创建面板状态对象
83
+ *
84
+ * @author chitanda
85
+ * @date 2023-01-04 10:01:00
86
+ * @protected
87
+ * @return {*} {PanelItemState}
88
+ */
89
+ protected createState(): PanelItemState {
90
+ return new PanelItemState(this.parent?.state);
91
+ }
92
+
93
+ /**
94
+ * 面板数据变更通知(由面板控制器调用)
95
+ *
96
+ * @author lxm
97
+ * @date 2022-09-20 18:09:56
98
+ * @param {string[]} names
99
+ */
100
+ dataChangeNotify(names: string[]): void {
101
+ // 计算动态控制逻辑
102
+ this.calcDynamicLogic(names);
103
+ }
104
+
105
+ /**
106
+ * 面板状态变更通知
107
+ *
108
+ * @author lxm
109
+ * @date 2022-09-20 18:09:07
110
+ */
111
+ panelStateNotify(_state: PanelNotifyState): void {
112
+ // 计算动态控制逻辑
113
+ this.calcDynamicLogic([], true);
114
+ }
115
+
116
+ /**
117
+ * 计算动态逻辑
118
+ *
119
+ * @author lxm
120
+ * @date 2023-02-13 09:42:07
121
+ * @protected
122
+ * @param {string[]} names 变更的属性集合
123
+ * @param {boolean} [mustCalc=false] 是否强制计算一遍动态逻辑
124
+ * @returns {*} {void}
125
+ * @memberof PanelItemController
126
+ */
127
+ protected calcDynamicLogic(names: string[], mustCalc: boolean = false): void {
128
+ // 逻辑优化,当父容器存在且为不显示时,不去计算自己的动态逻辑
129
+ if (this.parent && !this.parent.state.visible) {
130
+ return;
131
+ }
132
+
133
+ // 根据自身的动态逻辑计算
134
+ this.model.panelItemGroupLogics?.forEach(logic => {
135
+ const relatedNames = logic.relatedItemNames || [];
136
+ // name是动态逻辑涉及到的时或state存在时
137
+ if (mustCalc || isOverlap(relatedNames, names)) {
138
+ try {
139
+ const ok = verifyPanelGroupLogic(this.panel.data, logic);
140
+ switch (logic.logicCat) {
141
+ // 动态空输入,不满足则必填
142
+ case 'ITEMBLANK':
143
+ this.state.required = !ok;
144
+ break;
145
+ // 动态启用,满足则启用
146
+ case 'ITEMENABLE':
147
+ this.state.disabled = !ok;
148
+ break;
149
+ // 动态显示,满足则显示
150
+ case 'PANELVISIBLE':
151
+ this.state.visible = ok;
152
+ break;
153
+ default:
154
+ }
155
+ } catch (error) {
156
+ ibiz.log.error(error);
157
+ }
158
+ }
159
+ });
160
+ }
161
+ }
@@ -0,0 +1,22 @@
1
+ import { ControlState } from '@ibiz-template/runtime';
2
+
3
+ /**
4
+ * 面板状态
5
+ *
6
+ * @author lxm
7
+ * @date 2023-02-10 11:50:17
8
+ * @export
9
+ * @class PanelState
10
+ * @extends {ControlState}
11
+ */
12
+ export class PanelState extends ControlState {
13
+ /**
14
+ * 面板数据
15
+ *
16
+ * @author lxm
17
+ * @date 2023-02-10 01:45:34
18
+ * @type {(IData | null)}
19
+ * @memberof PanelState
20
+ */
21
+ data: IData = {};
22
+ }