From 79c5d6a424c52ec50e856cdab5d98474cfd02be8 Mon Sep 17 00:00:00 2001
From: guoshilong <123456>
Date: Tue, 07 Mar 2023 17:01:40 +0800
Subject: [PATCH] 火灾管理火灾补录
---
src/components/OpenLayersMap/index.vue | 2
src/config/website.js | 2
src/views/fire/fireAdd.vue | 1
src/views/fire/fireManage.vue | 98 +++++++++++++------
src/views/system/user.vue | 34 ++++--
src/api/fire/fire.js | 10 ++
src/views/fire/fireSupplement.vue | 107 +++++++++++++-------
7 files changed, 173 insertions(+), 81 deletions(-)
diff --git a/src/api/fire/fire.js b/src/api/fire/fire.js
index 7d3ca8a..2e1ca92 100644
--- a/src/api/fire/fire.js
+++ b/src/api/fire/fire.js
@@ -12,6 +12,16 @@
})
}
+export const getAll = (params) => {
+ return request({
+ url: '/api/blade-fire/fire/all',
+ method: 'get',
+ params: {
+ ...params,
+ }
+ })
+}
+
export const getDetail = (id) => {
return request({
url: '/api/blade-fire/fire/detail',
diff --git a/src/components/OpenLayersMap/index.vue b/src/components/OpenLayersMap/index.vue
index e4b2427..77a840e 100644
--- a/src/components/OpenLayersMap/index.vue
+++ b/src/components/OpenLayersMap/index.vue
@@ -206,7 +206,7 @@
this.pointVector.getSource().addFeature(feature_Point)
let center = [Number(pointLonLat[0]), Number(pointLonLat[1])]
let view = this.map.getView()
- view.setZoom(14)
+ view.setZoom(20)
view.animate({
center: center,
duration: 5,
diff --git a/src/config/website.js b/src/config/website.js
index bb83054..8096f7a 100644
--- a/src/config/website.js
+++ b/src/config/website.js
@@ -8,7 +8,7 @@
indexTitle: 'Saber Admin',
clientId: 'saber', // 客户端id
clientSecret: 'saber_secret', // 客户端密钥
- tenantMode: true, // 是否开启租户模式
+ tenantMode: false, // 是否开启租户模式
tenantId: "000000", // 管理组租户编号
captchaMode: false, // 是否开启验证码模式
switchMode: false, // 是否开启部门切换模式
diff --git a/src/views/fire/fireAdd.vue b/src/views/fire/fireAdd.vue
index d6cd9a4..1a962b1 100644
--- a/src/views/fire/fireAdd.vue
+++ b/src/views/fire/fireAdd.vue
@@ -185,6 +185,7 @@
done();
}
},
+ //获取地图经纬度
getMapData(data){
this.form.lon = data[0][0]
this.form.lat = data[0][1]
diff --git a/src/views/fire/fireManage.vue b/src/views/fire/fireManage.vue
index 16b8d5e..cab9fa1 100644
--- a/src/views/fire/fireManage.vue
+++ b/src/views/fire/fireManage.vue
@@ -29,13 +29,17 @@
</el-button>
</template>
- <!-- <template slot-scope="{row}" slot="location">-->
- <!-- {{row.$location.split("|").join("")}}-->
- <!-- </template>-->
+ <template slot-scope="{row}" slot="level">
+ <span style="color: red" v-if="row.level == '1' ">{{row.$level}}</span>
+ <span style="color: #f65f44" v-if="row.level == '2' ">{{row.$level}}</span>
+ <span style="color: #f6a944" v-if="row.level == '3' ">{{row.$level}}</span>
+ <span style="color: #70b603" v-if="row.level == '4' ">{{row.$level}}</span>
+ <span style="color: #2cff00" v-if="row.level == '5' ">{{row.$level}}</span>
+ </template>
<template slot-scope="{type,size,row,index}" slot="menu">
<el-button icon="el-icon-edit" :size="size" :type="type" @click="goToViewDetail(row)">详 情</el-button>
- <el-button icon="el-icon-delete" :size="size" :type="type" @click="goToFireSupplement(row)">补 录</el-button>
+ <el-button icon="el-icon-delete" :size="size" :type="type" :disabled="row.supplementId !='' " @click="goToFireSupplement(row)">补 录</el-button>
</template>
</avue-crud>
</basic-container>
@@ -92,19 +96,14 @@
prop: "no",
type: "input",
search: true,
- searchSpan: 4,
+ searchSpan: 3,
},
{
- label: "行政区域",
- prop: "location",
- span: 24,
- type: "cascader",
- props: {
- label: 'title',
- value: 'key'
- },
- dicUrl: 'api/blade-system/region/lazy-tree',
- slot: true
+ label: "火灾位置",
+ prop: "address",
+ type: "input",
+ search: true,
+ searchSpan: 3,
},
{
label: "发现方式",
@@ -116,7 +115,39 @@
value: "dictKey"
},
search: true,
- searchSpan: 4,
+ searchSpan: 3,
+ },
+ {
+ label: "处置状态",
+ prop: "status",
+ type: "select",
+ dicUrl: '/api/blade-system/dict-biz/dictionary?code=fire_handle_status',
+ props: {
+ label: "dictValue",
+ value: "dictKey"
+ },
+ search: true,
+ searchSpan: 3,
+ },
+
+ {
+ label: "行政区域",
+ prop: "location",
+ span: 24,
+ type: "cascader",
+ props: {
+ label: 'title',
+ value: 'key'
+ },
+ dicUrl: 'api/blade-system/region/lazy-tree',
+ slot: true,
+ search:true,
+ hide:true,
+ searchSpan:3,
+ dicFormatter(res){
+ res.data.shift()
+ return res.data
+ }
},
{
label: "火灾等级",
@@ -129,28 +160,28 @@
},
},
{
- label: "处置状态",
- prop: "status",
- type: "select",
- dicUrl: '/api/blade-system/dict-biz/dictionary?code=fire_handle_status',
- props: {
- label: "dictValue",
- value: "dictKey"
- },
- search: true,
- searchSpan: 4,
- },
- {
label: "报警人",
prop: "caller",
type: "input",
},
{
label: "报警时间",
+ type: 'datetimerange',
+ prop:'alarmTimeRange',
+ format:'yyyy-MM-dd HH:mm:ss',
+ valueFormat:'yyyy-MM-dd HH:mm:ss',
+ addDisplay: false,
+ editDisplay: false,
+ viewDisplay: false,
+ hide: true,
+ search: true,
+ searchRange:true,
+ searchSpan: 3
+ },
+ {
+ label: "报警时间",
prop: "alarmTime",
type: "input",
- search: true,
- searchSpan: 4,
},
{
label: "火灾描述",
@@ -360,6 +391,10 @@
},
onLoad(page, params = {}) {
this.loading = true;
+ if (this.query.alarmTimeRange &&this.query.alarmTimeRange.length>0){
+ this.query.alarmTimeStart = this.query.alarmTimeRange[0]
+ this.query.alarmTimeEnd = this.query.alarmTimeRange[1]
+ }
getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
const data = res.data.data;
this.page.total = data.total;
@@ -371,6 +406,7 @@
this.selectionClear();
});
},
+ //展示详情
goToViewDetail(data) {
getSupplementDetail(data.id).then(res => {
if (res.data.code == 200) {
@@ -384,6 +420,7 @@
}
})
},
+ //跳转到火灾补录
goToFireSupplement(data) {
//要使跳转页接收到值,必须用name
this.$router.push({
@@ -391,6 +428,7 @@
params: data
})
},
+ //跳转到列表页
goToList(){
this.isDetail = !this.isDetail
}
diff --git a/src/views/fire/fireSupplement.vue b/src/views/fire/fireSupplement.vue
index 02c9089..da4b8dd 100644
--- a/src/views/fire/fireSupplement.vue
+++ b/src/views/fire/fireSupplement.vue
@@ -8,7 +8,17 @@
</div>
<el-row>
<el-col :span="12">
- <avue-form ref="form" v-model="form" :option="option"></avue-form>
+ <avue-form ref="form" v-model="form" :option="option">
+ <template slot="no">
+ <el-autocomplete class="inline-input"
+ v-model="form.no"
+ :fetch-suggestions="querySearch"
+ placeholder="请输入火灾编号"
+ :trigger-on-focus="false"
+ @select="handleSelect"
+ ></el-autocomplete>
+ </template>
+ </avue-form>
</el-col>
<el-col :span="12">
<OpenLayersMap ref="olMap" :mapLocation="mapLocation"></OpenLayersMap>
@@ -54,6 +64,7 @@
<script>
import {add} from "@/api/fireSupplement/fireSupplement";
import OpenLayersMap from "@/components/OpenLayersMap/index";
+import {getAll} from "@/api/fire/fire";
export default {
name: "fireSupplieMent",
@@ -72,10 +83,11 @@
prop: 'no',
span: 24,
type: 'input',
- disabled: true,
+ slot:true
},
{
label: "行政区域",
+ disabled:true,
prop: "location",
span: 24,
type: "cascader",
@@ -83,49 +95,19 @@
label: 'title',
value: 'key'
},
- separator: '',
- lazy: true,
- lazyLoad(node, resolve) {
- let stop_level = 2;
- let level = node.level;
- let data = node.data || {}
- let code = data.key;
- let list = [];
- let callback = () => {
- resolve((list || []).map(ele => {
- return Object.assign(ele, {
- leaf: level >= stop_level
- })
- }));
- }
- if (level == 0) {
- axios.get(`${baseUrl}00`).then(res => {
- list = res.data.data;
- callback()
- })
- } else if (level == 1) {
- axios.get(`${baseUrl}${code}`).then(res => {
- list = res.data.data;
- callback()
- })
- } else if (level == 2) {
- axios.get(`${baseUrl}${code}`).then(res => {
- list = res.data.data;
- callback()
- })
- } else {
- callback()
- }
- }
+ dicUrl: 'api/blade-system/region/lazy-tree',
+ slot: true
},
{
label: '具体地址',
+ disabled:true,
prop: 'address',
span: 24,
type: 'input'
},
{
label: "发现方式",
+ disabled:true,
prop: "findWay",
type: "select",
row: true,
@@ -142,6 +124,7 @@
},
{
label: "火灾等级",
+ disabled:true,
prop: "level",
type: "select",
row: true,
@@ -158,23 +141,27 @@
},
{
label: "发现时间",
+ disabled:true,
prop: "alarmTime",
type: "datetime",
},
{
label: '报警人',
+ disabled:true,
prop: 'caller',
span: 24,
type: 'input'
},
{
label: '火灾描述',
+ disabled:true,
prop: 'description',
span: 24,
type: 'textarea'
},
{
label: '现场图片',
+ disabled:true,
prop: 'images',
listType: 'picture-card',
type: 'upload',
@@ -253,7 +240,7 @@
},
{
label: '重伤人数',
- prop: 'seriousInjuredPerson',
+ prop: 'seriousInjuryPerson',
span: 8,
type: 'input',
append: '人'
@@ -612,7 +599,7 @@
policeResourcesForm: {},
isDetail: false,
mapLocation:{
- isDetail:false
+ isDetail:true
},
}
},
@@ -620,12 +607,16 @@
if (this.info) {
this.initDetail()
} else {
- this.form = this.$route.params
+ this.initSupplement()
}
},
methods: {
submit(form, done) {
form.fireId = this.form.id
+ if (!form.fireId){
+ this.$message.warning("请填写需要补录的火灾编号");
+ return
+ }
form.economicLoss = this.economicData
form.damageArea = this.damageAreaData
form.policeResources = this.policeResourcesData
@@ -760,10 +751,48 @@
location:[this.form.lon,this.form.lat]
}
},
+ //补录
+ initSupplement(){
+ this.form = this.$route.params
+ if (this.form.id){
+ this.option.detail = true
+ this.mapLocation = {
+ isDetail: true,
+ location:[this.form.lon,this.form.lat]
+ }
+ }
+
+ },
+ //返回列表页
goToList() {
this.isDetail = false
this.$emit('goToList')
+ },
+ //自动补全
+ querySearch(queryString, cb){
+ getAll({no:queryString}).then(res=>{
+ if (res.data.code == 200){
+ let data = res.data.data
+ data.forEach(e=>{
+ e.value = e.no
+ })
+ cb(data)
+ }
+ })
+ },
+ //选择事件
+ handleSelect(item){
+ Object.assign(this.form,item)
+ this.mapLocation = {
+ isDetail:true,
+ location:[this.form.lon,this.form.lat]
+ }
+ this.$refs.olMap.addPoint(this.mapLocation.location)
}
+ },
+ destroyed() {
+ //点击其他菜单时会关闭当前页,防止出现多个相同tab
+ this.$router.$avueRouter.closeTag("/fire/fireSupplement")
}
}
</script>
diff --git a/src/views/system/user.vue b/src/views/system/user.vue
index 5ae2fb7..c4a6914 100644
--- a/src/views/system/user.vue
+++ b/src/views/system/user.vue
@@ -303,7 +303,8 @@
required: true,
message: "请选择所属角色",
trigger: "click"
- }]
+ }],
+ display: false
},
{
label: "用户名",
@@ -374,7 +375,19 @@
required: true,
message: "请选择所属单位",
trigger: "click"
- }]
+ }],
+ display: false
+ },
+ {
+ label: "启用状态",
+ prop: "status",
+ type: "select",
+ dicUrl: '/api/blade-system/dict-biz/dictionary?code=user_status',
+ props: {
+ label: "dictValue",
+ value: "dictKey"
+ },
+ display: false
},
],
group: [
@@ -719,14 +732,6 @@
if (!website.tenantMode) {
this.initData(website.tenantId);
}
- getRoleTree(this.userInfo.tenant_id).then(res => {
- const column = this.findObject(this.option.column, "roleId");
- column.dicData = res.data.data;
- });
- getDeptTree(this.userInfo.tenant_id).then(res => {
- const column = this.findObject(this.option.column, "deptId");
- column.dicData = res.data.data;
- });
},
methods: {
nodeClick(data) {
@@ -738,10 +743,14 @@
getRoleTree(tenantId).then(res => {
const column = this.findObject(this.option.group, "roleId");
column.dicData = res.data.data;
+ const columnRole = this.findObject(this.option.column, "roleId");
+ columnRole.dicData = res.data.data;
});
getDeptTree(tenantId).then(res => {
const column = this.findObject(this.option.group, "deptId");
column.dicData = res.data.data;
+ const columnDept = this.findObject(this.option.column, "deptId");
+ columnDept.dicData = res.data.data;
});
// getPostList(tenantId).then(res => {
// const column = this.findObject(this.option.group, "postId");
@@ -974,10 +983,15 @@
const data = res.data.data;
this.page.total = data.total;
this.data = data.records;
+ this.data.forEach(e=>{
+ e.status = e.status + ""
+ })
this.loading = false;
this.selectionClear();
});
},
+
+ //下面的方法业务都不需要
platformRowUpdate(row, index, done, loading) {
updatePlatform(row.id, row.userType, row.userExt).then(() => {
this.platformOnLoad(this.platformPage);
--
Gitblit v1.9.3