按照您的要求,重新设计了"确认最佳答案"功能的交互方式,采用带提交/关闭按钮的弹窗模式,并优化了选择按钮的样式和交互体验。
文件: workKnowledgeBaseConfirmAnswer.jsp
特点:
参考样式: 使用 skin: 'three-btns' 和双按钮配置
按钮:
doSubmit() 方法.select-best-btn {
/* 未选中状态 */
border: 1px solid #d9d9d9;
color: #666;
background: white;
}
.select-best-btn.selected {
/* 选中状态 - 浅橙色 */
background-color: #ff9800;
color: white;
border-color: #ff9800;
}
已选择 X/5 条最多只能选择5个最佳答案src/main/webapp/webpage/modules/WorkKnowledgeBase/workKnowledgeBaseConfirmAnswer.jspWorkKnowledgeBaseShareController.java
confirmAnswerPage()workKnowledgeBaseShareList.jsp
openConfirmAnswerDialog()// 列表页点击"确认答案"按钮
openConfirmAnswerDialog(questionId)
↓
// 打开弹窗,加载确认页面
top.layer.open({
content: '${ctx}/workKnowledgeBase/share/confirmAnswerPage?id=' + id,
btn: ['提交', '关闭']
})
// 用户点击选择按钮
toggleSelect(btn)
↓
// 判断是否已选中
if (已选中) {
取消选择,文字变为"选择为最佳答案"
} else {
if (已选数量 >= 5) {
弹出提示
} else {
选中,背景变橙色,文字变为"取消选择"
}
}
↓
// 更新界面状态
updateUI()
- 更新已选数量显示
- 启用/禁用提交按钮
// 用户点击"提交确认"按钮
doSubmit()
↓
// 验证至少选择1条
if (selectedAnswers.length === 0) {
提示"请至少选择一个答案"
return false;
}
↓
// 弹出确认对话框
layer.confirm('确认将这 X 条回答设为最佳答案并提交吗?')
↓
// 调用后端接口
$.ajax({
url: '${ctx}/workKnowledgeBase/share/confirmMultipleBestAnswers',
data: { questionId, answerIds }
})
↓
// 处理结果
if (success) {
提示"提交成功,积分已发放"
关闭弹窗
刷新列表
}
// 父窗口调用子窗口方法
btn1: function(index, layero) {
var iframeWin = layero.find('iframe')[0];
if (iframeWin.contentWindow.doSubmit()) {
// 提交成功后关闭弹窗
top.layer.close(index);
}
}
// 子窗口暴露方法给父窗口
window.doSubmit = doSubmit;
// 使用 traditional: true 确保数组正确传递
$.ajax({
data: { answerIds: selectedAnswers },
traditional: true // 重要!
})
var selectedAnswers = []; // 存储已选答案ID
// 选择时添加
selectedAnswers.push(answerId);
// 取消时过滤
selectedAnswers = selectedAnswers.filter(id => id !== answerId);
// 更新UI
$('#selectedCount').text(selectedAnswers.length);
.answer-item {
background: white;
padding: 15px;
margin-bottom: 15px;
border-radius: 5px;
box-shadow: 0 2px 4px rgba(0,0,0,0.05);
}
.footer-bar {
position: fixed;
bottom: 0;
left: 0;
right: 0;
background: white;
padding: 15px;
box-shadow: 0 -2px 8px rgba(0,0,0,0.1);
z-index: 999;
}
/* 悬停效果 */
.select-best-btn:hover {
color: #ff9800;
border-color: #ff9800;
}
/* 选中状态 */
.select-best-btn.selected {
background-color: #ff9800;
color: white;
}
| 项目 | 旧版 | 新版 |
|---|---|---|
| 选择方式 | 小复选框 | 大按钮,点击变色 |
| 视觉反馈 | 无明显变化 | 浅橙色高亮,文字切换 |
| 操作位置 | 顶部小框 | 底部固定栏,符合习惯 |
| 提交方式 | 即时确认 | 统一提交,二次确认 |
| 数量提示 | 静态文本 | 实时更新,动态禁用按钮 |
完成日期: 2026-01-16
版本: v2.0
作者: AI Assistant