// -------------------------------------------------------------页面初始化操作
let plusStatus = false;
let loadingStatus = false;
// plus end
// 系统运行环境
let SYSTEM_ENVIRONMENT = "DEV";
let ENVIRONMENT = {
// 本地测试环境(公司服务器)
DEV: {
BASE_RUL: "http://121.43.55.7:10091",
DMS_BASE_URL: "http://121.43.55.7:2101/"
},
// 预生产环境(内网地址)
Beta: {
BASE_RUL: "http://10.12.242.163:2025",
DMS_BASE_URL: "http://121.43.55.7:2101/"
}
}
let allCount = 0; // 数据总条数
let pageSize = 20; // 每页显示数据条数
let page = 0; // 初始页
let searchStateValue = 0;
let page_e; // mui-pullRefresh
// 后台服务地址
const BASE_RUL = ENVIRONMENT[SYSTEM_ENVIRONMENT].BASE_RUL;
const DMS_BASE_URL = ENVIRONMENT[SYSTEM_ENVIRONMENT].DMS_BASE_URL;
// 接口URL
// ----------------系统设置-用户
// 登录
const loginUrl = "/ioc-server/system_user/login";
// 注销登录
const logoutUrl = "/ioc-server/system_user/logout";
// token验证
const getUserInfoUrl = "/ioc-server/system_user/validate";
// DMS登录接口
const dmsLoginUrl = "/proxy_oauth/user/login";
// 添加dms数据
const dmsAddContent = "/proxy_dms/content/addContent";
// dms文件上传
const uploadFile = "/proxy_dms/file/uploadFile";
// ajax配置
let requestSettins = {
type: "POST",
dataType: "json",
async: true,
crossDomain: true,
processData: false,
contentType: "application/json",
timeout: 10000,
headers: {
"Content-Type": "application/json;charset=utf-8",
"token": localStorage.getItem("token")
}
};
let requestSettins2 = {
type: "POST",
dataType: "json",
async: false,
crossDomain: true,
processData: false,
contentType: "application/json",
timeout: 10000,
headers: {
"Content-Type": "application/json;charset=utf-8",
"token": localStorage.getItem("token")
}
};
// 记住密码变量
let isActive = localStorage.key('isActive') ? localStorage.getItem('isActive') : false;
// -------------------------------------------------------------自定义的mui事件监听事件
function muiInit() {
let pageNameDom = document.getElementById("pageName");
if (pageNameDom) {
let pageName = pageNameDom.innerText;
if (pageName == "opinionFeedback") {
getDmsToken();
}
}
//扩展mui.showLoading
(function($, window) {
//显示加载框
$.showLoading = function showLoading(message, type) {
if (loadingStatus) {
return;
} else {
loadingStatus = true;
}
if ($.os.plus && type !== 'div') {
$.plusReady(function() {
plus.nativeUI.showWaiting(message);
});
} else {
var html = '';
html += '';
html += '
' + (message || "数据加载中") + '
';
//遮罩层
var mask = document.getElementsByClassName("mui-show-loading-mask");
if (mask.length == 0) {
mask = document.createElement('div');
mask.classList.add("mui-show-loading-mask");
document.body.appendChild(mask);
mask.addEventListener("touchmove", function(e) {
e.stopPropagation();
e.preventDefault();
});
} else {
mask[0].classList.remove("mui-show-loading-mask-hidden");
}
//加载框
var toast = document.getElementsByClassName("mui-show-loading");
if (toast.length == 0) {
toast = document.createElement('div');
toast.classList.add("mui-show-loading");
toast.classList.add('loading-visible');
document.body.appendChild(toast);
toast.innerHTML = html;
toast.addEventListener("touchmove", function(e) {
e.stopPropagation();
e.preventDefault();
});
} else {
toast[0].innerHTML = html;
toast[0].classList.add("loading-visible");
}
}
};
//隐藏加载框
$.hideLoading = function(callback) {
loadingStatus = false;
setTimeout(() => {
if ($.os.plus) {
$.plusReady(function() {
plus.nativeUI.closeWaiting();
});
}
var mask = document.getElementsByClassName("mui-show-loading-mask");
var toast = document.getElementsByClassName("mui-show-loading");
if (mask.length > 0) {
mask[0].classList.add("mui-show-loading-mask-hidden");
}
if (toast.length > 0) {
toast[0].classList.remove("loading-visible");
callback && callback();
}
}, 500);
}
})(mui, window);
// 监听用户点击状态触发事件
mui('body').on('tap', '#loginButton', function() {
// 首页登录按钮触发事件
login();
}).on('tap', '.menuLocalPage', function(event) {
/**
* 自定义页面跳转事件,且阻止事件冒泡
* class="menuLocalPage" data-page-name="要跳转的页面名称"
*/
clearSearchValue();
event.stopPropagation();
let pageName = this.dataset.pageName;
if (pageName == "404") {
mui.alert('页面开发中,敬请期待!', '系统提示')
} else {
mui.openWindow("./" + pageName + ".html", pageName);
}
}).on('tap', '.loginOutBtu', function(event) {
// 个人中心退出登录
loginOut();
}).on('tap', '#muiSearchCancel', function(event) {
/**
* 首页搜索弹窗取消按钮
*/
if (document.getElementById('searchPanelBox')) {
document.getElementById('muiSearchCancel').style.display = "none";
document.getElementsByClassName('mui-icon-clear')[0].style.right = "0";
document.getElementById('searchInput').style.width = "100%";
document.getElementById('searchPanelBox').style.height = "0";
}
}).on('tap', '.tabList div,.tabList span', function(event) {
/**
* 自定义切换组件
* 子元素:
* class="active" disabled="disabled" data-key="xxx" name="xxx"
*/
if (document.getElementsByClassName('active') && document.getElementsByClassName(
'active')[0]
.getAttribute('name') !=
this.dataset.key && !document.getElementsByName(this.dataset.key)[0]
.getAttribute('disabled')) {
document.getElementsByName(this.dataset.key)[0].parentNode.getElementsByClassName(
'active')[0]
.className = ""
document.getElementsByName(this.dataset.key)[0].className = "active";
if (document.getElementsByName(this.dataset.key) && this.dataset.url) {
mui.showLoading("正在加载..", "div");
let dataUrl = JSON.parse(this.dataset.url);
kanbanData(dataUrl);
}
}
}).on('change', '[required="required"] .formInput', function() {
if (this.value) {
// 非空验证通过
var nextElementSibling = this.nextElementSibling;
if (nextElementSibling && nextElementSibling.className == 'requiredMsgShow') {
nextElementSibling.className = 'requiredMsgHide';
}
} else {
// 提示该字段不可为空,或者直接通过js直接修改是否显示为空信息
var nextElementSibling = this.nextElementSibling;
if (nextElementSibling && nextElementSibling.className == 'requiredMsgHide') {
nextElementSibling.className = 'requiredMsgShow';
}
}
}).on('tap', '[customizeName="datePoppicker"]', function(event) {
/**
* 自定义时间组件
* input type="text" readonly
* customizeName="datePoppicker"
* name="xxx" 类似id,唯一标识
* data-key="xxx" 与name属性值一致
* data-type="xxx" [datetime|date|time|month|hour] 配置详情: https://dev.dcloud.net.cn/mui/ui/#dtpicker
*/
var dtPicker = new mui.DtPicker(this.dataset.type ? {
type: this.dataset.type
} : {
type: "datetime"
});
let that = this;
dtPicker.show(function(selectItems) {
if (document.getElementsByName(that.dataset.key)) {
document.getElementsByName(that.dataset.key)[0].value = selectItems
.text;
}
})
}).on('tap', '[name="submit"]', function(event) {
/**
* 自定义时间组件(提交按钮,自动校验非空字段并检验正确性)
* div name="submit"
* 本页面存在input标签且符合class="formInput"
*/
let formOptionDoms = document.getElementsByClassName('formInput');
let formOption = {};
let that = this;
let verification = true;
if (formOptionDoms.length > 0) {
for (let i = 0; i < formOptionDoms.length; i++) {
// 是否必填
let required = formOptionDoms[i].parentNode.parentNode.getAttribute('required');
if (!required || required && formOptionDoms[i].value) {
// 非空验证通过
var nextElementSibling = formOptionDoms[i].nextElementSibling;
if (nextElementSibling && nextElementSibling.className ==
'requiredMsgShow') {
nextElementSibling.className = 'requiredMsgHide';
}
} else {
// 提示该字段不可为空,或者直接通过js直接修改是否显示为空信息
var nextElementSibling = formOptionDoms[i].nextElementSibling;
if (nextElementSibling && nextElementSibling.className ==
'requiredMsgHide') {
nextElementSibling.className = 'requiredMsgShow';
}
verification = false;
}
}
}
if (verification) {
let pageName = this.dataset.pageName;
mui.openWindow("./" + pageName + ".html", pageName);
}
}).on('tap', '[type="picker"]', function(event) {
/**
* 自定义下拉框组件
* div type="picker" name = "xxx" parentOption = "xxx"
*/
let that = this;
let parentOptionList = pickerLists[this.getAttribute('parentOption')];
if (parentOptionList) {
for (let i = 0; i < parentOptionList.length; i++) {
if (that.getAttribute('name') == parentOptionList[i].name) {
let itemData = parentOptionList[i].data;
let pickerData = [];
var statePicker = new mui.PopPicker();
for (let index in itemData) {
pickerData.push({
value: itemData[index].label != undefined ? itemData[index]
.value : itemData[index],
text: itemData[index].label != undefined ? itemData[index]
.label : itemData[
index]
})
}
statePicker.setData(pickerData);
statePicker.show(function(items) {
that.innerText = items[0].text;
if (document.getElementById('pageName')) {
let pageName = document.getElementById('pageName')
.innerText;
dataUrl[pageName].params[that.getAttribute('name')] = items[
0].value;
if (dataUrl[pageName].url) {
resetPageInfo();
}
}
});
}
}
}
}).on('tap', '#addImage', function() {
// 触发文件上传按钮
document.getElementById("uploadFileInput").click();
}).on('change', '#uploadFileInput', function(e) {
// 获取上传的文件列表
// let mapImageListDom = document.getElementById('mapImageList');
const file = e.target.files[0]
if (!/\.(jpg|jpeg|png|JPG|PNG)$/.test(e.target.value)) {
mui.alert('请上传.png/.jpg/.jpeg格式的图片', '系统提示');
return false;
} else {
fileToBase64Async(file).then(item => {
let of_image = document.getElementById("of_image");
of_image.setAttribute('src',item);
of_image.style.display = "block";
document.getElementById("addImage").style.display = "none";
})
}
}).on('tap', '.changeLoginTypeToPhone', function() {
// 首页切换登录方式,为手机号码登录
console.log("首页切换登录方式,为手机号码登录")
document.getElementById('loginFormBox').style.display = "none";
document.getElementById('loginForm2Box').style.display = "block";
}).on('tap', '.changeLoginTypeToUser', function() {
// 首页切换登录方式,为账号登录
console.log("首页切换登录方式,为账号登录")
document.getElementById('loginForm2Box').style.display = "none";
document.getElementById('loginFormBox').style.display = "block";
}).on('change', '#autoLogin', function() {
isActive = this.checked ? "true" : "false";
localStorage.setItem('isActive', isActive);
}).on('tap', '#reSearch', function() {
// 数据列表刷新,搜索框重置
mui.confirm("是否重置并刷新?", "系统提示", function(status) {
if (status.index == 1) {
clearSearchValue();
resetPageInfo();
}
})
}).on('tap', '.toBackPage', function() {
mui.back();
})
}
// 原生请求
function postRequest(url, setting, funSuccess, funError) {
if (setting.data) {
setting.data = JSON.stringify(setting.data);
}
requestSettins.success = funSuccess;
requestSettins.error = funError;
let newSetting = Object.assign(requestSettins, setting);
mui.ajax(BASE_RUL + url, newSetting);
}
function postRequest2(url, setting, otherParams, funSuccess, funError) {
try {
if (setting.data) {
setting.data = JSON.stringify(setting.data);
}
requestSettins2.success = (data) => {
funSuccess(data, otherParams);
};
requestSettins2.error = funError;
let newSetting = Object.assign(requestSettins2, setting);
mui.ajax(BASE_RUL + url, newSetting);
} catch (e) {
//TODO handle the exception
console.log("postRequest2 error:", e);
}
}
function dmsPostRequest(url, setting, funSuccess, funError) {
var xhr = new XMLHttpRequest();
// 请求成功回调函数
xhr.onload = e => {
console.log('request success');
};
// 请求结束
xhr.onloadend = e => {
console.log('request loadend');
};
// 请求出错
xhr.onerror = e => {
console.log('request error');
funError("request error");
};
// 请求超时
xhr.ontimeout = e => {
console.log('request timeout');
funError("request timeout");
};
xhr.open('POST', DMS_BASE_URL + url, true);
if (localStorage.getItem("dmsToken")) {
xhr.setRequestHeader("token", localStorage.getItem("dmsToken"))
}
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
funSuccess(JSON.parse(xhr.responseText));
}
}
xhr.send(setting.data);
}
// -------------------------------------------------------------自定义事件
// 页面自动化配置生效
function pageInit() {
let tabBoxs = document.getElementsByClassName('tabBox');
if (tabBoxs.length > 0) {
for (let i = 0; i < tabBoxs.length; i++) {
if (tabBoxs[i].getAttribute('option')) {
let option_ = formTabOptions[tabBoxs[i].getAttribute('option')];
if (option_.length > 0) {
for (let i1 = 0; i1 < option_.length; i1++) {
let dom = document.createElement('span');
dom.setAttribute("data-key", option_[i1].lable + option_[i1].key);
dom.setAttribute("data-url", JSON.stringify(option_[i1].url));
dom.setAttribute("name", option_[i1].lable + option_[i1].key);
dom.className = option_[i1].active ? 'active' : '';
dom.innerText = option_[i1].lable
tabBoxs[i].appendChild(dom);
setTimeout(() => {
if (option_[i1].active) {
if (mui.showLoading != undefined) {
mui.showLoading("正在加载..", "div");
}
kanbanData(option_[i1].url);
}
});
}
} else {
mui.toast('form option:' + tabBoxs[i].getAttribute('option') + 'is undefined!');
}
}
}
}
let echartDoms = document.getElementsByClassName('echartDom');
if (echartDoms.length > 0) {
for (let index = 0; index < echartDoms.length; index++) {
let domId = echartDoms[index].getAttribute('id');
let option = options[domId];
if (option) {
initEchart(domId, option, false);
}
}
}
if (document.getElementById('searchInput')) {
// 存在搜索框的话开始监听{focus:获取焦点,input:内容修改,blur:失去焦点}
document.getElementById('searchInput').addEventListener('focus', function(event) {
if (document.getElementById('searchPanelBox')) {
document.getElementsByClassName('mui-icon-clear')[0].style.right = "2rem";
document.getElementById('searchInput').style.width = "calc(100% - 4rem)"
document.getElementById('muiSearchCancel').style.display = "block";
}
// 展开搜索结果框
homeSearch();
})
document.getElementById('searchInput').addEventListener('input', function(event) {
if (document.getElementById('searchPanelBox')) {
document.getElementsByClassName('mui-icon-clear')[0].style.right = "3rem";
document.getElementById('searchInput').style.width = "calc(100% - 3rem)"
document.getElementById('muiSearchCancel').style.display = "block";
}
// 展开搜索结果框
homeSearch();
})
document.getElementById('searchInput').addEventListener('keypress', function(event) {
if (event.keyCode == 13) {
document.activeElement.blur(); // 收起模拟键盘
// 展开搜索结果框
if (document.getElementById('searchPanelBox')) {
homeSearch();
} else {
resetPageInfo();
}
event.preventDefault(); // 阻止页面刷新
}
})
}
let formBoxs = document.getElementsByClassName('form-box');
if (formBoxs.length > 0) {
for (let i = 0; i < formBoxs.length; i++) {
if (formBoxs[i].getAttribute('option')) {
console.log("初始化表单", formBoxs[i].getAttribute('option'))
let option_ = formOptions[formBoxs[i].getAttribute('option')];
let dom = document.createElement('div');
dom.innerHTML = `
${formBoxs[i].getAttribute('title')}
`;
formBoxs[i].appendChild(dom);
if (option_.length > 0) {
for (let i1 = 0; i1 < option_.length; i1++) {
let doms = document.createElement('div');
doms.innerHTML = `
${option_[i1].title}
${option_[i1].required ? '
'+option_[i1].title+'不能为空
' : ''}
`;
formBoxs[i].appendChild(doms);
}
} else {
mui.toast('form option:' + formBoxs[i].getAttribute('option') + 'is undefined!');
}
}
}
}
let formTabBoxs = document.getElementsByClassName('form-list-box');
if (formTabBoxs.length > 0) {
for (let i = 0; i < formTabBoxs.length; i++) {
if (formTabBoxs[i].getAttribute('option')) {
let option_ = formTabOptions[formTabBoxs[i].getAttribute('option')];
if (option_.length > 0) {
for (let i1 = 0; i1 < option_.length; i1++) {
let dom = document.createElement('div');
dom.className = "form-row tabList";
let datas = option_[i1].data;
for (let i2 = 0; i2 < datas.length; i2++) {
dom.innerHTML +=
`
${datas[i2].lable}
`;
}
formTabBoxs[i].appendChild(dom);
}
} else {
mui.toast('form option:' + formTabBoxs[i].getAttribute('option') + 'is undefined!');
}
}
}
}
let pickerBoxs = document.getElementsByClassName('pickerBox');
if (pickerBoxs.length > 0) {
for (let i = 0; i < pickerBoxs.length; i++) {
if (pickerBoxs[i].getAttribute('option') && pickerLists[pickerBoxs[i].getAttribute(
'option')]) {
let pickerOptions = pickerLists[pickerBoxs[i].getAttribute('option')];
if (pickerOptions.length > 0) {
for (let i2 = 0; i2 < pickerOptions.length; i2++) {
let pickerOption_ = pickerOptions[i2];
let pickerDom = document.createElement('div');
pickerDom.setAttribute('name', pickerOption_.name);
pickerDom.setAttribute('type', 'picker');
pickerDom.setAttribute('parentOption', pickerBoxs[i].getAttribute('option'));
pickerDom.innerText = pickerOption_.label;
pickerBoxs[i].appendChild(pickerDom);
}
}
} else {
mui.toast('picker option:' + pickerBoxs[i].getAttribute('option') + 'is undefined!');
}
}
}
}
// 看板页面初始化配置mui请求
function muiPageInit() {
// mui请求
let myTaskListDom = document.getElementById('myTaskListDom');
if (myTaskListDom) {
getMoveMyTaskList();
myTaskListDom.addEventListener('scroll', function(event) {
//scrollTop是滚动条滚动时,距离顶部的距离
var scrollTop = myTaskListDom.scrollTop || document.body.scrollTop;
//windowHeight是可视区的高度
var windowHeight = myTaskListDom.clientHeight || document.body.clientHeight;
//scrollHeight是滚动条的总高度
var scrollHeight = myTaskListDom.scrollHeight || document.body.scrollHeight;
//滚动条到底部的条件
let scrollBottom = scrollHeight - scrollTop - windowHeight;
if (scrollBottom == 0 && (allCount > page * pageSize)) {
getMoveMyTaskList();
}
})
}
// mui请求
// 如果在首页,先填充保存的用户名和密码,如果有token则进行token校验,通过提示欢迎回来
if (document.getElementById('autoLogin')) {
if (isActive) {
document.getElementById('userName').value = localStorage.key('userName') ? localStorage
.getItem(
'userName') : '';
document.getElementById('passWord').value = localStorage.key('passWord') ? localStorage
.getItem(
'passWord') : '';
}
document.getElementById('autoLogin').checked = isActive;
if (localStorage.getItem('token') != null) {
postRequest2(getUserInfoUrl, {}, null, function success(res, params) {
if (res.code == 200) {
mui.toast('欢迎回来', '系统提示');
mui.openWindow("pages/homeNew.html", "homeNew");
} else {
localStorage.removeItem("token");
}
}, function error(xhr, type, errorThrown) {
mui.alert('系统异常!请联系开发人员!', '系统提示');
});
}
}
}
// 用户登录
function apiLogin(setting, funSuccess, funError) {
postRequest(loginUrl, setting, funSuccess, funError);
}
// dms获取token
function getDmsToken() {
let paramData = new FormData();
paramData.append("userName", "user001");
paramData.append("password", "1234567890");
paramData.append("clientId", "1");
dmsPostRequest(dmsLoginUrl, {
data: paramData,
dataType: "json"
}, function success(res) {
console.log("getDmsToken:", res);
if (res.code == "200") {
localStorage.setItem("dmsToken", res.message);
}
}, function error(xhr, type, errorThrown) {
mui.alert('DMS系统异常!请联系开发人员!', '系统提示');
})
}
// 首页搜索弹窗事件
function homeSearch() {
if (document.getElementById('searchPanelBox')) {
let searchPanelBoxDom = document.getElementById('searchPanelBox');
let searchPanelBoxDomInnerHTML = ``;
let paramValue = document.getElementById('searchInput').value;
for (let key in menuList) {
searchPanelBoxDomInnerHTML += `
${key}
`;
for (let i = 0; i < menuList[key].length; i++) {
if (menuList[key][i].name.indexOf(paramValue) != -1) {
if (menuList[key][i].pageName) {
searchPanelBoxDomInnerHTML += `