举牌验收大屏开发

dev_xd
lj7788@126.com 2025-08-01 13:47:19 +08:00
parent 1c1c89849d
commit 24d19ebc62
19 changed files with 518 additions and 293 deletions

View File

@ -1,132 +1,204 @@
<template>
<MyDialog v-if="show" v-model="show" width="960px" height="650px" class="project-checked-detail-dialog">
<template slot="title">举牌验收详情</template>
<div class="detail-content scroll">
<div class="data-row">
<div class="data-label">验收时间:</div>
<div class="data-content">{{ row.checkingDate }}</div>
</div>
<div class="data-row">
<div class="data-label">验收结果:</div>
<div class="data-content">
<span :class="'check-state check-state-' + row.checkResultColor">{{
row.checkResultName }}</span>
</div>
</div>
<div class="data-row">
<div class="data-label">验收图片:</div>
<div class="data-content data-images">
<div class="data-img" v-for="(it, index) in row.images" :key="index">
<el-image :src="it" :preview-src-list="row.images" fit="cover" />
</div>
</div>
</div>
<div class="data-row">
<div class="data-label">工序部位:</div>
<div class="data-content">{{ row.workingPosition }}</div>
</div>
<div class="data-row">
<div class="data-label">验收描述:</div>
<div class="data-content">{{ row.intro }}</div>
</div>
<div class="data-row">
<div class="data-label">班组长:</div>
<div class="data-content">{{ row.groupDeptUserName }}({{ row.groupDeptUser }})</div>
</div>
<div class="data-row">
<div class="data-label">技术员:</div>
<div class="data-content">{{ row.technicianUserName }}({{ row.technicianUserName }})</div>
</div>
<div class="data-row">
<div class="data-label">监理专员:</div>
<div class="data-content">{{ row.superviseUserName }}({{ row.superviseUserName }})</div>
</div>
<div class="data-row">
<div class="data-label">三方验收照:</div>
<div class="data-content check-images">
<div class="data-img" v-for="(it, index) in row.checkImages" :key="index">
<el-image :src="it" :preview-src-list="row.checkImages" fit="cover" />
</div>
</div>
</div>
<MyDialog
v-if="show"
v-model="show"
:width="dlgWidth"
:key="dpi"
:height="dlgHeight"
class="project-checked-detail-dialog"
>
<template slot="title">举牌验收详情</template>
<div class="detail-content scroll">
<div class="data-row">
<div class="data-label">验收时间:</div>
<div class="data-content">{{ row.checkingDate }}</div>
</div>
<div class="data-row">
<div class="data-label">验收结果:</div>
<div class="data-content">
<span :class="'check-state check-state-' + row.checkResultColor">{{
row.checkResultName
}}</span>
</div>
</MyDialog>
</div>
<div class="data-row">
<div class="data-label">验收图片:</div>
<div class="data-content data-images">
<div class="data-img" v-for="(it, index) in row.images" :key="index">
<el-image :src="it" :preview-src-list="row.images" fit="cover" />
</div>
</div>
</div>
<div class="data-row">
<div class="data-label">工序部位:</div>
<div class="data-content">{{ row.workingPosition }}</div>
</div>
<div class="data-row">
<div class="data-label">验收描述:</div>
<div class="data-content">{{ row.intro }}</div>
</div>
<div class="data-row">
<div class="data-label">班组长:</div>
<div class="data-content">
{{ row.groupDeptUserName }}({{ row.groupDeptUser }})
</div>
</div>
<div class="data-row">
<div class="data-label">技术员:</div>
<div class="data-content">
{{ row.technicianUserName }}({{ row.technicianUserName }})
</div>
</div>
<div class="data-row">
<div class="data-label">监理专员:</div>
<div class="data-content">
{{ row.superviseUserName }}({{ row.superviseUserName }})
</div>
</div>
<div class="data-row">
<div class="data-label">三方验收照:</div>
<div class="data-content check-images">
<div
class="data-img"
v-for="(it, index) in row.checkImages"
:key="index"
>
<el-image
:src="it"
:preview-src-list="row.checkImages"
fit="cover"
/>
</div>
</div>
</div>
</div>
</MyDialog>
</template>
<script>
export default {
data() {
return {
loading: false,
show: false,
row: null
}
},
data() {
return {
dpi: "",
loading: false,
show: false,
dlgWidth: "960px",
dlgHeight: "650px",
row: null,
};
},
methods: {
showDialog(data) {
this.row = data
this.show = true
},
methods: {
showDialog(data) {
this.dpi = this.$dpi();
window.addEventListener("resize", () => {
if (this.dpi != this.$dpi()) {
this.dpi = this.$dpi();
this.resize();
}
});
this.row = data;
this.show = true;
this.resize();
},
}
resize() {
let is1K = this.$dpi() == "1K";
let is2K = this.$dpi() == "2K";
this.dlgWidth = is1K ? "960px" : is2K ? "1200px" : "1600px";
this.dlgHeight = is1K ? "650px" : is2K ? "800px" : "960px";
},
},
};
</script>
<style lang="less">
.project-checked-detail-dialog {
.popup-project-introduction-min {
.detail-content {
height: 500px;
overflow-y: auto;
.popup-project-introduction-min {
.detail-content {
height: 500px;
overflow-y: auto;
.data-row {
display: flex;
color: #3da2ff;
line-height: 30px;
.data-row {
display: flex;
color: #3da2ff;
line-height: 30px;
.data-label {
min-width: 120px;
text-align: right;
color: #32e1e4;
padding-right: 10px;
}
.data-images,
.check-images {
width: 100%;
.data-img {
margin-right: 1%;
width: 32%;
display: inline-block;
}
}
.check-state {
display: inline-block;
line-height: 20px;
padding: 2px 4px;
border-radius: 4px;
&.check-state-1 {
color: #09f509;
background: #01b24954;
}
&.check-state-2 {
color: #192c64;
background: #6abee9;
}
}
}
.data-label {
min-width: 120px;
text-align: right;
color: #32e1e4;
padding-right: 10px;
}
.data-images,
.check-images {
width: 100%;
.data-img {
margin-right: 1%;
width: 32%;
display: inline-block;
}
}
.check-state {
display: inline-block;
line-height: 20px;
padding: 2px 4px;
border-radius: 4px;
&.check-state-1 {
color: #09f509;
background: #01b24954;
}
&.check-state-2 {
color: #192c64;
background: #6abee9;
}
}
}
}
@media (min-width: 1921px) and (max-width: 2560px) {
.detail-content {
height: 720px;
.data-row {
line-height: 36px;
font-size: 16px;
.data-label {
min-width: 140px;
}
.check-state {
line-height: 30px;
padding: 0px 10px;
border-radius: 6px;
}
}
}
}
@media (min-width: 2561px) {
.detail-content {
height: 870px;
.data-row {
line-height: 60px;
font-size: 24px;
.data-label {
min-width: 160px;
}
.check-state {
line-height: 60px;
padding: 0px 10px;
border-radius: 10px;
}
}
}
}
}
}
</style>

View File

@ -35,7 +35,7 @@
style="height: unset;cursor: pointer;">
<div class="glr-login-number-bgd glr-login-number-red-bgd"></div>
<div class="glr-login-number analyse-login-numbe">
<div><img src="images/text_red_spot.png" />{{ item.name }}</div>
<div><img src="/cdn/bsimages/text_red_spot.png" />{{ item.name }}</div>
<div class="glr-rate-value glr-rate-red-value">
<template v-if="idx == 0">
<span style="color: #c0dafb">{{ item.total }}</span>

View File

@ -111,7 +111,7 @@
</module-one-2-2>
<module-one-1-2 label="节能减排趋势" class="energy-tendency">
<el-col :span="8" class="et-chart1">
<img src="images/security1.gif" class="time-img" />
<img src="/cdn/bsimages/security1.gif" class="time-img" />
<my-chart :key="chartKey" id="energy-tendency-total" width="100%" height="100%" :render="renderChart4"></my-chart>
</el-col>
<el-col :span="16">

View File

@ -56,6 +56,9 @@ Vue.prototype.$bus = vue;
Vue.prototype.$apiPath = process.env.VUE_APP_BASE_API;
Vue.prototype.$dt = dayjs;
Vue.prototype.$tryToJson = tryToJson;
Vue.prototype.isLocal=()=>{
return location.href.indexOf('localhost')>-1
}
Vue.prototype.$toggleFullScreen = (el) => {
if (document.fullscreenElement == el) {
let screen =

View File

@ -35,7 +35,7 @@
<many-chart :dataList="moreData" v-if="moreData.length > 0"></many-chart>
<div class="no-data" v-else>
<img src="images/nodata.png" class="no-data-img" />
<img src="/cdn/bsimages/nodata.png" class="no-data-img" />
<div style="text-align: center;" class="no-data-text">暂无数据</div>
</div>
</div>

View File

@ -10,16 +10,17 @@
<template v-if="weekData.length == 0">
<div class="no-data">
<div class="no-data-conten">
<img src="images/nodata.png" style="width: 240px;" />
<img src="/cdn/bsimages/nodata.png" style="width: 240px" />
<div class="no-data">暂无数据</div>
</div>
</div>
</template>
<template v-else>
<div class="week-list scroll" :key="weekKey">
<div class="week-item" v-for="(it, index) in weekData" :key="index" @click="handleWeekItemClick(it, $event)">
<div class="week-item" v-for="(it, index) in weekData" :key="index"
@click="handleWeekItemClick(it, $event)">
<div class="item-left">
<el-image :src="it.image" :preview-src-list="it.images" fit="cover" />
<el-image :src="it.image" :preview-src-list="it.images" fit="contain" />
</div>
<div class="item-right">
<div class="item-right-row">
@ -33,48 +34,55 @@
</div>
<div class="item-right-row">
<div class="item-label">班组长:</div>
<div class="item-data">{{ it.groupDeptUserName }}({{ it.groupDeptUser }})</div>
<div class="item-data">
{{ it.groupDeptUserName }}({{ it.groupDeptUser }})
</div>
</div>
<div class="item-right-row">
<div class="item-label">技术员:</div>
<div class="item-data">{{ it.technicianUserName }}({{ it.technicianUser }})</div>
<div class="item-data">
{{ it.technicianUserName }}({{ it.technicianUser }})
</div>
</div>
<div class="item-right-row">
<div class="item-label">监理专员:</div>
<div class="item-data">{{ it.superviseUserName }}({{ it.superviseUser }})</div>
<div class="item-data">
{{ it.superviseUserName }}({{ it.superviseUser }})
</div>
</div>
</div>
</div>
</div>
</template>
</module-one-2-1>
</el-col>
<el-col :span="18" class="h100">
<module-one-2-3 label="举牌验收列表" class="h66 list-group">
<div class="head-title-tab" :key="chart1Key">
<div :class="nav == 1 ? 'head-nav active' : 'head-nav'" @click="doNav(1)">({{
getCheckedCount(1) }})</div>
<div :class="nav == 0 ? 'head-nav active' : 'head-nav'" @click="doNav(0)">({{
getCheckedCount(0) }})</div>
<div :class="nav == 1 ? 'head-nav active' : 'head-nav'" @click="doNav(1)">
已验收({{ getCheckedCount(1) }})
</div>
<div :class="nav == 0 ? 'head-nav active' : 'head-nav'" @click="doNav(0)">
未验收({{ getCheckedCount(0) }})
</div>
</div>
<template v-if="listData.length == 0">
<div class="no-data">
<div class="no-data-conten">
<img src="images/nodata.png" style="width: 240px;" />
<img src="/cdn/bsimages/nodata.png" style="width: 240px" />
<div class="no-data">暂无数据</div>
</div>
</div>
</template>
<template v-else>
<div class="list-data scroll" :key="listKey">
<div class="week-item" v-for="(it, index) in weekData" :key="index" @click="handleWeekItemClick(it, $event)">
<div class="item-left" >
<el-image :src="it.image" :preview-src-list="it.images" fit="cover" />
<div class="week-item" v-for="(it, index) in listData" :key="index"
@click="handleWeekItemClick(it, $event)">
<div class="item-left">
<el-image :src="it.image" :preview-src-list="it.images" fit="contain" />
</div>
<div class="item-right">
<div class="item-right-row">
@ -88,17 +96,23 @@
</div>
<div class="item-right-row">
<div class="item-label">班组长:</div>
<div class="item-data">{{ it.groupDeptUserName }}({{ it.groupDeptUser }})</div>
<div class="item-data">
{{ it.groupDeptUserName }}({{ it.groupDeptUser }})
</div>
</div>
<div class="item-right-row">
<div class="item-label">技术员:</div>
<div class="item-data">{{ it.technicianUserName }}({{ it.technicianUser }})</div>
<div class="item-data">
{{ it.technicianUserName }}({{ it.technicianUser }})
</div>
</div>
<div class="item-right-row">
<div class="item-label">监理专员:</div>
<div class="item-data">{{ it.superviseUserName }}({{ it.superviseUser }})</div>
<div class="item-data">
{{ it.superviseUserName }}({{ it.superviseUser }})
</div>
</div>
</div>
</div>
@ -106,14 +120,13 @@
<el-pagination layout="total,prev, pager, next" :hide-on-single-page="true"
@current-change="handleCurrentChange" :total="total" :page-size="size"
:current-page.sync="index" class="bg-pagination"></el-pagination>
</template>
</module-one-2-3>
<module-one-1-3 label="举牌验收技术员统计" class="h33 group-technician">
<template v-if="technicianData.length == 0">
<div class="no-data">
<div class="no-data-conten">
<img src="images/nodata.png" style="width: 240px;" />
<img src="/cdn/bsimages/nodata.png" style="width: 240px" />
<div class="no-data">暂无数据</div>
</div>
</div>
@ -130,10 +143,10 @@
<script>
import debounce from "lodash.debounce";
import projectCheckedDetailDialog from '@/views/check/projectCheckedDetailDialog.vue'
import projectCheckedDetailDialog from "@/views/check/projectCheckedDetailDialog.vue";
export default {
components: {
projectCheckedDetailDialog
projectCheckedDetailDialog,
},
data() {
return {
@ -144,10 +157,8 @@ export default {
chart1Key: 0,
chart1Height: 200,
groupTotal: 0,
groupLendOpt: {
},
groupData: [
],
groupLendOpt: {},
groupData: [],
//
chart2Key: 0,
chart2Height: 200,
@ -162,7 +173,7 @@ export default {
size: 9,
index: 1,
listKey: 10000,
}
};
},
mounted() {
this.$store.dispatch("ChangeNav", 403);
@ -187,40 +198,40 @@ export default {
},
methods: {
setOpts() {
let is1K = this.$dpi() == '1K'
let is2K = this.$dpi() == '2K'
let is1K = this.$dpi() == "1K";
let is2K = this.$dpi() == "2K";
this.groupLendOpt = {
icon: 'rect',
orient: 'horizontal',
itemWidth: '50%',
icon: "rect",
orient: "horizontal",
itemWidth: "50%",
left: 240,
right: '10%',
right: "10%",
itemWidth: 20,
itemGap: 20,
itemHeight: 20,
textStyle: {
padding: [0, 0, 0, 0],
fontSize: is1K ? 10 : is2K ? 14 : 16,
color: '#c3dbfd',
align: 'center',
fontSize: is1K ? 10 : is2K ? 14 : 20,
color: "#c3dbfd",
align: "center",
rich: {
name: {
fontSize: is1K ? 10 : is2K ? 14 : 16,
color: '#c3dbfd',
fontSize: is1K ? 10 : is2K ? 14 : 20,
color: "#c3dbfd",
padding: [5, 2, 5, 2],
},
percent: {
fontSize: is1K ? 10 : is2K ? 14 : 16,
color: '#4676FD',
fontSize: is1K ? 10 : is2K ? 14 : 20,
color: "#4676FD",
padding: [0, 2, 0, 2],
},
},
},
}
};
},
init() {
if (!this.selProject) {
return
return;
}
this.chartKey++;
this.loadGroupData();
@ -230,23 +241,25 @@ export default {
this.doNav(1);
},
resize() {
let is1K = this.$dpi() == '1K'
let is2K = this.$dpi() == '2K'
this.chart1Height = is1K ? 230 : is2K ? 360 : 595
let is1K = this.$dpi() == "1K";
let is2K = this.$dpi() == "2K";
this.chart1Height = is1K ? 230 : is2K ? 360 : 595;
this.chart1Key++;
this.chart2Key++;
},
getCheckedCount(n) {
let obj = this.groupData.find(item => item.name == (n == 1 ? '已验收' : '未验收'))
return obj ? obj.value : 0
let obj = this.groupData.find(
(item) => item.name == (n == 1 ? "已验收" : "未验收")
);
return obj ? obj.value : 0;
},
showDetail(row){
showDetail(row) {
this.$refs.detailDlg.showDialog(row);
},
handleWeekItemClick(row, event) {
//
const target = event.target;
const imageContainer = event.currentTarget.querySelector('.item-left');
const imageContainer = event.currentTarget.querySelector(".item-left");
if (imageContainer && !imageContainer.contains(target)) {
this.showDetail(row);
}
@ -260,7 +273,7 @@ export default {
this.loadDataList();
},
handleCurrentChange(n) {
this.index = n
this.index = n;
this.loadDataList();
},
loadDataList() {
@ -269,10 +282,13 @@ export default {
checkResult: this.nav == 1 ? 99 : 100,
pageNum: this.index,
pageSize: this.size,
}
this.$api.checked.listProjectChecked(param).then(res => {
this.total = res.total + 88;
};
this.$api.checked.listProjectChecked(param).then((res) => {
this.total = res.total + 20;
this.listData = this.mapData(res);
for (let i = 0; i < 7; i++) {
this.listData.push(this.listData[0]);
}
this.listKey++;
});
},
@ -282,34 +298,34 @@ export default {
remark: "lastWeek",
pageNum: 1,
pageSize: 100,
}
this.$api.checked.listProjectChecked(param).then(res => {
};
this.$api.checked.listProjectChecked(param).then((res) => {
this.weekData = this.mapData(res);
for (i = 0; i < 8; i++) {
this.weekData.push(this.weekData[0])
for (let i = 0; i < 8; i++) {
this.weekData.push(this.weekData[0]);
}
this.weekKey++;
})
});
},
mapData(res) {
return (res.rows || []).map(item => {
return (res.rows || []).map((item) => {
if (item.imageUrls) {
item.images = item.imageUrls.split(',');
item.images = item.imageUrls.split(",");
item.image = item.images[0];
for(let i=0;i<6;i++){
item.images.push(item.images[0])
for (let i = 0; i < 6; i++) {
item.images.push(item.images[0]);
}
} else {
item.image = "";
item.images = []
item.images = [];
}
if (item.checkingFiles) {
item.checkImages = item.checkingFiles.split(',');
item.checkImages = item.checkingFiles.split(",");
item.checkImage = item.images[0];
} else {
item.checkImage = "";
item.checkImages = []
item.checkImages = [];
}
if (item.checkResult == 1 && item.approveStatus == 100) {
@ -324,82 +340,81 @@ export default {
});
},
loadGroupData() {
this.$api.checked.groupByStatus(this.selProject.id).then(res => {
this.$api.checked.groupByStatus(this.selProject.id).then((res) => {
let cnt = 0;
let tmps = (res.data || []).map(it => {
let tmps = (res.data || []).map((it) => {
return {
name: it.title,
value: it.cnt
}
value: it.cnt,
};
});
tmps.forEach(it => {
tmps.forEach((it) => {
cnt += it.value;
});
this.groupData = tmps;
this.groupTotal = cnt;
this.chart1Key++;
})
});
},
changeChart1(opt) {
if (this.$dpi() == '1K') {
opt.legend[0].left = 200
return opt
} else if (this.$dpi() == '2K') {
opt.legend[0].left = 360
return opt
if (this.$dpi() == "1K") {
opt.legend[0].left = 200;
return opt;
} else if (this.$dpi() == "2K") {
opt.legend[0].left = 360;
return opt;
} else {
opt.legend[0].left = 500
return opt
opt.legend[0].left = 500;
return opt;
}
},
loadGroupByTechnician() {
this.$api.checked.groupByTechnician(this.selProject.id).then(res => {
this.$api.checked.groupByTechnician(this.selProject.id).then((res) => {
this.technicianData = res;
this.chart2Key++;
})
});
},
renderChart2(opt) {
let is1K = this.$dpi() == '1K'
let is2K = this.$dpi() == '2K'
let is1K = this.$dpi() == "1K";
let is2K = this.$dpi() == "2K";
let option = {
grid: {
left: '5%',
right: '5%',
bottom: '0%',
top: '15%',
left: "5%",
right: "5%",
bottom: "0%",
top: "15%",
containLabel: true,
},
tooltip: {
trigger: 'axis',
trigger: "axis",
valueFormatter: (v) => {
return v
return v;
},
textStyle: {
fontSize: is1K ? 12 : is2K ? 14 : 24,
},
},
legend: {
top: is1K ? '0%' : is2K ? '0%' : '0%',
left: 'center',
top: is1K ? "0%" : is2K ? "0%" : "0%",
left: "center",
itemWidth: is1K ? 25 : is2K ? 30 : 40,
itemHeight: is1K ? 14 : is2K ? 20 : 20,
itemGap: is1K ? 20 : is2K ? 30 : 40,
textStyle: {
color: '#fff',
color: "#fff",
fontSize: is1K ? 14 : is2K ? 20 : 30,
},
},
xAxis: [
{
type: 'category',
type: "category",
data: this.technicianData.map((it) => it.name),
axisLabel: {
width: is1K ? 60 : is2K ? 140 : 220,
margin: 15,
fontSize: is1K ? 12 : is2K ? 14 : 22,
overflow: 'break',
color: '#a2c8f9',
overflow: "break",
color: "#a2c8f9",
},
splitLine: {
lineStyle: {
@ -410,11 +425,11 @@ export default {
],
yAxis: [
{
type: 'value',
type: "value",
minInterval: 1,
axisLabel: {
formatter: '{value}',
color: '#2ec2b3',
formatter: "{value}",
color: "#2ec2b3",
fontSize: is1K ? 12 : is2K ? 14 : 24,
},
splitLine: {
@ -426,49 +441,49 @@ export default {
],
series: [
{
name: '已验收',
type: 'bar',
barGap: '0%',
barWidth: '20%',
name: "已验收",
type: "bar",
barGap: "0%",
barWidth: "20%",
label: {
show: true,
position: 'top',
color: '#4DAAFC',
position: "top",
color: "#4DAAFC",
fontSize: is1K ? 12 : is2K ? 14 : 24,
},
lineStyle: {
color: '#7ddff2',
color: "#7ddff2",
},
itemStyle: {
color: '#4974ff',
color: "#4974ff",
},
data: this.technicianData.map((it) => it.accepted),
},
{
name: '待验收',
type: 'bar',
barGap: '0%',
barWidth: '20%',
name: "待验收",
type: "bar",
barGap: "0%",
barWidth: "20%",
label: {
show: true,
position: 'top',
color: '#4DAAFC',
position: "top",
color: "#4DAAFC",
fontSize: is1K ? 12 : is2K ? 14 : 24,
},
lineStyle: {
color: '#006594',
color: "#006594",
},
itemStyle: {
color: '#52aef7',
color: "#52aef7",
},
data: this.technicianData.map((it) => it.toBe),
},
],
}
return option
};
return option;
},
}
}
},
};
</script>
<style lang="less">
@ -546,7 +561,6 @@ export default {
grid-template-rows: repeat(3, 1fr);
gap: 10px;
}
}
}
@ -563,7 +577,14 @@ export default {
.item-left {
width: 40%;
height: 100%;
height: 120px;
display: flex;
align-items: center;
justify-content: center;
.el-image {
height: 100%;
}
}
.item-right {
@ -577,9 +598,11 @@ export default {
flex-flow: row;
line-height: 24px;
position: relative;
.item-label{
color: #32e1e4;
.item-label {
color: #32e1e4;
}
.check-state {
display: inline-block;
line-height: 20px;
@ -604,7 +627,130 @@ export default {
}
}
}
}
@media (min-width: 1921px) and (max-width: 2560px) {
.chart1-group {
.chart-gif,
.chart-text {
left: 59px !important;
top: 95px !important;
width: 170px;
height: 170px;
.chart-text-title {
font-size: 30px;
}
.chart-text-sub-title {
font-size: 20px;
}
}
}
.list-group {
.module-ctx {
.list-data {
height: calc(100% - 150px);
}
}
}
.week-group {
.module-ctx {
height: calc(100% - 50px);
}
}
.group-technician {
.module-ctx {
height: calc(100% - 50px);
}
}
.week-item {
.item-left {
height: 190px;
}
.item-right {
font-size: 16px;
padding-left: 10px;
.item-right-row {
line-height: 30px;
.check-state {
line-height: 30px;
padding: 0px 10px;
border-radius: 5px;
}
}
}
}
}
@media (min-width: 2561px) {
.chart1-group {
.chart-gif,
.chart-text {
left: 79px !important;
top: 153px !important;
width: 290px;
height: 290px;
.chart-text-title {
font-size: 50px;
}
.chart-text-sub-title {
font-size: 30px;
}
}
}
.list-group {
.module-ctx {
.list-data {
height: calc(100% - 200px);
}
}
}
.week-group {
.module-ctx {
height: calc(100% - 60px);
}
}
.group-technician {
.module-ctx {
height: calc(100% - 60px);
}
}
.week-item {
.item-left {
height: 330px;
}
.item-right {
font-size: 24px;
padding-left: 20px;
.item-right-row {
line-height: 60px;
.check-state {
line-height: 60px;
padding: 0px 10px;
border-radius: 10px;
}
}
}
}
}
}
</style>

View File

@ -2,7 +2,7 @@
<div class="project-detail main-page">
<el-col :span="6" class="h100">
<module-one-1-1 label="项目概况">
<img src="images/icon2001.png" class="img-openwin" @click="showDetailDlg" />
<img src="/cdn/bsimages/icon2001.png" class="img-openwin" @click="showDetailDlg" />
<el-tooltip :content="selProject?.projectName || ''" placement="top">
<div class="glr-title prj-info-title">{{ selProject?.projectName || "" }}</div>
</el-tooltip>
@ -12,7 +12,7 @@
<div class="dept-title">建设单位</div>
<div v-if="deptType1 == null" class="dept-nodata"></div>
<div class="dept-info" v-else>
<img class="dept-img" src="images/company_3.png" />
<img class="dept-img" src="/cdn/bsimages/company_3.png" />
<div class="dept-row">
<div class="dept-name" :title="deptType1.deptName">{{ deptType1.deptName }}</div>
<div class="dept-leader-phone" :title="(deptType1.leader || '') + ' ' + (deptType1.phone || '')">
@ -26,7 +26,7 @@
<div class="dept-title">设计单位</div>
<div v-if="deptType2 == null" class="dept-nodata"></div>
<div class="dept-info" v-else>
<img class="dept-img" src="images/company_2.png" />
<img class="dept-img" src="/cdn/bsimages/company_2.png" />
<div class="dept-row">
<div class="dept-name" :title="deptType2.deptName">{{ deptType2.deptName }}</div>
<div class="dept-leader-phone" :title="(deptType2.leader || '') + ' ' + (deptType2.phone || '')">
@ -42,7 +42,7 @@
<div class="dept-title">总包单位</div>
<div v-if="deptType3.deptName == null" class="dept-nodata"></div>
<div class="dept-info" v-else>
<img class="dept-img" src="images/company_3.png" />
<img class="dept-img" src="/cdn/bsimages/company_3.png" />
<div class="dept-row">
<div class="dept-name">{{ deptType3.deptName }}</div>
<div class="dept-leader-phone" :title="(deptType3.leader || '') + ' ' + (deptType3.phone || '')">
@ -56,7 +56,7 @@
<div class="dept-title">监理单位</div>
<div v-if="deptType4 == null" class="dept-nodata"></div>
<div class="dept-info" v-else>
<img class="dept-img" src="images/company_11.png" />
<img class="dept-img" src="/cdn/bsimages/company_11.png" />
<div class="dept-row">
<div class="dept-name" :title="deptType4.deptName">{{ deptType4.deptName }}</div>
<div class="dept-leader-phone" :title="(deptType4.leader || '') + ' ' + (deptType4.phone || '')">
@ -72,7 +72,7 @@
<div class="dept-title">检测单位</div>
<div v-if="deptType5 == null" class="dept-nodata"></div>
<div class="dept-info" v-else>
<img class="dept-img" src="images/company_12.png" />
<img class="dept-img" src="/cdn/bsimages/company_12.png" />
<div class="dept-row">
<div class="dept-name" :title="deptType5.deptName">{{ deptType5.deptName }}</div>
<div class="dept-leader-phone" :title="(deptType5.leader || '') + ' ' + (deptType5.phone || '')">
@ -87,7 +87,7 @@
<div class="dept-title">勘察单位</div>
<div v-if="deptType6 == null" class="dept-nodata"></div>
<div class="dept-info" v-else>
<img class="dept-img" src="images/company_10.png" />
<img class="dept-img" src="/cdn/bsimages/company_10.png" />
<div class="dept-row">
<div class="dept-name" :title="deptType6.deptName">{{ deptType6.deptName }}</div>
<div class="dept-leader-phone" :title="(deptType6.leader || '') + ' ' + (deptType6.phone || '')">
@ -101,7 +101,7 @@
</div>
</module-one-1-1>
<module-one-1-1 label="劳务人员概况">
<img src="images/icon2001.png" class="img-openwin" v-if="attendanceTotal > 0" @click="doShowAttendanceDetail" />
<img src="/cdn/bsimages/icon2001.png" class="img-openwin" v-if="attendanceTotal > 0" @click="doShowAttendanceDetail" />
<div class="attendance-info warning-info">
<div class="attendance-info-title warning-info-title">
<div :class="attendanceNav == 0 ? 'active' : ''" @click="doAttendanceNav(0, '在岗人员')">在岗人员</div>
@ -182,7 +182,7 @@
<div></div>
<div class="modify-project-amount" @mouseout="costMouseout" @mouseover="costMouseover">
<div class="modify-btn">
<img src="images/foot_left.png" @click="modifyLeftBtn" />
<img src="/cdn/bsimages/foot_left.png" @click="modifyLeftBtn" />
</div>
<div class="modify-content" id="modifyContent" v-if="selProject">
<div class="modify-content-overflow">
@ -324,7 +324,7 @@
</div>
</div>
<div class="modify-btn">
<img src="images/foot_right.png" @click="modifyRightBtn" />
<img src="/cdn/bsimages/foot_right.png" @click="modifyRightBtn" />
</div>
</div>
<div class="prj-img-list">

View File

@ -2,7 +2,7 @@
<div class="project-labor main-page">
<el-col :span="6" class="h100">
<module-one-1-1 label="劳务人员概况" class="labor-base">
<img src="images/icon2001.png" class="img-openwin" v-if="attendanceTotal > 0" @click="doShowAttendanceDetail" />
<img src="/cdn/bsimages/icon2001.png" class="img-openwin" v-if="attendanceTotal > 0" @click="doShowAttendanceDetail" />
<div class="attendance-info warning-info">
<div class="attendance-info-title warning-info-title">
<div :class="attendanceNav == 0 ? 'active' : ''" @click="doAttendanceNav(0, '在岗人员')">在岗人员</div>

View File

@ -10,7 +10,7 @@
</div>
<div class="scroll data-list" :key="dataKey">
<div v-if="rows.length == 0" style="text-align: center;" class="div-no-data">
<img src="images/nodata.png" style="width: 120px;" />
<img src="/cdn/bsimages/nodata.png" style="width: 120px;" />
<div style="text-align: center;font-size: 12px;color:#888;">暂无数据</div>
</div>
<div v-for="(it, idx) in rows" :key="idx" class="data-item">

View File

@ -20,7 +20,7 @@
</el-col>
</module-one-1-1>
<module-one-2-1 label="日常巡检">
<img src="images/icon2001.png" class="img-openwin" @click="showDlg(1)" />
<img src="/cdn/bsimages/icon2001.png" class="img-openwin" @click="showDlg(1)" />
<div class="div-item-chart">
<div class="data-item-chart">
<div class="total-info">
@ -78,13 +78,13 @@
</el-col>
<el-col :span="18" class="h100">
<module-one-1-3 label="隐患类别统计">
<img src="images/icon2001.png" class="img-openwin" @click="showDlg(0)" />
<img src="/cdn/bsimages/icon2001.png" class="img-openwin" @click="showDlg(0)" />
<my-chart :key="chartKey2" id="project-safety-check-chart2" width="100%" height="100%" :render="renderChart2"></my-chart>
</module-one-1-3>
<el-row class="el-right">
<el-col :span="8">
<module-one-2-1 label="周检">
<img src="images/icon2001.png" class="img-openwin" @click="showDlg(2)" />
<img src="/cdn/bsimages/icon2001.png" class="img-openwin" @click="showDlg(2)" />
<div class="div-item-chart">
<div class="data-item-chart">
<div class="total-info">
@ -142,7 +142,7 @@
</el-col>
<el-col :span="8">
<module-one-2-1 label="月检">
<img src="images/icon2001.png" class="img-openwin" @click="showDlg(3)" />
<img src="/cdn/bsimages/icon2001.png" class="img-openwin" @click="showDlg(3)" />
<div class="div-item-chart">
<div class="data-item-chart">
<div class="total-info">
@ -200,7 +200,7 @@
</el-col>
<el-col :span="8">
<module-one-2-1 label="专项检查">
<img src="images/icon2001.png" class="img-openwin" @click="showDlg(4)" />
<img src="/cdn/bsimages/icon2001.png" class="img-openwin" @click="showDlg(4)" />
<div class="div-item-chart">
<div class="data-item-chart">
<div class="total-info">

View File

@ -10,7 +10,7 @@
</div>
<div class="scroll data-list" :key="dataKey">
<div v-if="rows.length == 0" style="text-align: center;" class="div-no-data">
<img src="images/nodata.png" style="width: 120px;" />
<img src="/cdn/bsimages/nodata.png" style="width: 120px;" />
<div style="text-align: center;font-size: 12px;color:#888;">暂无数据</div>
</div>
<div v-for="(it, idx) in rows" :key="idx" class="data-item">

View File

@ -5,7 +5,7 @@
<div class="czz-number">
<div class="czz-number-content">
<div class="czz-number-img czz-number-img-blue">
<img src="images/circle_icon_25.png" />
<img src="/cdn/bsimages/circle_icon_25.png" />
</div>
<div class="survey_content_number">
<p>升降机总数</p>
@ -16,7 +16,7 @@
</div>
<div class="czz-number-content">
<div class="czz-number-img czz-number-img-green">
<img src="images/circle_icon_9.png" />
<img src="/cdn/bsimages/circle_icon_9.png" />
</div>
<div class="survey_content_number">
<p>监控总数</p>
@ -37,7 +37,7 @@
<div :class="index == i ? 'list-con active' : 'list-con'">
<div class="list-top">
<div class="list-img">
<img src="images/list_img_tj.png" />
<img src="/cdn/bsimages/list_img_tj.png" />
</div>
<div class="list-info">
<div class="list-info-name">
@ -219,7 +219,7 @@
<div class="glr-login-number-bgd glr-login-number-red-bgd"></div>
<div class="glr-login-number analyse-login-numbe">
<div v-cloak>
<img src="images/text_red_spot.png" />
<img src="/cdn/bsimages/text_red_spot.png" />
{{ item.warnType }}
</div>
<div class="glr-rate-value glr-rate-red-value">
@ -267,7 +267,7 @@
<div class="xhz-device-data-min" style="padding: 25px 10px">
<div class="survey_content">
<div class="survey_content_img xhz-education_bgd">
<img src="images/education_icon_5.png" />
<img src="/cdn/bsimages/education_icon_5.png" />
</div>
</div>
<div class="xhz-current-value-data">
@ -282,7 +282,7 @@
<div class="xhz-device-data-min" style="padding: 25px 10px">
<div class="survey_content">
<div class="survey_content_img xhz-education_bgd">
<img src="images/education_icon_6.png" />
<img src="/cdn/bsimages/education_icon_6.png" />
</div>
</div>
<div class="xhz-current-value-data">
@ -297,7 +297,7 @@
<div class="xhz-device-data-min" style="padding: 25px 10px">
<div class="survey_content">
<div class="survey_content_img xhz-education_bgd">
<img src="images/education_icon_7.png" />
<img src="/cdn/bsimages/education_icon_7.png" />
</div>
</div>
<div class="xhz-current-value-data">
@ -312,7 +312,7 @@
<div class="xhz-device-data-min" style="padding: 25px 10px">
<div class="survey_content">
<div class="survey_content_img xhz-education_bgd">
<img src="images/education_icon_8.png" />
<img src="/cdn/bsimages/education_icon_8.png" />
</div>
</div>
<div class="xhz-current-value-data">
@ -327,7 +327,7 @@
<div class="xhz-device-data-min" style="padding: 25px 10px">
<div class="survey_content">
<div class="survey_content_img xhz-education_bgd">
<img src="images/education_icon_9.png" />
<img src="/cdn/bsimages/education_icon_9.png" />
</div>
</div>
<div class="xhz-current-value-data">
@ -342,7 +342,7 @@
<div class="xhz-device-data-min" style="padding: 25px 10px">
<div class="survey_content">
<div class="survey_content_img xhz-education_bgd">
<img src="images/education_icon_9.png" />
<img src="/cdn/bsimages/education_icon_9.png" />
</div>
</div>
<div class="xhz-current-value-data">
@ -357,7 +357,7 @@
<div class="xhz-device-data-min" style="padding: 25px 10px">
<div class="survey_content">
<div class="survey_content_img xhz-education_bgd">
<img src="images/education_icon_10.png" />
<img src="/cdn/bsimages/education_icon_10.png" />
</div>
</div>
<div class="xhz-current-value-data">
@ -372,7 +372,7 @@
<div class="xhz-device-data-min" style="padding: 25px 10px">
<div class="survey_content">
<div class="survey_content_img xhz-education_bgd">
<img src="images/education_icon_11.png" />
<img src="/cdn/bsimages/education_icon_11.png" />
</div>
</div>
<div class="xhz-current-value-data">
@ -387,7 +387,7 @@
<div class="xhz-device-data-min" style="padding: 25px 10px">
<div class="survey_content">
<div class="survey_content_img xhz-education_bgd">
<img src="images/education_icon_12.png" />
<img src="/cdn/bsimages/education_icon_12.png" />
</div>
</div>
<div class="xhz-current-value-data">
@ -402,7 +402,7 @@
<div class="xhz-device-data-min" style="padding: 25px 10px">
<div class="survey_content">
<div class="survey_content_img xhz-education_bgd">
<img src="images/education_icon_2.png" />
<img src="/cdn/bsimages/education_icon_2.png" />
</div>
</div>
<div class="xhz-current-value-data">
@ -417,7 +417,7 @@
<div class="xhz-device-data-min" style="padding: 25px 10px">
<div class="survey_content">
<div class="survey_content_img xhz-education_bgd">
<img src="images/education_icon_13.png" />
<img src="/cdn/bsimages/education_icon_13.png" />
</div>
</div>
<div class="xhz-current-value-data">

View File

@ -6,7 +6,7 @@
<el-col :span="5">
<div class="process-control-current-value-con">
<div class="current-value-img">
<img src="images/hj_wendu.png" />
<img src="/cdn/bsimages/hj_wendu.png" />
</div>
<div class="process-control-current-value-data">
<div>A相电压</div>
@ -20,7 +20,7 @@
<el-col :span="5">
<div class="process-control-current-value-con">
<div class="current-value-img">
<img src="images/hj_wendu.png" />
<img src="/cdn/bsimages/hj_wendu.png" />
</div>
<div class="process-control-current-value-data">
<div>B相电压</div>
@ -34,7 +34,7 @@
<el-col :span="5">
<div class="process-control-current-value-con">
<div class="current-value-img">
<img src="images/hj_wendu.png" />
<img src="/cdn/bsimages/hj_wendu.png" />
</div>
<div class="process-control-current-value-data">
<div>C相电压</div>
@ -48,7 +48,7 @@
<el-col :span="5">
<div class="process-control-current-value-con">
<div class="current-value-img">
<img src="images/huanjingweidu.png" />
<img src="/cdn/bsimages/huanjingweidu.png" />
</div>
<div class="process-control-current-value-data">
<div>零线温度</div>
@ -75,7 +75,7 @@
<el-col :span="5">
<div class="process-control-current-value-con">
<div class="current-value-img">
<img src="images/hj_dianliu.png" />
<img src="/cdn/bsimages/hj_dianliu.png" />
</div>
<div class="process-control-current-value-data">
<div>A相电流</div>
@ -89,7 +89,7 @@
<el-col :span="5">
<div class="process-control-current-value-con">
<div class="current-value-img">
<img src="images/hj_dianliu.png" />
<img src="/cdn/bsimages/hj_dianliu.png" />
</div>
<div class="process-control-current-value-data">
<div>B相电流</div>
@ -103,7 +103,7 @@
<el-col :span="5">
<div class="process-control-current-value-con">
<div class="current-value-img">
<img src="images/hj_dianliu.png" />
<img src="/cdn/bsimages/hj_dianliu.png" />
</div>
<div class="process-control-current-value-data">
<div>C相电流</div>

View File

@ -20,7 +20,7 @@
</el-col>
</module-one-1-1>
<module-one-2-1 label="日常巡检">
<img src="images/icon2001.png" class="img-openwin" @click="showDlg(1)" />
<img src="/cdn/bsimages/icon2001.png" class="img-openwin" @click="showDlg(1)" />
<div class="div-item-chart">
<div class="data-item-chart">
<div class="total-info">
@ -78,13 +78,13 @@
</el-col>
<el-col :span="18" class="h100">
<module-one-1-3 label="隐患类别统计">
<img src="images/icon2001.png" class="img-openwin" @click="showDlg(0)" />
<img src="/cdn/bsimages/icon2001.png" class="img-openwin" @click="showDlg(0)" />
<my-chart :key="chartKey2" id="project-safety-check-chart2" width="100%" height="100%" :render="renderChart2"></my-chart>
</module-one-1-3>
<el-row class="el-right">
<el-col :span="8">
<module-one-2-1 label="周检">
<img src="images/icon2001.png" class="img-openwin" @click="showDlg(2)" />
<img src="/cdn/bsimages/icon2001.png" class="img-openwin" @click="showDlg(2)" />
<div class="div-item-chart">
<div class="data-item-chart">
<div class="total-info">
@ -142,7 +142,7 @@
</el-col>
<el-col :span="8">
<module-one-2-1 label="月检">
<img src="images/icon2001.png" class="img-openwin" @click="showDlg(3)" />
<img src="/cdn/bsimages/icon2001.png" class="img-openwin" @click="showDlg(3)" />
<div class="div-item-chart">
<div class="data-item-chart">
<div class="total-info">
@ -200,7 +200,7 @@
</el-col>
<el-col :span="8">
<module-one-2-1 label="专项检查">
<img src="images/icon2001.png" class="img-openwin" @click="showDlg(4)" />
<img src="/cdn/bsimages/icon2001.png" class="img-openwin" @click="showDlg(4)" />
<div class="div-item-chart">
<div class="data-item-chart">
<div class="total-info">

View File

@ -10,7 +10,7 @@
</div>
</template>
<div v-else style="text-align: center" class="div-no-data">
<img src="images/nodata.png" style="width: 120px" />
<img src="/cdn/bsimages/nodata.png" style="width: 120px" />
<div style="text-align: center; font-size: 12px; color: #888">暂无数据</div>
</div>
</div>
@ -27,7 +27,7 @@
</video>
</template>
<div v-else style="text-align: center" class="div-no-data">
<img src="images/nodata.png" style="width: 120px" />
<img src="/cdn/bsimages/nodata.png" style="width: 120px" />
<div style="text-align: center; font-size: 12px; color: #888">暂无数据</div>
</div>
</module-one-3-3>

View File

@ -3,7 +3,7 @@
<el-col :span="4" class="h100">
<module-one-1-3 label="视频监控列表" @headerClick="showAllVideo">
<div v-if="videoMonitors.length == 0" style="text-align: center;margin-top: 20vh;">
<img src="images/nodata.png" style="width: 240px;" />
<img src="/cdn/bsimages/nodata.png" style="width: 240px;" />
<div style="text-align: center;">暂无数据</div>
</div>
<div class="video-list">
@ -16,7 +16,7 @@
</el-col>
<el-col :span="20" class="h100">
<div v-if="videoMonitors.length == 0" style="text-align: center;margin-top: 20vh;">
<img src="images/nodata.png" style="width: 240px;" />
<img src="/cdn/bsimages/nodata.png" style="width: 240px;" />
<div style="text-align: center;">暂无数据</div>
</div>
<template v-else>

View File

@ -70,7 +70,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test='activeTags == "jxz"'> and (ppc.approve_status != '100' or ppc.check_result is null or ppc.check_result != '1')</if>
<if test='activeTags == "jwc"'> and ppc.approve_status = '100' and ppc.check_result = '1'</if>
</if>
<if test="remark!=null and remark='lastWeek'">
<if test="remark!=null and remark=='lastWeek'">
and ppc.checking_date BETWEEN
DATE_FORMAT(CURDATE() - INTERVAL (WEEKDAY(CURDATE()) ) DAY, '%Y-%m-%d 00:00:00')
AND

View File

@ -4,7 +4,11 @@ const sessionCache = {
return
}
if (key != null && value != null) {
sessionStorage.setItem(key, value)
try{
sessionStorage.setItem(key, value)
}catch(e){
console.log(e)
}
}
},
get (key) {

View File

@ -40,7 +40,7 @@
<el-dialog title="保存视点" :width="400" v-model="visible" :before-close="handleCancel" class="dialog-bim-setting-viewpoint" :destroy-on-close="true" :close-on-click-modal="false" :modal="false" :class="{ 'mobile-Model': isMobile }">
<el-form :model="form" :rules="formRules" ref="form" label-width="80px">
<el-form-item label="视点名称" prop="title">
<el-input v-model="form.title" placeholder="请输入视点名称" :rules="[{ required: true, message: '请输入视点名称' }]" />
<el-input v-model="form.title" placeholder="请输入视点名称" :rules="[{ required: true, message: '请输入视点名称' }]" @keydown.stop @keyup.stop @keypress.stop/>
</el-form-item>
<el-form-item label="缩略图">
<el-image style="width: 100%" :src="previewImage" :preview-src-list="[previewImage]" />