diff --git a/src/api/system/oauth2/client.ts b/src/api/system/oauth2/client.ts index 4c06386d..6f71acad 100644 --- a/src/api/system/oauth2/client.ts +++ b/src/api/system/oauth2/client.ts @@ -21,31 +21,27 @@ export interface OAuth2ClientVO { createTime: Date } -export interface OAuth2ClientPageReqVO extends PageParam { - name?: string - status?: number -} -// 查询 OAuth2列表 -export const getOAuth2ClientPageApi = (params: OAuth2ClientPageReqVO) => { +// 查询 OAuth2 客户端的列表 +export const getOAuth2ClientPage = (params: PageParam) => { return request.get({ url: '/system/oauth2-client/page', params }) } -// 查询 OAuth2详情 -export const getOAuth2ClientApi = (id: number) => { +// 查询 OAuth2 客户端的详情 +export const getOAuth2Client = (id: number) => { return request.get({ url: '/system/oauth2-client/get?id=' + id }) } -// 新增 OAuth2 -export const createOAuth2ClientApi = (data: OAuth2ClientVO) => { +// 新增 OAuth2 客户端 +export const createOAuth2Client = (data: OAuth2ClientVO) => { return request.post({ url: '/system/oauth2-client/create', data }) } -// 修改 OAuth2 -export const updateOAuth2ClientApi = (data: OAuth2ClientVO) => { +// 修改 OAuth2 客户端 +export const updateOAuth2Client = (data: OAuth2ClientVO) => { return request.put({ url: '/system/oauth2-client/update', data }) } // 删除 OAuth2 -export const deleteOAuth2ClientApi = (id: number) => { +export const deleteOAuth2Client = (id: number) => { return request.delete({ url: '/system/oauth2-client/delete?id=' + id }) } diff --git a/src/views/system/oauth2/client/form.vue b/src/views/system/oauth2/client/ClientForm.vue similarity index 88% rename from src/views/system/oauth2/client/form.vue rename to src/views/system/oauth2/client/ClientForm.vue index 2800bd1f..2e2281f5 100644 --- a/src/views/system/oauth2/client/form.vue +++ b/src/views/system/oauth2/client/ClientForm.vue @@ -1,10 +1,10 @@ <template> - <Dialog :title="modelTitle" v-model="modelVisible" width="800"> + <Dialog :title="modelTitle" v-model="modelVisible" scroll max-height="500px"> <el-form ref="formRef" :model="formData" :rules="formRules" - label-width="120px" + label-width="160px" v-loading="formLoading" > <el-form-item label="客户端编号" prop="secret"> @@ -17,7 +17,7 @@ <el-input v-model="formData.name" placeholder="请输入应用名" /> </el-form-item> <el-form-item label="应用图标"> - <imageUpload v-model="formData.logo" :limit="1" /> + <UploadImg v-model="formData.logo" :limit="1" /> </el-form-item> <el-form-item label="应用描述"> <el-input type="textarea" v-model="formData.description" placeholder="请输入应用名" /> @@ -25,11 +25,12 @@ <el-form-item label="状态" prop="status"> <el-radio-group v-model="formData.status"> <el-radio - v-for="dict in getDictOptions(DICT_TYPE.COMMON_STATUS)" + v-for="dict in getIntDictOptions(DICT_TYPE.COMMON_STATUS)" :key="dict.value" - :label="parseInt(dict.value)" - >{{ dict.label }}</el-radio + :label="dict.value" > + {{ dict.label }} + </el-radio> </el-radio-group> </el-form-item> <el-form-item label="访问令牌的有效期" prop="accessTokenValiditySeconds"> @@ -47,7 +48,7 @@ style="width: 500px" > <el-option - v-for="dict in getDictOptions(DICT_TYPE.SYSTEM_OAUTH2_GRANT_TYPE)" + v-for="dict in getIntDictOptions(DICT_TYPE.SYSTEM_OAUTH2_GRANT_TYPE)" :key="dict.value" :label="dict.label" :value="dict.value" @@ -137,15 +138,14 @@ </el-form-item> </el-form> <template #footer> - <div class="dialog-footer"> - <el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button> - <el-button @click="modelVisible = false">取 消</el-button> - </div> + <el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button> + <el-button @click="modelVisible = false">取 消</el-button> </template> </Dialog> </template> <script setup lang="ts"> -import { DICT_TYPE, getDictOptions } from '@/utils/dict' +import { DICT_TYPE, getIntDictOptions } from '@/utils/dict' +import { CommonStatusEnum } from '@/utils/constants' import * as ClientApi from '@/api/system/oauth2/client' const { t } = useI18n() // 国际化 const message = useMessage() // 消息弹窗 @@ -161,7 +161,7 @@ const formData = ref({ name: undefined, logo: undefined, description: undefined, - status: DICT_TYPE.COMMON_STATUS, + status: CommonStatusEnum.ENABLE, accessTokenValiditySeconds: 30 * 60, refreshTokenValiditySeconds: 30 * 24 * 60, redirectUris: [], @@ -190,7 +190,7 @@ const formRules = reactive({ const formRef = ref() // 表单 Ref /** 打开弹窗 */ -const openModal = async (type: string, id?: number) => { +const open = async (type: string, id?: number) => { modelVisible.value = true modelTitle.value = t('action.' + type) formType.value = type @@ -199,13 +199,13 @@ const openModal = async (type: string, id?: number) => { if (id) { formLoading.value = true try { - formData.value = await ClientApi.getOAuth2ClientApi(id) + formData.value = await ClientApi.getOAuth2Client(id) } finally { formLoading.value = false } } } -defineExpose({ openModal }) // 提供 openModal 方法,用于打开弹窗 +defineExpose({ open }) // 提供 open 方法,用于打开弹窗 /** 提交表单 */ const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调 @@ -219,10 +219,10 @@ const submitForm = async () => { try { const data = formData.value as unknown as ClientApi.OAuth2ClientVO if (formType.value === 'create') { - await ClientApi.createOAuth2ClientApi(data) + await ClientApi.createOAuth2Client(data) message.success(t('common.createSuccess')) } else { - await ClientApi.updateOAuth2ClientApi(data) + await ClientApi.updateOAuth2Client(data) message.success(t('common.updateSuccess')) } modelVisible.value = false @@ -242,7 +242,7 @@ const resetForm = () => { name: undefined, logo: undefined, description: undefined, - status: DICT_TYPE.COMMON_STATUS, + status: CommonStatusEnum.ENABLE, accessTokenValiditySeconds: 30 * 60, refreshTokenValiditySeconds: 30 * 24 * 60, redirectUris: [], diff --git a/src/views/system/oauth2/client/index.vue b/src/views/system/oauth2/client/index.vue index ff196c6f..fa04e6d3 100644 --- a/src/views/system/oauth2/client/index.vue +++ b/src/views/system/oauth2/client/index.vue @@ -14,12 +14,13 @@ placeholder="请输入应用名" clearable @keyup.enter="handleQuery" + class="!w-240px" /> </el-form-item> <el-form-item label="状态" prop="status"> - <el-select v-model="queryParams.status" placeholder="请选择状态" clearable size="small"> + <el-select v-model="queryParams.status" placeholder="请选择状态" clearable class="!w-240px"> <el-option - v-for="dict in getDictOptions(DICT_TYPE.COMMON_STATUS)" + v-for="dict in getIntDictOptions(DICT_TYPE.COMMON_STATUS)" :key="dict.value" :label="dict.label" :value="dict.value" @@ -29,7 +30,12 @@ <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 type="primary" @click="openModal('create')" v-hasPermi="['infra:config:create']"> + <el-button + plain + type="primary" + @click="openForm('create')" + v-hasPermi="['system:oauth2-client:create']" + > <Icon icon="ep:plus" class="mr-5px" /> 新增 </el-button> </el-form-item> @@ -82,8 +88,8 @@ <el-button link type="primary" - @click="openModal('update', scope.row.id)" - v-hasPermi="['infra:config:update']" + @click="openForm('update', scope.row.id)" + v-hasPermi="['system:oauth2-client:update']" > 编辑 </el-button> @@ -91,7 +97,7 @@ link type="danger" @click="handleDelete(scope.row.id)" - v-hasPermi="['infra:config:delete']" + v-hasPermi="['system:oauth2-client:delete']" > 删除 </el-button> @@ -108,13 +114,13 @@ </content-wrap> <!-- 表单弹窗:添加/修改 --> - <ClientForm ref="modalRef" @success="getList" /> + <ClientForm ref="formRef" @success="getList" /> </template> <script setup lang="ts"> -import { DICT_TYPE, getDictOptions } from '@/utils/dict' +import { DICT_TYPE, getIntDictOptions } from '@/utils/dict' import { dateFormatter } from '@/utils/formatTime' import * as ClientApi from '@/api/system/oauth2/client' -import ClientForm from './form.vue' +import ClientForm from './ClientForm.vue' const message = useMessage() // 消息弹窗 const { t } = useI18n() // 国际化 @@ -133,7 +139,7 @@ const queryFormRef = ref() // 搜索的表单 const getList = async () => { loading.value = true try { - const data = await ClientApi.getOAuth2ClientPageApi(queryParams) + const data = await ClientApi.getOAuth2ClientPage(queryParams) list.value = data.list total.value = data.total } finally { @@ -154,9 +160,9 @@ const resetQuery = () => { } /** 添加/修改操作 */ -const modalRef = ref() -const openModal = (type: string, id?: number) => { - modalRef.value.openModal(type, id) +const formRef = ref() +const openForm = (type: string, id?: number) => { + formRef.value.open(type, id) } /** 删除按钮操作 */ @@ -165,7 +171,7 @@ const handleDelete = async (id: number) => { // 删除的二次确认 await message.delConfirm() // 发起删除 - await ClientApi.deleteOAuth2ClientApi(id) + await ClientApi.deleteOAuth2Client(id) message.success(t('common.delSuccess')) // 刷新列表 await getList()