index.vue 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. <template>
  2. <!-- 搜索 -->
  3. <ContentWrap>
  4. <el-form
  5. class="-mb-15px"
  6. :model="queryParams"
  7. ref="queryFormRef"
  8. :inline="true"
  9. label-width="68px"
  10. >
  11. <el-form-item label="套餐名" prop="name">
  12. <el-input
  13. v-model="queryParams.name"
  14. placeholder="请输入套餐名"
  15. clearable
  16. @keyup.enter="handleQuery"
  17. />
  18. </el-form-item>
  19. <el-form-item label="状态" prop="status">
  20. <el-select v-model="queryParams.status" placeholder="请选择状态" clearable>
  21. <el-option
  22. v-for="dict in getIntDictOptions(DICT_TYPE.COMMON_STATUS)"
  23. :key="dict.value"
  24. :label="dict.label"
  25. :value="dict.value"
  26. />
  27. </el-select>
  28. </el-form-item>
  29. <el-form-item label="创建时间" prop="createTime">
  30. <el-date-picker
  31. v-model="queryParams.createTime"
  32. style="width: 240px"
  33. type="daterange"
  34. value-format="YYYY-MM-DD HH:mm:ss"
  35. start-placeholder="开始日期"
  36. end-placeholder="结束日期"
  37. class="!w-240px"
  38. />
  39. </el-form-item>
  40. <el-form-item>
  41. <el-button @click="handleQuery">
  42. <Icon icon="ep:search" class="mr-5px" />
  43. 搜索
  44. </el-button>
  45. <el-button @click="resetQuery">
  46. <Icon icon="ep:refresh" class="mr-5px" />
  47. 重置
  48. </el-button>
  49. <el-button
  50. type="primary"
  51. @click="handleCreate('create')"
  52. v-hasPermi="['system:tenant-package:create']"
  53. >
  54. <Icon icon="ep:plus" class="mr-5px" />
  55. 新增
  56. </el-button>
  57. </el-form-item>
  58. </el-form>
  59. </ContentWrap>
  60. <!-- 列表 -->
  61. <ContentWrap>
  62. <el-table v-loading="loading" :data="list" align="center">
  63. <el-table-column label="套餐编号" align="center" prop="id" width="120" />
  64. <el-table-column label="套餐名" align="center" prop="name" />
  65. <el-table-column label="状态" align="center" prop="status" width="100">
  66. <template #default="scope">
  67. <dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.status" />
  68. </template>
  69. </el-table-column>
  70. <el-table-column label="备注" align="center" prop="remark" />
  71. <el-table-column label="创建时间" align="center" prop="createTime" width="180">
  72. <template #default="scope">
  73. <span>{{ parseTime(scope.row.createTime) }}</span>
  74. </template>
  75. </el-table-column>
  76. <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
  77. <template #default="scope">
  78. <el-button
  79. size="mini"
  80. type="text"
  81. icon="el-icon-edit"
  82. @click="handleUpdate('update', scope.row.id)"
  83. v-hasPermi="['system:tenant-package:update']"
  84. >修改
  85. </el-button>
  86. <el-button
  87. size="mini"
  88. type="text"
  89. icon="el-icon-delete"
  90. @click="handleDelete(scope.row.id)"
  91. v-hasPermi="['system:tenant-package:delete']"
  92. >删除
  93. </el-button>
  94. </template>
  95. </el-table-column>
  96. </el-table>
  97. <!-- 分页 -->
  98. <Pagination
  99. :total="total"
  100. v-model:page="queryParams.pageNo"
  101. v-model:limit="queryParams.pageSize"
  102. @pagination="getList"
  103. />
  104. </ContentWrap>
  105. <TenantPackageForm ref="formRef" @success="getList" />
  106. </template>
  107. <script setup lang="ts" name="TenantPackage">
  108. import TenantPackageForm from './form.vue'
  109. // 业务相关的 import
  110. import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
  111. import { parseTime } from '@/utils/formatTime'
  112. import * as TenantPackageApi from '@/api/system/tenantPackage'
  113. const message = useMessage() // 消息弹窗
  114. const { t } = useI18n() // 国际化
  115. const loading = ref(true) // 列表的加载中
  116. const total = ref(0) // 列表的总页数
  117. const list = ref([]) // 列表的数据
  118. const queryParams: Record<string, any> = ref<Record<string, any>>({
  119. pageNo: 1,
  120. pageSize: 10,
  121. name: null,
  122. status: null,
  123. remark: null,
  124. createTime: []
  125. })
  126. const queryFormRef = ref() // 搜索的表单
  127. const formRef = ref() // 表单 Ref
  128. /** 查询列表 */
  129. const getList = () => {
  130. loading.value = true
  131. // 执行查询
  132. TenantPackageApi.getTenantPackageTypePage(queryParams.value).then((response) => {
  133. list.value = response.list
  134. total.value = response.total
  135. loading.value = false
  136. })
  137. }
  138. /** 搜索按钮操作 */
  139. const handleQuery = () => {
  140. queryParams.pageNo = 1
  141. getList()
  142. }
  143. /** 重置按钮操作 */
  144. const resetQuery = () => {
  145. // 表单重置
  146. queryFormRef.value?.resetFields()
  147. getList()
  148. }
  149. // 新增操作
  150. const handleCreate = (type: string) => {
  151. formRef.value.open(type)
  152. }
  153. // 修改操作
  154. const handleUpdate = async (type: string, id?: number) => {
  155. formRef.value.open(type, id)
  156. }
  157. /** 删除按钮操作 */
  158. const handleDelete = async (id: number) => {
  159. try {
  160. // 删除的二次确认
  161. await message.delConfirm()
  162. // 发起删除
  163. await TenantPackageApi.deleteTenantPackageType(id)
  164. message.success(t('common.delSuccess'))
  165. // 刷新列表
  166. await getList()
  167. } catch {}
  168. }
  169. getList()
  170. </script>