@ -0,0 +1,128 @@ |
|||
import {getMenuTreeByUsername} from '../../api/system/sys_menu' |
|||
import router from "@/router/index" |
|||
import systemRoutes from '@/router/modules/system' |
|||
|
|||
const HOME_PAGE = "/home" |
|||
const FIRST_PAGE = HOME_PAGE + "/firstpage" |
|||
const state = { |
|||
//存放{ route: 路由路径, name: tab显示名称}对象数组
|
|||
maintabs:[{route: FIRST_PAGE, name: "首页",closable:false}], |
|||
//当前被激活显示的那个Tab内容对应的route
|
|||
activeRoute: FIRST_PAGE, |
|||
//当前激活的Tab的功能名称
|
|||
activeTabName:"", |
|||
menuList:[ |
|||
/*{ //这部分已经在后端“菜单管理”中进行动态加载,所以不需要静态代码配置 |
|||
id:0, |
|||
name:"非菜单路由,但是需要显示Tab,请定义在这里", |
|||
hidden:true, |
|||
children:[ |
|||
{name:"首页",path:"/home/firstpage",hidden:true}, |
|||
{name:"个人中心",path:"/home/personal",hidden:true} |
|||
] |
|||
}, |
|||
{ id:1, |
|||
name:"系统管理", |
|||
path:"/system", |
|||
icon:"el-icon-lock", |
|||
children:[ |
|||
{id:3,name:"用户管理",path:"/home/sysuser"}, |
|||
{id:4,name:"角色管理",path:"/home/sysrole"}, |
|||
{id:6,name:"组织管理",path:"/home/sysorg"}, |
|||
{id:7,name:"菜单管理",path:"/home/sysmenu"}, |
|||
{id:8,name:"接口管理",path:"/home/sysapi"}, |
|||
] |
|||
}, |
|||
{ id:2, |
|||
name:"订单管理", |
|||
path:"/order", |
|||
icon:"el-icon-eleme", |
|||
children:[ |
|||
{id:5,name:"订单详情",path:"/home/order"}, |
|||
] |
|||
}*/ |
|||
] |
|||
|
|||
} |
|||
const actions = { |
|||
addTab({state,commit},route){ |
|||
getMenuTreeByUsername().then(res => { |
|||
state.menuList = res.data |
|||
commit("addTabMutation",route); |
|||
}) |
|||
} |
|||
} |
|||
const mutations = { |
|||
//加载后台菜单数据之后调用该方法
|
|||
addTabMutation(state, route) { |
|||
//维护主界面Tab信息(从菜单数据中获取)
|
|||
let isAlreadyIn = |
|||
state.maintabs.some(item => item.route === route) |
|||
this.commit("findMenuNameByRoute",route); |
|||
state.activeRoute = route; |
|||
if(!isAlreadyIn && state.activeTabName !== ""){ |
|||
state.maintabs.push({route:route,name:state.activeTabName}); |
|||
} |
|||
|
|||
//重点从这里开始
|
|||
let loadedRoutes = []; //动态加载的前端路由初始化
|
|||
//将菜单转换为路由
|
|||
menuToRoutes(state.menuList,loadedRoutes) |
|||
//固定路由与动态加载的前端路由进行组合
|
|||
for(let i in systemRoutes){ |
|||
if(systemRoutes[i].path === HOME_PAGE){ |
|||
systemRoutes[i].children = loadedRoutes |
|||
} |
|||
} |
|||
//最后让路由生效
|
|||
router.$addRoutes(systemRoutes) |
|||
}, |
|||
removeTab(state, route){ |
|||
if(route !== FIRST_PAGE){ |
|||
state.maintabs = state.maintabs.filter( |
|||
item => item.route !== route |
|||
) |
|||
state.activeRoute = state.maintabs[state.maintabs.length-1].route |
|||
} |
|||
}, |
|||
findMenuNameByRoute(state, route){ |
|||
let findOne; |
|||
for(let i in state.menuList){ |
|||
let tmpArr = state.menuList[i].children.filter( |
|||
item => item.path === route |
|||
) |
|||
if(tmpArr.length > 0) { |
|||
findOne = tmpArr[0] |
|||
break; |
|||
} |
|||
} |
|||
state.activeTabName = findOne?findOne.name:""; |
|||
} |
|||
} |
|||
const getters = { |
|||
|
|||
} |
|||
|
|||
//将菜单转换为前端路由
|
|||
function menuToRoutes(menuList,loadedRoutes){ |
|||
for(let i in menuList){ |
|||
menuList[i].children.forEach(item => { |
|||
if(item.isLeaf){ //为权限菜单中的叶子节点,添加前端路由
|
|||
loadedRoutes.push({ |
|||
path: item.url.replace(HOME_PAGE + "/",""), |
|||
name: item.url.replace(HOME_PAGE + "/",""), |
|||
component: resolve => { |
|||
require(["@/views/" + item.viewImport ], resolve) |
|||
} |
|||
}) |
|||
}else{ |
|||
//递归处理菜单树形结构
|
|||
menuToRoutes(item.children,loadedRoutes); |
|||
} |
|||
}) |
|||
} |
|||
} |
|||
|
|||
export default { |
|||
state,actions,mutations,getters |
|||
} |
@ -0,0 +1,72 @@ |
|||
import {getAllSysConfig,refreshSysConfig} from '@/api/system/sys_config' |
|||
import {getAllSysDict} from '@/api/system/sys_dict' |
|||
import axios from 'axios' |
|||
|
|||
const state = { |
|||
sysconfig:[], |
|||
sysdict:[] |
|||
} |
|||
const actions = { |
|||
loadSysConfig({state}){ |
|||
return new Promise((resolve,reject) => { |
|||
//没加载过才加载,已经加载过就不加载了
|
|||
//也就说只有登录,或者页面刷新时才重新加载全局配置
|
|||
if(state.sysconfig.length <= 0 |
|||
|| state.sysdict.length <= 0){ |
|||
axios.all([getAllSysConfig(), getAllSysDict()]) |
|||
.then(axios.spread(function (res1, res2) { |
|||
// 两个请求都执行完成后,进入该函数
|
|||
state.sysconfig = res1.data |
|||
state.sysdict = transferDict(res2) |
|||
})) |
|||
} |
|||
resolve(); |
|||
}) |
|||
}, |
|||
refreshConfig({state}){ |
|||
return new Promise((resolve,reject) => { |
|||
refreshSysConfig().then(res => { |
|||
state.sysconfig = res.data |
|||
resolve(); |
|||
}); |
|||
}) |
|||
}, |
|||
refreshDict({state}){ |
|||
return new Promise((resolve,reject) => { |
|||
getAllSysDict().then(res => { |
|||
state.sysdict = transferDict(res) |
|||
resolve(); |
|||
}); |
|||
}) |
|||
}, |
|||
} |
|||
const mutations = { |
|||
|
|||
} |
|||
const getters = { |
|||
getSysConfigItem: (state) => (paramKey) => { |
|||
return state.sysconfig |
|||
.find(item => item.paramKey === paramKey) |
|||
.paramValue |
|||
}, |
|||
getSysDictName:(state) => (groupCode,itemValue) => { |
|||
return state.sysdict[groupCode][itemValue] |
|||
} |
|||
} |
|||
|
|||
//工具函数:将list格式的数据字典转成groupCode:itemValue:itemName的二维key-value形式
|
|||
//方便后续取值的效率。不用过滤数组,效率更高。
|
|||
const transferDict = (res)=> { |
|||
let dictObj = {} |
|||
res.data.forEach(dict=>{ |
|||
if(!dictObj [dict.groupCode]){ |
|||
dictObj [dict.groupCode]={} |
|||
} |
|||
dictObj[dict.groupCode][dict.itemValue] = dict.itemName |
|||
}) |
|||
return dictObj |
|||
} |
|||
|
|||
export default { |
|||
state,actions,mutations,getters |
|||
} |
@ -0,0 +1,390 @@ |
|||
<template> |
|||
<div class="bgbox"> |
|||
<!-- 标题区域--> |
|||
<div class="head-title"> |
|||
<!-- <img src="../views/stlj/stlj.jpg">--> |
|||
<img src="../views/stlj/top@1x.png"> |
|||
<!-- <img src="../views/stlj/whole.svg">--> |
|||
</div> |
|||
<!-- 左侧1--> |
|||
<div class="left-img" style="float:left"> |
|||
<div style="margin-left: 40px;margin-top:180px"> |
|||
<img src="../views/stlj/left_1.png" alt="重大项目建设"> |
|||
</div> |
|||
<div style="left: 5px;float:left"> |
|||
<div style="float:left"> |
|||
<div style="float:left; padding-left: 100px;padding-top: 50px;"> |
|||
<img src="../views/stlj/left-upper/left_1_up.png"> |
|||
</div> |
|||
<div style="float:left; padding-left: 50px;padding-top: 117px;"> |
|||
<span class="left-font">高速公路建设</span><br> |
|||
<span style="float:left; font-size:60px;color:white">681公里</span> |
|||
</div> |
|||
</div> |
|||
<div style="float:left"> |
|||
<div style="float:left;padding-top: 50px;"> |
|||
<img src="../views/stlj/left-upper/left_up_2.png"> |
|||
</div> |
|||
<div style="float:left; padding-left: 50px;padding-top: 117px;"> |
|||
<span class="left-font">国省干线建设</span><br> |
|||
<span style="float:left; font-size:60px;color:white">510公里</span> |
|||
</div> |
|||
</div> |
|||
|
|||
<div style="float:left;padding-left: 100px;padding-top: 50px;"> |
|||
<div style="float:left; font-size:50px;color:white">项目开复工</div> |
|||
<div style="float:left;"> |
|||
续建项目力争2月末复工,年内建成3条高速公路382公里、高速公路通车总里程突破5000公里、达5025公里;新改建农村公路3500公里、整治“畅返不畅”5500公里、新建农村物流服务网点1807个;新增26个二级以上客运站转型升级、打造50条“吉意通”客运品牌线路、公交化改造线路110条 |
|||
</div> |
|||
</div> |
|||
<div style="float:left;padding-left: 100px;padding-top: 50px;"> |
|||
<div style="float:left; font-size:50px;color:white">后续项目前期工作</div> |
|||
<div style="float:left;"> |
|||
目前,烟筒山至长春、长春至太平川、长春都市圈环线东环二期3个续建高速公路项目共进场人员2100余人、设备342台套;备料工作进展顺利,钢材、沥青、砂石分别完成计划备料的94.63%、81%、93.96%,为实现年内通车奠定基础。 </div> |
|||
</div> |
|||
</div> |
|||
|
|||
</div> |
|||
<!-- 左侧2--> |
|||
<div class="left2-img"> |
|||
<div style="margin-left: 40px;margin-top:180px"> |
|||
<img src="../views/stlj/left_2.png" alt="乡村畅通"> |
|||
</div> |
|||
<div style="float:left;padding-left: 100px;padding-top: 50px;"> |
|||
<div style="float:left; font-size:50px;color:white">加大建设力度</div> |
|||
<div style="float:left;"> |
|||
新改建农村公路3500公里、改造危桥110座、实施安防工程2500公里、整治“畅返不畅”5500公里等,新增144个自然屯通硬化路、8个乡镇通三级及以上公路,新建农村物流服务网点1807个,县乡村覆盖率达到80%,试点开通农村货运班车 |
|||
</div> |
|||
</div> |
|||
<div style="float:left;padding-left: 100px;padding-top: 50px;"> |
|||
<div style="float:left; font-size:50px;color:white">完善管养机制</div> |
|||
<div style="float:left;"> |
|||
</div> |
|||
</div> |
|||
<div style="float:left;padding-left: 100px;padding-top: 50px;"> |
|||
<div style="float:left; font-size:50px;color:white">优化服务保障</div> |
|||
<div style="float:left;"> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
|
|||
<!-- 左侧3--> |
|||
<div class="left3-img"> |
|||
<div style="margin-left: 40px;margin-top:180px"> |
|||
<img src="../views/stlj/left_3.png" alt="交通物流"> |
|||
</div> |
|||
<div style="float:left;margin-left: 100px;margin-top:40px;" |
|||
:style="{ backgroundImage: `url(${require('@/views/stlj/left_3_1.png')})`, |
|||
backgroundSize: 'cover', |
|||
width: '382.16px', |
|||
height: '718.91px', |
|||
backgroundSize: 'cover'}"> |
|||
<div style="font-size:50px;color:white;margin-left: 20px;margin-top:120px;">保通保畅</div> |
|||
<div style="font-size:32px;color:#84ACE8;margin-left: 20px;margin-top:120px;" |
|||
class="text-ellipsis" |
|||
>聚焦维护产业链供应链稳定,扎实推动交通物流降本提质增效。建立重点物资应急运力保障机制,深入推进长春综合货运枢纽补链强链试点,完成东北地区多式联运企业联盟组建,新增2-3户规上多式联运企业,打造8-10条多式联运线路,加快公铁换装设备更新,壮大网络货运行业规模,推动交通运输数字经济、平台经济大幅增长。 |
|||
</div> |
|||
|
|||
</div> |
|||
<div style="float:left;margin-left: 40px;margin-top:40px" |
|||
:style="{ backgroundImage: `url(${require('@/views/stlj/left_3_1.png')})`, |
|||
backgroundSize: 'cover', |
|||
width: '382.16px', |
|||
height: '718.91px', |
|||
backgroundSize: 'cover'}" > |
|||
<div style="font-size:50px;color:white;margin-left: 20px;margin-top:120px">降本增效</div> |
|||
<div style="font-size:32px;color:#84ACE8;margin-left: 20px;margin-top:120px;" |
|||
class="text-ellipsis"> |
|||
聚焦维护产业链供应链稳定,扎实推动交通物流降本提质增效。建立重点物资应急运力保障机制,深入推进长春综合货运枢纽补链强链试点,完成东北地区多式联运企业联盟组建,新增2-3户规上多式联运企业,打造8-10条多式联运线路,加快公铁换装设备更新,壮大网络货运行业规模,推动交通运输数字经济、平台经济大幅增长。 |
|||
</div> |
|||
</div> |
|||
<div style="float:left;margin-left: 40px;margin-top:40px" |
|||
:style="{ backgroundImage: `url(${require('@/views/stlj/left_3_1.png')})`, |
|||
backgroundSize: 'cover', |
|||
width: '382.16px', |
|||
height: '718.91px', |
|||
backgroundSize: 'cover'}" > |
|||
<div style="font-size:50px;color:white;margin-left: 20px;margin-top:120px">交通平台</div> |
|||
<div style="font-size:32px;color:#84ACE8;margin-left: 20px;margin-top:120px;" |
|||
class="text-ellipsis"> |
|||
聚焦维护产业链供应链稳定,扎实推动交通物流降本提质增效。建立重点物资应急运力保障机制,深入推进长春综合货运枢纽补链强链试点,完成东北地区多式联运企业联盟组建,新增2-3户规上多式联运企业,打造8-10条多式联运线路,加快公铁换装设备更新,壮大网络货运行业规模,推动交通运输数字经济、平台经济大幅增长。 |
|||
</div> |
|||
</div> |
|||
</div> |
|||
|
|||
<!-- 中间1 --> |
|||
<div class="middle1_img"> |
|||
<div style="margin-left: 40px;margin-top:180px"> |
|||
<img src="../views/stlj/middle/middle_1.png" alt="运输服务保障"> |
|||
</div> |
|||
<div style="float:left;margin-left: 680px;margin-top:10px" |
|||
:style="{ backgroundImage: `url(${require('@/views/stlj/middle/middle_1_1.png')})`, |
|||
backgroundSize: 'cover', |
|||
width: '1192px', |
|||
height: '1093px', |
|||
backgroundSize: 'cover'}" > |
|||
</div> |
|||
<!-- <div style="float:left; font-size:50px;color:white">111111</div>--> |
|||
|
|||
<div style="float:right;" |
|||
:style="{ backgroundImage: `url(${require('@/views/stlj/middle/middle_1_2.png')})`, |
|||
backgroundSize: 'cover', |
|||
width: '827px', |
|||
height: '312px', |
|||
backgroundSize: 'cover'}" > |
|||
</div> |
|||
|
|||
<div style="margin-left: 500px;margin-top:40px" |
|||
:style="{ backgroundImage: `url(${require('@/views/stlj/middle/middle_1_2.png')})`, |
|||
backgroundSize: 'cover', |
|||
width: '827px', |
|||
height: '312px', |
|||
backgroundSize: 'cover'}" > |
|||
</div> |
|||
|
|||
<div style="margin-left: 1500px;margin-top:40px" |
|||
:style="{ backgroundImage: `url(${require('@/views/stlj/middle/middle_1_2.png')})`, |
|||
backgroundSize: 'cover', |
|||
width: '827px', |
|||
height: '312px', |
|||
backgroundSize: 'cover'}" > |
|||
</div> |
|||
|
|||
</div> |
|||
|
|||
<!-- 中间2 --> |
|||
<div class="middle2_img"> |
|||
<div style="margin-left: 40px;margin-top:180px"> |
|||
<img src="../views/stlj/middle/middle_2.png" alt="运输服务保障"> |
|||
</div> |
|||
<div style="float:left;margin-left: 80px;margin-top:100px" |
|||
:style="{ backgroundImage: `url(${require('@/views/stlj/middle/middle_2_1.png')})`, |
|||
backgroundSize: 'cover', |
|||
width: '1937px', |
|||
height: '851px', |
|||
backgroundSize: 'cover'}" > |
|||
<div style="float:left;font-size:50px;color:white;margin-left: 20px;margin-top:500px;"> 提升营商环境</div> |
|||
<div style="float:left;font-size:40px;color:white;margin-left: 1px;margin-top:500px;"> 提升政务服务质效</div> |
|||
<img src="../views/stlj/middle/middle_2_1_1.png" style="float:left;margin-left: 2000px;margin-top:1px"> |
|||
<img src="../views/stlj/middle/middle_2_1_1.png" style="float:left;margin-left: 2000px;margin-top:1px"> |
|||
<img src="../views/stlj/middle/middle_2_1_1.png" style="float:left;margin-left: 2000px;margin-top:1px"> |
|||
<img src="../views/stlj/middle/middle_2_1_1.png" style="float:left;margin-left: 2000px;margin-top:1px"> |
|||
</div> |
|||
</div> |
|||
|
|||
|
|||
<!-- 右侧1--> |
|||
<div class="right1_img"> |
|||
<div style="margin-left: 40px;margin-top:180px"> |
|||
<img src="../views/stlj/right/right_1.png" alt="绿色低碳"> |
|||
</div> |
|||
<div style="float:left;margin-left: 80px;margin-top:100px" |
|||
:style="{ backgroundImage: `url(${require('@/views/stlj/right/right_1_1.png')})`, |
|||
backgroundSize: 'cover', |
|||
width: '1332px', |
|||
height: '597px', |
|||
backgroundSize: 'cover'}" > |
|||
|
|||
</div> |
|||
</div> |
|||
|
|||
<!-- 右侧2--> |
|||
<div class="right2_img"> |
|||
<div style="margin-left: 40px;margin-top:180px"> |
|||
<img src="../views/stlj/right/right_2.png" alt="风险防控"> |
|||
</div> |
|||
<div> |
|||
<img src="../views/stlj/right/right_2_1.png"> |
|||
</div> |
|||
</div> |
|||
<!-- 右侧3--> |
|||
<div class="right3_img"> |
|||
<div style="margin-left: 40px;margin-top:180px"> |
|||
<img src="../views/stlj/right/right_3.png" alt="从严治党"> |
|||
</div> |
|||
<div style="float:left;margin-left: 80px;margin-top:100px" |
|||
:style="{ backgroundImage: `url(${require('@/views/stlj/right/right_3_1.png')})`, |
|||
backgroundSize: 'cover', |
|||
width: '271px', |
|||
height: '472px', |
|||
backgroundSize: 'cover'}" > |
|||
</div> |
|||
|
|||
<div style="float:left;margin-left: 80px;margin-top:160px" |
|||
:style="{ backgroundImage: `url(${require('@/views/stlj/right/right_3_1.png')})`, |
|||
backgroundSize: 'cover', |
|||
width: '271px', |
|||
height: '472px', |
|||
backgroundSize: 'cover'}" > |
|||
</div> |
|||
|
|||
<div style="float:left;margin-left: 80px;margin-top:100px" |
|||
:style="{ backgroundImage: `url(${require('@/views/stlj/right/right_3_2.png')})`, |
|||
backgroundSize: 'cover', |
|||
width: '271px', |
|||
height: '472px', |
|||
backgroundSize: 'cover'}" > |
|||
</div> |
|||
|
|||
<div style="float:left;margin-left: 80px;margin-top:160px" |
|||
:style="{ backgroundImage: `url(${require('@/views/stlj/right/right_3_2.png')})`, |
|||
backgroundSize: 'cover', |
|||
width: '271px', |
|||
height: '472px', |
|||
backgroundSize: 'cover'}" > |
|||
</div> |
|||
</div> |
|||
|
|||
</div> |
|||
|
|||
</template> |
|||
|
|||
<script> |
|||
// @ is an alias to /src |
|||
import HelloWorld from '@/components/HelloWorld.vue' |
|||
import ScaleBox from "vue2-scale-box"; |
|||
|
|||
export default { |
|||
name: 'Home', |
|||
components: { |
|||
HelloWorld |
|||
}, |
|||
data(){ |
|||
return { |
|||
screen: 'middle', |
|||
scaleArr: [], |
|||
isMenuCollapse: false, |
|||
bigScreenUrl:['/bigScreen/drain','/bigScreen/gas','/bigScreen/leader','/bigScreen/leaderMiddle','/bigScreen/heat'], |
|||
hideTitleArr:['首页'], |
|||
}; |
|||
|
|||
}, |
|||
methods: { |
|||
handleCollapse() { |
|||
this.isMenuCollapse = !this.isMenuCollapse |
|||
}, |
|||
getMenuCollapse() { |
|||
return { |
|||
"el-icon-s-fold": !this.isMenuCollapse, |
|||
"el-icon-s-unfold": this.isMenuCollapse |
|||
} |
|||
}, |
|||
toBigScreen(name){ |
|||
const { href } = this.$router.resolve({ |
|||
path: `/bigScreen/${name}` |
|||
}); |
|||
this.$nextTick(()=>{ |
|||
window.open(href ,'_blank') |
|||
}) |
|||
}, |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style> |
|||
|
|||
.right1_img{ |
|||
position: absolute; |
|||
width: 25%; |
|||
height: calc(100vh - 10px); |
|||
top: 120px; |
|||
left: 0; |
|||
padding-left: 4200px; |
|||
} |
|||
.right2_img{ |
|||
position: absolute; |
|||
width: 25%; |
|||
height: calc(100vh - 10px); |
|||
top: 120px; |
|||
left: 0; |
|||
padding-left: 4200px; |
|||
padding-top: 1000px; |
|||
} |
|||
.right3_img{ |
|||
position: absolute; |
|||
width: 25%; |
|||
height: calc(100vh - 10px); |
|||
top: 120px; |
|||
left: 0; |
|||
padding-left: 4200px; |
|||
padding-top: 1800px; |
|||
} |
|||
.middle1_img{ |
|||
position: absolute; |
|||
width: 25%; |
|||
height: calc(100vh - 10px); |
|||
top: 120px; |
|||
left: 0; |
|||
padding-left: 1500px; |
|||
} |
|||
.middle2_img{ |
|||
position: absolute; |
|||
width: 25%; |
|||
height: calc(100vh - 10px); |
|||
top: 120px; |
|||
left: 0; |
|||
padding-left: 1500px; |
|||
padding-top: 1400px; |
|||
} |
|||
.left-img{ |
|||
position: absolute; |
|||
width: 25%; |
|||
height: calc(100vh - 10px); |
|||
top: 120px; |
|||
left: 0; |
|||
padding-left: 10px; |
|||
} |
|||
.left2-img{ |
|||
position: absolute; |
|||
width: 25%; |
|||
height: calc(100vh - 10px); |
|||
top: 1000px; |
|||
left: 0; |
|||
padding-left: 10px; |
|||
} |
|||
.left2-img{ |
|||
position: absolute; |
|||
width: 25%; |
|||
height: calc(100vh - 10px); |
|||
top: 1000px; |
|||
left: 0; |
|||
padding-left: 10px; |
|||
} |
|||
.left3-img{ |
|||
position: absolute; |
|||
width: 25%; |
|||
height: calc(100vh - 10px); |
|||
top: 1800px; |
|||
left: 0; |
|||
padding-left: 10px; |
|||
} |
|||
.left-font{ |
|||
font-size: 50px; |
|||
font-weight: 500; |
|||
line-height: 64px; |
|||
letter-spacing: 0em; |
|||
|
|||
font-variation-settings: "opsz" auto; |
|||
font-feature-settings: "kern" on; |
|||
/* 字 */ |
|||
color: #84ACE8; |
|||
} |
|||
.bgbox{ |
|||
position: relative; |
|||
width: 5760px; |
|||
height: 3240px; |
|||
opacity: 1; |
|||
background: radial-gradient(37% 37% at 50% 50%, #223241 0%, #0A1117 100%); |
|||
} |
|||
.text-ellipsis { |
|||
width: 350px; /* 根据实际需求设置宽度 */ |
|||
height: auto; |
|||
overflow: hidden; |
|||
text-overflow: ellipsis; |
|||
display: -webkit-box; |
|||
-webkit-box-orient: vertical; |
|||
-webkit-line-clamp: 8; |
|||
text-overflow: ellipsis; |
|||
overflow: hidden; |
|||
} |
|||
</style> |
After Width: | Height: | Size: 4.8 KiB |
After Width: | Height: | Size: 5.4 KiB |
After Width: | Height: | Size: 43 KiB |
After Width: | Height: | Size: 44 KiB |
After Width: | Height: | Size: 123 KiB |
After Width: | Height: | Size: 111 KiB |
After Width: | Height: | Size: 113 KiB |
After Width: | Height: | Size: 76 KiB |
After Width: | Height: | Size: 171 KiB |
After Width: | Height: | Size: 755 KiB |
After Width: | Height: | Size: 4.1 KiB |
After Width: | Height: | Size: 158 KiB |
After Width: | Height: | Size: 2.0 MiB |
After Width: | Height: | Size: 4.5 KiB |
After Width: | Height: | Size: 112 KiB |
After Width: | Height: | Size: 720 KiB |
After Width: | Height: | Size: 113 KiB |
After Width: | Height: | Size: 541 KiB |
After Width: | Height: | Size: 108 KiB |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 3.5 KiB |
After Width: | Height: | Size: 1.2 MiB |
After Width: | Height: | Size: 721 KiB |
After Width: | Height: | Size: 2.2 MiB |