Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
S
SatelliteDigital
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
nijiawen
SatelliteDigital
Commits
e79e30ac
提交
e79e30ac
authored
8月 22, 2025
作者:
刘佳星-公司
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
路由设置和文件对应方便后期修改
上级
92be75d4
全部展开
显示空白字符变更
内嵌
并排
正在显示
8 个修改的文件
包含
214 行增加
和
179 行删除
+214
-179
index.vue
src/layout/index.vue
+0
-0
index.js
src/router/index.js
+14
-14
showdetaildate.vue
src/views/areabuildmanage/components/showdetaildate.vue
+42
-39
index.vue
src/views/areabuildmanage/index.vue
+33
-27
index.vue
src/views/areabuildmanage/onefloor/index.vue
+3
-2
index.vue
src/views/areafiremanage/historyfire/index.vue
+52
-29
index.vue
src/views/dashboard/workbench/index.vue
+58
-33
index.vue
src/views/login/index.vue
+12
-35
没有找到文件。
src/layout/index.vue
浏览文件 @
e79e30ac
差异被折叠。
点击展开。
src/router/index.js
浏览文件 @
e79e30ac
...
@@ -103,19 +103,19 @@ export const constantRoutes = [
...
@@ -103,19 +103,19 @@ export const constantRoutes = [
meta
:
{
title
:
'人员管理'
,
icon
:
'dashboard'
,
affix
:
true
}
meta
:
{
title
:
'人员管理'
,
icon
:
'dashboard'
,
affix
:
true
}
},
},
{
{
path
:
'/
analysisPage
'
,
path
:
'/
dashboard/analysis
'
,
component
:
()
=>
import
(
'../views/dashboard/analysis/index.vue'
),
component
:
()
=>
import
(
'../views/dashboard/analysis/index.vue'
),
name
:
'analySisPage'
,
name
:
'analySisPage'
,
meta
:
{
title
:
'分析页面'
,
icon
:
'dashboard'
,
affix
:
true
}
meta
:
{
title
:
'分析页面'
,
icon
:
'dashboard'
,
affix
:
true
}
},
},
{
{
path
:
'/
workBenchPage
'
,
path
:
'/
dashboard/workbench
'
,
component
:
()
=>
import
(
'../views/dashboard/workbench/index.vue'
),
component
:
()
=>
import
(
'../views/dashboard/workbench/index.vue'
),
name
:
'WorkbenchPage'
,
name
:
'WorkbenchPage'
,
meta
:
{
title
:
'工作台'
,
icon
:
'dashboard'
,
affix
:
true
}
meta
:
{
title
:
'工作台'
,
icon
:
'dashboard'
,
affix
:
true
}
},
},
{
{
path
:
'/
userm
anage'
,
path
:
'/
systemmanage/staffM
anage'
,
component
:
()
=>
import
(
'../views/systemmanage/staffManage/index.vue'
),
component
:
()
=>
import
(
'../views/systemmanage/staffManage/index.vue'
),
name
:
'systemManage'
,
name
:
'systemManage'
,
meta
:
{
title
:
'人员管理'
,
icon
:
'dashboard'
,
affix
:
true
}
meta
:
{
title
:
'人员管理'
,
icon
:
'dashboard'
,
affix
:
true
}
...
@@ -127,51 +127,51 @@ export const constantRoutes = [
...
@@ -127,51 +127,51 @@ export const constantRoutes = [
meta
:
{
title
:
'建筑管理'
,
icon
:
'dashboard'
,
affix
:
true
}
meta
:
{
title
:
'建筑管理'
,
icon
:
'dashboard'
,
affix
:
true
}
},
},
{
{
path
:
'/uav
dispatch
'
,
path
:
'/uav
showdate
'
,
component
:
()
=>
import
(
'../views/uavshowdate/index.vue'
),
component
:
()
=>
import
(
'../views/uavshowdate/index.vue'
),
name
:
'uav
Dispatch
'
,
name
:
'uav
Showdate
'
,
meta
:
{
title
:
'无人机调度'
,
icon
:
'dashboard'
,
affix
:
true
}
meta
:
{
title
:
'无人机调度'
,
icon
:
'dashboard'
,
affix
:
true
}
},
},
{
{
path
:
'/firesurveillance'
,
path
:
'/
areafiremanage/
firesurveillance'
,
component
:
()
=>
import
(
'../views/areafiremanage/firesurveillance/index.vue'
),
component
:
()
=>
import
(
'../views/areafiremanage/firesurveillance/index.vue'
),
name
:
'fireSurveillance'
,
name
:
'fireSurveillance'
,
meta
:
{
title
:
'历史火情'
,
icon
:
'dashboard'
,
affix
:
true
}
meta
:
{
title
:
'历史火情'
,
icon
:
'dashboard'
,
affix
:
true
}
},
},
{
{
path
:
'/historyfire'
,
path
:
'/
areafiremanage/
historyfire'
,
component
:
()
=>
import
(
'../views/areafiremanage/historyfire/index.vue'
),
component
:
()
=>
import
(
'../views/areafiremanage/historyfire/index.vue'
),
name
:
'historyFire'
,
name
:
'historyFire'
,
meta
:
{
title
:
'当前火情'
,
icon
:
'dashboard'
,
affix
:
true
},
meta
:
{
title
:
'当前火情'
,
icon
:
'dashboard'
,
affix
:
true
},
},
},
{
{
path
:
'/floordetail
date
'
,
path
:
'/floordetail'
,
component
:
()
=>
import
(
'../views/areafiremanage/historyfire/components/floordetail.vue'
),
component
:
()
=>
import
(
'../views/areafiremanage/historyfire/components/floordetail.vue'
),
name
:
'floorDetail
Date
'
,
name
:
'floorDetail'
,
meta
:
{
title
:
'详细楼层火情'
,
icon
:
'dashboard'
,
affix
:
true
}
meta
:
{
title
:
'详细楼层火情'
,
icon
:
'dashboard'
,
affix
:
true
}
},
},
{
{
path
:
'/
building
detaildate'
,
path
:
'/
show
detaildate'
,
component
:
()
=>
import
(
'../views/areabuildmanage/components/showdetaildate.vue'
),
component
:
()
=>
import
(
'../views/areabuildmanage/components/showdetaildate.vue'
),
name
:
'
buildingDetailD
ate'
,
name
:
'
showDetaild
ate'
,
meta
:
{
title
:
'楼详细建筑数据'
,
icon
:
'dashboard'
,
affix
:
true
}
meta
:
{
title
:
'楼详细建筑数据'
,
icon
:
'dashboard'
,
affix
:
true
}
},
},
{
{
path
:
'/
onefloorbuildingdetaildate
'
,
path
:
'/
areabuildmanage/onefloor
'
,
component
:
()
=>
import
(
'../views/areabuildmanage/onefloor/index.vue'
),
component
:
()
=>
import
(
'../views/areabuildmanage/onefloor/index.vue'
),
name
:
'oneFloorBuildingDetailDate'
,
name
:
'oneFloorBuildingDetailDate'
,
meta
:
{
title
:
'层详细建筑数据'
,
icon
:
'dashboard'
,
affix
:
true
}
meta
:
{
title
:
'层详细建筑数据'
,
icon
:
'dashboard'
,
affix
:
true
}
},
},
{
{
path
:
'/uav
detaildat
e'
,
path
:
'/uav
showdate/uavmanag
e'
,
component
:
()
=>
import
(
'../views/uavshowdate/uavmanage/index.vue'
),
component
:
()
=>
import
(
'../views/uavshowdate/uavmanage/index.vue'
),
name
:
'uavDetailDate'
,
name
:
'uavDetailDate'
,
meta
:
{
title
:
'无人机管理'
,
icon
:
'dashboard'
,
affix
:
true
}
meta
:
{
title
:
'无人机管理'
,
icon
:
'dashboard'
,
affix
:
true
}
},
},
{
{
path
:
'/
recordfireinfo
'
,
path
:
'/
areafiremanage/firerecord
'
,
component
:
()
=>
import
(
'../views/areafiremanage/firerecord/index.vue'
),
component
:
()
=>
import
(
'../views/areafiremanage/firerecord/index.vue'
),
name
:
'recordFireInfo'
,
name
:
'recordFireInfo'
,
meta
:
{
title
:
'火情记录管理'
,
icon
:
'dashboard'
,
affix
:
true
}
meta
:
{
title
:
'火情记录管理'
,
icon
:
'dashboard'
,
affix
:
true
}
...
...
src/views/areabuildmanage/components/showdetaildate.vue
浏览文件 @
e79e30ac
...
@@ -19,8 +19,12 @@
...
@@ -19,8 +19,12 @@
<el-button
class=
"operation-button"
type=
"primary"
size=
"small"
>
导入
</el-button>
<el-button
class=
"operation-button"
type=
"primary"
size=
"small"
>
导入
</el-button>
<el-button
class=
"operation-button"
type=
"primary"
size=
"small"
>
导出
</el-button>
<el-button
class=
"operation-button"
type=
"primary"
size=
"small"
>
导出
</el-button>
<el-button
class=
"operation-button"
type=
"primary"
size=
"small"
@
click=
"handleAddInfoFn"
>
新增建筑
</el-button>
<el-button
class=
"operation-button"
type=
"primary"
size=
"small"
@
click=
"handleAddInfoFn"
>
新增建筑
</el-button>
<el-button
class=
"operation-button"
type=
"primary"
size=
"small"
@
click=
"handleRefreshInfoFn"
><el-icon
><RefreshRight
/></el-icon></el-button>
<el-button
class=
"operation-button"
type=
"primary"
size=
"small"
@
click=
"handleRefreshInfoFn"
><el-icon>
<el-button
class=
"operation-button"
type=
"primary"
size=
"small"
><el-icon><FullScreen
/></el-icon></el-button>
<RefreshRight
/>
</el-icon></el-button>
<el-button
class=
"operation-button"
type=
"primary"
size=
"small"
><el-icon>
<FullScreen
/>
</el-icon></el-button>
</div>
</div>
</div>
</div>
<div
class=
"card-table"
>
<div
class=
"card-table"
>
...
@@ -36,17 +40,16 @@
...
@@ -36,17 +40,16 @@
</el-drawer>
</el-drawer>
<!-- 修改建筑抽屉 -->
<!-- 修改建筑抽屉 -->
<el-drawer
v-model=
"isBuildingEditDrawer"
title=
"修改建筑信息"
:with-header=
"false"
:before-close=
"beforeCloseAddBuildDrawer"
>
<el-drawer
v-model=
"isBuildingEditDrawer"
title=
"修改建筑信息"
:with-header=
"false"
:before-close=
"beforeCloseAddBuildDrawer"
>
<Flooraddbuilding
:rowData=
"rowData"
:isBuildingEditDrawer=
"isBuildingEditDrawer"
@
closeAddDrawer=
"closeBuildingEditDrawer"
@
tableDataRefresh=
"handleRefreshInfoFn"
></Flooraddbuilding>
<Flooraddbuilding
:rowData=
"rowData"
:isBuildingEditDrawer=
"isBuildingEditDrawer"
@
closeAddDrawer=
"closeBuildingEditDrawer"
@
tableDataRefresh=
"handleRefreshInfoFn"
></Flooraddbuilding>
</el-drawer>
</el-drawer>
<!-- 图片预览组件 -->
<!-- 图片预览组件 -->
<el-image-viewer
<el-image-viewer
v-if=
"previewVisible && previewVisibledialogDate.length > 0"
:url-list=
"previewVisibledialogDate"
v-if=
"previewVisible && previewVisibledialogDate.length > 0"
@
close=
"previewVisible = false"
/>
:url-list=
"previewVisibledialogDate"
@
close=
"previewVisible = false"
/>
</div>
</div>
...
@@ -60,15 +63,15 @@ import tabledata from '../../commentcomponents/tabledata/index.vue';
...
@@ -60,15 +63,15 @@ import tabledata from '../../commentcomponents/tabledata/index.vue';
import
useAppStore
from
'../../../store/module/app'
;
import
useAppStore
from
'../../../store/module/app'
;
import
router
from
'../../../router'
;
import
router
from
'../../../router'
;
import
Flooraddbuilding
from
'./flooraddbuilding.vue'
;
import
Flooraddbuilding
from
'./flooraddbuilding.vue'
;
import
{
useRoute
,
useRouter
}
from
'vue-router'
;
import
{
useRoute
,
useRouter
}
from
'vue-router'
;
import
{
floorPageAPI
,
floorRemoveAPI
,
floorGetFloorNoListAPI
}
from
'../../../api/floor'
;
import
{
floorPageAPI
,
floorRemoveAPI
,
floorGetFloorNoListAPI
}
from
'../../../api/floor'
;
const
route
=
useRoute
();
const
route
=
useRoute
();
const
useAppStoreInstance
=
useAppStore
();
const
useAppStoreInstance
=
useAppStore
();
// 搜索栏配置
// 搜索栏配置
const
searchShowData
=
ref
([
const
searchShowData
=
ref
([
{
label
:
'楼层描述'
,
placeholder
:
"请输入"
,
type
:
'input'
,
content
:
''
,
isShow
:
true
},
{
label
:
'楼层描述'
,
placeholder
:
"请输入"
,
type
:
'input'
,
content
:
''
,
isShow
:
true
},
{
label
:
'楼层号'
,
placeholder
:
"请选择"
,
type
:
'autocomplete'
,
click
:
"floorGetFloorNoListFn"
,
content
:
''
,
options
:
[]
,
isShow
:
true
}
{
label
:
'楼层号'
,
placeholder
:
"请选择"
,
type
:
'autocomplete'
,
click
:
"floorGetFloorNoListFn"
,
content
:
''
,
options
:
[],
isShow
:
true
}
]);
]);
...
@@ -101,10 +104,10 @@ const handleAddInfoFn = () => {
...
@@ -101,10 +104,10 @@ const handleAddInfoFn = () => {
const
handleRefreshInfoFn
=
()
=>
{
const
handleRefreshInfoFn
=
()
=>
{
console
.
log
(
"刷新数据"
);
console
.
log
(
"刷新数据"
);
initTableDateFn
({
currentPageNum
:
useAppStoreInstance
.
pageCountInfo
.
currentPageNum
,
currentPageSize
:
useAppStoreInstance
.
pageCountInfo
.
currentPageSize
})
initTableDateFn
({
currentPageNum
:
useAppStoreInstance
.
pageCountInfo
.
currentPageNum
,
currentPageSize
:
useAppStoreInstance
.
pageCountInfo
.
currentPageSize
})
}
}
const
closeAddDrawer
=
()
=>
{
const
closeAddDrawer
=
()
=>
{
console
.
log
(
"000000-------1-----0000000000"
,
isAddDrawer
.
value
)
console
.
log
(
"000000-------1-----0000000000"
,
isAddDrawer
.
value
)
isAddDrawer
.
value
=
false
;
isAddDrawer
.
value
=
false
;
}
}
...
@@ -118,7 +121,7 @@ const beforeCloseAddBuildDrawer = () => {
...
@@ -118,7 +121,7 @@ const beforeCloseAddBuildDrawer = () => {
const
oneBuildingSeeDetails
=
(
data
)
=>
{
const
oneBuildingSeeDetails
=
(
data
)
=>
{
console
.
log
(
"查看详情"
,
data
);
console
.
log
(
"查看详情"
,
data
);
router
.
push
({
router
.
push
({
path
:
'/
onefloorbuildingdetaildate'
,
path
:
'/
areabuildmanage/onefloor'
,
// params: { data: JSON.stringify(data) }
// params: { data: JSON.stringify(data) }
});
});
}
}
...
@@ -129,19 +132,19 @@ const oneBuildingDdeleteData = (data) => {
...
@@ -129,19 +132,19 @@ const oneBuildingDdeleteData = (data) => {
cancelButtonText
:
'取消'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
,
type
:
'warning'
,
}).
then
(()
=>
{
}).
then
(()
=>
{
console
.
log
(
"删除"
,
data
.
floorId
,
useAppStoreInstance
.
pageCountInfo
.
currentPageNum
);
console
.
log
(
"删除"
,
data
.
floorId
,
useAppStoreInstance
.
pageCountInfo
.
currentPageNum
);
floorRemoveAPI
({
floorId
:
data
.
floorId
}).
then
(
res
=>
{
floorRemoveAPI
({
floorId
:
data
.
floorId
}).
then
(
res
=>
{
console
.
log
(
"删除成功"
,
res
);
console
.
log
(
"删除成功"
,
res
);
})
})
initTableDateFn
({
currentPageNum
:
useAppStoreInstance
.
pageCountInfo
.
currentPageNum
,
currentPageSize
:
useAppStoreInstance
.
pageCountInfo
.
currentPageSize
})
initTableDateFn
({
currentPageNum
:
useAppStoreInstance
.
pageCountInfo
.
currentPageNum
,
currentPageSize
:
useAppStoreInstance
.
pageCountInfo
.
currentPageSize
})
ElMessage
.
success
(
'已删除'
);
ElMessage
.
success
(
'已删除'
);
}).
catch
((
err
)
=>
{
}).
catch
((
err
)
=>
{
ElMessage
.
info
(
'取消删除'
,
err
);
ElMessage
.
info
(
'取消删除'
,
err
);
});
});
}
}
const
oneResetBuildingShowInfo
=
(
data
)
=>
{
const
oneResetBuildingShowInfo
=
(
data
)
=>
{
console
.
log
(
"000000----我执行了oneResetBuildingShowInfo"
,
data
)
console
.
log
(
"000000----我执行了oneResetBuildingShowInfo"
,
data
)
isBuildingEditDrawer
.
value
=
true
;
isBuildingEditDrawer
.
value
=
true
;
rowData
.
value
=
data
;
rowData
.
value
=
data
;
rowData
.
value
.
isEdit
=
true
;
rowData
.
value
.
isEdit
=
true
;
...
@@ -159,10 +162,10 @@ const previewVisibledialogDate = ref([]);
...
@@ -159,10 +162,10 @@ const previewVisibledialogDate = ref([]);
const
seeBuildingFloorPlan
=
(
data
)
=>
{
const
seeBuildingFloorPlan
=
(
data
)
=>
{
console
.
log
(
"查看楼层平面图"
,
data
);
console
.
log
(
"查看楼层平面图"
,
data
);
previewVisible
.
value
=
true
;
previewVisible
.
value
=
true
;
if
(
data
.
floorPlan
)
{
if
(
data
.
floorPlan
)
{
previewVisibledialogDate
.
value
=
[
data
.
floorPlan
]
previewVisibledialogDate
.
value
=
[
data
.
floorPlan
]
return
;
return
;
}
else
{
}
else
{
previewVisibledialogDate
.
value
=
[]
previewVisibledialogDate
.
value
=
[]
ElMessage
.
warning
({
ElMessage
.
warning
({
message
:
'该层暂无楼层平面图'
,
message
:
'该层暂无楼层平面图'
,
...
@@ -175,13 +178,13 @@ const seeBuildingFloorPlan = (data) => {
...
@@ -175,13 +178,13 @@ const seeBuildingFloorPlan = (data) => {
// 表格数据
// 表格数据
const
tableShowData
=
ref
([{
const
tableShowData
=
ref
([{
tableHeader
:
[
tableHeader
:
[
{
label
:
'建筑编号'
,
prop
:
'buildCode'
},
{
label
:
'建筑编号'
,
prop
:
'buildCode'
},
{
label
:
'建筑名称'
,
prop
:
'buildName'
},
{
label
:
'建筑名称'
,
prop
:
'buildName'
},
{
label
:
'建筑层数'
,
prop
:
'floorNo'
},
{
label
:
'建筑层数'
,
prop
:
'floorNo'
},
{
label
:
'楼层平面图'
,
prop
:
'floorPlanSee'
},
{
label
:
'楼层平面图'
,
prop
:
'floorPlanSee'
},
{
label
:
'更新时间'
,
prop
:
'updateTime'
},
{
label
:
'更新时间'
,
prop
:
'updateTime'
},
{
label
:
'楼层描述'
,
prop
:
'description'
},
{
label
:
'楼层描述'
,
prop
:
'description'
},
{
label
:
'操作'
,
prop
:
'Operation'
}
{
label
:
'操作'
,
prop
:
'Operation'
}
],
],
tableBody
:
[]
tableBody
:
[]
}]);
}]);
...
@@ -191,14 +194,14 @@ const containerStyle = computed(() => ({
...
@@ -191,14 +194,14 @@ const containerStyle = computed(() => ({
'--card-spacing'
:
layoutConfig
.
cardSpacing
,
'--card-spacing'
:
layoutConfig
.
cardSpacing
,
}));
}));
const
Operation
=
ref
([
const
Operation
=
ref
([
{
label
:
'查看详情'
,
type
:
'primary'
,
icon
:
'Add'
,
click
:
oneBuildingSeeDetails
},
{
label
:
'查看详情'
,
type
:
'primary'
,
icon
:
'Add'
,
click
:
oneBuildingSeeDetails
},
{
label
:
'删除'
,
type
:
'danger'
,
icon
:
'Delete'
,
click
:
oneBuildingDdeleteData
},
{
label
:
'删除'
,
type
:
'danger'
,
icon
:
'Delete'
,
click
:
oneBuildingDdeleteData
},
{
label
:
'修改'
,
type
:
'primary'
,
icon
:
'EditPen'
,
click
:
oneResetBuildingShowInfo
}
{
label
:
'修改'
,
type
:
'primary'
,
icon
:
'EditPen'
,
click
:
oneResetBuildingShowInfo
}
]);
]);
const
floorPlanSee
=
ref
([
{
label
:
'查看'
,
type
:
'primary'
,
icon
:
'EditPen'
,
click
:
seeBuildingFloorPlan
},
]);
const
floorPlanSee
=
ref
([
{
label
:
'查看'
,
type
:
'primary'
,
icon
:
'EditPen'
,
click
:
seeBuildingFloorPlan
},
]);
const
initTableDateFn
=
(
parameter
)
=>
{
const
initTableDateFn
=
(
parameter
)
=>
{
let
submitData
=
{
currentPageNum
:
parameter
.
currentPageNum
,
currentPageSize
:
parameter
.
currentPageSize
,...
useAppStoreInstance
.
PUSHPARAMETER
};
let
submitData
=
{
currentPageNum
:
parameter
.
currentPageNum
,
currentPageSize
:
parameter
.
currentPageSize
,
...
useAppStoreInstance
.
PUSHPARAMETER
};
floorPageAPI
(
submitData
).
then
(
res
=>
{
floorPageAPI
(
submitData
).
then
(
res
=>
{
console
.
log
(
'获取建筑列表数据返回结果:'
,
res
);
console
.
log
(
'获取建筑列表数据返回结果:'
,
res
);
if
(
res
.
code
===
200
)
{
if
(
res
.
code
===
200
)
{
...
@@ -209,7 +212,7 @@ const initTableDateFn = (parameter) => {
...
@@ -209,7 +212,7 @@ const initTableDateFn = (parameter) => {
});
});
list
.
forEach
(
element
=>
{
list
.
forEach
(
element
=>
{
element
.
Operation
=
[...
Operation
.
value
]
element
.
Operation
=
[...
Operation
.
value
]
element
.
floorPlanSee
=
[...
floorPlanSee
.
value
]
element
.
floorPlanSee
=
[...
floorPlanSee
.
value
]
});
});
tableShowData
.
value
[
0
].
tableBody
=
list
tableShowData
.
value
[
0
].
tableBody
=
list
...
@@ -220,8 +223,8 @@ const initTableDateFn = (parameter) => {
...
@@ -220,8 +223,8 @@ const initTableDateFn = (parameter) => {
}
}
// 监听路由变化
// 监听路由变化
watch
(
route
,
()
=>
{
watch
(
route
,
()
=>
{
initTableDateFn
({
currentPageNum
:
1
,
currentPageSize
:
10
})
initTableDateFn
({
currentPageNum
:
1
,
currentPageSize
:
10
})
console
.
log
(
'新增组件已挂载'
,
useAppStoreInstance
.
setParameter
)
console
.
log
(
'新增组件已挂载'
,
useAppStoreInstance
.
setParameter
)
},
{
immediate
:
true
});
},
{
immediate
:
true
});
</
script
>
</
script
>
...
@@ -304,7 +307,7 @@ watch(route, () => {
...
@@ -304,7 +307,7 @@ watch(route, () => {
.card-table
{
.card-table
{
width
:
100%
;
width
:
100%
;
flex
:
1
;
flex
:
1
;
overflow
:
hidden
;
overflow
:
hidden
;
border-radius
:
8px
;
border-radius
:
8px
;
}
}
...
...
src/views/areabuildmanage/index.vue
浏览文件 @
e79e30ac
...
@@ -18,8 +18,12 @@
...
@@ -18,8 +18,12 @@
<div
class=
"card-actions"
>
<div
class=
"card-actions"
>
<el-button
class=
"operation-button"
type=
"primary"
size=
"small"
>
导出
</el-button>
<el-button
class=
"operation-button"
type=
"primary"
size=
"small"
>
导出
</el-button>
<el-button
class=
"operation-button"
type=
"primary"
size=
"small"
@
click=
"handleAddInfoFn"
>
新增建筑
</el-button>
<el-button
class=
"operation-button"
type=
"primary"
size=
"small"
@
click=
"handleAddInfoFn"
>
新增建筑
</el-button>
<el-button
class=
"operation-button"
type=
"primary"
size=
"small"
@
click=
"handleRefreshInfoFn"
><el-icon
><RefreshRight
/></el-icon></el-button>
<el-button
class=
"operation-button"
type=
"primary"
size=
"small"
@
click=
"handleRefreshInfoFn"
><el-icon>
<el-button
class=
"operation-button"
type=
"primary"
size=
"small"
><el-icon><FullScreen
/></el-icon></el-button>
<RefreshRight
/>
</el-icon></el-button>
<el-button
class=
"operation-button"
type=
"primary"
size=
"small"
><el-icon>
<FullScreen
/>
</el-icon></el-button>
</div>
</div>
</div>
</div>
<div
class=
"card-table"
>
<div
class=
"card-table"
>
...
@@ -35,9 +39,11 @@
...
@@ -35,9 +39,11 @@
</el-drawer>
</el-drawer>
<!-- 修改建筑抽屉 -->
<!-- 修改建筑抽屉 -->
<el-drawer
v-model=
"isBuildingEditDrawer"
title=
"修改用户信息"
:with-header=
"false"
:before-close=
"beforeCloseAddBuildDrawer"
>
<el-drawer
v-model=
"isBuildingEditDrawer"
title=
"修改用户信息"
:with-header=
"false"
:before-close=
"beforeCloseAddBuildDrawer"
>
<showResetBuildingInfo
:rowData=
"rowData"
:isBuildingEditDrawer=
"isBuildingEditDrawer"
@
closeEditDrawer=
"closeBuildingEditDrawer"
@
tableDataRefresh=
"handleRefreshInfoFn"
></showResetBuildingInfo>
<showResetBuildingInfo
:rowData=
"rowData"
:isBuildingEditDrawer=
"isBuildingEditDrawer"
@
closeEditDrawer=
"closeBuildingEditDrawer"
@
tableDataRefresh=
"handleRefreshInfoFn"
></showResetBuildingInfo>
</el-drawer>
</el-drawer>
</div>
</div>
...
@@ -51,17 +57,17 @@ import tabledata from '../commentcomponents/tabledata/index.vue';
...
@@ -51,17 +57,17 @@ import tabledata from '../commentcomponents/tabledata/index.vue';
import
showResetBuildingInfo
from
'./components/showResetBuildingInfo.vue'
;
import
showResetBuildingInfo
from
'./components/showResetBuildingInfo.vue'
;
import
Addbuild
from
'./components/addbuild.vue'
;
import
Addbuild
from
'./components/addbuild.vue'
;
import
router
from
'../../router'
;
import
router
from
'../../router'
;
import
{
buildingPageApi
,
buildingRemoveApi
,
buildingGetBuildCodeListApi
}
from
'../../api/build'
;
import
{
buildingPageApi
,
buildingRemoveApi
,
buildingGetBuildCodeListApi
}
from
'../../api/build'
;
import
{
useRoute
,
useRouter
}
from
'vue-router'
;
import
{
useRoute
,
useRouter
}
from
'vue-router'
;
import
useAppStore
from
'../../store/module/app'
;
import
useAppStore
from
'../../store/module/app'
;
const
useAppStoreInstance
=
useAppStore
();
const
useAppStoreInstance
=
useAppStore
();
const
route
=
useRoute
();
const
route
=
useRoute
();
// 搜索栏配置
// 搜索栏配置
const
searchShowData
=
ref
([
const
searchShowData
=
ref
([
{
label
:
'功能描述'
,
placeholder
:
"请输入"
,
type
:
'input'
,
content
:
''
,
isShow
:
true
},
{
label
:
'功能描述'
,
placeholder
:
"请输入"
,
type
:
'input'
,
content
:
''
,
isShow
:
true
},
{
label
:
'建筑编号'
,
placeholder
:
"请选择"
,
type
:
'autocomplete'
,
content
:
''
,
isShow
:
true
,
click
:
'buildingGetBuildCodeListApiFn'
,
options
:
[]
},
{
label
:
'建筑编号'
,
placeholder
:
"请选择"
,
type
:
'autocomplete'
,
content
:
''
,
isShow
:
true
,
click
:
'buildingGetBuildCodeListApiFn'
,
options
:
[]
},
{
label
:
'建筑层数'
,
placeholder
:
"请选择"
,
type
:
'autocomplete'
,
content
:
''
,
isShow
:
true
,
click
:
'buildingGetTotalFloorNumListFn'
,
options
:
[]
},
{
label
:
'建筑层数'
,
placeholder
:
"请选择"
,
type
:
'autocomplete'
,
content
:
''
,
isShow
:
true
,
click
:
'buildingGetTotalFloorNumListFn'
,
options
:
[]
},
{
label
:
'建筑名称'
,
placeholder
:
"请选择"
,
type
:
'autocomplete'
,
content
:
''
,
isShow
:
true
,
click
:
'buildingGetBuildNameListFn'
,
options
:
[]
},
{
label
:
'建筑名称'
,
placeholder
:
"请选择"
,
type
:
'autocomplete'
,
content
:
''
,
isShow
:
true
,
click
:
'buildingGetBuildNameListFn'
,
options
:
[]
},
]);
]);
...
@@ -101,10 +107,10 @@ const beforeCloseAddBuildDrawer = () => {
...
@@ -101,10 +107,10 @@ const beforeCloseAddBuildDrawer = () => {
const
buildingSeeDetails
=
(
data
)
=>
{
const
buildingSeeDetails
=
(
data
)
=>
{
console
.
log
(
"查看详情"
,
data
);
console
.
log
(
"查看详情"
,
data
);
router
.
push
({
router
.
push
({
path
:
'/
building
detaildate'
,
path
:
'/
show
detaildate'
,
});
});
useAppStoreInstance
.
setPushParameter
({
buildId
:
data
.
buildId
})
useAppStoreInstance
.
setPushParameter
({
buildId
:
data
.
buildId
})
}
}
const
buildingDdeleteData
=
(
data
)
=>
{
const
buildingDdeleteData
=
(
data
)
=>
{
...
@@ -116,7 +122,7 @@ const buildingDdeleteData = (data) => {
...
@@ -116,7 +122,7 @@ const buildingDdeleteData = (data) => {
.
then
(()
=>
{
.
then
(()
=>
{
try
{
try
{
// 用户点击「确认」
// 用户点击「确认」
const
{
buildId
,
buildName
}
=
data
;
const
{
buildId
,
buildName
}
=
data
;
buildingRemoveApi
({
buildId
:
buildId
})
buildingRemoveApi
({
buildId
:
buildId
})
.
then
(
res
=>
{
.
then
(
res
=>
{
if
(
res
.
code
===
200
)
{
if
(
res
.
code
===
200
)
{
...
@@ -131,7 +137,7 @@ const buildingDdeleteData = (data) => {
...
@@ -131,7 +137,7 @@ const buildingDdeleteData = (data) => {
ElMessage
.
error
(
err
?.
message
||
'删除请求失败'
);
ElMessage
.
error
(
err
?.
message
||
'删除请求失败'
);
});
});
}
catch
(
error
)
{
}
catch
(
error
)
{
console
.
error
(
error
,
'API 请求失败'
);
console
.
error
(
error
,
'API 请求失败'
);
}
}
})
})
...
@@ -145,7 +151,7 @@ const resetBuildingShowInfo = (data) => {
...
@@ -145,7 +151,7 @@ const resetBuildingShowInfo = (data) => {
isBuildingEditDrawer
.
value
=
true
;
isBuildingEditDrawer
.
value
=
true
;
rowData
.
value
=
data
;
rowData
.
value
=
data
;
console
.
log
(
"000000------------0000000000"
,
rowData
.
value
)
console
.
log
(
"000000------------0000000000"
,
rowData
.
value
)
}
}
const
closeBuildingEditDrawer
=
()
=>
{
const
closeBuildingEditDrawer
=
()
=>
{
...
@@ -155,12 +161,12 @@ const closeBuildingEditDrawer = () => {
...
@@ -155,12 +161,12 @@ const closeBuildingEditDrawer = () => {
// 表格数据
// 表格数据
const
tableShowData
=
ref
([{
const
tableShowData
=
ref
([{
tableHeader
:
[
tableHeader
:
[
{
label
:
'建筑编号'
,
prop
:
'buildCode'
},
{
label
:
'建筑编号'
,
prop
:
'buildCode'
},
{
label
:
'建筑名称'
,
prop
:
'buildName'
},
{
label
:
'建筑名称'
,
prop
:
'buildName'
},
{
label
:
'建筑层数'
,
prop
:
'totalFloorNum'
},
{
label
:
'建筑层数'
,
prop
:
'totalFloorNum'
},
{
label
:
'火情次数'
,
prop
:
'fireNum'
},
{
label
:
'火情次数'
,
prop
:
'fireNum'
},
{
label
:
'更新时间'
,
prop
:
'updateTime'
},
{
label
:
'更新时间'
,
prop
:
'updateTime'
},
{
label
:
'操作'
,
prop
:
'Operation'
}
{
label
:
'操作'
,
prop
:
'Operation'
}
],
],
tableBody
:
[]
tableBody
:
[]
}]);
}]);
...
@@ -174,13 +180,13 @@ const Operation = ref([
...
@@ -174,13 +180,13 @@ const Operation = ref([
// });
// });
const
initTableDateFn
=
()
=>
{
const
initTableDateFn
=
()
=>
{
console
.
log
(
'初始化数据'
);
console
.
log
(
'初始化数据'
);
buildingPageApi
({
currentPageNum
:
1
,
currentPageSize
:
10
}).
then
(
res
=>
{
buildingPageApi
({
currentPageNum
:
1
,
currentPageSize
:
10
}).
then
(
res
=>
{
if
(
res
.
code
===
200
)
{
if
(
res
.
code
===
200
)
{
let
{
list
,
total
,
pageSize
}
=
res
.
data
;
let
{
list
,
total
,
pageSize
}
=
res
.
data
;
if
(
!
list
)
{
if
(
!
list
)
{
ElMessage
.
warning
(
'建筑列表暂无数据,请先添加建筑数据'
);
ElMessage
.
warning
(
'建筑列表暂无数据,请先添加建筑数据'
);
}
else
{
}
else
{
tableShowData
.
value
[
0
].
tableBody
=
[]
tableShowData
.
value
[
0
].
tableBody
=
[]
list
=
list
.
filter
(
element
=>
{
list
=
list
.
filter
(
element
=>
{
return
element
.
isDeleted
===
0
;
return
element
.
isDeleted
===
0
;
...
@@ -291,7 +297,7 @@ const containerStyle = computed(() => ({
...
@@ -291,7 +297,7 @@ const containerStyle = computed(() => ({
.card-table
{
.card-table
{
width
:
100%
;
width
:
100%
;
flex
:
1
;
flex
:
1
;
overflow
:
hidden
;
overflow
:
hidden
;
border-radius
:
8px
;
border-radius
:
8px
;
}
}
...
...
src/views/areabuildmanage/onefloor/index.vue
浏览文件 @
e79e30ac
...
@@ -10,7 +10,8 @@
...
@@ -10,7 +10,8 @@
<div
class=
"card-table"
>
<div
class=
"card-table"
>
<onefloorbuildingdetaildate></onefloorbuildingdetaildate>
<onefloorbuildingdetaildate>
</areabuildmanage
/onefloor
>
</div>
</div>
</div>
</div>
...
@@ -24,7 +25,7 @@
...
@@ -24,7 +25,7 @@
<
script
setup
>
<
script
setup
>
import
{
reactive
,
computed
,
ref
,
onMounted
}
from
'vue'
;
import
{
reactive
,
computed
,
ref
,
onMounted
}
from
'vue'
;
// import searchtop from '../../commentcomponents/searchtop/index.vue';
// import searchtop from '../../commentcomponents/searchtop/index.vue';
import
onefloorbuildingdetaildate
from
'../components/
onefloorbuildingdetaildate
.vue'
import
onefloorbuildingdetaildate
from
'../components/
areabuildmanage/onefloor
.vue'
import
{
ElMessage
,
ElMessageBox
}
from
'element-plus'
import
{
ElMessage
,
ElMessageBox
}
from
'element-plus'
import
{
staffGetPageInfoApi
}
from
"../../../api/staff.js"
import
{
staffGetPageInfoApi
}
from
"../../../api/staff.js"
...
...
src/views/areafiremanage/historyfire/index.vue
浏览文件 @
e79e30ac
...
@@ -9,10 +9,10 @@
...
@@ -9,10 +9,10 @@
<!-- 左侧下部分:统计区域 -->
<!-- 左侧下部分:统计区域 -->
<div
class=
"info-card stats-alerts"
>
<div
class=
"info-card stats-alerts"
>
<div
class=
"card-tong card-show"
>
<div
class=
"card-tong card-show"
>
<currentFire
:currentFireData=
"currentFireData"
></currentFire>
<currentFire
:currentFireData=
"currentFireData"
></currentFire>
</div>
</div>
<div
class=
"card-tong"
>
<div
class=
"card-tong"
>
</div>
</div>
...
@@ -29,7 +29,7 @@ import currentFire from './components/currentFirecard.vue';
...
@@ -29,7 +29,7 @@ import currentFire from './components/currentFirecard.vue';
// import uav from '../components/uav.vue';
// import uav from '../components/uav.vue';
// import meanList from '../components/menuList.vue';
// import meanList from '../components/menuList.vue';
import
useAppStore
from
'../../../store/module/app'
;
import
useAppStore
from
'../../../store/module/app'
;
import
{
useRouter
,
useRoute
}
from
'vue-router'
;
import
{
useRouter
,
useRoute
}
from
'vue-router'
;
const
useAppStoreInstance
=
useAppStore
();
const
useAppStoreInstance
=
useAppStore
();
const
curruserInfo
=
computed
(()
=>
(
useAppStoreInstance
.
userInfo
));
const
curruserInfo
=
computed
(()
=>
(
useAppStoreInstance
.
userInfo
));
...
@@ -93,28 +93,28 @@ const currentFireData = ref([
...
@@ -93,28 +93,28 @@ const currentFireData = ref([
// 定义一个uavRepairData的ref,里面包含了多个无人机维修数据
// 定义一个uavRepairData的ref,里面包含了多个无人机维修数据
const
uavRepairData
=
ref
([
const
uavRepairData
=
ref
([
// 第一个无人机维修数据,已经维修
// 第一个无人机维修数据,已经维修
{
isRepaid
:
true
,
uavRepairSetailData
:[{
label
:
"无人机编号"
,
value
:
'无人机1号'
},
{
label
:
"上报时间"
,
value
:
'2025年8月7日 11:14'
},{
label
:
"型号"
,
value
:
'小型无人机'
},{
label
:
"维护类型"
,
value
:
'更换电池'
}]
},
{
isRepaid
:
true
,
uavRepairSetailData
:
[{
label
:
"无人机编号"
,
value
:
'无人机1号'
},
{
label
:
"上报时间"
,
value
:
'2025年8月7日 11:14'
},
{
label
:
"型号"
,
value
:
'小型无人机'
},
{
label
:
"维护类型"
,
value
:
'更换电池'
}]
},
// 第二个无人机维修数据,已经维修
// 第二个无人机维修数据,已经维修
{
isRepaid
:
true
,
uavRepairSetailData
:[{
label
:
"无人机编号"
,
value
:
'无人机1号'
},
{
label
:
"上报时间"
,
value
:
'2025年8月7日 11:14'
},{
label
:
"型号"
,
value
:
'小型无人机'
},{
label
:
"维护类型"
,
value
:
'更换电池'
}]
},
{
isRepaid
:
true
,
uavRepairSetailData
:
[{
label
:
"无人机编号"
,
value
:
'无人机1号'
},
{
label
:
"上报时间"
,
value
:
'2025年8月7日 11:14'
},
{
label
:
"型号"
,
value
:
'小型无人机'
},
{
label
:
"维护类型"
,
value
:
'更换电池'
}]
},
// 第三个无人机维修数据,未维修
// 第三个无人机维修数据,未维修
{
isRepaid
:
false
,
uavRepairSetailData
:[{
label
:
"无人机编号"
,
value
:
'无人机1号'
},
{
label
:
"上报时间"
,
value
:
'2025年8月7日 11:14'
},{
label
:
"型号"
,
value
:
'小型无人机'
},{
label
:
"维护类型"
,
value
:
'更换电池'
}]
},
{
isRepaid
:
false
,
uavRepairSetailData
:
[{
label
:
"无人机编号"
,
value
:
'无人机1号'
},
{
label
:
"上报时间"
,
value
:
'2025年8月7日 11:14'
},
{
label
:
"型号"
,
value
:
'小型无人机'
},
{
label
:
"维护类型"
,
value
:
'更换电池'
}]
},
// 第四个无人机维修数据,已经维修
// 第四个无人机维修数据,已经维修
{
isRepaid
:
true
,
uavRepairSetailData
:[{
label
:
"无人机编号"
,
value
:
'无人机1号'
},
{
label
:
"上报时间"
,
value
:
'2025年8月7日 11:14'
},{
label
:
"型号"
,
value
:
'小型无人机'
},{
label
:
"维护类型"
,
value
:
'更换电池'
}]
},
{
isRepaid
:
true
,
uavRepairSetailData
:
[{
label
:
"无人机编号"
,
value
:
'无人机1号'
},
{
label
:
"上报时间"
,
value
:
'2025年8月7日 11:14'
},
{
label
:
"型号"
,
value
:
'小型无人机'
},
{
label
:
"维护类型"
,
value
:
'更换电池'
}]
},
// 第五个无人机维修数据,未维修
// 第五个无人机维修数据,未维修
{
isRepaid
:
false
,
uavRepairSetailData
:[{
label
:
"无人机编号"
,
value
:
'无人机1号'
},
{
label
:
"上报时间"
,
value
:
'2025年8月7日 11:14'
},{
label
:
"型号"
,
value
:
'小型无人机'
},{
label
:
"维护类型"
,
value
:
'更换电池'
}]
},
{
isRepaid
:
false
,
uavRepairSetailData
:
[{
label
:
"无人机编号"
,
value
:
'无人机1号'
},
{
label
:
"上报时间"
,
value
:
'2025年8月7日 11:14'
},
{
label
:
"型号"
,
value
:
'小型无人机'
},
{
label
:
"维护类型"
,
value
:
'更换电池'
}]
},
// 第六个无人机维修数据,已经维修
// 第六个无人机维修数据,已经维修
{
isRepaid
:
true
,
uavRepairSetailData
:[{
label
:
"无人机编号"
,
value
:
'无人机1号'
},
{
label
:
"上报时间"
,
value
:
'2025年8月7日 11:14'
},{
label
:
"型号"
,
value
:
'小型无人机'
},{
label
:
"维护类型"
,
value
:
'更换电池'
}]
},
{
isRepaid
:
true
,
uavRepairSetailData
:
[{
label
:
"无人机编号"
,
value
:
'无人机1号'
},
{
label
:
"上报时间"
,
value
:
'2025年8月7日 11:14'
},
{
label
:
"型号"
,
value
:
'小型无人机'
},
{
label
:
"维护类型"
,
value
:
'更换电池'
}]
},
])
])
const
menuItems
=
ref
([
const
menuItems
=
ref
([
{
name
:
'首页'
,
icon
:
new
URL
(
'../../../static/image/huo.png'
,
import
.
meta
.
url
),
path
:
'/
analysisPage
'
},
{
name
:
'首页'
,
icon
:
new
URL
(
'../../../static/image/huo.png'
,
import
.
meta
.
url
),
path
:
'/
dashboard/analysis
'
},
{
name
:
'系统管理'
,
icon
:
new
URL
(
'../../../static/image/huo.png'
,
import
.
meta
.
url
),
path
:
'/
userm
anage'
},
{
name
:
'系统管理'
,
icon
:
new
URL
(
'../../../static/image/huo.png'
,
import
.
meta
.
url
),
path
:
'/
systemmanage/staffM
anage'
},
{
name
:
'建筑管理'
,
icon
:
new
URL
(
'../../../static/image/huo.png'
,
import
.
meta
.
url
),
path
:
'/areabuildmanage'
},
{
name
:
'建筑管理'
,
icon
:
new
URL
(
'../../../static/image/huo.png'
,
import
.
meta
.
url
),
path
:
'/areabuildmanage'
},
{
name
:
'无人机管理'
,
icon
:
new
URL
(
'../../../static/image/huo.png'
,
import
.
meta
.
url
),
path
:
'/uav
dispatch
'
},
{
name
:
'无人机管理'
,
icon
:
new
URL
(
'../../../static/image/huo.png'
,
import
.
meta
.
url
),
path
:
'/uav
showdate
'
},
{
name
:
'火情管理'
,
icon
:
new
URL
(
'../../../static/image/huo.png'
,
import
.
meta
.
url
),
path
:
'/firesurveillance'
},
{
name
:
'火情管理'
,
icon
:
new
URL
(
'../../../static/image/huo.png'
,
import
.
meta
.
url
),
path
:
'/
areafiremanage/
firesurveillance'
},
{
name
:
'数字孪生管理'
,
icon
:
new
URL
(
'../../../static/image/huo.png'
,
import
.
meta
.
url
),
path
:
'/digital-twin'
},
{
name
:
'数字孪生管理'
,
icon
:
new
URL
(
'../../../static/image/huo.png'
,
import
.
meta
.
url
),
path
:
'/digital-twin'
},
{
name
:
'个人信息'
,
icon
:
new
URL
(
'../../../static/image/huo.png'
,
import
.
meta
.
url
),
path
:
'/
userm
anage'
}
{
name
:
'个人信息'
,
icon
:
new
URL
(
'../../../static/image/huo.png'
,
import
.
meta
.
url
),
path
:
'/
systemmanage/staffM
anage'
}
]);
]);
// 响应式配置
// 响应式配置
const
layoutConfig
=
reactive
({
const
layoutConfig
=
reactive
({
...
@@ -131,7 +131,7 @@ const containerStyle = computed(() => ({
...
@@ -131,7 +131,7 @@ const containerStyle = computed(() => ({
}));
}));
onMounted
(()
=>
{
onMounted
(()
=>
{
nextTick
(()
=>
{
nextTick
(()
=>
{
useAppStoreInstance
.
initavatarUrlFn
()
useAppStoreInstance
.
initavatarUrlFn
()
})
})
});
});
...
@@ -171,7 +171,8 @@ watch(route, () => {
...
@@ -171,7 +171,8 @@ watch(route, () => {
.left-top
{
.left-top
{
display
:
flex
;
display
:
flex
;
height
:
auto
;
/* 取消固定高度,改为内容自适应 */
height
:
auto
;
/* 取消固定高度,改为内容自适应 */
}
}
/* 通用卡片样式 */
/* 通用卡片样式 */
...
@@ -186,7 +187,8 @@ watch(route, () => {
...
@@ -186,7 +187,8 @@ watch(route, () => {
/* 用户信息卡片 */
/* 用户信息卡片 */
.region-overview
{
.region-overview
{
flex
:
1
;
flex
:
1
;
min-width
:
200px
;
/* 确保最小宽度 */
min-width
:
200px
;
/* 确保最小宽度 */
}
}
/* 用户信息布局 */
/* 用户信息布局 */
...
@@ -208,8 +210,9 @@ watch(route, () => {
...
@@ -208,8 +210,9 @@ watch(route, () => {
display
:
flex
;
display
:
flex
;
align-items
:
center
;
align-items
:
center
;
justify-content
:
center
;
justify-content
:
center
;
min-width
:
150px
;
/* 确保最小宽度 */
min-width
:
150px
;
background-color
:
rgba
(
100
,
149
,
237
,
0.30
);
/* 确保最小宽度 */
background-color
:
rgba
(
100
,
149
,
237
,
0.30
);
}
}
...
@@ -218,12 +221,27 @@ watch(route, () => {
...
@@ -218,12 +221,27 @@ watch(route, () => {
}
}
@keyframes
infiniteRotate
{
@keyframes
infiniteRotate
{
0
%
{
transform
:
rotate
(
0deg
);
}
0
%
{
25
%
{
transform
:
rotate
(
45deg
);
}
transform
:
rotate
(
0deg
);
50
%
{
transform
:
rotate
(
0deg
);
}
}
75
%
{
transform
:
rotate
(
-45deg
);
}
100
%
{
transform
:
rotate
(
0deg
);
}
25
%
{
transform
:
rotate
(
45deg
);
}
50
%
{
transform
:
rotate
(
0deg
);
}
75
%
{
transform
:
rotate
(
-45deg
);
}
100
%
{
transform
:
rotate
(
0deg
);
}
}
}
.region-map
span
{
.region-map
span
{
margin-left
:
0.5rem
;
margin-left
:
0.5rem
;
font-weight
:
500
;
font-weight
:
500
;
...
@@ -246,12 +264,14 @@ watch(route, () => {
...
@@ -246,12 +264,14 @@ watch(route, () => {
box-shadow
:
2px
0
rgba
(
0
,
0
,
0
,
0.1
);
box-shadow
:
2px
0
rgba
(
0
,
0
,
0
,
0.1
);
overflow
:
auto
;
overflow
:
auto
;
}
}
.card-show
{
.card-show
{
flex
:
0.5
;
flex
:
0.5
;
}
}
.card-tong-large
{
.card-tong-large
{
flex
:
2
;
/* 第三个方块宽度是其他两个的两倍 */
flex
:
2
;
/* 第三个方块宽度是其他两个的两倍 */
}
}
/* 响应式适配 */
/* 响应式适配 */
...
@@ -260,7 +280,8 @@ watch(route, () => {
...
@@ -260,7 +280,8 @@ watch(route, () => {
flex-direction
:
column
;
flex-direction
:
column
;
}
}
.region-overview
,
.region-map
{
.region-overview
,
.region-map
{
width
:
100%
;
width
:
100%
;
flex
:
none
;
flex
:
none
;
}
}
...
@@ -273,7 +294,8 @@ watch(route, () => {
...
@@ -273,7 +294,8 @@ watch(route, () => {
.card-tong-large
{
.card-tong-large
{
flex
:
none
;
flex
:
none
;
height
:
150px
;
/* 在移动端保持高度 */
height
:
150px
;
/* 在移动端保持高度 */
}
}
}
}
</
style
>
</
style
>
\ No newline at end of file
src/views/dashboard/workbench/index.vue
浏览文件 @
e79e30ac
...
@@ -9,31 +9,34 @@
...
@@ -9,31 +9,34 @@
<!-- 区域信息概览 -->
<!-- 区域信息概览 -->
<div
class=
"info-card region-overview"
>
<div
class=
"info-card region-overview"
>
<div
class=
"info-grid"
>
<div
class=
"info-grid"
>
<el-avatar
shape=
"square"
size=
"large"
:src=
"useAppStoreInstance.userInfo.avatar?useAppStoreInstance.userInfo.avatar: useAppStoreInstance.showavatarUrl"
/>
<el-avatar
shape=
"square"
size=
"large"
:src=
"useAppStoreInstance.userInfo.avatar ? useAppStoreInstance.userInfo.avatar : useAppStoreInstance.showavatarUrl"
/>
<div
class=
"info-item"
>
<div
class=
"info-item"
>
<span>
{{
useAppStoreInstance
.
userInfo
.
name
}}
</span>
<span>
{{
useAppStoreInstance
.
userInfo
.
name
}}
</span>
<span>
{{
useAppStoreInstance
.
position
[
useAppStoreInstance
.
userInfo
.
role
]
}}
</span>
<span>
{{
useAppStoreInstance
.
position
[
useAppStoreInstance
.
userInfo
.
role
]
}}
</span>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- 待办事项卡片 -->
<!-- 待办事项卡片 -->
<div
class=
"info-card region-map"
>
<div
class=
"info-card region-map"
>
<el-icon
class=
"menu_left-icon"
style=
"color: #6495ed;"
size=
"20"
><BellFilled
/></el-icon>
<el-icon
class=
"menu_left-icon"
style=
"color: #6495ed;"
size=
"20"
>
<BellFilled
/>
</el-icon>
<span>
12 待办事项
</span>
<span>
12 待办事项
</span>
</div>
</div>
</div>
</div>
<!-- 左侧下部分:统计区域 -->
<!-- 左侧下部分:统计区域 -->
<div
class=
"info-card stats-alerts"
>
<div
class=
"info-card stats-alerts"
>
<div
class=
"card-tong"
>
<div
class=
"card-tong"
>
<currentFire
:currentFireData=
"currentFireData"
></currentFire>
<currentFire
:currentFireData=
"currentFireData"
></currentFire>
</div>
</div>
<div
class=
"card-tong"
>
<div
class=
"card-tong"
>
<uav
:uavRepairData=
"uavRepairData"
></uav>
<uav
:uavRepairData=
"uavRepairData"
></uav>
</div>
</div>
<div
class=
"card-tong card-tong-large"
>
<div
class=
"card-tong card-tong-large"
>
<meanList
:menuItems=
"menuItems"
></meanList>
<meanList
:menuItems=
"menuItems"
></meanList>
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -48,7 +51,7 @@ import currentFire from '../components/currentFire.vue';
...
@@ -48,7 +51,7 @@ import currentFire from '../components/currentFire.vue';
import
uav
from
'../components/uav.vue'
;
import
uav
from
'../components/uav.vue'
;
import
meanList
from
'../components/menuList.vue'
;
import
meanList
from
'../components/menuList.vue'
;
import
useAppStore
from
'../../../store/module/app'
;
import
useAppStore
from
'../../../store/module/app'
;
import
{
useRouter
,
useRoute
}
from
'vue-router'
;
import
{
useRouter
,
useRoute
}
from
'vue-router'
;
const
useAppStoreInstance
=
useAppStore
();
const
useAppStoreInstance
=
useAppStore
();
const
curruserInfo
=
computed
(()
=>
(
useAppStoreInstance
.
userInfo
));
const
curruserInfo
=
computed
(()
=>
(
useAppStoreInstance
.
userInfo
));
...
@@ -118,28 +121,28 @@ const currentFireData = ref([
...
@@ -118,28 +121,28 @@ const currentFireData = ref([
// 定义一个uavRepairData的ref,里面包含了多个无人机维修数据
// 定义一个uavRepairData的ref,里面包含了多个无人机维修数据
const
uavRepairData
=
ref
([
const
uavRepairData
=
ref
([
// 第一个无人机维修数据,已经维修
// 第一个无人机维修数据,已经维修
{
isRepaid
:
true
,
uavRepairSetailData
:[{
label
:
"无人机编号"
,
value
:
'无人机1号'
},
{
label
:
"上报时间"
,
value
:
'2025年8月7日 11:14'
},{
label
:
"型号"
,
value
:
'小型无人机'
},{
label
:
"维护类型"
,
value
:
'更换电池'
}]
},
{
isRepaid
:
true
,
uavRepairSetailData
:
[{
label
:
"无人机编号"
,
value
:
'无人机1号'
},
{
label
:
"上报时间"
,
value
:
'2025年8月7日 11:14'
},
{
label
:
"型号"
,
value
:
'小型无人机'
},
{
label
:
"维护类型"
,
value
:
'更换电池'
}]
},
// 第二个无人机维修数据,已经维修
// 第二个无人机维修数据,已经维修
{
isRepaid
:
true
,
uavRepairSetailData
:[{
label
:
"无人机编号"
,
value
:
'无人机1号'
},
{
label
:
"上报时间"
,
value
:
'2025年8月7日 11:14'
},{
label
:
"型号"
,
value
:
'小型无人机'
},{
label
:
"维护类型"
,
value
:
'更换电池'
}]
},
{
isRepaid
:
true
,
uavRepairSetailData
:
[{
label
:
"无人机编号"
,
value
:
'无人机1号'
},
{
label
:
"上报时间"
,
value
:
'2025年8月7日 11:14'
},
{
label
:
"型号"
,
value
:
'小型无人机'
},
{
label
:
"维护类型"
,
value
:
'更换电池'
}]
},
// 第三个无人机维修数据,未维修
// 第三个无人机维修数据,未维修
{
isRepaid
:
false
,
uavRepairSetailData
:[{
label
:
"无人机编号"
,
value
:
'无人机1号'
},
{
label
:
"上报时间"
,
value
:
'2025年8月7日 11:14'
},{
label
:
"型号"
,
value
:
'小型无人机'
},{
label
:
"维护类型"
,
value
:
'更换电池'
}]
},
{
isRepaid
:
false
,
uavRepairSetailData
:
[{
label
:
"无人机编号"
,
value
:
'无人机1号'
},
{
label
:
"上报时间"
,
value
:
'2025年8月7日 11:14'
},
{
label
:
"型号"
,
value
:
'小型无人机'
},
{
label
:
"维护类型"
,
value
:
'更换电池'
}]
},
// 第四个无人机维修数据,已经维修
// 第四个无人机维修数据,已经维修
{
isRepaid
:
true
,
uavRepairSetailData
:[{
label
:
"无人机编号"
,
value
:
'无人机1号'
},
{
label
:
"上报时间"
,
value
:
'2025年8月7日 11:14'
},{
label
:
"型号"
,
value
:
'小型无人机'
},{
label
:
"维护类型"
,
value
:
'更换电池'
}]
},
{
isRepaid
:
true
,
uavRepairSetailData
:
[{
label
:
"无人机编号"
,
value
:
'无人机1号'
},
{
label
:
"上报时间"
,
value
:
'2025年8月7日 11:14'
},
{
label
:
"型号"
,
value
:
'小型无人机'
},
{
label
:
"维护类型"
,
value
:
'更换电池'
}]
},
// 第五个无人机维修数据,未维修
// 第五个无人机维修数据,未维修
{
isRepaid
:
false
,
uavRepairSetailData
:[{
label
:
"无人机编号"
,
value
:
'无人机1号'
},
{
label
:
"上报时间"
,
value
:
'2025年8月7日 11:14'
},{
label
:
"型号"
,
value
:
'小型无人机'
},{
label
:
"维护类型"
,
value
:
'更换电池'
}]
},
{
isRepaid
:
false
,
uavRepairSetailData
:
[{
label
:
"无人机编号"
,
value
:
'无人机1号'
},
{
label
:
"上报时间"
,
value
:
'2025年8月7日 11:14'
},
{
label
:
"型号"
,
value
:
'小型无人机'
},
{
label
:
"维护类型"
,
value
:
'更换电池'
}]
},
// 第六个无人机维修数据,已经维修
// 第六个无人机维修数据,已经维修
{
isRepaid
:
true
,
uavRepairSetailData
:[{
label
:
"无人机编号"
,
value
:
'无人机1号'
},
{
label
:
"上报时间"
,
value
:
'2025年8月7日 11:14'
},{
label
:
"型号"
,
value
:
'小型无人机'
},{
label
:
"维护类型"
,
value
:
'更换电池'
}]
},
{
isRepaid
:
true
,
uavRepairSetailData
:
[{
label
:
"无人机编号"
,
value
:
'无人机1号'
},
{
label
:
"上报时间"
,
value
:
'2025年8月7日 11:14'
},
{
label
:
"型号"
,
value
:
'小型无人机'
},
{
label
:
"维护类型"
,
value
:
'更换电池'
}]
},
])
])
const
menuItems
=
ref
([
const
menuItems
=
ref
([
{
name
:
'首页'
,
icon
:
new
URL
(
'../../../static/image/huo.png'
,
import
.
meta
.
url
),
path
:
'/
analysisPage
'
},
{
name
:
'首页'
,
icon
:
new
URL
(
'../../../static/image/huo.png'
,
import
.
meta
.
url
),
path
:
'/
dashboard/analysis
'
},
{
name
:
'系统管理'
,
icon
:
new
URL
(
'../../../static/image/huo.png'
,
import
.
meta
.
url
),
path
:
'/
userm
anage'
},
{
name
:
'系统管理'
,
icon
:
new
URL
(
'../../../static/image/huo.png'
,
import
.
meta
.
url
),
path
:
'/
systemmanage/staffM
anage'
},
{
name
:
'建筑管理'
,
icon
:
new
URL
(
'../../../static/image/huo.png'
,
import
.
meta
.
url
),
path
:
'/areabuildmanage'
},
{
name
:
'建筑管理'
,
icon
:
new
URL
(
'../../../static/image/huo.png'
,
import
.
meta
.
url
),
path
:
'/areabuildmanage'
},
{
name
:
'无人机管理'
,
icon
:
new
URL
(
'../../../static/image/huo.png'
,
import
.
meta
.
url
),
path
:
'/uav
dispatch
'
},
{
name
:
'无人机管理'
,
icon
:
new
URL
(
'../../../static/image/huo.png'
,
import
.
meta
.
url
),
path
:
'/uav
showdate
'
},
{
name
:
'火情管理'
,
icon
:
new
URL
(
'../../../static/image/huo.png'
,
import
.
meta
.
url
),
path
:
'/firesurveillance'
},
{
name
:
'火情管理'
,
icon
:
new
URL
(
'../../../static/image/huo.png'
,
import
.
meta
.
url
),
path
:
'/
areafiremanage/
firesurveillance'
},
{
name
:
'数字孪生管理'
,
icon
:
new
URL
(
'../../../static/image/huo.png'
,
import
.
meta
.
url
),
path
:
'/digital-twin'
},
{
name
:
'数字孪生管理'
,
icon
:
new
URL
(
'../../../static/image/huo.png'
,
import
.
meta
.
url
),
path
:
'/digital-twin'
},
{
name
:
'个人信息'
,
icon
:
new
URL
(
'../../../static/image/huo.png'
,
import
.
meta
.
url
),
path
:
'/
userm
anage'
}
{
name
:
'个人信息'
,
icon
:
new
URL
(
'../../../static/image/huo.png'
,
import
.
meta
.
url
),
path
:
'/
systemmanage/staffM
anage'
}
]);
]);
// 响应式配置
// 响应式配置
const
layoutConfig
=
reactive
({
const
layoutConfig
=
reactive
({
...
@@ -156,7 +159,7 @@ const containerStyle = computed(() => ({
...
@@ -156,7 +159,7 @@ const containerStyle = computed(() => ({
}));
}));
onMounted
(()
=>
{
onMounted
(()
=>
{
nextTick
(()
=>
{
nextTick
(()
=>
{
useAppStoreInstance
.
initavatarUrlFn
()
useAppStoreInstance
.
initavatarUrlFn
()
})
})
});
});
...
@@ -196,7 +199,8 @@ watch(route, () => {
...
@@ -196,7 +199,8 @@ watch(route, () => {
.left-top
{
.left-top
{
display
:
flex
;
display
:
flex
;
height
:
auto
;
/* 取消固定高度,改为内容自适应 */
height
:
auto
;
/* 取消固定高度,改为内容自适应 */
}
}
/* 通用卡片样式 */
/* 通用卡片样式 */
...
@@ -211,7 +215,8 @@ watch(route, () => {
...
@@ -211,7 +215,8 @@ watch(route, () => {
/* 用户信息卡片 */
/* 用户信息卡片 */
.region-overview
{
.region-overview
{
flex
:
1
;
flex
:
1
;
min-width
:
200px
;
/* 确保最小宽度 */
min-width
:
200px
;
/* 确保最小宽度 */
}
}
/* 用户信息布局 */
/* 用户信息布局 */
...
@@ -233,8 +238,9 @@ watch(route, () => {
...
@@ -233,8 +238,9 @@ watch(route, () => {
display
:
flex
;
display
:
flex
;
align-items
:
center
;
align-items
:
center
;
justify-content
:
center
;
justify-content
:
center
;
min-width
:
150px
;
/* 确保最小宽度 */
min-width
:
150px
;
background-color
:
rgba
(
100
,
149
,
237
,
0.30
);
/* 确保最小宽度 */
background-color
:
rgba
(
100
,
149
,
237
,
0.30
);
}
}
...
@@ -243,12 +249,27 @@ watch(route, () => {
...
@@ -243,12 +249,27 @@ watch(route, () => {
}
}
@keyframes
infiniteRotate
{
@keyframes
infiniteRotate
{
0
%
{
transform
:
rotate
(
0deg
);
}
0
%
{
25
%
{
transform
:
rotate
(
45deg
);
}
transform
:
rotate
(
0deg
);
50
%
{
transform
:
rotate
(
0deg
);
}
}
75
%
{
transform
:
rotate
(
-45deg
);
}
100
%
{
transform
:
rotate
(
0deg
);
}
25
%
{
transform
:
rotate
(
45deg
);
}
50
%
{
transform
:
rotate
(
0deg
);
}
75
%
{
transform
:
rotate
(
-45deg
);
}
100
%
{
transform
:
rotate
(
0deg
);
}
}
}
.region-map
span
{
.region-map
span
{
margin-left
:
0.5rem
;
margin-left
:
0.5rem
;
font-weight
:
500
;
font-weight
:
500
;
...
@@ -273,7 +294,8 @@ watch(route, () => {
...
@@ -273,7 +294,8 @@ watch(route, () => {
}
}
.card-tong-large
{
.card-tong-large
{
flex
:
2
;
/* 第三个方块宽度是其他两个的两倍 */
flex
:
2
;
/* 第三个方块宽度是其他两个的两倍 */
}
}
/* 响应式适配 */
/* 响应式适配 */
...
@@ -282,7 +304,8 @@ watch(route, () => {
...
@@ -282,7 +304,8 @@ watch(route, () => {
flex-direction
:
column
;
flex-direction
:
column
;
}
}
.region-overview
,
.region-map
{
.region-overview
,
.region-map
{
width
:
100%
;
width
:
100%
;
flex
:
none
;
flex
:
none
;
}
}
...
@@ -295,7 +318,8 @@ watch(route, () => {
...
@@ -295,7 +318,8 @@ watch(route, () => {
.card-tong-large
{
.card-tong-large
{
flex
:
none
;
flex
:
none
;
height
:
150px
;
/* 在移动端保持高度 */
height
:
150px
;
/* 在移动端保持高度 */
}
}
}
}
</
style
>
</
style
>
\ No newline at end of file
src/views/login/index.vue
浏览文件 @
e79e30ac
...
@@ -18,33 +18,15 @@
...
@@ -18,33 +18,15 @@
<h2
class=
"welcome-text"
>
欢迎回来
</h2>
<h2
class=
"welcome-text"
>
欢迎回来
</h2>
<p
class=
"login-desc"
>
请输入您的账号和密码登录
</p>
<p
class=
"login-desc"
>
请输入您的账号和密码登录
</p>
<el-form
<el-form
ref=
"formref"
:model=
"form"
:rules=
"rules"
class=
"login-form"
>
ref=
"formref"
:model=
"form"
:rules=
"rules"
class=
"login-form"
>
<el-form-item
prop=
"phone"
>
<el-form-item
prop=
"phone"
>
<el-input
<el-input
v-model=
"form.phone"
placeholder=
"输入手机号码"
prefix-icon=
"Phone"
clearable
class=
"custom-input"
v-model=
"form.phone"
@
keyup
.
enter=
"commit"
/>
placeholder=
"输入手机号码"
prefix-icon=
"Phone"
clearable
class=
"custom-input"
@
keyup
.
enter=
"commit"
/>
</el-form-item>
</el-form-item>
<el-form-item
prop=
"password"
>
<el-form-item
prop=
"password"
>
<el-input
<el-input
v-model=
"form.password"
placeholder=
"输入密码"
type=
"password"
prefix-icon=
"Lock"
clearable
v-model=
"form.password"
class=
"custom-input"
@
keyup
.
enter=
"commit"
/>
placeholder=
"输入密码"
type=
"password"
prefix-icon=
"Lock"
clearable
class=
"custom-input"
@
keyup
.
enter=
"commit"
/>
</el-form-item>
</el-form-item>
<div
class=
"form-options"
>
<div
class=
"form-options"
>
...
@@ -52,12 +34,7 @@
...
@@ -52,12 +34,7 @@
<el-button
type=
"text"
class=
"forgot-password"
>
忘记密码?
</el-button>
<el-button
type=
"text"
class=
"forgot-password"
>
忘记密码?
</el-button>
</div>
</div>
<el-button
<el-button
type=
"primary"
class=
"login-button"
@
click=
"commit"
:loading=
"loginLoading"
>
type=
"primary"
class=
"login-button"
@
click=
"commit"
:loading=
"loginLoading"
>
登录
登录
</el-button>
</el-button>
</el-form>
</el-form>
...
@@ -112,14 +89,14 @@ const commit = () => {
...
@@ -112,14 +89,14 @@ const commit = () => {
console
.
log
(
res
,
'测试'
);
console
.
log
(
res
,
'测试'
);
if
(
res
.
code
===
200
)
{
if
(
res
.
code
===
200
)
{
setToken
(
res
.
data
.
token
);
setToken
(
res
.
data
.
token
);
let
{
phone
,
id
,
name
,
avatarUrl
,
role
,
status
}
=
res
.
data
.
user
;
let
{
phone
,
id
,
name
,
avatarUrl
,
role
,
status
}
=
res
.
data
.
user
;
// console.log('phone, id,name,avatarUrl ,role',useAppStoreInstance.userInfo);
// console.log('phone, id,name,avatarUrl ,role',useAppStoreInstance.userInfo);
localStorage
.
setItem
(
'user'
,
JSON
.
stringify
({
phone
,
id
,
name
,
avatarUrl
,
role
,
status
}));
localStorage
.
setItem
(
'user'
,
JSON
.
stringify
({
phone
,
id
,
name
,
avatarUrl
,
role
,
status
}));
useAppStoreInstance
.
userInfo
=
(
{
phone
,
id
,
name
,
avatarUrl
,
role
,
status
})
useAppStoreInstance
.
userInfo
=
(
{
phone
,
id
,
name
,
avatarUrl
,
role
,
status
})
console
.
log
(
'phone, id,name,avatarUrl ,role'
,
useAppStoreInstance
.
userInfo
);
console
.
log
(
'phone, id,name,avatarUrl ,role'
,
useAppStoreInstance
.
userInfo
);
localStorage
.
setItem
(
'lastValidMenuPath'
,
'/home'
)
localStorage
.
setItem
(
'lastValidMenuPath'
,
'/home'
)
// localStorage.setItem('saveMenuState',JSON.stringify({lastValidMenuPath:'/home',openMenus:[true,null,null,null,null]}))
// localStorage.setItem('saveMenuState',JSON.stringify({lastValidMenuPath:'/home',openMenus:[true,null,null,null,null]}))
if
(
rememberMe
.
value
)
{
if
(
rememberMe
.
value
)
{
localStorage
.
setItem
(
'rememberedAccount'
,
form
.
phone
);
localStorage
.
setItem
(
'rememberedAccount'
,
form
.
phone
);
...
@@ -127,7 +104,7 @@ const commit = () => {
...
@@ -127,7 +104,7 @@ const commit = () => {
localStorage
.
removeItem
(
'rememberedAccount'
);
localStorage
.
removeItem
(
'rememberedAccount'
);
}
}
localStorage
.
setItem
(
'menu'
,
1
);
// 默认选中工作台
localStorage
.
setItem
(
'menu'
,
1
);
// 默认选中工作台
router
.
replace
({
path
:
'/
analysisPage
'
});
router
.
replace
({
path
:
'/
dashboard/analysis
'
});
ElMessage
.
success
(
'登录成功!'
);
ElMessage
.
success
(
'登录成功!'
);
}
else
{
}
else
{
ElMessage
.
error
(
res
.
message
||
'登录失败,请检查账号密码'
);
ElMessage
.
error
(
res
.
message
||
'登录失败,请检查账号密码'
);
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论