var post = { zy: { name: "专业", url: "/report/device/findSubSystemMS", // url: '/report/reportForm/findTenantList', param: "", data: [] }, cz: { name: "厂站", url: "/report/device/findStationLocationMS", // url: '/report/reportForm/findAreaList', param: "", data: [] }, dev: { name: "所有设备", url: "/report/device/findDeviceMS", // url: '/report/reportForm/findAreaDeviceList', param: "", data: [] }, gdc: { name: "获取设备下所有测点", url: "/report/device/checkDevicePropertity", param: "", data: [] }, cd: { name: "所有测点", url: "/report/device/findDevicePropertity", param: "", data: {} }, addReport: { name: "增加修改报表", url: "/report/fileFolder/saveOrUpdateFileFolderMs" }, allReport: { name: "获取所有报表文件信息", url: "/report/fileFolder/findFileFolderMs" }, delFile: { name: "删除文件", url: "/report/fileFolder/deleteFileFolderByTreeCodeMs" }, getReport: { name: "获取报表详细信息", url: "/report/fileFolder/findFileFolderByTreeCodeMs" }, syCd: { name: "收益测点", url: "/report/monitorBusiness/findDevicePropertyMSByDev" }, userGroup: { name: "获取用户组", url: "/report/fileFolder/findUsergDefList" }, save: { name: "保存权限", url: "/report/fileFolder/insertUsergReportInfoList" }, fileInput: { name: "文件导入", url: "/report/fileFolder/upload" }, fileOutput: { name: "文件导出", url: "/report/fileFolder/download" }, modelList: { name: "模板文件", url: "/report/api/ureport2/getXMLNameList" }, excelUpload: { name: "excel模板导入", url: "/report/fileFolder/uploadExcel" }, excelSave: { name: "excel报表保存", url: "/report/fileFolder/saveOrUpdateExcel" } }; //excel报表保存 function excelReportSave(param, fn) { axios.post(post.excelSave.url, param).then(function(res) { var d = res.data; vm.$notify({ title: d.operateFlag ? vm.i18n.prompt.suc : vm.i18n.prompt.fail, message: d.message, type: d.operateFlag ? "success" : "error" }); vm.excelSaveLoading = false; if (d.operateFlag) { getReportTree(); vm.excelFilesPanel = false; fn(res); } }); } function getModelList() { axios.post(post.modelList.url, {}).then(function(res) { vm.report_types = res.data.data || []; vm.modelType = vm.report_types[0] ? vm.report_types[0].name : ""; }); } function getDevCD(devCodeString) { axios.post(post.gdc.url, { devTpName: devCodeString }).then(function(res) { vm.devHasCD = res.data; }); } /** * @desc 拦截请求qs序列化和添加token */ axios.interceptors.request.use( function(config) { var o = getToken(); if (o.token) { //添加token config.headers.Authorization = "Bearer " + o.token; } config.headers.language = i18n(); if (config.method === "post" && config.url !== post.addReport.url) { config.data = Qs.stringify(config.data, { allowDots: true, arrayFormat: "indices" }); } return config; }, function(err) { return Promise.reject(err); } ); function fileOutput(treeCode) { location.href = post.fileOutput.url + "?treeCode=" + treeCode.treeCode; // axios.get(post.fileOutput.url, {params:treeCode}) // .then(function (res) { // console.log(res) // }) } /**保存权限 */ function setGroupPower({ usergArr, treeCode, id }) { axios .post(post.save.url, { usergArr: usergArr, treeCode: treeCode, id: id }) .then(function(res) { vm.$notify({ title: vm.i18n.prompt.power, message: vm.i18n.prompt.set, type: "success" }); vm.powerPanel = false; }) .catch(function(err) { console.error(err); }); } /**获取用户组 */ function getAllUserGroup() { if (powerDialog()) { axios .post(post.userGroup.url, {}) .then(function(res) { post.userGroup.data = res.data.usergInfo; vm.allUserGroup = []; for (var i = 0; i < res.data.usergInfo.length; i++) { var d = res.data.usergInfo[i]; vm.allUserGroup.push({ id: d.PERM_ID, name: d.PERM_NAME }); vm.checkedGroup.push(d.PERM_ID); } }) .catch(function(err) { console.error(err); }); } } /** * @desc 重新请求接口 * @param {*} title * @param {*} fn */ function reQueryPost(title, fn, context, param) { vm.$confirm(title, vm.i18n.prompt.tip, { confirmButtonText: vm.i18n.prompt.ok, cancelButtonText: vm.i18n.prompt.cancel, type: "info", callback: function(action, instance) { if (action == "confirm") { if (!context) { context = window; } context[fn].apply(context, param); } } }); } var devFn = { requestCount: 0, ress: {}, complate: function(fn) { configDevSearch().map(function(v) { devFn[v.fnName](v.labelName, v.type, devFn.definedFn(fn)); }); }, definedFn: function(fn) { return function() { if (configDevSearch().length == devFn.requestCount) { devFn.requestCount--; fn(devFn.ress); } }; }, setElSelect(labelName, type, fnName, res) { var obj = { getZY: "profession", getST: "station" }; vm[obj[fnName]] = res; //赋值 vm[obj[fnName] + "_info"] = { label: labelName, type: type }; res[0] && (vm["check_" + obj[fnName]] = res[0].id); //附加初始值 }, getZY: function(labelName, type, fn) { /*获取专业信息*/ axios .post(post.zy.url, {}) .then(function(res) { var arr = res.data.mapData.subSystemList; post.zy.data = arr; //处理数据 var resData = devFn.dataToList(arr, { label: "name", id: "subSystemId", code: "code" }); // for (var i = 0; i < arr.length; i++) { // var obj = { // label: arr[i].name, // id: arr[i].subSystemId, // code: arr[i].code // } // resData.push(obj); // } //缓存数据 devFn.ress.getZY = resData; // vm.profession = resData; // resData[0] && (vm.check_profession = resData[0].id);//附加初始值 //设置vm数据以及其他 devFn.setElSelect(labelName, type, "getZY", resData); devFn.requestCount++; fn(fn); // if (post.cz.data[0] !== undefined) { // getDev(post.zy.data[0].id, post.cz.data[0].id) // } }) .catch(function(err) { console.error(err); reQueryPost(vm.i18n.prompt.zyerr, "getZY", devFn, [ labelName, type, fn ]); }); }, getST: function(labelName, type, fn) { /*获取车站信息*/ axios .post(post.cz.url, {}) .then(function(res) { var arr = res.data.mapData.stationLocationList; post.cz.data = arr; var resData = type == "list" ? devFn.dataToList(arr, { label: "name", id: "locationId", code: "code" }) : devFn.dataToTree(arr, { label: "name", id: "locationId", code: "code" }); // for (var i = 0; i < arr.length; i++) { // resData.push({ // label: arr[i].name, // id: arr[i].locationId, // key: '', // code: arr[i].code // }); // } // vm.station = resData; // resData[0]&&(vm.check_station = resData[0].id);//附加初始值 devFn.ress.getST = resData; devFn.setElSelect(labelName, type, "getST", resData); devFn.requestCount++; fn(fn); // getDev(post.zy.data[0] !== undefined ? post.zy.data[0].id : '', post.cz.data[0].id); }) .catch(function(err) { console.error(err); reQueryPost(vm.i18n.prompt.czerr, "getST", devFn, [ labelName, type, fn ]); }); }, dataToList(arr, keys) { var resData = []; for (var i = 0; i < arr.length; i++) { var obj = {}, d = arr[i]; for (var k in keys) { obj[k] = d[keys[k]]; } resData.push(obj); } return resData; }, dataToTree(arr, keys) { var resData = [], treeNode = {}; for (var i = 0; i < arr.length; i++) { var obj = {}, d = arr[i]; for (var k in keys) { obj[k] = d[keys[k]]; } obj.treeCode = d.treeCode; obj.treePCode = d.treePCode; if (treeNode[d.treeCode]) { treeNode[d.treeCode] = Object.assign(treeNode[d.treeCode], obj); } else { treeNode[d.treeCode] = obj; } if (d.treePCode === undefined || d.treePCode === "") { resData.push(treeNode[d.treeCode]); } else { if (treeNode[d.treePCode]) { treeNode[d.treePCode].children ? treeNode[d.treePCode].children.push(treeNode[d.treeCode]) : (treeNode[d.treePCode].children = [treeNode[d.treeCode]]); } else { treeNode[d.treePCode] = { treeCode: d.treePCode, children: [treeNode[d.treeCode]] }; } } } return resData; } }; /* 获取收益测点 */ function getProceeds(param) { if (!param) { return false; } axios .post(post.syCd.url, { devCode: param }) .then(function(res) { var num = 0, tvalue = vm.cur_report_type.value, expaned = {}; var dflt = { check: [], node: [], expaned: [] }; for ( var i = 0, arr = [], obj = {}; i < res.data.mapData.pointList.length; i++ ) { var d = res.data.mapData.pointList[i]; if (d.property == "ym") { if (tvalue == "month" && d.name.indexOf("日") == -1) { continue; } else if (tvalue == "year" && d.name.indexOf("月") == -1) { continue; } } var key = d.name.substr(0, 1); if (obj[key] === undefined) { obj[key] = { label: key, code: d.sname, nodetype: "property_type", tid: "t_" + num++, children: [] }; arr.push(obj[key]); dflt.check.push(obj[key].tid); dflt.node.push(obj[key].tid); if (expaned[obj[key].ptid] === undefined) { dflt.expaned.push(obj[key].ptid); expaned[obj[key].ptid] = true; } } obj[key].children.push({ label: d.name, code: d.sname, nodetype: "property", value: d.value, tid: "p_" + num++, type: d.property, ptid: obj[key].tid }); dflt.check.push(obj[key].children[obj[key].children.length - 1].tid); dflt.node.push(obj[key].children[obj[key].children.length - 1].tid); } post.syCd.data = obj; vm.default_property = dflt; vm.all_property = obj; vm.creatProperty(); }) .catch(function(err) {}); } /*获取所有设备信息*/ function getDev(subSystem, station) { axios .post(post.dev.url, { subSystem: subSystem, station: station }) .then(function(res) { var resData = []; resData = listToTree(res.data.mapData.deviceMsList, function(o) { var obj = { label: o.name, code: o.treeCode, e: defaulte(), devType: true }; return obj; }); var jsonstring = JSON.stringify(resData); post.dev.data = JSON.parse(jsonstring); vm.all_dev = JSON.parse(jsonstring); vm.clone_all_dev = JSON.parse(jsonstring); vm.tree_loading = false; }) .catch(function(err) {}); } /** * @desc 获取所有属性 */ function getCdInfo(param, flag) { var resData = {}, num = 0; var _param = { devTpName: param === undefined ? "" : param.devTpName, type: param === undefined ? "" : param.type }; axios .post(post.cd.url, _param) .then(function(res) { var errFlag = true; var arr = res.data.mapData.measuringList; var tidList=[]; if(!vm.isNew){ tidList=vm.cd_tid; } var dflt = { check: [], node: [], expaned: [] }, expaned = {}; for (var i = 0; i < arr.length; i++) { var type = { label: arr[i].name, code: arr[i].type, nodetype: "property_type", // tid: "t_" + num++, tid: "t_" + arr[i].type+';', children: [] }; var pro = arr[i].propertyList; for (var n = 0; n < pro.length; n++) { var property = { label: pro[n].name + "(" + pro[n].code + ")", code: pro[n].code, isCommon: pro[n].typeValue, type: arr[i].type, nodetype: "property", pointType: pro[n].pointType, stateText: pro[n].stateText, stateTextList: pro[n].stateTextList, // tid: "p_" + num++, tid: "p_" + pro[n].code+";", ptid: type.tid, children: [] }; //新建时取默认,非新建时取原来 if ((vm.isNew&&property.isCommon == 1)||(tidList.indexOf(property.tid)!==-1&&!vm.isNew)) { dflt.check.push(property.tid); dflt.node.push(property); if (expaned[property.ptid] === undefined) { dflt.expaned.push(property.ptid); expaned[property.ptid] = true; } } var mst = pro[n].measuringStaticTypeList; if (mst.length == 0 && errFlag) { errFlag = false; vm.$notify({ title: vm.i18n.prompt.fail, message: "ERROR", type: "error" }); } for (var k = 0; k < mst.length; k++) { property.children.push({ label: mst[k].name, code: mst[k].type, propertyCode: pro[n].code, nodetype: "property_value", value: mst[k].value, // tid: "s_" + num++, tid: property.tid+"s_" + mst[k].type+";", ptid: property.tid }); //新建时取默认,非新建时取原来 if ((vm.isNew&&property.isCommon == 1&&k===0)||(tidList.indexOf(property.children[k].tid)!==-1&&!vm.isNew)) { dflt.check.push(property.children[k].tid); dflt.node.push(property.children[k]); } } type.children.push(property); } resData[arr[i].type] = type; } vm.default_property = dflt; console.log("getCdInfo -> dflt", dflt) if (param.devList && param.devTypeList) { vm.pushCd(param.devList, param.devTypeList, dflt.node); } post.cd.data = resData; vm.all_property = resData; vm.creatProperty(); }) .catch(function(err) {}); } function getCheckedNodeTid(nodeList){ if(nodeList instanceof Array){ var nodetype={property:1,property_value:1}; var children=[]; var processed={}; var result=nodeList.reduce((o,v,i)=>{ if(nodetype[v.nodetype]){ var tid=v.tid.split(';'); if(tid.length>1){tid.length=tid.length-1} var r=tid.join(';')+';' if(!processed[r]){ o.push(r); processed[r]=1; } } if(v.children&&v.children.length>0){ children=children.concat(v.children); } return o; },[]); if(children.length>0){ result=result.concat(getCheckedNodeTid(children)); } return result } } /** * @desc 增加修改报表 * treePCode:102//父级id * name:报表名 * type: type:类型 0文件夹、1文件 * fileDetail:报表内容 * operateFlag:操作标志//0新增、1修改 * * @param{Object}param * */ function auReport(param, node, fn,func) { var flag = param.operateFlag; axios .post( post.addReport.url, pako.gzip(encodeURIComponent(JSON.stringify(param)), { to: "string" }), { headers: { "Content-Encoding": "gzip", "Content-Type": "text/plain" } } ) .then(function(res) { var d = res.data; vm.$notify({ title: d.operateFlag ? vm.i18n.prompt.suc : vm.i18n.prompt.fail, message: d.message, type: d.operateFlag ? "success" : "error" }); vm.save_loading = false; if (node !== undefined && fn !== undefined && d.operateFlag) { fn(node, d.obj); } if(typeof func==='function'&&!d.operateFlag){ func(); } if ( powerDialog() && flag == 0 && d && d.operateFlag && d.obj && d.obj.type == 1 ) { vm.showPowerPanel({ treeCode: d.obj.treeCode, id: d.obj.id }); } }) .catch(function(err) { vm.$notify({ title: vm.i18n.prompt.fail, message: vm.i18n.prompt.adderr, type: "error" }); }); } /** * @desc 获取所有报表文件信息 * @param {Object} param 参数treeCode */ function getReportTree(param) { if (param === undefined) { param = {}; } axios .post(post.allReport.url, param) .then(function(res) { var arr = listToTree(res.data.mapData.fileFolderList, function(o) { return { code: o.treeCode, label: o.name, filetype: "report", type: o.type }; }); vm.reportFiles = arr; vm.checkedFiles = arr; }) .catch(function(err) {}); } /** * @desc 删除文件或文件夹 * @param {Object} param */ function deleteReport(param, fn) { if (param === undefined) { param = {}; } axios .post(post.delFile.url, param) .then(function(res) { var d = res.data; vm.$notify({ title: d.operateFlag ? vm.i18n.prompt.suc : vm.i18n.prompt.fail, message: d.message, type: d.operateFlag ? "success" : "error" }); fn(d.operateFlag); }) .catch(function(err) { vm.$notify({ title: vm.i18n.prompt.err, message: vm.i18n.prompt.delerr, type: "error" }); }); } /** * @desc 获取文件详细信息 * @param {Object} param * @param {Function} fn */ function getReportDetail(param, fn) { if (param === undefined) { return false; } axios .post(post.getReport.url, param) .then(function(res) { var d = res.data; var detail = d.mapData.fileFolder.fileDetail; fn(detail); vm.$notify({ title: d.operateFlag ? vm.i18n.prompt.suc : vm.i18n.prompt.fail, message: d.message, type: d.operateFlag ? "success" : "error" }); var obj = { treePCode: d.mapData.fileFolder.treePCode, treeCode: d.mapData.fileFolder.treeCode, name: d.mapData.fileFolder.name, type: d.mapData.fileFolder.type, fileDetail: detail, operateFlag: 1 }; vm.openedFile = obj; }) .catch(function(err) { vm.$notify({ title: vm.i18n.prompt.fail, message: vm.i18n.prompt.readerr, type: "error" }); }); } /** * @desc * @param {*} type * @param {*} start * @param {*} interval */ function getTimeList(type, start, interval, ban) { var itv = Number(Math.floor(interval * 60)); var arr = [], obj = { day: 24, udf: 16, tm: 3, td: 7, year: 12, month: 31, cr: 8 }; if (isNaN(itv)) { itv = 60; } var num; //日||自定义 if (type == "day" || type == "udf") { var s = start < 0 ? -24 - start : start; if (ban == "cr") { type = ban; } for (var i = 0; i < obj[type] * 60; i = i + itv) { var hour = (Math.floor(i / 60) + s) % 24; var miu = Number(i % 60); if (miu < 10) { miu = "0" + miu; } arr.push({ label: (hour < 0 ? /*'昨日'+*/ prependZero(24 + hour) : /*'今日'+*/ prependZero(hour)) + ":" + miu, code: i.toFixed(2), start: start, tid: "l_" + i }); } } else if (type == "year") { var s = start < 0 ? -12 - start : start; for (var i = 0; i < 12; i++) { num = (i + s) % 12; arr.push({ label: num == 0 ? 12 : num < 0 ? /*'去年'+*/ 12 + num : /*'今年'+*/ num, code: i.toFixed(2), start: start, tid: "l_" + i }); } } else { var s = start < 0 ? -31 - start : start; for (var i = 0; i < obj[type]; i++) { num = (i + s) % 31; arr.push({ label: num == 0 ? 31 : num < 0 ? /*'上月'+*/ 31 + num : /*'本月'+*/ num, code: i.toFixed(2), start: start, tid: "l_" + i }); } } return arr; } //工具方法 /*把list转成tree结构数据*/ function listToTree(arr, fn) { arr === undefined && (arr = []); var result = [], allObj = {}, p = []; for (var i = 0; i < arr.length; i++) { if (arr[i].treeCode && arr[i].treeCode === arr[i].treePCode) { continue; } //构建对象 if (allObj[arr[i].treeCode] === undefined) { allObj[arr[i].treeCode] = arr[i]; allObj[arr[i].treeCode].children = []; } else { allObj[arr[i].treeCode] = Object.assign( {}, arr[i], allObj[arr[i].treeCode] ); } allObj[arr[i].treeCode] = Object.assign( {}, allObj[arr[i].treeCode], fn(arr[i]) ); if (!arr[i].treePCode) { //如果没有treePCode或treePCode为空,默认最高级 if (arr[i].treeCode.devType !== undefined) { arr[i].treeCode.devType = false; } p.push(arr[i].treeCode); } else { if (allObj[arr[i].treePCode]) { if (arr[i].treePCode.devType !== undefined) { arr[i].treePCode.devType = false; } allObj[arr[i].treePCode].children.push(allObj[arr[i].treeCode]); } else { allObj[arr[i].treePCode] = { children: [allObj[arr[i].treeCode]], devType: false }; } } } //类别 for (var k in allObj) { if (allObj[k].children === undefined || allObj[k].children.length == 0) { allObj[k].nodetype = "dev"; } else { allObj[k].nodetype = "dev_type"; allObj[k].children = allObj[k].children.sort(function(a, b) { return a.remark10 - b.remark10; }); } } //组合成节点格式 for (var k = 0; k < p.length; k++) { result.push(allObj[p[k]]); } return result; } if (!Object.assign) { Object.defineProperty(Object, "assign", { enumerable: false, configurable: true, writable: true, value: function(target, firstSource) { "use strict"; if (target === undefined || target === null) throw new TypeError("Cannot convert first argument to object"); var to = Object(target); for (var i = 1; i < arguments.length; i++) { var nextSource = arguments[i]; if (nextSource === undefined || nextSource === null) continue; var keysArray = Object.keys(Object(nextSource)); for ( var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex++ ) { var nextKey = keysArray[nextIndex]; var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); if (desc !== undefined && desc.enumerable) to[nextKey] = nextSource[nextKey]; } } return to; } }); } function prependZero(n) { return n < 10 && n >= 0 ? "0" + n : n; } /** * @desc 初始化 */ function init(vm) { if (!vm.reportFilesPanel) { /*报表类型初始化*/ vm.report_types = getReportType(); /*报表样式初始化*/ vm.report_style = getReportStyle(); devFn.complate(function(res) { var params = []; params[0] = res.getZY && res.getZY[0] ? res.getZY[0].id : ""; params[1] = res.getST && res.getST[0] ? res.getST[0].id : ""; getDev(params[0], params[1]); }); // getZY(); //专业 // getST(); //车站 // getCdInfo();//测点信息 getReportTree(); //所有报表 if (powerDialog()) { getAllUserGroup(); //获取所有用户组 } vm.cur_report_type = vm.report_types[0]; vm.sketch = vm.report_types[0].type[0]; vm.cur_report_style = vm.report_style[0]; } } function initModel(vm) { getModelList(); devFn.complate(function(res) { var params = []; params[0] = res.getZY && res.getZY[0] ? res.getZY[0].id : ""; params[1] = res.getST && res.getST[0] ? res.getST[0].id : ""; getDev(params[0], params[1]); }); getReportTree(); //所有报表 if (powerDialog()) { getAllUserGroup(); //获取所有用户组 } } (function($) { $(document) .on("mousedown", "#table td>div,#table th>div", function() { return false; }) .on("mousedown", ".udf-width td,.udf-width th", function(e) { var $td = $(this); var width = parseFloat($td.css("width"), 10); var tw = parseFloat($("#table").css("width"), 10); var ox = e.pageX || e.clientX; var w = 0; var index = $td.index(); $("#table") .addClass("noselect") .attr("unselectable", "on"); $("body").on("mousemove", function(event) { var nx = event.pageX || event.clientX; w = nx - ox; $td.css("width", width + w + "px"); $("#table").css("width", tw + w + "px"); }); $("body").on("mouseup", function() { $("body") .removeClass("noselect") .removeAttr("unselectable"); $("body") .off("mousemove") .off("mouseup"); vm.table = $("#table").html(); vm.tb_width = parseFloat($("#table").css("width"), 10); vm.cols_width[index] = parseFloat($td.css("width")); $("#table") .removeClass("noselect") .removeAttr("unselectable"); }); }); if (window.parent && self == window.parent) { $("body").css("background", getTheme()["$bg-color"]); } })(jQuery); function listToObj(list) { for (var i = 0, obj = {}; i < list.length; i++) { obj[list[i].treeCode] = list[i]; } return obj; }