hb_zhgd_screen/js/pages/home/navigation.js

276 lines
11 KiB
JavaScript

let element, layer, form, bidCode;
let talkAbout=false;
layui.use(['layer', 'element'], function () {
element = layui.element;
layer = layui.layer;
form = layui.form;
// 获取地址栏上的参数
const bidCodeParam = GetQueryString('bidCode');
const tokenParam = GetQueryString('token');
if (bidCodeParam && tokenParam) {
aqEnnable = !aqEnnable ? true : true;
// 省侧大屏跳转施工大屏 调用后台返回用户信息
bidCode = decryptCBC(bidCodeParam);
const token = decryptCBC(tokenParam);
ajaxRequest2(page_jump, "GET", token, function (result) {
if (result.code === 200) {
sessionStorage.setItem("zhgd_token", result.data.access_token);
sessionStorage.setItem("zhgd_us", JSON.stringify(result.data.us.sysUser));
sessionStorage.setItem("zhgd_type", result.data.us.sysUser.jumpType);
reloadMenuData(result.data.us.sysUser, bidCode);
$('#nav-left button').removeAttr('style')
} else if (result.code === 500) {
layer.msg(result.msg, { icon: 2 }, function () {
window.location.href = login_sc_page;
});
} else if (result.code === 401) {
layer.msg(result.msg, { icon: 2 }, function () {
loginout(1);
});
}
}, function (xhr) {
error(xhr)
});
} else {
// 由施工大屏登录
reloadMenuData(JSON.parse(us), bidCode);
}
// 标段工程下拉选监听
form.on('select(bidPro)', function (data) {
$('#nav-right ul li').each(function (index, item) {
if ($(this).hasClass('checked')) {
const hrefValue = $(this).attr('hrefValue');
$('#indexIframe').attr('src', hrefValue);
}
})
});
let loading;
// 检查浏览器是否支持语音识别 API
if ('webkitSpeechRecognition' in window) {
const recognition = new webkitSpeechRecognition(); // 创建一个 SpeechRecognition 对象
recognition.continuous = false; // 是否持续识别,这里设置为 false
recognition.lang = 'zh-CN'; // 设置识别的语言,这里设置为中文
recognition.interimResults = false; // 是否返回临时识别结果
// 当语音识别开始时触发
recognition.onstart = function() {
loading = layer.load(2, {
shade: false ,//0.1透明度的白色背景
content:'<div style="color:#fff;">语音识别中......</div>',
success: function (layerContentStyle) { // 设置loading样式
layerContentStyle.find('.layui-layer-content').css({
'padding-left': '45px',
'text-align': 'left',
'width': '175px',
'line-height':'30px'
});
}
});
};
// 当语音识别结束时触发
recognition.onend = function() {
talkAbout=false;
layer.close(loading);
loading = layer.load(2, {
shade: false ,//0.1透明度的白色背景
time: 1000,
content:'<div style="color:#fff;">正在检测中......</div>',
success: function (layerContentStyle) { // 设置loading样式
layerContentStyle.find('.layui-layer-content').css({
'padding-left': '45px',
'text-align': 'left',
'width': '175px',
'line-height':'30px'
});
}
});
};
// 当识别到一个结果时触发
recognition.onresult = function(event) {
layer.close(loading);
const transcript = event.results[0][0].transcript; // 获取识别的文本
if(transcript){
let openUrl=''
if(transcript.indexOf("首页")!=-1){
openUrl ='../index/index.html'
}else if(transcript.indexOf("视频监控")!=-1){
openUrl ='../video/video.html'
}else if(transcript.indexOf("组塔检测")!=-1){
openUrl ='../towerAssInspect/towerAssInspect.html'
}else if(transcript.indexOf("作业环境")!=-1){
openUrl ='../operEnvironment/operEnvironment.html'
}else if(transcript.indexOf("施工质量")!=-1){
openUrl ='../consQuality/consQuality.html'
}else if(transcript.indexOf("人员管控")!=-1){
openUrl ='../personnelControl/personnelControl.html'
}else if(transcript.indexOf("出入管理")!=-1){
openUrl ='../accessMge/accessMge.html'
}else if(transcript.indexOf("告警管理")!=-1){
openUrl ='../alarmMge/alarmMge.html'
}else {
console.log("识别结果异常");
layer.msg('指令不正确', {
icon: 6,
time: 1000
});
return ;
}
console.log(openUrl)
if(openUrl){
const li= $('#nav-right ul li');
for (let i = 0; i <li.length ; i++) {
console.log($(li[i]).attr('hrefvalue'));
if($(li[i]).attr('hrefvalue')==openUrl){
$(li[i]).removeClass('nocheck').addClass('checked');
}else{
$(li[i]).removeClass('checked').addClass('nocheck');
}
}
$('#indexIframe').attr('src', openUrl);
console.log("跳转页面中");
console.log(openUrl)
}
}else{
layer.msg('未能正确识别语音', {
icon: 6,
time: 1000
});
}
console.log('你说了:' + transcript);
};
// 当语音识别服务错误时触发
recognition.onerror = function(error) {
layer.close(loading);
console.error('语音识别服务错误:', error);
layer.msg('浏览器不支持语音识别服务', {
icon: 6,
time: 1000
});
};
// 开始语音识别
document.querySelector('#start-button').addEventListener('click', function() {
if(!talkAbout){
recognition.start();
talkAbout=true;
}
});
} else {
console.error('浏览器不支持语音识别服务。');
}
});
/* 页面数据加载 */
function reloadMenuData(us, bidCode) {
let menus = us.menus;
let bidCodeList = us.bidProVoList;
setBandingPro(bidCodeList, bidCode);
setMenusData(us,menus);
if ($('#nav-right ul li').length > 0) {
let hrefValue = $('#nav-right ul li').eq(0).attr('hrefValue');
$('#indexIframe').attr('src', hrefValue);
}
$('#nav-right ul li').on('click', function () {
$('#nav-right ul li').each(function (index, item) {
if ($(this).hasClass('checked')) {
$(this).removeClass('checked').addClass('nocheck');
}
})
$(this).removeClass('nocheck').addClass('checked');
const hrefValue = $(this).attr('hrefValue');
$('#indexIframe').attr('src', hrefValue);
})
}
/* 初始化菜单 */
function setMenusData(us,data) {
const nickName = us.nickName;
if (data && data.length > 0) {
const menus = data.filter(item => {
return item.menuName === '施工大屏'
})
let html = '';
if (menus && menus.length > 0) {
$.each(menus[0].childer, function (index, item) {
if (index === 0 && item.menuName !== '数据操作') {
html += '<li class="layout checked" hrefValue="' + item.url + '"><p>' + item.menuName + '</p></li>'
} else if ((index !== 0 && item.menuName !== '数据操作' && item.menuName!=='数据分析应用')) {
html += '<li class="layout nocheck" hrefValue="' + item.url + '"><p>' + item.menuName + '</p></li>'
} else if (item.menuName === '数据操作') {
// html += '<li class="layout nocheck" onclick="goBackground()"><p>' + item.menuName + '</p></li>'
} else if(item.menuName === '数据分析应用' && userArr.indexOf(nickName) === -1){
html += '<li class="layout nocheck" hrefValue="' + item.url + '"><p>' + item.menuName + '</p></li>'
}
})
// // 新的数据分析
// if(userArr.indexOf(nickName) > -1){
// html += '<li class="layout nocheck" hrefValue="../newDataAnalysis/newDataAnalysis.html"><p>数据分析</p></li>'
// html += '<li class="layout nocheck" hrefValue="../dataAnalysisOctober/dataAnalysis.html"><p>数据分析</p></li>'
// }
// html += '<li class="layout nocheck" hrefValue="../safetyHat/index.html"><p>安全帽</p></li>'
}
$('#nav-right ul').empty().append(html);
}
}
/* 初始化用户绑定标段工程 */
function setBandingPro(bidCodeList) {
let html = '';
if (bidCodeList && bidCodeList.length > 0) {
$.each(bidCodeList, function (index, item) {
if (bidCode && bidCode === item.bidCode) {
html += '<option value="' + item.bidCode + '" selected>' + item.proName + '</option>'
} else {
html += '<option value="' + item.bidCode + '">' + item.proName + '</option>'
}
})
}
$('#bidPro').empty().append(html);
layui.form.render();
}
/* 获取地址栏后的参数 */
const GetQueryString = (name) => {
let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
let r = window.location.search.substr(1).match(reg);
if (r != null) return decodeURIComponent(r[2]);
return null;
};
/* 返回省侧大屏 */
$('#nav-left button').on('click', function () {
window.close();
})
/* 跳转后台 */
function goBackground() {
aqEnnable = !aqEnnable ? true : true;
const params = {
'token': token
};
// 将参数转换为查询字符串
const queryString = Object.keys(params)
.map(key => encodeURIComponent(key) + '=' + encodeURIComponent(encryptCBC(params[key])))
.join('&');
const hrefUrl = "http://10.40.92.113:9527/#/sso" + "?" + queryString;
const newWindow = window.open(hrefUrl, '_blank');
}
function openSc(){
const hrefUrl =screen_url;
const newWindow = window.open(screen_url, 'screen_url');
}
//进后台
function openBack(){
let sgccToken=sessionStorage.getItem("sgccToken")
const hrefUrl = back_url+sgccToken;
const newWindow = window.open(hrefUrl, '_blank');
}