lcw
This commit is contained in:
BIN
gsxt/gsxt.zip
BIN
gsxt/gsxt.zip
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
gsxt/static/js/app.1c09a2d2.js
Normal file
1
gsxt/static/js/app.1c09a2d2.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
gsxt/static/js/chunk-12f49f15.a5593e65.js
Normal file
1
gsxt/static/js/chunk-12f49f15.a5593e65.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
gsxt/static/js/chunk-1ce7c355.77b04191.js
Normal file
1
gsxt/static/js/chunk-1ce7c355.77b04191.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
gsxt/static/js/chunk-2d0dd6ad.0e471ba5.js
Normal file
1
gsxt/static/js/chunk-2d0dd6ad.0e471ba5.js
Normal file
@ -0,0 +1 @@
|
|||||||
|
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0dd6ad"],{"80fe":function(e,t,o){"use strict";o.r(t);var s=o("7a23"),n=o("5502"),c=o("f3e4"),i=o("5d2d"),r=o("92c2"),u=o("5f87"),d={__name:"zeroTrust_login",setup(e){Object(s["ref"])(!1),Object(s["ref"])([]);const t=Object(n["b"])();function o(){d()}const d=e=>{const o=Object(c["a"])("clientKey");o?Object(r["r"])({cookie:o}).then(e=>{Object(r["z"])({idCardNo:e}).then(e=>{t.commit("user/setToken",e.jwtToken),t.commit("user/setDeptList",e.deptList),t.commit("user/setUserName",e.userName),t.commit("user/setMenuList",e.menuList),t.commit("user/setUserInfo",{token:e.jwtToken,permission:{buttonPermission:["removeTest","viewTest"],menus:e.menuCodeSet},menuList:e.menuList,deptList:e.deptList}),Object(i["c"])("USERNAME",e.userName),Object(i["c"])("SFRH",e.sfrh),Object(i["c"])("USERID",e.userId),Object(i["c"])("menusPermission",e.menuCodeSet),Object(i["c"])("idEntityCard",e.idEntityCard),Object(i["c"])("deptId",e.deptList),Object(u["b"])(),setTimeout(()=>{window.location.hash="/"},1e3)}).catch(e=>{console.error("免登失败:",e)})}).catch(e=>{console.error("获取会话信息失败:",e)}):(console.error("没有找到clientKey cookie"),window.location.hash="/login")};return Object(s["onMounted"])(()=>{o()}),(e,t)=>null}};const m=d;t["default"]=m}}]);
|
||||||
@ -1 +0,0 @@
|
|||||||
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d22bd3e"],{f141:function(t,e,n){"use strict";n.r(e);var o=n("7a23"),c=n("5502"),a=n("5d2d"),u={__name:"oatuh_login",setup(t){const e=Object(o["ref"])(!1),n=Object(o["ref"])([]),u=Object(c["b"])();function i(){let t=location.hash.slice(20)||null;null!=t?(t=t.replace(/\ +/g,""),Object(a["c"])("SSOTOKEN",t),l({token:t})):window.location.href="http://155.240.22.102:40992"}const l=t=>{u.dispatch("user/oatuhLogin",t).then(t=>{1===t.deptList.length?window.location.hash="/":(n.value=[...t.deptList],e.value=!0,authorization.value=t.jwtToken)})};return Object(o["onMounted"])(()=>{i()}),(t,e)=>null}};const i=u;e["default"]=i}}]);
|
|
||||||
1
gsxt/static/js/chunk-2d22bd3e.b3619b84.js
Normal file
1
gsxt/static/js/chunk-2d22bd3e.b3619b84.js
Normal file
@ -0,0 +1 @@
|
|||||||
|
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d22bd3e"],{f141:function(t,e,n){"use strict";n.r(e);var o=n("7a23"),c=n("5502"),u=n("6605"),a=n("5d2d"),i={__name:"oatuh_login",setup(t){const e=Object(o["ref"])(!1),n=Object(o["ref"])([]),i=Object(c["b"])();function l(){const t=Object(u["c"])();let e=t.query.token||null;null!=e?(e=e.replace(/\ +/g,""),Object(a["c"])("SSOTOKEN",e),s({token:e})):window.location.href="http://155.240.22.188:9020"}const s=t=>{i.dispatch("user/oatuhLogin",t).then(t=>{1===t.deptList.length?window.location.hash="/":(n.value=[...t.deptList],e.value=!0,authorization.value=t.jwtToken)})};return Object(o["onMounted"])(()=>{l()}),(t,e)=>null}};const l=i;e["default"]=l}}]);
|
||||||
1
gsxt/static/js/chunk-320c71b4.a202699c.js
Normal file
1
gsxt/static/js/chunk-320c71b4.a202699c.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
gsxt/static/js/chunk-43e79ce1.7978004e.js
Normal file
1
gsxt/static/js/chunk-43e79ce1.7978004e.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
31
gsxt/static/js/chunk-55c7ca9b.a8432929.js
Normal file
31
gsxt/static/js/chunk-55c7ca9b.a8432929.js
Normal file
File diff suppressed because one or more lines are too long
1
gsxt/static/js/chunk-5e2d431c.70e5efd0.js
Normal file
1
gsxt/static/js/chunk-5e2d431c.70e5efd0.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
gsxt/static/js/chunk-643588c8.5e69b844.js
Normal file
1
gsxt/static/js/chunk-643588c8.5e69b844.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
gsxt/static/js/chunk-78cfa598.32474c4a.js
Normal file
1
gsxt/static/js/chunk-78cfa598.32474c4a.js
Normal file
File diff suppressed because one or more lines are too long
1
gsxt/static/js/chunk-7a452512.70129ac9.js
Normal file
1
gsxt/static/js/chunk-7a452512.70129ac9.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
gsxt/static/js/chunk-bda1cfea.9857f4f2.js
Normal file
1
gsxt/static/js/chunk-bda1cfea.9857f4f2.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
gsxt/static/js/chunk-e80c3b34.d4126be4.js
Normal file
1
gsxt/static/js/chunk-e80c3b34.d4126be4.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -604,3 +604,27 @@ export const unifiedLogin = (data) => {
|
|||||||
data
|
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
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|||||||
BIN
src/assets/images/default_male.png
Normal file
BIN
src/assets/images/default_male.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.6 KiB |
@ -1,15 +1,16 @@
|
|||||||
import router from './router'
|
import router from './router'
|
||||||
|
import Base64 from "base-64";
|
||||||
import store from './store'
|
import store from './store'
|
||||||
import {
|
|
||||||
unifiedLogin
|
|
||||||
} from "@/api/user-manage";
|
|
||||||
import {
|
import {
|
||||||
setItem,
|
setItem,
|
||||||
getItem,
|
getItem,
|
||||||
removeAllItem
|
removeAllItem
|
||||||
} from "@/utils/storage";
|
} from "@/utils/storage";
|
||||||
|
import {
|
||||||
|
getCookie
|
||||||
|
} from "@/utils/cookie";
|
||||||
// 白名单
|
// 白名单
|
||||||
const whiteList = ['/login', '/oatuh_login', '/404', '/401', '/focusExploration', '/clueVerification', '/deploymentApproval']
|
const whiteList = ['/login', '/oatuh_login', '/404', '/401', '/zeroTrust_login', '/focusExploration', '/clueVerification', '/deploymentApproval']
|
||||||
/**
|
/**
|
||||||
* 路由前置守卫
|
* 路由前置守卫
|
||||||
* to 去哪里
|
* to 去哪里
|
||||||
@ -43,11 +44,16 @@ router.beforeEach(async (to, from, next) => {
|
|||||||
}
|
}
|
||||||
// 利用 addRoute 循环添加
|
// 利用 addRoute 循环添加
|
||||||
} else {
|
} else {
|
||||||
const isOatuh = getItem('isOatuh')
|
|
||||||
// 没有token的情况下,可以进入白名单
|
// 没有token的情况下,可以进入白名单
|
||||||
if (whiteList.indexOf(to.path) > -1) {
|
if (whiteList.indexOf(to.path) > -1) {
|
||||||
next()
|
next()
|
||||||
} else {
|
} else {
|
||||||
|
const cookie = getCookie("clientKey");
|
||||||
|
if (cookie) {
|
||||||
|
next(`/zeroTrust_login`)
|
||||||
|
} else {
|
||||||
|
const isOatuh = getItem('isOatuh')
|
||||||
|
// 没有token的情况下,可以进入白名单
|
||||||
if (isOatuh) {
|
if (isOatuh) {
|
||||||
const idEntityCard = getItem('idEntityCard')
|
const idEntityCard = getItem('idEntityCard')
|
||||||
next(`/oatuh_login?token=${Base64.encode(idEntityCard)}`)
|
next(`/oatuh_login?token=${Base64.encode(idEntityCard)}`)
|
||||||
@ -56,4 +62,5 @@ router.beforeEach(async (to, from, next) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@ -141,6 +141,11 @@ export const publicRoutes = [
|
|||||||
name: "login",
|
name: "login",
|
||||||
component: () => import("@/views/login/index")
|
component: () => import("@/views/login/index")
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: "/zeroTrust_login",
|
||||||
|
name: "zeroTrust_login",
|
||||||
|
component: () => import("@/views/login/zeroTrust_login")
|
||||||
|
},
|
||||||
{
|
{
|
||||||
path: "/",
|
path: "/",
|
||||||
name: "home",
|
name: "home",
|
||||||
|
|||||||
@ -24,7 +24,7 @@
|
|||||||
<span style="color: #0072ff;" @click="handleClick(row)">{{ row.xwcs }}</span>
|
<span style="color: #0072ff;" @click="handleClick(row)">{{ row.xwcs }}</span>
|
||||||
</template>
|
</template>
|
||||||
<template #bqYs="{ row }">
|
<template #bqYs="{ row }">
|
||||||
<DictTag :value="row.bqYs" :tag="false" :options="D_GS_SSYJ" />
|
<DictTag :value="row.bqys" :tag="false" :options="D_GS_SSYJ" />
|
||||||
</template>
|
</template>
|
||||||
<template #controls="{ row }">
|
<template #controls="{ row }">
|
||||||
<el-link type="primary">下发指令</el-link>
|
<el-link type="primary">下发指令</el-link>
|
||||||
@ -115,7 +115,7 @@ const getList = () =>{
|
|||||||
qcckGet(queryFrom.value,'/mosty-gsxt/yjzxXwyj/getPageList').then((res)=>{
|
qcckGet(queryFrom.value,'/mosty-gsxt/yjzxXwyj/getPageList').then((res)=>{
|
||||||
pageData.total = res.total || 0;
|
pageData.total = res.total || 0;
|
||||||
pageData.tableConfiger.loading = false;
|
pageData.tableConfiger.loading = false;
|
||||||
pageData.tableData = res.records || [];
|
// pageData.tableData = res.records || [];
|
||||||
}).catch(()=>{
|
}).catch(()=>{
|
||||||
pageData.tableConfiger.loading = false;
|
pageData.tableConfiger.loading = false;
|
||||||
})
|
})
|
||||||
|
|||||||
@ -6,25 +6,40 @@
|
|||||||
<span>{{ changetText(props.item.yjJb) }}</span>
|
<span>{{ changetText(props.item.yjJb) }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<el-image :preview-teleported="true" style="width: 80px; height: 110px" :src="props.item.yjTp"
|
<el-image :preview-teleported="true" style="width: 80px; height: 110px" :src="item.yjTp"
|
||||||
:preview-src-list="[props.item.yjTp]" />
|
:preview-src-list="[item.yjTp]" show-progress>
|
||||||
|
<template #error>
|
||||||
|
<div class="image-slot error">
|
||||||
|
<img src="@/assets/images/car.png" width="65" height="80" v-if="item.yjLx == 2" />
|
||||||
|
<img src="@/assets/images/default_male.png" width="80" height="110" v-else />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-image>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<span class="smallbtn" @click.stop="() => { }">全息档案{{ props.item.id }}</span>
|
<span class="smallbtn" @click.stop="() => { }">全息档案</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="infoBox">
|
<div class="infoBox">
|
||||||
<div style="height: 110px">
|
<div style="height: 110px">
|
||||||
<div class="flex nowrap align-center just-between linItem">
|
<div class="flex nowrap align-center just-between linItem">
|
||||||
<div class="wichAlian3">{{ props.item.yjRyxm }}</div>
|
<div class="wichAlian3">
|
||||||
|
<span v-if="item.yjLx == 2" >{{ props.item.yjClcph }}</span>
|
||||||
|
<span v-else >{{ props.item.yjRyxm }}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<template v-if="item.yjLx == 1">
|
||||||
<div>|</div>
|
<div>|</div>
|
||||||
<div class="wichAlian">{{ IdCard(props.item.yjRysfzh, 2) }}</div>
|
<div class="wichAlian">{{ IdCard(props.item.yjRysfzh, 2) }}</div>
|
||||||
<div>|</div>
|
<div>|</div>
|
||||||
<div class="wichAlian2"> {{ IdCard(props.item.yjRysfzh, 3) }}</div>
|
<div class="wichAlian2"> {{ IdCard(props.item.yjRysfzh, 3) }}</div>
|
||||||
<div>|</div>
|
<div>|</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
<div class="wichAlian3"> <span class="bqbox ml6">{{ props.item.yjbq }}</span></div>
|
<div class="wichAlian3"> <span class="bqbox ml6">{{ props.item.yjbq }}</span></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="linItem">身份证号:{{ props.item.yjRysfzh }}</div>
|
<div class="linItem" v-if="item.yjLx == 1">身份证号:{{ props.item.yjRysfzh }}</div>
|
||||||
<div class="linItem">预警时间:{{ props.item.yjSj }}</div>
|
<div class="linItem">预警时间:{{ props.item.yjSj }}</div>
|
||||||
<div class="linItem flex nowrap align-center just-between">预警次数:{{ props.item.yjCs }}<div></div>
|
<div class="linItem flex nowrap align-center just-between">预警次数:{{ props.item.yjCs }}<div></div>
|
||||||
<div>相似度:90%</div>
|
<div>相似度:90%</div>
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
<div class="systemBox">
|
<div class="systemBox">
|
||||||
<GdMap></GdMap>
|
<GdMap></GdMap>
|
||||||
<!-- 头部筛选 -->
|
<!-- 头部筛选 -->
|
||||||
<div class="topSearch">
|
<!-- <div class="topSearch">
|
||||||
<el-form v-model="listQuery">
|
<el-form v-model="listQuery">
|
||||||
<MOSTY.Select v-model="listQuery.sd" :dictEnum="search.xd" />
|
<MOSTY.Select v-model="listQuery.sd" :dictEnum="search.xd" />
|
||||||
<MOSTY.Select v-model="listQuery.zs" :dictEnum="search.zs" />
|
<MOSTY.Select v-model="listQuery.zs" :dictEnum="search.zs" />
|
||||||
@ -10,7 +10,7 @@
|
|||||||
<MOSTY.Select v-model="listQuery.dz" :dictEnum="search.dz" />
|
<MOSTY.Select v-model="listQuery.dz" :dictEnum="search.dz" />
|
||||||
</el-form>
|
</el-form>
|
||||||
<el-button type="primary">搜索</el-button>
|
<el-button type="primary">搜索</el-button>
|
||||||
</div>
|
</div> -->
|
||||||
<div class="systemBox">
|
<div class="systemBox">
|
||||||
<!-- 左边列表 -->
|
<!-- 左边列表 -->
|
||||||
<div class="leftList">
|
<div class="leftList">
|
||||||
@ -30,9 +30,10 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-input>
|
</el-input>
|
||||||
</div>
|
</div>
|
||||||
|
<!-- @click.stop="showDetail(item)" -->
|
||||||
|
|
||||||
<ul class="listContent noScollLine mt10" v-infinite-scroll="loadList" style="overflow: auto"
|
<ul class="listContent noScollLine mt10" v-infinite-scroll="loadList" style="overflow: auto"
|
||||||
v-loading="loading">
|
v-loading="loading">
|
||||||
<!-- @click.stop="showDetail(item)" -->
|
|
||||||
<li v-for="(item, index) in personList" :key="index" @click="markAbove(item)">
|
<li v-for="(item, index) in personList" :key="index" @click="markAbove(item)">
|
||||||
<YjItem :item="item" type="yj" :dic="{ D_BZ_YJCZZT }" @showDetail="showDetail"></YjItem>
|
<YjItem :item="item" type="yj" :dic="{ D_BZ_YJCZZT }" @showDetail="showDetail"></YjItem>
|
||||||
</li>
|
</li>
|
||||||
|
|||||||
@ -7,8 +7,16 @@
|
|||||||
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="pageData.tableHeight"
|
||||||
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
|
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
|
||||||
<template #yjTp="{ row }">
|
<template #yjTp="{ row }">
|
||||||
<el-image :preview-teleported="true" style="width: 80px; height: 110px" :src="row.yjTp"
|
<el-image style="width: 80px; height:120px" :src="row.yjTp" :preview-src-list="[row.yjTp]" show-progress>
|
||||||
:preview-src-list="[row.yjTp]" />
|
<template #error>
|
||||||
|
<div class="image-slot error">
|
||||||
|
<img src="@/assets/images/car.png" width="65" height="70" v-if="row.yjLx == 2"/>
|
||||||
|
<img src="@/assets/images/default_male.png" width="65" height="70" v-else/>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-image>
|
||||||
|
<!-- <el-image :preview-teleported="true" style="width: 80px; height: 110px" :src="row.yjTp"
|
||||||
|
:preview-src-list="[row.yjTp]" /> -->
|
||||||
</template>
|
</template>
|
||||||
<template #nl="{ row }">
|
<template #nl="{ row }">
|
||||||
{{ IdCard(row.yjRysfzh, 3) }}
|
{{ IdCard(row.yjRysfzh, 3) }}
|
||||||
@ -61,7 +69,7 @@ const pageData = reactive({
|
|||||||
}, //分页
|
}, //分页
|
||||||
controlsWidth: 160, //操作栏宽度
|
controlsWidth: 160, //操作栏宽度
|
||||||
tableColumn: [
|
tableColumn: [
|
||||||
{ label: "人像照片", prop: "yjTp", showSolt: true },
|
{ label: "预警图片", prop: "yjTp", showSolt: true },
|
||||||
{ label: "姓名", prop: "yjRyxm" },
|
{ label: "姓名", prop: "yjRyxm" },
|
||||||
{ label: "年龄", prop: "nl", showSolt: true },
|
{ label: "年龄", prop: "nl", showSolt: true },
|
||||||
{ label: "性别", prop: "xb", showSolt: true },
|
{ label: "性别", prop: "xb", showSolt: true },
|
||||||
|
|||||||
@ -44,8 +44,19 @@
|
|||||||
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="500"
|
<MyTable :tableData="pageData.tableData" :tableColumn="pageData.tableColumn" :tableHeight="500"
|
||||||
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
|
:key="pageData.keyCount" :tableConfiger="pageData.tableConfiger" :controlsWidth="pageData.controlsWidth">
|
||||||
<template #yjTp="{ row }">
|
<template #yjTp="{ row }">
|
||||||
<el-image :preview-teleported="true" style="width: 80px; height: 110px" :src="row.yjTp"
|
<el-image style="width: 80px; height:120px" :src="row.yjTp" :preview-src-list="[row.yjTp]" show-progress>
|
||||||
:preview-src-list="[row.yjTp]" />
|
<template #error>
|
||||||
|
<div class="image-slot error">
|
||||||
|
<img src="@/assets/images/car.png" width="65" height="70" v-if="row.yjLx == 2"/>
|
||||||
|
<img src="@/assets/images/default_male.png" width="65" height="70" v-else/>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-image>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- <el-image :preview-teleported="true" style="width: 80px; height: 110px" :src="row.yjTp"
|
||||||
|
:preview-src-list="[row.yjTp]" /> -->
|
||||||
</template>
|
</template>
|
||||||
<template #nl="{ row }">
|
<template #nl="{ row }">
|
||||||
{{ IdCard(row.yjRysfzh, 3) }}
|
{{ IdCard(row.yjRysfzh, 3) }}
|
||||||
@ -133,7 +144,7 @@ const pageData = reactive({
|
|||||||
}, //分页
|
}, //分页
|
||||||
controlsWidth: 160, //操作栏宽度
|
controlsWidth: 160, //操作栏宽度
|
||||||
tableColumn: [
|
tableColumn: [
|
||||||
{ label: "人像照片", prop: "yjTp", showSolt: true },
|
{ label: "预警图片", prop: "yjTp", showSolt: true },
|
||||||
{ label: "姓名", prop: "yjRyxm" },
|
{ label: "姓名", prop: "yjRyxm" },
|
||||||
{ label: "年龄", prop: "nl", showSolt: true },
|
{ label: "年龄", prop: "nl", showSolt: true },
|
||||||
{ label: "性别", prop: "xb", showSolt: true },
|
{ label: "性别", prop: "xb", showSolt: true },
|
||||||
|
|||||||
@ -1,7 +1,17 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="warning-card ">
|
<div class="warning-card ">
|
||||||
<div class="warning-image flex">
|
<div class="warning-image flex">
|
||||||
<img :src="item.yjTp" width="65" height="70" />
|
<el-image style="width: 65px; height: 70px" :src="item.yjTp" :preview-src-list="[item.yjTp]" show-progress>
|
||||||
|
<template #error>
|
||||||
|
<div class="image-slot error">
|
||||||
|
<img src="@/assets/images/car.png" width="65" height="70" v-if="item.yjLx == 2"/>
|
||||||
|
<img src="@/assets/images/default_male.png" width="65" height="70" v-else/>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-image>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="ml10 warning-info">
|
<div class="ml10 warning-info">
|
||||||
<div class="flex just-between align-center">
|
<div class="flex just-between align-center">
|
||||||
<div class="flex align-center mt4" v-if="item.yjLx == 2">
|
<div class="flex align-center mt4" v-if="item.yjLx == 2">
|
||||||
@ -98,6 +108,27 @@ const changeBG = (str) => {
|
|||||||
background: #e9e9e9;
|
background: #e9e9e9;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 图片错误状态样式
|
||||||
|
.image-slot {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 主图错误和预览图错误的样式
|
||||||
|
.image-slot.error,
|
||||||
|
.image-slot.viewer-error {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
.warning-boder{
|
.warning-boder{
|
||||||
border-bottom: 2px dashed #0958b2;
|
border-bottom: 2px dashed #0958b2;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,7 +1,15 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="warning-card flex align-center" :class="changeBG(item.yjJb)">
|
<div class="warning-card flex align-center" :class="changeBG(item.yjJb)">
|
||||||
<div class="warning-image">
|
<div class="warning-image">
|
||||||
<img :src="item.yjTp" width="80" height="120" alt="" />
|
<el-image style="width: 80px; height:120px" :src="item.yjTp" :preview-src-list="[item.yjTp]" show-progress>
|
||||||
|
<template #error>
|
||||||
|
<div class="image-slot error">
|
||||||
|
<img src="@/assets/images/car.png" width="65" height="70" v-if="item.yjLx == 2"/>
|
||||||
|
<img src="@/assets/images/default_male.png" width="65" height="70" v-else/>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-image>
|
||||||
|
<!-- <img :src="item.yjTp" width="80" height="120" alt="" /> -->
|
||||||
</div>
|
</div>
|
||||||
<div class="warning-info">
|
<div class="warning-info">
|
||||||
<div class="flex just-between align-center">
|
<div class="flex just-between align-center">
|
||||||
|
|||||||
@ -238,8 +238,9 @@ function lineChartFn(xDate, legend, series) {
|
|||||||
const value = seriesData.value[dataIndex];
|
const value = seriesData.value[dataIndex];
|
||||||
const color = seriesData.color ? seriesData.color[0] : '#00d4ff';
|
const color = seriesData.color ? seriesData.color[0] : '#00d4ff';
|
||||||
result += `<div style="margin: 4px 0; display: flex; align-items: center;">
|
result += `<div style="margin: 4px 0; display: flex; align-items: center;">
|
||||||
<span style="display: inline-block; width: 12px; height: 12px; background: ${color}; border-radius: 50%; margin-right: 8px; border: 1px solid rgba(255,255,255,0.3);"></span>
|
<span style="display: inline-block; width: 12px; height: 12px; background: ${color};
|
||||||
<span style="color: #fff; margin-right: 8px; min-width: 60px;">${seriesData.name}:</span>
|
border-radius: 50%; margin-right: 8px; border: 1px solid rgba(255,255,255,0.3);"></span>
|
||||||
|
<span style="color: #fff; margin-right: 8px; min-width: 60px;">${categoryName}:</span>
|
||||||
<span style="color: #00d4ff; font-weight: bold; font-size: 14px;">${value}</span>
|
<span style="color: #00d4ff; font-weight: bold; font-size: 14px;">${value}</span>
|
||||||
</div>`;
|
</div>`;
|
||||||
});
|
});
|
||||||
|
|||||||
@ -131,7 +131,7 @@ const router = useRouter();
|
|||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
const btns = reactive({
|
const btns = reactive({
|
||||||
rightBtn: ["四色预警", "重点人群"],
|
rightBtn: ["四色预警", "重点人群"],
|
||||||
leftBtn: ["预警布控",'研判首页'],
|
leftBtn: ["智能布控",'研判首页'],
|
||||||
moreBtn:['退出登录',]
|
moreBtn:['退出登录',]
|
||||||
});
|
});
|
||||||
const btnsActive = ref("");
|
const btnsActive = ref("");
|
||||||
@ -159,8 +159,8 @@ const handleBtns = (val) => {
|
|||||||
btnsActive.value = val;
|
btnsActive.value = val;
|
||||||
|
|
||||||
switch (val) {
|
switch (val) {
|
||||||
case "预警布控":
|
case "智能布控":
|
||||||
router.push("/warningControl");
|
router.push("/DeploymentArea");
|
||||||
break;
|
break;
|
||||||
case "四色预警":
|
case "四色预警":
|
||||||
router.push("/IdentityManage");
|
router.push("/IdentityManage");
|
||||||
@ -172,8 +172,9 @@ const handleBtns = (val) => {
|
|||||||
router.push("/editPassword");
|
router.push("/editPassword");
|
||||||
break;
|
break;
|
||||||
case "重点人群":
|
case "重点人群":
|
||||||
const NPShref = router.resolve({ path: '/KeyPopulations', query: {}});
|
router.push("/mpvPeo");
|
||||||
window.open(NPShref.href, "_blank");
|
// const NPShref = router.resolve({ path: '/KeyPopulations', query: {}});
|
||||||
|
// window.open(NPShref.href, "_blank");
|
||||||
break;
|
break;
|
||||||
case "退出登录":
|
case "退出登录":
|
||||||
window.opener = null;
|
window.opener = null;
|
||||||
|
|||||||
@ -44,6 +44,7 @@ onMounted(()=>{
|
|||||||
})
|
})
|
||||||
onUnmounted(() => {
|
onUnmounted(() => {
|
||||||
if (intervalId.value) clearInterval(intervalId.value)// 清理定时器
|
if (intervalId.value) clearInterval(intervalId.value)// 清理定时器
|
||||||
|
stopAutoScroll()
|
||||||
})
|
})
|
||||||
// 自动滚动
|
// 自动滚动
|
||||||
const autoScroll = () => {
|
const autoScroll = () => {
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import { ref, onMounted } from "vue";
|
import { ref, onMounted } from "vue";
|
||||||
import { useStore } from "vuex";
|
import { useStore } from "vuex";
|
||||||
import { useRouter } from "vue-router";
|
import { useRoute } from "vue-router";
|
||||||
import {
|
import {
|
||||||
setItem
|
setItem
|
||||||
} from "@/utils/storage";
|
} from "@/utils/storage";
|
||||||
@ -11,16 +11,19 @@ const loginDialog = ref(false);
|
|||||||
const deptList = ref([]);
|
const deptList = ref([]);
|
||||||
const store = useStore();
|
const store = useStore();
|
||||||
function redirectAuth() {
|
function redirectAuth() {
|
||||||
let token = location.hash.slice(20) || null;
|
// 从路由参数中获取token
|
||||||
|
const route = useRoute();
|
||||||
|
let token = route.query.token || null;
|
||||||
if (token != null) {
|
if (token != null) {
|
||||||
token = token.replace(/\ +/g, "");
|
token = token.replace(/\ +/g, "");
|
||||||
setItem("SSOTOKEN", token)
|
setItem("SSOTOKEN", token)
|
||||||
handleLogin({ token: token});
|
handleLogin({ token: token});
|
||||||
} else {
|
} else {
|
||||||
window.location.href = `http://155.240.22.102:40992`;
|
window.location.href = `http://155.240.22.188:9020`;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const handleLogin = (e) => {
|
const handleLogin = (e) => {
|
||||||
store.dispatch("user/oatuhLogin", e).then((res) => {
|
store.dispatch("user/oatuhLogin", e).then((res) => {
|
||||||
// 登录后操作
|
// 登录后操作
|
||||||
|
|||||||
69
src/views/login/sso_redirect.vue
Normal file
69
src/views/login/sso_redirect.vue
Normal 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>
|
||||||
83
src/views/login/zeroTrust_login.vue
Normal file
83
src/views/login/zeroTrust_login.vue
Normal 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>
|
||||||
@ -3,8 +3,8 @@ const path = require("path");
|
|||||||
function resolve(dir) {
|
function resolve(dir) {
|
||||||
return path.join(__dirname, dir);
|
return path.join(__dirname, dir);
|
||||||
}
|
}
|
||||||
|
// http://47.108.232.77:9537/mosty-api/mosty-zhgj/docs.html
|
||||||
const serverHost = "http://192.168.1.32:8016"//线上
|
const serverHost = "http://47.108.232.77:9537"//线上
|
||||||
// const serverHost = "http://192.168.0.231:8006"//线上
|
// const serverHost = "http://192.168.0.231:8006"//线上
|
||||||
// const serverHost = "http://192.168.1.117:8006"//周
|
// const serverHost = "http://192.168.1.117:8006"//周
|
||||||
// const serverHost = "http://192.168.1.98:8006"//毛毛
|
// const serverHost = "http://192.168.1.98:8006"//毛毛
|
||||||
|
|||||||
Reference in New Issue
Block a user