Prechádzať zdrojové kódy

feat: 首页&日报页面初始化

cfofpp 6 mesiacov pred
rodič
commit
bd3d38cb11
28 zmenil súbory, kde vykonal 1054 pridanie a 80 odobranie
  1. 1 1
      .env.development
  2. 30 2
      src/router/index.js
  3. 116 0
      src/views/home/components/box1 copy/index.vue
  4. 85 0
      src/views/home/components/box1/index.vue
  5. 234 0
      src/views/home/components/map/index.vue
  6. 0 0
      src/views/home/components/map/南岳区.json
  7. 0 0
      src/views/home/components/map/常宁市.json
  8. 0 0
      src/views/home/components/map/珠晖区.json
  9. 0 0
      src/views/home/components/map/石鼓区.json
  10. 0 0
      src/views/home/components/map/祁东县.json
  11. 0 0
      src/views/home/components/map/耒阳市.json
  12. 0 0
      src/views/home/components/map/蒸湘区.json
  13. 0 0
      src/views/home/components/map/衡东县.json
  14. 0 0
      src/views/home/components/map/衡南县.json
  15. 0 0
      src/views/home/components/map/衡山县.json
  16. 0 0
      src/views/home/components/map/衡阳县.json
  17. 0 0
      src/views/home/components/map/衡阳市.json
  18. 0 0
      src/views/home/components/map/雁峰区.json
  19. 56 0
      src/views/home/components/points-ranking/index.vue
  20. 98 0
      src/views/home/index.vue
  21. 61 0
      src/views/secure/daily-newspaper/components/execution-status-table.vue
  22. 56 0
      src/views/secure/daily-newspaper/components/other-safety-situations-table.vue
  23. 53 0
      src/views/secure/daily-newspaper/components/personnel-duty-status-table.vue
  24. 69 0
      src/views/secure/daily-newspaper/components/tomorrow-plan-situation-table.vue
  25. 61 0
      src/views/secure/daily-newspaper/components/violation-situation-table.vue
  26. 51 0
      src/views/secure/daily-newspaper/index.vue
  27. 7 0
      src/views/secure/weekly-report/index.vue
  28. 76 77
      vue.config.js

+ 1 - 1
.env.development

@@ -5,7 +5,7 @@ VUE_APP_TITLE = 财务资金管控应用
 ENV = 'development'
 
 # 若依管理系统/开发环境
-VUE_APP_BASE_API = '/dev-api'
+VUE_APP_BASE_API = '/prod-api'
 
 # 路由懒加载
 VUE_CLI_BABEL_TRANSPILE_MODULES = true

+ 30 - 2
src/router/index.js

@@ -101,7 +101,7 @@ export const constantRoutes = [
   },
   {
     path: "/commission",
-    name: 'commission',
+    name: "commission",
     hidden: true,
     component: Layout,
     children: [
@@ -109,7 +109,35 @@ export const constantRoutes = [
         path: "/commission/index",
         component: () => import("@/views/commission/index"),
         name: "commission",
-        meta: { title: "我的任务", },
+        meta: { title: "我的任务" },
+      },
+    ],
+  },
+  {
+    path: "/home",
+    name: "home",
+    hidden: true,
+    component: Layout,
+    children: [
+      {
+        path: "/home/index",
+        component: () => import("@/views/home/index"),
+        name: "home",
+        meta: { title: "首页" },
+      },
+    ],
+  },
+  {
+    path: "/secure",
+    name: "secure",
+    hidden: true,
+    component: Layout,
+    children: [
+      {
+        path: "/secure/daily-newspaper",
+        component: () => import("@/views/secure/daily-newspaper/index"),
+        name: "home",
+        meta: { title: "日报" },
       },
     ],
   },

+ 116 - 0
src/views/home/components/box1 copy/index.vue

@@ -0,0 +1,116 @@
+<template>
+  <div>
+    <div
+      class="border-l-4 border-t-0 border-r-0 border-b-0 border-light-blue-500 border-solid pl-2 text-[#000]"
+    >
+      可靠性完成情况
+    </div>
+    <div
+      ref="barChart2"
+      id="barChart2"
+      :style="{ height: height, width: width }"
+    ></div>
+  </div>
+</template>
+
+<script>
+import * as echarts from "echarts";
+export default {
+  props: {
+    chartOptions: {
+      type: Object,
+      default: () => {},
+    },
+    width: {
+      type: String,
+      default: "100%",
+    },
+    height: {
+      type: String,
+      default: "200px",
+    },
+  },
+  mounted() {
+    this.initEcharts();
+  },
+  watch: {
+    chartOptions: {
+      handler(newVal, oldVal) {
+        this.initEcharts();
+      },
+      // 这里的deep是深度监听,因为我们传递过来的是一个对象
+      deep: true,
+    },
+  },
+  methods: {
+    initEcharts() {
+      let myChart = echarts.getInstanceByDom(
+        document.getElementById("barChart2")
+      );
+      if (myChart == null) {
+        myChart = echarts.init(document.getElementById("barChart2"));
+      }
+
+      // 指定图表的配置项和数据
+      var option = {
+        tooltip: {
+          trigger: "item",
+        },
+        legend: {
+          top: "5%",
+          left: "center",
+        },
+        grid: {
+          left: "2%", //图表距离容器左侧多少距离
+          right: "2%", //图表距离容器右侧侧多少距离
+          bottom: "0%", //图表距离容器上面多少距离
+          top: "2%", //图表距离容器下面多少距离
+          containLabel: true,
+        },
+        series: [
+          {
+            name: "Access From",
+            type: "pie",
+            center: ["50%", "60%"],
+            radius: ["40%", "70%"],
+            avoidLabelOverlap: false,
+            label: {
+              show: false,
+              position: "center",
+            },
+            emphasis: {
+              label: {
+                show: true,
+                fontSize: 40,
+                fontWeight: "bold",
+              },
+            },
+            labelLine: {
+              show: false,
+            },
+            data: [
+              { value: 1048, name: "Search Engine" },
+              { value: 735, name: "Direct" },
+              { value: 580, name: "Email" },
+              { value: 484, name: "Union Ads" },
+              { value: 300, name: "Video Ads" },
+            ],
+          },
+        ],
+      };
+      // 使用刚指定的配置项和数据显示图表。
+      myChart.setOption(option);
+      window.addEventListener("resize", () => {
+        myChart.resize();
+      });
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.c-title {
+  border-left: 4px solid rgb(64, 158, 255);
+  padding-left: 10px;
+}
+</style>

+ 85 - 0
src/views/home/components/box1/index.vue

@@ -0,0 +1,85 @@
+<template>
+  <div>
+    <div class="c-title">风险辩识</div>
+    <div
+      ref="barChart"
+      id="barChart"
+      :style="{ height: height, width: width }"
+    ></div>
+  </div>
+</template>
+
+<script>
+import * as echarts from "echarts";
+export default {
+  props: {
+    chartOptions: {
+      type: Object,
+      default: () => {},
+    },
+    width: {
+      type: String,
+      default: "100%",
+    },
+    height: {
+      type: String,
+      default: "200px",
+    },
+  },
+  mounted() {
+    this.initEcharts();
+  },
+  watch: {
+    chartOptions: {
+      handler(newVal, oldVal) {
+        this.initEcharts();
+      },
+      // 这里的deep是深度监听,因为我们传递过来的是一个对象
+      deep: true,
+    },
+  },
+  methods: {
+    initEcharts() {
+      let myChart = echarts.getInstanceByDom(
+        document.getElementById("barChart")
+      );
+      if (myChart == null) {
+        myChart = echarts.init(document.getElementById("barChart"));
+      }
+
+      // 指定图表的配置项和数据
+      var option = {
+        xAxis: {
+          type: "category",
+          data: this.chartOptions.xData,
+        },
+        yAxis: {
+          type: "value",
+        },
+        series: [
+          {
+            data: this.chartOptions.data,
+            type: "bar",
+            showBackground: true,
+            backgroundStyle: {
+              color: "rgba(180, 180, 180, 0.2)",
+            },
+          },
+        ],
+      };
+      // 使用刚指定的配置项和数据显示图表。
+      myChart.setOption(option);
+      window.addEventListener("resize", () => {
+        myChart.resize();
+      });
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.c-title {
+  border-left: 4px solid rgb(64, 158, 255);
+  padding-left: 10px;
+}
+</style>

+ 234 - 0
src/views/home/components/map/index.vue

@@ -0,0 +1,234 @@
+<template>
+  <div class="map">
+    <div class="flex align-middle">
+      <el-date-picker v-model="year" type="year" placeholder="选择年">
+      </el-date-picker>
+      <el-button type="primary" style="margin-left: 4px">导出</el-button>
+      <el-button @click="back" type="text">返回></el-button>
+    </div>
+    <div id="hy-map" style="width: 100%; height: 550px"></div>
+    <div class="item-container">
+      <div class="item" v-for="(ite, i) in itemData" :key="i">
+        <div class="val">121</div>
+        <div class="lab">数据</div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import * as echarts from "echarts";
+const mapEnum = {
+  衡阳市: require("./衡阳市.json"),
+  常宁市: require("./常宁市.json"),
+  衡东县: require("./衡东县.json"),
+  衡南县: require("./衡南县.json"),
+  衡山县: require("./衡山县.json"),
+  衡阳县: require("./衡阳县.json"),
+  耒阳市: require("./耒阳市.json"),
+  南岳区: require("./南岳区.json"),
+  祁东县: require("./祁东县.json"),
+  石鼓区: require("./石鼓区.json"),
+  雁峰区: require("./雁峰区.json"),
+  蒸湘区: require("./蒸湘区.json"),
+  珠晖区: require("./珠晖区.json"),
+};
+export default {
+  name: "map",
+  data() {
+    return {
+      year: "2024",
+      loading: true,
+      itemData: [{}, {}, {}, {}],
+    };
+  },
+  mounted() {
+    this.initCharts();
+  },
+  methods: {
+    back() {
+      this.initCharts();
+    },
+    initCharts(json = require("./衡阳市.json")) {
+      const chartDom = document.querySelector("#hy-map");
+      const myChart = echarts.init(chartDom);
+      echarts.registerMap("js", json);
+      var option = {
+        backgroundColor: "#fff",
+        title: {
+          top: 20,
+          text: "",
+          subtext: "",
+          x: "center",
+          textStyle: {
+            color: "#ffffff",
+          },
+        },
+        tooltip: {
+          trigger: "item",
+          formatter: function (params) {
+            if (typeof params.value[2] == "undefined") {
+              return params.name + " : " + params.value;
+            } else {
+              return params.name + " : " + params.value[2];
+            }
+          },
+        },
+        visualMap: {
+          show: false,
+          max: 100,
+          // seriesIndex: [3],
+          inRange: {
+            // color: ["#A5DCF4", "#006edd"],
+          },
+        },
+        geo: [
+          {
+            map: "js",
+            roam: false, //是否允许缩放
+            zoom: 1.1, //默认显示级别
+            scaleLimit: {
+              min: 0,
+              max: 3,
+            }, //缩放级别
+            itemStyle: {
+              normal: {
+                areaColor: "transparent",
+                borderColor: "#3fdaff",
+                borderWidth: 2,
+                shadowColor: "rgba(63, 218, 255, 0.5)",
+                shadowBlur: 30,
+              },
+              emphasis: {
+                areaColor: "#2B91B7",
+              },
+            },
+            tooltip: {
+              show: false,
+            },
+          },
+        ],
+        series: [
+          {
+            type: "effectScatter",
+            coordinateSystem: "geo",
+            z: 5,
+            data: [],
+            symbolSize: 14,
+            label: {
+              normal: {
+                show: true,
+                formatter: function (params) {
+                  return (
+                    "{fline|地点:" +
+                    params.data.city +
+                    "}\n{tline|" +
+                    (params.data.info || "发生xx集件") +
+                    "}"
+                  );
+                },
+                position: "top",
+                backgroundColor: "rgba(233,63,66,.9)",
+                padding: [0, 0],
+                borderRadius: 3,
+                lineHeight: 32,
+                color: "#ffffff",
+                rich: {
+                  fline: {
+                    padding: [0, 10, 10, 10],
+                    color: "#ffffff",
+                  },
+                  tline: {
+                    padding: [10, 10, 0, 10],
+                    color: "#ffffff",
+                  },
+                },
+              },
+              emphasis: {
+                show: true,
+              },
+            },
+            itemStyle: {
+              color: "#e93f42",
+            },
+          },
+
+          //地图
+          {
+            type: "map",
+            mapType: "js",
+            geoIndex: -1,
+            zoom: 1.1, //默认显示级别
+            label: {
+              show: true,
+              color: "#ffffff",
+              emphasis: {
+                color: "white",
+                show: false,
+              },
+            },
+            itemStyle: {
+              normal: {
+                borderColor: "#2980b9",
+                borderWidth: 1,
+                areaColor: "#12235c",
+              },
+              emphasis: {
+                areaColor: "#304156",
+                borderWidth: 0,
+                color: "#fff",
+              },
+            },
+            data: [
+              { name: "合肥市", value: 3 },
+              { name: "滁州市", value: 0 },
+              { name: "芜湖市", value: 1 },
+              { name: "阜阳市", value: 0 },
+              { name: "蚌埠市", value: 0 },
+              { name: "淮南市", value: 0 },
+              { name: "马鞍山市", value: 0 },
+              { name: "安庆市", value: 0 },
+              { name: "黄山市", value: 0 },
+              { name: "铜陵市", value: 0 },
+              { name: "宿州市", value: 0 },
+              { name: "淮北市", value: 0 },
+              { name: "六安市", value: 0 },
+              { name: "池州市", value: 1 },
+              { name: "宣城市", value: 0 },
+              { name: "亳州市", value: 0 },
+            ],
+          },
+        ],
+      };
+      myChart.setOption(option);
+      myChart.on("click", (params) => {
+        console.log(params, "params");
+        this.initCharts(mapEnum[params.name]);
+      });
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+.item-container {
+  display: flex;
+  justify-content: space-between;
+  .item {
+    flex: 0 0 25%;
+    text-align: center;
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    .val {
+      width: 50px;
+      height: 50px;
+      text-align: center;
+      line-height: 50px;
+      color: #fff;
+      border-radius: 50%;
+      background-image: linear-gradient(to bottom, #add8e6, #0000ff);
+      margin-bottom: 8px;
+    }
+  }
+}
+</style>

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
src/views/home/components/map/南岳区.json


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
src/views/home/components/map/常宁市.json


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
src/views/home/components/map/珠晖区.json


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
src/views/home/components/map/石鼓区.json


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
src/views/home/components/map/祁东县.json


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
src/views/home/components/map/耒阳市.json


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
src/views/home/components/map/蒸湘区.json


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
src/views/home/components/map/衡东县.json


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
src/views/home/components/map/衡南县.json


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
src/views/home/components/map/衡山县.json


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
src/views/home/components/map/衡阳县.json


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
src/views/home/components/map/衡阳市.json


Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 0 - 0
src/views/home/components/map/雁峰区.json


+ 56 - 0
src/views/home/components/points-ranking/index.vue

@@ -0,0 +1,56 @@
+<template>
+  <div class="ranking-c">
+    <div class="c-title">积分排行榜</div>
+    <el-table
+      :data="tableData"
+      style="width: 100%; margin-top: 8px"
+      height="100%"
+    >
+      <el-table-column prop="date" label="排名" width="80"> </el-table-column>
+      <el-table-column prop="name" label="单位"> </el-table-column>
+      <el-table-column prop="name" label="工作负责人"> </el-table-column>
+      <el-table-column prop="address" label="积分"> </el-table-column>
+    </el-table>
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      tableData: [
+        {
+          date: "1",
+          name: "王小虎",
+          address: "1212",
+        },
+        {
+          date: "2",
+          name: "王小虎",
+          address: "12",
+        },
+        {
+          date: "3",
+          name: "王小虎",
+          address: "12",
+        },
+        {
+          date: "4",
+          name: "王小虎",
+          address: "23",
+        },
+      ],
+    };
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.c-title {
+  border-left: 4px solid rgb(64, 158, 255);
+  padding-left: 10px;
+}
+.ranking-c {
+  height: 100%;
+}
+</style>

+ 98 - 0
src/views/home/index.vue

@@ -0,0 +1,98 @@
+<template>
+  <div class="home-container">
+    <el-row :gutter="10">
+      <el-col :span="8" class="h-full">
+        <el-card>
+          <PointsRanking></PointsRanking>
+        </el-card>
+      </el-col>
+      <el-col :span="8" class="h-full">
+        <MapHy></MapHy>
+      </el-col>
+      <el-col :span="8" class="h-full">
+        <el-card class="h-48">
+          <Box2
+            v-if="chartOptions.data && chartOptions.data.length > 0"
+            :chartOptions="chartOptions"
+            height="280px"
+          ></Box2>
+        </el-card>
+        <el-card class="h-48 mt-10">
+          <Box1
+            v-if="chartOptions.data && chartOptions.data.length > 0"
+            :chartOptions="chartOptions"
+            height="280px"
+          ></Box1>
+          <el-empty v-else></el-empty>
+        </el-card>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import MapHy from "./components/map/index.vue";
+import Box1 from "./components/box1/index.vue";
+import Box2 from "./components/box1 copy/index.vue";
+import PointsRanking from "./components/points-ranking/index.vue";
+export default {
+  components: {
+    Box1,
+    Box2,
+    MapHy,
+    PointsRanking,
+  },
+  data() {
+    return {
+      chartOptions: {
+        xData: [],
+        data: [],
+      },
+    };
+  },
+  mounted() {
+    this.init();
+  },
+  methods: {
+    init() {
+      this.chartOptions.data = [120, 200, 150, 80, 70, 110, 130];
+      this.chartOptions.xData = [
+        "Mon",
+        "Tue",
+        "Wed",
+        "Thu",
+        "Fri",
+        "Sat",
+        "Sun",
+      ];
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+.home-container {
+  margin: 8px;
+}
+.mt-10 {
+  margin-top: 10px;
+}
+
+.h-full {
+  height: calc(100vh - 180px);
+}
+.mt-10 {
+  margin-top: 10px;
+}
+.c-title {
+  border-left: 4px solid #000;
+}
+.el-card {
+  height: 100%;
+}
+.h-48 {
+  height: calc(50% - 5px);
+}
+.el-card__body {
+  height: 100%;
+}
+</style>

+ 61 - 0
src/views/secure/daily-newspaper/components/execution-status-table.vue

@@ -0,0 +1,61 @@
+<template>
+  <el-table :data="tableData" border style="width: 100%">
+    <el-table-column prop="date" label="序号" width="80" align="center">
+    </el-table-column>
+    <el-table-column prop="name" label="作业单位" align="center">
+    </el-table-column>
+    <el-table-column prop="name" label="作业信息总数" align="center">
+    </el-table-column>
+    <el-table-column label="周计划" align="center">
+      <el-table-column prop="address" label="周计划总数" align="center">
+      </el-table-column>
+      <el-table-column prop="address" label="周计划取消书" align="center">
+      </el-table-column>
+      <el-table-column prop="address" label="周计划执行率" align="center">
+      </el-table-column>
+    </el-table-column>
+    <el-table-column label="市临时计划数" align="center">
+      <el-table-column prop="address" label="临时计划总数" align="center">
+      </el-table-column>
+      <el-table-column prop="address" label="临时计划取消数" align="center">
+      </el-table-column>
+      <el-table-column prop="address" label="临时计划执行率" align="center">
+      </el-table-column>
+      <el-table-column prop="address" label="临时计划率" align="center">
+      </el-table-column>
+    </el-table-column>
+  </el-table>
+</template>
+
+<script>
+export default {
+  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 弄",
+        },
+      ],
+    };
+  },
+};
+</script>
+
+<style></style>

+ 56 - 0
src/views/secure/daily-newspaper/components/other-safety-situations-table.vue

@@ -0,0 +1,56 @@
+<template>
+  <el-table :data="tableData" border style="width: 100%">
+    <el-table-column prop="date" label="序号" width="80" align="center">
+    </el-table-column>
+    <el-table-column prop="name" label="单位" align="center"> </el-table-column>
+    <el-table-column label="配网故障情况" align="center">
+      <el-table-column prop="address" label="整线故障数量" align="center">
+      </el-table-column>
+      <el-table-column prop="address" label="支线故障数量" align="center">
+      </el-table-column>
+      <el-table-column prop="address" label="主动消缺数量" align="center">
+      </el-table-column>
+      <el-table-column prop="address" label="主动消缺明细" align="center">
+      </el-table-column>
+    </el-table-column>
+    <el-table-column label="三零统计" align="center">
+      <el-table-column prop="address" label="本月连续天数" align="center">
+      </el-table-column>
+      <el-table-column prop="address" label="本月累计天数" align="center">
+      </el-table-column>
+    </el-table-column>
+  </el-table>
+</template>
+
+<script>
+export default {
+  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 弄",
+        },
+      ],
+    };
+  },
+};
+</script>
+
+<style></style>

+ 53 - 0
src/views/secure/daily-newspaper/components/personnel-duty-status-table.vue

@@ -0,0 +1,53 @@
+<template>
+  <el-table :data="tableData" border style="width: 100%">
+    <el-table-column prop="date" label="序号" width="80" align="center">
+    </el-table-column>
+    <el-table-column prop="name" label="作业单位" align="center">
+    </el-table-column>
+    <el-table-column prop="name" label="领导督察次数" align="center">
+    </el-table-column>
+    <el-table-column prop="name" label="管理人员督察次数" align="center">
+    </el-table-column>
+    <el-table-column prop="name" label="未履职现场数量" align="center">
+    </el-table-column>
+    <el-table-column prop="name" label="未履职现场明细" align="center">
+    </el-table-column>
+    <el-table-column prop="name" label="城区履职不到位现场数量" align="center">
+    </el-table-column>
+    <el-table-column prop="name" label="履职不到位现场明细" align="center">
+    </el-table-column>
+  </el-table>
+</template>
+
+<script>
+export default {
+  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 弄",
+        },
+      ],
+    };
+  },
+};
+</script>
+
+<style></style>

+ 69 - 0
src/views/secure/daily-newspaper/components/tomorrow-plan-situation-table.vue

@@ -0,0 +1,69 @@
+<template>
+  <el-table :data="tableData" border style="width: 100%">
+    <el-table-column prop="date" label="序号" width="80" align="center">
+    </el-table-column>
+    <el-table-column prop="name" label="单位名称" align="center">
+    </el-table-column>
+    <el-table-column label="作业类型" align="center">
+      <el-table-column prop="address" label="倒闸操作" align="center">
+      </el-table-column>
+      <el-table-column prop="address" label="配网工程" align="center">
+      </el-table-column>
+      <el-table-column prop="address" label="业扩杆迁" align="center">
+      </el-table-column>
+      <el-table-column prop="address" label="运维检修" align="center">
+      </el-table-column>
+      <el-table-column prop="address" label="其他" align="center">
+      </el-table-column>
+      <el-table-column prop="address" label="总计" align="center">
+      </el-table-column>
+    </el-table-column>
+    <el-table-column prop="address" label="临时计划数量" align="center">
+    </el-table-column>
+    <el-table-column prop="address" label="带电作业数量" align="center">
+    </el-table-column>
+    <el-table-column label="作业风险等级" align="center">
+      <el-table-column prop="address" label="三级" align="center">
+      </el-table-column>
+      <el-table-column prop="address" label="四级" align="center">
+      </el-table-column>
+      <el-table-column prop="address" label="五级" align="center">
+      </el-table-column>
+    </el-table-column>
+    <el-table-column prop="address" label="重点关注检修面" align="center">
+    </el-table-column>
+  </el-table>
+</template>
+
+<script>
+export default {
+  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 弄",
+        },
+      ],
+    };
+  },
+};
+</script>
+
+<style></style>

+ 61 - 0
src/views/secure/daily-newspaper/components/violation-situation-table.vue

@@ -0,0 +1,61 @@
+<template>
+  <el-table :data="tableData" border style="width: 100%">
+    <el-table-column prop="date" label="序号" width="80" align="center">
+    </el-table-column>
+    <el-table-column prop="name" label="作业单位" align="center">
+    </el-table-column>
+    <el-table-column label="省公司查处违章" align="center">
+      <el-table-column prop="address" label="严重" align="center">
+      </el-table-column>
+      <el-table-column prop="address" label="一般" align="center">
+      </el-table-column>
+    </el-table-column>
+    <el-table-column label="市公司查处违章" align="center">
+      <el-table-column prop="address" label="严重" align="center">
+      </el-table-column>
+      <el-table-column prop="address" label="一般" align="center">
+      </el-table-column>
+    </el-table-column>
+    <el-table-column label="县公司查处违章" align="center">
+      <el-table-column prop="address" label="严重" align="center">
+      </el-table-column>
+      <el-table-column prop="address" label="一般" align="center">
+      </el-table-column>
+    </el-table-column>
+    <el-table-column prop="address" label="保障体系自查问题" align="center">
+    </el-table-column>
+  </el-table>
+</template>
+
+<script>
+export default {
+  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 弄",
+        },
+      ],
+    };
+  },
+};
+</script>
+
+<style></style>

+ 51 - 0
src/views/secure/daily-newspaper/index.vue

@@ -0,0 +1,51 @@
+<template>
+  <div class="app-container">
+    <el-tabs v-model="activeName" @tab-click="handleClick">
+      <el-tab-pane label="违章查处情况" name="first">
+        <ViolationSituationTable />
+      </el-tab-pane>
+      <el-tab-pane label="作业计划执行情况" name="second">
+        <ExecutionStatusTable />
+      </el-tab-pane>
+      <el-tab-pane label="人员到岗到位履职情况" name="third">
+        <PersonnelDutyStatusTable />
+      </el-tab-pane>
+      <el-tab-pane label="其他重要情况" name="fourth">
+        <OtherSafetySituationsTable />
+      </el-tab-pane>
+      <el-tab-pane label="明日作业计划安排情况" name="fourth1">
+        <TomorrowPlanSituationTable />
+      </el-tab-pane>
+    </el-tabs>
+  </div>
+</template>
+
+<script>
+import ViolationSituationTable from "./components/violation-situation-table.vue";
+import ExecutionStatusTable from "./components/execution-status-table.vue";
+import OtherSafetySituationsTable from "./components/other-safety-situations-table.vue";
+import TomorrowPlanSituationTable from "./components/tomorrow-plan-situation-table.vue";
+import PersonnelDutyStatusTable from "./components/personnel-duty-status-table.vue";
+export default {
+  components: {
+    ViolationSituationTable,
+    ExecutionStatusTable,
+    OtherSafetySituationsTable,
+    TomorrowPlanSituationTable,
+    PersonnelDutyStatusTable,
+  },
+  name: "daily",
+  data() {
+    return {
+      activeName: "first",
+    };
+  },
+  created() {},
+  methods: {
+    handleClick(tab, event) {
+      console.log(tab, event);
+    },
+  },
+};
+</script>
+<style lang="scss" scoped></style>

+ 7 - 0
src/views/secure/weekly-report/index.vue

@@ -0,0 +1,7 @@
+<template>
+  <div class="container">周报</div>
+</template>
+
+<script setup lang="ts"></script>
+
+<style scoped></style>

+ 76 - 77
vue.config.js

@@ -1,15 +1,15 @@
-'use strict'
-const path = require('path')
+"use strict";
+const path = require("path");
 
 function resolve(dir) {
-  return path.join(__dirname, dir)
+  return path.join(__dirname, dir);
 }
 
-const CompressionPlugin = require('compression-webpack-plugin')
+const CompressionPlugin = require("compression-webpack-plugin");
 
-const name = process.env.VUE_APP_TITLE || '财务资金管控应用' // 网页标题
+const name = process.env.VUE_APP_TITLE || "财务资金管控应用"; // 网页标题
 
-const port = process.env.port || process.env.npm_config_port || 80 // 端口
+const port = process.env.port || process.env.npm_config_port || 80; // 端口
 
 // vue.config.js 配置说明
 //官方vue.config.js 参考文档 https://cli.vuejs.org/zh/config/#css-loaderoptions
@@ -20,117 +20,116 @@ module.exports = {
   // 例如 https://www.ruoyi.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.ruoyi.vip/admin/,则设置 baseUrl 为 /admin/。
   publicPath: process.env.NODE_ENV === "production" ? "/" : "/",
   // 在npm run build 或 yarn build 时 ,生成文件的目录名称(要和baseUrl的生产环境路径一致)(默认dist)
-  outputDir: 'dist',
+  outputDir: "dist",
   // 用于放置生成的静态资源 (js、css、img、fonts) 的;(项目打包之后,静态资源会放在这个文件夹下)
-  assetsDir: 'static',
+  assetsDir: "static",
   // 是否开启eslint保存检测,有效值:ture | false | 'error'
-  lintOnSave: process.env.NODE_ENV === 'development',
+  lintOnSave: process.env.NODE_ENV === "development",
   // 如果你不需要生产环境的 source map,可以将其设置为 false 以加速生产环境构建。
   productionSourceMap: false,
   // webpack-dev-server 相关配置
   devServer: {
-    host: '0.0.0.0',
+    host: "0.0.0.0",
     port: port,
     open: true,
     proxy: {
       // detail: https://cli.vuejs.org/config/#devserver-proxy
       [process.env.VUE_APP_BASE_API]: {
-        target: `http://25.212.177.102:19888`,//生产
+        target: `http://39.105.58.247:18081`, //生产
         // target: `http://127.0.0.1:8095`,//本地
         changeOrigin: true,
         pathRewrite: {
-          ['^' + process.env.VUE_APP_BASE_API]: ''
+          ["^" + process.env.VUE_APP_BASE_API]: "",
         },
-        logLevel: 'debug'
-      }
+        logLevel: "debug",
+      },
     },
-    disableHostCheck: true
+    disableHostCheck: true,
   },
   css: {
     loaderOptions: {
       sass: {
-        sassOptions: { outputStyle: "expanded" }
-      }
-    }
+        sassOptions: { outputStyle: "expanded" },
+      },
+    },
   },
   configureWebpack: {
     name: name,
     resolve: {
       alias: {
-        '@': resolve('src')
-      }
+        "@": resolve("src"),
+      },
     },
     plugins: [
       // http://doc.ruoyi.vip/ruoyi-vue/other/faq.html#使用gzip解压缩静态文件
       new CompressionPlugin({
-        cache: false,                   // 不启用文件缓存
-        test: /\.(js|css|html)?$/i,     // 压缩文件格式
-        filename: '[path].gz[query]',   // 压缩后的文件名
-        algorithm: 'gzip',              // 使用gzip压缩
-        minRatio: 0.8                   // 压缩率小于1才会压缩
-      })
+        cache: false, // 不启用文件缓存
+        test: /\.(js|css|html)?$/i, // 压缩文件格式
+        filename: "[path].gz[query]", // 压缩后的文件名
+        algorithm: "gzip", // 使用gzip压缩
+        minRatio: 0.8, // 压缩率小于1才会压缩
+      }),
     ],
   },
   chainWebpack(config) {
-    config.plugins.delete('preload') // TODO: need test
-    config.plugins.delete('prefetch') // TODO: need test
+    config.plugins.delete("preload"); // TODO: need test
+    config.plugins.delete("prefetch"); // TODO: need test
 
     // set svg-sprite-loader
+    config.module.rule("svg").exclude.add(resolve("src/assets/icons")).end();
     config.module
-      .rule('svg')
-      .exclude.add(resolve('src/assets/icons'))
-      .end()
-    config.module
-      .rule('icons')
+      .rule("icons")
       .test(/\.svg$/)
-      .include.add(resolve('src/assets/icons'))
+      .include.add(resolve("src/assets/icons"))
       .end()
-      .use('svg-sprite-loader')
-      .loader('svg-sprite-loader')
+      .use("svg-sprite-loader")
+      .loader("svg-sprite-loader")
       .options({
-        symbolId: 'icon-[name]'
+        symbolId: "icon-[name]",
       })
-      .end()
+      .end();
 
-    config.when(process.env.NODE_ENV !== 'development', config => {
-          config
-            .plugin('ScriptExtHtmlWebpackPlugin')
-            .after('html')
-            .use('script-ext-html-webpack-plugin', [{
+    config.when(process.env.NODE_ENV !== "development", (config) => {
+      config
+        .plugin("ScriptExtHtmlWebpackPlugin")
+        .after("html")
+        .use("script-ext-html-webpack-plugin", [
+          {
             // `runtime` must same as runtimeChunk name. default is `runtime`
-              inline: /runtime\..*\.js$/
-            }])
-            .end()
+            inline: /runtime\..*\.js$/,
+          },
+        ])
+        .end();
 
-          config.optimization.splitChunks({
-            chunks: 'all',
-            cacheGroups: {
-              libs: {
-                name: 'chunk-libs',
-                test: /[\\/]node_modules[\\/]/,
-                priority: 10,
-                chunks: 'initial' // only package third parties that are initially dependent
-              },
-              elementUI: {
-                name: 'chunk-elementUI', // split elementUI into a single package
-                test: /[\\/]node_modules[\\/]_?element-ui(.*)/, // in order to adapt to cnpm
-                priority: 20 // the weight needs to be larger than libs and app or it will be packaged into libs or app
-              },
-              commons: {
-                name: 'chunk-commons',
-                test: resolve('src/components'), // can customize your rules
-                minChunks: 3, //  minimum common number
-                priority: 5,
-                reuseExistingChunk: true
-              }
-            }
-          })
+      config.optimization.splitChunks({
+        chunks: "all",
+        cacheGroups: {
+          libs: {
+            name: "chunk-libs",
+            test: /[\\/]node_modules[\\/]/,
+            priority: 10,
+            chunks: "initial", // only package third parties that are initially dependent
+          },
+          elementUI: {
+            name: "chunk-elementUI", // split elementUI into a single package
+            test: /[\\/]node_modules[\\/]_?element-ui(.*)/, // in order to adapt to cnpm
+            priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app
+          },
+          commons: {
+            name: "chunk-commons",
+            test: resolve("src/components"), // can customize your rules
+            minChunks: 3, //  minimum common number
+            priority: 5,
+            reuseExistingChunk: true,
+          },
+        },
+      });
 
-          config.optimization.runtimeChunk('single'),
-          {
-             from: path.resolve(__dirname, './public/robots.txt'), //防爬虫文件
-             to: './' //到根目录下
-          }
-    })
-  }
-}
+      config.optimization.runtimeChunk("single"),
+        {
+          from: path.resolve(__dirname, "./public/robots.txt"), //防爬虫文件
+          to: "./", //到根目录下
+        };
+    });
+  },
+};

Niektoré súbory nie sú zobrazené, pretože je v týchto rozdielových dátach zmenené mnoho súborov