diff --git a/src/api/system/role/index.ts b/src/api/system/role/index.ts index 7cb85951..902d5ca6 100644 --- a/src/api/system/role/index.ts +++ b/src/api/system/role/index.ts @@ -10,20 +10,13 @@ export interface RoleVO { createTime: Date } -export interface RolePageReqVO extends PageParam { - name?: string - code?: string - status?: number - createTime?: Date[] -} - export interface UpdateStatusReqVO { id: number status: number } // 查询角色列表 -export const getRolePage = async (params: RolePageReqVO) => { +export const getRolePage = async (params: PageParam) => { return await request.get({ url: '/system/role/page', params }) } diff --git a/src/types/auto-components.d.ts b/src/types/auto-components.d.ts index f6f6a5f9..cb8ff559 100644 --- a/src/types/auto-components.d.ts +++ b/src/types/auto-components.d.ts @@ -52,6 +52,7 @@ declare module '@vue/runtime-core' { ElForm: typeof import('element-plus/es')['ElForm'] ElFormItem: typeof import('element-plus/es')['ElFormItem'] ElIcon: typeof import('element-plus/es')['ElIcon'] + ElImage: typeof import('element-plus/es')['ElImage'] ElImageViewer: typeof import('element-plus/es')['ElImageViewer'] ElInput: typeof import('element-plus/es')['ElInput'] ElInputNumber: typeof import('element-plus/es')['ElInputNumber'] diff --git a/src/views/system/notice/form.vue b/src/views/system/notice/form.vue index 141dd131..87e75623 100644 --- a/src/views/system/notice/form.vue +++ b/src/views/system/notice/form.vue @@ -46,7 +46,6 @@ <script setup lang="ts"> import { DICT_TYPE, getDictOptions } from '@/utils/dict' import * as NoticeApi from '@/api/system/notice' - const { t } = useI18n() // 国际化 const message = useMessage() // 消息弹窗 diff --git a/src/views/system/role/RoleForm.vue b/src/views/system/role/RoleForm.vue index a72eba19..e6444a03 100644 --- a/src/views/system/role/RoleForm.vue +++ b/src/views/system/role/RoleForm.vue @@ -1,5 +1,5 @@ <template> - <Dialog :title="dialogTitle" v-model="modelVisible" width="800"> + <Dialog :title="modelTitle" v-model="modelVisible"> <el-form ref="formRef" :model="formData" @@ -10,9 +10,6 @@ <el-form-item label="角色名称" prop="name"> <el-input v-model="formData.name" placeholder="请输入角色名称" /> </el-form-item> - <el-form-item label="角色类型" prop="type"> - <el-input :model-value="formData.type" placeholder="请输入角色类型" height="150px" /> - </el-form-item> <el-form-item label="角色标识" prop="code"> <el-input :model-value="formData.code" placeholder="请输入角色标识" height="150px" /> </el-form-item> @@ -22,10 +19,10 @@ <el-form-item label="状态" prop="status"> <el-select v-model="formData.status" placeholder="请选择状态" clearable> <el-option - v-for="dict in getDictOptions(DICT_TYPE.COMMON_STATUS)" - :key="parseInt(dict.value)" + v-for="dict in getIntDictOptions(DICT_TYPE.COMMON_STATUS)" + :key="dict.value" :label="dict.label" - :value="parseInt(dict.value)" + :value="dict.value" /> </el-select> </el-form-item> @@ -34,34 +31,25 @@ </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 { getDictOptions } from '@/utils/dict' -import { CommonStatusEnum } from '@/utils/constants' import { DICT_TYPE, getIntDictOptions } from '@/utils/dict' +import { CommonStatusEnum } from '@/utils/constants' import * as RoleApi from '@/api/system/role' -// ========== CRUD 相关 ========== -const dialogTitle = ref('edit') // 弹出层标题 -const formRef = ref() // 表单 Ref const { t } = useI18n() // 国际化 -const dataScopeDictDatas = ref() const message = useMessage() // 消息弹窗 const modelVisible = ref(false) // 弹窗的是否展示 const modelTitle = ref('') // 弹窗的标题 const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用 const formType = ref('') // 表单的类型:create - 新增;update - 修改 - const formData = ref({ id: undefined, name: '', - type: '', code: '', sort: undefined, status: CommonStatusEnum.ENABLE, @@ -74,9 +62,10 @@ const formRules = reactive({ status: [{ required: true, message: '岗位状态不能为空', trigger: 'change' }], remark: [{ required: false, message: '岗位内容不能为空', trigger: 'blur' }] }) +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 @@ -91,12 +80,12 @@ const openModal = async (type: string, id?: number) => { } } } + /** 重置表单 */ const resetForm = () => { formData.value = { id: undefined, name: '', - type: '', code: '', sort: undefined, status: CommonStatusEnum.ENABLE, @@ -104,7 +93,8 @@ const resetForm = () => { } formRef.value?.resetFields() } -defineExpose({ openModal }) // 提供 openModal 方法,用于打开弹窗 +defineExpose({ open }) // 提供 open 方法,用于打开弹窗 + /** 提交表单 */ const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调 const submitForm = async () => { @@ -130,19 +120,4 @@ const submitForm = async () => { formLoading.value = false } } - -const init = () => { - dataScopeDictDatas.value = getIntDictOptions(DICT_TYPE.SYSTEM_DATA_SCOPE) -} -// ========== 初始化 ========== -onMounted(() => { - init() -}) </script> -<style scoped> -.card { - width: 100%; - max-height: 400px; - overflow-y: scroll; -} -</style> diff --git a/src/views/system/role/index.vue b/src/views/system/role/index.vue index 68f2008a..0e75d67d 100644 --- a/src/views/system/role/index.vue +++ b/src/views/system/role/index.vue @@ -14,6 +14,7 @@ placeholder="请输入角色名称" clearable @keyup.enter="handleQuery" + class="!w-240px" /> </el-form-item> <el-form-item label="角色标识" prop="code"> @@ -22,10 +23,11 @@ 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> + <el-select v-model="queryParams.status" placeholder="请选择状态" clearable class="!w-240px"> <el-option v-for="dict in getIntDictOptions(DICT_TYPE.COMMON_STATUS)" :key="dict.value" @@ -48,7 +50,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="['system:role:create']"> + <el-button + type="primary" + plain + @click="openForm('create')" + v-hasPermi="['system:role:create']" + > <Icon icon="ep:plus" class="mr-5px" /> 新增 </el-button> <el-button @@ -66,7 +73,7 @@ <!-- 列表 --> <ContentWrap> - <el-table v-loading="loading" :data="list" align="center"> + <el-table v-loading="loading" :data="list"> <el-table-column label="角色编号" align="center" prop="id" /> <el-table-column label="角色名称" align="center" prop="name" /> <el-table-column label="角色类型" align="center" prop="type" /> @@ -90,12 +97,11 @@ <el-button link type="primary" - @click="openModal('update', scope.row.id)" + @click="openForm('update', scope.row.id)" v-hasPermi="['system:role:update']" > 编辑 </el-button> - <!-- 操作:菜单权限 --> <el-button link type="primary" @@ -106,7 +112,6 @@ > 菜单权限 </el-button> - <!-- 操作:数据权限 --> <el-button link type="primary" @@ -149,18 +154,12 @@ import MenuPermissionForm from './MenuPermissionForm.vue' import { DICT_TYPE, getIntDictOptions } from '@/utils/dict' import { dateFormatter } from '@/utils/formatTime' import download from '@/utils/download' - const message = useMessage() // 消息弹窗 const { t } = useI18n() // 国际化 + const loading = ref(true) // 列表的加载中 const total = ref(0) // 列表的总页数 const list = ref([]) // 列表的数据 -const dialogTitle = ref('编辑') // 弹出层标题 -const actionType = ref('') // 操作按钮的类型 -const modelVisible = ref(false) // 是否显示弹出层 -const queryFormRef = ref() // 搜索的表单 -const exportLoading = ref(false) // 导出的加载中 - const queryParams = reactive({ pageNo: 1, pageSize: 10, @@ -169,13 +168,8 @@ const queryParams = reactive({ status: undefined, createTime: [] }) - -// 设置标题 -const setDialogTile = (type: string) => { - dialogTitle.value = t('action.' + type) - actionType.value = type - modelVisible.value = true -} +const queryFormRef = ref() // 搜索的表单 +const exportLoading = ref(false) // 导出的加载中 /** 查询角色列表 */ const getList = async () => { @@ -203,9 +197,14 @@ const resetQuery = () => { /** 添加/修改操作 */ const formRef = ref() -const openModal = (type: string, id?: number) => { - setDialogTile('编辑') - formRef.value.openModal(type, id) +const openForm = (type: string, id?: number) => { + formRef.value.open(type, id) +} + +/** 数据权限操作 */ +const menuPermissionFormRef = ref() +const handleScope = async (type: string, row: RoleApi.RoleVO) => { + menuPermissionFormRef.value.openForm(type, row) } /** 删除按钮操作 */ @@ -235,13 +234,7 @@ const handleExport = async () => { exportLoading.value = false } } -/** 数据权限操作 */ -const menuPermissionFormRef = ref() -// 权限操作 -const handleScope = async (type: string, row: RoleApi.RoleVO) => { - menuPermissionFormRef.value.openModal(type, row) -} /** 初始化 **/ onMounted(() => { getList()