Browse Source

Merge branch 'master' into feature/v1.0.40

yuelujie 3 months ago
parent
commit
e7efe4e31e

+ 1 - 0
internal/cmd/cmd.go

@@ -92,6 +92,7 @@ var (
 				group.GET("/qy/{seoId}.html", controller.EnterpriseDetail)   //中标企业详情
 				group.GET("/nologin/{stype}/*any", controller.DetailHandler) //标讯详情
 
+				group.GET("/promotional/{code}.html", controller.DebrisProductHandler) //碎片化小程序
 			})
 			s.AddStaticPath("/jyseo", "/resource/staticres") //静态资源
 			s.Run()

+ 35 - 0
internal/controller/debrisProduct.go

@@ -0,0 +1,35 @@
+package controller
+
+import (
+	"fmt"
+	"github.com/gogf/gf/v2/frame/g"
+	"github.com/gogf/gf/v2/net/ghttp"
+	"jyseo/internal/service"
+	"strings"
+)
+
+func DebrisProductHandler(r *ghttp.Request) {
+	code := r.Get("code").String() //小程序code
+	sNode := service.JySeoDebrisProductRoot.GetDebrisProductNode(code)
+	if sNode == nil {
+		service.HtmlRender.NotFound(r)
+		return
+	}
+	// 查询数据
+	query := service.NewBiddingQuery().EquipKeyWord(strings.Join(sNode.Match, ","))
+	rData, err := query.GetOnceData(r.Context(), 50, "DebrisProductHandler", service.JySeoKeyWordLetterRoot.GetEsData)
+	if err != nil {
+		g.Log().Errorf(r.Context(), err.Error())
+		service.HtmlRender.RenderError(r, fmt.Errorf("获取列表数据异常"))
+		return
+	}
+	service.HtmlRender.Render(r, "debrisProduct_list.html",
+		g.Map{
+			"isIndex":   true,
+			"sTypeNode": sNode,
+			"list":      rData,
+			"node":      sNode,
+			"tdk":       service.JySeoTdk.GetDebrisProductTdk(r.Context(), sNode.Name),
+		},
+	)
+}

+ 1 - 1
internal/controller/keywordLetter.go

@@ -43,7 +43,7 @@ func LetterListHandler(r *ghttp.Request) {
 		rData []*service.InfoList
 		err   error
 	)
-	query := service.NewBiddingQuery().EquipKeyWord(letterKeyword.Name)
+	query := service.NewBiddingQuery().EquipKeyWord(letterKeyword.Name).EquipEsSimilarity(consts.KeyWordEsMatchingDegree)
 
 	if letterKeyword.State == 1 {
 		rData, err = query.GetOnceData(r.Context(), consts.KeyWordSiteMaxTotal, "LetterListHandlerState", service.JySeoKeyWordLetterRoot.GetData)

+ 46 - 0
internal/service/debrisProductStruct.go

@@ -0,0 +1,46 @@
+package service
+
+import (
+	"context"
+	"github.com/gogf/gf/v2/frame/g"
+)
+
+type (
+	seoDebrisProductRoot struct {
+		mapping map[string]*DebrisItem
+		nodes   []*DebrisItem
+	} //关键词code对应的map
+
+	DebrisItem struct {
+		Code      string   `json:"code"`
+		Name      string   `json:"name"`
+		Match     []string `json:"match"`
+		Link      string   `json:"link"`
+		HotSearch []string `json:"hotSearch"`
+	}
+)
+
+var (
+	JySeoDebrisProductRoot = initDebrisProductRoot(context.Background())
+)
+
+func initDebrisProductRoot(ctx context.Context) *seoDebrisProductRoot {
+	var (
+		allItem []*DebrisItem
+		mapping = map[string]*DebrisItem{}
+	)
+	if err := g.Cfg("global").MustGet(ctx, "debrisProduct").Struct(&allItem); err != nil {
+		g.Log().Errorf(ctx, "初始化碎片化落地页异常 %v", err)
+	}
+	for _, item := range allItem {
+		mapping[item.Code] = item
+	}
+	return &seoDebrisProductRoot{
+		mapping: mapping,
+		nodes:   allItem,
+	}
+}
+
+func (this *seoDebrisProductRoot) GetDebrisProductNode(code string) *DebrisItem {
+	return this.mapping[code]
+}

+ 2 - 0
internal/service/keyWordLetterStruct.go

@@ -98,6 +98,8 @@ func (sRoot *keyWordLetterRoot) GetData(ctx context.Context, maxTotal int, query
 }
 
 func (sRoot *keyWordLetterRoot) GetEsData(ctx context.Context, maxTotal int, query *SeoBiddingQuery) []map[string]interface{} {
+	queryStr := GetEsQuery(maxTotal, query)
+	g.Dump(queryStr)
 	list := utility.OtherElastic.Get(INDEX, TYPE, GetEsQuery(maxTotal, query))
 	if list == nil || len(*list) == 0 {
 		return nil

+ 43 - 14
internal/service/queryStruct.go

@@ -14,17 +14,18 @@ import (
 
 type (
 	SeoBiddingQuery struct {
-		keys     string
-		area     string
-		city     string
-		district string
-		topType  string
-		subType  string
-		topClass string
-		subClass string
-		industry string
-		SIGN     int
-		Other    map[string]interface{}
+		keys       string
+		area       string
+		city       string
+		district   string
+		topType    string
+		subType    string
+		topClass   string
+		subClass   string
+		industry   string
+		SIGN       int
+		Similarity string
+		Other      map[string]interface{}
 	}
 	InfoList struct {
 		Id          string
@@ -103,6 +104,12 @@ func (query *SeoBiddingQuery) EquipKeyWord(keyword string) *SeoBiddingQuery {
 	return query
 }
 
+// EquipEsSimilarity es查询相似度
+func (query *SeoBiddingQuery) EquipEsSimilarity(similarity string) *SeoBiddingQuery {
+	query.Similarity = similarity
+	return query
+}
+
 func (query *SeoBiddingQuery) EquipIndustry(topClass, subClass string) *SeoBiddingQuery {
 	if topClass != "" {
 		query.topClass = topClass
@@ -367,13 +374,18 @@ func FillingEsBiddingBaseFields(res []map[string]interface{}, key string) []map[
 }
 
 func GetEsQuery(maxTotal int, query *SeoBiddingQuery) string {
-	var musts []string
+	var (
+		musts  []string
+		should []string
+	)
+
 	qu := `{
   "query": {
     "bool": {
       "filter": [
         %s
       ],
+     %s
       "must_not": [
         {
           "terms": {
@@ -409,7 +421,20 @@ func GetEsQuery(maxTotal int, query *SeoBiddingQuery) string {
   "size": %d
 }`
 	if query.keys != "" {
-		musts = append(musts, fmt.Sprintf(`{"multi_match": {"query": "%s","minimum_should_match": "%s","fields": ["title"]}}`, query.keys, consts.KeyWordEsMatchingDegree))
+		if query.Similarity != "" {
+			musts = append(musts, fmt.Sprintf(`{"multi_match": {"query": "%s","minimum_should_match": "%s","fields": ["title"]}}`, query.keys, query.Similarity))
+		} else {
+			if strings.Index(query.keys, ",") > -1 {
+				for _, s := range strings.Split(query.keys, ",") {
+					k := strings.TrimSpace(s)
+					if k != "" {
+						should = append(should, fmt.Sprintf(`{"multi_match": {"query": "%s","type": "phrase","fields": ["title"]}}`, s))
+					}
+				}
+			} else {
+				should = append(should, fmt.Sprintf(`{"multi_match": {"query": "%s","type": "phrase","fields": ["title"]}}`, query.keys))
+			}
+		}
 	}
 	if query.district != "" {
 		musts = append(musts, fmt.Sprintf(`{"term": {"district": "%s" }}`, query.district))
@@ -435,5 +460,9 @@ func GetEsQuery(maxTotal int, query *SeoBiddingQuery) string {
 	if query.subClass != "" && query.topClass != "" {
 		musts = append(musts, fmt.Sprintf(`{"term": {"s_subscopeclass": "%s" }}`, fmt.Sprintf("%s_%s", query.topClass, query.subClass)))
 	}
-	return fmt.Sprintf(qu, strings.Join(musts, ","), maxTotal)
+	var shouldStr string
+	if len(should) > 0 {
+		shouldStr = fmt.Sprintf(`"should":[%s],"minimum_should_match": 1,`, strings.Join(should, ","))
+	}
+	return fmt.Sprintf(qu, strings.Join(musts, ","), shouldStr, maxTotal)
 }

+ 11 - 0
internal/service/tdk.go

@@ -306,3 +306,14 @@ func (*jySeoTdk) GetBidDetailTdk(ctx context.Context, bidData map[string]interfa
 		Description: strings.Join(descriptionArr, ","),
 	}
 }
+
+func (*jySeoTdk) GetDebrisProductTdk(ctx context.Context, name string) *TDK {
+	title := g.Cfg("tdk").MustGet(ctx, "debrisProduct.TITLE").String()
+	keywords := g.Cfg("tdk").MustGet(ctx, "debrisProduct.KEYWORDS").String()
+	description := g.Cfg("tdk").MustGet(ctx, "debrisProduct.DESCRIPTION").String()
+	return &TDK{
+		Title:       strings.ReplaceAll(title, "{NAME}", name),
+		KeyWords:    strings.ReplaceAll(keywords, "{NAME}", name),
+		Description: strings.ReplaceAll(description, "{NAME}", name),
+	}
+}

+ 7 - 0
manifest/config/global.yaml

@@ -299,3 +299,10 @@ stype:
     name: "招标信用信息"
   - code: "ZBCGYX"
     name: "采购意向"
+
+debrisProduct:
+  - code: "wuye"
+    name: "物业服务"
+    match: ["物业","保安","保洁"]
+    link: "https://h5.jianyu360.cn/jyapp/new/sph01"
+    hotSearch: ["物业服务","物业管理","保洁服务","食材采购","保安服务","绿化养护","电梯维保"]

+ 5 - 0
manifest/config/tdk.yaml

@@ -319,3 +319,8 @@ gs:
   TITLE: '{NAME}招标公告_{NAME}招标采购 - 剑鱼标讯'
   KEYWORDS: '{NAME}招标,{NAME}采购,{NAME}招标公告'
   DESCRIPTION: '剑鱼标讯提供{NAME}招标信息、{NAME}中标公告等内容,以及{NAME}招标搜索查询、订阅推送等服务,每天实时更新{NAME}的招标信息,随时随地查看。'
+
+debrisProduct:
+  TITLE: "{NAME}招标采购信息网_{NAME}采购项目查询-剑鱼标讯"
+  KEYWORDS: "{NAME}采购,{NAME}招标"
+  DESCRIPTION: "剑鱼标讯的{NAME}招标采购信息查询为您提供物业服务相关的采购需求、招标公告、成交公告等内容,以及招标信息搜索查询、订阅推送和数据定制化服务,每天实时更新。"

BIN
resource/staticres/image/debrisProduct/wuye-mobile.png


BIN
resource/staticres/image/debrisProduct/wuye-pc.png


+ 86 - 0
resource/template/mobile/debrisProduct_list.html

@@ -0,0 +1,86 @@
+<!DOCTYPE html>
+<html lang="zh-CN" style="font-size: 50px;">
+<head>
+    <title>{{.tdk.Title}}</title>
+    <meta name="Keywords" content='{{.tdk.KeyWords}}'/>
+    <meta name="Description" content='{{.tdk.Description}}'/>
+    {{include "mobile/components/tag-meta.html" .}}
+    {{include "mobile/components/tag-header-common-assets.html" .}}
+</head>
+<body>
+<section class="page-container">
+    <header class="page-header">
+        {{include "mobile/components/tag-header.html" .}}
+    </header>
+    <main class="page-main">
+        <div class="module-wrapper">
+            {{$global:=.}}
+            <!-- 头部搜索-->
+            {{include "mobile/components/tag-register-login-group.html" .}}
+            {{include "mobile/components/tag-info-type-nav.html"}}
+            <!-- 数据列表-->
+            <section class="tag-card bg-white bidding-info-list-container mt12">
+                <header class="tag-card-hd">
+                    <h1 class="tag-card-title"> {{.node.Name}}招标信息 </h1>
+                    <div class="tag-card-actions"></div>
+                </header>
+<!--                from components/tag-card-bidding-info-list.html-->
+                <main class="tag-card-bd">
+                    <ul class="bidding-info-list">
+                        {{if ne (len .list) 0 }}
+                            {{range $k,$v :=.list}}
+                                {{if eq $k 2}}
+                                <li class="bidding-info-item">
+                                    <div class="bidding-info-hd">
+                                        <a class="bidding-info-title ellipsis-2" href="{{$global.node.Link}}">
+                                            <img src="{{Cdn}}/jyseo/image/debrisProduct/{{$global.node.Code}}-mobile.png?v={{Msg "version"}}">
+                                        </a>
+                                    </div>
+                                </li>
+                                {{end}}
+                                {{if lt $k 50}}
+                                <li class="bidding-info-item">
+                                    <div class="bidding-info-hd">
+                                        <a class="bidding-info-title ellipsis-2" href="{{$v.Url}}"> {{$v.Title}} </a>
+                                    </div>
+                                    <div class="bidding-info-bd">
+                                        <div class="tag-group clearfix">
+                                            {{if $v.Site}}<p class="tag-item red fl">{{$v.Site}}</p>{{end}}
+                                            {{if $v.Area}}<p class="tag-item grey fl">{{$v.Area}}</p>{{end}}
+                                            {{if $v.Industry}}<p class="tag-item grey fl">{{$v.Industry}}</p>{{end}}
+                                            {{if $v.Subtype}}<p class="tag-item grey fl">{{$v.Subtype}}</p>{{end}}
+                                            {{if $v.Price}}<p class="tag-item grey fl">{{$v.Price}}</p>{{end}}
+                                            <!-- {{if $v.FileExists}}<p class="tag-item main fl">有附件</p>{{end}} -->
+                                            {{if $v.PublishTime }}<p class="tag-item tag-item--time fr">{{$v.PublishTime | date "Y-m-d"}}</p>{{end}}
+                                        </div>
+                                    </div>
+                                </li>
+                                {{end}}
+                            {{end}}
+                        {{end}}
+                    </ul>
+                </main>
+<!--                from components/tag-card-bidding-info-list.html-->
+            </section>
+            {{include "mobile/components/tag-footer.html" .}}
+        </div>
+    </main>
+</section>
+<div class="loading-wrapper" style="display: none;">
+    <div class="loading-icon"></div>
+</div>
+{{include "mobile/components/tag-footer-common-assets.html"}}
+<script>
+    var templateData = {
+        homeLink: "/tags/home/home.html",
+        areaTopTitle: "{{if .areaNode}}{{.areaNode.Name}}招标网{{end}}"
+    }
+</script>
+<script src='{{Cdn2}}/common-module/public/js/china-map-data.js?v={{Msg "version"}}'></script>
+<script src='/jyseo/mobile/js/common.js'></script>
+<script src='/jyseo/mobile/js/tag-common.js'></script>
+<script src='/jyseo/mobile/js/index.js'></script>
+
+</body>
+</html>
+

+ 0 - 8
resource/template/pc/components/ad-bottom.html

@@ -25,13 +25,5 @@
     {{end}}
   </div>
 </div>
-
-<script>
-  var testJySeo = {{$ad_bottom}}
-  console.log(testJySeo)
-  var testJy = 1111111
-  console.log(testJy)
-</script>
-
 <!-- 引入css、js外链时 资源名称不能以ad开头,会被浏览器广告插件拦截 -->
 <script src="{{Cdn}}/jyseo/js/pc-ad-bottom.js?v={{Msg "version"}}"></script>

+ 239 - 0
resource/template/pc/debrisProduct_list.html

@@ -0,0 +1,239 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+<head>
+	{{include "pc/common/meta.html" .}}
+  {{include "pc/common/tdk.html" .}}
+	{{include "pc/common/link.html" .}}
+	<link href='{{Cdn}}/jyseo/css/tags-lib.css?v={{Msg "version"}}' rel="stylesheet" type="text/css" />
+	<link href='{{Cdn}}/jyseo/css/index.css?v={{Msg "version"}}' rel="stylesheet" type="text/css" />
+	<link href='{{Cdn}}/jyseo/css/keywordPinyin.css?v={{Msg "version"}}' rel="stylesheet"/>
+	<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>
+	<style>
+		.hot-keyword{
+			display: flex;
+			flex-direction: column;
+		}
+		.hot-keyword .bottom-hot{
+			display: flex;
+			flex-direction: row;
+			margin-top: 10px;
+			align-items: center;
+      justify-content: center;
+		}
+		.hot-keyword .bottom-hot .cms-link {
+      margin-right: 8px;
+			font-size: 14px;
+			color: #686868;
+			text-decoration: none;
+		}
+		.hot-keyword .bottom-hot .hot-divider {
+			margin: 0 12px;
+			display: inline-block;
+			width: 1px;
+			height: 14px;
+			background: #E0E0E0;
+		}
+    .searchname{
+      width: 490px!important;
+    }
+	</style>
+</head>
+<body class="bidsearch-page">
+<div class="page-container">
+	<header class="page-header">
+		<!-- 顶部导航 -->
+		{{include "pc/common/header.html" .}}
+	</header>
+	<main class="page-main page-main-stype page-key-list" style="margin-bottom: unset">
+
+		<section id="searchInner">
+			<!--搜索头部 START-->
+			<div class="searchHeader">
+				<div class="w searchHeader-container">
+					<!--搜索-->
+					<div class="searchInput clearfix hot-keyword">
+						<form  id="zbSeatchT" class="clearfix">
+							<input class="searchname" autocomplete="off" type="search" id="searchinput" value="" name="keywords" placeholder="{{.node.Name}}" />
+							<img src="{{Cdn}}/images/pc_20.png" id="t-clear" class="j-clearicon" style="display: none;">
+							<input type="submit" value="搜索" />
+						</form>
+						<div class="bottom-hot">
+							<div>热门搜索</div>
+							<i class="hot-divider"></i>
+							<div>
+								{{range $k, $v := .node.HotSearch}}
+								<a class="cms-link" href="/jylab/supsearch/index.html?keywords={{$v}}&selectType=title&searchGroup=1">{{$v}}</a>
+								{{end}}
+							</div>
+						</div>
+					</div>
+				</div>
+			</div>
+			<!--搜索头部 END-->
+
+			<!--招标搜索页面 START-->
+			<div class="searchControl">
+				<!--招标搜索列表内容-->
+				<div class="seaTender-inner w">
+					<!--招标tab切换-->
+					<div class="tabTitle clearfix flex-dev">
+						<h1 class="left-title">{{.node.Name}}招标信息</h1>
+					</div>
+					<!--tab切换内容-->
+					<div class="tabContainer" id="allnews">
+						<!--全文搜索 列表-->
+						<div class="lucene">
+							<ul>
+								{{range $k,$v:=.list}}
+								<li>
+									<div class="liLuceneList">
+										<div class="luce-left">
+											<em>{{$k | plus 1}}.</em>
+											<div class="left-title">
+												<a href="{{$v.Url}}" target="_blank">{{$v.Title}}</a>
+											</div>
+										</div>
+										<div class="luce-right">
+											{{if $v.Area}}<span class="j-tag list-item-tags">{{$v.Area}}</span>{{end}}
+											{{if $v.Industry}}<span class="j-tag list-item-tags">{{$v.Industry}}</span>{{end}}
+											{{if $v.Subtype}}<span class="j-tag list-item-tags">{{$v.Subtype}}</span>{{end}}
+											{{if $v.Price}}<span class="j-tag list-item-tags" data-format-money={{$v.Price}}>{{$v.Price}}</span>{{end}}
+											{{if $v.PublishTime}}<span  class="list-item-times">{{$v.PublishTime | date "Y-m-d"}}</span>{{end}}
+											</div>
+									</div>
+								</li>
+								{{end}}
+							</ul>
+						</div>
+					</div>
+					<div class="hasNoData" style="display: none;">
+						<img src="{{Cdn}}/images/pc_12.png" id="hasNoData">
+					</div>
+				</div>
+			</div>
+			<!--招标搜索页面 END-->
+		</section>
+	</main>
+	<footer class="page-footer">
+		<link rel="stylesheet" href="{{Cdn}}/jyseo/css/pc-ad-bottom.css?v={{Msg "version"}}">
+		<div style="display: none;" data-nologin-show  class="pc-ad-bottom" id="bottom-sticky-ad">
+			<div class="ad-bottom-main">
+				<img class="ad-bottom-img" src='{{Cdn}}/jyseo/image/debrisProduct/{{.node.Code}}-pc.png?v={{Msg "version"}}' alt="{{.node.Name}}">
+			</div>
+		</div>
+		<!-- 引入css、js外链时 资源名称不能以ad开头,会被浏览器广告插件拦截 -->
+		<script src="{{Cdn}}/jyseo/js/pc-ad-bottom.js?v={{Msg "version"}}"></script>
+		{{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>
+<script>
+	$(function(){
+		$("#t-clear").click(function() {
+			$("#t-clear").hide();
+			$("#searchinput").val("").focus();
+		})
+      $('#zbSeatchT').on('submit', function(e) {
+        e.preventDefault()
+        var keywords = $('#searchinput').val()
+        location.href = '/jylab/supsearch/index.html?keywords=' + keywords
+      })
+
+	})
+	//
+	function beforeSubmit(flag) {
+		var selectIndustrys = "";
+		var thisText = "";
+		$(".industry-content .active").each(function() {
+			if ($(this).attr("id") == "induAll") {
+				return true;
+			} else if ($(this).hasClass("active") && $(this).hasClass("parent-node")) {
+				$(this).nextUntil(".diver").each(function() {
+					thisText = $(this).attr("data-value");
+					if (selectIndustrys != "") {
+						selectIndustrys += ",";
+					}
+					selectIndustrys += thisText;
+				});
+			} else {
+				thisText = $(this).attr("data-value");
+				if (selectIndustrys != "") {
+					selectIndustrys += ",";
+				}
+				selectIndustrys += thisText;
+			}
+		});
+		$("#zbSeatchT [name='industry']").val(selectIndustrys);
+
+		var selectMinPrices = $(".PriceInput [name='minprice']").val();
+		var selectMaxPrices = $(".PriceInput [name='maxprice']").val();
+		$("#zbSeatchT [name='minprice']").val(selectMinPrices);
+		$("#zbSeatchT [name='maxprice']").val(selectMaxPrices);
+		var publishtime = null;
+		var timeslot = getInputTime().join("_");
+		if ($(".timerInput").hasClass("active")) {
+			if (timeslot != "_") {
+				$("#zbSeatchT [name='publishtime']").val(timeslot);
+			} else {
+				$("#zbSeatchT [name='publishtime']").val("");
+			}
+		} else {
+			publishtime = $(".timer .active").attr("data-value");
+			if (typeof (publishtime) != "undefined") {
+				$("#zbSeatchT [name='publishtime']").val(publishtime);
+			} else {
+				$("#zbSeatchT [name='publishtime']").val("");
+			}
+		}
+		if (timeslot != "_") {
+			$("#zbSeatchT [name='timeslot']").val(timeslot);
+		} else {
+			$("#zbSeatchT [name='timeslot']").val("");
+		}
+
+		var selectAreas = "";
+		$(".region-content .active:not(.parent-node)").each(function() {
+			var thisText = $(this).text();
+			if (thisText != "全国") {
+				if (selectAreas != "") {
+					selectAreas += ",";
+				}
+				selectAreas += thisText;
+			}
+		});
+		$("#zbSeatchT [name='area']").val(selectAreas);
+
+		var selectSubTypes = "";
+		$(".info-content .active:not(.parent-node)").each(function() {
+			if ($(this).attr("id") == "whole" || $(this).attr("id") == "infoBtn") {
+				return true;
+			}
+			var thisText = $(this).attr("data-value");
+			if (selectSubTypes != "") {
+				selectSubTypes += ",";
+			}
+			selectSubTypes += thisText;
+		});
+		$("#zbSeatchT [name='subtype']").val(selectSubTypes);
+		if (flag != "F") {
+			$("#zbSeatchT [type='submit']").click();
+		}
+		return true;
+	}
+	//
+	function noIn(p){
+		var thisId = $(p).attr("dataId");
+		dataId = thisId;
+		if(!loginflag){//未登录详情
+			window.open("/nologin/content/"+thisId+".html");
+		}else{
+			window.open("/article/content/"+thisId+".html");
+		}
+	}
+</script>
+</body>
+</html>