Procházet zdrojové kódy

request的东西不要动

liyangzheng před 2 roky
rodič
revize
832431d2d3

+ 14 - 0
package-lock.json

@@ -11,7 +11,11 @@
         "axios": "^1.4.0",
         "core-js": "^3.8.3",
         "element-ui": "^2.15.13",
+<<<<<<< HEAD
         "express": "^4.18.2",
+=======
+        "js-md5": "^0.7.3",
+>>>>>>> liyangzheng
         "sm-crypto": "^0.3.12",
         "vue": "^2.6.14",
         "vue-router": "^3.5.1",
@@ -5946,6 +5950,11 @@
         "@sideway/pinpoint": "^2.0.0"
       }
     },
+    "node_modules/js-md5": {
+      "version": "0.7.3",
+      "resolved": "https://registry.npmmirror.com/js-md5/-/js-md5-0.7.3.tgz",
+      "integrity": "sha512-ZC41vPSTLKGwIRjqDh8DfXoCrdQIyBgspJVPXHBGu4nZlAEvG3nf+jO9avM9RmLiGakg7vz974ms99nEV0tmTQ=="
+    },
     "node_modules/js-message": {
       "version": "1.0.7",
       "resolved": "https://registry.npmmirror.com/js-message/-/js-message-1.0.7.tgz",
@@ -14495,6 +14504,11 @@
         "@sideway/pinpoint": "^2.0.0"
       }
     },
+    "js-md5": {
+      "version": "0.7.3",
+      "resolved": "https://registry.npmmirror.com/js-md5/-/js-md5-0.7.3.tgz",
+      "integrity": "sha512-ZC41vPSTLKGwIRjqDh8DfXoCrdQIyBgspJVPXHBGu4nZlAEvG3nf+jO9avM9RmLiGakg7vz974ms99nEV0tmTQ=="
+    },
     "js-message": {
       "version": "1.0.7",
       "resolved": "https://registry.npmmirror.com/js-message/-/js-message-1.0.7.tgz",

+ 4 - 0
package.json

@@ -10,7 +10,11 @@
     "axios": "^1.4.0",
     "core-js": "^3.8.3",
     "element-ui": "^2.15.13",
+<<<<<<< HEAD
     "express": "^4.18.2",
+=======
+    "js-md5": "^0.7.3",
+>>>>>>> liyangzheng
     "sm-crypto": "^0.3.12",
     "vue": "^2.6.14",
     "vue-router": "^3.5.1",

+ 8 - 0
src/api/basic/basic.js

@@ -0,0 +1,8 @@
+import request from '@/utils/request'
+export function forGround(data) {
+    return request({
+        url: '/api/basic_area/list',
+        method: "get",
+        params: data
+    })
+}

+ 17 - 0
src/api/ied/ied.js

@@ -0,0 +1,17 @@
+import request from '@/utils/request'
+// 获取scd列表
+export function getscdlist(data){
+    return request({
+        url:"/api/screen/scd/list",
+        method:"get",
+        params:data
+    })
+}
+// 获取ied关系
+export function getiedmse(data){
+    return request({
+        url:"/api/screen/scd/ied/relation",
+        method:"get",
+        params:data
+    })
+}

+ 6 - 1
src/layout/components/SideBar/UserIcon.vue

@@ -96,10 +96,15 @@ export default {
       this.fmtTime = formatDate(time).split(' ')
     },
     async outUser() {
+      console.log(1);
+      localStorage.removeItem('userInfo')
       let res = await loginOut({sessionid:this.userToken})
       if(res ==='ok'){
         this.$router.push("/login")
-        localStorage.removeItem('userInfo')
+        this.$message({
+          type:"success",
+          message:"登出成功"
+        })
       }
     },
     getToken() {

+ 63 - 12
src/utils/request.js

@@ -1,20 +1,61 @@
 import axios from 'axios'
+import md5 from 'js-md5'
 import { Message } from 'element-ui'
 import { getToken } from '@/utils/auth'
 
 // 请求url
 const service = axios.create({
-  baseURL: window.STATIC_CONFIG.proxyUrl, // url = base url + request url
-//  baseURL:"http://8.142.173.95:10086/",
+  // baseURL: window.STATIC_CONFIG.proxyUrl, // url = base url + request url
+  baseURL: "http://8.142.173.95:10086/",
   timeout: 15000 // request timeout
 })
 
 // 请求前拦截
 service.interceptors.request.use(
   config => {
-    // }
-    config.headers['Authorization'] = 'Bearer ' + getToken()
-    return config
+    let user = localStorage.getItem("userInfo")
+    if (user) {
+      user = JSON.parse(user)
+      let userToken = user.sessionid
+      const now = new Date().getTime()
+      const nonce = now + randomString(6)
+      let signparam = ''
+      let signdata = ''
+      const params = config.params
+      const data = config.data
+      if (data) {
+        for (const key in data) {
+          if (data[key] == null) continue
+          const signdataItem = key + '=' + data[key]
+          signdata = signdata + (signdata === '' ? '' : '&') + signdataItem
+        }
+      }
+
+      if (params) {
+        for (const k in params) {
+          if (params[k] == null) continue
+          const signparamItem = k + '=' + params[k]
+          signparam = signparam + (signparam === '' ? '' : '&') + signparamItem
+        }
+      }
+      let signs = signparam + ((signparam === '' || signdata === '') ? '' : '&') + signdata
+      signs = signs + (signs === '' ? '' : '&') + 'auth_nonce=' + nonce + '&auth_time=' + now
+      signs = signs.split('&').sort().join('&')
+
+      signs = signs.replace(/\+/gi, '%20')
+      signs = decodeURIComponent(signs)
+      signs = md5(signs)
+      // }
+      config.headers['Authorization'] = 'Bearer ' + userToken
+      config.headers.auth_time = now
+      config.headers.auth_nonce = nonce
+      config.headers.sign = signs
+      config.headers['content-type'] = 'application/x-www-form-urlencoded'
+      return config
+    } else {
+      return config
+    }
+
   },
   error => {
     // do something with request error
@@ -32,14 +73,24 @@ service.interceptors.response.use(
   error => {
     console.log('request.js err=', error) // for debug
     console.log('request.js err.response=', error.response) // for debug
-    Message({
-      message: '' + error.message,
-      type: 'error',
-      duration: 3 * 1000,
-      offset: window.screen.height / 3
-    })
+    // if (error.response.data) {
+    //   error.response.data.message = error.response.data.message || '未知错误'
+    // }
+    // Message({
+    //   message: '' + error.response.data.message,
+    //   type: 'error',
+    //   duration: 3 * 1000,
+    //   offset: window.screen.height / 3
+    // })
     return Promise.reject(error)
   }
 )
-
+const randomString = function (e) {
+  e = e || 32
+  const t = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678'
+  const a = t.length
+  let n = ''
+  for (let i = 0; i < e; i++) n += t.charAt(Math.floor(Math.random() * a))
+  return n
+}
 export default service

+ 189 - 48
src/views/dashboard/index.vue

@@ -1,61 +1,202 @@
 <template>
-  <div class="container-bg">
-    <el-container class="main-layout">
-      <el-aside class="left-plate"><tree-list /></el-aside>
-      <el-container class="right-plate">
-        <el-header class="main-top">Header</el-header>
-        <el-main class="main-cont">Main</el-main>
-      </el-container>
-    </el-container>
-    <!-- 测试弹窗 注释掉即可隐藏弹窗 -->
-    <BulletBox :windowWidth="'150rem'" :windowHeight="'72rem'"></BulletBox>
-  </div>
+    <div>
+        home
+        <button @click="detailsModal = true">测试打开模态框</button>
+        <!-- 详细信息 -->
+        <div>
+            <el-dialog :visible.sync="detailsModal" width="98%" top="1vh" :height="ceshi">
+                <div class="detailsTittle">
+                    <span>xxx-详细信息</span>
+                </div>
+                <div class="inDetailsBox">
+                    <div class="inBoxLeft">
+                        <el-input style="width: 300px;margin-top: 10px;" v-model="searchFast" placeholder="快速查找"></el-input>
+                        <template v-for="(item, index) in modelLeftList">
+                            <div class="leftMes" @click="insideBox(item)">
+                                <span class="leftMesSpan">{{ item.ied_name }}</span>
+                                <span>{{ item.desc }}</span>
+                            </div>
+                        </template>
+
+                    </div>
+                    <div class="inBoxRight">
+                        <!-- 导航栏 -->
+                        <div class="navigationBox">
+                            <template v-for="(item, index) in modalList">
+                                <p :class="['tabCard', { active: selectedIndex === index }]" @click="goUrl(item, index)">
+                                    {{ item.name }}
+                                </p>
+                            </template>
+                        </div>
+                    </div>
+                </div>
+                <!-- <span slot="footer" class="dialog-footer">
+                    <el-button @click="detailsModal = false">取 消</el-button>
+                    <el-button type="primary" @click="detailsModal = false">确 定</el-button>
+                </span> -->
+            </el-dialog>
+        </div>
+    </div>
 </template>
 
 <script>
-import {basicAreaList } from '@/api/dashboard'
-import BulletBox from "@/components/bulletBox/index.vue"
-import TreeList from '@/components/tree-list.vue'
+import { getscdlist,getiedmse } from "@/api/ied/ied"
+import { forGround } from "@/api/basic/basic"
 export default {
-  components: { TreeList, BulletBox},
-  data() {
-    return {
-        treeData:[
-        {
-            apmac: "",area_code: "pstype01/882",area_kind_cod: "154",area_level: "206",area_name: "安宁站",area_sort: "0",area_type: "pstype01",
-        cr: "1",ct: "2023-06-19 13:51:38",id: "882",is_leaf: "0",jd: "0.0000000000000",live_num: "0",pi: "0",type_name: "变电站",wd: "0.0000000000000"
+    name: 'ScdProjectIndex',
+    data() {
+        return {
+            detailsModal: false,
+            searchFast: "",//详情模态框内快速搜索
+            modalList: [
+                {
+                    name: "装置关联关系",
+                    url: "1"
+                },
+                {
+                    name: "输入输出控制块",
+                    url: "2"
+                },
+                {
+                    name: "虚端子关系",
+                    url: "3"
+                },
+                {
+                    name: "基础信息",
+                    url: "4",
+                },
+                {
+                    name: "定值条目",
+                    url: "5"
+                },
+                {
+                    name: "信息点表",
+                    url: "6"
+                },
+                {
+                    name: "源文件",
+                    url: '7'
+                }
+            ],
+            selectedIndex: 0,//选中的背景
+            ceshi: "500px",
+            modelLeftList: [],//模态框内列表
+            stationCid:"",
+        };
+    },
+
+    mounted() {
+        
+    },
+    created () {
+        this.forMesTo()
+        this.getAllIedLink()
+    },
+    methods: {
+        goUrl(item, index) {
+            this.selectedIndex = index;
+            // 执行你的跳转逻辑
         },
-        {
-            apmac: "",area_code: "pstype01/888",area_kind_cod: "156",area_level: "152",area_name: "高丰变",area_sort: "0",area_type: "pstype01",
-        cr: "1",ct: "2023-06-19 13:51:38",id: "888",is_leaf: "0",jd: "0.0000000000000",live_num: "0",pi: "0",type_name: "变电站",wd: "0.0000000000000"
+        // 拿到首页左侧站点
+        async forMesTo() {
+            let res = await forGround({ pid: "0" })
+            this.modelLeftList = res.data
         },
-
-        {
-            apmac: "",area_code: "pstype01/889",area_kind_cod: "156",area_level: "153",area_name: "海田变",area_sort: "0",area_type: "pstype01",
-        cr: "1",ct: "2023-06-19 13:51:38",id: "889",is_leaf: "0",jd: "0.0000000000000",live_num: "0",pi: "0",type_name: "变电站",wd: "0.0000000000000"
+        // 根据站点id拿到站点信息
+        async getAllIedLink() {
+            let res = await getscdlist({ischeckinscd:'1',stationid:"888",pageno:"1"})
+            this.stationCid = res.data[0].id
+            this.getIdBy()
         },
-        {
-            apmac: "",area_code: "pstype01/891",area_kind_cod: "154",area_level: "206",area_name: "红房变",area_sort: "0",area_type: "pstype01",
-        cr: "1",ct: "2023-06-19 13:51:38",id: "890",is_leaf: "0",jd: "0.0000000000000",live_num: "0",pi: "0",type_name: "变电站",wd: "0.0000000000000"
+        // 根据站点id拿到站点下列表
+        async getIdBy(){
+            let res = await getiedmse({scd_id:this.stationCid})
+            this.modelLeftList = res.data
         },
-        ]
-    };
-  },
-
-  mounted() {},
-  created(){
-    this.basicAreaList()
-  },
-  methods: {
-    async basicAreaList() {
-        // const result = await basicAreaList({pid: 0,}).catch((err) => (console.log('err', err)))
-        // if (!result) return
-        // console.log('first', result)
+        // 切换盒子
+        insideBox(row){
+            console.log(row,'row');
+        }
     },
-  },
-};
+  }
 </script>
 
-<style lang="scss" scoped>
-@import "~@/styles/home.scss";
+<style scoped>
+/* 模态框内左侧盒子 */
+.inBoxLeft {
+    width: 320px;
+    height: 530px;
+    background-color: #F3F5FA;
+    text-align: center;
+    overflow-y: auto;
+}
+
+.inDetailsBox {
+    margin-top: 10px;
+    display: flex;
+    justify-content: space-around;
+}
+
+/* 模态框内表头 */
+.detailsTittle {
+    width: 1400px;
+    height: 50px;
+    border-bottom: 1px solid blue;
+    margin: 0 auto;
+    text-align: center;
+}
+
+/* 名称和信息 */
+.leftMes {
+    margin: 5px 0;
+    display: flex;
+    justify-content: flex-start;
+    align-items: center;
+    
+}
+
+.leftMes span {
+    display: block;
+    text-align: center;
+}
+.leftMes span:nth-child(1){
+    width: 65px;
+    margin-right: 20px;
+}
+.leftMes span:nth-child(2){
+    width: 220px;
+}
+
+/* 内导航栏 */
+.tabCard {
+    width: 100px;
+    height: 25px;
+    margin: 20px 0;
+    cursor: pointer;
+}
+
+.tabCard:hover {
+    color: skyblue;
+}
+
+.active {
+    width: 100px;
+    height: 25px;
+    background-color: blue;
+    color: white;
+    border-radius: 20px;
+}
+
+/* 内导航栏盒子 */
+.navigationBox {
+    width: 850px;
+    height: 30px;
+    border: 1px solid blue;
+    text-align: center;
+    line-height: 30px;
+    border-radius: 20px;
+    display: flex;
+    justify-content: space-around;
+    align-items: center;
+}
 </style>

+ 1 - 0
src/views/login/Login.vue

@@ -73,6 +73,7 @@ export default {
                         })
                         this.$router.push("/")
                         localStorage.setItem('userInfo', JSON.stringify(res.data))
+                        this.rememberUser = false
                     } else if(res.returncode === 500) {
                         this.$message({
                             type:"error",

+ 19 - 0
yarn.lock

@@ -3540,10 +3540,22 @@
     "@sideway/formula" "^3.0.1"
     "@sideway/pinpoint" "^2.0.0"
 
+<<<<<<< HEAD
 "js-message@1.0.7":
   "integrity" "sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA=="
   "resolved" "https://registry.npmmirror.com/js-message/-/js-message-1.0.7.tgz"
   "version" "1.0.7"
+=======
+js-md5@^0.7.3:
+  version "0.7.3"
+  resolved "https://registry.npmmirror.com/js-md5/-/js-md5-0.7.3.tgz#b4f2fbb0b327455f598d6727e38ec272cd09c3f2"
+  integrity sha512-ZC41vPSTLKGwIRjqDh8DfXoCrdQIyBgspJVPXHBGu4nZlAEvG3nf+jO9avM9RmLiGakg7vz974ms99nEV0tmTQ==
+
+js-message@1.0.7:
+  version "1.0.7"
+  resolved "https://registry.npmmirror.com/js-message/-/js-message-1.0.7.tgz"
+  integrity sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA==
+>>>>>>> liyangzheng
 
 "js-tokens@^4.0.0":
   "integrity" "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
@@ -5054,10 +5066,17 @@
   "resolved" "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz"
   "version" "3.0.0"
 
+<<<<<<< HEAD
 "sm-crypto@^0.3.12":
   "integrity" "sha512-272PBzB4PYaBdeGa41TH9ZlMGLPVRmS36Gs4FjmHwXIdihQypAbhhFWZTaa/3de69q2KfMme1M5O2W5+spAdrg=="
   "resolved" "https://registry.npmmirror.com/sm-crypto/-/sm-crypto-0.3.12.tgz"
   "version" "0.3.12"
+=======
+sm-crypto@^0.3.12:
+  version "0.3.12"
+  resolved "https://registry.npmmirror.com/sm-crypto/-/sm-crypto-0.3.12.tgz"
+  integrity sha512-272PBzB4PYaBdeGa41TH9ZlMGLPVRmS36Gs4FjmHwXIdihQypAbhhFWZTaa/3de69q2KfMme1M5O2W5+spAdrg==
+>>>>>>> liyangzheng
   dependencies:
     "jsbn" "^1.1.0"