瀏覽代碼

修改冲突

“yueshang” 1 年之前
父節點
當前提交
c36843e411
共有 41 個文件被更改,包括 620 次插入258 次删除
  1. 二進制
      scd_tools_ui.rar
  2. 13 5
      src/api/scdCheck/scdCheck.js
  3. 二進制
      src/assets/icon/real_icon/mission_blue.png
  4. 二進制
      src/assets/icon/real_icon/mission_blue@2x.png
  5. 二進制
      src/assets/icon/real_icon/mission_gray.png
  6. 二進制
      src/assets/icon/real_icon/mission_gray@2x.png
  7. 二進制
      src/assets/icon/real_icon/report_blue.png
  8. 二進制
      src/assets/icon/real_icon/report_blue@2x.png
  9. 二進制
      src/assets/icon/real_icon/report_gray.png
  10. 二進制
      src/assets/icon/real_icon/report_gray@2x.png
  11. 二進制
      src/assets/icon/real_icon/setting_blue.png
  12. 二進制
      src/assets/icon/real_icon/setting_blue@2x.png
  13. 二進制
      src/assets/icon/real_icon/setting_gray.png
  14. 二進制
      src/assets/icon/real_icon/setting_gray@2x.png
  15. 二進制
      src/assets/icon/real_icon/system_blue.png
  16. 二進制
      src/assets/icon/real_icon/system_blue@2x.png
  17. 二進制
      src/assets/icon/real_icon/system_gray.png
  18. 二進制
      src/assets/icon/real_icon/system_gray@2x.png
  19. 二進制
      src/assets/image/back_gray.png
  20. 二進制
      src/assets/image/back_now.png
  21. 二進制
      src/assets/image/close_red.png
  22. 二進制
      src/assets/image/flash_scd.png
  23. 二進制
      src/assets/image/head_dotted.png
  24. 二進制
      src/assets/image/mini_gray.png
  25. 二進制
      src/assets/image/window_close.png
  26. 二進制
      src/assets/image/window_min.png
  27. 91 26
      src/pages/components/HeadMenu.vue
  28. 9 3
      src/pages/components/SideMenu.vue
  29. 8 4
      src/pages/components/drawModal/AddAbility.vue
  30. 127 39
      src/pages/components/drawModal/LineDouble.vue
  31. 3 3
      src/pages/home/HomePage.vue
  32. 5 1
      src/pages/login/LoginNow.vue
  33. 25 5
      src/pages/mission/MissionVue.vue
  34. 5 1
      src/pages/mission/components/CreateMis.vue
  35. 110 29
      src/pages/mission/components/HaveMis.vue
  36. 1 1
      src/pages/netStructPicture/components/scdTree.vue
  37. 61 93
      src/pages/netStructPicture/index.vue
  38. 19 9
      src/pages/netStructPicture/modalCom/LookScd.vue
  39. 81 9
      src/pages/setting/components/ReportModule.vue
  40. 54 22
      src/pages/setting/modalComp/Addrm.vue
  41. 8 8
      src/utils/allImg.js

二進制
scd_tools_ui.rar


+ 13 - 5
src/api/scdCheck/scdCheck.js

@@ -1,18 +1,25 @@
 import request from '@/utils/request'
 function scdStart(data){//开始对比
     return request({
-        url:`/scd_check_tools/comp/start`,
+        url:`/scd/comp/start`,
         method:"post",
         data,
     })
 }
 function switchIed(data){//指定装置差异对比结果分类统计
     return request({
-        url:`/scd_check_tools/comp/iedstat/type`,
+        url:`/scd/comp/iedstat/type`,
         method:"get",
         params:data,
     })
 }
+function flashStationDui(data){
+    return request({
+        url:`/scd/comp/list`,//获取指定变电站的差异对比记录列表
+        method:"get",
+        params:data
+    })
+}
 function flashStation(data){
     return request({
         url:`/scd/comp/result`,//获取指定变电站的差异对比记录列表
@@ -22,21 +29,21 @@ function flashStation(data){
 }
 function scdResult(data){
     return request({
-        url:`/scd_check_tools/comp/result`,//获取指定差异对比的详细结果列表
+        url:`/scd/comp/result`,//获取指定差异对比的详细结果列表
         method:"get",
         params:data
     })
 }
 function scdAll(data){
     return request({
-        url:`/scd_check_tools/comp/stat/result`,//获取scd差异对比结果概览统计
+        url:`/scd/comp/stat/result`,//获取scd差异对比结果概览统计
         method:"get",
         params:data
     })
 }
 function scdTree(data){
     return request({
-        url:`/scd_check_tools/comp/tree`,//获取SCD校验对象树
+        url:`/scd/comp/tree`,//获取SCD校验对象树
         method:"get",
         params:data
     })
@@ -56,4 +63,5 @@ export default{
     scdAll,
     scdTree,
     lookCheck,
+    flashStationDui
 }

二進制
src/assets/icon/real_icon/mission_blue.png


二進制
src/assets/icon/real_icon/mission_blue@2x.png


二進制
src/assets/icon/real_icon/mission_gray.png


二進制
src/assets/icon/real_icon/mission_gray@2x.png


二進制
src/assets/icon/real_icon/report_blue.png


二進制
src/assets/icon/real_icon/report_blue@2x.png


二進制
src/assets/icon/real_icon/report_gray.png


二進制
src/assets/icon/real_icon/report_gray@2x.png


二進制
src/assets/icon/real_icon/setting_blue.png


二進制
src/assets/icon/real_icon/setting_blue@2x.png


二進制
src/assets/icon/real_icon/setting_gray.png


二進制
src/assets/icon/real_icon/setting_gray@2x.png


二進制
src/assets/icon/real_icon/system_blue.png


二進制
src/assets/icon/real_icon/system_blue@2x.png


二進制
src/assets/icon/real_icon/system_gray.png


二進制
src/assets/icon/real_icon/system_gray@2x.png


二進制
src/assets/image/back_gray.png


二進制
src/assets/image/back_now.png


二進制
src/assets/image/close_red.png


二進制
src/assets/image/flash_scd.png


二進制
src/assets/image/head_dotted.png


二進制
src/assets/image/mini_gray.png


二進制
src/assets/image/window_close.png


二進制
src/assets/image/window_min.png


+ 91 - 26
src/pages/components/HeadMenu.vue

@@ -3,26 +3,37 @@
         <div class="bigBox">
             <!-- 左侧标题 -->
             <div class="monyBox">
-                <el-icon class="folders">
+                <!-- <el-icon class="folders">
                     <FolderRemove />
                 </el-icon>
-                <span class="headSpan">变电站scd检测</span>
+                <span class="headSpan">变电站scd检测</span> -->
+                <img style="display: block;" src="../../assets/image/flash_scd.png" alt="">
             </div>
             <!-- 右侧功能 -->
             <div class="setBox">
                 <!-- 返回图标 -->
-                <div style="padding-right: 10px;border-right: 1px solid white;">
+                <div style="padding-right: 16px;border-right: 1px solid white;">
                     <span class="outImg">
-                        <img class="backImg" src="../../assets/icon/back_to.png" alt="">
+                        <img class="backImg" @mouseover="imgOver" @mouseout="imgOut"
+                            :src="img ? require('../../assets/image/back_gray.png') : require('../../assets/image/back_now.png')"
+                            alt="">
                     </span>
                 </div>
                 <!-- 时间、日期显示 -->
-                <div>
-                    <span class="date" style="margin-right: 10px;">{{ getDate() }}</span>
-                    <span class="date">{{ times }}</span>
+                <div style="width: 30%;position: relative;">
+                    <span class="date" style="
+                    margin-right: 16px;
+                    width: 100%;
+                    height: 30px;
+                    display: inline-block;
+                    text-align: center;
+                    line-height: 30px;
+                    ">{{ getDate() }} {{ times }}</span>
+                    <img style="width: 100%;position: absolute;top: 23px;left: 0px;"
+                        src="../../assets/image/head_dotted.png" alt="">
                 </div>
                 <!-- 用户栏 -->
-                <div class="userBox">
+                <div class="userBox" style="background-color: rgba(50,59,91, 0.9);">
                     <span class="userSpan">
                         <img style="width: 12px;height: 12px;" src="../../assets/icon/user_gray.png" alt="">
                     </span>
@@ -36,8 +47,13 @@
                                     <!-- 个人信息 -->
                                     <div>
                                         <!-- 头像及登陆信息 -->
-                                        <div
-                                            style="display: flex;justify-content: space-around;align-items: center;height: 80px;border-bottom: 1px solid gray;">
+                                        <div style="
+                                            display: flex;
+                                            justify-content: space-around;
+                                            align-items: center;
+                                            height: 80px;
+                                            border-bottom: 1px solid gray;
+                                            ">
                                             <div>
                                                 <img style="width: 40px;height: 40px;" src="../../assets/icon/Avatar.png"
                                                     alt="">
@@ -64,8 +80,12 @@
                 </div>
                 <!-- 最小化,关闭 -->
                 <div>
-                    <span class="moreSet" @click="miniSize">-</span>
-                    <span class="moreSet" @click="closeSize">x</span>
+                    <!-- <span class="moreSet" @click="miniSize">-</span>
+                    <span class="moreSet" @click="closeSize">x</span> -->
+                    <img :src="mini ? require('../../assets/image/mini_gray.png') : require('../../assets/image/window_min.png')"
+                        @click="miniSize" @mouseover="miniOver" @mouseout="miniOut" style="margin: 0 10px;" alt="">
+                    <img :src="close ? require('../../assets/image/close_red.png') : require('../../assets/image/window_close.png')"
+                        @click="closeSize" @mouseover="closeOver" @mouseout="closeOut" alt="">
                 </div>
             </div>
         </div>
@@ -79,6 +99,9 @@ export default {
     setup() {
         let times = ref('')//时间显示
         let router = useRouter()
+        let mini = ref(false)
+        let close = ref(false)
+        let img = ref(false)
         // 获取日期
         function getDate() {
             const currentDate = new Date();
@@ -105,10 +128,28 @@ export default {
         function closeSize() {
             windowEx.Close()
         }
+        function miniOver() {//鼠标移入
+            mini.value = true
+        }
+        function miniOut() {//鼠标移出
+            mini.value = false
+        }
+        function closeOver() {
+            close.value = true
+        }
+        function closeOut() {
+            close.value = false
+        }
+        function imgOver() {
+            img.value = true
+        }
+        function imgOut() {
+            img.value = false
+        }
         // 退出登录
-        function logOut(){
-            if(typeof windowEx != "undefined"){
-                windowEx.Size(384,426)
+        function logOut() {
+            if (typeof windowEx != "undefined") {
+                windowEx.Size(384, 426)
             }
             localStorage.removeItem("loginStatus")
             router.push("/login")
@@ -126,12 +167,23 @@ export default {
             miniSize,//最小化窗口
             closeSize,//关闭窗口
             logOut,//登出
+            mini,
+            miniOut,
+            miniOver,
+            close,
+            closeOut,
+            closeOver,
+            img,
+            imgOver,
+            imgOut,
         }
     }
 }
 </script>
 
 <style scoped>
+@import url('https://fonts.font.im/css?family=Hanalei+Fill');
+
 p {
     margin: 0;
     padding: 0;
@@ -149,10 +201,11 @@ p {
 }
 
 .monyBox {
-    width: 230px;
+    width: 12%;
     height: 50px;
-    line-height: 50px;
-
+    display: flex;
+    justify-content: space-around;
+    align-items: center;
 }
 
 .folders {
@@ -166,10 +219,11 @@ p {
     background-clip: text;
     color: transparent;
     font-size: 26px;
+    font-family: 'Hanalei Fill', cursive;
 }
 
 .setBox {
-    width: 400px;
+    width: 25%;
     height: 50px;
     /* border: 1px solid white; */
     display: flex;
@@ -179,17 +233,17 @@ p {
 
 .outImg {
     display: block;
-    width: 26px;
-    height: 26px;
-    background: linear-gradient(to bottom, #BAC0E1, #EDF2FF);
+    width: 30px;
+    height: 30px;
+    /* background: linear-gradient(to bottom, #BAC0E1, #EDF2FF); */
     border-radius: 50%;
     text-align: center;
     line-height: 26px;
 }
 
 .backImg {
-    width: 14px;
-    height: 14px;
+    width: 30px;
+    height: 30px;
     z-index: 2;
 }
 
@@ -199,7 +253,9 @@ p {
     background-clip: text;
     color: transparent;
     font-size: 14px;
-    border-bottom: 1px dotted white;
+    /* border-bottom: 1px dotted white; */
+    border-right: 1px solid white;
+    padding-right: 16px;
 }
 
 .userSpan {
@@ -220,6 +276,7 @@ p {
     font-size: 14px;
     text-align: center;
     line-height: 25px;
+    margin: 0 10px;
 }
 
 .moreSet {
@@ -253,4 +310,12 @@ p {
     display: flex;
     justify-content: space-around;
     align-items: center;
-}</style>
+}
+
+.userBox {
+    width: 25%;
+    height: 30px;
+    text-align: center;
+    line-height: 30px;
+}
+</style>

+ 9 - 3
src/pages/components/SideMenu.vue

@@ -3,7 +3,7 @@
         <div class="bigBox">
             <template v-for="(item, index) in menuList">
                 <div class="menuBox" @click="routeBoxClick(item)">
-                    <img :style="{ 'background': item.isChosen ? 'linear-gradient(138deg, #dbdbdb 0%, #cccecf 100%)' : 'none' }"
+                    <img :style="{ 'background': item.isChosen ? 'linear-gradient(138deg, #F1F3F9 0%, #F1F3F9 100%)' : 'none' }"
                         :src="item.isChosen ? item.isChoose : item.noChoose" class="rImg" alt="">
                     <p class="rp">{{ item.name }}</p>
                 </div>
@@ -108,8 +108,8 @@ p {
 
 .rImg {
     display: block;
-    width: 28px;
-    height: 28px;
+    width: 40px;
+    height: 40px;
     border-radius: 5px;
     margin: 0 auto;
     /* border-image: linear-gradient(171deg, rgba(215, 237, 255, 1), rgba(158, 210, 253, 1)) 0 0; */
@@ -119,5 +119,11 @@ p {
     width: 80px;
     height: 30px;
     font-size: 14px;
+    font-family: Source Han Sans CN, Source Han Sans CN;
+    font-weight: 400;
+    color: #1A2447;
+    line-height: 22px;
+    -webkit-background-clip: text;
+    /* -webkit-text-fill-color: transparent; */
 }
 </style>

+ 8 - 4
src/pages/components/drawModal/AddAbility.vue

@@ -14,7 +14,7 @@
                 </el-form-item>
                 <el-form-item label="端子描述关键词" prop="setMemo">
                     <el-input style="width: 350px;" v-model="abilityFrom.setMemo"></el-input>
-                    <p style="color: #2C5BE5;font-size: 16px;">关键词之间“:”表示或者,“&”表示并且</p>
+                    <p style="color: #2C5BE5;font-size: 16px;">关键词之间“|”表示或者,“&”表示并且</p>
                 </el-form-item>
             </el-form>
             <template #footer>
@@ -78,7 +78,7 @@ export default {
                 { required: true, message: '请选择设计功能名称', trigger: 'change' },
             ],
             setSon: [
-                { required: true, message: '请输入设计端子关系', trigger: 'blur' },
+                { required: true, message: '请输入设计端子名称', trigger: 'blur' },
             ],
             setMemo: [
                 { required: true, message: '请输入端子描述关键词', trigger: 'blur' },
@@ -86,6 +86,7 @@ export default {
         })//表单验证
         let numState = ref(0)//0为新增,1为修改
         let needEditRow = ref({})//需要修改的整个对象属性
+        let newAddId = ref("")//新增的id
         // 监听props.tabledata变化赋值
         watch(() => props.tableData, (newVal) => {
             fatherToSon.value = newVal
@@ -93,7 +94,6 @@ export default {
         // 监听props.modelids变化并赋值
         watch(() => props.modelIds, (newVal) => {
             needModel.value = newVal
-            console.log(needModel.value, 'watch');
         }, { immediate: true })
         // 监听props.iedtypes变化并赋值
         watch(() => props.iedTypes, (newVal) => {
@@ -144,7 +144,8 @@ export default {
                 flow.saveModelAndIed({
                     model_id: needModel.value - 0,
                     ied_type: needIedType.value,
-                    func_name: abilityFrom.value.setAbName,
+                    func_id:newAddId?.value,
+                    func_name: abilityFrom.value?.setAbName,
                     fcda_name: abilityFrom.value.setSon,
                     fcda_match_exp: abilityFrom.value.setMemo,
                 }).then(res => {
@@ -196,8 +197,10 @@ export default {
         function abNameChange(e) {
             if (e.label) {
                 abilityFrom.value.setAbName = e.label
+                newAddId.value = e.id
             } else {
                 abilityFrom.value.setAbName = e
+                console.log(e,'id');
             }
 
         }
@@ -221,6 +224,7 @@ export default {
             needIedType,//需要的iedtype
             numState,//0为新增,1为修改
             needEditRow,//需要的整个对象属性
+            newAddId,//新增的id
         }
     }
 }

+ 127 - 39
src/pages/components/drawModal/LineDouble.vue

@@ -18,7 +18,7 @@
                     <p class="background" :style="{ 'background-image': `url(${setBackground})`, 'color': setColor }">{{
                         setGooseOrSv }}</p>
                 </div>
-                <div class="rightBox">
+                <div class="rightBox" v-loading="loading">
                     <h1 style="
                     border-bottom: 1px solid #7484AB;
                     width: 73%;
@@ -26,14 +26,13 @@
                     padding-bottom: 10px;
                     ">{{ endTxt }}</h1>
                     <div>
-                        <div style="margin-bottom: 10px;" v-for="(item, index) in outList">
+                        <!-- <div style="margin-bottom: 10px;" v-for="(item, index) in outList">
                             <div
                                 style="width: 80%;display: flex;justify-content: space-around;align-items: center;margin: 0 auto;">
                                 <span style="display: block;border: 1px solid #2B5AE5;width: 42px;height: 42px;"
                                     @click="toggleVisibility(index)">
-                                    <svg v-show="visibleItems.includes(item)" t="1704938867254" class="icon"
-                                        viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4269"
-                                        width="40" height="40">
+                                    <svg v-show="isVisible(item)" t="1704938867254" class="icon" viewBox="0 0 1024 1024"
+                                        version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4269" width="40" height="40">
                                         <path
                                             d="M392.533333 806.4L85.333333 503.466667l59.733334-59.733334 247.466666 247.466667L866.133333 213.333333l59.733334 59.733334L392.533333 806.4z"
                                             fill="#2B5AE5" p-id="4270"></path>
@@ -42,7 +41,12 @@
                                 <span style="display: block;" :class="getClass(index)">{{ item.fcda_name
                                 }}</span>
                             </div>
-                        </div>
+                        </div> -->
+                        <el-checkbox-group  v-model="checkList" @change="checkChange">
+                            <el-checkbox v-for="(item, index) in outList" :label="item.id" :key="item.id">
+                                {{ item.fcda_name }}
+                            </el-checkbox>
+                        </el-checkbox-group>
                     </div>
                 </div>
             </div>
@@ -103,8 +107,12 @@ export default {
         let numStatus = ref(0)//判断goose还是sv
         let visibleItems = ref([])//选择的数组
         let fcdaIds = ref("")//需要的fcda_ids
-        let leftIndex = ref(0)//左侧选择的输出下标
+        let leftIndex = ref(-1)//左侧选择的输出下标
         let leftFcda = ref("")//左侧的fcdaid
+        let together = ref("")//绑定的id
+        let checkList = ref([])//select数据
+        let loading = ref(false)
+        let arrNew = ref([])//新的存储fdcdids
         watch(() => props.modelId, (newVal) => {
             modelIds.value = newVal
         })
@@ -130,12 +138,12 @@ export default {
                 model_id: modelIds.value - 0,
                 ied_type: starts.value.ied_type,
             }).then(res => {
-                if(res.code == 0){
+                if (res.code == 0) {
                     curList.value = res.data
-                }else{
+                } else {
                     ElMessage({
-                        message:res.msg,
-                        type:"error"
+                        message: res.msg,
+                        type: "error"
                     })
                 }
             })
@@ -143,12 +151,12 @@ export default {
                 model_id: modelIds.value - 0,
                 ied_type: ends.value.ied_type,
             }).then(res => {
-                if(res.code == 0){
+                if (res.code == 0) {
                     outList.value = res.data
-                }else{
+                } else {
                     ElMessage({
-                        message:res.msg,
-                        type:"error"
+                        message: res.msg,
+                        type: "error"
                     })
                 }
             })
@@ -160,6 +168,9 @@ export default {
         }
         // 确认关闭模态框
         function sureClose() {
+            if (leftFcda.value == '') {
+                leftFcda.value = curList.value[0].id
+            }
             flow.saveModelOn({
                 model_id: modelIds.value - 0,
                 from_ied_type: starts.value.ied_type,
@@ -168,10 +179,20 @@ export default {
                 to_fcda_ids: fcdaIds.value,
                 goosesv: setGooseOrSv.value,
             }).then(res => {
-                console.log(res, '设置');
+                if (res.code == 0) {
+                    ElMessage({
+                        type: "success",
+                        message: "关联成功!"
+                    })
+                    dialogVisible.value = false
+                    emit("lineBack", dialogVisible.value)
+                } else {
+                    ElMessage({
+                        type: "error",
+                        message: res.msg
+                    })
+                }
             })
-            dialogVisible.value = false
-            emit("lineBack", dialogVisible.value)
         }
         // 返回goose还是sv
         const setGooseOrSv = computed(() => {
@@ -197,28 +218,57 @@ export default {
                 return 'blue'
             }
         })
-        // 获取fcda_ids
-        function toggleVisibility(index) {
-            const item = outList.value[index];
-            const itemIndex = visibleItems.value.findIndex((i) => i === item);
-            if (itemIndex === -1) {
-                visibleItems.value.push(item);
-            } else {
-                visibleItems.value.splice(itemIndex, 1);
-            }
-            fcdaIds.value = visibleItems.value.map((item, index) => {
-                return item.id
-            }).join(",")
-        };
         // 下标选择
         function setIndex(row, num) {
-            leftFcda.value = row.id
-            leftIndex.value = num
+            loading.value = true
+            flow.getModelOn({
+                model_id: modelIds.value - 0,
+                from_fcda_id: row.id - 0
+            }).then(res => {
+                if (res.data != null) {
+                    together.value = res.data
+                    checkList.value = together.value.map(item => item.to_fcda_id);
+                    fcdaIds.value = res.data.map(item => {
+                        return item.to_fcda_id
+                    }).join(",")
+                    loading.value = false
+                } else {
+                    together.value = []
+                    checkList.value = []
+                    loading.value = false
+                }
+            })
+            if (row || num) {
+                leftFcda.value = row.id
+                leftIndex.value = num
+            }
         }
-        // 设置多选span的class
-        function getClass(index) {
-            const item = outList.value[index];
-            return visibleItems.value.includes(item) ? 'results' : 'anthers';
+        // function isVisible(item) {
+        //     if (together.value.length > 0) {
+        //         loading.value = false
+        //         return together.value.some((togetherItem) => togetherItem.to_fcda_id === item.id);
+        //     }
+        // };
+        // // 设置多选span的class
+        // function getClass(index) {
+        //     const item = outList.value[index];
+        //     return visibleItems.value.includes(item) ? 'results' : 'anthers';
+        // }
+        // // 获取fcda_ids
+        // function toggleVisibility(index) {
+        //     const item = outList.value[index];
+        //     const itemIndex = visibleItems.value.findIndex((i) => i === item);
+        //     if (itemIndex === -1) {
+        //         visibleItems.value.push(item);
+        //     } else {
+        //         visibleItems.value.splice(itemIndex, 1);
+        //     }
+        //     fcdaIds.value = visibleItems.value.map((item, index) => {
+        //         return item.id
+        //     }).join(",")
+        // };
+        function checkChange(e) {
+            fcdaIds.value = e.join(",")
         }
         onMounted(() => {
             reload()
@@ -239,13 +289,19 @@ export default {
             setBackground,//判断显示背景图
             setColor,//判断文字颜色
             visibleItems,//选择的数组
-            toggleVisibility,//模拟多选框方法
+            // toggleVisibility,//模拟多选框方法
             fcdaIds,//需要的fcda_ids
             leftIndex,//左侧下标选择
             setIndex,//下标选择函数
-            getClass,//设置多选span的class函数
+            // getClass,//设置多选span的class函数
             leftFcda,//左侧单选的fcdaid
             outList,//箭头指向端list
+            together,//绑定的id
+            // isVisible,
+            loading,
+            checkList,
+            checkChange,
+            arrNew,//新的存储ids
         }
     }
 }
@@ -341,4 +397,36 @@ export default {
     background-position: 100% 50%;
     line-height: calc(100vh - 850px);
 }
+
+:deep(.el-checkbox__inner) {
+    width: 40px !important;
+    height: 40px !important;
+    background-color: white !important;
+}
+
+:deep(.el-checkbox__inner::after) {
+    height: 30px !important;
+    left: 11px !important;
+    width: 15px !important;
+    top: -2px !important;
+    border-color: #2B5AE5;
+}
+
+:deep(.el-checkbox__input.is-checked .el-checkbox__inner::after) {
+    border-color: #2B5AE5;
+}
+
+:deep(.el-checkbox) {
+    width: 300px !important;
+    height: 50px !important;
+    margin-right: 0 !important;
+}
+
+:deep(.el-checkbox__label) {
+    width: 202px !important;
+    height: 42px !important;
+    margin-left: 10px !important;
+    line-height: 42px !important;
+    text-align: center;
+}
 </style>

+ 3 - 3
src/pages/home/HomePage.vue

@@ -60,12 +60,12 @@ export default {
 }
 
 .elMain {
-    width: 85vw;
+    width: 87vw;
     height: 91vh;
     background-image: url('../../assets/image/rightSide.png');
     background-repeat: no-repeat;
-    /* background-position: 20px 20px; */
-    background-size: 99% 100%;
+    background-position: 0px 0px;
+    background-size: 100% 100%;
     margin: 0;
     padding: 0;
 }

+ 5 - 1
src/pages/login/LoginNow.vue

@@ -129,9 +129,13 @@ export default {
     margin: 0;
     background: #FFFFFF;
     box-shadow: 0px 1px 1.25rem 2px rgba(61, 128, 177, 0.13);
-    position: relative;
+    position: absolute;
     border: 1px solid #ededed;
     border-radius: 3px;
+    left: 50%;
+    top: 50%;
+    margin-top: -17.25rem;
+    margin-left: -15.9rem
 }
 
 .formBox {

+ 25 - 5
src/pages/mission/MissionVue.vue

@@ -4,8 +4,10 @@
             <!-- 三按钮盒子 -->
             <div class="btnBox">
                 <template v-for="(item, index) in btnList">
-                    <span :class="btnSelect == index ? 'result' : 'nowMission'" @click="misChange(item, index)">{{ item.name
-                    }}</span>
+                    <span :class="btnSelect == index ? 'result' : 'nowMission'" :style="{
+                        background: `url(${item.isSelected ? item.isImg : item.noImg})`,
+                        color: item.isSelected ? 'white' : 'black',
+                    }" @click="misChange(item, index)">{{ item.name }}</span>
                 </template>
                 <!-- <router-link to="/home/int">测试</router-link> -->
             </div>
@@ -37,6 +39,8 @@ import HaveMis from './components/HaveMis.vue';
 import StartMission from './components/StartMission.vue';
 import HistoryMis from './components/HistoryMis.vue';
 import task from '@/api/task';
+import blueBtn from '@/assets/image/btn_blue.png'
+import grayBtn from '@/assets/image/btn_gray.png'
 export default {
     setup() {
         document.documentElement.style.fontSize = (window.innerWidth / 1920 * 12) + "px"
@@ -44,14 +48,26 @@ export default {
         let btnList = ref([
             {
                 name: "当前检测任务",
+                id: 1,
+                noImg: grayBtn,
+                isImg: blueBtn,
+                isSelected: true, // 初始状态未选中
                 value: "1"
             },
             {
                 name: "新建检测任务",
-                value: "2",
+                id: 2,
+                noImg: grayBtn,
+                isImg: blueBtn,
+                isSelected: false, // 初始状态未选中
+                value: "2"
             },
             {
                 name: "历史任务",
+                id: 3,
+                noImg: grayBtn,
+                isImg: blueBtn,
+                isSelected: false, // 初始状态未选中
                 value: "3"
             }
         ])//按钮列表
@@ -91,6 +107,10 @@ export default {
             if (num == 1) {
                 status.value = 1
             }
+            // 将当前点击的标签设为选中状态,其他标签设为非选中
+            btnList.value.forEach((tag) => {
+                tag.isSelected = tag.id === row.id;
+            });
         }
         function createMis() {
             btnSelect.value = 1
@@ -185,7 +205,7 @@ export default {
     line-height: 40px;
     font-size: 14px;
     color: white;
-    border-radius: 8px;
+    /* border-radius: 8px; */
 }
 
 .result {
@@ -200,7 +220,7 @@ export default {
     line-height: 40px;
     font-size: 14px;
     color: white;
-    border-radius: 8px;
+    /* border-radius: 8px; */
 }
 
 .noMisBox {

+ 5 - 1
src/pages/mission/components/CreateMis.vue

@@ -314,6 +314,7 @@ export default {
                         if (res.code == 0) {
                             successScd.value = true
                             anyData.value = res.data
+                            console.log(anyData.value, 'any')
                         }
                     })
                 }
@@ -330,7 +331,7 @@ export default {
                 if (res.code == 0) {
                     loading.close()
                 }
-                scd.loadScd({ station_id: 861, scd_path: res.data.path, scd_name: res.data.filename }).then(the => {
+                scd.loadScd({ station_id: newMission.value.flashId - 0, scd_path: res.data.path, scd_name: res.data.filename }).then(the => {
                     // scd.getLoadScd({ scd_id: the.data - 0 }).then(lod => {
                     //     console.log(lod,'rsasdas');
                     if (the.code == 0) {
@@ -556,7 +557,10 @@ em {
 }
 
 .mx-1 {
+    width: 180px;
+    height: 30px;
     margin-right: 10px;
+    margin-top: 5px;
     border: 1px solid #5779D7;
 }
 </style>

+ 110 - 29
src/pages/mission/components/HaveMis.vue

@@ -16,18 +16,19 @@
         <div>
           <p class="norep">待检测任务</p>
         </div>
-        <div style="display: flex;justify-content: flex-start;align-items: center;overflow-x: auto;">
+        <div style="display: flex;justify-content: flex-start;align-items: center;overflow-x: auto;"
+          v-if="nowRunList.name || misList.length > 0">
           <div :class="setImg(nowRunList)" v-if="nowRunList.name">
             <div class="intBoxOne">
               <p class="intOne">
                 <span style="font-size: 18px;color: white;">{{ nowRunList.name }}</span>
                 <span style="font-size: 12px;" @click="editItem(nowRunList)">编辑</span>
               </p>
-              <p>
+              <p style="margin-left: 8px;">
                 <img style="width: 15px;height: 15px;" src="../../../assets/icon/white_flash.png" alt="" />
                 <span style="font-size: 12px;color:white" class="commonSpan">{{ nowRunList.station_name }}</span>
               </p>
-              <p>
+              <p style="margin-left: 8px;">
                 <img style="width: 15px;height: 15px;" src="../../../assets/icon/white_clock.png" alt="" />
                 <span style="font-size: 12px;color:white" class="commonSpan">{{ nowRunList.ct }}</span>
               </p>
@@ -38,53 +39,75 @@
                   v-loading="emLoading"></em></span>
             </div>
           </div>
-          <div class="intBox" v-for="(item, index) in misList" :style="setImg(item, index)">
+          <div class="intBox" v-for="(item, index) in misList" :style="setImg(item, index)" @mouseover="intOver(index)"
+            @mouseout="intOut(index)">
             <div class="intBoxOne">
               <p class="intOne">
-                <span style="font-size: 18px;color: #1A2447;">{{ item.name }}</span>
+                <span style="font-size: 18px;">{{ item.name }}</span>
                 <span style="font-size: 12px;cursor: pointer;" @click="editItem(item, index)">编辑</span>
               </p>
-              <p>
-                <img style="width: 15px;height: 15px;" src="../../../assets/icon/flash_darkBlue.png" alt="" />
-                <span style="font-size: 12px;color:#7484AB" class="commonSpan">{{ item.station_name }}</span>
+              <p style="margin-left: 8px;">
+                <img style="width: 15px;height: 15px;"
+                  :src="isImg && isIndex == index ? require('../../../assets/icon/white_flash.png') : require('../../../assets/icon/flash_darkBlue.png')"
+                  alt="" />
+                <span style="font-size: 12px;" class="commonSpan">{{ item.station_name }}</span>
               </p>
-              <p>
-                <img style="width: 15px;height: 15px;" src="../../../assets/icon/clock_darkBlue.png" alt="" />
-                <span style="font-size: 12px;color:#7484AB" class="commonSpan">{{ item.ut }}</span>
+              <p style="margin-left: 8px;">
+                <img style="width: 15px;height: 15px;"
+                  :src="isImg && isIndex == index ? require('../../../assets/icon/white_clock.png') : require('../../../assets/icon/clock_darkBlue.png')"
+                  alt="" />
+                <span style="font-size: 12px;" class="commonSpan">{{ item.ut }}</span>
               </p>
             </div>
             <!-- 点击检测 -->
             <div class="setNow">
-              <span style="font-size: 16px;color:blue" class="setnowspan" @click="startNow(item, index)">立即检测</span>
+              <span style="font-size: 16px;" class="setnowspan" @click="startNow(item, index)">立即检测</span>
             </div>
           </div>
         </div>
+        <div
+          style="width: 100%;height: calc(100vh - 800px);margin: 0 auto;text-align: center;line-height: calc(100vh - 800px);"
+          v-else>
+          <p style="display: flex;justify-content: center;align-items: center;">
+            <el-icon style="font-size: 16px;display: block;color: #7484AB;">
+              <Warning />
+            </el-icon>
+            <span style="display: block;color: #7484AB;">暂无待检测任务,请新建</span>
+          </p>
+        </div>
       </div>
+
       <!-- 已完成 -->
       <div class="noReportBox">
         <div>
           <p class="norep">最近检测任务-已完成</p>
         </div>
         <div style="display: flex;justify-content: flex-start;align-items: center;overflow-x: auto;">
-          <div class="intBox" v-for="(item, index) in passList">
+          <div class="intBox" v-for="(item, index) in passList" @mouseover="intOvers(index)" @mouseout="intOuts(index)">
             <div class="intBoxOne">
               <p class="intOne">
                 <span>{{ item.name }}</span>
-                <span>详情→</span>
+                <span>详情<el-icon>
+                    <Right />
+                  </el-icon></span>
               </p>
-              <p>
-                <img src="../../../assets/icon/white_flash.png" alt="" />
-                <span style="font-size: 12px;color:#7484AB" class="commonSpan">{{ item.station_name }}</span>
+              <p style="margin-left: 8px;">
+                <img style="width: 15px;height: 15px;"
+                  :src="isImgs && isIndexs == index ? require('../../../assets/icon/white_flash.png') : require('../../../assets/icon/flash_darkBlue.png')"
+                  alt="" />
+                <span style="font-size: 12px;" class="commonSpan">{{ item.station_name }}</span>
               </p>
-              <p>
-                <img src="../../../assets/icon//white_clock.png" alt="" />
-                <span style="font-size: 12px;color:#7484AB" class="commonSpan">{{ item.ct }}</span>
+              <p style="margin-left: 8px;">
+                <img style="width: 15px;height: 15px;"
+                  :src="isImgs && isIndexs == index ? require('../../../assets/icon/white_clock.png') : require('../../../assets/icon/clock_darkBlue.png')"
+                  alt="" />
+                <span style="font-size: 12px;" class="commonSpan">{{ item.ct }}</span>
               </p>
             </div>
             <!-- 点击检测 -->
             <div class="setNow">
               <span class="setnowspan" @click="goNetStructPicture(item)">scd可视化</span>
-              <span class="setnowspan">|</span>
+              <span style="margin: 0 10px;" class="setnowspan">|</span>
               <span class="setnowspan">检测结果</span>
             </div>
           </div>
@@ -109,6 +132,10 @@ export default {
     let nowRunList = ref({})//正在检测任务列表
     let passList = ref([])//已完成检测任务列表
     let emLoading = ref(true)
+    let isImg = ref(false)
+    let isImgs = ref(false)
+    let isIndex = ref(999999)
+    let isIndexs = ref(999999)
     function scdLink() {
       router.push("/home/scdMap");
     }
@@ -129,8 +156,8 @@ export default {
         path: "/home/netStructPicture",
         query: {
           id: row.scd_id,
-          name: 'UnitTest_检测任务',
-          stationId:row.station_id
+          name: row.name,
+          station: row.station_id,
         },
       });
     }
@@ -191,6 +218,22 @@ export default {
         return "intBox"
       }
     }
+    function intOver(num) {
+      isIndex.value = num
+      isImg.value = true
+    }
+    function intOut(num) {
+      isIndex.value = num
+      isImg.value = false
+    }
+    function intOvers(num) {
+      isIndexs.value = num
+      isImgs.value = true
+    }
+    function intOuts(num) {
+      isIndexs.value = num
+      isImgs.value = false
+    }
     onMounted(() => {
       getList()
     })
@@ -207,6 +250,14 @@ export default {
       setImg,
       passList,//已完成列表
       emLoading,
+      isImg,
+      isImgs,
+      intOver,
+      intOut,
+      intOvers,
+      intOuts,
+      isIndex,
+      isIndexs,
     };
   },
   components: {
@@ -215,9 +266,12 @@ export default {
 </script>
 
 <style scoped>
+@import url('https://fonts.font.im/css?family=Montserrat');
+
 p {
   margin: 0;
   padding: 0;
+  font-family: 'Montserrat', sans-serif;
 }
 
 .bigBox {
@@ -252,6 +306,7 @@ p {
   font-family: Source Han Sans CN-Regular, Source Han Sans CN;
   font-weight: 400;
   color: #7484ab;
+  margin: 10px 0;
   /* line-height: 22px; */
 }
 
@@ -260,6 +315,7 @@ p {
   font-family: Source Han Sans CN-Regular, Source Han Sans CN;
   font-weight: 400;
   color: #1a2447;
+  margin: 10px 0;
 }
 
 .nowEm {
@@ -287,18 +343,32 @@ p {
 }
 
 .intBox {
-  width: 269px;
-  height: 116px;
-  line-height: 20px;
+  width: 336px;
+  height: 144px;
+  line-height: 30px;
   background-repeat: no-repeat;
   background-size: 100% 100%;
   margin: 15px 15px;
-  /* border: 1px solid #255ce7; */
   background-color: #F6F9FF;
   border-radius: 5px;
   box-shadow: inset 0px -3px 3px 0px #C8D4EC;
-  /* border: 1px solid brown; */
-  /* background-image: url(../../../assets/image/card_blue.png); */
+}
+
+.intBox:hover {
+  width: 336px;
+  height: 144px;
+  line-height: 30px;
+  background-repeat: no-repeat;
+  background-size: 100% 100%;
+  margin: 15px 15px;
+  background-color: #7DC6FE;
+  border-radius: 5px;
+  box-shadow: inset 0px -3px 3px 0px #C8D4EC;
+  color: white;
+}
+
+.intBox>div>p>span:hover {
+  color: white;
 }
 
 .intBoxCopy {
@@ -337,6 +407,12 @@ p {
 
 .commonSpan {
   font-size: 14px;
+  color: #7484AB;
+}
+
+.intBox:hover .commonSpan .setnowspan,
+.intBox:hover span {
+  color: white;
 }
 
 .setNow {
@@ -347,6 +423,11 @@ p {
 .setnowspan {
   font-size: 17px;
   cursor: pointer;
+  color: blue;
+}
+
+.needColor {
+  color: #7484AB;
 }
 
 :deep(.el-loading-spinner .circular) {

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

@@ -202,7 +202,7 @@ const lookScdBack = (data, row) => {
 };
 const aktType = () => {
   //初始化数据
-  scdCheck.flashStation({ station_id: route.query.stationId }).then((res) => {
+  scdCheck.flashStationDui({ station_id: route.query.stationId }).then((res) => {
     //获取差异纪录列表
     tableList.value = res.data;
   });

+ 61 - 93
src/pages/netStructPicture/index.vue

@@ -2,14 +2,8 @@
   <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>
@@ -17,9 +11,7 @@
         <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">
@@ -30,18 +22,14 @@
             <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>
               </div>
@@ -49,36 +37,17 @@
                 <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">
@@ -94,24 +63,17 @@
               justify-content: space-between;
               align-items: center;
               margin-top: 5px;
-            "
-          >
+            ">
             <div class="treeBtn">
-              <scdTree @scdTreeBack="scdTreeBack"></scdTree>
+              <scdTree :nowStation="nowStation" @scdTreeBack="scdTreeBack"></scdTree>
             </div>
             <div class="scdMap">
               <scdMap :antherBack="antherBack" :activeNav="activeNav"></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"></SlcCheck>
         <!-- 虚端子关系图 -->
         <div v-if="clickNavCode == 'virtual'">
           <!-- <virtual-relation 
@@ -156,26 +118,36 @@ 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([]);
-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('')//路由传参的scdid
+let antherBack = ref([])
+let nowStation = ref("")//变电站id
+watch(() => antherBack.value, (newVal) => {
+  antherBack.value = newVal
+}, {
+  deep: true
+})
 const reload = () => {
-  nowScdId.value = route.query.id;
-};
+  nowScdId.value = route.query.id
+  nowStation.value = route.query.station
+}
+// const clickNav = (navIndex) => {  //点击导航栏事件
+//   activeNav.value = navIndex;
+// }
+// const handleClick = (val) => {
+//   if (val.props.name == 'first') {
+//     activeNav.value = null
+//     activeName.value = val.props.name
+//   }
+// }
+// const reload = () => {
+//   nowScdId.value = route.query.id;
+// };
 //虚端子关系====
 const isOpen = ref(false);
 //虚端子关系====
@@ -208,24 +180,21 @@ const closeX = () => {
   activeNav.value = null;
 };
 const nowUpload = (file, e) => {
-  upFile.value = file.file;
-  upName.value = file.file.name;
-  cid
-    .fileUpload({ station_id: 861, 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: 861, 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) => {
@@ -304,8 +273,7 @@ $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;
   }

+ 19 - 9
src/pages/netStructPicture/modalCom/LookScd.vue

@@ -42,9 +42,13 @@ export default {
             type: Boolean,
             required: true
         },
-        aktType:{
-            type:Function,
-            required:true
+        aktType: {
+            type: Function,
+            required: true
+        },
+        stations: {//变电站id
+            type: String,
+            required: true
         }
     },
     setup(props, { emit }) {
@@ -53,7 +57,11 @@ export default {
         let alreadyTriggered = ref(false)//全选开关
         let scdid = ref([])//表格选择的scd数组
         let multipleTableRef = ref()
+        let flashId = ref("")//本组件变电站id
         let loading = ref(false)//loading动画
+        watch(() => props.stations, (newVal) => {
+            flashId.value = newVal
+        })
         function handleClose() {//模态框关闭方法
             dialogVisible.value = false
             emit("lookScdBack", dialogVisible.value)
@@ -72,7 +80,7 @@ export default {
                 // idArr = idArr.toString(idArr)
                 scdCheck.scdStart({
                     type: 'scd',
-                    station_id: 861,
+                    station_id: flashId.value - 0,
                     source_scd_id: idArr[0] - 0,
                     target_scd_id: idArr[1] - 0,
                     comp_id: 0
@@ -81,12 +89,12 @@ export default {
                         loading.value = false
                         props.aktType()
                         dialogVisible.value = false
-                        emit("lookScdBack", dialogVisible.value,scdid.value)
-                    }else{
+                        emit("lookScdBack", dialogVisible.value, scdid.value)
+                    } else {
                         loading.value = false
                         ElMessage({
-                            type:"error",
-                            message:"错误"
+                            type: "error",
+                            message: "错误"
                         })
                     }
                 })
@@ -94,7 +102,8 @@ export default {
         }
         function motType() {//初始化数据
             dialogVisible.value = props.lookScdModal
-            scd.getAllScd({ stationid: 861, pageno: 1, pagesize: 20 }).then(res => {//获取所有scd文件
+            flashId.value = props.stations
+            scd.getAllScd({ stationid: flashId.value - 0, pageno: 1, pagesize: 20 }).then(res => {//获取所有scd文件
                 tableList.value = res.data
             })
         }
@@ -143,6 +152,7 @@ export default {
             scdid,//选择的scd文件数组
             multipleTableRef,
             loading,
+            flashId,//本组件变电站id
         }
     }
 }

+ 81 - 9
src/pages/setting/components/ReportModule.vue

@@ -17,13 +17,17 @@
                         <el-input style="width: 260px;" v-model="moduleName" placeholder="请输入模板名称"></el-input>
                     </div>
                     <div class="litBox">
-                        <span>日期范围</span>
-                        <el-date-picker v-model="getTime" @change="timeChange" type="datetimerange" start-placeholder="开始时间"
+                        <span>状态</span>
+                        <el-select v-model="stateValue" @change="stateChange" class="m-2" placeholder="选择状态" size="default"
+                            style="width: 240px">
+                            <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
+                        </el-select>
+                        <!-- <el-date-picker v-model="getTime" @change="timeChange" type="datetimerange" start-placeholder="开始时间"
                             end-placeholder="结束时间" format="YYYY-MM-DD HH:mm:ss" date-format="YYYY/MM/DD ddd"
-                            time-format="A hh:mm:ss" />
+                            time-format="A hh:mm:ss" /> -->
                     </div>
                     <div class="litBox">
-                        <el-button type="primary" plain><el-icon>
+                        <el-button type="primary" plain @click="search"><el-icon>
                                 <Search />
                             </el-icon>查询</el-button>
                         <el-button @click="searchReport"><el-icon>
@@ -43,6 +47,11 @@
                         <el-table-column property="name" label="模板名称" width="auto" show-overflow-tooltip />
                         <el-table-column property="memo" label="模板描述" width="auto" show-overflow-tooltip />
                         <el-table-column property="ct" label="上传时间" width="auto" show-overflow-tooltip />
+                        <el-table-column property="state" label="状态" width="auto" show-overflow-tooltip>
+                            <template #default="scope">
+                                <span>{{ reState(scope.row.state) }}</span>
+                            </template>
+                        </el-table-column>
                         <el-table-column fixed="right" label="操作" width="180">
                             <template #default="scope">
                                 <el-button link type="primary" size="small" @click="openAdd(1, scope.row)">
@@ -66,9 +75,11 @@
                 <Pagination :tLength="totals"></Pagination>
             </div>
             <div class="modalBox">
-                <Addrm v-if="addModal" :addModal="addModal" :addOrEdit="addOrEdit" :editRow="editRow" :searchReport="searchReport" @armBack="armBack">
+                <Addrm v-if="addModal" :addModal="addModal" :addOrEdit="addOrEdit" :editRow="editRow"
+                    :searchReport="searchReport" @armBack="armBack">
                 </Addrm>
-                <Delrm v-if="delModal" :delModal="delModal" :delId="delId" :searchReport="searchReport" @delrmBack="delrmBack"></Delrm>
+                <Delrm v-if="delModal" :delModal="delModal" :delId="delId" :searchReport="searchReport"
+                    @delrmBack="delrmBack"></Delrm>
             </div>
         </div>
     </div>
@@ -81,6 +92,7 @@ import moment from 'moment';
 import Addrm from '../modalComp/Addrm.vue'
 import Delrm from '../modalComp/Delrm.vue'
 import Pagination from './Pagination.vue';
+import { ElMessage } from 'element-plus';
 export default {
     setup() {
         let reportList = ref([])//报告模板列表
@@ -94,11 +106,34 @@ export default {
         let addOrEdit = ref(0)//0为新增,1为修改
         let editRow = ref({})//需要回显的对象
         let delId = ref('')//需要删除的id
+        let options = ref([
+            {
+                label: "全部",
+                value: '',
+            },
+            {
+                label: "启用",
+                value: 1,
+            },
+            {
+                label: "禁用",
+                value: 2
+            }
+        ])
+        let stateValue = ref("")
         function searchReport() {//查询所有报告模板
             report.getReport({ pageno: 1, pagesize: 20 }).then(res => {
-                console.log(res, 'sss');
-                reportList.value = res.data
-                totals.value = res.count
+                if (res.data != null && res.code == 0) {
+                    reportList.value = res.data
+                    totals.value = res.count
+                    stateValue.value = ''//清空选择器
+                    moduleName.value = ''//清空名称
+                } else {
+                    ElMessage({
+                        message: res.msg,
+                        type: "error"
+                    })
+                }
             })
         }
         function handleSelectionChange(val) {//表格多选事件
@@ -108,6 +143,38 @@ export default {
             let a = moment(e[0]).format("YYYY-MM-DD HH:mm:ss")//开始时间
             let b = moment(e[1]).format("YYYY-MM-DD HH:mm:ss")//结束时间
         }
+        function search() {
+            report.getReport({
+                name: moduleName?.value,
+                state: stateValue?.value - 0,
+            }).then(res => {
+                if (res.code == 0 && res.data != null) {
+                    reportList.value = res.data
+                } else if (res.code == 0 && res.data == null) {
+                    console.log('进入了为查询');
+                    ElMessage({
+                        message: "未查询到数据",
+                        type: "info"
+                    })
+                } else if (res.code == 1) {
+                    console.log("进入了错误");
+                    ElMessage({
+                        message: res.msg,
+                        type: "error"
+                    })
+                }
+            })
+        }
+        function stateChange(e) {
+            stateValue.value = e
+        }
+        function reState(num) {
+            if (num == 1) {
+                return '已启用'
+            } else if (num == 2) {
+                return '已禁用'
+            }
+        }
         function openAdd(num, row) {//打开,新增编辑模态框
             addOrEdit.value = num
             editRow.value = row
@@ -145,6 +212,11 @@ export default {
             openDel,//打开删除模态框
             delId,//需要删除的id
             delrmBack,//delrm.vue返回模态框状态
+            search,//查询列表
+            options,//选择
+            stateValue,//选择状态value
+            stateChange,//选择器change事件
+            reState,//表格筛选状态
         }
     },
     components: {

+ 54 - 22
src/pages/setting/modalComp/Addrm.vue

@@ -12,7 +12,7 @@
                     <el-input style="width: 167px;" v-model="addForm.docName" disabled />
                     <el-upload v-model:file-list="fileList" class="upload-demo" :show-file-list="false"
                         :http-request="uploadFile" multiple :limit="1">
-                        <el-button type="primary" plain><el-icon>
+                        <el-button type="primary" plain :disabled="upState"><el-icon>
                                 <DocumentAdd />
                             </el-icon>点击上传文件</el-button>
                         <!-- <template #tip>
@@ -34,7 +34,7 @@
 </template>
 
 <script>
-import { ref, onMounted, toRefs, reactive } from 'vue';
+import { ref, onMounted, toRefs, reactive, watch } from 'vue';
 import report from '@/api/report';
 import cid from '@/api/cid/cid';
 import { ElMessage } from 'element-plus';
@@ -52,19 +52,22 @@ export default {
             type: Object,
             required: true
         },
-        searchReport:{
-            type:Function,
-            required:true
+        searchReport: {
+            type: Function,
+            required: true
         }
     },
     setup(props, { emit }) {
         let dialogVisible = ref(false)
         let result = props.addModal
         let obj = props.editRow
-        let tipsNow = props.addOrEdit
+        let tipsNow = ref(0)//新增编辑,0新增,1编辑
         let filesCacl = ref({})
+        let needRow = ref({})//需要编辑的数据
+        let needId = ref("")//需要的id
         let { cancels, sureAdd } = toRefs(props)
         let titleTips = ref('新增')
+        let upState = ref(false)//上传文件状态
         let addForm = ref({
             name: "",
             docid: "",
@@ -83,19 +86,32 @@ export default {
                 { required: true, message: '还未选择文件', trigger: 'blur' },
             ],
         })
+        watch(() => props.addOrEdit, (newVal) => {
+            tipsNow.value = newVal
+        })
         function lineList() {//接收父组件参数
-            if (tipsNow == 0) {
+            tipsNow.value = props.addOrEdit
+            if (tipsNow.value == 0) {
                 titleTips.value = '新增'
+                upState.value = false
             }
-            if (tipsNow == 1) {
+            if (tipsNow.value == 1) {
                 titleTips.value = '编辑'
+                upState.value = true
+                needRow.value = props.editRow
+                addForm.value.name = needRow.value.name
+                addForm.value.docid = needRow.value.doc_id
+                // addForm.value.docName = needRow.value.
+                addForm.value.memos = needRow.value.memo
+                addForm.value.states = needRow.value.state
+                needId.value = needRow.value.id
             }
             dialogVisible.value = result
         }
         function uploadFile(e) {
             addForm.value.docName = e.file.name
             filesCacl.value = e.file
-            cid.fileUpload({ station_id: 861, file: filesCacl.value,attachment_type:'tpl' }).then(res => {
+            cid.fileUpload({ station_id: 9999, file: filesCacl.value, attachment_type: "tpl" }).then(res => {
                 addForm.value.docid = res.data.fileid
             })
         }
@@ -104,32 +120,45 @@ export default {
             emit("armBack", dialogVisible.value)
         }
         function getSure() {
-            if (tipsNow == 0) {
+            if (tipsNow.value == 0) {
                 report.addReport({
                     name: addForm.value.name,
                     doc_id: addForm.value.docid - 0,
                     memo: addForm.value.memos,
                     state: addForm.value.states - 0,
                 }).then(res => {
-                    ElMessage({
-                        type:"success",
-                        message:"新增成功"
-                    })
-                    props.searchReport()
-                    dialogVisible.value = false
-                    emit("armBack", dialogVisible.value)
+                    if (res.code == 0) {
+                        ElMessage({
+                            type: "success",
+                            message: "新增成功"
+                        })
+                        props.searchReport()
+                        dialogVisible.value = false
+                        emit("armBack", dialogVisible.value)
+                    } else {
+                        ElMessage({
+                            type: "error",
+                            message: res.msg
+                        })
+                    }
                 })
-            } else if (tipsNow == 1) {
+            } else if (tipsNow.value == 1) {
                 report.addReport({
-                    id: "id",
+                    id: needId.value - 0,
                     name: addForm.value.name,
                     doc_id: addForm.value.docid - 0,
                     memo: addForm.value.memos,
                     state: addForm.value.states - 0,
                 }).then(res => {
-                    props.searchReport()
-                    dialogVisible.value = false
-                    emit("armBack", dialogVisible.value)
+                    if (res.code == 0 && res.data != null) {
+                        props.searchReport()
+                        dialogVisible.value = false
+                        emit("armBack", dialogVisible.value)
+                        ElMessage({
+                            message: "修改成功",
+                            type: "success"
+                        })
+                    }
                 })
             }
 
@@ -148,6 +177,9 @@ export default {
             titleTips,
             formRule,
             filesCacl,
+            needRow,//需要编辑的数据
+            needId,//需要的id
+            upState,//上传文件状态
         }
     }
 }

+ 8 - 8
src/utils/allImg.js

@@ -1,11 +1,11 @@
-import searchGray from '../assets/icon/search_gray.png'
-import searchBlue from '../assets/icon/search_blue.png'
-import reportGray from "../assets/icon/report_gray.png"
-import reportBlue from "../assets/icon/report_blue.png"
-import settingGray from "../assets/icon/setting_gray.png"
-import settingBlue from "../assets/icon/setting_blue.png"
-import systemGray from "../assets/icon/system_gray.png"
-import systemBlue from "../assets/icon/system_blue.png"
+import searchGray from '../assets/icon/real_icon/mission_gray@2x.png'
+import searchBlue from '../assets/icon/real_icon/mission_blue@2x.png'
+import reportGray from "../assets/icon/real_icon/report_gray@2x.png"
+import reportBlue from "../assets/icon/real_icon/report_blue@2x.png"
+import settingGray from "../assets/icon/real_icon/setting_gray@2x.png"
+import settingBlue from "../assets/icon/real_icon/setting_blue@2x.png"
+import systemGray from "../assets/icon/real_icon/system_gray@2x.png"
+import systemBlue from "../assets/icon/real_icon/system_blue@2x.png"
 export default{
     searchBlue,
     searchGray,