app-xiangsonghua/app-saas-src/script/feature/inspectionArrangeCreateRightPanel.js
2024-12-26 17:00:06 +08:00

504 lines
16 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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();
}