|
@@ -166,6 +166,7 @@ func (s *treeService) GetAllContract(projectId int, account *models.CmProjectAcc
|
|
|
for _, data := range datalist {
|
|
|
|
|
|
flag := true
|
|
|
+ // 标段过滤开始
|
|
|
if data.BidsectionId != 0 && account.IsAdmin != 1 {
|
|
|
flag = false
|
|
|
}
|
|
@@ -178,19 +179,29 @@ func (s *treeService) GetAllContract(projectId int, account *models.CmProjectAcc
|
|
|
// 区别合同,安全,质量
|
|
|
if bidsectionType == 1 {
|
|
|
json.Unmarshal([]byte(item.SafePermission), &permission)
|
|
|
+
|
|
|
} else if bidsectionType == 2 {
|
|
|
json.Unmarshal([]byte(item.QualityPermission), &permission)
|
|
|
+
|
|
|
} else if bidsectionType == 0 {
|
|
|
json.Unmarshal([]byte(item.ContractPermission), &permission)
|
|
|
+ // fmt.Println(permission)
|
|
|
+ // if permission["access"] == 1 {
|
|
|
+ // flag = true
|
|
|
+ // break
|
|
|
+ // }
|
|
|
} else {
|
|
|
return nil
|
|
|
}
|
|
|
+
|
|
|
if permission["access"] == 1 {
|
|
|
flag = true
|
|
|
+ break
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ // 标段过滤结束
|
|
|
|
|
|
if flag {
|
|
|
folder := viewmodels.FolderContract{}
|
|
@@ -245,7 +256,7 @@ func (s *treeService) GetAllContract(projectId int, account *models.CmProjectAcc
|
|
|
|
|
|
}
|
|
|
|
|
|
- //fmt.Println(folderlist)
|
|
|
+ // fmt.Println(folderlist)
|
|
|
|
|
|
var data []*viewmodels.FolderContract
|
|
|
data = make([]*viewmodels.FolderContract, 0)
|
|
@@ -261,9 +272,83 @@ func (s *treeService) GetAllContract(projectId int, account *models.CmProjectAcc
|
|
|
// 求和
|
|
|
// dataLenght := len(data) + 4
|
|
|
|
|
|
+ s.filterFolder(node)
|
|
|
+ // 删除空目录
|
|
|
+ ChildrenShow := make([]*viewmodels.FolderContract, 0)
|
|
|
+ for _, item := range node.Children {
|
|
|
+ if item.IsHidden != 1 {
|
|
|
+ ChildrenShow = append(ChildrenShow, item)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ node.Children = ChildrenShow
|
|
|
return node
|
|
|
}
|
|
|
|
|
|
+func (s *treeService) filterFolder(node *viewmodels.FolderContract) {
|
|
|
+ if node == nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 目录下是否为空目录 1空目录
|
|
|
+ isEmptyFolder := 1
|
|
|
+
|
|
|
+ length := len(node.Children)
|
|
|
+ // 如果length为0叶子节点---为目录才需要遍历
|
|
|
+ if length == 0 {
|
|
|
+ // 1.如果是目录-已经为叶子目录不需要遍历
|
|
|
+ // 2.是标段 目录不为空
|
|
|
+ if node.Isfolder == 0 {
|
|
|
+ isEmptyFolder = 0
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 1.遍历目录下
|
|
|
+ for i := 0; i < length; i++ {
|
|
|
+ // 2.该节点下子对象 从0-length 依次进入
|
|
|
+ s.filterFolder(node.Children[i])
|
|
|
+ // 后序-父节点逻辑 处理完0 ... -length
|
|
|
+ // 2-1 是标段 设置目录不为空
|
|
|
+ if node.Children[i].Isfolder == 0 {
|
|
|
+ // 有标段
|
|
|
+ isEmptyFolder = 0
|
|
|
+ } else {
|
|
|
+ // 2-2 是目录 ----后序遍历,最后一层下的孩子们是否能删除 走完三个点后返回到父亲
|
|
|
+ // 2-2-1 可展示目录 集合
|
|
|
+ ChildrenShow := make([]*viewmodels.FolderContract, 0)
|
|
|
+ // 2-2-2 目录下内容
|
|
|
+ if len(node.Children[i].Children) != 0 {
|
|
|
+ // 2-2-3 内容中是否有需要显示的目录
|
|
|
+ for _, item := range node.Children[i].Children {
|
|
|
+ // 2-2-4 有 设置为需要显示并拷贝显示内容
|
|
|
+ if item.IsHidden == 0 {
|
|
|
+ ChildrenShow = append(ChildrenShow, item)
|
|
|
+ node.Children[i].IsHidden = 0
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // fmt.Println("==========filterFolder执行完成")
|
|
|
+ // fmt.Println(node.Children[i].Name)
|
|
|
+ // fmt.Println(fmt.Sprintf("删除:%d", node.Children[i].IsHidden))
|
|
|
+ // fmt.Println(node.Children[i].Children)
|
|
|
+ // 2-2-5 覆盖父亲节点的显示内容
|
|
|
+ node.Children[i].Children = ChildrenShow
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // fmt.Println("=========================进入")
|
|
|
+ // fmt.Println(node.Name)
|
|
|
+ // fmt.Println(fmt.Sprintf("空目录:%d", isEmptyFolder))
|
|
|
+ // 后序的第一位叶子节点 如果目录为空,设置不显示
|
|
|
+ if isEmptyFolder == 1 {
|
|
|
+ node.IsHidden = 1
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func (s *treeService) postOrder() {
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
// 新增一个文件夹
|
|
|
func (s *treeService) Create(data viewmodels.Tree) error {
|
|
|
// 类型校验
|