benefits.vue 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. <template>
  2. <div>
  3. <el-card class="!border-none" shadow="never">
  4. <el-form ref="formRef" class="mb-[-16px]" :model="queryParams" :inline="true">
  5. <el-form-item label="权益名称">
  6. <el-input
  7. class="w-[280px]"
  8. v-model="queryParams.name"
  9. placeholder="精准匹配"
  10. clearable
  11. @keyup.enter="resetPage"
  12. />
  13. </el-form-item>
  14. <el-form-item>
  15. <el-button type="primary" @click="resetPage">查询</el-button>
  16. <el-button @click="resetParams">重置</el-button>
  17. </el-form-item>
  18. </el-form>
  19. </el-card>
  20. <el-card class="!border-none mt-4" shadow="never" v-loading="pager.loading">
  21. <div>
  22. <el-button v-perms="['article:cate:add']" type="primary" @click="handleAdd()">
  23. <template #icon>
  24. <icon name="el-icon-Plus"/>
  25. </template>
  26. 新增权益配置
  27. </el-button>
  28. </div>
  29. <el-table class="mt-4" size="large" :data="pager.lists">
  30. <el-table-column type="index" width="55"/>
  31. <el-table-column label="权益图标" min-width="100">
  32. <template #default="{ row }">
  33. <image-contain
  34. v-if="row.icon"
  35. :src="row.icon"
  36. :width="60"
  37. :height="45"
  38. fit="contain"
  39. />
  40. </template>
  41. </el-table-column>
  42. <el-table-column label="权益名称" prop="name" min-width="120" show-tooltip-when-overflow/>
  43. <el-table-column label="权益价值(元)" prop="value" min-width="80"/>
  44. <el-table-column label="使用方式" prop="useMethod" min-width="100" :formatter="useMethodFormatter"/>
  45. <el-table-column label="备注" prop="remark" min-width="120"/>
  46. <el-table-column label="操作" min-width="180" fixed="right">
  47. <template #default="{ row }">
  48. <el-button
  49. v-perms="['article:cate:edit']"
  50. type="primary"
  51. link
  52. @click="handleEdit(row)"
  53. >
  54. 编辑
  55. </el-button>
  56. <!-- <el-button-->
  57. <!-- v-perms="['article:cate:del']"-->
  58. <!-- type="danger"-->
  59. <!-- link-->
  60. <!-- @click="handleDelete(row.id)"-->
  61. <!-- >-->
  62. <!-- 删除-->
  63. <!-- </el-button>-->
  64. </template>
  65. </el-table-column>
  66. </el-table>
  67. <div class="flex justify-end mt-4">
  68. <pagination v-model="pager" @change="getLists"/>
  69. </div>
  70. </el-card>
  71. <edit-popup v-if="showEdit" ref="editRef" @success="getLists" @close="showEdit = false"/>
  72. </div>
  73. </template>
  74. <script lang="ts" setup>
  75. import { useElabPaging } from '@/hooks/useElabPaging'
  76. import feedback from '@/utils/feedback'
  77. import EditPopup from './edit.vue'
  78. import {queryBenefits} from "@/api/membership";
  79. const queryParams = reactive({
  80. name: ''
  81. })
  82. const { pager, getLists, resetPage, resetParams } = useElabPaging({
  83. fetchFun: queryBenefits,
  84. params: queryParams
  85. })
  86. const editRef = shallowRef<InstanceType<typeof EditPopup>>()
  87. const showEdit = ref(false)
  88. const handleAdd = async () => {
  89. showEdit.value = true
  90. await nextTick()
  91. editRef.value?.open('add')
  92. }
  93. const handleEdit = async (data: any) => {
  94. showEdit.value = true
  95. await nextTick()
  96. editRef.value?.open('edit')
  97. editRef.value?.getDetail(data)
  98. }
  99. const useMethodFormatter = (row: any) => {
  100. return row.useMethod == 0 ? '仅展示': ''
  101. }
  102. const volumeFormatter = (row: any) => {
  103. if (row.volume == 0) {
  104. return '大'
  105. } else if (row.volume == 1) {
  106. return '中'
  107. } else if (row.volume == 2) {
  108. return '小'
  109. } else if (row.volume == 3) {
  110. return '关闭'
  111. } else {
  112. return '大'
  113. }
  114. }
  115. const handleDelete = async (id: number) => {
  116. await feedback.confirm('确定要删除?')
  117. // await articleCateDelete({id})
  118. await delPrinter({id})
  119. feedback.msgSuccess('删除成功')
  120. getLists()
  121. }
  122. const changeStatus = async (id: number, status: any) => {
  123. try {
  124. await editPrinter({id, status})
  125. feedback.msgSuccess('修改成功')
  126. getLists()
  127. } catch (error) {
  128. getLists()
  129. }
  130. }
  131. getLists()
  132. </script>