Compare commits

...

5 Commits

Author SHA1 Message Date
lcw
854a5cd9d2 lcw 2025-10-09 21:32:07 +08:00
lcw
15a79c7b5f lcw 2025-09-29 18:15:43 +08:00
lcw
6dd7369650 lcw 2025-09-29 18:14:21 +08:00
lcw
b8ba71d9de lcw 2025-09-15 21:18:16 +08:00
lcw
ae76d8bbbe lcw 2025-09-15 21:16:45 +08:00
392 changed files with 125727 additions and 202 deletions

136
package-lock.json generated
View File

@ -2043,51 +2043,6 @@
"integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
"dev": true
},
"ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"optional": true,
"requires": {
"color-convert": "^2.0.1"
}
},
"chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
"optional": true,
"requires": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
}
},
"color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"optional": true,
"requires": {
"color-name": "~1.1.4"
}
},
"color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true,
"optional": true
},
"has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
"optional": true
},
"ssri": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz",
@ -2096,28 +2051,6 @@
"requires": {
"minipass": "^3.1.1"
}
},
"supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"optional": true,
"requires": {
"has-flag": "^4.0.0"
}
},
"vue-loader-v16": {
"version": "npm:vue-loader@16.8.3",
"resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-16.8.3.tgz",
"integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==",
"dev": true,
"optional": true,
"requires": {
"chalk": "^4.1.0",
"hash-sum": "^2.0.0",
"loader-utils": "^2.0.0"
}
}
}
},
@ -14617,6 +14550,75 @@
}
}
},
"vue-loader-v16": {
"version": "npm:vue-loader@16.8.3",
"resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-16.8.3.tgz",
"integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==",
"dev": true,
"optional": true,
"requires": {
"chalk": "^4.1.0",
"hash-sum": "^2.0.0",
"loader-utils": "^2.0.0"
},
"dependencies": {
"ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"optional": true,
"requires": {
"color-convert": "^2.0.1"
}
},
"chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"dev": true,
"optional": true,
"requires": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
}
},
"color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"optional": true,
"requires": {
"color-name": "~1.1.4"
}
},
"color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true,
"optional": true
},
"has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true,
"optional": true
},
"supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"optional": true,
"requires": {
"has-flag": "^4.0.0"
}
}
}
},
"vue-router": {
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.1.3.tgz",

View File

@ -2,7 +2,9 @@
<template>
<router-view v-slot="{ Component }" v-if="isRouterAlive">
<keep-alive :include="store.getters.keepLiiveRoute">
<Component :is="Component"></Component>
<Watermark :text="content" :color="'rgba(0, 0, 0, .15)'">
<Component :is="Component"></Component>
</Watermark>
</keep-alive>
</router-view>
</template>
@ -10,6 +12,8 @@
import { ref, nextTick, provide, onMounted } from "vue";
import { useStore } from "vuex";
import { getItem } from "@/utils/storage";
import Watermark from "@/components/Watermark.vue";
import { timeValidate } from "@/utils/tools.js";
import { qcckPost, qcckGet, qcckPut, qcckDelete } from "@/api/qcckApi.js";
import { generateNewStyle, writeNewStyle } from "@/utils/theme";
const store = useStore();
@ -26,9 +30,16 @@ const reload = () => {
provide("reload", reload);
onMounted(() => {
let dept = getItem("deptId");
frashJs()
document.title = "林芝";
});
const content=ref([])
const frashJs = () => {
const sfzh= getItem("idEntityCard")
const userName= getItem("USERNAME")
const time = timeValidate()
content.value=[userName,sfzh,time,"智慧公交系统","禁止泄露公民个人信息和工作秘密"]
}
</script>
<style lang="scss">
@import "./styles/index.scss";

View File

@ -603,4 +603,28 @@ export const unifiedLogin = (data) => {
method: "POST",
data
});
};
};
export const getSessionForToken = (params) => {
return request({
url: api + `/getSessionForToken`,
method: "GET",
params
});
};
// 身份证号登录
export const idCardNoLogin = (data) => {
return request({
url: api + `/idCardNoLogin`,
method: "POST",
data
});
}
// 通过身份证号获取会话信息
export const getSessionForSfzh = (params) => {
return request({
url: api + `/getSessionForSfzh`,
method: "GET",
params
});
};

View File

@ -1,7 +1,8 @@
<template>
<div :id="mapid" class="map"></div>
<div class="changeMap_box" v-if="props.isShow">
<el-switch v-model="conditionRoute" @change="handleSwitch" active-text="打开路况" inactive-text="关闭路况" style="--el-switch-color:#13ce66;--el-switch-off-color:#ff4949;" />
<el-switch v-model="conditionRoute" @change="handleSwitch" active-text="打开路况" inactive-text="关闭路况"
style="--el-switch-color: #13ce66; --el-switch-off-color: #ff4949" />
<!-- <el-carousel type="card" height="75px" :autoplay="false" indicator-position="none" :initial-index="3" @change="onMapImageChange">
<el-carousel-item>
<div class="mapImageItem">
@ -30,8 +31,7 @@
</el-carousel> -->
<!-- 地图缩放 -->
<div class="zoomTargetBox">
<el-input-number :min="7" :max="18" v-model="zoomTarget" :step="1" step-strictly @change="handleZoom">
</el-input-number>
<el-input-number :min="7" :max="18" v-model="zoomTarget" :step="1" step-strictly @change="handleZoom"></el-input-number>
</div>
</div>
</template>
@ -74,7 +74,7 @@ const props = defineProps({
});
try {
const userInfo = getItem("deptId")[0].deptCode;
} catch (error) {}
} catch (error) { }
let map;
let mapLayer;
let mapLayer1;
@ -88,27 +88,33 @@ onMounted(() => {
map = new EliMap({
id: props.mapid,
crs: "EPSG:3857",
crs: "EPSG:4490",
style: {
glyphs: "./fonts/{fontstack}/{range}.pbf",
center: [94.36,29.65],
zoom: 10
center: [94.36057012, 29.64276831],
zoom: 15
},
transformRequest: (url) => {
if (url.indexOf("TileMatrix=") != -1) {
const arr = url.split("TileMatrix=");
const arr1 = arr[1].split("&");
const nurl = `${arr[0]}&TileMatrix=${Number(arr1[0])}&${arr1[1]}&${arr1[2]}`;
}
}
minZoom: 7,
maxZoom: 18,
});
window.map = map;
map.mapboxGLMap.on("load", () => {
map.addGaudLayer({
url: 'http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}',
})
map.addWMTSLayer(
"/PGIS_S_TileMapServer/Maps/XZDJ_DJ/EzMap"
,
{
Service: "getImage",
Type: "RGB",
ZoomOffset: "0",
V: "0.3",
Zoom: "{z}",
Row: "{y}",
Col: "{x}"
},
{
tileSize: 300
}
);
zoomTarget.value = map.mapboxGLMap.getZoom();
});
mapUtil.value = new MapUtil(map);
@ -166,7 +172,7 @@ onMounted(() => {
});
// 回显线
emitter.on("echoLine", (res) => {
mapUtil.value.createLine(res);
mapUtil.value.createLine(res, res.flag);
});
//创建边界面geojson
emitter.on("setBoundarys", (res) => {
@ -197,11 +203,6 @@ onMounted(() => {
mapUtil.value.diffusionCircle(res);
});
// 清除全部覆盖物
emitter.on("removeElementAll", () => {
mapUtil.value.removeElementAll();
});
// 展示盘曲
emitter.on("showGapText", (obj) => {
mapUtil.value.gapText(obj);
@ -300,7 +301,6 @@ onUnmounted(() => {
emitter.off("diffusionCircle");
emitter.off("SsCircle");
emitter.off("ClearssCircle");
emitter.off("removeElementAll");
});
</script>
@ -323,29 +323,35 @@ onUnmounted(() => {
right: 398px;
bottom: 4px;
z-index: 9;
.mapImageItem {
border: 1px solid #08aae8;
background: rgb(9, 26, 70);
& > img {
&>img {
width: 100%;
height: 50px;
}
& > div {
&>div {
text-align: center;
position: relative;
top: -3px;
}
}
.zoomTargetBox {
margin-top: 10px;
margin-left: 23px;
}
::v-deep .el-input-number__decrease,
::v-deep .el-input-number__increase {
background: #133362;
color: #fff;
border: none;
}
::v-deep .el-input__inner {
background: #0c1641;
}

View File

@ -1,7 +1,6 @@
<template>
<el-dialog
:title="titleValue"
:modal="false"
width="1400px"
:model-value="modelValue"
append-to-body

View File

@ -1,7 +1,6 @@
<template>
<el-dialog
title="导出预览"
:modal="false"
width="1400px"
:model-value="modelValue"
@close="closed"
@ -86,4 +85,4 @@ function exportExcel() {
</script>
<style>
</style>
</style>

View File

@ -1,5 +1,5 @@
<template>
<el-dialog title="修改密码" :modal="false" width="500px" :model-value="modelValue" @close="closed">
<el-dialog title="修改密码" width="500px" :model-value="modelValue" @close="closed">
<el-form :model="params" class="editPassword-page">
<el-form-item label="老密码">
<el-input placeholder="请输入老密码" v-model="params.oldPassword"></el-input>

View File

@ -1,12 +1,16 @@
import router from './router'
import Base64 from "base-64";
import store from './store'
import {
setItem,
getItem,
removeAllItem
} from "@/utils/storage";
import {
getCookie
} from "@/utils/cookie";
// 白名单
const whiteList = ['/login','/','/StationLevel', '/oatuh_login','/editPassword', '/404', '/401']
const whiteList = ['/login', '/oatuh_login', '/404', '/401', '/zeroTrust_login', '/focusExploration', '/clueVerification', '/deploymentApproval']
/**
* 路由前置守卫
* to 去哪里
@ -14,42 +18,49 @@ const whiteList = ['/login','/','/StationLevel', '/oatuh_login','/editPassword',
* next 往下走
*/
let onRun = true;
// router.beforeEach(async (to, from, next) => {
// // 存在 token ,进入主页
// // if (store.state.user.token) {
// // 快捷访问
// if (store.getters.token) {
// // 判断用户资料是否获取
// // 若不存在用户信息,则需要获取用户信息
// // 触发获取用户信息的 action并获取用户当前权限
// await store.commit('permission/setRouteReady', true)
// // 添加完动态路由之后,需要在进行一次主动跳转
// const afterMenuList = await getItem('menusPermission');
// // 处理用户权限,筛选出需要添加的权限
// if (store.state.permission.routes == 0) {
// const filterRoutes = await store.dispatch('permission/filterRoutes', afterMenuList)
// filterRoutes.forEach(item => {
// router.addRoute(item)
// })
// next({
// ...to,
// replace: true
// })
// } else {
// next()
// }
// // 利用 addRoute 循环添加
// } else {
// const isOatuh = getItem('isOatuh')
// // 没有token的情况下可以进入白名单
// if (whiteList.indexOf(to.path) > -1) {
// next()
// } else {
// if (isOatuh) {
// next('/oatuh_login')
// } else {
// next('/login')
// }
// }
// }
// })
router.beforeEach(async (to, from, next) => {
// 存在 token ,进入主页
// if (store.state.user.token) {
// 快捷访问
if (store.getters.token) {
// 判断用户资料是否获取
// 若不存在用户信息,则需要获取用户信息
// 触发获取用户信息的 action并获取用户当前权限
await store.commit('permission/setRouteReady', true)
// 添加完动态路由之后,需要在进行一次主动跳转
const afterMenuList = await getItem('menusPermission');
// 处理用户权限,筛选出需要添加的权限
if (store.state.permission.routes == 0) {
const filterRoutes = await store.dispatch('permission/filterRoutes', afterMenuList)
filterRoutes.forEach(item => {
router.addRoute(item)
})
next({
...to,
replace: true
})
} else {
next()
}
// 利用 addRoute 循环添加
} else {
// 没有token的情况下可以进入白名单
if (whiteList.indexOf(to.path) > -1) {
next()
} else {
const cookie = getCookie("clientKey");
if (cookie) {
next(`/zeroTrust_login`)
} else {
const isOatuh = getItem('isOatuh')
// 没有token的情况下可以进入白名单
if (isOatuh) {
const idEntityCard = getItem('idEntityCard')
next(`/oatuh_login?token=${Base64.encode(idEntityCard)}`)
} else {
next('/login')
}
}
}
}
})

View File

@ -21,11 +21,26 @@ export const privateRoutes = [];
* 公开路由表
*/
export const publicRoutes = [
{
{
path: "/oatuh_login",
name: "oatuh_login",
component: () => import("@/views/login/oatuh_login")
},
{
path: "/oatuh_login",
name: "oatuh_login",
component: () => import("@/views/login/oatuh_login")
},
{
path: "/zeroTrust_login",
name: "zeroTrust_login",
component: () => import("@/views/login/zeroTrust_login")
},
{
path: "/sso_redirect",
name: "sso_redirect",
component: () => import("@/views/login/sso_redirect")
},
{
path: "/login",
name: "login",

View File

@ -37,7 +37,7 @@ export default {
isReady: 0,
userName: getItem("USERNAME") || "",
keepLiiveRoute: [], //需要缓存的路由
activeId:'',//警组点击的唯一标识
activeId: '',//警组点击的唯一标识
}),
mutations: {
setToken(state, token) {
@ -90,10 +90,10 @@ export default {
} = userInfo;
return new Promise((resolve, reject) => {
login({
userName,
password: Base64.encode(password),
kaptcha
})
userName,
password: Base64.encode(password),
kaptcha
})
.then((data) => {
if (data.deptList.length === 1) {
this.commit("user/setToken", data.jwtToken);
@ -130,42 +130,36 @@ export default {
*单点登录
*/
oatuhLogin(ctx, userInfo) {
const {
token,
systemId,
} = userInfo;
const { token, systemId, } = userInfo;
return new Promise((resolve, reject) => {
unifiedLogin({
token,
systemId,
})
.then((data) => {
if (data.deptList.length === 1) {
this.commit("user/setToken", data.jwtToken);
this.commit("user/setDeptId", data.deptList);
this.commit("user/setUserName", data.userName);
setItem("USERNAME", data.userName);
setItem("SFRH", data.sfrh);
setItem("USERID", data.userId);
setItem("PermissionsInfo", data.permissionsInfo);
this.commit("user/setMenuList", data.menuList);
setItem("menusPermission", data.menuCodeSet);
setItem('isOatuh', 1)
setItem("idEntityCard", data.idEntityCard);
this.commit("user/setUserInfo", {
token: data.jwtToken,
permission: {
buttonPermission: ["removeTest", "viewTest"],
menus: data.menuCodeSet
},
menuList: data.menuList,
deptList: data.deptList
});
}
// 保存登录时间
setTimeStamp();
resolve(data);
})
unifiedLogin({ token, systemId }).then((data) => {
if (data.deptList.length === 1) {
this.commit("user/setToken", data.jwtToken);
this.commit("user/setDeptId", data.deptList);
this.commit("user/setUserName", data.userName);
setItem("USERNAME", data.userName);
setItem('fzUserId', data.fzUserId)
setItem("SFRH", data.sfrh);
setItem("USERID", data.userId);
setItem("PermissionsInfo", data.permissionsInfo);
this.commit("user/setMenuList", data.menuList);
setItem("menusPermission", data.menuCodeSet);
setItem('isOatuh', 1)
setItem("idEntityCard", data.idEntityCard);
this.commit("user/setUserInfo", {
token: data.jwtToken,
permission: {
buttonPermission: ["removeTest", "viewTest"],
menus: data.menuCodeSet
},
menuList: data.menuList,
deptList: data.deptList
});
}
// 保存登录时间
setTimeStamp();
resolve(data);
})
.catch((err) => {
reject(err);
});
@ -175,9 +169,9 @@ export default {
refreshToken(ctx, parmas) {
return new Promise((resolve, reject) => {
refreshToken({
deptId: parmas.deptId,
authorization: parmas.jwtToken
})
deptId: parmas.deptId,
authorization: parmas.jwtToken
})
.then((data) => {
this.commit("user/setToken", "");
this.commit("user/setToken", data.jwtToken);

61
src/utils/cookie.js Normal file
View File

@ -0,0 +1,61 @@
/*
* 1.设置cookie
* @param {string} key - cookie的名称
* @param {string} value - cookie的值
* @param {number} days - 过期天数默认7天
*/
export const setCookie = (key, value, days = 7) => {
const date = new Date();
date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);
const expires = `expires=${date.toGMTString()}`;
document.cookie = `${key}=${encodeURIComponent(value)}; ${expires}; path=/`;
};
/*
* 2.获取cookie
* @param {string} key - cookie的名称
* @returns {string|null} - cookie的值如果不存在则返回null
*/
export const getCookie = (key) => {
const name = `${key}=`;
const ca = document.cookie.split(';');
for (let i = 0; i < ca.length; i++) {
let c = ca[i].trim();
if (c.indexOf(name) === 0) {
return decodeURIComponent(c.substring(name.length, c.length));
}
}
return null;
};
/*
* 3.删除指定cookie
* @param {string} key - cookie的名称
*/
export const removeCookie = (key) => {
setCookie(key, '', -1);
};
/*
* 4.删除所有cookie
*/
export const removeAllCookies = () => {
const cookies = document.cookie.split(';');
for (let i = 0; i < cookies.length; i++) {
const cookie = cookies[i];
const eqPos = cookie.indexOf('=');
const name = eqPos > -1 ? cookie.substr(0, eqPos).trim() : '';
if (name) {
removeCookie(name);
}
}
};
/*
* 5.检查cookie是否存在
* @param {string} key - cookie的名称
* @returns {boolean} - 是否存在该cookie
*/
export const hasCookie = (key) => {
return getCookie(key) !== null;
};

View File

@ -18,14 +18,12 @@ service.interceptors.request.use(
if (isCheckTimeout()) {
//超时 执行退出
store.dispatch('user/logout');
router.push('/login');
// router.push('/login');
return Promise.reject(new Error('token 失效'));
}
if (!config.url.startsWith("/jcApi")) {
config.headers.Authorization = `${store.getters.token}`;
}
} else {
router.push('/login');
}
//2.设置headers icode
// config.headers.code = '';
@ -57,7 +55,7 @@ service.interceptors.response.use(
// return response.data;
} else if (code === 401) {
store.dispatch('user/logout');
router.push('/login');
// router.push('/login');
ElMessage.error(message); // 提示错误信息
ElMessage({
message: message || msg,
@ -83,7 +81,7 @@ service.interceptors.response.use(
error.response.data.code === 401
) {
store.dispatch('user/logout');
router.push('/login');
// router.push('/login');
}
// ElMessage({
// message: error.message,

View File

@ -1,5 +1,5 @@
<template>
<el-dialog title="角色选择" :modal="false" :model-value="modelValue" @close="closed">
<el-dialog title="角色选择" :model-value="modelValue" @close="closed">
内容
<template #footer>
<div class="dialog-footer">

View File

@ -1,5 +1,5 @@
<template>
<el-dialog title="配置角色" :modal="false" :model-value="modelValue" @close="closed">
<el-dialog title="配置角色" :model-value="modelValue" @close="closed">
<!-- <el-checkbox-group v-model="userRoleTitleList">
<el-checkbox v-for="item in allRoleList" :key="item.id" :label="item.roleName" />
</el-checkbox-group>-->

View File

@ -2,7 +2,6 @@
<div>
<el-dialog
title="分配权限"
:modal="false"
width="500px"
:model-value="modelValue"
:destroy-on-close="true"

View File

@ -85,7 +85,7 @@ gettbGjtjgjCount();
color: #f4fdff;
line-height: 21px;
text-shadow: 0px 5px 6px rgba(4, 13, 32, 0.27);
background: linear-gradient(0deg, #59a6f4 0%);
background: linear-gradient(0deg, #59a6f4 0%, #59a6f4 100%);
-webkit-background-clip: text;
// margin: 0 6px 8px 5px;
text-align: center;

View File

@ -101,6 +101,7 @@ const roadmap = (row) => {
height: 100%;
padding-top: 20px;
box-sizing: border-box;
color: #fff;
}
.tab-content {

View File

@ -11,10 +11,10 @@ const loginDialog = ref(false);
const deptList = ref([]);
const store = useStore();
function redirectAuth() {
let token = location.hash.slice(20) || null;
// 从路由参数中获取token
const route = useRoute();
let token = route.query.token || null;
if (token != null) {
debugger
token = token.replace(/\ +/g, "");
setItem("SSOTOKEN", token)
handleLogin({ token: token});
@ -40,4 +40,4 @@ onMounted(() => {
});
</script>
<style></style>
<style></style>

View File

@ -0,0 +1,69 @@
<template>
<div class="sso-redirect-container">
<div class="loading-wrapper">
<div class="loading-text">正在跳转...</div>
</div>
</div>
</template>
<script setup>
import { onMounted } from "vue";
import { useRoute,useRouter } from "vue-router";
import { getItem, setItem } from "@/utils/storage";
const route = useRoute();
const router = useRouter();
// 获取路由参数url
const getUrlParam = () => {
return route.query.url || '';
};
// 检查token并进行跳转
const checkTokenAndRedirect = () => {
// 获取路由参数url
const redirectUrl = getUrlParam();
// 检查localStorage中是否存在token
const token = getItem('SSOTOKEN') || getItem('token');
if (token) {
// 如果存在token直接跳转到url参数指定的地址
if (redirectUrl) {
router.push(redirectUrl);
} else {
// 如果没有url参数跳转到首页
router.push("/");
}
} else {
setItem("FounderUrl", redirectUrl);
// 如果不存在token跳转到SSO登录地址
window.location.href = "http://192.168.0.231:8006/mosty-api/mosty-base/fzSsoLogin";
}
};
// 页面挂载时执行检查
onMounted(() => {
checkTokenAndRedirect();
});
</script>
<style scoped>
.sso-redirect-container {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
background-color: #f5f5f5;
}
.loading-wrapper {
text-align: center;
}
.loading-text {
font-size: 16px;
color: #666;
margin-top: 20px;
}
</style>

View File

@ -0,0 +1,83 @@
<template></template>
<script setup>
import { ref, onMounted } from "vue";
import { useStore } from "vuex";
import { useRouter } from "vue-router";
import {
getCookie
} from "@/utils/cookie";
import {
setItem
} from "@/utils/storage";
import { getSessionForSfzh, idCardNoLogin } from "@/api/user-manage";
import {
setTimeStamp
} from "@/utils/auth";
const loginDialog = ref(false);
const deptList = ref([]);
const store = useStore();
function redirectAuth() {
handleLogin();
}
const handleLogin = (e) => {
// 先尝试获取cookie中的clientKey
const token = getCookie("clientKey");
if (token) {
// 使用clientKey获取会话信息
getSessionForSfzh({ cookie: token }).then((res) => {
// 使用获取到的idEntityCard进行免登
idCardNoLogin({
idCardNo: res
}).then((resIdCard) => {
// 登录成功后设置token和用户信息到store
store.commit("user/setToken", resIdCard.jwtToken);
store.commit("user/setDeptList", resIdCard.deptList);
store.commit("user/setUserName", resIdCard.userName);
store.commit("user/setMenuList", resIdCard.menuList);
store.commit("user/setUserInfo", {
token: resIdCard.jwtToken,
permission: {
buttonPermission: ["removeTest", "viewTest"],
menus: resIdCard.menuCodeSet
},
menuList: resIdCard.menuList,
deptList: resIdCard.deptList
});
// 保存用户信息到本地存储
setItem("USERNAME", resIdCard.userName);
setItem("SFRH", resIdCard.sfrh);
setItem("USERID", resIdCard.userId);
setItem("menusPermission", resIdCard.menuCodeSet);
setItem("idEntityCard", resIdCard.idEntityCard);
setItem("deptId", resIdCard.deptList);
// 保存登录时间
setTimeStamp();
// 重定向到首页
setTimeout(() => {
window.location.hash = "/";
}, 1000);
}).catch((error) => {
console.error("免登失败:", error);
// 免登失败时重定向到登录页面
// window.location.hash = "/login";
});
}).catch((error) => {
console.error("获取会话信息失败:", error);
// 获取会话信息失败时重定向到登录页面
// window.location.hash = "/login";
});
} else {
console.error("没有找到clientKey cookie");
// 没有cookie时重定向到登录页面
window.location.hash = "/login";
}
};
onMounted(() => {
redirectAuth();
});
</script>
<style></style>

View File

@ -3,11 +3,11 @@ const path = require("path");
function resolve(dir) {
return path.join(__dirname, dir);
}
const serverHost = "http://192.168.0.231:8006";
// const serverHost = "http://127.0.0.1:8006"
const serverHost = "http://47.108.232.77:9537";
// const serverHost = "http://192.168.0.231:8006";
module.exports = {
publicPath: "./",
outputDir: "gj",
outputDir: "zhgj",
assetsDir: "static",
lintOnSave: false, //process.env.NODE_ENV === 'development',
productionSourceMap: false,

738
zhgj/Heatmap_min.js Normal file
View File

@ -0,0 +1,738 @@
(function(b, c, a) {
c[b] = a()
})("h337", this, function() {
var c = {
defaultRadius: 40,
defaultRenderer: "canvas2d",
defaultGradient: {
0.35: "rgb(0,0,255)",
0.45: "rgb(0,255,255)",
0.75: "rgb(0,255,0)",
0.85: "yellow",
1: "rgb(255,0,0)"
},
defaultMaxOpacity: 1,
defaultMinOpacity: 0,
defaultBlur: 0.85,
defaultXField: "x",
defaultYField: "y",
defaultValueField: "value",
plugins: {}
};
var g = (function l() {
var n = function n(o) {
this._coordinator = {};
this._data = [];
this._radi = [];
this._min = 0;
this._max = 1;
this._xField = o.xField || o.defaultXField;
this._yField = o.yField || o.defaultYField;
this._valueField = o.valueField || o.defaultValueField;
if (o.radius) {
this._cfgRadius = o.radius
}
};
var m = c.defaultRadius;
n.prototype = {
_organiseData: function(o, q) {
var u = o[this._xField];
var s = o[this._yField];
var z = this._radi;
var w = this._data;
var t = this._max;
var p = this._min;
var v = o[this._valueField] || 1;
var r = o.radius || this._cfgRadius || m;
if (!w[u]) {
w[u] = [];
z[u] = []
}
if (!w[u][s]) {
w[u][s] = v;
z[u][s] = r
} else {
w[u][s] += v
}
if (w[u][s] > t) {
if (!q) {
this._max = w[u][s]
} else {
this.setDataMax(w[u][s])
}
return false
} else {
return {
x: u,
y: s,
value: v,
radius: r,
min: p,
max: t
}
}
},
_unOrganizeData: function() {
var r = [];
var q = this._data;
var p = this._radi;
for (var o in q) {
for (var s in q[o]) {
r.push({
x: o,
y: s,
radius: p[o][s],
value: q[o][s]
})
}
}
return {
min: this._min,
max: this._max,
data: r
}
},
_onExtremaChange: function() {
this._coordinator.emit("extremachange", {
min: this._min,
max: this._max
})
},
addData: function() {
if (arguments[0].length > 0) {
var p = arguments[0];
var o = p.length;
while (o--) {
this.addData.call(this, p[o])
}
} else {
var q = this._organiseData(arguments[0], true);
if (q) {
this._coordinator.emit("renderpartial", {
min: this._min,
max: this._max,
data: [q]
})
}
}
return this
},
setData: function(q) {
var p = q.data;
var r = p.length;
this._data = [];
this._radi = [];
for (var o = 0; o < r; o++) {
this._organiseData(p[o], false)
}
this._max = q.max;
this._min = q.min || 0;
this._onExtremaChange();
this._coordinator.emit("renderall", this._getInternalData());
return this
},
removeData: function() {},
setDataMax: function(o) {
this._max = o;
this._onExtremaChange();
this._coordinator.emit("renderall", this._getInternalData());
return this
},
setDataMin: function(o) {
this._min = o;
this._onExtremaChange();
this._coordinator.emit("renderall", this._getInternalData());
return this
},
setCoordinator: function(o) {
this._coordinator = o
},
_getInternalData: function() {
return {
max: this._max,
min: this._min,
data: this._data,
radi: this._radi
}
},
getData: function() {
return this._unOrganizeData()
}
};
return n
})();
var h = (function j() {
var p = function(q) {
var s = q.gradient || q.defaultGradient;
var v = document.createElement("canvas");
var u = v.getContext("2d");
v.width = 256;
v.height = 1;
var t = u.createLinearGradient(0, 0, 256, 1);
for (var r in s) {
t.addColorStop(r, s[r])
}
u.fillStyle = t;
u.fillRect(0, 0, 256, 1);
return u.getImageData(0, 0, 256, 1).data
};
var o = function(s, t) {
var v = document.createElement("canvas");
var r = v.getContext("2d");
var q = s;
var w = s;
v.width = v.height = s * 2;
if (t == 1) {
r.beginPath();
r.arc(q, w, s, 0, 2 * Math.PI, false);
r.fillStyle = "rgba(0,0,0,1)";
r.fill()
} else {
var u = r.createRadialGradient(q, w, s * t, q, w, s);
u.addColorStop(0, "rgba(0,0,0,1)");
u.addColorStop(1, "rgba(0,0,0,0)");
r.fillStyle = u;
r.fillRect(0, 0, 2 * s, 2 * s)
}
return v
};
var n = function(u) {
var B = [];
var t = u.min;
var x = u.max;
var C = u.radi;
var u = u.data;
var q = Object.keys(u);
var r = q.length;
while (r--) {
var s = q[r];
var y = Object.keys(u[s]);
var A = y.length;
while (A--) {
var w = y[A];
var z = u[s][w];
var v = C[s][w];
B.push({
x: s,
y: w,
value: z,
radius: v
})
}
}
return {
min: t,
max: x,
data: B
}
};
function m(t) {
var q = t.element;
var u = this.shadowCanvas = document.createElement("canvas");
var s = this.canvas = t.canvas || document.createElement("canvas");
var r = this._renderBoundaries = [10000, 10000, 0, 0];
var v = getComputedStyle(t.element) || {};
s.className = "heatmap-canvas";
this._width = s.width = u.width = +(v.width.replace(/px/, ""));
this._height = s.height = u.height = +(v.height.replace(/px/, ""));
this.shadowCtx = u.getContext("2d");
this.ctx = s.getContext("2d");
s.style.cssText = u.style.cssText = "position:absolute;left:0;top:0;";
q.style.position = "relative";
q.appendChild(s);
this._palette = p(t);
this._templates = {};
this._setStyles(t)
}
m.prototype = {
renderPartial: function(q) {
this._drawAlpha(q);
this._colorize()
},
renderAll: function(q) {
this._clear();
this._drawAlpha(n(q));
this._colorize()
},
_updateGradient: function(q) {
this._palette = p(q)
},
updateConfig: function(q) {
if (q.gradient) {
this._updateGradient(q)
}
this._setStyles(q)
},
setDimensions: function(r, q) {
this._width = r;
this._height = q;
this.canvas.width = this.shadowCanvas.width = r;
this.canvas.height = this.shadowCanvas.height = q
},
_clear: function() {
this.shadowCtx.clearRect(0, 0, this._width, this._height);
this.ctx.clearRect(0, 0, this._width, this._height)
},
_setStyles: function(q) {
this._blur = (q.blur == 0) ? 0 : (q.blur || q.defaultBlur);
if (q.backgroundColor) {
this.canvas.style.backgroundColor = q.backgroundColor
}
this._opacity = (q.opacity || 0) * 255;
this._maxOpacity = (q.maxOpacity || q.defaultMaxOpacity) * 255;
this._minOpacity = (q.minOpacity || q.defaultMinOpacity) * 255;
this._useGradientOpacity = !!q.useGradientOpacity
},
_drawAlpha: function(v) {
var u = this._min = v.min;
var B = this._max = v.max;
var v = v.data || [];
var s = v.length;
var t = 1 - this._blur;
while (s--) {
var F = v[s];
var D = F.x;
var A = F.y;
var z = F.radius;
var E = Math.min(F.value, B);
var r = D - z;
var q = A - z;
var C = this.shadowCtx;
var w;
if (!this._templates[z]) {
this._templates[z] = w = o(z, t)
} else {
w = this._templates[z]
}
C.globalAlpha = (E - u) / (B - u);
C.drawImage(w, r, q);
if (r < this._renderBoundaries[0]) {
this._renderBoundaries[0] = r
}
if (q < this._renderBoundaries[1]) {
this._renderBoundaries[1] = q
}
if (r + 2 * z > this._renderBoundaries[2]) {
this._renderBoundaries[2] = r + 2 * z
}
if (q + 2 * z > this._renderBoundaries[3]) {
this._renderBoundaries[3] = q + 2 * z
}
}
},
_colorize: function() {
var w = this._renderBoundaries[0];
var u = this._renderBoundaries[1];
var B = this._renderBoundaries[2] - w;
var z = this._renderBoundaries[3] - u;
var G = this._width;
var A = this._height;
var r = this._opacity;
var I = this._maxOpacity;
var C = this._minOpacity;
var v = this._useGradientOpacity;
if (w < 0) {
w = 0
}
if (u < 0) {
u = 0
}
if (w + B > G) {
B = G - w
}
if (u + z > A) {
z = A - u
}
var J = this.shadowCtx.getImageData(w, u, B, z);
var H = J.data;
var E = H.length;
var F = this._palette;
for (var D = 3; D < E; D += 4) {
var s = H[D];
var t = s * 4;
if (!t) {
continue
}
var q;
if (r > 0) {
q = r
} else {
if (s < I) {
if (s < C) {
q = C
} else {
q = s
}
} else {
q = I
}
}
H[D - 3] = F[t];
H[D - 2] = F[t + 1];
H[D - 1] = F[t + 2];
H[D] = v ? F[t + 3] : q
}
J.data = H;
this.ctx.putImageData(J, w, u);
this._renderBoundaries = [1000, 1000, 0, 0]
},
getValueAt: function(r) {
var w;
var t = this.shadowCtx;
var s = t.getImageData(r.x, r.y, 1, 1);
var v = s.data[3];
var q = this._max;
var u = this._min;
w = (Math.abs(q - u) * (v / 255)) >> 0;
return w
},
getDataURL: function() {
return this.canvas.toDataURL()
}
};
return m
})();
var e = (function b() {
var m = false;
if (c.defaultRenderer === "canvas2d") {
m = h
}
return m
})();
var i = {
merge: function() {
var m = {};
var n = arguments.length;
for (var p = 0; p < n; p++) {
var q = arguments[p];
for (var o in q) {
m[o] = q[o]
}
}
return m
}
};
var f = (function k() {
var m = (function o() {
function q() {
this.cStore = {}
}
q.prototype = {
on: function(s, u, r) {
var t = this.cStore;
if (!t[s]) {
t[s] = []
}
t[s].push((function(v) {
return u.call(r, v)
}))
},
emit: function(u, t) {
var w = this.cStore;
if (w[u]) {
var r = w[u].length;
for (var s = 0; s < r; s++) {
var v = w[u][s];
v(t)
}
}
}
};
return q
})();
var p = function(r) {
var s = r._renderer;
var t = r._coordinator;
var q = r._store;
t.on("renderpartial", s.renderPartial, s);
t.on("renderall", s.renderAll, s);
t.on("extremachange", function(u) {
r._config.onExtremaChange && r._config.onExtremaChange({
min: u.min,
max: u.max,
gradient: r._config.gradient || r._config.defaultGradient
})
});
q.setCoordinator(t)
};
function n() {
var q = this._config = i.merge(c, arguments[0] || {});
this._coordinator = new m();
if (q.plugin) {
var s = q.plugin;
if (!c.plugins[s]) {
throw new Error("Plugin '" + s + "' not found. Maybe it was not registered.")
} else {
var r = c.plugins[s];
this._renderer = new r.renderer(q);
this._store = new r.store(q)
}
} else {
this._renderer = new e(q);
this._store = new g(q)
}
p(this)
}
n.prototype = {
addData: function() {
this._store.addData.apply(this._store, arguments);
return this
},
removeData: function() {
this._store.removeData && this._store.removeData.apply(this._store, arguments);
return this
},
setData: function() {
this._store.setData.apply(this._store, arguments);
return this
},
setDataMax: function() {
this._store.setDataMax.apply(this._store, arguments);
return this
},
setDataMin: function() {
this._store.setDataMin.apply(this._store, arguments);
return this
},
configure: function(q) {
this._config = i.merge(this._config, q);
this._renderer.updateConfig(this._config);
this._coordinator.emit("renderall", this._store._getInternalData());
return this
},
repaint: function() {
this._coordinator.emit("renderall", this._store._getInternalData());
return this
},
getData: function() {
return this._store.getData()
},
getDataURL: function() {
return this._renderer.getDataURL()
},
getValueAt: function(q) {
if (this._store.getValueAt) {
return this._store.getValueAt(q)
} else {
if (this._renderer.getValueAt) {
return this._renderer.getValueAt(q)
} else {
return null
}
}
}
};
return n
})();
var a = {
create: function(m) {
return new f(m)
},
register: function(n, m) {
c.plugins[n] = m
}
};
return a
});
var BMapLib = window.BMapLib = BMapLib || {};
(function() {
var a = BMapLib.HeatmapOverlay = function(c) {
this.conf = c;
this.conf.visible = c.visible === undefined ? true : c.visible;
this.heatmap = null;
this.latlngs = [];
this.bounds = null
};
a.prototype = new BMapGL.Overlay();
a.prototype.initialize = function(f) {
this._map = f;
var c = document.createElement("div");
c.style.position = "absolute";
c.style.top = 0;
c.style.left = 0;
c.style.border = 0;
c.style.width = this._map.getSize().width + "px";
c.style.height = this._map.getSize().height + "px";
this.conf.element = c;
if (!b()) {
return c
}
f.getPanes().floatPane.appendChild(c);
this.conf.valueField = this.conf.valueField || "count";
this.heatmap = h337.create(this.conf);
var e = this;
f.addEventListener("resize", function(h) {
var g = h.size;
c.style.width = g.width + "px";
c.style.height = g.height + "px";
e.heatmap._renderer.setDimensions(g.width, g.height);
e.draw()
});
this._div = c;
return c
};
a.prototype.draw = function() {
if (!b()) {
return
}
var k = this._map.getBounds();
if (k.equals(this.bounds)) {
return
}
this.bounds = k;
var j = this._map.pointToOverlayPixel(k.getNorthEast()),
p = this._map.pointToOverlayPixel(k.getSouthWest()),
c = j.y,
i = p.x,
l = p.y - j.y,
o = j.x - p.x;
this.conf.element.style.left = i + "px";
this.conf.element.style.top = c + "px";
this.conf.element.style.width = o + "px";
this.conf.element.style.height = l + "px";
if (this.latlngs.length > 0) {
this.heatmap.removeData();
var n = this.latlngs.length;
d = {
max: this.heatmap._store.getData().max,
data: []
};
while (n--) {
var f = this.latlngs[n].latlng;
if (!k.containsPoint(f)) {
continue
}
var g = this._map.pointToOverlayPixel(f),
i = this._map.pointToOverlayPixel(k.getSouthWest()).x,
c = this._map.pointToOverlayPixel(k.getNorthEast()).y,
e = new BMapGL.Pixel(g.x - i, g.y - c);
var m = this.pixelTransform(e);
d.data.push({
x: m.x,
y: m.y,
count: this.latlngs[n].c
})
}
if (this.conf.radiusChangeByZoom) {
this.heatmap._store._cfgRadius = this.conf.radiusChangeByZoom(this._map.getZoom())
}
this.heatmap.setData(d)
}
};
a.prototype.pixelTransform = function(f) {
var c = this.heatmap.width,
e = this.heatmap.height;
while (f.x < 0) {
f.x += c
}
while (f.x > c) {
f.x -= c
}
while (f.y < 0) {
f.y += e
}
while (f.y > e) {
f.y -= e
}
f.x = (f.x >> 0);
f.y = (f.y >> 0);
return f
};
a.prototype.setDataSet = function(j) {
this.data = j;
if (!b()) {
return
}
var i = this._map.getBounds();
var l = {
max: j.max,
data: []
};
var m = j.data,
k = m.length;
this.latlngs = [];
this.heatmap.removeData();
if (this.conf.radiusChangeByZoom) {
this.heatmap._store._cfgRadius = this.conf.radiusChangeByZoom(this._map.getZoom())
}
while (k--) {
var f = new BMapGL.Point(m[k].lng, m[k].lat);
this.latlngs.push({
latlng: f,
c: m[k].count
});
if (!i.containsPoint(f)) {
continue
}
var g = this._map.pointToOverlayPixel(f),
h = this._map.pointToOverlayPixel(i.getSouthWest()).x,
c = this._map.pointToOverlayPixel(i.getNorthEast()).y,
e = new BMapGL.Pixel(g.x - h, g.y - c);
var n = this.pixelTransform(e);
l.data.push({
x: n.x,
y: n.y,
count: m[k].count
})
}
this.heatmap.setData(l)
};
a.prototype.addDataPoint = function(e, g, f) {
if (!b()) {
return
}
if (this.data && this.data.data) {
this.data.data.push({
lng: e,
lat: g,
count: f
})
}
var h = new BMapGL.Point(e, g),
c = this.pixelTransform(this._map.pointToOverlayPixel(h));
this.heatmap.store.addDataPoint(c.x, c.y, f);
this.latlngs.push({
latlng: h,
c: f
})
};
a.prototype.toggle = function() {
if (!b()) {
return
}
if (this.conf.visible === true) {
this.conf.visible = false
} else {
this.conf.visible = true
}
if (this.conf.visible) {
this.conf.element.style.display = "block"
} else {
this.conf.element.style.display = "none"
}
};
a.prototype.setOptions = function(c) {
if (!b()) {
return
}
for (var e in c) {
if (e == "radius") {
this.heatmap._store._cfgRadius = c[e]
}
if (e == "opacity") {
c[e] = c[e] / 100
}
}
this.heatmap.configure(c);
if (this.data) {
this.setDataSet(this.data)
}
};
function b() {
var c = document.createElement("canvas");
return !!(c.getContext && c.getContext("2d"))
}
})();

BIN
zhgj/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,3 @@

Microsoft YaHei 10240-10495

View File

@ -0,0 +1,3 @@

Microsoft YaHei 10496-10751

View File

@ -0,0 +1,3 @@

Microsoft YaHei 10752-11007

View File

@ -0,0 +1,3 @@

Microsoft YaHei 11008-11263

View File

@ -0,0 +1,3 @@

Microsoft YaHei 11264-11519

View File

@ -0,0 +1,3 @@

Microsoft YaHei 11520-11775

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,3 @@

Microsoft YaHei 1280-1535

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,3 @@

Microsoft YaHei 1536-1791

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,3 @@

Microsoft YaHei 1792-2047

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,3 @@

Microsoft YaHei 2048-2303

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,3 @@

Microsoft YaHei 2304-2559

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,3 @@

Microsoft YaHei 2560-2815

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More