|
|
@ -176,41 +176,36 @@
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
// 修改prerequisiteUpdate和relatedUpdate函数
|
|
|
|
// 修改prerequisiteUpdate和relatedUpdate函数
|
|
|
|
// 修改prerequisiteUpdate函数使用LayUI
|
|
|
|
// 公共函数
|
|
|
|
function prerequisiteUpdate(nodeId) {
|
|
|
|
function showKnowledgeSelector(nodeId, title, currentKnowledge, updateType) {
|
|
|
|
layui.use(['layer', 'form'], function () {
|
|
|
|
layui.use(['layer', 'form'], function () {
|
|
|
|
var layer = layui.layer;
|
|
|
|
var layer = layui.layer;
|
|
|
|
var form = layui.form;
|
|
|
|
var form = layui.form;
|
|
|
|
|
|
|
|
|
|
|
|
// 获取当前节点
|
|
|
|
|
|
|
|
const currentNode = findNodeById(treeData, nodeId);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 构建HTML内容
|
|
|
|
// 构建HTML内容
|
|
|
|
let html = '<div style="padding: 20px;">';
|
|
|
|
let html = '<div style="padding: 20px;">';
|
|
|
|
html += '<form class="layui-form">';
|
|
|
|
html += '<form class="layui-form">';
|
|
|
|
|
|
|
|
|
|
|
|
allNodes.forEach(node => {
|
|
|
|
allNodes.forEach(node => {
|
|
|
|
if (node.id !== nodeId && !node.isParent) {
|
|
|
|
if (node.id !== nodeId && !node.isParent) {
|
|
|
|
const isSelected = currentNode && currentNode.prerequisite &&
|
|
|
|
const isSelected = currentKnowledge &&
|
|
|
|
currentNode.prerequisite.some(p => p.id === node.id);
|
|
|
|
currentKnowledge.some(p => p.id === node.id);
|
|
|
|
|
|
|
|
|
|
|
|
// 获取父节点标题
|
|
|
|
|
|
|
|
const parentTitle = findParentTitle(node);
|
|
|
|
const parentTitle = findParentTitle(node);
|
|
|
|
const displayTitle = parentTitle ? `【${parentTitle}】${node.title}` : node.title;
|
|
|
|
const displayTitle = parentTitle ? `【${parentTitle}】${node.title}` : node.title;
|
|
|
|
|
|
|
|
|
|
|
|
html += '<div class="layui-form-item">';
|
|
|
|
html += '<div class="layui-form-item">';
|
|
|
|
html += '<input type="checkbox" name="node" value="' + node.id + '" title="' + displayTitle + '"' + (isSelected ? ' checked' : '') + '>';
|
|
|
|
html += '<input type="checkbox" name="node" value="' + node.id + '" title="' + displayTitle + '"' + (isSelected ? ' checked' : '') + '>';
|
|
|
|
html += '</div>';
|
|
|
|
html += '</div>';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
html += '</form>';
|
|
|
|
html += '</form>';
|
|
|
|
html += '</div>';
|
|
|
|
html += '</div>';
|
|
|
|
|
|
|
|
|
|
|
|
// 弹出层
|
|
|
|
// 弹出层
|
|
|
|
layer.open({
|
|
|
|
layer.open({
|
|
|
|
type: 1,
|
|
|
|
type: 1,
|
|
|
|
title: '选择先修知识',
|
|
|
|
title: '选择' + title,
|
|
|
|
content: html,
|
|
|
|
content: html,
|
|
|
|
area: ['500px', '400px'],
|
|
|
|
area: ['500px', '400px'],
|
|
|
|
btn: ['确定', '取消'],
|
|
|
|
btn: ['确定', '取消'],
|
|
|
@ -225,7 +220,7 @@
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
// 调用后端接口
|
|
|
|
// 调用后端接口
|
|
|
|
fetch('/api/update-knowledge', {
|
|
|
|
fetch('/api/update-knowledge', {
|
|
|
|
method: 'POST',
|
|
|
|
method: 'POST',
|
|
|
@ -234,8 +229,8 @@
|
|
|
|
},
|
|
|
|
},
|
|
|
|
body: JSON.stringify({
|
|
|
|
body: JSON.stringify({
|
|
|
|
node_id: nodeId,
|
|
|
|
node_id: nodeId,
|
|
|
|
knowledge: selectedNodes, // 修改参数名
|
|
|
|
knowledge: selectedNodes,
|
|
|
|
update_type: 'prerequisite'
|
|
|
|
update_type: updateType
|
|
|
|
})
|
|
|
|
})
|
|
|
|
})
|
|
|
|
})
|
|
|
|
.then(response => response.json())
|
|
|
|
.then(response => response.json())
|
|
|
@ -251,7 +246,7 @@
|
|
|
|
console.error('Error:', error);
|
|
|
|
console.error('Error:', error);
|
|
|
|
layer.msg('保存出错', {icon: 2});
|
|
|
|
layer.msg('保存出错', {icon: 2});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
layer.close(index);
|
|
|
|
layer.close(index);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
@ -259,86 +254,16 @@
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function relatedUpdate(nodeId) {
|
|
|
|
// 修改后的prerequisiteUpdate函数
|
|
|
|
layui.use(['layer', 'form'], function () {
|
|
|
|
function prerequisiteUpdate(nodeId) {
|
|
|
|
var layer = layui.layer;
|
|
|
|
const currentNode = findNodeById(treeData, nodeId);
|
|
|
|
var form = layui.form;
|
|
|
|
showKnowledgeSelector(nodeId, '先修知识', currentNode.prerequisite, 'prerequisite');
|
|
|
|
|
|
|
|
}
|
|
|
|
// 获取当前节点
|
|
|
|
|
|
|
|
const currentNode = findNodeById(treeData, nodeId);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 构建HTML内容
|
|
|
|
|
|
|
|
let html = '<div style="padding: 20px;">';
|
|
|
|
|
|
|
|
html += '<form class="layui-form">';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
allNodes.forEach(node => {
|
|
|
|
|
|
|
|
if (node.id !== nodeId && !node.isParent) {
|
|
|
|
|
|
|
|
const isSelected = currentNode && currentNode.related &&
|
|
|
|
|
|
|
|
currentNode.related.some(p => p.id === node.id);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 获取父节点标题
|
|
|
|
|
|
|
|
const parentTitle = findParentTitle(node);
|
|
|
|
|
|
|
|
const displayTitle = parentTitle ? `【${parentTitle}】${node.title}` : node.title;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
html += '<div class="layui-form-item">';
|
|
|
|
|
|
|
|
html += '<input type="checkbox" name="node" value="' + node.id + '" title="' + displayTitle + '"' + (isSelected ? ' checked' : '') + '>';
|
|
|
|
|
|
|
|
html += '</div>';
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
html += '</form>';
|
|
|
|
|
|
|
|
html += '</div>';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 弹出层
|
|
|
|
|
|
|
|
layer.open({
|
|
|
|
|
|
|
|
type: 1,
|
|
|
|
|
|
|
|
title: '选择相关知识',
|
|
|
|
|
|
|
|
content: html,
|
|
|
|
|
|
|
|
area: ['500px', '400px'],
|
|
|
|
|
|
|
|
btn: ['确定', '取消'],
|
|
|
|
|
|
|
|
yes: function (index, layero) {
|
|
|
|
|
|
|
|
const selectedNodes = [];
|
|
|
|
|
|
|
|
$('input[name="node"]:checked').each(function () {
|
|
|
|
|
|
|
|
const node = findNodeById(treeData, $(this).val());
|
|
|
|
|
|
|
|
if (node) {
|
|
|
|
|
|
|
|
selectedNodes.push({
|
|
|
|
|
|
|
|
id: node.id,
|
|
|
|
|
|
|
|
title: node.title
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 调用后端接口
|
|
|
|
|
|
|
|
fetch('/api/update-knowledge', {
|
|
|
|
|
|
|
|
method: 'POST',
|
|
|
|
|
|
|
|
headers: {
|
|
|
|
|
|
|
|
'Content-Type': 'application/json',
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
body: JSON.stringify({
|
|
|
|
|
|
|
|
node_id: nodeId,
|
|
|
|
|
|
|
|
knowledge: selectedNodes, // 修改参数名
|
|
|
|
|
|
|
|
update_type: 'related'
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
.then(response => response.json())
|
|
|
|
|
|
|
|
.then(data => {
|
|
|
|
|
|
|
|
if (data.code === 0) {
|
|
|
|
|
|
|
|
layer.msg('保存成功', {icon: 1});
|
|
|
|
|
|
|
|
setTimeout(() => location.reload(), 1000);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
layer.msg('保存失败: ' + data.message, {icon: 2});
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
.catch(error => {
|
|
|
|
|
|
|
|
console.error('Error:', error);
|
|
|
|
|
|
|
|
layer.msg('保存出错', {icon: 2});
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
layer.close(index);
|
|
|
|
// 修改后的relatedUpdate函数
|
|
|
|
}
|
|
|
|
function relatedUpdate(nodeId) {
|
|
|
|
});
|
|
|
|
const currentNode = findNodeById(treeData, nodeId);
|
|
|
|
form.render();
|
|
|
|
showKnowledgeSelector(nodeId, '相关知识', currentNode.related, 'related');
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</script>
|
|
|
|
</script>
|
|
|
|
</body>
|
|
|
|
</body>
|
|
|
|