index.vue 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. <script lang="ts">
  2. // 声明额外的选项
  3. export default {
  4. name: "AppVersion"
  5. };
  6. </script>
  7. <script setup lang="ts">
  8. import { provide, ref } from "vue";
  9. import { useAppVersion } from "./hook";
  10. import { hasAuth } from "@/router/utils";
  11. import { PureTableBar } from "@/components/RePureTableBar";
  12. import { useRenderIcon } from "@/components/ReIcon/src/hooks";
  13. import Add from "./components/add/index.vue";
  14. import EditUpdate from "./components/update/index.vue";
  15. import Search from "@iconify-icons/ep/search";
  16. import All from "@iconify-icons/ep/refresh-left";
  17. import Addicon from "@iconify-icons/ep/document-add";
  18. const formRef = ref();
  19. const {
  20. form,
  21. loading,
  22. columns,
  23. dataList,
  24. pagination,
  25. onSearch,
  26. handleSizeChange,
  27. handleCurrentChange,
  28. handleSelectionChange,
  29. handleAdd,
  30. addVisible,
  31. handleUpdate,
  32. editUpdateVisible,
  33. editUpdateFormData,
  34. handleDelete,
  35. } = useAppVersion();
  36. // 关闭添加
  37. const closeAddVisible = () => {
  38. addVisible.value = false
  39. }
  40. provide('closeAddVisible', closeAddVisible)
  41. // 关闭修改
  42. const closeEditUpdateVisible = () => {
  43. editUpdateVisible.value = false
  44. }
  45. provide('closeEditUpdateVisible', closeEditUpdateVisible)
  46. </script>
  47. <template lang="pug">
  48. .main
  49. div
  50. el-form.bg-bg_color.pl-8.pt-4.pr-8(
  51. label-position="left"
  52. label-width="100px"
  53. ref="formRef",
  54. :inline="true",
  55. :model="form",
  56. :rules="rules",
  57. class="w-[99/100]"
  58. )
  59. el-form-item(label='版本号' prop="versionNum")
  60. el-input(v-model='form.versionNum' autocomplete='off' class="!w-[230px]"
  61. placeholder="请输入版本号")
  62. el-form-item(label='标题' prop="title")
  63. el-input(v-model='form.title' autocomplete='off' class="!w-[230px]"
  64. placeholder="请输入标题")
  65. el-form-item
  66. el-button(
  67. type="primary",
  68. :icon="useRenderIcon(Search)",
  69. :loading="loading",
  70. @click="onSearch()"
  71. ) 查询
  72. el-form-item
  73. el-button(
  74. type="primary",
  75. :icon="useRenderIcon(All)",
  76. :loading="loading",
  77. @click="onSearch('all')"
  78. ) 全部
  79. //- 表格组件
  80. PureTableBar(title="app版本管理", @refresh="onSearch" )
  81. template(#buttons)
  82. el-button(type="primary" :icon="useRenderIcon(Addicon)" @click="handleAdd()") 新增
  83. template(v-slot="{ size, checkList }")
  84. pure-table(stripe
  85. border,
  86. align-whole="center",
  87. table-layout="auto",
  88. :loading="loading",
  89. :size="size",
  90. :data="dataList",
  91. :columns="columns",
  92. :checkList="checkList",
  93. :pagination="pagination",
  94. :paginationSmall="size === 'default' ? true : false",
  95. :header-cell-style="{ background: 'var(--el-table-row-hover-bg-color)', color: 'var(--el-text-color-primary)' }",
  96. @selection-change="handleSelectionChange",
  97. @size-change="handleSizeChange",
  98. @current-change="handleCurrentChange"
  99. )
  100. template(#operation="{ row }")
  101. .flex.flex-wrap.items-center
  102. el-dropdown(trigger="click", :hide-on-click="false")
  103. el-button(type="primary") 操作
  104. el-icon.el-icon--right
  105. arrow-down
  106. template(#dropdown)
  107. el-dropdown-menu
  108. el-dropdown-item
  109. el-button.reset-margin(
  110. link
  111. type="primary"
  112. :size="size"
  113. @click="handleUpdate(row)"
  114. :icon="useRenderIcon(EditPen)"
  115. v-if="hasAuth(['edit'])"
  116. ) 编辑
  117. el-button.reset-margin(
  118. link
  119. type="primary"
  120. :size="size"
  121. @click="handleDelete(row)"
  122. :icon="useRenderIcon(Delete)"
  123. v-if="hasAuth(['delete'])"
  124. ) 删除
  125. Add(:addVisible="addVisible")
  126. EditUpdate(:editVisible="editUpdateVisible" :formData="editUpdateFormData")
  127. </template>
  128. <style scoped lang="scss">
  129. :deep(.el-dropdown-menu__item i) {
  130. margin: 0;
  131. }
  132. :deep(.el-form-item__label) {
  133. font-weight: 700;
  134. }
  135. :deep(.el-pagination) {
  136. flex-flow: wrap;
  137. }
  138. :deep(.is-draggable) {
  139. max-height: 80vh;
  140. overflow: auto;
  141. }
  142. :deep(.el-dialog__header) {
  143. position: sticky;
  144. top: 0;
  145. z-index: 2;
  146. background: #fff;
  147. }
  148. :deep(.el-descriptions__header) {
  149. margin: 16px 0 !important;
  150. }
  151. </style>