HM-SPMS/web/nginx/html/js/design_old.js

2563 lines
88 KiB
JavaScript
Raw Normal View History

2026-01-06 04:47:40 +08:00
var reiniting = false,
timeout = 0,
outtime = 800;
var vm = new Vue({
el: '#app',
data: {
i18n: {
title1: "报表管理",
title4: "其他配置",
title5: "预览",
t1_1: "新建报表",
t1_2: "打开报表",
t1_3: "保存报表",
t2_1: "图片",
},
/*报表文件管理*begin*/
save_loading: false,
openedFile: {},
reportFilesPanel: false,
reportFiles: [{
label: '报表',
code: 'root',
expand: false,
filetype: 'report',
children: []
}],
reportModes: [{
label: '模板',
code: 'mode',
filetype: 'mode',
type: 'files',
children: [{
label: '模板1',
code: 'mode_1',
filetype: 'mode',
type: 'file',
children: []
}]
}],
fileName: '',
fileSelected: '',
checkedFiles: [],
showFileRename: false,
fileRename: '',
isSave: true,
newFile: false,
newFiles: false,
isMode: false,
fileSelected: '',
fileSelectedReport: {},
reportFilesTips_nofile: false,
reportFilesTips_file: false,
reportFilesTips_files: false,
/*报表文件管理*end*/
/*树操作*degin*/
editNodePanel: false,
addNodePanel: false,
edit_node_type: '',
checked_dev_index: '',
check_dev: [],
dev_name_text: '',
dev_code_text: '',
clone_all_dev: [],
edit_is_add: false,
delete_box: false,
show_field: false,
dev_field: {
label: 'label'
},
deleteFlag: true,
/*配置*begin*/
configure: false,
activeName: 'first',
border_type: '',
border_type_list: [{
label: '实线',
value: 'solid'
},
{
label: '点线',
value: 'dotted'
},
{
label: '虚线',
value: 'dashed'
},
{
label: '双线',
value: 'double'
},
{
label: '3D凹槽线边框(需要边框线较大才有明显的效果)',
value: 'groove'
},
{
label: '3D垄状线边框(需要边框线较大才有明显的效果)',
value: 'ridge'
},
{
label: '3D凹形',
value: 'inset'
},
{
label: '3D凸形',
value: 'outset'
},
],
border_bgcolor: '',
border_zise: '',
th_bgcolor: '',
th_color: '',
row_line_height: '',
row_chang_color: 'no-color',
report_bgcolor: '',
report_font: '',
report_size: '',
report_color: '',
report_textarea: '',
paper_type: 'A4',
paper_orientation: 'col',
paper_size: {
A4: {
col: 1086,
row: 756
},
A3: {
col: 1548,
row: 1084
}
},
/*配置*end*/
/*表格*begin*/
form: {},
cols_width: [],
radio_form: '',
tb_title: {
name: '表格标题',
is_show: 'block',
font_family: '微软雅黑',
font_color: '#0096D7',
font_size: '',
align: 'center',
top: 30,
right: 10,
bottom: 10,
left: 10
},
tb_sub: {
name: '表格副标题',
is_show: 'none',
font_family: '微软雅黑',
font_color: '#0096D7',
font_size: '',
align: 'center',
top: 10,
right: 10,
bottom: 10,
left: 10
},
tb_detailed_1: {
name: ' 自定义被描述:描述内容',
is_show: 'none',
font_family: '微软雅黑',
font_color: '#0096D7',
font_size: 'center',
align: '',
top: '',
right: '',
bottom: '',
left: ''
},
tb_detailed_2: {
name: ' 表格编号:000',
is_show: 'none',
font_family: '微软雅黑',
font_color: '#0096D7',
font_size: '',
align: 'center',
top: '',
right: '',
bottom: '',
left: ''
},
tb_detailed_3: {
name: ' 制表时间:' + new Date().toLocaleDateString(),
is_show: 'block',
font_family: '微软雅黑',
font_color: '#0096D7',
font_size: '',
align: 'center',
top: '',
right: '',
bottom: '',
left: ''
},
tb_detailed_4: {
name: ' 制表人:' + (sessionStorage.getItem('name') || ''),
is_show: 'block',
font_family: '微软雅黑',
font_color: '#0096D7',
font_size: '',
align: 'center',
top: '',
right: '',
bottom: '',
left: ''
},
tb_width: '600px',
table: '<tr><td>###</td><td>###</td><td>###</td><td>###</td><td>###</td><td>###</td><td>###</td><td>###</td></tr> <tr><td> &nbsp; </td><td> &nbsp; </td><td> &nbsp; </td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td></tr><tr><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td></tr><tr><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td></tr><tr><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td></tr><tr><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td></tr><tr><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td></tr><tr><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td></tr><tr><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td></tr><tr><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td></tr><tr><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td></tr><tr><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td><td> &nbsp;</td></tr>',
/*表格*end*/
/*右侧选项卡*/
sidetabs: 'dev',
/*向导*/
step: false,
substep: 0,
report_types: [],
filter_check_dev: '',
cur_report_type: {},
sketch_index: 0,
report_s_month: 1,
report_s_day: 1,
report_s_hours: 0,
report_interval: 1,
report_style: [],
cur_report_style: {},
station: [],
profession: [],
check_station: '',
check_profession: '',
all_dev: [],
check_all: true,
all_property: {},
property_tree: [],
clone_property_tree: [],
filter_all_dev: '',
filter_all_dev_type: 'name',
tree_loading: false,
checked_node: {
nodes: []
},
t_num: 0,
check_off: '全选',
filter_c: '',
filter_q: '',
ck_cd: '',
ck_value: '',
cd_info_check: {
list: [],
},
contrasts: [],
all_totals: [],
checked_contrast_index: [],
checked_total_index: [],
dev_tree: (function (n) {
for (var i = 0, arr = []; i < n; i++) {
arr.push({
label: '###',
tid: i
});
}
return arr;
})(8),
time_tree: [],
dev_map: [],
dev_head: [],
time_map: [],
table_y_name: '时间',
/*数据设置*begin*/
dataConfig: false,
data_cd: false,
data_dev: false,
data_point: 2,
text_key: 'code',
old_text: '',
new_text: '',
digits_fixed: false,
// 公式
cols_type: 'father',
cols_parent: '',
cols_value: '',
formule_name: '',
formule_value: '',
protree_to_option: [],
},
computed: {
totals: function () {
var vm = this;
if (!vm.all_totals) {
return []
}
var obj = JSON.parse(JSON.stringify(vm.all_totals));
if (this.sketch.value == 'sy' || this.sketch.value == 'dd') {
return [obj[obj.length - 1]];
} else {
return obj;
}
},
devtree_to_option: function () {
var arr = this.dev_tree;
var parent = arr,
i = 0,
child = [],
result = [];
while (parent[i]) {
if (parent[i].nodetype === "dev") {
result.push(parent[i])
} else {
if (parent[i].children && parent[i].children.length > 0) {
Array.prototype.push.apply(child, parent[i].children);
}
}
i++;
if (parent[i] === undefined) {
parent = child;
child = [];
i = 0;
}
}
return result;
},
adev_check: function () {
var arr = this.cur_report_type.type;
var index = this.sketch_index;
this.postDev();
return arr[index].value != 'sy';
},
checked_dev_node: function () {
return vm.check_dev[vm.checked_dev_index];
},
checked_total: function () {
var arr = this.totals;
var index = this.checked_total_index;
for (var i = 0, n = []; i < index.length; i++) {
n.push(arr[index[i]]);
}
return n;
},
checked_contrast: function () {
var arr = this.contrasts;
var index = this.checked_contrast_index;
for (var i = 0, n = []; i < index.length; i++) {
n.push(arr[index[i]]);
}
return n;
},
sketch: function () {
var arr = this.cur_report_type.type;
var index = this.sketch_index;
var _temp_ = getReportStyle();
var text = "报表";
this.report_style = [];
if (arr[index].value === 'sy') {
this.cur_report_style = _temp_[0];
this.report_style.push(_temp_[0]);
} else {
this.report_style = _temp_;
}
this.tb_title.name = arr[index].name;
if (this.tb_title.name.indexOf(text) === -1) {
this.tb_title.name = this.tb_title.name + text;
}
return arr[index];
},
border_style: function () {
return 'border-style:' + this.border_type + ';border-color:' + this.border_bgcolor +
';border-width:' + this.border_zise + 'px;height:' + this.row_line_height + 'px';
},
th_style: function () {
return 'background-color:' + this.th_bgcolor + ';color:' + this.th_color;
},
panel_style: function () {
return 'background-color:' + this.report_bgcolor + ';color:' + this.report_color + ';font-family:' + this.report_font +
';font-size:' + this.report_size + ';' + this.report_textarea
},
papers: function () {
var o = this.paper_size[this.paper_type];
for (var i = 0, arr = []; i < 100; i++) {
var str = "";
if (this.paper_orientation == 'col') {
str = "width:" + o.col + 'px;height:' + o.row + 'px;';
} else {
str = "height:" + o.col + 'px;width:' + o.row + 'px;';
}
arr.push(str);
}
return arr;
},
tb_title_style: function () {
var obj = this.tb_title;
return 'margin:auto;width:100%;' + setStyle(obj);
},
tb_sub_style: function () {
var obj = this.tb_sub;
return 'margin:auto;width:width:100%;' + setStyle(obj);
},
tb_detailed_1_style: function () {
var obj = this.tb_detailed_1;
return setStyle(obj);
},
tb_detailed_2_style: function () {
var obj = this.tb_detailed_2;
return setStyle(obj);
},
tb_detailed_3_style: function () {
var obj = this.tb_detailed_3;
return setStyle(obj);
},
tb_detailed_4_style: function () {
var obj = this.tb_detailed_4;
return setStyle(obj);
}
},
methods: {
selectDesabled: function () {
if (this.sketch.value == 'sy') {
this.report_s_month = 1;
this.report_s_day = 1;
this.report_s_hours = 0;
this.report_interval = 1;
return true;
}
return false;
},
preview: function () {
var obj = JSON.parse(JSON.stringify({
vm: vm.$data
}));
deleteReportFileItem(obj);
delete obj.vm.checked_node;
sessionStorage.setItem('dev_tree', pako.gzip(JSON.stringify(obj.vm.dev_tree), {to: "string"}));
delete obj.vm.dev_tree;
sessionStorage.setItem('vm', pako.gzip(JSON.stringify(obj.vm), {to: "string"}));
},
/*报表文件管理*/
reportReName: function (item) {
if (item.rename == false) {
return false;
}
var fn = function (node, addobj) {
vm.newFile = false;
}
var param = {
operateFlag: 1,
name: item.label,
treeCode: item.treeCode,
}
auReport(param, param, fn);
},
reInit: function () {
var report = this.fileSelectedReport;
if (!report) {
vm.$notify({
title: '错误',
message: '未选中报表。',
type: 'error'
});
return false;
}
if (report.type == 0) {
this.checkedFiles = this.fileSelectedReport.children;
return false;
}
this.$msgbox({
message: '确定打开该报表?',
title: '提示',
type: 'info',
showCancelButton: true,
confirmButtonText: '确定',
cancelButtonText: '取消',
callback: function (action, instance) {
if (action == "confirm") {
getReportDetail({
treeCode: report.treeCode
}, function (report_defail) {
var data = JSON.parse(report_defail);
vm.dev_tree = [];
reiniting = true;
for (var k in data.vm) {
if (k !== 'table') {
vm[k] = data.vm[k];
}
}
vm.reportFilesPanel = false;
vm.newFile = false;
vm.table = data.vm.table;
setTimeout(function () {
reiniting = false;
vm.refreshDevTree();
}, 200);
});
}
}
})
},
update_checkedFiles: function () {
this.checkedFiles.push('');
this.checkedFiles.pop();
},
fileClick: function (data, node, nodes) {
this.checkedFiles = node.parent.data.children || node.parent.data;
this.fileSelectedReport = data;
this.update_checkedFiles();
},
reportDelete: function () {
var report = this.fileSelectedReport;
var text = '';
if (report && report.type == '0') {
text = "确定删除该文件夹以及该文件夹下所有报表?";
} else if (report && report.type == '1') {
text = "确定删除该报表?";
}
this.$confirm(text, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'info',
callback: function (action, instance) {
if (action == 'confirm') {
deleteReport(report, function (success) {
if (success) {
vm.$refs.report_tree.remove(report);
vm.fileSelectedReport = {};
}
});
}
}
})
},
addFiles: function () {
if (timeout !== 0) {
return false;
}
timeout = setTimeout(function () {
timeout = 0
}, outtime);
if (vm.newFiles == false) {
return false;
}
if (!this.fileRename) {
this.fileRename = '新建文件夹_' + (new Date().getTime());
}
var param = {
treePCode: '',
name: '',
type: 0,
operateFlag: this.newFiles == false ? 1 : 0
};
var label = this.fileRename;
var path = [];
var node = {};
param.name = label;
if (this.checkedFiles[0]) {
path = this.checkedFiles[0].path.split('/');
param.treePCode = this.checkedFiles[0].treePCode;
} else {
if (this.fileSelectedReport && this.fileSelectedReport.type == 0) {
param.treePCode = this.fileSelectedReport.treeCode;
} else if (this.fileSelectedReport && this.fileSelectedReport.type == 1) {
vm.$notify({
title: '提示',
message: '不能添加为报表的子级',
type: 'warning'
});
return false;
}
}
if (path.length < 2) {
path = label;
} else {
path[path.length - 1] = label;
path = path.join('/');
}
node = {
"label": label,
"code": 'files' + (vm.t_num++),
"type": 0,
"path": path,
"treePCode": param.treePCode || '',
"children": []
}
var fn = function (node, addobj) {
node.treeCode = addobj.treeCode;
vm.checkedFiles.push(node);
vm.fileRename = '';
vm.newFiles = false;
}
this.save_loading = true;
auReport(param, node, fn)
},
updateFile: function () {
if (timeout !== 0) {
return false;
}
timeout = setTimeout(function () {
timeout = 0
}, outtime);
if (this.newFile || this.newFiles) {
return false;
}
if ((!this.fileSelectedReport.treeCode) || this.fileSelectedReport.type != 1) {
vm.$notify({
title: '提示',
message: '没有选中的报表',
type: 'warning'
});
return false;
}
this.$confirm('确定到报表 "' + this.fileSelectedReport.label + '" ?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'info',
callback: function (action, instance) {
if (action == 'confirm') {
var obj = JSON.parse(JSON.stringify({
vm: vm.$data
}));
deleteReportFileItem(obj)
auReport({
treeCode: vm.fileSelectedReport.treeCode,
treePCode: vm.fileSelectedReport.treePCode,
name: vm.fileSelectedReport.label,
type: 1,
fileDetail: JSON.stringify(obj),
operateFlag: 1
});
}
}
})
},
addFile: function () {
if (timeout !== 0) {
return false;
}
timeout = setTimeout(function () {
timeout = 0
}, outtime);
if (vm.newFile == false) {
return false;
}
if (!this.fileRename) {
this.fileRename = '新建报表_' + (new Date().getTime());
}
var obj = JSON.parse(JSON.stringify({
vm: vm.$data
}));
deleteReportFileItem(obj);
var param = {
treePCode: '',
name: '',
type: 1,
fileDetail: JSON.stringify(obj),
operateFlag: vm.newFile ? 0 : 1
}
var path = [];
var label = this.fileRename;
param.name = label;
if (this.checkedFiles[0]) {
path = this.checkedFiles[0].path.split('/');
param.treePCode = this.checkedFiles[0].treePCode;
} else {
if (this.fileSelectedReport && this.fileSelectedReport.type == 0) {
param.treePCode = this.fileSelectedReport.treeCode;
} else if (this.fileSelectedReport && this.fileSelectedReport.type == 1) {
vm.$notify({
title: '提示',
message: '不能添加为报表的子级',
type: 'warning'
});
return false;
}
}
if (path.length < 2) {
path = label;
} else {
path[path.length - 1] = label;
path = path.join('/');
}
var node = {
"label": label,
"code": 'file' + (vm.t_num++),
"type": 1,
"treePCode": param.treePCode || "",
"path": path
}
var fn = function (node, addobj) {
node.treeCode = addobj.treeCode;
vm.checkedFiles.push(node);
vm.fileRename = '';
vm.newFile = false;
};
this.save_loading = true;
auReport(param, node, fn)
},
reportPanelDblClick: function (report) {
if (report.type == '0') {
if (!report.children) {
report.children = [];
}
this.checkedFiles = report.children;
this.update_checkedFiles();
} else if (report.type == '1' && (!this.isSave)) {
this.reInit();
}
// if(report.filetype=='mode'){
// tempInit();
// this.reportFilesPanel=false;
// this.outerVisible1=true;
// }
},
addNewFiles: function () {
this.newFiles = true;
this.fileRename = ''
},
addNewFile: function () {
this.newFile = true;
this.fileRename = ''
},
reportRename: function () {
if (this.fileSelectedReport) {
vm.$set(this.fileSelectedReport, 'rename', true);
}
},
reportPanelClick: function (report) {
this.$refs.report_tree.setCurrentKey(report.code);
this.fileSelectedReport = report;
if (!this.isSave) {
this.fileName = report.path;
}
},
/*树*/
addFormula: function () {
this.cols_type = 'father';
this.cols_parent = '';
this.cols_value = '';
this.formule_name = '';
this.formule_value = '';
this.protree_to_option = [];
this.addNodePanel = true;
},
changeAllXNode: function () {
var key = this.text_key;
var oldtxt = this.old_text;
var newtxt = this.new_text;
if (!oldtxt || !newtxt) {
return false;
}
this.changeNodeCode(vm.dev_tree, key, oldtxt, newtxt);
this.refreshDevTree();
},
changeNodeCode: function (arr, key, ot, nt) {
for (var i = 0; i < arr.length; i++) {
var d = arr[i];
if (d[key] && d[key].indexOf(ot) !== -1) {
d[key] = d[key].replace(ot, nt);
}
if (d.children && d.children.length > 0) {
this.changeNodeCode(d.children, key, ot, nt);
}
}
},
change_input_text: function (data) {
if (data.nodetype == this.checked_dev_node.nodetype) {
this.dev_name_text = data.label;
this.dev_code_text = data.code;
} else {
this.$notify({
title: "提示",
message: "不是相同中类的节点"
});
}
},
editXNode: function (node, data) {
this.edit_node_type = data.devType;
var arr = [data];
if (data.devType) {
for (var i = 0; i < data.children.length; i++) {
var d = data.children[i]; //测点
arr.push(d);
for (var n = 0; n < d.children.length; n++) {
arr.push(d.children[n]);
}
}
}
this.check_dev = arr;
this.editNodePanel = true;
},
changeLabel: function () {
this.checked_dev_node.label = this.dev_name_text;
this.checked_dev_node.code = this.dev_code_text;
},
addXNode: function () {
var data = [];
if (vm && vm.dev_tree) {
data = JSON.stringify(vm.dev_tree);
}
this.x_check = JSON.parse(data);
this.addColPanel = true;
if (this.$refs.col_tree) {
this.$refs.col_tree.filter();
}
},
refreshDevTree: function () {
this.dev_tree.push('');
this.dev_tree.pop();
},
transposition: function () {
this.cur_report_style = this.cur_report_style.value == this.report_style[0].value ? this.report_style[1] : this.report_style[0];
this.refreshDevTree();
},
allowDrag: function () {
return true
},
allowDrop: function (nodeing, node, type) {
// type:inner/prev/next
this.$refs.x_tree.setCurrentNode(node);
var key = node.key;
var t = true;
switch (0) {
case nodeing.key.indexOf('p_f'):
if (type != 'inner') {
t = key.indexOf('p_') == 0;
} else {
t = key.indexOf('d_f') == 0;
}
break;
case nodeing.key.indexOf('c_'):
t = key.indexOf('c_') == 0;
break;
case nodeing.key.indexOf('d_'):
if (type != 'inner') {
t = key.indexOf('d_') == 0;
} else {
t = key.indexOf('c_') == 0;
}
break;
case nodeing.key.indexOf('t_'):
if (type != 'inner') {
t = key.indexOf('t_') == 0;
} else {
t = key.indexOf('d_') == 0;
}
break;
case nodeing.key.indexOf('p_'):
if (type != 'inner') {
t = key.indexOf('p_') == 0;
} else {
t = key.indexOf('t_') == 0;
}
break;
case nodeing.key.indexOf('s_'):
if (type != 'inner') {
t = key.indexOf('s_') == 0;
} else {
t = key.indexOf('p_') == 0;
}
break;
}
return t;
},
nodeDrop: function (n, o, s) {
this.refreshDevTree();
var ptid = '';
if (s == 'inner') {
ptid = o.data.tid;
} else {
ptid = o.data.ptid;
}
this.$set(n.data, 'ptid', ptid);
},
expendDev: function (event, dev) {
//展开到设备这一级
if (dev === undefined) {
dev = this.$refs.x_tree.store.root.childNodes;
}
for (var i = 0; i < dev.length; i++) {
if (dev[i].data.nodetype == 'dev') {
dev[i].expanded = false;
} else {
dev[i].expanded = true;
if (dev[i].childNodes.length > 0) {
this.expendDev(event, dev[i].childNodes);
}
}
}
},
changePtid: function () {
},
deleteNode: function (node, data) {
var c = this.$createElement;
if (data.devType === false) {
this.delete_box = true;
} else {
this.$confirm('确定删除该节点?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
callback: function (action, instance) {
if (action == 'confirm') {
vm.$refs.x_tree.remove(node);
vm.refreshDevTree();
}
}
});
}
},
filterXNode: function (value, data) {
if (!value) return true;
return data.label.indexOf(value) !== -1;
},
/*配置*/
makeFormule: function () {
var type = this.cols_type;
var name = this.formule_name;
var code = this.formule_value;
if (!name) {
vm.$notify({
title: '错误',
message: '请输入列名!',
type: 'error'
});
return;
}
if (type !== "father") {
if (!code) {
vm.$notify({
title: '错误',
message: '请输入列值!',
type: 'error'
});
return;
}
}
this.dev_tree.push({
label: name,
name: name,
nodetype: type == "father" ? 'fml_type' : type == "code" ? 'fml' : 'fml_string',
code: code,
tid: type !== "father" ? ('p_f' + vm.t_num++) : ('d_f' + vm.t_num++),
});
this.addNodePanel = false;
},
formulAddCode: function () {
var v = this.formule_value;
var code;
if (this.sketch.value == 'sy') {
code = '[' + this.cols_value + ']';
} else {
code = '[' + this.devtree_to_option[vm.cols_parent].code + ';' + this.cols_value + ']';
}
if (v) {
var last = v[v.length - 1];
if (last === '+' || last === '-' || last === '*' || last === '/' || last === '(') {
this.formule_value = v + code;
} else {
vm.$notify({
title: '错误',
message: '请先输入运算符!',
type: 'error'
});
}
} else {
this.formule_value = code;
}
},
formulAddNum: function (n) {
var v = this.formule_value;
if (v) {
var last = v[v.length - 1];
if (last === '+' || last === '-' || last === '*' || last === '/' || last === '(') {
this.formule_value = v + n;
} else if (Number(last)) {
this.formule_value = v + n;
} else {
vm.$notify({
title: '错误',
message: '请先输入运算符!',
type: 'error'
});
}
} else {
this.formule_value = n;
}
},
formulAddPrth: function (p) {
var v = this.formule_value;
v = !v ? '' : v;
if (p === '(') {
if ((!v) || v[v.length - 1] === '+' || v[v.length - 1] === '-' || v[v.length - 1] === '*' || v[v.length - 1] === '/' || v[v.length - 1] === '(') {
this.formule_value = v + '(';
} else {
vm.$notify({
title: '错误',
message: '请先输入运算符!',
type: 'error'
});
}
} else {
if ((!v) || v[v.length - 1] === '+' || v[v.length - 1] === '-' || v[v.length - 1] === '*' || v[v.length - 1] === '/' || v[v.length - 1] === '(') {
vm.$notify({
title: '错误',
message: '请先输入代码或数字!',
type: 'error'
});
} else {
this.formule_value = v + ')';
}
}
},
formuleBack: function () {
var v = this.formule_value;
if (v) {
var last = v[v.length - 1];
if (last === '+' || last === '-' || last === '*' || last === '/' || last === '(' || last === ')') {
this.formule_value = v.substring(0, v.length - 1);
} else {
var arr = this.formule_value.split(/[\+\-\*\/\(\)]/);
this.formule_value = v.substring(0, v.length - arr[arr.length - 1].length);
}
}
},
formulAddOperator: function (o) {
var v = this.formule_value;
if (v) {
var last = v[v.length - 1];
if (last === '+' || last === '-' || last === '*' || last === '/' || last === '(') {
vm.$notify({
title: '错误',
message: '请先输入代码或数字!',
type: 'error'
});
} else {
this.formule_value = v + o;
}
} else {
vm.$notify({
title: '错误',
message: '请先输入代码或数字!',
type: 'error'
});
}
},
/*向导*/
reInitSDate: function () {
this.report_s_month = 1;
this.report_s_day = 1;
this.report_s_hours = 0;
this.report_interval = 1;
},
reIniCheckNode: function () {
this.checked_node = {
nodes: []
}
},
expendChecked: function (event) {
var dev = this.$refs.dev_tree.store.root.childNodes;
this.expendDev(event, dev);
},
checkedchecked: function (node) {
var n = this.$refs.dev_tree.getNode(node);
this.checkedAll(n.childNodes, n.checked);
},
checkedAll: function (dev, checked) {
//选中到设备这一级
if (dev === undefined) {
dev = this.$refs.dev_tree.store.root.childNodes;
}
if (checked === undefined) {
checked = !this.check_all;
}
for (var i = 0; i < dev.length; i++) {
if (dev[i].data.devType !== undefined && dev[i].visible) {
dev[i].checked = checked;
}
if (dev[i].childNodes.length > 0) {
this.checkedAll(dev[i].childNodes, checked);
}
}
},
checkedDel: function () {
var dev = this.$refs.dev_tree.getCheckedNodes();
for (var i = 0; i < dev.length; i++) {
this.$refs.dev_tree.remove(dev[i]);
delete this.checked_node[dev[i].treeCode];
}
},
noneChild: function () {
var t = true;
for (var k in this.checked_node) {
if (k !== 'nodes' && this.checked_node[k].devType && (this.checked_node[k].children == undefined || this.checked_node[k].children.length == 0)) {
this.$confirm('您有设备未添加测点,是否继续下一步?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
callback: function (action, instance) {
if (action == 'confirm') {
vm.substep = Math.roundFixed(++vm.substep);
} else if (action == 'cancel') {
return false;
}
}
});
t = false;
break;
}
}
if (t) {
vm.substep = Math.roundFixed(++vm.substep);
}
},
statisticFinish: function () {
var property = this.$refs.c_tree.getCheckedNodes();
if (property.length == 0) {
this.$alert('请选择要添加的测点', '错误', {
confirmButtonText: '确定',
callback: function () {}
});
return false;
}
//统计*y轴树
var obj = this.propertyDataOp(property, vm.t_num++, '');
this.time_tree = obj.arr;
//统计*x轴树
this.createXTree();
this.step = false;
this.openedFile = {};
},
totalFinish: function () {
this.createYTree();
for (var i = 0; i < this.checked_total.length; i++) {
var item = this.checked_total[i];
this.time_tree.push({
label: item.label,
code: item.value,
tid: 'l_' + this.t_num++
})
}
this.createXTree();
this.step = false;
this.openedFile = {};
},
contrastFinish: function () {
//对比*y轴树
for (var i = 0, arr = []; i < this.checked_contrast.length; i++) {
var c = this.checked_contrast[i];
arr.push({
label: c.label,
code: c.value,
tid: '_c' + vm.t_num++
});
}
this.time_tree = arr;
//对比*x轴树
this.createXTree();
this.step = false;
this.openedFile = {};
},
createXTree: function () {
var arr = JSON.parse(JSON.stringify(vm.checked_node.nodes));
this.dev_tree = arr;
},
createYTree: function () {
//时间格式this.cur_report_type,this.sketch
//时间间隔this.report_interval
//开始时间this.report_s_month,this.report_s_day,this.report_s_hours
var strat, type = this.cur_report_type.value,
ban = this.sketch.value;
if (type == 'day' || type == 'udf') {
strat = this.report_s_hours;
} else if (type == 'year') {
strat = this.report_s_month;
} else {
strat = this.report_s_day;
}
strat = isNaN(strat * 1) ? 1 : strat * 1
this.time_tree = getTimeList(type, strat, vm.report_interval, ban);
},
propertyDataOp: function (property, num, ptid) {
//处理测点数据方法
var probj = {
arr: []
};
for (var i = 0; i < property.length; i++) {
var pn = objClone(property[i]);
pn.children = [];
pn.tid = pn.tid + '_' + num;
pn.ptid = pn.ptid + '_' + num;
if (probj[pn.tid] === undefined) {
probj[pn.tid] = pn;
} else {
pn.children = probj[pn.tid].children;
probj[pn.tid] = pn;
}
var parentNodeOp = function () {
if (probj[pn.ptid] === undefined) {
probj[pn.ptid] = {
tid: pn.ptid,
children: [pn]
}
} else {
probj[pn.ptid].children.push(pn);
}
}
if (pn.tid.indexOf('p') == 0) {
if (this.ck_cd) {
pn.ptid = ptid;
probj.arr.push(probj[pn.tid])
} else {
parentNodeOp();
}
} else if (pn.tid.indexOf('s') == 0) {
var _pid = pn.ptid.replace('_' + num, '')
if (_pid === undefined || _pid === '' || _pid === 'undefined') {
pn.ptid = ptid;
probj.arr.push(probj[pn.tid])
} else {
parentNodeOp();
}
} else {
if (!this.ck_cd) {
pn.ptid = ptid;
probj.arr.push(probj[pn.tid])
}
}
}
return probj;
},
addProperty: function () {
var dev = this.$refs.dev_tree.getCheckedNodes();
var property = this.$refs.c_tree.getCheckedNodes();
var dev_obj = this.recursion({
recursion: false
}, dev);
var prop_obj = this.recursion({
key: 'tid',
recursion: false
}, property);
if (dev.length == 0 || property.length == 0) {
this.$alert(dev.length == 0 ? '请选择要添加测点的设备' : '请选择要添加的测点', '提示', {
confirmButtonText: '确定',
});
return false;
}
//处理设备数据
var JSON_prop = JSON.stringify(prop_obj);
//记录不同的测点属性
for (var d in dev_obj.d_) {
var num = this.t_num++;
var _prop = JSON.parse(JSON_prop);
var _child = this.recursion({
key: 'tid',
recursion: true
}, dev_obj.d_[d].children);
//记录不同的测点类型
var t_obj = {},
unt_obj = {},
n_node = [];
for (var t in _prop.t_) {
var tcode = "";
for (var ct in _child.t_) {
if (ct.indexOf(t) === 0) {
tcode = ct;
}
}
if (tcode === '') {
t_obj[_prop.t_[t].tid] = _prop.t_[t];
n_node.push(_prop.t_[t]);
} else {
unt_obj[t] = _child.t_[tcode];
}
}
//记录不同的测点
var p_obj = {},
unp_obj = {};
for (var p in _prop.p_) {
var pcode = "";
for (var cp in _child.p_) {
if (cp.indexOf(p) === 0) {
pcode = cp;
}
}
if (pcode === '') {
if (unt_obj[_prop.p_[p].ptid] === undefined) {
p_obj[_prop.p_[p].tid] = _prop.p_[p];
n_node.push(_prop.p_[p]);
} else {
var obj = _prop.p_[p];
var ptid = _prop.p_[p].ptid;
obj.tid = obj.tid + '_' + num;
obj.ptid = unt_obj[ptid].tid;
unt_obj[ptid].children.push(obj);
}
} else {
unp_obj[p] = _child.p_[pcode];
}
}
//记录不同的测点属性
var s_obj = {};
for (var s in _prop.s_) {
var scode = "";
for (var cs in _child.s_) {
if (cs.indexOf(s) === 0) {
scode = cs;
}
}
if (scode === '') {
if (unp_obj[_prop.s_[s].ptid] === undefined) {
s_obj[_prop.s_[s].tid] = _prop.s_[s];
n_node.push(_prop.s_[s]);
} else {
var obj = _prop.s_[s];
var ptid = _prop.s_[s].ptid;
obj.tid = obj.tid + '_' + num;
obj.ptid = unp_obj[ptid].tid;
unp_obj[ptid].children.push(obj);
}
}
}
var _obj = this.propertyDataOp(n_node, num, dev_obj.d_[d].tid); //属相对象
dev_obj.d_[d].children = dev_obj.d_[d].children.concat(_obj.arr);
}
// for(var i=0;i<dev.length;i++){
// //修改测点的tid
// var num=this.t_num++;
// if(dev[i].nodetype=='dev'&&(dev[i].children.length==0||dev[i].children[0].nodetype!=='dev')){
// var obj=this.propertyDataOp(property,num,dev[i].tid);
// //拼接到children
// // for(var n=0;n<dev[i].children.length;n++){
// // var d=dev[i].children[n];
// // }
// dev[i].children=dev[i].children.concat(obj.arr);
// //合并
// }
// }
},
delProperty: function () {
var dev_obj = {},
dev = this.$refs.dev_tree.getCheckedNodes();
var prop_obj = {},
property = this.$refs.c_tree.getCheckedNodes();
dev_obj = this.recursion({
recursion: false
}, dev);
prop_obj = this.recursion({
key: 'tid',
recursion: false
}, property);
if (dev.length == 0 || property.length == 0) {
this.$alert(dev.length == 0 ? '请选择要删除测点的设备' : '请选择要删除的测点', '提示', {
confirmButtonText: '确定',
});
return false;
}
for (var k in dev_obj.d_) {
var _child = dev_obj.d_[k].children;
var _temp = this.recursion({
key: 'tid',
recursion: true
}, _child);
for (var s in prop_obj.s_) {
var code = '';
//判断设备中有无该测点,没有进行下次循环
for (var c in _temp.s_) {
if (c.indexOf(s) === 0) {
code = c;
break;
}
}
if (code == '') {
continue;
}
//查找属性的父级测点,删除属性节点,
var p = this.$refs.dev_tree.getNode(_temp.s_[code]).parent;
this.$refs.dev_tree.remove(_temp.s_[code]);
//判断该测点是否为空,为空则删除该测点,判断是否有测点类型,如过有
if (p.childNodes.length == 0) {
//查找测点的父级,判断测点类型子级是否为空,为空则删除该节点
var d = p.parent;
this.$refs.dev_tree.remove(p);
if (d.data.nodetype == 'property_type' && d.childNodes.length == 0) {
this.$refs.dev_tree.remove(d);
}
}
}
}
},
checkCd: function (data, nlist) {
var node = this.$refs.c_tree.getNode(data);
if (this.editNodePanel) {
node = this.$refs.clone_c_tree.getNode(data);
}
var checked = node.checked;
var clickCd = function (node) {
var len = node.childNodes.length;
if (checked) {
var arr = vm.cd_info_check.list;
var n = 0;
if (arr.length !== 0) {
for (var i = 0; i < arr.length; i++) {
if (node.data.children[arr[i].index] && arr[i].code == node.data.children[arr[i].index].code) {
n++;
node.childNodes[arr[i].index].checked = true;
}
}
}
for (var i = 0, m = 0, t = true; i < len; i++) {
if (t && (arr.length == 0 || n == 0) && node.childNodes[i].visible) {
node.childNodes[i].checked = true;
t = false;
}
if (node.childNodes[i].checked) {
m++;
}
}
if (m != len) {
node.indeterminate = true;
}
} else {
for (var i = 0; i < len; i++) {
if (node.childNodes[i].visible) {
node.childNodes[i].checked = false;
}
}
node.indeterminate = false;
}
}
var clickSx = function (node) {
var len = node.parent.childNodes.length;
if (checked) {
//设置父级选中
node.parent.checked = true;
//记录选中点的信息
if (!vm.cd_info_check.dev || node.data.ptid != vm.cd_info_check.dev) {
vm.cd_info_check.dev = node.data.ptid;
vm.cd_info_check.list = [];
}
for (var i = 0; i < len; i++) {
var nd = node.parent.childNodes[i];
if (nd.checked == true) {
vm.cd_info_check.list.push({
code: nd.data.code,
index: i
});
}
}
} else {
for (var i = 0, t = false; i < len; i++) {
if (node.parent.childNodes[i].checked == true) {
t = true;
}
}
node.parent.checked = t;
for (var i = 0; i < vm.cd_info_check.list.length; i++) {
if (vm.cd_info_check.list[i].code == node.data.code) {
vm.cd_info_check.list.splice(i, 1);
}
}
}
}
if (data.tid.indexOf('p') === 0) {
//测点
clickCd(node);
} else if (data.tid.indexOf('s') === 0) {
//属性
clickSx(node);
} else {
//其他
for (var i = 0; i < node.childNodes.length; i++) {
if (node.childNodes[i].visible) {
node.childNodes[i].checked = checked;
clickCd(node.childNodes[i]);
}
}
}
var nodeparent = node.parent
while (nodeparent) {
this.checkSelectedStatus(node.parent);
nodeparent = nodeparent.parent;
}
},
creatProperty: function () {
this.property_tree = [];
if (this.sketch.value == 'sy') {
if (post[8].data === undefined) {
var node = vm.$refs.adev_tree.getCurrentNode();
if (node) {
getProceeds(node.devCode);
}
return false;
}
vm.all_property = post[8].data;
} else {
vm.all_property = post[3].data;
}
if (this.sketch.value == 'yx') {
this.property_tree.push(this.all_property.yc);
} else if (this.sketch.value == 'dd') {
this.property_tree.push(this.all_property.ym);
} else {
for (var k in this.all_property) {
this.property_tree.push(this.all_property[k])
}
}
this.clone_property_tree = JSON.parse(JSON.stringify(vm.property_tree));
},
recursion: function (op, arr, obj) {
if (obj === undefined) {
obj = {
c_: {},
d_: {},
t_: {},
p_: {},
s_: {},
__other: {}
}
}
for (var i = 0, n = []; i < arr.length; i++) {
var o = arr[i]
var code = op.key ? arr[i][op.key] : arr[i].code;
obj[code] = o;
if (o.nodetype === 'dev_type') {
obj.c_[code] = o;
} else if (o.nodetype === 'dev') {
obj.d_[code] = o;
} else if (o.nodetype === 'property_type') {
obj.t_[code] = o;
} else if (o.nodetype === 'property') {
obj.p_[code] = o;
} else if (o.nodetype === 'property_value') {
obj.s_[code] = o;
} else {
obj.__other[code] = o;
}
obj[o.code] = o;
if (o.children && o.children.length > 0) {
n = n.concat(o.children);
}
}
if (n.length == 0 || !op.recursion) {
return obj;
} else {
return this.recursion(op, n, obj);
}
},
nodeFor: function (obj) {
var o = objClone(obj);
if (o.children && o.children.length > 0) {
o.tid = 'c_' + this.t_num++;
} else {
o.tid = 'd_' + this.t_num++;
}
o.children = [];
return o;
},
creatDevTree: function () {
if (this.sketch.value == 'sy') {
var node = vm.$refs.adev_tree.getCurrentNode();
this.checked_node.nodes = [];
for (var i = 0, _arr = ['峰', '平', '谷', '尖']; i < _arr.length; i++) {
var _id = node.devCode + ';' + vm.t_num + ';';
var _o = {
label: _arr[i],
code: _id,
nodetype: 'dev',
devCode: node.devCode,
devType: true,
children: [],
tid: 'd_' + vm.t_num++
}
this.checked_node[_id] = _o;
this.checked_node.nodes.push(_o);
}
getProceeds(node.devCode);
if (node) {
this.substep = Math.roundFixed(++this.substep);
} else {
this.$alert('您未选中任何设备!', '提示', {
confirmButtonText: '确定',
callback: function () {}
});
}
return false;
}
this.check_all = true;
var dev = {}; //原先选中的设备
var adev = {}; //全部设备中选中的设备
dev = this.checked_node;
adev.dev_list = vm.$refs.adev_tree.getCheckedNodes(false, true);
if (dev.nodes.length > 0 || adev.dev_list.length > 0) {
this.substep = Math.roundFixed(++this.substep);
} else {
this.$alert('您未选中任何设备!', '提示', {
confirmButtonText: '确定',
callback: function () {}
});
return false;
}
//同步对象和节点
if (dev.nodes.length > 0 && (dev.nodes[0] !== dev[dev.nodes[0].treeCode])) {
var _temp = dev.nodes;
dev = {
nodes: _temp
};
var _temp_arr = _temp;
while (_temp_arr.length > 0) {
for (var i = 0, _arr = []; i < _temp_arr.length; i++) {
var d = _temp_arr[i];
dev[d.treeCode] = d;
if (d.children && d.children.length > 0) {
var ntpye = d.children[0].nodetype;
if (ntpye !== 'property_type' && ntpye !== 'property') {
_arr = _arr.concat(d.children);
}
}
}
_temp_arr = _arr;
}
}
//过滤数据
for (var i = 0, gl = {}; i < adev.dev_list.length; i++) {
var d = adev.dev_list[i];
if (dev[d.treeCode] === undefined) {
var obj_d = this.nodeFor(d);
dev[d.treeCode] = obj_d;
gl[obj_d.treeCode] = obj_d;
}
}
//处理自己的层级关系
var arr = [];
for (var k in gl) {
var d = gl[k];
if ((!d.treePCode) || gl[d.treePCode] === undefined) {
arr.push(d);
} else {
d.ptid = gl[d.treePCode].tid;
gl[d.treePCode].children.push(d);
}
}
//生成nodes
for (var i = 0; i < arr.length; i++) {
var d = arr[i];
if (dev[d.treePCode] === undefined) {
d.ptid = "";
dev.nodes.push(d);
} else {
d.ptid = dev[d.treePCode].tid;
dev[d.treePCode].children.push(d);
}
}
//生成devModel
var devmodels = {
arr: []
};
for (var k in dev) {
if (k == 'nodes') {
continue;
}
if (devmodels[dev[k].devModelCode] !== undefined) {
devmodels.arr.push(dev[k].devModelCode);
devmodels[dev[k].devModelCode] = dev[k].devModelCode;
}
}
getCdInfo({
devTpName: devmodels.arr.join(';')
})
},
checkSelectedStatus: function (nodes) {
var node_on = 0,
node_off = 0;
for (var i = 0, len = nodes.childNodes.length; i < len; i++) {
var node = nodes.childNodes[i];
if (node.checked || node.indeterminate) {
node_on++;
} else {
node_off++;
}
}
if (node_on == len) {
nodes.checked = true;
nodes.indeterminate = false;
} else if (node_off == len) {
nodes.checked = false;
nodes.indeterminate = false;
} else {
nodes.checked = true;
nodes.indeterminate = true;
}
},
checkVisible: function (data, checked) {
var node = this.$refs.adev_tree.getNode(data);
var ac = false,
auc = false;
var checkedStatus = node.checked;
var _arr = node.childNodes;
while (_arr.length > 0) {
for (var i = 0, _temp = []; i < _arr.length; i++) {
var n = _arr[i];
if (n.visible) {
this.$refs.adev_tree.setChecked(n.data, checkedStatus);
}
if (n.childNodes.length > 0) {
_temp = _temp.concat(n.childNodes);
}
if (n.checked) {
ac = true;
} else {
auc = true;
}
}
_arr = _temp;
if (ac && auc) {
n.parent.indeterminate = true;
}
}
this.checkSelectedStatus(node.parent);
// }
},
postDev: function () {
var vm = this;
this.all_dev = [];
this.tree_loading = true;
if (this && this.check_profession) {
getDev(vm.check_profession, vm.check_station);
}
},
filterMspsNode: function (value, data) {
if (!this.filter_c && !this.filter_q) return true;
var ps = false,
node;
var fc = this.filter_c.split(/\s+/g);
var fq = this.filter_q.split(/\s+/g);
if (data.tid.indexOf('s') == 0) {
if (!this.editNodePanel) {
node = this.$refs.c_tree.getNode(data).parent.data;
} else {
node = this.$refs.clone_c_tree.getNode(data).parent.data;
}
};
if (!this.filter_q) {
if (data.tid.indexOf('p') == 0) {
// ps=data.label.indexOf(vm.filter_c)!==-1
ps = this.filterMulty(data.label, fc);
} else if (data.tid.indexOf('s') == 0) {
// ps=node.label.indexOf(vm.filter_c)!==-1
ps = this.filterMulty(node.label, fc);
}
} else if (!this.filter_c) {
if (data.tid.indexOf('s') == 0) {
// ps=data.label.indexOf(vm.filter_q)!==-1
ps = this.filterMulty(data.label, fq);
}
} else {
if (data.tid.indexOf('p') == 0) {
// ps=data.label.indexOf(vm.filter_c)!==-1
ps = this.filterMulty(data.label, fc);
} else if (data.tid.indexOf('s') == 0) {
// ps=data.label.indexOf(vm.filter_q)!==-1&&node.label.indexOf(vm.filter_c)!==-1
ps = this.filterMulty(data.label, fq) && this.filterMulty(node.label, fc);
}
}
return ps;
},
filterCheckNode: function (value, data) {
if (!value || data.nodetype === 'dev_type') return true;
var str = value.split(/\s+/g);
var d = data;
if (d.nodetype !== 'dev') {
do {
var n = this.$refs.dev_tree.getNode(d).parent;
d = n ? n.data : d;
} while (n && d.nodetype !== 'dev');
}
return this.filterMulty(d.label, str);
},
filterDevNode: function (value, data) {
if (!value) return true;
var str = value.split(/\s+/g);
if (this.step) {
var node = this.$refs.adev_tree.getNode(data);
} else {
var node = this.$refs.clone_adev_tree.getNode(data);
}
var t = false;
if (this.filter_all_dev_type == 'code') {
t = this.filterMulty(data.code, str);
} else {
t = this.filterMulty(data.label, str);
}
return t;
},
filterMulty: function (data, value) {
for (var i = 0, t = false; i < value.length; i++) {
if (value[i] === '' || value[i] === undefined || value[i] === null) {
continue;
}
if (data.indexOf(value[i]) !== -1) {
t = true;
}
}
return t;
},
setTableType: function (type) {
this.cur_report_type = type;
this.sketch = type.type[0];
if (this.sketch_index === '' || this.sketch_index === undefined || this.sketch_index > (this.cur_report_type.type.length - 1)) {
this.sketch_index = 0;
}
this.reInitSDate();
},
changeReportType: function () {
var t = this.sketch.value;
var num = Math.floor(vm.substep);
if (t === 'yx') { /*运行*/
this.substep = num;
} else if (t === 'dd') { /*电度*/
this.substep = num + 0.01;
} else if (t === 'bb') { /*报表*/
this.substep = num + 0.02;
} else if (t === 'cr') { /*班报表*/
this.substep = num + 0.03;
} else if (t === 'tj') { /*统计*/
this.substep = num + 0.05;
this.reIniCheckNode();
} else if (t === 'db') { /*对比*/
this.substep = num + 0.06;
} else if (t === 'qx') { /*全线*/
this.substep = num + 0.07;
}
},
reportInterval: function (str, fn) {
var arr = getReportIntreval();
if (this.cur_report_type.value !== 'udf') {
arr.length = 3;
}
fn(arr);
},
reportIntervalClear: function () {
this.report_interval = '';
},
/*菜单*/
menuSelect: function (v) {
if (v == 4) {
this.configure = true;
} else if (v == 6) {
} else if (v == '1-1') {
//初始化参数
vm.filter_check_dev = '';
vm.filter_c = '';
vm.filter_q = '';
vm.filter_all_dev = '';
vm.filter_all_dev_type = 'name';
if (this.substep != 0) {
this.$confirm('是否清除现有报表向导数据?', '', {
confirmButtonText: '是,从空白新建',
cancelButtonText: '否,从现有新建',
type: 'warning',
callback: function (action, instance) {
if (action !== 'cancel') {
vm.cur_report_type = vm.report_types[0];
vm.sketch = vm.report_types[0].type[0];
vm.cur_report_style = vm.report_style[0];
vm.sketch_index = 0;
vm.report_s_month = 1;
vm.report_s_day = 1;
vm.report_s_hours = 0;
vm.report_interval = 1;
vm.check_station = vm.station[0].id;
vm.check_profession = vm.profession[0].id;
vm.postDev();
vm.ck_cd = '';
vm.checked_node = {
nodes: []
};
vm.checked_total_index = [];
vm.checked_contrast_index = [];
vm.cd_info_check = {
list: []
};
vm.cols_width = [];
}
vm.substep = 0;
vm.step = true;
}
});
} else {
this.substep = 0;
this.step = true;
}
} else if (v == '1-2') {
this.reportFilesPanel = true;
this.isSave = false;
} else if (v == '1-3') {
var obj = JSON.parse(JSON.stringify({
vm: vm.$data
}));
deleteReportFileItem(obj);
if (!vm.openedFile.treeCode) {
vm.reportFilesPanel = true;
vm.isSave = true;
} else {
this.$confirm('确定保存到报表"' + vm.openedFile.name + '"?', '', {
confirmButtonText: '保存修改',
cancelButtonText: '打开报表库',
type: 'warning',
callback: function (action, instance) {
if (action == 'cancel') {
vm.reportFilesPanel = true;
vm.isSave = true;
} else {
vm.openedFile.fileDetail = JSON.stringify(obj);
auReport(vm.openedFile);
}
}
});
}
} else if (v == '1-4') {
// this.newFile=true;
}
},
/*右侧选项卡*/
tabClick: function () {
},
/*属性*begin*/
querySearchFont: function (str, fn) {
fn([{
name: '宋体',
value: '宋体',
v: 'SimSun'
},
{
name: '新宋体',
value: '新宋体',
v: 'SimSun'
},
{
name: '仿宋',
value: '仿宋',
v: 'SimSun'
},
{
name: '楷体',
value: '楷体',
v: 'SimSun'
},
{
name: '黑体',
value: '黑体',
v: 'SimSun'
},
{
name: '微软雅黑',
value: '微软雅黑',
v: 'Microsoft YaHei'
},
{
name: 'Arial',
value: 'Arial',
v: 'Arial'
},
{
name: 'Arial Black',
value: 'Arial Black',
v: 'Arial Black'
},
{
name: 'Times New Roman',
value: 'Times New Roman',
v: 'Times New Roman'
},
{
name: 'Courier New',
value: 'Courier New',
v: 'Courier New'
},
{
name: 'Tahoma',
value: 'Tahoma',
v: 'Tahoma'
},
{
name: 'Verdana',
value: 'Verdana',
v: 'Verdana'
}
]);
},
querySearchSize: function (str, fn) {
fn([{
value: '12px'
},
{
value: '14px'
},
{
value: '22px'
},
{
value: '30px'
},
{
value: '46px'
},
]);
},
handleComplete: function () {},
handleIconClick5: function () {
this.state5 = '';
},
handleIconClick6: function () {
this.state6 = '';
},
changeStyle: function (obj) {
this.sidetabs = 'table';
this.radio_form = obj;
}
},
watch: {
cols_parent: function (nv) {
var arr = this.devtree_to_option;
this.protree_to_option = [];
Array.prototype.push.apply(vm.protree_to_option, arr[nv].children);
},
checked_dev_index: function (nv) {
var v = this.check_dev[nv];
if (!v) {
return false;
}
this.dev_name_text = v.label;
this.dev_code_text = v.code;
this.edit_node_type = v.nodetype;
// if(!v.tid){return false;}
// if(v.tid.indexOf('c_')==0){
// }else if(v.tid.indexOf('d_')==0){
// }else if(v.tid.indexOf('t_')==0){
// }else if(v.tid.indexOf('p_')==0){
// }else if(v.tid.indexOf('s_')==0){
// }
},
radio_form: function (nv, no) {
vm.form = vm[nv];
},
show_field: function (val) {
/*切换树的显示方式*/
this.$set(vm.dev_field, 'label', val ? 'code' : 'label');
},
filter_all_dev: function (val) {
if (this.step) {
this.$refs.adev_tree.filter(val);
} else if (this.editNodePanel) {
this.$refs.clone_adev_tree.filter(val);
}
},
filter_check_dev: function (val) {
this.$refs.dev_tree.filter(val);
},
filter_c: function (val) {
if (this.step) {
this.$refs.c_tree.filter(val);
} else if (this.editNodePanel) {
this.$refs.clone_c_tree.filter(val);
}
},
filter_q: function (val) {
if (this.step) {
this.$refs.c_tree.filter(val);
} else if (this.editNodePanel) {
this.$refs.clone_c_tree.filter(val);
}
},
dev_tree: function (nv, ov) {
if (reiniting) {
return false;
}
//同步弹窗的树
var newValue = JSON.stringify(nv);
//生成表头数据
var data = dataOp(JSON.parse(newValue), 'x_tree');
this.dev_map = getLastNode(JSON.parse(newValue));
var style = this.border_style + ";" + this.th_style;
var width_td = '';
if (this.time_map.length > 0) {
var tree = dataOp(JSON.parse(JSON.stringify(vm.time_tree)), 'y_tree');
var head, body;
if (this.cur_report_style.value == 0) {
width_td = widthTd(tree.length, vm.dev_map.length);
//横向
head = creatTHRow(data, tree.length, style).str;
body = creatTHCol(tree, new Array(vm.dev_map.length + 1).join('<td style="' + this.border_style + '"><div> &nbsp;</div></td>'), style);
} else {
width_td = widthTd(data.length, vm.time_map.length);
//纵向
head = creatTHRow(tree, data.length, style).str;
body = creatTHCol(data, new Array(vm.time_map.length + 1).join('<td style="' + this.border_style + '"><div> &nbsp;</div></td>'), style);
}
this.table = '<thead>' + width_td + head + '</thead>' + '<tbody>' + body + '</tbody>';
}
for (var i = 0, sum = 0; i < vm.cols_width.length; i++) {
sum += vm.cols_width[i] * 1;
}
vm.tb_width = sum + 'px';
setTimeout(function () {
document.getElementById('table').style.width = vm.tb_width;
}, 20);
},
time_tree: function (nv, ov) {
if (reiniting) {
return false;
}
var newValue = JSON.stringify(nv);
//生成表头数据
var data = dataOp(JSON.parse(newValue), 'y_tree');
this.time_map = getLastNode(JSON.parse(newValue));
var style = this.border_style + ";" + this.th_style;
var width_td = '';
if (this.dev_map.length > 0) {
var tree = dataOp(JSON.parse(JSON.stringify(vm.dev_tree)), 'x_tree');
var tds = new Array(vm.time_map.length + 1).join('<td style="' + this.border_style + '"><div>&nbsp;</div></td>');
var head, body;
if (this.cur_report_style.value != 0) {
width_td = widthTd(tree.length, vm.time_map.length);
//纵向
head = creatTHRow(data, tree.length, style).str;
body = creatTHCol(tree, new Array(vm.time_map.length + 1).join('<td style="' + this.border_style + '"><div> &nbsp;</div></td>'), style);
} else {
width_td = widthTd(data.length, vm.dev_map.length);
//横向
head = creatTHRow(tree, data.length, style).str;
body = creatTHCol(data, new Array(vm.dev_map.length + 1).join('<td style="' + this.border_style + '"><div> &nbsp;</div></td>'), style);
}
this.table = '<thead>' + width_td + head + '</thead>' + '<tbody>' + body + '</tbody>';
}
for (var i = 0, sum = 0; i < vm.cols_width.length; i++) {
sum += vm.cols_width[i] * 1;
}
vm.tb_width = sum + 'px';
setTimeout(function () {
document.getElementById('table').style.width = vm.tb_width;
}, 20);
},
cur_report_style: function (nv, ov) {
if (nv.value == 0) {
this.table_y_name = '时间';
} else if (nv.value == 1) {
this.table_y_name = '设备';
}
},
},
created: function () {
var vm = this;
/*对比*/
this.contrasts = getAllContrasts();
/*统计*/
this.all_totals = getALLTotals();
init(vm);
},
directives: {
treefocus: {
update: function (el, {
value
}, newnode, oldnode) {
if ((nv == ov) && vm.input_focus && newnode.elm.style.display !== 'none') {
var nv = newnode.data.props.value;
var ov = oldnode.data.props.value;
var tag = el.getElementsByTagName('input')[0];
tag.focus();
tag.select();
vm.input_focus = false;
}
}
}
}
});
function setStyle(form) {
var style = 'padding:' + form.top + 'px ' + form.right + 'px ' + form.bottom + 'px ' + form.left + 'px ' +
';font-family:' + form.font_family +
';color:' + form.font_color +
';font-size:' + form.font_size +
';text-align:' + form.align +
';display:' + form.is_show;
return style;
}
/**
* @desc 去除自定义列
*/
function filterDefined(obj, code) {
var o = [],
index;
for (var i = 0; i < obj.length; i++) {
var ob = obj[i];
if ((ob.code + '').indexOf('definedId') === -1) {
o.push(ob);
if (ob.children && ob.children.length > 0) {
var _obj = filterDefined(ob.children, code)
o[o.length - 1].children = _obj.node;
if (index === undefined) {
index = _obj.index;
}
}
} else {
if (ob.code === code) {
index = vm.formulas.length;
vm.formulas_index = index;
}
vm.formulas.push(ob);
vm.formulas['ind' + ob.code] = vm.formulas.length - 1;
}
}
return {
node: o,
index: index
};
}
//自动关闭提示
function showTimeout(key, times) {
setTimeout(function () {
vm[key] = false;
}, times * 1000)
}
//递归同步树公式数据
function formulaTreeData(tree, formula) {
for (var i = 0; i < tree.length; i++) {
var len = formula['ind' + tree[i].code];
if (len !== undefined) {
tree[i].label = formula[len].label;
tree[i].formula = formula[len].formula;
}
if (tree[i].children && tree[i].children.length > 0) {
formulaTreeData(tree[i].children, formula);
}
}
}
//返回公式类型
function getFormulaType(str = '') {
str += '';
var len = str.indexOf('(')
if (len === -1) {
return 'string';
} else {
var s = str.substr(0, len);
return !s ? 'defined' : s
}
}
//拆解树形数据
function dataOp(arr, tree, result) {
if (result === undefined) {
result = [];
}
var temp = [];
result[result.length] = temp;
for (var i = 0, t = []; i < arr.length; i++) {
var node = vm.$refs[tree].getNode(arr[i]);
if (node && node.visible === false) {
continue;
}
temp.push(arr[i]);
var child = arr[i].children;
if (child instanceof Array && child.length > 0) {
t = t.concat(child);
}
}
if (t.length > 0) {
return dataOp(t, tree, result);
} else {
return result;
}
}
//生成横向表头
function creatTHRow(arr, collength, style) {
var pid = {},
ids = [],
str = "",
len = arr.length;
for (var i = len - 1; i >= 0; i--) {
ids[i] = [];
var a = arr[i],
_str = '';
for (var k = 0; k < a.length; k++) {
var t = a[k];
pid[t.ptid] = (pid[t.ptid] === undefined ? 0 : pid[t.ptid]) + (pid[t.tid] === undefined ? 1 : pid[t.tid]);
if (pid[t.tid] === undefined) {
_str += "<th style='" + style + "' rowspan=" + (len - i) + "><div>" + t.label + "</div></th>";
ids[i].push(t);
} else {
_str += "<th style='" + style + "' colspan=" + pid[t.tid] + "><div>" + t.label + "</div></th>";
if (ids[i + 1] !== undefined) {
ids[i] = ids[i].concat(ids[i].splice(0, pid[t.tid]));
}
}
}
if (i > 0) {
var tr = "<tr>";
} else {
var tr = '<tr><th style="' + style + '" rowspan="' + (len) + '" colspan="' + collength + '"><div>' + vm.table_y_name + '</div></th>';
}
str = tr + _str + "</tr>" + str;
}
return {
str: str,
arr: ids[0]
};
}
//生成纵向表头
function creatTHCol(arr, n, style) {
var pid = {},
ids = {},
str = '',
tr = n + '</tr>',
len = arr.length;
for (var i = len - 1; i >= 0; i--) {
var a = arr[i];
for (var k = 0; k < a.length; k++) {
var t = a[k];
if (!t.ptid) {
t.ptid = 'root'
}
if (pid[t.ptid] === undefined) {
pid[t.ptid] = 0;
}
pid[t.ptid] += pid[t.tid] === undefined ? 1 : pid[t.tid];
var th = '';
if (pid[t.tid] === undefined) {
th = '<th style="' + style + '" colspan="' + (len - i) + '"><div>' + t.label + '</div></th>';
if (pid[t.ptid] == 1) {
ids[t.ptid] = [];
}
var row = (pid[t.ptid] != 1 || i == 0 ? '<tr>' : '') + th + tr;
ids[t.ptid].push(row);
if (i == 0) {
str += row;
}
} else {
th = '<th style="' + style + '" rowspan="' + pid[t.tid] + '"><div>' + t.label + '</div></th>';
if (i == 0) {
ids[t.tid][0] = '<tr>' + th + ids[t.tid][0];
str += ids[t.tid].join('');
} else {
if (ids[t.ptid] === undefined) {
ids[t.ptid] = [];
ids[t.tid][0] = th + ids[t.tid][0];
} else {
ids[t.tid][0] = '<tr>' + th + ids[t.tid][0];
}
ids[t.ptid] = ids[t.ptid].concat(ids[t.tid]);
}
}
}
}
return str;
}
//生成自己以及后代节点的tidh和ptid
function changeTid(ptid, obj, num, arr) {
var o = obj instanceof Array ? obj : [obj];
if (ptid === undefined) {
ptid = 'root'
}
if (arr === undefined) {
arr = {}
}
for (var i = 0; i < o.length; i++) {
var t = o[i],
id = 't_' + num++;
if (arr[t.code] === undefined) {
arr[t.code] = [t];
} else {
arr[t.code].push(t);
}
if (t.tid === undefined) {
t.tid = id;
t.ptid = ptid;
}
if (t.children instanceof Array && t.children.length > 0) {
return changeTid(id, t.children, num, arr);
}
}
return num;
}
/*获取最末级节点数据*/
function getLastNode(nodes) {
var arr = [];
for (var i = 0, len = nodes.length; i < len; i++) {
var curNode = nodes[i];
if (curNode.children instanceof Array && curNode.children.length > 0) {
arr = arr.concat(getLastNode(curNode.children));
} else {
arr.push(curNode);
}
}
return arr;
}
Math.roundFixed = function (num, n) {
if (!n) {
n = 2;
}
var cs = Math.pow(10, n);
return Math.round(num * cs) / cs;
}
/**
* @desc 对象浅克隆
* @param {object:要复制的对象} obj
* @param {function:复制时处理的逻辑,缺省全部复制} fn
*/
function objClone(obj, fn) {
var o = {};
for (var k in obj) {
if (typeof fn == 'function') {
fn(k, obj, o);
} else {
o[k] = obj[k];
}
}
return o;
}
/**
* @desc 初始化时处理tree数据
* @param {*} arr
*/
function filterTree(arr) {
if (!(arr instanceof Array)) {
return arr;
}
for (var i = 0, obj = []; i < arr.length; i++) {
arr[i] = Object.assign({}, arr[i]);
if (arr[i].children && arr[i].children.length > 0) {
obj = obj.concat(arr[i].children);
}
}
if (obj.length > 0) {
return filterTree(obj);
}
}
function deleteReportFileItem(obj) {
var saveKey = {
// 向导
substep: 1,
cur_report_type: 1,
cur_report_style: 1,
sketch_index: 1,
report_s_month: 1,
report_s_day: 1,
report_s_hours: 1,
report_interval: 1,
check_station: 1,
check_profession: 1,
checked_node: 1,
checked_total_index: 1,
checked_contrast_index: 1,
totals: 1,
contrasts: 1,
// 页面
table: 1,
row_chang_color: 1,
dev_tree: 1,
time_tree: 1,
dev_map: 1,
time_map: 1,
tb_title: 1,
tb_sub: 1,
tb_width: 1,
tb_detailed_1: 1,
tb_detailed_2: 1,
tb_detailed_3: 1,
tb_detailed_4: 1,
// 数据配置
data_point: 1,
digits_fixed: 1,
//其他配置
report_bgcolor: 1,
report_font: 1,
report_size: 1,
report_color: 1,
report_textarea: 1,
row_line_height: 1,
row_chang_color: 1,
border_type: 1,
border_bgcolor: 1,
border_zise: 1,
th_bgcolor: 1,
th_color: 1,
//其他
cols_width: 1,
t_num: 1
}
for (var k in obj.vm) {
if (saveKey[k] === undefined) {
delete obj.vm[k];
}
}
}
function widthTd(th, td) {
var ths = '';
var tds = '';
vm.cols_width.length = th + td;
for (var i = 0; i < th; i++) {
vm.cols_width[i] = !vm.cols_width[i] ? 70 : vm.cols_width[i];
ths += '<th style="width:' + vm.cols_width[i] + 'px;"></th>';
}
for (var j = 0; j < td; j++) {
var n = i + j;
vm.cols_width[n] = !vm.cols_width[n] ? 70 : vm.cols_width[n];
tds += '<td style="width:' + vm.cols_width[n] + 'px;"></td>';
}
return '<tr class="udf-width">' + ths + tds + '</tr>';
}