From fd13b0017518273406ee1a9906c07d079e4a9ac4 Mon Sep 17 00:00:00 2001 From: houzhongjian <houzhongyi@126.com> Date: 星期三, 27 十一月 2024 17:54:52 +0800 Subject: [PATCH] 租户列表 套餐宽度固定180 --- src/views/system/tenantPackage/index.vue | 235 +++++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 172 insertions(+), 63 deletions(-) diff --git a/src/views/system/tenantPackage/index.vue b/src/views/system/tenantPackage/index.vue index fc68a4d..56f8f3d 100644 --- a/src/views/system/tenantPackage/index.vue +++ b/src/views/system/tenantPackage/index.vue @@ -27,73 +27,83 @@ /> </el-select> </el-form-item> - <el-form-item label="创建时间" prop="createTime"> - <el-date-picker - v-model="queryParams.createTime" - type="daterange" - value-format="YYYY-MM-DD HH:mm:ss" - start-placeholder="开始日期" - end-placeholder="结束日期" - class="!w-240px" - /> - </el-form-item> <el-form-item> - <el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button> - <el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button> + <el-button @click="handleQuery"> + <Icon icon="ep:search" class="mr-5px"/> + 搜索 + </el-button> + <el-button @click="resetQuery"> + <Icon icon="ep:refresh" class="mr-5px"/> + 重置 + </el-button> <el-button type="primary" plain @click="openForm('create')" v-hasPermi="['system:tenant-package:create']" > - <Icon icon="ep:plus" class="mr-5px" /> + <Icon icon="ep:plus" class="mr-5px"/> 新增 </el-button> </el-form-item> </el-form> </ContentWrap> - <!-- 列表 --> <ContentWrap> - <el-table v-loading="loading" :data="list"> - <el-table-column label="套餐编号" align="center" prop="id" width="120" /> - <el-table-column label="套餐名" align="center" prop="name" /> - <el-table-column label="状态" align="center" prop="status" width="100"> - <template #default="scope"> - <dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.status" /> - </template> - </el-table-column> - <el-table-column label="备注" align="center" prop="remark" /> - <el-table-column - label="创建时间" - align="center" - prop="createTime" - width="180" - :formatter="dateFormatter" - /> - <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> - <template #default="scope"> - <el-button - link - type="primary" - @click="openForm('update', scope.row.id)" - v-hasPermi="['system:tenant-package:update']" - > - 修改 - </el-button> - <el-button - link - type="danger" - @click="handleDelete(scope.row.id)" - v-hasPermi="['system:tenant-package:delete']" - > - 删除 - </el-button> - </template> - </el-table-column> - </el-table> + <el-skeleton :loading="loading"> + <div class="package-card" v-for="(item, index) in packages" :key="`dynamics-${index}`"> + <div class="card-content"> + <img class="card-icon" :src="item.icon"/> + <div class="card-middle"> + <div class="tenant-title">{{ item.name }}</div> + <div class="tenant-operation"> + <el-dropdown @command="(command) => handleCommand(command, item)" + v-hasPermi="[ + 'system:tenant-package:update', + 'system:tenant-package:delete' + ]"> + <el-button type="primary" link> + <Icon icon="ep:more-filled"/> + </el-button> + <template #dropdown> + <el-dropdown-menu> + <el-dropdown-item + command="handleUpdate" + v-if="checkPermi(['system:tenant-package:update'])" + > + <Icon icon="ep:edit"/> + 修改 + </el-dropdown-item> + <el-dropdown-item + command="handleDelete" + v-if="checkPermi(['system:tenant-package:delete'])" + > + <Icon icon="ep:delete"/> + 删除 + </el-dropdown-item> + </el-dropdown-menu> + </template> + </el-dropdown> + </div> + </div> + <div class="description">{{ item.description }}</div> + <div class="label-areas"> + <el-tag + :disable-transitions="true" + :key="i" + v-for="(label, i) in item.labels" + :index="i" + class="label" + > + {{ label }} + </el-tag> + </div> + </div> + </div> + </el-skeleton> <!-- 分页 --> <Pagination + class="pagination" :total="total" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize" @@ -102,22 +112,24 @@ </ContentWrap> <!-- 表单弹窗:添加/修改 --> - <TenantPackageForm ref="formRef" @success="getList" /> + <TenantPackageForm ref="formRef" @success="getList"/> </template> <script lang="ts" setup> -import { DICT_TYPE, getIntDictOptions } from '@/utils/dict' -import { dateFormatter } from '@/utils/formatTime' +import {DICT_TYPE, getIntDictOptions} from '@/utils/dict' import * as TenantPackageApi from '@/api/system/tenantPackage' import TenantPackageForm from './TenantPackageForm.vue' +import {TenantPackageVO} from "@/api/system/tenantPackage"; +import {checkPermi} from "@/utils/permission"; -defineOptions({ name: 'SystemTenantPackage' }) +defineOptions({name: 'SystemTenantPackage'}) const message = useMessage() // 消息弹窗 -const { t } = useI18n() // 国际化 +const {t} = useI18n() // 国际化 const loading = ref(true) // 列表的加载中 const total = ref(0) // 列表的总页数 -const list = ref([]) // 列表的数据 +const packages = ref([]) + const queryParams = reactive({ pageNo: 1, pageSize: 10, @@ -130,10 +142,9 @@ /** 查询列表 */ const getList = async () => { - loading.value = true try { const data = await TenantPackageApi.getTenantPackagePage(queryParams) - list.value = data.list + packages.value = data.list total.value = data.total } finally { loading.value = false @@ -158,6 +169,20 @@ formRef.value.open(type, id) } +/** 操作分发 */ +const handleCommand = (command: string, row: TenantPackageVO) => { + switch (command) { + case 'handleUpdate': + openForm('update', row.id) + break + case 'handleDelete': + handleDelete(row.id) + break + default: + break + } +} + /** 删除按钮操作 */ const handleDelete = async (id: number) => { try { @@ -168,11 +193,95 @@ message.success(t('common.delSuccess')) // 刷新列表 await getList() - } catch {} + } catch { + } +} + +const initData = async () => { + await Promise.all([ + getList() + ]) } /** 初始化 **/ -onMounted(() => { - getList() -}) +initData() + </script> +<style lang="scss" scoped> +.package-card { + display: inline-block; + width: 396px; + height: 379px; + background: #FFFFFF; + border-radius: 4px 4px 4px 4px; + border: 1px solid #EBEDF0; + margin: 0px 8px 8px 0; +} + +.card-content { + margin-left: 10px; +} + +.card-icon { + width: 372px; + height: 200px; + margin: 10px 0 10px 2px; +} + +.card-middle { + width: 396px; + height: 25px; + margin: 0 12px; + display: flex; +} + +.tenant-title { + width: 340px; + height: 25px; + font-family: Microsoft YaHei UI, Microsoft YaHei UI; + font-weight: bold; + font-size: 20px; + color: #282F3D; +} + +.tenant-operation { + margin-right: 12px; +} + +.description { + margin: 8px 12px; + width: 372px; + height: 36px; + font-family: Microsoft YaHei, Microsoft YaHei; + font-weight: 400; + font-size: 14px; + color: #6B7785; + line-height: 18px; + word-wrap: break-word; + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; +} + +.label-areas { + display: flex; + flex-wrap: wrap; + height: 54px; + width: 396px; + margin: 0 8px; +} + +.label { + width: 80px; + height: 20px; + margin: 4px; + border-radius: 80px 80px 80px 80px; + border: 1px solid #417CFF; +} +.pagination { + margin-right: 30px; + margin-top: 400px; +} +</style> -- Gitblit v1.9.3