Browse Source

scl文件校核的样式布局,表格的数据展示

“yueshang” 1 year ago
parent
commit
56fb540145

BIN
src/assets/image/sclFile/FileArrowUp.png


BIN
src/assets/image/sclFile/FileCodeOne.png


BIN
src/assets/image/sclFile/FolderNotchOne.png


BIN
src/assets/image/sclFile/FolderOpentop.png


BIN
src/assets/image/sclFile/danger_error.png


BIN
src/assets/image/sclFile/danger_tip.png


BIN
src/assets/image/sclFile/danger_warning.png


+ 1 - 1
src/pages/netStructPicture/components/netWork.vue

@@ -109,7 +109,7 @@ const listCat = ref([]); //长横线的类型名称
 const ipNetaddrData = ref([]); //ip数据
 const loadDating = ref(false);
 const openBig = ref(false);
-// const scdIdValue = 644000176;
+// const scdIdValue = 1248000337;
 const scdIdValue = route.query.id;
 //线条背景颜色
 const backColorList = ref([

+ 1 - 1
src/pages/netStructPicture/components/scdVisual.vue

@@ -162,7 +162,7 @@ import scdDialogIndex from "./scdDialogIndex";
 import { useRoute } from "vue-router";
 const userStoreCode = useDataStore();
 const route = useRoute();
-// const scdIdValue = 644000176;
+// const scdIdValue = 1248000337;
 const scdIdValue = route.query.id;
 const data = reactive({
   queryParams: {

+ 121 - 56
src/pages/netStructPicture/index.vue

@@ -2,8 +2,14 @@
   <div>
     <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
       <div class="nav">
-        <div v-for="(item, index) in navtopData" :key="index" :class="{ 'nav-item-active': activeNav == index }"
-          @click="clickNav(item, index)" class="nav-item" style="font-size: 12px">
+        <div
+          v-for="(item, index) in navtopData"
+          :key="index"
+          :class="{ 'nav-item-active': activeNav == index }"
+          @click="clickNav(item, index)"
+          class="nav-item"
+          style="font-size: 12px"
+        >
           {{ item.name }}
         </div>
       </div>
@@ -11,7 +17,9 @@
         <h2 style="display: inline-block; margin-right: 2px; font-size: 20px">
           CID文件一次性检测
         </h2>
-        <el-button type="primary" plain @click="portExcel">结果导出Excel</el-button>
+        <el-button type="primary" plain @click="portExcel"
+          >结果导出Excel</el-button
+        >
         <span class="closeX" @click="closeX">×</span>
       </div>
       <el-tab-pane label="网络结构图" name="first">
@@ -22,14 +30,18 @@
             <CidTree :nowScdId="nowScdId" @treeBack="treeBack"></CidTree>
           </div>
           <!-- 右侧展示图 -->
-          <div style="width: 85%; height: calc(100vh - 280px); position: relative">
+          <div
+            style="width: 85%; height: calc(100vh - 280px); position: relative"
+          >
             <div class="abBox">
               <div>
-                <span style="
+                <span
+                  style="
                     border-right: 1px solid black;
                     padding-right: 300px;
                     font-size: 12px;
-                  ">
+                  "
+                >
                   基准文件:
                   {{ arrName }}
                 </span>
@@ -38,17 +50,36 @@
                 <span style="font-size: 12px"> 对比文件:{{ upName }} </span>
               </div>
               <div class="uploadBox">
-                <el-upload ref="upload" class="upload-demo" :http-request="nowUpload" :limit="2"
-                  element-loading-text="上传中..." element-loading-background="rgba(255, 255, 255, 0.8)"
-                  :on-remove="handleRemove" :on-change="fileSuccess" :show-file-list="false">
+                <el-upload
+                  ref="upload"
+                  class="upload-demo"
+                  :http-request="nowUpload"
+                  :limit="2"
+                  element-loading-text="上传中..."
+                  element-loading-background="rgba(255, 255, 255, 0.8)"
+                  :on-remove="handleRemove"
+                  :on-change="fileSuccess"
+                  :show-file-list="false"
+                >
                   <template #trigger>
-                    <el-button style="border-bottom: 1px solid #7bbafd" type="text" plain>上传CID</el-button>
+                    <el-button
+                      style="border-bottom: 1px solid #7bbafd"
+                      type="text"
+                      plain
+                      >上传CID</el-button
+                    >
                   </template>
                 </el-upload>
               </div>
             </div>
-            <Gsix :activeName="activeName" :activeNav="activeNav" :backName="backName" :mustVal="mustVal"
-              :arrName="arrName" :upName="upName"></Gsix>
+            <Gsix
+              :activeName="activeName"
+              :activeNav="activeNav"
+              :backName="backName"
+              :mustVal="mustVal"
+              :arrName="arrName"
+              :upName="upName"
+            ></Gsix>
           </div>
         </div>
         <div class="scdCheck" v-if="activeName == 'first' && activeNav == 1">
@@ -64,17 +95,35 @@
               justify-content: space-between;
               align-items: center;
               margin-top: 5px;
-            ">
+            "
+          >
             <div class="treeBtn">
-              <scdTree :nowStation="nowStation" @scdTreeBack="scdTreeBack" @scdView="scdView" @scdJpadList="scdJpadList"></scdTree>
+              <scdTree
+                :nowStation="nowStation"
+                @scdTreeBack="scdTreeBack"
+                @scdView="scdView"
+                @scdJpadList="scdJpadList"
+              ></scdTree>
             </div>
             <div class="scdMap">
-              <scdMap :antherBack="antherBack" :scdipadMini="scdipadMini" :activeNav="activeNav" :clickView="clickView"></scdMap>
+              <scdMap
+                :antherBack="antherBack"
+                :scdipadMini="scdipadMini"
+                :activeNav="activeNav"
+                :clickView="clickView"
+              ></scdMap>
             </div>
           </div>
         </div>
-        <CrcCheck v-if="activeName == 'first' && activeNav == 3" :nowScdId="nowScdId"></CrcCheck>
-        <SlcCheck v-if="activeName == 'first' && activeNav == 2" :nowScdId="nowScdId"></SlcCheck>
+        <CrcCheck
+          v-if="activeName == 'first' && activeNav == 3"
+          :nowScdId="nowScdId"
+        ></CrcCheck>
+        <SlcCheck
+          v-if="activeName == 'first' && activeNav == 2"
+          :nowScdId="nowScdId"
+          @sclBack="sclBack"
+        ></SlcCheck>
         <!-- 虚端子关系图 -->
         <div v-if="clickNavCode == 'virtual'">
           <!-- <virtual-relation 
@@ -103,7 +152,7 @@ import scdTree from "./components/scdTree.vue";
 import scdMap from "./components/scdMap.vue";
 import CrcCheck from "./newTitle/CrcCheck";
 import SlcCheck from "./newTitle/SlcCheck.vue";
-import { useRoute} from "vue-router";
+import { useRoute } from "vue-router";
 import cid from "@/api/cid/cid";
 import { ElMessage } from "element-plus";
 import systemRow from "@/api/systemRow";
@@ -120,24 +169,28 @@ const navtopData = ref([
   { name: "虚端子关系图", code: "virtual" },
 ]);
 const activeNav = ref(null);
-const backName = ref('')//树组件返回名称
-let mustVal = ref(false)
-let upName = ref('')//上传的文件名称
-let arrName = ref('')//基准的文件名称
-let upFile = ref({})//上传文件流
-let backId = ref('')//返回id
-let nowScdId = ref('')//路由传参的scdid
-let antherBack = ref([])
-let nowStation = ref("")//变电站id
-watch(() => antherBack.value, (newVal) => {
-  antherBack.value = newVal
-}, {
-  deep: true
-})
+const backName = ref(""); //树组件返回名称
+let mustVal = ref(false);
+let upName = ref(""); //上传的文件名称
+let arrName = ref(""); //基准的文件名称
+let upFile = ref({}); //上传文件流
+let backId = ref(""); //返回id
+let nowScdId = ref(null); //路由传参的scdid
+let antherBack = ref([]);
+let nowStation = ref(""); //变电站id
+watch(
+  () => antherBack.value,
+  (newVal) => {
+    antherBack.value = newVal;
+  },
+  {
+    deep: true,
+  }
+);
 const reload = () => {
-  nowScdId.value = route.query.id
-  nowStation.value = route.query.station
-}
+  nowScdId.value = route.query.id;
+  nowStation.value = route.query.station;
+};
 // const clickNav = (navIndex) => {  //点击导航栏事件
 //   activeNav.value = navIndex;
 // }
@@ -182,21 +235,28 @@ const closeX = () => {
   activeNav.value = null;
 };
 const nowUpload = (file, e) => {
-  upFile.value = file.file
-  upName.value = file.file.name
-  cid.fileUpload({ station_id: nowStation.value - 0, file: upFile.value, data_type: "cid" }).then(res => {
-    if (res.code == 0) {
-      let idp = `${file.file.uid},${backId.value}`
-      ElMessage({
-        type: 'success',
-        message: "上传成功!"
-      })
-      scdCheck.scdStart({ type: 'cid', station_id: nowStation.value - 0, ids: idp }).then(res => {
-        console.log(res, 'show');
-      })
-    }
-  })
-
+  upFile.value = file.file;
+  upName.value = file.file.name;
+  cid
+    .fileUpload({
+      station_id: nowStation.value - 0,
+      file: upFile.value,
+      data_type: "cid",
+    })
+    .then((res) => {
+      if (res.code == 0) {
+        let idp = `${file.file.uid},${backId.value}`;
+        ElMessage({
+          type: "success",
+          message: "上传成功!",
+        });
+        scdCheck
+          .scdStart({ type: "cid", station_id: nowStation.value - 0, ids: idp })
+          .then((res) => {
+            console.log(res, "show");
+          });
+      }
+    });
 };
 
 const handleRemove = (file, e) => {
@@ -210,14 +270,18 @@ function scdTreeBack(data) {
 }
 const clickView = ref(null);
 //点击左侧树查看的当前数据行
-const scdView = (row) =>{
+const scdView = (row) => {
   clickView.value = row;
-}
+};
+const sclBack = (num) => {
+  activeName.value = "first";
+  activeNav.value = null;
+};
 // 点击左侧树查看返回图的数据
-const scdipadMini= ref([])
-const scdJpadList = (data) =>{
+const scdipadMini = ref([]);
+const scdJpadList = (data) => {
   scdipadMini.value = data;
-}
+};
 const portExcel = () => {
   systemRow
     .portExcel({
@@ -285,7 +349,8 @@ $height: 40px;
   }
 
   .nav-item-active {
-    background: #fff url("~@/assets/image/instruct/navtop_active.png") no-repeat center;
+    background: #fff url("~@/assets/image/instruct/navtop_active.png") no-repeat
+      center;
     background-size: 144px $height;
     color: #fff;
   }

+ 2 - 2
src/pages/netStructPicture/newTitle/CrcCheck.vue

@@ -4,8 +4,8 @@
             <h1>{{ needFlashName + "——" + needScdName + "——CRC效验结果" }}</h1>
         </div>
         <div class="antherHeader">
-            <span style="margin-right: 10px;">SCD文件CRC<em>{{ scdAndCrc.scdcrc }}</em></span>
-            <span style="margin-right: 10px;">SCD效验CRC<em>{{ scdAndCrc.checkcrc }}</em></span>
+            <span style="margin-right: 10px;">SCD文件CRC:<em>{{ scdAndCrc.scdcrc }}</em></span>
+            <span style="margin-right: 10px;">SCD效验CRC:<em>{{ scdAndCrc.checkcrc }}</em></span>
             <span >效验结果:<em :style="{ color: isTrue ? 'green' : 'red' }">{{ isTrue?'一致':"不一致" }}</em></span>
         </div>
         <div class="table">

+ 478 - 162
src/pages/netStructPicture/newTitle/SlcCheck.vue

@@ -1,193 +1,509 @@
 <template>
-    <div class="bigBox">
-        <div class="header">
-            <h1>{{ flashName + '——' + scdName + '——SLC效验' }}</h1>
-        </div>
-        <div class="main">
-            <div class="treeBox">
-                <el-tree :data="treeData" :props="defaultProps" @node-click="handleNodeClick" />
+  <div class="bigBox">
+    <div class="header">
+      <div>{{ flashName + "——" + scdName + "——SLC效验" }}</div>
+      <span class="closeX" @click="closeX">×</span>
+    </div>
+    <div class="main">
+      <div class="treeBox">
+        <el-tree
+          :data="treeData"
+          :props="defaultProps"
+          @node-click="handleNodeClick"
+        >
+          <template #default="{ node, data }">
+            <span class="custom-tree-node">
+              <img :src="FolderOpentop" alt="" />
+              <span class="label">{{ node.label }}</span>
+            </span>
+          </template>
+        </el-tree>
+      </div>
+      <div class="tableBox">
+        <div class="allMis">
+          <div class="result">
+            <div @click="excelPort" class="anniu">
+              <img :src="FileArrowUp" alt="" />
+              <span>导出所有结果</span>
             </div>
-            <div class="tableBox">
-                <div class="allMis">
-                    <el-button type="primary" plain>导出所有结果</el-button>
-                    <el-button style="margin-right: 10px;" type="primary" plain>导出当前节点结果</el-button>
-                    <span style="margin-right: 10px;">全部:{{ errorNum - 0 + warningNum - 0 }}</span>
-                    <span style="margin-right: 10px;">错误:<em style="color: red;">{{ errorNum ? errorNum : 0 }}</em></span>
-                    <span style="margin-right: 10px;">告警:<em style="color: green;">{{ warningNum ? warningNum : 0 }}</em></span>
-                </div>
-                <div class="table">
-                    
-                </div>
+            <div @click="excelPort" class="anniu current-anniu">
+              <img :src="FileArrowUp" alt="" />
+              <span>导出当前节点结果</span>
             </div>
+          </div>
+          <div class="statistics">
+            <span>全部:{{ errorNum + warningNum + hintNum }}</span>
+            <span
+              >错误:<em style="color: #e82c2d">{{
+                errorNum ? errorNum : 0
+              }}</em></span
+            >
+            <span
+              >告警:<em style="color: #ff7808">{{
+                warningNum ? warningNum : 0
+              }}</em></span
+            >
+            <span
+              >提示:<em style="color: #3064e8">{{
+                hintNum ? hintNum : 0
+              }}</em></span
+            >
+          </div>
+        </div>
+        <div class="table-data" v-if="tableData">
+          <el-table
+            :data="tableData.data"
+            style="width: 100%"
+            stripe
+            height="90%"
+            :cell-style="{ color: '#1A2447',border:'none',height:'69px' }"
+            :header-cell-style="{ color: '#7484AB',background:'#F7F8FB',borderBottom:'1px solid #A3ADE0'}"
+          >
+            <el-table-column prop="ied_name" label="装置名称" width="80">
+              <template #default="scope">
+                <span v-if="scope.row.ied_name">{{ scope.row.ied_name }}</span>
+                <span v-else>-</span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="ied_desc" label="装置描述" width="200" />
+            <el-table-column prop="alert_level" label="等级" width="80">
+              <template #default="scope">
+                <span v-if="scope.row.alert_level === 'waring'" class="waring"
+                  >警告</span
+                >
+                <span
+                  v-else-if="scope.row.alert_level === 'error'"
+                  class="error"
+                  >错误</span
+                >
+                <span v-else-if="scope.row.alert_level === 'hint'" class="hint"
+                  >提示</span
+                >
+              </template>
+            </el-table-column>
+            <el-table-column prop="line_no" label="行号" width="80">
+              <template #default="scope">
+                <span style="color: #255ce7">{{ scope.row.line_no }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="parse_result" label="描述" />
+            <el-table-column
+              prop="apply_standard"
+              label="标准及条款"
+              width="200"
+            >
+              <template #default="scope">
+                <span>{{ getBeforeComma(scope.row.apply_standard) }}</span>
+                <span
+                  v-if="!getAfterComma(scope.row.apply_standard)"
+                  style="margin-left: 10px"
+                  >{{ scope.row.apply_standard_no }}</span
+                >
+                <div v-else>
+                  {{ getAfterComma(scope.row.apply_standard) }}
+                  <span>{{ scope.row.apply_standard_no }}</span>
+                </div>
+              </template>
+            </el-table-column>
+          </el-table>
+          <div class="page">
+            <el-pagination
+              :current-page="pageindex"
+              :page-size="pagesize"
+              layout="total, prev, pager, next"
+              :total="tableData.count"
+              @current-change="handleCurrentChange"
+            />
+          </div>
         </div>
+      </div>
     </div>
+  </div>
 </template>
 
-<script>
-import { ref, onMounted, toRefs, watch, reactive } from "vue"
+<script setup>
+import { ref, onMounted, toRefs, watch, reactive } from "vue";
+import { useRouter, useRoute } from "vue-router";
 import scd from "@/api/scd";
-import slc from "@/api/slc/slc"
+import slc from "@/api/slc/slc";
 import systemRow from "@/api/systemRow";
 import Pagnation from "../utils/Pagnation.vue";
 import { ElMessage, ElLoading } from "element-plus";
-export default {
-    props: {
-        nowScdId: {
-            type: String,
-            required: true
-        }
-    },
-    setup(props, { emit }) {
-        let scdid = ref('')//scdid
-        let scdName = ref('')//scd名称
-        let flashName = ref("")//变电站名称
-        let treeData = ref([
-            // {
-            //     label: "1号主变差动",
-            //     children: [],
-            //     pids: '6871',
-            //     name: "area"
-            // }, {
-            //     label: '一号主变本体',
-            //     children: [],
-            //     pids: "6875",
-            //     name: "area"
-            // }, {
-            //     label: "公用",
-            //     children: [],
-            //     pids: "6890",
-            //     name: "area"
-            // }, {
-            //     label: "SCL",
-            //     pids: "572000161",
-            //     children: [],
-            //     name: "SCL"
-            // }
-        ])//tree数据
-        let defaultProps = ref({
-            label: "title",
-            id: "id",
-            pids: "pid",
-            children: "children",
-            area: "area_id"
-        })
-        let errorNum = ref(0)
-        let warningNum = ref(0)
-        watch(() => props.nowScdId, (newVal) => {
-            scdid.value = newVal
-        })
-        let indexs = 0
-        function reload() {
-            scdid.value = props.nowScdId
-            let loading = ElLoading.service({
-                text: "等待数据中",
-                lock: true,
-                background: "rgba(0, 0, 0, 0.7)"
-            })
-            Promise.all([
-                scd.getScdById({ scd_id: scdid.value - 0 }),//获取scd详细信息scd1
-                slc.getAllMission({ scd_id: scdid.value - 0 }),//slc1
-                slc.getErrorByLevel({ scd_id: scdid.value - 0 }),//获取报错总数slc2
-                slc.getScdByIdFromMission({ pageno: 1, pagesize: 20, scd_id: scdid.value - 0 }),//slc3
-                slc.getScdByIdTree({ scd_id: scdid.value - 0 }),//获取tree数据slc4
-                systemRow.getChildren({ code: "voltage_level" })
-            ]).then(([scd1, slc1, slc2, slc3, slc4, flash]) => {
-                if (scd1.data != null) {
-                    scdName.value = scd1.data.scd_name
-                    flashName.value = scd1.data.station_name
-                }
-                if (slc4.data != null) {
-                    treeData.value = slc4.data
-                }
-                if (slc2.data != null) {
-                    errorNum.value = slc2.data[0].cnt//错误
-                    warningNum.value = slc2.data[1].cnt//告警
-                }
-                // treeData.value[3].children = slc4.data.slice(0, 3).map(item => {
-                //     return {
-                //         label: item.title,
-                //         id: item.id,
-                //         pids: item.pid
-                //     }
-                // })
-                // let a = slc4.data.map(item => {
-                //     return flash.data.find(param => item.voltage_level - 0 === param.id - 0);
-                // })
-                // a = a.filter((item, index, arr) => item !== undefined && arr.indexOf(item) === index);
-                // a.forEach(item => {
-                //     // 判断 treeData.value[3].children 是否已经存在相同的元素
-                //     const existingItem = treeData.value[3].children.find(child => child.id === item.id);
-                //     if (!existingItem) {
-                //         // 如果不存在相同元素,则将当前项插入到 children 中
-                //         treeData.value[3].children.splice(indexs, 0, {
-                //             label: item.name,
-                //             id: item.id,
-                //         });
-                //         indexs++; // 插入位置后移
-                //     }
-                // });
-                loading.close()
-            })
-        }
-        function handleNodeClick(e) {
-            console.log(e, 'hand');
-        }
-        onMounted(() => {
-            reload()
-        })
-        return {
-            scdid,//scdid
-            reload,//初始化组件
-            scdName,//scd名称
-            flashName,//变电站名称
-            treeData,//树形数据
-            defaultProps,//树形展示
-            handleNodeClick,//树形每行点击
-            errorNum,//错误数量
-            warningNum,//告警数量
+import FileArrowUp from "@/assets/image/sclFile/FileArrowUp.png";
+import dangerError from "@/assets/image/sclFile/danger_error.png";
+import dangerTip from "@/assets/image/sclFile/danger_tip.png";
+import dangerWarning from "@/assets/image/sclFile/danger_warning.png";
+import FileCodeOne from "@/assets/image/sclFile/FileCodeOne.png";
+import FolderNotchOne from "@/assets/image/sclFile/FolderNotchOne.png";
+import FolderOpentop from "@/assets/image/sclFile/FolderOpentop.png";
+const props = defineProps({
+  nowScdId: {
+    type: String,
+    required: true,
+  },
+});
+let scdid = ref(""); //scdid
+let scdName = ref(""); //scd名称
+let flashName = ref(""); //变电站名称
+let router = useRouter();
+let treeData = ref([]); //tree数据
+let defaultProps = ref({
+  label: "name",
+  id: "id",
+  pids: "pid",
+  children: "children",
+  area: "area_id",
+});
+let errorNum = ref(0);
+let warningNum = ref(0);
+let hintNum = ref(0);
+const tableData = ref(null);
+let pageindex = ref(1);
+let pagesize = ref(20);
+watch(
+  () => props.nowScdId,
+  (newVal) => {
+    scdid.value = parseInt(newVal);
+  }
+);
+let indexs = 0;
+const emit = defineEmits(["sclBack"]);
+const closeX = () => {
+  emit("sclBack", 2);
+  // router.push("/home/netStructPicture")
+};
+const reload = () => {
+  // scdid.value = parseInt(props.nowScdId);
+  scdid.value = 1248000337;
+  let loading = ElLoading.service({
+    text: "等待数据中",
+    lock: true,
+    background: "rgba(0, 0, 0, 0.7)",
+  });
+  Promise.all([
+    scd.getScdById({ scd_id: scdid.value }), //获取SCL详情信息详细信息sclInfo
+    slc.getAllMission({ scd_id: scdid.value }), //sumResult
+    slc.getErrorByLevel({ scd_id: scdid.value - 0 }), //获取错误,告警,提示统计数据levelData
+    slc.getScdByIdFromMission({
+      pageno: 1,
+      pagesize: 20,
+      scd_id: scdid.value,
+    }), //获取表格的全部数据resultList
+    slc.getScdByIdTree({ scd_id: scdid.value }), //获取侧边栏树的数据treeList
+    // systemRow.getChildren({ code: "voltage_level" }),
+  ]).then(([sclInfo, sumResult, levelData, resultList, treeList]) => {
+    errorNum.value = 0;
+    hintNum.value = 0;
+    warningNum.value = 0;
+    if (sclInfo.data != null) {
+      scdName.value = sclInfo.data.scd_name;
+      flashName.value = sclInfo.data.station_name;
+    }
+    if (levelData.data) {
+      levelData.data.forEach((item) => {
+        item.cnt = parseInt(item.cnt);
+        switch (item.alert_level) {
+          case "error":
+            errorNum.value = item.cnt;
+            break;
+          case "hint":
+            hintNum.value = item.cnt;
+            break;
+          case "waring":
+            warningNum.value = item.cnt;
+            break;
         }
-    },
-    components: {
-        Pagnation,
+      });
     }
-}
+    tableData.value = resultList;
+    // treeData.value[3].children = resultList.data.slice(0, 3).map((item) => {
+    //   return {
+    //     label: item.title,
+    //     id: item.id,
+    //     pids: item.pid,
+    //   };
+    // });
+    // let a = slc4.data.map(item => {
+    //     return flash.data.find(param => item.voltage_level - 0 === param.id - 0);
+    // })
+    // a = a.filter((item, index, arr) => item !== undefined && arr.indexOf(item) === index);
+    // a.forEach(item => {
+    //     // 判断 treeData.value[3].children 是否已经存在相同的元素
+    //     const existingItem = treeData.value[3].children.find(child => child.id === item.id);
+    //     if (!existingItem) {
+    //         // 如果不存在相同元素,则将当前项插入到 children 中
+    //         treeData.value[3].children.splice(indexs, 0, {
+    //             label: item.name,
+    //             id: item.id,
+    //         });
+    //         indexs++; // 插入位置后移
+    //     }
+    // });
+    loading.close();
+  });
+};
+const handleCurrentChange = async (val) => {
+  tableData.value = null;
+  pageindex.value = val;
+  const res = await slc.getScdByIdFromMission({
+    pageno: val,
+    pagesize: 20,
+    scd_id: 1248000337,
+  });
+  tableData.value = res;
+};
+const getBeforeComma = (data) => {
+  // 提取顿号之前的内容
+  if (data && data.includes("、")) {
+    const commaIndex = data.indexOf("、");
+    return data.slice(0, commaIndex) + "、";
+  } else {
+    return data;
+  }
+};
+const getAfterComma = (data) => {
+  // 提取顿号之后的内容
+  if (data && data.includes("、")) {
+    console.log("data", data);
+    const commaIndex = data.indexOf("、");
+    return data.slice(commaIndex + 1);
+  } else {
+    return "";
+  }
+};
+const handleNodeClick = (e) => {
+  console.log(e, "hand");
+};
+onMounted(() => {
+  reload();
+});
 </script>
 
-<style scoped>
-em{
-    font-style: normal;
+<style scoped lang="scss">
+em {
+  font-style: normal;
 }
 .bigBox {
-    width: 97%;
-    height: calc(100vh - 200px);
-    margin-left: 18px;
+  width: 97%;
+  height: calc(100vh - 200px);
+  margin-left: 18px;
 }
 
 .header {
-    width: 100%;
-    height: auto;
-    text-align: center;
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  font-size: 16px;
+  width: 100%;
+  height: auto;
+  padding: 12px 0 20px 0;
+  border-bottom: 1px solid #a3ade0;
 }
 
 .main {
-    width: 100%;
-    height: calc(100vh - 260px);
-    margin: 0 auto;
-    border: 1px solid salmon;
-    display: flex;
-    justify-content: space-around;
-    align-items: center;
+  width: 100%;
+  height: calc(100vh - 294px);
+  margin: 0 auto;
+  display: flex;
+  justify-content: space-around;
+  align-items: center;
+  margin-top: 16px;
 }
 
 .treeBox {
-    width: 20%;
-    height: calc(100vh - 260px);
-    overflow-y: auto;
-    overflow-x: hidden;
+  width: 20%;
+  height: 100%;
+  overflow-y: auto;
+  overflow-x: hidden;
+  background: #f7f8fb;
+  box-shadow: 0px 0px 0px 1px #bed1ff;
+  border-radius: 3px;
+  opacity: 1;
+  border: 1px solid #a3ade0;
+  margin-right: 16px;
 }
 
 .tableBox {
-    width: 80%;
-    height: calc(100vh - 260px);
+  width: 80%;
+  height: 100%;
+  background: #f7f8fb;
+  border-radius: 3px;
+}
+.allMis {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  margin: 16px;
+  .statistics,
+  .result {
+    display: flex;
+    font-size: 16px;
+    & > span {
+      margin-right: 16px;
+    }
+  }
+}
+.table-data {
+  height: 85%;
+  margin-left: 16px;
+}
+.anniu {
+  height: 54px;
+  width: 124px;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  margin-right: 8px;
+  cursor: pointer;
+  background: url("~@/assets/image/scdcheck/bgscd.png") no-repeat center;
+  background-size: 124px 49px;
+  border-radius: 2px;
+  font-size: 14px;
+  color: #255ce7;
+  img {
+    width: 20px;
+    height: 20px;
+    margin: 0 4px 0 0;
+  }
+}
+.current-anniu {
+  width: 153px;
+  background-size: 153px 49px;
+}
+:deep(.el-tree) {
+  --el-fill-color-blank: #f7f8fb;
+
+}
+:deep(.el-table__inner-wrapper){
+height:100% !important;
+}
+.waring,
+.error,
+.hint {
+  width: 38px;
+  height: 20px;
+  display: inline-block;
+  border-radius: 2px;
+  text-align: center;
+  line-height: 20px;
+  font-size: 13px;
+}
+.waring {
+  color: #ff7c03;
+  background: #fff6d9;
+}
+.error {
+  color: #e50505;
+  background: #f8d3d6;
+}
+.hint {
+  color: #255ce7;
+  background: #d8e1f9;
+}
+.closeX {
+  font-size: 24px;
+  color: #7484ab;
+  cursor: pointer;
+}
+.custom-tree-node {
+  img {
+    width: 18px;
+    height: 18px;
+    vertical-align: middle;
+    margin-right: 3px;
+  }
+  .label {
+    vertical-align: middle;
+  }
+}
+::v-deep(.tree) {
+  & > .el-tree-node:after {
+    border-top: none;
+  }
+
+  .el-tree-node {
+    position: relative;
+    padding-left: 16px;
+  }
+
+  .el-tree-node__children {
+    padding-left: 16px;
+  }
+
+  //  去掉根节点垂直线
+  & > .el-tree-node:before {
+    border-left: none !important;
+  }
+
+  //  去掉根节点水平线
+  & > .el-tree-node:after {
+    border-top: none !important;
+  }
+
+  //  垂直线
+  .el-tree-node:before {
+    content: "";
+    left: -2px;
+    position: absolute;
+    border-left: 1px dashed #bbbfc2;
+    bottom: 0px;
+    height: 100%;
+    width: 1px;
+  }
+
+  //  同级最后一个节点垂直线高度
+  .el-tree-node :last-child:before {
+    height: 8px;
+    top: 2px;
+  }
+
+  //  水平线
+  .el-tree-node:after {
+    content: "";
+    left: -2px;
+    position: absolute;
+    border-top: 1px dashed #bbbfc2;
+    height: 20px;
+    top: 12px;
+    width: 24px;
+  }
+
+  //  旋转展示时图标
+  .el-tree-node__expand-icon.expanded {
+    -webkit-transform: rotate(0deg);
+    transform: rotate(0deg);
+  }
+
+  //  展示时图标
+  .el-icon-caret-right:before {
+    content: "\e783";
+    font-size: 18px;
+    color: #8ea3b8;
+  }
+
+  //  折叠时图标
+  .el-tree-node__expand-icon.expanded.el-icon-caret-right:before {
+    content: "\e781";
+    font-size: 18px;
+    color: #8ea3b8;
+  }
+
+  //  叶子节点图标
+  .el-tree-node__expand-icon.is-leaf:before {
+    content: "";
+  }
+
+  .el-tree-node__content > .el-tree-node__expand-icon {
+    padding: 2px;
+  }
+
+  .el-tree-node__content {
+    padding-left: 10px !important;
+  }
+}
+.page {
+  display: flex;
+  justify-content: center;
+  margin-top: 10px;
 }
 </style>