TmrApp/html/index.html

1062 lines
35 KiB
HTML
Raw Permalink Normal View History

2023-09-12 14:50:52 +08:00
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
<title>Document</title>
<!-- <script src="./ezuikit.js"></script> -->
<link rel="stylesheet" href="../css/mui_min.css">
<link href="../css/mui_picker_min.css" rel="stylesheet" />
<link href="../css/mui_poppicker_css" rel="stylesheet" />
<script src="../script/index.js"></script>
<script src="../script/api.js"></script>
<script src="../script/mui.min.js"></script>
<script src="../script/mui.picker.min.js"></script>
<script src="../script/mui.poppicker.js"></script>
<script src="../script/echarts.js"></script>
<!-- <script src="../script/4.9.0/echarts.min.js"></script> -->
<!-- <script src="../script/4.9.0/echarts-liquidfill.min.js"></script> -->
</head>
<style>
.content {
width: 100%;
}
.head {
height: 12vh;
padding: 4px 0;
}
.btnc {
margin-left: 5px;
font-weight: 900;
border-radius: 20px;
}
.btnWIFI {
color: seagreen;
margin-left: 20px;
font-weight: 900;
}
.echarts_wrap {
width: 100%;
height: 67vh;
margin-top: 9vh;
display: flex;
justify-content: center;
align-items: center;
}
.echarts_item {
width: 35%;
height: 70vh;
}
.echarts_item1 {
width: 30%;
height: 70v;
font-size: medium;
font-weight: 900;
}
.header_btn {
background-color: #407ae6;
color: #ffffff;
font-size: 20px;
height: 40px;
font-weight: 900;
width: 100%;
}
.feedShow {
margin: 10px;
}
.trains {
background-color: #407ae6
}
.dis {
display: none;
font-size: 25px;
}
/*toast信息提示*/
.mui-toast-container {
bottom: 50% !important;
}
.mui-toast-message {
/* background: url(/app/themes/default/images/toast.png) no-repeat center 10px #407ae6; */
opacity: 1;
/* color: #fff; */
width: 100%;
padding: 10px 5px 10px 5px;
}
</style>
<body>
<header class="mui-bar mui-bar-nav head">
<div class="mui-row">
<div class="mui-col-xs-6" style="display:flex;align-items: center;">
<button id='showUserPicker' class="btnc mui-btn-inline mui-btn-primary" type='button'>请选择设备</button>
<text id='batchName' style="font-size: 14px;font-weight: 900;"></text>
<button class="btnc mui-btn-inline mui-btn-primary" type='button' onclick="refreshDayPlan()">更新计划</button>
<button class="btnc mui-btn-inline mui-btn-primary" type='button' onclick="reloadPage()">刷新页面</button>
</div>
<div class="mui-col-xs-6" style="display:flex;justify-content: flex-end;">
<button class="btnc mui-btn-inline mui-btn-danger" onclick="closeApp()" type='button'>关闭系统</button>
<button id="driveName" class="btnc mui-btn-info" type="button" onclick="handleBackSys()">机车手</button>
<button id='wifiDom' onclick="showZifuka()" class="btnc mui-btn-inline mui-btn-info"
style="color: seagreen !important;" type='button'>WIFI:</button>
</div>
</div>
</header>
<div class="mui-row" style="height: 77vh;margin-top: 12vh;">
<div class="mui-col-xs-2" style="height: 100%;box-sizing: border-box; border: 1px solid #a3caef;overflow: auto;">
<ul class="mui-table-view" id="train"
style="text-align: center;line-height: 30px;font-size: 12px;font-weight: 900;">
</ul>
</div>
<div class="mui-col-xs-10">
<div class="mui-scroll-wrapper"
style="width:100%;height: 9vh;margin-top:6px;white-space: nowrap !important;overflow-x: scroll;" id="feedList">
</div>
<div class="echarts_wrap">
<div class="echarts_item" id="echarts_main_one"></div>
<div class="echarts_item" id="echarts_main_two"></div>
<!-- <div class="echarts_item" id="echarts_main"></div> -->
<div class="echarts_item1">
<!-- <div class="feedShow1" id="beforeWeight"></div> -->
<button class="btnc mui-btn-primary" type="button" id="fix" onclick="weightFix()">校准计划</button>
<div class="feedShow" id="nowFeed"></div>
<div class="feedShow" id="feedNum"></div>
<!-- <button class="btnc mui-btn-primary" type="button" id="upload" style="margin-bottom: 5px;">上传</button> -->
<button class="btnc mui-btn-primary" id="startLoad" style="font-size: x-large;width: 80%;;"
onclick="startLoad()">开始装料</button>
<button class="btnc mui-btn-primary dis" id="submitData" style="font-size: x-large;width: 90%;"
onclick="submitData()">下一步</button>
</div>
</div>
</div>
</div>
<div class="mui-row" style="height: 11vh;box-sizing: border-box; border: 1px solid #a3caef;">
<div class="mui-col-xs-2">
<text id="text" style="margin-left: 20px;line-height:10vh;font-weight: 900;" onclick="updateApp()"></text>
</div>
<div class="mui-col-xs-10" id="timeList">
</div>
</div>
<script type="text/javascript">
var networkStatus = true
var driverName = ''
var pickData = [];
var btnArray = ['取消', '<b style="font-weight:900">确认</b>'];
var sbId = null
// 初始化echarts Dom
var weightChartDom = document.getElementById('echarts_main_two');
var weightMyChart = echarts.init(weightChartDom);
var feedChartDom = document.getElementById('echarts_main_one');
var feedMyChart = echarts.init(feedChartDom);
// var chartDom = document.getElementById('echarts_main');
// var myChart = echarts.init(chartDom);
//echarts公共参数
var ROOT_PATH = 'https://echarts.apache.org/examples';
var _panelImageURL = ROOT_PATH + '/data/asset/img/custom-gauge-panel.png';
var _outerRadius = 105;
var _innerRadius = 85;
var zfkList = [];
var feedName;
var _pointerInnerRadius = 20;
var _insidePanelRadius = 80;
var fontsize = 25;
var feedList = []
var feedIndex = 0;
var classCode = 1;
var trainNumber = 1;
var trainIndex = 0
var trainArr = [];
var batchName = '';
// 装料状态还是卸料状态
var load = true;
var beforeWeight = 0
var _weightSum = 0
var _planSum = 0
var nowWeight = 0;
// document.getElementById('beforeWeight').innerHTML = '称实时/装料前:' + nowWeight + '/' + beforeWeight;
var _feedNum = 0;
var allow = 0
var first = true;
var zifukaHost = '';
var zifukaPort = null;
// 称重通信配置
var weightHost = '';
var weightPort = null;
var carListener = null;
var resultInterval = null;
var totalInterval = null;
var textInterval = null;
var zfk;
var echartsType = ''
var weightStatus = true
var IFlyVoice = null;
var text = '';
var speed = '30';
var UNICODE_CHARS = {
1: "①",
2: "②",
3: "③",
4: "④",
5: "⑤",
6: "⑥",
7: "⑦",
8: "⑧",
9: "⑨",
10: "⑩",
11: "⑪",
12: "⑫",
13: "⑬",
14: "⑭",
15: "⑮",
16: "⑯",
17: "⑰",
18: "⑱",
19: "⑲",
20: "⑳",
21: "㉑",
22: "㉒",
23: "㉓",
24: "㉔",
25: "㉕",
26: "㉖",
27: "㉗",
28: "㉘",
29: "㉙",
30: "㉚",
}
apiready = function () {
var ble = api.require('ble');
ble.initManager(function (ret) {
if (ret.state == "poweredOn") {
console.log("初始化成功");
ble.scan({
clean: true
}, function (ret) {
console.log('正在扫描');
});
setTimeout(() => {
ble.getPeripheral(function (ret) {
if (ret) {
console.log(JSON.stringify(ret));
// ble.connect({
// peripheralUUID: 'F4:21:AE:D9:4C:78'
// }, function(ret, err) {
// if (ret.status) {
// console.log("连接成功!");
// } else {
// alert(err.code);
// }
// });
}
});
}, 5000);
}
});
clearInterval(resultInterval)
clearInterval(totalInterval)
// clearInterval(textInterval)
IFlyVoice = api.require('IFlyVoice');
IFlyVoice.initSpeechSynthesizer(function (ret) {
textInterval = setInterval(function () {
console.log(text);
if (text.length > 0) {
speakTest(text, speed)
text = '';
speed = '30'
}
}, 2000)
});
initPage()
api.addEventListener({
name: 'keyback'
}, function (ret, err) {
mui.confirm('确认关闭TMR饲喂系统', '提示', btnArray, function (e) {
if (e.index == 0) {
} else {
api.closeWidget({
id: api.appId, //应用ID
retData: { name: 'closeWidget' },
silent: true
});
}
});
});
}
function speakTest(text, speed) {
// IFlyVoice.stopSpeaking();
IFlyVoice.startSynthetic({
text: text,
commonPath_Android: 'widget://res/aisound/common.jet',
pronouncePath_Android: 'widget://res/aisound/xiaofeng.jet',
commonPath_iOS: 'widget://res/aisound/common.jet',
pronouncePath_iOS: 'widget://res/aisound/xiaofeng.jet',
pronounceName: 'xiaofeng',
volume: '100',
speed: speed
}, function (ret, err) {
if (ret.status) {
console.log('合成成功');
} else {
}
});
}
function closeApp() {
mui.confirm('确认关闭TMR饲喂系统', '提示', btnArray, function (e) {
if (e.index == 0) {
} else {
api.closeWidget({
id: api.appId, //应用ID
retData: { name: 'closeWidget' },
silent: true
});
}
});
}
value = 0
value1 = 0
data = [value, value1];
var option = {
backgroundColor: '#0F224C',
title: [
{
text: batchName,
subtext: '',
x: '65%',
y: '70%',
textStyle: {
fontSize: 14,
fontWeight: '100',
color: '#5dc3ea',
lineHeight: 16,
textAlign: 'center',
},
},
{
text: feedName,
subtext: '',
x: '15%',
y: '70%',
textStyle: {
fontSize: 14,
fontWeight: '100',
color: '#5dc3ea',
lineHeight: 16,
textAlign: 'center',
},
},
],
series: [
{ //第二个球的填充
type: 'liquidFill',
radius: '60%',
center: ['75%', '35%'],
color: [
{
type: 'linear',
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [
{
offset: 0,
color: '#2aa1e3',
},
{
offset: 1,
color: '#08bbc9',
},
],
globalCoord: false,
},
],
data: [value1, value1], // data个数代表波浪数
backgroundStyle: {
borderWidth: 1,
color: 'RGBA(51, 66, 127, 0.7)',
// color: '#0F224C',
},
label: {
normal: {
textStyle: {
fontSize: 28,
color: '#fff',
},
},
},
outline: {
// show: false
borderDistance: 0,
itemStyle: {
borderWidth: 2,
borderColor: '#112165',
},
},
},
{
type: 'liquidFill',
radius: '60%',
center: ['25%', '35%'],
color: [
{
type: 'linear',
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [
{
offset: 0,
color: '#446bf5',
},
{
offset: 1,
color: '#2ca3e2',
},
],
globalCoord: false,
},
],
data: [value, value], // data个数代表波浪数
backgroundStyle: {
borderWidth: 1,
color: 'RGBA(51, 66, 127, 0.7)',
// color: '#0F224C',
},
label: {
normal: {
textStyle: {
fontSize: 28,
color: '#fff',
},
},
},
outline: {
// show: false
borderDistance: 0,
itemStyle: {
borderWidth: 2,
borderColor: '#112165',
},
},
},
],
};
// 初始化页面
function initPage() {
getWifiInfo()
}
function testCmd() {
var param1 = {
SF: "AA A5 ",
LEN: '1A 00 ',
DES: 'FF FF ',
SRC: '12 34 ',
TID: 'B0 A1 ',
CMD1: '38 02 ',
X: '00 00 ',
Y: '00 00 ',
WIDTH: '40 00 ',
HEIGHT: '20 00 ',
FORMAT: '00 00 01 00 ',
CNT: '04 00 ',
CRC: '00 00 ',
EF: '5A 55 ',
msg: ''
}
param1.msg = '育成浓缩差5000kg'
if (zfk) {
zfk.send1(param1, function (ret, err) {
mui.alert(ret.sendMsg);
// console.log(JSON.stringify(ret));
})
}
}
// 初始化称重服务
function initWeightService() {
var s = api.require('socketManager');
var sssid = api.getGlobalData({ key: 'sid' });
if (sssid) {
s.closeSocket({ sid: sssid }, function (ret, err) { });
}
console.log(weightHost, weightPort);
api.showProgress({
title: '开始连接称...',
modal: true
});
s.createSocket({ host: weightHost, port: weightPort }, function (ret, err) {
if (ret.state == 101) {
document.getElementById('text').innerHTML = '称连接中'
} else if (ret.state == 102) {
weightStatus = true
document.getElementById('text').innerHTML = '称已连接'
weightDataFilter = new WeightDataFilter(40, _weightSum);
setTimeout(() => {
// 渲染装料echarts
renderUnload()
// 渲染总重量echarts
renderLoad()
feedMyChart.setOption({
dataset: {
source: [[1, _feedNum]]
}
})
weightMyChart.setOption({
dataset: {
source: [[1, nowWeight]]
}
})
api.hideProgress();
mui.toast("称连接成功")
clearInterval(totalInterval)
totalAjax = true
canUpload = true
ajaxIsEnd = true
totalList = []
totalInterval = setInterval(function () {
totalWeightUpload()
}, 3000)
document.getElementById('startLoad').setAttribute("class", 'btnc mui-btn-primary dis');
document.getElementById('submitData').setAttribute("class", 'btnc mui-btn-primary');
document.getElementById('text').innerHTML = 'V' + api.appVersion
api.setGlobalData({ key: 'startTime', value: currTimeFn(new Date()) });
}, 2000);
sid = ret.sid;
api.setGlobalData({ key: 'sid', value: ret.sid });
} else if (ret.state == 103) {
// mui.alert(ret.data,ret.data.startsWith('wn'),ret.data.substr(2,7))
if (ret.data.startsWith('wn')) {
nowWeight = Math.round(Number(ret.data.substr(2, 7)))
} else {
nowWeight = Math.round(Number(ret.data))
}
// else{
// console.log(allow,Math.abs(_feedNum-_planSum),filteredValue);
// }
// 第一次初始重量等于实时重量
if (first) {
first = false;
beforeWeight = nowWeight
}
// document.getElementById('beforeWeight').innerHTML = '称实时/装料前:' + nowWeight + '/' + beforeWeight;
// 渲染装料echarts
renderUnload()
// 渲染总重量echarts
renderLoad()
if (load) {
_feedNum = nowWeight - beforeWeight;
} else {
_feedNum = beforeWeight - nowWeight;
}
if (!isNaN(nowWeight)) {
// 实时重量保存
totalList.push({
time: currTimeFn(new Date()),
nowWeight: nowWeight
})
}
document.getElementById('feedNum').innerHTML = '<font style="color:blue">计划:' + _planSum + '</font>/<font style="color:green">已装:' + _feedNum + '</font>'
if (zfkList && zfkList.length > 0) {
zfkList.forEach(e => {
var param1 = {
SF: "AA A5 ",
LEN: '1A 00 ',
DES: '01 01 ',
SRC: '12 34 ',
TID: 'B0 A1 ',
CMD1: '38 02 ',
X: '00 00 ',
Y: '00 00 ',
WIDTH: '40 00 ',
HEIGHT: '20 00 ',
FORMAT: '00 00 01 00 ',
CNT: '04 00 ',
CRC: '00 00 ',
EF: '5A 55 ',
msg: ''
}
var newmsg = feedName
var msglen = newmsg.getByteLen();
var ttr = ''
if (Number(_planSum - _feedNum) >= 0) {
ttr = '少'
echartsType = '少'
} else {
ttr = '多'
echartsType = '多'
}
// text = echartsType+Math.abs(Number(_planSum - _feedNum)).toFixed(0)+ 'kg';
if (msglen < 8) {
for (var i = 0; i < 8 - msglen; i++) {
newmsg = newmsg + ' '
}
newmsg = newmsg + ttr
} else {
newmsg = feedName + ttr
}
param1.DES = e + " ";
param1.msg = newmsg + Math.abs(Number(_planSum - _feedNum)).toFixed(0) + 'kg'
zfk.send1(param1, function (ret, err) {
if (!ret.status) {
console.warn("字符卡发送失败");
mui.toast("字符卡发送失败")
weightStatus = false
addNotice('字符卡发送失败')
api.hideProgress();
api.setGlobalData({ key: 'nowWeight', value: nowWeight });
api.setGlobalData({ key: 'beforeWeight', value: beforeWeight });
document.getElementById('text').innerHTML = '<font style="color:red">字符卡发送失败</font>'
document.getElementById('startLoad').setAttribute("class", 'btnc mui-btn-primary');
document.getElementById('submitData').setAttribute("class", 'btnc mui-btn-primary dis');
}
})
})
}
// console.log(_planSum,_feedNum);
// console.log(nowWeight,_weightSum);
// value = (_feedNum / _planSum).toFixed(2)
// value1 = (nowWeight / _weightSum).toFixed(2)
// option.series[0].data = [value, value]
// option.series[1].data = [value1, value1]
// option.title[0].text = feedName
// option.title[1].text = batchName + ',' + templateName
// option.title[0].subtext = '计划' + _planSum + ',已装' + _feedNum
// option.title[1].subtext = '计划' + _weightSum + ',已装' + nowWeight
// option && weightMyChart.setOption(option);
// 实时渲染echarts图
feedMyChart.setOption({
dataset: {
source: [[1, _feedNum]]
}
})
weightMyChart.setOption({
dataset: {
source: [[1, nowWeight]]
}
})
if ((Math.abs(_feedNum - _planSum) <= allow || _feedNum > _planSum)) {
var per = Math.abs(_feedNum - _planSum) / allow;
if (isNaN(per)) {
per = 0;
}
console.log(per, allow);
if (per <= 1 && per > 0.5) {
text = '滴滴滴',
speed = '40'
} else if (per <= 0.5 && per >= 0) {
text = '滴滴滴',
speed = '80'
}
let filteredValue = weightDataFilter.filter(nowWeight);
// console.log(weightDataFilter.dataBuffer.length);
if (weightDataFilter.dataBuffer.length == 40) {
console.log("重量稳定", currTimeFn(new Date()));
weightDataFilter.dataBuffer = []
document.getElementById('submitData').click();
}
}
} else {
weightStatus = false
addNotice('称连接失败')
api.hideProgress();
mui.alert('称连接失败')
api.setGlobalData({ key: 'nowWeight', value: nowWeight });
api.setGlobalData({ key: 'beforeWeight', value: beforeWeight });
document.getElementById('text').innerHTML = '<font style="color:red">称连接失败</font>'
document.getElementById('startLoad').setAttribute("class", 'btnc mui-btn-primary');
document.getElementById('submitData').setAttribute("class", 'btnc mui-btn-primary dis');
}
})
}
String.prototype.getByteLen = function () {
let len = 0;
for (let i = 0; i < this.length; i++) {
this.charCodeAt(i) < 256 ? (len += 1) : (len += 2)
}
return len
}
var userPicker;
// 初始化设备下拉
function muiInit() {
(function ($, doc) {
$.init();
$.ready(function () {
/**
* 获取对象属性的值
* 主要用于过滤三级联动中,可能出现的最低级的数据不存在的情况,实际开发中需要注意这一点;
* @param {Object} obj 对象
* @param {String} param 属性名
*/
var _getParam = function (obj, param) {
return obj[param] || '';
};
if (userPicker) {
} else {
userPicker = new $.PopPicker();
var showUserPickerButton = doc.getElementById('showUserPicker');
carListener = null;
carListener = showUserPickerButton.addEventListener('tap', function (event) {
userPicker.show(function (items) {
console.log('设备切换');
sbId = (items[0].value);
showUserPickerButton.innerHTML = (items[0].text);
initTime()
});
}, false);
}
userPicker.setData(pickData);
});
})(mui, document);
}
// 初始化班次信息
function initTime() {
api.ajax({
url: 'https://tmr.nxcyx.com/api/app/tmr/time?sourceCow=' + api.getPrefs({ sync: true, key: 'sourceCow' }),
method: 'get',
}, function (ret, err) {
if (ret) {
if (ret.data.length > 0) {
document.getElementById('text').innerHTML = '班次初始化'
} else {
document.getElementById('text').innerHTML = '当前暂无班次'
}
var html = '';
ret.data.forEach((e, index) => {
if (index == 0) {
html += '<button class="btnc classes mui-btn-inline mui-btn-primary" type="button" onclick="handleClassClick(this,' + '\'' + e.batch + '\')">' + e.name + '(' + e.start + '-' + e.end + ')</button>'
} else {
html += '<button class="btnc classes mui-btn-inline" type="button" onclick="handleClassClick(this,' + '\'' + e.batch + '\')">' + e.name + '(' + e.start + '-' + e.end + ')</button>'
}
});
document.getElementById('timeList').innerHTML = html
var param = {
classCode: ret.data[0].batch,
sbId: sbId,
sourceCow: api.getPrefs({ sync: true, key: 'sourceCow' }),
dateOf: getDateStr(new Date())
}
initTrain(param);
} else {
document.getElementById('text').innerHTML = '<font style="color:red">班次加载失败</font>'
}
})
}
// 初始化当前班次所有车次
function initTrain(param) {
document.getElementById('train').innerHTML = '暂无车次'
api.ajax({
url: 'https://tmr.nxcyx.com/api/app/tmr/planDay',
headers: {
'Content-Type': 'application/json;charset=utf-8' //建议key使用首字母大写的形式如 User-Agent
},
method: 'post',
data: {
body: param
}
}, function (ret, err) {
if (ret) {
if (ret.data.length > 0) {
document.getElementById('text').innerHTML = '车次初始化'
} else {
document.getElementById('feedList').innerHTML = ''
feedList = []
document.getElementById('text').innerHTML = '当前暂无计划'
}
if (ret.data.length == 0) {
mui.toast("该班次暂无车次信息")
} else if (ret.data.length > 0) {
var html = ''
trainArr = []
ret.data.forEach((e, index) => {
trainArr.push(e.trainNumber)
if (index == 0) {
html += '<li id="classeCode_' + e.classCode + 'train_' + index + '" class="mui-table-view-cell trains" onclick="handleCarClick(this,' + '\'' + e.classCode + '\',\'' + e.trainNumber + '\')">第' + e.trainNumber + '车(' + e.templetName + ')</li>'
} else {
html += '<li id="classeCode_' + e.classCode + 'train_' + index + '" class="mui-table-view-cell" onclick="handleCarClick(this,' + '\'' + e.classCode + '\',\'' + e.trainNumber + '\')">第' + e.trainNumber + '车(' + e.templetName + ')</li>'
}
})
document.getElementById('train').innerHTML = html
trainIndex = 0;
classCode = ret.data[0].classCode
var param = {
classCode: ret.data[0].classCode,
sbId: sbId,
trainNumber: ret.data[0].trainNumber,
sourceCow: api.getPrefs({ sync: true, key: 'sourceCow' }),
dateOf: getDateStr(new Date())
}
initOne(param)
}
} else {
document.getElementById('text').innerHTML = '<font style="color:red">车次加载失败</font>'
}
});
}
// 初始化当前车次饲料信息
function initOne(param) {
if (sid) {
document.getElementById('submitData').setAttribute("class", 'btnc mui-btn-primary');
}
api.ajax({
url: 'https://tmr.nxcyx.com/api/app/tmr/planDay',
headers: {
'Content-Type': 'application/json;charset=utf-8' //建议key使用首字母大写的形式如 User-Agent
},
method: 'post',
data: {
body: param
}
}, function (ret, err) {
if (ret) {
first = true
document.getElementById('text').innerHTML = '装料信息初始化成功'
var html = '';
ret.data.forEach(e => {
load = true
trainNumber = e.trainNumber
_weightSum = e.total.toFixed(0)
// 饲料
let feedJson = e.feedJson;
// 合并饲料和圈舍圈舍存入步骤stepsList
let json = [...e.feedJson, ...e.cowshedJson]
feedList = json
json.forEach((j, index) => {
if (index == 0) {
html += '<span id="feed_' + index + '" class="mui-badge mui-badge-purple" style="font-size: 14px;font-weight: 900;">' + (UNICODE_CHARS[index + 1]) + j.name + ':' + Number(j.weight).toFixed(0) + '</span>'
} else {
html += '<span id="feed_' + index + '" class="mui-badge" style="font-size: 14px;font-weight: 900;">' + (UNICODE_CHARS[index + 1]) + j.name + ':' + Number(j.weight).toFixed(0) + '</span>'
}
})
document.getElementById('feedList').innerHTML = html
// 根据步骤下标取stepsList的值
document.getElementById('batchName').innerHTML = e.className + e.trainNumber + '(' + e.total.toFixed(0) + 'kg)'
feedIndex = 0
_feedNum = 0;
feedName = json[0].name
// document.getElementById("upload").innerHTML = '上传'+json[0].name
document.getElementById('submitData').innerHTML = '上传' + json[0].name
document.getElementById('fix').innerHTML = '装料前校准' + json[0].name
document.querySelector('#feed_0').scrollIntoView(true)
allow = json[0].allow
// 计划
_planSum = json[0].weight.toFixed(0)
document.getElementById('feedNum').innerHTML = '<font style="color:blue">计划:' + _planSum + '</font>/<font style="color:green">已装:' + _feedNum + '</font>'
text = feedIndex + 1 + feedName + _planSum;
batchName = e.className + e.trainNumber
templateName = e.templetName
templetType = e.templetType
document.getElementById('nowFeed').innerHTML = '<font style="color:blue">' + e.className + e.trainNumber + ',' + feedName + '</font>'
document.getElementById('text').innerHTML = 'V' + api.appVersion
})
} else {
document.getElementById('text').innerHTML = '<font style="color:red">装料信息加载失败</font>'
}
})
}
//班次点击事件
function handleClassClick(obj, batch) {
document.getElementById('batchName').innerHTML = ''
document.getElementById('nowFeed').innerHTML = ''
// document.getElementById('beforeWeight').innerHTML = ''
document.getElementById('feedNum').innerHTML = ''
var doms = document.getElementsByClassName('classes');
if (doms.length > 0) {
for (var i = 0; i < doms.length; i++) {
doms[i].setAttribute("class", 'btnc classes mui-btn-inline');
}
}
obj.setAttribute("class", 'btnc classes mui-btn-inline mui-btn-primary');
var param = {
classCode: batch,
sbId: sbId,
sourceCow: api.getPrefs({ sync: true, key: 'sourceCow' }),
dateOf: getDateStr(new Date())
}
initTrain(param);
}
//左侧车次点击事件
function handleCarClick(obj, classCode, trainNumber) {
trainIndex = Number(trainNumber) - 1
var doms = document.getElementsByClassName('trains');
if (doms.length > 0) {
for (var i = 0; i < doms.length; i++) {
doms[i].setAttribute("class", 'mui-table-view-cell');
}
}
obj.setAttribute("class", 'mui-table-view-cell trains');
var param = {
classCode: classCode,
sbId: sbId,
trainNumber: trainNumber,
sourceCow: api.getPrefs({ sync: true, key: 'sourceCow' }),
dateOf: getDateStr(new Date())
}
initOne(param)
}
// 初始化设备查询
function initSbList() {
document.getElementById('text').innerHTML = '初始化设备'
api.showProgress({
title: '初始化设备...',
modal: true
});
pickData = []
api.ajax({
url: 'https://tmr.nxcyx.com/api/app/tmr/sbList?sourceCow=' + api.getPrefs({ sync: true, key: 'sourceCow' }),
// url: 'http://192.168.0.107:8088/app/tmr/sbList?sourceCow=' + api.getPrefs({ sync: true, key: 'sourceCow' }),
method: 'get',
timeout: 5,
}, function (ret, err) {
if (ret) {
networkStatus = true
api.hideProgress();
document.getElementById('text').innerHTML = '设备初始化成功'
sbId = ret.data[0].sbId
document.getElementById('showUserPicker').innerHTML = ret.data[0].name
ret.data.forEach(e => {
var json = { value: e.sbId, text: e.name }
pickData.push(json)
})
muiInit()
initTime();
} else {
networkStatus = false
api.hideProgress();
mui.alert("sbList:" + err.msg)
document.getElementById('text').innerHTML = '<font style="color:red">' + '服务器异常' + '</font>'
}
})
}
// 刷新页面
function reloadPage() {
mui.confirm('确认重新初始化页面么?', '提示', btnArray, function (e) {
if (e.index == 0) {
} else {
getWifiInfo()
}
});
}
// 获取WiFi信息并刷新页面数据
function getWifiInfo() {
sid = ''
document.getElementById('text').innerHTML = '正在连接服务器'
var loginUser = api.getPrefs({ sync: true, key: 'loginUser' })
var obj = JSON.parse(loginUser);
driverName = obj.nickName
document.getElementById('driveName').innerHTML = '用户:' + obj.nickName
pickData = []
document.getElementById('train').innerHTML = ''
document.getElementById('timeList').innerHTML = ''
document.getElementById('feedList').innerHTML = ''
var wifi = api.require('bgnWiFi');
wifi.getWifiInfo(function (ret, err) {
if (ret.status && ret.info) {
var wifiDom = document.getElementById('wifiDom');
wifiDom.innerHTML = 'WIFI:' + ret.info.SSID
api.setPrefs({
key: 'wifi',
value: 'WIFI:' + ret.info.SSID
})
api.setPrefs({
key: 'network',
value: true
});
wifiDom.innerHTML = api.getPrefs({ sync: true, key: 'wifi' })
document.getElementById('text').innerHTML = 'wifi检测'
initSbList();
} else {
api.setPrefs({
key: 'network',
value: false
});
mui.alert('请检查WiFi是否已连接')
document.getElementById('text').innerHTML = '<font style="color:red">获取网络失败</font>'
}
});
}
// 更新获取最新配方
function refreshDayPlan() {
mui.confirm('确认更新计划么?', '提示', btnArray, function (e) {
if (e.index == 0) {
} else {
var param = {
sourceCow: api.getPrefs({ sync: true, key: 'sourceCow' }),
dateOf: getDateStr(new Date())
}
api.ajax({
url: 'https://tmr.nxcyx.com/api/app/tmr/planDayInit',
headers: {
'Content-Type': 'application/json;charset=utf-8' //建议key使用首字母大写的形式如 User-Agent
},
method: 'post',
data: {
body: param
}
}, function (ret, err) {
if (ret) {
mui.toast("计划更新成功")
getWifiInfo()
} else {
mui.toast("计划更新失败")
}
})
}
});
}
//退出登录
function handleBackSys() {
mui.confirm('退出当前登录用户?', JSON.parse(api.getPrefs({ sync: true, key: 'loginUser' })).name + '(' + driverName + ')', btnArray, function (e) {
if (e.index == 0) {
} else {
//跳转到login.stml
api.closeWin();
api.removePrefs({
key: 'token'
});
api.removePrefs({
key: 'loginUser'
});
api.removePrefs({
key: 'sourceCow'
});
api.clearCache(function () {
console.log("清除完成");
});
}
});
}
</script>
</body>
</html>