function feedbackLog(indexId){ $.modal.openTab("反馈记录",ctx + "/tl/tlTargetFeedbackLog/select/"+ indexId); }通过这个方法打开的页面在关闭时本页面如何自动更新
时间: 2024-04-19 18:24:43 浏览: 77
要在关闭反馈记录页面后自动更新当前页面,您可以使用以下方法。
1. 在打开反馈记录页面的函数中,使用`window.open`打开一个新的窗口,并将其保存在变量中:
```javascript
var feedbackWindow = window.open(ctx + "/tl/tlTargetFeedbackLog/select/" + indexId, "feedbackWindow");
```
2. 在需要更新的当前页面中,使用`setInterval`函数定期检查新窗口是否已关闭。当窗口已关闭时,执行相应的更新操作。
```javascript
var checkFeedbackWindow = setInterval(function() {
if (feedbackWindow.closed) {
// 执行更新操作
clearInterval(checkFeedbackWindow); // 清除定时器
}
}, 1000); // 每隔1秒检查一次窗口状态
```
请注意,这种方法只能检测到窗口是否已关闭,并在关闭后执行相应操作。要实现真正的实时更新,您可能需要使用其他技术,如WebSocket或服务器推送来实现。
相关问题
columns: [{ checkbox: true }, { field : 'indexId', title : '指标id', visible: false }, { field : 'indexName', title : '指标名称', }, { field : 'relationChar', title : '关系符号', }, { field : 'yearIndex', title : '年度指标', }, { field : 'feedbackTime', title : '反馈周期', }, { field : 'statisticsPattern', title : '统计方式', }, { field : 'measurementUnit', title : '计量单位', }, { field : 'complete', title : '完成度', }, { field : 'progress', title : '反馈进度' }, { field : 'planId', title : '计划表id', visible: false }, { field : 'indexStatus', title : '指标状态', visible: false }, { title: '操作', align: 'center', formatter: function(value, row, index) { var actions = []; actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="#" onclick="$.operate.edit('' + row.indexId + '')"><i class="fa fa-edit"></i>编辑</a> '); actions.push('<a class="btn btn-default btn-xs" href="#" onclick="feedbackLog('' + row.indexId + '')"><i class="fa fa-adjust"></i>反馈记录</a>'); actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="#" onclick="$.operate.remove('' + row.indexId + '')"><i class="fa fa-remove"></i>删除</a>'); return actions.join(''); } }]帮我在progress列中写一个formatter:方法要求是如果该行中planStatus值等于1这用绿色低框白字样式显示progress值,如果等于等于1这用红色低框白字样式显示progress值
可以使用以下代码作为 `progress` 列的 `formatter` 方法,来根据 `planStatus` 的值来设置不同的样式:
```javascript
{
field: 'progress',
title: '反馈进度',
formatter: function(value, row, index) {
var planStatus = row.planStatus;
var style = '';
if (planStatus == 1) {
style = 'background-color: green; color: white; border: 1px solid green;';
} else if (planStatus == 2) {
style = 'background-color: red; color: white; border: 1px solid red;';
}
return '<span style="' + style + '">' + value + '</span>';
}
}
```
上述代码会根据 `planStatus` 的值设置不同的样式,如果 `planStatus` 等于 1,则使用绿色背景、白色字体和绿色边框的样式显示 `progress` 值;如果 `planStatus` 不等于 1,则使用红色背景、白色字体和红色边框的样式显示 `progress` 值。
请注意,这里假设 `planStatus` 是在每一行数据中存在的字段,你可能需要根据实际情况将其替换为正确的字段名。
const getClassifyData = ()=>{ let pararms = {name: nodeLable.value} getClassify(pararms).then(res=>{ TypeSelects.value = res.result if(parId.value){ return getClassify({classId:parId.value}) } }).then(res=>{ childOptions.value = res.result if(claId.value){ return getClassify({ indexId: claId.value }) } }).then(res=>{ lastResult.value = res.result tableData.value = res.result.map(obj => { const dashIndex = obj.indexFinalName.indexOf("-"); const dataType = obj.indexFinalName.substring(0, dashIndex) + "-基础数据"; return { ...obj, dataType }; }) }).catch(error=>{ console.log('error', error) }) }改进代码
这段代码可以进行一些改进,例如:
1. 使用 async/await 替代 Promise 的 then() 和 catch() 方法,使代码更易读。
2. 将函数参数改为传入 pararms 对象,使代码更灵活。
3. 使用 try/catch 捕获错误,而不是使用 catch() 方法。
改进后的代码如下:
```
const getClassifyData = async (params) => {
try {
const res1 = await getClassify({ name: params.name });
TypeSelects.value = res1.result;
if(params.parId){
const res2 = await getClassify({ classId: params.parId });
childOptions.value = res2.result;
if(params.claId){
const res3 = await getClassify({ indexId: params.claId });
lastResult.value = res3.result;
tableData.value = res3.result.map(obj => {
const dashIndex = obj.indexFinalName.indexOf("-");
const dataType = obj.indexFinalName.substring(0, dashIndex) + "-基础数据";
return { ...obj, dataType };
});
}
}
} catch (error) {
console.log('error', error);
}
}
```
这样就可以更简洁地实现同样的功能,并且代码更易读。
阅读全文