页面.doUiAction

12003

在 JianghuJS 框架中,HTML 上的所有操作都通过调用 doUiAction 方法实现。doUiAction 提高了 JavaScript 代码的可读性,并通过方法名增加了可读性。通过 doUiAction("uiActionId", uiActionParamObj) 链式执行方法(function),可实现便捷的维护和修改。

doUiAction案例-CRUD

  • 异步函数 doUiAction
  • 使用 switch-case 结构进行流控制,根据表达式的值执行不同的分支
  • 每个分支包含一组函数,完成页面的某一个功能,如 CRUD
  1. <v-app>
  2. <v-row class="ma-0 pa-3">
  3. <v-btn class="elevation-0 mr-2" color="success" small @click="doUiAction('createItem')">Create(C)</v-btn>
  4. <v-btn class="elevation-0 mr-2" color="success" small @click="doUiAction('getTableData')">Read(R)</v-btn>
  5. <v-btn class="elevation-0 mr-2" color="success" small @click="doUiAction('updateItem')">Update(U)</v-btn>
  6. <v-btn class="elevation-0 mr-2" color="success" small @click="doUiAction('deleteItem')">Delete(D)</v-btn>
  7. </v-row>
  8. </v-app>
  9. <script type="module">
  10. new Vue({
  11. el: '#app',
  12. template: '#app-template',
  13. vuetify: new Vuetify(),
  14. data: {
  15. },
  16. async created() {
  17. },
  18. async mounted() {
  19. },
  20. methods: {
  21. async doUiAction(uiActionId, uiActionData) {
  22. try {
  23. switch (uiActionId) {
  24. case 'getTableData':
  25. await this.getTableData();
  26. break;
  27. case 'createItem':
  28. await this.prepareCreateValidate();
  29. await this.confirmCreateItemDialog();
  30. await this.prepareDoCreateItem();
  31. await this.doCreateItem();
  32. await this.closeCreateDrawer();
  33. await this.getTableData();
  34. break;
  35. case 'updateItem':
  36. await this.prepareUpdateValidate();
  37. await this.confirmUpdateItemDialog();
  38. await this.prepareDoUpdateItem();
  39. await this.doUpdateItem();
  40. await this.closeUpdateDrawer();
  41. await this.getTableData();
  42. break;
  43. case 'deleteItem':
  44. await this.prepareDeleteFormData(uiActionData);
  45. await this.confirmDeleteItemDialog();
  46. await this.prepareDoDeleteItem();
  47. await this.doDeleteItem();
  48. await this.clearDeleteItem();
  49. await this.getTableData();
  50. break;
  51. default:
  52. console.error("[doUiAction] uiActionId not found", { uiActionId });
  53. break;
  54. }
  55. } catch (error) {
  56. throw error;
  57. } finally {
  58. window.jhMask && window.jhMask.hide();
  59. }
  60. },
  61. async getTableData() {
  62. console.log("====获取表格数据.getTableData");
  63. },
  64. // ---------- 新增数据 uiAction >>>>>>>>>> --------
  65. async prepareCreateFormData() {
  66. console.log("====新增数据.prepareCreateFormData");
  67. },
  68. async openCreateDrawer() {
  69. console.log("====新增数据.openCreateDrawer");
  70. },
  71. async prepareCreateValidate() {
  72. console.log("====新增数据.prepareCreateValidate");
  73. },
  74. async confirmCreateItemDialog() {
  75. console.log("====新增数据.confirmCreateItemDialog");
  76. },
  77. async prepareDoCreateItem() {
  78. console.log("====新增数据.prepareDoCreateItem");
  79. },
  80. async doCreateItem() {
  81. console.log("====新增数据.doCreateItem");
  82. },
  83. async closeCreateDrawer() {
  84. console.log("====新增数据.closeCreateDrawer");
  85. },
  86. // ---------- <<<<<<<<<<< 新增数据 uiAction ---------
  87. // ---------- 修改数据 uiAction >>>>>>>>>>>> --------
  88. async prepareUpdateFormData() {
  89. console.log("====修改数据.prepareUpdateFormData");
  90. },
  91. async openUpdateDrawer() {
  92. console.log("====修改数据.openUpdateDrawer");
  93. },
  94. async prepareUpdateValidate() {
  95. console.log("====修改数据.prepareUpdateValidate");
  96. },
  97. async confirmUpdateItemDialog() {
  98. console.log("====修改数据.confirmUpdateItemDialog");
  99. },
  100. async prepareDoUpdateItem() {
  101. console.log("====修改数据.prepareDoUpdateItem");
  102. },
  103. async doUpdateItem() {
  104. console.log("====修改数据.doUpdateItem");
  105. },
  106. async closeUpdateDrawer() {
  107. console.log("====修改数据.closeUpdateDrawer");
  108. },
  109. // ---------- <<<<<<<<<<< 修改数据 uiAction ---------
  110. // ---------- 删除数据 uiAction >>>>>>>>>>>> --------
  111. async prepareDeleteFormData() {
  112. console.log("====删除数据.prepareDeleteFormData");
  113. },
  114. async confirmDeleteItemDialog() {
  115. console.log("====删除数据.confirmDeleteItemDialog");
  116. },
  117. async prepareDoDeleteItem() {
  118. console.log("====删除数据.prepareDoDeleteItem");
  119. },
  120. async doDeleteItem() {
  121. console.log("====删除数据.doDeleteItem");
  122. },
  123. async clearDeleteItem() {
  124. console.log("====删除数据.clearDeleteItem");
  125. },
  126. // ---------- <<<<<<<<<<< 删除数据 uiAction ---------
  127. }
  128. })
  129. </script>