diff --git a/docs/设计文档.docx b/docs/设计文档.docx index e4c1b83..a6de284 100644 --- a/docs/设计文档.docx +++ b/docs/设计文档.docx @@ -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)根节点没有"添加同级节点" (2)node_type为doc的节点没有"添加下级节点"(文档下不能添加子节点) (3)ref_id不为空的节点没有"edit"(即不能编辑引用自其它文档的文档) (4)node_type为folder的节点没有"copy to"、"clone to"和"map to"(这三个操作仅针对文档)。字段tree为standards的节点没有"map to"(projects树下的文档才可map)。 (5)hierarchy为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(从用户列表里选择)、reviewer(document类型才有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为复制过来的那个parent,id为新创建的。code也根据新的parent folder的code添加3位。其它复制规则同上。 -8、map to菜单: +2.2.8 map to菜单: diff --git a/src/components/TreeView.vue b/src/components/TreeView.vue index 405d8d0..57e9804 100644 --- a/src/components/TreeView.vue +++ b/src/components/TreeView.vue @@ -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', diff --git a/src/components/views/ProjectDeptView.vue b/src/components/views/ProjectDeptView.vue index a16a756..565ec58 100644 --- a/src/components/views/ProjectDeptView.vue +++ b/src/components/views/ProjectDeptView.vue @@ -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 [] diff --git a/src/components/views/ReleaseView.vue b/src/components/views/ReleaseView.vue index 3f96606..d21a2d3 100644 --- a/src/components/views/ReleaseView.vue +++ b/src/components/views/ReleaseView.vue @@ -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)