flx:新增人员考勤忽略打卡 视频大屏优化
BIN
src/assets/images/videoSurveillance/bg-icon.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
src/assets/images/videoSurveillance/bg-icon1.png
Normal file
|
After Width: | Height: | Size: 863 B |
BIN
src/assets/images/videoSurveillance/bg-icon1_active.png
Normal file
|
After Width: | Height: | Size: 827 B |
BIN
src/assets/images/videoSurveillance/bg-input.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
src/assets/images/videoSurveillance/refresh-icon.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
src/assets/images/videoSurveillance/search-icon.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
src/assets/images/videoSurveillance/shrink-icon.png
Normal file
|
After Width: | Height: | Size: 761 B |
@ -208,8 +208,8 @@ if (process.env.NODE_ENV == "development") {
|
||||
// axios.defaults.baseURL = "http://139.9.66.234:20628";
|
||||
// axios.defaults.baseURL = "http://jxj.zhgdyun.com:9500";
|
||||
// axios.defaults.baseURL = "http://jxj.zhgdyun.com:21000"; // 潮州
|
||||
// axios.defaults.baseURL = "http://gszhdz.crpower.com.cn:9809/"; // 敦煌
|
||||
// axios.defaults.baseURL = "https://gszhdz.crpower.com.cn:9807/"; // 敦煌
|
||||
axios.defaults.baseURL = "http://gszhdz.crpower.com.cn:9809/"; // 敦煌
|
||||
// axios.defaults.baseURL = "https://gszhdz.crpower.com.cn:9807/"; // 敦煌
|
||||
} else if (process.env.NODE_ENV == "debug") {
|
||||
axios.defaults.baseURL = "https://www.ceshi.com";
|
||||
} else if (process.env.NODE_ENV == "production") {
|
||||
|
||||
@ -94,10 +94,10 @@ export default new Vuex.Store({
|
||||
// FILEURL:'http://182.90.224.237:51234/image/',//郭圣雄远程
|
||||
// UPLOADURL: 'http://42.180.188.17:11211/upload/image', //测试
|
||||
// FILEURL: 'http://42.180.188.17:11211/image/', //测试
|
||||
BASEURL: baseUrl ?
|
||||
baseUrl : window.location.protocol + "//" + window.location.host + "/", //正式环境
|
||||
UPLOADURL: window.location.protocol + "//" + window.location.host + "/upload/image", //正式环境
|
||||
FILEURL: window.location.protocol + "//" + window.location.host + "/image/", //正式环境
|
||||
// BASEURL: baseUrl ?
|
||||
// baseUrl : window.location.protocol + "//" + window.location.host + "/", //正式环境
|
||||
// UPLOADURL: window.location.protocol + "//" + window.location.host + "/upload/image", //正式环境
|
||||
// FILEURL: window.location.protocol + "//" + window.location.host + "/image/", //正式环境
|
||||
// // WORKFLOWURL: 'http://47.93.215.234:19998/#/workspace/forms',//鞍钢平台工作流地址(弃用)
|
||||
// // WORKFLOWURL: 'http://47.93.215.234:19098/#/workspace/forms',//鞍钢测试平台工作流地址(弃用)
|
||||
// WORKFLOWURL: 'http://42.180.188.17:19998/#/workspace/forms', //鞍钢平台工作流地址
|
||||
@ -108,8 +108,8 @@ export default new Vuex.Store({
|
||||
// UPLOADURL: 'http://gszhdz.crpower.com.cn:9809/upload/image', //敦煌线上
|
||||
// FILEURL: 'http://gszhdz.crpower.com.cn:9809/image/', //敦煌线上
|
||||
|
||||
// UPLOADURL: 'http://192.168.34.221:8111/upload/image', //演示平台 雄本地
|
||||
// FILEURL: 'http://192.168.34.221:8111/image/', //演示平台 雄本地
|
||||
UPLOADURL: 'http://192.168.34.221:8111/upload/image', //演示平台 雄本地
|
||||
FILEURL: 'http://192.168.34.221:8111/image/', //演示平台 雄本地
|
||||
|
||||
// UPLOADURL: 'http://jxj.zhgdyun.com:100/upload/image', //演示平台
|
||||
// FILEURL: 'http://jxj.zhgdyun.com:100/image/', //演示平台
|
||||
|
||||
@ -1,18 +1,17 @@
|
||||
<template>
|
||||
<div class="header-wrap">
|
||||
<div class="left-text">
|
||||
<div class="weather-box">
|
||||
<!-- <span>{{ weatherInfo.wea }}</span> -->
|
||||
<!-- <div class="weather-box">
|
||||
<img :src="weatherInfo.url" alt="" />
|
||||
<span>
|
||||
<img src="@/assets/images/videoSurveillance/header-icon4.png" />
|
||||
{{ weatherInfo.tem || "" }}℃
|
||||
</span>
|
||||
<div class="line"></div>
|
||||
</div>
|
||||
<span class="time">{{ nowTime }}</span>
|
||||
</div> -->
|
||||
<span class="time">{{ nowDate }}</span>
|
||||
<span class="time">{{ getChineseWeekday() }}</span>
|
||||
<span class="time">{{ nowTime }}</span>
|
||||
</div>
|
||||
<div class="center-text">
|
||||
<div class="left-text_title">
|
||||
@ -221,10 +220,10 @@ export default {
|
||||
font-family: Alibaba PuHuiTi, Alibaba PuHuiTi;
|
||||
font-weight: bold;
|
||||
font-size: 32px;
|
||||
color: #ffffff;
|
||||
color: #FFFFFF;
|
||||
text-shadow: 0px 0px 6px #06bdfb;
|
||||
line-height: 32px;
|
||||
letter-spacing: 9px;
|
||||
letter-spacing: 8px;
|
||||
.left-text_title {
|
||||
position: relative;
|
||||
&:hover {
|
||||
|
||||
@ -86,7 +86,7 @@ export default {
|
||||
...res.result.videoInfo,
|
||||
...res.result.config,
|
||||
serialNumber: res.result.videoInfo.monitoringNumber,
|
||||
defaultStreamType: 2,
|
||||
// defaultStreamType: 2,
|
||||
},
|
||||
];
|
||||
console.log("播放视频2222", dataList);
|
||||
|
||||
@ -177,6 +177,10 @@
|
||||
<div>工作票编号</div>
|
||||
<div>{{ workTicketDetail.workTicketNumber }}</div>
|
||||
</div>
|
||||
<div class="box1">
|
||||
<div>当前绑定监控</div>
|
||||
<div>{{ itemListDevNameUp }}</div>
|
||||
</div>
|
||||
<div class="box1">
|
||||
<div>施工区域</div>
|
||||
<div>{{ workTicketDetail.constructionAreaNames }}</div>
|
||||
@ -1009,7 +1013,9 @@ const updateStatus = computed(() => {
|
||||
return find ? find.label : "--";
|
||||
};
|
||||
});
|
||||
|
||||
const itemListDevNameUp = computed(() => {
|
||||
return workTicketDetail.value.itemList ? workTicketDetail.value.itemList.map(item => item.devName).join('、') : ""
|
||||
})
|
||||
const workTicketTypeTreeList = ref([]);
|
||||
// 获取工作票类型
|
||||
const getWorkTicketTypeTreePage = () => {
|
||||
|
||||
@ -22,17 +22,40 @@
|
||||
<div class="header-video" @click.stop="playAllVideo(treeData)"></div>
|
||||
</el-tooltip> -->
|
||||
</div>
|
||||
<div class="header-search">
|
||||
<div>
|
||||
<el-input
|
||||
v-model="searchInfo.videoName"
|
||||
prefix-icon="el-icon-search"
|
||||
placeholder="请输入关键字"
|
||||
></el-input>
|
||||
<div class="input-right">
|
||||
<div class="bg-icon" @click="onRefresh">
|
||||
<div class="refresh-icon"></div>
|
||||
</div>
|
||||
<div class="bg-icon" @click="onExpand">
|
||||
<div class="shrink-icon"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="header-box1">
|
||||
<div @click="onDeviceState(0)" :class="{'bg-active': searchInfo.deviceState == 0}">全部(10)</div>
|
||||
<div @click="onDeviceState(1)" :class="{'bg-active': searchInfo.deviceState == 1}">在线(10)</div>
|
||||
<div @click="onDeviceState(2)" :class="{'bg-active': searchInfo.deviceState == 2}">离线(10)</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="treeBox">
|
||||
<!-- :class="{
|
||||
control_scroll: videoConfigInfo.enableNotPlugin == 1 && isDragging,
|
||||
control_scrolloff:
|
||||
videoConfigInfo.enableNotPlugin == 1 && !isDragging,
|
||||
}" -->
|
||||
<vue-scroll v-if="treeData.length > 0 || videoType != 1">
|
||||
<vue-scroll v-if="filterTreeData.length > 0 || videoType != 1">
|
||||
<el-tree
|
||||
:data="treeData"
|
||||
:data="filterTreeData"
|
||||
@node-click="handleNodeClick"
|
||||
:props="defaultProps"
|
||||
:filter-node-method="filterNode"
|
||||
node-key="itemId"
|
||||
ref="tree"
|
||||
>
|
||||
@ -66,9 +89,10 @@
|
||||
content="播放项目所有视频"
|
||||
placement="top"
|
||||
>
|
||||
<!-- data.type == 'project' && -->
|
||||
<span
|
||||
class="playAllBtn"
|
||||
v-show="data.type == 'project' && data.children.length > 0"
|
||||
v-if="data.children.length > 0"
|
||||
@click.stop="playAllVideo(data.children)"
|
||||
></span>
|
||||
</el-tooltip>
|
||||
@ -117,7 +141,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
<script>
|
||||
import { getstandardDevListApi } from "@/assets/js/api/markingRoom";
|
||||
import {
|
||||
getTreeVideoProjectListApi,
|
||||
@ -142,6 +166,10 @@ export default {
|
||||
data() {
|
||||
return {
|
||||
treeData: [],
|
||||
searchInfo: {
|
||||
videoName: "",
|
||||
deviceState: 0,
|
||||
},
|
||||
defaultProps: {
|
||||
children: "children",
|
||||
label: "name",
|
||||
@ -158,6 +186,7 @@ export default {
|
||||
gaugeValue: 10,
|
||||
isDragging: false,
|
||||
shrinkCloseFlag: false,
|
||||
defaultExpand: false,
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
@ -165,6 +194,26 @@ export default {
|
||||
this.loadData();
|
||||
},
|
||||
methods: {
|
||||
onDeviceState(state) {
|
||||
this.searchInfo.deviceState = state;
|
||||
},
|
||||
onExpand() {
|
||||
this.defaultExpand = !this.defaultExpand;
|
||||
console.log("this.defaultExpand", this.defaultExpand);
|
||||
this.changeTreeNodeStatus(this.$refs.tree.store.root);
|
||||
},
|
||||
// 改变节点的状态
|
||||
changeTreeNodeStatus(node) {
|
||||
node.expanded = this.defaultExpand;
|
||||
for (let i = 0; i < node.childNodes.length; i++) {
|
||||
// 改变节点的自身expanded状态
|
||||
node.childNodes[i].expanded = this.defaultExpand;
|
||||
// 遍历子节点
|
||||
if (node.childNodes[i].childNodes.length > 0) {
|
||||
this.changeTreeNodeStatus(node.childNodes[i]);
|
||||
}
|
||||
}
|
||||
},
|
||||
shrinkCloseFlagFn() {
|
||||
this.shrinkCloseFlag = !this.shrinkCloseFlag;
|
||||
this.$emit("shrinkCloseChange", this.shrinkCloseFlag);
|
||||
@ -197,6 +246,10 @@ export default {
|
||||
this.markRoomDevList = res.result;
|
||||
});
|
||||
},
|
||||
onRefresh() {
|
||||
this.searchInfo.videoName = "";
|
||||
// this.loadData();
|
||||
},
|
||||
loadData() {
|
||||
console.log(isDockingToWoer);
|
||||
console.log(this.$props.videoSn);
|
||||
@ -459,8 +512,51 @@ export default {
|
||||
data.allvideolist
|
||||
);
|
||||
},
|
||||
filterNode(value, data) {
|
||||
this.defaultExpand = true;
|
||||
if (!value) return true;
|
||||
return data.name.indexOf(value) !== -1;
|
||||
},
|
||||
recursion(array) {
|
||||
return array.filter((item) => {
|
||||
if (
|
||||
item.children &&
|
||||
Array.isArray(item.children) &&
|
||||
item.children.length > 0
|
||||
) {
|
||||
const resultList = this.recursion(item.children);
|
||||
return resultList.length > 0;
|
||||
}
|
||||
return item.deviceState === this.searchInfo.deviceState;
|
||||
});
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
filterTreeData() {
|
||||
if (!this.searchInfo.deviceState) return this.treeData;
|
||||
return this.treeData.map((item) => {
|
||||
let children = [];
|
||||
if (
|
||||
item.children &&
|
||||
Array.isArray(item.children) &&
|
||||
item.children.length > 0
|
||||
) {
|
||||
children = this.recursion(item.children);
|
||||
}
|
||||
return {
|
||||
...item,
|
||||
children,
|
||||
};
|
||||
});
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
"searchInfo.videoName": {
|
||||
handler(val) {
|
||||
this.$refs.tree.filter(val);
|
||||
},
|
||||
deep: true,
|
||||
},
|
||||
selectPlayVideoInfo: {
|
||||
handler(val) {
|
||||
console.log("进来了", val);
|
||||
@ -472,6 +568,79 @@ export default {
|
||||
};
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
.header-search {
|
||||
padding: 10px 15px;
|
||||
.header-box1 {
|
||||
margin-top: 20px;
|
||||
> div {
|
||||
padding: 5px 24px;
|
||||
font-family: Source Han Sans CN, Source Han Sans CN;
|
||||
font-weight: 400;
|
||||
font-size: 15px;
|
||||
color: rgba(255, 255, 255, 0.6);
|
||||
background-image: url("~@/assets/images/videoSurveillance/bg-icon1.png");
|
||||
background-size: 100% 100%;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
>.bg-active {
|
||||
background-image: url("~@/assets/images/videoSurveillance/bg-icon1_active.png");
|
||||
color: #ffffff;
|
||||
}
|
||||
}
|
||||
> div {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.input-right {
|
||||
display: flex;
|
||||
margin-left: 17px;
|
||||
> div:last-child {
|
||||
margin-left: 15px;
|
||||
}
|
||||
.bg-icon {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
background-image: url("~@/assets/images/videoSurveillance/bg-icon.png");
|
||||
background-size: 100% 100%;
|
||||
background-repeat: no-repeat;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
cursor: pointer;
|
||||
> div {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
background-size: 100% 100%;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
.refresh-icon {
|
||||
background-image: url("~@/assets/images/videoSurveillance/refresh-icon.png");
|
||||
}
|
||||
.shrink-icon {
|
||||
background-image: url("~@/assets/images/videoSurveillance/shrink-icon.png");
|
||||
}
|
||||
}
|
||||
}
|
||||
:deep(.el-input) {
|
||||
width: 250px;
|
||||
background-image: url("~@/assets/images/videoSurveillance/bg-input.png");
|
||||
background-size: 100% 100%;
|
||||
background-repeat: no-repeat;
|
||||
.el-input__icon {
|
||||
line-height: 32px;
|
||||
color: #65d7f9;
|
||||
}
|
||||
.el-input__inner {
|
||||
height: 32px;
|
||||
line-height: 32px;
|
||||
font-size: 15px;
|
||||
color: #8490ae;
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
.top-container {
|
||||
height: 100%;
|
||||
background: linear-gradient(180deg, #082a68 0%, #001e53 100%);
|
||||
@ -703,7 +872,7 @@ export default {
|
||||
// margin-right: 12px;
|
||||
}
|
||||
.treeBox {
|
||||
height: calc(100% - 78px);
|
||||
height: calc(100% - 78px - 103px);
|
||||
// width: 306px;
|
||||
// margin-left: -15px;
|
||||
}
|
||||
|
||||
@ -77,8 +77,8 @@ export default {
|
||||
<style lang="less" scoped>
|
||||
.headerNoise {
|
||||
width: calc(100% - 20px - 40px);
|
||||
height: calc(100% - 132px - 10px - 25px);
|
||||
margin: 130px 10px 0;
|
||||
height: calc(100% - 96px - 10px - 25px);
|
||||
margin: 94px 10px 0;
|
||||
padding: 15px 20px 10px;
|
||||
background-image: url("~@/assets/images/companyBigScreen/terminalOperation/index-bg.png");
|
||||
background-size: 100% 100%;
|
||||
|
||||
@ -51,6 +51,23 @@
|
||||
<el-radio :label="0">否</el-radio>
|
||||
</el-radio-group>
|
||||
</div>
|
||||
<div class="search-box">
|
||||
<div>
|
||||
<span>是否忽略员工打卡方向标识</span>
|
||||
<el-popover
|
||||
placement="bottom-start"
|
||||
width="365"
|
||||
:visible-arrow="false"
|
||||
trigger="hover"
|
||||
content="统计考勤时是否忽略员工打卡时的“进/出”方向标识">
|
||||
<div slot="reference" class="question-icon">?</div>
|
||||
</el-popover>
|
||||
</div>
|
||||
<el-radio-group v-model="ignoreWorkerMonthAttendanceInOut" @change="changeMobileAttendance">
|
||||
<el-radio :label="1">是</el-radio>
|
||||
<el-radio :label="0">否</el-radio>
|
||||
</el-radio-group>
|
||||
</div>
|
||||
</div>
|
||||
<div class="table_wrap whiteBlock">
|
||||
<vue-scroll>
|
||||
@ -249,6 +266,7 @@ export default {
|
||||
return {
|
||||
radioVal: 0,
|
||||
isMobileAttendance: 0,
|
||||
ignoreWorkerMonthAttendanceInOut: 0,
|
||||
title: "",
|
||||
dialogVisible: false,
|
||||
workerList: [],
|
||||
@ -326,6 +344,7 @@ export default {
|
||||
});
|
||||
if (res.success) {
|
||||
this.isMobileAttendance = res.result[0].isMobileAttendance || 0;
|
||||
this.ignoreWorkerMonthAttendanceInOut = res.result[0].ignoreWorkerMonthAttendanceInOut || 0;
|
||||
}
|
||||
},
|
||||
async changeConfig() {
|
||||
@ -337,6 +356,15 @@ export default {
|
||||
this.$message.success("操作成功");
|
||||
}
|
||||
},
|
||||
async changeMobileAttendance() {
|
||||
const res = await editProjectConfigListApi({
|
||||
projectSn: this.$store.state.projectSn,
|
||||
ignoreWorkerMonthAttendanceInOut: this.ignoreWorkerMonthAttendanceInOut,
|
||||
});
|
||||
if (res.success) {
|
||||
this.$message.success("操作成功");
|
||||
}
|
||||
},
|
||||
// 手动清零
|
||||
operateClear(){
|
||||
// promptToDelete此操作将永久删除该数据 tips提示 determine确 定 cancel取 消
|
||||
|
||||