Commit be202117 authored by 郭铭瑶's avatar 郭铭瑶 🤘

安全排查撒点&档案增加设施设备和拓展信息

parent 953d7502
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -6,10 +6,10 @@ ...@@ -6,10 +6,10 @@
<link rel="icon" href="./favicon.ico" /> <link rel="icon" href="./favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>静安智慧房管</title> <title>静安智慧房管</title>
<script type="module" crossorigin src="./assets/index.ef0d55ee.js"></script> <script type="module" crossorigin src="./assets/index.d6d19cd8.js"></script>
<link rel="modulepreload" href="./assets/vendor.4690f6ba.js"> <link rel="modulepreload" href="./assets/vendor.d3136cff.js">
<link rel="stylesheet" href="./assets/vendor.db35e2cd.css"> <link rel="stylesheet" href="./assets/vendor.db35e2cd.css">
<link rel="stylesheet" href="./assets/index.64a73471.css"> <link rel="stylesheet" href="./assets/index.beb19b4d.css">
</head> </head>
<body> <body>
......
...@@ -28,7 +28,7 @@ const showLoading = computed(() => store.state.showLoading) ...@@ -28,7 +28,7 @@ const showLoading = computed(() => store.state.showLoading)
const themeOverrides: GlobalThemeOverrides = { const themeOverrides: GlobalThemeOverrides = {
common: { common: {
fontSizeTiny: '.08rem', fontSizeTiny: '.08rem',
fontSizeSmall: '.09rem', fontSizeSmall: '.1rem',
fontSize: '.1rem', fontSize: '.1rem',
primaryColor: '#2F86EE', primaryColor: '#2F86EE',
borderColor: '#2F86EE', borderColor: '#2F86EE',
...@@ -69,7 +69,7 @@ html, body ...@@ -69,7 +69,7 @@ html, body
width 100% width 100%
height 100% height 100%
user-select none user-select none
font-size 16vh font-size 15vh
line-height 1.5 line-height 1.5
p p
margin 0 margin 0
......
...@@ -20,4 +20,7 @@ export default { ...@@ -20,4 +20,7 @@ export default {
CHECK_ORDERS: '/service-documents-ddd/public/checkOrder/pages', // 检查单列表 CHECK_ORDERS: '/service-documents-ddd/public/checkOrder/pages', // 检查单列表
BX: '/service-documents-ddd/public/reportBX', // 物业报修 BX: '/service-documents-ddd/public/reportBX', // 物业报修
TS: '/service-documents-ddd/public/reportTS', // 物业投诉 TS: '/service-documents-ddd/public/reportTS', // 物业投诉
EQUIPMENT: '/service-basicdatasync-ddd/public/community/facEqus', // 设施设备
EXPAND_INFO:
'/service-basicdatasync-ddd/public/tbl_community/entity/{id}/ext', // 小区拓展信息
} }
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
v-if="addition.value || addition.value === 0" v-if="addition.value || addition.value === 0"
class="count orange-count" class="count orange-count"
:value="addition.value" :value="addition.value"
:decimal="addition.decimal || 0"
/> />
<span v-if="addition.unit">{{ addition.unit }}</span> <span v-if="addition.unit">{{ addition.unit }}</span>
<!-- <img src="@/assets/images/title-dec.png" /> --> <!-- <img src="@/assets/images/title-dec.png" /> -->
...@@ -52,6 +53,7 @@ export interface AdditionProp { ...@@ -52,6 +53,7 @@ export interface AdditionProp {
name?: string name?: string
value?: number value?: number
unit?: string unit?: string
decimal?: number
} }
export default defineComponent({ export default defineComponent({
name: 'MySub', name: 'MySub',
......
...@@ -7,8 +7,8 @@ export function toPoints(options: LayerOption) { ...@@ -7,8 +7,8 @@ export function toPoints(options: LayerOption) {
const iconSize = Array.isArray(size) const iconSize = Array.isArray(size)
? new SMap.Size(...size) ? new SMap.Size(...size)
: new SMap.Size(size, size) : new SMap.Size(size, size)
const x = item.minx || item.maxx || item.X || item.x || item.gpsx const x = item.minx || item.x || item.maxx || item.X || item.gpsx
const y = item.miny || item.maxy || item.Y || item.y || item.gpsy const y = item.miny || item.y || item.maxy || item.Y || item.gpsy
if ((x !== 0 && !x) || (y !== 0 && !y)) { if ((x !== 0 && !x) || (y !== 0 && !y)) {
console.error(`add point: 非法的坐标[${x}, ${y}] 存在于数据: `, item) console.error(`add point: 非法的坐标[${x}, ${y}] 存在于数据: `, item)
} }
......
This diff is collapsed.
...@@ -63,6 +63,61 @@ ...@@ -63,6 +63,61 @@
]" ]"
:data="info" :data="info"
/> />
<m-sub>设施设备信息</m-sub>
<n-tabs
v-model:value="curEquipment"
type="line"
size="small"
@update:value="fetchEquipment"
>
<n-tab-pane name="大门" tab="大门信息">
<n-data-table
size="small"
:columns="equipmentColumns[0]"
:data="equipmentList"
:pagination="pagination"
/>
</n-tab-pane>
<n-tab-pane name="防盗门" tab="防盗门信息">
<n-data-table
size="small"
:columns="equipmentColumns[1]"
:data="equipmentList"
:pagination="pagination"
/>
</n-tab-pane>
<n-tab-pane name="电梯" tab="电梯信息">
<n-data-table
size="small"
:columns="equipmentColumns[2]"
:data="equipmentList"
:pagination="pagination"
/>
</n-tab-pane>
<n-tab-pane name="监控设备" tab="监控设备信息">
<n-data-table
size="small"
:columns="equipmentColumns[3]"
:data="equipmentList"
:pagination="pagination"
/>
</n-tab-pane>
<n-tab-pane name="消防泵、生活泵" tab="消防泵、生活泵信息">
<n-data-table
size="small"
:columns="equipmentColumns[4]"
:data="equipmentList"
:pagination="pagination"
/>
</n-tab-pane>
</n-tabs>
<m-sub>小区拓展信息</m-sub>
<m-form
v-if="expandColumn?.length > 0"
:template="expandColumn"
:data="expandData"
/>
<m-empty v-else />
</template> </template>
<template v-else-if="curMenu === 2"> <template v-else-if="curMenu === 2">
<template v-if="showBuildingInfo"> <template v-if="showBuildingInfo">
...@@ -152,7 +207,16 @@ ...@@ -152,7 +207,16 @@
</template> </template>
</template> </template>
<template v-else-if="curMenu === 3"> <template v-else-if="curMenu === 3">
<n-tabs type="line" size="small" @update:value="showOrderInfo = false"> <n-tabs
type="line"
size="small"
@update:value="
() => {
showOrderInfo = false
pagination.page = 1
}
"
>
<n-tab-pane name="1" tab="房办月查"> <n-tab-pane name="1" tab="房办月查">
<template v-if="showOrderInfo"> <template v-if="showOrderInfo">
<n-space justify="end"> <n-space justify="end">
...@@ -279,7 +343,16 @@ ...@@ -279,7 +343,16 @@
</n-tabs> </n-tabs>
</template> </template>
<template v-else-if="curMenu === 4"> <template v-else-if="curMenu === 4">
<n-tabs type="line" size="small" @update:value="showBxInfo = false"> <n-tabs
type="line"
size="small"
@update:value="
() => {
showBxInfo = false
pagination.page = 1
}
"
>
<n-tab-pane name="1" tab="物业报修"> <n-tab-pane name="1" tab="物业报修">
<template v-if="showBxInfo"> <template v-if="showBxInfo">
<n-space justify="end"> <n-space justify="end">
...@@ -363,6 +436,161 @@ const menus = [ ...@@ -363,6 +436,161 @@ const menus = [
{ label: '维修资金', key: 5, disabled: true }, { label: '维修资金', key: 5, disabled: true },
] ]
const searchKey = ref<undefined | string>() const searchKey = ref<undefined | string>()
const curEquipment = ref('大门')
const equipmentColumns = [
[
{
title: '设备名称',
key: 'ieName',
},
{
title: '安装位置',
key: 'ieAddr',
},
{
title: '设备类型',
key: 'ieType',
},
{
title: '维保单位',
key: 'ieUnit',
},
{
title: '是否是主出入口',
key: 'isMainGate',
},
{
title: '是否有门卫室',
key: 'ffCode',
},
],
[
{
title: '设备名称',
key: 'ieName',
},
{
title: '安装位置',
key: 'ieAddr',
},
{
title: '设备类型',
key: 'ieType',
},
{
title: '维保单位',
key: 'ieUnit',
},
{
title: '启用日期',
key: 'ieDate',
},
],
[
{
title: '设备名称',
key: 'ieName',
},
{
title: '安装位置',
key: 'ieAddr',
},
{
title: '设备类型',
key: 'ieType',
},
{
title: '维保单位',
key: 'ieUnit',
},
{
title: '启用日期',
key: 'ieDate',
},
{
title: '型号',
key: 'ieModel',
},
{
title: '品牌',
key: 'ieBrand',
},
{
title: '特种设备代码',
key: 'specialEquipCode',
},
{
title: '检验单位',
key: 'inspectionUnit',
},
{
title: '救援电话',
key: 'rescuePhone',
},
],
[
{
title: '设备名称',
key: 'ieName',
},
{
title: '安装位置',
key: 'ieAddr',
},
{
title: '设备类型',
key: 'ieType',
},
{
title: '维保单位',
key: 'ieUnit',
},
],
[
{
title: '设备名称',
key: 'ieName',
},
{
title: '安装位置',
key: 'ieAddr',
},
{
title: '设备类型',
key: 'ieType',
},
{
title: '维保单位',
key: 'ieUnit',
},
{
title: '生产厂家',
key: 'ieFactory',
},
{
title: '供水门牌号',
key: 'ieWaterDoorplate',
},
],
]
const equipmentList = ref<any[]>([])
async function fetchEquipment(val: string) {
pagination.page = 1
curEquipment.value = val
equipmentList.value =
(
await ajax.get({
url: api.EQUIPMENT,
params: {
sectId: props.info?.sectId,
type: '1',
ieClassify: val,
pageSize: 9000,
},
})
)?.data?.content || []
}
const showBuildingInfo = ref(false) const showBuildingInfo = ref(false)
const buildingInfo = ref<{ [key: string]: unknown }>({}) const buildingInfo = ref<{ [key: string]: unknown }>({})
const buildingsColumn = [ const buildingsColumn = [
...@@ -833,11 +1061,44 @@ const tsColumn = [ ...@@ -833,11 +1061,44 @@ const tsColumn = [
] ]
const tsData = ref<any[]>([]) const tsData = ref<any[]>([])
const expandData = ref<{ [key: string]: unknown }>({})
const expandColumn = ref<{ title: string; key: string }[]>([])
watch( watch(
() => curMenu.value, () => curMenu.value,
async (menu) => { async (menu) => {
pagination.page = 1 pagination.page = 1
switch (menu) { switch (menu) {
case 1:
fetchEquipment('大门')
const data =
(
await ajax.get({
url: api.EXPAND_INFO.replace(
'{id}',
props.info?.sectId as string,
),
})
)?.data?.content || []
const result: any = {}
const columns = data.map((item) => {
result[item.id] = item.keyVal
return {
title: item.keyName,
key: item.id,
}
})
const templates: any[] = []
for (let i = 0; i < columns.length; i += 3) {
const arr = (columns.slice(i, i + 3) || [])?.map(
(item) => `${item.key}:${item.title}`,
)
while (arr.length < 3) {
arr.push('')
}
templates.push(arr)
}
expandColumn.value = templates.map((item) => item.join('|'))
expandData.value = result
case 2: case 2:
showRiskBuilding.value = false showRiskBuilding.value = false
showBuildingInfo.value = false showBuildingInfo.value = false
...@@ -922,6 +1183,7 @@ watch( ...@@ -922,6 +1183,7 @@ watch(
break break
} }
}, },
{ immediate: true },
) )
</script> </script>
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
v-show="!btn.hidden" v-show="!btn.hidden"
:key="btn.key" :key="btn.key"
:src="btn.icon" :src="btn.icon"
:title="btn?.tip"
@click="onClick(btn.key)" @click="onClick(btn.key)"
/> />
</div> </div>
...@@ -18,6 +19,7 @@ import btn4 from '@/assets/images/btn4.png' ...@@ -18,6 +19,7 @@ import btn4 from '@/assets/images/btn4.png'
import btn5 from '@/assets/images/btn5.png' import btn5 from '@/assets/images/btn5.png'
import btn6 from '@/assets/images/btn6.png' import btn6 from '@/assets/images/btn6.png'
import btn7 from '@/assets/images/btn7.png' import btn7 from '@/assets/images/btn7.png'
import btn8 from '@/assets/images/btn8.png'
import { computed, PropType } from 'vue' import { computed, PropType } from 'vue'
const props = defineProps({ const props = defineProps({
...@@ -41,17 +43,20 @@ const btns = computed(() => [ ...@@ -41,17 +43,20 @@ const btns = computed(() => [
key: 'home', key: 'home',
icon: btn7, icon: btn7,
hidden: props.isDefaultScreen || props.onlyOneView, hidden: props.isDefaultScreen || props.onlyOneView,
tip: '回到首屏',
}, },
{ key: 'search', icon: btn1 }, { key: 'search', icon: btn1, tip: '搜索小区' },
{ key: 'full', icon: btn2 }, { key: 'full', icon: btn2, tip: '切换全屏幕' },
{ key: 'in', icon: btn3 }, { key: 'in', icon: btn3, tip: '放大' },
{ key: 'out', icon: btn4 }, { key: 'out', icon: btn4, tip: '缩小' },
{ {
key: 'list', key: 'list',
icon: btn5, icon: btn5,
hidden: props.onlyOneView, hidden: props.onlyOneView,
tip: '屏幕列表',
}, },
{ key: 'btn6', icon: btn6 }, { key: 'btn6', icon: btn6 },
{ key: 'reset', icon: btn8, tip: '重置' },
]) ])
const onClick = (key: string) => { const onClick = (key: string) => {
emit('touch', key) emit('touch', key)
......
...@@ -11,7 +11,15 @@ import jinganPath from '@/utils/jingan-path.js' ...@@ -11,7 +11,15 @@ import jinganPath from '@/utils/jingan-path.js'
let map: MyMap let map: MyMap
let polygonLayer: any let polygonLayer: any
defineExpose({ zoomIn, zoomOut, zoomTo, focus, addPoints, remove, setCommunityPoints }) defineExpose({
zoomIn,
zoomOut,
zoomTo,
focus,
addPoints,
remove,
setCommunityPoints,
})
const emit = defineEmits(['event', 'complete']) const emit = defineEmits(['event', 'complete'])
onMounted(async () => { onMounted(async () => {
...@@ -51,7 +59,7 @@ function onComplete() { ...@@ -51,7 +59,7 @@ function onComplete() {
emit('complete') emit('complete')
} }
function setCommunityPoints(query = "HPB_NAME = '静安区'") { function setCommunityPoints(query = 'HPB_NAME = \'静安区\'') {
map.instance.getLayer('wg_gis_xq_point').visible = false map.instance.getLayer('wg_gis_xq_point').visible = false
map.instance.setFilter('wg_gis_mpz', query) map.instance.setFilter('wg_gis_mpz', query)
map.instance.setFilter('wg_gis_xq_poly', query) map.instance.setFilter('wg_gis_xq_poly', query)
......
...@@ -170,6 +170,10 @@ function handleMapBtnsEvents(key: string) { ...@@ -170,6 +170,10 @@ function handleMapBtnsEvents(key: string) {
case 'search': case 'search':
showSearchModal.value = true showSearchModal.value = true
break break
case 'reset':
onMapComplete()
mapRef.value?.setCommunityPoints()
break
default: default:
break break
} }
...@@ -183,7 +187,7 @@ bus.on('communityList', (data) => { ...@@ -183,7 +187,7 @@ bus.on('communityList', (data) => {
store.commit('SET_COMMUNITY_LIST', data) store.commit('SET_COMMUNITY_LIST', data)
}) })
function onMapComplete() { function onMapComplete() {
addPoints({ data: store.state.communityList, icon: CommunityIcon, size: 6 }) addPoints({ data: store.state.communityList, icon: CommunityIcon, size: 8 })
} }
function addPoints(data) { function addPoints(data) {
...@@ -199,10 +203,32 @@ const elevatorDetail = ref<{ [key: string]: any }>({}) ...@@ -199,10 +203,32 @@ const elevatorDetail = ref<{ [key: string]: any }>({})
const showSafetyDrawer = ref(false) const showSafetyDrawer = ref(false)
const safetyDetail = ref<{ [key: string]: any }>({}) const safetyDetail = ref<{ [key: string]: any }>({})
const onMapClick = (data) => { const onMapClick = async (e) => {
if (!data.id) return if (e?.unitId) {
communityDetail.value = data safetyDetail.value =
showCommunityDrawer.value = true (
await ajax.get({
url: api.RISK_BUILDINGS,
params: {
unitId_in: e.unitId,
},
})
)?.data?.content?.[0] || {}
showSafetyDrawer.value = true
} else if (e?.sectId) {
const data =
(
await ajax.get({
url: api.GET_COMMUNITY.replace('{id}', e.sectId),
})
)?.data?.content || {}
communityDetail.value = {
...(data?.cmInfo || {}),
...(data?.caoInfo || {}),
...data,
}
showCommunityDrawer.value = true
}
} }
const onSelectCommunity = async (data: any) => { const onSelectCommunity = async (data: any) => {
const { stKind } = data const { stKind } = data
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment