YaolongHan 4 лет назад
Родитель
Сommit
006dfdda44

+ 8 - 0
src/api/editer.js

@@ -0,0 +1,8 @@
+// 登录校验接口
+import httputils from '@/api/httputils'
+
+
+//获取图例分类结构
+export function queryByGroup(params) {
+    return httputils.getJson(`/serve/topology-wanda/graphCategory/queryByGroup`, params)
+}

+ 183 - 0
src/api/httputils.js

@@ -0,0 +1,183 @@
+import axios from "axios"
+import store from "@/store"
+// import { MessageBox } from "element-ui"
+
+const CancelToken = axios.CancelToken
+let cancel
+
+// 创建axios实例
+const axiosservice = axios.create({
+    timeout: 30000, // 请求超时时间
+    retry: 4, //重新请求次数
+    retryDelay: 1000, //重新请求的间隔
+    credentials: true, // 接口每次请求会跨域携带cookie
+    cancelToken: new CancelToken(function executor(c) {
+        // executor 函数接收一个 cancel 函数作为参数
+        cancel = c
+    }),
+})
+
+axiosservice.interceptors.request.use(
+    (config) => {
+        config.withCredentials = true // 允许携带token ,这个是解决跨域产生的相关问题
+        const token = store.getters["token"]
+        if (token) {
+            config.headers = {
+                "sso-token": token,
+            }
+        }
+        return config
+    },
+    (error) => {
+        return Promise.reject(error)
+    }
+)
+
+axiosservice.interceptors.response.use(
+    function(res) {
+        //在这里对返回的数据进行处理
+        //console.log('axios interceptors res = ', res.status, res)
+        const resp = res.data
+        if (resp.result === "unauthc") {
+            store.commit("logined", false)
+            // MessageBox.confirm("未登陆或登陆信息已失效, 是否重新登陆?", "提示", {
+            //     confirmButtonText: "确定",
+            //     cancelButtonText: "取消",
+            //     type: "error",
+            // })
+                // .then((resp) => {
+                //     //console.log('--------------------------- confirm', resp)
+                //     //router.push('/login')
+                //     window.location.reload()
+                // })
+                // .catch((error) => {
+                //     //console.log('--------------------------- cancel', error)
+                //     console.log("")
+                // })
+        } else if (resp.result == "unauthorization") {
+            // MessageBox.alert("无权操作", { title: "警告", type: "error" })
+        }
+        //console.log('axios interceptors resp2 = ', resp.success, resp.errorCode, resp.errorMessage, res)
+        return res
+    },
+    function(err) {
+        //Do something with response error
+        console.log("axios interceptors err = ", err)
+        return Promise.reject(err)
+    }
+)
+
+/* 下载方法 */
+function downFile(blob, fileName) {
+    // 非IE下载
+    if ("download" in document.createElement("a")) {
+        const link = document.createElement("a")
+        link.href = window.URL.createObjectURL(blob) // 创建下载的链接
+        link.download = fileName // 下载后文件名
+        link.style.display = "none"
+        document.body.appendChild(link)
+        link.click() // 点击下载
+        window.URL.revokeObjectURL(link.href) // 释放掉blob对象
+        document.body.removeChild(link) // 下载完成移除元素
+    } else {
+        // IE10+下载
+        window.navigator.msSaveBlob(blob, fileName)
+    }
+}
+
+export default {
+    //获取cookie
+    getCookie(name) {
+        let arr,
+            reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)")
+        if ((arr = document.cookie.match(reg))) {
+            return unescape(arr[2])
+        } else {
+            /* 如果没有参数,那么就获取本域下的所有cookie */
+            return document.cookie
+        }
+    },
+
+    async getJson(url, params) {
+        try {
+            const response = await axiosservice({
+                url,
+                params,
+                method: "get",
+            })
+            return response.data
+        } catch (err) {
+            throw err
+        }
+    },
+    async postJson(url, data) {
+        try {
+            const response = await axiosservice({
+                url,
+                data,
+                method: "post",
+            })
+            return response.data
+        } catch (err) {
+            throw err
+        }
+    },
+    async fetchJson(url, params, data) {
+        try {
+            const response = await axiosservice({
+                url,
+                params,
+                data,
+                method: "post",
+            })
+            return response
+        } catch (err) {
+            throw err
+        }
+    },
+    async postupload(url, data) {
+        try {
+            const response = await axiosservice({
+                url,
+                data,
+                method: "post",
+                headers: {
+                    "Content-Type": "multipart/form-data",
+                },
+            })
+            return response.data
+        } catch (err) {
+            throw err
+        }
+    },
+    download(url, requestData) {
+        // 响应类型:arraybuffer, blob
+        axiosservice
+            .post(url, requestData, { responseType: "blob" })
+            .then((resp) => {
+                const headers = resp.headers
+                const contentType = headers["content-type"]
+
+                console.log("响应头信息", headers)
+                if (!resp.data) {
+                    console.error("响应异常:", resp)
+                    return false
+                } else {
+                    console.log("下载文件:", resp)
+                    const blob = new Blob([resp.data], { type: contentType })
+
+                    const contentDisposition = resp.headers["content-disposition"]
+                    let fileName = "unknown"
+                    if (contentDisposition) {
+                        fileName = window.decodeURI(resp.headers["content-disposition"].split("=")[1])
+                    }
+                    console.log("文件名称:", fileName)
+                    downFile(blob, fileName)
+                }
+            })
+            .catch(function(error) {
+                console.log(error)
+            })
+    },
+    axios: axiosservice,
+}

+ 1 - 0
src/components/edit/left_toolbar.vue

@@ -113,6 +113,7 @@
 </template>
 <script>
 import itemTree from "./leftbar_components/itemTree";
+import {queryByGroup} from "@/api/editer.js"
 const columns = [
   {
     title: "名称",

+ 32 - 2
src/components/edit/leftbar_components/itemTree.vue

@@ -21,6 +21,7 @@
   </div>
 </template>
 <script>
+import { queryByGroup } from "@/api/editer.js";
 const treeData = [
   {
     title: "0-0",
@@ -67,9 +68,9 @@ const treeData = [
 export default {
   data() {
     return {
-      expandedKeys: ["0-0-0", "0-0-1"],
+      expandedKeys: ["", ""],
       autoExpandParent: true,
-      checkedKeys: ["0-0-0"],
+      checkedKeys: [""],
       selectedKeys: [],
       treeData
     };
@@ -94,7 +95,36 @@ export default {
     onSelect(selectedKeys, info) {
       console.log("onSelect", info);
       this.selectedKeys = selectedKeys;
+    },
+    queryByGroup() {
+      queryByGroup().then(res => {
+        this.treeData = this.mapTree(res.Content);
+      });
+    },
+    mapTree(tree) {
+      const newTree = [];
+      tree.forEach(item => {
+        if (item.Category && item.Category.length) {
+          const children = this.mapTree(item.Category);
+          newTree.push({
+            title: item.Name,
+            key: item.Id,
+            children
+          });
+        } else {
+          newTree.push({
+            title: item.Name,
+            key: item.Id,
+            children: []
+          });
+        }
+      });
+      return newTree;
     }
+  },
+
+  created() {
+    this.queryByGroup();
   }
 };
 </script>