明树Git Lab

Commit 291bad24 authored by zhanghan's avatar zhanghan

增加历史信息

parent 05d4eaef
Pipeline #108419 passed with stage
in 20 seconds
...@@ -38,7 +38,27 @@ ...@@ -38,7 +38,27 @@
<!-- 主内容Main --> <!-- 主内容Main -->
<el-main class="city-main"> <el-main class="city-main">
<router-view /> <!-- 路由标签页 -->
<div class="tabs-view">
<el-tabs
v-model="activePath"
type="card"
closable
@tab-click="handleTabClick"
@tab-remove="handleTabRemove"
>
<el-tab-pane
v-for="view in visitedViews"
:key="view.path"
:label="view.title"
:name="view.path"
/>
</el-tabs>
</div>
<!-- 路由视图 -->
<div class="view-content">
<router-view />
</div>
</el-main> </el-main>
</el-container> </el-container>
</el-container> </el-container>
...@@ -68,6 +88,61 @@ let userInfo = ref( ...@@ -68,6 +88,61 @@ let userInfo = ref(
const router = useRouter(); const router = useRouter();
const route = useRoute(); const route = useRoute();
// ========== 路由标签页相关 ==========
const visitedViews = ref([]); // 已访问的路由列表
const activePath = ref(""); // 当前激活的路由路径
// 添加路由到已访问列表
const addView = (view) => {
// 检查路由是否已存在
const index = visitedViews.value.findIndex((v) => v.path === view.path);
if (index === -1) {
console.log(view, "viewview");
// 不存在则添加,优先使用 title,其次 meta.title,最后 name
visitedViews.value.push({
path: view.path,
title: view.title || view.meta?.title || view.name || "未命名",
});
}
// 设置当前激活的路由
activePath.value = view.path;
};
// 点击标签切换路由
const handleTabClick = (tab) => {
const path = tab.paneName;
if (path !== route.path) {
router.push(path);
}
};
// 关闭标签
const handleTabRemove = (targetPath) => {
const index = visitedViews.value.findIndex((v) => v.path === targetPath);
if (index !== -1) {
// 移除路由
visitedViews.value.splice(index, 1);
// 如果关闭的是当前路由,则跳转到上一个路由
if (targetPath === route.path) {
if (visitedViews.value.length > 0) {
// 跳转到相邻路由(优先后面的,如果没有则前面的)
const nextView =
visitedViews.value[index] || visitedViews.value[index - 1];
if (nextView) {
router.push(nextView.path);
}
} else {
// 如果没有其他路由,跳转到首页
router.push("/");
}
}
}
};
// ========== 路由标签页相关结束 ==========
// 获取资源库数据 // 获取资源库数据
const getResourceData = () => { const getResourceData = () => {
axios axios
...@@ -92,12 +167,14 @@ const toMessagePage = () => { ...@@ -92,12 +167,14 @@ const toMessagePage = () => {
onMounted(() => { onMounted(() => {
getResourceData(); getResourceData();
getMessageCount(); getMessageCount();
addView(route); // 初始化时添加当前路由
}); });
watch( watch(
() => route.path, () => route.path,
() => { () => {
getMessageCount(); getMessageCount();
addView(route); // 路由变化时添加到标签页
}, },
); );
// 处理退出登录 // 处理退出登录
...@@ -185,7 +262,76 @@ const handleLogout = () => { ...@@ -185,7 +262,76 @@ const handleLogout = () => {
.city-main { .city-main {
height: calc(100vh - 60px); height: calc(100vh - 60px);
overflow-y: auto; overflow-y: auto;
background-color: #ecf2f8;
--el-main-padding: 0; --el-main-padding: 0;
display: flex;
flex-direction: column;
}
// 标签页容器样式
.tabs-view {
background: #fff;
margin: 16px 16px 0 16px;
padding: 10px 16px;
border-radius: 8px;
border-bottom: 1px solid #e4e7ed;
box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08);
:deep(.el-tabs) {
.el-tabs__header {
margin: 0;
border-bottom: none;
}
.el-tabs__nav {
border: none;
}
.el-tabs__item {
height: 32px;
line-height: 32px;
border: 1px solid #d8dce5;
border-radius: 3px;
margin-right: 8px;
color: #495060;
font-size: 12px;
padding: 0 12px;
background: #fff;
transition: all 0.2s;
border-top: 2px solid #d8dce5;
&:hover {
color: #3d84ee;
background: #ecf3fd;
}
&.is-active {
color: #3d84ee;
background: #ecf3fd;
border-color: #3d84ee;
}
}
.el-tabs__item .el-icon-close {
width: 14px;
height: 14px;
font-size: 12px;
&:hover {
background-color: #3d84ee;
color: #fff;
border-radius: 50%;
}
}
}
}
// 路由视图内容
.view-content {
flex: 1;
overflow-y: auto;
height: 0;
} }
.header-right { .header-right {
display: flex; display: flex;
......
import MainLayout from "@/layouts/MainLayout.vue"; import MainLayout from "@/layouts/MainLayout.vue";
const routes = [ const routes = [
{ {
path: "/login", path: "/login",
name: "login", name: "login",
component: () => import("@/views/login/index.vue"), component: () => import("@/views/login/index.vue"),
meta: { nopermission: true }, meta: { nopermission: true, title: "登录" }, // 补充title
}, },
{ {
path: "/gzbPage", path: "/gzbPage",
name: "gzbPage", name: "gzbPage",
title: "数据大屏", title: "数据大屏",
component: () => import("@/views/homePage/index.vue"), component: () => import("@/views/homePage/index.vue"),
meta: { nopermission: true }, meta: { nopermission: true, title: "数据大屏" }, // 补充title
}, },
{ {
path: "/", path: "/",
name: "首页", name: "首页",
redirect: "/message", redirect: "/message",
component: MainLayout, component: MainLayout,
meta: { title: "首页" }, // 根路由补充title
children: [ children: [
{ {
path: "/message", path: "/message",
name: "message", name: "message",
title: "消息中心", title: "消息中心",
meta: { title: "消息中心" }, // 保持原有配置
component: () => import("@/views/systemManage/message.vue"), component: () => import("@/views/systemManage/message.vue"),
}, },
{ {
path: "/homePage", path: "/homePage",
name: "dataSummary", name: "dataSummary",
title: "数据大屏", title: "数据大屏",
meta: { title: "数据大屏" },
component: () => import("@/views/homePage/index.vue"), component: () => import("@/views/homePage/index.vue"),
}, },
{ {
path: "/projectManage", path: "/projectManage",
name: "projectManage", name: "projectManage",
title: "投前管理", title: "投前管理",
redirect: "/projectAllPage", redirect: "/projectAllPage",
meta: { title: "投前管理" },
children: [ children: [
{ {
path: "/projectDraft", path: "/projectDraft",
name: "projectDraft", name: "projectDraft",
title: "项目遴选", title: "项目遴选",
meta: { title: "项目遴选" },
component: () => import("@/views/projectManage/projectDraft.vue"), component: () => import("@/views/projectManage/projectDraft.vue"),
}, },
{ {
path: "/projectSetUp", path: "/projectSetUp",
name: "projectSetUp", name: "projectSetUp",
title: "项目立项", title: "项目立项",
meta: { title: "项目立项" },
component: () => import("@/views/projectManage/projectSetUp.vue"), component: () => import("@/views/projectManage/projectSetUp.vue"),
}, },
{ {
path: "/projectArgument", path: "/projectArgument",
name: "projectArgument", name: "projectArgument",
title: "项目论证", title: "项目论证",
meta: { title: "项目论证" },
component: () => component: () =>
import("@/views/projectManage/projectArgument.vue"), import("@/views/projectManage/projectArgument.vue"),
}, },
...@@ -61,6 +68,7 @@ const routes = [ ...@@ -61,6 +68,7 @@ const routes = [
path: "/projectDecision", path: "/projectDecision",
name: "projectDecision", name: "projectDecision",
title: "项目决策", title: "项目决策",
meta: { title: "项目决策" },
component: () => component: () =>
import("@/views/projectManage/projectDecision.vue"), import("@/views/projectManage/projectDecision.vue"),
}, },
...@@ -68,12 +76,14 @@ const routes = [ ...@@ -68,12 +76,14 @@ const routes = [
path: "/projectAllPage", path: "/projectAllPage",
name: "projectAllPage", name: "projectAllPage",
title: "项目档案库", title: "项目档案库",
meta: { title: "项目档案库" },
component: () => import("@/views/projectManage/projectAllPage.vue"), component: () => import("@/views/projectManage/projectAllPage.vue"),
}, },
{ {
path: "/addProject", path: "/addProject",
name: "addProject", name: "addProject",
title: "新增项目", title: "新增项目",
meta: { title: "新增项目" },
component: () => import("@/views/projectManage/addProject.vue"), component: () => import("@/views/projectManage/addProject.vue"),
}, },
], ],
...@@ -83,11 +93,13 @@ const routes = [ ...@@ -83,11 +93,13 @@ const routes = [
name: "investingManage", name: "investingManage",
title: "投中管理", title: "投中管理",
redirect: "/targetLiabilityStatement", redirect: "/targetLiabilityStatement",
meta: { title: "投中管理" },
children: [ children: [
{ {
path: "/targetLiabilityStatement", path: "/targetLiabilityStatement",
name: "targetLiabilityStatement", name: "targetLiabilityStatement",
title: "投资目标责任书", title: "投资目标责任书",
meta: { title: "投资目标责任书" },
component: () => component: () =>
import("@/views/investingManage/targetLiabilityStatement.vue"), import("@/views/investingManage/targetLiabilityStatement.vue"),
}, },
...@@ -95,12 +107,14 @@ const routes = [ ...@@ -95,12 +107,14 @@ const routes = [
path: "/addStatement", path: "/addStatement",
name: "addStatement", name: "addStatement",
title: "新增责任书", title: "新增责任书",
meta: { title: "新增责任书" },
component: () => import("@/views/investingManage/addStatement.vue"), component: () => import("@/views/investingManage/addStatement.vue"),
}, },
{ {
path: "/targetControl", path: "/targetControl",
name: "targetControl", name: "targetControl",
title: "投资控制", title: "投资控制",
meta: { title: "投资控制" },
component: () => component: () =>
import("@/views/investingManage/targetControl.vue"), import("@/views/investingManage/targetControl.vue"),
}, },
...@@ -108,18 +122,21 @@ const routes = [ ...@@ -108,18 +122,21 @@ const routes = [
path: "/addControl", path: "/addControl",
name: "addControl", name: "addControl",
title: "新增投资控制", title: "新增投资控制",
meta: { title: "新增投资控制" },
component: () => import("@/views/investingManage/addControl.vue"), component: () => import("@/views/investingManage/addControl.vue"),
}, },
{ {
path: "/majorRisk", path: "/majorRisk",
name: "majorRisk", name: "majorRisk",
title: "重大风险防控", title: "重大风险防控",
meta: { title: "重大风险防控" },
component: () => import("@/views/investingManage/majorRisk.vue"), component: () => import("@/views/investingManage/majorRisk.vue"),
}, },
{ {
path: "/constructionTime", path: "/constructionTime",
name: "constructionTime", name: "constructionTime",
title: "建设期投资回收", title: "建设期投资回收",
meta: { title: "建设期投资回收" },
component: () => component: () =>
import("@/views/investingManage/constructionTime.vue"), import("@/views/investingManage/constructionTime.vue"),
}, },
...@@ -127,6 +144,7 @@ const routes = [ ...@@ -127,6 +144,7 @@ const routes = [
path: "/constructionTimeAdd", path: "/constructionTimeAdd",
name: "constructionTimeAdd", name: "constructionTimeAdd",
title: "建设期投资回收", title: "建设期投资回收",
meta: { title: "建设期投资回收" },
component: () => component: () =>
import("@/views/investingManage/constructionTimeAdd.vue"), import("@/views/investingManage/constructionTimeAdd.vue"),
}, },
...@@ -134,18 +152,21 @@ const routes = [ ...@@ -134,18 +152,21 @@ const routes = [
path: "/addRisk", path: "/addRisk",
name: "addRisk", name: "addRisk",
title: "新增重大风险", title: "新增重大风险",
meta: { title: "新增重大风险" },
component: () => import("@/views/investingManage/addRisk.vue"), component: () => import("@/views/investingManage/addRisk.vue"),
}, },
{ {
path: "/construction", path: "/construction",
name: "construction", name: "construction",
title: "建设期投资检查", title: "建设期投资检查",
meta: { title: "建设期投资检查" },
component: () => import("@/views/investingManage/construction.vue"), component: () => import("@/views/investingManage/construction.vue"),
}, },
{ {
path: "/constructionAdd", path: "/constructionAdd",
name: "constructionAdd", name: "constructionAdd",
title: "建设期投资检查", title: "建设期投资检查",
meta: { title: "建设期投资检查" },
component: () => component: () =>
import("@/views/investingManage/constructionAdd.vue"), import("@/views/investingManage/constructionAdd.vue"),
}, },
...@@ -153,51 +174,58 @@ const routes = [ ...@@ -153,51 +174,58 @@ const routes = [
path: "/bigIssues", path: "/bigIssues",
name: "bigIssues", name: "bigIssues",
title: "重大事项审批", title: "重大事项审批",
meta: { title: "重大事项审批" },
component: () => import("@/views/investingManage/bigIssues.vue"), component: () => import("@/views/investingManage/bigIssues.vue"),
}, },
{ {
path: "/bigIssuesAdd", path: "/bigIssuesAdd",
name: "bigIssuesAdd", name: "bigIssuesAdd",
title: "重大事项审批", title: "重大事项审批",
meta: { title: "重大事项审批" },
component: () => import("@/views/investingManage/bigIssuesAdd.vue"), component: () => import("@/views/investingManage/bigIssuesAdd.vue"),
}, },
{ {
path: "/quit", path: "/quit",
name: "quit", name: "quit",
title: "项目退出", title: "项目退出",
meta: { title: "项目退出" },
component: () => import("@/views/investingManage/quit.vue"), component: () => import("@/views/investingManage/quit.vue"),
}, },
{ {
path: "/quitAdd", path: "/quitAdd",
name: "quitAdd", name: "quitAdd",
title: "项目退出", title: "项目退出",
meta: { title: "项目退出" },
component: () => import("@/views/investingManage/quitAdd.vue"), component: () => import("@/views/investingManage/quitAdd.vue"),
}, },
{ {
path: "/decision", path: "/decision",
name: "decision", name: "decision",
title: "重新决策", title: "重新决策",
meta: { title: "重新决策" },
component: () => import("@/views/investingManage/decision.vue"), component: () => import("@/views/investingManage/decision.vue"),
}, },
{ {
path: "/decisionAdd", path: "/decisionAdd",
name: "decisionAdd", name: "decisionAdd",
title: "重新决策", title: "重新决策",
meta: { title: "重新决策" },
component: () => import("@/views/investingManage/decisionAdd.vue"), component: () => import("@/views/investingManage/decisionAdd.vue"),
}, },
], ],
}, },
{ {
path: "/castbehind", path: "/castbehind",
name: "castbehind", name: "castbehind",
title: "投后管理", title: "投后管理",
redirect: "/runningPeriod", redirect: "/runningPeriod",
meta: { title: "投后管理" },
children: [ children: [
{ {
path: "/investmentCecovery", path: "/investmentCecovery",
name: "investmentCecovery", name: "investmentCecovery",
title: "运营期投资回收", title: "运营期投资回收",
meta: { title: "运营期投资回收" },
component: () => component: () =>
import("@/views/castbehind/investmentCecovery.vue"), import("@/views/castbehind/investmentCecovery.vue"),
}, },
...@@ -205,6 +233,7 @@ const routes = [ ...@@ -205,6 +233,7 @@ const routes = [
path: "/investmentCecoveryAdd", path: "/investmentCecoveryAdd",
name: "investmentCecoveryAdd", name: "investmentCecoveryAdd",
title: "运营期投资回收", title: "运营期投资回收",
meta: { title: "运营期投资回收详情" },
component: () => component: () =>
import("@/views/castbehind/investmentCecoveryAdd.vue"), import("@/views/castbehind/investmentCecoveryAdd.vue"),
}, },
...@@ -212,37 +241,42 @@ const routes = [ ...@@ -212,37 +241,42 @@ const routes = [
path: "/runningPeriod", path: "/runningPeriod",
name: "runningPeriod", name: "runningPeriod",
title: "运营期投资检查", title: "运营期投资检查",
meta: { title: "运营期投资检查" },
component: () => import("@/views/castbehind/runningPeriod.vue"), component: () => import("@/views/castbehind/runningPeriod.vue"),
}, },
{ {
path: "/runningPeriodAdd", path: "/runningPeriodAdd",
name: "runningPeriodAdd", name: "runningPeriodAdd",
title: "运营期投资检查", title: "运营期投资检查",
meta: { title: "运营期投资检查" },
component: () => import("@/views/castbehind/runningPeriodAdd.vue"), component: () => import("@/views/castbehind/runningPeriodAdd.vue"),
}, },
{ {
path: "/evaluate", path: "/evaluate",
name: "evaluate", name: "evaluate",
title: "投资后评价", title: "投资后评价",
meta: { title: "投资后评价" },
component: () => import("@/views/castbehind/evaluate.vue"), component: () => import("@/views/castbehind/evaluate.vue"),
}, },
{ {
path: "/evaluateAdd", path: "/evaluateAdd",
name: "evaluateAdd", name: "evaluateAdd",
title: "投资后评价", title: "投资后评价",
meta: { title: "投资后评价" },
component: () => import("@/views/castbehind/evaluateAdd.vue"), component: () => import("@/views/castbehind/evaluateAdd.vue"),
}, },
{ {
path: "/turnover", path: "/turnover",
name: "turnover", name: "turnover",
title: "移交管理", title: "移交管理",
meta: { title: "移交管理" },
component: () => import("@/views/castbehind/turnover.vue"), component: () => import("@/views/castbehind/turnover.vue"),
}, },
{ {
path: "/turnoverAdd", path: "/turnoverAdd",
name: "turnoverAdd", name: "turnoverAdd",
title: "移交管理", title: "移交管理",
meta: { title: "移交管理" },
component: () => import("@/views/castbehind/turnoverAdd.vue"), component: () => import("@/views/castbehind/turnoverAdd.vue"),
}, },
], ],
...@@ -251,6 +285,7 @@ const routes = [ ...@@ -251,6 +285,7 @@ const routes = [
path: "/templateManage", path: "/templateManage",
name: "templateManage", name: "templateManage",
title: "模板管理", title: "模板管理",
meta: { title: "模板管理" },
component: () => import("@/views/projectManage/templateManage.vue"), component: () => import("@/views/projectManage/templateManage.vue"),
}, },
{ {
...@@ -258,23 +293,27 @@ const routes = [ ...@@ -258,23 +293,27 @@ const routes = [
name: "everydayPage", name: "everydayPage",
title: "日常管理", title: "日常管理",
redirect: "/share", redirect: "/share",
meta: { title: "日常管理" },
children: [ children: [
{ {
path: "/share", path: "/share",
name: "share", name: "share",
title: "参股企业管理", title: "参股企业管理",
meta: { title: "参股企业管理" },
component: () => import("@/views/everydayPage/share.vue"), component: () => import("@/views/everydayPage/share.vue"),
}, },
{ {
path: "/shareAdd", path: "/shareAdd",
name: "shareAdd", name: "shareAdd",
title: "参股企业管理", title: "参股企业管理",
meta: { title: "参股企业管理" },
component: () => import("@/views/everydayPage/shareAdd.vue"), component: () => import("@/views/everydayPage/shareAdd.vue"),
}, },
{ {
path: "/SuperFormExample", path: "/SuperFormExample",
name: "SuperFormExample", name: "SuperFormExample",
title: "测试组件", title: "测试组件",
meta: { title: "测试组件" },
component: () => component: () =>
import("@/views/everydayPage/SuperFormExample.vue"), import("@/views/everydayPage/SuperFormExample.vue"),
}, },
...@@ -282,42 +321,49 @@ const routes = [ ...@@ -282,42 +321,49 @@ const routes = [
path: "/system", path: "/system",
name: "system", name: "system",
title: "体系建设", title: "体系建设",
meta: { title: "体系建设" },
component: () => import("@/views/everydayPage/system.vue"), component: () => import("@/views/everydayPage/system.vue"),
}, },
{ {
path: "/systemAdd", path: "/systemAdd",
name: "systemAdd", name: "systemAdd",
title: "体系建设", title: "体系建设",
meta: { title: "体系建设" },
component: () => import("@/views/everydayPage/systemAdd.vue"), component: () => import("@/views/everydayPage/systemAdd.vue"),
}, },
{ {
path: "/investment", path: "/investment",
name: "investment", name: "investment",
title: "投资规划", title: "投资规划",
meta: { title: "投资规划" },
component: () => import("@/views/everydayPage/investment.vue"), component: () => import("@/views/everydayPage/investment.vue"),
}, },
{ {
path: "/investmentAdd", path: "/investmentAdd",
name: "investmentAdd", name: "investmentAdd",
title: "投资规划", title: "投资规划",
meta: { title: "投资规划" },
component: () => import("@/views/everydayPage/investmentAdd.vue"), component: () => import("@/views/everydayPage/investmentAdd.vue"),
}, },
{ {
path: "/everyday", path: "/everyday",
name: "everyday", name: "everyday",
title: "日常信息", title: "日常信息",
meta: { title: "日常信息" },
component: () => import("@/views/everydayPage/everyday.vue"), component: () => import("@/views/everydayPage/everyday.vue"),
}, },
{ {
path: "/everydayAdd", path: "/everydayAdd",
name: "everydayAdd", name: "everydayAdd",
title: "日常信息", title: "日常信息",
meta: { title: "日常信息" },
component: () => import("@/views/everydayPage/everydayAdd.vue"), component: () => import("@/views/everydayPage/everydayAdd.vue"),
}, },
{ {
path: "/informationConstruction", path: "/informationConstruction",
name: "informationConstruction", name: "informationConstruction",
title: "信息化建设", title: "信息化建设",
meta: { title: "信息化建设" },
component: () => component: () =>
import("@/views/everydayPage/informationConstruction.vue"), import("@/views/everydayPage/informationConstruction.vue"),
}, },
...@@ -325,6 +371,7 @@ const routes = [ ...@@ -325,6 +371,7 @@ const routes = [
path: "/informationConstructionAdd", path: "/informationConstructionAdd",
name: "informationConstructionAdd", name: "informationConstructionAdd",
title: "信息化建设", title: "信息化建设",
meta: { title: "信息化建设" },
component: () => component: () =>
import("@/views/everydayPage/informationConstructionAdd.vue"), import("@/views/everydayPage/informationConstructionAdd.vue"),
}, },
...@@ -332,44 +379,44 @@ const routes = [ ...@@ -332,44 +379,44 @@ const routes = [
path: "/vscouncil", path: "/vscouncil",
name: "vscouncil", name: "vscouncil",
title: "投委会管理", title: "投委会管理",
meta: { title: "投委会管理" },
component: () => import("@/views/everydayPage/vscouncil.vue"), component: () => import("@/views/everydayPage/vscouncil.vue"),
}, },
{ {
path: "/vscouncilAdd", path: "/vscouncilAdd",
name: "vscouncilAdd", name: "vscouncilAdd",
title: "投委会管理", title: "投委会管理",
meta: { title: "投委会管理" },
component: () => import("@/views/everydayPage/vscouncilAdd.vue"), component: () => import("@/views/everydayPage/vscouncilAdd.vue"),
}, },
{ {
path: "/record", path: "/record",
name: "record", name: "record",
title: "投资档案管理", title: "投资档案管理",
meta: { title: "投资档案管理" },
component: () => import("@/views/everydayPage/record.vue"), component: () => import("@/views/everydayPage/record.vue"),
}, },
{ {
path: "/recordAdd", path: "/recordAdd",
name: "recordAdd", name: "recordAdd",
title: "投资档案管理", title: "投资档案管理",
meta: { title: "投资档案管理" },
component: () => import("@/views/everydayPage/recordAdd.vue"), component: () => import("@/views/everydayPage/recordAdd.vue"),
}, },
{ {
path: "/annual", path: "/annual",
name: "annual", name: "annual",
title: "年度计划", title: "年度计划",
meta: { title: "年度计划" },
component: () => import("@/views/everydayPage/annual.vue"), component: () => import("@/views/everydayPage/annual.vue"),
}, },
{ {
path: "/annualAdd", path: "/annualAdd",
name: "annualAdd", name: "annualAdd",
title: "年度计划", title: "年度计划",
meta: { title: "年度计划" },
component: () => import("@/views/everydayPage/annualAdd.vue"), component: () => import("@/views/everydayPage/annualAdd.vue"),
}, },
// {
// path: "/bigScreen",
// name: "bigScreen",
// title: "可视化大屏",
// component: () => import("@/views/everydayPage/bigScreen.vue"),
// },
], ],
}, },
{ {
...@@ -377,31 +424,34 @@ const routes = [ ...@@ -377,31 +424,34 @@ const routes = [
name: "elseManage", name: "elseManage",
title: "其他管理", title: "其他管理",
redirect: "/share", redirect: "/share",
meta: { title: "其他管理" },
children: [ children: [
{ {
path: "/cost", path: "/cost",
name: "cost", name: "cost",
title: "成本管理", title: "成本管理",
meta: { title: "成本管理" },
component: () => import("@/views/elseManage/cost.vue"), component: () => import("@/views/elseManage/cost.vue"),
}, },
{ {
path: "/costAdd", path: "/costAdd",
name: "costAdd", name: "costAdd",
title: "成本管理", title: "成本管理",
meta: { title: "成本管理" },
component: () => import("@/views/elseManage/costAdd.vue"), component: () => import("@/views/elseManage/costAdd.vue"),
}, },
{ {
path: "/property", path: "/property",
name: "property", name: "property",
title: "资产管理情况", title: "资产管理情况",
meta: { title: "资产管理情况" },
component: () => import("@/views/elseManage/property.vue"), component: () => import("@/views/elseManage/property.vue"),
}, },
{ {
path: "/link", path: "/link",
name: "link", name: "link",
title: "链接管理", title: "链接管理",
meta: { title: "链接管理" },
component: () => import("@/views/elseManage/link.vue"), component: () => import("@/views/elseManage/link.vue"),
}, },
], ],
...@@ -410,36 +460,41 @@ const routes = [ ...@@ -410,36 +460,41 @@ const routes = [
path: "/systemManage", path: "/systemManage",
name: "systemManage", name: "systemManage",
title: "系统管理", title: "系统管理",
meta: { menuName: "系统管理" }, meta: { menuName: "系统管理", title: "系统管理" }, // 补充title字段
children: [ children: [
{ {
path: "departManage", path: "departManage",
name: "departManage", name: "departManage",
title: "部门管理", title: "部门管理",
meta: { title: "部门管理" },
component: () => import("@/views/systemManage/departManage.vue"), component: () => import("@/views/systemManage/departManage.vue"),
}, },
{ {
path: "userManage", path: "userManage",
name: "userManage", name: "userManage",
title: "用户管理", title: "用户管理",
meta: { title: "用户管理" },
component: () => import("@/views/systemManage/userManage.vue"), component: () => import("@/views/systemManage/userManage.vue"),
}, },
{ {
path: "roleManage", path: "roleManage",
name: "roleManage", name: "roleManage",
title: "角色管理", title: "角色管理",
meta: { title: "角色管理" },
component: () => import("@/views/systemManage/roleManage.vue"), component: () => import("@/views/systemManage/roleManage.vue"),
}, },
{ {
path: "menuManage", path: "menuManage",
name: "menuManage", name: "menuManage",
title: "菜单管理", title: "菜单管理",
meta: { title: "菜单管理" },
component: () => import("@/views/systemManage/menuManage.vue"), component: () => import("@/views/systemManage/menuManage.vue"),
}, },
{ {
path: "resourceManage", path: "resourceManage",
name: "resourceManage", name: "resourceManage",
title: "资源库管理", title: "资源库管理",
meta: { title: "资源库管理" },
component: () => import("@/views/systemManage/resourceManage.vue"), component: () => import("@/views/systemManage/resourceManage.vue"),
}, },
], ],
...@@ -448,6 +503,7 @@ const routes = [ ...@@ -448,6 +503,7 @@ const routes = [
path: "/building", path: "/building",
name: "building", name: "building",
title: "建设中", title: "建设中",
meta: { title: "建设中" },
component: () => import("@/views/homePage/building.vue"), component: () => import("@/views/homePage/building.vue"),
}, },
], ],
......
.system-manage-container {
padding: 16px;
background: #ecf2f8;
height: 100%;
display: flex;
flex-direction: column;
box-sizing: border-box;
}
.system-manage-header {
background: rgba(255, 255, 255, 0.9);
border-radius: 8px;
padding: 12px 20px 0;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 10px;
}
.system-manage-header .header-left {
flex: 1;
width: 0;
}
.system-manage-header .header-left .el-input,
.system-manage-header .header-left .el-select {
width: 220px;
}
.system-manage-content {
background: rgba(255, 255, 255, 0.9);
border-radius: 8px;
padding: 20px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
.manage-content {
flex: 1;
height: 0;
}
.manage-content .common-table {
height: 100%;
display: flex;
flex-direction: column;
}
.manage-content .common-table .table-container {
flex: 1;
height: 0;
display: flex;
flex-direction: column;
}
.manage-content .common-table .table-container .el-table {
flex: 1;
height: 0;
}
.manage-container {
width: 100%;
height: 100%;
padding: 20px;
box-sizing: border-box;
display: flex;
flex-direction: column;
background: rgba(157, 188, 218, 0.1);
}
.manage-wrap {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
background: rgba(255, 255, 255, 0.9);
border-radius: 8px;
padding: 12px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
.manage-header {
display: flex;
justify-content: space-between;
margin-bottom: 10px;
}
.manage-content {
flex: 1;
height: 0;
display: flex;
flex-direction: column;
}
.manage-content .common-table {
height: 100%;
display: flex;
flex-direction: column;
}
.manage-content .common-table .table-container {
flex: 1;
height: 0;
display: flex;
flex-direction: column;
}
.manage-content .common-table .table-container .el-table {
flex: 1;
height: 0;
}
.add-project-container {
width: 100%;
height: 100%;
padding: 20px;
box-sizing: border-box;
display: flex;
flex-direction: column;
}
.add-project-container .el-collapse-item__header {
color: var(--el-color-primary);
}
.add-project-header {
display: flex;
justify-content: space-between;
margin-bottom: 10px;
}
.add-project-content {
flex: 1;
height: 0;
display: flex;
flex-direction: column;
}
.add-project-content .tabs-content {
flex: 1;
height: 0;
display: flex;
flex-direction: column;
}
.add-project-content .tabs-content > .el-tabs {
flex: 1;
height: 0;
}
.add-project-content .el-tabs {
height: 100%;
}
.add-project-content .el-tab-pane {
height: 100%;
}
.add-project-content .tab-content {
height: 100%;
overflow: auto;
padding: 0 10px;
}
.add-project-content .tab-content .col-title {
height: 24px;
line-height: 24px;
font-weight: bold;
text-align: center;
}
.add-project-content .tab-content .tab-handle {
margin: 10px 0;
display: flex;
justify-content: flex-end;
align-items: center;
}
.add-project-content .tab-content .el-table {
margin-bottom: 10px;
}
.add-project-content .tab-content .el-table thead {
color: #000;
}
.add-project-content .tab-content .el-table thead th {
background: #f5f7fa;
}
.add-project-content .tab-content .el-table thead th .cell {
text-align: center;
}
.add-project-content .tab-content .el-table .sums-column {
display: flex;
flex-direction: column;
justify-content: flex-start;
}
.add-project-content .tab-content .el-table .sums-column > div {
height: 26px;
line-height: 26px;
text-align: center;
}
.add-project-content .tab-content .upload-file-wrap {
display: flex;
justify-content: space-between;
flex-wrap: wrap;
}
.add-project-content .tab-content .upload-file-wrap .file-name {
flex: 1;
width: 0;
color: #409eff;
cursor: pointer;
-webkit-background-clip: text;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.add-project-content .tab-content .upload-file-wrap .delete-btn {
cursor: pointer;
color: #f56c6c;
}
.add-project-content .tab-content .el-select__wrapper .el-select__selection.is-near {
max-height: 120px;
overflow: auto;
}
.add-project-content .always-click {
padding: 2px;
font-size: 12px;
cursor: pointer !important;
color: var(--el-color-primary);
font-weight: 500;
font-family: Arial, sans-serif;
display: inline-flex;
align-items: center;
}
.add-project-content .project-tab-content {
padding: 0 20px;
height: 100%;
}
.add-dialog .el-tree {
width: 100%;
}
.tree-content {
overflow: auto;
position: relative;
}
.tree-content .el-tree:not(:hover) {
scrollbar-width: none;
-ms-overflow-style: none;
}
.tree-content .el-tree:not(:hover)::-webkit-scrollbar {
display: none;
}
.tree-content .el-tree:hover {
scrollbar-width: thin;
}
.tree-content .el-tree:hover::-webkit-scrollbar {
display: block;
width: 6px;
}
.tree-content .el-tree:hover::-webkit-scrollbar-thumb {
background-color: rgba(144, 147, 153, 0.3);
border-radius: 3px;
}
.tree-content .el-tree:hover::-webkit-scrollbar-track {
background-color: transparent;
}
.tree-content .custom-tree-node {
flex: 1;
display: flex;
align-items: center;
justify-content: space-between;
font-size: 14px;
padding-right: 8px;
}
.tree-content .custom-tree-node .node-name {
flex: 1;
width: 0;
-webkit-background-clip: text;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.tree-content .custom-tree-node .node-key {
font-size: 12px;
color: #969696;
}
.system-manage-container{ .system-manage-container {
padding: 16px;
background: #ecf2f8;
height: 100%;
display: flex;
flex-direction: column;
box-sizing: border-box;
}
.system-manage-header {
background: rgba(255, 255, 255, 0.9);
border-radius: 8px;
padding: 12px 20px 0;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 10px;
.header-left {
flex: 1;
width: 0;
.el-input,
.el-select {
width: 220px;
}
}
}
.system-manage-content {
background: rgba(255, 255, 255, 0.9);
border-radius: 8px;
padding: 20px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
.manage-content {
flex: 1;
height: 0;
.common-table {
height: 100%;
display: flex;
flex-direction: column;
.table-container {
flex: 1;
height: 0;
display: flex;
flex-direction: column;
.el-table {
flex: 1;
height: 0;
}
}
}
}
.manage {
&-container {
width: 100%;
height: 100%;
padding: 20px; padding: 20px;
box-sizing: border-box;
display: flex;
flex-direction: column;
background: rgba(157, 188, 218, 0.1); background: rgba(157, 188, 218, 0.1);
}
&-wrap {
width: 100%;
height: 100%; height: 100%;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
box-sizing: border-box;
}
.system-manage-header{
background: rgba(255, 255, 255, 0.9); background: rgba(255, 255, 255, 0.9);
border-radius: 8px; border-radius: 8px;
padding: 12px 20px 0; padding: 12px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
&-header {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center;
margin-bottom: 10px; margin-bottom: 10px;
.header-left{ }
flex: 1; &-content {
width: 0;
.el-input, .el-select{
width: 220px;
}
}
}
.system-manage-content{
background: rgba(255, 255, 255, 0.9);
border-radius: 8px;
padding: 20px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
.manage-content{
flex: 1; flex: 1;
height: 0; height: 0;
.common-table{ display: flex;
height: 100%; flex-direction: column;
.common-table {
height: 100%;
display: flex;
flex-direction: column;
.table-container {
flex: 1;
height: 0;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
.table-container{ .el-table {
flex: 1; flex: 1;
height: 0; height: 0;
display: flex;
flex-direction: column;
.el-table{
flex: 1;
height: 0;
}
} }
}
} }
}
} }
.manage{
&-container{
width: 100%;
height: 100%;
padding: 20px;
box-sizing: border-box;
display: flex;
flex-direction: column;
background: rgba(157, 188, 218, 0.1);
}
&-wrap{
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
background: rgba(255, 255, 255, 0.9);
border-radius: 8px;
padding: 12px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
&-header{ .add-project {
display: flex; &-container {
justify-content: space-between; width: 100%;
margin-bottom: 10px; height: 100%;
padding: 20px;
box-sizing: border-box;
display: flex;
flex-direction: column;
.el-collapse-item__header {
color: var(--el-color-primary);
} }
&-content{ }
&-header {
display: flex;
justify-content: space-between;
margin-bottom: 10px;
}
&-content {
flex: 1;
height: 0;
display: flex;
flex-direction: column;
.tabs-content {
flex: 1;
height: 0;
display: flex;
flex-direction: column;
& > .el-tabs {
flex: 1; flex: 1;
height: 0; height: 0;
display: flex; }
flex-direction: column;
.common-table{
height: 100%;
display: flex;
flex-direction: column;
.table-container{
flex: 1;
height: 0;
display: flex;
flex-direction: column;
.el-table{
flex: 1;
height: 0;
}
}
}
} }
} .el-tabs {
height: 100%;
.add-project{
&-container{
width: 100%;
height: 100%;
padding: 20px;
box-sizing: border-box;
display: flex;
flex-direction: column;
.el-collapse-item__header{
color: var(--el-color-primary);
}
} }
&-header{ .el-tab-pane {
display: flex; height: 100%;
justify-content: space-between;
margin-bottom: 10px;
} }
&-content{ .tab-content {
flex: 1; height: 100%;
height: 0; overflow: auto;
padding: 0 10px;
.col-title {
height: 24px;
line-height: 24px;
font-weight: bold;
text-align: center;
}
.tab-handle {
margin: 10px 0;
display: flex; display: flex;
flex-direction: column; justify-content: flex-end;
.tabs-content{ align-items: center;
flex: 1; }
height: 0; .el-table {
display: flex; margin-bottom: 10px;
flex-direction: column; thead {
&>.el-tabs{ color: #000;
flex: 1; th {
height: 0; background: #f5f7fa;
.cell {
text-align: center;
} }
}
} }
.el-tabs{ .sums-column {
height: 100%; display: flex;
} flex-direction: column;
.el-tab-pane{ justify-content: flex-start;
height: 100%; & > div {
height: 26px;
line-height: 26px;
text-align: center;
}
} }
.tab-content{ }
height: 100%; .upload-file-wrap {
overflow: auto; display: flex;
padding: 0 10px; justify-content: space-between;
.col-title{ flex-wrap: wrap;
height: 24px; .file-name {
line-height: 24px; flex: 1;
font-weight: bold; width: 0;
text-align: center; color: #409eff;
} cursor: pointer;
.tab-handle{ -webkit-background-clip: text;
margin: 10px 0; white-space: nowrap;
display: flex; overflow: hidden;
justify-content: flex-end; text-overflow: ellipsis;
align-items: center;
}
.el-table{
margin-bottom: 10px;
thead {
color: #000;
th{
background: #f5f7fa;
.cell{
text-align: center;
}
}
}
.sums-column{
display: flex;
flex-direction: column;
justify-content: flex-start;
&>div{
height: 26px;
line-height: 26px;
text-align: center;
}
}
}
.upload-file-wrap{
display: flex;
justify-content: space-between;
flex-wrap: wrap;
.file-name{
flex: 1;
width: 0;
color: #409eff;
cursor: pointer;
-webkit-background-clip: text;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.delete-btn{
cursor: pointer;
color: #F56C6C;
}
}
.el-select__wrapper{
.el-select__selection.is-near{
max-height: 120px;
overflow: auto;
}
}
} }
.always-click{ .delete-btn {
padding: 2px; cursor: pointer;
font-size: 12px; color: #f56c6c;
cursor: pointer !important;
color: var(--el-color-primary);
font-weight: 500;
font-family: Arial, sans-serif;
display: inline-flex;
align-items: center;
} }
.project-tab-content{ }
padding: 0 20px; .el-select__wrapper {
height: 100%; .el-select__selection.is-near {
max-height: 120px;
overflow: auto;
} }
}
} }
} .always-click {
.add-dialog{ padding: 2px;
.el-tree{ font-size: 12px;
width: 100%; cursor: pointer !important;
color: var(--el-color-primary);
font-weight: 500;
font-family: Arial, sans-serif;
display: inline-flex;
align-items: center;
}
.project-tab-content {
padding: 0 20px;
height: 100%;
} }
}
}
.add-dialog {
.el-tree {
width: 100%;
}
} }
.tree-content { .tree-content {
overflow: auto; overflow: auto;
position: relative; position: relative;
.el-tree { .el-tree {
// max-height: 700px; // max-height: 700px;
// overflow-y: auto; // overflow-y: auto;
// 只有当内容超过700px时才显示滚动条 // 只有当内容超过700px时才显示滚动条
&:not(:hover) { &:not(:hover) {
scrollbar-width: none; scrollbar-width: none;
-ms-overflow-style: none; -ms-overflow-style: none;
&::-webkit-scrollbar { &::-webkit-scrollbar {
display: none; display: none;
}
} }
&:hover { }
scrollbar-width: thin; &:hover {
&::-webkit-scrollbar { scrollbar-width: thin;
display: block; &::-webkit-scrollbar {
width: 6px; display: block;
} width: 6px;
&::-webkit-scrollbar-thumb { }
background-color: rgba(144, 147, 153, 0.3); &::-webkit-scrollbar-thumb {
border-radius: 3px; background-color: rgba(144, 147, 153, 0.3);
} border-radius: 3px;
&::-webkit-scrollbar-track { }
background-color: transparent; &::-webkit-scrollbar-track {
} background-color: transparent;
} }
} }
.custom-tree-node { }
flex: 1; .custom-tree-node {
display: flex; flex: 1;
align-items: center; display: flex;
justify-content: space-between; align-items: center;
font-size: 14px; justify-content: space-between;
padding-right: 8px; font-size: 14px;
.node-name{ padding-right: 8px;
flex: 1; .node-name {
width: 0; flex: 1;
-webkit-background-clip: text; width: 0;
white-space: nowrap; -webkit-background-clip: text;
overflow: hidden; white-space: nowrap;
text-overflow: ellipsis; overflow: hidden;
} text-overflow: ellipsis;
.node-key{ }
font-size: 12px; .node-key {
color: #969696; font-size: 12px;
} color: #969696;
} }
} }
\ No newline at end of file }
.system-manage-container { .system-manage-container {
padding: 20px; padding: 16px;
background: rgba(157, 188, 218, 0.1); background: #ecf2f8;
height: 100%; height: 100%;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
......
.system-manage-container { .system-manage-container {
padding: 20px; padding: 16px;
background: rgba(157, 188, 218, 0.1); background: #ecf2f8;
height: 100%; height: 100%;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
......
{
"permissions": {
"allow": [
"Bash(grep -E \"\\\\.\\(js|ts\\)$\")"
]
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment