管道基础大数据平台系统开发-【前端】-新系統界面
王旭
2023-05-09 93c0e388bc3fe955c223e1b23a1f4257b1d60d11
适配提交
已修改14个文件
339 ■■■■■ 文件已修改
package.json 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/lang/en.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/lang/zh.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/Screen/bottom.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/Screen/left.vue 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/Screen/right.vue 161 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/Screen/top.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/chart/ProjectCategory.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/chart/ServiceType.vue 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/login.vue 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/verificationCode.vue 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main.js 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/datamanage/catalogueManage.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
vue.config.js 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
package.json
@@ -12,6 +12,7 @@
    "@jiaminghi/data-view": "^2.10.0",
    "@terraformer/wkt": "^2.1.2",
    "@turf/turf": "^6.5.0",
    "amfe-flexible": "^2.2.1",
    "animate.css": "^4.1.1",
    "aws-sdk": "^2.963.0",
    "axios": "^0.21.1",
@@ -56,7 +57,8 @@
    "less-loader": "^5.0.0",
    "lib-flexible": "^0.3.2",
    "lint-staged": "^9.5.0",
    "postcss-pxtorem": "^5.1.1",
    "postcss-px-to-viewport": "^1.1.1",
    "postcss-pxtorem": "^5.0.0",
    "prettier": "^2.2.1",
    "vue-particles": "^1.0.9",
    "vue-template-compiler": "^2.6.11"
src/assets/lang/en.js
@@ -66,6 +66,7 @@
  dataManage: {
    dataManage: 'Data Manage',
    catalogueManage: 'Directory management',
    projectManagement: 'Project Management',
    dataUpdata: 'dataUpdata',
    datawarehousing: 'Data warehousing',
    rangeManage: 'Range management',
src/assets/lang/zh.js
@@ -65,6 +65,7 @@
  dataManage: {
    dataManage: '数据管理',
    catalogueManage: '目录管理',
    projectManagement: '项目管理',
    dataUpdata: '数据上传',
    datawarehousing: '数据入库',
    rangeManage: '值域管理',
src/components/Screen/bottom.vue
@@ -604,7 +604,7 @@
      background: url(~@/assets/img/Screen/centerbtn.png);
      background-size: 100% 100%;
      background-repeat: no-repeat;
      font-size: 1rem;
      font-size: 16px;
      display: flex;
      align-items: center;
      justify-content: center;
src/components/Screen/left.vue
@@ -11,21 +11,21 @@
      v-if="currentDisplay == '大屏' && ChartDisplay"
    >
      <div
        class="current1"
        class="current1 current1-1"
        id="leftCurrent1"
      >
        <div class="aside-title">数据申请次数</div>
        <count-data-apply></count-data-apply>
      </div>
      <div
        class="current1"
        class="current1 current1-2"
        id="leftCurrent2"
      >
        <div class="aside-title">用户访问量</div>
        <service-type></service-type>
      </div>
      <div
        class="current1"
        class="current1 current1-3"
        id="leftCurrent3"
      >
        <div class="aside-title">项目存储信息</div>
@@ -753,4 +753,16 @@
    }
  }
}
@media (max-width: 1400px) {
  .current .leftContainer .current1-1 {
    height: 28%;
  }
  .current .leftContainer .current1-2 {
     height: 42%;
  }
  .current .leftContainer .current1-3 {
   height: 28%;
  }
}
</style>
src/components/Screen/right.vue
@@ -1,27 +1,21 @@
<template>
  <div class="current">
    <div
      class="rightContainer"
      v-if="currentDisplay == '大屏' && ChartDisplay"
    >
      <div class="current1">
    <div class="rightContainer" v-if="currentDisplay == '大屏' && ChartDisplay">
      <div class="current1 current1-1">
        <div class="aside-title">项目统计</div>
        <project-category></project-category>
      </div>
      <div class="current1">
      <div class="current1 current1-2">
        <div class="aside-title">数据统计</div>
        <visit-count></visit-count>
      </div>
      <div class="current1">
      <div class="current1 current1-3">
        <div class="aside-title">服务访问次数</div>
        <Service-Get></Service-Get>
      </div>
    </div>
    <!-- 全球、全国项目 -->
    <div
      class="rightContainer"
      v-if="currentDisplay == '项目'"
    >
    <div class="rightContainer" v-if="currentDisplay == '项目'">
      <div class="current1">
        <div class="aside-title"></div>
        <!-- <country-dimension-bar ref="barRef"></country-dimension-bar> -->
@@ -37,10 +31,7 @@
          v-if="currentProject == '全球项目'"
          ref="pieRef"
        ></country-dimension-pie>
        <province-dimension-pie
          v-else
          ref="pieRef"
        ></province-dimension-pie>
        <province-dimension-pie v-else ref="pieRef"></province-dimension-pie>
      </div>
      <div class="current1">
        <div class="aside-title">数据使用情况</div>
@@ -51,10 +42,7 @@
      </div>
    </div>
    <!-- 全国、全球管网 -->
    <div
      class="rightContainer"
      v-if="currentDisplay == '管网'"
    >
    <div class="rightContainer" v-if="currentDisplay == '管网'">
      <div class="current1">
        <div class="aside-title">站场座数</div>
        <!-- <country-dimension-bar ref="barRef"></country-dimension-bar> -->
@@ -79,10 +67,7 @@
      </div>
    </div>
    <!-- 单个工程 -->
    <div
      class="rightContainer"
      v-if="currentDisplay == '工程'"
    >
    <div class="rightContainer" v-if="currentDisplay == '工程'">
      <div class="current1">
        <div class="aside-title">数据存储量</div>
        <base-line-chart
@@ -101,10 +86,7 @@
      </div>
      <div class="current1">
        <div class="aside-title">管道条数</div>
        <div
          class="content"
          style="height: 30px"
        >
        <div class="content" style="height: 30px">
          <div class="header">
            <div>格式</div>
            <div>数量</div>
@@ -115,35 +97,32 @@
    </div>
    <div class="rightarrow">
      <img
        :src="RightImg"
        @click="ChangeRight"
      />
      <img :src="RightImg" @click="ChangeRight" />
    </div>
  </div>
</template>
<script>
import echart11 from "@/components/echart11.vue"
import echart12 from "@/components/echart12.vue"
import echart13 from "@/components/echart13.vue"
import FileFormat from "@/components/chart/FileFormat.vue"
import ProjectCategory from "../chart/ProjectCategory.vue"
import CountryDimensionBar from "../chart/CountryDimensionBar.vue"
import CountryDimensionPie from "../chart/CountryDimensionPie.vue"
import ProvinceDimensionBar from "../chart/CountryProvinceBar.vue"
import ProvinceDimensionPie from "../chart/CountryProvincePie.vue"
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 echart11 from "@/components/echart11.vue";
import echart12 from "@/components/echart12.vue";
import echart13 from "@/components/echart13.vue";
import FileFormat from "@/components/chart/FileFormat.vue";
import ProjectCategory from "../chart/ProjectCategory.vue";
import CountryDimensionBar from "../chart/CountryDimensionBar.vue";
import CountryDimensionPie from "../chart/CountryDimensionPie.vue";
import ProvinceDimensionBar from "../chart/CountryProvinceBar.vue";
import ProvinceDimensionPie from "../chart/CountryProvincePie.vue";
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"
} from "@/api/screen.js";
export default {
  components: {
@@ -249,44 +228,44 @@
        showValue: true,
      },
      params: {},
    }
    };
  },
  created() {
    this.getZhPipeStations()
    this.getCountDownloads()
    this.getZhPipeStations();
    this.getCountDownloads();
  },
  mounted() {
    this.OpenLeftInit()
    this.$bus.$on("changeProject", name => {
    this.OpenLeftInit();
    this.$bus.$on("changeProject", (name) => {
      if (name.includes("全球管网") || name.includes("全国管网")) {
        this.currentDisplay = "管网"
        this.currentDisplay = "管网";
      } else if (name.includes("全球项目") || name.includes("全国项目")) {
        this.currentDisplay = "项目"
        this.currentDisplay = "项目";
      } else {
        this.currentDisplay = "工程"
        this.currentDisplay = "工程";
      }
      this.currentProject = name
    })
    this.$bus.$on("changeProjectCode", code => {
      this.currentProject = name;
    });
    this.$bus.$on("changeProjectCode", (code) => {
      this.params = {
        projectCode: code,
      }
    })
      };
    });
    this.$bus.$on("closeLeftAndRightMenu", (res) => {
      this.ChartDisplay = res
      this.ChartDisplay = res;
      this.ChangeRight();
    })
    });
  },
  methods: {
    ChangeRight() {
      if (this.leftMessage == "init") {
        if (this.ChartDisplay) {
          this.RightImg = require("../../assets/img/Screen/rightArrow.png")
          this.RightImg = require("../../assets/img/Screen/rightArrow.png");
        } else {
          this.RightImg = require("../../assets/img/Screen/leftArrow.png")
          this.RightImg = require("../../assets/img/Screen/leftArrow.png");
        }
        this.ChartDisplay = !this.ChartDisplay
        this.ChartDisplay = !this.ChartDisplay;
      }
      // if (this.leftMessage == "projectree") {
@@ -299,14 +278,14 @@
      // }
      // this.ChartDisplay = !this.ChartDisplay
      this.$parent.ChangeWidth("right")
      this.$parent.ChangeWidth("right");
    },
    //打开大屏左侧界面
    OpenLeftInit() {
      this.currentDisplay = "大屏"
      this.ChartDisplay = true
      this.CourtyDisplay = false
      this.leftMessage = "init"
      this.currentDisplay = "大屏";
      this.ChartDisplay = true;
      this.CourtyDisplay = false;
      this.leftMessage = "init";
      // this.OpenLeftInitChart();
      // this.$parent.ChangeWidth("leftTree")
    },
@@ -319,46 +298,46 @@
    //   this.$parent.ChangeWidth("leftTree")
    // },
    async getZhPipeStations() {
      const res = await countZhPipeStations()
      const res = await countZhPipeStations();
      if (res.code == 200) {
        const data = res.result
        this.pieconfig.data = res.result.map(item => {
        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 => {
        };
        this.config.data = res.result.map((item) => {
          return {
            name: item.输送介质,
            value: item.管道数量,
          }
        })
          };
        });
        this.config = {
          ...this.config,
        }
        };
      }
    },
    async getCountDownloads() {
      const res = await countDownloads()
      const res = await countDownloads();
      if (res.code == 200) {
        this.barConfig.data = res.result.map(item => {
        this.barConfig.data = res.result.map((item) => {
          return {
            name: item.typename,
            value: item.count,
          }
        })
          };
        });
        this.barConfig = {
          ...this.barConfig,
        }
        };
      }
    },
  },
}
};
</script>
<style lang="less">
.current {
@@ -412,6 +391,7 @@
      background-size: 100% 100%;
      background-repeat: no-repeat;
    }
  }
  .content {
    width: 100%;
@@ -429,4 +409,15 @@
    }
  }
}
@media (max-width: 1400px) {
  .current .rightContainer .current1-1 {
   height: 42%;
  }
  .current .rightContainer .current1-2 {
     height: 28%;
  }
  .current .rightContainer .current1-3 {
   height: 28%;
  }
}
</style>
src/components/Screen/top.vue
@@ -158,7 +158,7 @@
    }
    span {
      color: #b3c8e3;
      font-size: 1rem;
      font-size: 16px;
      letter-spacing: 1px;
    }
  }
@@ -218,7 +218,7 @@
    }
    span {
      color: #b3c8e3;
      font-size: 1rem;
      font-size: 16px;
      letter-spacing: 1px;
    }
  }
src/components/chart/ProjectCategory.vue
@@ -100,9 +100,11 @@
      }
      .num {
        color: #839ecb;
         font-size: 12px;
      }
      .name {
        color: #fff;
         font-size: 12px;
      }
      .bar {
src/components/chart/ServiceType.vue
@@ -128,7 +128,7 @@
            fontWeight: 400,
            fontFamily: "YouSheBiaoTiHei",
          },
          x: "20%",
          x: "center",
          y: "40%",
        },
        // tooltip: {
@@ -139,9 +139,9 @@
        legend: {
          data: dataPie,
          icon: "vertical",
          right: "1%",
          top: "2%",
          orient: "vertical",
          left: "2%",
          top: "1%",
          orient: "horizontal",
          itemGap: 5,
          itemWidth: 12,
          itemHeight: 3,
@@ -165,7 +165,7 @@
          left: "1%", // 与容器左侧的距离
          right: "1%", // 与容器右侧的距离
          top: "1%", // 与容器顶部的距离
          bottom: "5%", // 与容器底部的距离
          bottom: "1%", // 与容器底部的距离
          containLabel: true
        },
        series: [
@@ -174,7 +174,7 @@
            type: "pie",
            clockWise: false, //顺时加载
            hoverAnimation: false, //鼠标移入变大
            center: ["30%", "50%"],
            center: ["50%", "51%"],
            radius: ["60%", "65%"],
            tooltip: {
              show: false,
@@ -191,7 +191,7 @@
            type: "pie",
            color: "#5F6D86",
            selectedMode: "single",
            center: ["30%", "50%"],
            center: ["50%", "51%"],
            radius: ["73%", "74%"],
            hoverAnimation: false,
            label: {
src/components/login.vue
@@ -26,10 +26,7 @@
      ></iframe>
    </div>
    <div class="title_img">
      <img
        src="../assets/img/lg_03.png"
        alt=""
      />
      <img src="../assets/img/lg_03.png" alt="" />
    </div>
    <div class="login">
      <div class="login_title">
@@ -49,10 +46,7 @@
            size="meddle"
            autocomplete="off"
          >
            <i
              slot="prefix"
              class="el-icon-user"
            ></i>
            <i slot="prefix" class="el-icon-user"></i>
          </el-input>
        </el-form-item>
@@ -64,10 +58,7 @@
            class="nobr"
            autocomplete="off"
          >
            <i
              slot="prefix"
              class="el-icon-lock"
            ></i>
            <i slot="prefix" class="el-icon-lock"></i>
          </el-input>
        </el-form-item>
@@ -82,43 +73,36 @@
            </el-form-item>
          </el-col>
          <el-col
            :span="6"
            align="right"
          >
          <el-col :span="6" align="right">
            <validCode
              v-model="validCode"
              ref="refresh"
              style="margin-left:16px"
              @sendData="getCode"
            ></validCode>
          </el-col>
        </el-form-item>
        <el-form-item>
          <img
            src="../assets/img/zhengshu.png"
            alt=""
          /><span style="color: black">证书安装与添加信任站点</span>
          <img src="../assets/img/zhengshu.png" alt="" /><span
            style="color: black"
            >证书安装与添加信任站点</span
          >
        </el-form-item>
        <el-form-item>
          <img
            src="../assets/img/document.png"
            alt=""
          /><span style="color: black">使用帮助文档</span>
          <img src="../assets/img/document.png" alt="" /><span
            style="color: black"
            >使用帮助文档</span
          >
        </el-form-item>
        <el-form-item>
          <el-button
            type="primary"
            class="nobr"
            style="
              width: 384px;
              height: 50px;
              background: #3b4d6e;
              border-radius: 5px;
            "
            class="nobr loginbtn"
            style=""
            :loading="loading"
            @click="submitForm('loginForm')"
          >登录</el-button>
            >登录</el-button
          >
        </el-form-item>
      </el-form>
    </div>
@@ -380,4 +364,10 @@
  border: 0;
  padding: 0 !important;
}
.loginbtn {
  width: 384px;
  height: 50px;
  background: #3b4d6e;
  border-radius: 5px;
}
</style>
src/components/verificationCode.vue
@@ -1,5 +1,13 @@
<!--
 * @Author: 王旭 1377869194@qq.com
 * @Date: 2023-05-08 13:52:20
 * @LastEditors: 王旭 1377869194@qq.com
 * @LastEditTime: 2023-05-08 15:17:22
 * @FilePath: \LFWEB_NEW\src\components\verificationCode.vue
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
<template>
  <div class="ValidCode disabled-select" :style="`width:${width}; height:${height}`" @click="refreshCode">
  <div class="ValidCode disabled-select" :style="``" @click="refreshCode">
    <span v-for="(item, index) in codeList" :key="index" :style="getStyle(item)">{{item.code}}</span>
  </div>
</template>
@@ -69,9 +77,13 @@
<style scoped lang="less">
  .ValidCode{
    width: 100px;
    height: 48px;
    display: flex;
    justify-content: center;
    align-items: center;
    margin-left: 16px;
    cursor: pointer;
    span{
      display: inline-block;
src/main.js
@@ -1,3 +1,11 @@
/*
 * @Author: 王旭 1377869194@qq.com
 * @Date: 2023-05-08 13:52:20
 * @LastEditors: 王旭 1377869194@qq.com
 * @LastEditTime: 2023-05-08 14:19:08
 * @FilePath: \LFWEB_NEW\src\main.js
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
import Vue from 'vue';
import App from './App.vue';
import router from './router';
@@ -23,7 +31,8 @@
import elDragDialog from './utils/diaLog.js'
Vue.directive('el-drag-dialog', elDragDialog);
ElementUI.Dialog.props.closeOnClickModal.default = false;
//适配
import "amfe-flexible/index"
Vue.use(directive)
Vue.use(dataV)
src/views/datamanage/catalogueManage.vue
@@ -2,7 +2,7 @@
  <div class="subpage_Box">
    <My-bread :list="[
          `${$t('dataManage.dataManage')}`,
          `${$t('dataManage.catalogueManage')}`,
          `${$t('dataManage.projectManagement')}`,
        ]"></My-bread>
    <el-divider />
    <div class="mainBox">
vue.config.js
@@ -1,3 +1,11 @@
/*
 * @Author: 王旭 1377869194@qq.com
 * @Date: 2023-05-08 13:52:20
 * @LastEditors: 王旭 1377869194@qq.com
 * @LastEditTime: 2023-05-08 14:17:30
 * @FilePath: \LFWEB_NEW\vue.config.js
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
const path = require("path")
const resolve = dir => path.join(__dirname, dir)
module.exports = {
@@ -16,4 +24,45 @@
      },
    },
  },
  css: {
    loaderOptions: {
      postcss: {
        plugins: [
          require("postcss-px-to-viewport")({
            unitToConvert: "px", // 需要转换的单位
            viewportWidth: 1920, // 视口宽度,等同于设计稿宽度
            unitPrecision: 5, // 精确到小数点后几位
            /**
             * 将会被转换的css属性列表,
             * 设置为 * 表示全部,如:['*']
             * 在属性的前面或后面设置*,如:['*position*'],*position* 表示所有包含 position 的属性,如 background-position-y
             * 设置为 !xx 表示不匹配xx的那些属性,如:['!letter-spacing'] 表示除了letter-spacing 属性之外的其他属性
             * 还可以同时使用 ! 和 * ,如['!font*'] 表示除了font-size、 font-weight ...这些之外属性之外的其他属性名头部是‘font’的属性
             * */
            propList: ["*"],
            viewportUnit: "vw", // 需要转换成为的单位
            fontViewportUnit: "vw", // 需要转换称为的字体单位
            /**
             * 需要忽略的选择器,即这些选择器对应的属性值不做单位转换
             * 设置为字符串,转换器在做转换时会忽略那些选择器中包含该字符串的选择器,如:['body']会匹配到 .body-class,也就意味着.body-class对应的样式设置不会被转换
             * 设置为正则表达式,在做转换前会先校验选择器是否匹配该正则,如果匹配,则不进行转换,如[/^body$/]会匹配到 body 但是不会匹配到 .body
             */
            selectorBlackList: [],
            minPixelValue: 1, // 最小的像素单位值
            mediaQuery: false, // 是否转换媒体查询中设置的属性值
            replace: true, // 替换包含vw的规则,而不是添加回退
            /**
             * 忽略一些文件,如'node_modules'
             * 设置为正则表达式,将会忽略匹配该正则的所有文件
             * 如果设置为数组,那么该数组内的元素都必须是正则表达式
             */
            exclude: [],
            landscape: false, // 是否自动加入 @media (orientation: landscape),其中的属性值是通过横屏宽度来转换的
            landscapeUnit: "vw", // 横屏单位
            landscapeWidth: 1334, // 横屏宽度
          }),
        ],
      },
    },
  },
}