app-xiangsonghua/app-saas-src/script/feature/inspectionArrangeCreateRightPanel.js

504 lines
16 KiB
JavaScript
Raw Normal View History

2024-12-26 17:00:06 +08:00
apiready = function () {
// 解决iphonex底部标签栏被虚拟home键遮挡
$api.fixTabBar($api.byId('footer'));
var ctrl = {
init: {},
bind: {},
InspectorGroup: null,
workTimeGroup: null,
xjDate: null,
xjDateStr: null,
dateStr: null,
employeeId: null,
roleId: null,
date: null,
resultData: {
xjDate: '',
employeeId: '',
employeeName: '',
// workTime: '08:00',
prList: [{
prId: '',
prName: '',
count: 0,
// type: 100, // 巡检类型100日检 110日检+周检; 101日检+月检; 111日检+周检+月检
}],
totalCount: 0, // 配电室总数量
},
}
ctrl.init = function () {
ctrl.employeeId = $api.getStorage('employeeId');
ctrl.roleId = $api.getStorage('roleId');
ctrl.xjDate = $("#xjDate");
ctrl.xjDateStr = $("#xjDateStr");
ctrl.inspectorGroup = $("#inspector-group");
// ctrl.workTimeGroup = $("#work-time-group");
ctrl.prList = $('#pr-list');
ctrl.inspectionId = api.pageParam.id || null;
ctrl.getInspectorList();
ctrl.getPrList();
// ctrl.bindSwitchButtonEvent(ctrl.workTimeGroup.children());
ctrl.bind();
}
ctrl.bind = function () {
//监听日期选择器的改变事件
$("#xjDate").on("change", function() {
ctrl.dateStr = ctrl.xjDate.val();
if (ctrl.dateStr && ctrl.dateStr != "") {
ctrl.xjDateStr.html(ctrl.dateStr);
} else {
ctrl.xjDateStr.html("巡检日期");
}
ctrl.resultData.xjDate = ctrl.dateStr;
});
//为确定和取消绑定事件
$("#btn-cancel").on("touchend", ctrl.btCancel_clicked);
$("#btn-ok").on("touchend", ctrl.btOk_clicked);
}
/**
* 获取巡检单详情
*/
ctrl.getInspectDetail = function() {
api.showProgress();
var url = '/test/xun-jian-dan/queryById/' + ctrl.inspectionId;
$api.get(url, function(res, err) {
if (err) {
ctrl.toast("网络请求失败");
api.hideProgress();
} else {
if (!res.code || res.code != "200") {
ctrl.toast("服务器响应错误");
api.hideProgress();
} else {
var data = res.data;
// 更新巡检日期
ctrl.xjDate.val(data.xunJianShiJian);
ctrl.xjDateStr.html(data.xunJianShiJian);
ctrl.resultData.xjDate = data.xunJianShiJian;
// 更新巡检人员
if (data.jieDanRenId != -1) {
ctrl.employeeId = data.jieDanRenId;
ctrl.resultData.employeeId = data.jieDanRenId;
ctrl.resultData.employeeName = data.jieDanRen;
ctrl.inspectorGroup.find('input').removeClass('btn-highlight');
ctrl.inspectorGroup.find("input[data-inspectorid='" + data.jieDanRenId + "']").addClass('btn-highlight');
}
// 获取当前巡检单对应的巡检配电室列表
ctrl.getInspectPrList();
}
}
});
}
/**
* 获取巡检单中巡检配电室列表
*/
ctrl.getInspectPrList = function() {
api.showProgress();
var url = '/test/xun-jian-pr/queryByList/1/9999/' + ctrl.inspectionId;
$api.get(url, function(res, err) {
if (err) {
ctrl.toast("网络请求失败");
api.hideProgress();
} else {
if (!res.code || res.code != "200") {
ctrl.toast("服务器响应错误");
api.hideProgress();
} else {
// 更新配电室数量 和 巡检类型
ctrl.updatePrMsg(res.data.records);
}
}
});
};
// 更新显示配电室数量 和 巡检类型
ctrl.updatePrMsg = function(prList) {
var length = prList.length;
var map = {};
if (length > 0) {
for (var i = 0; i < length; i++) {
var prItem = prList[i];
var prId = prItem['prId'];
var count;
if (map.hasOwnProperty(prId)) {
count = ++map[prId];
map[prId] = count;
} else {
count = 1;
map[prId] = 1;
}
$("#pr-list .pr-item[data-prid='" + prId + "']").data('count', count).find('.count').text(count);
// 更新 每个配电室 巡检类型选中状态
var xunJianLeiXing = prItem.xunJianLeiXing - 0;
var type = 'routine';
switch (xunJianLeiXing) {
case 1:
type = 'routine';
break;
case 2:
type = 'special';
break;
case 3:
type = 'huizhen';
break;
case 4:
type = 'xideng';
break;
};
$("#pr-list .pr-item[data-prid='" + prId + "'] input[data-type='" + type + "']").attr('checked', 'checked');
}
}
api.hideProgress();
}
/**
* 弹出提示框
*/
ctrl.toast = function(msg) {
api.toast({
msg: msg,
duration: 3000,
locaiton: 'top'
});
}
// 巡检员选择
ctrl.inspectorButton_clicked = function(dom) {
var employeeId = dom.data('inspectorid');
var employeeName = dom.val();
ctrl.resultData.employeeId = employeeId;
ctrl.resultData.employeeName = employeeName;
}
// 工作时间选择
ctrl.worktimeButton_clicked = function(dom) {
var workTime = dom.val();
ctrl.resultData.workTime = workTime;
}
/**
* 巡检员 按钮点击事件处理函数
*/
ctrl.switchButtonClicked = function() {
var sender = $(this);
var brothers = sender.parent().children();
for (var i = 0; i < brothers.length; i++) {
var inputElement = $(brothers[i]);
inputElement.removeClass("btn-highlight");
}
sender.addClass("btn-highlight");
var groupName = sender.attr('group');
switch (groupName) {
case "inspector":
ctrl.inspectorButton_clicked(sender);
break;
case "worktime":
ctrl.worktimeButton_clicked(sender);
break;
}
}
/**
* 巡检员 选择
* @param {zepto object} buttons
*/
ctrl.bindSwitchButtonEvent = function(buttons) {
for (var i = 0; i < buttons.length; i++) {
var btn = $(buttons[i]);
btn.on('touchend', ctrl.switchButtonClicked);
}
}
// 数据整理
ctrl.formatResultData = function() {
ctrl.resultData.prList = [];
var prDomList = $('#pr-list .pr-item');
var length = prDomList.length;
var totalCount = 0;
for (var i = 0; i < length; i++) {
var prDom = $(prDomList[i]);
var count = $(prDom.find('.count')[0]).text() - 0;
if (count == 0) {
continue;
}
var prId = prDom.data('prid');
var prName = $(prDom.find('.pr-name')[0]).text();
var routine = prDom.find('input[data-type="routine"]')[0].checked;
var special = prDom.find('input[data-type="special"]')[0].checked;
var huizhen = prDom.find('input[data-type="huizhen"]')[0].checked;
var xideng = prDom.find('input[data-type="xideng"]')[0].checked;
var type = 1; // 巡检类型1例行2特殊3会诊4熄灯默认1
totalCount += count;
if (routine) {
type = 1;
};
if (special) {
type = 2;
};
if (huizhen) {
type = 3;
};
if (xideng) {
type = 4;
};
var prData = {
prId: prId,
prName: prName,
count: count,
type: type
}
ctrl.resultData.prList.push(prData);
}
ctrl.resultData.totalCount = totalCount
}
// 数据验证
ctrl.checkResultData = function() {
ctrl.formatResultData();
var flag = true;
if (ctrl.resultData.xjDate == '') {
flag = false;
ctrl.toast('请选择巡检日期');
};
return flag;
}
/**
* 向主窗体发送巡检信息选择结果
*/
ctrl.sendInspectionResult = function() {
var flag = ctrl.checkResultData();
if (!flag) {
return;
}
api.sendEvent({
name: 'inspectionMsgChanged',
extra: ctrl.resultData
});
api.closeDrawerPane();
}
/**
* 确定
*/
ctrl.btOk_clicked = function() {
ctrl.sendInspectionResult();
}
/**
* 取消
*/
ctrl.btCancel_clicked = function() {
api.closeDrawerPane();
}
/**
* 渲染巡检员列表
*/
ctrl.renderInspectorList = function(inspectorlist) {
var len = inspectorlist.length;
var temp = '';
ctrl.inspectorGroup.empty();
ctrl.inspectorGroup.append('<input class="btn btn-highlight" type="button" value="无" group="inspector" data-inspectorid="" />');
for (var i = 0; i < len; i++) {
var inspectorItem = inspectorlist[i]
var domStr = ''
domStr = '<input class="btn" type="button" value="{inspector}" group="inspector" data-inspectorid="{inspectorId}" />'
domStr = domStr.replace("{inspector}", inspectorItem.employeeName)
.replace("{inspectorId}", inspectorItem.employeeId);
temp += domStr;
}
ctrl.inspectorGroup.append(temp);
//为巡检人员绑定事件
ctrl.bindSwitchButtonEvent(ctrl.inspectorGroup.children());
}
/**
* 获取巡检人员列表
*/
ctrl.getInspectorList = function() {
// 判断当前登陆的账号是否是ZTZ
var flag = $api.getStorage('isZTZ') || false;
var url;
var data;
if (flag) { // ZTZ
url = '/ems/rest/xj/schedule/task/employee';
} else { // KHZZ || KHZBZ 客户员工 站长 、值长
url = '/ems/rest/employee/getEmployeeByEmployeeId';
}
data = {
employeeId: $api.getStorage('employeeId')
};
api.showProgress({
title: '载入中...',
text: '请稍后',
modal: false
});
$api.get(url, data, function(res, err) {
api.hideProgress();
if (err) {
ctrl.toast("网络请求失败");
} else {
if (!res.code || res.code != "200" || !res.body) {
ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : ""));
} else {
if (flag) {
ctrl.renderInspectorList(res.body)
} else {
ctrl.renderInspectorList(res.body.records)
}
}
}
});
}
// 配电室列表绑定计数点击事件
ctrl.bindPrItemEvent = function() {
// 减
$('#pr-list .sub').on('touchend', function () {
var prItemDom = $(this).parent('.pr-item');
var countDom = $(this).siblings('.count')
var count = countDom.text() - 1;
if (count < 0) {
count = 0
}
countDom.text(count);
})
// 加
$('#pr-list .sum').on('touchend', function () {
var prItemDom = $(this).parent('.pr-item');
var countDom = $(this).siblings('.count')
var count = (countDom.text() - 0) + 1;
countDom.text(count);
})
}
// 渲染配电室列表
ctrl.renderPrList = function(prListData) {
var len = prListData.length;
var temp = '';
ctrl.prList.empty();
for (var i = 0; i < len; i++) {
var prItem = prListData[i];
var domStr = '';
domStr += '<div class="pr-item" data-prid="{prId}" data-count="{count}">';
domStr += '<div class="pr-name">{prName}</div>';
domStr += '<div class="count-controler">';
domStr += '<span class="sub">-</span>';
domStr += '<span class="count">0</span>';
domStr += '<span class="sum">+</span>';
domStr += '</div>';
domStr += '<div class="inspect-type-radio">'
domStr += '<label><input name="inspect-type-{prId}" data-type="routine" type="radio" checked> 例行</label>'
domStr += '<label><input name="inspect-type-{prId}" data-type="special" type="radio"> 特殊</label>'
domStr += '<label><input name="inspect-type-{prId}" data-type="huizhen" type="radio"> 会诊</label>'
domStr += '<label><input name="inspect-type-{prId}" data-type="xideng" type="radio"> 熄灯</label>'
domStr += '</div>'
domStr += '</div>';
domStr = domStr.replace("{prId}", prItem.prId)
.replace("{prId}", prItem.prId)
.replace("{prId}", prItem.prId)
.replace("{prId}", prItem.prId)
.replace("{prId}", prItem.prId)
.replace("{count}", prItem.count)
.replace("{prName}", prItem.prName);
temp += domStr;
}
ctrl.prList.append(temp);
//为配电室列表绑定事件
ctrl.bindPrItemEvent();
}
// 获取配电室列表
ctrl.getPrList = function() {
var url = '/ems/rest/power/room/list';
var data = {
employeeId: ctrl.employeeId,
roleId: ctrl.roleId
}
api.showProgress({
title: '载入中...',
text: '请稍后',
modal: false
});
$api.get(url, data, function(res, err) {
api.hideProgress();
if (err) {
ctrl.toast("网络请求失败");
} else {
if (!res.code || res.code != "200" || !res.body) {
ctrl.toast("服务器响应错误" + (res.code ? (",错误码:" + res.code) : ""));
} else {
ctrl.renderPrList(res.body);
// 新增和修改都需要获取配电室列表,修改时需要将巡检安排中的配电室数量同步到计数器中
// 根据inspectionId判断当前是编辑还是新建
if (ctrl.inspectionId) {// 编辑
// 1、获取巡检单详情更新巡检日期、巡检人员
// 2、获取巡检单对应的巡检配电室列表更新配电室列表
ctrl.getInspectDetail();
}
}
}
});
}
ctrl.init();
}