From b1e092329603c3450d491f3b37439a7d15bd1b65 Mon Sep 17 00:00:00 2001 From: houzhongjian <houzhongyi@126.com> Date: 星期五, 13 九月 2024 16:27:47 +0800 Subject: [PATCH] 应用管理 --- src/views/system/app/index.vue | 43 ++++++++++++-- src/views/system/app/AppForm.vue | 99 ++++++++++++++++++++++----------- 2 files changed, 103 insertions(+), 39 deletions(-) diff --git a/src/views/system/app/AppForm.vue b/src/views/system/app/AppForm.vue index e8598f7..362fd2b 100644 --- a/src/views/system/app/AppForm.vue +++ b/src/views/system/app/AppForm.vue @@ -7,6 +7,44 @@ :rules="formRules" label-width="80px" > + <el-col :span="12"> + <el-form-item label="应用类型"> + <el-select v-model="formData.type" placeholder="请选择"> + <el-option + v-for="dict in getIntDictOptions(DICT_TYPE.SYSTEM_APP_TYPE)" + :key="dict.value" + :label="dict.label" + :value="dict.value" + /> + </el-select> + </el-form-item> + </el-col> + <el-row> + <el-col :span="12"> + <el-form-item label="选择租户" prop="tenantId"> + <el-select v-model="formData.tenantId" clearable placeholder="请选择租户"> + <el-option + v-for="item in tenantList" + :key="item.id" + :label="item.name" + :value="item.id" + /> + </el-select> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="应用分组" prop="groupId"> + <el-select v-model="formData.groupId" clearable placeholder="请选择分组"> + <el-option + v-for="item in groupList" + :key="item.id" + :label="item.name" + :value="item.id" + /> + </el-select> + </el-form-item> + </el-col> + </el-row> <el-row> <el-col :span="12"> <el-form-item label="应用编号" prop="appCode"> @@ -44,33 +82,16 @@ </el-col> </el-row> <el-row> - <el-col :span="12"> - <el-form-item label="应用分组" prop="appGroup"> - <el-input v-model="formData.appGroup" placeholder="请输入应用分组" /> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="加载类型" prop="loadType"> - <el-input v-model="formData.loadType" placeholder="请输入加载类型" /> + <el-col :span="24"> + <el-form-item label="应用图标" prop="icon"> + <UploadImg v-model="formData.icon" :limit="1" /> </el-form-item> </el-col> </el-row> <el-row> - <el-col :span="12"> - <el-form-item label="应用图标" prop="icon"> - <el-input v-model="formData.icon" placeholder="请输入应用图标" /> - </el-form-item> - </el-col> <el-col :span="12"> <el-form-item label="排序" prop="orderNum"> - <el-input v-model="formData.orderNum" placeholder="请输入排序" /> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="12"> - <el-form-item label="开发者" prop="devName"> - <el-input v-model="formData.devName" placeholder="请输入开发者" /> + <el-input-number v-model="formData.orderNum" placeholder="请输入排序" /> </el-form-item> </el-col> <el-col :span="12"> @@ -105,6 +126,8 @@ import { DICT_TYPE, getIntDictOptions } from '@/utils/dict' import * as AppApi from '@/api/system/app' import { CommonStatusEnum } from '@/utils/constants' + import * as TenantApi from "@/api/system/tenant"; + import * as AppGroupApi from "@/api/system/appgroup"; defineOptions({ name: 'SystemAppForm' }) @@ -118,18 +141,20 @@ id: undefined, appCode: undefined, appName: undefined, + type: undefined, appDomain: undefined, apiDomain: undefined, appKey: undefined, appSecret: undefined, - appGroup: undefined, + groupId: undefined, loadType: undefined, icon: undefined, orderNum: undefined, status: CommonStatusEnum.ENABLE, devId: undefined, devName: undefined, - remark: undefined + remark: undefined, + tenantId: undefined }) const formRules = reactive({ appCode: [{ required: true, message: '应用编号不能为空', trigger: 'blur' }], @@ -138,7 +163,8 @@ appSecret: [{ required: true, message: '应用密码不能为空', trigger: 'blur' }] }) const formRef = ref() // 表单 Ref - + const tenantList = ref([] as TenantApi.TenantVO[]) // 租户列表 + const groupList = ref([] as AppGroupApi.AppGroupVO[]) // 分组列表 /** 打开弹窗 */ const open = async (type: string, id?: number) => { dialogVisible.value = true @@ -154,6 +180,8 @@ formLoading.value = false } } + tenantList.value = await TenantApi.getSimpleTenant() + groupList.value = await AppGroupApi.getAppGroupList() } defineExpose({ open }) // 提供 open 方法,用于打开弹窗 @@ -187,16 +215,21 @@ const resetForm = () => { formData.value = { id: undefined, - name: undefined, - packageId: undefined, - contactName: undefined, - contactMobile: undefined, - accountCount: undefined, - expireTime: undefined, - website: undefined, + appCode: undefined, + appName: undefined, + appDomain: undefined, + apiDomain: undefined, + appKey: undefined, + appSecret: undefined, + groupId: undefined, + loadType: undefined, + icon: undefined, + orderNum: undefined, status: CommonStatusEnum.ENABLE, - username: undefined, - password: undefined + devId: undefined, + devName: undefined, + remark: undefined, + tenantId: undefined } formRef.value?.resetFields() } diff --git a/src/views/system/app/index.vue b/src/views/system/app/index.vue index 9ade595..d22cc5f 100644 --- a/src/views/system/app/index.vue +++ b/src/views/system/app/index.vue @@ -76,15 +76,39 @@ <!-- 列表 --> <ContentWrap> <el-table v-loading="loading" :data="list"> + <el-table-column label="应用类型" align="center" prop="type"> + <template #default="scope"> + <dict-tag :type="DICT_TYPE.SYSTEM_APP_TYPE" :value="scope.row.type" /> + </template> + </el-table-column> + <el-table-column label="所属租户" align="center" prop="tenantId"> + <template #default="scope"> + <template v-for="item in tenantList"> + <el-tag type="success" :key="item.id" v-if="item.id === scope.row.tenantId"> + {{ item.name }} + </el-tag> + </template> + </template> + </el-table-column> + <el-table-column label="应用分组" align="center" prop="groupId"> + <template #default="scope"> + <template v-for="item in groupList"> + <el-tag type="warning" :key="item.id" v-if="item.id === scope.row.groupId"> + {{ item.name }} + </el-tag> + </template> + </template> + </el-table-column> <el-table-column label="应用编号" align="center" prop="appCode" /> <el-table-column label="应用名称" align="center" prop="appName" /> <el-table-column label="应用域名" align="center" prop="appDomain" /> <el-table-column label="接口域名" align="center" prop="apiDomain" /> <el-table-column label="应用账号" align="center" prop="appKey" /> - <el-table-column label="应用分组" align="center" prop="appGroup" /> - <el-table-column label="加载类型" align="center" prop="loadType" /> - <el-table-column label="应用图标" align="center" prop="icon" /> - <el-table-column label="开发者" align="center" prop="devName" /> + <el-table-column label="应用图标" align="center" prop="logo"> + <template #default="scope"> + <img width="40px" height="40px" :src="scope.row.icon" /> + </template> + </el-table-column> <el-table-column label="备注" align="center" prop="remark" width="200" /> <el-table-column label="创建时间" @@ -99,7 +123,7 @@ link type="primary" @click="openForm('update', scope.row.id)" - v-hasPermi="['system:tenant:update']" + v-hasPermi="['system:app:update']" > 编辑 </el-button> @@ -107,7 +131,7 @@ link type="danger" @click="handleDelete(scope.row.id)" - v-hasPermi="['system:tenant:delete']" + v-hasPermi="['system:app:delete']" > 删除 </el-button> @@ -133,6 +157,8 @@ import download from '@/utils/download' import * as AppApi from '@/api/system/app' import AppForm from './AppForm.vue' + import * as TenantApi from "@/api/system/tenant"; + import * as AppGroupApi from "@/api/system/appgroup"; defineOptions({name: 'SystemApp'}) @@ -152,6 +178,9 @@ }) const queryFormRef = ref() // 搜索的表单 const exportLoading = ref(false) // 导出的加载中 + + const tenantList = ref([] as TenantApi.TenantVO[]) // 租户列表 + const groupList = ref([] as AppGroupApi.AppGroupVO[]) // 分组列表 /** 查询列表 */ const getList = async () => { @@ -215,5 +244,7 @@ /** 初始化 **/ onMounted(async () => { await getList() + tenantList.value = await TenantApi.getSimpleTenant() + groupList.value = await AppGroupApi.getAppGroupList() }) </script> -- Gitblit v1.9.3