index.vue 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. <template>
  2. <div class="default-main ">
  3. <el-alert class="ba-table-alert" v-if="baTable.table.remark" :title="baTable.table.remark" type="info"
  4. show-icon />
  5. <el-row>
  6. <el-col :span="24">
  7. <!-- 表格顶部菜单 -->
  8. <TableHeader :buttons="['refresh', 'add', 'edit', 'delete', 'comSearch']"
  9. quick-search-placeholder="通过标题模糊搜索"
  10. @action="baTable.onTableHeaderAction" />
  11. <!-- 表格 -->
  12. <!-- 要使用`el-table`组件原有的属性,直接加在Table标签上即可 -->
  13. <Table @action="baTable.onTableAction" />
  14. </el-col>
  15. </el-row>
  16. <!-- 表单 -->
  17. <auditDialog ref="auditDialogRef" @close="baTable.getIndex()"></auditDialog>
  18. </div>
  19. </template>
  20. <script setup lang="ts">
  21. import { ref, onMounted, provide } from "vue";
  22. import { entrust } from "/@/api/controllerUrls";
  23. import Table from "/@/components/table/index.vue";
  24. import TableHeader from "/@/components/table/header/index.vue";
  25. import { defaultOptButtons } from "/@/components/table";
  26. import { baTableApi } from "/@/api/common";
  27. import baTableClass from "/@/utils/baTable";
  28. import useCurrentInstance from "/@/utils/useCurrentInstance";
  29. import _ from "lodash";
  30. import auditDialog from "./auditDialog.vue";
  31. import { ElMessage } from "element-plus";
  32. //注销按钮
  33. let cancelBtn: OptButton[] = [
  34. {
  35. render: "tipButton",
  36. name: "audit",
  37. title: "审核",
  38. text: "审核",
  39. type: "primary",
  40. icon: '',
  41. class: "",
  42. disabledTip: false
  43. }
  44. ];
  45. let btn = defaultOptButtons([]);
  46. btn = btn.concat(cancelBtn);
  47. const baTable = new baTableClass(
  48. new baTableApi(entrust),
  49. {
  50. dblClickNotEditColumn: [undefined, "status"],
  51. column: [
  52. { type: "selection", align: "center", operator: false },
  53. { label: "头像", prop: "headPortrait", align: "center", render: "image", operator: false },
  54. { label: "委托人", prop: "memberName", align: "left", operator: "LIKE" },
  55. { label: "所在区县", prop: "districtName", align: "center", operator: "LIKE" },
  56. { label: "所在小区", prop: "communityName", align: "center", operator: "LIKE" },
  57. { label: "楼号", prop: "buildingNumber", align: "center", operator: "LIKE" },
  58. { label: "车位号码", prop: "parkingNumber", align: "center", operator: "LIKE" },
  59. {
  60. label: "委托类型",
  61. prop: "entrustType",
  62. align: "center",
  63. render: "tag",
  64. operator: "=",
  65. replaceValue: { 0: "租售", 1: "出租", 3: "出售" }
  66. },
  67. {
  68. label: "委托状态",
  69. prop: "entrustStatus",
  70. align: "center",
  71. render: "tag",
  72. operator: "=",
  73. custom: { 0: "", 1: "info" },
  74. replaceValue: { 0: "委托中", 1: "已撤销" }
  75. },
  76. {
  77. label: "审核状态",
  78. prop: "releaseStatus",
  79. align: "center",
  80. render: "tag",
  81. operator: "=",
  82. custom: { 0: "", 1: "success", 3: "info" },
  83. replaceValue: { 0: "待审核", 1: "审核通过", 3: "审核驳回" }
  84. },
  85. { label: "创建时间", prop: "createTime", align: "center", width: "180", operator: false },
  86. {
  87. label: "操作",
  88. align: "center",
  89. width: "80",
  90. render: "buttons",
  91. buttons: btn,
  92. operator: false
  93. }
  94. ]
  95. },
  96. {
  97. defaultItems: {}
  98. },
  99. {
  100. // 获得编辑数据后
  101. requestEdit: () => {
  102. if (baTable.form.items && !baTable.form.items.icon) baTable.form.items.icon = "el-icon-Minus";
  103. }
  104. }
  105. );
  106. provide("baTable", baTable);
  107. onMounted(() => {
  108. baTable.mount();
  109. baTable.getIndex();
  110. const { proxy } = useCurrentInstance();
  111. /**
  112. * 表格内的按钮响应
  113. * @param name 按钮name
  114. * @param row 被操作行数据
  115. */
  116. proxy.eventBus.on("onTableButtonClick", (data: { name: string; row: TableRow }) => {
  117. if (!baTable.activate) return;
  118. if (data.name == "audit") {
  119. infoButtonClick(data.row);
  120. }
  121. });
  122. });
  123. let auditDialogRef = ref();
  124. /** 点击按钮事件 */
  125. const infoButtonClick = (row: TableRow) => {
  126. if (!row) {
  127. return;
  128. } else if (row.entrustStatus == 1) {
  129. ElMessage({ type: "warning", message: "用户已取消委托" });
  130. return;
  131. } else if (row.releaseStatus !== 0) {
  132. ElMessage({ type: "error", message: "该委托已审核" ,grouping:true});
  133. return;
  134. }
  135. // 数据来自表格数据,未重新请求api,深克隆,不然可能会影响表格
  136. let rowClone = _.cloneDeep(row);
  137. auditDialogRef.value.open(rowClone);
  138. };
  139. </script>
  140. <style scoped lang="scss"></style>