Compare commits

...

2 Commits

Author SHA1 Message Date
TimSpan 4805c5157d Merge branch 'main' of http://175.6.124.250:3100/Libt/multiple-police-situations 2024-08-06 18:06:52 +08:00
TimSpan 1df26a3362 。。。
。。。
2024-08-06 18:05:24 +08:00
3 changed files with 299 additions and 334 deletions

5
components.d.ts vendored
View File

@ -12,15 +12,20 @@ declare module 'vue' {
AButton: typeof import('ant-design-vue/es')['Button'] AButton: typeof import('ant-design-vue/es')['Button']
ACascader: typeof import('ant-design-vue/es')['Cascader'] ACascader: typeof import('ant-design-vue/es')['Cascader']
AConfigProvider: typeof import('ant-design-vue/es')['ConfigProvider'] AConfigProvider: typeof import('ant-design-vue/es')['ConfigProvider']
ADivider: typeof import('ant-design-vue/es')['Divider']
ADropdown: typeof import('ant-design-vue/es')['Dropdown'] ADropdown: typeof import('ant-design-vue/es')['Dropdown']
AForm: typeof import('ant-design-vue/es')['Form'] AForm: typeof import('ant-design-vue/es')['Form']
AFormItem: typeof import('ant-design-vue/es')['FormItem'] AFormItem: typeof import('ant-design-vue/es')['FormItem']
AImage: typeof import('ant-design-vue/es')['Image'] AImage: typeof import('ant-design-vue/es')['Image']
AInput: typeof import('ant-design-vue/es')['Input'] AInput: typeof import('ant-design-vue/es')['Input']
AInputPassword: typeof import('ant-design-vue/es')['InputPassword'] AInputPassword: typeof import('ant-design-vue/es')['InputPassword']
ALayout: typeof import('ant-design-vue/es')['Layout']
ALayoutContent: typeof import('ant-design-vue/es')['LayoutContent']
ALayoutSider: typeof import('ant-design-vue/es')['LayoutSider']
AMenu: typeof import('ant-design-vue/es')['Menu'] AMenu: typeof import('ant-design-vue/es')['Menu']
AMenuItem: typeof import('ant-design-vue/es')['MenuItem'] AMenuItem: typeof import('ant-design-vue/es')['MenuItem']
ASegmented: typeof import('ant-design-vue/es')['Segmented'] ASegmented: typeof import('ant-design-vue/es')['Segmented']
ASpace: typeof import('ant-design-vue/es')['Space']
ASpin: typeof import('ant-design-vue/es')['Spin'] ASpin: typeof import('ant-design-vue/es')['Spin']
AStatistic: typeof import('ant-design-vue/es')['Statistic'] AStatistic: typeof import('ant-design-vue/es')['Statistic']
ATimeline: typeof import('ant-design-vue/es')['Timeline'] ATimeline: typeof import('ant-design-vue/es')['Timeline']

View File

@ -7,27 +7,19 @@
<ul style="display: flex; margin-top: 14px"> <ul style="display: flex; margin-top: 14px">
<li> <li>
<img style="vertical-align: middle" src="@/views/page/indeximag/ddh.png" alt="" /> <img style="vertical-align: middle" src="@/views/page/indeximag/ddh.png" alt="" />
<router-link active-class="ist2" <router-link active-class="ist2" style="color: #b2b6c3; padding: 10px 18px; vertical-align: middle; font-weight: bold" to="/index/indexmin">服务总览</router-link>
style="color: #b2b6c3; padding: 10px 18px; vertical-align: middle; font-weight: bold"
to="/index/indexmin">服务总览</router-link>
</li> </li>
<li> <li>
<img style="vertical-align: middle" src="@/views/page/indeximag/ddh.png" alt="" /> <img style="vertical-align: middle" src="@/views/page/indeximag/ddh.png" alt="" />
<router-link active-class="ist" <router-link active-class="ist" style="color: #b2b6c3; padding: 10px 18px; margin-left: 10px; vertical-align: middle; font-weight: bold" to="/index/index">安保力量</router-link>
style="color: #b2b6c3; padding: 10px 18px; margin-left: 10px; vertical-align: middle; font-weight: bold"
to="/index/index">安保力量</router-link>
</li> </li>
<li> <li>
<img style="vertical-align: middle" src="@/views/page/indeximag/ddh.png" alt="" /> <img style="vertical-align: middle" src="@/views/page/indeximag/ddh.png" alt="" />
<router-link active-class="ist" <router-link active-class="ist" style="color: #b2b6c3; padding: 10px 18px; margin-left: 10px; vertical-align: middle; font-weight: bold" to="/index/command">警情推送</router-link>
style="color: #b2b6c3; padding: 10px 18px; margin-left: 10px; vertical-align: middle; font-weight: bold"
to="/index/command">警情推送</router-link>
</li> </li>
<li> <li>
<img style="vertical-align: middle" src="@/views/page/indeximag/ddh.png" alt="" /> <img style="vertical-align: middle" src="@/views/page/indeximag/ddh.png" alt="" />
<router-link active-class="ist" <router-link active-class="ist" style="color: #b2b6c3; padding: 10px 18px; margin-left: 10px; vertical-align: middle; font-weight: bold" to="/index/system">智能布控</router-link>
style="color: #b2b6c3; padding: 10px 18px; margin-left: 10px; vertical-align: middle; font-weight: bold"
to="/index/system">智能布控</router-link>
</li> </li>
</ul> </ul>
</div> </div>
@ -35,29 +27,22 @@
<ul style="display: flex; margin-top: 14px"> <ul style="display: flex; margin-top: 14px">
<li> <li>
<img style="vertical-align: middle" src="@/views/page/indeximag/ddh.png" alt="" /> <img style="vertical-align: middle" src="@/views/page/indeximag/ddh.png" alt="" />
<router-link active-class="ist3" <router-link active-class="ist3" style="color: #b2b6c3; padding: 10px 18px; vertical-align: middle; font-weight: bold" to="/index/histordata">AI预警</router-link>
style="color: #b2b6c3; padding: 10px 18px; vertical-align: middle; font-weight: bold"
to="/index/histordata">AI预警</router-link>
</li> </li>
<li> <li>
<img style="vertical-align: middle" src="@/views/page/indeximag/ddh.png" alt="" /> <img style="vertical-align: middle" src="@/views/page/indeximag/ddh.png" alt="" />
<router-link active-class="ist" <router-link active-class="ist" style="color: #b2b6c3; padding: 10px 18px; vertical-align: middle; font-weight: bold" to="/index/analysis">统计分析</router-link>
style="color: #b2b6c3; padding: 10px 18px; vertical-align: middle; font-weight: bold"
to="/index/analysis">统计分析</router-link>
</li> </li>
<li> <li>
<img style="vertical-align: middle" src="@/views/page/indeximag/ddh.png" alt="" /> <img style="vertical-align: middle" src="@/views/page/indeximag/ddh.png" alt="" />
<router-link active-class="ist" <router-link active-class="ist" style="color: #b2b6c3; padding: 10px 18px; vertical-align: middle; font-weight: bold" to="/index/information">资源管理</router-link>
style="color: #b2b6c3; padding: 10px 18px; vertical-align: middle; font-weight: bold"
to="/index/information">资源管理</router-link>
</li> </li>
</ul> </ul>
<el-popconfirm title="确定退出吗?" @confirm="confirmEvent"> <el-popconfirm title="确定退出吗?" @confirm="confirmEvent">
<template #reference> <template #reference>
<el-icon :size="20" <el-icon :size="20" style="display: inline-block; position: absolute; top: 31px; right: 32px; margin-left: 10px; vertical-align: middle; color: #9a4b48; font-weight: bold">
style="display: inline-block; position: absolute; top: 31px; right: 32px; margin-left: 10px; vertical-align: middle; color: #9a4b48; font-weight: bold">
<switch-button /> <switch-button />
<span style="color:#fff;position: absolute;right: 29px;font-weight: 100;font-size: 16px;">{{loginname}}</span> <span style="color: #fff; position: absolute; right: 29px; font-weight: 100; font-size: 16px">{{ loginname }}</span>
</el-icon> </el-icon>
</template> </template>
</el-popconfirm> </el-popconfirm>
@ -244,16 +229,13 @@
// background: #142738; // background: #142738;
background: #fff; background: #fff;
color: #fff; color: #fff;
position: relative;
// background-image: url(@/assets/images/community_container.jpg); // background-image: url(@/assets/images/community_container.jpg);
// background-size: 100% 100%; // background-size: 100% 100%;
// background-repeat: no-repeat; // background-repeat: no-repeat;
.community_top { .community_top {
width: 100%; width: 100%;
height: 60px; height: 77px;
// position: absolute;
// top: 0;
// background:#4880FF; // background:#4880FF;
background: #07315e; background: #07315e;
// background-image: url(@/views/page/imag/titleBg1.png); // background-image: url(@/views/page/imag/titleBg1.png);

View File

@ -20,15 +20,6 @@
<div @click="qhzty('3')" :class="{ active: isActive == '3' }">医疗单位</div> <div @click="qhzty('3')" :class="{ active: isActive == '3' }">医疗单位</div>
<div @click="qhzty('5')" :class="{ active: isActive == '5' }">其他</div> <div @click="qhzty('5')" :class="{ active: isActive == '5' }">其他</div>
</div> </div>
<!-- <div class="searchBox" v-show="show3">
<el-form-item label="">
<el-input v-model="searchValue" placeholder="请输入搜索关键词">
<template #append>
<el-button @click="onSearch" :icon="Search" />
</template>
</el-input>
</el-form-item>
</div> -->
<div class="searchBox"> <div class="searchBox">
<a-cascader <a-cascader
@ -43,11 +34,7 @@
/> />
</div> </div>
<!-- <button @click="refreshTreeData">刷新</button> --> <div ref="scrollContainer" v-loading="loading" class="scrollContainer">
<!-- height: 75%; -->
<div ref="scrollContainer" v-loading="loading" style="margin: 10px 20px; height: 70%; overflow: auto">
<!-- 重要的事情说三遍 key 值必须唯一 -->
<!-- 重要的事情说三遍 key 值必须唯一 -->
<!-- 重要的事情说三遍 key 值必须唯一 --> <!-- 重要的事情说三遍 key 值必须唯一 -->
<a-tree <a-tree
:fieldNames="{ key: 'code', title: 'title', children: 'children' }" :fieldNames="{ key: 'code', title: 'title', children: 'children' }"
@ -211,21 +198,21 @@
<p style="color: rgb(179, 194, 208)">视频点位:</p> <p style="color: rgb(179, 194, 208)">视频点位:</p>
<ul v-if="ingrssddata"> <ul v-if="ingrssddata">
<li style="text-align: center; color: #fff" v-if="ingrssddata.ipcList.length < 1">暂无数据</li> <li style="text-align: center; color: #fff" v-if="ingrssddata.ipcList.length < 1">暂无数据</li>
<li v-else style="margin-left: 20px; margin-top: 10px; color: rgb(1, 216, 226)" v-for="(item, index) in ingrssddata.ipcList">{{ item.title }}</li> <li v-else style="margin-left: 20px; margin-top: 10px; color: rgb(1, 216, 226)" v-for="(item, index) in ingrssddata.ipcList" :key="index">{{ item.title }}</li>
</ul> </ul>
</div> </div>
<div style="margin-top: 10px"> <div style="margin-top: 10px">
<p style="color: rgb(179, 194, 208)">安保点位:</p> <p style="color: rgb(179, 194, 208)">安保点位:</p>
<ul v-if="ingrssddata"> <ul v-if="ingrssddata">
<li style="text-align: center; color: #fff" v-if="ingrssddata.mobileList.length < 1">暂无数据</li> <li style="text-align: center; color: #fff" v-if="ingrssddata.mobileList.length < 1">暂无数据</li>
<li style="margin-left: 20px; margin-top: 10px; color: rgb(1, 216, 226)" v-for="(item, index) in ingrssddata.mobileList">{{ item.title }}</li> <li style="margin-left: 20px; margin-top: 10px; color: rgb(1, 216, 226)" v-for="(item, index) in ingrssddata.mobileList" :key="index">{{ item.title }}</li>
</ul> </ul>
</div> </div>
<div style="margin-top: 10px"> <div style="margin-top: 10px">
<p style="color: rgb(179, 194, 208)">文件列表:</p> <p style="color: rgb(179, 194, 208)">文件列表:</p>
<ul v-if="ingrssddata"> <ul v-if="ingrssddata">
<li style="text-align: center; color: #fff" v-if="ingrssddata.fileList.length < 1">暂无数据</li> <li style="text-align: center; color: #fff" v-if="ingrssddata.fileList.length < 1">暂无数据</li>
<li style="display: inline-block; margin-right: 5px" v-for="(item, index) in ingrssddata.fileList"> <li style="display: inline-block; margin-right: 5px" v-for="(item, index) in ingrssddata.fileList" :key="index">
<el-image <el-image
style="width: 150px; height: 150px" style="width: 150px; height: 150px"
v-if="item.type == 'image'" v-if="item.type == 'image'"
@ -404,20 +391,15 @@ import closeimag from './imag/infoClose.png'
import { Ref, ref, watch, onMounted, onBeforeMount, reactive, getCurrentInstance, nextTick } from 'vue' import { Ref, ref, watch, onMounted, onBeforeMount, reactive, getCurrentInstance, nextTick } from 'vue'
import type { CascaderProps } from 'ant-design-vue' import type { CascaderProps } from 'ant-design-vue'
import type { ShowSearchType } from 'ant-design-vue/es/cascader' import type { ShowSearchType } from 'ant-design-vue/es/cascader'
// import AMapLoader from "@amap/amap-jsapi-loader";
const value = ref<string[]>([]) const value = ref<string[]>([])
const options = ref<any[]>([]) const options = ref<any[]>([])
const filter: ShowSearchType['filter'] = (inputValue, path) => { const filter: ShowSearchType['filter'] = (inputValue, path) => {
// console.log(inputValue, path)
return path.some((option) => option.title.toLowerCase().indexOf(inputValue.toLowerCase()) > -1) return path.some((option) => option.title.toLowerCase().indexOf(inputValue.toLowerCase()) > -1)
} }
const cascaderChange = (value: any, selectedOptions: any): void => { const cascaderChange = (value: any, selectedOptions: any): void => {
// console.log('cascaderChange', value, selectedOptions)
// selectedKeys.value.push(value.slice(-1)[0])
let title = selectedOptions.slice(-1)[0]?.title let title = selectedOptions.slice(-1)[0]?.title
expandedKeys.value = value expandedKeys.value = value
scrollToMatchedNode(title) //bug // scrollToMatchedNode(title) //bug
} }
const showIframe = ref(false) const showIframe = ref(false)
@ -456,7 +438,6 @@ const qhzty2 = (data: any) => {
isActive1.value = data isActive1.value = data
} }
//
watch( watch(
() => useUserStore().getsoketData, () => useUserStore().getsoketData,
(newValue: any) => { (newValue: any) => {
@ -583,8 +564,6 @@ const qhzty = (data: any) => {
} }
} }
const fieldNames: TreeProps['fieldNames'] = { const fieldNames: TreeProps['fieldNames'] = {
// children: 'children',
// title: 'title',
key: 'code', key: 'code',
} }
const loading = ref(false) const loading = ref(false)
@ -628,10 +607,6 @@ const checkKeyExists = (nodes: any, key: string): boolean => {
// //
const scrollToKey = (key: string) => { const scrollToKey = (key: string) => {
console.log('scrollToKey', key) console.log('scrollToKey', key)
// console.log('treeRef________', treeRef.value.scrollTo)
// key
// const exists = treedataall.value.some((node) => node.key === key || node.children?.some((child: any) => child.key === key))
const exists = checkKeyExists(treedataall.value, key) const exists = checkKeyExists(treedataall.value, key)
if (!exists) { if (!exists) {
console.error(`Key ${key} not found in the tree.`) console.error(`Key ${key} not found in the tree.`)
@ -1462,7 +1437,7 @@ var state = {
const initMap = () => { const initMap = () => {
let latitude = JSON.parse(localStorage.getItem('user-stores'))['userInfo']['latitude'] let latitude = JSON.parse(localStorage.getItem('user-stores'))['userInfo']['latitude']
let longitude = JSON.parse(localStorage.getItem('user-stores'))['userInfo']['longitude'] let longitude = JSON.parse(localStorage.getItem('user-stores'))['userInfo']['longitude']
// var cluster;
state.map = new AMap.Map(state.id, { state.map = new AMap.Map(state.id, {
// center: [113.015117, 28.209425], // center: [113.015117, 28.209425],
center: [longitude, latitude], center: [longitude, latitude],
@ -1475,9 +1450,12 @@ const initMap = () => {
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
// .input-with-select .el-input-group__prepend { .scrollContainer {
// background-color: var(--el-fill-color-blank); margin: 10px 20px;
// } height: 70%;
overflow: auto;
position: absolute;
}
.slide-fade-enter-active { .slide-fade-enter-active {
transition: all 0.3s linear; transition: all 0.3s linear;
} }
@ -1757,7 +1735,7 @@ const initMap = () => {
width: 100%; width: 100%;
height: 100%; height: 100%;
overflow: hidden; overflow: hidden;
// position: absolute; // position: absolute !important;
.left-cont { .left-cont {
box-sizing: border-box; box-sizing: border-box;