Browse Source

feat:区县列表页pc端开发提交

wangkaiyue 1 year ago
parent
commit
8b9e90dc4e

+ 1 - 0
internal/consts/consts.go

@@ -4,4 +4,5 @@ const (
 	AreaType        = iota + 1 //省份
 	CityType                   //城市
 	CitySpecialType            //直辖市
+	District                   //区县
 )

+ 35 - 12
internal/controller/area.go

@@ -22,20 +22,43 @@ func AreaIndexHandler(r *ghttp.Request) {
 	}
 	var winnerList, buyerList []map[string]interface{}
 	if node.Type == 1 || node.Type == 3 {
-		winnerList = service.JySeoEnterprises.GetEntList(r.Context(), node.Name, "", true)
-		buyerList = service.JySeoEnterprises.GetEntList(r.Context(), node.Name, "", false)
+		winnerList = service.JySeoEnterprises.GetEntList(r.Context(), node.Name, "", "", true)
+		buyerList = service.JySeoEnterprises.GetEntList(r.Context(), node.Name, "", "", false)
 	} else if node.Type == 2 {
-		winnerList = service.JySeoEnterprises.GetEntList(r.Context(), "", node.Name, true)
-		buyerList = service.JySeoEnterprises.GetEntList(r.Context(), "", node.Name, false)
+		winnerList = service.JySeoEnterprises.GetEntList(r.Context(), "", node.Name, "", true)
+		buyerList = service.JySeoEnterprises.GetEntList(r.Context(), "", node.Name, "", false)
+	} else if node.Type == 4 {
+		winnerList = service.JySeoEnterprises.GetEntList(r.Context(), "", node.PNode.Name, node.Name, true)
+		buyerList = service.JySeoEnterprises.GetEntList(r.Context(), "", node.PNode.Name, node.Name, false)
+	}
+	if node.Type != 4 { //省份城市
+		service.HtmlRender.Render(r, "area_index.html",
+			g.Map{
+				"areaType":   areaType,
+				"areaNode":   node,
+				"winnerList": winnerList,
+				"buyerList":  buyerList,
+				"tdk":        service.JySeoTdk.GetAreaIndexTdk(r.Context(), node.Name),
+			})
+	} else { //区县
+		// 查询数据
+		query := service.NewBiddingQuery().EquipArea(node)
+		rData, err := query.GetDataPageList(r.Context(), 1, 50, consts.BiddingListMaxTotal, "AreaPageHandler", service.JySeoAreaRoot.GetData)
+		if err != nil {
+			g.Log().Errorf(r.Context(), err.Error())
+			service.HtmlRender.RenderError(r, fmt.Errorf("获取列表数据异常"))
+			return
+		}
+		service.HtmlRender.Render(r, "area_district.html",
+			g.Map{
+				"list":       rData.List,
+				"areaType":   areaType,
+				"areaNode":   node,
+				"winnerList": winnerList,
+				"buyerList":  buyerList,
+				"tdk":        service.JySeoTdk.GetAreaDistrictIndexTdk(r.Context(), node),
+			})
 	}
-	service.HtmlRender.Render(r, "area_index.html",
-		g.Map{
-			"areaType":   areaType,
-			"areaNode":   node,
-			"winnerList": winnerList,
-			"buyerList":  buyerList,
-			"tdk":        service.JySeoTdk.GetAreaIndexTdk(r.Context(), node.Name),
-		})
 }
 
 // AreaPageHandler 地区列表页面

+ 25 - 9
internal/service/areaStruct.go

@@ -39,7 +39,7 @@ type (
 		PNode    *AreaNode   `json:"pNode" doc:"父节点代码"`
 		RCode    string      `json:"code" doc:"行政区域代码"`
 		Location int         `json:"location" doc:"区位"`
-		Type     int         `json:"type" doc:"1省份 2城市 3直辖市"`
+		Type     int         `json:"type" doc:"1省份 2城市 3直辖市 4区县"`
 		Child    []*AreaNode `json:"child" doc:"子栏目"`
 	}
 	AreaLocation struct {
@@ -56,7 +56,7 @@ func init() {
 func (aRoot *AreaRoot) LoadAreasFromDb(ctx context.Context) {
 	var rootArr []*AreaNode
 	areaCodeMap, areaFCodeMap, areaNameMap, rCodeMap := map[string]*AreaNode{}, map[string]*AreaNode{}, map[string]*AreaNode{}, map[string]*AreaNode{}
-	res, err := g.DB().Query(ctx, "SELECT * FROM seo_area_code where state=1 order by id asc")
+	res, err := g.DB().Query(ctx, "SELECT * FROM jyseo_test.seo_area_code_demo where state=1 order by id asc")
 	if err != nil {
 		g.Log().Errorf(ctx, "加载地区异常%v", err)
 	}
@@ -76,12 +76,26 @@ func (aRoot *AreaRoot) LoadAreasFromDb(ctx context.Context) {
 			rCodeMap[node.RCode] = node
 		case consts.CityType:
 			node.Name = gconv.String(m["city"])
-			pCode := rCodeMap[fmt.Sprintf("%s0000", node.RCode[:2])]
-			node.PNode = pCode
-			if pCode == nil {
-				g.Log().Panic(cxt, "加载地区父级异常%s", node.Name)
+			pNode := rCodeMap[fmt.Sprintf("%s0000", node.RCode[:2])]
+			node.PNode = pNode
+			if pNode == nil {
+				g.Log().Panicf(cxt, "加载地区父级异常%s %s ", node.Name, node.RCode)
 			}
-			pCode.Child = append(pCode.Child, node)
+			pNode.Child = append(pNode.Child, node)
+			rCodeMap[node.RCode] = node
+		case consts.District:
+			node.Name = gconv.String(m["district"])
+			city := gconv.String(m["city"])
+			pcodeVal := fmt.Sprintf("%s00", node.RCode[:4])
+			if city == "北京市" || city == "天津市" || city == "上海市" || city == "重庆市" {
+				pcodeVal = fmt.Sprintf("%s0000", node.RCode[:2])
+			}
+			pNode := rCodeMap[pcodeVal]
+			node.PNode = pNode
+			if pNode == nil {
+				g.Log().Panicf(ctx, "加载区县父级异常%s %s", node.Name, node.RCode)
+			}
+			pNode.Child = append(pNode.Child, node)
 		}
 		areaCodeMap[node.Code] = node
 		areaFCodeMap[node.FCode] = node
@@ -142,10 +156,12 @@ func (aRoot *AreaRoot) GetData(ctx context.Context, maxTotal int, query *SeoBidd
 	if query.district != "" {
 		sql += " AND b.district=? "
 		values = append(values, query.district)
-	} else if query.city != "" {
+	}
+	if query.city != "" {
 		sql += " AND b.city=? "
 		values = append(values, query.city)
-	} else if query.area != "" {
+	}
+	if query.area != "" {
 		sql += " AND b.area=? "
 		values = append(values, query.area)
 	}

+ 4 - 2
internal/service/enterpriseStruct.go

@@ -399,7 +399,7 @@ func (pwp *Enterprises) RelevanceData(ctx context.Context, name string, isWinner
 	return
 }
 
-func (pwp *Enterprises) GetEntList(ctx context.Context, province, city string, isWinner bool, num ...int) []map[string]interface{} {
+func (pwp *Enterprises) GetEntList(ctx context.Context, province, city, district string, isWinner bool, num ...int) []map[string]interface{} {
 	redisKey := fmt.Sprintf("jyseo_portrait_recommended_%v_%s_%s", isWinner, province, city)
 	finalArr, formCache := func() (data []map[string]interface{}, formCache bool) {
 		if (province == "" || province == "全国") && city == "" {
@@ -422,6 +422,8 @@ func (pwp *Enterprises) GetEntList(ctx context.Context, province, city string, i
 			areaLimit = fmt.Sprintf(`{"term":{"area":"%s"}}`, province)
 		} else if city != "" {
 			areaLimit = fmt.Sprintf(`{"term":{"city":"%s"}}`, city)
+		} else if district != "" {
+			areaLimit = fmt.Sprintf(`{"term":{"city":"%s","district":"%s"}}`, city, district)
 		}
 		var sql string = fmt.Sprintf(`{"query":{"bool":{"must":[%s,%s]}},"sort":[{"lasttime":"desc"}],"_source":["entidlist","buyer"],"from":0,"size":%d}`, areaLimit, "%s", limitNum)
 		if isWinner {
@@ -474,7 +476,7 @@ func (pwp *Enterprises) GetEntList(ctx context.Context, province, city string, i
 // RecommendedData 其他推荐
 // name 名称 province 省份 isWinner 来源是否中标企业画像 false 来源企业画像
 func (pwp *Enterprises) RecommendedData(ctx context.Context, province, city string, isWinner bool) (rData []map[string]interface{}) {
-	finalArr := pwp.GetEntList(ctx, province, city, isWinner)
+	finalArr := pwp.GetEntList(ctx, province, city, "", isWinner)
 	if len(finalArr) == 0 {
 		if isWinner {
 			finalArr = pwp.WinnerRecommend

+ 4 - 2
internal/service/keyWordSiteStruct.go

@@ -79,10 +79,12 @@ func (sRoot *KeyWordSiteRoot) GetData(ctx context.Context, maxTotal int, query *
 	if query.district != "" {
 		sql += " AND b.district=? "
 		values = append(values, query.district)
-	} else if query.city != "" {
+	}
+	if query.city != "" {
 		sql += " AND b.city=? "
 		values = append(values, query.city)
-	} else if query.area != "" {
+	}
+	if query.area != "" {
 		sql += " AND b.area=? "
 		values = append(values, query.area)
 	}

+ 4 - 2
internal/service/keywordClassStruct.go

@@ -125,10 +125,12 @@ func (iR *industryRoot) GetData(ctx context.Context, maxTotal int, query *SeoBid
 	if query.district != "" {
 		sql += " AND b.district=? "
 		values = append(values, query.district)
-	} else if query.city != "" {
+	}
+	if query.city != "" {
 		sql += " AND b.city=? "
 		values = append(values, query.city)
-	} else if query.area != "" {
+	}
+	if query.area != "" {
 		sql += " AND b.area=? "
 		values = append(values, query.area)
 	}

+ 18 - 5
internal/service/queryStruct.go

@@ -55,10 +55,21 @@ func NewBiddingQuery() *SeoBiddingQuery {
 // EquipArea 装备地区查询
 func (query *SeoBiddingQuery) EquipArea(areaNode *AreaNode) *SeoBiddingQuery {
 	if areaNode != nil {
-		if areaNode.Type == 2 {
-			query.city = areaNode.Name
-		} else {
+		switch areaNode.Type {
+		case 1, 3:
 			query.area = areaNode.Name
+		case 2:
+			query.city = areaNode.Name
+		case 4:
+			// 区县会重名,所以带上上级名字
+			if areaNode.PNode != nil {
+				if areaNode.PNode.Type == 3 {
+					query.area = areaNode.PNode.Name
+				} else {
+					query.city = areaNode.PNode.Name
+				}
+			}
+			query.district = areaNode.Name
 		}
 	}
 	return query
@@ -357,9 +368,11 @@ func GetEsQuery(maxTotal int, query *SeoBiddingQuery) string {
 	}
 	if query.district != "" {
 		musts = append(musts, fmt.Sprintf(`{"term": {"district": "%s" }}`, query.district))
-	} else if query.city != "" {
+	}
+	if query.city != "" {
 		musts = append(musts, fmt.Sprintf(`{"term": {"city": "%s" }}`, query.city))
-	} else if query.area != "" {
+	}
+	if query.area != "" {
 		musts = append(musts, fmt.Sprintf(`{"term": {"area": "%s" }}`, query.area))
 	}
 

+ 14 - 1
internal/service/tdk.go

@@ -50,7 +50,7 @@ func (*jySeoTdk) GetSignTdk(ctx context.Context, signCode string) *TDK {
 	}
 }
 
-// GetAreaIndexTdk 获取地区首页TDK
+// GetAreaIndexTdk 获取地区首页TDK(省市)
 func (*jySeoTdk) GetAreaIndexTdk(ctx context.Context, areaName string) *TDK {
 	return &TDK{
 		Title:       fmt.Sprintf("%s免费招标信息_%s采购服务平台_%s中标公告-剑鱼标讯", areaName, areaName, areaName),
@@ -59,6 +59,19 @@ func (*jySeoTdk) GetAreaIndexTdk(ctx context.Context, areaName string) *TDK {
 	}
 }
 
+// GetAreaDistrictIndexTdk 获取地区首页TDK(区县)
+func (*jySeoTdk) GetAreaDistrictIndexTdk(ctx context.Context, areaNode *AreaNode) *TDK {
+	var areaName = areaNode.Name
+	if strings.HasSuffix(areaNode.Name, "区") {
+		areaName = areaNode.PNode.Name + areaNode.Name
+	}
+	return &TDK{
+		Title:       fmt.Sprintf("%s招标采购网_%s招标网", areaName, areaName),
+		KeyWords:    fmt.Sprintf("%s招标网,%s招标采购网,%s招标公告", areaName, areaName, areaName),
+		Description: fmt.Sprintf("%s招标采购网为您提供%s招标信息、招标公告、中标公告和招标采购等内容,以及%s招标信息搜索查询、订阅推送和数据定制化服务,每天实时更新%s的招标信息,随时随地免费查看。", areaName, areaName, areaName, areaName),
+	}
+}
+
 // GetAreaSTypeListTdk 获取地区列表TDK
 func (*jySeoTdk) GetAreaSTypeListTdk(ctx context.Context, sTypeCode, areaName string) *TDK {
 

+ 22 - 0
resource/staticres/css/tags-card-list.css

@@ -104,3 +104,25 @@
   line-height: 24px;
   color: #686868;
 }
+.list-bottom-more{
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+.list-bottom-more>a{
+  border-radius: 4px;
+  display: inline-block;
+  font-size: 14px;
+  /* height: 32px; */
+  line-height: 30px;
+  vertical-align: top;
+  box-sizing: border-box;
+  text-align: center;
+  color: #1d1d1d;
+  border: 1px solid #ECECEC;
+  padding: 3px 10px;
+  margin-top: 20px;
+}
+.list-bottom-more>a>em{
+  color: #2ABED1;
+}

+ 132 - 0
resource/template/pc/area_district.html

@@ -0,0 +1,132 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>{{.tdk.Title}}</title>
+    <meta name="Keywords" content='{{.tdk.KeyWords}}'/>
+    <meta name="Description" content='{{.tdk.Description}}'/>
+    <meta name="applicable-device" content="pc" />
+    <meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,initial-scale=1.0" user-scalable="no" />
+    <link href="//cdn-common.jianyu360.com/cdn/lib/reset-css/5.0.1/reset.min.css" rel="stylesheet" type="text/css" />
+    <link href="https://cdn-common.jianyu360.com/cdn/lib/bootstrap/4.5.0/bootstrap.min.css" rel="stylesheet" type="text/css" />
+    <link href='{{Cdn}}/jyseo/css/common.css?v={{Msg "version"}}' rel="stylesheet" type="text/css" />
+    <link href='{{Cdn}}/jyseo/css/icons.css?v={{Msg "version"}}' rel="stylesheet" type="text/css" />
+    <link href='{{Cdn}}/jyseo/css/header.css?v={{Msg "version"}}' rel="stylesheet">
+    <link href='{{Cdn}}/jyseo/css/card.css?v={{Msg "version"}}' rel="stylesheet" type="text/css" />
+    <link href="https://cdn-common.jianyu360.com/cdn/lib/element-ui/2.15.13-rc/lib/theme-chalk/index.css" rel="stylesheet">
+    <link href='{{Cdn}}/jyseo/css/index.css?v={{Msg "version"}}' rel="stylesheet" type="text/css" />
+    <link href='{{Cdn}}/jyseo/css/tags-card-list.css?v={{Msg "version"}}' rel="stylesheet" type="text/css" />
+    <script src="https://cdn-common.jianyu360.com/cdn/lib/jquery/3.6.0/jquery.min.js"></script>
+    <script src="/common-module/public/head.js"></script>
+
+</head>
+<body style="background-color: #F5F6F7;">
+<div class="page-container">
+    <header class="page-header">
+        <!-- 顶部导航 -->
+        {{include "pc/common/header.html" .}}
+    </header>
+    <main class="page-main page-main-stype">
+        <!-- 顶部二级导航 -->
+        {{include "pc/components/header-nav-second-area.html" .}}
+        {{$areaNode := .areaNode}}
+        {{$sTypeNode := .sTypeNode}}
+        {{$sTypeArr := GetSTypeParentNodes}}
+        <section class="w page-main-container page-main-1">
+            <section class="page-main-content">
+                <div class="breadcrumb-nav">
+                    <span class="label-tag">当前位置:</span>
+                    <a href="/" title="剑鱼标讯">剑鱼标讯</a>
+                    {{if $areaNode.PNode.PNode}}
+                    <em>></em>
+                    <a href="/list/area/{{$areaNode.PNode.PNode.Code}}.html" title="{{$areaNode.PNode.PNode.Name}}{{if eq $areaNode.PNode.PNode.Type 1}}省{{end}}">{{$areaNode.PNode.PNode.Name}}{{if eq $areaNode.PNode.PNode.Type 1}}省{{end}}</a>
+                    {{end}}
+                    <em>></em>
+                    <a href="/list/{{if eq $areaNode.PNode.Type 3}}area{{else}}city{{end}}/{{$areaNode.PNode.Code}}.html" title="{{$areaNode.PNode.Name}}">{{$areaNode.PNode.Name}}</a>
+                    <em>></em>
+                    <span class="current-tag">{{$areaNode.Name}}招标采购网</span>
+                </div>
+                <section class="page-bidding-container">
+                  {{include "pc/components/bidding-cell.html" .}}
+                    <div  class="list-bottom-more">
+                        <a href="/jylab/supsearch/index.html?keywords={{$areaNode.Name}}&selectType=title" >查看更多<em>{{$areaNode.Name}}</em>招标采购信息</a>
+                    </div>
+                </section>
+            </section>
+            <section class="page-main-aside">
+                <section class="section-aside area-section">
+                    <!--登录注册-->
+                    <div class="aside-module aside-login" data-nologin-show style="display: none;">
+                        {{include "pc/components/login-card.html" .}}
+                    </div>
+
+                </section>
+                <section class="tags-card-list">
+                    {{if .buyerList}}
+                    <section class="tags-card news-card bidding-news">
+                        <header class="tags-card-header">
+                            <span class="left-line"></span>
+                            <span class="h-title">热门采购单位</span>
+                        </header>
+                        <main class="tags-card-main">
+                            {{range $v:= .buyerList}}
+                            <p class="ellipsis">
+                                <a class="ellipsis cms-link row-column2" href="{{$v.url}}" target="_blank" title="{{$v.name}}">{{$v.name}}</a>
+                            </p>
+                            {{end}}
+                        </main>
+                    </section>
+                    {{end}}
+
+                    {{if .winnerList}}
+                    <section class="tags-card news-card bidding-news">
+                        <header class="tags-card-header">
+                            <span class="left-line"></span>
+                            <span class="h-title">热门中标企业</span>
+                        </header>
+                        <main class="tags-card-main">
+                            {{range $v:= .winnerList}}
+                            <p class="ellipsis">
+                                <a class="ellipsis cms-link row-column2" href="{{$v.url}}" target="_blank" title="{{$v.name}}">{{$v.name}}</a>
+                            </p>
+                            {{end}}
+                        </main>
+                    </section>
+                    {{end}}
+                </section>
+                <section>
+                    <!-- 地区导航 -->
+                    <div class="aside-module">
+                        {{include "pc/components/area-aside-card.html" .}}
+                    </div>
+                </section>
+
+                <div class="aside-module">
+                    <section class="aside-card city-aside-card">
+                        <header class="aside-card-header">
+                            <h3 class="aside-card-title">招标采购导航</h3>
+                        </header>
+                        <main class="aside-card-content city-aside-list" style="padding: 20px 6px 0 6px;">
+                            {{range $m :=GetRandomPinyinHotKeywords 20}}
+                            <a class="city-aside-item ellipsis cms-link" target="_blank" href="{{$m.Url}}" title="{{$m.Name}}">
+                                <div class="tags-card-item-title ellipsis">{{$m.Name}}</div>
+                            </a>
+                            {{end}}
+                        </main>
+                    </section>
+                </div>
+
+            </section>
+        </section>
+    </main>
+    <footer class="page-footer">
+        {{include "pc/components/ad-bottom.html" .}}
+        {{include "pc/common/footer.html" .}}
+    </footer>
+</div>
+<script src="https://cdn-common.jianyu360.com/cdn/lib/bootstrap/4.5.0/bootstrap.min.js"></script>
+<script src='{{Cdn}}/jyseo/js/common.js?v={{Msg "version"}}'></script>
+<script src='{{Cdn}}/jyseo/js/area-stype-list-pagination.js?v={{Msg "version"}}'></script>
+<script src='{{Cdn}}/jyseo/js/index.js?v={{Msg "version"}}'></script>
+</body>
+</html>

+ 2 - 1
resource/template/pc/area_index.html

@@ -136,11 +136,12 @@
         <section class="page-main-aside">
           <section class="section-aside area-section">
             <!--城市导航-->
-            {{if eq .areaNode.Type 1}}
+            {{if .areaNode.Child }}
               <div class="aside-module">
                 {{include "pc/components/area-city-aside-card.html" .}}
               </div>
             {{end}}
+
             <div class="aside-module">
               <section class="aside-card city-aside-card">
                 <header class="aside-card-header">

+ 24 - 18
resource/template/pc/components/header-nav-second-area.html

@@ -9,28 +9,34 @@
     {{if eq $global.areaNode.Type 1}}{{ $alias = "省" }}{{end}}
     <ul class="nav-ul">
       <li>
-        {{if eq $global.areaNode.Type 2}}
+        {{if eq $global.areaNode.Type 2}}<!--城市-->
         <a class="list-title" href="/list/city/{{$global.areaNode.Code}}.html" title="{{$global.areaNode.Name}}{{$alias}}招标采购网首页">{{$global.areaNode.Name}}{{$alias}}招标采购网首页</a>
-        {{else}}
-        <a class="list-title" href="/list/area/{{$global.areaNode.Code}}.html" title="{{$global.areaNode.Name}}{{$alias}}招标采购网首页">{{$global.areaNode.Name}}{{$alias}}招标采购网首页</a>
+        {{else if eq $global.areaNode.Type 4}} <!--区县-->
+        <a class="list-title" href="/list/area/{{$global.areaNode.Code}}.html" title="{{$global.areaNode.Name}}{{$alias}}招标采购网首页">{{$global.areaNode.Name}}{{$alias}}招标采购网</a>
+        {{else}}<!--省份直辖市-->
+        <a class="list-title" href="/list/area/{{$global.areaNode.Code}}.html" title="{{$global.areaNode.Name}}{{$alias}}">{{$global.areaNode.Name}}{{$alias}}招标采购网首页</a>
         {{end}}
       </li>
-      {{range $k,$v:= $sTypeArr}}
-        {{if eq $v.SIGN 0}}
-        <li>
-          {{$active:= false}}
-          {{if eq $global.sTypeNode.Code $v.Code }}
-          {{ $active = true}}
-          {{else if and $global.sTypeNode.PNode }}
-          {{if eq $global.sTypeNode.PNode.Code $v.Code }}
-          {{ $active = true}}
+      <!--      区县不展示信息类型-->
+      {{if ne $global.areaNode.Type 4}}
+        <!--      展示信息类型-->
+        {{range $k,$v:= $sTypeArr}}
+          {{if eq $v.SIGN 0}}
+          <li>
+            {{$active:= false}}
+            {{if eq $global.sTypeNode.Code $v.Code }}
+            {{ $active = true}}
+            {{else if and $global.sTypeNode.PNode }}
+            {{if eq $global.sTypeNode.PNode.Code $v.Code }}
+            {{ $active = true}}
+            {{end}}
+            {{end}}
+            <a class="list-title {{if $active}} highlight-text {{end}}" href="/list/{{$global.areaType}}/{{$global.areaNode.Code}}_{{$v.Id}}/" title="{{$global.areaNode.Name}}{{$alias}}{{$v.Alias}}">{{$v.Alias}}</a>
+            {{if lt $k (1 |minus ($sTypeArr|len))}}
+            <!-- <span class="line">/</span> -->
+            {{end}}
+          </li>
           {{end}}
-          {{end}}
-          <a class="list-title {{if $active}} highlight-text {{end}}" href="/list/{{$global.areaType}}/{{$global.areaNode.Code}}_{{$v.Id}}/" title="{{$global.areaNode.Name}}{{$alias}}{{$v.Alias}}">{{$v.Alias}}</a>
-          {{if lt $k (1 |minus ($sTypeArr|len))}}
-          <!-- <span class="line">/</span> -->
-          {{end}}
-        </li>
         {{end}}
       {{end}}
     </ul>