liyangzheng преди 1 година
родител
ревизия
f075cfe066

+ 9 - 0
src/api/flashPower.js

@@ -15,7 +15,16 @@ function getAllArea(data) {
         params: data
     })
 }
+//获取用户区域
+function userArea(data) {
+    return request({
+        url: `/getUserAreaList`,
+        method: "get",
+        params: data
+    })
+}
 export default {
     getAllFlashPower,
     getAllArea,
+    userArea,
 }

+ 30 - 0
src/api/scd.js

@@ -0,0 +1,30 @@
+import request from "@/utils/request"
+// 获取所有scd列表
+function getAllScd(data) {
+    return request({
+        url: `/screen/scd/list`,
+        method: "get",
+        params: data
+    })
+}
+// 获取指定scd下的间隔信息
+function getScdMiddle(data) {
+    return request({
+        url: `/scd/area/list`,
+        method: "get",
+        params: data
+    })
+}
+// 获取指定间隔下的ied信息
+function getIedMiddle(data){
+    return request({
+        url:`/scd/area/ied/list`,
+        method:"get",
+        params:data
+    })
+}
+export default {
+    getAllScd,
+    getScdMiddle,
+    getIedMiddle,
+}

BIN
src/assets/image/card_blue.png


+ 74 - 0
src/compoments/IntAndScd.vue

@@ -0,0 +1,74 @@
+<template>
+    <div>
+        <div class="bigBox">
+            <template v-for="(item, index) in listArr">
+                <span :class="selectsNum == index ? 'result' : 'nowSpan'" @click="spanClick(item, index)">{{ item.name
+                }}</span>
+            </template>
+            <router-link to="/home/mission">测试</router-link>
+        </div>
+    </div>
+</template>
+
+<script>
+import { ref, onMounted } from 'vue';
+import { useRouter } from 'vue-router'
+export default {
+    props: {
+    },
+    setup(props, { emit }) {
+        let router = useRouter()
+        let listArr = ref([
+            {
+                name: "网络结构图",
+                id: 0
+            },
+            {
+                name: "scd可视化",
+                id: 1
+            }
+        ])
+        let selectsNum = ref(0)
+        function spanClick(row, num) {
+            selectsNum.value = num
+            console.log(selectsNum.value,'link');
+            if (row.name === '网络结构图') {
+                router.push("/home/int")
+            } else if (row.name === 'scd可视化') {
+                router.push("/home/scdMap")
+            }
+        }
+        onMounted(() => {
+        })
+        return {
+            listArr,
+            selectsNum,
+            spanClick,
+        }
+    }
+}
+</script>
+
+<style scoped>
+.result {
+    display: inline-block;
+    width: 90px;
+    height: 26px;
+    text-align: center;
+    line-height: 26px;
+    border-bottom: 2px solid blue;
+    color: blue;
+    cursor: pointer;
+    margin: 0 10px;
+}
+
+.nowSpan {
+    display: inline-block;
+    width: 90px;
+    height: 26px;
+    text-align: center;
+    line-height: 26px;
+    cursor: pointer;
+    margin: 0 10px;
+}
+</style>

+ 22 - 0
src/pages/intMap/IntMap.vue

@@ -0,0 +1,22 @@
+<template>
+    <div>
+        <IntAndScd ></IntAndScd>
+    </div>
+</template>
+
+<script>
+import IntAndScd from '@/compoments/IntAndScd.vue';
+import { ref, onMounted } from 'vue'
+export default {
+    setup() {
+
+        return {
+        }
+    },
+    components: {
+        IntAndScd,
+    }
+}
+</script>
+
+<style lang="scss" scoped></style>

+ 7 - 32
src/pages/login/LoginNow.vue

@@ -8,7 +8,7 @@
             <!-- 信息 -->
             <div class="imgBox">
                 <img src="../../assets/image/loginImg.png" alt="">
-                <p>登录</p>
+                <!-- <p>登录</p> -->
             </div>
             <!-- 登录信息 -->
             <div class="formBox">
@@ -17,11 +17,7 @@
                         <el-input class="loginInp" v-model="loginForm.username" placeholder="你的账号..."  maxlength="32" />
                     </el-form-item>
                     <el-form-item label="密码">
-<<<<<<< HEAD
-                        <el-input class="loginInp" v-model="loginForm.userpass" type="password" show-password placeholder="你的密码..." />
-=======
                         <el-input class="loginInp" type="password" v-model="loginForm.userpass" placeholder="你的密码..." maxlength="32" />
->>>>>>> fc04f33df020ba10e2e4f47d43831e60b7c64b93
                     </el-form-item>
                 </el-form>
                 <el-button class="loginBtn" type="primary" @click="sureLog">登录</el-button>
@@ -63,7 +59,6 @@ export default {
         }
         function sureLog() {
             let kis = encryptPassword(loginForm.value.userpass)
-<<<<<<< HEAD
 
             login.LoginNow({
                 login_account: loginForm.value.username,
@@ -72,8 +67,8 @@ export default {
                 console.log(res, 'login');
                 if (res.returncode === 200) {
                     isLogin.value = true
-                    localStorage.setItem("loginStatus", isLogin.value)
-                    localStorage.setItem("userInfo",JSON.stringify(res.data))
+                    sessionStorage.setItem("loginStatus", isLogin.value)
+                    sessionStorage.setItem("userInfo",JSON.stringify(res.data))
                     router.push('/home/mission')
                     ElMessage({
                         message: '登陆成功!',
@@ -87,34 +82,13 @@ export default {
                 }
             })
             // windowEx.Size(1920,1040)
-=======
-            isLogin.value = true
-            localStorage.setItem("loginStatus",isLogin.value)
-            // login.LoginNow({
-            //     login_account: loginForm.value.username,
-            //     pwd: kis
-            // }).then(res => {
-            //     console.log(res, 'login');
-            //     if (res.returncode === 200) {
-            //         router.push('/home')
-            //     } else {
-            //         ElMessage({
-            //             message: res.msg,
-            //             type: "error"
-            //         })
-            //     }
-            // })
-            windowEx.Size(1920,1040)
-            windowEx.Position('center')
-            router.push('/home/mission')
-            // 
+            // windowEx.Position('center')
         }
         function WinClose(){
             windowEx.Exit()
         }
         function WinMin(){
             windowEx.Min()
->>>>>>> fc04f33df020ba10e2e4f47d43831e60b7c64b93
         }
         onMounted(() => {
         })
@@ -142,7 +116,7 @@ export default {
 
 .formBox {
     width: 320px;
-    height: 240px;
+    height: 244px;
     text-align: center;
     background: #FFFFFF;
     box-shadow: 0px 1px 20px 3px rgba(52, 123, 231, 0.12);
@@ -155,7 +129,8 @@ export default {
     width: 272px;
     height: 100px;
     margin: 0 auto;
-    padding-top: 60px;
+    margin-left: 90px;
+    padding-top: 40px;
 }
 
 .loginInp {

+ 2 - 2
src/pages/mission/MissionVue.vue

@@ -7,6 +7,7 @@
                     <span :class="btnSelect == index ? 'result' : 'nowMission'" @click="misChange(item, index)">{{ item.name
                     }}</span>
                 </template>
+                <router-link to="/home/int">测试</router-link>
             </div>
             <!-- 功能盒子 -->
             <div class="settingBox">
@@ -15,7 +16,7 @@
                     @backToMission="backToMission"></NoBox>
                 <!-- 新建任务盒子 -->
                 <CreateNew v-if="btnSelect == 1" :btnSelect="btnSelect" :taskList="taskList"></CreateNew>
-          
+
             </div>
         </div>
     </div>
@@ -153,5 +154,4 @@ export default {
     height: 40px;
     border-radius: 2px 2px 2px 2px;
 }
-
 </style>

+ 64 - 12
src/pages/mission/components/CreateMis.vue

@@ -15,9 +15,11 @@
                         <el-input class="bestInput" v-model="newMission.misNum" placeholder="Approved by" clearable />
                     </el-form-item>
                     <el-form-item label="检测变电站" prop="flashId">
-                        <el-select style="width: 512px;" v-model="newMission.flashId" placeholder="Activity zone" clearable>
-                            <el-option label="Zone one" value="shanghai" />
-                            <el-option label="Zone two" value="beijing" />
+                        <el-select style="width: 512px;" v-model="newMission.flashId" placeholder="请选择变电站" clearable
+                            @change="flashChange">
+                            <template v-for="(item, index) in flashList">
+                                <el-option :label="item.label" :value="item.value" />
+                            </template>
                         </el-select>
                         <img style="width: 40px;height: 40px;" src="../../../assets/icon/create_misBtn.png" alt="">
                     </el-form-item>
@@ -31,8 +33,12 @@
                         <el-input style="width: 1136px;" v-model="newMission.misMes"></el-input>
                     </el-form-item>
                     <el-form-item label="SCD文件">
-                        <el-button style="width: 954px;">点击选择scd文件</el-button>
-                        <span>正在干嘛干嘛</span>
+                        <el-button style="width: 954px;" @click="chooseScdFile">{{ btnName }}</el-button>
+                        <span>正在进行间隔装置分析
+                            <el-icon>
+                                <Loading />
+                            </el-icon>
+                        </span>
                     </el-form-item>
                 </el-form>
             </div>
@@ -52,12 +58,18 @@
                 <el-button>保存</el-button>
             </div>
         </div>
+        <!-- 模态框组件 -->
+        <div>
+            <LookScd v-if="scdLooks" :scdLooks="scdLooks" @nowBack="nowBack"></LookScd>
+        </div>
     </div>
 </template>
 
 <script>
 import { ref, onMounted, reactive } from 'vue';
 import flashPower from '../../../api/flashPower'
+import scd from "../../../api/scd"
+import LookScd from '../modalComp/LookScd.vue';
 export default {
     props: {
         btnSelect: {
@@ -93,18 +105,49 @@ export default {
             reportNow: [
                 { required: true, message: "请选择模板", trigger: "change" }
             ],
-            misMes: [
-                { required: true, message: "请输入说明", trigger: "blur" }
-            ]
-        })
+            // misMes: [
+            //     { required: true, message: "请输入说明", trigger: "blur" }
+            // ]
+        })//表单验证
+        let flashList = ref([])//表单选择的变电站
+        let scdLooks = ref(false)//选择scd文件时的显示与否
+        let btnName = ref('点击选择scd文件')
         function searchAllFlash() {
             flashPower.getAllArea({}).then(res => {
-                console.log(res, 'area');
-                flashPower.getAllFlashPower({ pageindex: 1, pagesize: 10, pid: 0 }).then(res => {
-                    console.log(res, 'power');
+                flashPower.getAllFlashPower({ pid: res.data[0].pid }).then(res => {
+                    flashList.value = res.data.map(item => {
+                        return {
+                            label: item.area_name,
+                            value: item.id
+                        }
+                    })
+                    // console.log(flashList.value, 'value');
                 })
             })
         }
+
+        //变电站下拉框change事件
+        function flashChange(e) {
+            searchScd(e)
+        }
+        // 选择scd文件
+        function chooseScdFile() {
+            scdLooks.value = true
+        }
+        // lookscd组件传回得数据
+        function nowBack(data, names, sid) {
+            scdLooks.value = data
+            if (names && sid) {
+                newMission.value.scdFolder = sid
+                btnName.value = names
+                scd.getScdMiddle({scd_id:sid}).then(res=>{
+                    console.log(res,'sid');
+                })
+                scd.getIedMiddle({scd_id:sid}).then(res=>{
+                    console.log(res,'ied');
+                })
+            }
+        }
         onMounted(() => {
             searchAllFlash()
         })
@@ -114,7 +157,16 @@ export default {
             newMission,
             searchAllFlash,//获取变电站
             missionRules,//表单验证
+            flashList,//表单选择的变电站
+            flashChange,//变电站下拉框change事件
+            scdLooks,//选择scd文件时的显示与否
+            chooseScdFile,// 选择scd文件
+            nowBack, // lookscd组件传回得数据
+            btnName,//按钮内修改文字
         }
+    },
+    components: {
+        LookScd,
     }
 }
 </script>

+ 21 - 0
src/pages/mission/components/HaveMis.vue

@@ -0,0 +1,21 @@
+<template>
+    <div>
+
+    </div>
+</template>
+
+<script>
+export default {
+    setup () {
+        
+
+        return {
+            
+        }
+    }
+}
+</script>
+
+<style lang="scss" scoped>
+
+</style>

+ 94 - 0
src/pages/mission/modalComp/LookScd.vue

@@ -0,0 +1,94 @@
+<template>
+    <div>
+        <div>
+            <el-dialog v-model="dialogVisible" :title="'选择scd文件,您选择的文件是:' + scdName" width="30%" @close="sureclose">
+                <el-tree :data="treeList" :props="treeProps" @node-click="handleNodeClick" />
+                <template #footer>
+                    <span class="dialog-footer">
+                        <el-button @click="cleanBox">取消</el-button>
+                        <el-button type="primary" @click="sureArr">
+                            确认
+                        </el-button>
+                    </span>
+                </template>
+            </el-dialog>
+        </div>
+    </div>
+</template>
+
+<script>
+import { ref, onMounted, toRefs } from 'vue';
+import scd from "../../../api/scd"
+export default {
+    props: {
+        scdLooks: {
+            type: Boolean,
+            required: true
+        }
+    },
+    setup(props, { emit }) {
+        let dialogVisible = ref(false)
+        let result = props.scdLooks
+        let { cleanBox, sureArr } = toRefs(props)
+        let treeList = ref([])//树形控件数据
+        let scdName = ref('')//选择的scd名字
+        let chooseScdid = ref('')//选择的scdid
+        let treeProps = ref({
+            children: 'children',
+            label: 'scd_name',
+            id: "id"
+        })
+        function tackLine() {
+            dialogVisible.value = result
+        }
+        // 查询scd
+        function searchScd(num) {
+            scd.getAllScd({ stationid: num }).then(res => {
+                treeList.value = res.data
+            })
+        }
+        function backTo() {
+            dialogVisible.value = false
+            emit("nowBack", dialogVisible.value)
+        }
+        function getBack() {
+            dialogVisible.value = false
+            emit("nowBack", dialogVisible.value, scdName.value, chooseScdid.value)
+        }
+        function sureclose() {
+            dialogVisible.value = false
+            emit("nowBack", dialogVisible.value)
+        }
+        function handleNodeClick(e) {
+            console.log(e, 'emit');
+            scdName.value = e.scd_name
+            chooseScdid.value = e.id
+        }
+        onMounted(() => {
+            searchScd()
+            tackLine()
+        })
+        return {
+            dialogVisible,
+            cleanBox: backTo,
+            sureArr: getBack,
+            sureclose,
+            result,
+            tackLine,
+            searchScd,
+            treeList,
+            treeProps,
+            handleNodeClick,
+            scdName,
+            chooseScdid,
+        }
+    }
+}
+</script>
+
+<style scoped>
+:deep(.el-dialog__body) {
+    height: 400px;
+    overflow-y: auto;
+}
+</style>

+ 21 - 0
src/pages/scdCanLook/ScdCanLook.vue

@@ -0,0 +1,21 @@
+<template>
+    <div>
+        <IntAndScd></IntAndScd>
+    </div>
+</template>
+
+<script>
+import IntAndScd from '@/compoments/IntAndScd.vue';
+import { ref, onMounted } from 'vue'
+export default {
+    setup() {
+
+        return {}
+    },
+    components:{
+        IntAndScd,
+    }
+}
+</script>
+
+<style lang="scss" scoped></style>

+ 23 - 9
src/router/index.js

@@ -29,17 +29,31 @@ const routes = [
         },
         children: [
             {
-                path:"/home/report",
-                component:()=>import("@/pages/report/ReportVue.vue"),
-                meta:{
-                    name:"report"
+                path: "/home/report",
+                component: () => import("@/pages/report/ReportVue.vue"),
+                meta: {
+                    name: "report"
                 }
             },
             {
-                path:"/home/mission",
-                component:()=>import("@/pages/mission/MissionVue.vue"),
-                meta:{
-                    name:"mission"
+                path: "/home/mission",
+                component: () => import("@/pages/mission/MissionVue.vue"),
+                meta: {
+                    name: "mission"
+                }
+            },
+            {
+                path: "/home/int",
+                component: () => import("@/pages/intMap/IntMap.vue"),
+                meta: {
+                    name: "int"
+                }
+            },
+            {
+                path: "/home/scdMap",
+                component: () => import("@/pages/scdCanLook/ScdCanLook.vue"),
+                meta: {
+                    name: "scdMap"
                 }
             }
         ]
@@ -53,7 +67,7 @@ const router = createRouter({
 router.beforeEach((to, from, next) => {
     // 假设您有一个名为 isAuthenticated 的全局变量来表示用户是否已登录
     let isAuthenticated = false; // 请替换为实际的登录状态判断逻辑
-    let loginStatus = localStorage.getItem("loginStatus")
+    let loginStatus = sessionStorage.getItem("loginStatus")
     if (loginStatus === 'true') {
         isAuthenticated = true
     }

+ 1 - 1
src/utils/request.js

@@ -13,7 +13,7 @@ const service = axios.create({
 // 请求前拦截
 service.interceptors.request.use(
     config => {
-        let user = localStorage.getItem("userInfo")
+        let user = sessionStorage.getItem("userInfo")
         if (user) {
             user = JSON.parse(user)
             let userToken = user.sessionid