正确转到字典类型页面

This commit is contained in:
sindir
2026-01-20 16:19:54 +08:00
parent 3ad32fac9f
commit 46145ff636
2 changed files with 58 additions and 128 deletions

View File

@@ -96,6 +96,32 @@ export const dynamicRoutes = [
}, },
], ],
}, },
// 字典类型路由(直接复制这段)
{
path: '/system/dict',
component: Layout,
alwaysShow: true,
name: 'DictType',
meta: {
title: '字典类型管理',
icon: 'list' // 图标随便选一个比如list、dict不影响跳转
},
children: [
{
path: '',
component: () => import('@/views/system/dict/index.vue'),
name: 'DictTypeList',
meta: {title: '字典类型', noCache: false}
},
{
path: 'data/:dictId?', // 带字典ID参数?表示可选
component: () => import('@/views/system/dict/data.vue'), // 你的data.vue路径
name: 'DictData',
hidden: true, // 不在侧边栏显示(子页面)
meta: {title: '字典数据', activeMenu: '/system/dict'} // 保持侧边栏高亮
}
]
},
]; ];
// 合并常量路由和动态路由,确保所有路由都能被访问 // 合并常量路由和动态路由,确保所有路由都能被访问

View File

@@ -1,55 +1,23 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px"
:model="queryParams" class="query-form">
ref="queryRef"
:inline="true"
v-show="showSearch"
label-width="68px"
class="query-form"
>
<el-form-item label="字典名称" prop="dictName"> <el-form-item label="字典名称" prop="dictName">
<el-input <el-input v-model="queryParams.dictName" placeholder="请输入字典名称" clearable style="width: 240px"
v-model="queryParams.dictName" @keyup.enter="handleQuery" />
placeholder="请输入字典名称"
clearable
style="width: 240px"
@keyup.enter="handleQuery"
/>
</el-form-item> </el-form-item>
<el-form-item label="字典类型" prop="dictType"> <el-form-item label="字典类型" prop="dictType">
<el-input <el-input v-model="queryParams.dictType" placeholder="请输入字典类型" clearable style="width: 240px"
v-model="queryParams.dictType" @keyup.enter="handleQuery" />
placeholder="请输入字典类型"
clearable
style="width: 240px"
@keyup.enter="handleQuery"
/>
</el-form-item> </el-form-item>
<el-form-item label="状态" prop="status"> <el-form-item label="状态" prop="status">
<el-select <el-select v-model="queryParams.status" placeholder="字典状态" clearable style="width: 240px">
v-model="queryParams.status" <el-option v-for="dict in sys_normal_disable" :key="dict.value" :label="dict.label" :value="dict.value" />
placeholder="字典状态"
clearable
style="width: 240px"
>
<el-option
v-for="dict in sys_normal_disable"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="创建时间" style="width: 308px"> <el-form-item label="创建时间" style="width: 308px">
<el-date-picker <el-date-picker v-model="dateRange" value-format="YYYY-MM-DD" type="daterange" range-separator="-"
v-model="dateRange" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
value-format="YYYY-MM-DD"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item class="search-buttons"> <el-form-item class="search-buttons">
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
@@ -59,76 +27,34 @@
<el-row :gutter="10" class="button-group"> <el-row :gutter="10" class="button-group">
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['system:dict:add']">新增</el-button>
type="primary"
plain
icon="Plus"
@click="handleAdd"
v-hasPermi="['system:dict:add']"
>新增</el-button
>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate"
type="success" v-hasPermi="['system:dict:edit']">修改</el-button>
plain
icon="Edit"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['system:dict:edit']"
>修改</el-button
>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete"
type="danger" v-hasPermi="['system:dict:remove']">删除</el-button>
plain
icon="Delete"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['system:dict:remove']"
>删除</el-button
>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button type="warning" plain icon="Download" @click="handleExport"
type="warning" v-hasPermi="['system:dict:export']">导出</el-button>
plain
icon="Download"
@click="handleExport"
v-hasPermi="['system:dict:export']"
>导出</el-button
>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button type="danger" plain icon="Refresh" @click="handleRefreshCache"
type="danger" v-hasPermi="['system:dict:remove']">刷新缓存</el-button>
plain
icon="Refresh"
@click="handleRefreshCache"
v-hasPermi="['system:dict:remove']"
>刷新缓存</el-button
>
</el-col> </el-col>
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>
<div class="table-wrapper"> <div class="table-wrapper">
<el-table <el-table v-loading="loading" :data="typeList" @selection-change="handleSelectionChange">
v-loading="loading"
:data="typeList"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="字典编号" align="center" prop="dictId" /> <el-table-column label="字典编号" align="center" prop="dictId" />
<el-table-column <el-table-column label="字典名称" align="center" prop="dictName" :show-overflow-tooltip="true" />
label="字典名称"
align="center"
prop="dictName"
:show-overflow-tooltip="true"
/>
<el-table-column label="字典类型" align="center" :show-overflow-tooltip="true"> <el-table-column label="字典类型" align="center" :show-overflow-tooltip="true">
<template #default="scope"> <template #default="scope">
<router-link :to="'/system/dict-data/index/' + scope.row.dictId" class="link-type"> <router-link :to="'/system/dict/data/' + scope.row.dictId" class="link-type">
<span>{{ scope.row.dictType }}</span> <span>{{ scope.row.dictType }}</span>
</router-link> </router-link>
</template> </template>
@@ -144,40 +70,18 @@
<span>{{ parseTime(scope.row.createTime) }}</span> <span>{{ parseTime(scope.row.createTime) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column label="操作" align="center" width="160" class-name="small-padding fixed-width">
label="操作"
align="center"
width="160"
class-name="small-padding fixed-width"
>
<template #default="scope"> <template #default="scope">
<el-button <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)"
link v-hasPermi="['system:dict:edit']" class="action-button">修改</el-button>
type="primary" <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)"
icon="Edit" v-hasPermi="['system:dict:remove']" class="action-button">删除</el-button>
@click="handleUpdate(scope.row)"
v-hasPermi="['system:dict:edit']"
class="action-button">修改</el-button
>
<el-button
link
type="primary"
icon="Delete"
@click="handleDelete(scope.row)"
v-hasPermi="['system:dict:remove']"
class="action-button">删除</el-button
>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<div class="pagination-container"> <div class="pagination-container">
<pagination <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
v-show="total > 0" v-model:limit="queryParams.pageSize" @pagination="getList" />
:total="total"
v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
</div> </div>
</div> </div>
@@ -194,7 +98,7 @@
<el-radio-group v-model="form.status"> <el-radio-group v-model="form.status">
<el-radio v-for="dict in sys_normal_disable" :key="dict.value" :label="dict.value">{{ <el-radio v-for="dict in sys_normal_disable" :key="dict.value" :label="dict.value">{{
dict.label dict.label
}}</el-radio> }}</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="备注" prop="remark"> <el-form-item label="备注" prop="remark">
@@ -213,7 +117,7 @@
<script setup name="Dict"> <script setup name="Dict">
import useDictStore from '@/store/modules/dict'; import useDictStore from '@/store/modules/dict';
import {addType, delType, getType, listType, refreshCache, updateType,} from '@/api/system/dict/type'; import { addType, delType, getType, listType, refreshCache, updateType, } from '@/api/system/dict/type';
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
const { sys_normal_disable } = proxy.useDict('sys_normal_disable'); const { sys_normal_disable } = proxy.useDict('sys_normal_disable');
@@ -336,7 +240,7 @@ function handleDelete(row) {
getList(); getList();
proxy.$modal.msgSuccess('删除成功'); proxy.$modal.msgSuccess('删除成功');
}) })
.catch(() => {}); .catch(() => { });
} }
/** 导出按钮操作 */ /** 导出按钮操作 */
function handleExport() { function handleExport() {