修改树的名称

This commit is contained in:
Qiubo Huang 2026-02-12 21:32:10 +08:00
parent 48b5bbb78c
commit cd4529567e
4 changed files with 4 additions and 4 deletions

View File

@ -512,24 +512,27 @@ time
界面右部为用户列表包含序号、工号、姓名、电话、email共5列。在用户组列表里选择一行时右部用户列表显示该组的所有成员。对组里的成员有添加、删除按钮。
2.2 树节点管理
2.2.1 树结构介绍:
hierarchy=0
hierarchy>0
hierarchy>0
总共包含三棵树Inbox收件箱、Standards技术标准、Projects项目
总共包含4棵树Inbox收件箱Outbox(发件箱)、Standards技术标准、Projects项目
1根节点没有"添加同级节点"
2node_type为doc的节点没有"添加下级节点"(文档下不能添加子节点)
3ref_id不为空的节点没有"edit"(即不能编辑引用自其它文档的文档)
4node_type为folder的节点没有"copy to"、"clone to"和"map to"这三个操作仅针对文档。字段tree为standards的节点没有"map to"projects树下的文档才可map
5hierarchy为0的节点以及node_type为doc的节点没有"branch to"(hierarchy大于0的节点包括standards树里的节点或者从standards里branch到projects的节点)
4、创建节点(添加同级节点、添加下级节点)界面如下:
2.2.2 创建节点(添加同级节点、添加下级节点)界面如下:
界面上输入title、node_type、owner从用户列表里选择、reviewer从用户列表里选择在保存时自动生成id、uuid、sort_order、create_time获取parent、继承父节点的hierarchy、task_type。content、last_change、last_change_by、ref_id、source_type为空。
界面上输入title、node_type、owner从用户列表里选择、reviewerdocument类型才有reviewer从用户列表里选择在保存时自动生成id、uuid、sort_order、create_time获取parent、继承父节点的hierarchy、task_type。content、last_change、last_change_by、ref_id、source_type为空。
code生成方法按照节点级别编号一级节点的编号为000,001,002,003,004;二级节点的编号为001000,001001,001002,001003这4个编号表明节点都是编号001的子节点。001的二级节点的编号从001000到001999如果中间某些code被删除而导致缺失则在添加了001999后绕回到001000及之后的缺失编号。说明000到999不要求连续删除后可以缺失不要求排序大编号在小编号之前也可以
sort_order生成方法如果是添加下级节点则新节点的sort_order为已有下级节点最大sort_order加1。如果是添加同级节点则新节点的sort_order为操作节点的sort_order加1即添加到操作节点的后面同一父节点的后面的所有节点sort_order都需要加1。
5、edit菜单只能修改title、owner和reviewer。
6、delete菜单
2.2.3 edit菜单
只能修改title、owner和reviewer。
2.2.4 delete菜单
node_type为doc的节点如果有其它节点的ref_id指向自己则提示"有其它文档由本文档clone或map不能删除"。如果存在外键指向自己,则提示"存在外键约束,不能删除"。
node_type为folder的节点如果以该节点为根的子树上存在文档则提示"请先删除子树上的文档,才能删除本文件夹"。删除文件夹时,需要删除整棵子树。
7、copy to/from菜单复制节点
2.2.5 copy to/from菜单复制节点
选中一个doc节点要求对该节点有can_read_doc权限点击右键菜单copy to时弹出界面要求选择standards或projects里的一个folder节点要求对该节点有can_add_child_doc权限输入owner默认是所选folder节点的owner和reviewer点击确认即执行copy操作。
copy将在数据库中添加新记录其中
parent为目标folder节点的id。
@ -538,7 +541,7 @@ task_type、hierarchy与parent folder的task_type、hierarchy相同
id、uuid、sort_order添加为最后一个节点、create_time为当前时间根据规则生成。
字段node_type、title、content、last_change、last_change_by、ref_id、source_type从选中的doc节点复制。
相应有个copy from菜单选中一个folder节点要求对该节点有can_add_child_doc权限点击右键菜单copy from时弹出界面要求选择standards或projects里的一个doc节点要求对该节点有can_read_doc权限输入owner默认是所选folder节点的owner和reviewer点击确认即执行copy操作。
8、clone to/from菜单对节点添加引用
2.2.6 clone to/from菜单对节点添加引用
选中一个doc节点要求对该节点有can_read_doc权限点击clone to时弹出界面要求选择standards或projects里的一个folder节点要求对该节点有can_add_child_doc权限输入owner默认是所选folder节点的owner无需reviewer点击确认即执行clone操作。
clone将在数据库中添加新记录其中
parent为目标folder节点的id。
@ -549,7 +552,7 @@ id、uuid、sort_order添加为最后一个节点根据规则生成。
reviewer、title、content、last_change、last_change_by为空在select检索时根据ref_id获取。
字段node_type、create_time从选中的doc节点复制。
相应有个clone from菜单选中一个folder节点要求对该节点有can_add_child_doc权限点击右键菜单clone from时弹出界面要求选择standards或projects里的一个doc节点要求对该节点有can_read_doc权限输入owner默认是所选folder节点的owner无需reviewer点击确认即执行copy操作。
9、branch from菜单复制子树
2.2.7 branch from菜单复制子树
选中projects树里hierarchy为0的一个folder节点要求对该节点有can_add_child_doc和can_add_child_folder权限点击branch from时弹出界面在界面左部显示standards和projects树standards树里的所有节点以及projects里hierarchy>0的所有节点前都有一个复选框可以选择若干节点为每个选择的节点指定owner、为每个ref_id为空的文档节点指定reviewer点击确认即执行复制操作。
复制将在数据库中添加新记录,需要逐层添加,先添加被复制子树的根节点,再添加它的子孙节点。
其中根节点复制到目标folder的下面。对于根节点
@ -560,7 +563,7 @@ owner、reviewer由界面上获取。
id、uuid、sort_order添加为最后一个节点、create_time为当前时间根据规则生成。
字段node_type、hierarchy、title、content、last_change、last_change_by、ref_id、source_type从选中的doc节点复制。
以下每层节点在复制时注意它的parent folder为复制过来的那个parentid为新创建的。code也根据新的parent folder的code添加3位。其它复制规则同上。
8、map to菜单
2.2.8 map to菜单

View File

@ -174,7 +174,7 @@ const treeDataSource = [
]
},
{
name: "Main Tree",
name: "Standards",
children: [
{ name: "Product Scenario", children: [] },
{
@ -956,7 +956,7 @@ const handleAddSibling = () => {
console.log('parentNode found:', parentNode)
//
// Main Tree使parentNodeId
// 使parentNodeId
addNodeDialog.value = {
show: true,
mode: 'sibling',

View File

@ -16,7 +16,7 @@ const findNodeByName = (nodes: TreeNode[], name: string): TreeNode | undefined =
return nodes.find(n => n.label === name)
}
const mainTreeNode = computed(() => findNodeByName(props.treeData, 'Main Tree'))
const mainTreeNode = computed(() => findNodeByName(props.treeData, 'Standards'))
const attributesNodes = computed(() => {
if (!mainTreeNode.value || !mainTreeNode.value.children) return []

View File

@ -69,7 +69,7 @@ const initReviewHistory = () => {
// release
const releasableVersionsDetails = computed(() => {
return reviewHistory.value
.filter((item: any) => item.status === 'approved')
.filter((item: any) => item.status === 'accepted')
.map((item: any) => {
//
const versionData = props.selectedNode?.versions?.find((v: any) => v.version === item.version)