基于廊坊系统为基础,国防科技大学系统演示Demo
surprise
2024-04-28 83ff2ebbb1d61c2cd7762df33f61ff0418b2b1c9
页面添加
已重命名1个文件
已添加12个文件
已修改8个文件
3017 ■■■■ 文件已修改
public/config/config.js 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/layer/permsselectMenus.json 1006 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/css/index.css 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/img/LOGO1.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/img/lg_03.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/img/lg_04.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/img/menu/navbg.png 补丁 | 查看 | 原始文档 | blame | 历史
src/components/login.vue 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/navMenu.vue 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/index.js 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/comm/commNetwork/commNetwork.vue 229 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/comm/commResource/commResource.vue 227 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/comm/commScenario/commScenario.vue 227 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/comm/commScheme/commScheme.vue 227 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/comm/damageAssess/damageAssess.vue 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/comm/multimedia/multimedia.vue 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/comm/planFormulation/planFormulation.vue 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/comm/planReview/planReview.vue 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/comm/simulationModel/simulationModel.vue 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/datamanage/catalogueManage.vue 299 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/maintenance/menuSettings.vue 296 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/config/config.js
@@ -22,8 +22,8 @@
var LFData = iisHost + "/LFData";
// Server
var BASE_URL = webHost + '/server';
var BASE_URL =  'http://192.168.11.14:12316/server';
// var BASE_URL = webHost+ '/server';
// GeoServerUrl
var geoServerURl = webHost + '/geoserver/LF/wms';
@@ -34,6 +34,10 @@
var geoserverWFSLine = '/geoserver/LF/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=LF%3Am_pipeline&maxFeatures=50&outputFormat=application%2Fjson&cql_filter=projname=';
var getLayerJosn = location.origin+"/layer/"
// æ¨¡åž‹åŠ è½½åœ°å€
var modelUrl = LFData;
public/layer/permsselectMenus.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,1006 @@
{
  "code": 200,
  "count": 0,
  "msg": "成功",
  "result": [{
      "cnName": "首页",
      "css": null,
      "enName": "Index",
      "icon": null,
      "id": 3,
      "isShow": 1,
      "level": 2,
      "orderNum": 1,
      "perms": "/comprehensive",
      "pid": 2,
      "type": 1,
      "url": "Synthesis"
    },
    {
      "cnName": "测绘专业",
      "css": null,
      "enName": "Major in surveying and mapping",
      "icon": "",
      "id": 67,
      "isShow": 1,
      "level": 2,
      "orderNum": 1,
      "perms": null,
      "pid": 64,
      "type": 1,
      "url": "{fmeHost}/dataxdi/#/schema/task_zsy?tags=测绘专业&embed=true&theme=dark&lang=zh&token="
    },
    {
      "cnName": "资源目录",
      "css": null,
      "enName": "Resource Directory",
      "icon": "",
      "id": 75,
      "isShow": 1,
      "level": 2,
      "orderNum": 1,
      "perms": null,
      "pid": 66,
      "type": 1,
      "url": "{fmeHost}/resm/#/resourceManage?embed=true&theme=dark&lang=zh&token="
    },
    {
      "cnName": "数据上传",
      "css": null,
      "enName": "Data Updata",
      "icon": null,
      "id": 15,
      "isShow": 1,
      "level": 3,
      "orderNum": 1,
      "perms": "/dataUpload",
      "pid": 86,
      "type": 1,
      "url": "dataUpdata"
    },
    {
      "cnName": "下载日志",
      "css": null,
      "enName": "Download Log",
      "icon": "",
      "id": 60,
      "isShow": 1,
      "level": 3,
      "orderNum": 1,
      "perms": "/downlog",
      "pid": 35,
      "type": 1,
      "url": "downlog"
    },
    {
      "cnName": "图层",
      "css": null,
      "enName": "Coverage",
      "icon": null,
      "id": 4,
      "isShow": 1,
      "level": 3,
      "orderNum": 1,
      "perms": null,
      "pid": 3,
      "type": 2,
      "url": null
    },
    {
      "cnName": "管道基础大数据平台",
      "css": null,
      "enName": "Pipeline Basic Big Data Platform",
      "icon": null,
      "id": 1,
      "isShow": 0,
      "level": 0,
      "orderNum": 1,
      "perms": "/perms",
      "pid": 0,
      "type": 0,
      "url": null
    },
    {
      "cnName": "格式转换",
      "css": null,
      "enName": "Format Conversion",
      "icon": "",
      "id": 70,
      "isShow": 1,
      "level": 2,
      "orderNum": 1,
      "perms": null,
      "pid": 65,
      "type": 1,
      "url": "{fmeHost}/dataxdi/#/schema/task_zsy?tags=数据交换&embed=true&theme=dark&lang=zh&token="
    },
    {
      "cnName": "登录日志",
      "css": null,
      "enName": "Login Log",
      "icon": null,
      "id": 36,
      "isShow": 1,
      "level": 3,
      "orderNum": 2,
      "perms": "/login",
      "pid": 35,
      "type": 1,
      "url": "logLog"
    },
    {
      "cnName": "视图",
      "css": null,
      "enName": "Viewport",
      "icon": null,
      "id": 5,
      "isShow": 1,
      "level": 3,
      "orderNum": 2,
      "perms": null,
      "pid": 3,
      "type": 2,
      "url": null
    },
    {
      "cnName": "项目管理",
      "css": null,
      "enName": "Project management",
      "icon": null,
      "id": 16,
      "isShow": 1,
      "level": 3,
      "orderNum": 2,
      "perms": "/dir",
      "pid": 85,
      "type": 1,
      "url": "catalogueManage"
    },
    {
      "cnName": "勘察专业",
      "css": null,
      "enName": "Major in investigation",
      "icon": "",
      "id": 68,
      "isShow": 1,
      "level": 2,
      "orderNum": 2,
      "perms": null,
      "pid": 64,
      "type": 1,
      "url": "{fmeHost}/dataxdi/#/schema/task_zsy?tags=勘察专业&embed=true&theme=dark&lang=zh&token="
    },
    {
      "cnName": "资源审核",
      "css": null,
      "enName": "Resource audit",
      "icon": null,
      "id": 76,
      "isShow": 1,
      "level": 2,
      "orderNum": 2,
      "perms": null,
      "pid": 66,
      "type": 1,
      "url": "{fmeHost}/resm/#/resapproval?embed=true&theme=dark&lang=zh&token="
    },
    {
      "cnName": "态势一张图",
      "css": "m5",
      "enName": "Comprehensive Display",
      "icon": null,
      "id": 2,
      "isShow": 1,
      "level": 1,
      "orderNum": 2,
      "perms": "/comprehensive",
      "pid": 1,
      "type": 1,
      "url": "Synthesis"
    },
    {
      "cnName": "在线制图",
      "css": null,
      "enName": "Online Cartography",
      "icon": "",
      "id": 45,
      "isShow": 1,
      "level": 3,
      "orderNum": 2,
      "perms": "/export",
      "pid": 2,
      "type": 1,
      "url": "ExportMap"
    },
    {
      "cnName": "信息管理",
      "css": null,
      "enName": "Information management",
      "icon": null,
      "id": 20,
      "isShow": 1,
      "level": 3,
      "orderNum": 2,
      "perms": "/meta",
      "pid": 86,
      "type": 1,
      "url": "metadataManage"
    },
    {
      "cnName": "坐标转换",
      "css": null,
      "enName": "Coordinate Transformation",
      "icon": null,
      "id": 71,
      "isShow": 1,
      "level": 2,
      "orderNum": 2,
      "perms": null,
      "pid": 65,
      "type": 1,
      "url": "{fmeHost}/dataxdi/#/schema/task_zsy?tags=坐标转换&embed=true&theme=dark&lang=zh&token="
    },
    {
      "cnName": "数据分发",
      "css": null,
      "enName": "Data distribution",
      "icon": null,
      "id": 72,
      "isShow": 1,
      "level": 2,
      "orderNum": 3,
      "perms": null,
      "pid": 65,
      "type": 1,
      "url": "{fmeHost}/dataxdi/#/schema/task_zsy?tags=数据分发&embed=true&theme=dark&lang=zh&token="
    },
    {
      "cnName": "操作日志",
      "css": null,
      "enName": "Operation Log",
      "icon": null,
      "id": 37,
      "isShow": 1,
      "level": 3,
      "orderNum": 3,
      "perms": "/operate",
      "pid": 35,
      "type": 1,
      "url": "operationLog"
    },
    {
      "cnName": "发布管理",
      "css": null,
      "enName": "Release management",
      "icon": "",
      "id": 90,
      "isShow": 1,
      "level": 3,
      "orderNum": 3,
      "perms": "/publish",
      "pid": 86,
      "type": 1,
      "url": "uploadmanage"
    },
    {
      "cnName": "漫游",
      "css": null,
      "enName": "Wander",
      "icon": null,
      "id": 6,
      "isShow": 1,
      "level": 3,
      "orderNum": 3,
      "perms": null,
      "pid": 3,
      "type": 2,
      "url": null
    },
    {
      "cnName": "地灾专业",
      "css": null,
      "enName": "Major in Earth disaster",
      "icon": "",
      "id": 88,
      "isShow": 1,
      "level": 2,
      "orderNum": 3,
      "perms": null,
      "pid": 64,
      "type": 1,
      "url": "{fmeHost}/dataxdi/#/schema/task_zsy?tags=地灾专业&embed=true&theme=dark&lang=zh&token="
    },
    {
      "cnName": "项目信息",
      "css": null,
      "enName": "Project Information",
      "icon": "",
      "id": 58,
      "isShow": 1,
      "level": 3,
      "orderNum": 3,
      "perms": "/project",
      "pid": 85,
      "type": 1,
      "url": "projectManage"
    },
    {
      "cnName": "分析",
      "css": null,
      "enName": "Analyse",
      "icon": null,
      "id": 7,
      "isShow": 1,
      "level": 3,
      "orderNum": 4,
      "perms": null,
      "pid": 3,
      "type": 2,
      "url": null
    },
    {
      "cnName": "图层管理",
      "css": null,
      "enName": " Layer Management",
      "icon": "",
      "id": 93,
      "isShow": 1,
      "level": 3,
      "orderNum": 4,
      "perms": "/layer",
      "pid": 86,
      "type": 1,
      "url": "layerManagement"
    },
    {
      "cnName": "数据申请",
      "css": null,
      "enName": "Data application",
      "icon": "",
      "id": 62,
      "isShow": 1,
      "level": 2,
      "orderNum": 4,
      "perms": "/apply",
      "pid": 2,
      "type": 1,
      "url": "dataApplication"
    },
    {
      "cnName": "洞库专业",
      "css": null,
      "enName": "Professional Cave",
      "icon": null,
      "id": 89,
      "isShow": 1,
      "level": 2,
      "orderNum": 4,
      "perms": null,
      "pid": 64,
      "type": 1,
      "url": "{fmeHost}/dataxdi/#/schema/task_zsy?tags=洞库专业&embed=true&theme=dark&lang=zh&token="
    },
    {
      "cnName": "数据管理",
      "css": "m3",
      "enName": "Data Manage",
      "icon": null,
      "id": 14,
      "isShow": 1,
      "level": 1,
      "orderNum": 4,
      "perms": "",
      "pid": 1,
      "type": 1,
      "url": ""
    },
    {
      "cnName": "数据治理",
      "css": null,
      "enName": "Data governance",
      "icon": null,
      "id": 73,
      "isShow": 1,
      "level": 2,
      "orderNum": 4,
      "perms": null,
      "pid": 65,
      "type": 1,
      "url": "{fmeHost}/dataxdi/#/schema/task_zsy?tags=数据治理&embed=true&theme=dark&lang=zh&token="
    },
    {
      "cnName": "版本管理",
      "css": null,
      "enName": "Version Management",
      "icon": null,
      "id": 18,
      "isShow": 1,
      "level": 3,
      "orderNum": 4,
      "perms": "/ver",
      "pid": 85,
      "type": 1,
      "url": "versionManage"
    },
    {
      "cnName": "资源日志",
      "css": null,
      "enName": "Resource Log",
      "icon": null,
      "id": 38,
      "isShow": 1,
      "level": 3,
      "orderNum": 4,
      "perms": "/resOp",
      "pid": 35,
      "type": 1,
      "url": "eventlogManage"
    },
    {
      "cnName": "任务管理",
      "css": null,
      "enName": "Task management",
      "icon": null,
      "id": 81,
      "isShow": 1,
      "level": 2,
      "orderNum": 5,
      "perms": "",
      "pid": 66,
      "type": 1,
      "url": "{fmeHost}/dataxdi/#/task/list?embed=true&theme=dark&lang=zh&token="
    },
    {
      "cnName": "值域管理",
      "css": null,
      "enName": "Domain Management",
      "icon": "",
      "id": 44,
      "isShow": 1,
      "level": 3,
      "orderNum": 5,
      "perms": "/domain",
      "pid": 86,
      "type": 1,
      "url": "domainManage"
    },
    {
      "cnName": "方案管理",
      "css": null,
      "enName": "Programme management",
      "icon": "",
      "id": 80,
      "isShow": 1,
      "level": 2,
      "orderNum": 5,
      "perms": null,
      "pid": 66,
      "type": 1,
      "url": "{fmeHost}/dataxdi/#/schema/list?embed=true&theme=dark&lang=zh&token="
    },
    {
      "cnName": "数据统计",
      "css": null,
      "enName": "dataStatistics",
      "icon": "",
      "id": 94,
      "isShow": 1,
      "level": 2,
      "orderNum": 5,
      "perms": null,
      "pid": 2,
      "type": 1,
      "url": "/dataCount"
    },
    {
      "cnName": "令牌管理",
      "css": null,
      "enName": "Token Management",
      "icon": null,
      "id": 39,
      "isShow": 1,
      "level": 3,
      "orderNum": 5,
      "perms": "/token",
      "pid": 35,
      "type": 1,
      "url": "tokentool"
    },
    {
      "cnName": "停用资源",
      "css": null,
      "enName": "Application record",
      "icon": "",
      "id": 87,
      "isShow": 1,
      "level": 2,
      "orderNum": 5,
      "perms": null,
      "pid": 66,
      "type": 1,
      "url": "{fmeHost}/resm/#/resdisabled?embed=true&theme=dark&lang=zh&token="
    },
    {
      "cnName": "查询",
      "css": null,
      "enName": "IQuery",
      "icon": null,
      "id": 8,
      "isShow": 1,
      "level": 3,
      "orderNum": 5,
      "perms": "/inquiry",
      "pid": 3,
      "type": 2,
      "url": null
    },
    {
      "cnName": "黑/白名单",
      "css": null,
      "enName": "Black/White List",
      "icon": null,
      "id": 40,
      "isShow": 1,
      "level": 3,
      "orderNum": 6,
      "perms": "/blacklist",
      "pid": 35,
      "type": 1,
      "url": "blackwhiteList"
    },
    {
      "cnName": "定位",
      "css": null,
      "enName": "Orientation",
      "icon": null,
      "id": 9,
      "isShow": 1,
      "level": 3,
      "orderNum": 6,
      "perms": "/locate",
      "pid": 3,
      "type": 2,
      "url": null
    },
    {
      "cnName": "资源授权",
      "css": null,
      "enName": "Resource Management",
      "icon": "",
      "id": 91,
      "isShow": 1,
      "level": 2,
      "orderNum": 6,
      "perms": null,
      "pid": 66,
      "type": 1,
      "url": "{fmeHost}/resm/#/rescancelauth?embed=true&theme=dark&lang=zh&token="
    },
    {
      "cnName": "资料馆",
      "css": null,
      "enName": "Data Library",
      "icon": null,
      "id": 13,
      "isShow": 1,
      "level": 2,
      "orderNum": 6,
      "perms": "/dataLib",
      "pid": 2,
      "type": 1,
      "url": "Archive"
    },
    {
      "cnName": "字典管理",
      "css": null,
      "enName": "Dictionary Management",
      "icon": null,
      "id": 19,
      "isShow": 1,
      "level": 3,
      "orderNum": 6,
      "perms": "/dict",
      "pid": 86,
      "type": 1,
      "url": "dictionaryManage"
    },
    {
      "cnName": "样式管理",
      "css": null,
      "enName": "Style Management",
      "icon": null,
      "id": 21,
      "isShow": 1,
      "level": 3,
      "orderNum": 7,
      "perms": "/style",
      "pid": 86,
      "type": 1,
      "url": "styleManage"
    },
    {
      "cnName": "申请状态",
      "css": null,
      "enName": "Application status",
      "icon": "",
      "id": 92,
      "isShow": 1,
      "level": 2,
      "orderNum": 7,
      "perms": null,
      "pid": 66,
      "type": 1,
      "url": "{fmeHost}/resm/#/resrequest?embed=true&theme=dark&lang=zh&token="
    },
    {
      "cnName": "数据库监控",
      "css": null,
      "enName": "Database Monitoring",
      "icon": null,
      "id": 41,
      "isShow": 1,
      "level": 3,
      "orderNum": 7,
      "perms": "/sign/toDruid",
      "pid": 35,
      "type": 1,
      "url": "{webHost}/server/druid/index.html"
    },
    {
      "cnName": "测量",
      "css": null,
      "enName": "Measurement",
      "icon": null,
      "id": 10,
      "isShow": 1,
      "level": 3,
      "orderNum": 7,
      "perms": null,
      "pid": 3,
      "type": 2,
      "url": null
    },
    {
      "cnName": "数据资源管理",
      "css": "m6",
      "enName": "Operat Management",
      "icon": null,
      "id": 22,
      "isShow": 1,
      "level": 1,
      "orderNum": 7,
      "perms": "",
      "pid": 1,
      "type": 1,
      "url": ""
    },
    {
      "cnName": "综合态势显示",
      "css": "m5",
      "enName": "Operat Management",
      "icon": null,
      "id": 202,
      "isShow": 1,
      "level": 1,
      "orderNum": 7,
      "perms": "",
      "pid": 1,
      "type": 1,
      "url": ""
    },
    {
      "cnName": "标绘",
      "css": null,
      "enName": "Plotting",
      "icon": null,
      "id": 11,
      "isShow": 1,
      "level": 3,
      "orderNum": 8,
      "perms": "/mark",
      "pid": 3,
      "type": 2,
      "url": null
    },
    {
      "cnName": "数据查询",
      "css": null,
      "enName": "Data Query",
      "icon": null,
      "id": 17,
      "isShow": 1,
      "level": 3,
      "orderNum": 8,
      "perms": "/dataQuery",
      "pid": 86,
      "type": 1,
      "url": "SpatialData"
    },
    {
      "cnName": "系统监控",
      "css": null,
      "enName": "System Monitoring",
      "icon": null,
      "id": 42,
      "isShow": 1,
      "level": 3,
      "orderNum": 8,
      "perms": "/ws",
      "pid": 35,
      "type": 1,
      "url": "systemMonitoring"
    },
    {
      "cnName": "场景",
      "css": null,
      "enName": "Scene",
      "icon": "",
      "id": 61,
      "isShow": 1,
      "level": 2,
      "orderNum": 9,
      "perms": "/Scene",
      "pid": 3,
      "type": 2,
      "url": ""
    },
    {
      "cnName": "管道空间分析",
      "css": null,
      "enName": " Pipe space analysis",
      "icon": "",
      "id": 63,
      "isShow": 1,
      "level": 3,
      "orderNum": 10,
      "perms": "/pipeline",
      "pid": 3,
      "type": 2,
      "url": "/pipeline"
    },
    {
      "cnName": "项目管理",
      "css": null,
      "enName": "Project management",
      "icon": "",
      "id": 85,
      "isShow": 1,
      "level": 2,
      "orderNum": 11,
      "perms": null,
      "pid": 14,
      "type": 1,
      "url": "/projectController"
    },
    {
      "cnName": "数据库管理",
      "css": null,
      "enName": "Database management",
      "icon": null,
      "id": 86,
      "isShow": 1,
      "level": 2,
      "orderNum": 12,
      "perms": null,
      "pid": 14,
      "type": 1,
      "url": "/bankController"
    },
    {
      "cnName": "系统管理",
      "css": null,
      "enName": "System Management",
      "icon": null,
      "id": 23,
      "isShow": 1,
      "level": 2,
      "orderNum": 23,
      "perms": null,
      "pid": 22,
      "type": 1,
      "url": "/systemController"
    },
    {
      "cnName": "菜单管理",
      "css": null,
      "enName": "Menu Management",
      "icon": null,
      "id": 24,
      "isShow": 1,
      "level": 3,
      "orderNum": 24,
      "perms": "/menu",
      "pid": 23,
      "type": 1,
      "url": "menuSettings"
    },
    {
      "cnName": "用户管理",
      "css": null,
      "enName": "User Management",
      "icon": null,
      "id": 25,
      "isShow": 1,
      "level": 3,
      "orderNum": 25,
      "perms": "/user",
      "pid": 23,
      "type": 1,
      "url": "userInfoManage"
    },
    {
      "cnName": "单位管理",
      "css": null,
      "enName": "Organization Management",
      "icon": null,
      "id": 26,
      "isShow": 1,
      "level": 3,
      "orderNum": 26,
      "perms": "/dep",
      "pid": 23,
      "type": 1,
      "url": "orgManage"
    },
    {
      "cnName": "资源管理",
      "css": null,
      "enName": "Resource Management",
      "icon": null,
      "id": 27,
      "isShow": 0,
      "level": 3,
      "orderNum": 27,
      "perms": "/res",
      "pid": 23,
      "type": 1,
      "url": "resourceManage"
    },
    {
      "cnName": "角色管理",
      "css": null,
      "enName": "Role Management",
      "icon": null,
      "id": 28,
      "isShow": 1,
      "level": 3,
      "orderNum": 28,
      "perms": "/role",
      "pid": 23,
      "type": 1,
      "url": "roleManage"
    },
    {
      "cnName": "权限管理",
      "css": null,
      "enName": "Permission Management",
      "icon": null,
      "id": 29,
      "isShow": 1,
      "level": 3,
      "orderNum": 29,
      "perms": "/auth",
      "pid": 23,
      "type": 1,
      "url": "authorityManage"
    },
    {
      "cnName": "授权管理",
      "css": null,
      "enName": "Authorization Management",
      "icon": null,
      "id": 30,
      "isShow": 1,
      "level": 2,
      "orderNum": 30,
      "perms": null,
      "pid": 22,
      "type": 1,
      "url": "/empowerController"
    },
    {
      "cnName": "模板管理",
      "css": null,
      "enName": "Template management",
      "icon": "",
      "id": 82,
      "isShow": 1,
      "level": 3,
      "orderNum": 30,
      "perms": "/report",
      "pid": 23,
      "type": 1,
      "url": "templateManage"
    },
    {
      "cnName": "用户角色授权",
      "css": null,
      "enName": "User Role Authorization",
      "icon": null,
      "id": 31,
      "isShow": 1,
      "level": 3,
      "orderNum": 31,
      "perms": "/roleUser",
      "pid": 30,
      "type": 1,
      "url": "userRoleAuthorization"
    },
    {
      "cnName": "菜单权限授权",
      "css": null,
      "enName": "Menu Permission Authorization",
      "icon": null,
      "id": 32,
      "isShow": 1,
      "level": 3,
      "orderNum": 32,
      "perms": "/menuAuth",
      "pid": 30,
      "type": 1,
      "url": "menuRoleAuthorization"
    },
    {
      "cnName": "角色菜单授权",
      "css": null,
      "enName": "Role Menu Authorization",
      "icon": null,
      "id": 33,
      "isShow": 1,
      "level": 3,
      "orderNum": 33,
      "perms": "/roleMenuAuth",
      "pid": 30,
      "type": 1,
      "url": "roleMenuAuthorization"
    },
    {
      "cnName": "角色资源授权",
      "css": null,
      "enName": "Role Resource Authorization",
      "icon": null,
      "id": 34,
      "isShow": 0,
      "level": 3,
      "orderNum": 34,
      "perms": "/roleRes",
      "pid": 30,
      "type": 1,
      "url": "roleResAuthorization"
    },
    {
      "cnName": "运维监控",
      "css": null,
      "enName": "Operation And Monitoring",
      "icon": null,
      "id": 35,
      "isShow": 1,
      "level": 2,
      "orderNum": 35,
      "perms": "/ctrl",
      "pid": 22,
      "type": 1,
      "url": "/opexController"
    },
    {
      "cnName": "系统配置",
      "css": null,
      "enName": "System Configuration",
      "icon": null,
      "id": 43,
      "isShow": 1,
      "level": 2,
      "orderNum": 43,
      "perms": "/args",
      "pid": 22,
      "type": 1,
      "url": "parameterConfiguration"
    }
  ],
  "time": 1714294558805
}
src/assets/css/index.css
@@ -25,7 +25,7 @@
.NavBox {
    width: 100%;
    height: 100%;
    background-image: url("../../assets/img/menu/navbg.jpg");
  background-image: url("../../assets/img/menu/navbg.png");
    background-repeat: no-repeat;
    background-size: 100% 100%;
    /*background-image: linear-gradient(rgb(34, 33, 33), rgb(27, 31, 78));*/
@@ -45,7 +45,7 @@
    background: url("../img/LOGO.png") no-repeat center; */
    width: 18%;
    height: 50px;
    background: url("../img/menu/navtitle.png") no-repeat center center;
  /* background: url("../img/menu/navtitle.png") no-repeat center center; */
    background-size: 100% 100%;
}
src/assets/img/LOGO1.png

src/assets/img/lg_03.png

src/assets/img/lg_04.png
src/assets/img/menu/navbg.png
src/components/login.vue
@@ -1,7 +1,6 @@
<template>
  <div class="container">
    <vue-particles
      :particleOpacity="0.7"
    <vue-particles :particleOpacity="0.7"
      :particlesNumber="80"
      shapeType="circle"
      :particleSize="4"
@@ -13,106 +12,79 @@
      :hoverEffect="true"
      hoverMode="grab"
      :clickEffect="false"
      clickMode="bubble"
    >
                   clickMode="bubble">
    </vue-particles>
    <div class="MapMenu">
      <iframe
        id="ifream"
      <iframe id="ifream"
        style="border: none"
        width="100%"
        height="100%"
        v-bind:src="reportUrl"
      ></iframe>
              v-bind:src="reportUrl"></iframe>
    </div>
    <div class="title_img">
      <img
        src="../assets/img/lg_03.png"
        alt=""
      />
      <img src="../assets/img/lg_03.png"
           alt="" />
    </div>
    <div class="login">
      <div class="login_title">
        <span>用户登录</span>
      </div>
      <el-form
        :model="loginForm"
      <el-form :model="loginForm"
        :rules="rules"
        ref="loginForm"
        class="loginForm"
      >
               class="loginForm">
        <el-form-item prop="uid">
          <el-input
            v-model="loginForm.uid"
          <el-input v-model="loginForm.uid"
            placeholder="输入登录账号"
            class="nobr"
            size="meddle"
            autocomplete="off"
          >
            <i
              slot="prefix"
              class="el-icon-user"
            ></i>
                    autocomplete="off">
            <i slot="prefix"
               class="el-icon-user"></i>
          </el-input>
        </el-form-item>
        <el-form-item prop="pwd">
          <el-input
            show-password
          <el-input show-password
            v-model="loginForm.pwd"
            placeholder="请输入登录密码"
            class="nobr"
            autocomplete="off"
          >
            <i
              slot="prefix"
              class="el-icon-lock"
            ></i>
                    autocomplete="off">
            <i slot="prefix"
               class="el-icon-lock"></i>
          </el-input>
        </el-form-item>
        <el-form-item required>
          <el-col :span="18">
            <el-form-item prop="validCode">
              <el-input
                v-model="loginForm.validCode"
              <el-input v-model="loginForm.validCode"
                placeholder="请输入验证码(忽略大小写)"
                class="nobr"
              ></el-input>
                        class="nobr"></el-input>
            </el-form-item>
          </el-col>
          <el-col
            :span="6"
            align="right"
          >
            <validCode
              v-model="validCode"
          <el-col :span="6"
                  align="right">
            <validCode v-model="validCode"
              ref="refresh"
              @sendData="getCode"
            ></validCode>
                       @sendData="getCode"></validCode>
          </el-col>
        </el-form-item>
        <el-form-item>
          <img
            src="../assets/img/zhengshu.png"
            alt=""
          /><span style="color: black">证书安装与添加信任站点</span>
          <img src="../assets/img/zhengshu.png"
               alt="" /><span style="color: black">证书安装与添加信任站点</span>
        </el-form-item>
        <el-form-item>
          <img
            src="../assets/img/document.png"
            alt=""
          /><span style="color: black">使用帮助文档</span>
          <img src="../assets/img/document.png"
               alt="" /><span style="color: black">使用帮助文档</span>
        </el-form-item>
        <el-form-item>
          <el-button
            type="primary"
          <el-button type="primary"
            class="nobr loginbtn"
            style=""
            :loading="loading"
            @click="submitForm('loginForm')"
          >登录</el-button>
                     @click="submitForm('loginForm')">登录</el-button>
        </el-form-item>
      </el-form>
    </div>
@@ -219,9 +191,13 @@
                  this.$store.commit("getPermsEntity", res.result);
                  if (res.result.length != 0) {
                    sessionStorage.setItem("routerName", "/Thematic");
                    sessionStorage.setItem("changeSelectStyle", 1);
                    this.$router.push("/");
                    // sessionStorage.setItem("routerName","/Synthesis");
                    // sessionStorage.setItem("routerName", "/Thematic");
                    // sessionStorage.setItem("changeSelectStyle",1);
                    // this.$router.push("/");
                    sessionStorage.setItem("changeSelectStyle",1)
                    this.$router.push("/Synthesis")
                  } else {
                    this.$message({
                      message: "请您联系管理员分配角色菜单",
src/components/navMenu.vue
@@ -1,40 +1,28 @@
<template>
  <div
    class="NavBox"
    @click.stop
  >
  <div class="NavBox"
       @click.stop>
    <div class="topBox">
      <div class="topTitle"></div>
      <div class="topMenu">
        <div class="menuContent">
          <div
            class="contentDiv"
          <div class="contentDiv"
            @click="setMenuMove(index, item)"
            v-for="(item, index) in listMenu"
          >
               v-for="(item, index) in listMenu">
            <div style="display: flex;align-items: center">
              <div class="ImgMenu">
                <div
                  class="menuImage"
                  :class="changeSelectStyle == index ? item.checkClass : item.css"
                ></div>
                <div class="menuImage"
                     :class="changeSelectStyle == index ? item.checkClass : item.css"></div>
              </div>
              <div
                class="menulabel"
                :class="{ changeStyle: changeSelectStyle == index }"
              >
              <div class="menulabel"
                   :class="{ changeStyle: changeSelectStyle == index }">
                <span v-show="language"> {{ item.cnName }}</span> <span v-show="!language"> {{ item.enName }}</span>
              </div>
            </div>
            <div
              class="secondMenuDiv   subpage_Div"
              v-show="index == showFlag ? true :false"
            >
              <div
                v-for="res in item.children"
            <div class="secondMenuDiv   subpage_Div"
                 v-show="index == showFlag ? true :false">
              <div v-for="res in item.children"
                @click="setLiClick(res,index)"
                :class="{ changeLiStyle: changeliSelect == res.cnName }"
              >
                   :class="{ changeLiStyle: changeliSelect == res.cnName }">
                <span v-show="language"> {{ res.cnName }}</span> <span v-show="!language"> {{ res.enName }}</span>
              </div>
            </div>
@@ -43,25 +31,19 @@
      </div>
      <div class="topUser">
        <div class="userLanguage">
          <div
            class="userImage theme"
            @click="themeChange"
          ></div>
          <div
            class="userImage user2"
            @click="switchLang"
          ></div>
          <div class="userImage theme"
               @click="themeChange"></div>
          <!-- <div class="userImage user2"
               @click="switchLang"></div> -->
        </div>
        <div class="userName">
          <div class="userImage user1"></div>
          <div class="userText">
            <span>{{ this.$store.state.uname }}</span>
            <el-link
              @click="logOut"
            <el-link @click="logOut"
              :underline="false"
              class="elLink"
            >{{ $t('common.logout') }}</el-link>
                     class="elLink">{{ $t('common.logout') }}</el-link>
          </div>
        </div>
      </div>
@@ -77,6 +59,7 @@
import { queryMenuTree, getPerms } from '../api/api';
import colorChange from '../views/maintenance/colorChange.vue';
import { containsCoordinate } from 'ol/extent';
import axios from "axios";
import Vue from 'vue';
import $ from 'jquery'
export default {
@@ -300,7 +283,11 @@
    async getMenuTree() {
      this.getCookies();
      const data = await queryMenuTree();
      var that=this;
      that.showTreeData(data)
    },
    showTreeData (data) {
      var that = this;
      if (data.code == 200) {
src/router/index.js
@@ -61,6 +61,25 @@
import QualityInspection from '@/views/PackageTwo/index.vue'; //数据质检-入库质检
// é€šä¿¡èµ„源管理
import commResource from '../views/comm/commResource/commResource.vue'
// é€šä¿¡ç½‘系管理
import commNetwork from '../views/comm/commNetwork/commNetwork.vue'
// é€šä¿¡æƒ³å®šç®¡ç†
import commScenario from '../views/comm/commScenario/commScenario.vue'
// å¤šåª’体素材管理
import multimedia from '../views/comm/multimedia/multimedia.vue'
// ä»¿çœŸæ¨¡åž‹ç®¡ç†
import simulationModel  from '../views/comm/simulationModel/simulationModel.vue'
//通信方案管理
import commScheme from '../views/comm/commScheme/commScheme.vue'
//方案拟制
import planFormulation from '../views/comm/planFormulation/planFormulation.vue'
//方案讲评
import planReview from '../views/comm/planReview/planReview.vue'
//通信毁伤影像评估
import damageAssess from '../views/comm/damageAssess/damageAssess.vue'
const originalPush = VueRouter.prototype.push;
@@ -98,6 +117,87 @@
    component: Home,
    redirect: '/Synthesis',
    children: [
      {
        path: '/damageAssess',
        component: damageAssess,
        name: 'damageAssess',
        meta: {
          title: '通信毁伤影响评估',
          requireAuth: true, // æ ‡è¯†è¯¥è·¯ç”±æ˜¯å¦éœ€è¦ç™»å½•
        },
      },
      {
        path: '/planFormulation',
        component: planFormulation,
        name: 'planFormulation',
        meta: {
          title: '通信方案拟制',
          requireAuth: true, // æ ‡è¯†è¯¥è·¯ç”±æ˜¯å¦éœ€è¦ç™»å½•
        },
      },
      {
        path: '/planReview',
        component: planReview,
        name: 'planReview',
        meta: {
          title: '方案讲评',
          requireAuth: true, // æ ‡è¯†è¯¥è·¯ç”±æ˜¯å¦éœ€è¦ç™»å½•
        },
      },
      {
        path: '/commScheme',
        component: commScheme,
        name: 'commScheme',
        meta: {
          title: '通信方案管理',
          requireAuth: true, // æ ‡è¯†è¯¥è·¯ç”±æ˜¯å¦éœ€è¦ç™»å½•
        },
      },
      {
        path: '/simulationModel',
        component: simulationModel,
        name: 'simulationModel',
        meta: {
          title: '仿真模型管理',
          requireAuth: true, // æ ‡è¯†è¯¥è·¯ç”±æ˜¯å¦éœ€è¦ç™»å½•
        },
      },
      {
        path: '/multimedia',
        component: multimedia,
        name: 'multimedia',
        meta: {
          title: '多媒体素材管理',
          requireAuth: true, // æ ‡è¯†è¯¥è·¯ç”±æ˜¯å¦éœ€è¦ç™»å½•
        },
      },
      {
        path: '/commScenario',
        component: commScenario,
        name: 'commScenario',
        meta: {
          title: '通信想定管理',
          requireAuth: true, // æ ‡è¯†è¯¥è·¯ç”±æ˜¯å¦éœ€è¦ç™»å½•
        },
      },
      {
        path: '/commNetwork',
        component: commNetwork,
        name: 'commNetwork',
        meta: {
          title: '通信网系管理',
          requireAuth: true, // æ ‡è¯†è¯¥è·¯ç”±æ˜¯å¦éœ€è¦ç™»å½•
        },
      },
      {
        path: '/commResource',
        component: commResource,
        name: 'commResource',
        meta: {
          title: '通信资源管理',
          requireAuth: true, // æ ‡è¯†è¯¥è·¯ç”±æ˜¯å¦éœ€è¦ç™»å½•
        },
      },
      {
        path: '/WareInspection',
        component: WareInspection,
@@ -536,6 +636,7 @@
          requireAuth: true, // æ ‡è¯†è¯¥è·¯ç”±æ˜¯å¦éœ€è¦ç™»å½•
        },
      },
    ],
  },
];
src/views/comm/commNetwork/commNetwork.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,229 @@
<template>
  <div class="contentBox">
    <div class="box"
         ref="box">
      <div class="left box_div">
        <el-menu :default-active="activeIndex"
                 background-color="transparent"
                 @select="handleselect">
          <customElMenu :menuData="menuList"></customElMenu>
        </el-menu>
      </div>
      <div class="resize"
           title="收缩侧边栏">
        â‹®
      </div>
      <div class="mid box_div">
        <My-bread :list="[
          `通信资源管理`,
          nodeName,
        ]"></My-bread>
        <el-divider />
      </div>
    </div>
  </div>
</template>
<script>
import { selectMenuRecursive,queryMenuTree,sign_insertOpLog } from '@/api/api.js'
import MyBread from "@/components/MyBread.vue";
import customElMenu from "@/components/customElMenu.vue";
export default {
  components: {
    MyBread,
    customElMenu
  },
  data () {
    return {
      setMenuFlag: ' ',
      activeIndex: ' ',
      oriData: [], //原始树数据
      dirData: [], //el树数据
      newData: [], //拖动后数据
      lang: 'zh',
      menuList: [],
      editTitle: '',
      showPopover: false,
      showEditInfoWrapper: false,
      showEdit: false,
      editMenu: false,
      editCatalogue: false,
      editUnit: false,
      itemdetail: {},
      formLabelWidth: '70px',
      pid: null,
      nodeName: null,
    };
  },
  created () { },
  mounted () {
    this.getTreeData();
    //左右拖動
    this.dragControllerDiv();
  },
  methods: {
    //左右拖動
    dragControllerDiv: function() {
      var resize=document.getElementsByClassName('resize');
      var left=document.getElementsByClassName('left');
      var mid=document.getElementsByClassName('mid');
      var box=document.getElementsByClassName('box');
      for(let i=0;i<resize.length;i++) {
        // é¼ æ ‡æŒ‰ä¸‹äº‹ä»¶
        resize[i].onmousedown=function(e) {
          //颜色改变提醒
          resize[i].style.background='#818181';
          var startX=e.clientX;
          resize[i].left=resize[i].offsetLeft;
          // é¼ æ ‡æ‹–动事件
          document.onmousemove=function(e) {
            var endX=e.clientX;
            var moveLen=resize[i].left+(endX-startX); // ï¼ˆendx-startx)=移动的距离。resize[i].left+移动的距离=左边区域最后的宽度
            var maxT=box[i].clientWidth-resize[i].offsetWidth; // å®¹å™¨å®½åº¦ - å·¦è¾¹åŒºåŸŸçš„宽度 = å³è¾¹åŒºåŸŸçš„宽度
            if(moveLen<205) moveLen=205; // å·¦è¾¹åŒºåŸŸçš„æœ€å°å®½åº¦ä¸º32px
            if(moveLen>maxT-300) moveLen=maxT-300; //右边区域最小宽度为150px
            resize[i].style.left=moveLen; // è®¾ç½®å·¦ä¾§åŒºåŸŸçš„宽度
            for(let j=0;j<left.length;j++) {
              left[j].style.width=moveLen+'px';
              mid[j].style.width=(box[i].clientWidth-moveLen-10)+'px';
            }
          };
          // é¼ æ ‡æ¾å¼€äº‹ä»¶
          document.onmouseup=function(evt) {
            //颜色恢复
            resize[i].style.background='#d6d6d6';
            document.onmousemove=null;
            document.onmouseup=null;
            resize[i].releaseCapture&&resize[i].releaseCapture(); //当你不在需要继续获得鼠标消息就要应该调用ReleaseCapture()释放掉
          };
          resize[i].setCapture&&resize[i].setCapture(); //该函数在属于当前线程的指定窗口里设置鼠标捕获
          return false;
        };
      }
    },
    //获取树
    async getTreeData () {
      const data=await queryMenuTree();
      let menuLists=data.result.filter((value) => {
        return value.url=="/commNetWork";
      });
      this.pid=menuLists[0].id;
      const res=await selectMenuRecursive({ id: menuLists[0].id });
      if(res.code==200) {
        if(res.result.length!=0) {
          let menuList=res.result.filter((value) => {
            return value.type==1;
          });
          this.menuList=this.treeData(menuList);
          this.m1=this.menuList[0].cnName;
          this.setViewController(this.menuList[0]);
          this.nodeName=this.m1
          const hanleselectindex=sessionStorage.getItem('hanleselectindex')
          if(hanleselectindex) {
            this.$nextTick(function() {
              this.handleselecttwo(JSON.parse(hanleselectindex).url,JSON.parse(hanleselectindex))
              this.setViewController(JSON.parse(hanleselectindex))
            })
          }
        } else {
          this.$message.error('暂无菜单栏数据');
        }
      } else {
        this.$message.error('接口报错');
      }
      // this.treeList = this.treeData(data.result);
    },
    setViewController (res) {
      if(res.children!=null) {
        this.setViewController(res.children[0]);
      } else {
        this.signInsertOpLog(this.m1,res.cnName)
        this.$store.state.currentPerms=res.perms;
        this.setMenuFlag=res.url;
        this.activeIndex=res.url;
      }
    },
    async signInsertOpLog (m1,m2) {
      var obj={
        m1: m1,
        m2: m2,
      }
      // const data = await sign_insertOpLog(obj);
    },
    treeData (source) {
      let cloneData=JSON.parse(JSON.stringify(source)); // å¯¹æºæ•°æ®æ·±åº¦å…‹éš†
      var that=this;
      // console.log(cloneData);
      if(cloneData.length!=0) {
        return cloneData.filter((father) => {
          // å¾ªçŽ¯æ‰€æœ‰é¡¹
          let branchArr=cloneData.filter((child) => father.id==child.pid); // å¯¹æ¯”ID,分别上下级菜单,并返回数据
          branchArr.length>0? (father.children=branchArr):''; // ç»™çˆ¶çº§æ·»åŠ ä¸€ä¸ªchildren属性,并赋值
          // å±žäºŽåŒä¸€å¯¹è±¡é—®é¢˜ï¼Œä¾‹å¦‚:令 a=b、c=1 ï¼Œç„¶åŽå†ä»¤ b.c=c ï¼Œ é‚£ä¹ˆ a.c=b.c=c=1 ï¼›åŒç†ï¼ŒåŽç»­ä»¤ c.d=2 ,那么 a.c.d ä¹Ÿæ˜¯=2;
          // ç”±æ­¤å¾ªçŽ¯å¤šæ¬¡åŽï¼Œå°±èƒ½å½¢æˆç›¸åº”çš„æ ‘å½¢æ•°æ®ç»“æž„
          return father.pid==that.pid; // è¿”回一级菜单
        });
      } else {
        this.$message.error('暂无菜单栏数据');
      }
    },
    handleselect (index,indexPath,e) {
      const a=JSON.stringify(e.$attrs.perms)
      this.signInsertOpLog(this.m1,e.$attrs.perms.cnName)
      sessionStorage.setItem('hanleselectindex',a)
      var data=e.$attrs.perms;
      this.$store.state.currentPerms=data.perms;
      var index=data.url;
      if(index!=null) {
        if(index.indexOf('http')!=-1) {
          this.$store.commit('getIframe',data.url);
          index='dataIfream';
        }
      }
      this.setMenuFlag=index;
      this.nodeName=data.cnName
    },
    handleselecttwo (index,e) {
      const a=JSON.stringify(e)
      sessionStorage.setItem('hanleselectindex',a)
      var data=e;
      this.$store.state.currentPerms=data.perms;
      var index=data.url;
      if(index!=null) {
        if(index.indexOf('http')!=-1) {
          this.$store.commit('getIframe',data.url);
          index='dataIfream';
        }
      }
      this.setMenuFlag=index;
    },
  },
};
</script>
src/views/comm/commResource/commResource.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,227 @@
<template>
  <div class="contentBox">
    <div class="box"
         ref="box">
      <div class="left box_div">
        <el-menu :default-active="activeIndex"
                 background-color="transparent"
                 @select="handleselect">
          <customElMenu :menuData="menuList"></customElMenu>
        </el-menu>
      </div>
      <div class="resize"
           title="收缩侧边栏">
        â‹®
      </div>
      <div class="mid box_div">
        <My-bread :list="[
          `通信资源管理`,
          nodeName,
        ]"></My-bread>
        <el-divider />
      </div>
    </div>
  </div>
</template>
<script>
import { selectMenuRecursive,queryMenuTree,sign_insertOpLog } from '@/api/api.js'
import MyBread from "@/components/MyBread.vue";
import customElMenu from "@/components/customElMenu.vue";
export default {
  components: {
    MyBread,
    customElMenu
  },
  data () {
    return {
      setMenuFlag: ' ',
      activeIndex: ' ',
      oriData: [], //原始树数据
      dirData: [], //el树数据
      newData: [], //拖动后数据
      lang: 'zh',
      menuList: [],
      editTitle: '',
      showPopover: false,
      showEditInfoWrapper: false,
      showEdit: false,
      editMenu: false,
      editCatalogue: false,
      editUnit: false,
      itemdetail: {},
      formLabelWidth: '70px',
      pid: null,
      nodeName: null,
    };
  },
  created () { },
  mounted () {
    this.getTreeData();
    //左右拖動
    this.dragControllerDiv();
  },
  methods: {
    //左右拖動
    dragControllerDiv: function() {
      var resize=document.getElementsByClassName('resize');
      var left=document.getElementsByClassName('left');
      var mid=document.getElementsByClassName('mid');
      var box=document.getElementsByClassName('box');
      for(let i=0;i<resize.length;i++) {
        // é¼ æ ‡æŒ‰ä¸‹äº‹ä»¶
        resize[i].onmousedown=function(e) {
          //颜色改变提醒
          resize[i].style.background='#818181';
          var startX=e.clientX;
          resize[i].left=resize[i].offsetLeft;
          // é¼ æ ‡æ‹–动事件
          document.onmousemove=function(e) {
            var endX=e.clientX;
            var moveLen=resize[i].left+(endX-startX); // ï¼ˆendx-startx)=移动的距离。resize[i].left+移动的距离=左边区域最后的宽度
            var maxT=box[i].clientWidth-resize[i].offsetWidth; // å®¹å™¨å®½åº¦ - å·¦è¾¹åŒºåŸŸçš„宽度 = å³è¾¹åŒºåŸŸçš„宽度
            if(moveLen<205) moveLen=205; // å·¦è¾¹åŒºåŸŸçš„æœ€å°å®½åº¦ä¸º32px
            if(moveLen>maxT-300) moveLen=maxT-300; //右边区域最小宽度为150px
            resize[i].style.left=moveLen; // è®¾ç½®å·¦ä¾§åŒºåŸŸçš„宽度
            for(let j=0;j<left.length;j++) {
              left[j].style.width=moveLen+'px';
              mid[j].style.width=(box[i].clientWidth-moveLen-10)+'px';
            }
          };
          // é¼ æ ‡æ¾å¼€äº‹ä»¶
          document.onmouseup=function(evt) {
            //颜色恢复
            resize[i].style.background='#d6d6d6';
            document.onmousemove=null;
            document.onmouseup=null;
            resize[i].releaseCapture&&resize[i].releaseCapture(); //当你不在需要继续获得鼠标消息就要应该调用ReleaseCapture()释放掉
          };
          resize[i].setCapture&&resize[i].setCapture(); //该函数在属于当前线程的指定窗口里设置鼠标捕获
          return false;
        };
      }
    },
    //获取树
    async getTreeData () {
      const data=await queryMenuTree();
      let menuLists=data.result.filter((value) => {
        return value.url=="/commResource";
      });
      this.pid=menuLists[0].id;
      const res=await selectMenuRecursive({ id: menuLists[0].id });
      if(res.code==200) {
        if(res.result.length!=0) {
          let menuList=res.result.filter((value) => {
            return value.type==1;
          });
          this.menuList=this.treeData(menuList);
          console.log(this.menuList)
          this.m1=this.menuList[0].cnName;
          this.setViewController(this.menuList[0]);
          this.nodeName=this.m1
          const hanleselectindex=sessionStorage.getItem('hanleselectindex')
          if(hanleselectindex) {
            this.$nextTick(function() {
              this.handleselecttwo(JSON.parse(hanleselectindex).url,JSON.parse(hanleselectindex))
              this.setViewController(JSON.parse(hanleselectindex))
            })
          }
        } else {
          this.$message.error('暂无菜单栏数据');
        }
      } else {
        this.$message.error('接口报错');
      }
      // this.treeList = this.treeData(data.result);
    },
    setViewController (res) {
      if(res.children!=null) {
        this.setViewController(res.children[0]);
      } else {
        this.signInsertOpLog(this.m1,res.cnName)
        this.$store.state.currentPerms=res.perms;
        this.setMenuFlag=res.url;
        this.activeIndex=res.url;
      }
    },
    async signInsertOpLog (m1,m2) {
      var obj={
        m1: m1,
        m2: m2,
      }
      // const data = await sign_insertOpLog(obj);
    },
    treeData (source) {
      let cloneData=JSON.parse(JSON.stringify(source)); // å¯¹æºæ•°æ®æ·±åº¦å…‹éš†
      var that=this;
      // console.log(cloneData);
      if(cloneData.length!=0) {
        return cloneData.filter((father) => {
          // å¾ªçŽ¯æ‰€æœ‰é¡¹
          let branchArr=cloneData.filter((child) => father.id==child.pid); // å¯¹æ¯”ID,分别上下级菜单,并返回数据
          branchArr.length>0? (father.children=branchArr):''; // ç»™çˆ¶çº§æ·»åŠ ä¸€ä¸ªchildren属性,并赋值
          // å±žäºŽåŒä¸€å¯¹è±¡é—®é¢˜ï¼Œä¾‹å¦‚:令 a=b、c=1 ï¼Œç„¶åŽå†ä»¤ b.c=c ï¼Œ é‚£ä¹ˆ a.c=b.c=c=1 ï¼›åŒç†ï¼ŒåŽç»­ä»¤ c.d=2 ,那么 a.c.d ä¹Ÿæ˜¯=2;
          // ç”±æ­¤å¾ªçŽ¯å¤šæ¬¡åŽï¼Œå°±èƒ½å½¢æˆç›¸åº”çš„æ ‘å½¢æ•°æ®ç»“æž„
          return father.pid==that.pid; // è¿”回一级菜单
        });
      } else {
        this.$message.error('暂无菜单栏数据');
      }
    },
    handleselect (index,indexPath,e) {
      const a=JSON.stringify(e.$attrs.perms)
      this.signInsertOpLog(this.m1,e.$attrs.perms.cnName)
      sessionStorage.setItem('hanleselectindex',a)
      var data=e.$attrs.perms;
      this.$store.state.currentPerms=data.perms;
      var index=data.url;
      if(index!=null) {
        if(index.indexOf('http')!=-1) {
          this.$store.commit('getIframe',data.url);
          index='dataIfream';
        }
      }
      this.setMenuFlag=index;
      this.nodeName=data.cnName
    },
    handleselecttwo (index,e) {
      const a=JSON.stringify(e)
      sessionStorage.setItem('hanleselectindex',a)
      var data=e;
      this.$store.state.currentPerms=data.perms;
      var index=data.url;
      if(index!=null) {
        if(index.indexOf('http')!=-1) {
          this.$store.commit('getIframe',data.url);
          index='dataIfream';
        }
      }
      this.setMenuFlag=index;
    },
  },
};
</script>
src/views/comm/commScenario/commScenario.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,227 @@
<template>
  <div class="contentBox">
    <div class="box"
         ref="box">
      <div class="left box_div">
        <el-menu :default-active="activeIndex"
                 background-color="transparent"
                 @select="handleselect">
          <customElMenu :menuData="menuList"></customElMenu>
        </el-menu>
      </div>
      <div class="resize"
           title="收缩侧边栏">
        â‹®
      </div>
      <div class="mid box_div">
        <My-bread :list="[
          `通信资源管理`,
          nodeName,
        ]"></My-bread>
        <el-divider />
      </div>
    </div>
  </div>
</template>
<script>
import { selectMenuRecursive,queryMenuTree,sign_insertOpLog } from '@/api/api.js'
import MyBread from "@/components/MyBread.vue";
import customElMenu from "@/components/customElMenu.vue";
export default {
  components: {
    MyBread,
    customElMenu
  },
  data () {
    return {
      setMenuFlag: ' ',
      activeIndex: ' ',
      oriData: [], //原始树数据
      dirData: [], //el树数据
      newData: [], //拖动后数据
      lang: 'zh',
      menuList: [],
      editTitle: '',
      showPopover: false,
      showEditInfoWrapper: false,
      showEdit: false,
      editMenu: false,
      editCatalogue: false,
      editUnit: false,
      itemdetail: {},
      formLabelWidth: '70px',
      pid: null,
      nodeName: null,
    };
  },
  created () { },
  mounted () {
    this.getTreeData();
    //左右拖動
    this.dragControllerDiv();
  },
  methods: {
    //左右拖動
    dragControllerDiv: function() {
      var resize=document.getElementsByClassName('resize');
      var left=document.getElementsByClassName('left');
      var mid=document.getElementsByClassName('mid');
      var box=document.getElementsByClassName('box');
      for(let i=0;i<resize.length;i++) {
        // é¼ æ ‡æŒ‰ä¸‹äº‹ä»¶
        resize[i].onmousedown=function(e) {
          //颜色改变提醒
          resize[i].style.background='#818181';
          var startX=e.clientX;
          resize[i].left=resize[i].offsetLeft;
          // é¼ æ ‡æ‹–动事件
          document.onmousemove=function(e) {
            var endX=e.clientX;
            var moveLen=resize[i].left+(endX-startX); // ï¼ˆendx-startx)=移动的距离。resize[i].left+移动的距离=左边区域最后的宽度
            var maxT=box[i].clientWidth-resize[i].offsetWidth; // å®¹å™¨å®½åº¦ - å·¦è¾¹åŒºåŸŸçš„宽度 = å³è¾¹åŒºåŸŸçš„宽度
            if(moveLen<205) moveLen=205; // å·¦è¾¹åŒºåŸŸçš„æœ€å°å®½åº¦ä¸º32px
            if(moveLen>maxT-300) moveLen=maxT-300; //右边区域最小宽度为150px
            resize[i].style.left=moveLen; // è®¾ç½®å·¦ä¾§åŒºåŸŸçš„宽度
            for(let j=0;j<left.length;j++) {
              left[j].style.width=moveLen+'px';
              mid[j].style.width=(box[i].clientWidth-moveLen-10)+'px';
            }
          };
          // é¼ æ ‡æ¾å¼€äº‹ä»¶
          document.onmouseup=function(evt) {
            //颜色恢复
            resize[i].style.background='#d6d6d6';
            document.onmousemove=null;
            document.onmouseup=null;
            resize[i].releaseCapture&&resize[i].releaseCapture(); //当你不在需要继续获得鼠标消息就要应该调用ReleaseCapture()释放掉
          };
          resize[i].setCapture&&resize[i].setCapture(); //该函数在属于当前线程的指定窗口里设置鼠标捕获
          return false;
        };
      }
    },
    //获取树
    async getTreeData () {
      const data=await queryMenuTree();
      let menuLists=data.result.filter((value) => {
        return value.url=="/commScenario";
      });
      this.pid=menuLists[0].id;
      const res=await selectMenuRecursive({ id: menuLists[0].id });
      if(res.code==200) {
        if(res.result.length!=0) {
          let menuList=res.result.filter((value) => {
            return value.type==1;
          });
          this.menuList=this.treeData(menuList);
          console.log(this.menuList)
          this.m1=this.menuList[0].cnName;
          this.setViewController(this.menuList[0]);
          this.nodeName=this.m1
          const hanleselectindex=sessionStorage.getItem('hanleselectindex')
          if(hanleselectindex) {
            this.$nextTick(function() {
              this.handleselecttwo(JSON.parse(hanleselectindex).url,JSON.parse(hanleselectindex))
              this.setViewController(JSON.parse(hanleselectindex))
            })
          }
        } else {
          this.$message.error('暂无菜单栏数据');
        }
      } else {
        this.$message.error('接口报错');
      }
      // this.treeList = this.treeData(data.result);
    },
    setViewController (res) {
      if(res.children!=null) {
        this.setViewController(res.children[0]);
      } else {
        this.signInsertOpLog(this.m1,res.cnName)
        this.$store.state.currentPerms=res.perms;
        this.setMenuFlag=res.url;
        this.activeIndex=res.url;
      }
    },
    async signInsertOpLog (m1,m2) {
      var obj={
        m1: m1,
        m2: m2,
      }
      // const data = await sign_insertOpLog(obj);
    },
    treeData (source) {
      let cloneData=JSON.parse(JSON.stringify(source)); // å¯¹æºæ•°æ®æ·±åº¦å…‹éš†
      var that=this;
      // console.log(cloneData);
      if(cloneData.length!=0) {
        return cloneData.filter((father) => {
          // å¾ªçŽ¯æ‰€æœ‰é¡¹
          let branchArr=cloneData.filter((child) => father.id==child.pid); // å¯¹æ¯”ID,分别上下级菜单,并返回数据
          branchArr.length>0? (father.children=branchArr):''; // ç»™çˆ¶çº§æ·»åŠ ä¸€ä¸ªchildren属性,并赋值
          // å±žäºŽåŒä¸€å¯¹è±¡é—®é¢˜ï¼Œä¾‹å¦‚:令 a=b、c=1 ï¼Œç„¶åŽå†ä»¤ b.c=c ï¼Œ é‚£ä¹ˆ a.c=b.c=c=1 ï¼›åŒç†ï¼ŒåŽç»­ä»¤ c.d=2 ,那么 a.c.d ä¹Ÿæ˜¯=2;
          // ç”±æ­¤å¾ªçŽ¯å¤šæ¬¡åŽï¼Œå°±èƒ½å½¢æˆç›¸åº”çš„æ ‘å½¢æ•°æ®ç»“æž„
          return father.pid==that.pid; // è¿”回一级菜单
        });
      } else {
        this.$message.error('暂无菜单栏数据');
      }
    },
    handleselect (index,indexPath,e) {
      const a=JSON.stringify(e.$attrs.perms)
      this.signInsertOpLog(this.m1,e.$attrs.perms.cnName)
      sessionStorage.setItem('hanleselectindex',a)
      var data=e.$attrs.perms;
      this.$store.state.currentPerms=data.perms;
      var index=data.url;
      if(index!=null) {
        if(index.indexOf('http')!=-1) {
          this.$store.commit('getIframe',data.url);
          index='dataIfream';
        }
      }
      this.setMenuFlag=index;
      this.nodeName=data.cnName
    },
    handleselecttwo (index,e) {
      const a=JSON.stringify(e)
      sessionStorage.setItem('hanleselectindex',a)
      var data=e;
      this.$store.state.currentPerms=data.perms;
      var index=data.url;
      if(index!=null) {
        if(index.indexOf('http')!=-1) {
          this.$store.commit('getIframe',data.url);
          index='dataIfream';
        }
      }
      this.setMenuFlag=index;
    },
  },
};
</script>
src/views/comm/commScheme/commScheme.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,227 @@
<template>
  <div class="contentBox">
    <div class="box"
         ref="box">
      <div class="left box_div">
        <el-menu :default-active="activeIndex"
                 background-color="transparent"
                 @select="handleselect">
          <customElMenu :menuData="menuList"></customElMenu>
        </el-menu>
      </div>
      <div class="resize"
           title="收缩侧边栏">
        â‹®
      </div>
      <div class="mid box_div">
        <My-bread :list="[
          `通信资源管理`,
          nodeName,
        ]"></My-bread>
        <el-divider />
      </div>
    </div>
  </div>
</template>
<script>
import { selectMenuRecursive,queryMenuTree,sign_insertOpLog } from '@/api/api.js'
import MyBread from "@/components/MyBread.vue";
import customElMenu from "@/components/customElMenu.vue";
export default {
  components: {
    MyBread,
    customElMenu
  },
  data () {
    return {
      setMenuFlag: ' ',
      activeIndex: ' ',
      oriData: [], //原始树数据
      dirData: [], //el树数据
      newData: [], //拖动后数据
      lang: 'zh',
      menuList: [],
      editTitle: '',
      showPopover: false,
      showEditInfoWrapper: false,
      showEdit: false,
      editMenu: false,
      editCatalogue: false,
      editUnit: false,
      itemdetail: {},
      formLabelWidth: '70px',
      pid: null,
      nodeName: null,
    };
  },
  created () { },
  mounted () {
    this.getTreeData();
    //左右拖動
    this.dragControllerDiv();
  },
  methods: {
    //左右拖動
    dragControllerDiv: function() {
      var resize=document.getElementsByClassName('resize');
      var left=document.getElementsByClassName('left');
      var mid=document.getElementsByClassName('mid');
      var box=document.getElementsByClassName('box');
      for(let i=0;i<resize.length;i++) {
        // é¼ æ ‡æŒ‰ä¸‹äº‹ä»¶
        resize[i].onmousedown=function(e) {
          //颜色改变提醒
          resize[i].style.background='#818181';
          var startX=e.clientX;
          resize[i].left=resize[i].offsetLeft;
          // é¼ æ ‡æ‹–动事件
          document.onmousemove=function(e) {
            var endX=e.clientX;
            var moveLen=resize[i].left+(endX-startX); // ï¼ˆendx-startx)=移动的距离。resize[i].left+移动的距离=左边区域最后的宽度
            var maxT=box[i].clientWidth-resize[i].offsetWidth; // å®¹å™¨å®½åº¦ - å·¦è¾¹åŒºåŸŸçš„宽度 = å³è¾¹åŒºåŸŸçš„宽度
            if(moveLen<205) moveLen=205; // å·¦è¾¹åŒºåŸŸçš„æœ€å°å®½åº¦ä¸º32px
            if(moveLen>maxT-300) moveLen=maxT-300; //右边区域最小宽度为150px
            resize[i].style.left=moveLen; // è®¾ç½®å·¦ä¾§åŒºåŸŸçš„宽度
            for(let j=0;j<left.length;j++) {
              left[j].style.width=moveLen+'px';
              mid[j].style.width=(box[i].clientWidth-moveLen-10)+'px';
            }
          };
          // é¼ æ ‡æ¾å¼€äº‹ä»¶
          document.onmouseup=function(evt) {
            //颜色恢复
            resize[i].style.background='#d6d6d6';
            document.onmousemove=null;
            document.onmouseup=null;
            resize[i].releaseCapture&&resize[i].releaseCapture(); //当你不在需要继续获得鼠标消息就要应该调用ReleaseCapture()释放掉
          };
          resize[i].setCapture&&resize[i].setCapture(); //该函数在属于当前线程的指定窗口里设置鼠标捕获
          return false;
        };
      }
    },
    //获取树
    async getTreeData () {
      const data=await queryMenuTree();
      let menuLists=data.result.filter((value) => {
        return value.url=="/commScheme";
      });
      this.pid=menuLists[0].id;
      const res=await selectMenuRecursive({ id: menuLists[0].id });
      if(res.code==200) {
        if(res.result.length!=0) {
          let menuList=res.result.filter((value) => {
            return value.type==1;
          });
          this.menuList=this.treeData(menuList);
          console.log(this.menuList)
          this.m1=this.menuList[0].cnName;
          this.setViewController(this.menuList[0]);
          this.nodeName=this.m1
          const hanleselectindex=sessionStorage.getItem('hanleselectindex')
          if(hanleselectindex) {
            this.$nextTick(function() {
              this.handleselecttwo(JSON.parse(hanleselectindex).url,JSON.parse(hanleselectindex))
              this.setViewController(JSON.parse(hanleselectindex))
            })
          }
        } else {
          this.$message.error('暂无菜单栏数据');
        }
      } else {
        this.$message.error('接口报错');
      }
      // this.treeList = this.treeData(data.result);
    },
    setViewController (res) {
      if(res.children!=null) {
        this.setViewController(res.children[0]);
      } else {
        this.signInsertOpLog(this.m1,res.cnName)
        this.$store.state.currentPerms=res.perms;
        this.setMenuFlag=res.url;
        this.activeIndex=res.url;
      }
    },
    async signInsertOpLog (m1,m2) {
      var obj={
        m1: m1,
        m2: m2,
      }
      // const data = await sign_insertOpLog(obj);
    },
    treeData (source) {
      let cloneData=JSON.parse(JSON.stringify(source)); // å¯¹æºæ•°æ®æ·±åº¦å…‹éš†
      var that=this;
      // console.log(cloneData);
      if(cloneData.length!=0) {
        return cloneData.filter((father) => {
          // å¾ªçŽ¯æ‰€æœ‰é¡¹
          let branchArr=cloneData.filter((child) => father.id==child.pid); // å¯¹æ¯”ID,分别上下级菜单,并返回数据
          branchArr.length>0? (father.children=branchArr):''; // ç»™çˆ¶çº§æ·»åŠ ä¸€ä¸ªchildren属性,并赋值
          // å±žäºŽåŒä¸€å¯¹è±¡é—®é¢˜ï¼Œä¾‹å¦‚:令 a=b、c=1 ï¼Œç„¶åŽå†ä»¤ b.c=c ï¼Œ é‚£ä¹ˆ a.c=b.c=c=1 ï¼›åŒç†ï¼ŒåŽç»­ä»¤ c.d=2 ,那么 a.c.d ä¹Ÿæ˜¯=2;
          // ç”±æ­¤å¾ªçŽ¯å¤šæ¬¡åŽï¼Œå°±èƒ½å½¢æˆç›¸åº”çš„æ ‘å½¢æ•°æ®ç»“æž„
          return father.pid==that.pid; // è¿”回一级菜单
        });
      } else {
        this.$message.error('暂无菜单栏数据');
      }
    },
    handleselect (index,indexPath,e) {
      const a=JSON.stringify(e.$attrs.perms)
      this.signInsertOpLog(this.m1,e.$attrs.perms.cnName)
      sessionStorage.setItem('hanleselectindex',a)
      var data=e.$attrs.perms;
      this.$store.state.currentPerms=data.perms;
      var index=data.url;
      if(index!=null) {
        if(index.indexOf('http')!=-1) {
          this.$store.commit('getIframe',data.url);
          index='dataIfream';
        }
      }
      this.setMenuFlag=index;
      this.nodeName=data.cnName
    },
    handleselecttwo (index,e) {
      const a=JSON.stringify(e)
      sessionStorage.setItem('hanleselectindex',a)
      var data=e;
      this.$store.state.currentPerms=data.perms;
      var index=data.url;
      if(index!=null) {
        if(index.indexOf('http')!=-1) {
          this.$store.commit('getIframe',data.url);
          index='dataIfream';
        }
      }
      this.setMenuFlag=index;
    },
  },
};
</script>
src/views/comm/damageAssess/damageAssess.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,48 @@
<template>
  <div class="dictionaryBox">
    <My-bread :list="[
        `通信效能评估`,
        `通信毁伤影响评估`,
      ]"></My-bread>
    <el-divider />
    <div class="mainBox">
    </div>
  </div>
</template>
<script>
import MyBread from "@/components/MyBread.vue";
export default {
  name: "multimedia",
  components: { MyBread },
  data () {
    return {
    };
  },
  watch: {
  },
  created () {
  },
  methods () {
  }
};
</script>
<style lang="less" scoped>
//@import url(); å¼•入公共cssç±»
.dictionaryBox {
  height: calc(100% - 40px);
  width: calc(100% - 40px);
  padding: 10px;
  background: #f4f8ff;
  margin: 10px;
  border-radius: 5px;
}
</style>
src/views/comm/multimedia/multimedia.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,48 @@
<template>
  <div class="dictionaryBox">
    <My-bread :list="[
        `数据资源管理`,
        `多媒体素材管理`,
      ]"></My-bread>
    <el-divider />
    <div class="mainBox">
    </div>
  </div>
</template>
<script>
import MyBread from "@/components/MyBread.vue";
export default {
  name: "multimedia",
  components: { MyBread },
  data () {
    return {
    };
  },
  watch: {
  },
  created () {
  },
  methods () {
  }
};
</script>
<style lang="less" scoped>
//@import url(); å¼•入公共cssç±»
.dictionaryBox {
  height: calc(100% - 40px);
  width: calc(100% - 40px);
  padding: 10px;
  background: #f4f8ff;
  margin: 10px;
  border-radius: 5px;
}
</style>
src/views/comm/planFormulation/planFormulation.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,48 @@
<template>
  <div class="dictionaryBox">
    <My-bread :list="[
        `通信方案筹划`,
        `方案拟制`,
      ]"></My-bread>
    <el-divider />
    <div class="mainBox">
    </div>
  </div>
</template>
<script>
import MyBread from "@/components/MyBread.vue";
export default {
  name: "multimedia",
  components: { MyBread },
  data () {
    return {
    };
  },
  watch: {
  },
  created () {
  },
  methods () {
  }
};
</script>
<style lang="less" scoped>
//@import url(); å¼•入公共cssç±»
.dictionaryBox {
  height: calc(100% - 40px);
  width: calc(100% - 40px);
  padding: 10px;
  background: #f4f8ff;
  margin: 10px;
  border-radius: 5px;
}
</style>
src/views/comm/planReview/planReview.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,48 @@
<template>
  <div class="dictionaryBox">
    <My-bread :list="[
        `通信方案筹划`,
        `方案讲评`,
      ]"></My-bread>
    <el-divider />
    <div class="mainBox">
    </div>
  </div>
</template>
<script>
import MyBread from "@/components/MyBread.vue";
export default {
  name: "multimedia",
  components: { MyBread },
  data () {
    return {
    };
  },
  watch: {
  },
  created () {
  },
  methods () {
  }
};
</script>
<style lang="less" scoped>
//@import url(); å¼•入公共cssç±»
.dictionaryBox {
  height: calc(100% - 40px);
  width: calc(100% - 40px);
  padding: 10px;
  background: #f4f8ff;
  margin: 10px;
  border-radius: 5px;
}
</style>
src/views/comm/simulationModel/simulationModel.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,48 @@
<template>
  <div class="dictionaryBox">
    <My-bread :list="[
        `数据资源管理`,
        `仿真模型管理`,
      ]"></My-bread>
    <el-divider />
    <div class="mainBox">
    </div>
  </div>
</template>
<script>
import MyBread from "@/components/MyBread.vue";
export default {
  name: "multimedia",
  components: { MyBread },
  data () {
    return {
    };
  },
  watch: {
  },
  created () {
  },
  methods () {
  }
};
</script>
<style lang="less" scoped>
//@import url(); å¼•入公共cssç±»
.dictionaryBox {
  height: calc(100% - 40px);
  width: calc(100% - 40px);
  padding: 10px;
  background: #f4f8ff;
  margin: 10px;
  border-radius: 5px;
}
</style>
src/views/datamanage/catalogueManage.vue
@@ -7,13 +7,10 @@
    <el-divider />
    <div class="mainBox">
      <div
        class="cataLogContent leftTree subpage_Div"
        style="border: 1px solid #dcdfe6;"
      >
      <div class="cataLogContent leftTree subpage_Div"
           style="border: 1px solid #dcdfe6;">
        <div style="min-width: 450px">
          <el-tree
            ref="tree"
          <el-tree ref="tree"
            :props="defaultProps"
            node-key="id"
            :data="dirList"
@@ -21,14 +18,11 @@
            :expand-on-click-node="false"
            :default-expanded-keys="expandData"
            @node-click="handleNodeClick"
            @node-contextmenu="openTreeMenu"
          >
                   @node-contextmenu="openTreeMenu">
          </el-tree>
          <div
            class="right_menu box_divm"
          <div class="right_menu box_divm"
            id="menu"
            v-show="showRightMenu"
          >
               v-show="showRightMenu">
            <ul>
              <li @click="setMenuDataCopy">复制</li>
              <li @click="setMenuDataPaste">粘贴</li>
@@ -37,14 +31,12 @@
        </div>
      </div>
      <div class="cataLog_rightContent right subpage_Div">
        <div
          class="inquire"
        <div class="inquire"
          style="
            align-items: center;
            display: flex;
            justify-content: space-between;
          "
        >
          ">
          <el-breadcrumb separator="/">
            <el-breadcrumb-item :to="{ path: '/' }">{{
              
@@ -52,94 +44,74 @@
          </el-breadcrumb>
          <div style="margin-right: -5px">
            <div class="menuTop">
              <el-form
                :inline="true"
                class="demo-form-inline"
              >
              <el-form :inline="true"
                       class="demo-form-inline">
                <el-form-item>
                  <el-button
                    v-show="directoryFlag"
                  <el-button v-show="directoryFlag"
                    icon="el-icon-download"
                    type="info"
                    size="small"
                    @click="setDirectoryDownload"
                  >{{ $t("shuJuGuanLi.butten.folderDownload") }}</el-button>
                             @click="setDirectoryDownload">{{ $t("shuJuGuanLi.butten.folderDownload") }}</el-button>
                </el-form-item>
                <el-form-item>
                  <el-button
                    icon="el-icon-download"
                  <el-button icon="el-icon-download"
                    type="info"
                    size="small"
                    @click="setTemplateDownload"
                  >{{ $t("shuJuGuanLi.butten.templateDownload") }}</el-button>
                             @click="setTemplateDownload">{{ $t("shuJuGuanLi.butten.templateDownload") }}</el-button>
                </el-form-item>
                <el-form-item>
                  <el-upload
                    action
                  <el-upload action
                    accept=".xlsx, .xls"
                    :auto-upload="false"
                    :show-file-list="false"
                    :on-change="handleChange"
                    :file-list="fileList"
                  >
                    <el-button
                      type="success"
                             :file-list="fileList">
                    <el-button type="success"
                      icon="el-icon-plus"
                      size="small"
                    >{{ $t("shuJuGuanLi.butten.uploads") }}</el-button>
                               size="small">{{ $t("shuJuGuanLi.butten.uploads") }}</el-button>
                  </el-upload>
                </el-form-item>
                <el-form-item>
                  <el-button
                    v-if="menuStatus.insert"
                  <el-button v-if="menuStatus.insert"
                    :disabled="itemdetail.pid == null ? true : false"
                    @click="setNewNode(1)"
                    type="success"
                    icon="el-icon-plus"
                    size="small"
                  >{{ $t("shuJuGuanLi.butten.NewPeer") }}</el-button>
                             size="small">{{ $t("shuJuGuanLi.butten.NewPeer") }}</el-button>
                </el-form-item>
                <el-form-item>
                  <el-button
                    v-if="menuStatus.insert"
                  <el-button v-if="menuStatus.insert"
                    :disabled="itemdetail.pid == null ? true : false"
                    @click="setNewNode(2)"
                    type="success"
                    icon="el-icon-plus"
                    size="small"
                  >{{ $t("shuJuGuanLi.butten.AddChild") }}</el-button>
                             size="small">{{ $t("shuJuGuanLi.butten.AddChild") }}</el-button>
                </el-form-item>
                <el-form-item>
                  <el-button
                    v-if="menuStatus.delete"
                  <el-button v-if="menuStatus.delete"
                    @click="setDelNode()"
                    :disabled="itemdetail.pid == null ? true : false"
                    type="danger"
                    icon="el-icon-delete"
                    size="small"
                  >{{ $t("shuJuGuanLi.butten.Delete") }}</el-button>
                             size="small">{{ $t("shuJuGuanLi.butten.Delete") }}</el-button>
                </el-form-item>
                <el-form-item>
                  <el-button
                    v-if="menuStatus.update"
                  <el-button v-if="menuStatus.update"
                    :disabled="itemdetail.pid == null ? true : false"
                    @click="setEditNode(1)"
                    type="info"
                    icon="el-icon-top"
                    size="small"
                  >{{ $t("shuJuGuanLi.butten.MoveUp") }}</el-button>
                             size="small">{{ $t("shuJuGuanLi.butten.MoveUp") }}</el-button>
                </el-form-item>
                <el-form-item>
                  <el-button
                    v-if="menuStatus.update"
                  <el-button v-if="menuStatus.update"
                    :disabled="itemdetail.pid == null ? true : false"
                    @click="setEditNode(2)"
                    type="info"
                    icon="el-icon-bottom"
                    size="small"
                  >{{ $t("shuJuGuanLi.butten.MoveDown") }}</el-button>
                             size="small">{{ $t("shuJuGuanLi.butten.MoveDown") }}</el-button>
                </el-form-item>
              </el-form>
            </div>
@@ -148,54 +120,38 @@
        </div>
        <div class="dividing-line"></div>
        <el-form
          :model="itemdetail"
        <el-form :model="itemdetail"
          ref="itemdetail"
          :rules="rules"
          style="position: relative; padding-top: 18px"
        >
          <el-form-item
            prop="name"
                 style="position: relative; padding-top: 18px">
          <el-form-item prop="name"
            :label="$t('dataManage.dataUpObj.name')"
            :label-width="formLabelWidth"
          >
            <el-input
              v-model="itemdetail.name"
                        :label-width="formLabelWidth">
            <el-input v-model="itemdetail.name"
              size="small"
              style=" max-width: 420px"
              :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valueName')"
              clearable
            />
                      clearable />
            <!--            style="max-width: 400px"-->
          </el-form-item>
          <el-form-item
            :label="$t('dataManage.dataUpObj.explain')"
            :label-width="formLabelWidth"
          >
            <el-input
              v-model="itemdetail.descr"
          <el-form-item :label="$t('dataManage.dataUpObj.explain')"
                        :label-width="formLabelWidth">
            <el-input v-model="itemdetail.descr"
              type="textarea"
              style=" max-width: 420px"
              :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valueexplain')"
              clearable
            />
                      clearable />
          </el-form-item>
          <el-form-item
            :label="$t('dataManage.dataUpObj.inspectionItems')"
            :label-width="formLabelWidth"
          >
            <el-select
              style="width: 420px"
          <el-form-item :label="$t('dataManage.dataUpObj.inspectionItems')"
                        :label-width="formLabelWidth">
            <el-select style="width: 420px"
              v-model="itemdetail.checks"
              :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valueexamine')"
              multiple
            >
              <el-option
                v-for="item in options"
                       multiple>
              <el-option v-for="item in options"
                :key="item.value"
                :label="item.label"
                :value="item.value"
              >
                         :value="item.value">
              </el-option>
            </el-select>
            <!-- <el-input
@@ -208,17 +164,13 @@
            <!--            resize="none"-->
            <!--            style="height: 100%; overflow: auto; max-width: 400px"-->
          </el-form-item>
          <el-form-item
            :label="$t('dataManage.dataUpObj.fileExtension')"
            :label-width="formLabelWidth"
          >
            <el-input
              v-model="itemdetail.exts"
          <el-form-item :label="$t('dataManage.dataUpObj.fileExtension')"
                        :label-width="formLabelWidth">
            <el-input v-model="itemdetail.exts"
              type="textarea"
              style=" max-width: 420px"
              :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuesuffix')"
              clearable
            />
                      clearable />
          </el-form-item>
          <!--          <el-form-item
            :label="$t('dataManage.dataUpObj.inspectionItems')"
@@ -231,17 +183,13 @@
              style="height: 100%; overflow: auto; max-width: 400px"
            />
          </el-form-item>-->
          <el-form-item
            :label="$t('dataManage.dataUpObj.code')"
            :label-width="formLabelWidth"
          >
            <el-input
              v-model="itemdetail.code"
          <el-form-item :label="$t('dataManage.dataUpObj.code')"
                        :label-width="formLabelWidth">
            <el-input v-model="itemdetail.code"
              disabled
              type="textarea"
              style=" max-width: 420px"
              autosize
            />
                      autosize />
          </el-form-item>
          <!--          <el-form-item
            :label="$t('dataManage.dataUpObj.catalogRemarks')"
@@ -271,22 +219,16 @@
            >
          </div>-->
        </el-form>
        <div
          slot="footer"
        <div slot="footer"
          class="dialog-footer"
          style="padding-left: 45% ;padding-top: 20px"
        >
          <el-button
            v-if="menuStatus.update"
             style="padding-left: 45% ;padding-top: 20px">
          <el-button v-if="menuStatus.update"
            type="primary"
            size="small"
            @click="updCata('itemdetail')"
          >{{ $t("common.preservation") }}</el-button>
          <el-button
            v-if="menuStatus.update"
                     @click="updCata('itemdetail')">{{ $t("common.preservation") }}</el-button>
          <el-button v-if="menuStatus.update"
            size="small"
            @click="reset"
          >{{ $t("common.cancel") }}</el-button>
                     @click="reset">{{ $t("common.cancel") }}</el-button>
        </div>
      </div>
    </div>
@@ -304,122 +246,84 @@
      </div> -->
    <!-- </div> -->
    <el-dialog
      :title="$t('dataManage.dataUpObj.newDirectory')"
    <el-dialog :title="$t('dataManage.dataUpObj.newDirectory')"
      :visible.sync="dialogFormVisible"
      :before-close="handleClose"
    >
      <el-form
        :model="ruleForm"
               :before-close="handleClose">
      <el-form :model="ruleForm"
        ref="ruleForm"
        :rules="rules"
      >
        <el-form-item
          :label="$t('dataManage.dataUpObj.name')"
               :rules="rules">
        <el-form-item :label="$t('dataManage.dataUpObj.name')"
          prop="name"
          :label-width="formLabelWidth"
        >
          <el-input
            v-model="ruleForm.name"
                      :label-width="formLabelWidth">
          <el-input v-model="ruleForm.name"
            autocomplete="off"
            :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valueName')"
          ></el-input>
                    :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valueName')"></el-input>
        </el-form-item>
        <el-form-item
          :label="$t('dataManage.dataUpObj.explain')"
          :label-width="formLabelWidth"
        >
          <el-input
            v-model="ruleForm.descr"
        <el-form-item :label="$t('dataManage.dataUpObj.explain')"
                      :label-width="formLabelWidth">
          <el-input v-model="ruleForm.descr"
            autocomplete="off"
            :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valueexplain')"
          ></el-input>
                    :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valueexplain')"></el-input>
        </el-form-item>
        <el-form-item
          :label="$t('dataManage.dataUpObj.fileExtension')"
          :label-width="formLabelWidth"
        >
          <el-input
            v-model="ruleForm.exts"
        <el-form-item :label="$t('dataManage.dataUpObj.fileExtension')"
                      :label-width="formLabelWidth">
          <el-input v-model="ruleForm.exts"
            type="textarea"
            resize="none"
            style="height: 100%; overflow: auto"
            :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuesuffix')"
          />
                    :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuesuffix')" />
        </el-form-item>
        <el-form-item
          :label="$t('dataManage.dataUpObj.inspectionItems')"
          :label-width="formLabelWidth"
        >
        <el-form-item :label="$t('dataManage.dataUpObj.inspectionItems')"
                      :label-width="formLabelWidth">
          <!-- <el-input
            
            type="textarea"
            resize="none"
         
          /> -->
          <el-select
            v-model="ruleForm.checks"
          <el-select v-model="ruleForm.checks"
            multiple
            style="width:100%;"
            :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valueexamine')"
          >
            <el-option
              v-for="item in options"
                     :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valueexamine')">
            <el-option v-for="item in options"
              :key="item.value"
              :label="item.label"
              :value="item.value"
            >
                       :value="item.value">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item
          :label="$t('dataManage.dataUpObj.code')"
          :label-width="formLabelWidth"
        >
          <el-input
            v-model="ruleForm.code"
        <el-form-item :label="$t('dataManage.dataUpObj.code')"
                      :label-width="formLabelWidth">
          <el-input v-model="ruleForm.code"
            disabled
            type="textarea"
            resize="none"
            style="height: 100%; overflow: auto"
          />
                    style="height: 100%; overflow: auto" />
        </el-form-item>
        <el-form-item
          :label="$t('dataManage.dataUpObj.Remarks')"
          :label-width="formLabelWidth"
        >
          <el-input
            v-model="ruleForm.bak"
        <el-form-item :label="$t('dataManage.dataUpObj.Remarks')"
                      :label-width="formLabelWidth">
          <el-input v-model="ruleForm.bak"
            autocomplete="off"
            :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valueRemarks')"
          ></el-input>
                    :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valueRemarks')"></el-input>
        </el-form-item>
      </el-form>
      <div
        slot="footer"
        class="dialog-footer"
      >
      <div slot="footer"
           class="dialog-footer">
        <el-button @click="resetForm('ruleForm')">{{
          $t("common.cancel")
        }}</el-button>
        <el-button
          class="primary"
        <el-button class="primary"
          @click="submitForm('ruleForm')"
          v-loading.fullscreen.lock="fullscreenLoading"
        >{{ $t("common.preservation") }}</el-button>
                   v-loading.fullscreen.lock="fullscreenLoading">{{ $t("common.preservation") }}</el-button>
      </div>
    </el-dialog>
    <iframe
      id="Iframe1"
    <iframe id="Iframe1"
      src=""
      style="display: none; border: 0; padding: 0; height: 0; width: 0"
    ></iframe>
    <div
      class="loadBox"
      v-if="loadDialogVisible"
    >
            style="display: none; border: 0; padding: 0; height: 0; width: 0"></iframe>
    <div class="loadBox"
         v-if="loadDialogVisible">
      <div style="widht:100%; margin:20px; color:white">
        <div style="margin-left:99%">
          <!-- <el-link
@@ -428,12 +332,10 @@
          > X</el-link> -->
        </div>
      </div>
      <div
        v-loading="true"
      <div v-loading="true"
        element-loading-background="rgba(0, 0, 0, 0.0) "
        element-loading-text="目录上传中,请等待..."
        style="margin: 0px 20px;widht:100%;height:calc(100% - 80px); "
      >
           style="margin: 0px 20px;widht:100%;height:calc(100% - 80px); ">
      </div>
    </div>
  </div>
@@ -1380,9 +1282,12 @@
<style lang="less" scoped>
.subpage_Box {
  //height: 96%;
  width: 98%;
  width: calc(98% - 20px);
  height: calc(95% - 20px);
  padding: 1%;
  border-radius: 10px;
  background: #f4f8ff;
  margin: 10px;
  // .cataLogContent {
  //   width: 100%;
  //   height: 100%;
src/views/maintenance/menuSettings.vue
@@ -10,102 +10,76 @@
    <div class="cataLogContent">
      <div class="left_Tree subpage_Div">
        <div style="width:auto">
          <el-tree
            ref="tree"
          <el-tree ref="tree"
            :props="defaultProps"
            node-key="id"
            highlight-current
            :data="menuList"
            :expand-on-click-node="false"
            :default-expand-all="true"
            @node-click="handleNodeClick"
          >
                   @node-click="handleNodeClick">
          </el-tree>
        </div>
      </div>
      <div class="right_menu subpage_Div">
        <div style="display:flex;justify-content:right;align-items: center;padding-bottom: 14px">
          <el-breadcrumb separator="/" style="display: none">
          <el-breadcrumb separator="/"
                         style="display: none">
            <el-breadcrumb-item :to="{ path: '/' }">{{
            $t('dataManage.dictionaryManageObj.particulars')
          }}</el-breadcrumb-item>
          </el-breadcrumb>
          <div>
            <el-button
              v-if="menuStatus.insert"
              :disabled="itemdetail.pid == null ? true : false"
            <el-button :disabled="itemdetail.pid == null ? true : false"
              @click="setNewNode(1)"
              type="success"
              icon="el-icon-plus"
              size="small"
            >{{$t('operatManage.menuSetObj.insert')}}</el-button>
            <el-button
              v-if="menuStatus.insert"
              :disabled="itemdetail.pid == null ? true : false"
                       size="small">{{$t('operatManage.menuSetObj.insert')}}</el-button>
            <el-button :disabled="itemdetail.pid == null ? true : false"
              @click="setNewNode(2)"
              type="success"
              icon="el-icon-plus"
              size="small"
            >{{$t('operatManage.menuSetObj.subInsert')}}</el-button>
            <el-button
              v-if="menuStatus.delete"
              @click="setDelNode()"
                       size="small">{{$t('operatManage.menuSetObj.subInsert')}}</el-button>
            <el-button @click="setDelNode()"
              :disabled="itemdetail.pid == null ? true : false"
              type="danger"
              icon="el-icon-delete"
              size="small"
            >{{$t('operatManage.menuSetObj.delete')}}</el-button>
            <el-button
              v-if="menuStatus.update"
              :disabled="itemdetail.pid == null ? true : false"
                       size="small">{{$t('operatManage.menuSetObj.delete')}}</el-button>
            <el-button :disabled="itemdetail.pid == null ? true : false"
              @click="setEditNode(1)"
              type="info"
              icon="el-icon-top"
              size="small"
            >{{$t('operatManage.menuSetObj.moveUp')}}</el-button>
            <el-button
              v-if="menuStatus.update"
              :disabled="itemdetail.pid == null ? true : false"
                       size="small">{{$t('operatManage.menuSetObj.moveUp')}}</el-button>
            <el-button :disabled="itemdetail.pid == null ? true : false"
              @click="setEditNode(2)"
              type="info"
              icon="el-icon-bottom"
              size="small"
            >{{$t('operatManage.menuSetObj.moveDown')}}</el-button>
                       size="small">{{$t('operatManage.menuSetObj.moveDown')}}</el-button>
          </div>
        </div>
        <div class="dividing-line"></div>
<!--        <el-divider />-->
        <div class="form_box">
          <el-form
            :model="itemdetail"
          <el-form :model="itemdetail"
            ref="itemdetail"
            :rules="rules"
            label-width="130px"
          >
            <el-form-item
              prop="enName"
                   label-width="130px">
            <el-form-item prop="enName"
              :label="$t('operatManage.menuSetObj.enName')"
              :label-width="formLabelWidth"
            >
              <el-input
                clear="el_input"
                          :label-width="formLabelWidth">
              <el-input clear="el_input"
                v-model="itemdetail.enName"
                :placeholder="$t('operatManage.menuSetObj.enNameHolder')"
                autocomplete="off"
              ></el-input>
                        autocomplete="off"></el-input>
            </el-form-item>
            <el-form-item
              prop="cnName"
            <el-form-item prop="cnName"
              :label="$t('operatManage.menuSetObj.cnName')"
              :label-width="formLabelWidth"
            >
              <el-input
                v-model="itemdetail.cnName"
                          :label-width="formLabelWidth">
              <el-input v-model="itemdetail.cnName"
                :placeholder="$t('operatManage.menuSetObj.cnNameHolder')"
                autocomplete="off"
              ></el-input>
                        autocomplete="off"></el-input>
            </el-form-item>
<!--            <el-form-item-->
<!--              :label="$t('operatManage.menuSetObj.icon')"-->
@@ -117,19 +91,17 @@
<!--                autocomplete="off"-->
<!--              ></el-input>-->
<!--            </el-form-item>-->
            <el-form-item
              prop="isShow"
            <el-form-item prop="isShow"
              :label="$t('operatManage.menuSetObj.isShow')"
              :label-width="formLabelWidth"
            >
              <el-select
                style="width: 400px"
                          :label-width="formLabelWidth">
              <el-select style="width: 400px"
                :popper-append-to-body="false"
                v-model="itemdetail.isShow"
                :placeholder="$t('operatManage.menuSetObj.show')"
              >
                <el-option :label="$t('operatManage.menuSetObj.hiddeen')" value="0" />
                <el-option :label="$t('operatManage.menuSetObj.isshow')" value="1" />
                         :placeholder="$t('operatManage.menuSetObj.show')">
                <el-option :label="$t('operatManage.menuSetObj.hiddeen')"
                           value="0" />
                <el-option :label="$t('operatManage.menuSetObj.isshow')"
                           value="1" />
<!--                <el-option-->
<!--                  v-for="item in options1"-->
<!--                  :key="item.value"-->
@@ -139,40 +111,31 @@
<!--                </el-option>-->
              </el-select>
            </el-form-item>
            <el-form-item
              :label="$t('operatManage.menuSetObj.menuUrl')"
              :label-width="formLabelWidth"
            >
              <el-input
                v-model="itemdetail.url"
            <el-form-item :label="$t('operatManage.menuSetObj.menuUrl')"
                          :label-width="formLabelWidth">
              <el-input v-model="itemdetail.url"
                :placeholder="$t('operatManage.menuSetObj.menuUrlHolder')"
                autocomplete="off"
              ></el-input>
                        autocomplete="off"></el-input>
            </el-form-item>
            <el-form-item
              :label="$t('operatManage.menuSetObj.authorize')"
              :label-width="formLabelWidth"
            >
              <el-input
                v-model="itemdetail.perms"
            <el-form-item :label="$t('operatManage.menuSetObj.authorize')"
                          :label-width="formLabelWidth">
              <el-input v-model="itemdetail.perms"
                :placeholder="$t('operatManage.menuSetObj.permsHolder')"
                autocomplete="off"
              ></el-input>
                        autocomplete="off"></el-input>
            </el-form-item>
            <el-form-item
              :label="$t('operatManage.menuSetObj.type')"
            <el-form-item :label="$t('operatManage.menuSetObj.type')"
              prop="type"
              :label-width="formLabelWidth"
            >
              <el-select
                style="width: 400px"
                          :label-width="formLabelWidth">
              <el-select style="width: 400px"
                :popper-append-to-body="false"
                v-model="itemdetail.type"
                :placeholder="$t('operatManage.menuSetObj.typeHolder')"
              >
                <el-option :label="$t('operatManage.menuSetObj.rootpath')" value="0" />
                <el-option :label="$t('operatManage.menuSetObj.menu')" value="1" />
                <el-option :label="$t('operatManage.menuSetObj.button')" value="2" />
                         :placeholder="$t('operatManage.menuSetObj.typeHolder')">
                <el-option :label="$t('operatManage.menuSetObj.rootpath')"
                           value="0" />
                <el-option :label="$t('operatManage.menuSetObj.menu')"
                           value="1" />
                <el-option :label="$t('operatManage.menuSetObj.button')"
                           value="2" />
<!--                <el-option-->
<!--                  v-for="item in options2"-->
<!--                  :key="item.value"-->
@@ -182,28 +145,20 @@
<!--                </el-option>-->
              </el-select>
            </el-form-item>
            <el-form-item
              :label="$t('operatManage.menuSetObj.bak')"
              :label-width="formLabelWidth"
            >
              <el-input
                v-model="itemdetail.bak"
            <el-form-item :label="$t('operatManage.menuSetObj.bak')"
                          :label-width="formLabelWidth">
              <el-input v-model="itemdetail.bak"
                autocomplete="off"
                :placeholder="$t('operatManage.menuSetObj.bakHolder')"
              ></el-input>
                        :placeholder="$t('operatManage.menuSetObj.bakHolder')"></el-input>
            </el-form-item>
            <div v-if="menuStatus.update">
            <div>
              <el-form-item>
                <el-button
                    size="small"
                <el-button size="small"
                    type="primary"
                    @click="updMenu('itemdetail')"
                >{{ $t('common.confirm') }}</el-button>
                <el-button
                    size="small"
                           @click="updMenu('itemdetail')">{{ $t('common.confirm') }}</el-button>
                <el-button size="small"
                    type="info"
                    @click="reset('itemdetail')"
                >{{
                           @click="reset('itemdetail')">{{
                    $t('common.cancel')
                  }}</el-button>
              </el-form-item>
@@ -214,140 +169,96 @@
      </div>
    </div>
    <el-dialog
      :title="$t('common.append')"
    <el-dialog :title="$t('common.append')"
      :visible.sync="dialogFormVisible"
      :before-close="handleClose"
    >
               :before-close="handleClose">
        <div style="height: 500px; overflow: auto">
      <el-form
        :model="ruleForm"
        <el-form :model="ruleForm"
        ref="ruleForm"
        :rules="rules"
        label-position="top"
      >
        <el-form-item
          prop="enName"
                 label-position="top">
          <el-form-item prop="enName"
          :label="$t('operatManage.menuSetObj.enName')"
          :label-width="formLabelWidth"
        >
          <el-input
            v-model="ruleForm.enName"
                        :label-width="formLabelWidth">
            <el-input v-model="ruleForm.enName"
            autocomplete="off"
            style="width:85%"
            :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuetwo')+$t('operatManage.menuSetObj.enName')"
          ></el-input>
                      :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuetwo')+$t('operatManage.menuSetObj.enName')"></el-input>
        </el-form-item>
        <el-form-item
          prop="cnName"
          <el-form-item prop="cnName"
          :label="$t('operatManage.menuSetObj.cnName')"
          :label-width="formLabelWidth"
        >
          <el-input
            v-model="ruleForm.cnName"
                        :label-width="formLabelWidth">
            <el-input v-model="ruleForm.cnName"
            autocomplete="off"
            style="width:85%"
            :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuetwo')+$t('operatManage.menuSetObj.cnName')"
          ></el-input>
                      :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuetwo')+$t('operatManage.menuSetObj.cnName')"></el-input>
        </el-form-item>
        <el-form-item
          :label="$t('operatManage.menuSetObj.icon')"
          :label-width="formLabelWidth"
        >
          <el-input
            v-model="ruleForm.icon"
          <el-form-item :label="$t('operatManage.menuSetObj.icon')"
                        :label-width="formLabelWidth">
            <el-input v-model="ruleForm.icon"
            autocomplete="off"
            style="width:85%"
            :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuetwo')+$t('operatManage.menuSetObj.icon')"
          ></el-input>
                      :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuetwo')+$t('operatManage.menuSetObj.icon')"></el-input>
        </el-form-item>
        <el-form-item
          prop="isShow"
          <el-form-item prop="isShow"
          :label="$t('operatManage.menuSetObj.isShow')"
          :label-width="formLabelWidth"
        >
          <el-select
            :popper-append-to-body="false"
                        :label-width="formLabelWidth">
            <el-select :popper-append-to-body="false"
            style="width:85%"
            v-model="ruleForm.isShow"
            :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuetree')+$t('operatManage.menuSetObj.isShow')"
          >
            <el-option
              v-for="item in options1"
                       :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuetree')+$t('operatManage.menuSetObj.isShow')">
              <el-option v-for="item in options1"
              :key="item.value"
              :label="item.label"
              :value="item.value"
            >
                         :value="item.value">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item
          :label="$t('operatManage.menuSetObj.menuUrl')"
          :label-width="formLabelWidth"
        >
          <el-input
            v-model="ruleForm.url"
          <el-form-item :label="$t('operatManage.menuSetObj.menuUrl')"
                        :label-width="formLabelWidth">
            <el-input v-model="ruleForm.url"
            autocomplete="off"
            style="width:85%"
            :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuetwo')+$t('operatManage.menuSetObj.menuUrl')"
          ></el-input>
                      :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuetwo')+$t('operatManage.menuSetObj.menuUrl')"></el-input>
        </el-form-item>
        <el-form-item
          :label="$t('operatManage.menuSetObj.authorize')"
          :label-width="formLabelWidth"
        >
          <el-input
            v-model="ruleForm.perms"
          <el-form-item :label="$t('operatManage.menuSetObj.authorize')"
                        :label-width="formLabelWidth">
            <el-input v-model="ruleForm.perms"
            autocomplete="off"
            style="width:85%"
            :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuetwo')+$t('operatManage.menuSetObj.authorize')"
          ></el-input>
                      :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuetwo')+$t('operatManage.menuSetObj.authorize')"></el-input>
        </el-form-item>
        <el-form-item
          :label="$t('operatManage.menuSetObj.type')"
          <el-form-item :label="$t('operatManage.menuSetObj.type')"
          prop="type"
          :label-width="formLabelWidth"
        >
          <el-select
            :popper-append-to-body="false"
                        :label-width="formLabelWidth">
            <el-select :popper-append-to-body="false"
            style="width:85%"
            v-model="ruleForm.type"
            :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuetree')+$t('operatManage.menuSetObj.type')"
          >
            <el-option
              v-for="item in options2"
                       :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuetree')+$t('operatManage.menuSetObj.type')">
              <el-option v-for="item in options2"
              :key="item.value"
              :label="item.label"
              :value="item.value"
            >
                         :value="item.value">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item
          :label="$t('operatManage.menuSetObj.bak')"
          :label-width="formLabelWidth"
        >
          <el-input
            v-model="ruleForm.bak"
          <el-form-item :label="$t('operatManage.menuSetObj.bak')"
                        :label-width="formLabelWidth">
            <el-input v-model="ruleForm.bak"
            autocomplete="off"
            style="width:85%"
            :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuetwo')+$t('operatManage.menuSetObj.bak')"
          ></el-input>
                      :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valuetwo')+$t('operatManage.menuSetObj.bak')"></el-input>
        </el-form-item>
      </el-form>
       </div>
      <div
        slot="footer"
        class="dialog-footer"
      >
      <div slot="footer"
           class="dialog-footer">
        <el-button @click="resetForm('ruleForm')">{{
          $t('common.cancel')
        }}</el-button>
        <el-button
          style="background: #409eff; color: white; border: 1px solid #409eff"
        <el-button style="background: #409eff; color: white; border: 1px solid #409eff"
          @click="submitForm('ruleForm')"
          v-loading.fullscreen.lock="fullscreenLoading"
        >{{ $t('common.confirm') }}</el-button>
                   v-loading.fullscreen.lock="fullscreenLoading">{{ $t('common.confirm') }}</el-button>
      </div>
    </el-dialog>
  </div>
@@ -923,7 +834,6 @@
  }
}
.btnBox{
  position: absolute;
  bottom: 0;
  right: 0;