代码提交
This commit is contained in:
parent
70db821295
commit
262ec2866e
|
@ -28,7 +28,8 @@
|
|||
"vue-router": "^3.0.1",
|
||||
"vue2-scale-box": "^0.1.4",
|
||||
"vuedraggable": "2.24.3",
|
||||
"vuex": "3.0.1"
|
||||
"vuex": "3.0.1",
|
||||
"moment": "^2.29.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"autoprefixer": "^7.1.2",
|
||||
|
|
|
@ -88,3 +88,33 @@ export const getCompleteMonthStatus = (params) => {
|
|||
{params},
|
||||
)
|
||||
};
|
||||
//视频监控
|
||||
export const getIsImportant = (params) => {
|
||||
return axios.get('api/ems-third-party-service/camera/isImportant',
|
||||
{params},
|
||||
)
|
||||
};
|
||||
//获取所有监控接口
|
||||
export const getAllCamera = (params) => {
|
||||
return axios.get('api/ems-third-party-service/camera/all/get',
|
||||
{params},
|
||||
)
|
||||
};
|
||||
//获取所有监控接口列表
|
||||
export const getAllCameraList = (params) => {
|
||||
return axios.get('api/ems-third-party-service/camera/all/get',
|
||||
{params},
|
||||
)
|
||||
};
|
||||
//获取摄像头数量接口
|
||||
export const getCameraCount = (params) => {
|
||||
return axios.get('api/ems-third-party-service/camera/count',
|
||||
{params},
|
||||
)
|
||||
};
|
||||
//获取摄像头历史监控
|
||||
export const getCameraHistory = (params) => {
|
||||
return axios.get('api/ems-third-party-service/camera/history',
|
||||
{params},
|
||||
)
|
||||
};
|
||||
|
|
|
@ -38,4 +38,15 @@ export const getAttend = (params) => {
|
|||
{params},
|
||||
)
|
||||
};
|
||||
|
||||
//站班会记录
|
||||
export const getRecentMeeting = (params) => {
|
||||
return axios.get('api/ems-third-party-service/project/recentMeeting',
|
||||
{params},
|
||||
)
|
||||
};
|
||||
//站班会统计
|
||||
export const getMonthCensus = (params) => {
|
||||
return axios.get('api/ems-third-party-service/project/monthCensus',
|
||||
{params},
|
||||
)
|
||||
};
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
height="100%"
|
||||
:extensionFun="extensionFun"
|
||||
></Chart>
|
||||
<div class="lineBox"></div>
|
||||
<!-- <div class="lineBox"></div> -->
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
|
@ -53,7 +53,11 @@ export default {
|
|||
yAxisPadding: {
|
||||
type: Array,
|
||||
default: null
|
||||
}
|
||||
},
|
||||
radarList:{
|
||||
type: Array,
|
||||
default: null
|
||||
} //父传子的数组
|
||||
},
|
||||
|
||||
components: {
|
||||
|
@ -69,7 +73,13 @@ export default {
|
|||
|
||||
watch: {
|
||||
// 监听父组件中的数据变化,重新触发Echarts
|
||||
chartData: {
|
||||
// chartData: {
|
||||
// deep: true,
|
||||
// handler () {
|
||||
// this.resetOption()
|
||||
// }
|
||||
// },
|
||||
radarList:{
|
||||
deep: true,
|
||||
handler () {
|
||||
this.resetOption()
|
||||
|
@ -100,6 +110,12 @@ export default {
|
|||
}
|
||||
},
|
||||
option () {
|
||||
let month = [];
|
||||
let number = [];
|
||||
this.radarList.forEach((item,index) => {
|
||||
month.push(item.month + '月')
|
||||
number.push(item.number)
|
||||
});
|
||||
const self = this
|
||||
return {
|
||||
title: {
|
||||
|
@ -119,10 +135,10 @@ export default {
|
|||
}
|
||||
},
|
||||
grid: {
|
||||
top: '121',
|
||||
top: '80',
|
||||
left: '37',
|
||||
right: '31',
|
||||
bottom: '46',
|
||||
bottom: '20',
|
||||
containLabel: true
|
||||
},
|
||||
xAxis: {
|
||||
|
@ -130,7 +146,7 @@ export default {
|
|||
// x轴线的颜色以及宽度
|
||||
show: true,
|
||||
lineStyle: {
|
||||
color: '#ffff',
|
||||
color: '#fff',
|
||||
height: 0
|
||||
}
|
||||
},
|
||||
|
@ -146,7 +162,7 @@ export default {
|
|||
},
|
||||
triggerEvent: true,
|
||||
type: 'category',
|
||||
data: this.xAxisData
|
||||
data: month
|
||||
},
|
||||
yAxis: {
|
||||
name: '次数',
|
||||
|
@ -183,7 +199,7 @@ export default {
|
|||
series: [
|
||||
{
|
||||
name:'检查次数',
|
||||
data: this.chartData,
|
||||
data: number,
|
||||
type: 'bar',
|
||||
barWidth:10,
|
||||
color:'#0DFFFF'
|
||||
|
|
|
@ -89,6 +89,10 @@
|
|||
var arr = ['middleLost', 0.6, val1data2, '今日完成进度']
|
||||
// 绘制图表
|
||||
myChart.setOption({
|
||||
tooltip:{
|
||||
trigger:'item',
|
||||
formatter: '{b}:{c}',
|
||||
},
|
||||
graphic: {
|
||||
elements: [{
|
||||
type: 'image',//需要填充图片,配置image,如果不需要图片可以配置其他的, text, circle, sector, ring, polygon, polyline, rect, line, bezierCurve, arc, group,
|
||||
|
|
|
@ -79,6 +79,10 @@ export default {
|
|||
var arr = ['middleLost', 0.6, val1data2, '今日完成进度']
|
||||
// 绘制图表
|
||||
myChart.setOption({
|
||||
tooltip:{
|
||||
trigger:'item',
|
||||
formatter: '{b}:{c}%',
|
||||
},
|
||||
graphic: {
|
||||
elements: [{
|
||||
type: 'image',//需要填充图片,配置image,如果不需要图片可以配置其他的, text, circle, sector, ring, polygon, polyline, rect, line, bezierCurve, arc, group,
|
||||
|
|
|
@ -72,6 +72,10 @@ export default {
|
|||
var arr = ["middleLost", 0.6, val1data2, "今日完成进度"];
|
||||
// 绘制图表
|
||||
myChart.setOption({
|
||||
tooltip:{
|
||||
trigger:'item',
|
||||
formatter: '{b}:{c}%',
|
||||
},
|
||||
series: [
|
||||
{
|
||||
type: "pie",
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
<div class="jsBox">
|
||||
<div class="bogJs" v-for="(item, i) in pieData" :key="i">
|
||||
<div class="jsChild">
|
||||
<span :style="item.color"></span>
|
||||
<span :style="{'background':item.colorList}"></span>
|
||||
<!-- <span :background="item.color"></span> -->
|
||||
<span>{{item.groupName}}</span>
|
||||
</div>
|
||||
|
@ -58,10 +58,11 @@ export default {
|
|||
totalPer:0,
|
||||
pieDataNew:[],
|
||||
color:['background-color:#00B3FF','background-color:#F1E453','background-color:#F85B60','background-color:#00A572', 'background-color:#008AA4', 'background-color:#7968D9', 'background-color:#C7A73E'],
|
||||
colorList:['#00B3FF','#F1E453','#F85B60','#00A572', '#008AA4', '#7968D9', '#C7A73E'],
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.initCharts();
|
||||
// this.initCharts();
|
||||
},
|
||||
watch: {
|
||||
// 监听父组件中的数据变化,重新触发Echarts
|
||||
|
@ -74,10 +75,8 @@ export default {
|
|||
pieData: {
|
||||
deep: true,
|
||||
handler(newVal) {
|
||||
console.log(newVal,'==============');
|
||||
// this.initCharts(newVal)
|
||||
this.changeNewVal(newVal)
|
||||
|
||||
this.initCharts(newVal)
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -85,21 +84,74 @@ export default {
|
|||
methods: {
|
||||
//获取人员数据
|
||||
changeNewVal(newVal){
|
||||
console.log("newVal",newVal)
|
||||
this.pieDataNew = newVal
|
||||
// var pieDataN = []
|
||||
newVal.map((item,index) => {
|
||||
this.totalPer+=item.number
|
||||
console.log("this.totalPer",this.totalPer)
|
||||
this.color.forEach((items,indexs) => {
|
||||
this.colorList.forEach((items,indexs) => {
|
||||
if(index==indexs){
|
||||
return item.color = items
|
||||
return item.colorList = items
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
initCharts() {
|
||||
initCharts(dataList) {
|
||||
let series = [];
|
||||
let serItem={}
|
||||
dataList.forEach((item,index) => {
|
||||
serItem={}
|
||||
serItem={
|
||||
name: item.groupName,
|
||||
type: 'pie',
|
||||
clockWise: true,
|
||||
hoverAnimation: false,
|
||||
radius: [80-(index*10), 82-(index*10)],
|
||||
center: ['50%', '50%'],
|
||||
itemStyle: {
|
||||
normal: {
|
||||
label: {
|
||||
show: false
|
||||
},
|
||||
labelLine: {
|
||||
show: false,
|
||||
length: 100,
|
||||
smooth: 0.5
|
||||
},
|
||||
borderWidth: 3,
|
||||
shadowBlur: 40,
|
||||
borderColor: item.colorList,
|
||||
shadowColor: 'rgba(0, 0, 0, 0)' //边框阴影
|
||||
}
|
||||
},
|
||||
data: [ {
|
||||
value: item.number,
|
||||
}, {
|
||||
value: item.number + 5,
|
||||
// name: '',
|
||||
itemStyle: {
|
||||
normal: {
|
||||
label: {
|
||||
show: false,
|
||||
position: "center"
|
||||
},
|
||||
labelLine: {
|
||||
show: false
|
||||
},
|
||||
color: "rgb(8,76,71)",
|
||||
borderWidth: 0
|
||||
},
|
||||
emphasis: {
|
||||
color: "#104841a3",
|
||||
borderColor: "#00b3ff",
|
||||
borderWidth: 0
|
||||
}
|
||||
}
|
||||
}]
|
||||
},
|
||||
series.push(serItem)
|
||||
});
|
||||
let myChart = this.$echarts.init(this.$refs.chart);
|
||||
var placeHolderStyle = {
|
||||
normal: {
|
||||
|
@ -121,103 +173,110 @@ export default {
|
|||
};
|
||||
// 绘制图表
|
||||
myChart.setOption({
|
||||
series: [
|
||||
{
|
||||
name: '值',
|
||||
type: 'pie',
|
||||
clockWise: true,
|
||||
hoverAnimation: false,
|
||||
radius: ['92%', '97%'],
|
||||
center: ['50%', '50%'],
|
||||
itemStyle: {
|
||||
normal: {
|
||||
label: {
|
||||
show: false
|
||||
},
|
||||
labelLine: {
|
||||
show: false,
|
||||
length: 100,
|
||||
smooth: 0.5
|
||||
},
|
||||
borderWidth: 5,
|
||||
shadowBlur: 40,
|
||||
borderColor: "#00B3FF",
|
||||
shadowColor: 'rgba(0, 0, 0, 0)' //边框阴影
|
||||
}
|
||||
},
|
||||
data: [{
|
||||
value: 12,
|
||||
}, {
|
||||
value: 4,
|
||||
name: '',
|
||||
itemStyle: placeHolderStyle
|
||||
}]
|
||||
},
|
||||
// ------------2
|
||||
{
|
||||
name: '值',
|
||||
type: 'pie',
|
||||
clockWise: true,
|
||||
hoverAnimation: false,
|
||||
radius: ['72%', '67%'],
|
||||
center: ['50%', '50%'],
|
||||
itemStyle: {
|
||||
normal: {
|
||||
label: {
|
||||
show: false
|
||||
},
|
||||
labelLine: {
|
||||
show: false,
|
||||
length: 100,
|
||||
smooth: 0.5
|
||||
},
|
||||
borderWidth: 5,
|
||||
shadowBlur: 40,
|
||||
borderColor: "#F1E453",
|
||||
shadowColor: 'rgba(0, 0, 0, 0)' //边框阴影
|
||||
}
|
||||
},
|
||||
data: [{
|
||||
value: 6,
|
||||
}, {
|
||||
value: 4,
|
||||
name: '',
|
||||
itemStyle: placeHolderStyle
|
||||
}]
|
||||
},
|
||||
// ------------3
|
||||
{
|
||||
name: '值',
|
||||
type: 'pie',
|
||||
clockWise: true,
|
||||
hoverAnimation: false,
|
||||
radius: ['48%', '44%'],
|
||||
center: ['50%', '50%'],
|
||||
itemStyle: {
|
||||
normal: {
|
||||
label: {
|
||||
show: false
|
||||
},
|
||||
labelLine: {
|
||||
show: false,
|
||||
length: 100,
|
||||
smooth: 0.5
|
||||
},
|
||||
borderWidth: 5,
|
||||
shadowBlur: 40,
|
||||
borderColor: "#f85b60",
|
||||
shadowColor: 'rgba(0, 0, 0, 0)' //边框阴影
|
||||
}
|
||||
},
|
||||
data: [{
|
||||
value: 9,
|
||||
}, {
|
||||
value: 44,
|
||||
name: '',
|
||||
itemStyle: placeHolderStyle
|
||||
}]
|
||||
},
|
||||
]
|
||||
tooltip:{
|
||||
trigger:'item',
|
||||
formatter: function (params) {
|
||||
return params.seriesName+':' +params.value
|
||||
}
|
||||
},
|
||||
series: series,
|
||||
// [
|
||||
// {
|
||||
// name: '值',
|
||||
// type: 'pie',
|
||||
// clockWise: true,
|
||||
// hoverAnimation: false,
|
||||
// radius: ['92%', '97%'],
|
||||
// center: ['50%', '50%'],
|
||||
// itemStyle: {
|
||||
// normal: {
|
||||
// label: {
|
||||
// show: false
|
||||
// },
|
||||
// labelLine: {
|
||||
// show: false,
|
||||
// length: 100,
|
||||
// smooth: 0.5
|
||||
// },
|
||||
// borderWidth: 5,
|
||||
// shadowBlur: 40,
|
||||
// borderColor: "#00B3FF",
|
||||
// shadowColor: 'rgba(0, 0, 0, 0)' //边框阴影
|
||||
// }
|
||||
// },
|
||||
// data: [{
|
||||
// value: 12,
|
||||
// }, {
|
||||
// value: 4,
|
||||
// name: '',
|
||||
// itemStyle: placeHolderStyle
|
||||
// }]
|
||||
// },
|
||||
// // ------------2
|
||||
// {
|
||||
// name: '值',
|
||||
// type: 'pie',
|
||||
// clockWise: true,
|
||||
// hoverAnimation: false,
|
||||
// radius: ['72%', '67%'],
|
||||
// center: ['50%', '50%'],
|
||||
// itemStyle: {
|
||||
// normal: {
|
||||
// label: {
|
||||
// show: false
|
||||
// },
|
||||
// labelLine: {
|
||||
// show: false,
|
||||
// length: 100,
|
||||
// smooth: 0.5
|
||||
// },
|
||||
// borderWidth: 5,
|
||||
// shadowBlur: 40,
|
||||
// borderColor: "#F1E453",
|
||||
// shadowColor: 'rgba(0, 0, 0, 0)' //边框阴影
|
||||
// }
|
||||
// },
|
||||
// data: [{
|
||||
// value: 6,
|
||||
// }, {
|
||||
// value: 4,
|
||||
// name: '',
|
||||
// itemStyle: placeHolderStyle
|
||||
// }]
|
||||
// },
|
||||
// // ------------3
|
||||
// {
|
||||
// name: '值',
|
||||
// type: 'pie',
|
||||
// clockWise: true,
|
||||
// hoverAnimation: false,
|
||||
// radius: ['48%', '44%'],
|
||||
// center: ['50%', '50%'],
|
||||
// itemStyle: {
|
||||
// normal: {
|
||||
// label: {
|
||||
// show: false
|
||||
// },
|
||||
// labelLine: {
|
||||
// show: false,
|
||||
// length: 100,
|
||||
// smooth: 0.5
|
||||
// },
|
||||
// borderWidth: 5,
|
||||
// shadowBlur: 40,
|
||||
// borderColor: "#f85b60",
|
||||
// shadowColor: 'rgba(0, 0, 0, 0)' //边框阴影
|
||||
// }
|
||||
// },
|
||||
// data: [{
|
||||
// value: 9,
|
||||
// }, {
|
||||
// value: 44,
|
||||
// name: '',
|
||||
// itemStyle: placeHolderStyle
|
||||
// }]
|
||||
// },
|
||||
// ]
|
||||
});
|
||||
|
||||
//默认第一条高亮
|
||||
|
|
|
@ -35,6 +35,14 @@ Object.keys(filters).forEach(key => {
|
|||
Vue.filter(key, filters[key])
|
||||
})
|
||||
|
||||
import moment from 'moment'
|
||||
//定义一个全局过滤器实现日期格式化
|
||||
Vue.filter('datefmt',function (input,fmtstring) {//当input为时间戳时,需转为Number类型
|
||||
// 使用momentjs这个日期格式化类库实现日期的格式化功能
|
||||
return moment(input).format(fmtstring);
|
||||
});
|
||||
|
||||
Vue.prototype.$moment = moment
|
||||
Vue.config.productionTip = false
|
||||
//MQTT订阅
|
||||
var currentTopics = null;
|
||||
|
|
|
@ -38,7 +38,7 @@
|
|||
<!-- 视频监控 -->
|
||||
<VideoSurveillanceComponents v-if="videoSurveillanceShow" @transfer="getUser"/>
|
||||
<!-- 视频监控子页面 -->
|
||||
<VideoViewingComponents v-if="videoViewingShow"/>
|
||||
<VideoViewingComponents v-if="videoViewingShow" :videoName="videoName" :videoId="videoId"/>
|
||||
<!-- 进度管理 -->
|
||||
<ProgressComponents v-if="progressShow"/>
|
||||
<!-- 安全管理 -->
|
||||
|
@ -111,6 +111,8 @@ export default {
|
|||
},
|
||||
data() {
|
||||
return {
|
||||
videoName:'', //子传父的视频名称
|
||||
videoId:'',//子传父的视频Id
|
||||
//显示首页
|
||||
indexShow:true,
|
||||
//人员管理
|
||||
|
@ -371,7 +373,26 @@ export default {
|
|||
}
|
||||
},
|
||||
closeindex(){
|
||||
this.$router.push('/')
|
||||
// this.$router.push('/')
|
||||
this.$confirm("确定退出登录?", "确认信息", {
|
||||
distinguishCancelAndClose: true,
|
||||
confirmButtonText: "退出",
|
||||
cancelButtonText: "取消",
|
||||
})
|
||||
.then(() => {
|
||||
this.$message({
|
||||
type: "info",
|
||||
message: "返回登录",
|
||||
});
|
||||
this.$router.push("/");
|
||||
sessionStorage.clear(); //清除所有session值
|
||||
})
|
||||
.catch((action) => {
|
||||
this.$message({
|
||||
type: "info",
|
||||
message: action === "cancel" ? "取消退出" : "停留在当前页面",
|
||||
});
|
||||
});
|
||||
},
|
||||
//获取当前时间
|
||||
getTime(){
|
||||
|
@ -401,7 +422,6 @@ export default {
|
|||
url: 'https://restapi.amap.com/v3/weather/weatherInfo?key=e979d73682c0c69059e4cb6740c9dacd&city=320100',
|
||||
methods: ''
|
||||
}).then(res => {
|
||||
console.log(res.data,'=======================');
|
||||
this.weatherItem = res.data.lives[0];
|
||||
});
|
||||
} ,
|
||||
|
@ -439,7 +459,7 @@ export default {
|
|||
//获取视频子传父数据
|
||||
getUser(msg){
|
||||
// this.username= msg
|
||||
if(msg=='into'){
|
||||
if(msg != null){
|
||||
this.indexShow = false
|
||||
this.personnelShow = false
|
||||
this.videoSurveillanceShow = false
|
||||
|
@ -447,6 +467,8 @@ export default {
|
|||
this.managementShow= false
|
||||
this.progressShow = false
|
||||
this.titLeftshow = true
|
||||
this.videoName = msg.videoName
|
||||
this.videoId = msg.videoId
|
||||
}
|
||||
},
|
||||
tableRowClassName({ row, rowIndex }) {
|
||||
|
|
|
@ -200,6 +200,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<!-- 右侧模块1 -->
|
||||
|
||||
<div class="rightOneBox" :style="{ right: boxNone ? '27px' : '-444px' }">
|
||||
<div class="titName">
|
||||
<span></span>
|
||||
|
@ -210,16 +211,19 @@
|
|||
<div
|
||||
style="position: relative; margin-left: 30px; margin-right: 20px"
|
||||
class="videoFat"
|
||||
v-for="(item,index) in videoList"
|
||||
:key="index"
|
||||
>
|
||||
<img src="@/assets/pic/23.png" alt="" />
|
||||
<div class="smallBox">隧道2号位摄像头</div>
|
||||
<img :src="item.thumbnail" alt="" />
|
||||
<div class="smallBox">{{item.equipmentName}}</div>
|
||||
</div>
|
||||
<div style="position: relative" class="videoFat">
|
||||
<!-- <div style="position: relative" class="videoFat">
|
||||
<img src="@/assets/pic/23.png" alt="" />
|
||||
<div class="smallBox">隧道3号位摄像头</div>
|
||||
</div>
|
||||
</div> -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 右侧模块2 -->
|
||||
<div class="rightTwoBox" :style="{ right: boxNone ? '27px' : '-442px' }">
|
||||
<div class="titName">
|
||||
|
@ -352,6 +356,7 @@ import {
|
|||
getProjectStatus,
|
||||
getProjectCheckCensus,
|
||||
getProjectCheckInfo,
|
||||
getIsImportant,
|
||||
} from "@/api/api";
|
||||
export default {
|
||||
name: "report",
|
||||
|
@ -363,6 +368,7 @@ export default {
|
|||
},
|
||||
data() {
|
||||
return {
|
||||
videoList:[],//视频监控数据
|
||||
jinduList:0, //计算进度条的宽度
|
||||
progress:0, //计算进度条的值
|
||||
securityCheck: [], //安全检查统计
|
||||
|
@ -729,6 +735,12 @@ export default {
|
|||
}
|
||||
this.tableData = res.data.data;
|
||||
});
|
||||
//视频监控
|
||||
getIsImportant().then((res)=>{
|
||||
this.videoList = Object.keys(res.data.data).map((item,index)=>{
|
||||
return {thumbnail:res.data.data[item].thumbnail,equipmentName:res.data.data[item].equipmentName}
|
||||
})
|
||||
})
|
||||
});
|
||||
|
||||
window.onresize = () => {
|
||||
|
@ -894,7 +906,7 @@ export default {
|
|||
}
|
||||
|
||||
.smallBox {
|
||||
width: 105px;
|
||||
// width: 105px;
|
||||
height: 28px;
|
||||
background: rgba(0, 37, 35, 0.5);
|
||||
position: absolute;
|
||||
|
@ -1125,15 +1137,19 @@ export default {
|
|||
|
||||
.videoBox {
|
||||
position: absolute;
|
||||
bottom: 33px;
|
||||
display: flex;
|
||||
|
||||
// bottom: 33px;
|
||||
// display: flex;
|
||||
// width: 100%;
|
||||
overflow-y: auto; //重点
|
||||
height: calc(100% - 60px);
|
||||
top: 40px;
|
||||
.videoFat {
|
||||
background: gray;
|
||||
flex: 1;
|
||||
width: 180px;
|
||||
width: 165px;
|
||||
height: 183px;
|
||||
|
||||
float: left;
|
||||
margin-top: 5%;
|
||||
img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
|
@ -1442,10 +1458,11 @@ export default {
|
|||
position: absolute;
|
||||
top: 96px;
|
||||
right: 27px;
|
||||
overflow-x: hidden;
|
||||
// overflow-x: auto;
|
||||
transition: right 0.8s, height 1s;
|
||||
overflow-y: hidden; //重点
|
||||
|
||||
// overflow-y: auto; //重点
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
@media only screen and (max-height: 1000px) {
|
||||
top: 76px;
|
||||
height: 282px;
|
||||
|
|
|
@ -48,37 +48,40 @@
|
|||
<span></span>
|
||||
</div>
|
||||
<div class="kqjk">
|
||||
<div class="oneKqjk">
|
||||
<img src="@/assets/pic/23.png" alt="" />
|
||||
</div>
|
||||
<div class="twoKqjk">
|
||||
<div class="nameMessage" v-for="(item, i) in peopleList" :key="i">
|
||||
<div>
|
||||
<span style="color: #7ffffc">姓名:</span>
|
||||
<span style="color: #ffffff">{{ item.value }}</span>
|
||||
<div class="oneKqjk">
|
||||
<img :src="item.picture" alt="" />
|
||||
</div>
|
||||
<div class="textRight">
|
||||
<div style="margin-top:10px">
|
||||
<span style="color: #7ffffc;white-space: nowrap">姓名:</span>
|
||||
<span style="color: #ffffff">{{ item.name }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span style="color: #7ffffc">岗位:</span>
|
||||
<span style="color: #ffffff">{{ item.value }}</span>
|
||||
<div style="margin-top:10px">
|
||||
<span style="color: #7ffffc;white-space: nowrap">岗位:</span>
|
||||
<span style="color: #ffffff">{{ item.post }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span style="color: #7ffffc">体温:</span>
|
||||
<span style="color: #ffffff">{{ item.value }}</span>
|
||||
<div style="margin-top:10px">
|
||||
<span style="color: #7ffffc;white-space: nowrap">体温:</span>
|
||||
<span style="color: #ffffff">{{ item.temperature }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span style="color: #7ffffc">入场时间:</span>
|
||||
<span style="color: #ffffff">{{ item.value }}</span>
|
||||
<div style="margin-top:10px">
|
||||
<span style="color: #7ffffc;white-space: nowrap">入场时间:</span>
|
||||
<span style="color: #ffffff">{{ item.time }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span style="color: #7ffffc">考勤类型:</span>
|
||||
<span style="color: #ffffff">{{ item.value }}</span>
|
||||
<div style="margin-top:10px">
|
||||
<span style="color: #7ffffc;white-space: nowrap">考勤类型:</span>
|
||||
<span style="color: #ffffff;">{{ item.type }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span style="color: #7ffffc">打卡设备:</span>
|
||||
<span style="color: #ffffff">{{ item.value }}</span>
|
||||
<div style="margin-top:10px">
|
||||
<span style="color: #7ffffc;white-space: nowrap">打卡设备:</span>
|
||||
<span style="color: #ffffff">{{ item.equipment }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 右侧模块1 -->
|
||||
|
@ -96,15 +99,15 @@
|
|||
<div class="mesBox">
|
||||
<div>
|
||||
<span style="color: #82dddb">会议时间:</span>
|
||||
<span style="color: #ffffff">2023-01-02</span>
|
||||
<span style="color: #ffffff">{{meeting.date}}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span style="color: #82dddb">会议类型:</span>
|
||||
<span style="color: #ffffff">项目早会</span>
|
||||
<span style="color: #ffffff">{{meeting.type}}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span style="color: #82dddb">会议主持:</span>
|
||||
<span style="color: #ffffff">王毅</span>
|
||||
<span style="color: #ffffff">{{meeting.host}}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span style="color: #82dddb">参会人员:</span>
|
||||
|
@ -115,23 +118,18 @@
|
|||
display: inline-block;
|
||||
white-space: pre-wrap;
|
||||
"
|
||||
>王小龙,高红,澄澈</span
|
||||
>{{meeting.participants}}</span
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="meeting">会议内容</div>
|
||||
<div class="mettiogBox">
|
||||
<div>
|
||||
<div>1、施工部署</div>
|
||||
<div>
|
||||
(1)土方开挖:条基采用机械开挖,局部人工修补,余土外运。桩基采用人工挖土,桩基挖土过程中设置通风设备,保证挖土人员的安全。
|
||||
<div class="meetContent">
|
||||
{{meeting.content}}</div>
|
||||
<div style="height:10%;width:100%">
|
||||
<div class="lookFor" @click="gantDialog"></div>
|
||||
</div>
|
||||
<div>
|
||||
(2)钢筋加工:现场加工,现场设置钢筋加工棚,布置加工机械梁板钢筋连接采用绑扎接头或闪光对焊,柱及墙板钢筋采用电渣压力焊。
|
||||
</div>
|
||||
</div>
|
||||
<div class="lookFor" @click="gantDialog"></div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 右侧模块2 -->
|
||||
|
@ -148,6 +146,7 @@
|
|||
:color-array="['#021C9F', '#01B1FF']"
|
||||
:chart-data="qyList"
|
||||
:x-axis-data="qyList.map((item) => item.name)"
|
||||
:radarList="radarList"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -199,15 +198,15 @@
|
|||
<div class="mesBox">
|
||||
<div>
|
||||
<span style="color: #82dddb">会议时间:</span>
|
||||
<span style="color: #ffffff">2023-01-02</span>
|
||||
<span style="color: #ffffff">{{meeting.date}}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span style="color: #82dddb">会议类型:</span>
|
||||
<span style="color: #ffffff">项目早会</span>
|
||||
<span style="color: #ffffff">{{meeting.type}}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span style="color: #82dddb">会议主持:</span>
|
||||
<span style="color: #ffffff">王毅</span>
|
||||
<span style="color: #ffffff">{{meeting.host}}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span style="color: #82dddb">参会人员:</span>
|
||||
|
@ -218,29 +217,17 @@
|
|||
display: inline-block;
|
||||
white-space: pre-wrap;
|
||||
"
|
||||
>王小龙,高红,澄澈</span
|
||||
>{{meeting.participants}}</span
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="meet2ing">会议内容</div>
|
||||
<div class="mettiog2Box">
|
||||
<div>
|
||||
<div>1、施工部署</div>
|
||||
<div>
|
||||
(1)土方开挖:条基采用机械开挖,局部人工修补,余土外运。桩基采用人工挖土,桩基挖土过程中设置通风设备,保证挖土人员的安全。
|
||||
<div class="mettiog2Box">
|
||||
<div class="meetContent">
|
||||
{{meeting.content}}
|
||||
</div>
|
||||
<div>
|
||||
(2)钢筋加工:现场加工,现场设置钢筋加工棚,布置加工机械梁板钢筋连接采用绑扎接头或闪光对焊,柱及墙板钢筋采用电渣压力焊。
|
||||
</div>
|
||||
<div>
|
||||
(3)钢筋加工:现场加工,现场设置钢筋加工棚,布置加工机械梁板钢筋连接采用绑扎接头或闪光对焊,柱及墙板钢筋采用电渣压力焊。
|
||||
</div>
|
||||
<div>
|
||||
(4)钢筋加工:现场加工,现场设置钢筋加工棚,布置加工机械梁板钢筋连接采用绑扎接头或闪光对焊,柱及墙板钢筋采用电渣压力焊。
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -255,7 +242,7 @@ import RadarChart from "@/components/common/RadarChart";
|
|||
import pieChart from "@/components/common/pieChart";
|
||||
import pieDateChart from "@/components/common/pieDateChart";
|
||||
import Resize from "../utils/Resize.vue";
|
||||
import { getUserGroup, getGroupCensus, getAttend } from "@/api/personnel";
|
||||
import { getUserGroup, getGroupCensus, getAttend,getRecentMeeting,getMonthCensus } from "@/api/personnel";
|
||||
export default {
|
||||
name: "report",
|
||||
components: {
|
||||
|
@ -266,6 +253,8 @@ export default {
|
|||
},
|
||||
data() {
|
||||
return {
|
||||
radarList:[], //站班会统计
|
||||
meeting:{}, //站班会记录
|
||||
boxNone: true,
|
||||
colorList: ["#00A572", "#008AA4", "#7968D9", "#C7A73E"],
|
||||
iconPicList: [
|
||||
|
@ -374,7 +363,13 @@ export default {
|
|||
chartData: [],
|
||||
peopleList: [
|
||||
{
|
||||
name:'王刚'
|
||||
name:'史蒂芬库里',
|
||||
post:'经理',
|
||||
temperature:'36.7',
|
||||
time:'2023-2-1',
|
||||
type:'lala',
|
||||
equipment:'一号打卡机',
|
||||
picture:require('../assets/pic/23.png')
|
||||
}
|
||||
],
|
||||
vdaH: 0,
|
||||
|
@ -413,7 +408,6 @@ export default {
|
|||
getUserGroup({
|
||||
projectId: projectId,
|
||||
}).then((res) => {
|
||||
console.log("res.data.data", res.data.data);
|
||||
// this.projectUser = res.data.data
|
||||
this.pieData = res.data.data;
|
||||
});
|
||||
|
@ -423,11 +417,26 @@ export default {
|
|||
}).then((res) => {
|
||||
this.constructionPersonnel = res.data.data;
|
||||
});
|
||||
//考勤监控
|
||||
getAttend({
|
||||
projectId: projectId,
|
||||
}).then((res) => {
|
||||
console.log(res.data, "=============");
|
||||
this.peopleList = Object.keys(res.data.data).map((item,index)=>{
|
||||
return {name:res.data.data[item].name,post:res.data.data[item].post,type:res.data.data[item].type,time:res.data.data[item].time,picture:res.data.data[item].picture,equipment:res.data.data[item].equipment,temperature:res.data.data[item].temperature}
|
||||
})
|
||||
});
|
||||
//站班会记录
|
||||
getRecentMeeting({
|
||||
projectId: projectId,
|
||||
}).then((res)=>{
|
||||
this.meeting = res.data.data
|
||||
})
|
||||
//站班会统计
|
||||
getMonthCensus({
|
||||
projectId: projectId,
|
||||
}).then((res)=>{
|
||||
this.radarList = res.data.data
|
||||
})
|
||||
},
|
||||
|
||||
createMqtt() {
|
||||
|
@ -659,13 +668,17 @@ export default {
|
|||
font-size: 14px;
|
||||
font-family: SourceHanSansCN-Medium, SourceHanSansCN;
|
||||
font-weight: 500;
|
||||
margin-top: 10px;
|
||||
margin-left: 18px;
|
||||
|
||||
span:nth-child(1) {
|
||||
display: inline-block;
|
||||
width: 56px;
|
||||
text-align-last: justify;
|
||||
// margin-top: 10px;
|
||||
// margin-left: 18px;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
// span:nth-child(1) {
|
||||
// display: inline-block;
|
||||
// width: 56px;
|
||||
// text-align-last: justify;
|
||||
// }
|
||||
.textRight{
|
||||
width: 50%;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -736,6 +749,17 @@ export default {
|
|||
color: #ffffff;
|
||||
padding: 0 22px 0 0px;
|
||||
height: 260px;
|
||||
::-webkit-scrollbar {
|
||||
display: none;
|
||||
}
|
||||
.meetContent{
|
||||
overflow: auto;
|
||||
height: 90%;
|
||||
width: 100%;
|
||||
word-wrap: break-word;
|
||||
word-break: break-all;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
.mettiogBox {
|
||||
|
@ -747,16 +771,31 @@ export default {
|
|||
font-weight: 500;
|
||||
color: #ffffff;
|
||||
padding: 0 22px 0 30px;
|
||||
height: 260px;
|
||||
|
||||
height: 215px;
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
@media only screen and (max-height: 1000px) {
|
||||
top: 330px;
|
||||
}
|
||||
::-webkit-scrollbar {
|
||||
display: none;
|
||||
}
|
||||
.meetContent{
|
||||
overflow: auto;
|
||||
height: 90%;
|
||||
width: 100%;
|
||||
word-wrap: break-word;
|
||||
word-break: break-all;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
.lookFor {
|
||||
width: 57px;
|
||||
height: 24px;
|
||||
height: 100%;
|
||||
background: url("~@/assets/pic/view.png") no-repeat;
|
||||
background-size: 100% 100%;
|
||||
float: right;
|
||||
|
@ -812,7 +851,9 @@ export default {
|
|||
position: absolute;
|
||||
top: 48px;
|
||||
display: flex;
|
||||
|
||||
::-webkit-scrollbar {
|
||||
display: none ;
|
||||
}
|
||||
@media only screen and (max-height: 1000px) {
|
||||
top: 24px;
|
||||
}
|
||||
|
@ -822,7 +863,7 @@ export default {
|
|||
height: 160px;
|
||||
padding: 5px;
|
||||
border: 1px solid #00ebeb;
|
||||
margin-top: 38px;
|
||||
margin-top: 11px;
|
||||
margin-left: 18px;
|
||||
margin-right: 14px;
|
||||
|
||||
|
@ -833,10 +874,11 @@ export default {
|
|||
}
|
||||
|
||||
.twoKqjk {
|
||||
width: 234px;
|
||||
height: 200px;
|
||||
width: 100%;
|
||||
height: 194px;
|
||||
margin-top: 25px;
|
||||
background: rgba(0, 84, 79, 0.3);
|
||||
overflow-y: auto;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue