//组件 var WellHistorycomponent = { template:`
搜索
用户没有本菜单权限!
取 消 确 定
`, data(){ // 获取当前屏幕的分辨率 let screenW = window.screen.width; let screenH = window.innerHeight; console.log("screen width:",screenW); console.log("screen height:",screenH); return { tHeight:screenH-192, tableData: Array(0), input:'', currentPage: 1, pagesize:50, recordTotal:0, date_value:[], begin_t:'', end_t:'', if_show0:false, if_show:false, dialogVisible:false, sel_wellname:'', radio1:'1', radio2:'1', if_show_bt:1, if_show_et:false, checked:false, // 新增:类型筛选相关 selectedTypes: [], // 选中的类型值数组,如 [0, 2, 5] typeOptions: [ { value: 0, label: '测斜' }, { value: 1, label: '近钻头' }, { value: 2, label: '电阻率' }, { value: 3, label: '探管式方位伽马' }, { value: 4, label: '钻铤式方位伽马' }, { value: 5, label: '自然伽马' }, { value: 6, label: '工程参数' }, { value: 7, label: '振动粘滑' } ] } }, mounted() { if (localStorage.getItem("level")==4) { this.$data.if_show = true; return; } this.$data.if_show0= true; var _this = this; axios.post('/deescloud/get_page_setting', { opuser:localStorage.getItem("online_user"), opuser_uuid:localStorage.getItem("uuid"), }) .then(function (response) { if(response.data.r3=="1"){ _this.$data.if_show_bt=1; //_this.$data.if_show_et=false; }else if(response.data.r3=="2"){ //_this.$data.if_show_et=true; _this.$data.if_show_bt=2; }else if(response.data.r3=="3"){ //_this.$data.if_show_et=true; _this.$data.if_show_bt=3; }else{ _this.$data.if_show_bt=1; } }) .catch(function (error) { console.log(error); }); // 初始化加载数据 this.fetchData(); }, methods: { // 新增:将选中的类型数组转换为位掩码 getTypeMask() { let mask = 0; if (this.selectedTypes && this.selectedTypes.length > 0) { this.selectedTypes.forEach(val => { mask |= (1 << val); }); } return mask; }, // 新增:统一的查询数据方法 fetchData() { var _this = this; // 获取类型位掩码 const typeMask = this.getTypeMask(); axios.post('/deescloud/get_well_history', { opuser: localStorage.getItem("online_user"), opuser_uuid: localStorage.getItem("uuid"), Wellname: this.input, index: this.currentPage, count: this.pagesize, BeginTime: this.begin_t, EndTime: this.end_t, checked: this.checked, type: typeMask // 新增:传递类型筛选参数 }) .then(function (response) { console.log(response.data); _this.tableData = response.data.data || []; _this.recordTotal = response.data.total || 0; }) .catch(function (error) { console.log(error); _this.$message.error('查询失败,请稍后重试'); }); }, export_his(){ this.$data.dialogVisible=false; var _this = this; axios.post('deescloud/exportWellHistory',{ opuser:localStorage.getItem("online_user"), opuser_uuid:localStorage.getItem("uuid"), id: this.$data.sel_wellname, if_asc:false, r1:this.$data.radio1, r2:this.$data.radio2, }, ).then(function (response) { console.log(response.data); var fileid = response.data.fileId; var downUrl = 'file/'+fileid; downloadUrl(_this.$data.sel_wellname+".csv",downUrl); }) .catch(function (error) { console.log(error); }); }, exportWellHis(row){ this.$data.sel_wellname = row.wellNameSource; this.export_his(); //this.$data.dialogVisible=true; }, getWellEx(_search_name){ document.getElementById("bt_serach").blur(); this.currentPage = 1; if (this.begin_t != '' && this.end_t != '' && this.begin_t > this.end_t) { this.$message({ message: '结束时间必须在开始时间之后!', type: 'warning', duration: 1500 }); return; } // 调用统一的查询方法 this.fetchData(); }, handleSizeChange(val) { this.pagesize = val; this.currentPage = 1; if (this.begin_t != '' && this.end_t != '' && this.begin_t > this.end_t) { this.$message({ message: '结束时间必须在开始时间之后!', type: 'warning', duration: 1500 }); return; } this.fetchData(); }, handleCurrentChange(val) { this.currentPage = val; if (this.begin_t != '' && this.end_t != '' && this.begin_t > this.end_t) { this.$message({ message: '结束时间必须在开始时间之后!', type: 'warning', duration: 1500 }); return; } this.fetchData(); }, handleClick(row){ var url = 'hisd.html?id='+row.wellNameSource+'&sid='+row.wellstate+'&iid='+row.welloperator; url = encodeURI(url); window.open(url, ""); }, flexColumnWidth(str, tableData, flag = 'max') { // str为该列的字段名(传字符串);tableData为该表格的数据源(传变量); // flag为可选值,可不传该参数,传参时可选'max'或'equal',默认为'max' // flag为'max'则设置列宽适配该列中最长的内容,flag为'equal'则设置列宽适配该列中第一行内容的长度。 let maxContext = new Array(); str = str + '' let columnContent = '' if (!tableData || !tableData.length || tableData.length === 0 || tableData === undefined) { return '120px' } if (!str || !str.length || str.length === 0 || str === undefined) { return '120px' } if (flag === 'equal') { // 获取该列中第一个不为空的数据(内容) for (let i = 0; i < tableData.length; i++) { if (tableData[i][str].length > 0) { // console.log('该列数据[0]:', tableData[0][str]) columnContent = tableData[i][str] break } } } else { // 获取该列中最长的数据(内容) let index = 0 for (let i = 0; i < tableData.length; i++) { if (tableData[i][str] === null) { return } const now_temp = tableData[i][str] + '' const max_temp = tableData[index][str] + '' if (now_temp.length >= max_temp.length) { index = i } } columnContent = tableData[index][str] maxContext.push(columnContent); } // console.log('该列数据[i]:', columnContent) // 以下分配的单位长度可根据实际需求进行调整 //console.log(columnContent); let max_flex_width = 0 for (let i = 0; i < maxContext.length; i++) { let flexWidth = 0; for (const char of maxContext[i]) { if ((char >= 'A' && char <= 'Z') || (char >= 'a' && char <= 'z')) { // 如果是英文字符,为字符分配8个单位宽度 flexWidth += 8 } else if (char >= '\u4e00' && char <= '\u9fa5') { // 如果是中文字符,为字符分配15个单位宽度 flexWidth += 15 } else { // 其他种类字符,为字符分配8个单位宽度 flexWidth += 8 } } if (flexWidth>max_flex_width) { max_flex_width = flexWidth; console.log(maxContext[i]); } } if (max_flex_width < 120) { // 设置最小宽度 max_flex_width = 120 } if (max_flex_width > 300) { // 设置最大宽度 max_flex_width = 300 } //flexWidth = flexWidth;//20-padding console.log("max_flex_width:",max_flex_width); return max_flex_width + 'px' }, } }