dev_xd
姜玉琦 2025-05-07 00:38:20 +08:00
commit ea16bd847c
9 changed files with 700 additions and 720 deletions

View File

@ -27,25 +27,13 @@
</div> </div>
</div> </div>
<certificate-bar-chart <certificate-bar-chart :data="certificateData" :height="100"></certificate-bar-chart>
:data="certificateData"
:height="100"
></certificate-bar-chart>
<div class="rank-chart" style="height: calc(100% - 224px)"> <div class="rank-chart" style="height: calc(100% - 224px)">
<div class="rank-chart-title">监控列表</div> <div class="rank-chart-title">监控列表</div>
<div class="list-max" style="height: calc(100% - 63px)"> <div class="list-max" style="height: calc(100% - 63px)">
<div <div class="list-min" id="listMin" @mouseout="listMinMouseout" @mouseover="listMinMouseover">
class="list-min" <div class="list-for" :key="i" v-for="(item, i) in listData" @click="onTowerCraneList(i)">
id="listMin"
@mouseout="listMinMouseout"
@mouseover="listMinMouseover"
>
<div
class="list-for"
v-for="(item, i) in listData"
@click="onTowerCraneList(i)"
>
<div :class="index == i ? 'list-con active' : 'list-con'"> <div :class="index == i ? 'list-con active' : 'list-con'">
<div class="list-top"> <div class="list-top">
<div class="list-img"> <div class="list-img">
@ -53,16 +41,13 @@
</div> </div>
<div class="list-info"> <div class="list-info">
<div class="list-info-name"> <div class="list-info-name">
设备名称<span>{{ item.deviceName }}</span> 设备名称
<span>{{ item.deviceName }}</span>
</div> </div>
<div class="list-info-name"> <div class="list-info-name">
设备状态 设备状态
<span class="list-info-state" v-if="item.deviceState != 0" <span class="list-info-state" v-if="item.deviceState != 0">线</span>
>离线</span <span class="list-info-state active" v-if="item.deviceState == 0">线</span>
>
<span class="list-info-state active" v-if="item.deviceState == 0"
>在线</span
>
</div> </div>
</div> </div>
</div> </div>
@ -70,29 +55,34 @@
<el-row> <el-row>
<el-col :span="10"> <el-col :span="10">
<div class="list-details"> <div class="list-details">
司机<span v-cloak>{{ item.driverName }}</span> 司机
<span v-cloak>{{ item.driverName }}</span>
</div> </div>
</el-col> </el-col>
<el-col :span="14"> <el-col :span="14">
<div class="list-details"> <div class="list-details">
电话<span v-cloak>{{ item.driverPhone }}</span> 电话
<span v-cloak>{{ item.driverPhone }}</span>
</div> </div>
</el-col> </el-col>
<el-col :span="10"> <el-col :span="10">
<div class="list-details"> <div class="list-details">
安全员<span v-cloak>{{ item.safetyOfficerName }}</span> 安全员
<span v-cloak>{{ item.safetyOfficerName }}</span>
</div> </div>
</el-col> </el-col>
<el-col :span="14"> <el-col :span="14">
<div class="list-details"> <div class="list-details">
电话<span v-cloak>{{ item.safetyOfficerPhone }}</span> 电话
<span v-cloak>{{ item.safetyOfficerPhone }}</span>
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
</div> </div>
<div class="list-time"> <div class="list-time">
最后一次启用时间<span v-cloak>{{ item.lastEnabledTime }}</span> 最后一次启用时间
<span v-cloak>{{ item.lastEnabledTime }}</span>
</div> </div>
</div> </div>
</div> </div>
@ -176,11 +166,7 @@
</el-col> </el-col>
</el-row> </el-row>
<div class="safe-tower-crane-max"> <div class="safe-tower-crane-max">
<div <div class="safe-tower-crane-min" @mouseout="listMinMouseout" @mouseover="listMinMouseover">
class="safe-tower-crane-min"
@mouseout="listMinMouseout"
@mouseover="listMinMouseover"
>
<el-row> <el-row>
<el-col :span="2"> <el-col :span="2">
<div class="safe-tower-left" @click="safeTowerLeft"></div> <div class="safe-tower-left" @click="safeTowerLeft"></div>
@ -228,20 +214,13 @@
<div class="survey-oil-hr"></div> <div class="survey-oil-hr"></div>
<div class="survey-oil-text">报警类型</div> <div class="survey-oil-text">报警类型</div>
</div> </div>
<div <div class="analyse-number-max" id="afootOverflowType" @mouseout="listMinMouseoutType" @mouseover="listMinMouseoverType">
class="analyse-number-max" <div :key="index" class="glr-login-number-max analyse-num-max" v-for="(item,index) in warningList">
id="afootOverflowType"
@mouseout="listMinMouseoutType"
@mouseover="listMinMouseoverType"
>
<div
class="glr-login-number-max analyse-num-max"
v-for="item in warningList"
>
<div class="glr-login-number-bgd glr-login-number-red-bgd"></div> <div class="glr-login-number-bgd glr-login-number-red-bgd"></div>
<div class="glr-login-number analyse-login-numbe"> <div class="glr-login-number analyse-login-numbe">
<div v-cloak> <div v-cloak>
<img src="images/text_red_spot.png" />{{ item.warnType }} <img src="images/text_red_spot.png" />
{{ item.warnType }}
</div> </div>
<div class="glr-rate-value glr-rate-red-value"> <div class="glr-rate-value glr-rate-red-value">
<span v-cloak>{{ item.warnCount }}</span> <span v-cloak>{{ item.warnCount }}</span>
@ -258,33 +237,17 @@
<div class="analyse-text">正在发生</div> <div class="analyse-text">正在发生</div>
</div> </div>
<div class="afoot-content safe-afoot-content"> <div class="afoot-content safe-afoot-content">
<div <div class="afoot-overflow safe-afoot-overflow" id="afootOverflow" @mouseout="warningListMinMouseout" @mouseover="warningListMinMouseover">
class="afoot-overflow safe-afoot-overflow"
id="afootOverflow"
@mouseout="warningListMinMouseout"
@mouseover="warningListMinMouseover"
>
<div v-if="warningData.length == 0" class="not-data"></div> <div v-if="warningData.length == 0" class="not-data"></div>
<div <div :key="idx" v-if="warningData.length > 0" class="afoot-con-for" style="height: 180px" v-for="(item,idx) in warningData">
v-if="warningData.length > 0" <div class="afoot-machinery-nam safe-afoot-machinery-nam" v-cloak>{{ item.warn_context }}</div>
class="afoot-con-for"
style="height: 180px"
v-for="item in warningData"
>
<div class="afoot-machinery-nam safe-afoot-machinery-nam" v-cloak>
{{ item.warn_context }}
</div>
<div class="afoot-machinery-info"> <div class="afoot-machinery-info">
<div class="afoot-machinery-img"> <div class="afoot-machinery-img">
<img :src="item.images" v-if="item.images" /> <img :src="item.images" v-if="item.images" />
</div> </div>
<div class="afoot-machinery-data"> <div class="afoot-machinery-data">
<div class="afoot-machinery-state" v-cloak> <div class="afoot-machinery-state" v-cloak>{{ item.warn_value }}</div>
预警值{{ item.warn_value }} <div class="afoot-machinery-time" v-cloak>{{ item.warn_time }}</div>
</div>
<div class="afoot-machinery-time" v-cloak>
{{ item.warn_time }}
</div>
</div> </div>
</div> </div>
</div> </div>
@ -309,7 +272,9 @@
</div> </div>
<div class="xhz-current-value-data"> <div class="xhz-current-value-data">
<div>高度</div> <div>高度</div>
<p><span v-cloak v-html="footInfo.foot0"></span> m</p> <p>
<span v-cloak v-html="footInfo.foot0"></span> m
</p>
</div> </div>
</div> </div>
</el-col> </el-col>
@ -322,7 +287,9 @@
</div> </div>
<div class="xhz-current-value-data"> <div class="xhz-current-value-data">
<div>楼层</div> <div>楼层</div>
<p><span v-cloak v-html="footInfo.foot1"></span> </p> <p>
<span v-cloak v-html="footInfo.foot1"></span>
</p>
</div> </div>
</div> </div>
</el-col> </el-col>
@ -335,7 +302,9 @@
</div> </div>
<div class="xhz-current-value-data"> <div class="xhz-current-value-data">
<div>当前人数</div> <div>当前人数</div>
<p><span v-cloak v-html="footInfo.foot2"></span> </p> <p>
<span v-cloak v-html="footInfo.foot2"></span>
</p>
</div> </div>
</div> </div>
</el-col> </el-col>
@ -348,7 +317,9 @@
</div> </div>
<div class="xhz-current-value-data"> <div class="xhz-current-value-data">
<div>当前载重</div> <div>当前载重</div>
<p><span v-cloak v-html="footInfo.foot3"></span> t</p> <p>
<span v-cloak v-html="footInfo.foot3"></span> t
</p>
</div> </div>
</div> </div>
</el-col> </el-col>
@ -361,7 +332,9 @@
</div> </div>
<div class="xhz-current-value-data"> <div class="xhz-current-value-data">
<div>倾角1</div> <div>倾角1</div>
<p><span v-cloak v-html="footInfo.foot4"></span> °</p> <p>
<span v-cloak v-html="footInfo.foot4"></span> °
</p>
</div> </div>
</div> </div>
</el-col> </el-col>
@ -374,7 +347,9 @@
</div> </div>
<div class="xhz-current-value-data"> <div class="xhz-current-value-data">
<div>倾角2</div> <div>倾角2</div>
<p><span v-cloak v-html="footInfo.foot5"></span> °</p> <p>
<span v-cloak v-html="footInfo.foot5"></span> °
</p>
</div> </div>
</div> </div>
</el-col> </el-col>
@ -387,7 +362,9 @@
</div> </div>
<div class="xhz-current-value-data"> <div class="xhz-current-value-data">
<div>风速</div> <div>风速</div>
<p><span v-cloak v-html="footInfo.foot6"></span> m/s</p> <p>
<span v-cloak v-html="footInfo.foot6"></span> m/s
</p>
</div> </div>
</div> </div>
</el-col> </el-col>
@ -400,7 +377,9 @@
</div> </div>
<div class="xhz-current-value-data"> <div class="xhz-current-value-data">
<div>速度</div> <div>速度</div>
<p><span v-cloak v-html="footInfo.foot7"></span> m/s</p> <p>
<span v-cloak v-html="footInfo.foot7"></span> m/s
</p>
</div> </div>
</div> </div>
</el-col> </el-col>
@ -413,7 +392,9 @@
</div> </div>
<div class="xhz-current-value-data"> <div class="xhz-current-value-data">
<div>速度方向</div> <div>速度方向</div>
<p><span v-cloak v-html="footInfo.foot8"></span></p> <p>
<span v-cloak v-html="footInfo.foot8"></span>
</p>
</div> </div>
</div> </div>
</el-col> </el-col>
@ -427,11 +408,7 @@
<div class="xhz-current-value-data"> <div class="xhz-current-value-data">
<div>前门状态</div> <div>前门状态</div>
<p> <p>
<span <span :class="footInfo.foot9 == '打开' ? 'open' : 'close'" v-cloak v-html="footInfo.foot9"></span>
:class="footInfo.foot9 == '打开' ? 'open' : 'close'"
v-cloak
v-html="footInfo.foot9"
></span>
</p> </p>
</div> </div>
</div> </div>
@ -446,11 +423,7 @@
<div class="xhz-current-value-data"> <div class="xhz-current-value-data">
<div>后门状态</div> <div>后门状态</div>
<p> <p>
<span <span :class="footInfo.foot10 == '打开' ? 'open' : 'close'" v-cloak v-html="footInfo.foot10"></span>
:class="footInfo.foot10 == '打开' ? 'open' : 'close'"
v-cloak
v-html="footInfo.foot10"
></span>
</p> </p>
</div> </div>
</div> </div>
@ -462,9 +435,11 @@
</template> </template>
<script> <script>
import debounce from "lodash.debounce"; import debounce from 'lodash.debounce'
import "@/components/tower-crane-value-1"; import '@/components/tower-crane-value-1'
import "@/components/tower-crane-value-2"; import '@/components/tower-crane-value-2'
import '@/components/dumbwaiter-1.js'
import '@/components/dumbwaiter-2.js'
export default { export default {
data() { data() {
return { return {
@ -477,8 +452,8 @@ export default {
index: 0, index: 0,
// //
dumbwaiterValue: {}, dumbwaiterValue: {},
comName: "dumbwaiter-1", comName: 'dumbwaiter-1',
direction: "right", direction: 'right',
deviceId: 0, deviceId: 0,
topInfo: { topInfo: {
top0: 0, top0: 0,
@ -500,8 +475,8 @@ export default {
foot6: 10, foot6: 10,
foot7: 10, foot7: 10,
foot8: 10, foot8: 10,
foot9: "", foot9: '',
foot10: "", foot10: '',
}, },
warningData: [], warningData: [],
dayWarnCount: 22, dayWarnCount: 22,
@ -513,114 +488,112 @@ export default {
warningInterval: undefined, warningInterval: undefined,
forIndex: 0, forIndex: 0,
warningData: [], warningData: [],
}; }
}, },
mounted() { mounted() {
this.$store.dispatch("ChangeNav", 308); this.$store.dispatch('ChangeNav', 308)
this.$bus.$on("projectChange", (prj) => { this.$bus.$on('projectChange', (prj) => {
this.selProject = prj; this.selProject = prj
this.init(); this.init()
}); })
this.selProject = this.$store.getters.selProject; this.selProject = this.$store.getters.selProject
this.init(); this.init()
}, },
created() {}, created() {},
methods: { methods: {
init() { init() {
this.certificateData = JSON.parse( this.certificateData = JSON.parse('[{"text":"在线数量","value":5},{"text":"离线数量","value":1}]')
'[{"text":"在线数量","value":5},{"text":"离线数量","value":1}]'
);
this.listData = JSON.parse( this.listData = JSON.parse(
'[{"createUserid":null,"ratedSpeed":"1.8","delFlag":"0","deviceId":"3223081738","deviceName":"2#-2","ratedPeopleCount":"9","entryTime":"2024-03-09 15:35:42","lastEnabledTime":"2024-03-09 15:35:42","safetyOfficerName":"马宁","maxHeight":120.5,"createTime":"2023-09-12 18:25:13","cageSize":"800*800","ratedLoad":"2000","safetyOfficerPhone":"18629159632","driverName":"张巧团","driverPhone":"17324808902","id":5,"deviceState":"0","projectId":"98"},{"createUserid":null,"ratedSpeed":"4.9","delFlag":"0","deviceId":"3223081741","deviceName":"3223081741","ratedPeopleCount":"9","entryTime":"2024-03-09 15:35:42","lastEnabledTime":"2024-03-10 10:32:49","safetyOfficerName":"马宁","maxHeight":160.2,"createTime":"2023-09-12 18:25:13","cageSize":"800*800","ratedLoad":"2000","safetyOfficerPhone":"18629159632","driverName":null,"driverPhone":null,"id":6,"deviceState":"0","projectId":"98"},{"createUserid":null,"ratedSpeed":"4.9","delFlag":"0","deviceId":"3223081748","deviceName":"3223081748","ratedPeopleCount":"9","entryTime":"2024-03-09 15:35:42","lastEnabledTime":"2024-03-10 10:46:36","safetyOfficerName":"马宁","maxHeight":187.2,"createTime":"2023-09-12 18:25:13","cageSize":"800*800","ratedLoad":"2000","safetyOfficerPhone":"18629159632","driverName":null,"driverPhone":null,"id":7,"deviceState":"0","projectId":"98"},{"createUserid":null,"ratedSpeed":"1.6","delFlag":"0","deviceId":"3223081722","deviceName":"3#-1","ratedPeopleCount":"9","entryTime":null,"lastEnabledTime":"2024-03-10 09:48:34","safetyOfficerName":"马宁","maxHeight":122.9,"createTime":"2023-09-12 18:25:13","cageSize":"800*800","ratedLoad":"2000","safetyOfficerPhone":"18629159632","driverName":"高军平","driverPhone":"15139573902","id":8,"deviceState":"0","projectId":"98"},{"createUserid":null,"ratedSpeed":"1.6","delFlag":"0","deviceId":"3223081749","deviceName":"3#-2","ratedPeopleCount":"9","entryTime":null,"lastEnabledTime":"2024-03-09 13:47:07","safetyOfficerName":"马宁","maxHeight":124.8,"createTime":"2023-09-12 18:25:13","cageSize":null,"ratedLoad":"2000","safetyOfficerPhone":"18629159632","driverName":"郭伟娟","driverPhone":"15239586568","id":9,"deviceState":"0","projectId":"98"}]' '[{"createUserid":null,"ratedSpeed":"1.8","delFlag":"0","deviceId":"3223081738","deviceName":"2#-2","ratedPeopleCount":"9","entryTime":"2024-03-09 15:35:42","lastEnabledTime":"2024-03-09 15:35:42","safetyOfficerName":"马宁","maxHeight":120.5,"createTime":"2023-09-12 18:25:13","cageSize":"800*800","ratedLoad":"2000","safetyOfficerPhone":"18629159632","driverName":"张巧团","driverPhone":"17324808902","id":5,"deviceState":"0","projectId":"98"},{"createUserid":null,"ratedSpeed":"4.9","delFlag":"0","deviceId":"3223081741","deviceName":"3223081741","ratedPeopleCount":"9","entryTime":"2024-03-09 15:35:42","lastEnabledTime":"2024-03-10 10:32:49","safetyOfficerName":"马宁","maxHeight":160.2,"createTime":"2023-09-12 18:25:13","cageSize":"800*800","ratedLoad":"2000","safetyOfficerPhone":"18629159632","driverName":null,"driverPhone":null,"id":6,"deviceState":"0","projectId":"98"},{"createUserid":null,"ratedSpeed":"4.9","delFlag":"0","deviceId":"3223081748","deviceName":"3223081748","ratedPeopleCount":"9","entryTime":"2024-03-09 15:35:42","lastEnabledTime":"2024-03-10 10:46:36","safetyOfficerName":"马宁","maxHeight":187.2,"createTime":"2023-09-12 18:25:13","cageSize":"800*800","ratedLoad":"2000","safetyOfficerPhone":"18629159632","driverName":null,"driverPhone":null,"id":7,"deviceState":"0","projectId":"98"},{"createUserid":null,"ratedSpeed":"1.6","delFlag":"0","deviceId":"3223081722","deviceName":"3#-1","ratedPeopleCount":"9","entryTime":null,"lastEnabledTime":"2024-03-10 09:48:34","safetyOfficerName":"马宁","maxHeight":122.9,"createTime":"2023-09-12 18:25:13","cageSize":"800*800","ratedLoad":"2000","safetyOfficerPhone":"18629159632","driverName":"高军平","driverPhone":"15139573902","id":8,"deviceState":"0","projectId":"98"},{"createUserid":null,"ratedSpeed":"1.6","delFlag":"0","deviceId":"3223081749","deviceName":"3#-2","ratedPeopleCount":"9","entryTime":null,"lastEnabledTime":"2024-03-09 13:47:07","safetyOfficerName":"马宁","maxHeight":124.8,"createTime":"2023-09-12 18:25:13","cageSize":null,"ratedLoad":"2000","safetyOfficerPhone":"18629159632","driverName":"郭伟娟","driverPhone":"15239586568","id":9,"deviceState":"0","projectId":"98"}]'
); )
this.warningList = [ this.warningList = [
{ warnType: "报警类型A", warnCount: 4 }, { warnType: '报警类型A', warnCount: 4 },
{ warnType: "报警类型B", warnCount: 4 }, { warnType: '报警类型B', warnCount: 4 },
{ warnType: "报警类型C", warnCount: 4 }, { warnType: '报警类型C', warnCount: 4 },
{ warnType: "报警类型D", warnCount: 4 }, { warnType: '报警类型D', warnCount: 4 },
{ warnType: "报警类型E", warnCount: 4 }, { warnType: '报警类型E', warnCount: 4 },
{ warnType: "报警类型F", warnCount: 4 }, { warnType: '报警类型F', warnCount: 4 },
{ warnType: "报警类型G", warnCount: 4 }, { warnType: '报警类型G', warnCount: 4 },
{ warnType: "报警类型H", warnCount: 4 }, { warnType: '报警类型H', warnCount: 4 },
]; ]
this.warningData = [ this.warningData = [
{ {
warn_value: "预警A", warn_value: '预警A',
images: ["images/831.jpg"], images: ['images/831.jpg'],
warn_context: "告警内容", warn_context: '告警内容',
warn_time: "24-02-02 14:00", warn_time: '24-02-02 14:00',
project_abbreviation: "xxx项目", project_abbreviation: 'xxx项目',
}, },
{ {
warn_value: "预警A", warn_value: '预警A',
images: ["images/831.jpg"], images: ['images/831.jpg'],
warn_context: "告警内容", warn_context: '告警内容',
time: "24-02-02 14:00", time: '24-02-02 14:00',
project_abbreviation: "xxx项目", project_abbreviation: 'xxx项目',
}, },
{ {
warn_value: "预警A", warn_value: '预警A',
images: ["images/831.jpg"], images: ['images/831.jpg'],
warn_context: "告警内容", warn_context: '告警内容',
time: "24-02-02 14:00", time: '24-02-02 14:00',
project_abbreviation: "xxx项目", project_abbreviation: 'xxx项目',
}, },
]; ]
//list //list
if (this.listData.length > 0) { if (this.listData.length > 0) {
this.interval = setInterval(this.automaticRoll, 10000); this.interval = setInterval(this.automaticRoll, 10000)
} }
// //
this.warningTypeInterval = setInterval(this.automaticRollType, 5000); this.warningTypeInterval = setInterval(this.automaticRollType, 5000)
// //
this.warningInterval = setInterval(this.safeAutomaticRoll, 5000); this.warningInterval = setInterval(this.safeAutomaticRoll, 5000)
this.index = 0; this.index = 0
this.deviceId = this.listData[0].id; this.deviceId = this.listData[0].id
this.updateDumbwaiterValue(); this.updateDumbwaiterValue()
}, },
onTowerCraneList(n) { onTowerCraneList(n) {
this.index = n; this.index = n
this.deviceId = this.listData[n].id; this.deviceId = this.listData[n].id
// //
this.direction = "right"; this.direction = 'right'
if (this.comName == "dumbwaiter-1") { if (this.comName == 'dumbwaiter-1') {
this.comName = "dumbwaiter-2"; this.comName = 'dumbwaiter-2'
} else { } else {
this.comName = "dumbwaiter-1"; this.comName = 'dumbwaiter-1'
} }
}, },
// //
listMinMouseover() { listMinMouseover() {
clearInterval(this.interval); clearInterval(this.interval)
}, },
listMinMouseout() { listMinMouseout() {
this.interval = setInterval(this.automaticRoll, 10000); this.interval = setInterval(this.automaticRoll, 10000)
}, },
automaticRoll() { automaticRoll() {
// //
if (this.direction == "right") { if (this.direction == 'right') {
if (this.index == this.listData.length - 1) { if (this.index == this.listData.length - 1) {
this.index = 0; this.index = 0
} else { } else {
this.index = this.index + 1; this.index = this.index + 1
} }
} else { } else {
if (this.index == 0) { if (this.index == 0) {
this.index = this.listData.length - 1; this.index = this.listData.length - 1
} else { } else {
this.index = this.index - 1; this.index = this.index - 1
} }
} }
if (this.comName == "dumbwaiter-1") { if (this.comName == 'dumbwaiter-1') {
this.comName = "dumbwaiter-2"; this.comName = 'dumbwaiter-2'
} else { } else {
this.comName = "dumbwaiter-1"; this.comName = 'dumbwaiter-1'
} }
var height = $(".list-for").innerHeight(); var height = $('.list-for').innerHeight()
$("#listMin").animate({ scrollTop: height * this.index + "px" }); $('#listMin').animate({ scrollTop: height * this.index + 'px' })
this.deviceId = this.listData[this.index].deviceId; this.deviceId = this.listData[this.index].deviceId
this.updateDumbwaiterValue(); this.updateDumbwaiterValue()
}, },
updateDumbwaiterValue() { updateDumbwaiterValue() {
this.dumbwaiterValue = { this.dumbwaiterValue = {
@ -631,57 +604,54 @@ export default {
liftingHeight: this.listData[this.index].ratedPeopleCount, liftingHeight: this.listData[this.index].ratedPeopleCount,
runningSpeed: this.listData[this.index].ratedSpeed, runningSpeed: this.listData[this.index].ratedSpeed,
enterTime: this.listData[this.index].entryTime, enterTime: this.listData[this.index].entryTime,
}; }
}, },
safeTowerLeft() { safeTowerLeft() {
this.direction = "left"; this.direction = 'left'
this.automaticRoll(); this.automaticRoll()
}, },
safeTowerRight() { safeTowerRight() {
// //
this.direction = "right"; this.direction = 'right'
this.automaticRoll(); this.automaticRoll()
}, },
// //
automaticRollType() { automaticRollType() {
var height = $(".glr-login-number-max").innerHeight(); var height = $('.glr-login-number-max').innerHeight()
if ( if ($('#afootOverflowType').scrollTop() == height * this.warningList.length - $('#afootOverflowType').innerHeight()) {
$("#afootOverflowType").scrollTop() == this.warningTypeIndex = 0
height * this.warningList.length - $("#afootOverflowType").innerHeight()
) {
this.warningTypeIndex = 0;
} else { } else {
this.warningTypeIndex = this.warningTypeIndex + 1; this.warningTypeIndex = this.warningTypeIndex + 1
} }
$("#afootOverflowType").animate({ $('#afootOverflowType').animate({
scrollTop: height * this.warningTypeIndex + "px", scrollTop: height * this.warningTypeIndex + 'px',
}); })
}, },
listMinMouseoverType() { listMinMouseoverType() {
clearInterval(this.warningTypeInterval); clearInterval(this.warningTypeInterval)
}, },
listMinMouseoutType() { listMinMouseoutType() {
this.warningTypeInterval = setInterval(this.automaticRollType, 5000); this.warningTypeInterval = setInterval(this.automaticRollType, 5000)
}, },
// //
safeAutomaticRoll() { safeAutomaticRoll() {
var height = $(".safe-afoot-overflow").innerHeight(); var height = $('.safe-afoot-overflow').innerHeight()
if (this.forIndex == this.warningData.length) { if (this.forIndex == this.warningData.length) {
this.forIndex = 0; this.forIndex = 0
} else { } else {
this.forIndex = this.forIndex + 1; this.forIndex = this.forIndex + 1
} }
$("#afootOverflow").animate({ scrollTop: height * this.forIndex + "px" }); $('#afootOverflow').animate({ scrollTop: height * this.forIndex + 'px' })
}, },
warningListMinMouseover() { warningListMinMouseover() {
clearInterval(this.warningInterval); clearInterval(this.warningInterval)
}, },
warningListMinMouseout() { warningListMinMouseout() {
this.warningInterval = setInterval(this.safeAutomaticRoll, 5000); this.warningInterval = setInterval(this.safeAutomaticRoll, 5000)
}, },
}, },
}; }
</script> </script>
<style lang="less"> <style lang="less">

View File

@ -347,32 +347,32 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="groupBYProject" parameterType="ProCostOutput" resultMap="ProCostOutputResult"> <select id="groupBYProject" parameterType="ProCostOutput" resultMap="ProCostOutputResult">
select x.id,x.remark,x.money,y.money money2,x.month from ( select x.id,x.remark,x.money,y.money money2,x.month from (
select a.dict_value id, a.dict_label remark,sum(b.money) money,count(a.id) month ,'总投资' cost_type from ( SELECT a.id,c.dict_label,c.dict_value select a.dict_value id, a.dict_label remark,sum(b.money) money,count(a.id) month ,'总投资' cost_type from ( SELECT a.id,c.dict_label,c.dict_value
FROM sur_project a,sys_dict_data c FROM pro_project_info a,sys_dict_data c
where a.isDel=0 where a.is_Del=0
<if test="costType==1"> <if test="costType==1">
and a.projectType=c.dict_value and c.dict_type='project_category' and a.project_type=c.dict_value and c.dict_type='project_category'
</if> </if>
<if test="costType==2"> <if test="costType==2">
and a.projiectLevel=c.dict_value and c.dict_type='project_level' and a.project_level=c.dict_value and c.dict_type='project_level'
</if> </if>
<if test="id!=null and id>0"> and a.deptId = #{id}</if> <if test="id!=null and id>0"> and a.deptId = #{id}</if>
) a ) a
left join (select project_id,money from sur_project_cost_output where cost_type=1) b on a.id=b.project_id left join (select project_id,money from pro_cost_output where cost_type=1) b on a.id=b.project_id
group by a.dict_value,a.dict_label ) x, group by a.dict_value,a.dict_label ) x,
( (
select a.dict_value id, a.dict_label remark,sum(b.money) money,count(a.id) month ,'年度' cost_type from ( select a.dict_value id, a.dict_label remark,sum(b.money) money,count(a.id) month ,'年度' cost_type from (
SELECT a.id,c.dict_label,c.dict_value SELECT a.id,c.dict_label,c.dict_value
FROM sur_project a,sys_dict_data c FROM pro_project_info a,sys_dict_data c
where a.isDel=0 where a.is_Del=0
<if test="costType==1"> <if test="costType==1">
and a.projectType=c.dict_value and c.dict_type='project_category' and a.project_type=c.dict_value and c.dict_type='project_category'
</if> </if>
<if test="costType==2"> <if test="costType==2">
and a.projiectLevel=c.dict_value and c.dict_type='project_level' and a.project_level=c.dict_value and c.dict_type='project_level'
</if> </if>
<if test="id!=null and id>0"> and a.deptId = #{id}</if> <if test="id!=null and id>0"> and a.deptId = #{id}</if>
) a ) a
left join (select project_id,money from sur_project_cost_output where cost_type=2 and year=#{year}) b on a.id=b.project_id left join (select project_id,money from pro_cost_output where cost_type=2 and year=#{year}) b on a.id=b.project_id
group by a.dict_value,a.dict_label group by a.dict_value,a.dict_label
)y where x.id=y.id )y where x.id=y.id
</select> </select>

View File

@ -425,7 +425,7 @@ public class AttendanceJgwTask {
String filePath= resourcesConfig.getUploadPath(); String filePath= resourcesConfig.getUploadPath();
try { try {
String name=FileUtil.getName(photo); String name=FileUtil.getName(photo);
return "/jgw"+FileUtils.writeBytes(buffer, filePath+"/jgw",name); return "/jgw/"+FileUtils.writeBytes(buffer, filePath+"/jgw",name);
}catch (Exception ex){ }catch (Exception ex){
return ""; return "";
} }
@ -827,7 +827,7 @@ public class AttendanceJgwTask {
private void doSyncWorker(JSONObject jo, long startId, QuartzProjectAttendanceCfg it) { private void doSyncWorker(JSONObject jo, long startId, QuartzProjectAttendanceCfg it) {
String appId=jo.getString("appId"); String appId=jo.getString("appId");
String token=jo.getString("token"); String token=jo.getString("token");
String projectId=jo.getString("projectId"); String projectId=jo.getString("appProjectId");
String path="/webapi/project/findAddWorkerByProject"; String path="/webapi/project/findAddWorkerByProject";
String time = System.currentTimeMillis() + ""; String time = System.currentTimeMillis() + "";
String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"&timestamp=" + time; String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"&timestamp=" + time;
@ -913,7 +913,7 @@ public class AttendanceJgwTask {
private void doSyncProContractor(JSONObject jo, long startId, QuartzProjectAttendanceCfg it) { private void doSyncProContractor(JSONObject jo, long startId, QuartzProjectAttendanceCfg it) {
String appId=jo.getString("appId"); String appId=jo.getString("appId");
String token=jo.getString("token"); String token=jo.getString("token");
String projectId=jo.getString("projectId"); String projectId=jo.getString("appProjectId");
String path="/webapi/project/findProContractorByProjectId"; String path="/webapi/project/findProContractorByProjectId";
String time = System.currentTimeMillis() + ""; String time = System.currentTimeMillis() + "";
String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"&timestamp=" + time; String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"&timestamp=" + time;
@ -972,7 +972,7 @@ public class AttendanceJgwTask {
private void doSyncDirectlyUnderGroup(JSONObject jo, long startId, QuartzProjectAttendanceCfg it) { private void doSyncDirectlyUnderGroup(JSONObject jo, long startId, QuartzProjectAttendanceCfg it) {
String appId=jo.getString("appId"); String appId=jo.getString("appId");
String token=jo.getString("token"); String token=jo.getString("token");
String projectId=jo.getString("projectId"); String projectId=jo.getString("appProjectId");
String phone=jo.getString("phone"); String phone=jo.getString("phone");
String subcontractorId=getSubcontractor(appId,token,phone); String subcontractorId=getSubcontractor(appId,token,phone);
String path="/webapi/project/findDirectlyUnderTeam"; String path="/webapi/project/findDirectlyUnderTeam";
@ -1031,7 +1031,7 @@ public class AttendanceJgwTask {
private void doSyncGroup(JSONObject jo, long startId, QuartzProjectAttendanceCfg it) { private void doSyncGroup(JSONObject jo, long startId, QuartzProjectAttendanceCfg it) {
String appId=jo.getString("appId"); String appId=jo.getString("appId");
String token=jo.getString("token"); String token=jo.getString("token");
String projectId=jo.getString("projectId"); String projectId=jo.getString("appProjectId");
String path="/webapi/project/findTeamByProjectId"; String path="/webapi/project/findTeamByProjectId";
String time = System.currentTimeMillis() + ""; String time = System.currentTimeMillis() + "";
String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"&timestamp=" + time; String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"&timestamp=" + time;
@ -1134,7 +1134,7 @@ public class AttendanceJgwTask {
private void doSyncAttendanceData(JSONObject jo, String startId, QuartzProjectAttendanceCfg it) { private void doSyncAttendanceData(JSONObject jo, String startId, QuartzProjectAttendanceCfg it) {
String appId=jo.getString("appId"); String appId=jo.getString("appId");
String token=jo.getString("token"); String token=jo.getString("token");
String projectId=jo.getString("projectId"); String projectId=jo.getString("appProjectId");
String startTime=jo.getString("startTime"); String startTime=jo.getString("startTime");
String endTime=jo.getString("endTime"); String endTime=jo.getString("endTime");
String path="/webapi/project/findAttendanceByProject"; String path="/webapi/project/findAttendanceByProject";

View File

@ -409,6 +409,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="subDeptId!=null and subDeptId>0"> <if test="subDeptId!=null and subDeptId>0">
and sp.dis_dept_id=#{subDeptId} and sp.dis_dept_id=#{subDeptId}
</if> </if>
<if test='proType != null and proType != "" and proType != "0"'> and sp.project_Type = #{proType}</if>
<if test="prjIds !=null and prjIds.size()>0"> <if test="prjIds !=null and prjIds.size()>0">
and c.project_id in and c.project_id in
<foreach collection="prjIds" item="item" index="index" open="(" close=")" separator=","> <foreach collection="prjIds" item="item" index="index" open="(" close=")" separator=",">
@ -451,7 +452,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="todayAttendance" parameterType="QuartzProjectAttendanceData" resultMap="SurProjectAttendanceDataResult"> <select id="todayAttendance" parameterType="QuartzProjectAttendanceData" resultMap="SurProjectAttendanceDataResult">
select ady.* from sur_project_attendance_data_${year} ady select ady.* from sur_project_attendance_data_${year} ady
left join sur_project sp on sp.id = ady.projectId left join pro_project_info sp on sp.id = ady.projectId
where sp.is_Del=0 where sp.is_Del=0
<if test="projectId!=null and projectId>0"> <if test="projectId!=null and projectId>0">
and ady.projectId=#{projectId} and ady.projectId=#{projectId}
@ -468,6 +469,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="deptId!=null and deptId>0"> <if test="deptId!=null and deptId>0">
and sp.dis_dept_id=#{deptId} and sp.dis_dept_id=#{deptId}
</if> </if>
<if test='proType != null and proType != "" and proType != "0"'> and sp.project_Type = #{proType}</if>
<if test="prjIds !=null and prjIds.size()>0"> <if test="prjIds !=null and prjIds.size()>0">
and ady.projectId in and ady.projectId in
<foreach collection="prjIds" item="item" index="index" open="(" close=")" separator=","> <foreach collection="prjIds" item="item" index="index" open="(" close=")" separator=",">
@ -503,14 +505,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="projectId!=null and projectId>0"> <if test="projectId!=null and projectId>0">
and projectId=#{projectId} and projectId=#{projectId}
</if> </if>
and projectId in (select id from sur_project sp where sp.isDel=0 and projectId in (select id from pro_project_info sp where sp.is_Del=0
<if test="deptId!=null and deptId>0"> <if test="deptId!=null and deptId>0">
and sp.deptId=#{deptId} and sp.dis_dept_id=#{deptId}
</if> </if>
<if test="attendanceTime != null and attendanceTime != ''"> and date(ady.attendance_time) =date(#{attendanceTime})</if> <if test="attendanceTime != null and attendanceTime != ''"> and date(ady.attendance_time) =date(#{attendanceTime})</if>
<if test='proType != null and proType != "" and proType != "0"'> and sp.projectType = #{proType}</if> <if test='proType != null and proType != "" and proType != "0"'> and sp.project_type = #{proType}</if>
<if test="prjIds !=null and prjIds.size()>0"> <if test="prjIds !=null and prjIds.size()>0">
and ady.projectId in and ady.projectId in
<foreach collection="prjIds" item="item" index="index" open="(" close=")" separator=","> <foreach collection="prjIds" item="item" index="index" open="(" close=")" separator=",">

View File

@ -507,7 +507,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
and c.project_id=#{projectId} and c.project_id=#{projectId}
</if> </if>
<if test="deptId!=null and deptId>0"> <if test="deptId!=null and deptId>0">
and c.project_id in (SELECT id FROM sur_project WHERE deptid=#{deptId}) and c.project_id in (SELECT id FROM pro_project_info WHERE dis_dept_id=#{deptId})
</if> </if>
<if test="prjIds !=null and prjIds.size()>0"> <if test="prjIds !=null and prjIds.size()>0">
and c.project_id in and c.project_id in
@ -538,7 +538,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
and c.project_id=#{projectId} and c.project_id=#{projectId}
</if> </if>
<if test="deptId!=null and deptId>0"> <if test="deptId!=null and deptId>0">
and c.project_id in (SELECT id FROM sur_project WHERE deptid=#{deptId}) and c.project_id in (SELECT id FROM pro_project_info WHERE dis_dept_id=#{deptId})
</if> </if>
<if test="prjIds !=null and prjIds.size()>0"> <if test="prjIds !=null and prjIds.size()>0">
and c.project_id in and c.project_id in
@ -595,7 +595,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="deptId!=null and deptId>0"> <if test="deptId!=null and deptId>0">
and sp.dis_dept_id=#{deptId} and sp.dis_dept_id=#{deptId}
</if> </if>
<if test='proType != null and proType != "" and proType != "0"'> and sp.project_Type = #{proType}</if>
<if test="prjIds !=null and prjIds.size()>0"> <if test="prjIds !=null and prjIds.size()>0">
and b.project_id in and b.project_id in
<foreach collection="prjIds" item="item" index="index" open="(" close=")" separator=","> <foreach collection="prjIds" item="item" index="index" open="(" close=")" separator=",">
@ -641,7 +641,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="deptId!=null and deptId>0"> <if test="deptId!=null and deptId>0">
and p.dis_dept_id=#{deptId} and p.dis_dept_id=#{deptId}
</if> </if>
<if test='proType != null and proType != "" and proType != "0"'> and p.projectType = #{proType}</if> <if test='proType != null and proType != "" and proType != "0"'> and p.project_Type = #{proType}</if>
<if test="prjIds !=null and prjIds.size()>0"> <if test="prjIds !=null and prjIds.size()>0">
and b.project_id in and b.project_id in
<foreach collection="prjIds" item="item" index="index" open="(" close=")" separator=","> <foreach collection="prjIds" item="item" index="index" open="(" close=")" separator=",">
@ -691,6 +691,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="deptId!=null and deptId>0"> <if test="deptId!=null and deptId>0">
and p.dis_dept_id=#{deptId} and p.dis_dept_id=#{deptId}
</if> </if>
<if test='proType != null and proType != "" and proType != "0"'> and p.project_Type = #{proType}</if>
<if test="prjIds !=null and prjIds.size()>0"> <if test="prjIds !=null and prjIds.size()>0">
and b.project_id in and b.project_id in
<foreach collection="prjIds" item="item" index="index" open="(" close=")" separator=","> <foreach collection="prjIds" item="item" index="index" open="(" close=")" separator=",">
@ -726,6 +727,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="deptId!=null and deptId>0"> <if test="deptId!=null and deptId>0">
and sp.dis_dept_id=#{deptId} and sp.dis_dept_id=#{deptId}
</if> </if>
<if test='proType != null and proType != "" and proType != "0"'> and sp.project_Type = #{proType}</if>
<if test="prjIds !=null and prjIds.size()>0"> <if test="prjIds !=null and prjIds.size()>0">
and b.project_id in and b.project_id in
<foreach collection="prjIds" item="item" index="index" open="(" close=")" separator=","> <foreach collection="prjIds" item="item" index="index" open="(" close=")" separator=",">

View File

@ -24,8 +24,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap> </resultMap>
<sql id="selectSysApplyConfigVo"> <sql id="selectSysApplyConfigVo">
select sac.id, sac.cfg_type, sac.cfg_id, sac.app_id, sac.public_key, sac.private_key, sac.project_id, sp.projectName, sac.dept_id, sd.dept_name as deptName, sac.is_del, sac.create_by, sac.create_time, sac.update_by, sac.update_time, sac.remark from sys_apply_config sac select sac.id, sac.cfg_type, sac.cfg_id, sac.app_id, sac.public_key, sac.private_key, sac.project_id, sp.project_name, sac.dept_id, sd.dept_name as deptName, sac.is_del, sac.create_by, sac.create_time, sac.update_by, sac.update_time, sac.remark from sys_apply_config sac
left join sur_project sp on sac.project_id = sp.id left join pro_project_info sp on sac.project_id = sp.id
left join sys_dept sd on sac.dept_id = sd.dept_id left join sys_dept sd on sac.dept_id = sd.dept_id
</sql> </sql>
@ -35,7 +35,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="cfgId != null "> and sac.cfg_id = #{cfgId}</if> <if test="cfgId != null "> and sac.cfg_id = #{cfgId}</if>
<if test="cfgType != null "> and sac.cfg_type = #{cfgType}</if> <if test="cfgType != null "> and sac.cfg_type = #{cfgType}</if>
<if test="appId != null "> and sac.app_id like concat('%', #{appId}, '%')</if> <if test="appId != null "> and sac.app_id like concat('%', #{appId}, '%')</if>
<if test="projectName != null "> and sp.projectName like concat('%', #{projectName}, '%')</if> <if test="projectName != null "> and sp.project_name like concat('%', #{projectName}, '%')</if>
<if test="deptName != null "> and sd.dept_name like concat('%', #{deptName}, '%')</if> <if test="deptName != null "> and sd.dept_name like concat('%', #{deptName}, '%')</if>
<if test="isDel != null and isDel != ''"> and sac.is_del = #{isDel}</if> <if test="isDel != null and isDel != ''"> and sac.is_del = #{isDel}</if>
</where> </where>

View File

@ -89,14 +89,14 @@
<!-- 添加或修改考勤配置对话框 --> <!-- 添加或修改考勤配置对话框 -->
<el-dialog :title="title" v-model="open" width="800px" append-to-body :close-on-click-modal="false" :close-on-press-escape="false"> <el-dialog :title="title" v-model="open" width="800px" append-to-body :close-on-click-modal="false" :close-on-press-escape="false">
<el-form ref="attendance_cfgRef" :model="form" :rules="rules" label-width="100px" :key="data.formKey"> <el-form ref="attendance_cfgRef" :model="form" :rules="rules" label-width="120px" :key="data.formKey">
<el-form-item label="所属项目" prop="projectId"> <el-form-item label="所属项目" prop="projectId">
<el-select :disabled="data.currentPrjId != ''||data.mode=='edit'" v-model="form.projectId" placeholder="请选择项目"> <el-select :disabled="data.currentPrjId != ''||data.mode=='edit'" v-model="form.projectId" placeholder="请选择项目" style="width:300px;">
<el-option v-for="prj in data.projects" :key="prj.id" :label="prj.projectName" :value="prj.id"></el-option> <el-option v-for="prj in data.projects" :key="prj.id" :label="prj.projectName" :value="prj.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="考勤厂商" prop="vendorsCode"> <el-form-item label="考勤厂商" prop="vendorsCode">
<el-select v-model="form.vendorsCode" placeholder="请选择厂商" @change="vendorsCodeChange"> <el-select v-model="form.vendorsCode" placeholder="请选择厂商" @change="vendorsCodeChange" :disabled="data.mode=='edit'">
<el-option v-for="dict in attendance_vendors" :key="dict.value" :label="dict.label" :value="dict.value"></el-option> <el-option v-for="dict in attendance_vendors" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -123,6 +123,12 @@
</el-form-item> </el-form-item>
</template> </template>
<template v-if="form.vendorsCode=='jgw'">
<el-form-item label="项目经理手机" prop="phone">
<el-input v-model="form.phone" placeholder="项目经理手机" clearable />
</el-form-item>
</template>
<el-form-item label="已启用" prop="enabled"> <el-form-item label="已启用" prop="enabled">
<el-switch v-model="form.enabled" :active-value="1" :inactive-value="0" /> <el-switch v-model="form.enabled" :active-value="1" :inactive-value="0" />
</el-form-item> </el-form-item>