|
@@ -191,12 +191,11 @@ |
|
@@ -191,12 +191,11 @@ |
191
|
<script>
|
191
|
<script>
|
192
|
import vue from "vue";
|
192
|
import vue from "vue";
|
193
|
import VueSuperSlide from "vue-superslide";
|
193
|
import VueSuperSlide from "vue-superslide";
|
194
|
-import {getDetailTableData,getDetailTableDataNoPage,getResType,getTrendBaseUrl} from "@/api/platform";
|
194
|
+import {getDetailTableData,getDetailTableDataNoPage,getResType,getTrendBaseUrl,saveClearAalarm,getBResourcePage} from "@/api/platform";
|
195
|
import customDialog from "../../designerComponents/customDialog";
|
195
|
import customDialog from "../../designerComponents/customDialog";
|
196
|
import customMenuBox from "../../designerComponents/customMenuBox";//下探组件
|
196
|
import customMenuBox from "../../designerComponents/customMenuBox";//下探组件
|
197
|
import textToImage from "../../designerComponents/textToImage";//文字转图片
|
197
|
import textToImage from "../../designerComponents/textToImage";//文字转图片
|
198
|
import textToBg from "../../designerComponents/textToBg";
|
198
|
import textToBg from "../../designerComponents/textToBg";
|
199
|
-import {saveClearAalarm} from "../../../../../../api/platform";
|
|
|
200
|
import {Message} from "element-ui";
|
199
|
import {Message} from "element-ui";
|
201
|
//文字转背景
|
200
|
//文字转背景
|
202
|
|
201
|
|
|
@@ -794,7 +793,7 @@ export default { |
|
@@ -794,7 +793,7 @@ export default { |
794
|
|
793
|
|
795
|
// 计算 奇偶背景色
|
794
|
// 计算 奇偶背景色
|
796
|
bodyTable(index) {
|
795
|
bodyTable(index) {
|
797
|
- var styleJson = {};
|
796
|
+ let styleJson = {};
|
798
|
if (index % 2) {
|
797
|
if (index % 2) {
|
799
|
styleJson["background-color"] = this.optionsSetUp.eventColor
|
798
|
styleJson["background-color"] = this.optionsSetUp.eventColor
|
800
|
} else {
|
799
|
} else {
|
|
@@ -803,7 +802,7 @@ export default { |
|
@@ -803,7 +802,7 @@ export default { |
803
|
return styleJson;
|
802
|
return styleJson;
|
804
|
},
|
803
|
},
|
805
|
tableRowHeight(){
|
804
|
tableRowHeight(){
|
806
|
- var styleJson = {};
|
805
|
+ let styleJson = {};
|
807
|
if(this.optionsSetUp.rowHeight){
|
806
|
if(this.optionsSetUp.rowHeight){
|
808
|
styleJson['height'] = this.optionsSetUp.rowHeight+'px';
|
807
|
styleJson['height'] = this.optionsSetUp.rowHeight+'px';
|
809
|
styleJson['line-height'] = this.optionsSetUp.rowHeight+'px';
|
808
|
styleJson['line-height'] = this.optionsSetUp.rowHeight+'px';
|
|
@@ -814,7 +813,7 @@ export default { |
|
@@ -814,7 +813,7 @@ export default { |
814
|
return styleJson;
|
813
|
return styleJson;
|
815
|
},
|
814
|
},
|
816
|
tableFiledWidth(index){
|
815
|
tableFiledWidth(index){
|
817
|
- var styleJson = {};
|
816
|
+ let styleJson = {};
|
818
|
if(this.optionsSetUp.dynamicAddTable[index] && this.optionsSetUp.dynamicAddTable[index].width ){
|
817
|
if(this.optionsSetUp.dynamicAddTable[index] && this.optionsSetUp.dynamicAddTable[index].width ){
|
819
|
styleJson["width"] = this.optionsSetUp.dynamicAddTable[index].width;
|
818
|
styleJson["width"] = this.optionsSetUp.dynamicAddTable[index].width;
|
820
|
}
|
819
|
}
|
|
@@ -1000,17 +999,166 @@ export default { |
|
@@ -1000,17 +999,166 @@ export default { |
1000
|
this.dialogName = dialogName;
|
999
|
this.dialogName = dialogName;
|
1001
|
return dialogName;
|
1000
|
return dialogName;
|
1002
|
},
|
1001
|
},
|
|
|
1002
|
+ formatFunction(date, fmt) {
|
|
|
1003
|
+ if (/(y+)/.test(fmt)) {
|
|
|
1004
|
+ fmt = fmt.replace(
|
|
|
1005
|
+ RegExp.$1,
|
|
|
1006
|
+ (date.getFullYear() + "").substr(4 - RegExp.$1.length)
|
|
|
1007
|
+ );
|
|
|
1008
|
+ }
|
|
|
1009
|
+ const o = {
|
|
|
1010
|
+ "M+": date.getMonth() + 1, // 月份
|
|
|
1011
|
+ "d+": date.getDate(), // 日
|
|
|
1012
|
+ "h+": date.getHours(), // 小时
|
|
|
1013
|
+ "m+": date.getMinutes(), // 分
|
|
|
1014
|
+ "s+": date.getSeconds(), // 秒
|
|
|
1015
|
+ "q+": Math.floor((date.getMonth() + 3) / 3), // 季度
|
|
|
1016
|
+ S: date.getMilliseconds() // 毫秒
|
|
|
1017
|
+ };
|
|
|
1018
|
+ for (var k in o) {
|
|
|
1019
|
+ if (new RegExp("(" + k + ")").test(fmt)) {
|
|
|
1020
|
+ fmt = fmt.replace(
|
|
|
1021
|
+ RegExp.$1,
|
|
|
1022
|
+ RegExp.$1.length == 1
|
|
|
1023
|
+ ? o[k]
|
|
|
1024
|
+ : ("00" + o[k]).substr(("" + o[k]).length)
|
|
|
1025
|
+ );
|
|
|
1026
|
+ }
|
|
|
1027
|
+ }
|
|
|
1028
|
+ return fmt;
|
|
|
1029
|
+ },
|
1003
|
//下载
|
1030
|
//下载
|
1004
|
- downloadTableList(title, resId, kpiId, flagPrifix, sortBy, order){
|
|
|
1005
|
- let kpiIdArr=[];
|
|
|
1006
|
- let param={
|
|
|
1007
|
- sortBy:this.sortBy
|
1031
|
+ async downloadTableList(title, resId, kpiId, flagPrifix, sortBy, order){
|
|
|
1032
|
+ let titleName=this.tableStyle.tableName;
|
|
|
1033
|
+ if (!titleName) {
|
|
|
1034
|
+ titleName = "下载";
|
|
|
1035
|
+ }
|
|
|
1036
|
+ let sheetName=titleName;
|
|
|
1037
|
+ let params={
|
|
|
1038
|
+ resId:this.getUrlToken.resId
|
1008
|
}
|
1039
|
}
|
1009
|
- this.header.map(item=>{
|
|
|
1010
|
- if(item.sort){
|
|
|
1011
|
- kpiIdArr.push(item.key)
|
1040
|
+ const { success,data } = await getBResourcePage(params,this.getUrlToken);
|
|
|
1041
|
+ console.log("success",success,data)
|
|
|
1042
|
+ if(success){
|
|
|
1043
|
+ let ResourceData=data[0];
|
|
|
1044
|
+ let resTypeName=ResourceData.resTypeName;
|
|
|
1045
|
+ let resName=ResourceData.resName;
|
|
|
1046
|
+ // let timeName=new Date().format("yyyyMMddhhmmss",24);
|
|
|
1047
|
+ let timeName=this.formatFunction(new Date(), 'yyyyMMddhhmmss')
|
|
|
1048
|
+ let title =resTypeName+'-'+resName+'-'+titleName+'-'+timeName;
|
|
|
1049
|
+console.log("title",title)
|
|
|
1050
|
+ let kpiIdArr=[];
|
|
|
1051
|
+ let kpiIds='';
|
|
|
1052
|
+ this.header.map(item=>{
|
|
|
1053
|
+ if(item.sort && item.key!='KPIF74D9D2B'){
|
|
|
1054
|
+ kpiIdArr.push(item.key)
|
|
|
1055
|
+ }
|
|
|
1056
|
+ })
|
|
|
1057
|
+ if(kpiIdArr && kpiIdArr.length>0){
|
|
|
1058
|
+ kpiIds=kpiIdArr.join(',');
|
1012
|
}
|
1059
|
}
|
1013
|
- })
|
1060
|
+ let param={
|
|
|
1061
|
+ resId:this.getUrlToken.resId,
|
|
|
1062
|
+ kpiId:kpiIds,
|
|
|
1063
|
+ flagPrifix:this.getUrlToken.flag,
|
|
|
1064
|
+ }
|
|
|
1065
|
+ let sort=this.sortBy;
|
|
|
1066
|
+ if(sort){
|
|
|
1067
|
+ param.sortBy=sort;
|
|
|
1068
|
+ }
|
|
|
1069
|
+ if(this.order){
|
|
|
1070
|
+ param.order=this.order;
|
|
|
1071
|
+ }
|
|
|
1072
|
+ this.getDetail(param,title)
|
|
|
1073
|
+ }
|
|
|
1074
|
+
|
|
|
1075
|
+
|
|
|
1076
|
+ },
|
|
|
1077
|
+ async getDetail(param,title,sheetName){
|
|
|
1078
|
+ const { success,data } = await getDetailTableDataNoPage(param,this.getUrlToken);
|
|
|
1079
|
+ if(success){
|
|
|
1080
|
+ let rowList = [];
|
|
|
1081
|
+ let headList = [];
|
|
|
1082
|
+ let resData = data[0];
|
|
|
1083
|
+ let header = resData.header;
|
|
|
1084
|
+ let content = resData.content;
|
|
|
1085
|
+ //封装content数据
|
|
|
1086
|
+ if (content && content.length > 0) {
|
|
|
1087
|
+ $.each(content, function (indx, con) {
|
|
|
1088
|
+ let values=[];
|
|
|
1089
|
+ $.each(con, function (inx, item) {
|
|
|
1090
|
+ values.push(item.kpiValue?item.kpiValue:'');
|
|
|
1091
|
+ });
|
|
|
1092
|
+ rowList.push(values);
|
|
|
1093
|
+ });
|
|
|
1094
|
+ }
|
|
|
1095
|
+ $.each(header,function (i,v) {
|
|
|
1096
|
+ headList.push(v.name);
|
|
|
1097
|
+ });
|
|
|
1098
|
+ //下载表格
|
|
|
1099
|
+ this.exportDataExcel(title, headList, rowList,sheetName);
|
|
|
1100
|
+ }
|
|
|
1101
|
+ },
|
|
|
1102
|
+ /**
|
|
|
1103
|
+ * 导出数据至excel 可以修改sheet
|
|
|
1104
|
+ *
|
|
|
1105
|
+ * @return null
|
|
|
1106
|
+ * @author lsq by 徐毫杰
|
|
|
1107
|
+ * @date 2022-03-01
|
|
|
1108
|
+ * @param title 导出excel文件名
|
|
|
1109
|
+ * @param headList 导出excel列头
|
|
|
1110
|
+ * @param rowList 导出excel数据
|
|
|
1111
|
+ * @param sheet 导出excel sheet页
|
|
|
1112
|
+ */
|
|
|
1113
|
+ exportDataExcel(title, headList, rowList, sheetName) {
|
|
|
1114
|
+ rowList.unshift(headList);
|
|
|
1115
|
+ let sheet = XLSX.utils.aoa_to_sheet(rowList);
|
|
|
1116
|
+ this.openDownloadDialog(sheet2blob(sheet,sheetName), title+'.xlsx');
|
|
|
1117
|
+ },
|
|
|
1118
|
+ // 将一个sheet转成最终的excel文件的blob对象,然后利用URL.createObjectURL下载
|
|
|
1119
|
+ sheet2blob(sheet, sheetName) {
|
|
|
1120
|
+ sheetName = sheetName || 'sheet1';
|
|
|
1121
|
+ var workbook = {
|
|
|
1122
|
+ SheetNames: [sheetName],
|
|
|
1123
|
+ Sheets: {}
|
|
|
1124
|
+ };
|
|
|
1125
|
+ workbook.Sheets[sheetName] = sheet;
|
|
|
1126
|
+ // 生成excel的配置项
|
|
|
1127
|
+ var wopts = {
|
|
|
1128
|
+ bookType: 'xlsx', // 要生成的文件类型
|
|
|
1129
|
+ bookSST: false, // 是否生成Shared String Table,官方解释是,如果开启生成速度会下降,但在低版本IOS设备上有更好的兼容性
|
|
|
1130
|
+ type: 'binary'
|
|
|
1131
|
+ };
|
|
|
1132
|
+ var wbout = XLSX.write(workbook, wopts);
|
|
|
1133
|
+ var blob = new Blob([s2ab(wbout)], {type:"application/octet-stream"});
|
|
|
1134
|
+ // 字符串转ArrayBuffer
|
|
|
1135
|
+ function s2ab(s) {
|
|
|
1136
|
+ var buf = new ArrayBuffer(s.length);
|
|
|
1137
|
+ var view = new Uint8Array(buf);
|
|
|
1138
|
+ for (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
|
|
|
1139
|
+ return buf;
|
|
|
1140
|
+ }
|
|
|
1141
|
+ return blob;
|
|
|
1142
|
+ },
|
|
|
1143
|
+ //通用的打开下载对话框方法,没有测试过具体兼容性
|
|
|
1144
|
+ //url 下载地址,也可以是一个blob对象,必选
|
|
|
1145
|
+ //saveName 保存文件名,可选
|
|
|
1146
|
+ openDownloadDialog(url, saveName) {
|
|
|
1147
|
+ if(typeof url == 'object' && url instanceof Blob)
|
|
|
1148
|
+ {
|
|
|
1149
|
+ url = URL.createObjectURL(url); // 创建blob地址
|
|
|
1150
|
+ }
|
|
|
1151
|
+ let aLink = document.createElement('a');
|
|
|
1152
|
+ aLink.href = url;
|
|
|
1153
|
+ aLink.download = saveName || ''; // HTML5新增的属性,指定保存文件名,可以不要后缀,注意,file:///模式下不会生效
|
|
|
1154
|
+ let event;
|
|
|
1155
|
+ if(window.MouseEvent) event = new MouseEvent('click');
|
|
|
1156
|
+ else
|
|
|
1157
|
+ {
|
|
|
1158
|
+ event = document.createEvent('MouseEvents');
|
|
|
1159
|
+ event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
|
|
|
1160
|
+ }
|
|
|
1161
|
+ aLink.dispatchEvent(event);
|
1014
|
},
|
1162
|
},
|
1015
|
//获取资源类型
|
1163
|
//获取资源类型
|
1016
|
async getResTypeData(){
|
1164
|
async getResTypeData(){
|