Browse Source

运管立项

sy-water-data-board-ui
zth 1 month ago
parent
commit
bf86093340
  1. 6
      src/api/yg/aqrw.js
  2. 6
      src/api/yg/dike/aqrw.js
  3. 7
      src/api/yg/dike/jfgl.js
  4. 8
      src/api/yg/dikeMark.js
  5. 7
      src/api/yg/jfgl.js
  6. 8
      src/api/yg/sluiceMark.js
  7. 323
      src/layout/components/Navbar.vue
  8. 177
      src/views/dike/engineeringCondition/identificationPlate/components/statisticalChart.vue
  9. 5
      src/views/dike/engineeringCondition/identificationPlate/index.vue
  10. 22
      src/views/dike/managementGuarantee/fundGuarantee/index.vue
  11. 125
      src/views/dike/safetyManage/confirmDelimitationManage/index.vue
  12. 3
      src/views/res/safetyManage/confirmDelimitationManage/index.vue
  13. 175
      src/views/sluice/engineeringCondition/identificationPlate/components/statisticalChart.vue
  14. 3
      src/views/sluice/engineeringCondition/identificationPlate/index.vue
  15. 2
      src/views/sluice/engineeringCondition/sluiceBaseInfo/options/managementSystem.vue
  16. 2
      src/views/sluice/engineeringCondition/sluiceBaseInfo/options/managementSystemMan.vue
  17. 22
      src/views/sluice/managementGuarantee/fundGuarantee/index.vue

6
src/api/yg/aqrw.js

@ -8,6 +8,12 @@ export function getStatistics(taskId) {
method: 'get',
})
}
export function getWarn() {
return request({
url: '/aqrw/warn',
method: 'get',
})
}
// 查询水闸安全鉴定 统计 信息列表(第三个)
export function getStatisticsLevel(taskId) {

6
src/api/yg/dike/aqrw.js

@ -8,6 +8,12 @@ export function getStatistics(taskId) {
method: 'get',
})
}
export function getDfWarn() {
return request({
url: '/df/aqrw/warn',
method: 'get',
})
}
// 查询水闸安全鉴定 统计 信息列表(第三个)
export function getStatisticsLevel(taskId) {

7
src/api/yg/dike/jfgl.js

@ -51,6 +51,13 @@ export function delJfgl(id) {
})
}
export function delAllJfgl(dikeCode) {
return request({
url: '/df/jfgl/all/' + dikeCode,
method: 'delete'
})
}
// 导出经费管理
export function exportJfgl(query) {
return request({

8
src/api/yg/dikeMark.js

@ -9,6 +9,14 @@ export function listDikeMark(query) {
})
}
export function getStatistics(query) {
return request({
url: '/df/dikeMark/statistics',
method: 'post',
data: query
})
}
// 查询堤防标识标牌详细
export function getDikeMark(id) {
return request({

7
src/api/yg/jfgl.js

@ -50,6 +50,13 @@ export function delJfgl(id) {
})
}
export function delJfglAll(wagaCode) {
return request({
url: '/sz/jfgl/all/' + wagaCode,
method: 'delete'
})
}
// 导出经费管理
export function exportJfgl(query) {
return request({

8
src/api/yg/sluiceMark.js

@ -9,6 +9,14 @@ export function listSluiceMark(query) {
})
}
export function getStatistics(query) {
return request({
url: '/sz/sluiceMark/statistics',
method: 'post',
data: query
})
}
// 查询水闸标识标牌详细
export function getSluiceMark(sluiceCode) {
return request({

323
src/layout/components/Navbar.vue

@ -10,6 +10,7 @@
<!-- @toggleClick="toggleSideBar"-->
<!-- />-->
<!-- <breadcrumb id="breadcrumb-container" class="breadcrumb-container" />-->
<div class="centerTab">
<div
class="tab-item"
@ -39,7 +40,56 @@
<!-- <size-select id="size-select" class="right-menu-item hover-effect" />-->
<!-- </el-tooltip>-->
</template>
<div class="notification-bell">
<el-popover
placement="bottom"
width="380"
trigger="click"
popper-class="notification-popover"
@show="handlePopoverShow"
>
<div class="notification-header">
<span class="notification-title">消息通知</span>
<div class="notification-actions">
</div>
</div>
<el-tabs v-model="activeTab" @tab-click="handleTabClick" class="notification-tabs">
<el-tab-pane label="水闸安全鉴定预警" name="sluice"></el-tab-pane>
<el-tab-pane label="堤防安全鉴定预警" name="dike"></el-tab-pane>
</el-tabs>
<div class="notification-content">
<el-empty v-if="currentTabData.length === 0" description="暂无数据"></el-empty>
<div v-else>
<div v-for="(notif, index) in currentTabData" :key="index" class="notification-item">
<div class="notification-item-content">
<div class="notification-item-title">
<i class="el-icon-warning-outline warning-icon"></i>
<span>{{'任务:'+ notif.taskName || '预警通知' }}</span>
</div>
<div class="notification-item-body">{{ '计划于'+notif.planCompletionTime+'完成鉴定,但还有未鉴定子任务。' }}</div>
<div class="notification-item-meta">
<span class="notification-item-time">{{ notif.createTime || '暂无时间' }}</span>
<span class="notification-item-sender">发送人: 系统</span>
</div>
</div>
<div class="notification-item-actions">
<el-button type="primary" size="mini" @click="viewMessage(notif)">查看</el-button>
</div>
</div>
</div>
</div>
<template #reference>
<div class="bell-wrapper">
<i class="el-icon-bell bell">
<span class="badge" v-if="total > 0">{{ total }}</span>
</i>
</div>
</template>
</el-popover>
</div>
<el-dropdown
class="avatar-container right-menu-item hover-effect"
trigger="click"
@ -76,13 +126,19 @@ import Screenfull from "@/components/Screenfull";
import SizeSelect from "@/components/SizeSelect";
import Search from "@/components/HeaderSearch";
import Logo from "./Sidebar/Logo";
import { getWarn } from '../../api/yg/aqrw'
import { getDfWarn } from '../../api/yg/dike/aqrw'
export default {
data() {
return {
messageData: [],
options: {
img: "",
},
activeTab: "sluice",
sluiceData: [],
dikeData: [],
loading: false
};
},
components: {
@ -124,6 +180,12 @@ export default {
});
},
},
total() {
return this.sluiceData.length + this.dikeData.length;
},
currentTabData() {
return this.activeTab === 'sluice' ? this.sluiceData : this.dikeData;
}
},
watch: {
avatar: {
@ -145,6 +207,15 @@ export default {
// getFile(this.avatar, this.options, "img");
}
}
// API
// this.initMockData();
getWarn().then(res=>{
this.sluiceData=res.data
})
getDfWarn().then(res=>{
this.dikeData=res.data
})
},
mounted() {
if (!this.selectTab) {
@ -155,6 +226,105 @@ export default {
}
},
methods: {
initMockData() {
// API
this.sluiceData = [
{
id: 1,
title: '水闸安全预警通知',
context: '某某水闸安全评级出现异常,请及时处理',
createUid: '系统管理员',
createTime: '2025-03-18 14:30',
read: false
},
{
id: 2,
title: '水闸日常检查提醒',
context: '请注意安排本周水闸安全检查工作',
createUid: '监控中心',
createTime: '2025-03-17 09:15',
read: false
}
];
this.dikeData = [
{
id: 3,
title: '堤防安全预警通知',
context: '东部堤防区域检测到安全隐患,请立即排查',
createUid: '防汛办',
createTime: '2025-03-19 10:20',
read: false
}
];
},
handlePopoverShow() {
//
this.fetchNotificationData();
},
fetchNotificationData() {
// APIAPI
this.loading = true;
//
setTimeout(() => {
// API
// this.$http.get('/api/notifications/sluice').then(res => {
// this.sluiceData = res.data;
// });
// this.$http.get('/api/notifications/dike').then(res => {
// this.dikeData = res.data;
// });
this.loading = false;
}, 500);
},
handleTabClick(tab) {
//
console.log('Switched to tab:', tab.name);
},
markAllAsRead() {
//
if (this.activeTab === 'sluice') {
this.sluiceData.forEach(item => {
item.read = true;
});
} else {
this.dikeData.forEach(item => {
item.read = true;
});
}
// API
// this.$http.post('/api/notifications/read-all', { type: this.activeTab });
this.$message.success('已全部标记为已读');
},
viewAllMessages() {
//
this.$router.push('/message/records');
},
viewMessage(notif) {
//
notif.read = true;
//
if (this.activeTab === 'sluice') {
sessionStorage.setItem("topTab", 'sluice');
this.$store.dispatch("changeTopTab",'sluice');
this.$router.replace({
path: '/sluice/safetyManage/safetyAppraisal/task'
});
} else {
sessionStorage.setItem("topTab", 'dike');
this.$store.dispatch("changeTopTab",'dike');
this.$router.replace({
path: '/dike/safetyManage/safetyAppraisal/task'
});
}
},
handleSelectTab(e) {
if (e.label === "一张图") {
this.handleJump(e.value);
@ -201,7 +371,6 @@ export default {
},
});
}
else {
this.$router.replace({
path: "/",
@ -228,7 +397,7 @@ export default {
location.href = "/";
});
});
},
}
},
};
</script>
@ -299,11 +468,45 @@ export default {
}
}
.notification-bell {
margin-right: 20px;
display: flex;
align-items: center;
.bell-wrapper {
position: relative;
cursor: pointer;
}
.bell {
font-size: 22px;
color: #fff;
position: relative;
display: flex;
align-items: center;
}
.badge {
position: absolute;
top: -10px;
right: -10px;
background-color: #FF4D4F;
color: white;
border-radius: 50%;
min-width: 16px;
height: 16px;
padding: 0 4px;
font-size: 12px;
display: flex;
align-items: center;
justify-content: center;
}
}
.right-menu {
// float: right;
// height: 100%;
// line-height: 70px;
// line-height: 50px;
display: flex;
align-items: center;
height: 100%;
&:focus {
outline: none;
@ -312,7 +515,7 @@ export default {
.right-menu-item {
display: inline-block;
padding: 0 8px;
height: 100%;
height: 50%;
font-size: 18px;
color: #5a5e66;
vertical-align: text-bottom;
@ -368,3 +571,107 @@ export default {
transform: translate(-50%, -50%);
}
</style>
<style>
/* Global styles for notification popover */
.notification-popover {
padding: 0 !important;
border-radius: 4px;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15) !important;
}
.notification-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 12px 16px;
border-bottom: 1px solid #ebeef5;
background-color: #f5f7fa;
}
.notification-title {
font-weight: bold;
font-size: 16px;
color: #303133;
}
.notification-actions {
display: flex;
gap: 12px;
}
.action-link {
font-size: 13px;
color: #409EFF;
text-decoration: none;
}
.action-link:hover {
color: #66b1ff;
text-decoration: underline;
}
.notification-tabs {
padding: 0 16px;
margin-top: 8px;
}
.notification-content {
max-height: 300px;
overflow-y: auto;
padding: 0 16px 16px;
}
.notification-item {
display: flex;
padding: 12px 0;
border-bottom: 1px solid #ebeef5;
align-items: center;
justify-content: space-between;
}
.notification-item:last-child {
border-bottom: none;
}
.notification-item-content {
flex: 1;
min-width: 0;
}
.notification-item-title {
font-weight: bold;
margin-bottom: 4px;
display: flex;
align-items: center;
}
.warning-icon {
color: #E6A23C;
margin-right: 6px;
}
.notification-item-body {
color: #606266;
font-size: 13px;
margin-bottom: 6px;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
}
.notification-item-meta {
display: flex;
font-size: 12px;
color: #909399;
}
.notification-item-time {
margin-right: 10px;
}
.notification-item-actions {
margin-left: 16px;
}
</style>

177
src/views/dike/engineeringCondition/identificationPlate/components/statisticalChart.vue

@ -0,0 +1,177 @@
<template>
<div class="chart-container" ref="chartContainer"></div>
</template>
<script>
import * as echarts from 'echarts';
import {getStatistics} from '@/api/yg/dikeMark'
export default {
name: 'ProjectQuantityChart',
props: {
// props便
chartData: {
type: Array,
default: () => [
{ city: '广州市', value: 2 },
{ city: '珠海市', value: 1 }
]
}
},
data() {
return {
chart: null,
queryParams: {
pageNum: 1,
pageSize: 10,
ids: null,
data: {
dikeName: null,
markName: null,
type: null,
markType: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sortBy: "desc",
},
},
};
},
mounted() {
getStatistics(this.queryParams).then(res=>{
console.log(666,res)
this.initChart(res);
})
// 使
window.addEventListener('resize', this.resizeChart);
},
beforeDestroy() {
//
window.removeEventListener('resize', this.resizeChart);
//
if (this.chart) {
this.chart.dispose();
this.chart = null;
}
},
methods: {
initChart(res) {
//
this.chart = echarts.init(this.$refs.chartContainer);
this.updateChart(res);
},
updateChart(res) {
//
// const cities = this.chartData.map(item => item.city);
// const values = this.chartData.map(item => item.value);
const entries = Object.entries(res);
const cities = entries.map(([key, value]) => {
return key
});
const values = entries.map(([key, value]) => {
return value
});
//
const option = {
title: {
text: '标识标牌数量统计图',
left: 'center'
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
xAxis: {
type: 'category',
data: cities,
axisLine: {
lineStyle: {
color: '#999'
}
},
axisLabel: {
color: '#333'
}
},
yAxis: {
type: 'value',
name: '数量(个)',
nameTextStyle: {
color: '#333'
},
min: 0,
max: Math.ceil(Math.max(...values) * 1.2), //
interval: 1,
axisLine: {
show: true,
lineStyle: {
color: '#999'
}
},
axisLabel: {
color: '#333'
},
splitLine: {
lineStyle: {
color: '#eee',
type: 'solid'
}
}
},
series: [{
name: '数量',
type: 'bar',
data: values,
itemStyle: {
color: '#45B7AF' // 使绿
},
barWidth: '40%',
label: {
show: false
}
}],
color: ['#45B7AF']
};
// 使
this.chart.setOption(option);
},
resizeChart() {
if (this.chart) {
this.chart.resize();
}
}
},
watch: {
//
chartData: {
handler() {
this.$nextTick(() => {
this.updateChart();
});
},
deep: true
}
}
};
</script>
<style scoped>
.chart-container {
width: 100%;
height: 400px;
}
</style>

5
src/views/dike/engineeringCondition/identificationPlate/index.vue

@ -1,6 +1,8 @@
<template>
<div class="app-container">
<!-- 面包屑 -->
<statistical-chart/>
<el-breadcrumb separator="/" style="margin-bottom: 20px">
<el-breadcrumb-item
v-for="(item, index) in routeList"
@ -431,12 +433,13 @@ import { regionData, codeToText, TextToCode } from "element-china-area-data";
import linkDike from "@/components/linkNameSelect/linkDike.vue";
// import Vue from "vue";
import { cascaderLazyLoad } from "@/utils/elUtils";
import statisticalChart from "./components/statisticalChart.vue"
export default {
name: "DikeMark",
components: {
markForm,
linkDike,
statisticalChart
},
data() {
return {

22
src/views/dike/managementGuarantee/fundGuarantee/index.vue

@ -16,7 +16,7 @@
:inline="true"
v-show="showSearch"
>
<el-form-item label="堤防名称" prop="dikeName">
<el-form-item label="堤防名称1" prop="dikeName">
<el-input
v-model="queryParams.data.dikeName"
placeholder="请输入堤防名称"
@ -227,7 +227,7 @@
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
@click="handleDeleteByCode(scope.row)"
v-hasPermi="['df:jfgl:remove']"
>删除</el-button
>
@ -320,6 +320,7 @@ import {
addJfgl,
updateJfgl,
exportJfgl,
delAllJfgl
} from "@/api/yg/dike/jfgl";
import { listDagl } from "@/api/yg/dike/dagl";
// import { listJbxx } from "@/api/yg/jbxx";
@ -563,6 +564,23 @@ export default {
this.$message.warning("请选择要删除的数据!!");
}
},
handleDeleteByCode(row){
if (row.dikeCode){
this.$confirm("是否删除选中的数据?", "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(function () {
return delAllJfgl(row.dikeCode);
})
.then(() => {
this.getList();
this.msgSuccess("删除成功");
})
.catch(function () {});
}
}
},
};
</script>

125
src/views/dike/safetyManage/confirmDelimitationManage/index.vue

@ -214,7 +214,7 @@
@close="closeView"
>
<el-row :gutter="15">
<el-form ref="form" :model="form" :rules="rules" label-width="96px">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<!-- <el-form-item label="堤防id" prop="dikeId">
<el-input v-model="form.dikeId" placeholder="请输入堤防id" />
</el-form-item> -->
@ -294,6 +294,20 @@
placeholder="请输入保护范围"
/>
</el-form-item>
<el-col :span="12">
<el-form-item label="管理范围标绘" prop="allLatitudeLongitudeList">
<el-button type="primary" style="width: 150px" @click="openDraw"
>管理范围标绘</el-button
>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="保护范围标绘" prop="allLatitudeLongitudeListV2">
<el-button type="primary" style="width: 150px" @click="openDraw1"
>保护范围标绘</el-button
>
</el-form-item>
</el-col>
</el-form>
</el-row>
<div slot="footer" class="dialog-footer">
@ -379,11 +393,45 @@
<!-- <el-button @click="cancel"> </el-button> -->
</div>
</el-dialog>
<el-dialog
:title="drawTitle"
:visible.sync="drawOpen"
custom-class="draw"
width="1500px"
append-to-body
:close-on-click-modal="false"
>
<mapEle
v-if="drawOpen"
:potMsg="potMsg"
:lineMsg="lineMsg"
:allDrawMsg="allDrawMsg"
@getMapData="getMapData"
/>
</el-dialog>
<el-dialog
:title="drawTitle1"
:visible.sync="drawOpen1"
custom-class="draw"
width="1500px"
append-to-body
:close-on-click-modal="false"
>
<mapEle
v-if="drawOpen1"
:potMsg="potMsg1"
:lineMsg="lineMsg1"
:allDrawMsg="allDrawMsg1"
@getMapData="getMapData1"
/>
</el-dialog>
</div>
</div>
</template>
<script>
import {
listJbxx,
getJbxx,
@ -403,15 +451,28 @@ import {
import { regionData, codeToText, TextToCode } from "element-china-area-data";
import { getToken } from "@/utils/auth";
import { getFileStream } from "@/api/system/upload";
import mapEle from "@/components/map/index.vue";
export default {
components: { mapEle },
name: "qqhj",
data() {
return {
potMsg: [],
lineMsg: [],
allDrawMsg: [],
potMsg1: [],
lineMsg1: [],
allDrawMsg1: [],
//
loading: true,
//
ids: [],
drawTitle: "",
drawTitle1: "",
drawOpen: false,
drawOpen1: false,
//
single: true,
//
@ -570,6 +631,42 @@ export default {
});
},
methods: {
getMapData(potMsg, lineMsg, allDrawMsg) {
this.potMsg = potMsg;
this.lineMsg = lineMsg;
this.allDrawMsg = allDrawMsg;
console.log("地图坐标数据", this.potMsg, this.lineMsg, this.allDrawMsg);
this.form.pointLatitudeLongitudeList =
this.potMsg.length > 0 ? JSON.stringify(this.potMsg) : null;
this.form.lineLatitudeLongitudeList =
this.lineMsg.length > 0 ? JSON.stringify(this.lineMsg) : null;
this.form.allLatitudeLongitudeList =
this.allDrawMsg.length > 0 ? JSON.stringify(this.allDrawMsg) : null;
this.$refs.form.validateField("allLatitudeLongitudeList");
this.drawOpen = false;
},
getMapData1(potMsg, lineMsg, allDrawMsg) {
this.potMsg1 = potMsg;
this.lineMsg1 = lineMsg;
this.allDrawMsg1 = allDrawMsg;
console.log("地图坐标数据", this.potMsg1, this.lineMsg1, this.allDrawMsg1);
this.form.pointLatitudeLongitudeListV2 =
this.potMsg1.length > 0 ? JSON.stringify(this.potMsg1) : null;
this.form.lineLatitudeLongitudeListV2 =
this.lineMsg1.length > 0 ? JSON.stringify(this.lineMsg1) : null;
this.form.allLatitudeLongitudeListV2 =
this.allDrawMsg1.length > 0 ? JSON.stringify(this.allDrawMsg1) : null;
this.$refs.form.validateField("allLatitudeLongitudeListV2");
this.drawOpen1 = false;
},
openDraw() {
this.drawTitle = "管理范围标绘";
this.drawOpen = true;
},
openDraw1() {
this.drawTitle1 = "保护范围标绘";
this.drawOpen1 = true;
},
closeView() {
this.fileList = [];
this.form = {};
@ -581,6 +678,12 @@ export default {
listQqhj(this.conQueryParams).then((res) => {
// console.log(res);
if (res.records[0]) {
this.potMsg = [];
this.lineMsg = [];
this.allDrawMsg = [];
this.potMsg1 = [];
this.lineMsg1 = [];
this.allDrawMsg1 = [];
this.viewMsg = res.records[0];
}
this.viewOpen = true;
@ -594,10 +697,30 @@ export default {
listQqhj(this.conQueryParams).then((res) => {
// console.log(res);
if (res.records[0]) {
this.form = res.records[0];
if (this.form.certificateTitle) {
this.fileList = JSON.parse(this.form.certificateTitle);
}
if (this.form.pointLatitudeLongitudeList) {
this.potMsg = JSON.parse(this.form.pointLatitudeLongitudeList);
}
if (this.form.lineLatitudeLongitudeList) {
this.lineMsg = JSON.parse(this.form.lineLatitudeLongitudeList);
}
if (this.form.allLatitudeLongitudeList) {
this.allDrawMsg = JSON.parse(this.form.allLatitudeLongitudeList);
}
console.log(this.potMsg,'potMsg')
if (this.form.pointLatitudeLongitudeListV2) {
this.potMsg1 = JSON.parse(this.form.pointLatitudeLongitudeListV2);
}
if (this.form.lineLatitudeLongitudeListV2) {
this.lineMsg1 = JSON.parse(this.form.lineLatitudeLongitudeListV2);
}
if (this.form.allLatitudeLongitudeListV2) {
this.allDrawMsg1 = JSON.parse(this.form.allLatitudeLongitudeListV2);
}
}
this.open = true;
this.title = "确权划界信息";

3
src/views/res/safetyManage/confirmDelimitationManage/index.vue

@ -680,6 +680,9 @@ export default {
this.potMsg = [];
this.lineMsg = [];
this.allDrawMsg = [];
this.potMsg1 = [];
this.lineMsg1 = [];
this.allDrawMsg1 = [];
this.viewMsg = res.records[0];
}
this.viewOpen = true;

175
src/views/sluice/engineeringCondition/identificationPlate/components/statisticalChart.vue

@ -0,0 +1,175 @@
<template>
<div class="chart-container" ref="chartContainer"></div>
</template>
<script>
import * as echarts from 'echarts';
import {getStatistics} from '@/api/yg/sluiceMark'
export default {
name: 'ProjectQuantityChart',
props: {
// props便
chartData: {
type: Array,
default: () => [
{ city: '广州市', value: 2 },
{ city: '珠海市', value: 1 }
]
}
},
data() {
return {
chart: null,
queryParams: {
pageNum: 1,
pageSize: 10,
ids: null,
data: {
wagaName: null,
markName: null,
type: null,
markType: null,
},
//
params: {
//
orderBy: "create_time",
// descasc
sortBy: "desc",
},
},
};
},
mounted() {
getStatistics(this.queryParams).then(res=>{
console.log(666,res)
this.initChart(res);
})
// 使
window.addEventListener('resize', this.resizeChart);
},
beforeDestroy() {
//
window.removeEventListener('resize', this.resizeChart);
//
if (this.chart) {
this.chart.dispose();
this.chart = null;
}
},
methods: {
initChart(res) {
//
this.chart = echarts.init(this.$refs.chartContainer);
this.updateChart(res);
},
updateChart(res) {
//
const entries = Object.entries(res);
const cities = entries.map(([key, value]) => {
return key
});
const values = entries.map(([key, value]) => {
return value
});
//
const option = {
title: {
text: '标识标牌数量统计图',
left: 'center'
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true
},
xAxis: {
type: 'category',
data: cities,
axisLine: {
lineStyle: {
color: '#999'
}
},
axisLabel: {
color: '#333'
}
},
yAxis: {
type: 'value',
name: '数量(个)',
nameTextStyle: {
color: '#333'
},
min: 0,
max: Math.ceil(Math.max(...values) * 1.2), //
axisLine: {
show: true,
lineStyle: {
color: '#999'
}
},
axisLabel: {
color: '#333'
},
splitLine: {
lineStyle: {
color: '#eee',
type: 'solid'
}
}
},
series: [{
name: '工程数量',
type: 'bar',
data: values,
itemStyle: {
color: '#45B7AF' // 使绿
},
barWidth: '40%',
label: {
show: false
}
}],
color: ['#45B7AF']
};
// 使
this.chart.setOption(option);
},
resizeChart() {
if (this.chart) {
this.chart.resize();
}
}
},
watch: {
//
chartData: {
handler() {
this.$nextTick(() => {
this.updateChart();
});
},
deep: true
}
}
};
</script>
<style scoped>
.chart-container {
width: 100%;
height: 400px;
}
</style>

3
src/views/sluice/engineeringCondition/identificationPlate/index.vue

@ -1,5 +1,6 @@
<template>
<div class="app-container">
<statistical-chart/>
<!-- 面包屑 -->
<el-breadcrumb separator="/" style="margin-bottom: 20px">
<el-breadcrumb-item
@ -431,10 +432,12 @@ import { regionData, codeToText, TextToCode } from "element-china-area-data";
import linkSluice from "@/components/linkNameSelect/linkSluice.vue";
// import Vue from "vue";
import { cascaderLazyLoad } from "@/utils/elUtils";
import statisticalChart from "./components/statisticalChart.vue";
export default {
name: "SluiceMark",
components: {
statisticalChart,
markForm,
linkSluice,
},

2
src/views/sluice/engineeringCondition/sluiceBaseInfo/options/managementSystem.vue

@ -1,7 +1,7 @@
<template>
<div class="app-container">
<div class="listTitle">
<span>责人</span>
<span></span>
<!-- <span class="addBtn" @click="handleAdd('0')">
<i class="el-icon-plus"></i>
添加

2
src/views/sluice/engineeringCondition/sluiceBaseInfo/options/managementSystemMan.vue

@ -46,7 +46,7 @@
<el-table-column label="水闸名称" align="center" prop="wagaName" min-width="120"/>
<!-- <el-table-column label="水闸代码" align="center" prop="wagaCode" min-width="120"/>-->
<el-table-column label="账户或手机号" align="center" prop="phone" min-width="120"/>
<el-table-column label="账户或手机号" align="center" prop="phone" min-width="120"/>
<el-table-column label="单位" align="center" prop="department" min-width="120"/>
<el-table-column label="人员名称" align="center" prop="personName" min-width="120"/>
<el-table-column label="单位类型" align="center" prop="personType" :formatter="personTypeFormat" min-width="120"/>

22
src/views/sluice/managementGuarantee/fundGuarantee/index.vue

@ -206,7 +206,7 @@
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
@click="handleDeleteByCode(scope.row)"
v-hasPermi="['sz:jfgl:remove']"
>删除</el-button
>
@ -310,6 +310,7 @@ import {
addJfgl,
updateJfgl,
exportJfgl,
delJfglAll
} from "@/api/yg/jfgl";
// import { listJbxx } from "@/api/yg/jbxx";
import personnelExpenses from "./components/personnelExpenses.vue";
@ -551,6 +552,25 @@ export default {
this.$message.warning("请选择要删除的数据!!");
}
},
handleDeleteByCode(row) {
if (row.wagaCode) {
this.$confirm("是否删除选中的数据?", "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(function () {
return delJfglAll(row.wagaCode);
})
.then(() => {
this.getList();
this.msgSuccess("删除成功");
})
.catch(function () {});
} else {
this.$message.warning("请选择要删除的数据!!");
}
},
},
};
</script>

Loading…
Cancel
Save