管道基础大数据平台系统开发-【前端】-新系統界面
Surpriseplus
2023-03-06 28bd61701bb409257ea0dd3c78f32bd0b45ebbd5
Merge branch 'master' of http://192.168.20.39:8989/r/LFWEB_NEW
已添加43个文件
已修改76个文件
已删除1个文件
126590 ■■■■■ 文件已修改
package.json 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/LfSKyline/css/index.css 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/LfSKyline/index.html 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/LfSKyline/js/index.js 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/SmartEarthSDK/SmartEarth.min - 副本.js 112246 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/SmartEarthSDK/SmartEarth.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/config/config.js 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/api.js 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/screen.js 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/css/config.css 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/css/configure.css 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/css/content.css 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/css/index.css 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/img/2D 拷贝 2.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/img/2D 拷贝.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/img/Screen/all.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/img/colors.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/img/synthesis/2D 拷贝 2.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/img/synthesis/2D 拷贝.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/img/synthesis/3D.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/img/synthesis/图层 1.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/img/synthesis/图层 14 拷贝 10.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/img/synthesis/图层 14 拷贝 8.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/img/synthesis/图层 2.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/img/synthesis/图层 3.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/img/synthesis/图层 37 拷贝 4(1).png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/img/synthesis/图层 37 拷贝 4.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/img/synthesis/图层 4.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/img/图层 1.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/img/图层 14 拷贝 10.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/img/图层 14 拷贝 8.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/img/图层 2.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/img/图层 3.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/img/图层 37 拷贝 4(1).png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/img/图层 37 拷贝 4.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/img/图层 4.png 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/lang/en.js 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/lang/zh.js 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/FilePreview/ImagePreview.vue 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/MapDiv.vue 193 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/MapView/mapMenuPop.vue 47 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/MapView/mapMenuTop.vue 657 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/MapView/mapSpacePop.vue 98 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/MapView/mapSpaceTop.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/MyBread.vue 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/Screen/bottom.vue 147 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/Screen/left.vue 162 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/Screen/mapsdk.vue 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/Screen/right.vue 330 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/Screen/top.vue 61 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/chart/BaseBarChart.vue 376 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/chart/BaseLineChart.vue 261 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/chart/BasePieChart .vue 310 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/chart/CountryDimensionPie.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/chart/CountryProvincePie.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/chart/DataStorage.vue 347 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/chart/DataStorageType.vue 429 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/chart/FileFormat.vue 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/chart/ProjectCategory.vue 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/chart/ServiceGet.vue 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/chart/ServiceType.vue 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/chart/VisitCount.vue 187 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/chart/projectState.vue 164 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/chart/projectTime.vue 306 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/chart/projectintroduction.vue 139 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/mapol.vue 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/mapsdk.vue 522 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/navMenu.vue 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/directive/dialog/drag.js 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/directive/dialog/dragHeight.js 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/directive/dialog/dragWidth.js 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/directive/index.js 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main.js 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/index.js 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/store/index.js 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/validata.js 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Archive/dataApplication.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Archive/index.vue 679 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/AuthorizationManagement/menuRoleAuthorization.vue 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/AuthorizationManagement/roleMenuAuthorization.vue 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/AuthorizationManagement/roleResAuthorization.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/AuthorizationManagement/userRoleAuthorization.vue 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Synthesis/LeftMenu.vue 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Synthesis/index.vue 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Thematic/index.vue 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Tools/LayerTree.vue 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Tools/pipeLineAnaly.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Tools/queryinfo.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/datamanage/SpatialData.vue 606 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/datamanage/bankController.vue 257 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/datamanage/catalogueManage.vue 146 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/datamanage/dataController.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/datamanage/dataUpdata.vue 1670 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/datamanage/dictionaryManage.vue 126 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/datamanage/domainManage.vue 340 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/datamanage/metadataManage.vue 1395 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/datamanage/projectController.vue 260 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/datamanage/projectManage.vue 151 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/datamanage/styleManage.vue 863 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/datamanage/versionManage.vue 347 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/exportMap/index.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/maintenance/blackwhiteList.vue 40 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/maintenance/downlog.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/maintenance/empowerController.vue 321 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/maintenance/eventlogManage.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/maintenance/logLog.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/maintenance/menuSettings.vue 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/maintenance/mochaitmo.vue 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/maintenance/operationLog.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/maintenance/opexController.vue 322 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/maintenance/parameterConfiguration.vue 142 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/maintenance/systemController.vue 322 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/maintenance/tokentool.vue 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/maintenance/userManagement.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/userManage/authorityManage.vue 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/userManage/orgManage.vue 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/userManage/resourceManage.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/userManage/roleManage.vue 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/userManage/templateManage.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/userManage/userInfoManage.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
package.json
@@ -37,6 +37,7 @@
    "vue": "^2.6.11",
    "vue-i18n": "^8.27.2",
    "vue-router": "^3.2.0",
    "vue-seamless-scroll": "^1.1.23",
    "vuex": "^3.4.0",
    "xlsx": "^0.18.5"
  },
public/LfSKyline/css/index.css
@@ -30,7 +30,6 @@
    display: flex;
}
.textp1 {
    font-size: 30px;
    font-family: Microsoft YaHei;
@@ -79,7 +78,6 @@
.content {
    height: calc(100% - 60px);
    width: 100%;
    display: flex;
}
.left_content {
@@ -93,21 +91,34 @@
.right_content {
    width: calc(100% - 325px);
    height: 100%;
    flex: 1;
    box-sizing: border-box;
    float: left;
}
.rb {
    border-right: 1px solid #A0A0A0;
    border-bottom: 1px solid #A0A0A0;
}
#TEInfoEx {
    width: calc(100% - 8px);
    height: calc(100% - 35px);
    box-sizing: border-box;
}
#TEWinEx {
    width: 100%;
    height: 100%;
    box-sizing: border-box;
}
.fieldset {
    padding: 10px 5px;
    height: calc(100% - 20px);
    padding: 10px 0 10px 8px;
    height: 100%;
    width: 100%;
    box-sizing: border-box;
}
#layers {
public/LfSKyline/index.html
@@ -1,4 +1,4 @@
<!DOCTYPE html>
<!DOCTYPE html>
<html lang="en">
<head>
@@ -17,15 +17,13 @@
  <script>
    window.app = {
      fly: window.sceneConfig.fly,
      //fly: "http://103.85.165.99:8050/LFData/fly/lfgd.fly",
      mainUrl: location.href.substring(0, location.href.lastIndexOf("/") + 1)
    }
    document.writeln("<link href='./layui-v2.6.8/css/layui.css?" + new Date().getTime() + "' rel='stylesheet' \/>");
    document.writeln("<link href='./css/index.css?" + new Date().getTime() + "' rel='stylesheet' \/>");
    document.writeln("<script src='./js/detect.js?" + new Date().getTime() + "'><\/script>");
    document.writeln("<script src='./js/index.js?" + new Date().getTime() + "'><\/script>");
    // $("#aDownload").attr("href", LFData + "/soft/TEv7.4.zip");
  </script>
  <style>
    a:hover {
@@ -96,12 +94,7 @@
        <fieldset class="fieldset">
          <legend>数据目录</legend>
          <!-- <div id="layers"></div> -->
          <div>
            <object id="TerraExplorerInformationWindowEx" classid="CLSID:3A4F919B-65A8-11D5-85C1-0001023952C1"></object>
          </div>
          <object id="TEInfoEx" classid="CLSID:3A4F919B-65A8-11D5-85C1-0001023952C1"></object>
        </fieldset>
      </div>
      <div class="right_content">
public/LfSKyline/js/index.js
@@ -15,25 +15,26 @@
    showDownload: function () {
        $("#mapView").hide();
        $("#download").show();
        let a = document.getElementById('aDownload');
        var a = document.getElementById('aDownload');
        a.href = LFData + "/soft/TEv7.4.zip";
    },
    initSG: function () {
        TerraExplorerInformationWindowEx.AttachTo3dWindow(TEWinEx);
        TEInfoEx.AttachTo3dWindow(TEWinEx);
        SG = TEWinEx.CreateInstance("TerraExplorerX.SGWorld74"); // SGWorld74,SGWorld71,SGWorld66
        SG.AttachEvent("OnLoadFinished", this.loadFinished);
        SG.Open(app.fly);
    },
    loadFinished: function () {
        $("#TEInfoEx").addClass("rb");
        SG.ProjectTree.ShowSearchTool = false;
        SG.DetachEvent("OnLoadFinished", Index.loadFinished);
        // var layers = [];
        // Index.getLayers("", layers);
        // Index.ininTrees("layers", layers);
        // Index.flyToStart();
    },
    //
    getLayers: function (pid, layers) {
        var next = SG.ProjectTree.GetNextItem(pid, 11);
        while (next) {
@@ -108,8 +109,7 @@
        // this.menuFlag = !this.menuFlag;
    }
}
$(function () {
    Index.init();
});
public/SmartEarthSDK/SmartEarth.min - ¸±±¾.js
ÎļþÒÑɾ³ý
public/SmartEarthSDK/SmartEarth.min.js
@@ -126,6 +126,7 @@
            var o, r = { left: "100px", bottom: "10px" }; for (o in this.explainContainer = document.createElement("div"), this.explainContainer.id = "IndoormodeExplainContainer", this.explainContainer.style.cssText = `
            position: absolute;
            padding: 10px;
            margin-left: 50px;
            background-color: rgba(0, 0, 0, 0.6);
            border: 1px solid rgba(32, 160, 255, 0.6);
            color: rgb(255, 255, 255);
public/config/config.js
@@ -2,6 +2,7 @@
var isWeb = true;
var webHost = isWeb ? "103.85.165.99" + ":8052" : '192.168.20.205' + ":8088";
// var webHost = isWeb ? "103.85.165.99" + ":8052" : '192.168.16.162' + ":12316";
var fmeHost = isWeb ? "103.85.165.99" + ":8051" : '192.168.20.205' + ":88";
@@ -38,10 +39,19 @@
  // SG地址
  SGUrl: "http://" + iisHost + "/SG/Elevation",
  // Fly地址
  fly: 'http://' + iisHost + '/LFData/fly/' + (isWeb ? "lfy_web.fly" : "lf_127.fly"),
  // fly: 'http://' + iisHost + '/LFData/fly/' + (isWeb ? "lfy_web.fly" : "lf_127.fly"),
  fly: 'http://' + iisHost + '/LFData/fly/' + (isWeb ? "lfgd.fly" : "lfgd_127.fly"),
  //
  positionBtn: [],
};
//工点信息表
var workSite = [
  {
    name: "勘察信息表",
    table: "s_survey_information",
    ns: 'bs',
  },
]
var gaoDeBaseUrl = [{
  url: 'http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}',
src/api/api.js
@@ -79,6 +79,11 @@
  //请求地址
  return request.get('/meta/selectPageAndCountByPid', { params: params });
}
//元数据=>根据父ID分页查询并返回记录数
export function meta_selectById(params) {
  //请求地址
  return request.get('/meta/selectById', { params: params });
}
//组织机构根据id查询
@@ -542,7 +547,14 @@
export function dataUploadSelectVerByDirid(params) {
  return request.get('/dataUpload/selectVerByDirid', { params: params });
}
//数据上传=>获取文件上传路径
//数据上传=>获取版本Id
export function dataUpload_selectMetaById(params) {
  return request.get('/dataUpload/selectMetaById', { params: params });
}
//数据上传=>根据源数据ID查询
export function dataUploadSelectPath(params) {
  return request.get('/dataUpload/selectPath', { params: params });
}
@@ -763,6 +775,15 @@
export function dataLib_selectPageCountForDownload(params) {
  return request.get('/dataLib/selectPageCountForDownload', { params: params });
}
//资料馆=>根据源数据ID查询
export function dataLib_selectMetaById(params) {
  return request.get('/dataLib/selectMetaById', { params: params });
}
//资料馆=>根据父ID分页查询并返回记录数
export function dataLib_selectPageAndCountByPid(params) {
  return request.get('/dataLib/selectPageAndCountByPid', { params: params });
}
//下载日志=》分页查询并返回记录数
export function downlog_selectByPageAndCount(params) {
src/api/screen.js
@@ -1,6 +1,6 @@
import request from "@/utils/request"
// ä¸€å¼ å›¾æ•°æ®æŽ¥å£
// ä¸€å¼ å›¾æ•°æ®æŽ¥å£
// æ•°æ®ç”³è¯·
export function countDataApply(params) {
@@ -42,4 +42,75 @@
// å›½å®¶ç»´åº¦-数量统计
export function countCountryDimension(params) {
  return request.get("/oneMap/countCountryDimension", { params: params })
}
}
//服务访问次数
export function GetServicesVisitsCount(params) {
  return request.get("/oneMap/countDataServiceType", { params: params })
}
//按照类别访问统计访问次数
export function GetTypeVisitsCount(params) {
  return request.get("/oneMap/countLargeCategories", { params: params })
}
//全国站场座数、阀室、管道数等
export function countZhPipeStations(params) {
  return request.get("/oneMap/countZhPipeStations", { params: params })
}
//全国管网图输送介质长度
export function countZhPipeMapLength(params) {
  return request.get("/oneMap/countZhPipeMapLength", { params: params })
}
//地灾countLargeCategories
export function countLargeCategories(params) {
  return request.get("/oneMap/countLargeCategories", { params: params })
}
// èŽ·å–é¡¹ç›®åˆ—è¡¨  éƒ¨åˆ†ä¿¡æ¯ä¸å…¨
export function selectProjectFileList(params) {
  return request.get("/oneMap/selectProjectFileList", { params: params })
}
// å•个项目文件下载
export function countProjectType(params) {
  return request.get("/oneMap/countProjectType", { params: params })
}
// å•个项目数据存储量
export function countProjectStorage(params) {
  return request.get("/oneMap/countProjectStorage", { params: params })
}
// å•个项目下载量
export function countProjectDown(params) {
  return request.get("/oneMap/countProjectDown", { params: params })
}
// å•个项目信息
export function selectProjectInfo(params) {
  return request.get("/oneMap/selectProjectInfo", { params: params })
}
// å•个项目数据村数量
export function countStorageByProject(params) {
  return request.get("/oneMap/countStorageByProject", { params: params })
}
// å…¨çƒã€å…¨å›½é¡¹ç›®
// å…¨å›½ç»´åº¦-按照项自类型统计不同项目个数
export function countProjectTypeNumber(params) {
  return request.get("/oneMap/countProjectTypeNumber", { params: params })
}
// ä¸‹è½½é‡ç»Ÿè®¡
export function countDownloads(params) {
  return request.get("/oneMap/countDownloads", { params: params })
}
// æŸ¥è¯¢ç®¡çº¿
export function selectPipelines(params) {
  return request.get("/comprehensive/selectPipelines", { params: params })
}
// æ–‡ä»¶é¢„览接口
export function dataLibView(params) {
  return request.get("/dataLib/downloadForView", { params: params })
}
src/assets/css/config.css
@@ -372,7 +372,7 @@
}
.Black_theme .twoMenu_imge46 {
    background: url("../../assets/img/synthesis/图层 14 æ‹·è´ 3.png") no-repeat center;
    background: url("../../assets/img/synthesis/图层 14 æ‹·è´ 10.png") no-repeat center;
}
.Black_theme .twoMenu_imge47 {
@@ -456,7 +456,7 @@
/*  é«˜å±‚量测图标 */
.Black_theme .twoMenu_imge77 {
    background: url("../../assets/img/synthesis/图层 31 æ‹·è´.png") no-repeat center;
    background: url("../../assets/img/synthesis/图层 37 æ‹·è´ 4.png") no-repeat center;
}
@@ -508,4 +508,9 @@
.Black_theme .el-select__input {
    color: "#FFF";
}
.Black_theme .menuBox .el-dialog__wrapper .buffer-dialog {
    background-color: rgba(48, 48, 48, 0.85) !important;
    color: #fff;
}
src/assets/css/configure.css
@@ -215,7 +215,7 @@
}
.twoMenu_imge46 {
    background: url("../../assets/img/synthesis/images/3白底_133.png") no-repeat center;
    background: url("../../assets/img/synthesis/图层 14 æ‹·è´ 8.png") no-repeat center;
}
.twoMenu_imge47 {
@@ -299,7 +299,7 @@
/*  é«˜å±‚量测图标 */
.twoMenu_imge77 {
    background: url("../../assets/img/synthesis/images/3白底_198.png") no-repeat center;
    background: url("../../assets/img/synthesis/图层 37 æ‹·è´ 4(1).png") no-repeat center;
}
@@ -362,4 +362,39 @@
.el-select-dropdown.is-multiple .el-select-dropdown__item.selected:hover {
    background: transparent;
}
/*el-table边框*/
.el-table {
    border-left: none !important;
    border-right: none !important;
}
.el-table td {
    border-right: none !important;
}
.el-table th.is-leaf {
    border-right: none !important;
}
.el-table--group::after,
.el-table--border::after {
    width: 0 !important;
}
.el-table {
    width: 100%;
    display: flex;
    flex-direction: column;
}
.el-table .el-table__body-wrapper {
    flex: 1;
}
.el-table th.gutter {
    display: table-cell !important;
}
src/assets/css/content.css
@@ -73,7 +73,7 @@
    width: 98%;
    height: 98%;
    padding: 1%;
    overflow: auto;
    /* overflow: auto; */
}
.subpage_Iquery {
@@ -210,4 +210,4 @@
.infoBox p {
    font-size: 14px;
}
}
src/assets/css/index.css
@@ -195,7 +195,7 @@
}
.userText {
    font-size: 15px;
    font-size: 10px;
    line-height: 15px;
    font-family: Microsoft YaHei;
    font-weight: 400;
@@ -204,7 +204,7 @@
}
.TextLanguage {
    font-size: 15px;
    font-size: 10px;
    line-height: 15px;
    font-family: Microsoft YaHei;
    font-weight: 400;
@@ -214,7 +214,7 @@
.elLink {
    margin-left: 5px;
    font-size: 15px;
    font-size: 10px;
    margin-bottom: 4px;
    color: white;
}
@@ -238,7 +238,7 @@
    z-index: 1024;
    margin-top: 15px;
    background: rgba(244, 248, 255, 1);
    box-shadow: 0px 0px 6px 2px rgba(244,248,255, 0.85);
    box-shadow: 0px 0px 6px 2px rgba(244, 248, 255, 0.85);
    border-radius: 5px;
    border: 1px solid #DCDFE6;
}
@@ -246,7 +246,7 @@
.secondMenuDiv div {
    line-height: 30px;
    padding: 10px;
    font-size: 2px 0;
    font-size: 12px;
    font-family: Microsoft YaHei;
    font-weight: 400;
    text-align: center;
@@ -275,4 +275,4 @@
.ol-scale-line {
    display: block !important;
}
}
src/assets/img/2D ¿½±´ 2.png
src/assets/img/2D ¿½±´.png
src/assets/img/Screen/all.png
src/assets/img/colors.png
src/assets/img/synthesis/2D ¿½±´ 2.png
src/assets/img/synthesis/2D ¿½±´.png
src/assets/img/synthesis/3D.png
src/assets/img/synthesis/ͼ²ã 1.png
src/assets/img/synthesis/ͼ²ã 14 ¿½±´ 10.png
src/assets/img/synthesis/ͼ²ã 14 ¿½±´ 8.png
src/assets/img/synthesis/ͼ²ã 2.png
src/assets/img/synthesis/ͼ²ã 3.png
src/assets/img/synthesis/ͼ²ã 37 ¿½±´ 4(1).png
src/assets/img/synthesis/ͼ²ã 37 ¿½±´ 4.png
src/assets/img/synthesis/ͼ²ã 4.png
src/assets/img/ͼ²ã 1.png
src/assets/img/ͼ²ã 14 ¿½±´ 10.png
src/assets/img/ͼ²ã 14 ¿½±´ 8.png
src/assets/img/ͼ²ã 2.png
src/assets/img/ͼ²ã 3.png
src/assets/img/ͼ²ã 37 ¿½±´ 4(1).png
src/assets/img/ͼ²ã 37 ¿½±´ 4.png
src/assets/img/ͼ²ã 4.png
src/assets/lang/en.js
@@ -1,5 +1,6 @@
const en = {
  common: {
    increase: 'increase',
    bak: 'Bak',
    domCode: 'DomCode',
    confirm: 'confirm',
@@ -48,16 +49,18 @@
    pleaseInputPassworld: 'Please input a password',
    passworld: 'Passworld',
    language: "中文",
    title: 'Title'
    title: 'Title',
    preview: 'preview',
    attribute: 'Attribute',
  },
  dataManage: {
    dataManage: 'Data Manage',
    catalogueManage: 'project management',
    catalogueManage: 'Directory management',
    dataUpdata: 'dataUpdata',
    datawarehousing: 'Data warehousing',
    rangeManage: 'Range management',
    dataRetrieval: 'data retrieval',
    dataRetrieval: 'Data query',
    dataDownload: 'Data download',
    projectManage: 'Project information',
    dataStatistics: 'data Statistics',
@@ -81,6 +84,8 @@
      remarks: 'remarks',
      newProj: 'New project',
      editProj: 'Edit project',
      lable1: 'Add project information',
      label2: 'Modify project information'
    },
    dataUpObj: {
@@ -110,7 +115,7 @@
      code: 'Code'
    },
    metadataManage: 'Source Data Management',
    metadataManage: 'information management',
    dataLoading: 'dataLoading',
    SpatialData: 'SpatialData',
    versionManage: 'versionManage',
@@ -837,7 +842,8 @@
      CavernSpecialty: "Cavern Specialty",
    },
    shuJuJianSuo: {
      valueone: "Please enter content"
      valueone: "Please enter content",
      label: "Please add the condition to query"
    },
    butten: {
      uploadFile: "Upload File",
src/assets/lang/zh.js
@@ -1,5 +1,6 @@
const zh = {
  common: {
    increase: '添加',
    bak: '备注',
    domCode: '编码',
    confirm: '确认',
@@ -48,15 +49,17 @@
    pleaseInputPassworld: '请输入密码',
    passworld: '密码',
    language: "English",
    title: '标题'
    title: '标题',
    preview: '预览',
    attribute: '属性',
  },
  dataManage: {
    dataManage: '数据管理',
    catalogueManage: '项目管理',
    catalogueManage: '目录管理',
    dataUpdata: '数据上传',
    datawarehousing: '数据入库',
    rangeManage: '值域管理',
    dataRetrieval: '数据检索',
    dataRetrieval: '数据查询',
    dataDownload: '数据下载',
    projectManage: '项目信息',
    dataStatistics: '数据统计',
@@ -83,6 +86,8 @@
      remarks: '备注',
      newProj: '新增项目',
      editProj: '修改项目',
      lable1: '添加项目信息',
      label2: '修改项目信息'
    },
    dataUpObj: {
      catalogue: '目录',
@@ -102,7 +107,7 @@
      storageDirectory: '存储目录',
      dataVersion: '数据版本',
      selectData: '选择数据',
      selectMetadata: '选择源数据',
      selectMetadata: '选择元数据',
      entryName: '项目名称',
      selectWBSData: '选择WBS数据',
      coordinateSystem: '坐标系',
@@ -110,7 +115,7 @@
      inspectionItems: "检查项",
      code: '编码'
    },
    metadataManage: '源数据管理',
    metadataManage: '信息管理',
    dataLoading: '数据入库',
    SpatialData: '空间数据管理',
    versionManage: '版本管理',
@@ -848,7 +853,9 @@
      CavernSpecialty: "洞库专业",
    },
    shuJuJianSuo: {
      valueone: "请输入内容"
      valueone: "请输入内容",
      label: '请添加要查询的条件'
    },
    butten: {
      uploadFile: "上传文件",
src/components/FilePreview/ImagePreview.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,90 @@
<template>
  <el-image
    :src="`${realSrc}`"
    fit="cover"
    :style="`width:${realWidth};height:${realHeight};`"
    :preview-src-list="realSrcList"
  >
    <div slot="error" class="image-slot">
      <i class="el-icon-picture-outline"></i>
    </div>
  </el-image>
</template>
<script>
import { isExternal } from "@/utils/validate";
export default {
  name: "ImagePreview",
  props: {
    src: {
      type: String,
      default: ""
    },
    width: {
      type: [Number, String],
      default: ""
    },
    height: {
      type: [Number, String],
      default: ""
    }
  },
  computed: {
    realSrc() {
      if (!this.src) {
        return;
      }
      let real_src = this.src.split(",")[0];
      if (isExternal(real_src)) {
        return real_src;
      }
      return BASE_URL + real_src;
    },
    realSrcList() {
      if (!this.src) {
        return;
      }
      let real_src_list = this.src.split(",");
      let srcList = [];
      real_src_list.forEach(item => {
        if (isExternal(item)) {
          return srcList.push(item);
        }
        return srcList.push(process.env.VUE_APP_BASE_API + item);
      });
      return srcList;
    },
    realWidth() {
      return typeof this.width == "string" ? this.width : `${this.width}px`;
    },
    realHeight() {
      return typeof this.height == "string" ? this.height : `${this.height}px`;
    }
  },
};
</script>
<style lang="scss" scoped>
.el-image {
  border-radius: 5px;
  background-color: #ebeef5;
  box-shadow: 0 0 5px 1px #ccc;
  ::v-deep .el-image__inner {
    transition: all 0.3s;
    cursor: pointer;
    &:hover {
      transform: scale(1.2);
    }
  }
  ::v-deep .image-slot {
    display: flex;
    justify-content: center;
    align-items: center;
    width: 100%;
    height: 100%;
    color: #909399;
    font-size: 30px;
  }
}
</style>
src/components/MapDiv.vue
@@ -27,13 +27,13 @@
</template>
<script>
import mapsdk from './mapsdk';
import mapol from './mapol';
import { transform } from 'ol/proj';
import ol from 'ol';
import $ from 'jquery';
import mapsdk from "./mapsdk"
import mapol from "./mapol"
import { transform } from "ol/proj"
import ol from "ol"
import $ from "jquery"
export default {
  name: '',
  name: "",
  components: {
    mapsdk,
    mapol,
@@ -51,156 +51,189 @@
        250000, 200000, 100000, 50000, 17000, 9000, 5000, 2000, 1000, 500, 200,
        100, 50, 25, 10, 0,
      ],
    };
    }
  },
  methods: {
    changeMap(res) {
      this.isSplitFlag = res;
      this.isSplitFlag = res
      this.getMapViewCenter(this.isSplitFlag);
      switch (res) {
        case 1:
          this.isShowCeMap = true;
          this.isShowDs = true;
          this.isOlMapFlag = true;
          this.isShowOlMap = true;
          this.isSdkMapFlag = true;
          var that = this;
          this.isShowCeMap = true
          this.isShowDs = true
          this.isOlMapFlag = true
          this.isShowOlMap = true
          this.isSdkMapFlag = true
          var that = this
          setTimeout(function () {
            window.map.updateSize();
            that.showSplitMap();
          }, 500);
            window.map.updateSize()
            that.showSplitMap()
          }, 500)
          break;
          break
        case 2:
          this.isSdkMapFlag = false;
          this.isShowDs = false;
          this.isShowOlMap = false;
          this.isOlMapFlag = true;
          this.isSdkMapFlag = false
          this.isShowDs = false
          this.isShowOlMap = false
          this.isOlMapFlag = true
          var val = this.$store.state.Map3;
          setTimeout(function () {
            window.map.updateSize();
          }, 300);
          break;
            window.map.updateSize()
            window.map.getView().setCenter([val[0], val[1]])
            window.map.getView().setZoom(val[2])
          }, 300)
          break
        case 3:
          this.isSdkMapFlag = true;
          this.isShowDs = false;
          this.isShowOlMap = false;
          this.isOlMapFlag = false;
          this.isShowCeMap = false;
          break;
          this.isSdkMapFlag = true
          this.isShowDs = false
          this.isShowOlMap = false
          this.isOlMapFlag = false
          this.isShowCeMap = false
          var val = this.$store.state.Map3;
          window.Viewer.camera.setView({
            destination: Cesium.Cartesian3.fromDegrees(val[0], val[1], val[2]),
          })
          break
      }
    },
    getMapViewCenter(res) {
      switch (res) {
        case 2:
          var position = window.Viewer.camera.position
          var ellipsoid = window.Viewer.scene.globe.ellipsoid
          var cartographic = ellipsoid.cartesianToCartographic(position)
          var lat = Cesium.Math.toDegrees(cartographic.latitude)
          var lng = Cesium.Math.toDegrees(cartographic.longitude)
          var level = this.getLevel(cartographic.height)
          this.$store.state.Map3 = [lng, lat, level]
          break;
        case 3:
          var position = window.map.getView().getCenter()
          var level = this.getHeight(parseInt(window.map.getView().getZoom()))
          this.$store.state.Map3 = [position[0], position[1], level]
          break;
      }
    },
    showSplitMap() {
      var that = this;
      $('#mapView')
      var that = this
      $("#mapView")
        .off()
        .on('mousemove', function () {
        .on("mousemove", function () {
          if (that.isSplitFlag == 1) {
            window.Viewer.camera.changed.addEventListener(that.sdktool());
            window.Viewer.camera.changed.addEventListener(that.sdktool())
          }
        })
        .on('mouseout', function () {
        .on("mouseout", function () {
          if (that.isSplitFlag == 1) {
            window.Viewer.camera.changed.removeEventListener(that.sdktool());
            window.Viewer.camera.changed.removeEventListener(that.sdktool())
          }
        });
        })
      let mapZoomAndMove = function (event) {
        var position = window.map.getView().getCenter();
        var position = window.map.getView().getCenter()
        // var pos = transform(position, 'EPSG:3857', 'EPSG:4326');
        var pos = position;
        var level = that.getHeight(parseInt(window.map.getView().getZoom()));
        var pos = position
        var level = that.getHeight(parseInt(window.map.getView().getZoom()))
        window.Viewer.camera.setView({
          destination: Cesium.Cartesian3.fromDegrees(pos[0], pos[1], level),
        });
      };
      $('#map')
        })
      }
      $("#map")
        .off()
        .on('mousemove', function () {
        .on("mousemove", function () {
          if (that.isSplitFlag == 1) {
            that.olzoomAndMove(mapZoomAndMove);
            that.olzoomAndMove(mapZoomAndMove)
          }
        })
        .on('mouseout', function () {
        .on("mouseout", function () {
          if (that.isSplitFlag == 1) {
            that.clearolzoomAndMove();
            that.clearolzoomAndMove()
          }
        });
        })
    },
    clearolzoomAndMove() {
      let registerOnZoomArr = window.map.get('registerOnZoom');
      let registerOnZoomArr = window.map.get("registerOnZoom")
      if (registerOnZoomArr && registerOnZoomArr.length > 0) {
        for (let i = 0; i < registerOnZoomArr.length; i++) {
          window.map.un('moveend', registerOnZoomArr[i]);
          window.map.un("moveend", registerOnZoomArr[i])
        }
      }
    },
    olzoomAndMove(eventListen, notListenMove) {
      // è®°å½•地图缩放,用于判断拖动
      window.map.lastZoom =
        window.map.lastZoom || window.map.getView().getZoom();
        window.map.lastZoom || window.map.getView().getZoom()
      // åœ°å›¾ç¼©æ”¾äº‹ä»¶
      let registerOnZoom = function (e) {
        // ä¸ç›‘听地图拖动事件
        if (notListenMove) {
          if (window.map.lastZoom != window.map.getView().getZoom()) {
            eventListen && eventListen(e);
            eventListen && eventListen(e)
          }
        } else {
          eventListen && eventListen(e);
          eventListen && eventListen(e)
        }
        window.map.lastZoom = window.map.getView().getZoom();
      };
        window.map.lastZoom = window.map.getView().getZoom()
      }
      // ä¿å­˜ç¼©æ”¾å’Œæ‹–动事件对象,用于后期移除
      let registerOnZoomArr = map.get('registerOnZoom') || [];
      let registerOnZoomArr = map.get("registerOnZoom") || []
      registerOnZoomArr.push(registerOnZoom);
      registerOnZoomArr.push(registerOnZoom)
      // ä½¿ç”¨åœ°å›¾ set æ–¹æ³•保存事件对象
      window.map.set('registerOnZoom', registerOnZoomArr);
      window.map.set("registerOnZoom", registerOnZoomArr)
      // ç›‘听地图移动结束事件
      window.map.on('moveend', registerOnZoom);
      window.map.on("moveend", registerOnZoom)
      return eventListen;
      return eventListen
    },
    sdktool() {
      if (this.isSplitFlag != 1) return;
      var position = window.Viewer.camera.position;
      var ellipsoid = window.Viewer.scene.globe.ellipsoid;
      var cartographic = ellipsoid.cartesianToCartographic(position);
      var lat = Cesium.Math.toDegrees(cartographic.latitude);
      var lng = Cesium.Math.toDegrees(cartographic.longitude);
      var level = this.getLevel(cartographic.height);
      if (this.isSplitFlag != 1) return
      var position = window.Viewer.camera.position
      var ellipsoid = window.Viewer.scene.globe.ellipsoid
      var cartographic = ellipsoid.cartesianToCartographic(position)
      var lat = Cesium.Math.toDegrees(cartographic.latitude)
      var lng = Cesium.Math.toDegrees(cartographic.longitude)
      var level = this.getLevel(cartographic.height)
      var value
      // window.map
      //   .getView()
      //   .setCenter(transform([lng, lat], 'EPSG:4326', 'EPSG:3857'));
      window.map
        .getView()
        .setCenter([lng, lat]);
      window.map.getView().setZoom(level);
      window.map.getView().setCenter([lng, lat])
      window.map.getView().setZoom(level)
    },
    getLevel(height) {
      for (var i = 1, len = this.levelArray.length; i < len - 1; i++) {
        if (height >= (this.levelArray[i] + this.levelArray[i + 1]) / 2) {
          return i;
          return i
        }
      }
      return this.levelArray.length - 1;
      return this.levelArray.length - 1
    },
    getHeight(level) {
      if (level > 0 && level < 23) {
        return this.levelArray[level];
        return this.levelArray[level]
      }
      return this.levelArray[this.levelArray.length - 1];
      return this.levelArray[this.levelArray.length - 1]
    },
  },
  mounted() {
    this.$bus.$on('changemap', (e) => {
      this.changeMap(e);
    });
    this.$bus.$on("changemap", e => {
      if (this.isSplitFlag == 1) {
        this.changeMap(3)
      } else {
        this.changeMap(e)
      }
    })
  },
};
}
</script>
<style scoped>
src/components/MapView/mapMenuPop.vue
@@ -24,8 +24,9 @@
        <el-table
          :data="tableData"
          ref="dialogPayChannel"
          height="300px"
          height="100%"
          style="width: 100%"
          border
        >
          <el-table-column
            align="center"
@@ -56,7 +57,10 @@
          ></el-table-column>
        </el-table>
      </div>
      <div class="pagination_box">
      <div
        class="pagination_box"
        style="margin-top:10px"
      >
        <el-pagination
          @size-change="handleSizeChange"
          @current-change="handleCurrentChange"
@@ -542,7 +546,7 @@
          this.imagePoint = null;
        }
        var wkt = this.$wkt.parse(val1);
        this.setMapLoaction(wkt);
        this.setMapLoaction(wkt, row);
      }
    },
    setMapLoaction(res) {
@@ -600,6 +604,7 @@
      this.listdata.pageIndex = 1;
      this.listdata.pageSize = 10;
      this.listdata.name = res.entity;
      this.$store.state.propertiesName = res;
      this.getTableDateHidder();
    },
    handleSizeChange(val) {
@@ -638,6 +643,7 @@
    },
    async showAllImage(res) {
      for (var i in res) {
        let properties = res[i];
        var param = {
          gid: res[i].gid,
          name: this.listdata.name,
@@ -650,7 +656,7 @@
        if (val1) {
          var wkt = this.$wkt.parse(val1);
          // this.getprimitiLayer(wkt);
          this.primitivesAddLayer(wkt);
          this.primitivesAddLayer(wkt, properties);
        }
      }
    },
@@ -663,7 +669,7 @@
          break;
      }
    },
    primitivesAddLayer(res) {
    primitivesAddLayer(res, properties) {
      switch (res.type) {
        case "Point":
          var val = Cesium.Cartesian3.fromDegrees(
@@ -672,6 +678,8 @@
          );
          var point = Viewer.entities.add({
            position: val,
            properties: properties,
            tag: "properties_point",
            billboard: {
              // å›¾åƒåœ°å€ï¼ŒURI或Canvas的属性
              image: SmartEarthRootUrl + "Workers/image/mark.png",
@@ -690,6 +698,29 @@
          });
          point.billboard.disableDepthTestDistance = Number.POSITIVE_INFINITY;
          this.$store.state.queryInfo.push(point);
          //点击事件
          window.propertieshandler = new Cesium.ScreenSpaceEventHandler(
            sgworld.Viewer.scene.canvas
          );
          window.propertieshandler.setInputAction(event => {
            let pick = sgworld.Viewer.scene.pick(event.position);
            // ;
            if (pick && pick.id && pick.id.tag == "properties_point") {
              this.$store.state.propertiesFlag = '1';
              let properties = pick.id.properties;
              let propertyNames = pick.id.properties.propertyNames;
              let obj = {};
              obj["eventid"] = properties['_eventid']._value;
              this.attributeData.forEach(item => {
                propertyNames.forEach(itemElement => {
                  if (itemElement == item.field) {
                    obj[item.alias] = properties[itemElement]._value
                  }
                })
              })
              this.$store.state.propertiesInfo = obj;
            }
          }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
          break;
        case "LineString":
        case "MultiLineString":
@@ -748,6 +779,9 @@
      }
    });
  },
  destroyed() {
    this.$store.state.propertiesFlag = null;
  }
};
</script>
@@ -794,7 +828,8 @@
      width: 100%;
    }
    .tableBox {
      height: 327px;
      position: relative;
      height: 89%;
    }
    .rightPage {
      margin-left: 50px;
src/components/MapView/mapMenuTop.vue
@@ -1,6 +1,10 @@
<template>
  <div class="menuBox">
    <el-form :inline="true" :model="menuTopFrom" class="demo-form-inline">
    <el-form
      :inline="true"
      :model="menuTopFrom"
      class="demo-form-inline"
    >
      <el-form-item>
        <el-select
          v-model="menuTopFrom.queryLayer"
@@ -8,7 +12,10 @@
          placeholder="请选择..."
          :popper-append-to-body="false"
        >
          <el-option :value="menuTopFrom.queryLayer" style="height: 100%">
          <el-option
            :value="menuTopFrom.queryLayer"
            style="height: 100%"
          >
            <div style="height: 200px; overflow: auto">
              <el-tree
                :data="layerData"
@@ -22,16 +29,17 @@
              </el-tree>
            </div>
            <div style="margin-top: 5px">
              <el-button size="small" plain @click="getCheckedNodes"
                >确认</el-button
              >
              <el-button
                size="small"
                plain
                @click="getCheckedNodes"
              >确认</el-button>
              <el-button
                size="small"
                type="info"
                plain
                @click="resetCheckedNodes"
                >重置</el-button
              >
              >重置</el-button>
            </div>
          </el-option>
        </el-select>
@@ -68,13 +76,19 @@
          >导入选择范围</el-link
        > -->
      </el-form-item>
      <el-form-item>
        <el-button plain size="small" @click="getAttributeQuery"
          >查询</el-button
        >
        <el-button type="info" size="small" @click="clearQuery" plain
          >重置</el-button
        >
        <el-button
          plain
          size="small"
          @click="getAttributeQuery"
        >查询</el-button>
        <el-button
          type="info"
          size="small"
          @click="clearQuery"
          plain
        >重置</el-button>
      </el-form-item>
      <!-- <el-form-item>
        <el-button
@@ -90,43 +104,116 @@
      </el-form-item> -->
    </el-form>
    <queryinfo ref="queryinfo" />
    <!-- <div class="buffer-container" ></div> -->
    <el-dialog
      v-dialogDrag
      custom-class="buffer-dialog"
      top="40vh"
      title="管道中心线查询"
      :visible.sync="dialogFormVisible"
      :modal="false"
      :lock-scroll="false"
      :close-on-click-modal="false"
      width="25%"
      @opened="dialogOpend"
    >
      <el-form
        :model="menuTopFrom"
        label-width="150px"
      >
        <el-form-item label="管道中心线">
          <el-select
            @change="changeSelect2"
            v-model="menuTopFrom.pipeline"
            placeholder="请选择"
          >
            <el-option
              v-for="item in pipelineOption"
              :key="item.gid"
              :label="item.pipeName"
              :value="item.pipeName"
            >
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="选取管道">
          <el-select
            v-model="menuTopFrom.segName"
            placeholder="请选择"
            @change="selectChangeGid"
          >
            <el-option
              v-for="item in segNameOption"
              :key="item.gid"
              :label="item.segName"
              :value="item.gid"
            >
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="缓冲区大小(m)">
          <el-input-number
            v-model="menuTopFrom.bufferSize"
            placeholder=""
            @change="handleBufferChange"
            :step="500"
          ></el-input-number>
        </el-form-item>
      </el-form>
      <div
        slot="footer"
        class="dialog-footer"
      >
        <el-button @click="dialogFormVisible = false">取 æ¶ˆ</el-button>
        <el-button
          type="primary"
          @click="changeBufferData"
        >ç¡® å®š</el-button>
      </div>
    </el-dialog>
  </div>
</template>
<script>
import queryinfo from "../../views/Tools/queryinfo.vue";
import $ from "jquery";
import queryinfo from "../../views/Tools/queryinfo.vue"
import $ from "jquery"
import {
  inquiry_SelectTabs,
  inquiry_uploadShp,
  encr,
  dataLib_selectTabs,
} from "../../api/api.js";
import { getToken } from "@/utils/auth";
import * as turf from "@turf/turf";
  pipelines_selectSegNames,
} from "../../api/api.js"
import { selectPipelines } from "@/api/screen.js"
import { getToken } from "@/utils/auth"
import * as turf from "@turf/turf"
import { wktToGeoJSON } from "@terraformer/wkt"
export default {
  components: { queryinfo },
  data() {
    return {
      menuTopFrom: {
        queryType: "",
        pipeline: "",
        segName: "",
        bufferSize: 5000,
      },
      treeChange: [],
      layerData: [
        {
          id: 1,
          label: "基础数据",
          tabDesc: "基础数据",
          value: "BD",
          children: [],
        },
        {
          id: 2,
          label: "业务数据",
          tabDesc: "业务数据",
          value: "BS",
          children: [],
        },
        // {
        //   id: 1,
        //   label: "基础数据",
        //   tabDesc: "基础数据",
        //   value: "BD",
        //   children: [],
        // },
        // {
        //   id: 2,
        //   label: "业务数据",
        //   tabDesc: "业务数据",
        //   value: "BS",
        //   children: [],
        // },
      ],
      queryOption: [
@@ -154,6 +241,10 @@
          value: "inputFile",
          label: "导入选择范围",
        },
        {
          value: "buffer",
          label: "中线缓冲区",
        },
      ],
      defaultProps: {
        children: "children",
@@ -161,76 +252,111 @@
      },
      graphicLayer: null,
      flyEntity: null,
    };
      pipelineOption: [],
      segNameOption: [],
      bufferEntities: [],
      featureLayer: [],
      analyGid: null,
      dialogFormVisible: false,
      bufferLinePosition: [],
    }
  },
  mounted() {
    this.menuTopFrom.queryType = "rectangle";
    this.getAllTable();
    this.menuTopFrom.queryType = "rectangle"
    this.getAllTable()
    this.getPipelineData()
  },
  watch: {
    analyGid(newVal, oldVal) {
      if (newVal !== oldVal && this.dialogFormVisible) {
        this.genBuffer()
      }
    },
  },
  methods: {
    changeValue(value) {
      var obj = {};
      var obj = {}
      obj = this.queryOption.find(function (item) {
        return item.value === value;
      });
        return item.value === value
      })
      if (obj.value == "inputFile") {
        this.getMenuTopFile();
        this.getMenuTopFile()
      } else if (obj.value == "buffer") {
        this.dialogFormVisible = true
      }
    },
    async getAllTable() {
      const data = await dataLib_selectTabs({
        pageIndex: 1,
        pageSize: 500,
      });
      })
      if (data.code != 200) {
        this.$message.error("列表调用失败");
        this.$message.error("列表调用失败")
      }
      var option = data.result.filter((res) => {
        if (res.rows != 0) {
          return res;
      // var val = data.result.filter(res => {
      //   if (res.rows != 0) {
      //     return res
      //   }
      // })
      var val = data.result
      var std = [];
      val.filter((item) => {
        if (std.indexOf(item.bak) == -1) {
          std.push(item.bak);
          this.layerData.push(
            {
              val: item.bak,
              label: item.bak,
              children: [],
            }
          )
        }
      });
      for (var i in option) {
        var val_Data = option[i];
        val_Data.id = "1" + i;
        val_Data.label = val_Data.tabDesc;
        if (option[i].ns == "bd") {
          this.layerData[0].children.push(val_Data);
        } else {
          this.layerData[1].children.push(val_Data);
        }
      }
      this.layerData.filter((item) => {
        val.filter((res) => {
          if (item.val === res.bak && res.rows != 0 && res.rows) {
            console.log(res)
            res.label = res.tabDesc
            item.children.push(res)
          }
        })
      })
    },
    //获取选择树的节点
    getCheckedNodes() {
      var valTree = this.$refs.tree.getCheckedNodes();
      if (valTree.length == 0) return;
      var valTree = this.$refs.tree.getCheckedNodes()
      if (valTree.length == 0) return
      this.menuTopFrom.queryLayer = valTree[0].tabDesc;
      this.$store.state.propertiesName = valTree[0];
      for (var i = 0; i < valTree.length; i++) {
        this.treeChange.push(valTree[i]);
        if (valTree[i].entity) {
          this.treeChange.push(valTree[i])
        }
      }
    },
    //清空树选中的节点
    resetCheckedNodes() {
      this.treeChange = [];
      this.menuTopFrom.queryLayer = null;
      this.$refs.tree.setCheckedKeys([]);
      this.treeChange = []
      this.menuTopFrom.queryLayer = null
      this.$refs.tree.setCheckedKeys([])
    },
    //导入shp文件
    async setMenuTopFile() {
      var val = document.getElementById("getMenuTopFile").files;
      if (!val || !val.length) return;
      var formData = new FormData();
      var exts = [".shp", ".shx", ".dbf", ".prj"];
      var count = 0;
      var val = document.getElementById("getMenuTopFile").files
      if (!val || !val.length) return
      var formData = new FormData()
      var exts = [".shp", ".shx", ".dbf", ".prj"]
      var count = 0
      for (var i = 0; i < val.length; i++) {
        var name = val[i].name.toLocaleLowerCase();
        var ext = name.substring(name.lastIndexOf("."));
        var name = val[i].name.toLocaleLowerCase()
        var ext = name.substring(name.lastIndexOf("."))
        if (exts.indexOf(ext) > -1) {
          count++;
          formData.append(val[i].name, val[i]); // fs.files[i].name,file
          count++
          formData.append(val[i].name, val[i]) // fs.files[i].name,file
        }
      }
@@ -238,8 +364,8 @@
        this.$message({
          message: "ShapeFile文件选择不全!",
          type: "warning",
        });
        return;
        })
        return
      }
      $.ajax(BASE_URL + "/inquiry/uploadShp?token=" + getToken(), {
        type: "post",
@@ -248,138 +374,149 @@
        cache: false,
        processData: false,
        contentType: false,
        success: (rs) => {
        success: rs => {
          if (rs.code !== 200) {
            return this.$message.error("用户角色请求错误");
            return this.$message.error("用户角色请求错误")
          }
          this.$store.state.mapMenuShpFile = rs.result.wkt;
          this.showMapMenuPop();
          this.$store.state.mapMenuShpFile = rs.result.wkt
          this.showMapMenuPop()
        },
        error: (e) => {
          console.log(e);
        error: e => {
          console.log(e)
        },
      });
      })
    },
    getMenuTopFile() {
      $("#getMenuTopFile").click();
      $("#getMenuTopFile").click()
    },
    //查询
    getAttributeQuery() {
      //清空标绘
      sgworld.Creator.SimpleGraphic.edit(false, { editProp: false });
      sgworld.Creator.SimpleGraphic.clear();
      sgworld.Creator.SimpleGraphic.edit(false, { editProp: false })
      sgworld.Creator.SimpleGraphic.clear()
      this.clearBufferEntities()
      if (this.$store.state.queryInfo.length != 0) {
        for (var i in this.$store.state.queryInfo) {
          sgworld.Viewer.entities.remove(this.$store.state.queryInfo[i]);
          sgworld.Viewer.entities.remove(this.$store.state.queryInfo[i])
        }
        this.$store.state.queryInfo = [];
        this.$store.state.queryInfo = []
      }
      if (this.$store.state.primitLayer != null) {
        sgworld.Creator.DeleteObject(this.$store.state.primitLayer);
        this.$store.state.primitLayer = null;
        sgworld.Creator.DeleteObject(this.$store.state.primitLayer)
        this.$store.state.primitLayer = null
      }
      if (this.treeChange.length == 0) {
        this.$message.error("请选择要查询的数据");
        return;
        this.$message.error("请选择要查询的数据")
        return
      }
      if (this.menuTopFrom.queryType != "inputFile") {
        sgworld.Creator.createSimpleGraphic(
          this.menuTopFrom.queryType,
          {
            color: "#00FF0060",
            outlineColor: "#0f0",
            outlineWidth: 5,
          },
          (entity) => {
            this.setTurfGeometry(entity);
          }
        );
      } else {
        this.getMenuTopFile();
      let type = this.menuTopFrom.queryType
      switch (type) {
        case "buffer":
          this.dialogFormVisible = true
          break
        case "inputFile":
          this.getMenuTopFile()
          break
        default:
          sgworld.Creator.createSimpleGraphic(
            this.menuTopFrom.queryType,
            {
              color: "#00FF0060",
              outlineColor: "#0f0",
              outlineWidth: 5,
            },
            entity => {
              this.setTurfGeometry(entity)
            }
          )
          break
      }
    },
    setTurfGeometry(res) {
      var that = this;
      var res_val;
      var that = this
      var res_val
      switch (this.menuTopFrom.queryType) {
        case "point": //点
          var val = that.setCartesianToEightFour(res.position.getValue());
          res_val = val;
          that.setTurfCircle([val.lng, val.lat], 10);
          break;
          var val = that.setCartesianToEightFour(res.position.getValue())
          res_val = val
          that.setTurfCircle([val.lng, val.lat], 10)
          break
        case "polyline": //线
          var polyline = res.polyline.positions.getValue();
          res_val = polyline;
          that.setTurfPolyOrLine(polyline, "polyline");
          break;
          var polyline = res.polyline.positions.getValue()
          res_val = polyline
          that.setTurfPolyOrLine(polyline, "polyline")
          break
        case "rectangle": //矩形
          let rectangle = res.rectangle.coordinates.getValue();
          res_val = rectangle;
          let rectangle = res.rectangle.coordinates.getValue()
          res_val = rectangle
          var result = new Cesium.Rectangle.subsample(
            rectangle,
            Cesium.Ellipsoid.WGS84,
            rectangle.height
          );
          that.setTurfPolyOrLine(result, "rectangle");
          )
          that.setTurfPolyOrLine(result, "rectangle")
          break;
          break
        case "circle": //圆
          var val = that.setCartesianToEightFour(res.position.getValue());
          res_val = res.position.getValue();
          var radius = res.ellipse.semiMajorAxis.getValue();
          that.setTurfCircle([val.lng, val.lat], radius);
          break;
          var val = that.setCartesianToEightFour(res.position.getValue())
          res_val = res.position.getValue()
          var radius = res.ellipse.semiMajorAxis.getValue()
          that.setTurfCircle([val.lng, val.lat], radius)
          break
        case "polygon": //多边形
          var polygon = res.polygon.hierarchy.getValue().positions;
          res_val = polygon;
          that.setTurfPolyOrLine(polygon, "polygon");
          break;
          var polygon = res.polygon.hierarchy.getValue().positions
          res_val = polygon
          that.setTurfPolyOrLine(polygon, "polygon")
          break
      }
      this.flyEntity = res_val;
      this.flyEntity = res_val
    },
    setTurfCircle(position, radius) {
      var options = {
        steps: 10,
        units: "meters",
        properties: { foo: "bar" },
      };
      var circle = turf.circle(position, radius, options);
      }
      var circle = turf.circle(position, radius, options)
      this.setJonToWKT(circle);
      this.setJonToWKT(circle)
    },
    setTurfPolyOrLine(res, type) {
      var restVal,
        std = [];
        std = []
      for (var i in res) {
        var line_data = this.setCartesianToEightFour(res[i]);
        std.push([line_data.lng, line_data.lat]);
        var line_data = this.setCartesianToEightFour(res[i])
        std.push([line_data.lng, line_data.lat])
      }
      if (type == "polyline") {
        var line = turf.lineString(std, { name: "polyline" });
        restVal = turf.buffer(line, 10, { units: "meters" });
        var line = turf.lineString(std, { name: "polyline" })
        restVal = turf.buffer(line, 10, { units: "meters" })
      } else if (type == "rectangle") {
        var ste = this.setCartesianToEightFour(res[0]);
        std.push([ste.lng, ste.lat]);
        restVal = turf.polygon([std], { name: "rectangle" });
        var ste = this.setCartesianToEightFour(res[0])
        std.push([ste.lng, ste.lat])
        restVal = turf.polygon([std], { name: "rectangle" })
      } else if (type == "polygon") {
        var ste = this.setCartesianToEightFour(res[0]);
        std.push([ste.lng, ste.lat]);
        restVal = turf.polygon([std], { name: "polygon" });
        var ste = this.setCartesianToEightFour(res[0])
        std.push([ste.lng, ste.lat])
        restVal = turf.polygon([std], { name: "polygon" })
      }
      this.setJonToWKT(restVal);
      console.log("restVal", restVal)
      this.setJonToWKT(restVal)
    },
    setJonToWKT(res) {
      var jsonToWkt = this.$wkt.convert(res.geometry);
      this.$store.state.mapMenuShpFile = encr(jsonToWkt);
      let fixedVal = this.fixToPositon(res)
      var jsonToWkt = this.$wkt.convert(fixedVal.geometry)
      this.$store.state.mapMenuShpFile = encr(jsonToWkt)
      this.showMapMenuPop();
      this.showMapMenuPop()
    },
    showMapMenuPop() {
      this.$store.state.mapSpaceQueryLayer = this.treeChange;
      this.$store.state.mapPopBoxFlag = "1";
      this.$refs && this.$refs.queryinfo && this.$refs.queryinfo.close();
      this.$store.state.mapSpaceQueryLayer = this.treeChange
      this.$store.state.mapPopBoxFlag = "1"
      this.$refs && this.$refs.queryinfo && this.$refs.queryinfo.close()
      this.$refs &&
        this.$refs.queryinfo &&
        this.$refs.queryinfo.open("空间查询", null, {
@@ -392,50 +529,187 @@
            //   window.Viewer.scene.primitives.removeAll()
            // }
          },
        });
        })
      // this.$bus.$emit('changeMapMenuTop', 'true');
      // sgworld.Creator.SimpleGraphic.clear();
      //清空inputFile
      // var file = document.getElementById('getMenuTopFile');
      // file.outerHTML = file.outerHTML;
      this.$refs.pathClear.value = "";
      this.$refs.pathClear.value = ""
    },
    clearQuery() {
      this.$refs.pathClear.value = "";
      this.treeChange = [];
      this.menuTopFrom.queryLayer = null;
      this.menuTopFrom.queryType = "rectangle";
      this.$refs.tree.setCheckedKeys([]);
      // æ¸…楚buffer
      this.clearBufferEntities()
      this.$refs.pathClear.value = ""
      this.treeChange = []
      this.menuTopFrom.queryLayer = null
      this.menuTopFrom.queryType = "rectangle"
      this.$refs.tree.setCheckedKeys([])
      //清空标绘
      sgworld.Creator.SimpleGraphic.edit(false, { editProp: false });
      sgworld.Creator.SimpleGraphic.clear();
      sgworld.Creator.SimpleGraphic.edit(false, { editProp: false })
      sgworld.Creator.SimpleGraphic.clear()
      if (this.$store.state.queryInfo.length != 0) {
        for (var i in this.$store.state.queryInfo) {
          sgworld.Viewer.entities.remove(this.$store.state.queryInfo[i]);
          sgworld.Viewer.entities.remove(this.$store.state.queryInfo[i])
        }
        this.$store.state.queryInfo = [];
        this.$store.state.queryInfo = []
      }
      //关闭窗口
      this.$refs &&
        this.$refs.queryinfo &&
        this.$refs.queryinfo.close("queryinfo");
        this.$refs.queryinfo.close("queryinfo")
      if (this.$store.state.primitLayer != null) {
        sgworld.Creator.DeleteObject(this.$store.state.primitLayer);
        this.$store.state.primitLayer = null;
        sgworld.Creator.DeleteObject(this.$store.state.primitLayer)
        this.$store.state.primitLayer = null
      }
    },
    setCartesianToEightFour(res) {
      var std = {};
      let ellipsoid = Viewer.scene.globe.ellipsoid;
      let cartographic = ellipsoid.cartesianToCartographic(res);
      std.lat = Cesium.Math.toDegrees(cartographic.latitude);
      std.lng = Cesium.Math.toDegrees(cartographic.longitude);
      std.alt = cartographic.height;
      return std;
      var std = {}
      let ellipsoid = Viewer.scene.globe.ellipsoid
      let cartographic = ellipsoid.cartesianToCartographic(res)
      std.lat = Cesium.Math.toDegrees(cartographic.latitude)
      std.lng = Cesium.Math.toDegrees(cartographic.longitude)
      std.alt = cartographic.height
      return std
    },
    async getPipelineData() {
      const data = await pipelines_selectSegNames()
      if (data.code != 200) {
        this.$message.error("列表调用失败")
      }
      var std = []
      var str = []
      var result = data.result
      for (var i in result) {
        if (std.indexOf(result[i].pipeName) == -1) {
          std.push(result[i].pipeName)
          str.push(result[i])
        }
      }
      this.featureLayer = data.result
      this.pipelineOption = str
      this.menuTopFrom.pipeline = this.pipelineOption[0].pipeName
      this.changeSelect2(this.menuTopFrom.pipeline)
    },
    async genBuffer() {
      let { pipeline, segName } = this.menuTopFrom
      let params = { name: pipeline }
      // let params = { name: "西气东输一线" }
      const res = await selectPipelines(params)
      if (res.code == 200) {
        const item = res.result.find(item => item.gid == this.analyGid)
        console.log("selectPipelines", item)
        const wkt = item.wkt
        if (item && wkt) {
          const line = wktToGeoJSON(wkt)
          let position = line.coordinates
          if (wkt.includes("MULTILINESTRING")) {
            position = line.coordinates.flat()
          }
          this.bufferLinePosition = position
          if (this.dialogFormVisible) {
            this.createBuffer()
          }
        }
      }
    },
    createBuffer() {
      this.clearBufferEntities()
      const position = this.bufferLinePosition
      const buffRadius = this.menuTopFrom.bufferSize
      var polylineF = turf.lineString(position)
      var bufferd = turf.buffer(polylineF, buffRadius, { units: "meters" })
      var coordinates = bufferd.geometry.coordinates
      // console.log("coordinates", coordinates)
      var points = coordinates[0]
      var degreesArray = this.pointsToDegreesArray(points)
      let array = Cesium.Cartesian3.fromDegreesArray(degreesArray)
      const hierarchy = new Cesium.PolygonHierarchy(array)
      const bufferPolygon = sgworld.Viewer.entities.add({
        polygon: {
          hierarchy: hierarchy,
          material: Cesium.Color.RED.withAlpha(0.5),
          classificationType: Cesium.ClassificationType.BOTH,
        },
      })
      this.bufferEntities.push(bufferPolygon)
      let res = hierarchy.positions
      sgworld.Navigate.flyToObj(bufferPolygon)
      this.flyEntity = res
    },
    changeBufferData() {
      this.dialogFormVisible = false
      let res = this.flyEntity
      let restVal,
        std = []
      for (let i in res) {
        let line_data = this.setCartesianToEightFour(res[i])
        std.push([line_data.lng, line_data.lat])
      }
      restVal = turf.polygon([std], { name: "polygon" })
      console.log("bufferPolygon", res)
      console.log("bufferPolygon", restVal)
      this.setJonToWKT(restVal)
    },
    pointsToDegreesArray(points) {
      let degreesArray = []
      points.forEach(item => {
        degreesArray.push(item[0])
        degreesArray.push(item[1])
      })
      return degreesArray
    },
    clearBufferEntities() {
      this.bufferEntities.forEach(entity => {
        sgworld.Viewer.entities.remove(entity)
      })
      this.flyEntity = null
    },
    changeSelect2(res) {
      var value = this.featureLayer
      let option = []
      for (var i in value) {
        if (value[i].pipeName == res) {
          option.push(value[i])
        }
      }
      this.segNameOption = option
      this.menuTopFrom.segName = option[0].segName || "<空>"
      this.analyGid = option[0].gid
      this.genBuffer()
    },
    selectChangeGid(res) {
      this.analyGid = res
    },
    fixToPositon(restVal, digits = 6) {
      restVal.geometry.coordinates.forEach(coord => {
        if (Array.isArray(coord)) {
          coord.forEach(item => {
            if (item.length >= 2) {
              item[0] = Number(item[0].toFixed(digits))
              item[1] = Number(item[1].toFixed(digits))
            }
          })
        }
      })
      return restVal
    },
    handleBufferChange(val, oldVal) {
      this.createBuffer()
    },
    dialogOpend() {
      this.createBuffer()
    }
  },
};
}
</script>
<style lang="less" scoped>
@@ -453,4 +727,47 @@
  padding: 4px 20px;
  font-weight: 400;
}
.buffer-dialog {
  width: 300px;
  height: 300px;
  background-color: rgba(244, 248, 255, 0.85) !important;
  .el-dialog__body {
    .el-form-item {
      margin-bottom: 20px !important;
    }
  }
}
</style>
<style lang="less">
.menuBox {
  .el-dialog__wrapper {
    pointer-events: none;
    .buffer-dialog {
      top: 355px;
      background-color: rgba(244, 248, 255, 0.85) !important;
      border: 1px solid rgba(32, 160, 255, 0.6);
      color: #202020;
      .el-dialog__body,
      .el-dialog__header,
      .el-dialog__footer {
        pointer-events: auto;
      }
      .el-dialog__header {
        padding: 10px 20px;
        border-bottom: 1px solid rgba(32, 160, 255, 0.6);
        .el-dialog__headerbtn {
          top: 10px;
          font-size: 18px;
        }
      }
      .el-form-item {
        .el-input-number {
          width: 202px;
        }
      }
    }
  }
}
</style>
src/components/MapView/mapSpacePop.vue
@@ -60,7 +60,8 @@
      <div class="centTable">
        <el-table
          :data="tableData"
          height="260px"
          border
          height="100%"
          ref="filterTable"
          style="width: 100%"
        >
@@ -90,6 +91,7 @@
            :prop="item.field"
            show-overflow-tooltip
            align="center"
            :fit="true"
          ></el-table-column>
        </el-table>
      </div>
@@ -192,6 +194,7 @@
      spaceLayer: '',
      imagePoint: null,
      domainsLayer: null,
      querytype: null,
    };
  },
  watch: {
@@ -241,7 +244,7 @@
      this.options = [];
      var std = [];
      this.querytype = obj.type
      if (obj.type == "text" || obj.type == "blob") {
        std = this.conditions[0];
      } else if (obj.type == "date" || obj.type == "datetime") {
@@ -269,6 +272,7 @@
      this.formInline.name = val_date.field;
      this.options = [];
      var std = [];
      this.querytype = val_date.type
      if (val_date.type == "text" || val_date.type == "blob") {
        std = this.conditions[0];
      } else if (val_date.type == "date" || val_date.type == "datetime") {
@@ -292,6 +296,7 @@
      if (data.code != 200) {
        this.$message.error('列表调用失败');
      }
      this.optionx = [];
      var valadata = data.result;
      for (var i in valadata) {
@@ -324,6 +329,7 @@
        this.$message.error('列表调用失败');
      }
      this.domainsLayer = data.result;
      this.setListDataStart();
      this.getTableselectFields();
    },
@@ -333,13 +339,41 @@
      if (this.formInline.input == undefined || this.formInline.input == null) {
        this.listdata.filter = null;
      } else {
        var val;
        var value = this.formInline.input
        if (this.querytype == "long" || this.querytype == "integer") {
          val = parseInt(value);
        } else if (this.querytype == 'double') {
          if (this.formSql.value.indexOf(".") != -1) {
            val = value;
          } else {
            val = parseFloat(value).toFixed(1)
          }
        } else if (querytype == "date" || querytype == "datetime") {
          var time = new Date(value);
          var m = time.getMonth() + 1;
          var d = time.getDate();
          var y = time.getFullYear();
          val = "'" + y +
            '-' +
            this.add0(m) +
            '-' +
            this.add0(d) + "'";
        } else {
          val = "'" + value + "'";
        }
        this.listdata.filter =
          this.formInline.name +
          ' ' +
          this.formInline.region +
          ' ' +
          this.formInline.input;
          this.formInline.name + " " + this.formInline.region + " " + val
      }
      const data = await dataQuerySelectByPage(this.listdata);
      if (data.code != 200) {
        this.$message.error('列表调用失败');
@@ -379,7 +413,8 @@
          this.$store.state.primitLayer = null;
        }
        var wkt = this.$wkt.parse(val1);
        this.setMapLoaction(wkt);
        this.setMapLoaction(wkt, row);
      }
    },
    handleSizeChange(val) {
@@ -390,7 +425,7 @@
      this.listdata.pageIndex = val;
      this.getSpaceTableLayer();
    },
    setMapLoaction(res) {
    setMapLoaction(res, properties) {
      if (this.$store.state.primitLayer != null) {
        sgworld.Creator.DeleteObject(this.$store.state.primitLayer);
        // this.$store.state.primitLayer = null;
@@ -398,6 +433,7 @@
        this.$store.state.primitLayer = null;
      }
      var coord = res.coordinates;
      if (res.type == 'Point') {
        var val = Cesium.Cartesian3.fromDegrees(
          res.coordinates[0],
@@ -405,6 +441,8 @@
        );
        this.$store.state.primitLayer = Viewer.entities.add({
          properties: properties,
          tag: "properties_point",
          position: val,
          billboard: {
            // å›¾åƒåœ°å€ï¼ŒURI或Canvas的属性
@@ -426,13 +464,41 @@
        sgworld.Navigate.flyToObj(this.$store.state.primitLayer)
        window.propertieshandler = new Cesium.ScreenSpaceEventHandler(
          sgworld.Viewer.scene.canvas
        );
        window.propertieshandler.setInputAction(event => {
          let pick = sgworld.Viewer.scene.pick(event.position);
          // ;
          if (pick && pick.id && pick.id.tag == "properties_point") {
            this.$store.state.propertiesFlag = '1';
            let properties = pick.id.properties;
            let propertyNames = pick.id.properties.propertyNames;
            let obj = {};
            obj["eventid"] = properties['_eventid']._value;
            //
            this.attributeData.forEach(item => {
              propertyNames.forEach(itemElement => {
                if (itemElement == item.field) {
                  obj[item.alias] = properties[itemElement]._value
                }
              })
            })
            this.$store.state.propertiesInfo = obj;
          }
        }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
      } else if (res.type == 'MultiPolygon' || res.type == 'LineString') {
        var val = res.coordinates[0][0];
        var std = [];
        for (var i in val) {
          std.push({ x: val[i][0], y: val[i][1] })
          std.push(val[i][0])
          std.push(val[i][1])
        }
        this.$store.state.primitLayer = Viewer.entities.add({
          polyline: {
            positions: Cesium.Cartesian3.fromDegreesArray(std),
@@ -460,6 +526,9 @@
      }
    },
  },
  destroyed() {
    this.$store.state.propertiesFlag = null;
  }
};
</script>
@@ -473,7 +542,9 @@
  border: 1px solid gray;
  float: left;
  .centTable {
    height: 230px;
    position: absolute;
    height: 66%;
    width: 98%;
  }
  .rightTitle {
    padding: 5px;
@@ -486,7 +557,10 @@
  }
  .bottomPage {
    position: absolute;
    bottom: 1%;
    bottom: 3%;
  }
  /deep/.el-form-item {
    margin-bottom: 0px;
  }
}
</style>
src/components/MapView/mapSpaceTop.vue
@@ -149,7 +149,11 @@
    },
    menuTreeCheck(value) {
      this.mapSpaceQueryLayer = value;
      this.layerData.forEach(item => {
        if (this.menuTopFrom.queryLayer == item.entity){
          this.$store.state.propertiesName = item;
        }
      })
      this.getCheckedNodes();
    },
  },
src/components/MyBread.vue
@@ -1,15 +1,14 @@
<template>
  <div class="breadcrumb">
    <el-breadcrumb separator="/">
      <el-breadcrumb-item
        style="color: #409eff !important"
        :to="{ path: '/' }"
        >{{ list[0] }}</el-breadcrumb-item
      >
      <el-breadcrumb-item style="color: #409eff !important">{{
    <el-breadcrumb style="color: #409eff !important">
      <el-breadcrumb-item style="color: #409eff !important;  cursor: default;">{{ list[0] }}</el-breadcrumb-item>
      <el-breadcrumb-item style="color: #409eff !important; cursor: default ;">{{
        list[1]
      }}</el-breadcrumb-item>
      <el-breadcrumb-item style="" v-if="list[2]">{{
      <el-breadcrumb-item
        style="cursor: default;"
        v-if="list[2]"
      >{{
        list[2]
      }}</el-breadcrumb-item>
    </el-breadcrumb>
@@ -42,4 +41,11 @@
.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover {
  color: #409eff !important;
}
.el-breadcrumb__inner {
  color: #409eff !important;
  cursor: default;
}
.el-breadcrumb__inner {
  cursor: default !important ;
}
</style>
src/components/Screen/bottom.vue
@@ -46,9 +46,18 @@
            </div>
          </el-popover>
        </div>
        <div
          class="bottombtn"
          :class="showTree ? 'active' : ''"
          @click="handleTree"
        >
          å›¾å±‚管理
        </div>
      </div>
      <div class="bottom13">
        <img :src="yxImg" @click="ChangeBaseLayer" />
        <img :src="yxImg" @click="ChangeBaseLayer('yx')" title="影像图" />
        <img :src="xrImg" @click="ChangeBaseLayer('xr')" title="晕渲图" />
      </div>
    </div>
    <div class="bottom2">
@@ -57,11 +66,13 @@
  </div>
</template>
<script>
let yunxuanLayer = null
import PipeLine from "@/assets/json/pipeline.json"
import {
  countProjectTour,
  countProjectDisplay,
  countProjectLocation,
  selectProjectFileList,
} from "@/api/screen.js"
import { wktToGeoJSON } from "@terraformer/wkt"
@@ -69,22 +80,25 @@
  data() {
    return {
      YXState: true,
      XRState: true,
      yunxuanLayer: null, //全球眩晕图
      yxImg: require("../../assets/img/Screen/yximg.png"),
      currMenu: "项目展示",
      xrImg: require("../../assets/img/Screen/bdimg.png"),
      currMenu: "专题展示",
      currProject: "",
      searchName: "",
      menuList: [
        {
          menuName: "项目展示",
          menuName: "专题展示",
          children: [
            // {
            //   name: "全国管网图",
            //   id: "qggwt",
            // },
            // {
            //   name: "全球管网图",
            //   id: "qqgwt",
            // },
            {
              name: "全国管网图",
              id: "qggwt",
            },
            {
              name: "全球管网图",
              id: "qqgwt",
            },
            {
              name: "全国项目",
              id: "qgxm",
@@ -96,7 +110,7 @@
          ],
        },
        {
          menuName: "工程展示",
          menuName: "项目展示",
          children: [
            {
              name: "中俄东线管道工程",
@@ -154,6 +168,7 @@
          ],
        },
      ],
      showTree: false,
    }
  },
  computed: {
@@ -174,20 +189,47 @@
    this.getCountProjectTour()
  },
  methods: {
    ChangeBaseLayer() {
      if (this.YXState) {
        this.yxImg = require("../../assets/img/Screen/bdimg.png")
        //加载百度影像
        Viewer.imageryLayers._layers[1].show = true
        Viewer.imageryLayers._layers[2].show = false
        Viewer.imageryLayers._layers[3].show = false
      } else {
        this.yxImg = require("../../assets/img/Screen/yximg.png")
        Viewer.imageryLayers._layers[1].show = false
        Viewer.imageryLayers._layers[2].show = true
        Viewer.imageryLayers._layers[3].show = true
    ChangeBaseLayer(parm) {
      if (parm == "yx") {
        if (this.YXState) {
          //this.yxImg = require("../../assets/img/Screen/bdimg.png")
          //加载百度影像
          Viewer.imageryLayers._layers[1].show = true
          Viewer.imageryLayers._layers[2].show = false
          Viewer.imageryLayers._layers[3].show = false
        } else {
          //this.yxImg = require("../../assets/img/Screen/yximg.png")
          Viewer.imageryLayers._layers[1].show = false
          Viewer.imageryLayers._layers[2].show = true
          Viewer.imageryLayers._layers[3].show = true
        }
        this.YXState = !this.YXState
      }
      this.YXState = !this.YXState
      if (parm == "xr") {
        if (yunxuanLayer == null) {
          var urls = "https://tiles3.geovisearth.com/base/v1/ter"
          // æ˜Ÿå›¾åœ°çƒåœ°å½¢æ™•渲
          yunxuanLayer = sgworld.Creator.createUrlTemplateImageryProvider(
            "星图地球地形晕渲",
            {
              url:
                urls +
                "/{z}/{x}/{y}?format=webp&token=486dac3bec56d7d7c2a581c150be2bd937462f1e8f3bc9c78b5658b396122405",
            },
            "0",
            undefined,
            true,
            ""
          )
        }
        if (this.XRState) {
          yunxuanLayer.item.show = true
        } else {
          yunxuanLayer.item.show = false
        }
        this.XRState = !this.XRState
      }
    },
    handleMenuClick(menu) {
      this.currMenu = menu.menuName
@@ -199,16 +241,22 @@
        case "工程巡视":
          this.showPathLine(child)
          break
        case "工程展示":
          this.DisplayCurrentProject(child)
          break
        case "项目展示":
          this.DisplayCurrentProject(child)
          this.changeProject(child)
          this.$bus.$emit("changeProjectCode", child.id)
          break
        case "专题展示":
          this.changeProject(child)
          break
        default:
          break
      }
    },
    //工程巡视
    async showPathLine(params) {
      const line = wktToGeoJSON(params.wkt)
      const position = line.coordinates[0]
@@ -247,8 +295,6 @@
    //项目展示
    DisplayCurrentProject(params) {
      console.log(params)
      //打开或者加载图层
      //飞到指定位置
@@ -278,18 +324,29 @@
    },
    handleSearchChange(currMenu) {},
    async getCountProjectDisplay() {
      const res = await countProjectLocation()
      // const res = await countProjectLocation()
      // if (res.code === 200) {
      //   const menu = this.menuList.find(item => item.menuName == "项目展示")
      //   menu.children = res.result.map(item => {
      //     return {
      //       name: item.projname,
      //       id: item.projname,
      //       wkt: item.wkt,
      //     }
      //   })
      // }
      const res = await selectProjectFileList()
      if (res.code === 200) {
        const menu = this.menuList.find(item => item.menuName == "工程展示")
        const menu = this.menuList.find(item => item.menuName == "项目展示")
        menu.children = res.result.map(item => {
          return {
            name: item.projname,
            id: item.projname,
            name: item.name,
            id: item.code,
            wkt: item.wkt,
          }
        })
      }
      selectProjectFileList
    },
    async getCountProjectTour() {
      const res = await countProjectTour()
@@ -302,12 +359,16 @@
            wkt: item.wkt,
          }
        })
      }
    },
    //专题展示
    changeProject(params) {
      this.$bus.$emit('changeProject', params.name)
    }
      this.$bus.$emit("changeProject", params.name)
    },
    handleTree(params) {
      this.showTree = !this.showTree
      this.$bus.$emit("changeTree", this.showTree)
    },
  },
}
</script>
@@ -366,6 +427,7 @@
      color: #fff;
      font-weight: 600;
      cursor: pointer;
      &.active {
        background: url(~@/assets/img/Screen/centerbtnc.png);
        background-size: 100% 100%;
@@ -386,6 +448,7 @@
    }
  }
}
.popover {
  display: flex;
  justify-content: center;
@@ -394,9 +457,11 @@
  background: url(~@/assets/img/Screen/centerTooltipBg.png);
  background-size: 100% 100%;
  border: none;
  .popper__arrow {
    display: none;
  }
  .popover-content {
    &__header {
      display: flex;
@@ -407,6 +472,7 @@
      height: 30px;
      font-size: 18px;
      color: #fff;
      &::before,
      &::after {
        margin: 0 5px;
@@ -418,15 +484,18 @@
        height: 8px;
      }
    }
    &__search {
      margin-top: 8px;
      width: 145px;
      text-align: center;
      .el-input {
        width: 125px;
        height: 21px;
        background: rgba(0, 48, 111, 0.2);
        border: 0.25px solid #2a80a9;
        &__inner {
          background: rgba(0, 48, 111, 0.2);
          border-radius: inherit;
@@ -434,6 +503,7 @@
          padding: 0 5px;
          color: #fff;
        }
        .el-input-group__append {
          width: 32px;
          border: none;
@@ -476,6 +546,7 @@
      }
    }
  }
  ::-webkit-scrollbar {
    width: 2px;
    height: 2px;
src/components/Screen/left.vue
@@ -3,23 +3,80 @@
    <div class="leftarrow">
      <img :src="leftImg" @click="ChangeLeft" />
    </div>
    <div class="leftContainer" v-if="ChartDisplay">
      <div class="current1" style="height: 27%;" id="leftCurrent1">
    <div class="leftContainer" v-if="currentDisplay == '大屏' && ChartDisplay">
      <div class="current1" id="leftCurrent1">
        <div class="aside-title">数据申请次数</div>
        <count-data-apply ></count-data-apply>
        <count-data-apply></count-data-apply>
      </div>
      <div class="current1" style="height: 27%;"  id="leftCurrent2">
        <div class="aside-title">服务类别</div>
      <div class="current1" id="leftCurrent2">
        <div class="aside-title">用户访问量</div>
        <service-type></service-type>
      </div>
      <div class="current1" style="height: 36%;" id="leftCurrent3">
        <div class="aside-title">存储信息</div>
      <div class="current1" id="leftCurrent3">
        <div class="aside-title">项目存储信息</div>
        <data-storage></data-storage>
      </div>
    </div>
    <div class="leftContainer" v-if="ProjectreeDisplay">
      <project-tree></project-tree>
    <!-- å…¨çƒã€å…¨å›½ç»Ÿè®¡æ¬¡æ•° -->
    <div class="leftContainer" v-if="currentDisplay == '项目'">
      <div class="current1" id="leftCurrent1">
        <div class="aside-title">数据总览</div>
        <div class="wrapper">
          <div class="title">{{ currentProject }}</div>
          <dv-digital-flop style="height: 40px" :config="xmCountConfig" />
        </div>
      </div>
      <div class="current1" id="leftCurrent2">
        <div class="aside-title">存储信息</div>
        <base-line-chart
          :requsetFn="requsetFn"
          :project="currentProject"
          title="数据存储量"
        ></base-line-chart>
      </div>
      <div class="current1" id="leftCurrent3">
        <div class="aside-title">数据存储量</div>
        <data-storage-type></data-storage-type>
      </div>
    </div>
    <!-- å…¨çƒã€å…¨å›½ç®¡ç½‘图 -->
    <div class="leftContainer" v-if="currentDisplay == '管网'">
      <div class="current1" id="leftCurrent1">
        <div class="aside-title">数据总览</div>
        <div class="wrapper">
          <div class="title">{{ currentProject }}</div>
          <dv-digital-flop style="height: 40px" :config="xmCountConfig" />
        </div>
      </div>
      <div class="current1" id="leftCurrent2">
        <div class="aside-title">管网长度</div>
        <base-line-chart
          :requsetFn="requsetFn"
          :project="currentProject"
          title="管网长度"
        ></base-line-chart>
        <!-- <base-pie-chart :project="currentProject"></base-pie-chart> -->
        <!-- <service-type></service-type> -->
      </div>
      <div class="current1" id="leftCurrent3">
        <div class="aside-title">数据存储量</div>
        <data-storage-type></data-storage-type>
      </div>
    </div>
    <!-- å•个工程展示 -->
    <div class="leftContainer" v-if="currentDisplay == '工程'">
      <div class="current1">
        <div class="aside-title">工程简介</div>
        <projectintroduction></projectintroduction>
      </div>
      <div class="current1">
        <div class="aside-title">项目状态</div>
        <projectState></projectState>
      </div>
      <div class="current1">
        <div class="aside-title">建设工期</div>
        <projectTime></projectTime>
      </div>
    </div>
  </div>
</template>
@@ -28,24 +85,83 @@
import countDataApply from "@/components/chart/CountDataApply.vue"
import ServiceType from "../chart/ServiceType.vue"
import DataStorage from "../chart/DataStorage.vue"
import DataStorageType from "../chart/DataStorageType.vue"
import BaseBarChart from "../chart/BaseBarChart.vue"
import BaseLineChart from "../chart/BaseLineChart.vue"
import BasePieChart from "../chart/BasePieChart .vue"
import projectintroduction from "../chart/projectintroduction.vue"
import projectState from "../chart/projectState.vue"
import projectTime from "../chart/projectTime.vue"
import {
  countCountryDimension,
  countProvinceDimension,
  countZhPipeStations,
  countZhPipeMapLength,
} from "@/api/screen.js"
function formatter(number) {
  const numbers = number.toString().split("").reverse()
  const segs = []
  while (numbers.length) segs.push(numbers.splice(0, 3).join(""))
  return segs.join(",").split("").reverse().join("")
}
export default {
  components: {
    ProjectTree,
    countDataApply,
    ServiceType,
    DataStorage,
    BaseBarChart,
    BaseLineChart,
    BasePieChart,
    projectintroduction,
    projectState,
    projectTime,
    DataStorageType
  },
  data() {
    return {
      leftMessage: "init",
      ChartDisplay: true,
      ProjectreeDisplay: false,
      GlobleChartDisplay: false,
      CountryChartDisplay: false,
      leftImg: require("../../assets/img/Screen/rightArrow.png"),
      currentProject: "全球项目",
      currentDisplay: "大屏",
      requsetFn: countZhPipeMapLength,
      xmCountConfig: {
        number: [0],
        content: "{nt}",
        formatter,
      },
    }
  },
  mounted() {
    this.OpenLeftInit()
    // this.OpenLeftInitChart();
    this.$bus.$on("changeProject", name => {
      if (name.includes("全球管网") || name.includes("全国管网")) {
        this.currentDisplay = "管网"
      } else if (name.includes("全球项目") || name.includes("全国项目")) {
        this.currentDisplay = "项目"
      } else {
        this.currentDisplay = "工程"
      }
      this.currentProject = name
    })
    this.$bus.$on("changeCount", count => {
      if (typeof count == "number") {
        this.xmCountConfig.number = [count]
        this.xmCountConfig = {
          ...this.xmCountConfig,
        }
      }
    })
  },
  methods: {
    ChangeLeft() {
@@ -71,11 +187,14 @@
    },
    //打开大屏左侧界面
    OpenLeftInit() {
      this.currentDisplay = "大屏"
      this.ChartDisplay = true
      this.ProjectreeDisplay = false
      this.leftMessage = "init"
      // this.OpenLeftInitChart();
      this.$parent.ChangeWidth("leftView")
      this.GlobleChartDisplay = false
    },
    //打开工程树
    OpenLeftProjectTree() {
@@ -542,15 +661,14 @@
  .leftContainer {
    height: 100%;
    width: calc(100% - 7px);
    width: calc(100% - 45px);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: space-around;
    .current1 {
      height: 30%;
      height: 32%;
      width: 100%;
      background: url(../../assets/img/Screen/chartbg.png);
      background-size: 100% 100%;
@@ -562,7 +680,23 @@
      background: url(../../assets/img/Screen/contentBg.png);
      background-size: 100% 100%;
      background-repeat: no-repeat;
    }
    .wrapper {
      display: flex;
      flex-direction: column;
      justify-content: center;
      margin: 15px auto;
      width: 180px;
      height: 180px;
      background: url(../../assets/img/Screen/all.png);
      background-size: 100% 100%;
      background-repeat: no-repeat;
      .title {
        color: #fff;
        font-size: 20px;
        width: 100%;
        text-align: center;
      }
    }
  }
}
src/components/Screen/mapsdk.vue
@@ -14,29 +14,29 @@
  },
  mounted() {
    this.init3DMap()
    this.$bus.$on("changeProject", name => {
      if (!yunxuanLayer) {
        var urls = "https://tiles3.geovisearth.com/base/v1/ter"
        // æ˜Ÿå›¾åœ°çƒåœ°å½¢æ™•渲
        yunxuanLayer = sgworld.Creator.createUrlTemplateImageryProvider(
          "星图地球地形晕渲",
          {
            url:
              urls +
              "/{z}/{x}/{y}?format=webp&token=486dac3bec56d7d7c2a581c150be2bd937462f1e8f3bc9c78b5658b396122405",
          },
          "0",
          undefined,
          true,
          ""
        )
      }
      if (name == '全球项目') {
        yunxuanLayer.item.show = true
      } else {
        yunxuanLayer.item.show = false
      }
    })
    // this.$bus.$on("changeProject", name => {
    //   if (!yunxuanLayer) {
    //     var urls = "https://tiles3.geovisearth.com/base/v1/ter"
    //     // æ˜Ÿå›¾åœ°çƒåœ°å½¢æ™•渲
    //     yunxuanLayer = sgworld.Creator.createUrlTemplateImageryProvider(
    //       "星图地球地形晕渲",
    //       {
    //         url:
    //           urls +
    //           "/{z}/{x}/{y}?format=webp&token=486dac3bec56d7d7c2a581c150be2bd937462f1e8f3bc9c78b5658b396122405",
    //       },
    //       "0",
    //       undefined,
    //       true,
    //       ""
    //     )
    //   }
    //   if (name == '全球项目') {
    //     yunxuanLayer.item.show = true
    //   } else {
    //     yunxuanLayer.item.show = false
    //   }
    // })
  },
  methods: {
    init3DMap() {
@@ -49,68 +49,21 @@
        SmartEarthRootUrl + "Workers/image/earth.jpg",
        function () {}
      )
      window.viewer = window.Viewer = window.sgworld._Viewer
      // Viewer.imageryLayers._layers[0].show = false
      // viewer.clock.shouldAnimate = true
      //每次旋转的弧度 è¶Šå°è¶Šæ…¢
      var angle = Cesium.Math.toRadians(Math.PI * 1)
      // æ—‹è½¬æ¬¡æ•° ç”¨æ¥æŽ§åˆ¶åœæ­¢
      var rotate_num = 0
      function onTickCallback() {
        viewer.scene.camera.rotate(Cesium.Cartesian3.UNIT_Z, angle)
        //以下用来控制 åœæ­¢
        rotate_num++
        // 110 æ¬¡æ—‹è½¬ä¸€å‘¨
        if (rotate_num == 1) {
          Viewer.camera.flyTo({
            destination: {
              x: -2395735.480669514,
              y: 35646557.30966785,
              z: 33320031.01620178,
            },
            orientation: {
              heading: 6.283185307179578,
              roll: 0,
              pitch: -1.5687480368906144,
            },
          })
        }
        if (rotate_num == 220) {
          Viewer.camera.flyTo({
            destination: {
              x: -4022999.313498903,
              y: 19214082.70976515,
              z: 13043510.373621361,
            },
            orientation: {
              heading: 6.283185307179577,
              roll: 0,
              pitch: -1.5643686104630592,
            },
          })
        }
        if (rotate_num === 330) {
          //结束旋转
          viewer.clock.onTick.removeEventListener(onTickCallback)
          //可以再接定位动画
          Viewer.camera.flyTo({
            destination: {
              x: -3919623.6069864673,
              y: 13752070.475126158,
              z: 8307291.863719194,
            },
            orientation: {
              heading: 6.283185307179582,
              roll: 0,
              pitch: -1.5707039123519846,
            },
          })
        }
      }
      // åˆ©ç”¨æ—¶é’Ÿè¿›è¡Œç›‘听
      viewer.clock.onTick.addEventListener(onTickCallback)
      window.viewer = window.Viewer = window.sgworld._Viewer;
      Viewer.imageryLayers._layers[0].show = false
       sgworld.Navigate.jumpTo({      //跳转视角
            destination: new Cesium.Cartesian3.fromDegrees(110, 32, 50000000)
      });
      setTimeout(() => {
        window.viewer.camera.flyTo({
          destination:new Cesium.Cartesian3.fromDegrees(110, 32, 20000000),
          orientation:{
            heading:Cesium.Math.toRadians(0),
            pitch: Cesium.Math.toRadians(-90),
          }
        })
      }, 1000);
      Viewer.imageryLayers.addImageryProvider(
        new Cesium.UrlTemplateImageryProvider({
          url: gaoDeBaseUrl[0].url,
src/components/Screen/right.vue
@@ -1,44 +1,101 @@
<template>
  <div class="current">
    <div class="rightContainer" v-if="ChartDisplay">
    <div class="rightContainer" v-if="currentDisplay == '大屏' && ChartDisplay">
      <div class="current1">
        <div class="aside-title">工程种类</div>
        <div class="aside-title">项目统计</div>
        <project-category></project-category>
      </div>
      <div class="" style="width: 100%;height: 60%">
        <div class="aside-title">文件格式</div>
        <div class="content" style="height: calc(100% - 30px)">
      <div class="current1">
        <div class="aside-title">数据统计</div>
        <visit-count></visit-count>
      </div>
      <div class="current1">
        <div class="aside-title">服务访问次数</div>
        <Service-Get></Service-Get>
      </div>
    </div>
    <!-- å…¨çƒã€å…¨å›½é¡¹ç›® -->
    <div class="rightContainer" v-if="currentDisplay == '项目'">
      <div class="current1">
        <div class="aside-title"></div>
        <!-- <country-dimension-bar ref="barRef"></country-dimension-bar> -->
        <base-bar-chart
          title="项目个数"
          :project="currentProject"
        ></base-bar-chart>
      </div>
      <div class="current1">
        <div class="aside-title">项目饼状图</div>
        <!-- <base-pie-chart :project="currentProject"></base-pie-chart> -->
        <country-dimension-pie
          v-if="currentProject == '全球项目'"
          ref="pieRef"
        ></country-dimension-pie>
        <province-dimension-pie v-else ref="pieRef"></province-dimension-pie>
      </div>
      <div class="current1">
        <div class="aside-title">数据使用情况</div>
        <dv-capsule-chart
          :config="barConfig"
          style="width: 360px; height: 85%"
        />
      </div>
    </div>
    <!-- å…¨å›½ã€å…¨çƒç®¡ç½‘ -->
    <div class="rightContainer" v-if="currentDisplay == '管网'">
      <div class="current1">
        <div class="aside-title">站场座数</div>
        <!-- <country-dimension-bar ref="barRef"></country-dimension-bar> -->
        <base-bar-chart
          title="站场座数"
          :project="currentProject"
        ></base-bar-chart>
      </div>
      <div class="current1">
        <div class="aside-title">阀室座数</div>
        <dv-active-ring-chart
          :config="pieconfig"
          style="width: 377px; height: 85%"
        />
      </div>
      <div class="current1">
        <div class="aside-title">管道条数</div>
        <dv-conical-column-chart
          :config="config"
          style="width: 377px; height: 85%"
        />
      </div>
    </div>
    <!-- å•个工程 -->
    <div class="rightContainer" v-if="currentDisplay == '工程'">
      <div class="current1">
        <div class="aside-title">数据存储量</div>
        <base-line-chart
          title="数据存储量"
          :project="currentProject"
          :params="params"
        ></base-line-chart>
      </div>
      <div class="current1">
        <div class="aside-title">数据下载次数</div>
        <base-pie-chart
          height="90%"
          :project="currentProject"
          :params="params"
        ></base-pie-chart>
      </div>
      <div class="current1">
        <div class="aside-title">管道条数</div>
        <div class="content" style="height: 30px">
          <div class="header">
            <div>格式</div>
            <div>数量</div>
          </div>
          <file-format></file-format>
        </div>
        <file-format :params="params"></file-format>
      </div>
    </div>
    <div
      class="rightContainer2"
      v-if="CourtyDisplay && currentProject =='全球项目'"
    >
      <div class="current1">
        <div class="aside-title">项目数量柱状图</div>
        <country-dimension-bar ref="barRef"></country-dimension-bar>
      </div>
      <div class="current1">
        <div class="aside-title">项目数量饼状图</div>
        <country-dimension-pie ref="pieRef"></country-dimension-pie>
      </div>
    </div>
    <div class="rightContainer2" v-if="CourtyDisplay && currentProject =='全国项目'">
      <div class="current1">
        <div class="aside-title">项目数量柱状图</div>
        <province-dimension-bar ref="barRef"></province-dimension-bar>
      </div>
      <div class="current1">
        <div class="aside-title">项目数量饼状图</div>
        <province-dimension-pie ref="pieRef"></province-dimension-pie>
      </div>
    </div>
    <div class="rightarrow">
      <img :src="RightImg" @click="ChangeRight" />
    </div>
@@ -54,7 +111,18 @@
import CountryDimensionPie from "../chart/CountryDimensionPie.vue"
import ProvinceDimensionBar from "../chart/CountryProvinceBar.vue"
import ProvinceDimensionPie from "../chart/CountryProvincePie.vue"
import { countCountryDimension, countProvinceDimension } from "@/api/screen.js"
import ServiceGet from "../chart/ServiceGet.vue"
import BaseBarChart from "../chart/BaseBarChart.vue"
import BaseLineChart from "../chart/BaseLineChart.vue"
import BasePieChart from "../chart/BasePieChart .vue"
import VisitCount from "../chart/VisitCount.vue"
import {
  countCountryDimension,
  countProvinceDimension,
  countZhPipeStations,
  countDownloads,
} from "@/api/screen.js"
export default {
  components: {
@@ -66,25 +134,125 @@
    CountryDimensionBar,
    CountryDimensionPie,
    ProvinceDimensionBar,
    ProvinceDimensionPie
    ProvinceDimensionPie,
    ServiceGet,
    BaseBarChart,
    BaseLineChart,
    BasePieChart,
    VisitCount,
  },
  data() {
    return {
      ChartDisplay: true,
      CourtyDisplay: false,
      PipeDisPlay: false,
      RightImg: require("../../assets/img/Screen/leftArrow.png"),
      leftMessage: "init",
      currentProject: "全球项目",
      currentDisplay: "大屏",
      countryData: [],
      provinceData: [],
      config: {
        data: [
          {
            name: "南阳",
            value: 167,
          },
          {
            name: "周口",
            value: 123,
          },
          {
            name: "漯河",
            value: 98,
          },
          {
            name: "郑州",
            value: 75,
          },
          {
            name: "西峡",
            value: 66,
          },
        ],
        showValue: true,
      },
      pieconfig: {
        data: [
          {
            name: "周口",
            value: 55,
          },
          {
            name: "南阳",
            value: 120,
          },
          {
            name: "西峡",
            value: 78,
          },
          {
            name: "驻马店",
            value: 66,
          },
          {
            name: "新乡",
            value: 80,
          },
        ],
        lineWidth: 10,
      },
      barConfig: {
        data: [
          {
            name: "南阳",
            value: 167,
          },
          {
            name: "周口",
            value: 123,
          },
          {
            name: "漯河",
            value: 98,
          },
          {
            name: "郑州",
            value: 75,
          },
          {
            name: "西峡",
            value: 66,
          },
        ],
        showValue: true,
      },
      params: {},
    }
  },
  created() {
    this.getZhPipeStations()
    this.getCountDownloads()
  },
  mounted() {
    this.OpenLeftInit()
    this.$bus.$on("changeProject", name => {
      if (name.includes("全球管网") || name.includes("全国管网")) {
        this.currentDisplay = "管网"
      } else if (name.includes("全球项目") || name.includes("全国项目")) {
        this.currentDisplay = "项目"
      } else {
        this.currentDisplay = "工程"
      }
      this.currentProject = name
    })
    this.$bus.$on("changeProjectCode", code => {
      this.params = {
        projectCode: code,
      }
    })
  },
  methods: {
    ChangeRight() {
      if (this.leftMessage == "init") {
@@ -96,20 +264,21 @@
        this.ChartDisplay = !this.ChartDisplay
      }
      if (this.leftMessage == "projectree") {
        if (this.CourtyDisplay) {
          this.RightImg = require("../../assets/img/Screen/leftArrow.png")
        } else {
          this.RightImg = require("../../assets/img/Screen/rightArrow.png")
        }
        this.CourtyDisplay = !this.CourtyDisplay
      }
      // if (this.leftMessage == "projectree") {
      //   if (this.CourtyDisplay) {
      //     this.RightImg = require("../../assets/img/Screen/leftArrow.png")
      //   } else {
      //     this.RightImg = require("../../assets/img/Screen/rightArrow.png")
      //   }
      //   this.CourtyDisplay = !this.CourtyDisplay
      // }
      // this.ChartDisplay = !this.ChartDisplay
      this.$parent.ChangeWidth("right")
    },
    //打开大屏左侧界面
    OpenLeftInit() {
      this.currentDisplay = "大屏"
      this.ChartDisplay = true
      this.CourtyDisplay = false
      this.leftMessage = "init"
@@ -118,11 +287,50 @@
    },
    //打开工程树
    OpenLeftProjectTree() {
      this.ChartDisplay = false
      this.CourtyDisplay = true
      this.leftMessage = "projectree"
      this.$parent.ChangeWidth("leftTree")
    // OpenLeftProjectTree() {
    //   this.ChartDisplay = false
    //   this.CourtyDisplay = true
    //   this.leftMessage = "projectree"
    //   this.$parent.ChangeWidth("leftTree")
    // },
    async getZhPipeStations() {
      const res = await countZhPipeStations()
      if (res.code == 200) {
        const data = res.result
        this.pieconfig.data = res.result.map(item => {
          return {
            name: item.输送介质,
            value: item.管道数量,
          }
        })
        this.pieconfig = {
          ...this.pieconfig,
        }
        this.config.data = res.result.map(item => {
          return {
            name: item.输送介质,
            value: item.管道数量,
          }
        })
        this.config = {
          ...this.config,
        }
      }
    },
    async getCountDownloads() {
      const res = await countDownloads()
      if (res.code == 200) {
        this.barConfig.data = res.result.map(item => {
          return {
            name: item.typename,
            value: item.count,
          }
        })
        this.barConfig = {
          ...this.barConfig,
        }
      }
    },
  },
}
@@ -135,6 +343,7 @@
  flex-direction: row;
  align-items: center;
  justify-content: center;
  .rightarrow {
    width: 36px;
    height: 100%;
@@ -150,7 +359,6 @@
  .rightContainer {
    height: 100%;
    width: calc(100% - 45px);
    display: flex;
    flex-direction: column;
    align-items: center;
@@ -173,27 +381,27 @@
    .current1 {
      margin-top: 10px;
      margin-bottom: 30px;
      height: 32%;
      height: 30%;
      width: 100%;
      background: url(../../assets/img/Screen/chartbg.png);
      background-size: 100% 100%;
      background-repeat: no-repeat;
    }
  }
}
.content {
  width: 100%;
  background: url(../../assets/img/Screen/contentBg.png);
  background-size: 100% 100%;
  background-repeat: no-repeat;
  .header {
    margin: 0px auto;
    padding: 10px 0;
    width: 80%;
    display: flex;
    justify-content: space-between;
    color: #fff;
    font-size: 13px;
  .content {
    width: 100%;
    background: url(../../assets/img/Screen/contentBg.png);
    background-size: 100% 100%;
    background-repeat: no-repeat;
    .header {
      margin: 0px auto;
      padding: 10px 0;
      width: 80%;
      display: flex;
      justify-content: space-between;
      color: #fff;
      font-size: 13px;
    }
  }
}
</style>
src/components/Screen/top.vue
@@ -1,21 +1,25 @@
<template>
  <div class="top">
    <div class="topleft">
      <div
      <!-- <div
        class="topleft1"
        :class="currView == 'chart' ? 'active' : ''"
        @click="OpenInitChart"
      >
        <img src="../../assets/img/Screen/bigST.png" />
        <span>大屏视图</span>
      </div>
      <div
      </div> -->
      <!-- <div
        class="topleft1"
        @click="OpenProjectree"
        :class="currView == 'tree' ? 'active' : ''"
      >
        <img src="../../assets/img/Screen/ptree.png" />
        <span>工程项目</span>
      </div> -->
      <div class="topleft__curr">
        <img src="../../assets/img/Screen/ptree.png" />
        <span :title="currentProject">{{ currentProject }}</span>
      </div>
    </div>
    <div class="topCenter">
@@ -23,9 +27,14 @@
    </div>
    <div class="topRight">
      <div
        class="topright1 toprightC"
        @click="ReturnLast"
        class="topright1"
        :class="currView == 'chart' ? 'active' : ''"
        @click="OpenInitChart"
      >
        <img src="../../assets/img/Screen/bigST.png" />
        <span>返回大屏</span>
      </div>
      <div class="topright1 toprightC" @click="ReturnLast">
        <img src="../../assets/img/Screen/return.png" />
        <span>返回上级</span>
      </div>
@@ -39,18 +48,21 @@
      tree: false,
      screen: false,
      currView: "chart",
      currentProject: "大屏视图",
    }
  },
  mounted() {
    this.$bus.$on('changeProject', name => {
      if (name == '全国项目' || name == '全球项目') {
        this.OpenProjectree()
      }
    this.$bus.$on("changeProject", name => {
      // if (name == '全国项目' || name == '全球项目') {
      //   this.OpenProjectree()
      // }
      this.currView = "tree"
      this.currentProject = name
    })
  },
  methods: {
    ReturnLast() {
      sessionStorage.setItem("changeSelectStyle", 1);
      sessionStorage.setItem("changeSelectStyle", 1)
      this.$router.push("/Synthesis")
    },
@@ -60,6 +72,7 @@
      this.screen = true
      this.$parent.$refs.mapleft.OpenLeftInit()
      this.$parent.$refs.mapright.OpenLeftInit()
      this.currentProject = "大屏视图"
    },
    //打开工程树
@@ -68,7 +81,6 @@
      this.currView = "tree"
      this.$parent.$refs.mapleft.OpenLeftProjectTree()
      this.$parent.$refs.mapright.OpenLeftProjectTree()
    },
  },
}
@@ -88,8 +100,24 @@
    display: flex;
    flex-direction: row;
    align-items: flex-end;
    justify-content: space-around;
    // justify-content: space-around;
    cursor: pointer;
    .topleft__curr {
      // overflow: hidden;
      text-overflow: ellipsis;
      white-space: nowrap;
      height: 36px;
      border-radius: 4px;
      background-image: url(../../assets/img/Screen/btnbg.png);
      background-repeat: no-repeat;
      background-size: 100% 100%;
      display: flex;
      align-items: center;
      margin-left: 5%;
      span {
        padding-right: 10px;
      }
    }
    .topleft1 {
      width: 127px;
      height: 36px;
@@ -100,6 +128,7 @@
      background-size: 100% 100%;
      display: flex;
      align-items: center;
      margin-left: 10%;
    }
    .active {
      background-image: url(../../assets/img/Screen/btnc.png);
@@ -143,13 +172,19 @@
    .topright1 {
      width: 131px;
      height: 40px;
      background-image: url(../../assets/img/Screen/btnc.png);
      background-image: url(../../assets/img/Screen/btnbg.png);
      background-repeat: no-repeat;
      background-size: 100% 100%;
      display: flex;
      align-items: center;
      margin-right: 10%;
      &.active {
        background-image: url(../../assets/img/Screen/btnc.png);
        background-repeat: no-repeat;
        background-size: 100% 100%;
      }
    }
    .toprightC {
      width: 131px;
      height: 40px;
src/components/chart/BaseBarChart.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,376 @@
<template>
  <div class="barchar" ref="chart"></div>
</template>
<script>
import * as echarts from "echarts"
import {
  countCountryDimension,
  countProvinceDimension,
  countZhPipeStations,
} from "@/api/screen.js"
export default {
  props: {
    width: {
      type: String,
      default: "100%",
    },
    height: {
      type: String,
      default: "100%",
    },
    autoResize: {
      type: Boolean,
      default: true,
    },
    // option: {
    //   type: Object,
    //   required: true
    // },
    type: {
      type: String,
      default: "canvas",
    },
    project: {
      type: String,
      default: "全国项目",
    },
    title: {
      type: String,
      default: "",
    },
  },
  data() {
    return {
      chart: null,
      dataList: [],
    }
  },
  computed: {
    option() {
      let data = [
        {
          country: "苏丹",
          count: 1,
        },
        {
          country: "印度尼西亚",
          count: 1,
        },
        {
          country: "阿联酋",
          count: 1,
        },
        {
          country: "乌兹别克斯坦",
          count: 1,
        },
        {
          country: "哈萨克斯坦",
          count: 2,
        },
        {
          country: "委内瑞拉",
          count: 1,
        },
        {
          country: "斯里兰卡",
          count: 1,
        },
        {
          country: "中国",
          count: 17,
        },
        {
          country: "其他",
          count: 1,
        },
        {
          country: "土库曼斯坦",
          count: 1,
        },
        {
          country: "新加坡",
          count: 1,
        },
      ]
      let xAxisData = []
      let yAxisData = []
      if (this.dataList) {
        data = this.dataList
      }
      let count = 0
      let countVal = 0
      const title = this.title
      data.forEach(item => {
        let name = item.province || item.country || item.输送介质
        let value = item.count || item.站场数量
        if (title == "站场座数" && item.管道数量) {
          count += item.管道数量
        } else {
          count += item.count || 0
        }
        // switch (title) {
        //   case "站场座数":
        //     countVal = item.管道数量
        //     break
        //   case "项目个数":
        //     countVal = item.count
        //     break
        // }
        xAxisData.push(name)
        yAxisData.push(value)
      })
      console.log("管道数量", countVal)
      if (typeof count === "number") {
        this.$bus.$emit("changeCount", count)
      }
      let option = {
        backgroundColor: "transparent",
        tooltip: {
          trigger: "axis",
          axisPointer: {
            type: "shadow",
          },
        },
        grid: {
          top: "12%",
          right: "0%",
          left: "0%",
          bottom: "13%",
          containLabel: true,
        },
        xAxis: [
          {
            type: "category",
            data: xAxisData,
            axisLine: {
              lineStyle: {
                color: "rgba(255,255,255,0.12)",
              },
            },
            interval: 0,
            axisLabel: {
              margin: 10,
              color: "#e2e9ff",
              textStyle: {
                fontSize: 11,
              },
              formatter: function (value) {
                //
                var ret = "" //拼接加\n返回的类目项
                var maxLength = 2 //每项显示文字个数
                var valLength = value.length //X轴类目项的文字个数
                var rowN = Math.ceil(valLength / maxLength) //类目项需要换行的行数
                if (xAxisData.length < 7) {
                  return value
                }
                if (rowN > 1) {
                  //如果类目项的文字大于3,
                  for (var i = 0; i < rowN; i++) {
                    var temp = "" //每次截取的字符串
                    var start = i * maxLength //开始截取的位置
                    var end = start + maxLength //结束截取的位置
                    //这里也可以加一个是否是最后一行的判断,但是不加也没有影响,那就不加吧
                    temp = value.substring(start, end) + "\n"
                    ret += temp //凭借最终的字符串
                  }
                  return ret
                } else {
                  return value
                }
              },
            },
          },
        ],
        yAxis: [
          {
            axisLabel: {
              formatter: "{value}",
              color: "#e2e9ff",
            },
            axisLine: {
              show: false,
            },
            splitLine: {
              lineStyle: {
                color: "rgba(255,255,255,0.12)",
              },
            },
          },
        ],
        series: [
          {
            name: this.title,
            type: "bar",
            data: yAxisData,
            barWidth: "12px",
            itemStyle: {
              normal: {
                color: new echarts.graphic.LinearGradient(
                  0,
                  0,
                  0,
                  1,
                  [
                    {
                      offset: 0,
                      color: "rgba(0,244,255,1)", // 0% å¤„的颜色
                    },
                    {
                      offset: 1,
                      color: "rgba(0,77,167,1)", // 100% å¤„的颜色
                    },
                  ],
                  false
                ),
                barBorderRadius: [20, 20, 0, 0],
                shadowColor: "rgba(0,160,221,1)",
                shadowBlur: 4,
              },
            },
            label: {
              normal: {
                show: true,
                lineHeight: 14,
                width: 40,
                height: 14,
                backgroundColor: "rgba(0,160,221,0.1)",
                borderRadius: 200,
                position: ["-8", "-20"],
                distance: 1,
                formatter: value => {
                  // console.log(value);
                  if (value.name == "中国") {
                    return [
                      `    {d|●}", " {a|${value.value}}     \n", "    {b|}`,
                    ].join(",")
                  }
                },
                // formatter: ["    {d|●}", " {a|{c}}     \n", "    {b|}"].join(
                //   ","
                // ),
                rich: {
                  d: {
                    color: "#3CDDCF",
                  },
                  a: {
                    color: "#fff",
                    align: "center",
                  },
                  b: {
                    width: 1,
                    height: 15,
                    borderWidth: 1,
                    borderColor: "#234e6c",
                    align: "left",
                  },
                },
              },
            },
          },
        ],
      }
      return option
    },
  },
  watch: {
    option: {
      deep: true,
      handler(newVal) {
        this.setOptions(newVal)
      },
    },
    project: {
      deep: true,
      immediate: true,
      handler(newVal) {
        let requsetFn = null
        switch (newVal) {
          case "全球项目":
            requsetFn = countCountryDimension
            break
          case "全国项目":
            requsetFn = countProvinceDimension
            break
          case "全球管网图":
            requsetFn = countZhPipeStations
            break
          case "全国管网图":
            requsetFn = countZhPipeStations
            break
          default:
            break
        }
        requsetFn && this.initData(requsetFn)
        this.setOptions(this.option)
      },
    },
  },
  mounted() {
    // this.initData()
    this.initChart()
    if (this.autoResize) {
      window.addEventListener("resize", this.resizeHandler)
    }
  },
  beforeDestroy() {
    if (!this.chart) {
      return
    }
    if (this.autoResize) {
      window.removeEventListener("resize", this.resizeHandler)
    }
    this.chart.dispose()
    this.chart = null
  },
  methods: {
    resizeHandler() {
      this.chart && this.chart.resize()
    },
    initChart() {
      this.chart = echarts.init(this.$refs.chart, "", {
        renderer: this.type,
      })
      this.chart.setOption(this.option)
      this.chart.on("click", this.handleClick)
    },
    handleClick(params) {
      this.$emit("click", params)
    },
    setOptions(option) {
      this.clearChart()
      this.resizeHandler()
      if (this.chart) {
        this.chart.setOption(option)
      }
    },
    refresh() {
      this.setOptions(this.option)
    },
    clearChart() {
      this.chart && this.chart.clear()
    },
    async initData(requsetFn = countCountryDimension) {
      const res = await requsetFn()
      if (res.code == 200) {
        this.dataList = res.result
        console.log("requsetFn", res)
      }
    },
  },
}
</script>
<style lang="scss" scoped>
.barchar {
  width: 100%;
  height: 100%;
}
</style>
src/components/chart/BaseLineChart.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,261 @@
<template>
  <div class="linechar" ref="chart"></div>
</template>
<script>
import * as echarts from "echarts"
import {
  countCountryDimension,
  countProvinceDimension,
  GetServicesVisitsCount,
  countZhPipeMapLength,
  countLargeCategories,
  countProjectType,
  countProjectDown,
  countProjectTypeNumber,
  countStorageByProject,
} from "@/api/screen.js"
export default {
  props: {
    width: {
      type: String,
      default: "100%",
    },
    height: {
      type: String,
      default: "100%",
    },
    autoResize: {
      type: Boolean,
      default: true,
    },
    // option: {
    //   type: Object,
    //   required: true
    // },
    type: {
      type: String,
      default: "canvas",
    },
    project: {
      type: String,
      default: "全国项目",
    },
    params: {
      type: Object,
      default: () => null,
    },
    project: {
      type: String,
      default: "全国项目",
    },
    title: {
      type: String,
      default: "",
    },
  },
  data() {
    return {
      chart: null,
      dataList: [],
    }
  },
  computed: {
    option() {
      let xAxis = []
      let yAxis = []
      const proObj = this.dataList.find(item => item.项目名称 == this.project)
      if (proObj) {
        Object.keys(proObj).forEach(item => {
          if (item.toString() != '项目名称') {
            xAxis.push(item)
            yAxis.push(proObj[item])
          }
        })
      } else {
        this.dataList.forEach(item => {
          let type = item.type || item.projtype
          xAxis.push(type)
          yAxis.push(item.count)
        })
      }
      // let data = [220, 182, 191, 234, 290, 330, 310]
      // const sideData = data.map(item => {
      //   return {
      //     name: item.name,
      //     value: item.number,
      //   }
      // })
      let option = {
        tooltip: {
          trigger: "axis",
        },
        grid: {
          right: "5%",
          top: "10%",
          left: "5%",
          bottom: "17%",
          containLabel: true,
        },
        xAxis: {
          type: "category",
          boundaryGap: true,
          axisLine: {
            lineStyle: {
              color: "#fff",
            },
            show: false,
          },
          nameRotate: 45,
          axisTick: {
            show: false,
            alignWithLabel: true,
          },
          axisLabel: {
            fontFamily: "PingFangSC-Regular",
          },
          data: xAxis,
        },
        yAxis: {
          axisLine: {
            show: false,
            lineStyle: {
              color: "#fff",
            },
          },
          axisLabel: {
            fontFamily: "Roboto-Regular",
          },
          axisTick: {
            show: false,
          },
          // åˆ†å‰²çº¿
          splitLine: {
            lineStyle: {
              color: "#5d7289",
              width: 1,
              type: "dashed",
            },
          },
          type: "value",
        },
        series: [
          {
            name: this.title,
            type: "line",
            showAllSymbol: false,
            lineStyle: {
              color: "#2579D8",
            },
            itemStyle: {
              color: "#2579D8",
            },
            smooth: 0.2,
            data: yAxis,
          },
        ],
      }
      return option
    },
  },
  watch: {
    option: {
      deep: true,
      handler(newVal) {
        this.setOptions(newVal)
      },
    },
    project: {
      deep: true,
      immediate: true,
      handler(newVal) {
        let requsetFn = null
        switch (newVal) {
          case "全球项目":
            requsetFn = countProjectTypeNumber
            break
          case "全国项目":
            requsetFn = countProjectTypeNumber
            break
          case "全球管网图":
            requsetFn = countZhPipeMapLength
            break
          case "全国管网图":
            requsetFn = countZhPipeMapLength
            break
          default:
            requsetFn = countStorageByProject
            break
        }
        requsetFn && this.initData(requsetFn)
        this.setOptions(this.option)
      },
    },
  },
  mounted() {
    // this.initData()
    this.initChart()
    if (this.autoResize) {
      window.addEventListener("resize", this.resizeHandler)
    }
  },
  beforeDestroy() {
    if (!this.chart) {
      return
    }
    if (this.autoResize) {
      window.removeEventListener("resize", this.resizeHandler)
    }
    this.chart.dispose()
    this.chart = null
  },
  methods: {
    resizeHandler() {
      this.chart && this.chart.resize()
    },
    initChart() {
      this.chart = echarts.init(this.$refs.chart, "", {
        renderer: this.type,
      })
      this.chart.setOption(this.option)
      this.chart.on("click", this.handleClick)
    },
    handleClick(params) {
      this.$emit("click", params)
    },
    setOptions(option) {
      this.clearChart()
      this.resizeHandler()
      if (this.chart) {
        this.chart.setOption(option)
      }
    },
    refresh() {
      this.setOptions(this.option)
    },
    clearChart() {
      this.chart && this.chart.clear()
    },
    async initData(requsetFn = GetServicesVisitsCount) {
      const res = await requsetFn(this.params)
      if (res.code == 200) {
        this.dataList = res.result
        console.log("requsetFn", res)
      }
    },
  },
}
</script>
<style lang="scss" scoped>
.linechar {
  width: 100%;
  height: 100%;
}
</style>
src/components/chart/BasePieChart .vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,310 @@
<template>
  <div class="piechar" ref="chart"></div>
</template>
<script>
import * as echarts from "echarts"
import {
  countCountryDimension,
  countProvinceDimension,
  countProjectStorage,
} from "@/api/screen.js"
export default {
  props: {
    width: {
      type: String,
      default: "100%",
    },
    height: {
      type: String,
      default: "100%",
    },
    autoResize: {
      type: Boolean,
      default: true,
    },
    // option: {
    //   type: Object,
    //   required: true
    // },
    type: {
      type: String,
      default: "canvas",
    },
    project: {
      type: String,
      default: "全国项目",
    },
    params: {
      type: Object,
      default: () => null,
    },
  },
  data() {
    return {
      chart: null,
      dataList: [],
    }
  },
  computed: {
    option() {
      let echartData = []
      let data = []
      let xAxisData = []
      let yAxisData = []
      let count = 0
      if (this.dataList) {
        data = this.dataList
        echartData = data.map(item => {
          let name = item.province || item.country || item.name
          // xAxisData.push(name)
          // yAxisData.push(item.count)
          count += item.count
          return {
            name: name,
            value: item.count,
          }
        })
      }
      var scale = 1
      var rich = {
        yellow: {
          color: "#ffc72b",
          fontSize: 18 * scale,
          padding: [4, 4],
          align: "center",
        },
        total: {
          color: "#ffc72b",
          fontSize: 40 * scale,
          align: "center",
        },
        white: {
          color: "#fff",
          align: "center",
          fontSize: 14 * scale,
          padding: [4, 0],
        },
        blue: {
          color: "#49dff0",
          fontSize: 16 * scale,
          align: "center",
        },
        hr: {
          borderColor: "#0b5263",
          width: "100%",
          borderWidth: 1,
          height: 0,
        },
      }
      let option = {
        backgroundColor: "transparent",
        grid: {
          left: "1%", // ä¸Žå®¹å™¨å·¦ä¾§çš„距离
          right: "1%", // ä¸Žå®¹å™¨å³ä¾§çš„距离
          top: "1%", // ä¸Žå®¹å™¨é¡¶éƒ¨çš„距离
          bottom: "10%", // ä¸Žå®¹å™¨åº•部的距离
          containLabel: true,
        },
        title: {
          text: "总数",
          left: "center",
          top: "45%",
          padding: [0, 0],
          textStyle: {
            color: "#fff",
            fontSize: 18 * scale,
            align: "center",
          },
          subtext: count,
          subtextStyle: {
            align: "center",
            fontSize: 20,
            color: "#ffc72b",
            fontWeight: 400,
            fontFamily: "YouSheBiaoTiHei",
          },
        },
        // legend: {
        //   selectedMode: false,
        //   formatter: function (name) {
        //     var total = 0
        //     return "{total|" + total + "}"
        //   },
        //   data: [],
        //   // itemGap: 50,
        //   left: "center",
        //   top: "center",
        //   icon: "none",
        //   align: "center",
        //   textStyle: {
        //     color: "#fff",
        //     fontSize: 16 * scale,
        //     rich: rich,
        //   },
        // },
        series: [
          {
            name: "",
            type: "pie",
            radius: ["42%", "50%"],
            hoverAnimation: false,
            color: [
              "#c487ee",
              "#deb140",
              "#49dff0",
              "#034079",
              "#6f81da",
              "#00ffb4",
              "#3087d6",
              "#f6ce54",
              "#4be1ff",
              "#b6e9ff",
              "#18edc9",
              "#6ac5fa",
            ],
            minAngle: 15,
            startAngle: 270,
            label: {
              normal: {
                formatter: function (params, ticket, callback) {
                  var total = 0 //考生总数量
                  var percent = 0 //考生占比
                  echartData.forEach(function (value, index, array) {
                    total += value.value
                  })
                  percent = ((params.value / total) * 100).toFixed(1)
                  return (
                    "{white|" +
                    params.name +
                    "}\n{hr|}\n{yellow|" +
                    params.value +
                    "} {blue|" +
                    percent +
                    "%}"
                  )
                },
                rich: rich,
              },
            },
            labelLine: {
              normal: {
                length: 30,
                length2: 0,
                lineStyle: {
                  color: "#0b5263",
                },
              },
            },
            data: echartData,
          },
        ],
      }
      return option
    },
  },
  watch: {
    option: {
      deep: true,
      handler(newVal) {
        this.setOptions(newVal)
      },
    },
    project: {
      deep: true,
      immediate: true,
      handler(newVal) {
        let requsetFn = null
        switch (newVal) {
          case "全球项目":
            requsetFn = countCountryDimension
            break
          case "全国项目":
            requsetFn = countProvinceDimension
            break
          case "全球管网图":
            requsetFn = countProvinceDimension
            break
          case "全国管网图":
            requsetFn = countProvinceDimension
            break
          default:
            requsetFn = countProjectStorage
            break
        }
        requsetFn && this.initData(requsetFn)
        this.setOptions(this.option)
      },
    },
  },
  created() {
    // this.initData()
  },
  mounted() {
    this.initChart()
    if (this.autoResize) {
      window.addEventListener("resize", this.resizeHandler)
    }
  },
  beforeDestroy() {
    if (!this.chart) {
      return
    }
    if (this.autoResize) {
      window.removeEventListener("resize", this.resizeHandler)
    }
    this.chart.dispose()
    this.chart = null
  },
  methods: {
    resizeHandler() {
      this.chart && this.chart.resize()
    },
    initChart() {
      this.chart = echarts.init(this.$refs.chart, "", {
        renderer: this.type,
      })
      this.chart.setOption(this.option)
      this.chart.on("click", this.handleClick)
    },
    handleClick(params) {
      this.$emit("click", params)
    },
    setOptions(option) {
      this.clearChart()
      this.resizeHandler()
      if (this.chart) {
        this.chart.setOption(option)
      }
    },
    refresh() {
      this.setOptions(this.option)
    },
    clearChart() {
      this.chart && this.chart.clear()
    },
    async initData(requsetFn) {
      const res = await requsetFn(this.params)
      if (res.code == 200) {
        this.dataList = res.result
        console.log("requsetFn", res)
      }
    },
  },
}
</script>
<style lang="scss" scoped>
.piechar {
  width: 100%;
  height: 85%;
}
</style>
src/components/chart/CountryDimensionPie.vue
@@ -287,6 +287,6 @@
<style lang="scss" scoped>
.echart {
  width: 100%;
  height: 100%;
  height: 85%;
}
</style>
src/components/chart/CountryProvincePie.vue
@@ -289,6 +289,6 @@
<style lang="scss" scoped>
.echart {
  width: 100%;
  height: 100%;
  height: 85%;
}
</style>
src/components/chart/DataStorage.vue
@@ -2,12 +2,7 @@
  <div class="data-storage">
    <div class="data-storage__header">
      <div class="text">
        <img
          class="img"
          src="@/assets/img/Screen/cunchu.png"
          alt=""
          srcset=""
        />
        <img class="img" src="@/assets/img/Screen/cunchu.png" alt="" srcset="" />
        <div class="title">共存储文件数量</div>
      </div>
      <div class="num">
@@ -16,8 +11,30 @@
      </div>
    </div>
    <div class="data-storage__content">
      <!-- <dv-scroll-board :config="config" style="width: 330px; height: 220px" /> -->
      <el-scrollbar class="scrollbar">
      <ul class="contentTitle">
        <li class="title">编号</li>
        <li class="name">名称</li>
        <li class="num">文件数</li>
      </ul>
      <div class="scroolData">
        <vue-seamless-scroll :data="tableData" class="ClassScroll" :class-option="defaultOption">
<ul class="item">
  <li v-for="(item, index) in tableData" :key="index">
    <span class="title">
      <div>{{ item.index }}</div></span>
    <span class="name"  :title="item.name">{{ item.name.substring(0, 15) }}</span>
    <span class="num">{{ item.num }}</span>
  </li>
</ul>
</vue-seamless-scroll>
      </div>
    </div>
  </div>
  <!-- <dv-scroll-board :config="config" style="width: 330px; height: 220px" /> -->
  <!-- <el-scrollbar class="scrollbar">
        <el-table
          :data="tableData"
          :row-style="{ background: 'rgba(135,180,248,0.10)' }"
@@ -60,21 +77,23 @@
          <el-table-column prop="num" label="文件数" width="70">
          </el-table-column>
        </el-table>
      </el-scrollbar>
    </div>
  </div>
      </el-scrollbar> -->
</template>
<script>
import vueSeamlessScroll from 'vue-seamless-scroll'
import { countDataStorage } from "@/api/screen.js"
export default {
  components: {
    vueSeamlessScroll
  },
  data() {
    return {
      tableData: [
        {
          date: "2016-05-02",
          name: "王小虎",
          address: "上海市普陀区金沙江路 1518 å¼„",
          address: "上海市普陀区金沙江路 1518 å·",
        },
        {
          date: "2016-05-04",
@@ -120,6 +139,22 @@
      },
    }
  },
  computed: {
    defaultOption() {
      return {
        step: 0.2, // æ•°å€¼è¶Šå¤§é€Ÿåº¦æ»šåŠ¨è¶Šå¿«
        limitMoveNum: this.tableData.length, // å¼€å§‹æ— ç¼æ»šåŠ¨çš„æ•°æ®é‡ this.dataList.length
        hoverStop: true, // æ˜¯å¦å¼€å¯é¼ æ ‡æ‚¬åœstop
        direction: 1, // 0向下 1向上 2向左 3向右
        openWatch: true, // å¼€å¯æ•°æ®å®žæ—¶ç›‘控刷新dom
        singleHeight: 0, // å•步运动停止的高度(默认值0是无缝不停止的滚动) direction => 0/1
        singleWidth: 0, // å•步运动停止的宽度(默认值0是无缝不停止的滚动) direction => 2/3
        waitTime: 1000, // å•步运动停止的时间(默认值1000ms)
      };
    },
  },
  created() {
    this.initTable()
  },
@@ -148,79 +183,239 @@
<style lang="scss" scoped>
.data-storage {
  margin: 10px;
  width: 377px;
  &__header {
    margin-bottom: 10px;
  height: calc(100% - 30px);
  width: 100%;
}
.data-storage__header {
  height: 40px;
  width: 100%;
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  .text {
    display: flex;
    align-items: center;
    justify-content: space-between;
    height: 20px;
    width: 340px;
    box-sizing: border-box;
    .text {
  }
  .title {
    font-family: Source Han Sans CN, Source Han Sans CN-Regular;
    color: #ffffff;
  }
  .img {
    margin-right: 4px;
    width: 16px;
    height: 16px;
  }
  .num {
    display: flex;
    align-items: center;
    justify-content: center;
  }
}
.data-storage__content {
  height: calc(100% - 40px);
  width: 100%;
  .contentTitle {
    height: 40px;
    width: 100%;
    display: flex;
    background-color: rgba(52,78,147,.5);
    flex-direction: row;
    li {
      align-items: center;
      justify-content: space-around;
      color: #FFFFFF;
    }
    .title {
      width: 15%;
      height: 100%;
      display: flex;
      align-items: center;
      justify-content: center;
    }
    .title {
      font-family: Source Han Sans CN, Source Han Sans CN-Regular;
      color: #ffffff;
    }
    .img {
      margin-right: 4px;
      width: 16px;
      height: 16px;
    .name {
      width: 60%;
      height: 100%;
      display: flex;
      align-items: center;
      justify-content: center;
    }
    .value {
      text-align: center;
      color: #ffffff;
      width: 16px;
      height: 20px;
      background: url("~@/assets/img/Screen/numBg.png");
      background-size: 100% 100%;
    .num {
      width: 25%;
      height: 100%;
      display: flex;
      align-items: center;
      justify-content: center;
    }
  }
  &__content {
    width: 95%;
    height: 220px;
  }
}
</style>
.scroolData{
  height: calc(100% - 40px);
  width: 100%;
  overflow: hidden;
}
.ClassScroll {
  height:100%;
  width: 100%;
  .item {
    width: 100%;
    height: 100%;
    color: #ffffff;
    li {
      height: 40px;
      width: 100%;
      display: flex;
      flex-direction: row;
      align-items: center;
      justify-content: space-around;
      .title {
        width: 15%;
        height: 100%;
        display: flex;
        align-items: center;
        justify-content: center;
        div {
          height: 20px;
          width: 20px;
          background-color: #495477;
          display: flex;
          align-items: center;
          justify-content: center;
        }
      }
      .name {
        width: 60%;
        height: 100%;
        display: flex;
        align-items: center;
        justify-content: center;
      }
      .num {
        width: 25%;
        height: 100%;
        display: flex;
        align-items: center;
        justify-content: center;
      }
    }
  }
}
// .data-storage {
//   margin: 10px;
//   width: 377px;
//   &__header {
//     margin-bottom: 10px;
//     display: flex;
//     align-items: center;
//     justify-content: space-between;
//     height: 20px;
//     width: 340px;
//     box-sizing: border-box;
//     .text {
//       display: flex;
//       align-items: center;
//     }
//     .title {
//       font-family: Source Han Sans CN, Source Han Sans CN-Regular;
//       color: #ffffff;
//     }
//     .img {
//       margin-right: 4px;
//       width: 16px;
//       height: 16px;
//     }
//     .value {
//       text-align: center;
//       color: #ffffff;
//       width: 16px;
//       height: 20px;
//       background: url("~@/assets/img/Screen/numBg.png");
//       background-size: 100% 100%;
//     }
//   }
//   &__content {
//     width: 95%;
//     height: 220px;
//   }
// }
// </style>
<style lang="scss">
.data-storage {
  .index-wrap {
    margin: 0 auto;
    width: 14px;
    height: 14px;
    background: rgba(180, 188, 235, 0.25);
  }
  .scrollbar {
    width: 100%;
    overflow-x: hidden;
    height: 200px;
    .el-scrollbar__wrap {
      overflow-x: hidden;
    }
    .el-table {
      height: 100%;
      width: 100%;
      background-color: transparent;
      color: #fff;
    }
    .el-table th.el-table__cell.is-leaf,
    .el-table td.el-table__cell {
      border: none;
    }
    .el-table--group::after,
    .el-table--border::after,
    .el-table::before {
      border: none;
    }
    .el-table::before {
      height: 0;
    }
  }
}
</style>
// .data-storage {
//   .index-wrap {
//     margin: 0 auto;
//     width: 14px;
//     height: 14px;
//     background: rgba(180, 188, 235, 0.25);
//   }
//   .scrollbar {
//     width: 100%;
//     overflow-x: hidden;
//     height: 200px;
//     .el-scrollbar__wrap {
//       overflow-x: hidden;
//     }
//     .el-table {
//       height: 100%;
//       width: 100%;
//       background-color: transparent;
//       color: #fff;
//     }
//     .el-table th.el-table__cell.is-leaf,
//     .el-table td.el-table__cell {
//       border: none;
//     }
//     .el-table--group::after,
//     .el-table--border::after,
//     .el-table::before {
//       border: none;
//     }
//     .el-table::before {
//       height: 0;
//     }
//   }
// }</style>
src/components/chart/DataStorageType.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,429 @@
<template>
  <div class="data-storage">
    <div class="data-storage__header">
      <div class="text">
        <img
          class="img"
          src="@/assets/img/Screen/cunchu.png"
          alt=""
          srcset=""
        />
        <div class="title">共存储文件数量</div>
      </div>
      <div class="num">
        <dv-digital-flop :config="config1" style="width: 70px; height: 20px" />
        <!-- <div class="value">5</div> -->
      </div>
    </div>
    <div class="data-storage__content">
      <ul class="contentTitle">
        <li class="title">编号</li>
        <li class="name">名称</li>
        <li class="num">数量</li>
        <li class="size">文件大小(MB)</li>
      </ul>
      <div class="scroolData">
        <vue-seamless-scroll
          :data="tableData"
          class="ClassScroll"
          :class-option="defaultOption"
        >
          <ul class="item">
            <li v-for="(item, index) in tableData" :key="index">
              <span class="title">
                <div>{{ item.index }}</div></span
              >
              <span class="name" :title="item.name">{{
                item.name.substring(0, 15)
              }}</span>
              <span class="num">{{ item.num || 0 }}</span>
              <span class="size">{{ item.size || 0 }}</span>
            </li>
          </ul>
        </vue-seamless-scroll>
      </div>
    </div>
  </div>
  <!-- <dv-scroll-board :config="config" style="width: 330px; height: 220px" /> -->
  <!-- <el-scrollbar class="scrollbar">
        <el-table
          :data="tableData"
          :row-style="{ background: 'rgba(135,180,248,0.10)' }"
          :cell-style="{ background: 'rgba(135,180,248,0.10)' }"
          :header-row-style="{
            background: 'rgba(57,128,236,0.29)',
            color: '#fff',
          }"
          :header-cell-style="{
            background: 'rgba(57,128,236,0.29)',
            color: '#fff',
          }"
        >
          <el-table-column prop="index" label="编号" width="50">
            <template slot-scope="scope">
              <div
                style="
                  background: rgba(180, 188, 235, 0.25);
                  text-align: center;
                "
              >
                {{ scope.row.index }}
              </div>
            </template>
          </el-table-column>
          <el-table-column align="center" prop="name" label="名称">
            <template slot-scope="scope">
              <div
                style="
                  overflow: hidden;
                  text-overflow: ellipsis;
                  white-space: nowrap;
                "
                :title="scope.row.name"
              >
                {{ scope.row.name }}
              </div>
            </template>
          </el-table-column>
          <el-table-column prop="num" label="文件数" width="70">
          </el-table-column>
        </el-table>
      </el-scrollbar> -->
</template>
<script>
import vueSeamlessScroll from "vue-seamless-scroll"
import { countDataStorage, countLargeCategories } from "@/api/screen.js"
export default {
  components: {
    vueSeamlessScroll,
  },
  data() {
    return {
      tableData: [
        {
          date: "2016-05-02",
          name: "王小虎",
          address: "上海市普陀区金沙江路 1518 å·",
        },
        {
          date: "2016-05-04",
          name: "王小虎",
          address: "上海市普陀区金沙江路 1517 å¼„",
        },
        {
          date: "2016-05-01",
          name: "王小虎",
          address: "上海市普陀区金沙江路 1519 å¼„",
        },
        {
          date: "2016-05-03",
          name: "王小虎",
          address: "上海市普陀区金沙江路 1516 å¼„",
        },
      ],
      config: {
        header: ["编号", "名称", "文件数"],
        data: [
          ["行1列1", "行1列2", "行1列3"],
          ["行2列1", "行2列2", "行2列3"],
          ["行3列1", "行3列2", "行3列3"],
          ["行4列1", "行4列2", "行4列3"],
          ["行5列1", "行5列2", "行5列3"],
          ["行6列1", "行6列2", "行6列3"],
          ["行7列1", "行7列2", "行7列3"],
          ["行8列1", "行8列2", "行8列3"],
          ["行9列1", "行9列2", "行9列3"],
          ["行10列1", "行10列2", "行10列3"],
        ],
        columnWidth: [40, 300, 50],
        align: ["center"],
        carousel: "page",
      },
      config1: {
        number: [0],
        content: "{nt}个",
        style: {
          fontSize: 12,
          fill: "#00baff",
        },
      },
    }
  },
  computed: {
    defaultOption() {
      return {
        step: 0.2, // æ•°å€¼è¶Šå¤§é€Ÿåº¦æ»šåŠ¨è¶Šå¿«
        limitMoveNum: this.tableData.length, // å¼€å§‹æ— ç¼æ»šåŠ¨çš„æ•°æ®é‡ this.dataList.length
        hoverStop: true, // æ˜¯å¦å¼€å¯é¼ æ ‡æ‚¬åœstop
        direction: 1, // 0向下 1向上 2向左 3向右
        openWatch: true, // å¼€å¯æ•°æ®å®žæ—¶ç›‘控刷新dom
        singleHeight: 0, // å•步运动停止的高度(默认值0是无缝不停止的滚动) direction => 0/1
        singleWidth: 0, // å•步运动停止的宽度(默认值0是无缝不停止的滚动) direction => 2/3
        waitTime: 1000, // å•步运动停止的时间(默认值1000ms)
      }
    },
  },
  created() {
    this.initTable()
  },
  methods: {
    async initTable() {
      const res = await countLargeCategories()
      if (res.code == 200) {
        let count = 0
        this.tableData = res.result.map((item, i) => {
          count += item.count
          return {
            index: i + 1,
            name: item.name,
            num: item.count,
            sizes: item.sizes,
          }
        })
        this.config1.number = [count]
        this.config1 = {
          ...this.config1,
        }
      }
    },
  },
}
</script>
<style lang="scss" scoped>
.data-storage {
  height: calc(100% - 30px);
  width: 100%;
}
.data-storage__header {
  height: 40px;
  width: 100%;
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  .text {
    display: flex;
    align-items: center;
  }
  .title {
    font-family: Source Han Sans CN, Source Han Sans CN-Regular;
    color: #ffffff;
  }
  .img {
    margin-right: 4px;
    width: 16px;
    height: 16px;
  }
  .num {
    display: flex;
    align-items: center;
    justify-content: center;
  }
}
.data-storage__content {
  height: calc(100% - 40px);
  width: 100%;
  .contentTitle {
    height: 40px;
    width: 100%;
    display: flex;
    background-color: rgba(52, 78, 147, 0.5);
    flex-direction: row;
    li {
      align-items: center;
      justify-content: space-around;
      color: #ffffff;
    }
    .title {
      width: 15%;
      height: 100%;
      display: flex;
      align-items: center;
      justify-content: center;
    }
    .name {
      width: 60%;
      height: 100%;
      display: flex;
      align-items: center;
      justify-content: center;
    }
    .num {
      width: 25%;
      height: 100%;
      display: flex;
      align-items: center;
      justify-content: center;
    }
  }
}
.scroolData {
  height: calc(100% - 40px);
  width: 100%;
  overflow: hidden;
}
.ClassScroll {
  height: 100%;
  width: 100%;
  .item {
    width: 100%;
    height: 100%;
    color: #ffffff;
    li {
      height: 40px;
      width: 100%;
      display: flex;
      flex-direction: row;
      align-items: center;
      justify-content: space-around;
      .title {
        width: 15%;
        height: 100%;
        display: flex;
        align-items: center;
        justify-content: center;
        div {
          height: 20px;
          width: 20px;
          background-color: #495477;
          display: flex;
          align-items: center;
          justify-content: center;
        }
      }
      .name {
        width: 50%;
        height: 100%;
        display: flex;
        align-items: center;
        justify-content: center;
      }
      .num {
        width: 25%;
        height: 100%;
        display: flex;
        align-items: center;
        justify-content: center;
      }
      .size {
        width: 25%;
        height: 100%;
        display: flex;
        align-items: center;
        justify-content: center;
      }
    }
  }
}
// .data-storage {
//   margin: 10px;
//   width: 377px;
//   &__header {
//     margin-bottom: 10px;
//     display: flex;
//     align-items: center;
//     justify-content: space-between;
//     height: 20px;
//     width: 340px;
//     box-sizing: border-box;
//     .text {
//       display: flex;
//       align-items: center;
//     }
//     .title {
//       font-family: Source Han Sans CN, Source Han Sans CN-Regular;
//       color: #ffffff;
//     }
//     .img {
//       margin-right: 4px;
//       width: 16px;
//       height: 16px;
//     }
//     .value {
//       text-align: center;
//       color: #ffffff;
//       width: 16px;
//       height: 20px;
//       background: url("~@/assets/img/Screen/numBg.png");
//       background-size: 100% 100%;
//     }
//   }
//   &__content {
//     width: 95%;
//     height: 220px;
//   }
// }
//
</style>
<style lang="scss">
// .data-storage {
//   .index-wrap {
//     margin: 0 auto;
//     width: 14px;
//     height: 14px;
//     background: rgba(180, 188, 235, 0.25);
//   }
//   .scrollbar {
//     width: 100%;
//     overflow-x: hidden;
//     height: 200px;
//     .el-scrollbar__wrap {
//       overflow-x: hidden;
//     }
//     .el-table {
//       height: 100%;
//       width: 100%;
//       background-color: transparent;
//       color: #fff;
//     }
//     .el-table th.el-table__cell.is-leaf,
//     .el-table td.el-table__cell {
//       border: none;
//     }
//     .el-table--group::after,
//     .el-table--border::after,
//     .el-table::before {
//       border: none;
//     }
//     .el-table::before {
//       height: 0;
//     }
//   }
// }
</style>
src/components/chart/FileFormat.vue
@@ -1,16 +1,30 @@
<template>
  <div class="file-format" ref="chart"></div>
  <div class="FileFormat" ref="chart"></div>
</template>
<script>
const fileTypeBar = require("@/assets/img/Screen/fileTypeBar.png")
import * as echarts from "echarts"
import { countFileFormat } from "@/api/screen.js"
import { countFileFormat, countProjectType } from "@/api/screen.js"
export default {
  props: {
    params: {
      type: Object,
      default: () => null,
    },
  },
  data() {
    return {
      option: {},
    }
  },
  watch: {
    params : {
      deep: true,
      immediate: true,
      handler(newVal) {
        this.initChart()
      },
    },
  },
  mounted() {
    this.initChart()
@@ -59,7 +73,7 @@
          value: 20,
        },
      ]
      const res = await countFileFormat()
      const res = await countProjectType(this.params)
      if (res.code == 200) {
        data = res.result.map(item => {
          return {
@@ -69,8 +83,7 @@
        })
      }
      data.sort((a, b) => b.value - a.value)
      data = data.slice(0, 10)
      // console.log(res.result);
      data = data.slice(0, 4)
      let getArrByKey = (data, k) => {
        let key = k || "value"
        let res = []
@@ -101,8 +114,8 @@
      let option = {
        backgroundColor: "transparent",
        grid: {
          top: "2%",
          bottom: "2%",
          top: "10%",
          bottom: "10%",
          right: "5%",
          left: "10%",
          containLabel: true,
@@ -174,10 +187,9 @@
          {
            name: "XXX",
            type: "pictorialBar",
            symbol:
              "image://data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADEAAAAxCAYAAABznEEcAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyNpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDYuMC1jMDAyIDc5LjE2NDQ4OCwgMjAyMC8wNy8xMC0yMjowNjo1MyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIyLjAgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjlFNDgzRTBDQjNFNzExRURCRDc5RTVGRkQxNDc0MjUxIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjlFNDgzRTBEQjNFNzExRURCRDc5RTVGRkQxNDc0MjUxIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6OUU0ODNFMEFCM0U3MTFFREJENzlFNUZGRDE0NzQyNTEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6OUU0ODNFMEJCM0U3MTFFREJENzlFNUZGRDE0NzQyNTEiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5DGVZNAAAOOElEQVR42qxa+Y8cRxV+Xd1zz16xYztZmxA7hpgEOSFBAokfkCJA+Qkk/k4kJCQSghAgEXFJJKCcTnbt9RWv7d31XrM709PVfF/VezPl8cZZR2mp1T3d1VXvft97Ndk/V2uZPWo8yrLpvR1FLrK5L/LRbZFWIdJuiGwfCEdmvpbcZdLEdxgleCOOz/FM8E5wrXH1eFZizgr3I9xXfL7QkfqwFDnA+fKyyFM9vPDTtUlL/SiZU7rkCQ4S5KaMOhDSKpx08bzTbUlrriVNMNrMXWCowDWzb0EUmRiTgdFYRjuHMtofyhCvDvB8gOe8907XqZ6ArmMxYVqhtA7HUuB3Fz8XQGT/7JJ0Ok1pqbRIaA0iKOmSvPI7HzWbNVzUUrOQTr8dGcScQ2iXjOxhvh3MP8CzEvdfqYEJfV9lTnZs7Em+tiE9SPTUfEcWoHISk5FwvB7jDObBE99WgfZHzZKCzpOzSUGSQWinhmmWW/uyDSHcff5p2ccaVUrT19YEJfLFA+lcWZflxa6cONmXrNcUV9WByAMSDyLGLjLiVfpkpJaEgcyFa6bE88o5uH6B581GLu3Tc9LC3Cfv78mJj7+QjYun5Nap+bDG1zcn2iYYmFu5J+eXF2V+CZLJM/FYfAgiOXkJ2kpKniYUCFe6XbzPMo734uw3zKaaWKmXHAzk4JymN8K89K3GuabkG/tyBuvCxWX1zILs+sdoo3icD9zZlqVrG3Lx3JJ0EUG4yBiTHeD90EXzoe3WJJRE5m46hZ7BF/KpFmB/YaxFLDJYQX9kouGz4Pj0r86pvuTtQhax/iW8+wyMbH0ZI1+qibs7cgI+8D1ooDHflgEYoKT3Qc9hMB+cIM6b9DUSZUlYDdfUJ+j0eaaakmBuFADn5dMaDJE3CqrCej2sK25J+qDjZbz/CKa1cZSzF7MPOOjerjx1Y1MuI/K4fkt2q2gCe1h4CGLpA54aUCItHzh13HDid5YGhyyGZ67mmS8ogOBDCL0ujzkE35Q0t3EFhiSYbR/re9AxR3owx/tPz8nmbNApZk0IDCxcuy8/fGYhMLCpGhiQAZoRF1ezoZlMiMY7zuVo4/o7S6NKFhmu60hspUEgaDMwwN/UKswLuWaYUR3MRSJdCvL0vDxFuvDNP8DI9pFMcLGtgTSvb8iPEIF68IFbmMCbCWExMlDRbLKp1HMST8JxNnDPk4ww9LrEL+IS9SR6hcyN5yF70zQDzaoh+A3vh8EEaWbQCOjZLCtZJn0Y82eE39EUSWhSGcK1wOlZJKHnFrrygY+LkYEDmhCkU5nkaTp+Gh4JMZqqiYZpwmBHog0j3ms+KZTx0qKckJk6RGMyw4Q5dHUwrYyMID/dGVXyEkzrLPxltdWIcxc7GoUhijkkr9fx8joya8kwmkfzYQSiCYTYnsesC7QRCGgpIc06MtVQZkhgMKnEnGpNgGNNjhw3VqZzNT8yMMbaDBQTrAWWh8wpeNaCaV2HRl4HbLnXLGU3MIEQFiNfLc8jRi9h0FUmMkzKKESVezUHc16aDjMtGWhRC3ZVTRRKoFOTMnPyak7GRKmJMldzpJnyrI0BJMAaBPugrVoOOT+EvAlo8u1bW3Iev/9HDRfIkHSgLga/CgD3eRUld8A84GIoZTynVIMJuUgszzY1wasy0VL02lQmzKzMnMyMxvhupGi2SMwvQBgL2cw7VfQR+tIYVjFijsLZI52AKa/g3ecYt1/4aLfLMKWTOD9UyEANjJNIFDTgsonptFUTHVx5thOmWkpYIVPQa0xQA5Ui1mHCbDaJLxGLmSkxjHvVDNBV0N4YvrANWi8jrywzEQbcggEvdwtZ1cmYjUv7mBpQfyhU0mY6LWWgywzLq2lEI1StIdV8IlOteZlqc6Itmm1icjEMRzSc2TvVHpnvtXK5dljLS7hfI4LsQFXnAaf/rhFkbFpQtWZmt8qEmUxbTzJAjNPVKEVC5qHuZRCwqGNHmO8BbPwW7reV8UL9gObGbypDwYnP5KSjjo7uEaaQB8O7GvSuDyv5Ma2B0j0JrmomGDygo1XKQG1o04i3yJOYTWAC156+74L4C2D8BcT1i6j8elA7Ql2oG/Z3D+UzmMDneLaiMD0zX8kibhpr/rDwG5gzhBDGVgGSMOQLoqgvvTxNRz2LQesK0CoNexBB4N6ikdPIExKahVUzKfWTDnLNq7DXN84uSn6ij5eNqUOUY+kBDbxy84F8H+P+BEbeI5RXUyy1HhmpwII1mDZE88Y44l++o18xWt4l/Yz7J3HuWRXppjVBassTeMGIopJqKiNNLTnPg+ifvnhG8meXHmaARwMa4XO+5zho57wSY/7RTHNMEqIDkGTNbblGhU0hsxo8QSYWcQ4kQoxQE6gjWcRwCRayqFPYgnwH25/DHJeggeZ85/EFDN8D2rMOvwTC5nT+QsOtzZ2rZbgkwpnp1eo/HiY1AIOLHDCPm0ECCQI6na0LEmaChPTkojXUfA5J8gKg8rEOYDM4i1wAE+dU68WMtp3iM9FCKtQkippNyIxgA9zPM3y2iI2Uw4dKbYJ7dUCnksm0WkthN4uAJUSLDp3tOAdNq9eSDphYSgWU4K1MI5ezCjM1caNPYkJu0ZxoDl47EqLJRpKPH2kimM0mmKiZO3miQ8cHTc7WB7N1SPJNPQPvCVGIt4JqnBFsdUD6sXUtsukYrz5kE44q/2RMlDHSlClInO1sqMBCuae9q2ymExNAJDUx1OgwO1kqH29wwCB1kkUpgAcHIzkox8dkAOM4HsnvQYKrfNItqRPobhbxkL58rFkYBEo60A4zqK8nTktHEpWsTSaaeCbQQE+SncEXbgAaryAPHOu4j4C+N5QVzHlDiRsrWvYzDAWTYW2eaMQKLiqgzTAbpOhiR89KyzBIe6cyI6EqgdJjSzwuCuJjJLLRzld0ifj+xhYQaS2f4LtdJfyROdMiyk0rQ6eBJdeyoIfrlgNuuo+HfR3IHpDTsGZqs2LGzyw4Ss4cGXgVmfgvn9yR6vZWNJn0YOXI51fWpeI4mNKKogFCnRGvScE00UYaaJLEa3Gwh2ebtKlbGPaaSoZBo1C0KEp4CspG6kxW0Ay1C8hEVRNKIHPvrN6XCzCZ7yCM9jghnRg+sL8/kisw0xViJ3wzUMc+UGQ60nm5dqn3Xptt3sK9rpVTuMBOp/H9v0nQPZbZdYQQLJAOUai7fJr4fIKpcmVmaFlWS0uaIk1SQOB/Qeg1+MinWwNkU2R21gKKYm/mhWyrWZDogQrhUOccJiZltbcvq9CTonWw+xF6uC6CUM5zl3UrJ1kFmWfAAB2tCPVsHbsOmXa5dfLcQFkCz51FGDwLxRJtHVL4kOWloWEzBTUPZtpDZcCYOJzRRrAAc2pDCCq4DG5wCgHlKr8vNFt/CE5/6b2ssRjXScbsyLnYGLYWyyPQIA2RagZWsRVJBq5n6uvgAwkDB/rdSK+hglMGGGBMC6EoY3Ju5vICaPsdvylUUrdB/HYD8AFa2CbcBgOlNra4fGg3ujh5NoOp0qiVotEUiaZh02rsUVKmHqp/pdogwq01wWWqBTJRwBcWMJ4B/VZoFGhU2oP638f1J9VY/sragM3drFbpZg8VSaJZ1vYm0qJmlPhKioXSnlMoftTmg+Q1Og01WIQo5eOWmGmBvQAKqMNnnYZchoD/RrpFYa9J8wps+DImePZwLLcd62E2dn3cNGEf1SvB2hG3zgQlVikDjQSqWwdjgsksRNdx26tMTMvM0PbzQmhNfIGFWJsmBTM6A1/YhfCvWCIuDLhh0BZk9i4Kll+j5LsbMjcX8THxsLLSMnGSyVUTtjs0aYaZ71gNnXQy0g5gqdoLjsyNSN0mCzmJe3w4c5wNHytIZuccJe+rGPcb/N46sqGMj1ehjTWo6weABf9CBOiFdqaPXRDNzrVPsI2b5pE8KSddsr2VtmwMPFaqjcqcmKHcR40GPyQD3Nj0sRnR47t+U15DCF/D/epDu7ozoI8bgG+D219hku8elCEB9jw7HnWgaMiIZY0ExTXGSJ5qQQl2CQr2ep9qw8Ko1yjkFSNRA2SATYgu10TR9SLoIoNva2j+8k0WDFjHx2/12/Imfj4/GMkqbLCre3SizmiduZhNo5+4sJetHZLZ1r7e2/5ErXvYVm5aAZZxawxns4o9rMBAtxlaSn2MeQvP1h/ZKcqOLnyu43wHjPyMAgUjK6BurqKEY+ZkDqnMT0hSHVFoZTtEdT2Fzr6e2JWBykB4pbgIGTlTKMHNyIZ2E3soeyswcAF0LGG9d0jXE2084qOrIPKPKOx/zn8KwLQ+xeN+2PFEPA+9Uf2nQIDp2ghW6DLJISYkxf+S7m1rDqAGOapRaRTSUFrBhC7NtaU/jgxcfeJ97OSvEN9CcnkTTOTAQ+9hYeKg0E/Ns2liUq3UST1sdUhtNUqaJPWZ7Z42rLtOh8aabHRf7sZm9+8BKq8fVSofex+bE2DUbyGVXyAyvLEHRhC51qlubaSNAkTwEUK7dB87qdXN5q2B7JNWjWV6OjbWOQXzeQX54Cby1R+w/p3HMXAsTSQa6bULeQ4LvT6qZA7MXIGvbGqBYnG/suRnNfjs1rhFMWWmodqg8y4Cul9sFUAPmfwHDKzBJ/a+0f92YML9fS8fwWxuIo+chaQuQWLfQoHzBeqEbbyfRCSZZvaJ/btp882pVtj/bc63ZAGR5xmY5g5+vwuzXYNJbSeZ/pthInF20VKUzFxrZ3ISDJ2D852G8/H/GftlFSJXORwj6PjJPnfoIcG3GiC0gYRaQOI93UZmyPwA7ze0vqh1nW/2XzZHHVhsAIlehwTvkCicfWhnUUvGrvZYiwQAEtRx32Mn7MiitieA078PjY76U8xxj/8LMACxhIqMwsPZ8QAAAABJRU5ErkJggg==",
            symbolSize: [25, 25],
              "image://data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADoAAAA6CAMAAADWZboaAAAAZlBMVEUAAABe3uVe3+Vf3uVf3+Zf3uVg3+Zg3+Zf3+Vi4OZh4OZg3+Z86/Bh3+Zi4Odj4Odi4OZ86/B76/B86/Bj4ed56+9x5+xn4umB7/N87PB36e+A7/N+7fF/7vJ/7vJ+7fGA7/OB7/PReX+lAAAAIXRSTlMABQkVDREmIhk3MR10LEFFPHh7cUprXE35h2XnqMLAp+mHAG9cAAAB5ElEQVRIx83WjU7CMBQFYIoiKMqU/XUboHv/l/Tce7t2XamDNSacETEmX86tlK2rx4py150o+MstMBLwWRfHKo6JCVxLnvmFGBjFQ58oF1//sUZhGy/ClSTWObgnL4O+bkeN4nY2okfNMbkRt9/vtxz8InoTsWplJSCzFxPmO8+GpSIByX3YQAuGDWtRKhKjCnxDXhF6Z4yxnZ20Wgko7BMRDmxtSGVaI4kdTIgb+zTYoJQlIMlDlmUFgrcDWWC201qSayqlTkiCddWWeV62VU0YlnpRi9VOKaSUsiyq/N0krwq2Ugt7lVpZl5BfHNiytjagMi+XYp0kCR45hMlivVQrE/uU5pXSrCB5bM6d1t2lOZItMqmliT3q5uVxqxzyW/ccfYLNKx7ZTeykMvNyac2yt2Fbc61MHLSC0rwoxbiNdlQ3GBm1NLHQsHUrtEXppR/ljNpW6DbSCoqlFiVoN6YdaFlgsSFVPs1BdT8OaB5QyQzVcaqWDows/zepxR8ObLglTrdtCRVuRNj4Rrxh+//0ke2f8KVL+Kon3GCSbmsJN9OUW3j6g0Ns+LgCij2u0h+Sghc8mlMPBMgdx5DFh59VmOVHrvmDnoNxCz3J7MFWsMuaLyR089xz/xhlfijvwutR8gv3zk6BLUUeCgAAAABJRU5ErkJggg==",
            symbolSize: [35, 35],
            symbolOffset: [20, 0],
            z: 5,
            data: getSymbolData(data),
@@ -248,8 +260,8 @@
</script>
<style lang="less" scoped>
.file-format {
.FileFormat {
  width: 100%;
  height: 100%;
  height: calc(100% - 40px);
}
</style>
src/components/chart/ProjectCategory.vue
@@ -1,19 +1,16 @@
<template>
  <div class="project-category">
    <div class="content">
        <div
          :class="i % 2 ? 'rank2' : 'rank1'"
          v-for="(item, i) in datalist.slice(0, 8)"
          :key="item.projtype"
        >
          <div class="num">{{ item.count }}个</div>
          <div class="name">{{ item.projtype }}</div>
          <div class="bar">
            <img src="~@/assets/img/Screen/leftBar.png" alt="" />
          </div>
        </div>
      <div
        :class="'rank' + i"
        class="rank"
        v-for="(item, i) in datalist.slice(0, 8)"
        :key="item.projtype"
      >
        <div class="num">{{ item.count }}个</div>
        <div class="name">{{ item.projtype }}</div>
        <div class="bar"></div>
      </div>
      <!-- <div class="rank rank2">
        <div class="num">2个</div>
@@ -80,57 +77,98 @@
.project-category {
  position: relative;
  width: 100%;
  height: 100%;
  height: calc(100% - 30px);
  background: url("~@/assets/img/Screen/projectBg.png") center center;
  background-size: 330px 227px;
  .content {
    position: relative;
    display: flex;
    flex-wrap: wrap;
    margin: 0 auto;
    height: 90%;
    justify-content: space-between;
    .rank1, .rank2 {
      // box-sizing: border-box;
      // display: flex;
      // flex-direction: column;
      // width: 160px;
      // flex: 1;
      height: 25px;
      // align-items: end;
  background-size: 100% 100%;
  .content {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    // height: 85%;
    height: 100%;
    .rank {
      width: 35%;
      display: flex;
      flex-direction: column;
      div {
        margin: 2px 0px;
      }
      .num {
        color: #839ecb;
      }
      .name {
        // margin: 6px;
        color: #fff;
      }
      .bar {
        width: 61px;
        height: 3px;
        // background: url("~@/assets/img/Screen/leftBar.png");
        // background-size: 100% 100%;
        img {
          width: 100%;
          height: 100%;
        }
        background-image: url(../../assets/img/Screen/leftBar.png);
        background-size: 100% 100%;
      }
    }
    .rank1 {
    .rank0,
    .rank6 {
      width: 35%;
      display: flex;
      flex-direction: column;
      align-items: flex-end;
      text-align: right;
    }
    .rank2 {
    .rank1,
    .rank7 {
      width: 35%;
      display: flex;
      flex-direction: column;
      align-items: flex-start;
      text-align: left;
    }
    .rank2,
    .rank4 {
      width: 35%;
      display: flex;
      flex-direction: column;
      justify-items: flex-end;
      div {
        width: 80%;
        display: flex;
        justify-content: flex-end;
        align-items: flex-end;
      }
      .bar {
        margin-left: calc(80% - 61px);
      }
    }
    .rank3,
    .rank5 {
      width: 35%;
      display: flex;
      flex-direction: column;
      justify-items: flex-end;
      div {
        margin-left: 20%;
        width: 80%;
        align-items: flex-end;
        text-align: left;
        .bar {
          display: flex;
          align-items: center;
          justify-items: flex-end;
        }
      }
    }
  }
}
</style>
src/components/chart/ServiceGet.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,128 @@
<template>
  <div class="CountDataApply" ref="chart"></div>
</template>
<script>
import * as echarts from "echarts"
import { GetServicesVisitsCount } from "@/api/screen.js"
export default {
  data() {
    return {
      option: {},
    }
  },
  mounted() {
    // const option = this.initData()
    this.initChart()
  },
  methods: {
    async initChart() {
      const res = await GetServicesVisitsCount()
      console.log(res.result);
      if (res.code == 200) {
      }
      let xAxis = []
      let yAxis = []
      res.result.forEach(item => {
        xAxis.push(item.type)
        yAxis.push(item.count)
      })
      // let data = [220, 182, 191, 234, 290, 330, 310]
      // const sideData = data.map(item => {
      //   return {
      //     name: item.name,
      //     value: item.number,
      //   }
      // })
      let option = {
        tooltip: {
          trigger: "axis"
        },
        grid: {
          right: "10%",
          top: 30,
          left: '15%',
          bottom:'15%'
        },
        xAxis: {
          type: "category",
          boundaryGap: true,
          axisLine: {
            lineStyle: {
              color: "#fff"
            },
            show: false
          },
          nameRotate: 45,
          axisTick: {
            // show: false,
            alignWithLabel: true
          },
          axisLabel: {
            fontFamily: "PingFangSC-Regular",
          },
          data:xAxis
        },
        yAxis: {
          axisLine: {
            show: false,
            lineStyle: {
              color: "#fff"
            }
          },
          axisLabel: {
            fontFamily: "Roboto-Regular",
          },
          axisTick: {
            show: false
          },
          // åˆ†å‰²çº¿
          splitLine: {
            lineStyle: {
              color: "#5d7289",
              width: 1,
              type: "dashed"
            }
          },
          type: "value"
        },
        series: [
          {
            name: "服务访问次数",
            type: "line",
            showAllSymbol: false,
            lineStyle: {
              color: "#2579D8"
            },
            itemStyle: {
              color: "#2579D8"
            },
            smooth: 0.2,
            data: yAxis
          }
        ]
      };
      const chart = echarts.init(this.$refs.chart)
      chart.setOption(option)
      window.addEventListener("resize", function () {
        chart.resize()
      })
    },
  },
}
</script>
<style lang="scss" scoped>
.CountDataApply {
  width: 100%;
  height:calc(100% - 30px);
}
</style>
src/components/chart/ServiceType.vue
@@ -115,7 +115,7 @@
      let option = {
        backgroundColor: "transparent",
        title: {
          text: "服务类型总数量",
          text: "用户访问总量",
          subtext: count,
          textStyle: {
            color: "#fff",
@@ -140,9 +140,9 @@
          data: dataPie,
          icon: "vertical",
          right: "1%",
          top: "10%",
          top: "2%",
          orient: "vertical",
          itemGap: 7,
          itemGap: 5,
          itemWidth: 12,
          itemHeight: 3,
@@ -165,7 +165,8 @@
          left: "1%", // ä¸Žå®¹å™¨å·¦ä¾§çš„距离
          right: "1%", // ä¸Žå®¹å™¨å³ä¾§çš„距离
          top: "1%", // ä¸Žå®¹å™¨é¡¶éƒ¨çš„距离
          bottom: "1%", // ä¸Žå®¹å™¨åº•部的距离
          bottom: "5%", // ä¸Žå®¹å™¨åº•部的距离
          containLabel: true
        },
        series: [
          {
src/components/chart/VisitCount.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,187 @@
<template>
  <div class="visit-count" ref="chart"></div>
</template>
<script>
import * as echarts from "echarts"
import { GetTypeVisitsCount } from "@/api/screen.js"
export default {
  data() {
    return {
      option: {},
    }
  },
  mounted() {
    this.initChart()
  },
  methods: {
    async initChart() {
      let data = [
        {
          name: "user1",
          value: 10,
        },
        {
          name: "user2",
          value: 20,
        },
        {
          name: "user3",
          value: 23,
        },
        {
          name: "user4",
          value: 44,
        },
        {
          name: "user1",
          value: 10,
        },
        {
          name: "user2",
          value: 20,
        },
        {
          name: "user3",
          value: 53,
        },
        {
          name: "user4",
          value: 24,
        },
        {
          name: "user1",
          value: 10,
        },
        {
          name: "user2",
          value: 20,
        },
      ]
      const res = await GetTypeVisitsCount()
      let xAxis = []
      let yAxis = []
      if (res.code == 200) {
        data = res.result.map(item => {
          xAxis.push(item.name)
          yAxis.push(item.count)
        })
      }
      let option = {
        grid: {
          // è®©å›¾è¡¨å æ»¡å®¹å™¨
          top: "12%",
          left: "15%",
          right: "10%",
          bottom: "15%",
        },
        tooltip: {
          show: true
        },
        xAxis: {
          data: xAxis,
          axisLabel: {
            show: true,
            color: "#ffff",
          },
          axisTick: {
            show: false,
          },
          axisLine: {
            show: true,
            lineStyle: {
              color: "rgba(95, 180, 237, 0.32)",
            },
          },
        },
        yAxis: {
          axisLine: {
            show: false,
          },
          axisTick: {
            show: false,
          },
          axisLabel: {
            color: "#ffff",
          },
          // åˆ†å‰²çº¿
          splitLine: {
            lineStyle: {
              color: "#5d7289",
              width: 1,
              type: "dashed",
            },
          },
        },
        series: [
          {
            // é¡¶éƒ¨åœ†ç‰‡
            type: "pictorialBar",
            animation: false,
            itemStyle: {
              color: "rgba(115, 240, 252, 1)",
            },
            symbolRepeat: false,
            symbolSize: [15, 8],
            symbolMargin: 1,
            z: 10,
            data: data,
            symbolPosition: "end",
            symbolOffset: [0, -4],
          },
          {
            // åº•部圆片
            type: "pictorialBar",
            animation: false,
            itemStyle: {
              color: "rgba(50, 96, 225, 0.8)",
            },
            symbolRepeat: false,
            symbolSize: [15, 8],
            symbolMargin: 1,
            z: 10,
            data: data,
            symbolPosition: "start",
            symbolOffset: [0, 3],
          },
          {
            barWidth: 15,
            animation: false,
            type: "bar",
            label: {
              show: true,
              position: "top",
              textStyle: {
                color: "#ffff",
              },
            },
            itemStyle: {
              color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
                { offset: 1, color: "rgba(82, 180, 249, 0.35)" },
                { offset: 0, color: "rgba(82, 180, 249, 1)" },
              ]),
            },
            data: yAxis,
          },
        ],
      }
      const chart = echarts.init(this.$refs.chart)
      chart.setOption(option)
      window.addEventListener("resize", function () {
        chart.resize()
      })
    },
  },
}
</script>
<style lang="less" scoped>
.visit-count{
  width: 100%;
  height: calc(100% - 30px);
}
</style>
src/components/chart/projectState.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,164 @@
<template>
  <div class="projectState" ref="chart"></div>
</template>
<script>
import * as echarts from "echarts"
import { GetServicesVisitsCount } from "@/api/screen.js"
export default {
  data() {
    return {
      option: {},
    }
  },
  mounted() {
    // const option = this.initData()
    this.initChart()
  },
  methods: {
    initChart() {
      // const res = await GetServicesVisitsCount()
      // console.log(res.result);
      // if (res.code == 200) {
      // }
      // let xAxis = []
      // let yAxis = []
      // res.result.forEach(item => {
      //     xAxis.push(item.type)
      //     yAxis.push(item.count)
      // })
      // let data = [220, 182, 191, 234, 290, 330, 310]
      // const sideData = data.map(item => {
      //   return {
      //     name: item.name,
      //     value: item.number,
      //   }
      // })
      var XName = ["立项", "启动", "建设", "完成"]
      var data1 = [
        [100, 100, 100, 100],
        [
          100,
          100,
          {
            value: 100,
            symbol:
              "image://data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADoAAAA6CAMAAADWZboaAAAAZlBMVEUAAABe3uVe3+Vf3uVf3+Zf3uVg3+Zg3+Zf3+Vi4OZh4OZg3+Z86/Bh3+Zi4Odj4Odi4OZ86/B76/B86/Bj4ed56+9x5+xn4umB7/N87PB36e+A7/N+7fF/7vJ/7vJ+7fGA7/OB7/PReX+lAAAAIXRSTlMABQkVDREmIhk3MR10LEFFPHh7cUprXE35h2XnqMLAp+mHAG9cAAAB5ElEQVRIx83WjU7CMBQFYIoiKMqU/XUboHv/l/Tce7t2XamDNSacETEmX86tlK2rx4py150o+MstMBLwWRfHKo6JCVxLnvmFGBjFQ58oF1//sUZhGy/ClSTWObgnL4O+bkeN4nY2okfNMbkRt9/vtxz8InoTsWplJSCzFxPmO8+GpSIByX3YQAuGDWtRKhKjCnxDXhF6Z4yxnZ20Wgko7BMRDmxtSGVaI4kdTIgb+zTYoJQlIMlDlmUFgrcDWWC201qSayqlTkiCddWWeV62VU0YlnpRi9VOKaSUsiyq/N0krwq2Ugt7lVpZl5BfHNiytjagMi+XYp0kCR45hMlivVQrE/uU5pXSrCB5bM6d1t2lOZItMqmliT3q5uVxqxzyW/ccfYLNKx7ZTeykMvNyac2yt2Fbc61MHLSC0rwoxbiNdlQ3GBm1NLHQsHUrtEXppR/ljNpW6DbSCoqlFiVoN6YdaFlgsSFVPs1BdT8OaB5QyQzVcaqWDows/zepxR8ObLglTrdtCRVuRNj4Rrxh+//0ke2f8KVL+Kon3GCSbmsJN9OUW3j6g0Ns+LgCij2u0h+Sghc8mlMPBMgdx5DFh59VmOVHrvmDnoNxCz3J7MFWsMuaLyR089xz/xhlfijvwutR8gv3zk6BLUUeCgAAAABJRU5ErkJggg==",
            symbolSize: [50, 50],
          },
        ],
      ]
      var Line = ["线1", "线2"]
      var color = ["#256589", "#3F88E9"]
      //数据处理
      var datas = []
      Line.map((item, index) => {
        if (index == 0) {
          datas.push({
            symbolSize: 10,
            symbol: "circle",
            hoverAnimation: false,
            name: item,
            type: "line",
            data: data1[index],
            itemStyle: {
              normal: {
                borderWidth: 5,
                color: color[index],
              },
            },
          })
        } else {
          datas.push({
            symbolSize: 10,
            symbol: "circle",
            hoverAnimation: false,
            name: item,
            type: "line",
            data: data1[index],
            itemStyle: {
              normal: {
                borderWidth: 5,
                color: color[index],
              },
            },
          })
        }
      })
      let option = {
        grid: {
          left: "5%",
          top: "30%",
          bottom: "30%",
          right: "5%",
        },
        yAxis: [
          {
            type: "value",
            position: "right",
            max: 100,
            splitLine: {
              show: false,
            },
            axisLine: {
              show: false,
            },
            axisTick: {
              show: false,
            },
            axisLabel: {
              show: false,
            },
          },
        ],
        xAxis: [
          {
            type: "category",
            axisTick: {
              show: false,
            },
            axisLine: {
              show: false,
              lineStyle: {
                color: "#6A989E",
              },
            },
            axisLabel: {
              inside: true,
              show: true,
              textStyle: {
                color: "#90deff", // x轴颜色
                fontWeight: "normal",
                fontSize: "12",
                lineHeight: 20,
              },
            },
            data: XName,
          },
        ],
        series: datas,
      }
      const chart = echarts.init(this.$refs.chart)
      chart.setOption(option)
      window.addEventListener("resize", function () {
        chart.resize()
      })
    },
  },
}
</script>
<style lang="scss" scoped>
.projectState {
  width: 100%;
  height: calc(100% - 30px);
}
</style>
src/components/chart/projectTime.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,306 @@
<template>
    <div class="projectTime" ref="chart">
    </div>
</template>
<script>
import * as echarts from "echarts"
export default {
    data() {
        return {
        }
    },
    mounted() {
        this.initChart();
    },
    methods: {
        initChart() {
            var dataArr = 60;
            var colorSet = '#45CAED';
            var color = new echarts.graphic.LinearGradient(0, 0, 1, 0, [
                {
                    offset: 0,
                    color: '#8D00FF',
                },
                {
                    offset: 0.4,
                    color: '#0EBAFC',
                },
                {
                    offset: 1,
                    color: '#0EBAFC',
                },
            ]);
            var option = {
                title: {
                    text: '项目进度',
                    textStyle: {
                        color: '#7DAEEF',
                        fontSize: 12,
                    },
                    padding: 0,
                    top: '80%',
                    left: 'center',
                },
                xAxis: {
                    splitLine: {
                        show: false,
                    },
                    axisLabel: {
                        show: false,
                    },
                    axisLine: {
                        show: false,
                    },
                },
                yAxis: {
                    splitLine: {
                        show: false,
                    },
                    axisLabel: {
                        show: false,
                    },
                    axisLine: {
                        show: false,
                    },
                },
                series: [
                    // åˆ»åº¦
                    {
                        type: 'gauge',
                        radius: '82%',
                        startAngle: 220,
                        endAngle: -40,
                        axisTick: {
                            show: true,
                            lineStyle: {
                                color: '#6B9DD7',
                                width: 1,
                            },
                            length: -8,
                        }, //刻度样式
                        splitLine: {
                            show: true,
                            lineStyle: {
                                color: '#6B9DD7',
                                width: 1,
                            },
                            length: -8,
                        }, //分隔线样式
                        axisLabel: {
                            color: 'rgba(255,255,255,0)',
                            fontSize: 12,
                        }, //刻度节点文字颜色
                        pointer: {
                            show: false,
                        },
                        axisLine: {
                            show: false,
                        },
                        label: {
                            show: false,
                        },
                        // //仪表盘详情,用于显示数据。
                        // detail: {
                        //     show: true,
                        //     offsetCenter: [0, '50%'],
                        //     color: '#ACCFFF',
                        //     formatter: function (params) {
                        //         return '当前速度';
                        //     },
                        //     textStyle: {
                        //         fontSize: 16,
                        //     },
                        // },
                    },
                    {
                        name: '内部进度条',
                        type: 'gauge',
                        center: ['50%', '50%'],
                        radius: '78%',
                        splitNumber: 10,
                        axisLine: {
                            lineStyle: {
                                color: [
                                    [dataArr / 100, color],
                                    [1, 'rgba(107,157,215,.25)'],
                                ],
                                width: 8,
                            },
                        },
                        z: 4,
                        axisLabel: {
                            show: false,
                        },
                        axisTick: {
                            show: false,
                        },
                        splitLine: {
                            show: false,
                        },
                        itemStyle: {
                            color: colorSet,
                        },
                        detail: {
                            show: false,
                        },
                        label: {
                            show: false,
                        },
                        title: {
                            //标题
                            show: true,
                            offsetCenter: [0, '35%'], // x, y,单位px
                            textStyle: {
                                color: '#ACCFFF',
                                fontSize: 16, //表盘上的标题文字大小
                                fontWeight: 400,
                                fontFamily: 'PingFangSC',
                            },
                        },
                        data: [
                            {
                                name: dataArr + '%',
                                value: dataArr,
                            },
                        ],
                        pointer: {
                            show: true,
                            length: '40%',
                            radius: '20%',
                            width: 4, //指针粗细
                        },
                    },
                    {
                        //指针上的圆
                        type: 'pie',
                        tooltip: {
                            show: false,
                        },
                        z: 5,
                        hoverAnimation: false,
                        legendHoverLink: false,
                        radius: ['0%', '6%'],
                        center: ['50%', '50%'],
                        label: {
                            normal: {
                                show: false,
                            },
                        },
                        labelLine: {
                            normal: {
                                show: false,
                            },
                        },
                        data: [
                            {
                                value: 10,
                                itemStyle: {
                                    normal: {
                                        color: colorSet,
                                    },
                                },
                            },
                        ],
                    },
                    // å¤–一层圈
                    {
                        type: 'pie',
                        radius: '60%',
                        startAngle: 220,
                        endAngle: -40,
                        hoverAnimation: false,
                        center: ['50%', '50%'],
                        avoidLabelOverlap: false,
                        label: {
                            show: false,
                        },
                        labelLine: {
                            show: false,
                        },
                        data: [
                            {
                                value: 1,
                            },
                        ],
                        itemStyle: {
                            normal: {
                                color: {
                                    type: 'linear',
                                    x: 0,
                                    y: 0,
                                    x2: 0,
                                    y2: 1,
                                    colorStops: [
                                        {
                                            offset: 0,
                                            color: '#17A1FF',
                                        },
                                        {
                                            offset: 1,
                                            color: 'rgba(17, 90, 233, 0.16)',
                                        },
                                    ],
                                },
                                opacity: 0.12,
                            },
                        },
                    },
                    // å†…圆
                    {
                        type: 'pie',
                        radius: ['0', '50%'],
                        center: ['50%', '50%'],
                        hoverAnimation: false,
                        z: 3,
                        data: [
                            {
                                value: dataArr,
                                itemStyle: {
                                    normal: {
                                        color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
                                            {
                                                offset: 0,
                                                color: '#23A6FF',
                                            },
                                            {
                                                offset: 1,
                                                color: 'rgba(17, 90, 233, 0.21)  ',
                                            },
                                        ]),
                                        opacity: 0.59,
                                    },
                                },
                                label: {
                                    show: false,
                                },
                            },
                        ],
                        labelLine: {
                            show: false,
                        },
                    },
                ],
            };
            const chart = echarts.init(this.$refs.chart)
            chart.setOption(option)
            window.addEventListener("resize", function () {
                chart.resize()
            })
        },
    },
}
</script>
<style  lang="scss">
.projectTime {
    height: calc(100% - 30px);
    width: 100%;
}
</style>
src/components/chart/projectintroduction.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,139 @@
<template>
  <div class="projectintroduction">
    <div class="item">
      <div class="itemName">项目名称:</div>
      <div class="itemValue" :title="projname">
        {{
          projname.length > 15
            ? projname.substring(0, 15)
            : projname
        }}
      </div>
    </div>
    <div class="item">
      <div class="itemName">项目状态:</div>
      <div class="itemValue">{{ result.projstate }}</div>
    </div>
    <div class="item">
      <div class="itemName">项目种类:</div>
      <div class="itemValue">{{ result.projtype }}</div>
    </div>
    <div class="item">
      <div class="itemName">所属部门:</div>
      <div class="itemValue">{{ result.corpname }}</div>
    </div>
    <div class="item">
      <div class="itemName">启动时间:</div>
      <div class="itemValue">{{ parseTime(result.createtime) }}</div>
    </div>
    <div class="item">
      <div class="itemName">工程内容:</div>
      <div class="itemValue">
        {{
          result.contents && result.contents.length > 15
            ? result.contents.substring(0, 15)
            : result.contents
        }}
      </div>
    </div>
  </div>
</template>
<script>
import { selectProjectInfo } from "@/api/screen.js"
export default {
  data() {
    return {
      result: {
        eventid: "4dfd814a-a262-4a93-880b-5ef488883a35",
        country: "中国",
        projstate: "施工中",
        createtime: 1675071993161,
        gid: 38,
        conperiod: "24",
        datastatus: null,
        geom: "01010000208A110000925A28999C225C40F1811DFF05364040",
        createuser: 1,
        parentid: null,
        verid: 0,
        province: "湖北省",
        projname: "西气东输三线(中卫-枣阳)",
        contents: "管道线路施工",
        projtype: "管线施工",
        location: "武汉",
        dirid: "03",
        depid: null,
        corpname: "管道设计院",
        department: "勘察部门",
        updatetime: 1675072198376,
        belongsid: null,
        remarks: "测试用,内容虚构",
        updateuser: 1,
      },
      projname: "西气东输三线(中卫-枣阳)",
    }
  },
  created() {
    this.$bus.$on("changeProjectCode", code => {
      let params = {
        projectCode: code,
      }
      this.getDataList(params)
    })
    this.$bus.$on("changeProject", name => {
      this.projname = name
    })
  },
  methods: {
    async getDataList(params) {
      const res = await selectProjectInfo(params)
      if (res.code == 200) {
        if (res.result.length > 0) {
          this.result = res.result[0]
        }
      }
    },
    //获取时间
    parseTime(timestamp) {
      var date = new Date(timestamp) //时间戳为10位需*1000,时间戳为13位的话不需乘1000
      var Y = date.getFullYear() + "-"
      var M =
        (date.getMonth() + 1 < 10
          ? "0" + (date.getMonth() + 1)
          : date.getMonth() + 1) + "-"
      var D =
        (date.getDate() < 10 ? "0" + date.getDate() : date.getDate()) + " "
      let strDate = Y + M + D
      return strDate
    },
  },
}
</script>
<style lang="scss">
.projectintroduction {
  height: calc(100% - 30px);
  width: 100%;
  .item {
    margin: 5px;
    height: 30px;
    display: flex;
    flex-direction: row;
    border-bottom: dotted 1px rgba(48, 135, 214, 0.2);
    .itemName {
      width: 40%;
      height: 100%;
      display: flex;
      align-items: center;
      justify-content: center;
      color: #fff;
    }
    .itemValue {
      width: 60%;
      height: 100%;
      display: flex;
      align-items: center;
      justify-content: flex-start;
      color: #9ed2f5;
    }
  }
}
</style>
src/components/mapol.vue
@@ -2,32 +2,41 @@
  <div id="mapol">
    <div style="display: flex">
      <div
          @click="changeMenulayer"
          class="center CenDiv"
          :class="{ center1: centerFlag }"
        @click="changeMenulayer"
        class="center CenDiv"
        :class="{ center1: centerFlag }"
      >
        <div
            id="cenBg"
            v-bind:class="{ active: isActive, menuLayer: isMenuLayer }"
          id="cenBg"
          v-bind:class="{ active: isActive, menuLayer: isMenuLayer }"
        ></div>
      </div>
      <div @click="changeMapType" class="changeMapType">
        <div id="cenBg" :class="show2DMap ? 'mapTypeTwo' : 'mapTypeThree'"></div>
      <div
        @click="changeMapType"
        class="changeMapType"
      >
        <div
          id="cenBg"
          :class="show2DMap ? 'mapTypeTwo' : 'mapTypeThree'"
        ></div>
      </div>
    </div>
<!--    <div-->
<!--      @click="changeMenulayer"-->
<!--      class="center CenDiv"-->
<!--      :class="{ center1: centerFlag }"-->
<!--    >-->
<!--      <div-->
<!--        id="cenBg"-->
<!--        v-bind:class="{ active: isActive, menuLayer: isMenuLayer }"-->
<!--      ></div>-->
    <!--    <div-->
    <!--      @click="changeMenulayer"-->
    <!--      class="center CenDiv"-->
    <!--      :class="{ center1: centerFlag }"-->
    <!--    >-->
    <!--      <div-->
    <!--        id="cenBg"-->
    <!--        v-bind:class="{ active: isActive, menuLayer: isMenuLayer }"-->
    <!--      ></div>-->
<!--    </div>-->
    <div v-show="$store.state.isNaviget"  class="sindagis-map-compass">
    <!--    </div>-->
    <div
      v-show="$store.state.isNaviget"
      class="sindagis-map-compass"
    >
      <span
        class="left"
        @click="leftClick"
@@ -74,7 +83,7 @@
      isMenuLayer: false,
      rotate: 0,
      currentDir: '',
      show2DMap:false,
      show2DMap: false,
    }
  },
  mounted() {
@@ -84,6 +93,7 @@
    });
  },
  methods: {
    init2DMap() {
      var vectorLayer = new TileLayer({
        source: new XYZ({
@@ -99,9 +109,10 @@
        target: "mapol",
        layers: [imageLayer, vectorLayer],
        view: new View({
          center:  [105.02, 34.9] ,
          center: [105.02, 34.9],
          zoom: 4,
          projection: "EPSG:4326",
          minZoom: 4,
        }),
        controls: defaultControls().extend([
          new FullScreen(),
@@ -122,11 +133,11 @@
    },
    //二维/三维地图切换
    changeMapType(){
      // debugger
    changeMapType() {
      //
      this.show2DMap = !this.show2DMap;
      //二维
      if (this.show2DMap){
      if (this.show2DMap) {
        this.$bus.$emit("changemap", 2);
      }
      //三维
@@ -316,7 +327,7 @@
  background: url("../assets/img/compass.png") -89px -5px / 266px no-repeat;
}
.changeMapType{
.changeMapType {
  position: absolute;
  bottom: 1%;
  left: calc(1% + 75px);
@@ -326,26 +337,25 @@
  display: flex;
  justify-content: center;
  align-items: center;
  box-shadow: 3px 3px 6px #666;
  // box-shadow: 3px 3px 6px #666;
  border-radius: 5px;
  background: #fff;
  // background: #fff;
  cursor: pointer;
}
.mapTypeTwo{
.mapTypeTwo {
  width: 100%;
  height: 100%;
  margin-left: 10px;
  background-image: url("../assets/img/3dmap.png");
  background-image: url("../assets/img/synthesis/3D.png");
  background-repeat: no-repeat;
  background-size: contain;
}
.mapTypeThree{
.mapTypeThree {
  width: 100%;
  height: 100%;
  margin-left: 10px;
  background-image: url("../assets/img/2dmap.png");
  background-image: url("../assets/img/synthesis/2D æ‹·è´ 2.png");
  background-repeat: no-repeat;
  background-size: contain;
}
</style>
src/components/mapsdk.vue
@@ -8,7 +8,6 @@
        <map-menu-top v-if="$store.state.mapMenuBoxFlag == '1'" />
        <map-space-top v-if="$store.state.mapMenuBoxFlag == '2'" />
      </div>
      <div
        class="bufferBox"
        v-if="showBufferBoxDialog"
@@ -97,6 +96,44 @@
        </el-card>
      </div>
      <div
        class="terrainLevelBox"
        v-if="showTerrainLevelDialog"
      >
        <el-card class="box-card">
          <div slot="header">
            <span>地形平整</span>
            <div style="float: right; cursor: pointer">
              <i
                class="el-icon-close"
                @click="closeBufferBox(5)"
              ></i>
            </div>
          </div>
          <div class="box-body">
            <el-form
              ref="form"
              :model="terrainFrom"
              label-width="100px"
            >
              <el-form-item label="平整高度:">
                <el-input v-model="terrainFrom.height"></el-input>
              </el-form-item>
              <el-form-item>
                <el-button
                  @click="drawTerrainLevel"
                  type="parmary"
                >绘制</el-button>
                <el-button
                  @click="clearTerrainLevel"
                  type="info"
                >清除</el-button>
              </el-form-item>
            </el-form>
          </div>
        </el-card>
      </div>
      <div
        class="toponymicLocalBox"
        v-if="showToponymicLocalBoxDialog"
      >
@@ -134,6 +171,7 @@
            <el-table
              :data="tableData"
              height="200px"
              border
              style="width: 100%"
            >
              <el-table-column
@@ -141,33 +179,40 @@
                type="index"
                label="序号"
              />
              <el-table-column prop="name" align="center" label="地名">
              <el-table-column
                prop="name"
                align="center"
                label="地名"
              >
                <template slot-scope="scope">
                  <el-button
                      @click="handleLocation(scope.$index, scope.row)"
                      size="small"
                  >{{scope.row.name}}<i class="el-icon-place" style="padding-left: 5px"></i></el-button>
                    @click="handleLocation(scope.$index, scope.row)"
                    size="small"
                  >{{scope.row.name}}<i
                      class="el-icon-place"
                      style="padding-left: 5px"
                    ></i></el-button>
                </template>
              </el-table-column>
<!--              <el-table-column-->
<!--                prop="name"-->
<!--                align="center"-->
<!--                label="定位"-->
<!--              >-->
<!--                <template slot-scope="scope">-->
<!--                  <el-button-->
<!--                    @click="handleLocation(scope.$index, scope.row)"-->
<!--                    size="small"-->
<!--                    icon="el-icon-place"-->
<!--                  ></el-button>-->
<!--                </template>-->
<!--              </el-table-column>-->
<!--              <el-table-column-->
<!--                prop="name"-->
<!--                align="center"-->
<!--                label="地名"-->
<!--              >-->
<!--              </el-table-column>-->
              <!--              <el-table-column-->
              <!--                prop="name"-->
              <!--                align="center"-->
              <!--                label="定位"-->
              <!--              >-->
              <!--                <template slot-scope="scope">-->
              <!--                  <el-button-->
              <!--                    @click="handleLocation(scope.$index, scope.row)"-->
              <!--                    size="small"-->
              <!--                    icon="el-icon-place"-->
              <!--                  ></el-button>-->
              <!--                </template>-->
              <!--              </el-table-column>-->
              <!--              <el-table-column-->
              <!--                prop="name"-->
              <!--                align="center"-->
              <!--                label="地名"-->
              <!--              >-->
              <!--              </el-table-column>-->
            </el-table>
            <div class="pagination_box">
              <el-pagination
@@ -175,7 +220,7 @@
                @current-change="handleCurrentChange"
                :current-page="listData.pageIndex"
                :page-sizes="[10, 20, 50, 100]"
                :pager-count = "3"
                :pager-count="3"
                :page-size="listData.pageSize"
                layout="total, prev, pager, next"
                :total="count"
@@ -251,29 +296,168 @@
      </div>
      <div style="display: flex">
        <div
            @click="changeMenulayer"
            class="center CenDiv"
            :class="{ center1: centerFlag }"
          @click="changeMenulayer"
          class="center CenDiv"
          :class="{ center1: centerFlag }"
        >
          <div
              id="cenBg"
              v-bind:class="{ active: isActive, menuLayer: isMenuLayer }"
            id="cenBg"
            v-bind:class="{ active: isActive, menuLayer: isMenuLayer }"
          ></div>
        </div>
        <div @click="changeMapType" class="changeMapType">
          <div id="cenBg" :class="show2DMap ? 'mapTypeTwo' : 'mapTypeThree'"></div>
        <div
          @click="changeMapType"
          class="changeMapType"
        >
          <div
            id="cenBg"
            :class="show2DMap ? 'mapTypeTwo' : 'mapTypeThree'"
          ></div>
        </div>
      </div>
<!--      <div-->
<!--        @click="changeMenulayer"-->
<!--        class="center CenDiv"-->
<!--        :class="{ center1: centerFlag }"-->
<!--      >-->
<!--        <div-->
<!--          id="cenBg"-->
<!--          v-bind:class="{ active: isActive, menuLayer: isMenuLayer }"-->
<!--        ></div>-->
<!--      </div>-->
      <div
        class="lengend"
        v-show="showLengendDialog"
      >
        <el-card class="box-card">
          <!-- <div
            class="lengend_color"
            style="height:205px"
          >
          </div> -->
          <div class="lengendBox">
            <div>
              <img
                class="lengendImg"
                src="../assets/img/colors.png"
              />
            </div>
            <div class="lengendSpan">
              <div>0°</div>
              <div>17.5°</div>
              <div>35°</div>
              <div>52.5°</div>
              <div>70°</div>
            </div>
          </div>
        </el-card>
      </div>
      <div
        class="propertiesPop"
        v-if="$store.state.propertiesFlag == '1'"
      >
        <el-card class="box-card">
          <div slot="header">
            <span>{{$store.state.propertiesName.tabDesc || '属性信息'}}</span>
            <div style="float: right; cursor: pointer">
              <el-link type="primary" :underline="false" @click="getAttatchList" style="margin-right: 10px">查看附件</el-link>
              <i
                class="el-icon-close"
                @click="closeBufferBox(6)"
              ></i>
            </div>
          </div>
          <div
            class="pointInfoBoxContext"
            style="height:250px;overflow-y: auto"
          >
            <div
              style="line-height: 20px"
              v-for="(value, key) in $store.state.propertiesInfo"
              :key="key"
            >
              <span v-if="key != 'eventid'" style="font-size: 14px;font-weight: bold;margin-right: 5px">{{key}}:</span>
              <span v-if="key != 'eventid'">{{value}}</span>
            </div>
          </div>
        </el-card>
      </div>
      <!--附件列表弹窗-->
      <el-dialog
          title="附件列表"
          :append-to-body="false"
          :visible.sync="showAttach"
          width="35%"
          :close-on-click-modal="false"
      >
        <div>
          <el-table
              :data="attachList"
              height="100%"
              style="width: 100%"
              border
          >
            <el-table-column
                align="center"
                type="index"
                label="序号"
                width="50"
            />
            <el-table-column
                prop="name"
                label="名称">
            </el-table-column>
            <el-table-column
                label="时间"
                width="180">
              <template slot-scope="scope">
                <span>{{format(scope.row.createTime)}}</span>
              </template>
            </el-table-column>
            <el-table-column
                label="操作"
                width="100">
              <template slot-scope="scope">
                <el-button v-if="showAttachDetailBtn(scope.row)" @click="showAttachDetail(scope.row)" type="text" size="small">查看</el-button>
              </template>
            </el-table-column>
          </el-table>
        </div>
      </el-dialog>
      <!--附件弹窗-->
      <el-dialog
          title="预览"
          :append-to-body="false"
          :visible.sync="dialog.dialogVisible"
          width="70%"
          :close-on-click-modal="false"
      >
        <div
            v-if="dialog.isPdf"
            class="pdfClass"
        >
          <iframe
              :src="dialog.src"
              type="application/x-google-chrome-pdf"
              width="100%"
              height="100%"
          >
          </iframe>
        </div>
        <div
            v-if="dialog.isJpg"
            class="pdfClass"
        >
          <img
              style="width:100%; height:100%;"
              :src="dialog.src"
              alt=""
          />
        </div>
      </el-dialog>
      <!--      <div-->
      <!--        @click="changeMenulayer"-->
      <!--        class="center CenDiv"-->
      <!--        :class="{ center1: centerFlag }"-->
      <!--      >-->
      <!--        <div-->
      <!--          id="cenBg"-->
      <!--          v-bind:class="{ active: isActive, menuLayer: isMenuLayer }"-->
      <!--        ></div>-->
      <!--      </div>-->
    </div>
  </div>
</template>
@@ -281,20 +465,19 @@
<script>
import $ from "jquery";
import mapMenuTop from "./MapView/mapMenuTop.vue";
import mapSpaceTop from "./MapView/mapSpaceTop.vue";
import {
  select_Comprehensive_ByPageAndCount,
  select_Comprehensive_SelectWktById,
  comprehensive_selectRoute,
  dataLib_selectFiles
} from "../api/api";
import {getToken} from '@/utils/auth'
export default {
  name: "",
  components: {
    mapMenuTop,
    mapSpaceTop,
  },
  data() {
@@ -328,7 +511,6 @@
        lon: "",
        lat: "",
      },
      rules: {
        lon: [
          { required: true, message: "请输入起点经纬度坐标", trigger: "blur" },
@@ -373,15 +555,26 @@
      layer3: null,
      isActive: false,
      isMenuLayer: true,
      selFrom: {},
      selectTree: null,
      showTerrainLevelDialog: false,
      menuList: [],
      defaultProps: {
        children: "children",
        label: "label",
      }, //树绑定对象
      show2DMap:false,
      show2DMap: false,
      terrainFrom: {
        height: '10'
      },
      showLengendDialog: false,
      showAttach:false,
      attachList:[],
      dialog: {
        dialogVisible: false,
        isPdf: false,
        isJpg: false,
        src: ''
      }
    };
  },
  mounted() {
@@ -394,6 +587,28 @@
    });
  },
  methods: {
    drawTerrainLevel() {
      this.clearTerrainLevel()
      var deep = parseFloat(this.terrainFrom.height)
      sgworld.Creator.createSimpleGraphic(
        'polygon',
        {
          clampToGround: true,
        },
        function (entity) {
          var positions = entity.polygon.hierarchy.getValue().positions;
          sgworld.Creator.SimpleGraphic.remove(entity.id);
          window.TerrainFlattening = sgworld.Creator.createTerrainModifier("地形压平", positions, deep, {});
        }
      );
    },
    clearTerrainLevel() {
      if (window.TerrainFlattening) {
        window.TerrainFlattening && window.TerrainFlattening.remove();
      }
    },
    init3DMap() {
      var webKey = "94a34772eb88317fcbf8428e10448561";
@@ -544,6 +759,23 @@
            this.closeBufferBox(4);
          }
        }
      } else if (res.name == "Trrain") {
        switch (res.id) {
          case "d10":
            this.showTerrainLevelDialog = !this.showTerrainLevelDialog;
            this.clearTerrainLevel();
            break;
        }
      } else if (res.name == "Lengend") {
        switch (res.id) {
          case "d2":
            this.showLengendDialog = res.vshow;
            break;
        }
      }
    },
    handleSizeChange(val) {
@@ -628,7 +860,13 @@
        case 4:
          this.showPathAnalysisBoxDialog = false;
          this.clearPathAll(3);
          break;
        case 5:
          this.showTerrainLevelDialog = false;
          this.clearTerrainLevel()
          break;
        case 6:
          this.$store.state.propertiesFlag = null;
          break;
      }
    },
@@ -643,23 +881,23 @@
        Altitude: 2000,
      };
      this.imagePoint = sgworld.Creator.CreateLabel(
          position,
          "",
          SmartEarthRootUrl + "Workers/image/mark.png",
          {
            disableDepthTestDistance: Infinity,
            scale: 0.8,
          },
          0,
          "巡检点"
        position,
        "",
        SmartEarthRootUrl + "Workers/image/mark.png",
        {
          disableDepthTestDistance: Infinity,
          scale: 0.8,
        },
        0,
        "巡检点"
      );
      sgworld.Navigate.jumpTo({
        //跳转视角
        destination: new Cesium.Cartesian3.fromDegrees(
            lon,
            lat,
            height
          lon,
          lat,
          height
        ),
      });
      // sgworld.Navigate.jumpTo({
@@ -910,11 +1148,11 @@
      }
    },
    //二维/三维地图切换
    changeMapType(){
      // debugger
    changeMapType() {
      //
      this.show2DMap = !this.show2DMap;
      //二维
      if (this.show2DMap){
      if (this.show2DMap) {
        this.$bus.$emit("changemap", 2);
      }
      //三维
@@ -922,6 +1160,86 @@
        this.$bus.$emit("changemap", 3);
      }
      this.$bus.$emit("changemapType", this.show2DMap);
    },
    //获取附件列表
    async getAttatchList() {
      let tabName = this.$store.state.propertiesName.ns+'.'+this.$store.state.propertiesName.tab;
      let eventid = this.$store.state.propertiesInfo.eventid;
      var obj = {
        eventid:eventid,
        tabName:tabName,
      };
      const res = await dataLib_selectFiles(obj);
      if (res.code != 200) {
        this.$message.error('附件查询失败');
        return
      }
      if (res.result.length <= 0) {
        this.$message.error('暂无附件');
        return
      }
      this.attachList = res.result;
      this.showAttach = true;
    },
    //是否显示查看按钮
    showAttachDetailBtn(row){
      var name = row.name;
      if (name.indexOf('.pdf') != -1 || name.indexOf('.jpg') != -1 || name.indexOf('.gif') != -1 || name.indexOf('.png') != -1 || name.indexOf('.jpeg') != -1) {
        return true;
      }
      return false;
    },
    //数据初始化
    refreshAttatchDetail() {
      this.dialog.src = "";
      this.dialog.dialogVisible = false;
      this.dialog.isPdf = false;
      this.dialog.isJpg = false;
    },
    //查看附件
    showAttachDetail(row){
      this.refreshAttatchDetail();
      var name = row.name;
      if (name.indexOf('.pdf') != -1) {
        this.dialog.dialogVisible = true;
        this.dialog.isPdf = true;
        var url = BASE_URL + "/res/downloadForView?guid=" + row.guid + "&token=" + getToken();
        this.dialog.src = url
      }
      else if (name.indexOf('.jpg') != -1 || name.indexOf('.gif') != -1 || name.indexOf('.png') != -1 || name.indexOf('.jpeg') != -1) {
        this.dialog.dialogVisible = true;
        this.dialog.isJpg = true;
        var url = BASE_URL + "/res/downloadForView?guid=" + row.guid + "&token=" + getToken();
        this.dialog.src = url
      }
    },
    //格式化时间
    format(shijianchuo) {
      //shijianchuo是整数,否则要parseInt转换
      var time = new Date(shijianchuo);
      var y = time.getFullYear();
      var m = time.getMonth() + 1;
      var d = time.getDate();
      var h = time.getHours();
      var mm = time.getMinutes();
      var s = time.getSeconds();
      return (
          y +
          '-' +
          this.add0(m) +
          '-' +
          this.add0(d) +
          ' ' +
          h +
          ':' +
          mm +
          ':' +
          s
      );
    },
    //格式化时间
    add0(m) {
      return m < 10 ? '0' + m : m;
    },
  },
};
@@ -944,7 +1262,7 @@
      height: 450x;
      z-index: 40;
      position: absolute;
      right: 6%;
      right: 8%;
      bottom: 1%;
    }
    .bufferBox {
@@ -960,15 +1278,37 @@
      height: 370px;
      z-index: 40;
      position: absolute;
      right: 6%;
      right: 8%;
      bottom: 1%;
    }
    .propertiesPop {
      width: 350px;
      height: 370px;
      z-index: 40;
      position: absolute;
      right: 8%;
      bottom: 1%;
      /deep/ .el-card__header {
        padding: 10px 20px;
      }
      /deep/ .el-card__body {
        padding: 10px 20px;
      }
    }
    .terrainLevelBox {
      width: 350px;
      height: 370px;
      z-index: 40;
      position: absolute;
      right: 8%;
      bottom: -11%;
    }
    .pathAnalysisBox {
      width: 412px;
      z-index: 40;
      position: absolute;
      right: 6%;
      right: 8%;
      bottom: 1%;
    }
@@ -995,6 +1335,32 @@
      bottom: 5%;
      position: absolute;
      z-index: 40;
    }
    .lengend {
      width: 300px;
      z-index: 40;
      position: absolute;
      right: 1%;
      bottom: 13%;
      transform: rotate(90deg);
      .lengendBox {
        .lengendSpan {
          display: flex;
          justify-content: space-between;
          margin-top: 10px;
          div {
            transform: rotate(-90deg);
          }
        }
        .lengendImg {
          -ms-transform: rotate(180deg); /* IE 9 */
          -webkit-transform: rotate(180deg); /* Safari and Chrome */
          transform: rotate(180deg);
          width: 100%;
          height: 30px;
        }
      }
    }
  }
}
@@ -1094,7 +1460,7 @@
  border-radius: 5px;
}
.changeMapType{
.changeMapType {
  position: absolute;
  bottom: 1%;
  left: calc(1% + 75px);
@@ -1104,29 +1470,35 @@
  display: flex;
  justify-content: center;
  align-items: center;
  box-shadow: 3px 3px 6px #666;
  // box-shadow: 3px 3px 6px #666;
  //border: 1px solid rgba(204, 204, 204, 0.76);
  border-radius: 5px;
  background: #fff;
  cursor: pointer;
}
.mapTypeTwo{
.mapTypeTwo {
  width: 100%;
  height: 100%;
  margin-left: 10px;
  background-image: url("../assets/img/3dmap.png");
  background-image: url("../assets/img/synthesis/3D.png");
  background-repeat: no-repeat;
  background-size: contain;
}
.mapTypeThree{
.mapTypeThree {
  width: 100%;
  height: 100%;
  margin-left: 10px;
  background-image: url("../assets/img/2dmap.png");
  background-image: url("../assets/img/synthesis/2D æ‹·è´ 2.png");
  background-repeat: no-repeat;
  background-size: contain;
}
.pdfClass {
  height: 70vh;
  width: 100%;
  position: relative;
}
// .menuSelect .el-input__inner {
//   background: rgba(255, 255, 255, 0.2) !important;
//   color: white !important;
src/components/navMenu.vue
@@ -216,7 +216,8 @@
    },
    //鼠标移入菜单事件
    setMenuMove(index, item) {
      if (item.perms != null) {
      if (item.perms != null && item.perms != "") {
        this.$router.push(item.url);
        if (this.showFlag != null) {
@@ -226,10 +227,12 @@
        if (item.url == "Thematic") {
          this.signInsertOpLog("综合展示", item.cnName)
        }
        this.changeSelectStyle = index;
        sessionStorage.setItem('changeSelectStyle', index)
      } else {
        if (this.showFlag != index) {
          this.showFlag = index;
        } else {
          this.showFlag = null;
        }
@@ -239,9 +242,8 @@
        sessionStorage.removeItem('changeliSelect')
        this.$set(this, 'changeliSelect', null)
      }
      sessionStorage.setItem('changeSelectStyle', index)
      this.changeSelectStyle = index;
    },
    closeAllChildren() {
      var val = this.listMenu
@@ -263,7 +265,13 @@
      }
    },
    setLiClick(res, index) {
      this.signInsertOpLog(this.listMenu[index].cnName, res.cnName)
      this.changeSelectStyle = index;
      sessionStorage.setItem('changeSelectStyle', index)
      sessionStorage.removeItem('hanleselectmochaitmo')
      sessionStorage.removeItem('hanleselectindex')
      // this.signInsertOpLog(this.listMenu[index].cnName, res.cnName)
      setTimeout(() => {
        this.changeliSelect = res.cnName;
@@ -317,16 +325,19 @@
      for (var i in res) {
        res[i].checkClass = res[i].css + '1';
        res[i].show = false; //控制显隐
        if (res[i].perms == null) {
        if (res[i].perms == null || res[i].perms == "") {
          const result = await selectMenuRecursive({ id: res[i].id });
          if (result.code == 200) {
            res[i].children = result.result.filter((value) => {
              return value.isShow == 1;
            })
              .filter((value) => {
                return value.pid == res[i].id;
              });
          }
          this.listMenu.push(res[i]);
          // this.changeSelectStyle = this.listMenu.length - 1;
src/directive/dialog/drag.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,64 @@
/**
* v-dialogDrag å¼¹çª—拖拽
* Copyright (c) 2019 ruoyi
*/
export default {
  bind(el, binding, vnode, oldVnode) {
    const value = binding.value
    if (value == false) return
    // èŽ·å–æ‹–æ‹½å†…å®¹å¤´éƒ¨
    const dialogHeaderEl = el.querySelector('.el-dialog__header');
    const dragDom = el.querySelector('.el-dialog');
    dialogHeaderEl.style.cursor = 'move';
    // èŽ·å–åŽŸæœ‰å±žæ€§ ie dom元素.currentStyle ç«ç‹è°·æ­Œ window.getComputedStyle(dom元素, null);
    const sty = dragDom.currentStyle || window.getComputedStyle(dragDom, null);
    dragDom.style.position = 'absolute';
    dragDom.style.marginTop = 0;
    let width = dragDom.style.width;
    if (width.includes('%')) {
      width = +document.body.clientWidth * (+width.replace(/\%/g, '') / 100);
    } else {
      width = +width.replace(/\px/g, '');
    }
    dragDom.style.left = `${(document.body.clientWidth - width) / 2}px`;
    // é¼ æ ‡æŒ‰ä¸‹äº‹ä»¶
    dialogHeaderEl.onmousedown = (e) => {
      // é¼ æ ‡æŒ‰ä¸‹ï¼Œè®¡ç®—当前元素距离可视区的距离 (鼠标点击位置距离可视窗口的距离)
      const disX = e.clientX - dialogHeaderEl.offsetLeft;
      const disY = e.clientY - dialogHeaderEl.offsetTop;
      // èŽ·å–åˆ°çš„å€¼å¸¦px æ­£åˆ™åŒ¹é…æ›¿æ¢
      let styL, styT;
      // æ³¨æ„åœ¨ie中 ç¬¬ä¸€æ¬¡èŽ·å–åˆ°çš„å€¼ä¸ºç»„ä»¶è‡ªå¸¦50% ç§»åŠ¨ä¹‹åŽèµ‹å€¼ä¸ºpx
      if (sty.left.includes('%')) {
        styL = +document.body.clientWidth * (+sty.left.replace(/\%/g, '') / 100);
        styT = +document.body.clientHeight * (+sty.top.replace(/\%/g, '') / 100);
      } else {
        styL = +sty.left.replace(/\px/g, '');
        styT = +sty.top.replace(/\px/g, '');
      };
      // é¼ æ ‡æ‹–拽事件
      document.onmousemove = function (e) {
        // é€šè¿‡äº‹ä»¶å§”托,计算移动的距离 ï¼ˆå¼€å§‹æ‹–拽至结束拖拽的距离)
        const l = e.clientX - disX;
        const t = e.clientY - disY;
        let finallyL = l + styL
        let finallyT = t + styT
        // ç§»åŠ¨å½“å‰å…ƒç´ 
        dragDom.style.left = `${finallyL}px`;
        dragDom.style.top = `${finallyT}px`;
      };
      document.onmouseup = function (e) {
        document.onmousemove = null;
        document.onmouseup = null;
      };
    }
  }
};
src/directive/dialog/dragHeight.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,38 @@
/**
 * v-dialogDragWidth å¯æ‹–动弹窗高度(右下角)
 * Copyright (c) 2019 ruoyi
 */
export default {
  bind(el) {
    const dragDom = el.querySelector(".el-dialog");
    const lineEl = document.createElement("div");
    lineEl.style =
      "width: 6px; background: inherit; height: 10px; position: absolute; right: 0; bottom: 0; margin: auto; z-index: 1; cursor: nwse-resize;";
    lineEl.addEventListener(
      "mousedown",
      function (e) {
        // é¼ æ ‡æŒ‰ä¸‹ï¼Œè®¡ç®—当前元素距离可视区的距离
        const disX = e.clientX - el.offsetLeft;
        const disY = e.clientY - el.offsetTop;
        // å½“前宽度 é«˜åº¦
        const curWidth = dragDom.offsetWidth;
        const curHeight = dragDom.offsetHeight;
        document.onmousemove = function (e) {
          e.preventDefault(); // ç§»åŠ¨æ—¶ç¦ç”¨é»˜è®¤äº‹ä»¶
          // é€šè¿‡äº‹ä»¶å§”托,计算移动的距离
          const xl = e.clientX - disX;
          const yl = e.clientY - disY;
          dragDom.style.width = `${curWidth + xl}px`;
          dragDom.style.height = `${curHeight + yl}px`;
        };
        document.onmouseup = function (e) {
          document.onmousemove = null;
          document.onmouseup = null;
        };
      },
      false
    );
    dragDom.appendChild(lineEl);
  },
};
src/directive/dialog/dragWidth.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
/**
 * v-dialogDragWidth å¯æ‹–动弹窗宽度(右侧边)
 * Copyright (c) 2019 ruoyi
 */
export default {
  bind(el) {
    const dragDom = el.querySelector(".el-dialog");
    const lineEl = document.createElement("div");
    lineEl.style =
      "width: 5px; background: inherit; height: 80%; position: absolute; right: 0; top: 0; bottom: 0; margin: auto; z-index: 1; cursor: w-resize;";
    lineEl.addEventListener(
      "mousedown",
      function (e) {
        // é¼ æ ‡æŒ‰ä¸‹ï¼Œè®¡ç®—当前元素距离可视区的距离
        const disX = e.clientX - el.offsetLeft;
        // å½“前宽度
        const curWidth = dragDom.offsetWidth;
        document.onmousemove = function (e) {
          e.preventDefault(); // ç§»åŠ¨æ—¶ç¦ç”¨é»˜è®¤äº‹ä»¶
          // é€šè¿‡äº‹ä»¶å§”托,计算移动的距离
          const l = e.clientX - disX;
          dragDom.style.width = `${curWidth + l}px`;
        };
        document.onmouseup = function (e) {
          document.onmousemove = null;
          document.onmouseup = null;
        };
      },
      false
    );
    dragDom.appendChild(lineEl);
  },
};
src/directive/index.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
import dialogDrag from './dialog/drag'
import dialogDragWidth from './dialog/dragWidth'
import dialogDragHeight from './dialog/dragHeight'
const install = function(Vue) {
  Vue.directive('dialogDrag', dialogDrag)
  Vue.directive('dialogDragWidth', dialogDragWidth)
  Vue.directive('dialogDragHeight', dialogDragHeight)
}
export default install
src/main.js
@@ -18,9 +18,10 @@
import 'animate.css';
import VueParticles from 'vue-particles'
import dataV from '@jiaminghi/data-view'
import directive from '@/directive/index.js' // directive
Vue.use(directive)
Vue.use(dataV)
Vue.use(VueParticles)
Vue.prototype.$echarts = echarts;
import * as echarts from 'echarts';
src/router/index.js
@@ -48,6 +48,13 @@
import roleResAuthorization from '@/views/AuthorizationManagement/roleResAuthorization.vue'; //系统管理-角色资源授权
import roleMenuAuthorization from '@/views/AuthorizationManagement/roleMenuAuthorization.vue'; //系统管理-角色菜单授权
import bankController from '../views/datamanage/bankController.vue';//数据库管理
import projectController from '../views/datamanage/projectController.vue';//项目管理
import systemController from '@/views/maintenance/systemController.vue';//系统管理
import empowerController from '@/views/maintenance/empowerController.vue';//授权管理
import opexController from '@/views/maintenance/opexController.vue';//运维监控
//包二
import WareInspection from '@/views/PackageTwo/WareInspection.vue'; //数据质检-入库质检
import QualityInspection from '@/views/PackageTwo/index.vue'; //数据质检-入库质检
@@ -114,6 +121,51 @@
        },
      },
      {
        path: '/systemController',
        component: systemController,
        name: 'systemController',
        meta: {
          title: '系统管理',
          requireAuth: true, // æ ‡è¯†è¯¥è·¯ç”±æ˜¯å¦éœ€è¦ç™»å½•
        },
      },
      {
        path: '/empowerController',
        component: empowerController,
        name: 'empowerController',
        meta: {
          title: '授权管理',
          requireAuth: true, // æ ‡è¯†è¯¥è·¯ç”±æ˜¯å¦éœ€è¦ç™»å½•
        },
      },
      {
        path: '/opexController',
        component: opexController,
        name: 'opexController',
        meta: {
          title: '运维监控',
          requireAuth: true, // æ ‡è¯†è¯¥è·¯ç”±æ˜¯å¦éœ€è¦ç™»å½•
        },
      },
      {
        path: '/bankController',
        component: bankController,
        name: 'bankController',
        meta: {
          title: '数据库管理',
          requireAuth: true, // æ ‡è¯†è¯¥è·¯ç”±æ˜¯å¦éœ€è¦ç™»å½•
        },
      },
      {
        path: '/projectController',
        component: projectController,
        name: 'projectController',
        meta: {
          title: '项目管理',
          requireAuth: true, // æ ‡è¯†è¯¥è·¯ç”±æ˜¯å¦éœ€è¦ç™»å½•
        },
      },
      {
        path: '/dataController',
        component: dataController,
        name: 'dataController',
src/store/index.js
@@ -37,6 +37,9 @@
    mapMenuBoxFlag: null,
    mapSpaceQueryLayer: null,
    mapMenuShpFile: null,
    propertiesFlag: null,
    propertiesName:null,
    propertiesInfo:null,
    //主题切换
    theme: variables.theme,
@@ -57,7 +60,8 @@
    isNaviget: false,
    treeData: null,
    checkedKeys: [],
    queryInfo:[],
    queryInfo: [],
    Map3: []
  },
  mutations: {
    //获取权限合集
src/utils/validata.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,3 @@
export function isExternal(path) {
  return /^(https?:|mailto:|tel:)/.test(path)
}
src/views/Archive/dataApplication.vue
@@ -109,6 +109,7 @@
      <el-table
        :data="tableData"
        style="width: 100%"
        border
        height="calc(100% - 20px)"
      >
        <el-table-column
src/views/Archive/index.vue
@@ -54,7 +54,7 @@
          >
            <el-option
              v-for="item in categoryOptions"
              :key="item.value"
              :key="item.key"
              :label="item.value"
              :value="item.key"
            >
@@ -160,10 +160,34 @@
              slot="header"
              class="clearfix"
            >
              <span v-show="formInline.dataType=='type2'">{{item.name}}</span>
              <span>{{item.tabDesc}}</span>
              <span v-show="formInline.dataType =='type2'">
                <span v-if="item.ismeta > 0">
                  <el-link
                    style="color: #409eff"
                    title="源数据查询"
                    target="_blank"
                    @click="setQueryMetaData(item)"
                  >{{ item.name }}</el-link>
                </span>
                <span v-else-if="item.metaid > 0"> <el-link
                    style="color: #409eff"
                    title="元数据查询"
                    target="_blank"
                    @click="setMetaDataQuery(item)"
                  >{{ item.name }}</el-link></span>
                <span v-else>{{ item.name }}</span>
              </span>
              <span v-show="formInline.dataType !='type2'">{{item.tabDesc}}</span>
              <div style="float: right; padding: 3px 0">
                <i
                  v-show="!showView(item.type) && formInline.dataType=='type2'"
                  class="el-icon-view"
                  :title="$t('common.preview')"
                  @click="setAttatchFileView(index, item)"
                ></i>
                <i
                style="margin-left:10px"
                  class="el-icon-tickets"
                  :title="$t('common.details')"
                  @click="setCardDetails(item)"
@@ -448,6 +472,103 @@
          >ç¡® å®š</el-button>
        </span>
      </el-dialog>
      <!-- æ•°æ®åº“附件信息 -->
      <el-dialog
        :title="$t('common.enclosure')"
        :visible.sync="outerVisible"
        :close-on-click-modal="false"
        width="50%"
        :modal="false"
      >
        <div style="height:68vh">
          <el-form
            :model="fromfile"
            class="demo-form-inline"
          >
            <el-form-item>
              <el-input
                v-model="fromfile.file"
                style="width: 300px; margin-right: 20px"
                :placeholder="$t('common.choose')"
                disabled
              ></el-input>
              <input
                name="file1"
                type="file"
                id="insertFile"
                multiple="multiple"
                style="display: none"
                @change="insertFile( )"
              />
              <el-link
                @click="getInsertFile( )"
                :underline="false"
              ><i class="el-icon-folder-opened"></i></el-link>
            </el-form-item>
            <el-form-item>
              <el-row>
                <el-col :span="2">
                  <el-link
                    class="elLink"
                    :underline="false"
                    @click="setAttachInsert"
                  >{{$t('common.append')}}</el-link>
                </el-col>
                <el-col :span="2">
                  <el-link
                    class="elLink"
                    :underline="false"
                    @click="setAttachDel"
                  >{{$t('common.delete')}}</el-link>
                </el-col>
              </el-row>
            </el-form-item>
          </el-form>
          <el-table
            :data="tableAttach"
            ref="filterTable"
            height="calc(100% - 130px)"
            border
            style="width: 100%"
            @selection-change="handleAttatchChange"
          >
            <el-table-column
              type="selection"
              width="70"
            />
            <el-table-column
              width="60"
              type="index"
              :label="$t('common.index')"
            />
            <el-table-column
              prop="name"
              :label="$t('common.fileNme')"
            />
            <el-table-column
              prop="sizes"
              :label="$t('common.size')"
              :formatter="statSizeChange"
            />
            <el-table-column
              align="center"
              :label="$t('common.operate')"
              min-width="100"
            >
              <template slot-scope="scope">
                <el-link
                  v-if="matchState(scope, /[]/)"
                  @click="setAttatchDetail(scope.$index, scope.row)"
                  class="elLink"
                >{{ $t('common.see') }}</el-link>
              </template>
            </el-table-column>
          </el-table>
        </div>
      </el-dialog>
      <!-- æ•°æ®åº“Table信息 -->
      <div style="height:68vh">
        <el-form
          :model="formInline"
@@ -694,6 +815,236 @@
        <map-sdk v-if='showMapVisible'></map-sdk>
      </div>
    </el-dialog>
    <el-dialog
      :title="fromQueryMeta.title"
      :visible.sync="queryMetaFlag1"
      width="70%"
    >
      <div style="height: 65vh; width: 100%">
        <el-table
          ref="filterTable"
          :data="metaDataTable1"
          style="width: 100%"
          height="100%"
        >
          <el-table-column
            align="center"
            type="index"
            :label="$t('common.index')"
            width="70px"
          ></el-table-column>
          <el-table-column
            align="center"
            prop="name"
            :label="$t('common.name')"
            width="120"
          >
          </el-table-column>
          <el-table-column
            align="center"
            prop="dirName"
            :label="$t('dataManage.dataUpObj.catalogue')"
            width="300"
          />
          <el-table-column
            align="center"
            prop="depName"
            :label="$t('dataManage.dataUpObj.company')"
            width="200"
          />
          <el-table-column
            align="center"
            prop="verName"
            :label="$t('dataManage.dataUpObj.versionNo')"
          />
          <el-table-column
            align="center"
            prop="type"
            :label="$t('common.type')"
          />
          <el-table-column
            align="center"
            prop="sizes"
            :label="$t('common.size')"
            :formatter="stateFormatSizes"
          />
          <el-table-column
            align="center"
            :label="$t('dataManage.dataUpObj.tableName')"
          >
            <template slot-scope="scope">
              <a class="scopeRowColor">{{
                  scope.row.tab
                }}</a>
            </template>
          </el-table-column>
          <el-table-column
            align="center"
            prop="rows"
            :label="$t('common.lineNuber')"
          />
          <el-table-column
            align="center"
            prop="desc"
            :label="$t('dataManage.dataUpObj.describe')"
          />
        </el-table>
      </div>
    </el-dialog>
    <el-dialog
      :title="fromQueryMeta.title"
      :visible.sync="queryMetaFlag"
      width="70%"
    >
      <div style="height: 65vh; width: 100%">
        <el-form
          :inline="true"
          :model="fromQueryMeta"
          class="demo-form-inline"
        >
          <el-form-item>
            <el-input
              size="small"
              v-model="fromQueryMeta.name"
            ></el-input>
          </el-form-item>
          <el-form-item>
            <el-button
              type="primary"
              size="small"
              @click="setSearchMetaData()"
            >查询
            </el-button>
            <el-button
              type="info"
              size="small"
              @click="setRestMetaData()"
            >重置
            </el-button>
          </el-form-item>
        </el-form>
        <el-table
          ref="filterTable"
          :data="metaDataTable"
          style="width: 100%"
          height="calc(100% - 100px)"
        >
          <el-table-column
            align="center"
            type="index"
            :label="$t('common.index')"
            width="70px"
          ></el-table-column>
          <el-table-column
            align="center"
            prop="name"
            :label="$t('common.name')"
            width="120"
          >
          </el-table-column>
          <el-table-column
            align="center"
            prop="dirName"
            :label="$t('dataManage.dataUpObj.catalogue')"
            width="300"
          />
          <el-table-column
            align="center"
            prop="depName"
            :label="$t('dataManage.dataUpObj.company')"
            width="200"
          />
          <el-table-column
            align="center"
            prop="verName"
            :label="$t('dataManage.dataUpObj.versionNo')"
          />
          <el-table-column
            align="center"
            prop="type"
            :label="$t('common.type')"
          />
          <el-table-column
            align="center"
            prop="sizes"
            :label="$t('common.size')"
            :formatter="stateFormatSizes"
          />
          <el-table-column
            align="center"
            :label="$t('dataManage.dataUpObj.tableName')"
          >
            <template slot-scope="scope">
              <a
                class="scopeRowColor"
                @click="detail(scope.row)"
              >{{
                  scope.row.tab
                }}</a>
            </template>
          </el-table-column>
          <el-table-column
            align="center"
            prop="rows"
            :label="$t('common.lineNuber')"
          />
          <el-table-column
            align="center"
            prop="desc"
            :label="$t('dataManage.dataUpObj.describe')"
          />
        </el-table>
        <div
          class="pagination_box"
          style="margin-top: 15px"
        >
          <el-pagination
            @size-change="handleMetaSizeChange"
            @current-change="handMetaCurrentChange"
            :current-page="listMetaData.pageIndex"
            :page-sizes="[10, 20, 50, 100]"
            :page-size="listMetaData.pageSize"
            layout="total, sizes, prev, pager, next, jumper"
            :total="listMetaData.count"
          >
          </el-pagination>
        </div>
      </div>
    </el-dialog>
    <el-dialog
      title="预览"
      :append-to-body="false"
      :visible.sync="dialog.dialogVisible"
      width="70%"
      :close-on-click-modal="false"
    >
      <div
        v-if="dialog.isPdf"
        class="pdfClass"
      >
        <iframe
          :src="dialog.src"
          type="application/x-google-chrome-pdf"
          width="100%"
          height="100%"
        >
        </iframe>
      </div>
      <div
        v-if="dialog.isJpg"
        class="pdfClass"
      >
        <img
          style="width:100%; height:100%"
          :src="dialog.src"
          alt=""
        />
      </div>
    </el-dialog>
    <iframe
      id="downFrame"
      src=""
@@ -720,8 +1071,13 @@
  sign_getPublicKey,
  dataLib_downloadReq,
  dataLib_selectDownloadFile,
  dataLib_selectPageCountForDownload
  dataLib_selectPageCountForDownload,
  dataLib_selectPageAndCountByPid,
  dataLib_selectMetaById,
  dataLib_selectFiles,
  dataLib_deletes
} from '../../api/api';
import {dataLibView } from '@/api/screen.js'
export default {
  components: {
    MyBread, MapSdk
@@ -748,6 +1104,7 @@
      }
    };
    return {
      fromfile: { file: '' },
      fromSqlflag: false,
      filedsOption: [],
      condOption: [],
@@ -819,8 +1176,40 @@
      downloadTableData: [],
      dialogMapVisible: false,
      showMapVisible: false,
      queryMetaFlag1: false,
      metaDataTable1: [],
      fromQueryMeta: {
        title: ""
      },
      listMetaData: {
        metaid: 0,
        name: "",
        pageIndex: 1,
        pageSize: 10,
        count: 0,
      },
      fromQueryMeta: {
        name: ""
      },
      queryMetaFlag: false,
      metaDataTable: [],
      upAttach: {
        tabName: null,
        eventid: null,
      },
      outerVisible: false,
      tableAttach: [],
      dataLib_selectFiles: [],
      attacgSelection: [],
      dialog: {
        dialogVisible: false,
        isPdf: false,
        isJpg: false,
        src: ''
      }
    };
  },
  mounted() {
    this.getDepTreeData();
    this.getCategorySelectData();
@@ -828,8 +1217,206 @@
    this.signGetPublicKey();
  },
  methods: {
    matchState(state = "", reg) {
      var row = state.row;
      var name = row.name;
      if (name.indexOf('.pdf') != -1 || name.indexOf('.jpg') != -1 || name.indexOf('.gif') != -1 || name.indexOf('.png') != -1 || name.indexOf('.jpeg') != -1) {
        return true;
      }
      return false;
    },
    // é™„ä»¶=>表格选择
    handleAttatchChange(val) {
      this.attacgSelection = val;
    },
    //附件=>文件选择
    getInsertFile() {
      $('#insertFile').click();
    },
    insertFile() {
      var val = document.getElementById('insertFile').files;
      if (!val || !val.length) return;
      this.fromfile.file = val[0].name;
    },
    getAttachTable(index, row) {
      if (row.eventid != null) {
        this.upAttach.eventid = row.eventid;
      } else {
        this.upAttach.eventid = "";
      }
      this.outerVisible = true;
      this.getAttacthFlieList();
    },
    //附件列表查询
    async getAttacthFlieList() {
      var obj = this.upAttach;
      const res = await dataLib_selectFiles(obj);
      if (res.code != 200) {
        this.$message.error('列表调用失败');
        return
      }
      this.tableAttach = res.result;
    },
    refreshAttatchDetail() {
      this.dialog.src = "";
      this.dialog.dialogVisible = false;
      this.dialog.isPdf = false;
      this.dialog.isJpg = false;
    },
    //附件查看
    setAttatchDetail(index, row) {
      this.refreshAttatchDetail()
      var name = row.name;
      if (name.indexOf('.pdf') != -1) {
        this.dialog.dialogVisible = true;
        this.dialog.isPdf = true;
        var url = BASE_URL + "/res/downloadForView?guid=" + row.guid + "&token=" + getToken();
        this.dialog.src = url
      } else if (name.indexOf('.jpg') != -1 || name.indexOf('.gif') != -1 || name.indexOf('.png') != -1 || name.indexOf('.jpeg') != -1) {
        this.dialog.dialogVisible = true;
        this.dialog.isJpg = true;
        var url = BASE_URL + "/res/downloadForView?guid=" + row.guid + "&token=" + getToken();
        this.dialog.src = url
      }
    },
    setAttatchFileView(index, row) {
      this.refreshAttatchDetail()
      var name = `${row.name}.${row.type}`;
      if (name.indexOf('.pdf') != -1) {
        this.dialog.isPdf = true;
      } else if (name.indexOf('.jpg') != -1 || name.indexOf('.gif') != -1 || name.indexOf('.png') != -1 || name.indexOf('.jpeg') != -1) {
        this.dialog.isJpg = true;
      }
      this.dialog.dialogVisible = true;
      this.dialog.isPdf = true;
      var url = BASE_URL + "/dataLib/downloadForView?guid=" + row.guid + "&token=" + getToken();
      this.dialog.src = url;
    },
    showView(name) {
      if (!name) return false
      return name.indexOf('pdf') || name.indexOf('jpg') != -1 || name.indexOf('gif') != -1 || name.indexOf('png') != -1 || name.indexOf('jpeg') != -1
    },
    //附件刪除
    async setAttachDel() {
      var std = [];
      for (var i in this.attacgSelection) {
        std.push(this.attacgSelection[i].id);
      }
      const res = await dataLib_deletes({ ids: std.toString() });
      if (res.code != 200) {
        this.$message.error('文件删除失败');
      }
      this.getAttacthFlieList();
    },
    //附件列表新增
    setAttachInsert() {
      var token = getToken();
      var fs = document.getElementById("insertFile");
      if (fs.files.length == 0) {
        this.$message({
          message: '请选择要上传的文件!',
          type: 'warning'
        });
        return;
      }
      const formData = new FormData()
      for (var i = 0, c = fs.files.length; i < c; i++) {
        formData.append('file', fs.files[i]); // fs.files[i].name,file
      }
      $.ajax(BASE_URL + "/dataQuery/uploadFiles?token=" + token + "&tabName=" + this.upAttach.tabName + "&eventid=" + this.upAttach.eventid, {
        type: "post",
        data: formData,
        async: true,
        cache: false,
        processData: false,
        contentType: false,
        success: (rs) => {
          this.$message({
            message: '附件添加成功',
            type: 'success'
          });
          document.getElementById("insertFile").value = "";
          this.fromfile = {
            file: '',
          }
          this.getAttacthFlieList();
        },
        error: (e) => {
          document.getElementById("insertFile").value = "";
          this.fromfile = {
            file: '',
          }
          this.$message.error('附件添加失败');
        }
      });
    },
    setRestMetaData() {
      this.fromQueryMeta.name = "";
      this.listMetaData.name = this.fromQueryMeta.name;
      this.listMetaData.pageIndex = 1;
      this.listMetaData.pageSize = 10;
      this.startQueryMetaData();
    },
    setSearchMetaData() {
      this.listMetaData.name = this.fromQueryMeta.name;
      this.listMetaData.pageIndex = 1;
      this.listMetaData.pageSize = 10;
      this.startQueryMetaData();
    },
    //源数据页面切换
    handleMetaSizeChange(val) {
      this.listMetaData.pageIndex = 1;
      this.listMetaData.pageSize = val;
      this.startQueryMetaData();
    },
    //源数据页面切换
    handMetaCurrentChange(val) {
      this.listMetaData.pageIndex = val;
      this.startQueryMetaData();
    },
    //源数据查询
    setQueryMetaData(row) {
      this.fromQueryMeta.title = row.name;
      this.listMetaData = {
        metaid: row.id,
        name: "",
        pageIndex: 1,
        pageSize: 10,
        count: 0,
      };
      this.startQueryMetaData();
      this.queryMetaFlag = true;
    },
    async startQueryMetaData() {
      const data = await dataLib_selectPageAndCountByPid(this.listMetaData);
      if (data.code != 200) {
        return;
      }
      this.metaDataTable = data.result;
      this.listMetaData.count = data.count;
    },
    //元数据查询
    async setMetaDataQuery(row) {
      this.fromQueryMeta.title = row.name;
      this.listMetaData = {
        id: row.metaid,
      };
      const data = await dataLib_selectMetaById(this.listMetaData);
      if (data.code != 200) {
        return;
      }
      this.queryMetaFlag1 = true;
      this.metaDataTable1 = [data.result];
    },
    getSpaceMapVisibale() {
      sgworld.Creator.SimpleGraphic.clear();
      for (var i in this.$store.state.queryInfo) {
@@ -1097,15 +1684,21 @@
    },
    //重置
    setQuerAllTablesRefresh() {
      this.formInline = {
        fileName: "",//高级搜索
        dataType: "type2", //数据类型
        category: [], //查询类别,
        item: [],
        depcode: this.depOption[0].code,
        depName: this.depOption[0].name,
        keywords: '',
      }
      // this.formInline = {
      //   fileName: "",//高级搜索
      //   dataType: "type2", //数据类型
      //   category: [], //查询类别,
      //   item: [],
      //   depcode: null, //单位,
      //   depName: null,//单位,
      //   keywords: '',
      // }
      this.formInline.fileName = "";//高级搜索
      this.formInline.category = [];//高级搜索
      this.formInline.item = [];//高级搜索
      this.formInline.depcode = null;//高级搜索
      this.formInline.depName = null;//高级搜索
      this.formInline.keywords = "";//高级搜索
      this.getAllTabesData();
    },
    handleSelectionChange() {
@@ -1130,6 +1723,7 @@
      this.listBankData.pageIndex = 1;
      this.listBankData.pageSize = 10;
      this.listBankData.title = res.tabDesc;
      this.upAttach.tabName = res.ns + "." + res.tab;
      this.filedsLayer = this.getBankTableFiled();
      this.getCollapseTable(this.filedsLayer);
    },
@@ -1311,6 +1905,9 @@
    add0(m) {
      return m < 10 ? '0' + m : m;
    },
    statSizeChange(row, column) {
      return this.stateFormatSizes(row.sizes)
    },
    stateFormatSizes(res) {
      if (res >= 1024) {
        const val = parseFloat(res / 1024).toFixed(3);
@@ -1406,18 +2003,24 @@
        return;
      }
      var val = data.result;
      val = val.filter((res) => {
      if (val) {
        val = val.filter((res) => {
          res.mold = "数据库"
          res.isShow = false
          return res;
        })
        this.listData.count = data.count;
        this.monthdata = data.result;
      } else {
        this.listData.count = 0;
        this.monthdata = [];
      }
        res.mold = "数据库"
        res.isShow = false
        return res;
      })
      this.listData.count = data.count;
      this.monthdata = data.result;
    },
    //查询文件数据
    async getQueryFileData() {
      this.listData.dirs = "";
      this.listData.count = 0;
      if (this.formInline.category.length != 0) {
        this.listData.dirs += this.formInline.category.toString();
      }
@@ -1434,16 +2037,22 @@
        this.$message.error('文件数据列表调用失败');
      }
      var val = data.result;
      val = val.filter((res) => {
        var type = "." + res.type;
        res.name = res.name.replaceAll(type, "")
        res.mold = "文件"
        res.isShow = false
        return res;
      })
      if (val) {
        val = val.filter((res) => {
          var type = "." + res.type;
          res.name = res.name.replaceAll(type, "")
          res.mold = "文件"
          res.isShow = false
          return res;
        })
      this.monthdata = val;
      this.listData.count = data.count;
        this.monthdata = val;
        this.listData.count = data.count;
      } else {
        this.monthdata = [];
        this.listData.count = 0;
      }
    },
    //查询数据
    getAllTabesData() {
@@ -1473,6 +2082,7 @@
      if (data.code != 200) {
        this.$message.error('资料类别列表调用失败');
      }
      this.categoryOptions = data.result;
    },
    //关键字查询
@@ -1488,7 +2098,9 @@
    },
    //资料类别下拉框值改变触发
    categorySelectChange(model, prop, options) {
      this.getAllTabesData();
    },
    // é¡¹ç›®åç§°ä¸‹æ‹‰æ¡†å€¼æ”¹å˜è§¦å‘
    itemSelectChange(model, prop, options) {
@@ -1501,8 +2113,8 @@
        return this.$message.error('单位列表获取失败');
      }
      this.depOption = this.treeData(data.result);
      this.formInline.depcode = this.depOption[0].code
      this.formInline.depName = this.depOption[0].name;
      // this.formInline.depcode = this.depOption[0].code
      // this.formInline.depName = this.depOption[0].name;
      this.getAllTabesData();
    },
    //树列表生成
@@ -1598,5 +2210,10 @@
      justify-content: center;
    }
  }
  .pdfClass {
    height: 70vh;
    width: 100%;
    position: relative;
  }
}
</style>
src/views/AuthorizationManagement/menuRoleAuthorization.vue
@@ -97,6 +97,7 @@
        <el-table
          :data="tableData"
          style="width: 100%"
          border
          height="calc(100% - 80px)"
          @selection-change="handleSelectionChange"
        >
@@ -177,6 +178,7 @@
    <el-dialog
      :title="$t('operatManage.UserRoleAuthorizationObj.Added')"
      :visible.sync="dialogTableVisible"
      :before-close="handleClose"
    >
      <el-table
        :data="gridData"
@@ -208,7 +210,7 @@
        </el-pagination>
      </div>
      <div slot="footer" class="dialog-footer">
        <el-button size="small" @click="dialogTableVisible = false">{{
        <el-button size="small" @click="handleClose">{{
          $t("dataManage.dictionaryManageObj.cancel")
        }}</el-button>
        <el-button size="small" type="primary" @click="addConfirm">{{
@@ -503,6 +505,13 @@
          break;
      }
    },
    handleClose() {
      this.$confirm("关闭后无法保存,是否关闭?")
        .then((_) => {
          this.dialogTableVisible = false
        })
        .catch((_) => { });
    },
  },
  created() {
    var val = this.$store.state.currentPerms;
src/views/AuthorizationManagement/roleMenuAuthorization.vue
@@ -45,6 +45,7 @@
        <el-table
          :data="tableData"
          style="width: 100%"
          border
          @row-click="singleElection"
          highlight-current-row
          height="calc(100% - 135px)"
@@ -149,6 +150,7 @@
        <el-divider class="divider" />
        <el-table
          :data="menuTableData"
          border
          style="width: 100%"
          height="calc(100% - 85px)"
          @selection-change="handleSelectionChange"
@@ -191,6 +193,7 @@
    <el-dialog
      :title="$t('operatManage.UserRoleAuthorizationObj.Added')"
      :visible.sync="dialogTableVisible"
      :before-close="handleClose"
    >
      <el-table
        :data="gridData"
@@ -233,7 +236,7 @@
      >
        <el-button
          size="small"
          @click="dialogTableVisible = false"
          @click="handleClose"
        >{{
          $t('dataManage.dictionaryManageObj.cancel')
        }}</el-button>
@@ -529,6 +532,13 @@
          break;
      }
    },
    handleClose() {
      this.$confirm("关闭后无法保存,是否关闭?")
        .then((_) => {
          this.dialogTableVisible = false
        })
        .catch((_) => { });
    },
  },
  created() {
    var val = this.$store.state.currentPerms;
src/views/AuthorizationManagement/roleResAuthorization.vue
@@ -38,6 +38,7 @@
        <el-table
          :data="tableData"
          style="width: 100%"
          border
          @row-click="singleElection"
          highlight-current-row
           height="calc(100% - 80px)"
@@ -125,7 +126,7 @@
        <el-table
          :data="usertableData"
          border
          style="width: 100%"
           height="calc(100% - 80px)"
          @selection-change="handleSelectionChange"
src/views/AuthorizationManagement/userRoleAuthorization.vue
@@ -52,6 +52,7 @@
      <el-table
        :data="tableData"
        style="width: 100%"
        border
        @row-click="singleElection"
        height="calc(100% - 80px)"
      >
@@ -136,6 +137,7 @@
      <el-table
        :data="usertableData"
        style="width: 100%"
        border
         height="calc(100% - 80px)"
        @selection-change="handleSelectionChange"
      >
@@ -168,6 +170,7 @@
    <el-dialog
      :title="$t('operatManage.UserRoleAuthorizationObj.Added')"
      :visible.sync="dialogTableVisible"
      :before-close="handleClose"
    >
      <el-table
        :data="gridData"
@@ -199,7 +202,7 @@
        </el-pagination>
      </div>
      <div slot="footer" class="dialog-footer">
        <el-button size="small" @click="dialogTableVisible = false">{{
        <el-button size="small" @click="handleClose">{{
          $t("dataManage.dictionaryManageObj.cancel")
        }}</el-button>
        <el-button size="small" type="primary" @click="addConfirm">{{
@@ -564,6 +567,13 @@
          break;
      }
    },
    handleClose() {
      this.$confirm("关闭后无法保存,是否关闭?")
        .then((_) => {
          this.dialogTableVisible = false
        })
        .catch((_) => { });
    },
  },
  created() {
    var val = this.$store.state.currentPerms;
src/views/Synthesis/LeftMenu.vue
@@ -15,6 +15,7 @@
    <mapinfo ref="mapinfo" />
    <maplayer ref="maplayer" />
    <queryinfo ref="queryinfo" />
    <terrainDig ref="terrainDig" />
    <input
      type="file"
      accept=".kml"
@@ -39,6 +40,7 @@
import mapinfo from "../Tools/mapinfo.vue";
import maplayer from "../Tools/maplayer.vue";
import queryinfo from "../Tools/queryinfo.vue";
import terrainDig from "../Tools/terrainDig.vue";
import $ from "jquery";
import { getToken } from "@/utils/auth";
import ImageWMS from "ol/source/ImageWMS";
@@ -58,7 +60,7 @@
import { geometry } from "@turf/turf";
export default {
  components: { mapinfo, maplayer, queryinfo },
  components: { mapinfo, maplayer, queryinfo, terrainDig },
  data() {
    return {
      showTwoMenuFlag: false,
@@ -1171,6 +1173,12 @@
          break;
        case "d2": //坡度分析
          that.isslopeFlag = !that.isslopeFlag;
          var val = {
            name: "Lengend",
            id: res,
            vshow: that.isslopeFlag
          };
          this.$bus.$emit("mapChangeBox", val);
          window.PDelevationTool = new SmartEarth.ElevationTool(sgworld); //全局变量
          if (that.isslopeFlag == true) {
            PDelevationTool.type = "slope";
@@ -1179,6 +1187,7 @@
            PDelevationTool.type = "none";
          }
          PDelevationTool.render();
          break;
        case "d3": //路径分析
@@ -1298,52 +1307,64 @@
          }
          break;
        case "d10": //地面整平
          if (this.DXZPState != null) {
            this.DXZPState.drawHandler && this.DXZPState.drawHandler.destroy();
            Viewer._container.style.cursor = "default";
            this.DXZPState.tooltip && this.DXZPState.tooltip.show(false);
            if (window.DXTerrainFlattening != null) {
              DXTerrainFlattening.remove();
            }
            window.DXTerrainFlattening = null;
            this.DXZPState = null;
          } else {
            this.DXZPState = sgworld.Creator.createSimpleGraphic(
              "polygon",
              {
                clampToGround: true,
              },
              function (entity) {
                let positions = entity.polygon.hierarchy.getValue().positions;
                sgworld.Creator.SimpleGraphic.remove(entity.id);
                window.DXTerrainFlattening =
                  sgworld.Creator.createTerrainModifier(
                    "地形压平",
                    positions,
                    10,
                    {}
                  );
              }
            );
          }
          var val = {
            name: "Trrain",
            id: res,
          };
          this.$bus.$emit("mapChangeBox", val);
          // if (this.DXZPState != null) {
          //   this.DXZPState.drawHandler && this.DXZPState.drawHandler.destroy();
          //   Viewer._container.style.cursor = "default";
          //   this.DXZPState.tooltip && this.DXZPState.tooltip.show(false);
          //   if (window.DXTerrainFlattening != null) {
          //     DXTerrainFlattening.remove();
          //   }
          //   window.DXTerrainFlattening = null;
          //   this.DXZPState = null;
          // } else {
          //   this.DXZPState = sgworld.Creator.createSimpleGraphic(
          //     "polygon",
          //     {
          //       clampToGround: true,
          //     },
          //     function (entity) {
          //       let positions = entity.polygon.hierarchy.getValue().positions;
          //       sgworld.Creator.SimpleGraphic.remove(entity.id);
          //       window.DXTerrainFlattening =
          //         sgworld.Creator.createTerrainModifier(
          //           "地形压平",
          //           positions,
          //           10,
          //           {}
          //         );
          //     }
          //   );
          // }
          break;
        case "d11": //地形开挖
          if (window.Excavation) {
            window.Excavation.drawHandler &&
              window.Excavation.drawHandler.destroy();
            Viewer._container.style.cursor = "default";
            window.Excavation.tooltip && window.Excavation.tooltip.show(false);
            window.Excavation.clear();
            window.Excavation = null;
          } else {
            window.Excavation = sgworld.Analysis.TerrainExcavation(
              10,
              {},
              function () { }
            );
          }
          this.$refs &&
            this.$refs.terrainDig &&
            this.$refs.terrainDig.open("管道空间分析", null, {
              close: () => {
              },
            });
          // if (window.Excavation) {
          //   window.Excavation.drawHandler &&
          //     window.Excavation.drawHandler.destroy();
          //   Viewer._container.style.cursor = "default";
          //   window.Excavation.tooltip && window.Excavation.tooltip.show(false);
          //   window.Excavation.clear();
          //   window.Excavation = null;
          // } else {
          //   window.Excavation = sgworld.Analysis.TerrainExcavation(
          //     10,
          //     {},
          //     function () { }
          //   );
          // }
          break;
        case "d12": //通视分析
@@ -1438,7 +1459,7 @@
        pointSelect: true,
        spood: 20,
        GroupID: 0,
        url: "/SmartEarthSDK/Workers/image/waterNormals.jpg",
        url: "/SmartEarthSDK/Workers/image/33.gif",
      };
      window.AnalysisFlood = sgworld.Command.execute(
        2,
@@ -1794,6 +1815,7 @@
.menu_Box {
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
  overflow-y: auto;
src/views/Synthesis/index.vue
@@ -15,8 +15,15 @@
          <div class="menuImage" :class="item.class"></div>
        </div>
      </div>
      <div class="MenuIcon menu-class" :class="{ lefMenuActive: showMenuFlag == menuItem.id }">
        <div class="menuDiv" :title="menuItem.name" @click="setMenuChange(menuItem)">
      <div
        class="MenuIcon menu-class"
        :class="{ lefMenuActive: showMenuFlag == menuItem.id }"
      >
        <div
          class="menuDiv"
          :title="menuItem.name"
          @click="setMenuChange(menuItem)"
        >
          <div class="menuImage" :class="menuItem.class"></div>
        </div>
      </div>
@@ -38,10 +45,10 @@
</template>
<script>
import { getPerms } from "../../api/api";
import mapdiv from "../../components/MapDiv.vue";
import leftMenu from "./LeftMenu.vue";
import maplayer from "../Tools/maplayer.vue";
import { getPerms } from "../../api/api"
import mapdiv from "../../components/MapDiv.vue"
import leftMenu from "./LeftMenu.vue"
import maplayer from "../Tools/maplayer.vue"
export default {
  components: {
    mapdiv,
@@ -123,36 +130,40 @@
        class: "menu_img1",
        show: true,
      },
    };
    }
  },
  watch: {},
  methods: {
    //左侧菜单滑动显隐
    setMenuChange(res) {
      if (res.id == this.showMenuFlag){
        return;
      if (res.id == this.showMenuFlag) {
        return
      }
      //清除查询弹窗
      this.$store.state.mapMenuBoolean = false;
      this.$store.state.mapMenuBoxFlag = "";
      this.$store.state.mapMenuBoolean = false
      this.$store.state.mapMenuBoxFlag = ""
      //清除分析模块的全局变量
      ClearAlayse();
      ClearAlayse()
      switch (res.id) {
        case 1:
          if (this.showMenuFlag == null) return;
          this.openStatus = !this.openStatus;
          break;
          if (this.showMenuFlag == null) return
          this.openStatus = !this.openStatus
          // ç‚¹å‡»å·¦ä¾§èœå•是调整
          setTimeout(() => {
            window.map.updateSize()
          }, 1000)
          break
        case 10:
          if (this.showMenuFlag == null) {
            this.openStatus = false;
            this.openStatus = false
          }
          this.$bus.$emit("setChangeTwoMenu", res.id - 2);
          break;
          this.$bus.$emit("setChangeTwoMenu", res.id - 2)
          break
        default: {
          this.openStatus = true;
          this.$bus.$emit("setChangeTwoMenu", res.id - 2);
          this.showMenuFlag = res.id;
          this.openStatus = true
          this.$bus.$emit("setChangeTwoMenu", res.id - 2)
          this.showMenuFlag = res.id
        }
      }
    },
@@ -162,63 +173,63 @@
        this.$store.state.currentPerms == "" ||
        this.$store.state.currentPerms != "/comprehensive"
      ) {
        this.$store.state.currentPerms = "/comprehensive";
        this.$store.state.currentPerms = "/comprehensive"
      }
      if (this.$store.state.permsEntity.length == 0) {
        const data = await getPerms();
        this.$store.state.permsEntity = data.result;
        const data = await getPerms()
        this.$store.state.permsEntity = data.result
      }
      var val = this.$store.state.currentPerms;
      var permsEntity = this.$store.state.permsEntity;
      var val = this.$store.state.currentPerms
      var permsEntity = this.$store.state.permsEntity
      for (var i = 0; i < permsEntity.length; i++) {
        if (permsEntity[i].perms == val) {
          this.showMenuChange(permsEntity[i], permsEntity);
          this.showMenuChange(permsEntity[i], permsEntity)
        }
      }
      for (var i in this.menuOption) {
        if (this.menuOption[i].show != false) {
          this.showMenuList.push(this.menuOption[i]);
          this.showMenuList.push(this.menuOption[i])
        }
      }
      //初始化二级菜单
      if (this.showMenuList.length > 1) {
        var index = this.showMenuList[1].id;
        this.$bus.$emit("setChangeTwoMenu", index - 2);
        var index = this.showMenuList[1].id
        this.$bus.$emit("setChangeTwoMenu", index - 2)
      }
    },
    showMenuChange(res, result) {
      var permsId = res.id;
      this.$store.state.syntiesis.menu = res.id;
      var permsId = res.id
      this.$store.state.syntiesis.menu = res.id
      for (var i = 0; i < result.length; i++) {
        if (result[i].pid == permsId) {
          this.showMenuStatus(result[i]);
          this.showMenuStatus(result[i])
        }
      }
    },
    showMenuStatus(res) {
      var std = [];
      std.push(this.menuOption[0]);
      var std = []
      std.push(this.menuOption[0])
      for (var i = 1; i < this.menuOption.length; i++) {
        if (this.menuOption[i].name == res.cnName) {
          this.menuOption[i].show = true;
          this.menuOption[i].show = true
        }
      }
    },
  },
  mounted() {
    // this.$bus.$emit('showLeftMenu', true);
    window.sgworld.navControl("nav", true);
    this.$store.state.mapMenuBoolean = false;
    this.$store.state.mapMenuBoxFlag = null;
    this.$store.state.mapPopBoolean = false;
    this.$store.state.mapPopBoxFlag = null;
    window.sgworld.navControl("nav", true)
    this.$store.state.mapMenuBoolean = false
    this.$store.state.mapMenuBoxFlag = null
    this.$store.state.mapPopBoolean = false
    this.$store.state.mapPopBoxFlag = null
  },
  //初始化菜单授权
  created() {
    this.getPermsMenu();
    this.getPermsMenu()
  },
};
}
</script>
<style lang="less" scoped>
@@ -266,12 +277,12 @@
          center;
      }
      .menu_img4 {
        background: url("../../assets/img/synthesis/图层 8 æ‹·è´ 2.png")
          no-repeat center;
        background: url("../../assets/img/synthesis/图层 3.png") no-repeat
          center;
      }
      .menu_img5 {
        background: url("../../assets/img/synthesis/矢量智能对象 æ‹·è´ 3.png")
          no-repeat center;
        background: url("../../assets/img/synthesis/图层 4.png") no-repeat
          center;
      }
      .menu_img6 {
        background: url("../../assets/img/synthesis/图层 9 æ‹·è´ 4.png")
@@ -313,13 +324,14 @@
    .left_main {
      margin: 0;
      //width: 255px;
      width: 130px;
      padding-bottom: 10px;
      height: calc(100% - 10px);
      width: 140px;
      // padding-bottom: 10px;
      height: 100%;
      overflow-y: auto;
      //height: auto;
      transition: width 1s;
      background: #F4F8FF;
      // background: #f4f8ff;
    }
    .right_main {
@@ -369,7 +381,7 @@
    }
  }
  .menu-class{
  .menu-class {
    position: absolute;
    bottom: 10px;
    left: 0;
src/views/Thematic/index.vue
@@ -4,9 +4,12 @@
    <top class="title" ref="title"></top>
    <left
      class="mapleft"
      :style="{ width: leftWidth, left: leftTree && leftWidth == '20%' ? '-14px' : '0' }"
      :style="{ width: leftWidth, left: leftWidth == '22%' ? '-19px' : '0' }"
      ref="mapleft"
    ></left>
    <project-tree class="project-tree" v-if="ProjectreeDisplay"></project-tree>
    <right
      class="mapright"
      :style="{ width: rightWidth }"
@@ -22,41 +25,46 @@
import left from "@/components/Screen/left.vue"
import right from "../../components/Screen/right.vue"
import bottom from "../../components/Screen/bottom.vue"
import ProjectTree from "../../components/Screen/ProjectTree.vue"
import axios from "axios"
export default {
  components: { mapsdk, top, left, right, bottom },
  components: { mapsdk, top, left, right, bottom, ProjectTree },
  data() {
    return {
      leftWidth: "20%",
      leftWidth: "22%",
      rightWidth: "22%",
      leftTree: false,
      currTree: false
      currTree: false,
      ProjectreeDisplay: false,
    }
  },
  mounted() {},
  created() {},
  created() {
    this.$bus.$on("changeTree", key => {
      this.ProjectreeDisplay = key
    })
  },
  methods: {
    //修改左侧宽度
    ChangeWidth(parm) {
      if (parm == "left") {
        if (this.leftWidth == "20%") {
        if (this.leftWidth == "22%") {
          this.leftWidth = "8px"
        } else {
          this.leftWidth = "20%"
          this.leftWidth = "22%"
        }
      }
      if (parm == "leftView" || parm == "leftTree") {
        this.leftWidth = "20%"
        this.leftWidth = "22%"
        this.rightWidth = "22%"
      }
      if (parm == "leftView") {
        this.leftTree = false
      }
      if (parm == "leftTree") {
        this.leftTree = true
      }
      // if (parm == "leftView") {
      //   this.leftTree = false
      // }
      // if (parm == "leftTree") {
      //   this.leftTree = true
      // }
      if (parm == "right") {
        if (this.rightWidth == "22%") {
@@ -113,6 +121,14 @@
  width: 100%;
  z-index: 999;
}
.project-tree {
  position: absolute;
  top: 90px;
  right: 22%;
  width: 15%;
  height: calc(100% - 180px);
  z-index: 999;
}
</style>
<style lang="less">
src/views/Tools/LayerTree.vue
@@ -618,12 +618,32 @@
          })
        );
        tileset.readyPromise.then(function (tileset) {
        tileset.readyPromise.then((tileset0) => {
          tileset.id = res.cnName;
          this.tileSet(tileset, parseFloat(res.elev))
          Viewer.flyTo(tileset);
        });
      }
    },
    tileSet(tileset, height) {
      //3dtile模型的边界球体
      var boundingSphere = tileset.boundingSphere;
      //迪卡尔空间直角坐标=>地理坐标(弧度制)
      var cartographic_original = Cesium.Cartographic.fromCartesian(boundingSphere.center);
      //地理坐标(弧度制)=>迪卡尔空间直角坐标
      var Cartesian3_original = Cesium.Cartesian3.fromRadians(cartographic_original.longitude, cartographic_original.latitude, cartographic_original.height);
      var Cartesian3_offset = Cesium.Cartesian3.fromRadians(cartographic_original.longitude, cartographic_original.latitude, height);
      //获得地面和offset的转换
      var translation = Cesium.Cartesian3.subtract(Cartesian3_offset, Cartesian3_original, new Cesium.Cartesian3());
      //修改模型矩阵
      tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation);
    },
    setTreeData(source) {
      let cloneData = JSON.parse(JSON.stringify(source)); // å¯¹æºæ•°æ®æ·±åº¦å…‹éš†
      return cloneData.filter((father) => {
src/views/Tools/pipeLineAnaly.vue
@@ -562,7 +562,7 @@
          this.options2.push(value[i]);
        }
      }
      this.ruleFrom.value2 = this.options2[0].segName;
      this.ruleFrom.value2 = this.options2[0].segName || '<空>';
      this.analyGid = this.options2[0].gid;
    },
    clearAnalysis() {
src/views/Tools/queryinfo.vue
@@ -7,7 +7,7 @@
      :title="data.title || '提示'"
      maxHeight="400"
      @close="close(data.id)"
      left="calc(100% - 960px)"
      left="calc(90% - 900px)"
      top="calc(100% - 470px) "
    >
      <div>
src/views/datamanage/SpatialData.vue
@@ -10,7 +10,8 @@
        class="spatial_leftTree subpage_Div "
        style="border: 1px solid #dcdfe6;"
      >
        <el-input size="small"
        <el-input
          size="small"
          v-model="filterText"
          style="width:220px;"
          :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valueone')"
@@ -37,33 +38,45 @@
            :inline="true"
          >
            <el-form-item size="small">
            <el-form-item>
              <!-- type="textarea" disabled-->
              <el-input
                v-model="ruleForm.fileName"
                class="nm-skin-pretty"
                show-word-limit
                size="small"
                :rows="2"
                resize='none'
                style="width: 220px;"
                style="width: 300px;"
                disabled
                :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valueone')"
              ><i slot="suffix" class="el-icon-search"  @click="submitForm" style="padding-right: 8px"></i>
                :placeholder="$t('shuJuGuanLi.shuJuJianSuo.label')"
              >
                <!-- <i
                  slot="suffix"
                  class="el-icon-search"
                  @click="submitForm"
                  style="padding-right: 8px"
                ></i> -->
              </el-input>
              <el-button plain @click="conditionVisible = true" size="small" style="color: rgba(212,213,215,0.8)">高级查询条件</el-button>
            </el-form-item>
            <el-form-item>
              <el-button
                @click="conditionVisible = true"
                size="small"
                type="success"
                icon="el-icon-plus"
              >{{$t('common.append')}}</el-button>
            </el-form-item>
            <el-form-item style="float: right">
              <el-button
                  @click="resetForm"
                  type="info"
                  size="small"
                  icon="el-icon-refresh"
                @click="resetForm"
                type="info"
                size="small"
                icon="el-icon-refresh"
              >{{$t('common.reset')}}</el-button>
            </el-form-item>
<!--            <el-form-item style="float: right">
            <!--            <el-form-item style="float: right">
              <el-button
                  @click="submitForm"
                  type="primary"
@@ -73,7 +86,7 @@
            </el-form-item>-->
            <!--         åŽ»æŽ‰   -->
<!--            <el-form-item style="float: right">
            <!--            <el-form-item style="float: right">
              <el-button
                  v-if="btnStatus.insert"
                  @click="conditionVisible = true"
@@ -85,10 +98,10 @@
            <el-form-item style="float: right">
              <el-button
                  @click="getSpaceMapVisibale"
                  size="small"
                  type="primary"
                  icon="el-icon-search"
                @click="getSpaceMapVisibale"
                size="small"
                type="primary"
                icon="el-icon-search"
              >{{
                  $t('synthesis.rangequery')
                }}</el-button>
@@ -99,7 +112,7 @@
        <div class="dividing-line"></div>
        <div
          class="table_box"
          style="height:calc(100% - 60px)"
          style="height:calc(100% - 130px); "
        >
          <!--          border-->
          <!--          ref="filterTable"-->
@@ -108,22 +121,20 @@
          <!--          height="calc(100% - 57px)"-->
          <!--          :header-cell-style="{background:'#e6eaee',color:'#181818', 'text-align': 'center'}  "-->
          <el-table
            ref="refTableData"
            :data="tableData"
            style="width: 100% ;height: auto"
            height="calc(100% - 50px)"
            style="width: 100% ;"
            border
            height="100%"
          >
            <el-table-column
              type="selection"
              width="20"
            />
<!--            <el-table-column
              width="60"
              align="center"
              type="index"
              :label="$t('common.index')"
            />-->
            />
            <el-table-column
                min-width="135"
              min-width="135"
              v-for="(item, index) in attributeData"
              :key="index"
              :label="item.alias"
@@ -132,7 +143,7 @@
              align="center"
            ></el-table-column>
            <el-table-column
              min-width="180"
              min-width="240"
              :label="$t('common.operate')"
            >
              <template slot-scope="scope">
@@ -146,24 +157,36 @@
                  plain
                  size="small"
                  @click="getAttachTable(scope.$index, scope.row)"
                  style="margin-left: 20px;  "
                >{{$t('common.enclosure')}}</el-button>
                <el-button
                  plain
                  size="small"
                  type="info"
                  v-if="matchState1(scope, /[]/)"
                  @click="getAttributeTable(scope.$index, scope.row)"
                >{{$t('common.attribute')}}</el-button>
              </template>
            </el-table-column>
          </el-table>
          <div class="pagination_box" style="margin-top: 15px">
            <el-pagination
              @size-change="handleSizeChange"
              @current-change="handleCurrentChange"
              :current-page="listData.pageIndex"
              :page-sizes="[10, 20, 50, 100]"
              :page-size="listData.pageSize"
              layout="total, sizes, prev, pager, next, jumper"
              :total="count"
            >
            </el-pagination>
          </div>
        </div>
        <div
          class="pagination_box"
          style="margin-top: 15px"
        >
          <el-pagination
            @size-change="handleSizeChange"
            @current-change="handleCurrentChange"
            :current-page="listData.pageIndex"
            :page-sizes="[10, 20, 50, 100]"
            :page-size="listData.pageSize"
            layout="total, sizes, prev, pager, next, jumper"
            :total="count"
          >
          </el-pagination>
        </div>
      </div>
    </div>
@@ -205,7 +228,7 @@
      :title="$t('common.attachinform')"
      :visible.sync="dialogFormVisible"
    >
      <div style="height: 500px; overflow: auto">
      <div style="height:68vh">
        <el-form
          :model="formInline"
          class="demo-form-inline"
@@ -252,57 +275,49 @@
              <!-- <el-col :span="3">  <el-link  class="elLink" :underline="false" >{{$t('common.reset')}}</i></el-link></el-col> -->
            </el-row>
          </el-form-item>
          <el-form-item>
            <el-table
              :data="tableAttach"
              ref="filterTable"
              height="100%"
              border
              style="width: 100%"
              @selection-change="handleAttatchChange"
            >
              <el-table-column
                type="selection"
                width="55"
              />
              <el-table-column
                width="60"
                type="index"
                :label="$t('common.index')"
              />
              <el-table-column
                prop="date"
                :label="$t('common.fileNme')"
              />
              <el-table-column
                prop="name"
                :label="$t('common.filePath')"
              />
            </el-table>
          </el-form-item>
          <!-- <el-form-item>
          <el-row :gutter="20">
            <el-col
              :span="12"
              :offset="8"
            >
              <el-button
                type="primary"
                size="small"
                @click="dialogFormVisible = false"
              >确认</el-button>
              <el-button
                type="info"
                size="small"
                @click="dialogFormVisible = false"
              >取消</el-button>
            </el-col>
          </el-row>
        </el-form-item> -->
        </el-form>
        <el-table
          :data="tableAttach"
          ref="filterTable"
          height="calc(100% - 130px)"
          border
          style="width: 100%"
          @selection-change="handleAttatchChange"
        >
          <el-table-column
            type="selection"
            width="70"
          />
          <el-table-column
            width="60"
            type="index"
            :label="$t('common.index')"
          />
          <el-table-column
            prop="name"
            :label="$t('common.fileNme')"
          />
          <el-table-column
            prop="sizes"
            :label="$t('common.size')"
            :formatter="statSizeChange"
          />
          <el-table-column
            align="center"
            :label="$t('common.operate')"
            min-width="100"
          >
            <template slot-scope="scope">
              <el-link
                v-if="matchState(scope, /[]/)"
                @click="setAttatchDetail(scope.$index, scope.row)"
                class="elLink"
              >{{ $t('common.see') }}</el-link>
            </template>
          </el-table-column>
        </el-table>
      </div>
    </el-dialog>
    <el-dialog
@@ -391,6 +406,97 @@
        <map-sdk v-if='showMapVisible'></map-sdk>
      </div>
    </el-dialog>
    <el-dialog
      title="预览"
      :append-to-body="false"
      :visible.sync="dialog.dialogVisible"
      width="70%"
      :close-on-click-modal="false"
    >
      <div
        v-if="dialog.isPdf"
        class="pdfClass"
      >
        <iframe
          :src="dialog.src"
          type="application/x-google-chrome-pdf"
          width="100%"
          height="100%"
        >
        </iframe>
      </div>
      <div
        v-if="dialog.isJpg"
        class="pdfClass"
      >
        <img
          style="width:100%; height:100%"
          :src="dialog.src"
          alt=""
        />
      </div>
    </el-dialog>
    <el-dialog
      :title="attribute.title"
      :append-to-body="false"
      :visible.sync="AttributedialogVisible"
      width="80%"
      :close-on-click-modal="false"
    >
      <div class="attributeBox">
        <div class="attrubuteLeft">
          <ul>
            <li
              v-for="item in attrbuteOption"
              :class="{active:attributeFlag === item.name}"
              @click="setChangeAttrubuteData(item)"
            >
              {{item.name}}
            </li>
          </ul>
        </div>
        <div class="attrubuteRight">
          <el-table
            ref="refAttributeTable"
            :data="attributeTable"
            style="width:100%;"
            border
            height="calc(100% - 50px)"
          >
            <el-table-column
              type="selection"
              align="center"
            />
            <el-table-column
              min-width="135"
              v-for="(item, index) in attributeData"
              :key="index"
              :label="item.alias"
              :prop="item.field"
              show-overflow-tooltip
              align="center"
            ></el-table-column>
          </el-table>
          <div
            class="pagination_box"
            style="margin-top: 10px"
          >
            <el-pagination
              @size-change="attributeSizeChange"
              @current-change="attributeCurrentChange"
              :current-page="attribute.pageIndex"
              :page-sizes="[10, 20, 50, 100]"
              :page-size="attribute.pageSize"
              layout="total, sizes, prev, pager, next, jumper"
              :total="attribute.count"
            >
            </el-pagination>
          </div>
        </div>
      </div>
    </el-dialog>
  </div>
</template>
@@ -439,30 +545,6 @@
      },
      fromSqlflag: false,
      tree: [
        {
          tabDesc: "基础数据",
          label: "基础数据",
          value: "BD",
          ns: "bd",
          id: 1,
          children: [],
        },
        {
          id: 2,
          tabDesc: "业务数据",
          label: "业务数据",
          value: "BS",
          ns: "bs",
          children: [],
        },
        {
          id: 3,
          tabDesc: "元数据",
          label: "元数据",
          value: "MD",
          ns: "md",
          children: [],
        },
      ],
      tableAttach: [],
      filedsOption: [],
@@ -527,6 +609,25 @@
        eventid: null,
      },
      filterText: "",
      dialog: {
        dialogVisible: false,
        isPdf: false,
        isJpg: false,
        src: ''
      },
      AttributedialogVisible: false,
      attribute: {
        name: null,
        pageIndex: 1,
        pageSize: 10,
        count: 0,
        title: null
      },
      attrbuteOption: [],
      attributeFlag: null,
      attributeTable: [],
      attributeLayer: null,
      attributeFild: null,
    };
  },
  created() {
@@ -542,6 +643,131 @@
  },
  methods: {
    //分页点击事件
    attributeSizeChange(val) {
      this.attribute.pageSize = val;
      this.attribute.pageIndex = 1;
      //获取table信息
      this.setAttributeTableData(this.attributeLayer);
    },
    attributeCurrentChange(val) {
      this.attribute.pageIndex = val;
      //获取table信息
      this.setAttributeTableData(this.attributeLayer);
    },
    getAttributeTable(idnex, row) {
      this.attribute.title = row.workname;
      this.attrbuteOption = workSite;
      this.AttributedialogVisible = true;
      this.setChangeAttrubuteData(this.attrbuteOption[0])
    },
    setChangeAttrubuteData(res) {
      this.attributeFlag = res.name;
      this.attribute.pageIndex = 1;
      this.attribute.pageSize = 10;
      this.attribute.count = 0;
      this.attributeLayer = res;
      this.setAttributeTableData(res)
    },
    setAttributeTableData(res) {
      var name = res.table.replaceAll("_", "");
      this.attribute.name = name;
      var value = this.getAttributeDomFiled(name)
      this.getAttributeTableData(value, res)
    },
    //获取每个表字段名称及阈值
    async getAttributeDomFiled(res) {
      //查询字段信息;
      const fileds = await dataQuery_selectFields({
        name: res,
      });
      if (fileds.code != 200) {
        this.$message.error("调用列表失败,请联系工作人员!");
        return;
      }
      //查询阈值信息;
      const domains = await dataQuery_selectDomains({
        name: res,
      });
      if (domains.code != 200) {
        this.$message.error("调用列表失败,请联系工作人员!");
        return;
      }
      var data1 = fileds.result;
      var data2 = domains.result;
      var std = [];
      this.filedsOption = [];
      for (var i in data1) {
        if (data1[i].type != 'geometry' && data1[i].type) {
          this.filedsOption.push(data1[i]);
        }
        if (data1[i].showtype == 1) {
          if (data1[i].domainNa != null) {
            data1[i].domainNa = this.getDomainNaFild(data1[i].domainNa, data2);
          }
          std.push(data1[i]);
        }
      }
      return std;
    },
    //获取表格信息
    async getAttributeTableData(res, result) {
      res.then((val) => {
        this.attributeFild = val;
      });
      this.attribute.filter = "workname = " + "'" + this.attribute.title + "'";
      const data = await dataQuery_selectByPage(this.attribute);
      if (data.code != 200) {
        this.$message.error("调用列表失败,请联系工作人员!");
        return;
      }
      this.attributeTable = []
      var res_val = this.attributeFild;
      this.attribute.count = data.count;
      for (var i in data.result) {
        let val_Data = data.result[i];
        for (var j in res_val) {
          if (res_val[j].domainNa != null && res_val[j].domainNa != undefined) {
            val_Data[res_val[j].field] = res_val[j].domainNa;
          }
        }
      }
      this.attributeTable = data.result;
    },
    matchState1(state = "", reg) {
      var row = state.row;
      if (
        this.listData.name == "ssurveyworksite"
      ) {
        return true;
      }
      return false;
    },
    statSizeChange(row, column) {
      return this.stateFormatSizes(row.sizes)
    },
    stateFormatSizes(res) {
      if (res >= 1024) {
        const val = parseFloat(res / 1024).toFixed(3);
        return val + ' GB';
      } else {
        return res + ' MB';
      }
    },
    filterNode(value, data) {
      if (!value) return true;
      return data.label.indexOf(value) !== -1;
@@ -571,6 +797,45 @@
      this.$store.state.mapPopBoolean = false;
      this.$store.state.mapPopBoxFlag = null;
    },
    refreshAttatchDetail() {
      this.dialog.src = "";
      this.dialog.dialogVisible = false;
      this.dialog.isPdf = false;
      this.dialog.isJpg = false;
    },
    //附件查看
    setAttatchDetail(index, row) {
      this.refreshAttatchDetail()
      var name = row.name;
      if (name.indexOf('.pdf') != -1) {
        this.dialog.dialogVisible = true;
        this.dialog.isPdf = true;
        var url = BASE_URL + "/res/downloadForView?guid=" + row.guid + "&token=" + getToken();
        this.dialog.src = url
      } else if (name.indexOf('.jpg') != -1 || name.indexOf('.gif') != -1 || name.indexOf('.png') != -1 || name.indexOf('.jpeg') != -1) {
        this.dialog.dialogVisible = true;
        this.dialog.isJpg = true;
        var url = BASE_URL + "/res/downloadForView?guid=" + row.guid + "&token=" + getToken();
        this.dialog.src = url
      }
    },
    matchState(state = "", reg) {
      var row = state.row;
      var name = row.name;
      if (name) {
        if (name.indexOf('.pdf') != -1 || name.indexOf('.jpg') != -1 || name.indexOf('.gif') != -1 || name.indexOf('.png') != -1 || name.indexOf('.jpeg') != -1) {
          return true;
        }
      }
      return false;
    },
    async setAttachDel() {
      var std = [];
      for (var i in this.attacgSelection) {
@@ -601,7 +866,7 @@
        BASE_URL +
        "/dataQuery/uploadFiles?token=" +
        token +
        "&tabName= " +
        "&tabName=" +
        this.upAttach.tabName +
        "&eventid=" +
        this.upAttach.eventid,
@@ -621,6 +886,7 @@
            this.formInline = {
              file: "",
            };
            this.getAttacthFlieList();
          },
          error: (e) => {
@@ -632,6 +898,7 @@
    },
    async getAttacthFlieList() {
      var obj = this.upAttach;
      const res = await dataQuery_selectFiles(obj);
      if (res.code != 200) {
        this.$message.error("列表调用失败");
@@ -665,26 +932,44 @@
      if (data.code != 200) {
        this.$message.error("列表调用失败");
      }
      var option = data.result;
      var val = data.result;
      for (var i in option) {
        var val_Data = option[i];
        val_Data.id = "1" + i;
        // val_Data.label = val_Data.tabDesc + "(" + val_Data.tab + ")"
        val_Data.label = val_Data.tabDesc;
        option[i].id = parseInt(option[i].id);
        for (var j in this.tree) {
          if (this.tree[j].ns == option[i].ns) {
            this.tree[j].children.push(val_Data);
          }
      // for (var i in option) {
      //   var val_Data = option[i];
      //   val_Data.id = "1" + i;
      //   // val_Data.label = val_Data.tabDesc + "(" + val_Data.tab + ")"
      //   val_Data.label = val_Data.tabDesc;
      //   option[i].id = parseInt(option[i].id);
      //   for (var j in this.tree) {
      //     if (this.tree[j].ns == option[i].ns) {
      //       this.tree[j].children.push(val_Data);
      //     }
      //   }
      // }
      var std = [];
      val.filter((item) => {
        if (std.indexOf(item.bak) == -1) {
          std.push(item.bak);
          this.tree.push(
            {
              val: item.bak,
              label: item.bak,
              children: [],
            }
          )
        }
        // if (option[i].ns == 'bd') {
      });
        //   this.tree[0].children.push(val_Data);
        // } else {
        //   this.tree[1].children.push(val_Data);
        // }
      }
      this.tree.filter((item) => {
        val.filter((res) => {
          if (item.val === res.bak) {
            res.label = res.tabDesc
            item.children.push(res)
          }
        })
      })
      this.handleNodeClick(this.tree[0].children[0]);
    },
    //授权管理
@@ -701,10 +986,12 @@
    handleNodeClick(data) {
      //判断点击是否为子节点
      if (data.children != null) return;
      this.listData.name = data.entity; //要查询表格类型;
      this.getClickTable = data;
      this.listData.pageIndex = 1;
      this.listData.pageSize = 10;
      this.count = 0;
      this.upAttach.tabName = data.ns + "." + data.tab;
      this.filedsLayer = this.getCollapseDomFiled(); //获取每个表字段名称及阈值
@@ -728,6 +1015,7 @@
        this.$message.error("调用列表失败,请联系工作人员!");
        return;
      }
      this.tableData = []
      var res_val = this.attributeData;
      this.count = data.count;
      for (var i in data.result) {
@@ -741,7 +1029,10 @@
      }
      this.tableData = data.result;
      this.$refs.filterTable.doLayout();
      this.$nextTick(() => {
        this.$refs.refTableData.doLayout();
      });
    },
    //获取每个表字段名称及阈值
    async getCollapseDomFiled() {
@@ -765,9 +1056,10 @@
      var data1 = fileds.result;
      var data2 = domains.result;
      var std = [];
      this.filedsOption = [];
      for (var i in data1) {
        if (data1[i].type != 'geometry' && data1[i].type) {
          debugger
          this.filedsOption.push(data1[i]);
        }
        if (data1[i].showtype == 1) {
@@ -868,6 +1160,7 @@
        this.formSql.field + " " + this.formSql.condition + " " + val;
      this.startFiledAndcondition();
      this.submitForm();
    },
    //值域字段匹配
@@ -1175,6 +1468,43 @@
      border: 1px solid #dcdfe6;
    }
  }
  .pdfClass {
    height: 70vh;
    width: 100%;
    position: relative;
  }
  .attributeBox {
    height: 63vh;
    width: 100%;
    position: relative;
    display: flex;
    justify-content: space-between;
    .attrubuteLeft {
      width: calc(20% - 20px);
      height: calc(100% - 20px);
      border: 1px solid #dcdfe6;
      border-radius: 5px;
      padding: 10px;
      li {
        border-bottom: 1px solid #dcdfe6;
        line-height: 30px;
        text-align: center;
      }
      li:hover {
        background: rgba(255, 255, 255, 0.3);
        color: #409eff;
      }
      .active {
        color: #409eff;
      }
    }
    .attrubuteRight {
      width: 79%;
      height: 100%;
      border: 1px solid #dcdfe6;
      border-radius: 5px;
    }
  }
}
.table_box2 {
src/views/datamanage/bankController.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,257 @@
<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">
        <data-updata v-if="setMenuFlag == 'dataUpdata'"></data-updata>
        <!-- <catalogue-manage v-if="setMenuFlag == 'catalogueManage'"></catalogue-manage> -->
        <spatial-data v-if="setMenuFlag == 'SpatialData'"></spatial-data>
        <!-- <version-manage v-if="setMenuFlag == 'versionManage'"></version-manage> -->
        <domain-manage v-if="setMenuFlag == 'domainManage'"></domain-manage>
        <dictionary-manage v-if="setMenuFlag == 'dictionaryManage'"></dictionary-manage>
        <metadata-manage v-if="setMenuFlag == 'metadataManage'"></metadata-manage>
        <style-manage v-if="setMenuFlag == 'styleManage'"></style-manage>
        <data-loader v-if="setMenuFlag == 'dataLoader'"></data-loader>
        <down-loader v-if="setMenuFlag == 'downLoader'"></down-loader>
        <!-- <project-manage v-if="setMenuFlag == 'projectManage'"></project-manage> -->
        <data-statistics v-if="setMenuFlag == 'dataStatistics'"></data-statistics>
      </div>
    </div>
  </div>
</template>
<script>
import { selectMenuRecursive, queryMenuTree, sign_insertOpLog } from '../../api/api';
import customElMenu from '../../components/customElMenu.vue';
import dataUpdata from '@/views/datamanage/dataUpdata.vue'; //数据管理-数据上传
import catalogueManage from '@/views/datamanage/catalogueManage.vue'; //数据管理-目录管理
import SpatialData from '@/views/datamanage/SpatialData.vue'; //数据管理-数据检索
import versionManage from '@/views/datamanage/versionManage.vue'; //数据管理-版本管理
import domainManage from '@/views/datamanage/domainManage.vue'; //数据管理-值域管理
import dictionaryManage from '@/views/datamanage/dictionaryManage.vue'; //数据管理-字典管理
import metadataManage from '@/views/datamanage/metadataManage.vue'; //数据管理-元数据管理
import styleManage from '@/views/datamanage/styleManage.vue'; //数据管理-样式管理
import dataLoader from '@/views/datamanage/dataLoader.vue'; //数据管理-数据入库
import downLoader from '@/views/datamanage/downLoader.vue'; //数据管理-数据下载
import projectManage from '@/views/datamanage/projectManage.vue'; //项目管理
import dataStatistics from '@/views/datamanage/dataStatistics.vue'; //数据统计
export default {
  components: {
    customElMenu,
    dataUpdata,
    catalogueManage,
    SpatialData,
    versionManage,
    domainManage,
    dictionaryManage,
    metadataManage,
    styleManage,
    dataLoader,
    downLoader,
    projectManage,
    dataStatistics,
  },
  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',
    };
  },
  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 == '/bankController';
      });
      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]);
          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)); // å¯¹æºæ•°æ®æ·±åº¦å…‹éš†
      // 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 == 86; // è¿”回一级菜单
        });
      } 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;
    },
    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/datamanage/catalogueManage.vue
@@ -1,15 +1,16 @@
<template>
  <div class="subpage_Box">
          <My-bread
        :list="[
    <My-bread :list="[
          `${$t('dataManage.dataManage')}`,
          `${$t('dataManage.catalogueManage')}`,
        ]"
      ></My-bread>
      <el-divider />
        ]"></My-bread>
    <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"
@@ -26,7 +27,7 @@
      </div>
      <div class="cataLog_rightContent right subpage_Div">
        <div
        class="inquire"
          class="inquire"
          style="
            align-items: center;
            display: flex;
@@ -35,12 +36,15 @@
        >
          <el-breadcrumb separator="/">
            <el-breadcrumb-item :to="{ path: '/' }">{{
              $t("dataManage.dictionaryManageObj.particulars")
            }}</el-breadcrumb-item>
          </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-upload
                    action
@@ -50,7 +54,11 @@
                    :on-change="handleChange"
                    :file-list="fileList"
                  >
                    <el-button type="success" icon="el-icon-plus" size="small">{{ $t("shuJuGuanLi.butten.uploadFile") }}</el-button>
                    <el-button
                      type="success"
                      icon="el-icon-plus"
                      size="small"
                    >{{ $t("shuJuGuanLi.butten.uploadFile") }}</el-button>
                  </el-upload>
                </el-form-item>
                <el-form-item>
@@ -61,8 +69,7 @@
                    type="success"
                    icon="el-icon-plus"
                    size="small"
                    >{{ $t("shuJuGuanLi.butten.NewPeer") }}</el-button
                  >
                  >{{ $t("shuJuGuanLi.butten.NewPeer") }}</el-button>
                </el-form-item>
                <el-form-item>
                  <el-button
@@ -72,8 +79,7 @@
                    type="success"
                    icon="el-icon-plus"
                    size="small"
                    >{{ $t("shuJuGuanLi.butten.AddChild") }}</el-button
                  >
                  >{{ $t("shuJuGuanLi.butten.AddChild") }}</el-button>
                </el-form-item>
                <el-form-item>
                  <el-button
@@ -83,8 +89,7 @@
                    type="danger"
                    icon="el-icon-delete"
                    size="small"
                    >{{ $t("shuJuGuanLi.butten.Delete") }}</el-button
                  >
                  >{{ $t("shuJuGuanLi.butten.Delete") }}</el-button>
                </el-form-item>
                <el-form-item>
                  <el-button
@@ -94,8 +99,7 @@
                    type="info"
                    icon="el-icon-top"
                    size="small"
                    >{{ $t("shuJuGuanLi.butten.MoveUp") }}</el-button
                  >
                  >{{ $t("shuJuGuanLi.butten.MoveUp") }}</el-button>
                </el-form-item>
                <el-form-item>
                  <el-button
@@ -105,8 +109,7 @@
                    type="info"
                    icon="el-icon-bottom"
                    size="small"
                    >{{ $t("shuJuGuanLi.butten.MoveDown") }}</el-button
                  >
                  >{{ $t("shuJuGuanLi.butten.MoveDown") }}</el-button>
                </el-form-item>
              </el-form>
            </div>
@@ -115,18 +118,30 @@
        </div>
        <div class="dividing-line"></div>
        <el-form :model="itemdetail" ref="itemdetail" :rules="rules" style="position: relative; padding-top: 18px">
        <el-form
          :model="itemdetail"
          ref="itemdetail"
          :rules="rules"
          style="position: relative; padding-top: 18px"
        >
          <el-form-item
            prop="name"
            :label="$t('dataManage.dataUpObj.directoryName')"
            :label-width="formLabelWidth">
            <el-input v-model="itemdetail.name"  size="small" style=" max-width: 420px" :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valueone')" clearable/>
<!--            style="max-width: 400px"-->
            :label-width="formLabelWidth"
          >
            <el-input
              v-model="itemdetail.name"
              size="small"
              style=" max-width: 420px"
              :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valueone')"
              clearable
            />
            <!--            style="max-width: 400px"-->
          </el-form-item>
          <el-form-item
            :label="$t('dataManage.dataUpObj.catalogDescription')"
            :label-width="formLabelWidth" >
            :label-width="formLabelWidth"
          >
            <el-input
              v-model="itemdetail.descr"
              type="textarea"
@@ -134,6 +149,20 @@
              :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valueone')"
              clearable
            />
          </el-form-item>
          <el-form-item
            :label="$t('dataManage.dataUpObj.inspectionItems')"
            :label-width="formLabelWidth"
          >
            <el-input
              v-model="itemdetail.checks"
              type="textarea"
              style=" max-width: 420px"
              :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valueone')"
              clearable
            />
            <!--            resize="none"-->
            <!--            style="height: 100%; overflow: auto; max-width: 400px"-->
          </el-form-item>
          <el-form-item
            :label="$t('dataManage.dataUpObj.fileExtension')"
@@ -146,10 +175,8 @@
              :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valueone')"
              clearable
            />
<!--            resize="none"-->
<!--            style="height: 100%; overflow: auto; max-width: 400px"-->
          </el-form-item>
<!--          <el-form-item
          <!--          <el-form-item
            :label="$t('dataManage.dataUpObj.inspectionItems')"
            :label-width="formLabelWidth"
          >
@@ -173,7 +200,7 @@
              autosize
            />
          </el-form-item>
<!--          <el-form-item
          <!--          <el-form-item
            :label="$t('dataManage.dataUpObj.catalogRemarks')"
            :label-width="formLabelWidth"
          >
@@ -184,7 +211,7 @@
              style="max-width: 400px"
            />
          </el-form-item>-->
<!--          <div class="btnBox">
          <!--          <div class="btnBox">
            <el-button
              v-if="menuStatus.update"
              class="primary"
@@ -201,9 +228,22 @@
            >
          </div>-->
        </el-form>
        <div slot="footer" class="dialog-footer" 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" size="small" @click="reset">{{ $t("common.cancel") }}</el-button>
        <div
          slot="footer"
          class="dialog-footer"
          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"
            size="small"
            @click="reset"
          >{{ $t("common.cancel") }}</el-button>
        </div>
      </div>
    </div>
@@ -226,19 +266,29 @@
      :visible.sync="dialogFormVisible"
      :before-close="handleClose"
    >
      <el-form :model="ruleForm" ref="ruleForm" :rules="rules">
      <el-form
        :model="ruleForm"
        ref="ruleForm"
        :rules="rules"
      >
        <el-form-item
          :label="$t('dataManage.dataUpObj.directoryName')"
          prop="name"
          :label-width="formLabelWidth"
        >
          <el-input v-model="ruleForm.name" autocomplete="off"></el-input>
          <el-input
            v-model="ruleForm.name"
            autocomplete="off"
          ></el-input>
        </el-form-item>
        <el-form-item
          :label="$t('dataManage.dataUpObj.catalogDescription')"
          :label-width="formLabelWidth"
        >
          <el-input v-model="ruleForm.descr" autocomplete="off"></el-input>
          <el-input
            v-model="ruleForm.descr"
            autocomplete="off"
          ></el-input>
        </el-form-item>
        <el-form-item
          :label="$t('dataManage.dataUpObj.fileExtension')"
@@ -278,10 +328,16 @@
          :label="$t('dataManage.dataUpObj.catalogRemarks')"
          :label-width="formLabelWidth"
        >
          <el-input v-model="ruleForm.bak" autocomplete="off"></el-input>
          <el-input
            v-model="ruleForm.bak"
            autocomplete="off"
          ></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>
@@ -289,8 +345,7 @@
          class="primary"
          @click="submitForm('ruleForm')"
          v-loading.fullscreen.lock="fullscreenLoading"
          >{{ $t("common.preservation") }}</el-button
        >
        >{{ $t("common.preservation") }}</el-button>
      </div>
    </el-dialog>
  </div>
@@ -402,7 +457,9 @@
            obj.name = v.name;
            obj.pname = v.pname;
            obj.descr = v.explain;
            obj.checks = v.checks;
            obj.bak = v.bak;
            obj.exts = v.exts;
            obj.orderNum = null;
            obj.pid = null;
            arr.push(obj);
@@ -509,11 +566,11 @@
      });
    },
    handleClose() {
      this.$confirm("确认关闭?")
      this.$confirm("关闭后无法保存,是否关闭?")
        .then((_) => {
          this.resetForm();
        })
        .catch((_) => {});
        .catch((_) => { });
    },
    treeData(source) {
      let cloneData = JSON.parse(JSON.stringify(source)); // å¯¹æºæ•°æ®æ·±åº¦å…‹éš†
@@ -975,12 +1032,11 @@
        margin: 5px;
      }
    }
  }
}
.btnBox {
  position: absolute;
  bottom:0;
  bottom: 0;
  right: 0;
}
</style>
src/views/datamanage/dataController.vue
@@ -54,8 +54,8 @@
import dataLoader from '@/views/datamanage/dataLoader.vue'; //数据管理-数据入库
import downLoader from '@/views/datamanage/downLoader.vue'; //数据管理-数据下载
import projectManage from '@/views/datamanage/projectManage.vue'; //项目管理
import dataStatistics from  '@/views/datamanage/dataStatistics.vue'; //数据统计
import dataStatistics from '@/views/datamanage/dataStatistics.vue'; //数据统计
export default {
  components: {
    customElMenu,
@@ -71,7 +71,7 @@
    downLoader,
    projectManage,
    dataStatistics,
  },
  data() {
    return {
@@ -197,7 +197,7 @@
        m1: m1,
        m2: m2,
      }
      const data = await sign_insertOpLog(obj);
      // const data = await sign_insertOpLog(obj);
    },
    treeData(source) {
      let cloneData = JSON.parse(JSON.stringify(source)); // å¯¹æºæ•°æ®æ·±åº¦å…‹éš†
src/views/datamanage/dataUpdata.vue
@@ -1,42 +1,45 @@
<template>
  <div
      class="subpage_Box"
      v-loading="loading"
      element-loading-background="rgba(0, 0, 0, 0.8)"
    class="subpage_Box"
    v-loading="loading"
    element-loading-background="rgba(0, 0, 0, 0.8)"
  >
    <My-bread :list="[
        `${$t('dataManage.dataManage')}`,
        `${$t('dataManage.dataUpdata')}`,
      ]"></My-bread>
    <el-divider/>
    <el-divider />
    <el-tabs
        type="card"
        v-model="activeTabName"
        @tab-click="handleTabClick"
      type="card"
      v-model="activeTabName"
      @tab-click="handleTabClick"
    >
      <!-- ä¸Šä¼ æ•°æ® -->
      <el-tab-pane
          :label="$t('dataManage.dataUpObj.uploaddata')"
          name="first"
        :label="$t('dataManage.dataUpObj.uploaddata')"
        name="first"
      >
        <div class="inquire subpage_Div" ref="container">
        <div
          class="inquire subpage_Div"
          ref="container"
        >
          <el-form
              :inline="true"
              :model="formInline"
              class="demo-form-inline"
            :inline="true"
            :model="formInline"
            class="demo-form-inline"
          >
            <!-- å…¥åº“类型 -->
            <el-form-item
                :label="$t('dataManage.dataUpObj.UploadType')"
                style="margin-right: 2%"
                size="small"
              :label="$t('dataManage.dataUpObj.UploadType')"
              style="margin-right: 2%"
              size="small"
            >
              <el-select
                  :disabled="tableData.length == 0 ? false : true"
                  v-model="formInline.uploadType"
                  @change="uploadTypeChange"
                  :popper-append-to-body="false"
                  placeholder="请选择"
                :disabled="tableData.length == 0 ? false : true"
                v-model="formInline.uploadType"
                @change="uploadTypeChange"
                :popper-append-to-body="false"
                placeholder="请选择"
              >
                <!--                <el-option
                                  v-for="item in uploadOption"
@@ -46,12 +49,12 @@
                                ></el-option>-->
                <el-option
                    :label="$t('shuJuGuanLi.pselect.dFile')"
                    value="v1"
                  :label="$t('shuJuGuanLi.pselect.dFile')"
                  value="v1"
                />
                <el-option
                    :label="$t('shuJuGuanLi.pselect.dFiles')"
                    value="v2"
                  :label="$t('shuJuGuanLi.pselect.dFiles')"
                  value="v2"
                />
              </el-select>
@@ -59,27 +62,27 @@
            </el-form-item>
            <!-- å­˜å‚¨ç›®å½• -->
            <el-form-item
                style="margin-right: 2%"
                v-show="uploadFlag"
                :label="$t('dataManage.dataUpObj.storageDirectory')"
                size="small"
              style="margin-right: 2%"
              v-show="uploadFlag"
              :label="$t('dataManage.dataUpObj.storageDirectory')"
              size="small"
            >
              <el-select
                  :popper-append-to-body="false"
                  v-model="formInline.dirName"
                  :disabled="tableData.length == 0 ? false : true"
                :popper-append-to-body="false"
                v-model="formInline.dirName"
                :disabled="tableData.length == 0 ? false : true"
              >
                <el-option
                    :value="formInline.dirid"
                    :label="formInline.dirName"
                    style=" height:auto"
                  :value="formInline.dirid"
                  :label="formInline.dirName"
                  style=" height:auto"
                >
                  <el-tree
                      ref="tree"
                      :data="catalogOption"
                      node-key="id"
                      :props="cascader"
                      @node-click="catalogChange"
                    ref="tree"
                    :data="catalogOption"
                    node-key="id"
                    :props="cascader"
                    @node-click="catalogChange"
                  />
                </el-option>
              </el-select>
@@ -94,58 +97,58 @@
            </el-form-item>
            <!-- é¡¹ç›®åç§° -->
            <el-form-item
                style="margin-right: 2%"
                v-show="!uploadFlag"
                :label="$t('dataManage.dataUpObj.entryName')"
                size="small"
              style="margin-right: 2%"
              v-show="!uploadFlag"
              :label="$t('dataManage.dataUpObj.entryName')"
              size="small"
            >
              <el-select
                  :popper-append-to-body="false"
                  :disabled="tableData.length == 0 ? false : true"
                  v-model="formInline.entryId"
                  @change="entryNameChange"
                  placeholder="请选择"
                :popper-append-to-body="false"
                :disabled="tableData.length == 0 ? false : true"
                v-model="formInline.entryId"
                @change="entryNameChange"
                placeholder="请选择"
              >
                <el-option
                    v-for="item in entryOption"
                    :key="item.id"
                    :label="item.name"
                    :value="item.name"
                  v-for="item in entryOption"
                  :key="item.id"
                  :label="item.name"
                  :value="item.name"
                ></el-option>
              </el-select>
            </el-form-item>
            <!-- æ•°æ®ç‰ˆæœ¬ -->
            <el-form-item
                :label="$t('dataManage.dataUpObj.dataVersion')"
                style="margin-right: 2%"
                size="small"
              :label="$t('dataManage.dataUpObj.dataVersion')"
              style="margin-right: 2%"
              size="small"
            >
              <el-select
                  :popper-append-to-body="false"
                  :disabled="tableData.length == 0 ? false : true"
                  v-model="formInline.verid"
                  :placeholder="$t('common.choose')"
                :popper-append-to-body="false"
                :disabled="tableData.length == 0 ? false : true"
                v-model="formInline.verid"
                :placeholder="$t('common.choose')"
              >
                <el-option
                    v-for="item in verOption"
                    :key="item.id"
                    :label="item.name"
                    :value="item.id"
                  v-for="item in verOption"
                  :key="item.id"
                  :label="item.name"
                  :value="item.id"
                >
                </el-option>
              </el-select>
            </el-form-item>
            <!-- æ•°æ®ä¸“业 -->
            <el-form-item
                :label="$t('dataManage.dataUpObj.dataSpecialty')"
                style="margin-right: 2%"
                size="small"
              :label="$t('dataManage.dataUpObj.dataSpecialty')"
              style="margin-right: 2%"
              size="small"
            >
              <el-select
                  :popper-append-to-body="false"
                  :disabled="tableData.length == 0 ? false : true"
                  v-model="formInline.specialtyId"
                  :placeholder="$t('common.choose')"
                :popper-append-to-body="false"
                :disabled="tableData.length == 0 ? false : true"
                v-model="formInline.specialtyId"
                :placeholder="$t('common.choose')"
              >
                <!--                <el-option
                                  v-for="item in specialtyOption"
@@ -155,41 +158,41 @@
                                </el-option>-->
                <el-option
                    :label="$t('shuJuGuanLi.pselect.SurveyDiscipline')"
                    value="测量专业"
                  :label="$t('shuJuGuanLi.pselect.SurveyDiscipline')"
                  value="测量专业"
                />
                <el-option
                    :label="$t('shuJuGuanLi.pselect.SurveysDiscipline')"
                    value="勘察专业"
                  :label="$t('shuJuGuanLi.pselect.SurveysDiscipline')"
                  value="勘察专业"
                />
                <el-option
                    :label="$t('shuJuGuanLi.pselect.GeologicalDisasterSpecialty')"
                    value="地灾专业"
                  :label="$t('shuJuGuanLi.pselect.GeologicalDisasterSpecialty')"
                  value="地灾专业"
                />
                <el-option
                    :label="$t('shuJuGuanLi.pselect.CavernSpecialty')"
                    value="洞库专业"
                  :label="$t('shuJuGuanLi.pselect.CavernSpecialty')"
                  value="洞库专业"
                />
              </el-select>
            </el-form-item>
            <!-- åæ ‡ç³» -->
            <el-form-item
                :label="$t('dataManage.dataUpObj.coordinateSystem')"
                style="margin-right: 3%"
                size="small"
              :label="$t('dataManage.dataUpObj.coordinateSystem')"
              style="margin-right: 3%"
              size="small"
            >
              <el-select
                  :popper-append-to-body="false"
                  :disabled="tableData.length == 0 ? false : true"
                  v-model="formInline.coordinateId"
                  :placeholder="$t('common.choose')"
                :popper-append-to-body="false"
                :disabled="tableData.length == 0 ? false : true"
                v-model="formInline.coordinateId"
                :placeholder="$t('common.choose')"
              >
                <el-option
                    v-for="item in coordinateOption"
                    :key="item.epsgcode"
                    :label="item.coordinate"
                    :value="item.epsgcode"
                  v-for="item in coordinateOption"
                  :key="item.epsgcode"
                  :label="item.coordinate"
                  :value="item.epsgcode"
                >
                </el-option>
              </el-select>
@@ -199,113 +202,116 @@
                <!-- é€‰æ‹©æ•°æ® -->
                <el-form-item size="small">
                  <el-link
                      :disabled="tableData.length == 0 ? false : true"
                      v-show="formInline.specialtyData == '请选择数据'"
                      @click="setSelectFile"
                      :underline="false"
                      type="primary"
                    :disabled="tableData.length == 0 ? false : true"
                    v-show="formInline.specialtyData == '请选择数据'"
                    @click="setSelectFile"
                    :underline="false"
                    type="primary"
                  >{{ $t('dataManage.dataUpObj.selectData') }}
                  </el-link>
                  <el-link
                      v-show="formInline.specialtyData != '请选择数据'"
                      @click="restSelectFile"
                      :underline="false"
                      type="primary"
                    v-show="formInline.specialtyData != '请选择数据'"
                    @click="restSelectFile"
                    :underline="false"
                    type="primary"
                  >{{ $t('common.reset') }}
                  </el-link>
                  <input
                      size="small"
                      id="selectDataFile"
                      type="file"
                      name="file"
                      multiple="multiple"
                      :accept="formInline.selectFileType"
                      @change="handleSelectFileChange"
                      style="display: none"
                    size="small"
                    id="selectDataFile"
                    type="file"
                    name="file"
                    multiple="multiple"
                    :accept="formInline.selectFileType"
                    @change="handleSelectFileChange"
                    style="display: none"
                  ></input>
                </el-form-item>
                <el-form-item size="small">
                  <el-input
                      :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valueone')"
                      v-model="formInline.specialtyData"
                      style="width:200px;"
                      disabled
                    :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valueone')"
                    v-model="formInline.specialtyData"
                    style="width:200px;"
                    disabled
                  >
                  </el-input>
                </el-form-item>
                <!-- é€‰æ‹©å…ƒæ•°æ® -->
                <el-form-item v-show="uploadFlag" style="padding-left: 16px">
                <el-form-item
                  v-show="uploadFlag"
                  style="padding-left: 16px"
                >
                  <el-link
                      :disabled="tableData.length == 0 ? false : true"
                      v-show="formInline.metaData == '请选择元数据'"
                      @click="setMetaFile"
                      :underline="false"
                      type="primary"
                    :disabled="tableData.length == 0 ? false : true"
                    v-show="formInline.metaData == '请选择元数据'"
                    @click="setMetaFile"
                    :underline="false"
                    type="primary"
                  >{{ $t('dataManage.dataUpObj.selectMetadata') }}
                  </el-link>
                  <el-link
                      v-show="formInline.metaData != '请选择元数据'"
                      @click="restMetaFile"
                      :underline="false"
                      type="primary"
                    v-show="formInline.metaData != '请选择元数据'"
                    @click="restMetaFile"
                    :underline="false"
                    type="primary"
                  >{{ $t('common.reset') }}
                  </el-link>
                  <input
                      id="metaDataFile"
                      type="file"
                      name="file"
                      multiple="multiple"
                      accept=".xls,.xlsx"
                      style="display: none"
                      @change="handleMetaFileChange"
                    id="metaDataFile"
                    type="file"
                    name="file"
                    multiple="multiple"
                    accept=".xls,.xlsx"
                    style="display: none"
                    @change="handleMetaFileChange"
                  ></input>
                </el-form-item>
                <el-form-item
                    v-show="uploadFlag"
                    size="small"
                  v-show="uploadFlag"
                  size="small"
                >
                  <el-input
                      :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valueone')"
                      v-model="formInline.metaData"
                      style="width:200px;"
                      disabled
                    :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valueone')"
                    v-model="formInline.metaData"
                    style="width:200px;"
                    disabled
                  >
                  </el-input>
                </el-form-item>
                <!-- é€‰æ‹©WBS数据 -->
                <el-form-item v-show="!uploadFlag">
                  <el-link
                      :disabled="tableData.length == 0 ? false : true"
                      v-show="formInline.wbsData == '请选择WBS数据'"
                      @click="setWBSFile"
                      :underline="false"
                      type="primary"
                    :disabled="tableData.length == 0 ? false : true"
                    v-show="formInline.wbsData == '请选择WBS数据'"
                    @click="setWBSFile"
                    :underline="false"
                    type="primary"
                  >{{ $t('dataManage.dataUpObj.selectWBSData') }}
                  </el-link>
                  <el-link
                      :disabled="tableData.length == 0 ? false : true"
                      v-show="formInline.wbsData != '请选择WBS数据'"
                      @click="restWBSFile"
                      :underline="false"
                      type="primary"
                    :disabled="tableData.length == 0 ? false : true"
                    v-show="formInline.wbsData != '请选择WBS数据'"
                    @click="restWBSFile"
                    :underline="false"
                    type="primary"
                  >{{ $t('common.reset') }}
                  </el-link>
                  <input
                      id="wbsDataFile"
                      type="file"
                      name="file"
                      multiple="multiple"
                      accept=".xls,.xlsx"
                      style="display: none"
                      @change="handleWBSFileChange"
                    id="wbsDataFile"
                    type="file"
                    name="file"
                    multiple="multiple"
                    accept=".xls,.xlsx"
                    style="display: none"
                    @change="handleWBSFileChange"
                  ></input>
                </el-form-item>
                <el-form-item v-show="!uploadFlag">
                  <el-input
                      placeholder="请选择WBS数据"
                      v-model="formInline.wbsData"
                      style="width:210px;"
                      disabled
                    placeholder="请选择WBS数据"
                    v-model="formInline.wbsData"
                    style="width:210px;"
                    disabled
                  >
                  </el-input>
                </el-form-item>
@@ -314,45 +320,45 @@
                <el-form-item>
                  <!-- ä¸Šä¼  -->
                  <el-button
                      v-if="menuStatus.upload"
                      :disabled="tableData.length == 0 ? false : true"
                      @click="setFileUpload"
                      size="small"
                      icon="el-icon-upload"
                      type="success"
                    v-if="menuStatus.upload"
                    :disabled="tableData.length == 0 ? false : true"
                    @click="setFileUpload"
                    size="small"
                    icon="el-icon-upload"
                    type="success"
                  >{{
                      $t('common.upload')
                    }}
                  </el-button>
                  <!-- åˆ é™¤ -->
                  <el-button
                      v-if="menuStatus.delete"
                      :disabled="multipleSelection.length == 0 ? true : false"
                      icon="el-icon-delete"
                      size="small"
                      @click="setFileDelete"
                      type="danger"
                    v-if="menuStatus.delete"
                    :disabled="multipleSelection.length == 0 ? true : false"
                    icon="el-icon-delete"
                    size="small"
                    @click="setFileDelete"
                    type="danger"
                  >{{ $t('common.delete') }}
                  </el-button>
                  <!-- å…¥åº“ -->
                  <el-button
                      v-if="menuStatus.insert"
                      @click="setFileWare"
                      size="small"
                      :disabled="tableData.length == 0 ?  true: false"
                      icon="el-icon-folder-add"
                      type="warning"
                    v-if="menuStatus.insert"
                    @click="setFileWare"
                    size="small"
                    :disabled="tableData.length == 0 ?  true: false"
                    icon="el-icon-folder-add"
                    type="warning"
                  >{{ $t('common.Warehousin') }}
                  </el-button>
                  <!-- è´¨æ£€ -->
                  <el-button
                      style="margin-right:-9px"
                      v-if="menuStatus.insert"
                      :disabled="multipleSelection.length == 0 ? true : false"
                      type="info"
                      size="small"
                      icon="el-icon-folder-checked"
                      @click="handleQuayTestClick()"
                    style="margin-right:-9px"
                    v-if="menuStatus.insert"
                    :disabled="multipleSelection.length == 0 ? true : false"
                    type="info"
                    size="small"
                    icon="el-icon-folder-checked"
                    @click="handleQuayTestClick()"
                  >{{ $t('common.quayTest') }}
                  </el-button>
@@ -360,64 +366,67 @@
              </div>
            </div>
          </el-form>
        </div>
        <!-- ä¸Šä¼ æ•°æ®åˆ—表 -->
        <div class="dividing-line"></div>
        <div class="table_box" :style="styleVar">
        <div
          class="table_box"
          :style="styleVar"
        >
          <el-table
              style="width:100%"
              :data="tableData"
              @selection-change="handleSelectionChange"
              height="calc(100% - 57px)"
            style="width:100%"
            border
            :data="tableData"
            @selection-change="handleSelectionChange"
            height="calc(100% - 57px)"
          >
            <el-table-column
                type="selection"
                width="55"
              type="selection"
              width="55"
            />
            <el-table-column
                align="center"
                type="index"
                :label="$t('common.index')"
                width="70px"
              align="center"
              type="index"
              :label="$t('common.index')"
              width="70px"
            />
            <el-table-column
                align="center"
                prop="name"
                :label="$t('common.name')"
              align="center"
              prop="name"
              :label="$t('common.name')"
            />
            <el-table-column
                align="center"
                prop="sizes"
                :label="$t('common.size')"
                :formatter="changeSizeFile"
              align="center"
              prop="sizes"
              :label="$t('common.size')"
              :formatter="changeSizeFile"
            />
            <el-table-column
                align="center"
                prop="status"
                label="状态"
              align="center"
              prop="status"
              label="状态"
            />
            <el-table-column
                align="center"
                prop="code"
                label="状态"
                v-if="false"
              align="center"
              prop="code"
              label="状态"
              v-if="false"
            />
            <el-table-column
                label="操作"
                width="120"
              label="操作"
              width="120"
            >
              <template slot-scope="scope">
                <el-button
                    v-if="menuStatus.download"
                    v-show="scope.row.code != null"
                    @click="handerLogClick(scope.row)"
                    type="primary"
                    size="mini"
                    plain
                  v-if="menuStatus.download"
                  v-show="scope.row.code != null"
                  @click="handerLogClick(scope.row)"
                  type="primary"
                  size="mini"
                  plain
                > æ—¥å¿—
                </el-button>
              </template>
@@ -427,45 +436,56 @@
      </el-tab-pane>
      <!-- å…¥åº“数据清单 -->
      <el-tab-pane
          :label="$t('dataManage.dataUpObj.receiptdata')"
          name="second"
        :label="$t('dataManage.dataUpObj.receiptdata')"
        name="second"
      >
        <div class="inquire subpage_Div" ref="container1">
        <div
          class="inquire subpage_Div"
          ref="container1"
        >
          <el-form
              :inline="true"
              :model="formWarehousing"
              class="demo-form-inline"
            :inline="true"
            :model="formWarehousing"
            class="demo-form-inline"
          >
            <div class="flex_box">
              <div style="margin-right: auto">
                <el-form-item size="small" :label="$t('dataManage.dataUpObj.describe')">
                <el-form-item
                  size="small"
                  :label="$t('dataManage.dataUpObj.describe')"
                >
                  <el-input
                      v-model="formWarehousing.name"
                      :placeholder="$t('shuJuGuanLi.lable1')"
                      style="width: 200px;"
                  ><i slot="suffix" class="el-icon-search"  @click="setWarehouseSearch" style="padding-right: 8px"></i></el-input>
                    v-model="formWarehousing.name"
                    :placeholder="$t('shuJuGuanLi.lable1')"
                    style="width: 200px;"
                  ><i
                      slot="suffix"
                      class="el-icon-search"
                      @click="setWarehouseSearch"
                      style="padding-right: 8px"
                    ></i></el-input>
                </el-form-item>
              </div>
              <div>
                <el-form-item>
                  <el-button
                      v-if="menuStatus.upload"
                      :disabled="multipleDelete.length == 0 ? true : false"
                      @click="setEnclosure"
                      icon="el-icon-folder-opened"
                      type="success"
                      size="small"
                    v-if="menuStatus.upload"
                    :disabled="multipleDelete.length == 0 ? true : false"
                    @click="setEnclosure"
                    icon="el-icon-folder-opened"
                    type="success"
                    size="small"
                  >{{ $t('common.enclosure') }}
                  </el-button>
                  <el-button
                      v-if="menuStatus.delete"
                      @click="setWarehouseDel"
                      icon="el-icon-folder-delete"
                      type="danger"
                      size="small"
                    v-if="menuStatus.delete"
                    @click="setWarehouseDel"
                    icon="el-icon-folder-delete"
                    type="danger"
                    size="small"
                  >{{ $t('common.delete') }}
                  </el-button>
<!--                  <el-button
                  <!--                  <el-button
                      @click="setWarehouseSearch"
                      icon="el-icon-upload"
                      size="small"
@@ -475,238 +495,254 @@
                    }}
                  </el-button>-->
                  <el-button
                      @click="setWarehouseReset"
                      icon="el-icon-folder-add"
                      size="small"
                      type="info"
                    @click="setWarehouseReset"
                    icon="el-icon-folder-add"
                    size="small"
                    type="info"
                  >{{ $t('common.reset') }}
                  </el-button>
                </el-form-item>
              </div>
            </div>
          </el-form>
        </div>
        <!-- å…¥åº“ -->
        <div class="dividing-line"></div>
        <div class="table_box" :style="styleVar1">
        <div
          class="table_box"
          :style="styleVar1"
        >
          <el-table
              ref="filterTable"
              :data="waretableData"
              style="width: 100%"
              height="calc(100% - 57px)"
              @selection-change="handleDelteChange"
            ref="filterTable"
            :data="waretableData"
            style="width: 100%"
            border
            height="calc(100% - 57px)"
            @selection-change="handleDelteChange"
          >
            <el-table-column
                type="selection"
                width="55"
              type="selection"
              width="55"
            >
            </el-table-column>
            <el-table-column
                align="center"
                type="index"
                :label="$t('common.index')"
                width="70px"
              align="center"
              type="index"
              :label="$t('common.index')"
              width="70px"
            ></el-table-column>
            <el-table-column
                align="center"
                :label="$t('common.name')"
                width="120"
              align="center"
              :label="$t('common.name')"
              width="120"
            >
              <template slot-scope="scope">
                                  <span v-if="scope.row.ismeta > 0">
                     <el-link style="color:#409eff" title="元数据查询" @click="setQueryMetaData(scope.row)"
                              target="_blank">{{ scope.row.name }}</el-link>
            </span>
                <span v-if="scope.row.ismeta > 0">
                  <el-link
                    style="color:#409eff"
                    title="源数据查询"
                    @click="setQueryMetaData(scope.row)"
                    target="_blank"
                  >{{ scope.row.name }}</el-link>
                </span>
                <span v-else-if="scope.row.metaid > 0">
                  <el-link
                    style="color:#409eff"
                    title="元数据查询"
                    @click="setMetaDataQuery(scope.row)"
                    target="_blank"
                  >{{ scope.row.name }}</el-link>
                </span>
                <span v-else>{{ scope.row.name }}</span>
              </template>
            </el-table-column>
            <el-table-column
                align="center"
                prop="dirName"
                :label="$t('dataManage.dataUpObj.catalogue')"
                width="300"
              align="center"
              prop="dirName"
              :label="$t('dataManage.dataUpObj.catalogue')"
              width="300"
            />
            <el-table-column
                align="center"
                prop="depName"
                :label="$t('dataManage.dataUpObj.company')"
                width="200"
              align="center"
              prop="depName"
              :label="$t('dataManage.dataUpObj.company')"
              width="200"
            />
            <el-table-column
                align="center"
                prop="verName"
                :label="$t('dataManage.dataUpObj.versionNo')"
              align="center"
              prop="verName"
              :label="$t('dataManage.dataUpObj.versionNo')"
            />
            <el-table-column
                align="center"
                prop="type"
                :label="$t('common.type')"
              align="center"
              prop="type"
              :label="$t('common.type')"
            />
            <el-table-column
                align="center"
                prop="sizes"
                :label="$t('common.size')"
                :formatter="changeSizeFile"
              align="center"
              prop="sizes"
              :label="$t('common.size')"
              :formatter="changeSizeFile"
            />
            <el-table-column
                align="center"
                :label="$t('dataManage.dataUpObj.tableName')"
              align="center"
              :label="$t('dataManage.dataUpObj.tableName')"
            >
              <template slot-scope="scope">
                <a
                    class="scopeRowColor"
                    @click="detail(scope.row)"
                  class="scopeRowColor"
                  @click="detail(scope.row)"
                >{{ scope.row.tab }}</a>
              </template>
            </el-table-column>
            <el-table-column
                align="center"
                prop="rows"
                :label="$t('common.lineNuber')"
              align="center"
              prop="rows"
              :label="$t('common.lineNuber')"
            />
            <el-table-column
                align="center"
                prop="desc"
                :label="$t('dataManage.dataUpObj.describe')"
              align="center"
              prop="desc"
              :label="$t('dataManage.dataUpObj.describe')"
            />
            <el-table-column
                align="center"
                prop="uname"
                :label="$t('dataManage.vmobj.createonuser')"
              align="center"
              prop="uname"
              :label="$t('dataManage.vmobj.createonuser')"
            />
            <el-table-column
                align="center"
                prop="createTime"
                :label="$t('dataManage.vmobj.createontime')"
                :formatter="changetimeFile"
                width="100"
              align="center"
              prop="createTime"
              :label="$t('dataManage.vmobj.createontime')"
              :formatter="changetimeFile"
              width="100"
            />
          </el-table>
          <div class="pagination_box" style="margin-top: 15px">
          <div
            class="pagination_box"
            style="margin-top: 15px"
          >
            <el-pagination
                @size-change="handleSizeChange"
                @current-change="handleCurrentChange"
                :current-page="listData.pageIndex"
                :page-sizes="[10, 20, 50, 100]"
                :page-size="listData.pageSize"
                layout="total, sizes, prev, pager, next, jumper"
                :total="count"
              @size-change="handleSizeChange"
              @current-change="handleCurrentChange"
              :current-page="listData.pageIndex"
              :page-sizes="[10, 20, 50, 100]"
              :page-size="listData.pageSize"
              layout="total, sizes, prev, pager, next, jumper"
              :total="count"
            >
            </el-pagination>
          </div>
        </div>
      </el-tab-pane>
    </el-tabs>
    <!-- è´¨æ£€å¼¹çª— -->
    <el-dialog
        title="数据质检"
        :visible.sync="quayTestVisible"
        width="70%"
        :modal="false"
        :before-close="handleQuayTestCloseDown"
      title="数据质检"
      :visible.sync="quayTestVisible"
      width="70%"
      :modal="false"
      :before-close="handleQuayTestCloseDown"
    >
      <div class="dialogDiv">
        <el-form
            :inline="true"
            :model="quayTestForms "
            class="demo-form-inline"
          :inline="true"
          :model="quayTestForms "
          class="demo-form-inline"
        >
          <el-form-item :label="$t('dataManage.dataUpObj.dataSpecialty')">
            <el-input
                disabled
                v-model="quayTestForms.sjzy"
              disabled
              v-model="quayTestForms.sjzy"
            ></el-input>
          </el-form-item>
          <el-form-item :label="$t('dataManage.dataUpObj.storageDirectory')">
            <el-input
                disabled
                style="width:400px"
                v-model="quayTestForms.names"
              disabled
              style="width:400px"
              v-model="quayTestForms.names"
            ></el-input>
          </el-form-item>
        </el-form>
        <el-divider/>
        <el-divider />
        <div class="dialogContent">
          <div
              class="ContBox"
              v-show="quayTestShow.checkAttrs"
            class="ContBox"
            v-show="quayTestShow.checkAttrs"
          >
            <el-checkbox
                checked
                disabled
              checked
              disabled
            >属性检查:(*dlg*.gdb+*地形图**.dwg)
            </el-checkbox>
          </div>
          <div
              class="ContBox"
              v-show="quayTestShow.checkMath"
            class="ContBox"
            v-show="quayTestShow.checkMath"
          >
            <el-checkbox
                checked
                disabled
              checked
              disabled
            >数学基础检查:(.shp,.dlg)
            </el-checkbox>
          </div>
          <div
              class="ContBox"
              v-show="quayTestShow.checkDecorate"
            class="ContBox"
            v-show="quayTestShow.checkDecorate"
          >
            <el-checkbox
                checked
                disabled
              checked
              disabled
            >图面整饰检查:(.dwg)
            </el-checkbox>
          </div>
          <div
              class="ContBox"
              v-show="quayTestShow.checkXls"
            class="ContBox"
            v-show="quayTestShow.checkXls"
          >
            <el-checkbox
                checked
                disabled
              checked
              disabled
            >表格数据检查:(.xls/.xlsx)
            </el-checkbox>
          </div>
          <div
              class="ContBox"
              v-show="quayTestShow.checkOrigin"
            class="ContBox"
            v-show="quayTestShow.checkOrigin"
          >
            <el-checkbox
                checked
                disabled
              checked
              disabled
            >原点检查:(*剖面图*.dwg)
            </el-checkbox>
          </div>
          <div
              class="ContBox"
              v-show="quayTestShow.checkMeta"
            class="ContBox"
            v-show="quayTestShow.checkMeta"
          >
            <el-checkbox
                checked
                disabled
              checked
              disabled
            >元数据检查:(*元数据*.xls/.xlsx)
            </el-checkbox>
          </div>
          <div
              class="ContBox"
              v-show="quayTestShow.checkTopology"
            class="ContBox"
            v-show="quayTestShow.checkTopology"
          >
            <el-form
                ref="quayForms"
                :model="quayTestForms"
                class="demo-form-inline"
              ref="quayForms"
              :model="quayTestForms"
              class="demo-form-inline"
            >
              <el-form-item>
                <el-checkbox
                    checked
                    disabled
                  checked
                  disabled
                >拓扑检查:(*地形图*.dwg)
                </el-checkbox>
              </el-form-item>
@@ -753,18 +789,18 @@
            </el-form>
          </div>
          <div
              class="ContBox"
              v-show="quayTestShow.checkDom"
            class="ContBox"
            v-show="quayTestShow.checkDom"
          >
            <el-form
                ref="quayForms"
                :model="quayTestForms"
                class="demo-form-inline"
              ref="quayForms"
              :model="quayTestForms"
              class="demo-form-inline"
            >
              <el-form-item>
                <el-checkbox
                    checked
                    disabled
                  checked
                  disabled
                >栅格检查:(.tif/.img)
                </el-checkbox>
              </el-form-item>
@@ -787,18 +823,18 @@
            </el-form>
          </div>
          <div
              class="ContBox"
              v-show="quayTestShow.checkDem"
            class="ContBox"
            v-show="quayTestShow.checkDem"
          >
            <el-form
                ref="quayForms"
                :model="quayTestForms"
                class="demo-form-inline"
              ref="quayForms"
              :model="quayTestForms"
              class="demo-form-inline"
            >
              <el-form-item>
                <el-checkbox
                    checked
                    disabled
                  checked
                  disabled
                >高程检查:(.tif/.img)
                </el-checkbox>
              </el-form-item>
@@ -821,18 +857,18 @@
            </el-form>
          </div>
          <div
              class="ContBox"
              v-show="quayTestShow.checkLaz"
            class="ContBox"
            v-show="quayTestShow.checkLaz"
          >
            <el-form
                ref="quayForms"
                :model="quayTestForms"
                class="demo-form-inline"
              ref="quayForms"
              :model="quayTestForms"
              class="demo-form-inline"
            >
              <el-form-item>
                <el-checkbox
                    checked
                    disabled
                  checked
                  disabled
                >点云检查:(.laz + *激光点云*.xls/.xlsx)
                </el-checkbox>
              </el-form-item>
@@ -847,18 +883,18 @@
            </el-form>
          </div>
          <div
              class="ContBox"
              v-show="quayTestShow.checkOsgb"
            class="ContBox"
            v-show="quayTestShow.checkOsgb"
          >
            <el-form
                ref="quayForms"
                :model="quayTestForms"
                class="demo-form-inline"
              ref="quayForms"
              :model="quayTestForms"
              class="demo-form-inline"
            >
              <el-form-item>
                <el-checkbox
                    checked
                    disabled
                  checked
                  disabled
                >OSGB检查:(.osgb + *倾斜摄影*.xls/.xlsx)
                </el-checkbox>
              </el-form-item>
@@ -875,106 +911,106 @@
        </div>
      </div>
      <span
          slot="footer"
          class="dialog-footer"
        slot="footer"
        class="dialog-footer"
      >
        <el-button
            class="elBotton"
            size="small"
            @click="quayTestVisible = false"
          class="elBotton"
          size="small"
          @click="quayTestVisible = false"
        >取 æ¶ˆ</el-button>
        <el-button
            class="elBotton"
            size="small"
            @click="commonQuayTest"
          class="elBotton"
          size="small"
          @click="commonQuayTest"
        >ç¡® å®š</el-button>
      </span>
    </el-dialog>
    <!-- æ•´ä½“文件质检弹窗 -->
    <el-dialog
        title="数据质检"
        :visible.sync="testQuayVisible"
        :modal="false"
        :before-close="handleTestQuayCloseDown"
      title="数据质检"
      :visible.sync="testQuayVisible"
      :modal="false"
      :before-close="handleTestQuayCloseDown"
    >
      <el-form :model="formCheckAll" label-position="top">
      <el-form
        :model="formCheckAll"
        label-position="top"
      >
        <el-form-item label="项目名称">
          <el-input
              disabled
              v-model="formCheckAll.xmmc"
              style="width:85%"
            disabled
            v-model="formCheckAll.xmmc"
            style="width:85%"
          ></el-input>
        </el-form-item>
        <el-form-item label="所属专业">
          <el-input
              disabled
              v-model="formCheckAll.sjzy"
              style="width:85%"
            disabled
            v-model="formCheckAll.sjzy"
            style="width:85%"
          ></el-input>
        </el-form-item>
        <el-form-item
            v-show="formCheckAll.isDiZai"
            label="所属专业"
          v-show="formCheckAll.isDiZai"
          label="地灾类型"
        >
          <el-select
              v-model="formCheckAll.diZaiType"
              placeholder="请选择"
              style="width:85%"
            v-model="formCheckAll.diZaiType"
            placeholder="请选择"
            style="width:85%"
          >
            <el-option
                v-for="item in disOptions"
                :key="item.value"
                :label="item.label"
                :value="item.value"
              v-for="item in disOptions"
              :key="item.value"
              :label="item.label"
              :value="item.value"
            >
            </el-option>
          </el-select>
        </el-form-item>
      </el-form>
      <span
          slot="footer"
          class="dialog-footer"
        slot="footer"
        class="dialog-footer"
      >
        <el-button
            class="elBotton"
            size="small"
            @click="testQuayVisible = false"
          class="elBotton"
          size="small"
          @click="testQuayVisible = false"
        >取 æ¶ˆ</el-button>
        <el-button
            class="elBotton"
            size="small"
            @click="commonTestQuay"
          class="elBotton"
          size="small"
          @click="commonTestQuay"
        >ç¡® å®š</el-button>
      </span>
    </el-dialog>
    <!-- ifream下载文件地址 -->
    <iframe
        id="downFrame"
        src=""
        style="display: none; border: 0; padding: 0; height: 0; width: 0"
      id="downFrame"
      src=""
      style="display: none; border: 0; padding: 0; height: 0; width: 0"
    ></iframe>
    <!-- æ•°æ®åŒ¹é… -->
    <el-dialog
        :title="$t('dataManage.datawarehousing')"
        :visible.sync="dialogWarehousing"
        width="70%"
      :title="$t('dataManage.datawarehousing')"
      :visible.sync="dialogWarehousing"
      width="70%"
    >
      <div class="dialogBox">
        <div class="transFarBox subpage_Div">
          <ul>
            <li
                @click="singleElection(item)"
                v-for="(item, i) in tableWareOne"
                :class="{ active: activeName == item.eventid }"
              @click="singleElection(item)"
              v-for="(item, i) in tableWareOne"
              :class="{ active: activeName == item.eventid }"
            >{{ item.tab }} ({{ item.type }})
            </li>
          </ul>
@@ -990,9 +1026,9 @@
        <div class="transFarBox subpage_Div">
          <ul>
            <li
                @click="singleElection2(item)"
                v-for="(item, i) in tableWareTwo"
                :class="{ active: activeName2 == item.entity }"
              @click="singleElection2(item)"
              v-for="(item, i) in tableWareTwo"
              :class="{ active: activeName2 == item.entity }"
            >{{ item.tabDesc }} ( {{ item.ns }}.{{ item.tab }})
            </li>
          </ul>
@@ -1002,86 +1038,86 @@
            <div style="padding:2%">
              <el-link @click="setWareTableChangeLeft"><i class="el-icon-d-arrow-left"></i></el-link>
            </div>
            <br/>
            <br />
            <div style="padding:2%">
              <el-link><i
                  @click="setWareTableChangeRight"
                  class="el-icon-d-arrow-right"
              ></i></el-link>
                ></i></el-link>
            </div>
          </div>
        </div>
        <div class="transFarBox subpage_Div">
          <ul>
            <li
                @click="singleElection3(i)"
                v-for="(item, i) in tableWareThree"
                :class="{ active: activeName3 ==( item.tab+i)}"
              @click="singleElection3(i)"
              v-for="(item, i) in tableWareThree"
              :class="{ active: activeName3 ==( item.tab+i)}"
            >{{ item.tab }} ( {{ item.tabDesc }} {{ item.ns }}.{{ item.tabs }} )
            </li>
          </ul>
        </div>
      </div>
      <span
          slot="footer"
          class="dialog-footer"
        slot="footer"
        class="dialog-footer"
      >
        <el-button
            size="small"
            @click="autoMatchWare"
            type="primary"
          size="small"
          @click="autoMatchWare"
          type="primary"
        >自动匹配</el-button>
        <el-button
            size="small"
            type="info"
            @click="setInsrtWareTableClose "
          size="small"
          type="info"
          @click="setInsrtWareTableClose "
        >取 æ¶ˆ</el-button>
        <el-button
            size="small"
            type="primary"
            @click="setInsrtWareTable"
          size="small"
          type="primary"
          @click="setInsrtWareTable"
        >ç¡® å®š</el-button>
      </span>
    </el-dialog>
    <el-dialog
        :title="$t('common.details')"
        :visible.sync="dialogVisible"
        width="70%"
      :title="$t('common.details')"
      :visible.sync="dialogVisible"
      width="70%"
    >
      <div style="height: 500px; overflow: auto">
        <el-table
            ref="filterTable"
            :data="dbTableData"
            height="90%"
            border
            style="width: 100%"
          ref="filterTable"
          :data="dbTableData"
          height="90%"
          border
          style="width: 100%"
        >
          <el-table-column
              width="60"
              type="index"
              :label="$t('common.index')"
            width="60"
            type="index"
            :label="$t('common.index')"
          />
          <el-table-column
              v-for="(item, index) in attributeData"
              :key="index"
              :label="item.alias"
              :prop="item.field"
              show-overflow-tooltip
              align="center"
            v-for="(item, index) in attributeData"
            :key="index"
            :label="item.alias"
            :prop="item.field"
            show-overflow-tooltip
            align="center"
          ></el-table-column>
        </el-table>
        <div
            style="margin-top: 15px"
            class="pagination_box"
          style="margin-top: 15px"
          class="pagination_box"
        >
          <el-pagination
              @size-change="handleLoaderSizeChange"
              @current-change="handleLoaderCurrentChange"
              :current-page="listLoader.pageIndex"
              :page-sizes="[10, 20, 50, 100]"
              :page-size="listLoader.pageSize"
              layout="total, sizes, prev, pager, next, jumper"
              :total="count1"
            @size-change="handleLoaderSizeChange"
            @current-change="handleLoaderCurrentChange"
            :current-page="listLoader.pageIndex"
            :page-sizes="[10, 20, 50, 100]"
            :page-size="listLoader.pageSize"
            layout="total, sizes, prev, pager, next, jumper"
            :total="count1"
          >
          </el-pagination>
        </div>
@@ -1089,163 +1125,256 @@
    </el-dialog>
    <el-dialog
        :close-on-click-modal="false"
        title="上传进度"
        :visible.sync="jindudialogVisible"
        width="30%"
      :close-on-click-modal="false"
      :title="sc.label1"
      :visible.sync="jindudialogVisible"
      width="30%"
    >
      <div>
        <div>
          æ–‡ä»¶ä¼ è¾“进度:
          {{sc.label2}}
        </div>
        <div>
          <el-progress
              :percentage="jindutiao"
              :format="format"
            :percentage="jindutiao"
            :format="format"
          ></el-progress>
        </div>
      </div>
    </el-dialog>
    <el-dialog
        :title="$t('common.details')"
        :visible.sync="enclosureVisible"
        :show-close="false"
      :title="$t('common.details')"
      :visible.sync="enclosureVisible"
      :show-close="false"
    >
      <span
          style="font-size:20px"
          class="scopeRowColor"
        style="font-size:20px"
        class="scopeRowColor"
      >{{ enclosureTitle }}不能上传附件是否继续</span>
      <span
          slot="footer"
          class="dialog-footer"
        slot="footer"
        class="dialog-footer"
      >
        <el-button @click="enclosureVisible = false">取 æ¶ˆ</el-button>
        <el-button
            type="primary"
            @click="uploadAnFiles"
          type="primary"
          @click="uploadAnFiles"
        >ç»§ç»­</el-button>
      </span>
    </el-dialog>
    <el-dialog
        :title="fromQueryMeta.title"
        :visible.sync="queryMetaFlag"
        width="70%"
      :title="fromQueryMeta.title"
      :visible.sync="queryMetaFlag"
      width="70%"
    >
      <div style="height: 500px; overflow: auto;width:100%; ">
        <el-form :inline="true" :model="fromQueryMeta" class="demo-form-inline">
        <el-form
          :inline="true"
          :model="fromQueryMeta"
          class="demo-form-inline"
        >
          <el-form-item>
            <el-input size="small" v-model="fromQueryMeta.name" :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valueone')"
                      suffix-icon="el-icon-edit"></el-input>
            <el-input
              size="small"
              v-model="fromQueryMeta.name"
              :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valueone')"
              suffix-icon="el-icon-edit"
            ></el-input>
          </el-form-item>
          <el-form-item>
            <el-button type="primary" size="small" @click="setSearchMetaData()">查询</el-button>
            <el-button type="info" size="small" @click="setRestMetaData()">重置</el-button>
            <el-button
              type="primary"
              size="small"
              @click="setSearchMetaData()"
            >查询</el-button>
            <el-button
              type="info"
              size="small"
              @click="setRestMetaData()"
            >重置</el-button>
          </el-form-item>
        </el-form>
        <el-table
            ref="filterTable"
            :data="metaDataTable"
            style="width: 100%"
            height="calc(100% - 130px)"
          ref="filterTable"
          :data="metaDataTable"
          style="width: 100%"
          height="calc(100% - 130px)"
        >
          <el-table-column
              align="center"
              type="index"
              :label="$t('common.index')"
              width="70px"
            align="center"
            type="index"
            :label="$t('common.index')"
            width="70px"
          ></el-table-column>
          <el-table-column
              align="center"
              prop="name"
              :label="$t('common.name')"
              width="120"
            align="center"
            prop="name"
            :label="$t('common.name')"
            width="120"
          >
          </el-table-column>
          <el-table-column
              align="center"
              prop="dirName"
              :label="$t('dataManage.dataUpObj.catalogue')"
              width="300"
            align="center"
            prop="dirName"
            :label="$t('dataManage.dataUpObj.catalogue')"
            width="300"
          />
          <el-table-column
              align="center"
              prop="depName"
              :label="$t('dataManage.dataUpObj.company')"
              width="200"
            align="center"
            prop="depName"
            :label="$t('dataManage.dataUpObj.company')"
            width="200"
          />
          <el-table-column
              align="center"
              prop="verName"
              :label="$t('dataManage.dataUpObj.versionNo')"
            align="center"
            prop="verName"
            :label="$t('dataManage.dataUpObj.versionNo')"
          />
          <el-table-column
              align="center"
              prop="type"
              :label="$t('common.type')"
            align="center"
            prop="type"
            :label="$t('common.type')"
          />
          <el-table-column
              align="center"
              prop="sizes"
              :label="$t('common.size')"
              :formatter="changeSizeFile"
            align="center"
            prop="sizes"
            :label="$t('common.size')"
            :formatter="changeSizeFile"
          />
          <el-table-column
              align="center"
              :label="$t('dataManage.dataUpObj.tableName')"
            align="center"
            :label="$t('dataManage.dataUpObj.tableName')"
          >
            <template slot-scope="scope">
              <a
                  class="scopeRowColor"
                  @click="detail(scope.row)"
                class="scopeRowColor"
                @click="detail(scope.row)"
              >{{ scope.row.tab }}</a>
            </template>
          </el-table-column>
          <el-table-column
              align="center"
              prop="rows"
              :label="$t('common.lineNuber')"
            align="center"
            prop="rows"
            :label="$t('common.lineNuber')"
          />
          <el-table-column
              align="center"
              prop="desc"
              :label="$t('dataManage.dataUpObj.describe')"
            align="center"
            prop="desc"
            :label="$t('dataManage.dataUpObj.describe')"
          />
        </el-table>
        <div
            style="margin-top: 15px"
            class="pagination_box"
          style="margin-top: 15px"
          class="pagination_box"
        >
          <el-pagination
              @size-change="handleMetaSizeChange"
              @current-change="handMetaCurrentChange"
              :current-page="listMetaData.pageIndex"
              :page-sizes="[10, 20, 50, 100]"
              :page-size="listMetaData.pageSize"
              layout="total, sizes, prev, pager, next, jumper"
              :total="listMetaData.count"
            @size-change="handleMetaSizeChange"
            @current-change="handMetaCurrentChange"
            :current-page="listMetaData.pageIndex"
            :page-sizes="[10, 20, 50, 100]"
            :page-size="listMetaData.pageSize"
            layout="total, sizes, prev, pager, next, jumper"
            :total="listMetaData.count"
          >
          </el-pagination>
        </div>
      </div>
    </el-dialog>
    <el-dialog
      :title="fromQueryMeta.title"
      :visible.sync="queryMetaFlag1"
      width="70%"
    >
      <div style="height: 65vh; width: 100%">
        <el-table
          ref="filterTable"
          :data="metaDataTable1"
          style="width: 100%"
          height="100%"
        >
          <el-table-column
            align="center"
            type="index"
            :label="$t('common.index')"
            width="70px"
          ></el-table-column>
          <el-table-column
            align="center"
            prop="name"
            :label="$t('common.name')"
            width="120"
          >
          </el-table-column>
          <el-table-column
            align="center"
            prop="dirName"
            :label="$t('dataManage.dataUpObj.catalogue')"
            width="300"
          />
          <el-table-column
            align="center"
            prop="depName"
            :label="$t('dataManage.dataUpObj.company')"
            width="200"
          />
          <el-table-column
            align="center"
            prop="verName"
            :label="$t('dataManage.dataUpObj.versionNo')"
          />
          <el-table-column
            align="center"
            prop="type"
            :label="$t('common.type')"
          />
          <el-table-column
            align="center"
            prop="sizes"
            :label="$t('common.size')"
            :formatter="changeSizeFile"
          />
          <el-table-column
            align="center"
            :label="$t('dataManage.dataUpObj.tableName')"
          >
            <template slot-scope="scope">
              <a
                class="scopeRowColor"
                @click="detail(scope.row)"
              >{{
                  scope.row.tab
                }}</a>
            </template>
          </el-table-column>
          <el-table-column
            align="center"
            prop="rows"
            :label="$t('common.lineNuber')"
          />
          <el-table-column
            align="center"
            prop="desc"
            :label="$t('dataManage.dataUpObj.describe')"
          />
        </el-table>
      </div>
    </el-dialog>
    <input
        name="file1"
        :accept="'.zip'"
        type="file"
        id="editimageFile"
        multiple="multiple"
        style="display: none"
        @change="uploadAnFilesChange"
      name="file1"
      :accept="'.zip'"
      type="file"
      id="editimageFile"
      multiple="multiple"
      style="display: none"
      @change="uploadAnFilesChange"
    />
  </div>
</template>
@@ -1253,7 +1382,7 @@
<script>
import $ from "jquery";
import MyBread from "../../components/MyBread.vue";
import {getToken} from "@/utils/auth";
import { getToken } from "@/utils/auth";
import {
  dataUpload_deleteMetas,
  dataUpload_insertFiles,
@@ -1271,6 +1400,7 @@
  dataUploadSelectFiles,
  dataUploadSelectPath,
  dataUploadSelectVerByDirid,
  dataUpload_selectMetaById,
  selectdirTab,
} from "../../api/api";
@@ -1358,7 +1488,7 @@
        name: null,
      },
      count: 0,
      formWarehousing: {name: ""},
      formWarehousing: { name: "" },
      multipleSelection: [],
      tableData: [],
      entryOption: [],
@@ -1387,6 +1517,7 @@
        selectFileType: "*.*",
        coordinateId: null,
        path: null,
        verid: null,
      },
      cascader: {
        label: "name",
@@ -1473,12 +1604,18 @@
        name: "",
      },
      metaDataTable: [],
      queryMetaFlag1: false,
      metaDataTable1: [],
      getCheckedKeys: null,
      sc: {
        label1: '上传',
        label2: '文件上传进度:'
      }
    };
  },
  mounted() {
    //获取目录
    this.getSelectdirTab();
    //获取坐标系
    this.setCoordinateSystem();
    //获取项目名称
@@ -1489,6 +1626,8 @@
    this.getPerms();
    window.addEventListener("resize", this.onResize);
    this.calHeight();
    //获取目录
    this.getSelectdirTab();
  },
  beforeDestroy() {
    this.timer && clearTimeout(this.timer);
@@ -1522,6 +1661,22 @@
      this.listMetaData.pageIndex = val;
      this.startQueryMetaData();
    },
    //元数据查询
    async setMetaDataQuery(row) {
      this.fromQueryMeta.title = row.name;
      this.listMetaData = {
        id: row.metaid,
      };
      const data = await dataUpload_selectMetaById(this.listMetaData);
      if (data.code != 200) {
        return;
      }
      this.queryMetaFlag1 = true;
      this.metaDataTable1 = [data.result];
    },
    //元数据查询
    setQueryMetaData(row) {
      this.fromQueryMeta.title = row.name;
@@ -1581,52 +1736,57 @@
        formData.append("ids", this.enclosureData[i]);
      }
      const that = this;
      this.sc = {
        label1: '上传',
        label2: '文件上传进度:'
      }
      that.jindudialogVisible = true;
      that.$set(this, "jindutiaoname", "附件上传");
      that.$set(this, "jindutiao", 0);
      this.loading = true;
      $.ajax(
          BASE_URL +
          "/dataUpload/uploadXlsAnnex?token=" +
          getToken() +
          "&path=" +
          this.formInline.path,
          {
            type: "post",
            data: formData,
            async: true,
            cache: false,
            processData: false,
            contentType: false,
            success: (rs) => {
              this.loading = false;
              if (rs.code != 200) {
                return this.$message.error("附件上传失败");
              }
        BASE_URL +
        "/dataUpload/uploadXlsAnnex?token=" +
        getToken() +
        "&path=" +
        this.formInline.path,
        {
          type: "post",
          data: formData,
          async: true,
          cache: false,
          processData: false,
          contentType: false,
          success: (rs) => {
            this.loading = false;
            if (rs.code != 200) {
              return this.$message.error("附件上传失败");
            }
              this.$set(this, "jindutiao", 100);
              this.$message({
                message: "附件上传成功",
                type: "success",
              });
            },
            error: (rs) => {
              this.loading = false;
              this.$message.error("附件上传失败");
            },
            xhr: function () {
              var myXhr = $.ajaxSettings.xhr();
              if (myXhr.upload) {
                //检查upload属性是否存在
                myXhr.upload.addEventListener(
                    "progress",
                    that.progressHandlingFunction,
                    false
                ); //绑定progress事件的回调函数
              }
              return myXhr; //xhr对象返回给jQuery使用
            },
          }
            this.$set(this, "jindutiao", 100);
            this.$message({
              message: "附件上传成功",
              type: "success",
            });
          },
          error: (rs) => {
            this.loading = false;
            this.$message.error("附件上传失败");
          },
          xhr: function () {
            var myXhr = $.ajaxSettings.xhr();
            if (myXhr.upload) {
              //检查upload属性是否存在
              myXhr.upload.addEventListener(
                "progress",
                that.progressHandlingFunction,
                false
              ); //绑定progress事件的回调函数
            }
            return myXhr; //xhr对象返回给jQuery使用
          },
        }
      );
    },
    //选择上传附件的文件
@@ -1746,6 +1906,7 @@
        this.$message.error("字段列表调用失败");
        return;
      }
      var val = data1.result;
      for (var i in val) {
        val[i].createuser = val[i].createName;
@@ -1762,6 +1923,29 @@
      }
      this.dbTableData = data1.result;
      this.count1 = data1.count;
    },
    changetimeLayer(res) {
      var time = new Date(res);
      var y = time.getFullYear();
      var m = time.getMonth() + 1;
      var d = time.getDate();
      var h = time.getHours();
      var mm = time.getMinutes();
      var s = time.getSeconds();
      return (
        y +
        '-' +
        this.add0(m) +
        '-' +
        this.add0(d) +
        ' ' +
        h +
        ':' +
        mm +
        ':' +
        s
      );
    },
    //自动匹配取消
    setInsrtWareTableClose() {
@@ -1797,7 +1981,7 @@
      this.loading = true;
      const res = await dataUpload_insertFiles(
          JSON.stringify(this.insertWareList)
        JSON.stringify(this.insertWareList)
      );
      this.loading = false;
      if (res.code != 200) {
@@ -1830,7 +2014,7 @@
      }
      std.forEach((item) => {
        this.tableWareOne = this.tableWareOne.filter(
            (items) => items.tab !== item
          (items) => items.tab !== item
        );
      });
    },
@@ -1865,7 +2049,7 @@
      this.wareSelectOne.entity = this.wareSelectTwo.entity;
      this.wareSelectOne.tabDesc = this.wareSelectTwo.tabDesc;
      this.wareSelectOne.tabs =
          this.wareSelectTwo.ns + "." + this.wareSelectTwo.tab;
        this.wareSelectTwo.ns + "." + this.wareSelectTwo.tab;
      if (this.tableWareThree.indexOf(this.wareSelectOne) != -1) {
      } else {
        this.tableWareThree.push(this.wareSelectOne);
@@ -1924,7 +2108,7 @@
          }
          if (std.length != 0) {
            return this.$message.error(
                std.toString() + ",未质检或质检失败,不能入库"
              std.toString() + ",未质检或质检失败,不能入库"
            );
          }
        } else if (this.formInline.uploadType == "v2") {
@@ -1941,7 +2125,7 @@
          }
          if (std.length != 0) {
            return this.$message.error(
                std.toString() + ",未质检或质检失败,不能入库"
              std.toString() + ",未质检或质检失败,不能入库"
            );
          }
        }
@@ -1977,29 +2161,37 @@
    handerLogClick(res) {
      for (var i in res.code) {
        var url =
            BASE_URL +
            "/dataUpload/downloadResult?token=" +
            getToken() +
            "&id=" +
            res.code[i];
          BASE_URL +
          "/dataUpload/downloadResult?token=" +
          getToken() +
          "&id=" +
          res.code[i];
        $("#downFrame").attr("src", url).click();
      }
    },
    //整体文件质检提交
    commonTestQuay() {
      this.testQuayVisible = false;
      if (this.formCheckAll.diZaiType != "NO") {
        this.formCheckAll.isDiZai = "YES";
      // if (this.formCheckAll.diZaiType != "NO") {
      //   this.formCheckAll.isDiZai = "YES";
      // }
      //
      this.sc = {
        label1: '质检',
        label2: '文件质检进度:'
      }
      this.loading = true;
      this.jindudialogVisible = true;
      this.loading = false;
      this.$set(this, "jindutiao", 0);
      this.getStartTestQuayTaskStatus();
    },
    //整体文件多条数据质检
    async getStartTestQuayTaskStatus() {
      if (
          this.multipleSelection == 0 ||
          this.taskStatus == this.multipleSelection.length
        this.multipleSelection == 0 ||
        this.taskStatus == this.multipleSelection.length
      ) {
        this.jindudialogVisible = false;
        this.loading = false;
        return;
      }
@@ -2030,32 +2222,43 @@
    //单文件数据质检提交
    async commonQuayTest() {
      this.loading = true;
      // this.loading = true;
      this.quayTestVisible = false;
      this.taskStatus = 0;
      this.getStartTaskStatus();
      this.sc = {
        label1: '质检',
        label2: '文件质检进度:'
      }
      this.jindudialogVisible = true;
      this.$set(this, "jindutiao", 0);
    },
    //单文件多条数据质检
    async getStartTaskStatus() {
      const that = this;
      if (
          this.multipleSelection == 0 ||
          this.taskStatus == this.multipleSelection.length
        this.multipleSelection == 0 ||
        this.taskStatus == this.multipleSelection.length
      ) {
        this.loading = false;
        that.jindudialogVisible = false;
        return;
      }
      this.quayTestForms.zipPath = this.multipleSelection[this.taskStatus].path;
      if (this.quayTestForms.zipPath.indexOf(".zip") == -1) {
        this.taskStatus++;
        this.getStartTaskStatus();
      } else {
        this.quayTestForms.names = this.pathBak;
        var value = this.$refs["selectcascader"].getCheckedNodes();
        var bak = value[0].data.fullName.split("\\");
        var value = this.getCheckedKeys
        var bak = value.data.fullName.split("\\");
        this.quayTestForms.xmmc = bak[this.taskStatus];
        this.quayTestForms.sjzy = this.formInline.specialtyId;
        this.quayTestForms.zipPath =
            this.multipleSelection[this.taskStatus].path;
          this.multipleSelection[this.taskStatus].path;
        const data = await dataUpload_uploadChecks(this.quayTestForms);
        if (data.code != 200) {
          this.$message.error("数据质检提交失败");
@@ -2073,7 +2276,7 @@
    async getselectTaskStatus(res) {
      var std = 0;
      for (var i = 0; i < res.length; i++) {
        const data = await dataUpload_selectTaskStatus({id: res[i]});
        const data = await dataUpload_selectTaskStatus({ id: res[i] });
        std += data.progress;
@@ -2083,8 +2286,8 @@
            //质检成功
            for (var i in this.tableData) {
              if (
                  this.tableData[i].path ==
                  this.multipleSelection[this.taskStatus].path
                this.tableData[i].path ==
                this.multipleSelection[this.taskStatus].path
              ) {
                this.tableData[i].status = "质检成功";
              }
@@ -2099,8 +2302,8 @@
            //任务失败
            for (var i in this.tableData) {
              if (
                  this.tableData[i].path ==
                  this.multipleSelection[this.taskStatus].path
                this.tableData[i].path ==
                this.multipleSelection[this.taskStatus].path
              ) {
                this.tableData[i].status = "质检失败";
              }
@@ -2122,8 +2325,9 @@
      this.progress = std / (res.length * 100);
      for (var i in this.tableData) {
        if (
            this.tableData[i].path == this.multipleSelection[this.taskStatus].path
          this.tableData[i].path == this.multipleSelection[this.taskStatus].path
        ) {
          this.$set(this, "jindutiao", parseInt(this.progress * 100));
          this.tableData[i].status = parseInt(this.progress * 100) + "%";
        }
      }
@@ -2131,7 +2335,7 @@
    async sendTaskStatus(res) {
      var std = 0;
      for (var i = 0; i < res.length; i++) {
        const data = await dataUpload_selectTaskStatus({id: res[i]});
        const data = await dataUpload_selectTaskStatus({ id: res[i] });
        std += data.progress;
        if (data.status == 5) {
@@ -2176,11 +2380,14 @@
        }
      }
      this.progress = std / (res.length * 100);
      // for (var i in this.tableData) {
      //   if (this.tableData[i].path == this.multipleSelection[this.taskStatus].path) {
      //     this.tableData[i].status = parseInt(this.progress * 100) + "%";
      //   }
      // }
      this.$set(this, "jindutiao", parseInt(this.progress * 100));
      for (var i in this.tableData) {
        for (var j in this.multipleSelection) {
          if (this.tableData[i].path == this.multipleSelection[j].path) {
@@ -2292,15 +2499,15 @@
      }
      for (var i = 0, c = fs1.files.length; i < c; i++) {
        formData.append(fs1.files[i].name, fs1.files[i]);
        this.fileType.push({name: fs1.files[i].name, type: "selectData"});
        this.fileType.push({ name: fs1.files[i].name, type: "selectData" });
      }
      if (fs2 != null) {
        for (var i = 0, c = fs2.files.length; i < c; i++) {
          formData.append(fs2.files[i].name, fs2.files[i]);
          if (this.formInline.uploadType == "v1") {
            this.fileType.push({name: fs2.files[i].name, type: "metaData"});
            this.fileType.push({ name: fs2.files[i].name, type: "metaData" });
          } else if (this.formInline.uploadType == "v2") {
            this.fileType.push({name: fs2.files[i].name, type: "wbsData"});
            this.fileType.push({ name: fs2.files[i].name, type: "wbsData" });
          }
        }
      }
@@ -2314,51 +2521,51 @@
      });
      that.$set(this, "jindutiaoname", listval);
      that.$set(this, "jindutiao", 0);
      this.loading = true;
      // this.loading = true;
      $.ajax(
          BASE_URL +
          "/dataUpload/uploadFiles?token=" +
          token +
          "&path=" +
          this.formInline.path,
          {
            type: "post",
            data: formData,
            async: true,
            cache: false,
            processData: false,
            contentType: false,
            success: (rs) => {
              this.loading = false;
              if (rs.code != 200) {
                return this.$message.error("数据上传失败");
              }
              this.getFileLength();
              this.$set(this, "jindutiao", 100);
              this.$message({
                message: "上传成功",
                type: "success",
              });
              this.clearFileSelect();
            },
            error: (rs) => {
              this.loading = false;
              this.$message.error("数据上传失败");
            },
            xhr: function () {
              var myXhr = $.ajaxSettings.xhr();
        BASE_URL +
        "/dataUpload/uploadFiles?token=" +
        token +
        "&path=" +
        this.formInline.path,
        {
          type: "post",
          data: formData,
          async: true,
          cache: false,
          processData: false,
          contentType: false,
          success: (rs) => {
            this.loading = false;
            if (rs.code != 200) {
              return this.$message.error("数据上传失败");
            }
            this.getFileLength();
            this.$set(this, "jindutiao", 100);
            this.$message({
              message: "上传成功",
              type: "success",
            });
            this.clearFileSelect();
          },
          error: (rs) => {
            this.loading = false;
            this.$message.error("数据上传失败");
          },
          xhr: function () {
            var myXhr = $.ajaxSettings.xhr();
              if (myXhr.upload) {
                //检查upload属性是否存在
                myXhr.upload.addEventListener(
                    "progress",
                    that.progressHandlingFunction,
                    false
                ); //绑定progress事件的回调函数
              }
              return myXhr; //xhr对象返回给jQuery使用
            },
          }
            if (myXhr.upload) {
              //检查upload属性是否存在
              myXhr.upload.addEventListener(
                "progress",
                that.progressHandlingFunction,
                false
              ); //绑定progress事件的回调函数
            }
            return myXhr; //xhr对象返回给jQuery使用
          },
        }
      );
    },
    progressHandlingFunction(event) {
@@ -2369,7 +2576,15 @@
      this.$set(this, "jindutiao", loaded);
    },
    format(percentage) {
      return percentage === 100 ? "上传完毕" : `${percentage}%`;
      // return percentage === 100 ? "上传完毕" : `${percentage}%`;
      var label;
      if (this.sc.label1 == "上传") {
        label = "上传完毕"
      } else {
        label = `${percentage}%`
      }
      return percentage === 100 ? label : `${percentage}%`;
    },
    //获取文件上传路径
    async getFilePath() {
@@ -2387,7 +2602,7 @@
          return rs;
        }
      });
      this.pathBak = val[0].bak;
      this.pathBak = val[0].checks;
      this.formInline.dirid = val[0].id;
      this.getselectVerByDirid();
    },
@@ -2436,11 +2651,11 @@
    //数据质检弹窗关闭--项目整体
    handleTestQuayCloseDown() {
      this.$confirm("确认关闭?")
          .then((_) => {
            this.closeTestQuayCloseDialog();
          })
          .catch((_) => {
          });
        .then((_) => {
          this.closeTestQuayCloseDialog();
        })
        .catch((_) => {
        });
    },
    closeTestQuayCloseDialog() {
      this.testQuayVisible = false;
@@ -2448,11 +2663,11 @@
    //数据质检弹窗关闭--单文件
    handleQuayTestCloseDown() {
      this.$confirm("确认关闭?")
          .then((_) => {
            this.closeQuayTestCloseDialog();
          })
          .catch((_) => {
          });
        .then((_) => {
          this.closeQuayTestCloseDialog();
        })
        .catch((_) => {
        });
    },
    closeQuayTestCloseDialog() {
      this.quayTestVisible = false;
@@ -2466,8 +2681,9 @@
        return this.$message("请选择需要质检的文件");
      }
      if (this.formInline.uploadType == "v1") {
        var value = this.$refs["selectcascader"].getCheckedNodes();
        var fileType = value[0].data.fullName;
        var value = this.getCheckedKeys
        var fileType = value.data.fullName;
        this.quayTestForms.names = fileType;
        this.quayTestForms.sjzy = this.formInline.specialtyId;
        this.quayTestVisible = true;
@@ -2500,10 +2716,10 @@
        this.formCheckAll.xmmc = val[0].name;
        this.formCheckAll.sjzy = this.formInline.specialtyId;
        if (this.formCheckAll.sjzy.indexOf("地灾") != -1) {
          this.formCheckAll.isDiZai = true;
          this.formCheckAll.isDiZai = "YES";
          this.formCheckAll.diZaiType = this.disOptions[0].value;
        } else {
          this.formCheckAll.isDiZai = false;
          this.formCheckAll.isDiZai = "NO";
          this.formCheckAll.diZaiType = "NO";
        }
        this.testQuayVisible = true;
@@ -2517,7 +2733,7 @@
        std.push(this.multipleDelete[i].id);
      }
      const res = await dataUpload_deleteMetas({ids: std.toString()});
      const res = await dataUpload_deleteMetas({ ids: std.toString() });
      this.loading = false;
      if (res.code != 200) {
        this.$message.error("删除失败");
@@ -2558,17 +2774,17 @@
      var mm = time.getMinutes();
      var s = time.getSeconds();
      return (
          y +
          "-" +
          this.add0(m) +
          "-" +
          this.add0(d) +
          " " +
          h +
          ":" +
          mm +
          ":" +
          s
        y +
        "-" +
        this.add0(m) +
        "-" +
        this.add0(d) +
        " " +
        h +
        ":" +
        mm +
        ":" +
        s
      );
    },
    //格式化时间
@@ -2682,7 +2898,7 @@
        this.formInline.entryId = this.entryOption[0].name;
        this.formInline.dirid = this.entryOption[0].id;
        this.getselectVerByDirid();
        this.pathBak = this.entryOption[0].bak;
        this.pathBak = this.entryOption[0].checks;
      } else {
        this.getStartDirChecked(this.catalogOption);
        this.getselectVerByDirid();
@@ -2693,10 +2909,11 @@
    //版本号获取
    async getselectVerByDirid() {
      this.verOption = [];
      this.formInline.verid = "";
      const res = await dataUploadSelectVerByDirid({
        dirid: this.formInline.dirid,
      });
      if (res.code != 200) {
        this.$message.error("版本列表获取失败");
        return;
@@ -2711,9 +2928,11 @@
        this.$message.error("目录列表获取失败");
        return;
      }
      this.catalogOption = this.treeData(res.result);
      this.formInline.dirName = this.catalogOption[0].name;
      this.getStartDirChecked(this.catalogOption);
      this.formInline.dirid = this.catalogOption[0].id;
      // this.getStartDirChecked(this.catalogOption);
      this.getselectVerByDirid();
    },
@@ -2741,20 +2960,20 @@
        lazDensity: "1",
        imgResolution: "0.2",
      }),
          (this.quayTestShow = {
            checkOsgb: false,
            checkXls: false,
            checkLaz: false,
            checkDem: false,
            checkAttrs: false,
            checkTopology: false,
            checkDecorate: false,
            checkOrigin: false,
            checkDom: false,
            checkMath: false,
            checkMeta: false,
            checkMain: false,
          });
        (this.quayTestShow = {
          checkOsgb: false,
          checkXls: false,
          checkLaz: false,
          checkDem: false,
          checkAttrs: false,
          checkTopology: false,
          checkDecorate: false,
          checkOrigin: false,
          checkDom: false,
          checkMath: false,
          checkMeta: false,
          checkMain: false,
        });
    },
    //目录切换
    catalogChange(data, node, nodeData) {
@@ -2762,7 +2981,8 @@
      // this.$refs['selectcascader'].dropDownVisible = false
      // var value = this.$refs['selectcascader'].getCheckedNodes();
      var bak = node.data.bak;
      var bak = node.data.checks;
      this.getCheckedKeys = node
      this.pathBak = bak;
      if (bak != null) {
        for (var key in this.quayTestShow) {
@@ -2771,7 +2991,7 @@
          }
        }
      }
      var fileType = node.data.code;
      var fileType = node.data.exts;
      if (fileType == null) {
        fileType = "*.*";
      }
@@ -2856,4 +3076,4 @@
.text-center {
  text-align: center;
}
</style>
</style>
src/views/datamanage/dictionaryManage.vue
@@ -11,7 +11,23 @@
        class="dictionary_leftTree subpage_Div"
        style="border: 1px solid #dcdfe6;"
      >
        <ul>
        <el-input
          size="small"
          v-model="filterInput"
          style="width: 200px"
          :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valueone')"
          suffix-icon="el-icon-search"
        ></el-input>
        <el-tree
          :data="domainData"
          :props="defaultProps"
          :default-expand-all="true"
          @node-click="getTableDesc"
          :filter-node-method="filterNode"
          ref="tree"
        ></el-tree>
        <!-- <ul>
          <li
            @click="getTableDesc(item)"
            v-for="(item, i) in optionCount"
@@ -20,7 +36,7 @@
          >
            {{ item.tabDesc }}
          </li>
        </ul>
        </ul> -->
      </div>
      <div class="right subpage_Div">
@@ -38,9 +54,17 @@
                v-model="formInline.tab"
                :placeholder="$t('shuJuGuanLi.lable3')"
                style="width: 200px"
              ><i slot="suffix" class="el-icon-search"  @click="getSelectDictTab" style="padding-right: 8px"></i></el-input>
              ><i
                  slot="suffix"
                  class="el-icon-search"
                  @click="getSelectDictTab"
                  style="padding-right: 8px"
                ></i></el-input>
            </el-form-item>
            <el-form-item style="float: right" size="small">
            <el-form-item
              style="float: right"
              size="small"
            >
              <el-button
                v-if="btnStatus.insert"
                icon="el-icon-edit"
@@ -55,7 +79,7 @@
                @click="DelFormData"
                type="danger"
              >{{ $t("common.delete") }}</el-button>
<!--              <el-button
              <!--              <el-button
                icon="el-icon-search"
                size="small"
                @click="getSelectDictTab"
@@ -78,6 +102,7 @@
          <el-table
            :data="tableData"
            style="width: 100%"
            border
            @selection-change="handleSelectionChange"
            height="calc(100% - 57px)"
          >
@@ -294,6 +319,7 @@
      top="2vh"
      :title="$t('dataManage.dictionaryManageObj.revamp')"
      :visible.sync="dialogFormVisible"
      :before-close="handleClose"
    >
      <div style="height: 500px; overflow: auto">
        <el-form
@@ -401,7 +427,7 @@
        <el-button
          type="info"
          size="small"
          @click="dialogFormVisible = false"
          @click="handleClose"
        >{{ $t("dataManage.dictionaryManageObj.cancel") }}</el-button>
        <el-button
          class="primary"
@@ -416,6 +442,7 @@
      :title="$t('dataManage.dictionaryManageObj.add')"
      top="2vh"
      :visible.sync="InsertFormdialog"
      :before-close="handleCloseadd"
    >
      <div style="height: 500px; overflow: auto">
        <el-form
@@ -523,7 +550,7 @@
        <el-button
          type="info"
          size="small"
          @click="InsertFormdialog = false"
          @click="handleCloseadd"
        >{{
          $t("dataManage.dictionaryManageObj.cancel")
        }}</el-button>
@@ -553,6 +580,7 @@
  components: { MyBread },
  data() {
    return {
      filterInput: "",
      activeName: "",
      formInline: [],
      listData: {
@@ -581,13 +609,29 @@
        insert: false,
        update: false,
      },
      domainData: [],
      defaultProps: {
        children: "children",
        label: "val",
      },
    };
  },
  watch: {
    filterInput(val) {
      this.$refs.tree.filter(val);
    },
  },
  created() {
    this.getSelectDictTab();
    this.showPermsBtn();
  },
  methods: {
    filterNode(value, data) {
      if (!value) return true;
      return data.val.indexOf(value) !== -1;
    },
    //新增
    async insertFromData() {
      const data = await insertDict(this.insertform);
@@ -732,16 +776,68 @@
      if (data.code != 200) {
        this.$message.error("下拉调用失败");
      }
      this.optionCount = data.result;
      this.insertform.tab = data.result[0].tab;
      this.insertform.tabDesc = data.result[0].tabDesc;
      this.insertform.ns = data.result[0].ns;
      this.listData.tab = data.result[0].tab;
      this.listData.ns = data.result[0].ns;
      this.activeName = data.result[0].tab;
      var val = data.result;
      var std = [];
      val.filter((item) => {
        if (std.indexOf(item.bak) == -1) {
          std.push(item.bak);
          this.domainData.push(
            {
              val: item.bak,
              children: [],
            }
          )
        }
      });
      this.domainData.filter((item) => {
        val.filter((res) => {
          if (item.val === res.bak) {
            res.val = res.tabDesc
            item.children.push(res)
          }
        })
      })
      // let bdres = data.result.filter((item) => item.ns == "bd");
      // let bsres = data.result.filter((item) => item.ns == "bs");
      // let mdres = data.result.filter((item) => item.ns == "md");
      // for (var i in bdres) {
      //   // bdres[i].val = bdres[i].tabDesc + '(' + bdres[i].tab + ')';
      //   bdres[i].val = bdres[i].tabDesc;
      // }
      // for (var i in bsres) {
      //   // bsres[i].val = bsres[i].tabDesc + '(' + bsres[i].tab + ')';
      //   bsres[i].val = bsres[i].tabDesc;
      // }
      // for (var i in mdres) {
      //   // bsres[i].val = bsres[i].tabDesc + '(' + bsres[i].tab + ')';
      //   mdres[i].val = mdres[i].tabDesc;
      // }
      // this.domainData[0].children = bdres;
      // this.domainData[1].children = bsres;
      // this.domainData[2].children = mdres;
      var result = this.domainData[0].children;
      this.insertform.tab = result[0].tab;
      this.insertform.tabDesc = result[0].tabDesc;
      this.insertform.ns = result[0].ns;
      this.listData.tab = result[0].tab;
      this.listData.ns = result[0].ns;
      this.activeName = result[0].tab;
      this.startQueryNameData();
    },
    handleClose() {
      this.$confirm("关闭后无法保存,是否关闭?")
        .then((_) => {
          this.dialogFormVisible = false
        })
        .catch((_) => { });
    },
    handleCloseadd() {
      this.$confirm("关闭后无法保存,是否关闭?")
        .then((_) => {
          this.InsertFormdialog = false
        })
        .catch((_) => { });
    },
  },
};
</script>
src/views/datamanage/domainManage.vue
@@ -1,15 +1,22 @@
<template>
  <div class="domainBox">
    <My-bread
      :list="[
    <My-bread :list="[
        `${$t('dataManage.dataManage')}`,
        `${$t('dataManage.rangeManage')}`,
      ]"
    ></My-bread>
      ]"></My-bread>
    <el-divider />
    <div class="mainBox">
      <div class="leftTree subpage_Div" style="border: 1px solid #dcdfe6;">
        <el-input size="small" v-model="filterInput" style="width: 200px" :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valueone')" suffix-icon="el-icon-search"></el-input>
      <div
        class="leftTree subpage_Div"
        style="border: 1px solid #dcdfe6;"
      >
        <el-input
          size="small"
          v-model="filterInput"
          style="width: 200px"
          :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valueone')"
          suffix-icon="el-icon-search"
        ></el-input>
        <div style="width: 450px">
          <el-tree
            :data="domainData"
@@ -23,14 +30,26 @@
      </div>
      <div class="right subpage_Div">
        <div class="inquire">
          <el-form ref="queryForm" :model="queryForm" :inline="true">
            <el-form-item :label="$t('dataManage.vmobj.keyword')" prop="name" >
             <el-input
                  size="small"
          <el-form
            ref="queryForm"
            :model="queryForm"
            :inline="true"
          >
            <el-form-item
              :label="$t('dataManage.vmobj.keyword')"
              prop="name"
            >
              <el-input
                size="small"
                v-model="queryForm.code"
                :placeholder="$t('shuJuGuanLi.lable4')"
                style="width: 200px"
              ><i slot="suffix" class="el-icon-search"  @click="queryInfo('queryForm')" style="padding-right: 8px"></i></el-input>
              ><i
                  slot="suffix"
                  class="el-icon-search"
                  @click="queryInfo('queryForm')"
                  style="padding-right: 8px"
                ></i></el-input>
            </el-form-item>
            <el-form-item style="float: right">
              <el-button
@@ -39,17 +58,15 @@
                icon="el-icon-plus"
                size="small"
                type="success"
                >{{ $t("common.append") }}</el-button
              >
              >{{ $t("common.append") }}</el-button>
              <el-button
                v-if="btnStatus.delete"
                @click="deleteInfo"
                type="danger"
                size="small"
                icon="el-icon-delete"
                >{{ $t("common.delete") }}</el-button
              >
<!--              <el-button
              >{{ $t("common.delete") }}</el-button>
              <!--              <el-button
                @click="queryInfo('queryForm')"
                icon="el-icon-search"
                size="small"
@@ -61,19 +78,25 @@
                icon="el-icon-delete"
                size="small"
                type="info"
                >{{ $t("common.empty") }}</el-button
              >
              >{{ $t("common.empty") }}</el-button>
            </el-form-item>
          </el-form>
        </div>
        <div class="dividing-line"></div>
        <div class="table_box" style="height: calc(100% - 60px)">
        <div
          class="table_box"
          style="height: calc(100% - 60px)"
        >
          <el-table
            :data="tableData"
            @selection-change="handleSelectionChange"
            border
            height="calc(100% - 57px)"
          >
            <el-table-column type="selection" width="50" />
            <el-table-column
              type="selection"
              width="50"
            />
            <el-table-column
              align="center"
              type="index"
@@ -121,27 +144,31 @@
              :label="$t('dataManage.domainManage.bak')"
            />
            <el-table-column min-width="150" :label="$t('common.operate')">
            <el-table-column
              min-width="150"
              :label="$t('common.operate')"
            >
              <template slot-scope="scope">
                <el-button
                  @click="showDetail(scope.row)"
                  type="primary"
                  size="small"
                  plain
                  >{{ $t("common.details") }}</el-button
                >
                >{{ $t("common.details") }}</el-button>
                <el-button
                  v-if="btnStatus.update"
                  type="warning"
                  @click="handleEdit(scope.$index, scope.row)"
                  size="small"
                  plain
                  >{{ $t("common.update") }}</el-button
                >
                >{{ $t("common.update") }}</el-button>
              </template>
            </el-table-column>
          </el-table>
          <div class="pagination_box" style="margin-top: 15px">
          <div
            class="pagination_box"
            style="margin-top: 15px"
          >
            <el-pagination
              @size-change="handleSizeChange"
              @current-change="handleCurrentChange"
@@ -156,11 +183,20 @@
        </div>
      </div>
    </div>
    <div class="infoBox_box" v-show="showinfoBox">
    <div
      class="infoBox_box"
      v-show="showinfoBox"
    >
      <div class="infoBox subpage_Div box_div">
        <div slot="header" class="clearfix">
        <div
          slot="header"
          class="clearfix"
        >
          <span>{{ $t("common.details") }}</span>
          <div style="float: right; cursor: pointer" @click="closeDetial">
          <div
            style="float: right; cursor: pointer"
            @click="closeDetial"
          >
            <i class="el-icon-close"></i>
          </div>
        </div>
@@ -216,75 +252,114 @@
      :visible.sync="dialogFormVisible"
      :before-close="handleClose"
    >
    <div style="height: 500px; overflow: auto">
      <el-form :model="editForm" ref="editForm" label-position="top">
        <el-form-item
          :label="$t('dataManage.domainManage.domName')"
          :label-width="formLabelWidth"
      <div style="height: 500px; overflow: auto">
        <el-form
          :model="editForm"
          ref="editForm"
          label-position="top"
        >
          <el-select
            :popper-append-to-body="false"
            style="width:85%"
            v-model="editForm.domName"
            placeholder="请选择"
          <el-form-item
            :label="$t('dataManage.domainManage.domName')"
            :label-width="formLabelWidth"
          >
            <el-option
              v-for="item in domainOptions"
              :key="item.value"
              :label="item.label"
              :value="item.value"
            <el-select
              :popper-append-to-body="false"
              style="width:85%"
              v-model="editForm.domName"
              placeholder="请选择"
            >
            </el-option>
          </el-select>
          <!-- <el-input v-model="editForm.domName" autocomplete="off"></el-input> -->
        </el-form-item>
        <el-form-item
          :label="$t('dataManage.domainManage.domDesc')"
          :label-width="formLabelWidth"
        >
          <el-input v-model="editForm.domDesc" autocomplete="off" style="width:85%"></el-input>
        </el-form-item>
              <el-option
                v-for="item in domainOptions"
                :key="item.value"
                :label="item.label"
                :value="item.value"
              >
              </el-option>
            </el-select>
            <!-- <el-input v-model="editForm.domName" autocomplete="off"></el-input> -->
          </el-form-item>
          <el-form-item
            :label="$t('dataManage.domainManage.domDesc')"
            :label-width="formLabelWidth"
          >
            <el-input
              v-model="editForm.domDesc"
              autocomplete="off"
              style="width:85%"
            ></el-input>
          </el-form-item>
        <el-form-item
          :label="$t('dataManage.domainManage.domCode')"
          :label-width="formLabelWidth"
        >
          <el-input v-model="editForm.domCode" autocomplete="off" style="width:85%"></el-input>
        </el-form-item>
        <el-form-item
          :label="$t('dataManage.domainManage.codeDesc')"
          :label-width="formLabelWidth"
        >
          <el-input v-model="editForm.codeDesc" autocomplete="off" style="width:85%"></el-input>
        </el-form-item>
        <el-form-item
          :label="$t('dataManage.domainManage.bsm')"
          :label-width="formLabelWidth"
        >
          <el-input v-model="editForm.bsm" autocomplete="off" style="width:85%"></el-input>
        </el-form-item>
        <el-form-item
          :label="$t('dataManage.domainManage.level')"
          :label-width="formLabelWidth"
        >
          <el-input v-model="editForm.level" autocomplete="off" style="width:85%"></el-input>
        </el-form-item>
        <el-form-item
          :label="$t('dataManage.domainManage.orderid')"
          :label-width="formLabelWidth"
        >
          <el-input v-model="editForm.orderid" autocomplete="off" style="width:85%"></el-input>
        </el-form-item>
        <el-form-item
          :label="$t('dataManage.domainManage.bak')"
          :label-width="formLabelWidth"
        >
          <el-input v-model="editForm.bak" autocomplete="off" style="width:85%"></el-input>
        </el-form-item>
      </el-form>
    </div>
      <div v-if="behavior == '修改信息'" slot="footer" class="dialog-footer">
        <el-button size="small" @click="cancelEdit()">{{
          <el-form-item
            :label="$t('dataManage.domainManage.domCode')"
            :label-width="formLabelWidth"
          >
            <el-input
              v-model="editForm.domCode"
              autocomplete="off"
              style="width:85%"
            ></el-input>
          </el-form-item>
          <el-form-item
            :label="$t('dataManage.domainManage.codeDesc')"
            :label-width="formLabelWidth"
          >
            <el-input
              v-model="editForm.codeDesc"
              autocomplete="off"
              style="width:85%"
            ></el-input>
          </el-form-item>
          <el-form-item
            :label="$t('dataManage.domainManage.bsm')"
            :label-width="formLabelWidth"
          >
            <el-input
              v-model="editForm.bsm"
              autocomplete="off"
              style="width:85%"
            ></el-input>
          </el-form-item>
          <el-form-item
            :label="$t('dataManage.domainManage.level')"
            :label-width="formLabelWidth"
          >
            <el-input
              v-model="editForm.level"
              autocomplete="off"
              style="width:85%"
            ></el-input>
          </el-form-item>
          <el-form-item
            :label="$t('dataManage.domainManage.orderid')"
            :label-width="formLabelWidth"
          >
            <el-input
              v-model="editForm.orderid"
              autocomplete="off"
              style="width:85%"
            ></el-input>
          </el-form-item>
          <el-form-item
            :label="$t('dataManage.domainManage.bak')"
            :label-width="formLabelWidth"
          >
            <el-input
              v-model="editForm.bak"
              autocomplete="off"
              style="width:85%"
            ></el-input>
          </el-form-item>
        </el-form>
      </div>
      <div
        v-if="behavior == '修改信息'"
        slot="footer"
        class="dialog-footer"
      >
        <el-button
          size="small"
          @click="cancelEdit()"
        >{{
          $t("common.reset")
        }}</el-button>
        <el-button
@@ -293,11 +368,18 @@
          type="info"
          @click="sendEdit('editForm')"
          v-loading.fullscreen.lock="fullscreenLoading"
          >{{ $t("common.confirm") }}</el-button
        >
        >{{ $t("common.confirm") }}</el-button>
      </div>
      <div v-else slot="footer" class="dialog-footer">
        <el-button type="info" size="small" @click="cancelAdd('editForm')">{{
      <div
        v-else
        slot="footer"
        class="dialog-footer"
      >
        <el-button
          type="info"
          size="small"
          @click="cancelAdd('editForm')"
        >{{
          $t("common.reset")
        }}</el-button>
        <el-button
@@ -305,8 +387,7 @@
          class="primary"
          @click="sendAdd('editForm')"
          v-loading.fullscreen.lock="fullscreenLoading"
          >{{ $t("common.confirm") }}</el-button
        >
        >{{ $t("common.confirm") }}</el-button>
      </div>
    </el-dialog>
  </div>
@@ -363,18 +444,7 @@
        update: false,
      },
      domainData: [
        {
          val: "基础数据",
          children: [],
        },
        {
          val: "业务数据",
          children: [],
        },
        {
          val: "元数据",
          children: [],
        },
      ],
      defaultProps: {
        children: "children",
@@ -399,6 +469,9 @@
      return data.val.indexOf(value) !== -1;
    },
    async toggleTabs(data) {
      if (data.children != null) {
        return
      }
      this.fullscreenLoading = true;
      this.listData.ns = data.ns;
      this.listData.tab = data.tab;
@@ -441,24 +514,27 @@
    },
    getAllTabelData() {
      getDomainTabs().then((res) => {
        let bdres = res.result.filter((item) => item.ns == "bd");
        let bsres = res.result.filter((item) => item.ns == "bs");
        let mdres = res.result.filter((item) => item.ns == "md");
        for (var i in bdres) {
          // bdres[i].val = bdres[i].tabDesc + '(' + bdres[i].tab + ')';
          bdres[i].val = bdres[i].tabDesc;
        }
        for (var i in bsres) {
          // bsres[i].val = bsres[i].tabDesc + '(' + bsres[i].tab + ')';
          bsres[i].val = bsres[i].tabDesc;
        }
        for (var i in mdres) {
          // bsres[i].val = bsres[i].tabDesc + '(' + bsres[i].tab + ')';
          mdres[i].val = mdres[i].tabDesc;
        }
        this.domainData[0].children = bdres;
        this.domainData[1].children = bsres;
        this.domainData[2].children = mdres;
        var val = res.result;
        var std = [];
        val.filter((item) => {
          if (std.indexOf(item.bak) == -1) {
            std.push(item.bak);
            this.domainData.push(
              {
                val: item.bak,
                children: [],
              }
            )
          }
        });
        this.domainData.filter((item) => {
          val.filter((res) => {
            if (item.val === res.bak) {
              res.val = res.tabDesc
              item.children.push(res)
            }
          })
        })
      });
    },
    handleSelectionChange(val) {
@@ -587,7 +663,7 @@
          this.editForm = {};
          done();
        })
        .catch((_) => {});
        .catch((_) => { });
    },
    // æŸ¥çœ‹ç•Œé¢
    showDetail(row) {
@@ -681,7 +757,7 @@
  watch: {
    pathId: {
      immediate: true,
      handler(val) {},
      handler(val) { },
    },
    filterInput(val) {
      this.$refs.tree.filter(val);
src/views/datamanage/metadataManage.vue
@@ -1,32 +1,32 @@
<template>
  <div class="authorityManagement_box">
    <My-bread
        :list="[
      :list="[
        `${$t('dataManage.dataManage')}`,
        `${$t('dataManage.metadataManage')}`,
      ]"
    ></My-bread>
    <el-divider/>
    <el-divider />
    <div class="inquire subpage_Div" ref="container">
      <el-form ref="queryForm" :model="queryForm" :inline="true">
        <div class="flex_box">
          <div style="margin-right: auto">
            <el-form-item size="small">
              <el-select
                  :popper-append-to-body="false"
                  v-model="queryForm.depName"
                :popper-append-to-body="false"
                v-model="queryForm.depName"
              >
                <el-option
                    :value="queryForm.depid"
                    :label="queryForm.depName"
                    style="height: auto"
                  :value="queryForm.depid"
                  :label="queryForm.depName"
                  style="height: auto"
                >
                  <el-tree
                      ref="tree"
                      :data="companyOption1"
                      node-key="id"
                      :props="cascader"
                      @node-click="handleChange1"
                    ref="tree"
                    :data="companyOption1"
                    node-key="id"
                    :props="cascader"
                    @node-click="handleChange1"
                  />
                </el-option>
              </el-select>
@@ -46,20 +46,20 @@
            </el-form-item>
            <el-form-item size="small">
              <el-select
                  :popper-append-to-body="false"
                  v-model="queryForm.dirName"
                :popper-append-to-body="false"
                v-model="queryForm.dirName"
              >
                <el-option
                    :value="queryForm.dirid"
                    :label="queryForm.dirName"
                    style="height: auto"
                  :value="queryForm.dirid"
                  :label="queryForm.dirName"
                  style="height: auto"
                >
                  <el-tree
                      ref="tree"
                      :data="companyOption"
                      node-key="id"
                      :props="cascader"
                      @node-click="handleChange"
                    ref="tree"
                    :data="companyOption"
                    node-key="id"
                    :props="cascader"
                    @node-click="handleChange"
                  />
                </el-option>
              </el-select>
@@ -79,32 +79,37 @@
            </el-form-item>
            <el-form-item size="small">
              <el-select
                  :popper-append-to-body="false"
                  v-model="queryForm.verid"
                  placeholder="请选择"
                  @change="verHandleChange($event)"
                :popper-append-to-body="false"
                v-model="queryForm.verid"
                placeholder="请选择"
                @change="verHandleChange($event)"
              >
                <el-option
                    v-for="item in verOptions"
                    :key="item.id"
                    :label="item.name"
                    :value="item.id"
                  v-for="item in verOptions"
                  :key="item.id"
                  :label="item.name"
                  :value="item.id"
                >
                </el-option>
              </el-select>
            </el-form-item>
            <el-form-item prop="name" size="small">
<!--            suffix-icon="el-icon-edit"  :placeholder="$t('common.pleaseInput')"-->
              <!--            suffix-icon="el-icon-edit"  :placeholder="$t('common.pleaseInput')"-->
              <el-input
                  v-model="queryForm.name"
                  :placeholder="$t('shuJuGuanLi.lable2')"
                  style="width: 200px"
              ><i slot="suffix" class="el-icon-search" @click="queryInfo()" style="padding-right: 8px"></i></el-input>
                v-model="queryForm.name"
                :placeholder="$t('shuJuGuanLi.lable2')"
                style="width: 200px"
                ><i
                  slot="suffix"
                  class="el-icon-search"
                  @click="queryInfo()"
                  style="padding-right: 8px"
                ></i
              ></el-input>
            </el-form-item>
          </div>
          <div>
<!--            <el-form-item>
            <!--            <el-form-item>
              <el-button
                  @click="queryInfo()"
                  icon="el-icon-search"
@@ -116,36 +121,32 @@
            </el-form-item>-->
            <el-form-item v-if="btnStatus.delete">
              <el-button
                  type="danger"
                  size="small"
                  @click="deleteMetaInfo"
                  icon="el-icon-delete"
              >{{ $t("common.delete") }}
              </el-button
              >
                type="danger"
                size="small"
                @click="deleteMetaInfo"
                icon="el-icon-delete"
                >{{ $t("common.delete") }}
              </el-button>
            </el-form-item>
            <el-form-item v-if="btnStatus.download">
              <el-button
                  @click="downFormData"
                  icon="el-icon-download"
                  type="success"
                  size="small"
              >{{ $t("common.download") }}
              </el-button
              >
                @click="downFormData"
                icon="el-icon-download"
                type="success"
                size="small"
                >{{ $t("common.download") }}
              </el-button>
            </el-form-item>
            <el-form-item>
              <el-button
                  @click="resetInfo('queryForm')"
                  icon="el-icon-refresh"
                  type="info"
                  size="small"
              >{{ $t("common.reset") }}
              </el-button
              >
                @click="resetInfo('queryForm')"
                icon="el-icon-refresh"
                type="info"
                size="small"
                >{{ $t("common.reset") }}
              </el-button>
            </el-form-item>
          </div>
        </div>
@@ -196,55 +197,69 @@
    <div class="dividing-line"></div>
    <div class="table_box subpage_Div" :style="styleVar">
      <el-table
          :data="tableData"
          style="width: 100%"
          @selection-change="handleSelectionChange"
          height="calc(100% - 57px)"
        :data="tableData"
        style="width: 100%"
        border
        @selection-change="handleSelectionChange"
        height="calc(100% - 57px)"
      >
        <el-table-column type="selection" width="55"/>
        <el-table-column type="selection" width="55" />
        <el-table-column
            :label="$t('dataManage.dictionaryManageObj.number')"
            type="index"
            width="50"
          :label="$t('dataManage.dictionaryManageObj.number')"
          type="index"
          width="50"
        >
        </el-table-column>
        <el-table-column :label="$t('dataManage.vmobj.name')">
          <template slot-scope="scope">
            <span v-if="scope.row.ismeta > 0">
              <el-link
                  style="color: #409eff"
                  title="源数据查询"
                  @click="setQueryMetaData(scope.row)"
                  target="_blank"
              >{{ scope.row.name }}</el-link
                style="color: #409eff"
                title="源数据查询"
                @click="setQueryMetaData(scope.row)"
                target="_blank"
                >{{ scope.row.name }}</el-link
              >
            </span>
            <span v-else-if="scope.row.metaid > 0">
              <el-link
                style="color: #409eff"
                title="元数据查询"
                @click="setMetaDataQuery(scope.row)"
                target="_blank"
                >{{ scope.row.name }}</el-link
              ></span
            >
            <span v-else>{{ scope.row.name }}</span>
          </template>
        </el-table-column>
        <el-table-column prop="type" :label="$t('dataManage.vmobj.format')"/>
        <el-table-column prop="type" :label="$t('dataManage.vmobj.format')" />
        <el-table-column
            prop="sizes"
            :label="$t('dataManage.vmobj.size')"
            :formatter="stateFormatSizes"
          prop="sizes"
          :label="$t('dataManage.vmobj.size')"
          :formatter="stateFormatSizes"
        />
        <el-table-column
            prop="depName"
            :label="$t('dataManage.vmobj.depName')"
          prop="depName"
          :label="$t('dataManage.vmobj.depName')"
        />
        <el-table-column
            prop="dirName"
            :label="$t('dataManage.vmobj.dirName')"
            width="200"
          prop="dirName"
          :label="$t('dataManage.vmobj.dirName')"
          width="200"
        />
        <el-table-column
            prop="verName"
            :label="$t('dataManage.vmobj.versionNumber')"
          prop="verName"
          :label="$t('dataManage.vmobj.versionNumber')"
        />
        <el-table-column :label="$t('dataManage.dataUpObj.tableName')">
          <template slot-scope="scope">
            <a @click="detail(scope.row)">{{ scope.row.tab }}</a>
            <!-- <span ></span> -->
            <el-link></el-link>
            <el-link :underline="false" @click="detail(scope.row)">{{
              scope.row.tab
            }}</el-link>
          </template>
        </el-table-column>
@@ -253,48 +268,54 @@
              :label="$t('dataManage.vmobj.tab')"
              :formatter="formatData"
            /> -->
        <el-table-column prop="rows" :label="$t('dataManage.vmobj.row')"/>
        <el-table-column prop="rows" :label="$t('dataManage.vmobj.row')" />
        <el-table-column
            prop="uname"
            :label="$t('dataManage.vmobj.createonuser')"
          prop="uname"
          :label="$t('dataManage.vmobj.createonuser')"
        />
        <el-table-column
            prop="createTime"
            :label="$t('dataManage.vmobj.createontime')"
            :formatter="formatData"
          prop="createTime"
          :label="$t('dataManage.vmobj.createontime')"
          :formatter="formatData"
        />
        <el-table-column min-width="180" :label="$t('common.operate')">
          <template slot-scope="scope">
            <el-button
                @click="showDetail(scope.row)"
                type="primary"
                plain
                size="small"
            >{{ $t("common.details") }}
            </el-button
            >
              @click="showDetail(scope.row)"
              type="primary"
              plain
              size="small"
              >{{ $t("common.details") }}
            </el-button>
            <el-button
                type="warning"
                plain
                size="small"
                v-if="btnStatus.update"
                @click="editInfo(scope.row)"
                style="margin-left: 10px"
            >{{ $t("common.edit") }}
            </el-button
            >
              type="warning"
              plain
              size="small"
              v-if="btnStatus.update"
              @click="editInfo(scope.row)"
              style="margin-left: 10px"
              >{{ $t("common.edit") }}
            </el-button>
            <el-button
              plain
              size="small"
              v-if="showPreview(scope.row)"
              @click="handlePreview(scope.row)"
              style="margin-left: 10px"
              >{{ $t("common.preview") }}
            </el-button>
          </template>
        </el-table-column>
      </el-table>
      <div class="pagination_box" style="margin-top: 15px">
        <el-pagination
            @size-change="handleSizeChange"
            @current-change="handleCurrentChange"
            :current-page="listData.pageIndex"
            :page-sizes="[10, 20, 50, 100]"
            :page-size="listData.pageSize"
            layout="total, sizes, prev, pager, next, jumper"
            :total="count"
          @size-change="handleSizeChange"
          @current-change="handleCurrentChange"
          :current-page="listData.pageIndex"
          :page-sizes="[10, 20, 50, 100]"
          :page-size="listData.pageSize"
          layout="total, sizes, prev, pager, next, jumper"
          :total="count"
        >
        </el-pagination>
      </div>
@@ -353,55 +374,55 @@
    </div>
    <el-dialog
        width="80vh"
        top="5vh"
        :title="
      width="80vh"
      top="5vh"
      :title="
        behavior == '新增用户'
          ? `${$t('common.append')}`
          : `${$t('common.update')}`
      "
        :visible.sync="dialogFormVisible"
        :before-close="handleClose"
      :visible.sync="dialogFormVisible"
      :before-close="handleClose"
    >
      <el-form :model="editForm" ref="editForm">
        <el-form-item
            :label="$t('dataManage.vmobj.name')"
            :label-width="formLabelWidth"
          :label="$t('dataManage.vmobj.name')"
          :label-width="formLabelWidth"
        >
          <el-input v-model="editForm.name" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item
            :label="$t('dataManage.vmobj.format')"
            :label-width="formLabelWidth"
          :label="$t('dataManage.vmobj.format')"
          :label-width="formLabelWidth"
        >
          <el-input v-model="editForm.type" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item
            :label="$t('dataManage.vmobj.size')"
            :label-width="formLabelWidth"
          :label="$t('dataManage.vmobj.size')"
          :label-width="formLabelWidth"
        >
          <el-input v-model="editForm.sizes" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item
            :label="$t('dataManage.vmobj.depName')"
            :label-width="formLabelWidth"
          :label="$t('dataManage.vmobj.depName')"
          :label-width="formLabelWidth"
        >
          <el-select
              style="width: 100%"
              :popper-append-to-body="false"
              v-model="editForm.depName"
            style="width: 100%"
            :popper-append-to-body="false"
            v-model="editForm.depName"
          >
            <el-option
                :value="editForm.depid"
                :label="editForm.depName"
                style="height: auto"
              :value="editForm.depid"
              :label="editForm.depName"
              style="height: auto"
            >
              <el-tree
                  ref="tree"
                  :data="companyOption1"
                  node-key="id"
                  :props="cascader"
                  @node-click="handleChange2"
                ref="tree"
                :data="companyOption1"
                node-key="id"
                :props="cascader"
                @node-click="handleChange2"
              />
            </el-option>
          </el-select>
@@ -413,25 +434,25 @@
          ></el-cascader> -->
        </el-form-item>
        <el-form-item
            :label="$t('dataManage.vmobj.dirName')"
            :label-width="formLabelWidth"
          :label="$t('dataManage.vmobj.dirName')"
          :label-width="formLabelWidth"
        >
          <el-select
              style="width: 100%"
              :popper-append-to-body="false"
              v-model="editForm.dirName"
            style="width: 100%"
            :popper-append-to-body="false"
            v-model="editForm.dirName"
          >
            <el-option
                :value="editForm.dirid"
                :label="editForm.dirName"
                style="height: auto"
              :value="editForm.dirid"
              :label="editForm.dirName"
              style="height: auto"
            >
              <el-tree
                  ref="tree"
                  :data="dirComPanyOption"
                  node-key="id"
                  :props="cascader"
                  @node-click="handleChange3"
                ref="tree"
                :data="dirComPanyOption"
                node-key="id"
                :props="cascader"
                @node-click="handleChange3"
              />
            </el-option>
          </el-select>
@@ -443,8 +464,8 @@
          ></el-cascader> -->
        </el-form-item>
        <el-form-item
            :label="$t('dataManage.vmobj.describe')"
            :label-width="formLabelWidth"
          :label="$t('dataManage.vmobj.describe')"
          :label-width="formLabelWidth"
        >
          <el-input v-model="editForm.describe" autocomplete="off"></el-input>
        </el-form-item>
@@ -456,71 +477,67 @@
        </el-form-item> -->
      </el-form>
      <div v-if="behavior == '修改信息'" slot="footer" class="dialog-footer">
        <el-button size="small" @click="cancelEdit()">{{
            $t("common.reset")
          }}
        <el-button size="small" @click="cancelEdit()"
          >{{ $t("common.reset") }}
        </el-button>
        <el-button
            size="small"
            type="primary"
            @click="sendEdit('editForm')"
            v-loading.fullscreen.lock="fullscreenLoading"
        >{{ $t("common.submit") }}
        </el-button
        >
          size="small"
          type="primary"
          @click="sendEdit('editForm')"
          v-loading.fullscreen.lock="fullscreenLoading"
          >{{ $t("common.submit") }}
        </el-button>
      </div>
      <div v-else slot="footer" class="dialog-footer">
        <el-button size="small" @click="cancelAdd('editForm')">{{
            $t("common.reset")
          }}
        <el-button size="small" @click="cancelAdd('editForm')"
          >{{ $t("common.reset") }}
        </el-button>
        <el-button
            size="small"
            type="primary"
            @click="sendAdd('editForm')"
            v-loading.fullscreen.lock="fullscreenLoading"
        >{{ $t("common.submit") }}
        </el-button
        >
          size="small"
          type="primary"
          @click="sendAdd('editForm')"
          v-loading.fullscreen.lock="fullscreenLoading"
          >{{ $t("common.submit") }}
        </el-button>
      </div>
    </el-dialog>
    <el-dialog
        :title="$t('common.details')"
        :visible.sync="dialogVisible"
        width="70%"
      :title="$t('common.details')"
      :visible.sync="dialogVisible"
      width="70%"
    >
      <div style="height: 600px">
        <el-table
            ref="filterTable"
            :data="dbTableData"
            height="90%"
            border
            style="width: 100%"
          ref="filterTable"
          :data="dbTableData"
          height="90%"
          border
          style="width: 100%"
        >
          <el-table-column
              width="60"
              align="center"
              type="index"
              :label="$t('common.index')"
            width="60"
            align="center"
            type="index"
            :label="$t('common.index')"
          />
          <el-table-column
              v-for="(item, index) in attributeData"
              :key="index"
              :label="item.alias"
              :prop="item.field"
              show-overflow-tooltip
              align="center"
            v-for="(item, index) in attributeData"
            :key="index"
            :label="item.alias"
            :prop="item.field"
            show-overflow-tooltip
            align="center"
          ></el-table-column>
        </el-table>
        <div style="margin-top: 10px" class="pagination_box" >
        <div style="margin-top: 10px" class="pagination_box">
          <el-pagination
              @size-change="handleLoaderSizeChange"
              @current-change="handleLoaderCurrentChange"
              :current-page="listLoader.pageIndex"
              :page-sizes="[10, 20, 50, 100]"
              :page-size="listLoader.pageSize"
              layout="total, sizes, prev, pager, next, jumper"
              :total="count1"
            @size-change="handleLoaderSizeChange"
            @current-change="handleLoaderCurrentChange"
            :current-page="listLoader.pageIndex"
            :page-sizes="[10, 20, 50, 100]"
            :page-size="listLoader.pageSize"
            layout="total, sizes, prev, pager, next, jumper"
            :total="count1"
          >
          </el-pagination>
        </div>
@@ -529,45 +546,40 @@
    <div class="downloadBox box_div subpage_Div" v-if="showCodeBox">
      <h4 style="padding: 20px">{{ $t("common.passworld") }}</h4>
      <el-form
          :model="codeForm"
          :rules="rules"
          ref="codeForm"
          label-width="100px"
          class="codeForm"
        :model="codeForm"
        :rules="rules"
        ref="codeForm"
        label-width="100px"
        class="codeForm"
      >
        <el-form-item :label="$t('common.passworld')" prop="password">
          <el-input
              type="password"
              v-model="codeForm.password"
              show-password
            type="password"
            v-model="codeForm.password"
            show-password
          ></el-input>
        </el-form-item>
        <el-form-item :label="$t('common.SPassword')" prop="repassword">
          <el-input
              type="password"
              v-model="codeForm.repassword"
              show-password
            type="password"
            v-model="codeForm.repassword"
            show-password
          ></el-input>
        </el-form-item>
        <el-form-item>
          <el-button
              class="primary"
              size="small"
              @click="download('codeForm')"
          >{{ $t("common.confirm") }}
          </el-button
          >
          <el-button type="info" size="small" @click="closeDown('codeForm')">{{
              $t("common.cancel")
            }}
          <el-button class="primary" size="small" @click="download('codeForm')"
            >{{ $t("common.confirm") }}
          </el-button>
          <el-button type="info" size="small" @click="closeDown('codeForm')"
            >{{ $t("common.cancel") }}
          </el-button>
        </el-form-item>
      </el-form>
    </div>
    <el-dialog
        :title="fromQueryMeta.title"
        :visible.sync="queryMetaFlag"
        width="70%"
      :title="fromQueryMeta.title"
      :visible.sync="queryMetaFlag"
      width="70%"
    >
      <div style="height: 65vh; width: 100%">
        <el-form :inline="true" :model="fromQueryMeta" class="demo-form-inline">
@@ -577,108 +589,204 @@
          <el-form-item>
            <el-button type="primary" size="small" @click="setSearchMetaData()"
            >查询
            </el-button
            >
              >查询
            </el-button>
            <el-button type="info" size="small" @click="setRestMetaData()"
            >重置
            </el-button
            >
              >重置
            </el-button>
          </el-form-item>
        </el-form>
        <el-table
            ref="filterTable"
            :data="metaDataTable"
            style="width: 100%"
            height="calc(100% - 100px)"
          ref="filterTable"
          :data="metaDataTable"
          style="width: 100%"
          height="calc(100% - 100px)"
        >
          <el-table-column
              align="center"
              type="index"
              :label="$t('common.index')"
              width="70px"
            align="center"
            type="index"
            :label="$t('common.index')"
            width="70px"
          ></el-table-column>
          <el-table-column
              align="center"
              prop="name"
              :label="$t('common.name')"
              width="120"
            align="center"
            prop="name"
            :label="$t('common.name')"
            width="120"
          >
          </el-table-column>
          <el-table-column
              align="center"
              prop="dirName"
              :label="$t('dataManage.dataUpObj.catalogue')"
              width="300"
            align="center"
            prop="dirName"
            :label="$t('dataManage.dataUpObj.catalogue')"
            width="300"
          />
          <el-table-column
              align="center"
              prop="depName"
              :label="$t('dataManage.dataUpObj.company')"
              width="200"
            align="center"
            prop="depName"
            :label="$t('dataManage.dataUpObj.company')"
            width="200"
          />
          <el-table-column
              align="center"
              prop="verName"
              :label="$t('dataManage.dataUpObj.versionNo')"
            align="center"
            prop="verName"
            :label="$t('dataManage.dataUpObj.versionNo')"
          />
          <el-table-column
              align="center"
              prop="type"
              :label="$t('common.type')"
            align="center"
            prop="type"
            :label="$t('common.type')"
          />
          <el-table-column
              align="center"
              prop="sizes"
              :label="$t('common.size')"
              :formatter="changeSizeFile"
            align="center"
            prop="sizes"
            :label="$t('common.size')"
            :formatter="changeSizeFile"
          />
          <el-table-column
              align="center"
              :label="$t('dataManage.dataUpObj.tableName')"
            align="center"
            :label="$t('dataManage.dataUpObj.tableName')"
          >
            <template slot-scope="scope">
              <a class="scopeRowColor" @click="detail(scope.row)">{{
                  scope.row.tab
                }}</a>
                scope.row.tab
              }}</a>
            </template>
          </el-table-column>
          <el-table-column
              align="center"
              prop="rows"
              :label="$t('common.lineNuber')"
            align="center"
            prop="rows"
            :label="$t('common.lineNuber')"
          />
          <el-table-column
              align="center"
              prop="desc"
              :label="$t('dataManage.dataUpObj.describe')"
            align="center"
            prop="desc"
            :label="$t('dataManage.dataUpObj.describe')"
          />
        </el-table>
        <div class="pagination_box" style="margin-top: 15px">
          <el-pagination
              @size-change="handleMetaSizeChange"
              @current-change="handMetaCurrentChange"
              :current-page="listMetaData.pageIndex"
              :page-sizes="[10, 20, 50, 100]"
              :page-size="listMetaData.pageSize"
              layout="total, sizes, prev, pager, next, jumper"
              :total="listMetaData.count"
            @size-change="handleMetaSizeChange"
            @current-change="handMetaCurrentChange"
            :current-page="listMetaData.pageIndex"
            :page-sizes="[10, 20, 50, 100]"
            :page-size="listMetaData.pageSize"
            layout="total, sizes, prev, pager, next, jumper"
            :total="listMetaData.count"
          >
          </el-pagination>
        </div>
      </div>
    </el-dialog>
    <el-dialog
      :title="fromQueryMeta.title"
      :visible.sync="queryMetaFlag1"
      width="70%"
    >
      <div style="height: 65vh; width: 100%">
        <el-table
          ref="filterTable"
          :data="metaDataTable1"
          style="width: 100%"
          height="100%"
        >
          <el-table-column
            align="center"
            type="index"
            :label="$t('common.index')"
            width="70px"
          ></el-table-column>
          <el-table-column
            align="center"
            prop="name"
            :label="$t('common.name')"
            width="120"
          >
          </el-table-column>
          <el-table-column
            align="center"
            prop="dirName"
            :label="$t('dataManage.dataUpObj.catalogue')"
            width="300"
          />
          <el-table-column
            align="center"
            prop="depName"
            :label="$t('dataManage.dataUpObj.company')"
            width="200"
          />
          <el-table-column
            align="center"
            prop="verName"
            :label="$t('dataManage.dataUpObj.versionNo')"
          />
          <el-table-column
            align="center"
            prop="type"
            :label="$t('common.type')"
          />
          <el-table-column
            align="center"
            prop="sizes"
            :label="$t('common.size')"
            :formatter="changeSizeFile"
          />
          <el-table-column
            align="center"
            :label="$t('dataManage.dataUpObj.tableName')"
          >
            <template slot-scope="scope">
              <a class="scopeRowColor" @click="detail(scope.row)">{{
                scope.row.tab
              }}</a>
            </template>
          </el-table-column>
          <el-table-column
            align="center"
            prop="rows"
            :label="$t('common.lineNuber')"
          />
          <el-table-column
            align="center"
            prop="desc"
            :label="$t('dataManage.dataUpObj.describe')"
          />
        </el-table>
      </div>
    </el-dialog>
    <el-dialog
      custom-class="preview-dialog"
      title="预览"
      :append-to-body="false"
      :visible.sync="dialog.dialogVisible"
      width="70%"
      :close-on-click-modal="false"
    >
      <div v-if="dialog.isPdf" class="pdfClass">
        <iframe
          :src="dialog.src"
          type="application/x-google-chrome-pdf"
          width="100%"
          height="100%"
        >
        </iframe>
      </div>
      <div v-if="dialog.isJpg" class="pdfClass">
        <img style="width: 100%; height: 100%" :src="dialog.src" alt="" />
      </div>
    </el-dialog>
    <iframe
        id="downFrame"
        src=""
        style="display: none; border: 0; padding: 0; height: 0; width: 0"
      id="downFrame"
      src=""
      style="display: none; border: 0; padding: 0; height: 0; width: 0"
    ></iframe>
  </div>
</template>
<script>
import $ from "jquery";
import {getToken} from "@/utils/auth";
import $ from "jquery"
import { getToken } from "@/utils/auth"
import {
  deleteMeta,
  insertMeta,
@@ -693,32 +801,33 @@
  selectdirTab,
  sign_getPublicKey,
  updateMeta,
} from "../../api/api";
  meta_selectById,
} from "../../api/api"
import MyBread from "../../components/MyBread.vue";
import MyBread from "../../components/MyBread.vue"
export default {
  name: "metadataManage",
  components: {MyBread},
  components: { MyBread },
  data() {
    var repasswordValidator = (rule, value, callback) => {
      if (value === "") {
        callback(new Error("请再次输入密码"));
        callback(new Error("请再次输入密码"))
      } else if (value !== this.codeForm.password) {
        callback(new Error("两次输入密码不一致!"));
        callback(new Error("两次输入密码不一致!"))
      } else {
        callback();
        callback()
      }
    };
    }
    var passwordValidator = (rule, value, callback) => {
      var passwordreg =
          /^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\W!@#$%^&*`~()\\-_+=,.?;<>]+$)(?![a-z0-9]+$)(?![a-z\W!@#$%^&*`~()\\-_+=,.?;<>]+$)(?![0-9\W!@#$%^&*`~()\\-_+=,.?;<>]+$)[a-zA-Z0-9\W!@#$%^&*`~()\\-_+=,.?;<>]{12,20}$/;
        /^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\W!@#$%^&*`~()\\-_+=,.?;<>]+$)(?![a-z0-9]+$)(?![a-z\W!@#$%^&*`~()\\-_+=,.?;<>]+$)(?![0-9\W!@#$%^&*`~()\\-_+=,.?;<>]+$)[a-zA-Z0-9\W!@#$%^&*`~()\\-_+=,.?;<>]{12,20}$/
      if (!passwordreg.test(value)) {
        callback(new Error("密码必须由数字、字母、特殊字符组合,请输入13-20位"));
        callback(new Error("密码必须由数字、字母、特殊字符组合,请输入13-20位"))
      } else {
        callback();
        callback()
      }
    };
    }
    return {
      verOptions: [],
      defaultProps: {
@@ -753,12 +862,12 @@
      },
      rules: {
        password: [
          {required: true, message: "请输入密码", trigger: "blur"},
          {validator: passwordValidator, trigger: "blur"},
          { required: true, message: "请输入密码", trigger: "blur" },
          { validator: passwordValidator, trigger: "blur" },
        ],
        repassword: [
          {required: true, message: "请输入确认密码", trigger: "blur"},
          {validator: repasswordValidator, trigger: "blur"},
          { required: true, message: "请输入确认密码", trigger: "blur" },
          { validator: repasswordValidator, trigger: "blur" },
        ],
      },
      tableData: [],
@@ -815,309 +924,336 @@
        name: "",
      },
      metaDataTable: [],
    };
      queryMetaFlag1: false,
      metaDataTable1: [],
      dialog: {
        dialogVisible: false,
        isPdf: false,
        isJpg: false,
        src: "",
      },
    }
  },
  created() {
    // this.getSelectDictTab();
    this.showPermsBtn();
    this.getQueryDepTree();
    this.showPermsBtn()
    this.getQueryDepTree()
    this.signGetPublicKey();
    this.signGetPublicKey()
  },
  beforeDestroy() {
    this.timer && clearTimeout(this.timer);
    window.removeEventListener("resize", this.onResize);
    this.timer && clearTimeout(this.timer)
    window.removeEventListener("resize", this.onResize)
  },
  mounted() {
    window.addEventListener("resize", this.onResize);
    this.calHeight();
    window.addEventListener("resize", this.onResize)
    this.calHeight()
  },
  methods: {
    //大小值改变
    changeSizeFile(row, column, cellValue, index) {
      if (cellValue >= 1024) {
        return parseFloat(cellValue / 1204).toFixed(3) + "GB";
        return parseFloat(cellValue / 1204).toFixed(3) + "GB"
      } else {
        return cellValue + "MB";
        return cellValue + "MB"
      }
    },
    setRestMetaData() {
      this.fromQueryMeta.name = "";
      this.listMetaData.name = this.fromQueryMeta.name;
      this.listMetaData.pageIndex = 1;
      this.listMetaData.pageSize = 10;
      this.fromQueryMeta.name = ""
      this.listMetaData.name = this.fromQueryMeta.name
      this.listMetaData.pageIndex = 1
      this.listMetaData.pageSize = 10
      this.startQueryMetaData();
      this.startQueryMetaData()
    },
    setSearchMetaData() {
      this.listMetaData.name = this.fromQueryMeta.name;
      this.listMetaData.pageIndex = 1;
      this.listMetaData.pageSize = 10;
      this.listMetaData.name = this.fromQueryMeta.name
      this.listMetaData.pageIndex = 1
      this.listMetaData.pageSize = 10
      this.startQueryMetaData();
      this.startQueryMetaData()
    },
    //源数据页面切换
    handleMetaSizeChange(val) {
      this.listMetaData.pageIndex = 1;
      this.listMetaData.pageSize = val;
      this.startQueryMetaData();
      this.listMetaData.pageIndex = 1
      this.listMetaData.pageSize = val
      this.startQueryMetaData()
    },
    //源数据页面切换
    handMetaCurrentChange(val) {
      this.listMetaData.pageIndex = val;
      this.startQueryMetaData();
      this.listMetaData.pageIndex = val
      this.startQueryMetaData()
    },
    //元数据查询
    async setMetaDataQuery(row) {
      this.fromQueryMeta.title = row.name
      this.listMetaData = {
        id: row.metaid,
        // name: "",
        // pageIndex: 1,
        // pageSize: 10,
        // count: 0,
      }
      const data = await meta_selectById(this.listMetaData)
      if (data.code != 200) {
        return
      }
      this.queryMetaFlag1 = true
      this.metaDataTable1 = [data.result]
      // this.listMetaData.count = data.count;
    },
    //源数据查询
    setQueryMetaData(row) {
      this.fromQueryMeta.title = row.name;
      this.fromQueryMeta.title = row.name
      this.listMetaData = {
        metaid: row.id,
        name: "",
        pageIndex: 1,
        pageSize: 10,
        count: 0,
      };
      this.startQueryMetaData();
      this.queryMetaFlag = true;
      }
      this.startQueryMetaData()
      this.queryMetaFlag = true
    },
    async startQueryMetaData() {
      const data = await meta_selectPageAndCountByPid(this.listMetaData);
      const data = await meta_selectPageAndCountByPid(this.listMetaData)
      if (data.code != 200) {
        return;
        return
      }
      this.metaDataTable = data.result;
      this.listMetaData.count = data.count;
      this.metaDataTable = data.result
      this.listMetaData.count = data.count
    },
    onResize() {
      this.timer && clearTimeout(this.timer);
      this.timer && clearTimeout(this.timer)
      this.timer = setTimeout(() => {
        this.calHeight();
      }, 500);
        this.calHeight()
      }, 500)
    },
    calHeight() {
      this.$nextTick(() => {
        const rect = this.$refs.container.getBoundingClientRect();
        this.tableHeight = `${rect.height + 97}px`;
        this.styleVar["height"] = `calc(100% - ${rect.height + 28}px)`;
      });
        const rect = this.$refs.container.getBoundingClientRect()
        this.tableHeight = `${rect.height + 97}px`
        this.styleVar["height"] = `calc(100% - ${rect.height + 28}px)`
      })
    },
    async detail(res) {
      var val = res.tab.split(".");
      var val = res.tab.split(".")
      const data = await meta_selectFields({
        ns: val[0],
        tab: val[1],
      });
      })
      if (data.code != 200) {
        this.$message.error("字段列表调用失败");
        return;
        this.$message.error("字段列表调用失败")
        return
      }
      this.dialogVisible = true;
      this.dialogVisible = true
      this.attributeData = data.result;
      this.attributeData = data.result
      this.listLoader = {
        id: res.id,
        pageIndex: 1,
        pageSize: 10,
      };
      this.getDataLoaderSelectDbData();
      }
      this.getDataLoaderSelectDbData()
    },
    async getDataLoaderSelectDbData() {
      const data1 = await meta_selectByPageForUpload(this.listLoader);
      const data1 = await meta_selectByPageForUpload(this.listLoader)
      if (data1.code != 200) {
        this.$message.error("字段列表调用失败");
        return;
        this.$message.error("字段列表调用失败")
        return
      }
      var option = data1.result;
      var option = data1.result
      for (var i in option) {
        option[i].dirid = option[i].dirName;
        option[i].depid = option[i].depName;
        option[i].createuser = option[i].createName;
        option[i].updateuser = option[i].updateName;
        option[i].verid = option[i].verName;
        option[i].dirid = option[i].dirName
        option[i].depid = option[i].depName
        option[i].createuser = option[i].createName
        option[i].updateuser = option[i].updateName
        option[i].verid = option[i].verName
        if (option[i].createtime != null) {
          option[i].createtime = this.setInfoBoxTime(option[i].createtime);
          option[i].createtime = this.setInfoBoxTime(option[i].createtime)
        }
        if (option[i].updatetime != null) {
          option[i].updatetime = this.setInfoBoxTime(option[i].updatetime);
          option[i].updatetime = this.setInfoBoxTime(option[i].updatetime)
        }
      }
      this.dbTableData = data1.result;
      this.count1 = data1.count;
      this.dbTableData = data1.result
      this.count1 = data1.count
    },
    handleLoaderSizeChange(val) {
      this.listLoader.pageIndex = 1;
      this.listLoader.pageSize = val;
      this.getDataLoaderSelectDbData();
      this.listLoader.pageIndex = 1
      this.listLoader.pageSize = val
      this.getDataLoaderSelectDbData()
    },
    handleLoaderCurrentChange(val) {
      this.listLoader.pageIndex = val;
      this.getDataLoaderSelectDbData();
      this.listLoader.pageIndex = val
      this.getDataLoaderSelectDbData()
    },
    async signGetPublicKey() {
      const res = await sign_getPublicKey();
      const res = await sign_getPublicKey()
      if (res && res.code == 200) {
        window.encrypt = new JSEncrypt();
        encrypt.setPublicKey(res.result);
        window.encrypt = new JSEncrypt()
        encrypt.setPublicKey(res.result)
      }
    },
    //单位列表获取
    async getQueryDepTree() {
      const res = await selectdepTab();
      const res = await selectdepTab()
      if (res.code != 200) {
        this.$message.error("单位列表获取失败");
        return;
        this.$message.error("单位列表获取失败")
        return
      }
      this.companyOption1 = this.treeData(res.result);
      this.queryForm.depcode = this.companyOption1[0].code;
      this.queryForm.depName = this.companyOption1[0].name;
      this.getQueryDirTree();
      this.companyOption1 = this.treeData(res.result)
      this.queryForm.depcode = this.companyOption1[0].code
      this.queryForm.depName = this.companyOption1[0].name
      this.getQueryDirTree()
    },
    async getQueryDirTree() {
      const res = await selectdirTab();
      const res = await selectdirTab()
      if (res.code != 200) {
        this.$message.error("单位列表获取失败");
        return;
        this.$message.error("单位列表获取失败")
        return
      }
      this.companyOption = this.treeData(res.result);
      this.queryForm.dirid = this.companyOption[0].id;
      this.queryForm.dircode = this.companyOption[0].code;
      this.queryForm.dirName = this.companyOption[0].name;
      this.getQueryVerList();
      this.companyOption = this.treeData(res.result)
      this.queryForm.dirid = this.companyOption[0].id
      this.queryForm.dircode = this.companyOption[0].code
      this.queryForm.dirName = this.companyOption[0].name
      this.getQueryVerList()
    },
    async getQueryVerList() {
      const data = await meta_selectVerByDirid({dirid: this.queryForm.dirid});
      const data = await meta_selectVerByDirid({ dirid: this.queryForm.dirid })
      if (data.code != 200) {
        this.$message.error("版本列表获取失败");
        return;
        this.$message.error("版本列表获取失败")
        return
      }
      this.verOptions = data.result;
      this.queryForm.verid = data.result[0].id;
      this.getMetaData();
      this.verOptions = data.result
      this.queryForm.verid = data.result[0].id
      this.getMetaData()
    },
    verHandleChange(val) {
      this.queryForm.verid = val;
      this.listData.pageSize = 10;
      this.listData.pageIndex = 1;
      this.getMetaData();
      this.queryForm.verid = val
      this.listData.pageSize = 10
      this.listData.pageIndex = 1
      this.getMetaData()
    },
    handleChange(data, node, nodeData) {
      this.listData.pageSize = 10;
      this.listData.pageIndex = 1;
      this.queryForm.dircode = data.code;
      this.queryForm.dirid = data.id;
      this.queryForm.dirName = data.name;
      this.getQueryVerList();
      this.listData.pageSize = 10
      this.listData.pageIndex = 1
      this.queryForm.dircode = data.code
      this.queryForm.dirid = data.id
      this.queryForm.dirName = data.name
      this.getQueryVerList()
    },
    handleChange1(data, node, nodeData) {
      this.listData.pageSize = 10;
      this.listData.pageIndex = 1;
      this.queryForm.depcode = data.code;
      this.queryForm.depName = data.name;
      this.getMetaData();
      this.listData.pageSize = 10
      this.listData.pageIndex = 1
      this.queryForm.depcode = data.code
      this.queryForm.depName = data.name
      this.getMetaData()
    },
    handleChange2(data, node, nodeData) {
      this.editForm.depid = data.id;
      this.editForm.depcode = data.code;
      this.editForm.depName = data.name;
      this.editForm.depid = data.id
      this.editForm.depcode = data.code
      this.editForm.depName = data.name
    },
    handleChange3(data, node, nodeData) {
      this.editForm.dirid = data.id;
      this.editForm.dircode = data.code;
      this.editForm.dirName = data.name;
      this.editForm.dirid = data.id
      this.editForm.dircode = data.code
      this.editForm.dirName = data.name
    },
    //格式化列表
    formatData(row, column) {
      let data = row[column.property];
      let data = row[column.property]
      if (data == null) {
        return data;
        return data
      }
      return this.format(data);
      return this.format(data)
    },
    setInfoBoxTime(res) {
      if (res == null) {
        return res;
        return res
      }
      return this.format(res);
      return this.format(res)
    },
    setInfoBoxSize(res) {
      if (res >= 1024) {
        return parseFloat(res / 1024).toFixed(3) + " GB";
        return parseFloat(res / 1024).toFixed(3) + " GB"
      } else {
        return res + " MB";
        return res + " MB"
      }
    },
    //格式化时间
    format(shijianchuo) {
      //shijianchuo是整数,否则要parseInt转换
      var time = new Date(shijianchuo);
      var y = time.getFullYear();
      var m = time.getMonth() + 1;
      var d = time.getDate();
      var h = time.getHours();
      var mm = time.getMinutes();
      var s = time.getSeconds();
      var time = new Date(shijianchuo)
      var y = time.getFullYear()
      var m = time.getMonth() + 1
      var d = time.getDate()
      var h = time.getHours()
      var mm = time.getMinutes()
      var s = time.getSeconds()
      return (
          y +
          "-" +
          this.add0(m) +
          "-" +
          this.add0(d) +
          " " +
          h +
          ":" +
          mm +
          ":" +
          s
      );
        y +
        "-" +
        this.add0(m) +
        "-" +
        this.add0(d) +
        " " +
        h +
        ":" +
        mm +
        ":" +
        s
      )
    },
    //格式化时间
    add0(m) {
      return m < 10 ? "0" + m : m;
      return m < 10 ? "0" + m : m
    },
    //单位转换
    stateFormatSizes(row, column) {
      if (row.sizes >= 1024) {
        const val = parseFloat(row.sizes / 1024).toFixed(3);
        return val + " GB";
        const val = parseFloat(row.sizes / 1024).toFixed(3)
        return val + " GB"
      } else {
        return row.sizes + " MB";
        return row.sizes + " MB"
      }
    },
    //目录树获取
    async getSelectDictTab() {
      const res = await selectdirTab();
      const res = await selectdirTab()
      if (res.code != 200) {
        this.$message.error("列表调用失败");
        this.$message.error("列表调用失败")
      }
      this.optionCount = this.treeData(res.result);
      this.dirComPanyOption = this.treeData(res.result);
      this.listData.depcode = this.optionCount[0].code;
      this.optionCount = this.treeData(res.result)
      this.dirComPanyOption = this.treeData(res.result)
      this.listData.depcode = this.optionCount[0].code
    },
    handleNodeClick(data) {
      this.listData.pageSize = 10;
      this.listData.pageIndex = 1;
      this.listData.dirid = data.id;
      this.getMetaData();
      this.listData.pageSize = 10
      this.listData.pageIndex = 1
      this.listData.dirid = data.id
      this.getMetaData()
    },
    getTableDesc(res) {
      this.activeName = res.tab;
      this.activeName = res.tab
    },
    //显示权限按钮
    showPermsBtn() {
      let currentPerms = this.$store.state.currentPerms;
      let permsEntity = this.$store.state.permsEntity;
      let currentPerms = this.$store.state.currentPerms
      let permsEntity = this.$store.state.permsEntity
      permsEntity
          .filter((item) => item.perms == currentPerms)
          .map((item) => (this.btnStatus[item.tag.substr(1)] = true));
        .filter(item => item.perms == currentPerms)
        .map(item => (this.btnStatus[item.tag.substr(1)] = true))
    },
    // ShowWindowFly(res) {
    //   console.log(res);
@@ -1153,83 +1289,83 @@
    // },
    // è¯·æ±‚数据内容
    getMetaData() {
      this.listData.depcode = this.queryForm.depcode;
      this.listData.dircode = this.queryForm.dircode;
      this.listData.depcode = this.queryForm.depcode
      this.listData.dircode = this.queryForm.dircode
      this.listData.verid = this.queryForm.verid;
      this.listData.verid = this.queryForm.verid
      // this.listData.dirid = 57
      select_meta_ByPageAndCount(this.listData).then((res) => {
        this.tableData = res.result;
        this.count = res.count;
      });
      select_meta_ByPageAndCount(this.listData).then(res => {
        this.tableData = res.result
        this.count = res.count
      })
    },
    // æŸ¥è¯¢
    queryInfo() {
      this.listData.name = this.queryForm.name.trim();
      this.listData.pageSize = 10;
      this.listData.pageIndex = 1;
      this.getMetaData();
      this.listData.name = this.queryForm.name.trim()
      this.listData.pageSize = 10
      this.listData.pageIndex = 1
      this.getMetaData()
    },
    // é‡ç½®æŸ¥è¯¢
    resetInfo(formName) {
      this.$refs[formName].resetFields();
      this.listData.pageSize = 10;
      this.listData.pageIndex = 1;
      this.listData.name = null;
      this.queryForm.dirid = this.companyOption[0].id;
      this.queryForm.depid = this.companyOption1[0].id;
      this.queryForm.dircode = this.companyOption[0].code;
      this.queryForm.depcode = this.companyOption1[0].code;
      this.queryForm.dirName = this.companyOption[0].name;
      this.queryForm.depName = this.companyOption1[0].name;
      this.getQueryVerList();
      this.getMetaData();
      this.$refs[formName].resetFields()
      this.listData.pageSize = 10
      this.listData.pageIndex = 1
      this.listData.name = null
      this.queryForm.dirid = this.companyOption[0].id
      this.queryForm.depid = this.companyOption1[0].id
      this.queryForm.dircode = this.companyOption[0].code
      this.queryForm.depcode = this.companyOption1[0].code
      this.queryForm.dirName = this.companyOption[0].name
      this.queryForm.depName = this.companyOption1[0].name
      this.getQueryVerList()
      this.getMetaData()
    },
    //新增按钮
    showAddDialog() {
      this.behavior = "新增用户";
      this.editForm = {};
      this.dialogFormVisible = true;
      this.behavior = "新增用户"
      this.editForm = {}
      this.dialogFormVisible = true
    },
    cancelAdd(formName) {
      this.editForm = {};
      this.$refs[formName].resetFields();
      this.editForm = {}
      this.$refs[formName].resetFields()
    },
    sendAdd(formName) {
      this.$refs[formName].validate((valid) => {
      this.$refs[formName].validate(valid => {
        if (valid) {
          this.fullscreenLoading = true;
          this.fullscreenLoading = true
          insertMeta(this.editForm)
              .then((res) => {
                setTimeout(() => {
                  this.fullscreenLoading = false;
                  if (res.code == 200) {
                    this.listData.pageSize = 10;
                    this.listData.pageIndex = 1;
                    this.getMetaData();
                    this.$message({
                      message: "添加成功",
                      type: "success",
                    });
                    this.editForm = {};
                    this.dialogFormVisible = false;
                  }
                }, 500);
              })
              .catch((res) => {
                alert("修改失败,请重试!");
                this.fullscreenLoading = false;
              });
            .then(res => {
              setTimeout(() => {
                this.fullscreenLoading = false
                if (res.code == 200) {
                  this.listData.pageSize = 10
                  this.listData.pageIndex = 1
                  this.getMetaData()
                  this.$message({
                    message: "添加成功",
                    type: "success",
                  })
                  this.editForm = {}
                  this.dialogFormVisible = false
                }
              }, 500)
            })
            .catch(res => {
              alert("修改失败,请重试!")
              this.fullscreenLoading = false
            })
        } else {
          console.log("error submit!!");
          return false;
          console.log("error submit!!")
          return false
        }
      });
      })
    },
    // èŽ·å–å¤šé€‰é€‰ä¸­çš„å¯¹è±¡
    handleSelectionChange(val) {
      this.multipleSelection = val;
      this.multipleSelection = val
    },
    // åˆ é™¤å¤šæ¡
    deleteMetaInfo() {
@@ -1238,64 +1374,63 @@
        cancelButtonText: "取消",
        type: "warning",
      })
          .then(() => {
            var std = [];
            for (var i in this.multipleSelection) {
              std.push(this.multipleSelection[i].id);
        .then(() => {
          var std = []
          for (var i in this.multipleSelection) {
            std.push(this.multipleSelection[i].id)
          }
          deleteMeta({ ids: std.toString() }).then(res => {
            if (res.code == 200) {
              this.$message({
                type: "success",
                message: "删除成功!",
              })
              this.multipleSelection = []
              this.listData.pageSize = 10
              this.listData.pageIndex = 1
              this.getMetaData()
            } else {
              this.$message.error("删除失败")
              this.multipleSelection = []
            }
            deleteMeta({ids: std.toString()}).then((res) => {
              if (res.code == 200) {
                this.$message({
                  type: "success",
                  message: "删除成功!",
                });
                this.multipleSelection = [];
                this.listData.pageSize = 10;
                this.listData.pageIndex = 1;
                this.getMetaData();
              } else {
                this.$message.error("删除失败");
                this.multipleSelection = [];
              }
            });
          })
          .catch(() => {
            this.$message("已取消删除");
          });
        })
        .catch(() => {
          this.$message("已取消删除")
        })
    },
    // æŸ¥çœ‹ç•Œé¢
    showDetail(row) {
      // console.log(index, row);
      this.showinfoBox = true;
      this.itemdetail = row;
      this.showinfoBox = true
      this.itemdetail = row
    },
    // å…³é—­æŸ¥çœ‹
    closeDetial() {
      this.showinfoBox = false;
      this.itemdetail = {};
      this.showinfoBox = false
      this.itemdetail = {}
    },
    // ä¿®æ”¹ç•Œé¢
    editInfo(row) {
      // console.log(row);
      delete row.createTime;
      delete row.createUser;
      delete row.updateUser;
      delete row.updateUser;
      this.initialForm = JSON.stringify(row); //备份
      this.behavior = "修改信息";
      this.editForm = JSON.parse(JSON.stringify(row));
      this.dialogFormVisible = true;
      this.getSelectDictTab();
      delete row.createTime
      delete row.createUser
      delete row.updateUser
      delete row.updateUser
      this.initialForm = JSON.stringify(row) //备份
      this.behavior = "修改信息"
      this.editForm = JSON.parse(JSON.stringify(row))
      this.dialogFormVisible = true
      this.getSelectDictTab()
    },
    handleClose(done) {
      this.$confirm("确认关闭?")
          .then((_) => {
            this.editForm = {};
            done();
          })
          .catch((_) => {
          });
        .then(_ => {
          this.editForm = {}
          done()
        })
        .catch(_ => {})
    },
    // æäº¤ä¿®æ”¹
@@ -1305,108 +1440,149 @@
        cancelButtonText: "取消",
        type: "warning",
      })
          .then(() => {
            this.dialogFormVisible = false;
            updateMeta(this.editForm).then((res) => {
              setTimeout(() => {
                this.fullscreenLoading = false;
                if (res.code == 200) {
                  this.listData.pageSize = 10;
                  this.listData.pageIndex = 1;
                  this.getMetaData();
                  this.$message({
                    message: "修改成功",
                    type: "success",
                  });
                  this.editForm = {};
                  this.dialogFormVisible = false;
                }
              }, 500);
            });
        .then(() => {
          this.dialogFormVisible = false
          updateMeta(this.editForm).then(res => {
            setTimeout(() => {
              this.fullscreenLoading = false
              if (res.code == 200) {
                this.listData.pageSize = 10
                this.listData.pageIndex = 1
                this.getMetaData()
                this.$message({
                  message: "修改成功",
                  type: "success",
                })
                this.editForm = {}
                this.dialogFormVisible = false
              }
            }, 500)
          })
          .catch(() => {
            alert("修改失败,请重试!");
            this.fullscreenLoading = false;
          });
        })
        .catch(() => {
          alert("修改失败,请重试!")
          this.fullscreenLoading = false
        })
    },
    cancelEdit() {
      this.$nextTick(() => {
        this.editForm = JSON.parse(this.initialForm);
      });
        this.editForm = JSON.parse(this.initialForm)
      })
    },
    async download() {
      var std = [];
      var std = []
      for (var i in this.multipleSelection) {
        std.push(this.multipleSelection[i].id);
        std.push(this.multipleSelection[i].id)
      }
      var obj = {
        pwd: encrypt.encrypt(this.codeForm.repassword),
        ids: std,
      };
      const res = await meta_downloadReq(JSON.stringify(obj));
      }
      const res = await meta_downloadReq(JSON.stringify(obj))
      if (res.code != 200) {
        this.$message.error("下载请求失败");
        return;
        this.$message.error("下载请求失败")
        return
      }
      var downObj = {
        guid: res.result,
        pwd: encodeURIComponent(encrypt.encrypt(this.codeForm.repassword)),
      };
      const data = await meta_selectDownloadFile(downObj);
      }
      const data = await meta_selectDownloadFile(downObj)
      if (data.code != 200) {
        this.$message.error("下载请求失败");
        return;
        this.$message.error("下载请求失败")
        return
      }
      var token = getToken();
      var token = getToken()
      var url =
          BASE_URL +
          "/meta/downloadFile?token=" +
          token +
          "&guid=" +
          res.result +
          "&pwd=" +
          encodeURIComponent(encrypt.encrypt(this.codeForm.repassword));
        BASE_URL +
        "/meta/downloadFile?token=" +
        token +
        "&guid=" +
        res.result +
        "&pwd=" +
        encodeURIComponent(encrypt.encrypt(this.codeForm.repassword))
      $("#downFrame").attr("src", url).click();
      this.closeDown();
      $("#downFrame").attr("src", url).click()
      this.closeDown()
    },
    closeDown() {
      this.showCodeBox = false;
      this.codeForm.password = "";
      this.codeForm.repassword = "";
      this.showCodeBox = false
      this.codeForm.password = ""
      this.codeForm.repassword = ""
    },
    downFormData() {
      if (this.multipleSelection.length == 0) {
        alert("请先选择要下载的文件");
        return;
        alert("请先选择要下载的文件")
        return
      }
      this.showCodeBox = true;
      this.showCodeBox = true
    },
    handleSizeChange(val) {
      this.listData.pageSize = val;
      this.listData.pageIndex = 1;
      this.getMetaData();
      this.listData.pageSize = val
      this.listData.pageIndex = 1
      this.getMetaData()
    },
    handleCurrentChange(val) {
      this.listData.pageIndex = val;
      this.getMetaData();
      this.listData.pageIndex = val
      this.getMetaData()
    },
    //树列表生成
    treeData(source) {
      let cloneData = JSON.parse(JSON.stringify(source)); // å¯¹æºæ•°æ®æ·±åº¦å…‹éš†
      return cloneData.filter((father) => {
      let cloneData = JSON.parse(JSON.stringify(source)) // å¯¹æºæ•°æ®æ·±åº¦å…‹éš†
      return cloneData.filter(father => {
        // å¾ªçŽ¯æ‰€æœ‰é¡¹
        let branchArr = cloneData.filter((child) => father.id == child.pid); // å¯¹æ¯”ID,分别上下级菜单,并返回数据
        branchArr.length > 0 ? (father.children = branchArr) : ""; // ç»™çˆ¶çº§æ·»åŠ ä¸€ä¸ªchildren属性,并赋值
        return father.pid == 0; // è¿”回一级菜单
      });
        let branchArr = cloneData.filter(child => father.id == child.pid) // å¯¹æ¯”ID,分别上下级菜单,并返回数据
        branchArr.length > 0 ? (father.children = branchArr) : "" // ç»™çˆ¶çº§æ·»åŠ ä¸€ä¸ªchildren属性,并赋值
        return father.pid == 0 // è¿”回一级菜单
      })
    },
    showPreview(row) {
      let name = row.name
      if (!name) return false
      return (
        name.indexOf("pdf") != -1 ||
        name.indexOf("jpg") != -1 ||
        name.indexOf("gif") != -1 ||
        name.indexOf("png") != -1 ||
        name.indexOf("jpeg") != -1
      )
    },
    handlePreview(row) {
      let name = row.name
      this.refreshAttatchDetail()
      if (name.indexOf(".pdf") != -1) {
        this.dialog.isPdf = true
      } else if (
        name.indexOf(".jpg") != -1 ||
        name.indexOf(".gif") != -1 ||
        name.indexOf(".png") != -1 ||
        name.indexOf(".jpeg") != -1
      ) {
        this.dialog.isJpg = true
      }
      this.dialog.dialogVisible = true
      this.dialog.isPdf = true
      var url =
        BASE_URL +
        "/inquiry/downloadForView?guid=" +
        row.guid +
        "&token=" +
        getToken()
      this.dialog.src = url
    },
    refreshAttatchDetail() {
      this.dialog.src = ""
      this.dialog.dialogVisible = false
      this.dialog.isPdf = false
      this.dialog.isJpg = false
    },
  },
};
}
</script>
<style lang="less" scoped>
//@import url(); å¼•入公共cssç±»
@@ -1445,5 +1621,12 @@
    border-radius: 10px;
  }
  .preview-dialog {
    .pdfClass {
      height: 70vh;
      width: 100%;
      position: relative;
    }
  }
}
</style>
src/views/datamanage/projectController.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,260 @@
<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">
        <!-- <data-updata v-if="setMenuFlag == 'dataUpdata'"></data-updata> -->
        <catalogue-manage v-if="setMenuFlag == 'catalogueManage'"></catalogue-manage>
        <version-manage v-if="setMenuFlag == 'versionManage'"></version-manage>
        <project-manage v-if="setMenuFlag == 'projectManage'"></project-manage>
        <!-- <spatial-data v-if="setMenuFlag == 'SpatialData'"></spatial-data>
        <domain-manage v-if="setMenuFlag == 'domainManage'"></domain-manage>
        <dictionary-manage v-if="setMenuFlag == 'dictionaryManage'"></dictionary-manage>
        <metadata-manage v-if="setMenuFlag == 'metadataManage'"></metadata-manage>
        <style-manage v-if="setMenuFlag == 'styleManage'"></style-manage>
        <data-loader v-if="setMenuFlag == 'dataLoader'"></data-loader>
        <down-loader v-if="setMenuFlag == 'downLoader'"></down-loader>
        <data-statistics v-if="setMenuFlag == 'dataStatistics'"></data-statistics> -->
      </div>
    </div>
  </div>
</template>
<script>
import { selectMenuRecursive, queryMenuTree, sign_insertOpLog } from '../../api/api';
import customElMenu from '../../components/customElMenu.vue';
import dataUpdata from '@/views/datamanage/dataUpdata.vue'; //数据管理-数据上传
import catalogueManage from '@/views/datamanage/catalogueManage.vue'; //数据管理-目录管理
import SpatialData from '@/views/datamanage/SpatialData.vue'; //数据管理-数据检索
import versionManage from '@/views/datamanage/versionManage.vue'; //数据管理-版本管理
import domainManage from '@/views/datamanage/domainManage.vue'; //数据管理-值域管理
import dictionaryManage from '@/views/datamanage/dictionaryManage.vue'; //数据管理-字典管理
import metadataManage from '@/views/datamanage/metadataManage.vue'; //数据管理-元数据管理
import styleManage from '@/views/datamanage/styleManage.vue'; //数据管理-样式管理
import dataLoader from '@/views/datamanage/dataLoader.vue'; //数据管理-数据入库
import downLoader from '@/views/datamanage/downLoader.vue'; //数据管理-数据下载
import projectManage from '@/views/datamanage/projectManage.vue'; //项目管理
import dataStatistics from '@/views/datamanage/dataStatistics.vue'; //数据统计
export default {
  components: {
    customElMenu,
    dataUpdata,
    catalogueManage,
    SpatialData,
    versionManage,
    domainManage,
    dictionaryManage,
    metadataManage,
    styleManage,
    dataLoader,
    downLoader,
    projectManage,
    dataStatistics,
  },
  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',
    };
  },
  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 == '/projectController';
      });
      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]);
          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)); // å¯¹æºæ•°æ®æ·±åº¦å…‹éš†
      // 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 == 85; // è¿”回一级菜单
        });
      } 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;
    },
    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/datamanage/projectManage.vue
@@ -1,14 +1,40 @@
<template>
  <div class="verSionBox">
    <My-bread
      :list="[
  <div class="verSionBox  ">
    <My-bread :list="[
        `${$t('dataManage.dataManage')}`,
        `${$t('dataManage.projectManage')}`,
      ]"
    ></My-bread>
      ]"></My-bread>
    <el-divider />
    <div class="verSionContent">
      <div class="verSion_leftTree subpage_Div" style="border: 1px solid #dcdfe6;">
      <div
        class="verSion_leftTree subpage_Div"
        style="border: 1px solid #dcdfe6;"
      >
        <el-form
          :inline="true"
          class="demo-form-inline"
        >
          <el-form-item>
            <el-input
              size="small"
              v-model="filterInput"
              style="width: 200px"
              :placeholder="$t('shuJuGuanLi.shuJuJianSuo.valueone')"
              suffix-icon="el-icon-search"
            ></el-input>
          </el-form-item>
          <el-form-item>
            <el-button
              v-if="btnStatus.insert"
              icon="el-icon-plus"
              @click="insertProject"
              :disabled="count1 != 0 ? true : false"
              type="success"
              size="small"
            >{{ $t("common.increase") }}</el-button>
          </el-form-item>
        </el-form>
        <el-tree
          ref="tree"
          :props="defaultProps"
@@ -18,30 +44,23 @@
          :default-expand-all="false"
          draggable
          @node-click="handleNodeClick"
          :filter-node-method="filterNode"
        >
        </el-tree>
      </div>
      <div class="verSion_rightContent subpage_Div">
        <el-form :inline="true" class="demo-form-inline">
          <el-form-item  style="padding-bottom: 14px">
            <el-button
              v-if="btnStatus.insert"
              icon="el-icon-plus"
              @click="insertProject"
              :disabled="count1 != 0 ? true : false"
              type="success"
              size="small"
              >{{ $t("common.append") }}</el-button
            >
          </el-form-item>
        </el-form>
        <!--
        <!-- <el-divider class="eldivider" /> -->
        <div class="dividing-line"></div>
        <div class="table_box" style="height: calc(100% - 89px)">
        <!-- <div class="dividing-line"></div> -->
        <div
          class="table_box"
          style="height:100%"
        >
          <el-table
            ref="filterTable"
            :data="dbTableData"
            height="100%"
            border
            style="width: 100%"
          >
            <el-table-column
@@ -63,7 +82,7 @@
            />
            <el-table-column
                min-width="120"
              min-width="120"
              prop="corpname"
              :label="$t('dataManage.projectObj.corpname')"
            />
@@ -99,7 +118,10 @@
              prop="remarks"
              :label="$t('dataManage.projectObj.remarks')"
            />
            <el-table-column label="操作" width="200">
            <el-table-column
              label="操作"
              width="200"
            >
              <template slot-scope="scope">
                <el-button
                  v-if="btnStatus.delete"
@@ -107,16 +129,14 @@
                  size="small"
                  plain
                  type="danger"
                  >{{ $t("common.delete") }}</el-button
                >
                >{{ $t("common.delete") }}</el-button>
                <el-button
                  v-if="btnStatus.update"
                  @click="EditProject(scope.row)"
                  type="warning"
                  plain
                  size="small"
                  >{{ $t("common.update") }}</el-button
                >
                >{{ $t("common.update") }}</el-button>
              </template>
            </el-table-column>
          </el-table>
@@ -128,8 +148,8 @@
      top="2vh"
      :title="
        behavior == '新增项目'
          ? `${$t('dataManage.projectObj.newProj')}`
          : `${$t('dataManage.projectObj.editProj')}`
          ? `${$t('dataManage.projectObj.lable1')}`
          : `${$t('dataManage.projectObj.lable1')}`
      "
      :visible.sync="outerVisible"
      :before-close="outerClose"
@@ -153,10 +173,16 @@
          label-position="top"
        >
          <el-form-item :label="$t('dataManage.projectObj.projname')">
            <el-input v-model="editFrom.projname" style="width: 85%"></el-input>
            <el-input
              v-model="editFrom.projname"
              style="width: 85%"
            ></el-input>
          </el-form-item>
          <el-form-item :label="$t('dataManage.projectObj.projtype')">
            <el-input v-model="editFrom.projtype" style="width: 85%"></el-input>
            <el-input
              v-model="editFrom.projtype"
              style="width: 85%"
            ></el-input>
          </el-form-item>
          <el-form-item :label="$t('dataManage.projectObj.location')">
            <div class="BoxFlex">
@@ -181,16 +207,28 @@
          </el-form-item>
          <el-form-item :label="$t('dataManage.projectObj.country')">
            <el-input v-model="editFrom.country" style="width: 85%"></el-input>
            <el-input
              v-model="editFrom.country"
              style="width: 85%"
            ></el-input>
          </el-form-item>
          <el-form-item :label="$t('dataManage.projectObj.province')">
            <el-input v-model="editFrom.province" style="width: 85%"></el-input>
            <el-input
              v-model="editFrom.province"
              style="width: 85%"
            ></el-input>
          </el-form-item>
          <el-form-item :label="$t('dataManage.projectObj.county')">
            <el-input v-model="editFrom.location" style="width: 85%"></el-input>
            <el-input
              v-model="editFrom.location"
              style="width: 85%"
            ></el-input>
          </el-form-item>
          <el-form-item :label="$t('dataManage.projectObj.corpname')">
            <el-input v-model="editFrom.corpname" style="width: 85%"></el-input>
            <el-input
              v-model="editFrom.corpname"
              style="width: 85%"
            ></el-input>
          </el-form-item>
          <el-form-item :label="$t('dataManage.projectObj.department')">
            <el-input
@@ -205,7 +243,10 @@
            ></el-input>
          </el-form-item>
          <el-form-item :label="$t('dataManage.projectObj.contents')">
            <el-input v-model="editFrom.contents" style="width: 85%"></el-input>
            <el-input
              v-model="editFrom.contents"
              style="width: 85%"
            ></el-input>
          </el-form-item>
          <el-form-item :label="$t('dataManage.projectObj.projstate')">
            <el-input
@@ -214,19 +255,28 @@
            ></el-input>
          </el-form-item>
          <el-form-item :label="$t('dataManage.projectObj.remarks')">
            <el-input v-model="editFrom.remarks" style="width: 85%"></el-input>
            <el-input
              v-model="editFrom.remarks"
              style="width: 85%"
            ></el-input>
          </el-form-item>
        </el-form>
      </div>
      <div slot="footer" class="dialog-footer">
      <div
        slot="footer"
        class="dialog-footer"
      >
        <el-button
          type="info"
          size="small"
          :disabled="behavior != '新增项目' ? true : false"
          @click="setRestEditFrom"
          >{{ $t("common.reset") }}</el-button
        >
        <el-button size="small" type="primary" @click="insertEditFrom">{{
        >{{ $t("common.reset") }}</el-button>
        <el-button
          size="small"
          type="primary"
          @click="insertEditFrom"
        >{{
          $t("common.confirm")
        }}</el-button>
      </div>
@@ -252,6 +302,7 @@
  components: { MyBread, ProjectOl },
  data() {
    return {
      filterInput: "",
      behavior: null,
      outerVisible: false,
      innerVisible: false,
@@ -290,6 +341,11 @@
  computed: {},
  methods: {
    filterNode(value, data) {
      if (!value) return true;
      return data.name.indexOf(value) !== -1;
    },
    showPermsBtn() {
      let currentPerms = this.$store.state.currentPerms;
      let permsEntity = this.$store.state.permsEntity;
@@ -308,7 +364,7 @@
          this.getSelectProject();
          done();
        })
        .catch((_) => {});
        .catch((_) => { });
    },
    async innerClose() {
      this.showMap = false;
@@ -401,7 +457,7 @@
    //新增项目
    insertProject() {
      if (this.dirId == null) {
        this.$message.error("请选择需要新增的目录");
        this.$message.error("请选择需要添加的项目");
        return;
      }
      this.behavior = "新增项目";
@@ -454,7 +510,12 @@
      });
    },
  },
  watch: {},
  watch: {
    filterInput(val) {
      this.$refs.tree.filter(val);
    },
  },
};
</script>
<style lang="less" scoped>
@@ -494,7 +555,7 @@
  border-radius: 5px;
  //border: 1px solid #dcdfe6;
  //margin-bottom: 20px;
  text-align: right;
  // text-align: right;
  .el-form-item {
    margin: 5px;
  }
src/views/datamanage/styleManage.vue
@@ -4,48 +4,56 @@
        `${$t('dataManage.dataManage')}`,
        `${$t('dataManage.styleManage')}`,
      ]"></My-bread>
    <el-divider/>
    <div class="searchComp subpage_Div" ref="container">
    <el-divider />
    <div
      class="searchComp subpage_Div"
      ref="container"
    >
      <el-form
          ref="ruleForm"
          :model="ruleForm"
          :inline="true"
        ref="ruleForm"
        :model="ruleForm"
        :inline="true"
      >
        <div class="flex_box">
          <div style="margin-right: auto">
            <el-form-item
                size="small"
                :label="$t('dataManage.vmobj.keyword')"
                prop="name"
              size="small"
              :label="$t('dataManage.vmobj.keyword')"
              prop="name"
            >
<!--                                suffix-icon="el-icon-edit"
              <!--                                suffix-icon="el-icon-edit"
:placeholder="$t('common.pleaseInput')"-->
              <el-input
                  v-model="ruleForm.name"
                  :placeholder="$t('shuJuGuanLi.lable1')"
                  style="width:200px"
              ><i slot="suffix" class="el-icon-search"  @click="submitForm('ruleForm')" style="padding-right: 8px"></i></el-input>
                v-model="ruleForm.name"
                :placeholder="$t('shuJuGuanLi.lable1')"
                style="width:200px"
              ><i
                  slot="suffix"
                  class="el-icon-search"
                  @click="submitForm('ruleForm')"
                  style="padding-right: 8px"
                ></i></el-input>
            </el-form-item>
          </div>
          <div>
            <el-form-item>
              <el-button
                  v-if="btnStatus.insert"
                  @click="setInsertShow()"
                  icon="el-icon-edit"
                  type="success"
                  size="small"
                v-if="btnStatus.insert"
                @click="setInsertShow()"
                icon="el-icon-edit"
                type="success"
                size="small"
              >{{ $t('common.append') }}
              </el-button>
              <el-button
                  v-if="btnStatus.delete"
                  @click="delStyleData"
                  icon="el-icon-delete"
                  type="danger"
                  size="small"
                v-if="btnStatus.delete"
                @click="delStyleData"
                icon="el-icon-delete"
                type="danger"
                size="small"
              >{{ $t('common.delete') }}
              </el-button>
<!--              <el-button
              <!--              <el-button
                  @click="submitForm('ruleForm')"
                  icon="el-icon-search"
                  type="primary"
@@ -53,82 +61,85 @@
              >{{ $t('common.iquery') }}
              </el-button>-->
              <el-button
                  @click="resetForm('ruleForm')"
                  icon="el-icon-refresh"
                  type="info"
                  size="small"
                @click="resetForm('ruleForm')"
                icon="el-icon-refresh"
                type="info"
                size="small"
              >{{ $t('common.empty') }}
              </el-button>
            </el-form-item>
          </div>
        </div>
      </el-form>
    </div>
    <div class="dividing-line"></div>
    <div class="table_box" :style="styleVar">
    <div
      class="table_box"
      :style="styleVar"
    >
      <el-table
          :data="tableData"
          style="width: 100%"
          height="calc(100% - 57px)"
          @selection-change="handleSelectionChange"
        :data="tableData"
        style="width: 100%"
        border
        height="calc(100% - 57px)"
        @selection-change="handleSelectionChange"
      >
        <el-table-column
            type="selection"
            width="55"
          type="selection"
          width="55"
        />
        <el-table-column
            align="center"
            type="index"
            :label="$t('dataManage.styleObj.index')"
            width="70px"
          align="center"
          type="index"
          :label="$t('dataManage.styleObj.index')"
          width="70px"
        />
        <el-table-column
            align="center"
            prop="id"
            v-if="false"
          align="center"
          prop="id"
          v-if="false"
        />
        <el-table-column
            align="center"
            prop="name"
            :label="$t('dataManage.styleObj.name')"
          align="center"
          prop="name"
          :label="$t('dataManage.styleObj.name')"
        />
        <el-table-column
            align="center"
            prop="type"
            :label="$t('dataManage.styleObj.type')"
          align="center"
          prop="type"
          :label="$t('dataManage.styleObj.type')"
        />
        <el-table-column
            align="center"
            prop="dirName"
            :label="$t('dataManage.styleObj.dirid')"
          align="center"
          prop="dirName"
          :label="$t('dataManage.styleObj.dirid')"
        />
        <el-table-column
            align="center"
            prop="depName"
            :label="$t('dataManage.styleObj.depid')"
          align="center"
          prop="depName"
          :label="$t('dataManage.styleObj.depid')"
        />
        <el-table-column
            align="center"
            prop="ver"
            :label="$t('dataManage.styleObj.ver')"
          align="center"
          prop="ver"
          :label="$t('dataManage.styleObj.ver')"
        />
        <el-table-column
            align="center"
            prop="status"
            :label="$t('dataManage.styleObj.status')"
            :formatter="formatStatus"
          align="center"
          prop="status"
          :label="$t('dataManage.styleObj.status')"
          :formatter="formatStatus"
        />
        <el-table-column
            align="center"
            prop="precision"
            :label="$t('dataManage.styleObj.precision')"
          align="center"
          prop="precision"
          :label="$t('dataManage.styleObj.precision')"
        />
        <el-table-column
            align="center"
            prop="descr"
            :label="$t('dataManage.styleObj.descr')"
          align="center"
          prop="descr"
          :label="$t('dataManage.styleObj.descr')"
        />
        <!-- <el-table-column
          align="center"
@@ -136,57 +147,65 @@
          :label="$t('dataManage.styleObj.bak')"
        /> -->
        <el-table-column
            min-width="120"
            :label="$t('common.operate')"
          min-width="200"
          :label="$t('common.operate')"
        >
          <template slot-scope="scope">
            <el-button
                @click="showDetail(scope.$index, scope.row)"
                type="primary"
                plain
                size="small"
              @click="showDetail(scope.$index, scope.row)"
              type="primary"
              plain
              size="small"
            >{{ $t('common.see') }}
            </el-button>
            <el-button
                @click="handleEdit(scope.$index, scope.row)"
                type="warning"
                plain
                size="small"
              @click="handleEdit(scope.$index, scope.row)"
              type="warning"
              plain
              size="small"
            >{{ $t('common.update') }}
            </el-button>
            <el-button
              @click="handleDownload(scope.$index, scope.row)"
              type="success"
              plain
              size="small"
            >{{ $t('common.download') }}
            </el-button>
          </template>
        </el-table-column>
      </el-table>
      <div
          class="pagination_box"
          style="margin-top: 15px"
        class="pagination_box"
        style="margin-top: 15px"
      >
        <el-pagination
            @size-change="handleSizeChange"
            @current-change="handleCurrentChange"
            :current-page="listData.pageIndex"
            :page-sizes="[10, 20, 50, 100]"
            :page-size="listData.pageSize"
            layout="total, sizes, prev, pager, next, jumper"
            :total="count"
          @size-change="handleSizeChange"
          @current-change="handleCurrentChange"
          :current-page="listData.pageIndex"
          :page-sizes="[10, 20, 50, 100]"
          :page-size="listData.pageSize"
          layout="total, sizes, prev, pager, next, jumper"
          :total="count"
        >
        </el-pagination>
      </div>
    </div>
    <div class="infoBox_box" v-show="showinfoBox">
      <div
          class="infoBox subpage_Div box_div"
      >
    <div
      class="infoBox_box"
      v-show="showinfoBox"
    >
      <div class="infoBox subpage_Div box_div">
        <div
            slot="header"
            class="clearfix"
          slot="header"
          class="clearfix"
        >
          <span>{{ $t('dataManage.styleObj.deInformation') }}</span>
          <div
              style="float: right; cursor: pointer"
              @click="closeDetial"
            style="float: right; cursor: pointer"
            @click="closeDetial"
          >
            <i class="el-icon-close"></i>
          </div>
@@ -239,11 +258,11 @@
            <label> {{ $t('dataManage.styleObj.viewguid') }}:</label>
            <label class="boxlabel">
              <div style="width:440px;height:200px;">
                  <img
                      style="width:100%; height:100%"
                      :src="itemdetail.imageFile"
                      alt=""
                  />
                <img
                  style="width:100%; height:100%"
                  :src="itemdetail.imageFile"
                  alt=""
                />
              </div>
            </label>
          </p>
@@ -278,54 +297,57 @@
      </div>
    </div>
    <el-dialog
        :title="$t('dataManage.styleObj.modifyStyleData')"
        :before-close="removeUpdate"
        :visible.sync="dialogFormVisible"
      :title="$t('dataManage.styleObj.modifyStyleData')"
      :before-close="removeUpdate"
      :visible.sync="dialogFormVisible"
    >
      <div style="height: 500px; overflow: auto">
        <el-form :model="upform" label-position="top">
        <el-form
          :model="upform"
          label-position="top"
        >
          <el-form-item
              :label="$t('dataManage.styleObj.name')"
              :label-width="formLabelWidth"
            :label="$t('dataManage.styleObj.name')"
            :label-width="formLabelWidth"
          >
            <el-input
                v-model="upform.name"
                autocomplete="off"
                style="width:85%"
              v-model="upform.name"
              autocomplete="off"
              style="width:85%"
            ></el-input>
          </el-form-item>
          <el-form-item
              :label="$t('dataManage.styleObj.type')"
              :label-width="formLabelWidth"
            :label="$t('dataManage.styleObj.type')"
            :label-width="formLabelWidth"
          >
            <el-input
                v-model="upform.type"
                autocomplete="off"
                style="width:85%"
              v-model="upform.type"
              autocomplete="off"
              style="width:85%"
            ></el-input>
          </el-form-item>
          <el-form-item
              :label="$t('dataManage.styleObj.dirid')"
              :label-width="formLabelWidth"
            :label="$t('dataManage.styleObj.dirid')"
            :label-width="formLabelWidth"
          >
            <el-select
                v-model="upform.dirid"
                placeholder="请选择"
                style="width:85%"
                @focus="setOptionWidth"
              v-model="upform.dirid"
              placeholder="请选择"
              style="width:85%"
              @focus="setOptionWidth"
            >
              <el-option
                  :value="upform.dirid"
                  :label="upform.dirName"
                  :style="{ width: selectOptionWidth, height: selectheight }"
                :value="upform.dirid"
                :label="upform.dirName"
                :style="{ width: selectOptionWidth, height: selectheight }"
              >
                <el-tree
                    ref="tree"
                    :data="editcatalogOption"
                    :default-expand-all="defaultexpand"
                    node-key="id"
                    :props="defaultProps"
                    @node-click="handleNodeClickto"
                  ref="tree"
                  :data="editcatalogOption"
                  :default-expand-all="defaultexpand"
                  node-key="id"
                  :props="defaultProps"
                  @node-click="handleNodeClickto"
                />
              </el-option>
            </el-select>
@@ -349,27 +371,27 @@
            ></el-link> -->
          </el-form-item>
          <el-form-item
              :label="$t('dataManage.styleObj.depid')"
              :label-width="formLabelWidth"
            :label="$t('dataManage.styleObj.depid')"
            :label-width="formLabelWidth"
          >
            <el-select
                v-model="upform.depid"
                placeholder="请选择"
                style="width:85%"
                @focus="setOptionWidth"
              v-model="upform.depid"
              placeholder="请选择"
              style="width:85%"
              @focus="setOptionWidth"
            >
              <el-option
                  :value="upform.depid"
                  :label="upform.depName"
                  :style="{ width: selectOptionWidth, height: selectheight }"
                :value="upform.depid"
                :label="upform.depName"
                :style="{ width: selectOptionWidth, height: selectheight }"
              >
                <el-tree
                    ref="tree"
                    :data="editCompanyOption"
                    :default-expand-all="defaultexpand"
                    node-key="id"
                    :props="defaultProps"
                    @node-click="handleNodeClick"
                  ref="tree"
                  :data="editCompanyOption"
                  :default-expand-all="defaultexpand"
                  node-key="id"
                  :props="defaultProps"
                  @node-click="handleNodeClick"
                />
              </el-option>
            </el-select>
@@ -394,90 +416,90 @@
            ></el-link> -->
          </el-form-item>
          <el-form-item
              :label="$t('dataManage.styleObj.ver')"
              :label-width="formLabelWidth"
            :label="$t('dataManage.styleObj.ver')"
            :label-width="formLabelWidth"
          >
            <el-input
                v-model="upform.ver"
                autocomplete="off"
                style="width:85%"
              v-model="upform.ver"
              autocomplete="off"
              style="width:85%"
            ></el-input>
          </el-form-item>
          <el-form-item
              :label="$t('dataManage.styleObj.status')"
              :label-width="formLabelWidth"
            :label="$t('dataManage.styleObj.status')"
            :label-width="formLabelWidth"
          >
            <el-select
                v-model="upform.status"
                style="width:85%"
                :placeholder="$t('common.choose')"
              v-model="upform.status"
              style="width:85%"
              :placeholder="$t('common.choose')"
            >
              <el-option
                  value="0"
                  :label="$t('dataManage.styleObj.deactivate')"
                value="0"
                :label="$t('dataManage.styleObj.deactivate')"
              ></el-option>
              <el-option
                  value="1"
                  :label="$t('dataManage.styleObj.enable')"
                value="1"
                :label="$t('dataManage.styleObj.enable')"
              ></el-option>
            </el-select>
          </el-form-item>
          <el-form-item
              :label="$t('dataManage.styleObj.precision')"
              :label-width="formLabelWidth"
            :label="$t('dataManage.styleObj.precision')"
            :label-width="formLabelWidth"
          >
            <el-input
                v-model="upform.precision"
                autocomplete="off"
                style="width:85%"
              v-model="upform.precision"
              autocomplete="off"
              style="width:85%"
            ></el-input>
          </el-form-item>
          <el-form-item
              :label="$t('dataManage.styleObj.descr')"
              :label-width="formLabelWidth"
            :label="$t('dataManage.styleObj.descr')"
            :label-width="formLabelWidth"
          >
            <el-input
                v-model="upform.descr"
                autocomplete="off"
                style="width:85%"
              v-model="upform.descr"
              autocomplete="off"
              style="width:85%"
            ></el-input>
          </el-form-item>
          <el-form-item
              :label="$t('dataManage.styleObj.fileguid')"
              :label-width="formLabelWidth"
            :label="$t('dataManage.styleObj.fileguid')"
            :label-width="formLabelWidth"
          >
            <!-- -->
            <div class="BoxFlex">
              <div class="BoxFlexinput">
                <el-input
                    v-model="upform.fileGuid"
                    disabled
                    autocomplete="off"
                    style="width:100%"
                  v-model="upform.fileGuid"
                  disabled
                  autocomplete="off"
                  style="width:100%"
                ></el-input>
              </div>
              <div class="BoxFlexbutton">
                <input
                    name="file1"
                    type="file"
                    id="editFile"
                    multiple="multiple"
                    style="display: none"
                    @change="editFile(0)"
                  name="file1"
                  type="file"
                  id="editFile"
                  multiple="multiple"
                  style="display: none"
                  @change="editFile(0)"
                />
                <el-button
                    style="margin-left: 6px;"
                    type="primary"
                    size="small"
                    :underline="false"
                    @click="geteditFile(0)"
                  style="margin-left: 6px;"
                  type="primary"
                  size="small"
                  :underline="false"
                  @click="geteditFile(0)"
                >选择
                </el-button>
                <el-button
                    type="primary"
                    size="small"
                    :underline="false"
                    @click="seteditFile(0)"
                  type="primary"
                  size="small"
                  :underline="false"
                  @click="seteditFile(0)"
                >上传
                </el-button>
              </div>
@@ -497,41 +519,41 @@
            ><i class="el-icon-upload2"></i></el-link> -->
          </el-form-item>
          <el-form-item
              :label="$t('dataManage.styleObj.viewguid')"
              :label-width="formLabelWidth"
            :label="$t('dataManage.styleObj.viewguid')"
            :label-width="formLabelWidth"
          >
            <div class="BoxFlex">
              <div class="BoxFlexinput">
                <el-input
                    v-model="upform.viewGuid"
                    disabled
                    autocomplete="off"
                    style="width:100%"
                  v-model="upform.viewGuid"
                  disabled
                  autocomplete="off"
                  style="width:100%"
                ></el-input>
              </div>
              <div>
                <input
                    name="file1"
                    :accept="'.jpg,.png'"
                    type="file"
                    id="editimageFile"
                    multiple="multiple"
                    style="display: none"
                    @change="editFile(1)"
                  name="file1"
                  :accept="'.jpg,.png'"
                  type="file"
                  id="editimageFile"
                  multiple="multiple"
                  style="display: none"
                  @change="editFile(1)"
                />
                <el-button
                    style="margin-left: 6px;"
                    type="primary"
                    size="small"
                    :underline="false"
                    @click="geteditFile(1)"
                  style="margin-left: 6px;"
                  type="primary"
                  size="small"
                  :underline="false"
                  @click="geteditFile(1)"
                >选择
                </el-button>
                <el-button
                    type="primary"
                    size="small"
                    :underline="false"
                    @click="seteditFile(1)"
                  type="primary"
                  size="small"
                  :underline="false"
                  @click="seteditFile(1)"
                >上传
                </el-button>
              </div>
@@ -551,85 +573,87 @@
            ><i class="el-icon-upload2"></i></el-link> -->
          </el-form-item>
          <el-form-item
              :label="$t('dataManage.styleObj.bak')"
              :label-width="formLabelWidth"
            :label="$t('dataManage.styleObj.bak')"
            :label-width="formLabelWidth"
          >
            <el-input
                v-model="upform.bak"
                autocomplete="off"
                style="width:85%"
              v-model="upform.bak"
              autocomplete="off"
              style="width:85%"
            ></el-input>
          </el-form-item>
        </el-form>
      </div>
      <div
          slot="footer"
          class="dialog-footer"
        slot="footer"
        class="dialog-footer"
      >
        <el-button
            type="info"
            size="small"
            @click="removeUpdate"
          type="info"
          size="small"
          @click="removeUpdate"
        >{{ $t('common.close') }}
        </el-button>
        <el-button
            type="primary"
            @click="updateForm"
            size="small"
          type="primary"
          @click="updateForm"
          size="small"
        >{{ $t('common.confirm') }}
        </el-button>
      </div>
    </el-dialog>
    <el-dialog
        :title="$t('dataManage.styleObj.addStyleData')"
        :visible.sync="InsertFormdialog"
        :before-close="handleClose"
      :title="$t('dataManage.styleObj.addStyleData')"
      :visible.sync="InsertFormdialog"
      :before-close="handleClose"
    >
      <div style="height: 500px; overflow: auto">
        <el-form :model="insertform" label-position="top">
        <el-form
          :model="insertform"
          label-position="top"
        >
          <el-form-item
              :label="$t('dataManage.styleObj.name')"
              :label-width="formLabelWidth"
            :label="$t('dataManage.styleObj.name')"
            :label-width="formLabelWidth"
          >
            <el-input
                v-model="insertform.name"
                autocomplete="off"
                style="width:85%"
              v-model="insertform.name"
              autocomplete="off"
              style="width:85%"
            ></el-input>
          </el-form-item>
          <el-form-item
              :label="$t('dataManage.styleObj.type')"
              :label-width="formLabelWidth"
            :label="$t('dataManage.styleObj.type')"
            :label-width="formLabelWidth"
          >
            <el-input
                v-model="insertform.type"
                autocomplete="off"
                style="width:85%"
              v-model="insertform.type"
              autocomplete="off"
              style="width:85%"
            ></el-input>
          </el-form-item>
          <el-form-item
              :label="$t('dataManage.styleObj.dirid')"
              :label-width="formLabelWidth"
            :label="$t('dataManage.styleObj.dirid')"
            :label-width="formLabelWidth"
          >
            <el-select
                v-model="insertform.dirid"
                placeholder="请选择"
                style="width:85%"
                @focus="setOptionWidth"
              v-model="insertform.dirid"
              placeholder="请选择"
              style="width:85%"
              @focus="setOptionWidth"
            >
              <el-option
                  :value="insertform.dirid"
                  :label="insertform.dirName"
                  :style="{ width: selectOptionWidth, height: selectheight }"
                :value="insertform.dirid"
                :label="insertform.dirName"
                :style="{ width: selectOptionWidth, height: selectheight }"
              >
                <el-tree
                    ref="tree"
                    :data="catalogOption"
                    :default-expand-all="defaultexpand"
                    node-key="id"
                    :props="defaultProps"
                    @node-click="handcatalogChange"
                  ref="tree"
                  :data="catalogOption"
                  :default-expand-all="defaultexpand"
                  node-key="id"
                  :props="defaultProps"
                  @node-click="handcatalogChange"
                />
              </el-option>
            </el-select>
@@ -653,27 +677,27 @@
            ></el-link> -->
          </el-form-item>
          <el-form-item
              :label="$t('dataManage.styleObj.depid')"
              :label-width="formLabelWidth"
            :label="$t('dataManage.styleObj.depid')"
            :label-width="formLabelWidth"
          >
            <el-select
                v-model="insertform.depid"
                placeholder="请选择"
                style="width:85%"
                @focus="setOptionWidth"
              v-model="insertform.depid"
              placeholder="请选择"
              style="width:85%"
              @focus="setOptionWidth"
            >
              <el-option
                  :value="insertform.depid"
                  :label="insertform.depName"
                  :style="{ width: selectOptionWidth, height: selectheight }"
                :value="insertform.depid"
                :label="insertform.depName"
                :style="{ width: selectOptionWidth, height: selectheight }"
              >
                <el-tree
                    ref="tree"
                    :data="companyOption"
                    :default-expand-all="defaultexpand"
                    node-key="id"
                    :props="cascader"
                    @node-click="handcompanyChange"
                  ref="tree"
                  :data="companyOption"
                  :default-expand-all="defaultexpand"
                  node-key="id"
                  :props="cascader"
                  @node-click="handcompanyChange"
                />
              </el-option>
            </el-select>
@@ -697,89 +721,89 @@
            ></el-link> -->
          </el-form-item>
          <el-form-item
              :label="$t('dataManage.styleObj.ver')"
              :label-width="formLabelWidth"
            :label="$t('dataManage.styleObj.ver')"
            :label-width="formLabelWidth"
          >
            <el-input
                v-model="insertform.ver"
                autocomplete="off"
                style="width:85%"
              v-model="insertform.ver"
              autocomplete="off"
              style="width:85%"
            ></el-input>
          </el-form-item>
          <el-form-item
              :label="$t('dataManage.styleObj.status')"
              :label-width="formLabelWidth"
            :label="$t('dataManage.styleObj.status')"
            :label-width="formLabelWidth"
          >
            <el-select
                v-model="insertform.status"
                style="width:85%"
                :placeholder="$t('common.choose')"
              v-model="insertform.status"
              style="width:85%"
              :placeholder="$t('common.choose')"
            >
              <el-option
                  value="0"
                  :label="$t('dataManage.styleObj.deactivate')"
                value="0"
                :label="$t('dataManage.styleObj.deactivate')"
              ></el-option>
              <el-option
                  value="1"
                  :label="$t('dataManage.styleObj.enable')"
                value="1"
                :label="$t('dataManage.styleObj.enable')"
              ></el-option>
            </el-select>
          </el-form-item>
          <el-form-item
              :label="$t('dataManage.styleObj.precision')"
              :label-width="formLabelWidth"
            :label="$t('dataManage.styleObj.precision')"
            :label-width="formLabelWidth"
          >
            <el-input
                v-model="insertform.precision"
                autocomplete="off"
                style="width:85%"
              v-model="insertform.precision"
              autocomplete="off"
              style="width:85%"
            ></el-input>
          </el-form-item>
          <el-form-item
              :label="$t('dataManage.styleObj.descr')"
              :label-width="formLabelWidth"
            :label="$t('dataManage.styleObj.descr')"
            :label-width="formLabelWidth"
          >
            <el-input
                v-model="insertform.descr"
                autocomplete="off"
                style="width:85%"
              v-model="insertform.descr"
              autocomplete="off"
              style="width:85%"
            ></el-input>
          </el-form-item>
          <el-form-item
              :label="$t('dataManage.styleObj.fileguid')"
              :label-width="formLabelWidth"
            :label="$t('dataManage.styleObj.fileguid')"
            :label-width="formLabelWidth"
          >
            <div class="BoxFlex">
              <div class="BoxFlexinput">
                <el-input
                    v-model="insertFileGuid"
                    disabled
                    autocomplete="off"
                    style="width:100%"
                  v-model="insertFileGuid"
                  disabled
                  autocomplete="off"
                  style="width:100%"
                />
              </div>
              <div>
                <input
                    name="file1"
                    type="file"
                    id="insertFile"
                    multiple="multiple"
                    style="display: none"
                    @change="insertFileData(0)"
                  name="file1"
                  type="file"
                  id="insertFile"
                  multiple="multiple"
                  style="display: none"
                  @change="insertFileData(0)"
                />
                <el-button
                    style="margin-left: 6px;"
                    type="primary"
                    size="small"
                    :underline="false"
                    @click="getInsertFile(0)"
                  style="margin-left: 6px;"
                  type="primary"
                  size="small"
                  :underline="false"
                  @click="getInsertFile(0)"
                >选择
                </el-button>
                <el-button
                    type="primary"
                    size="small"
                    :underline="false"
                    @click="setinsertFile(0)"
                  type="primary"
                  size="small"
                  :underline="false"
                  @click="setinsertFile(0)"
                >上传
                </el-button>
              </div>
@@ -799,16 +823,16 @@
            ><i class="el-icon-upload2"></i></el-link> -->
          </el-form-item>
          <el-form-item
              :label="$t('dataManage.styleObj.viewguid')"
              :label-width="formLabelWidth"
            :label="$t('dataManage.styleObj.viewguid')"
            :label-width="formLabelWidth"
          >
            <div class="BoxFlex">
              <div class="BoxFlexinput">
                <el-input
                    v-model="insertViewGuid"
                    disabled
                    autocomplete="off"
                    style="width:100%"
                  v-model="insertViewGuid"
                  disabled
                  autocomplete="off"
                  style="width:100%"
                />
              </div>
              <div><input
@@ -819,20 +843,20 @@
                  multiple="multiple"
                  style="display: none"
                  @change="insertFileData(1)"
              />
                />
                <el-button
                    style="margin-left: 6px;"
                    type="primary"
                    size="small"
                    :underline="false"
                    @click="getInsertFile(1)"
                  style="margin-left: 6px;"
                  type="primary"
                  size="small"
                  :underline="false"
                  @click="getInsertFile(1)"
                >选择
                </el-button>
                <el-button
                    type="primary"
                    size="small"
                    :underline="false"
                    @click="setinsertFile(1)"
                  type="primary"
                  size="small"
                  :underline="false"
                  @click="setinsertFile(1)"
                >上传
                </el-button>
              </div>
@@ -851,55 +875,55 @@
            ><i class="el-icon-upload2"></i></el-link> -->
          </el-form-item>
          <el-form-item
              :label="$t('dataManage.styleObj.bak')"
              :label-width="formLabelWidth"
            :label="$t('dataManage.styleObj.bak')"
            :label-width="formLabelWidth"
          >
            <el-input
                v-model="insertform.bak"
                autocomplete="off"
                style="width:85%"
              v-model="insertform.bak"
              autocomplete="off"
              style="width:85%"
            ></el-input>
          </el-form-item>
        </el-form>
      </div>
      <div
          slot="footer"
          class="dialog-footer"
        slot="footer"
        class="dialog-footer"
      >
        <el-button
            type="info"
            size="small"
            @click="insertFromDataClose"
          type="info"
          size="small"
          @click="insertFromDataClose"
        >{{ $t('common.close') }}
        </el-button>
        <el-button
            type="primary"
            size="small"
            @click="insertFromData"
          type="primary"
          size="small"
          @click="insertFromData"
        >{{ $t('common.confirm') }}
        </el-button>
      </div>
    </el-dialog>
    <div
        class="leftTree"
        v-if="showDirCata"
      class="leftTree"
      v-if="showDirCata"
    >
      <div class="treeBox">
        <style-dir-tree></style-dir-tree>
      </div>
      <div class="btnBox">
        <el-button
            type="primary"
            size="small"
            @click="selectDirCataName"
          type="primary"
          size="small"
          @click="selectDirCataName"
        >{{
            $t('common.confirm')
          }}
        </el-button>
        <el-button
            type="info"
            size="small"
            @click="showDirCata = false"
          type="info"
          size="small"
          @click="showDirCata = false"
        >{{
            $t('common.close')
          }}
@@ -907,38 +931,43 @@
      </div>
    </div>
    <div
        class="leftTree subpage_Div"
        v-if="showDepCata"
      class="leftTree subpage_Div"
      v-if="showDepCata"
    >
      <div class="treeBox">
        <style-dep-tree></style-dep-tree>
      </div>
      <div class="btnBox">
        <el-button
            type="primary"
            size="small"
            @click="selectDepCataName"
          type="primary"
          size="small"
          @click="selectDepCataName"
        >{{
            $t('common.confirm')
          }}
        </el-button>
        <el-button
            type="info"
            size="small"
            @click="showDepCata = false"
          type="info"
          size="small"
          @click="showDepCata = false"
        >{{
            $t('common.close')
          }}
        </el-button>
      </div>
    </div>
    <iframe
      id="downFrame"
      src=""
      style="display: none; border: 0; padding: 0; height: 0; width: 0"
    ></iframe>
  </div>
</template>
<script>
import $ from "jquery";
import moment from "moment";
import {getToken} from "../../utils/auth.js";
import { getToken } from "../../utils/auth.js";
import MyBread from "../../components/MyBread.vue";
import styleDirTree from "./styleDirTree.vue";
import styleDepTree from "./styleDepTree.vue";
@@ -954,7 +983,7 @@
export default {
  name: "styleManage",
  components: {MyBread, styleDirTree, styleDepTree},
  components: { MyBread, styleDirTree, styleDepTree },
  data() {
    return {
      insertFileGuid: "",
@@ -1058,8 +1087,8 @@
      let currentPerms = this.$store.state.currentPerms;
      let permsEntity = this.$store.state.permsEntity;
      permsEntity
          .filter((item) => item.perms == currentPerms)
          .map((item) => (this.btnStatus[item.tag.substr(1)] = true));
        .filter((item) => item.perms == currentPerms)
        .map((item) => (this.btnStatus[item.tag.substr(1)] = true));
    },
    filesReset() {
      // document.getElementById("insertFile").reset();
@@ -1217,27 +1246,27 @@
        cancelButtonText: "取消",
        type: "warning",
      })
          .then(async () => {
            const data = await deleteStyles({ids: std.toString()});
            if (data.code == 200) {
              this.$message({
                message: "删除成功!",
                type: "success",
              });
              this.getRoleTabelData();
            } else {
              this.$message({
                message: "删除失败!",
                type: "warning",
              });
            }
          })
          .catch(() => {
        .then(async () => {
          const data = await deleteStyles({ ids: std.toString() });
          if (data.code == 200) {
            this.$message({
              type: "info",
              message: "已取消删除",
              message: "删除成功!",
              type: "success",
            });
            this.getRoleTabelData();
          } else {
            this.$message({
              message: "删除失败!",
              type: "warning",
            });
          }
        })
        .catch(() => {
          this.$message({
            type: "info",
            message: "已取消删除",
          });
        });
    },
    showDirTree(res) {
      this.dirFlag = res;
@@ -1275,19 +1304,27 @@
      }
    },
    insertFromDataClose() {
      this.InsertFormdialog = false;
      this.insertform = {};
      this.insertFileGuid = "";
      this.insertViewGuid = "";
      this.filesReset();
      this.$confirm("关闭后无法保存,是否关闭?")
        .then((_) => {
          this.InsertFormdialog = false;
          this.insertform = {};
          this.insertFileGuid = "";
          this.insertViewGuid = "";
          this.filesReset();
        })
        .catch((_) => { });
    },
    handleClose() {
      this.InsertFormdialog = false;
      this.insertform = {
        fileGuid: null,
        viewGuid: null,
      };
      this.filesReset();
      this.$confirm("关闭后无法保存,是否关闭?")
        .then((_) => {
          this.InsertFormdialog = false;
          this.insertform = {
            fileGuid: null,
            viewGuid: null,
          };
          this.filesReset();
        })
        .catch((_) => { });
    },
    async insertFromData() {
      if (this.insertform.dirid == null || this.insertform.depid == null) {
@@ -1518,9 +1555,13 @@
    },
    removeUpdate() {
      this.upflag = false;
      this.dialogFormVisible = false;
      this.upform = {};
      this.$confirm("关闭后无法保存,是否关闭?")
        .then((_) => {
          this.upflag = false;
          this.dialogFormVisible = false;
          this.upform = {};
        })
        .catch((_) => { });
      // this.filesReset();
    },
    submitForm(formName) {
@@ -1545,19 +1586,27 @@
      this.itemdetail = row;
      this.itemdetail.createTime = this.formomentTime(
          this.itemdetail.createTime
        this.itemdetail.createTime
      );
      this.itemdetail.updateTime = this.formomentTime(
          this.itemdetail.updateTime
        this.itemdetail.updateTime
      );
      this.itemdetail.imageFile =
          BASE_URL + "/res/download?guid=" + row.viewGuid + "&token=" + token;
        BASE_URL + "/res/download?guid=" + row.viewGuid + "&token=" + token;
    },
    closeDetial() {
      this.showinfoBox = false;
      this.itemdetail = {};
    },
    handleDownload(index, row) {
      var token = getToken()
      var url = BASE_URL + "/res/download?token=" + token + "&guid=" + row.fileGuid;
      $("#downFrame").attr("src", url).click();
    },
    handleEdit(index, row) {
      this.upflag = true;
      this.dialogFormVisible = true;
@@ -1574,16 +1623,16 @@
        cancelButtonText: "取消",
        type: "warning",
      })
          .then(() => {
            DeletestStyle([row.id]);
            this.$message({
              type: "success",
              message: "删除成功!",
            });
            this.startFromData();
          })
          .catch(() => {
        .then(() => {
          DeletestStyle([row.id]);
          this.$message({
            type: "success",
            message: "删除成功!",
          });
          this.startFromData();
        })
        .catch(() => {
        });
    },
    // èŽ·å–å¤šé€‰
src/views/datamanage/versionManage.vue
@@ -1,14 +1,19 @@
<template>
  <div class="verSionBox">
    <My-bread
      :list="[
    <My-bread :list="[
        `${$t('dataManage.dataManage')}`,
        `${$t('dataManage.versionManage')}`,
      ]"
    ></My-bread>
      ]"></My-bread>
    <el-divider />
    <div class="inquire subpage_Div" ref="container">
      <el-form ref="ruleForm" :model="ruleForm" :inline="true">
    <div
      class="inquire subpage_Div"
      ref="container"
    >
      <el-form
        ref="ruleForm"
        :model="ruleForm"
        :inline="true"
      >
        <div class="flex_box">
          <div style="margin-right: auto">
            <el-form-item size="small">
@@ -50,7 +55,12 @@
              <el-input
                v-model="ruleForm.name"
                :placeholder="$t('shuJuGuanLi.lable5')"
              ><i slot="suffix" class="el-icon-search"  @click="onSubmit('ruleForm')" style="padding-right: 8px"></i></el-input>
              ><i
                  slot="suffix"
                  class="el-icon-search"
                  @click="onSubmit('ruleForm')"
                  style="padding-right: 8px"
                ></i></el-input>
            </el-form-item>
          </div>
          <div>
@@ -61,9 +71,8 @@
                @click="(InsertFormdialog = true), getSelectdirTab()"
                icon="el-icon-plus"
                size="small"
                >{{ $t("common.append") }}</el-button
              >
<!--              <el-button
              >{{ $t("common.append") }}</el-button>
              <!--              <el-button
                @click="onSubmit('ruleForm')"
                icon="el-icon-search"
                size="small"
@@ -75,8 +84,7 @@
                @click="resetForm('ruleForm')"
                icon="el-icon-delete"
                size="small"
                >{{ $t("common.empty") }}</el-button
              >
              >{{ $t("common.empty") }}</el-button>
            </el-form-item>
          </div>
        </div>
@@ -84,10 +92,14 @@
    </div>
    <div class="dividing-line"></div>
    <div class="table_box" :style="styleVar">
    <div
      class="table_box"
      :style="styleVar"
    >
      <el-table
        :data="tableData"
        style="width: 100%"
        border
        height="calc(100% - 57px)"
      >
        <el-table-column
@@ -96,7 +108,11 @@
          :label="$t('dataManage.vmobj.index')"
          width="70px"
        />
        <el-table-column align="center" prop="id" v-if="false" />
        <el-table-column
          align="center"
          prop="id"
          v-if="false"
        />
        <el-table-column
          align="center"
          prop="name"
@@ -134,7 +150,10 @@
          :label="$t('dataManage.vmobj.updateontime')"
          :formatter="formatTime"
        />
        <el-table-column min-width="150" :label="$t('common.operate')">
        <el-table-column
          min-width="150"
          :label="$t('common.operate')"
        >
          <template slot-scope="scope">
            <el-button
              v-if="btnStatus.update"
@@ -145,20 +164,21 @@
              type="warning"
              size="small"
              plain
              >{{ $t("common.update") }}</el-button
            >
            >{{ $t("common.update") }}</el-button>
            <el-button
              v-if="btnStatus.delete"
              @click="handleDelete(scope.$index, scope.row)"
              type="danger"
              size="small"
              plain
              >{{ $t("common.delete") }}</el-button
            >
            >{{ $t("common.delete") }}</el-button>
          </template>
        </el-table-column>
      </el-table>
      <div class="pagination_box" style="margin-top: 15px">
      <div
        class="pagination_box"
        style="margin-top: 15px"
      >
        <el-pagination
          @size-change="handleSizeChange"
          @current-change="handleCurrentChange"
@@ -175,68 +195,83 @@
    <el-dialog
      :title="$t('dataManage.vmobj.editVersion')"
      :visible.sync="dialogFormVisible"
      :before-close="handleClose"
    >
        <div style="height: 500px; overflow: auto">
      <el-form :model="upform" label-position="top">
        <el-form-item
          :label="$t('dataManage.vmobj.name')"
          :label-width="formLabelWidth"
      <div style="height: 500px; overflow: auto">
        <el-form
          :model="upform"
          label-position="top"
        >
          <el-input
            v-model="upform.name"
            autocomplete="off"
             style="width:85%"
          ></el-input>
        </el-form-item>
        <el-form-item
          :label="$t('dataManage.vmobj.catalogue')"
          :label-width="formLabelWidth"
        >
          <el-select
            :popper-append-to-body="false"
            v-model="upform.dirid"
            :placeholder="$t('shuJuGuanLi.pselect.select')"
             style="width:85%"
          <el-form-item
            :label="$t('dataManage.vmobj.name')"
            :label-width="formLabelWidth"
          >
            <el-option
              :value="upform.dirid"
              :label="upform.depName"
              style="height: auto"
            <el-input
              v-model="upform.name"
              autocomplete="off"
              style="width:85%"
            ></el-input>
          </el-form-item>
          <el-form-item
            :label="$t('dataManage.vmobj.catalogue')"
            :label-width="formLabelWidth"
          >
            <el-select
              :popper-append-to-body="false"
              v-model="upform.dirid"
              :placeholder="$t('shuJuGuanLi.pselect.select')"
              style="width:85%"
            >
              <el-tree
                ref="tree"
                :data="editcatalogOption"
                node-key="id"
                :props="props"
                @node-click="handlupCatalogChange"
              />
            </el-option>
          </el-select>
          <!-- <el-cascader
              <el-option
                :value="upform.dirid"
                :label="upform.depName"
                style="height: auto"
              >
                <el-tree
                  ref="tree"
                  :data="editcatalogOption"
                  node-key="id"
                  :props="props"
                  @node-click="handlupCatalogChange"
                />
              </el-option>
            </el-select>
            <!-- <el-cascader
            style="width: 300px"
            v-model="upform.dirid"
            :options="editcatalogOption"
            @change="upCatalogChange"
            :props="cascader"
          ></el-cascader> -->
        </el-form-item>
        <el-form-item
          :label="$t('dataManage.vmobj.describe')"
          :label-width="formLabelWidth"
        >
          <el-input
            v-model="upform.descr"
            autocomplete="off"
             style="width:85%"
          ></el-input>
        </el-form-item>
      </el-form>
        </div>
      <div slot="footer" type="info" class="dialog-footer">
        <el-button size="small" @click="editFromDataClose">{{
          </el-form-item>
          <el-form-item
            :label="$t('dataManage.vmobj.describe')"
            :label-width="formLabelWidth"
          >
            <el-input
              v-model="upform.descr"
              autocomplete="off"
              style="width:85%"
            ></el-input>
          </el-form-item>
        </el-form>
      </div>
      <div
        slot="footer"
        type="info"
        class="dialog-footer"
      >
        <el-button
          size="small"
          @click="editFromDataClose"
        >{{
          $t("common.close")
        }}</el-button>
        <el-button size="small" @click="editFromData" class="primary">{{
        <el-button
          size="small"
          @click="editFromData"
          class="primary"
        >{{
          $t("common.confirm")
        }}</el-button>
      </div>
@@ -245,69 +280,84 @@
    <el-dialog
      :title="$t('dataManage.vmobj.addVersion')"
      :visible.sync="InsertFormdialog"
      :before-close="handleCloseadd"
    >
    <div style="height: 500px; overflow: auto">
      <el-form :model="insertform" label-position="top">
        <el-form-item
          :label="$t('dataManage.vmobj.name')"
          :label-width="formLabelWidth"
      <div style="height: 500px; overflow: auto">
        <el-form
          :model="insertform"
          label-position="top"
        >
          <el-input
             style="width:85%"
            v-model="insertform.name"
            autocomplete="off"
          ></el-input>
        </el-form-item>
        <el-form-item
          :label="$t('dataManage.vmobj.catalogue')"
          :label-width="formLabelWidth"
        >
          <el-select
            :popper-append-to-body="false"
            v-model="insertform.path"
            placeholder="请选择"
            style="width:85%"
          <el-form-item
            :label="$t('dataManage.vmobj.name')"
            :label-width="formLabelWidth"
          >
            <el-option
              :value="insertform.path"
              :label="insertform.dirName"
              style="height: auto"
            <el-input
              style="width:85%"
              v-model="insertform.name"
              autocomplete="off"
            ></el-input>
          </el-form-item>
          <el-form-item
            :label="$t('dataManage.vmobj.catalogue')"
            :label-width="formLabelWidth"
          >
            <el-select
              :popper-append-to-body="false"
              v-model="insertform.dirName"
              placeholder="请选择"
              style="width:85%"
            >
              <el-tree
                ref="tree"
                :data="editcatalogOption"
                node-key="id"
                :props="props"
                @node-click="catalogChangeAdd"
              />
            </el-option>
          </el-select>
          <!-- <el-cascader
              <el-option
                :value="insertform.path"
                :label="insertform.dirName"
                style="height: auto"
              >
                <el-tree
                  ref="tree"
                  :data="editcatalogOption"
                  node-key="id"
                  :props="props"
                  @node-click="catalogChangeAdd"
                />
              </el-option>
            </el-select>
            <!-- <el-cascader
            style="width: 300px"
            v-model="insertform.path"
            :options="catalogOption"
            @change="catalogChange"
            :props="cascader"
          ></el-cascader> -->
        </el-form-item>
          </el-form-item>
        <el-form-item
          :label="$t('dataManage.vmobj.describe')"
          :label-width="formLabelWidth"
        >
          <el-input
             style="width:85%"
            v-model="insertform.descr"
            autocomplete="off"
          ></el-input>
        </el-form-item>
      </el-form>
    </div>
      <div slot="footer" class="dialog-footer">
        <el-button @click="insertFromDataClose" type="info" size="small">{{
          <el-form-item
            :label="$t('dataManage.vmobj.describe')"
            :label-width="formLabelWidth"
          >
            <el-input
              style="width:85%"
              v-model="insertform.descr"
              autocomplete="off"
            ></el-input>
          </el-form-item>
        </el-form>
      </div>
      <div
        slot="footer"
        class="dialog-footer"
      >
        <el-button
          @click="insertFromDataClose"
          type="info"
          size="small"
        >{{
          $t("common.close")
        }}</el-button>
        <el-button @click="insertFromData" class="primary" size="small">{{
        <el-button
          @click="insertFromData"
          class="primary"
          size="small"
        >{{
          $t("common.confirm")
        }}</el-button>
      </div>
@@ -503,7 +553,10 @@
      this.insertform.dirid = value;
    },
    catalogChangeAdd(data, node, nodeData) {
      this.$set(this.insertform, "path", data.id);
      this.insertform.path = data.id
      this.insertform.dirid = data.id
      // this.$set(this.insertform, "path", data.id);
      this.$set(this.insertform, "dirName", data.name);
    },
    upCatalogChange(val) {
@@ -523,7 +576,7 @@
        return;
      }
      this.companyOption = this.treeData(res.result);
      this.ruleForm.dirid = this.companyOption[0].id;
      // this.ruleForm.dirid = this.companyOption[0].id;
    },
    handleChange(data, node, nodeData) {
      this.$set(this.ruleForm, "dirid", data.id);
@@ -545,9 +598,9 @@
        return;
      }
      this.insertform.name = this.getYMD();
      this.insertform.path = 1;
      this.insertform.dirid = 1;
      this.upform.dirid == 1;
      // this.insertform.path = 1;
      // this.insertform.dirid = 1;
      // this.upform.dirid == 1;
      this.catalogOption = this.treeData(res.result);
      this.editcatalogOption = this.treeData(res.result);
    },
@@ -581,7 +634,7 @@
    },
    resetForm() {
      this.ruleForm = {};
      this.ruleForm.dirid = this.companyOption[0].id;
      // this.ruleForm.dirid = this.companyOption[0].id;
      this.$store.state.verCateNode = {};
      this.$bus.$emit("clearTressLabel", true);
      this.getRoleTabelData();
@@ -630,8 +683,15 @@
      }
    },
    editFromDataClose() {
      this.dialogFormVisible = false;
      this.upform = {};
      this.$confirm("关闭后无法保存,是否关闭?")
        .then((_) => {
          this.dialogFormVisible = false
          this.upform = {};
          this.getRoleTabelData();
        })
        .catch((_) => { });
      // this.dialogFormVisible = false;
      // this.upform = {};
    },
    async editFromData() {
      if (this.upform.depName == null) {
@@ -658,10 +718,18 @@
      }
    },
    insertFromDataClose() {
      this.InsertFormdialog = false;
      this.insertform = {};
      this.$confirm("关闭后无法保存,是否关闭?")
        .then((_) => {
          this.InsertFormdialog = false
          this.insertform = {};
          this.getRoleTabelData();
        })
        .catch((_) => { });
      // this.InsertFormdialog = false;
      // this.insertform = {};
    },
    async insertFromData() {
      if (this.insertform.dirid == null) {
        this.$message({
          message: "请选择角色所属单位",
@@ -669,6 +737,7 @@
        });
        return;
      }
      const data = await insertVersion(this.insertform);
      if (data.code == 200) {
        this.InsertFormdialog = false;
@@ -725,11 +794,27 @@
      this.dialogFormVisible = true;
      this.upform = row;
    },
    handleClose() {
      this.$confirm("关闭后无法保存,是否关闭?")
        .then((_) => {
          this.dialogFormVisible = false
          this.getRoleTabelData();
        })
        .catch((_) => { });
    },
    handleCloseadd() {
      this.$confirm("关闭后无法保存,是否关闭?")
        .then((_) => {
          this.InsertFormdialog = false
          this.getRoleTabelData();
        })
        .catch((_) => { });
    },
  },
  watch: {
    pathId: {
      immediate: true,
      handler(val) {},
      handler(val) { },
    },
  },
};
src/views/exportMap/index.vue
@@ -174,6 +174,7 @@
        ref="singleTable"
        :data="exportable"
        style="width: 100%"
        border
        height="200"
        @selection-change="handleSelectionChange"
      >
src/views/maintenance/blackwhiteList.vue
@@ -84,6 +84,7 @@
        <div class="table_box subpage_Div" :style="styleVar">
          <el-table
            :data="BTableData"
            border
            @selection-change="blackSelectionChange"
            style="width: 100%"
            height="calc(100% - 45px)"
@@ -231,6 +232,7 @@
        <div class="table_box subpage_Div" :style="styleVar">
          <el-table
            :data="WTableData"
            border
            @selection-change="blackSelectionChange"
            style="width: 100%"
            height="calc(100% - 45px)"
@@ -308,6 +310,7 @@
    <el-dialog
      :title="$t('common.append')"
      :visible.sync="InsertFormdialog"
      :before-close="handleClose"
    >
      <el-form ref="insertform" :model="insertform" label-position="top">
@@ -356,6 +359,7 @@
      :title="$t('common.update')"
      style="overflow: hidden"
      :visible.sync="updateFormdialog"
      :before-close="handleCloseEdit"
    >
      <el-form ref="editfrom" :model="editfrom" label-position="top">
        <el-form-item :label-width="formLabelWidth" label="IP地址">
@@ -469,10 +473,16 @@
      });
    },
    editFromDataClose() {
      this.updateFormdialog = false;
      this.$nextTick(() => {
        this.editForm = JSON.parse(this.initialForm);
      });
      this.$confirm("关闭后无法保存,是否关闭?")
        .then((_) => {
          this.updateFormdialog = false;
          this.$nextTick(() => {
            this.editForm = JSON.parse(this.initialForm);
          });
          this.BGetList();
          this.WGetList();
        })
        .catch((_) => { });
    },
    queryBlackInfo() {
      let searchData = {
@@ -600,8 +610,12 @@
      this.InsertFormdialog = true;
    },
    insertFromDataClose() {
      this.InsertFormdialog = false;
      this.insertform = {};
      this.$confirm("关闭后无法保存,是否关闭?")
        .then((_) => {
          this.InsertFormdialog = false;
          this.insertform = {};
        })
        .catch((_) => { });
    },
    async insertFromData() {
      var count = await blacklistSelectCount(this.insertform);
@@ -713,6 +727,20 @@
          break;
      }
    },
    handleClose() {
      this.$confirm("关闭后无法保存,是否关闭?")
        .then((_) => {
          this.InsertFormdialog = false
        })
        .catch((_) => { });
    },
    handleCloseEdit() {
      this.$confirm("关闭后无法保存,是否关闭?")
        .then((_) => {
          this.updateFormdialog = false
        })
        .catch((_) => { });
    },
  },
  mounted() {
    window.addEventListener("resize", this.onResize);
src/views/maintenance/downlog.vue
@@ -122,6 +122,7 @@
      <el-table
        :data="tableData"
        style="width: 100%"
        border
        height="calc(100% - 45px)"
      >
        <el-table-column
src/views/maintenance/empowerController.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,321 @@
<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">
        <!-- <menu-settings v-if="setMenuFlag == 'menuSettings'"></menu-settings>
        <user-management v-if="setMenuFlag == 'userInfoManage'"></user-management>
        <org-manage v-if="setMenuFlag == 'orgManage'"></org-manage>
        <resource-manage v-if="setMenuFlag == 'resourceManage'"></resource-manage>
        <role-manage v-if="setMenuFlag == 'roleManage'"></role-manage>
        <authority-manage v-if="setMenuFlag == 'authorityManage'"></authority-manage> -->
        <user-role-authorization v-if="setMenuFlag == 'userRoleAuthorization'"></user-role-authorization>
        <menu-role-authorization v-if="setMenuFlag == 'menuRoleAuthorization'"></menu-role-authorization>
        <role-menu-authorization v-if="setMenuFlag == 'roleMenuAuthorization'">
        </role-menu-authorization>
        <!-- <role-res-authorization v-if="setMenuFlag == 'roleResAuthorization'"></role-res-authorization>
        <log-log v-if="setMenuFlag == 'logLog'"> </log-log>
        <operation-log v-if="setMenuFlag == 'operationLog'"></operation-log>
        <eventlog-manage v-if="setMenuFlag == 'eventlogManage'"></eventlog-manage>
        <tokentool v-if="setMenuFlag == 'tokentool'"></tokentool>
        <blackwhite-list v-if="setMenuFlag == 'blackwhiteList'"></blackwhite-list>
        <database-monitoring v-if="setMenuFlag == 'dataIfream'"></database-monitoring>
        <system-monitoring v-if="setMenuFlag == 'systemMonitoring'"></system-monitoring>
        <parameter-configuration v-if="setMenuFlag == 'parameterConfiguration'"></parameter-configuration>
        <downlog v-if="setMenuFlag == 'downlog'"></downlog>
        <template-manage v-if="setMenuFlag == 'templateManage'"></template-manage>
        <data-statistics v-if="setMenuFlag == 'dataStatistics'"></data-statistics> -->
      </div>
    </div>
  </div>
</template>
<script>
import menuSettings from '@/views/maintenance/menuSettings.vue'; //菜单管理
import userManagement from '@/views/maintenance/userManagement.vue'; //用户管理
import orgManage from '@/views/userManage/orgManage.vue'; //单位管理
import resourceManage from '@/views/userManage/resourceManage.vue'; //资源管理
import roleManage from '@/views/userManage/roleManage.vue'; //角色管理
import authorityManage from '@/views/userManage/authorityManage.vue'; //权限管理
import userRoleAuthorization from '@/views/AuthorizationManagement/userRoleAuthorization.vue'; //用户角色授权
import menuRoleAuthorization from '@/views/AuthorizationManagement/menuRoleAuthorization.vue'; //菜单权限授权
import roleMenuAuthorization from '@/views/AuthorizationManagement/roleMenuAuthorization.vue'; //角色菜单授权
import roleResAuthorization from '@/views/AuthorizationManagement/roleResAuthorization.vue'; //角色资源授权
import logLog from '@/views/maintenance/logLog.vue'; //登录日志
import operationLog from '@/views/maintenance/operationLog.vue'; //操作日志
import eventlogManage from '@/views/maintenance/eventlogManage.vue'; //资源日志
import tokentool from '@/views/maintenance/tokentool.vue'; //令牌管理
import blackwhiteList from '@/views/maintenance/blackwhiteList.vue'; //黑白名单
import databaseMonitoring from '@/views/maintenance/databaseMonitoring.vue'; //数据库监控
import systemMonitoring from '@/views/maintenance/systemMonitoring.vue'; //系统监控
import parameterConfiguration from '@/views/maintenance/parameterConfiguration.vue'; //系统配置
import downlog from '@/views/maintenance/downlog.vue'; //下载日志
import templateManage from '@/views/userManage/templateManage.vue'//模板管理
import { selectMenuRecursive, queryMenuTree, getPerms, sign_insertOpLog } from '../../api/api';
import customElMenu from '../../components/customElMenu.vue';
import dataStatistics from '@/views/datamanage/dataStatistics.vue'; //数据统计
export default {
  components: {
    menuSettings,
    userManagement,
    orgManage,
    resourceManage,
    roleManage,
    authorityManage,
    userRoleAuthorization,
    menuRoleAuthorization,
    roleMenuAuthorization,
    roleResAuthorization,
    logLog,
    operationLog,
    eventlogManage,
    tokentool,
    blackwhiteList,
    databaseMonitoring,
    systemMonitoring,
    parameterConfiguration,
    customElMenu,
    downlog,
    templateManage,
    dataStatistics
  },
  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',
      m1: null,
      menuId: 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 getCookies() {
      var boolean = this.getTimeCookies();
      if (boolean != true) {
        this.$router.push('/login');
        return;
      }
      if (this.$store.state.permsEntity.length == 0) {
        const data = await getPerms();
        this.$store.state.permsEntity = data.result;
      }
      var store = this.menuList[0];
      this.m1 = store.cnName;
      this.setViewController(store);
    },
    getTimeCookies() {
      var time1 = new Date(JSON.parse(localStorage.getItem('LFToken')).time);
      var time2 = new Date();
      if (time2 > time1) {
        return false;
      } else {
        return true;
      }
    },
    //获取树
    async getTreeData() {
      const data = await queryMenuTree();
      let menuLists = data.result.filter((value) => {
        return value.url == '/empowerController';
      });
      this.menuId = 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;
          })
            .filter(value => {
              return value.isShow == 1;
            });
          this.menuList = this.treeData(menuList);
          this.getCookies();
          const hanleselectmochaitmo = sessionStorage.getItem('hanleselectmochaitmo')
          if (hanleselectmochaitmo) {
            this.$nextTick(function () {
              this.handleselecttwo(JSON.parse(hanleselectmochaitmo).url, JSON.parse(hanleselectmochaitmo))
              this.setViewController(JSON.parse(hanleselectmochaitmo))
            })
          }
          //
        } else {
          alert('暂无菜单栏数据');
        }
      } else {
        console.log('接口报错');
      }
      // this.treeList = this.treeData(data.result);
    },
    async signInsertOpLog(m1, m2) {
      var obj = {
        m1: m1,
        m2: m2,
      }
      // const data = await sign_insertOpLog(obj);
    },
    setViewController(res) {
      if (res == null) {
        return;
      }
      if (res.children != null) {
        this.setViewController(res.children[0]);
      } else {
        this.$store.state.currentPerms = res.perms;
        this.signInsertOpLog(this.m1, res.cnName)
        this.setMenuFlag = res.url;
        this.activeIndex = res.url;
      }
    },
    treeData(source) {
      let cloneData = JSON.parse(JSON.stringify(source)); // å¯¹æºæ•°æ®æ·±åº¦å…‹éš†
      // 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 == this.menuId; // è¿”回一级菜单
        });
      } else {
        alert('暂无菜单栏数据');
      }
    },
    handleselect(index, indexPath, e) {
      this.getTimeCookies();
      this.signInsertOpLog(this.m1, e.$attrs.perms.cnName)
      const a = JSON.stringify(e.$attrs.perms)
      sessionStorage.setItem('hanleselectmochaitmo', 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;
    },
    handleselecttwo(index, e) {
      this.getTimeCookies();
      const a = JSON.stringify(e)
      sessionStorage.setItem('hanleselectmochaitmo', 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/maintenance/eventlogManage.vue
@@ -119,6 +119,7 @@
      <el-table
        :data="tableData"
        style="width: 100%"
        border
        height="calc(100% - 45px)"
      >
        <el-table-column
src/views/maintenance/logLog.vue
@@ -92,7 +92,7 @@
    <div class="dividing-line"></div>
    <!-- è¡¨æ ¼æ˜¾ç¤º -->
    <div class="table_box subpage_Div" :style="styleVar">
      <el-table :data="tableData" style="width: 100%" height="calc(100% - 45px)">
      <el-table :data="tableData" style="width: 100%" height="calc(100% - 45px)" border>
        <el-table-column
          width="150"
          type="index"
src/views/maintenance/menuSettings.vue
@@ -217,6 +217,7 @@
    <el-dialog
      :title="$t('common.append')"
      :visible.sync="dialogFormVisible"
      :before-close="handleClose"
    >
        <div style="height: 500px; overflow: auto">
      <el-form
@@ -603,11 +604,15 @@
      this.ruleForm.level = data.level + 1;
    },
    resetForm(formName) {
      this.dialogFormVisible = false;
      this.$nextTick(() => {
        this.$refs[formName].resetFields();
        this.ruleForm = {};
      });
      this.$confirm("关闭后无法保存,是否关闭?")
        .then((_) => {
          this.dialogFormVisible = false;
          this.$nextTick(() => {
            this.$refs[formName].resetFields();
            this.ruleForm = {};
          });
        })
        .catch((_) => { });
    },
    submitForm(formName) {
      this.$nextTick(() => {
@@ -859,6 +864,13 @@
        }
      }
    },
    handleClose() {
      this.$confirm("关闭后无法保存,是否关闭?")
        .then((_) => {
          this.dialogFormVisible = false
        })
        .catch((_) => { });
    },
  },
  mounted() {
    this.getMenuTree();
src/views/maintenance/mochaitmo.vue
@@ -42,6 +42,7 @@
        <parameter-configuration v-if="setMenuFlag == 'parameterConfiguration'"></parameter-configuration>
        <downlog v-if="setMenuFlag == 'downlog'"></downlog>
        <template-manage v-if="setMenuFlag == 'templateManage'"></template-manage>
        <data-statistics v-if="setMenuFlag == 'dataStatistics'"></data-statistics>
      </div>
    </div>
@@ -72,6 +73,7 @@
import templateManage from '@/views/userManage/templateManage.vue'//模板管理
import { selectMenuRecursive, queryMenuTree, getPerms, sign_insertOpLog } from '../../api/api';
import customElMenu from '../../components/customElMenu.vue';
import dataStatistics from '@/views/datamanage/dataStatistics.vue'; //数据统计
export default {
  components: {
@@ -96,7 +98,7 @@
    customElMenu,
    downlog,
    templateManage,
    dataStatistics
  },
  data() {
    return {
@@ -208,9 +210,9 @@
          let menuList = res.result.filter((value) => {
            return value.type == 1;
          })
          .filter(value => {
            return value.isShow == 1;
          });
            .filter(value => {
              return value.isShow == 1;
            });
          this.menuList = this.treeData(menuList);
          this.getCookies();
          const hanleselectmochaitmo = sessionStorage.getItem('hanleselectmochaitmo')
@@ -235,7 +237,7 @@
        m1: m1,
        m2: m2,
      }
      const data = await sign_insertOpLog(obj);
      // const data = await sign_insertOpLog(obj);
    },
@@ -275,7 +277,7 @@
    handleselect(index, indexPath, e) {
      this.getTimeCookies();
      this.signInsertOpLog(this.m1, e.$attrs.perms.cnName)
      const a = JSON.stringify(e.$attrs.perms)
      sessionStorage.setItem('hanleselectmochaitmo', a)
src/views/maintenance/operationLog.vue
@@ -120,6 +120,7 @@
      <el-table
        :data="tableData"
        style="width: 100%"
        border
        height="calc(100% - 45px)"
      >
        <!-- <el-table-column type="selection" width="55" /> -->
src/views/maintenance/opexController.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,322 @@
<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">
        <!-- <menu-settings v-if="setMenuFlag == 'menuSettings'"></menu-settings>
        <user-management v-if="setMenuFlag == 'userInfoManage'"></user-management>
        <org-manage v-if="setMenuFlag == 'orgManage'"></org-manage>
        <resource-manage v-if="setMenuFlag == 'resourceManage'"></resource-manage>
        <role-manage v-if="setMenuFlag == 'roleManage'"></role-manage>
        <authority-manage v-if="setMenuFlag == 'authorityManage'"></authority-manage>
        <user-role-authorization v-if="setMenuFlag == 'userRoleAuthorization'"></user-role-authorization>
        <menu-role-authorization v-if="setMenuFlag == 'menuRoleAuthorization'"></menu-role-authorization>
        <role-menu-authorization v-if="setMenuFlag == 'roleMenuAuthorization'">
        </role-menu-authorization>
        <role-res-authorization v-if="setMenuFlag == 'roleResAuthorization'"></role-res-authorization> -->
        <log-log v-if="setMenuFlag == 'logLog'"> </log-log>
        <operation-log v-if="setMenuFlag == 'operationLog'"></operation-log>
        <eventlog-manage v-if="setMenuFlag == 'eventlogManage'"></eventlog-manage>
        <tokentool v-if="setMenuFlag == 'tokentool'"></tokentool>
        <blackwhite-list v-if="setMenuFlag == 'blackwhiteList'"></blackwhite-list>
        <database-monitoring v-if="setMenuFlag == 'dataIfream'"></database-monitoring>
        <system-monitoring v-if="setMenuFlag == 'systemMonitoring'"></system-monitoring>
        <parameter-configuration v-if="setMenuFlag == 'parameterConfiguration'"></parameter-configuration>
        <downlog v-if="setMenuFlag == 'downlog'"></downlog>
        <!-- <template-manage v-if="setMenuFlag == 'templateManage'"></template-manage> -->
        <data-statistics v-if="setMenuFlag == 'dataStatistics'"></data-statistics>
      </div>
    </div>
  </div>
</template>
<script>
import menuSettings from '@/views/maintenance/menuSettings.vue'; //菜单管理
import userManagement from '@/views/maintenance/userManagement.vue'; //用户管理
import orgManage from '@/views/userManage/orgManage.vue'; //单位管理
import resourceManage from '@/views/userManage/resourceManage.vue'; //资源管理
import roleManage from '@/views/userManage/roleManage.vue'; //角色管理
import authorityManage from '@/views/userManage/authorityManage.vue'; //权限管理
import userRoleAuthorization from '@/views/AuthorizationManagement/userRoleAuthorization.vue'; //用户角色授权
import menuRoleAuthorization from '@/views/AuthorizationManagement/menuRoleAuthorization.vue'; //菜单权限授权
import roleMenuAuthorization from '@/views/AuthorizationManagement/roleMenuAuthorization.vue'; //角色菜单授权
import roleResAuthorization from '@/views/AuthorizationManagement/roleResAuthorization.vue'; //角色资源授权
import logLog from '@/views/maintenance/logLog.vue'; //登录日志
import operationLog from '@/views/maintenance/operationLog.vue'; //操作日志
import eventlogManage from '@/views/maintenance/eventlogManage.vue'; //资源日志
import tokentool from '@/views/maintenance/tokentool.vue'; //令牌管理
import blackwhiteList from '@/views/maintenance/blackwhiteList.vue'; //黑白名单
import databaseMonitoring from '@/views/maintenance/databaseMonitoring.vue'; //数据库监控
import systemMonitoring from '@/views/maintenance/systemMonitoring.vue'; //系统监控
import parameterConfiguration from '@/views/maintenance/parameterConfiguration.vue'; //系统配置
import downlog from '@/views/maintenance/downlog.vue'; //下载日志
import templateManage from '@/views/userManage/templateManage.vue'//模板管理
import { selectMenuRecursive, queryMenuTree, getPerms, sign_insertOpLog } from '../../api/api';
import customElMenu from '../../components/customElMenu.vue';
import dataStatistics from '@/views/datamanage/dataStatistics.vue'; //数据统计
export default {
  components: {
    menuSettings,
    userManagement,
    orgManage,
    resourceManage,
    roleManage,
    authorityManage,
    userRoleAuthorization,
    menuRoleAuthorization,
    roleMenuAuthorization,
    roleResAuthorization,
    logLog,
    operationLog,
    eventlogManage,
    tokentool,
    blackwhiteList,
    databaseMonitoring,
    systemMonitoring,
    parameterConfiguration,
    customElMenu,
    downlog,
    templateManage,
    dataStatistics
  },
  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',
      m1: null,
      menuId: 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 getCookies() {
      var boolean = this.getTimeCookies();
      if (boolean != true) {
        this.$router.push('/login');
        return;
      }
      if (this.$store.state.permsEntity.length == 0) {
        const data = await getPerms();
        this.$store.state.permsEntity = data.result;
      }
      var store = this.menuList[0];
      this.m1 = store.cnName;
      this.setViewController(store);
    },
    getTimeCookies() {
      var time1 = new Date(JSON.parse(localStorage.getItem('LFToken')).time);
      var time2 = new Date();
      if (time2 > time1) {
        return false;
      } else {
        return true;
      }
    },
    //获取树
    async getTreeData() {
      const data = await queryMenuTree();
      let menuLists = data.result.filter((value) => {
        return value.url == '/opexController';
      });
      this.menuId = 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;
          })
            .filter(value => {
              return value.isShow == 1;
            });
          this.menuList = this.treeData(menuList);
          this.getCookies();
          const hanleselectmochaitmo = sessionStorage.getItem('hanleselectmochaitmo')
          if (hanleselectmochaitmo) {
            this.$nextTick(function () {
              this.handleselecttwo(JSON.parse(hanleselectmochaitmo).url, JSON.parse(hanleselectmochaitmo))
              this.setViewController(JSON.parse(hanleselectmochaitmo))
            })
          }
          //
        } else {
          alert('暂无菜单栏数据');
        }
      } else {
        console.log('接口报错');
      }
      // this.treeList = this.treeData(data.result);
    },
    async signInsertOpLog(m1, m2) {
      var obj = {
        m1: m1,
        m2: m2,
      }
      // const data = await sign_insertOpLog(obj);
    },
    setViewController(res) {
      if (res == null) {
        return;
      }
      if (res.children != null) {
        this.setViewController(res.children[0]);
      } else {
        this.$store.state.currentPerms = res.perms;
        this.signInsertOpLog(this.m1, res.cnName)
        this.setMenuFlag = res.url;
        this.activeIndex = res.url;
      }
    },
    treeData(source) {
      let cloneData = JSON.parse(JSON.stringify(source)); // å¯¹æºæ•°æ®æ·±åº¦å…‹éš†
      // 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 == this.menuId; // è¿”回一级菜单
        });
      } else {
        alert('暂无菜单栏数据');
      }
    },
    handleselect(index, indexPath, e) {
      this.getTimeCookies();
      this.signInsertOpLog(this.m1, e.$attrs.perms.cnName)
      const a = JSON.stringify(e.$attrs.perms)
      sessionStorage.setItem('hanleselectmochaitmo', 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;
    },
    handleselecttwo(index, e) {
      this.getTimeCookies();
      const a = JSON.stringify(e)
      sessionStorage.setItem('hanleselectmochaitmo', 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/maintenance/parameterConfiguration.vue
@@ -1,17 +1,19 @@
<template>
  <div class="parameterConfiguration_box">
    <My-bread
      :list="[
  <div class="parameterConfiguration_box box_div">
    <My-bread :list="[
        `${$t('operatManage.operatManage')}`,
        `${$t('operatManage.systemLayout')}`,
      ]"
    ></My-bread>
      ]"></My-bread>
    <el-divider />
    <div class="table_box" :style="styleVar">
    <div
      class="table_box"
      :style="styleVar"
    >
      <el-table
        ref="filterTable"
        :data="tableData"
        style="width: 100%"
        border
        height="calc(100% - 45px)"
      >
        <el-table-column
@@ -62,12 +64,14 @@
              type="warning"
              plain
              size="small"
              >{{ $t("common.edit") }}</el-button
            >
            >{{ $t("common.edit") }}</el-button>
          </template>
        </el-table-column>
      </el-table>
      <div class="pagination_box" style="margin-top: 10px">
      <div
        class="pagination_box"
        style="margin-top: 10px"
      >
        <el-pagination
          @size-change="handleSizeChange"
          @current-change="handleCurrentChange"
@@ -83,55 +87,72 @@
    <el-dialog
      :title="$t('operatManage.sysLayOutObj.editSysLayOut')"
       top="2vh"
      top="2vh"
      :visible.sync="EditFormdialog"
      :before-close="EditFromDataClose"
    >
     <div style="height: 500px; overflow: auto">
      <el-form :model="upform" label-position="top">
        <el-form-item
          :label="$t('operatManage.sysLayOutObj.name')"
          :label-width="formLabelWidth"
      <div style="height: 500px; overflow: auto">
        <el-form
          :model="upform"
          label-position="top"
        >
          <label class="boxlabel">{{ upform.name }}</label>
        </el-form-item>
        <el-form-item
          :label="$t('operatManage.sysLayOutObj.cvalue')"
          :label-width="formLabelWidth"
        >
          <el-input v-model="upform.cvalue" autocomplete="off"  style="width:85%"></el-input>
        </el-form-item>
        <el-form-item
          :label="$t('operatManage.sysLayOutObj.dvalue')"
          :label-width="formLabelWidth"
        >
          <label class="boxlabel">{{ upform.dvalue }}</label>
        </el-form-item>
        <el-form-item
          :label="$t('operatManage.sysLayOutObj.minValue')"
          :label-width="formLabelWidth"
        >
          <label class="boxlabel">{{ upform.minValue }}</label>
        </el-form-item>
        <el-form-item
          :label="$t('operatManage.sysLayOutObj.maxValue')"
          :label-width="formLabelWidth"
        >
          <label class="boxlabel">{{ upform.maxValue }}</label>
        </el-form-item>
        <el-form-item
          :label="$t('operatManage.sysLayOutObj.descr')"
          :label-width="formLabelWidth"
        >
          <label class="boxlabel">{{ upform.descr }}</label>
        </el-form-item>
      </el-form>
     </div>
      <div slot="footer" class="dialog-footer">
        <el-button size="small" @click="EditFromDataClose">{{
          <el-form-item
            :label="$t('operatManage.sysLayOutObj.name')"
            :label-width="formLabelWidth"
          >
            <label class="boxlabel">{{ upform.name }}</label>
          </el-form-item>
          <el-form-item
            :label="$t('operatManage.sysLayOutObj.cvalue')"
            :label-width="formLabelWidth"
          >
            <el-input
              v-model="upform.cvalue"
              autocomplete="off"
              style="width:85%"
            ></el-input>
          </el-form-item>
          <el-form-item
            :label="$t('operatManage.sysLayOutObj.dvalue')"
            :label-width="formLabelWidth"
          >
            <label class="boxlabel">{{ upform.dvalue }}</label>
          </el-form-item>
          <el-form-item
            :label="$t('operatManage.sysLayOutObj.minValue')"
            :label-width="formLabelWidth"
          >
            <label class="boxlabel">{{ upform.minValue }}</label>
          </el-form-item>
          <el-form-item
            :label="$t('operatManage.sysLayOutObj.maxValue')"
            :label-width="formLabelWidth"
          >
            <label class="boxlabel">{{ upform.maxValue }}</label>
          </el-form-item>
          <el-form-item
            :label="$t('operatManage.sysLayOutObj.descr')"
            :label-width="formLabelWidth"
          >
            <label class="boxlabel">{{ upform.descr }}</label>
          </el-form-item>
        </el-form>
      </div>
      <div
        slot="footer"
        class="dialog-footer"
      >
        <el-button
          size="small"
          @click="EditFromDataClose"
        >{{
          $t("common.close")
        }}</el-button>
        <el-button @click="EditFromData" size="small" type="primary">{{
        <el-button
          @click="EditFromData"
          size="small"
          type="primary"
        >{{
          $t("common.confirm")
        }}</el-button>
      </div>
@@ -186,8 +207,13 @@
      this.upform = row;
    },
    EditFromDataClose() {
      this.EditFormdialog = false;
      this.upform = {};
      this.$confirm("关闭后无法保存,是否关闭?")
        .then((_) => {
          this.EditFormdialog = false;
          this.upform = {};
          this.getRoleTabelData();
        })
        .catch((_) => { });
    },
    async EditFromData() {
      if (
@@ -260,10 +286,10 @@
<style lang="less" scoped>
//@import url(); å¼•入公共cssç±»
.parameterConfiguration_box {
  height: 98%;
  width: 98%;
  padding: 0.5% 1%;
  height: calc(100% - 20px);
  width: calc(100% - 20px);
  padding: 10px;
  position: relative;
  .parameterConfiguration {
    padding-top: 10px;
    padding-bottom: 10px;
src/views/maintenance/systemController.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,322 @@
<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">
        <menu-settings v-if="setMenuFlag == 'menuSettings'"></menu-settings>
        <user-management v-if="setMenuFlag == 'userInfoManage'"></user-management>
        <org-manage v-if="setMenuFlag == 'orgManage'"></org-manage>
        <resource-manage v-if="setMenuFlag == 'resourceManage'"></resource-manage>
        <role-manage v-if="setMenuFlag == 'roleManage'"></role-manage>
        <authority-manage v-if="setMenuFlag == 'authorityManage'"></authority-manage>
        <template-manage v-if="setMenuFlag == 'templateManage'"></template-manage>
        <!-- <user-role-authorization v-if="setMenuFlag == 'userRoleAuthorization'"></user-role-authorization>
        <menu-role-authorization v-if="setMenuFlag == 'menuRoleAuthorization'"></menu-role-authorization>
        <role-menu-authorization v-if="setMenuFlag == 'roleMenuAuthorization'">
        </role-menu-authorization>
        <role-res-authorization v-if="setMenuFlag == 'roleResAuthorization'"></role-res-authorization> -->
        <!-- <log-log v-if="setMenuFlag == 'logLog'"> </log-log>
        <operation-log v-if="setMenuFlag == 'operationLog'"></operation-log>
        <eventlog-manage v-if="setMenuFlag == 'eventlogManage'"></eventlog-manage>
        <tokentool v-if="setMenuFlag == 'tokentool'"></tokentool>
        <blackwhite-list v-if="setMenuFlag == 'blackwhiteList'"></blackwhite-list>
        <database-monitoring v-if="setMenuFlag == 'dataIfream'"></database-monitoring>
        <system-monitoring v-if="setMenuFlag == 'systemMonitoring'"></system-monitoring>
        <parameter-configuration v-if="setMenuFlag == 'parameterConfiguration'"></parameter-configuration>
        <downlog v-if="setMenuFlag == 'downlog'"></downlog>
        <data-statistics v-if="setMenuFlag == 'dataStatistics'"></data-statistics> -->
      </div>
    </div>
  </div>
</template>
<script>
import menuSettings from '@/views/maintenance/menuSettings.vue'; //菜单管理
import userManagement from '@/views/maintenance/userManagement.vue'; //用户管理
import orgManage from '@/views/userManage/orgManage.vue'; //单位管理
import resourceManage from '@/views/userManage/resourceManage.vue'; //资源管理
import roleManage from '@/views/userManage/roleManage.vue'; //角色管理
import authorityManage from '@/views/userManage/authorityManage.vue'; //权限管理
import userRoleAuthorization from '@/views/AuthorizationManagement/userRoleAuthorization.vue'; //用户角色授权
import menuRoleAuthorization from '@/views/AuthorizationManagement/menuRoleAuthorization.vue'; //菜单权限授权
import roleMenuAuthorization from '@/views/AuthorizationManagement/roleMenuAuthorization.vue'; //角色菜单授权
import roleResAuthorization from '@/views/AuthorizationManagement/roleResAuthorization.vue'; //角色资源授权
import logLog from '@/views/maintenance/logLog.vue'; //登录日志
import operationLog from '@/views/maintenance/operationLog.vue'; //操作日志
import eventlogManage from '@/views/maintenance/eventlogManage.vue'; //资源日志
import tokentool from '@/views/maintenance/tokentool.vue'; //令牌管理
import blackwhiteList from '@/views/maintenance/blackwhiteList.vue'; //黑白名单
import databaseMonitoring from '@/views/maintenance/databaseMonitoring.vue'; //数据库监控
import systemMonitoring from '@/views/maintenance/systemMonitoring.vue'; //系统监控
import parameterConfiguration from '@/views/maintenance/parameterConfiguration.vue'; //系统配置
import downlog from '@/views/maintenance/downlog.vue'; //下载日志
import templateManage from '@/views/userManage/templateManage.vue'//模板管理
import { selectMenuRecursive, queryMenuTree, getPerms, sign_insertOpLog } from '../../api/api';
import customElMenu from '../../components/customElMenu.vue';
import dataStatistics from '@/views/datamanage/dataStatistics.vue'; //数据统计
export default {
  components: {
    menuSettings,
    userManagement,
    orgManage,
    resourceManage,
    roleManage,
    authorityManage,
    userRoleAuthorization,
    menuRoleAuthorization,
    roleMenuAuthorization,
    roleResAuthorization,
    logLog,
    operationLog,
    eventlogManage,
    tokentool,
    blackwhiteList,
    databaseMonitoring,
    systemMonitoring,
    parameterConfiguration,
    customElMenu,
    downlog,
    templateManage,
    dataStatistics
  },
  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',
      m1: null,
      menuId: 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 getCookies() {
      var boolean = this.getTimeCookies();
      if (boolean != true) {
        this.$router.push('/login');
        return;
      }
      if (this.$store.state.permsEntity.length == 0) {
        const data = await getPerms();
        this.$store.state.permsEntity = data.result;
      }
      var store = this.menuList[0];
      this.m1 = store.cnName;
      this.setViewController(store);
    },
    getTimeCookies() {
      var time1 = new Date(JSON.parse(localStorage.getItem('LFToken')).time);
      var time2 = new Date();
      if (time2 > time1) {
        return false;
      } else {
        return true;
      }
    },
    //获取树
    async getTreeData() {
      const data = await queryMenuTree();
      let menuLists = data.result.filter((value) => {
        return value.url == '/systemController';
      });
      this.menuId = 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;
          })
            .filter(value => {
              return value.isShow == 1;
            });
          this.menuList = this.treeData(menuList);
          this.getCookies();
          const hanleselectmochaitmo = sessionStorage.getItem('hanleselectmochaitmo')
          if (hanleselectmochaitmo) {
            this.$nextTick(function () {
              this.handleselecttwo(JSON.parse(hanleselectmochaitmo).url, JSON.parse(hanleselectmochaitmo))
              this.setViewController(JSON.parse(hanleselectmochaitmo))
            })
          }
          //
        } else {
          alert('暂无菜单栏数据');
        }
      } else {
        console.log('接口报错');
      }
      // this.treeList = this.treeData(data.result);
    },
    async signInsertOpLog(m1, m2) {
      var obj = {
        m1: m1,
        m2: m2,
      }
      // const data = await sign_insertOpLog(obj);
    },
    setViewController(res) {
      if (res == null) {
        return;
      }
      if (res.children != null) {
        this.setViewController(res.children[0]);
      } else {
        this.$store.state.currentPerms = res.perms;
        this.signInsertOpLog(this.m1, res.cnName)
        this.setMenuFlag = res.url;
        this.activeIndex = res.url;
      }
    },
    treeData(source) {
      let cloneData = JSON.parse(JSON.stringify(source)); // å¯¹æºæ•°æ®æ·±åº¦å…‹éš†
      // 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 == this.menuId; // è¿”回一级菜单
        });
      } else {
        alert('暂无菜单栏数据');
      }
    },
    handleselect(index, indexPath, e) {
      this.getTimeCookies();
      this.signInsertOpLog(this.m1, e.$attrs.perms.cnName)
      const a = JSON.stringify(e.$attrs.perms)
      sessionStorage.setItem('hanleselectmochaitmo', 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;
    },
    handleselecttwo(index, e) {
      this.getTimeCookies();
      const a = JSON.stringify(e)
      sessionStorage.setItem('hanleselectmochaitmo', 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/maintenance/tokentool.vue
@@ -86,6 +86,7 @@
        ref="filterTable"
        :data="tableData"
        style="width: 100%"
        border
        height="calc(100% - 45px)"
      >
        <el-table-column type="selection" width="55" />
@@ -97,12 +98,11 @@
        />
        <el-table-column
          prop="token"
          :label="$t('operatManage.tokentoolObj.token')"
        />
        <el-table-column
          prop="duration"
          width="120"
          :label="$t('operatManage.tokentoolObj.duration')"
        />
        <el-table-column
@@ -190,6 +190,7 @@
    <el-dialog
      :title="$t('operatManage.tokentoolObj.addToken')"
      :visible.sync="InsertFormdialog"
      :before-close="handleClose"
    >
        <div style="height: 500px; overflow: auto">
      <el-form ref="formData1" :model="insertform" label-position="top">
@@ -258,6 +259,7 @@
    <el-dialog
      :title="$t('operatManage.tokentoolObj.editToken')"
      :visible.sync="EditFormdialog"
      :before-close="handleCloseEdit"
    >
     <div style="height: 500px; overflow: auto">
      <el-form ref="formData1" :model="insertform" label-position="top">
@@ -463,8 +465,13 @@
      // }
    },
    editFromDataClose() {
      this.EditFormdialog = false;
      this.upform = {};
      this.$confirm("关闭后无法保存,是否关闭?")
        .then((_) => {
          this.EditFormdialog = false;
          this.upform = {};
          this.getRoleTabelData();
        })
        .catch((_) => { });
    },
    async editFromData() {
      this.upform.type = parseInt(this.upform.edit);
@@ -500,8 +507,12 @@
      this.multipleSelection = val;
    },
    insertFromDataClose() {
      this.InsertFormdialog = false;
      this.insertform = {};
      this.$confirm("关闭后无法保存,是否关闭?")
        .then((_) => {
          this.InsertFormdialog = false;
          this.insertform = {};
        })
        .catch((_) => { });
    },
    async insertFromData() {
      if (
@@ -643,6 +654,21 @@
      }
      return moment(parseInt(date)).format("YYYY-MM-DD HH:mm:ss");
    },
    handleClose() {
      this.$confirm("关闭后无法保存,是否关闭?")
        .then((_) => {
          this.InsertFormdialog = false
        })
        .catch((_) => { });
    },
    handleCloseEdit() {
      this.$confirm("关闭后无法保存,是否关闭?")
        .then((_) => {
          this.EditFormdialog = false
          this.getRoleTabelData();
        })
        .catch((_) => { });
    },
  },
};
</script>
src/views/maintenance/userManagement.vue
@@ -123,6 +123,7 @@
        ref="filterTable"
        :data="tableData"
        style="width: 100%"
        border
        class="table_height"
        height="calc(100% - 45px)"
        @selection-change="handleSelectionChange"
src/views/userManage/authorityManage.vue
@@ -59,6 +59,7 @@
        :data="tableData"
        style="width: 100%"
        fit
        border
        height="calc(100% - 45px)"
        @selection-change="handleSelectionChange"
      >
@@ -241,6 +242,7 @@
      :title="$t('userManage.userInfoObj.addPermission')"
      style="overflow: hidden"
      :visible.sync="InsertFormdialog"
      :before-close="handleClose"
    >
      <el-form :model="insertform" label-position="top">
@@ -488,8 +490,13 @@
      this.getRoleTabelData();
    },
    EditFromDataClose() {
      this.EditFormdialog = false;
      this.upform = {};
      this.$confirm("关闭后无法保存,是否关闭?")
        .then((_) => {
          this.EditFormdialog = false;
          this.upform = {};
          this.getRoleTabelData();
        })
        .catch((_) => { });
    },
    async EditFromData() {
      const data = await updateAuth(this.upform);
@@ -529,8 +536,12 @@
      this.getRoleTabelData();
    },
    insertFromDataClose() {
      this.InsertFormdialog = false;
      this.insertform = {};
      this.$confirm("关闭后无法保存,是否关闭?")
        .then((_) => {
          this.InsertFormdialog = false;
          this.insertform = {};
        })
        .catch((_) => { });
    },
    async insertFromData() {
      const data = await insertAuth(this.insertform);
@@ -576,6 +587,13 @@
      this.dialogTitle = row.name;
      this.isTransfer = true;
    },
    handleClose() {
      this.$confirm("关闭后无法保存,是否关闭?")
        .then((_) => {
          this.InsertFormdialog = false
        })
        .catch((_) => { });
    },
  },
};
</script>
src/views/userManage/orgManage.vue
@@ -223,6 +223,7 @@
    <el-dialog
      :title="$t('common.append')"
      :visible.sync="dialogFormVisible"
      :before-close="handleClose"
    >
     <div style="height: 500px; overflow: auto">
      <el-form
@@ -588,11 +589,15 @@
      // console.log(node);
    },
    resetForm(formName) {
      this.dialogFormVisible = false;
      this.$nextTick(() => {
        this.ruleForm = {};
        this.$refs[formName].resetFields();
      });
      this.$confirm("关闭后无法保存,是否关闭?")
        .then((_) => {
          this.dialogFormVisible = false;
          this.$nextTick(() => {
            this.ruleForm = {};
            this.$refs[formName].resetFields();
          });
        })
        .catch((_) => { });
    },
    submitForm(formName) {
      this.$refs[formName].validate((valid) => {
@@ -850,6 +855,13 @@
        }
      }
    },
    handleClose() {
      this.$confirm("关闭后无法保存,是否关闭?")
        .then((_) => {
          this.dialogFormVisible = false
        })
        .catch((_) => { });
    },
  },
  mounted() {
    this.getMenuTree();
src/views/userManage/resourceManage.vue
@@ -56,6 +56,7 @@
        :data="tableData"
        style="width: 100%"
        fit
        border
        @selection-change="handleSelectionChange"
         height="calc(100% - 45px)"
      >
src/views/userManage/roleManage.vue
@@ -158,6 +158,7 @@
      <el-table
        :data="tableData"
        style="width: 100%"
        border
        height="calc(100% - 45px)"
        @selection-change="handleSelectionChange"
      >
@@ -273,7 +274,7 @@
    <el-dialog
      :title="$t('userManage.RM.insertRole')"
      :before-close="handleClose"
      style="overflow: hidden"
      :visible.sync="InsertFormdialog"
    >
@@ -384,6 +385,7 @@
    <el-dialog
      :title="$t('userManage.RM.updateRole')"
      :visible.sync="UpdateFormdialog"
      :before-close="handleCloseEdit"
    >
        <div style="height: 500px; overflow: auto">
      <el-form :model="updateform" label-position="top">
@@ -792,8 +794,12 @@
      });
    },
    insertFromClose() {
      this.InsertFormdialog = false;
      this.insertform = {};
      this.$confirm("关闭后无法保存,是否关闭?")
        .then((_) => {
          this.InsertFormdialog = false;
          this.insertform = {};
        })
        .catch((_) => { });
    },
    async insertFromData() {
      if (this.insertform.depValue == null) {
@@ -820,8 +826,13 @@
      }
    },
    updateFromClose() {
      this.UpdateFormdialog = false;
      this.updateform = {};
      this.$confirm("关闭后无法保存,是否关闭?")
        .then((_) => {
          this.UpdateFormdialog = false;
          this.updateform = {};
          this.getRoleTabelData();
        })
        .catch((_) => { });
    },
    async updateFromData() {
      if (this.updateform.depValue == null) {
@@ -923,6 +934,21 @@
          break;
      }
    },
    handleClose() {
      this.$confirm("关闭后无法保存,是否关闭?")
        .then((_) => {
          this.InsertFormdialog = false
        })
        .catch((_) => { });
    },
    handleCloseEdit() {
      this.$confirm("关闭后无法保存,是否关闭?")
        .then((_) => {
          this.UpdateFormdialog = false
          this.getRoleTabelData();
        })
        .catch((_) => { });
    },
  },
  beforeDestroy() {
    this.timer && clearTimeout(this.timer);
src/views/userManage/templateManage.vue
@@ -72,6 +72,7 @@
      <el-table
        :data="tableData"
        style="width: 100%"
        border
        @selection-change="handleSelectionChange"
        height="calc(100% - 45px)"
      >
@@ -178,7 +179,6 @@
      "
      :visible.sync="dialogVisible"
      :before-close="handleClose"
      :show-close="false"
    >
      <div style="height: 500px; overflow: auto">
        <el-form
@@ -492,7 +492,7 @@
        };
      }
      this.$confirm("确认关闭?", blackTheme)
      this.$confirm("关闭后无法保存,是否关闭?", blackTheme)
        .then((_) => {
          this.closeInsertData();
        })
src/views/userManage/userInfoManage.vue
@@ -926,7 +926,7 @@
    },
    //关闭弹出框
    handleClose(done) {
      this.$confirm("确认关闭?")
      this.$confirm("关闭后无法保存,是否关闭?")
        .then((_) => {
          this.editForm = {
            uid: "",