浏览代码

用户、部门同步功能;单点登录对接

wanger 5 月之前
父节点
当前提交
1091570d84

+ 8 - 0
manager/src/api/system/dept.js

@@ -57,4 +57,12 @@ export function queryResources() {
         url: '/apply/yzt/zyml/GetList',
         method: 'get'
     })
+}
+
+// 同步部门
+export function syncDept() {
+    return request({
+        url: '/system/dept/sync',
+        method: 'get'
+    })
 }

+ 90 - 82
manager/src/api/system/user.js

@@ -3,142 +3,150 @@ import { parseStrEmpty } from "@/utils/ruoyi";
 
 // 获取行政区树
 export function getXzq(parameter) {
-  return request({
-    url: '/apply/yzt/xzq/GetXzq',
-    method: "get",
-    params: parameter,
-  });
+    return request({
+        url: '/apply/yzt/xzq/GetXzq',
+        method: "get",
+        params: parameter,
+    });
 }
 
 // 查询用户列表
 export function listUser(query) {
-  return request({
-    url: '/system/user/list',
-    method: 'get',
-    params: query
-  })
+    return request({
+        url: '/system/user/list',
+        method: 'get',
+        params: query
+    })
 }
 
 // 查询用户详细
 export function getUser(userId) {
-  return request({
-    url: '/system/user/' + parseStrEmpty(userId),
-    method: 'get'
-  })
+    return request({
+        url: '/system/user/' + parseStrEmpty(userId),
+        method: 'get'
+    })
 }
 
 // 新增用户
 export function addUser(data) {
-  return request({
-    url: '/system/user',
-    method: 'post',
-    data: data
-  })
+    return request({
+        url: '/system/user',
+        method: 'post',
+        data: data
+    })
 }
 
 // 修改用户
 export function updateUser(data) {
-  return request({
-    url: '/system/user',
-    method: 'put',
-    data: data
-  })
+    return request({
+        url: '/system/user',
+        method: 'put',
+        data: data
+    })
 }
 
 // 删除用户
 export function delUser(userId) {
-  return request({
-    url: '/system/user/' + userId,
-    method: 'delete'
-  })
+    return request({
+        url: '/system/user/' + userId,
+        method: 'delete'
+    })
 }
 
 // 用户密码重置
 export function resetUserPwd(userId, password) {
-  const data = {
-    userId,
-    password
-  }
-  return request({
-    url: '/system/user/resetPwd',
-    method: 'put',
-    data: data
-  })
+    const data = {
+        userId,
+        password
+    }
+    return request({
+        url: '/system/user/resetPwd',
+        method: 'put',
+        data: data
+    })
 }
 
 // 用户状态修改
 export function changeUserStatus(userId, status) {
-  const data = {
-    userId,
-    status
-  }
-  return request({
-    url: '/system/user/changeStatus',
-    method: 'put',
-    data: data
-  })
+    const data = {
+        userId,
+        status
+    }
+    return request({
+        url: '/system/user/changeStatus',
+        method: 'put',
+        data: data
+    })
 }
 
 // 查询用户个人信息
 export function getUserProfile() {
-  return request({
-    url: '/system/user/profile',
-    method: 'get'
-  })
+    return request({
+        url: '/system/user/profile',
+        method: 'get'
+    })
 }
 
 // 修改用户个人信息
 export function updateUserProfile(data) {
-  return request({
-    url: '/system/user/profile',
-    method: 'put',
-    data: data
-  })
+    return request({
+        url: '/system/user/profile',
+        method: 'put',
+        data: data
+    })
 }
 
 // 用户密码重置
 export function updateUserPwd(oldPassword, newPassword) {
-  const data = {
-    oldPassword,
-    newPassword
-  }
-  return request({
-    url: '/system/user/profile/updatePwd',
-    method: 'put',
-    params: data
-  })
+    const data = {
+        oldPassword,
+        newPassword
+    }
+    return request({
+        url: '/system/user/profile/updatePwd',
+        method: 'put',
+        params: data
+    })
 }
 
 // 用户头像上传
 export function uploadAvatar(data) {
-  return request({
-    url: '/system/user/profile/avatar',
-    method: 'post',
-    data: data
-  })
+    return request({
+        url: '/system/user/profile/avatar',
+        method: 'post',
+        data: data
+    })
 }
 
 // 查询授权角色
 export function getAuthRole(userId) {
-  return request({
-    url: '/system/user/authRole/' + userId,
-    method: 'get'
-  })
+    return request({
+        url: '/system/user/authRole/' + userId,
+        method: 'get'
+    })
 }
 
 // 保存授权角色
 export function updateAuthRole(data) {
-  return request({
-    url: '/system/user/authRole',
-    method: 'put',
-    params: data
-  })
+    return request({
+        url: '/system/user/authRole',
+        method: 'put',
+        params: data
+    })
 }
 
 // 查询部门下拉树结构
 export function deptTreeSelect() {
-  return request({
-    url: '/system/user/deptTree',
-    method: 'get'
-  })
+    return request({
+        url: '/system/user/deptTree',
+        method: 'get'
+    })
 }
+
+// 同步用户
+export function syncUser() {
+    return request({
+        url: '/system/user/sync',
+        method: 'get'
+    })
+}

+ 25 - 0
manager/src/views/system/dept/index.vue

@@ -65,6 +65,17 @@
           >展开/折叠</el-button
         >
       </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-refresh"
+          size="mini"
+          @click="handleSync"
+          v-hasPermi="['system:dept:add']"
+          >同步</el-button
+        >
+      </el-col>
       <right-toolbar
         :showSearch.sync="showSearch"
         @queryTable="getList"
@@ -269,6 +280,7 @@ import {
   updateDept,
   listDeptExcludeChild,
   queryResources,
+  syncDept,
 } from "@/api/system/dept";
 import Treeselect from "@riophae/vue-treeselect";
 import "@riophae/vue-treeselect/dist/vue-treeselect.css";
@@ -345,6 +357,19 @@ export default {
     this.getList();
   },
   methods: {
+    /** 同步按钮操作 */
+    handleSync(row) {
+      syncDept().then((response) => {
+        if (response.code == 200) {
+          listDept().then((response) => {
+            this.deptOptions = this.handleTree(response.data, "deptId");
+            this.$modal.msgSuccess("同步成功");
+          });
+        } else {
+          this.$modal.msgSuccess("同步失败");
+        }
+      });
+    },
     /** 查询部门列表 */
     getList() {
       this.loading = true;

+ 23 - 0
manager/src/views/system/user/index.vue

@@ -153,6 +153,17 @@
               >导出</el-button
             >
           </el-col>
+          <el-col :span="1.5">
+            <el-button
+              type="primary"
+              plain
+              icon="el-icon-refresh"
+              size="mini"
+              @click="handleSync"
+              v-hasPermi="['system:user:add']"
+              >同步</el-button
+            >
+          </el-col>
           <right-toolbar
             :showSearch.sync="showSearch"
             @queryTable="getList"
@@ -524,6 +535,7 @@ import {
   changeUserStatus,
   deptTreeSelect,
   getXzq,
+  syncUser,
 } from "@/api/system/user";
 import { getToken } from "@/utils/auth";
 import Treeselect from "@riophae/vue-treeselect";
@@ -669,6 +681,17 @@ export default {
     });
   },
   methods: {
+    /** 同步按钮操作 */
+    handleSync(row) {
+      syncUser().then((response) => {
+        if (response.code == 200) {
+          this.resetQuery();
+          this.$modal.msgSuccess("同步成功");
+        } else {
+          this.$modal.msgSuccess("同步失败");
+        }
+      });
+    },
     // 构建行政区tree
     resetTree(data) {
       data.forEach((item) => {

+ 153 - 156
website/public/js/config.js

@@ -1,38 +1,36 @@
 /**基础地图 */
 let BaseMap = {
-  baiduVec:
-    "http://online3.map.bdimg.com/onlinelabel/?qt=tile&x={0}&y={1}&z={2}&styles=pl&udt=20151021&scaler=1&p=1",
-  baiduImg:
-    "http://shangetu0.map.bdimg.com/it/u=x={0};y={1};z={2};v=009;type=sate&fm=46&udt=20150504&app=webearth2&v=009&udt=20150601",
-  // 天地图
-  tdtImg:
-    "http://t3.tianditu.gov.cn/DataServer?T=img_w&x={x}&y={y}&l={z}&tk=7ae072fdee55b245b267992f3e66fd0a",
-  //tdtImgAnn: "http://t0.tianditu.gov.cn/DataServer?T=cia_w&x={x}&y={y}&l={z}&tk=7ae072fdee55b245b267992f3e66fd0a",
-  //行政区底图
-  tdtImgAnn: "/arcgis/rest/services/kjgh/XZQH_QX/MapServer/tile/{z}/{y}/{x}",
-  tdtVec:
-    "http://t2.tianditu.gov.cn/DataServer?T=vec_w&x={x}&y={y}&l={z}&tk=7ae072fdee55b245b267992f3e66fd0a",
-  tdtVecAnn:
-    "http://t2.tianditu.gov.cn/DataServer?T=cva_w&x={x}&y={y}&l={z}&tk=7ae072fdee55b245b267992f3e66fd0a",
-  arcImg: `https://106.14.159.47:6443/`,
-  cesiumDSM:
-    "http://192.168.100.111:8001/3196C7C60C074D2A8BA9B07241A4D298/terrain/DSM/map/file/wmts/bil/DSM_ORDOS_/",
-  jxMap: "",
-  //tdtImg: "http://192.168.100.111:9082/map/file/img/TILEKEY/IMAGE/EPSG_3857/png/DOM_SDDT/{z}/{x}/{y}?ol=false",
-  //tdtImg: "/maps/img/{z}/{x}/{y}.jpg",
-  //tdtVec: "/maps/vec/{z}/{x}/{y}/x={x}&y={y}&z={z}.png",
+    baiduVec: "http://online3.map.bdimg.com/onlinelabel/?qt=tile&x={0}&y={1}&z={2}&styles=pl&udt=20151021&scaler=1&p=1",
+    baiduImg: "http://shangetu0.map.bdimg.com/it/u=x={0};y={1};z={2};v=009;type=sate&fm=46&udt=20150504&app=webearth2&v=009&udt=20150601",
+    // 天地图
+    tdtImg: "http://t3.tianditu.gov.cn/DataServer?T=img_w&x={x}&y={y}&l={z}&tk=7ae072fdee55b245b267992f3e66fd0a",
+    //tdtImgAnn: "http://t0.tianditu.gov.cn/DataServer?T=cia_w&x={x}&y={y}&l={z}&tk=7ae072fdee55b245b267992f3e66fd0a",
+    //行政区底图
+    tdtImgAnn: "/arcgis/rest/services/kjgh/XZQH_QX/MapServer/tile/{z}/{y}/{x}",
+    tdtVec: "http://t2.tianditu.gov.cn/DataServer?T=vec_w&x={x}&y={y}&l={z}&tk=7ae072fdee55b245b267992f3e66fd0a",
+    tdtVecAnn: "http://t2.tianditu.gov.cn/DataServer?T=cva_w&x={x}&y={y}&l={z}&tk=7ae072fdee55b245b267992f3e66fd0a",
+    arcImg: `https://106.14.159.47:6443/`,
+    cesiumDSM: "http://192.168.100.111:8001/3196C7C60C074D2A8BA9B07241A4D298/terrain/DSM/map/file/wmts/bil/DSM_ORDOS_/",
+    jxMap: "",
+    //tdtImg: "http://192.168.100.111:9082/map/file/img/TILEKEY/IMAGE/EPSG_3857/png/DOM_SDDT/{z}/{x}/{y}?ol=false",
+    //tdtImg: "/maps/img/{z}/{x}/{y}.jpg",
+    //tdtVec: "/maps/vec/{z}/{x}/{y}/x={x}&y={y}&z={z}.png",
 
-  // tdtImgAnn: "/arcgis/rest/services/kjgh/XZQDS/MapServer/tile/{z}/{y}/{x}",
-  // jxMap: "/arcgis/rest/services/kjgh/CZKFBJ/MapServer/tile/{z}/{y}/{x}",
+    // tdtImgAnn: "/arcgis/rest/services/kjgh/XZQDS/MapServer/tile/{z}/{y}/{x}",
+    // jxMap: "/arcgis/rest/services/kjgh/CZKFBJ/MapServer/tile/{z}/{y}/{x}",
 };
-
 /**省平台系统接口地址 */
 let SHENG_API = "http://192.168.100.252:8080";
-
 let TOKEN_STR = "access_token";
 /**单点登录 */
 // let SSOUrl = 'http://127.0.0.1:8000/swsso/login?service=http://127.0.1:8081';
-let SSOUrl = `http://127.0.0.1:8000/swsso/login?service=${window.location.protocol}//${window.location.host}${window.location.pathname}`;
+let JcptSSOExitUrl = `http://192.168.60.240:8000/swsso/logout?service=http://192.168.60.240:8000/swsso`;
+let SSOExitUrl = `/logout=logout`;
+// let SSOUrl = `http://192.168.60.240:8000/swsso/login?service=http://192.168.60.240:5000/`;
+let SSOTIcketUrl = `http://192.168.60.240:8000/swsso/validate`;
+/**单点登录 */
+// let SSOUrl = 'http://127.0.0.1:8000/swsso/login?service=http://127.0.1:8081';
+let SSOUrl = `http://192.168.60.240:8000/swsso/login?service=${window.location.protocol}//${window.location.host}${window.location.pathname}`;
 /**基础信息平台 */
 let JcptUrl = "http://192.168.100.111:8893";
 /**社会公众服务 */
@@ -41,163 +39,162 @@ let GzfwUrl = "/shfw/index";
 /**行政区代码 */
 let XZQ_DM = "150500";
 /**行政区名称 */
-let XZQ_MC = "通辽市";
+let XZQ_MC = "市";
 /**默认地图中心 */
 let MapCenter = {
-  point: [121.662, 43.798],
-  extent: [13250478.427, 5140873.799, 13807458.564, 5771928.021],
+    point: [121.662, 43.798],
+    extent: [13250478.427, 5140873.799, 13807458.564, 5771928.021],
 };
 /**实施监督 承载力监测预警中的 Echarts 地图*/
 let XzqCenter = {
-  科尔沁区: [122.308006, 43.674752],
-  霍林郭勒市: [119.555, 45.5132],
-  开鲁县: [121.348, 43.8442],
-  科尔沁左翼后旗: [122.79, 43.2562],
-  科尔沁左翼中旗: [122.517, 44.1062],
-  库伦旗: [121.564, 42.8552],
-  奈曼旗: [120.858, 43.0292],
-  扎鲁特旗: [120.582, 44.9072],
+    科尔沁区: [122.308006, 43.674752],
+    霍林郭勒市: [119.555, 45.5132],
+    开鲁县: [121.348, 43.8442],
+    科尔沁左翼后旗: [122.79, 43.2562],
+    科尔沁左翼中旗: [122.517, 44.1062],
+    库伦旗: [121.564, 42.8552],
+    奈曼旗: [120.858, 43.0292],
+    扎鲁特旗: [120.582, 44.9072],
 };
 /** 实施监督 承载力监测预警中的动态评估 Echarts 图表 */
 let XZQ_CHILD = [
-  "科尔沁区",
-  "霍林郭勒市",
-  "开鲁县",
-  "科尔沁左翼后旗",
-  "科尔沁左翼中旗",
-  "库伦旗",
-  "奈曼旗",
-  "扎鲁特旗",
+    "科尔沁区",
+    "霍林郭勒市",
+    "开鲁县",
+    "科尔沁左翼后旗",
+    "科尔沁左翼中旗",
+    "库伦旗",
+    "奈曼旗",
+    "扎鲁特旗",
 ];
 let XZQ_DATA = [231, 200, 150, 80, 150, 110, 130, 153];
 
 /** 辅助实施 辅助基本农田分析 注:label值固定不能改且不能重复,修改图层显示名称可以改name */
-let TckzData = [
-  {
-    id: "fa65c270d6e142e5b5630238e5aec46c",
-    name: "生态保护红线",
-    label: "生态保护红线",
-    checked: false,
-    layer: null,
-  },
-  {
-    id: "ea0f51b5d3194f059c6e2a05706aa923",
-    name: "城镇开发边界",
-    label: "城镇开发边界",
-    checked: false,
-    layer: null,
-  },
-  {
-    id: "65919db0a4974ea9be4cfa3e2e792ed9",
-    name: "永久基本农田",
-    label: "永久基本农田",
-    checked: false,
-    layer: null,
-  },
-  {
-    id: "87973413b90a41348af3cd41f7ce43b9",
-    name: "现状用地用海",
-    label: "现状用地用海",
-    checked: false,
-    layer: null,
-  },
-  {
-    id: "5376a8a1657149ba99e93665ef6b9c7f",
-    name: "坡度图",
-    label: "坡度图",
-    checked: false,
-    layer: null,
-  },
+let TckzData = [{
+        id: "fa65c270d6e142e5b5630238e5aec46c",
+        name: "生态保护红线",
+        label: "生态保护红线",
+        checked: false,
+        layer: null,
+    },
+    {
+        id: "ea0f51b5d3194f059c6e2a05706aa923",
+        name: "城镇开发边界",
+        label: "城镇开发边界",
+        checked: false,
+        layer: null,
+    },
+    {
+        id: "65919db0a4974ea9be4cfa3e2e792ed9",
+        name: "永久基本农田",
+        label: "永久基本农田",
+        checked: false,
+        layer: null,
+    },
+    {
+        id: "87973413b90a41348af3cd41f7ce43b9",
+        name: "现状用地用海",
+        label: "现状用地用海",
+        checked: false,
+        layer: null,
+    },
+    {
+        id: "5376a8a1657149ba99e93665ef6b9c7f",
+        name: "坡度图",
+        label: "坡度图",
+        checked: false,
+        layer: null,
+    },
 ];
 
 /** 字典 */
 let SYS_DICT = {
-  Datas: {},
-  GetDict: function (type) {
-    return this.Datas[type];
-  },
-  GetLabel: function (type, key) {
-    var dict = this.Datas[type];
-    if (!dict) return key;
-    else {
-      var dict = dict.filter((t) => t.value == key);
-      if (dict.length < 1) return key;
-      return dict[0].label;
-    }
-  },
+    Datas: {},
+    GetDict: function(type) {
+        return this.Datas[type];
+    },
+    GetLabel: function(type, key) {
+        var dict = this.Datas[type];
+        if (!dict) return key;
+        else {
+            var dict = dict.filter((t) => t.value == key);
+            if (dict.length < 1) return key;
+            return dict[0].label;
+        }
+    },
 };
 /** 图层资源 */
 let SYS_LAYERS = {
-  _KJGH: "/arcgis/rest/services/kjgh/{0}/MapServer",
-  _JCPT: "/arcgis/rest/services/basepordos/{0}/MapServer",
-  DEM: "/arcgis/rest/services/kjgh/DEM/MapServer",
-  //KJGH
-  XZQXZ: "/arcgis/rest/services/kjgh/XZQXZ/MapServer", // 乡镇
-  XZQXS: "/arcgis/rest/services/kjgh/XZQXS/MapServer", // 旗县
-  XZQDS: "/arcgis/rest/services/kjgh/XZQDS/MapServer", // 市级
-  XZYDYH: "/arcgis/rest/services/kjgh/XZYDYH/MapServer",
-  FZXZ: "/arcgis/rest/services/ghyzt/FZXZ/MapServer",
-  FXPJ_KJCT: "/arcgis/rest/services/ghyzt/FXPJ_KJCT/MapServer",
-  HGXSC: "/arcgis/rest/services/ghyzt/HGXSC/MapServer/",
-  CZKFBJ: "/arcgis/rest/services/kjgh/CZKFBJ/MapServer",
-  STBHZYXPJJG: "/arcgis/rest/services/kjgh/STBHZYXPJJG/MapServer", // 生态保护红线适宜性评价
-  NYSCSYXPJJG: "/arcgis/rest/services/kjgh/NYSCSYXPJJG/MapServer", // 农业生产适宜性评价
-  CZJSSYXPJJG: "/arcgis/rest/services/kjgh/CZJSSYXPJJG/MapServer", // 城镇建设适宜性评价
-  ZZYSCSYXPJJG: "/arcgis/rest/services/kjgh/ZZYSCSYXPJJG/MapServer", // 种植业生产适宜性评价
-  XMYSCSYXPJJG: "/arcgis/rest/services/kjgh/XMYSCSYXPJJG/MapServer", // 畜牧业生产适宜性评价
+    _KJGH: "/arcgis/rest/services/kjgh/{0}/MapServer",
+    _JCPT: "/arcgis/rest/services/basepordos/{0}/MapServer",
+    DEM: "/arcgis/rest/services/kjgh/DEM/MapServer",
+    //KJGH
+    XZQXZ: "/arcgis/rest/services/kjgh/XZQXZ/MapServer", // 乡镇
+    XZQXS: "/arcgis/rest/services/kjgh/XZQXS/MapServer", // 旗县
+    XZQDS: "/arcgis/rest/services/kjgh/XZQDS/MapServer", // 市级
+    XZYDYH: "/arcgis/rest/services/kjgh/XZYDYH/MapServer",
+    FZXZ: "/arcgis/rest/services/ghyzt/FZXZ/MapServer",
+    FXPJ_KJCT: "/arcgis/rest/services/ghyzt/FXPJ_KJCT/MapServer",
+    HGXSC: "/arcgis/rest/services/ghyzt/HGXSC/MapServer/",
+    CZKFBJ: "/arcgis/rest/services/kjgh/CZKFBJ/MapServer",
+    STBHZYXPJJG: "/arcgis/rest/services/kjgh/STBHZYXPJJG/MapServer", // 生态保护红线适宜性评价
+    NYSCSYXPJJG: "/arcgis/rest/services/kjgh/NYSCSYXPJJG/MapServer", // 农业生产适宜性评价
+    CZJSSYXPJJG: "/arcgis/rest/services/kjgh/CZJSSYXPJJG/MapServer", // 城镇建设适宜性评价
+    ZZYSCSYXPJJG: "/arcgis/rest/services/kjgh/ZZYSCSYXPJJG/MapServer", // 种植业生产适宜性评价
+    XMYSCSYXPJJG: "/arcgis/rest/services/kjgh/XMYSCSYXPJJG/MapServer", // 畜牧业生产适宜性评价
 
 
-  //ZXCQ
-  ZXCQGHYDYH: "/arcgis/rest/services/kjgh/XZYDYH/MapServer",
+    //ZXCQ
+    ZXCQGHYDYH: "/arcgis/rest/services/kjgh/XZYDYH/MapServer",
 
-  //JCPT
-  // DLTB: "/arcgis/rest/services/BASEP/DLTB/MapServer",
-  SHYQZD: "/arcgis/rest/services/BDC/150602SHYQZD_DB/MapServer", //使用权宗地-鄂尔多斯现场
-  ZRZ: "/arcgis/rest/services/BDC/150602ZRZ/MapServer", //自然幢-鄂尔多斯现场
-  DLTB: "/arcgis/rest/services/basepordos/DLTB/MapServer",
-  // SHYQZD:"/arcgis/rest/services/BDC/ZD/MapServer",//使用权宗地-WLCB
-  // ZRZ:"/arcgis/rest/services/BDC/FW/MapServer",//自然幢-WLCB
+    //JCPT
+    // DLTB: "/arcgis/rest/services/BASEP/DLTB/MapServer",
+    SHYQZD: "/arcgis/rest/services/BDC/150602SHYQZD_DB/MapServer", //使用权宗地-鄂尔多斯现场
+    ZRZ: "/arcgis/rest/services/BDC/150602ZRZ/MapServer", //自然幢-鄂尔多斯现场
+    DLTB: "/arcgis/rest/services/basepordos/DLTB/MapServer",
+    // SHYQZD:"/arcgis/rest/services/BDC/ZD/MapServer",//使用权宗地-WLCB
+    // ZRZ:"/arcgis/rest/services/BDC/FW/MapServer",//自然幢-WLCB
 
-  QYPG: "/arcgis/rest/services/zxgh/ZXGH_QYPG/MapServer", //区域评估
+    QYPG: "/arcgis/rest/services/zxgh/ZXGH_QYPG/MapServer", //区域评估
 };
 
 // 切换用户--单点登录
 let SYS_USERS = [{
-  title:"科尔沁区",
-  username:"KEQ1"
-},{
-  title:"科尔沁左翼中旗",
-  username:"KZZQ1"
-},{
-  title:"科尔沁左翼后旗",
-  username:"KZHQ1"
-},{
-  title:"开鲁县",
-  username:"KL1"
-},{
-  title:"库伦旗",
-  username:"KUL1"
-},{
-  title:"奈曼旗",
-  username:"NM1"
-},{
-  title:"扎鲁特旗",
-  username:"ZLT1"
-},{
-  title:"霍林郭勒市",
-  username:"HLGL1"
-}]
-// 辅助实施 在建设项目管理
+        title: "科尔沁区",
+        username: "KEQ1"
+    }, {
+        title: "科尔沁左翼中旗",
+        username: "KZZQ1"
+    }, {
+        title: "科尔沁左翼后旗",
+        username: "KZHQ1"
+    }, {
+        title: "开鲁县",
+        username: "KL1"
+    }, {
+        title: "库伦旗",
+        username: "KUL1"
+    }, {
+        title: "奈曼旗",
+        username: "NM1"
+    }, {
+        title: "扎鲁特旗",
+        username: "ZLT1"
+    }, {
+        title: "霍林郭勒市",
+        username: "HLGL1"
+    }]
+    // 辅助实施 在建设项目管理
 let ZJSXMGLData = {
-  // 已批未建图层bsm
-  YPWJData:{
-    bsm:"78f25f473904425697d8879501a469aa"
-  },
-}
-// 资源目录-国土空间规划数据节点bsm ——规划成果浏览
+        // 已批未建图层bsm
+        YPWJData: {
+            bsm: "78f25f473904425697d8879501a469aa"
+        },
+    }
+    // 资源目录-国土空间规划数据节点bsm ——规划成果浏览
 let GHCG_BSM = '201'
-// 一张图地图经济/人口数据应用统计 经济/人口图层
-let JJ_BSM = "65919db0a4974ea9be4cfa3e2e792ed9";// GDP经济数据图层bsm
-let RK_BSM = "";// 人口数据图层bsm
+    // 一张图地图经济/人口数据应用统计 经济/人口图层
+let JJ_BSM = "65919db0a4974ea9be4cfa3e2e792ed9"; // GDP经济数据图层bsm
+let RK_BSM = ""; // 人口数据图层bsm
 let JJ_XZQ = "SW_XZQH"; // 经济图层行政区代码属性字段名称
-let RK_XZQ = "SW_XZQH"; // 人口图层行政区代码属性字段名称
+let RK_XZQ = "SW_XZQH"; // 人口图层行政区代码属性字段名称

+ 13 - 0
website/src/api/login.js

@@ -1,6 +1,19 @@
 import request from '@/utils/request'
 import requestForSHENG from '@/utils/requestForSHENG'
 
+export function SsoLogout(ticket) {
+    return request({
+        url: JcptSSOExitUrl,
+        method: 'get',
+    })
+}
+
+export function validateTicket(ticket) {
+    return request({
+        url: SSOTIcketUrl + '?ticket=' + ticket,
+        method: 'get',
+    })
+}
 /**(二)	获取Token对应登录用户信息
  * @Desc: 系统跳转后获取市级系统对应登录账号
  * @Author: siwei

+ 152 - 0
website/src/permission-self.js

@@ -0,0 +1,152 @@
+/*
+ * @Descripttion: 
+ * @version: 
+ * @Author: siwei
+ * @Date: 2023-02-22 11:38:48
+ * @LastEditors: siwei
+ * @LastEditTime: 2023-03-03 16:24:58
+ */
+import router from './router'
+import store from './store'
+import { ElMessage } from 'element-plus'
+import NProgress from 'nprogress'
+import 'nprogress/nprogress.css'
+import { getToken } from '@/utils/auth'
+import { isHttp } from '@/utils/validate'
+import { checkToken, currentUserInfo } from "@/api/login";
+
+
+NProgress.configure({ showSpinner: false });
+
+const whiteList = ['/login', '/auth-redirect', '/bind', '/register'];
+
+router.beforeEach((to, from, next) => {
+    // 全局前置守卫
+    NProgress.start()
+        // 获取地址栏参数
+    if (to.query && to.query.token && to.path === '/page') {
+        let access_token = to.query.token
+        console.log('校验Token是否过期');
+        //#region test
+        // // 获取username
+        // let username = 'admin'
+        // // 调用action的登录方法,进行自动认证登录
+        // console.log('开始自动认证登录');
+        // store.dispatch("LoginNew", username)
+        //   .then(() => {
+        //     store.commit("SET_SUPERUSER", username);
+        //     store.commit("SET_SUPERTOKEN", access_token);
+        //     next()
+        //   })
+        //   .catch((e) => {
+        //     console.log('认证登录失败:');
+        //     next(`/login?redirect=/`) // 否则全部重定向到登录页
+        //   });
+        //#endregion
+
+        checkToken(access_token).then(res => {
+            console.log('Token未过期,获取Token对应登录用户信息');
+            // 获取Token对应登录用户信息
+            currentUserInfo(access_token).then(res => {
+                    console.log('用户信息获取成功:' + res.data);
+                    // 获取username
+                    let username = res.data.user_name
+                        // 调用action的登录方法,进行自动认证登录
+                    console.log('开始自动认证登录');
+                    store.dispatch("LoginNew", username)
+                        .then(() => {
+                            store.commit("SET_SUPERUSER", username);
+                            store.commit("SET_SUPERTOKEN", access_token);
+                            next()
+                        })
+                        .catch((e) => {
+                            console.log('认证登录失败:');
+                            next(`/login?redirect=/`) // 否则全部重定向到登录页
+                        });
+                })
+                .catch((e) => {
+                    console.log('用户信息获取失败');
+                    next(`/login?redirect=/`) // 否则全部重定向到登录页
+                });
+        }).catch(e => {
+            console.log('Token过期,请重新登录!');
+            next(`/login?redirect=/`) // 否则全部重定向到登录页
+        })
+    } else {
+        if (getToken()) {
+
+            //#region 获取单点登录的token,验证token是否过期
+            let tk = store.getters.superToken
+            if (!tk && to.query && to.query.token) {
+                tk = to.query.token
+                store.commit("SET_SUPERTOKEN", tk);
+            }
+            //#endregion
+
+            to.meta.title && store.dispatch('settings/setTitle', to.meta.title)
+                /* has token*/
+            if (to.path === '/login') {
+                next({ path: '/' })
+                NProgress.done()
+            } else if (!tk && to.path === '/page') {
+                next({ path: '/home' })
+            } else {
+                if (store.getters.roles.length === 0) {
+                    // 判断当前用户是否已拉取完user_info信息
+                    store.dispatch('GetInfo').then(() => {
+                        store.dispatch('GenerateRoutes').then(accessRoutes => {
+                            // 根据roles权限生成可访问的路由表
+                            accessRoutes.forEach(route => {
+                                if (!isHttp(route.path)) {
+                                    router.addRoute(route) // 动态添加可访问路由表
+                                }
+                            })
+                            next({...to, replace: true }) // hack方法 确保addRoutes已完成
+                        })
+                    }).catch(err => {
+                        store.dispatch('LogOut').then(() => {
+                            ElMessage.error(err)
+                            next({ path: '/' })
+                        })
+                    })
+                } else {
+                    //#region 单点修改代码片段,跳转验证token是否过期
+                    if (tk) {
+                        console.log('检验token是否过期');
+                        checkToken(tk).then(res => {
+                            console.log('Token未过期,正常跳转');
+                            next()
+                        }).catch(e => {
+                            console.log('Token过期,请重新登录!');
+                            store.commit("SET_SUPERUSER", "");
+                            store.commit("SET_SUPERTOKEN", "");
+                            next(`/login?redirect=/`) // 否则全部重定向到登录页
+                            return
+                        })
+                    } else {
+                        next()
+                    }
+                    //#endregion
+
+                    //#region 改前代码
+                    // next()
+                    //#endregion
+
+                }
+            }
+        } else {
+            // 没有token
+            if (whiteList.indexOf(to.path) !== -1) {
+                // 在免登录白名单,直接进入
+                next()
+            } else {
+                next(`/login?redirect=${to.path}`) // 否则全部重定向到登录页
+                NProgress.done()
+            }
+        }
+    }
+})
+
+router.afterEach(() => {
+    NProgress.done()
+})

+ 186 - 0
website/src/permission-sso.js

@@ -0,0 +1,186 @@
+/*
+ * @Descripttion: 
+ * @version: 
+ * @Author: siwei
+ * @Date: 2023-02-22 11:38:48
+ * @LastEditors: siwei
+ * @LastEditTime: 2023-03-03 16:24:58
+ */
+import router from './router'
+import store from './store'
+import { ElMessage } from 'element-plus'
+import NProgress from 'nprogress'
+import 'nprogress/nprogress.css'
+import { getToken } from '@/utils/auth'
+import { isHttp } from '@/utils/validate'
+import { checkToken, currentUserInfo, validateTicket, SsoLogout } from "@/api/login";
+
+
+NProgress.configure({ showSpinner: false });
+
+const whiteList = ['/login', '/auth-redirect', '/bind', '/register'];
+
+router.beforeEach((to, from, next) => {
+    // 全局前置守卫
+    NProgress.start()
+        // 获取地址栏参数
+    if (to.query && to.query.token && to.path === '/page') {
+        let access_token = to.query.token
+        console.log('校验Token是否过期');
+        //#region test
+        // // 获取username
+        // let username = 'admin'
+        // // 调用action的登录方法,进行自动认证登录
+        // console.log('开始自动认证登录');
+        // store.dispatch("LoginNew", username)
+        //   .then(() => {
+        //     store.commit("SET_SUPERUSER", username);
+        //     store.commit("SET_SUPERTOKEN", access_token);
+        //     next()
+        //   })
+        //   .catch((e) => {
+        //     console.log('认证登录失败:');
+        //     next(`/login?redirect=/`) // 否则全部重定向到登录页
+        //   });
+        //#endregion
+
+        checkToken(access_token).then(res => {
+            console.log('Token未过期,获取Token对应登录用户信息');
+            // 获取Token对应登录用户信息
+            currentUserInfo(access_token).then(res => {
+                    console.log('用户信息获取成功:' + res.data);
+                    // 获取username
+                    let username = res.data.user_name
+                        // 调用action的登录方法,进行自动认证登录
+                    console.log('开始自动认证登录');
+                    store.dispatch("LoginNew", username)
+                        .then(() => {
+                            store.commit("SET_SUPERUSER", username);
+                            store.commit("SET_SUPERTOKEN", access_token);
+                            next()
+                        })
+                        .catch((e) => {
+                            console.log('认证登录失败:');
+                            next(SSOExitUrl) // 否则全部重定向到登录页
+                        });
+                })
+                .catch((e) => {
+                    console.log('用户信息获取失败');
+                    next(SSOExitUrl) // 否则全部重定向到登录页
+                });
+        }).catch(e => {
+            console.log('Token过期,请重新登录!');
+            next(SSOExitUrl) // 否则全部重定向到登录页
+        })
+    } else if (to.query && to.query.ticket) { //TODO wanger 对接基础信息平台
+        // 通过ticket获取登录用户信息
+        validateTicket(to.query.ticket).then(res => {
+                console.log('用户信息获取成功:' + JSON.stringify(res.data));
+                // 获取username
+                let username = res.data.account;
+                // 调用action的登录方法,进行自动认证登录
+                console.log('开始自动认证登录');
+                store.dispatch("LoginNew", username)
+                    .then(() => {
+                        store.commit("SET_SUPERUSER", username);
+                        next("/")
+                    })
+                    .catch((e) => {
+                        console.log('认证登录失败:');
+                        next(SSOExitUrl) // 否则全部重定向到登录页
+                    });
+            })
+            .catch((e) => {
+                console.log('用户信息获取失败');
+                next(SSOExitUrl) // 否则全部重定向到登录页
+            });
+    } else if (to.query && to.query.logout) { //TODO wanger 对接基础信息平台
+        store.dispatch("LogOut").then(() => {});
+        // 获取Token对应登录用户信息
+        SsoLogout().then(res => {
+                console.log('单点登录退出成功');
+                next(SSOUrl) // 否则全部重定向到登录页
+            })
+            .catch((e) => {
+                console.log('单点登录退出失败');
+                next(SSOExitUrl) // 否则全部重定向到登录页
+            });
+    } else {
+        if (getToken()) {
+
+            //#region 获取单点登录的token,验证token是否过期
+            let tk = store.getters.superToken
+            if (!tk && to.query && to.query.token) {
+                tk = to.query.token
+                store.commit("SET_SUPERTOKEN", tk);
+            }
+            //#endregion
+
+            to.meta.title && store.dispatch('settings/setTitle', to.meta.title)
+                /* has token*/
+            if (to.path === '/login') {
+                next({ path: '/' })
+                NProgress.done()
+            } else if (!tk && to.path === '/page') {
+                next({ path: '/home' })
+            } else {
+                if (store.getters.roles.length === 0) {
+                    // 判断当前用户是否已拉取完user_info信息
+                    store.dispatch('GetInfo').then(() => {
+                        store.dispatch('GenerateRoutes').then(accessRoutes => {
+                            // 根据roles权限生成可访问的路由表
+                            accessRoutes.forEach(route => {
+                                if (!isHttp(route.path)) {
+                                    router.addRoute(route) // 动态添加可访问路由表
+                                }
+                            })
+                            next({...to, replace: true }) // hack方法 确保addRoutes已完成
+                        })
+                    }).catch(err => {
+                        store.dispatch('LogOut').then(() => {
+                            ElMessage.error(err)
+                            next({ path: '/' })
+                        })
+                    })
+                } else {
+                    //#region 单点修改代码片段,跳转验证token是否过期
+                    if (tk) {
+                        console.log('检验token是否过期');
+                        checkToken(tk).then(res => {
+                            console.log('Token未过期,正常跳转');
+                            next()
+                        }).catch(e => {
+                            console.log('Token过期,请重新登录!');
+                            store.commit("SET_SUPERUSER", "");
+                            store.commit("SET_SUPERTOKEN", "");
+                            next(SSOExitUrl) // 否则全部重定向到登录页
+                            return
+                        })
+                    } else {
+                        next()
+                    }
+                    //#endregion
+
+                    //#region 改前代码
+                    // next()
+                    //#endregion
+
+                }
+            }
+        } else {
+            // 没有token
+            if (whiteList.indexOf(to.path) !== -1) {
+                // 在免登录白名单,直接进入
+                next()
+            } else {
+                window.location = JcptSSOExitUrl;
+                // next(`/login?redirect=${to.path}`) // 否则全部重定向到登录页
+                NProgress.done()
+            }
+        }
+    }
+})
+
+router.afterEach(() => {
+    NProgress.done()
+})