Преглед на файлове

Merge remote-tracking branch 'origin/feature/v4.8.34' into dev/v4.8.34_dx

# Conflicts:
#	src/jfw/front/shorturl.go
#	src/jfw/modules/app/src/app/front/shorturl.go
duxin преди 2 години
родител
ревизия
ea845391a3

+ 5 - 1
src/config.json

@@ -398,7 +398,11 @@
     "agencyperson":true,
     "agencytel":true,
     "budget":true,
-    "bidamount":true
+    "bidamount":true,
+    "buyer": true,
+    "winner": true,
+    "s_winner": true,
+    "winnerMap": true
   },
   "keywordsLimitNologin": 25,
   "messageCenter": {

+ 36 - 19
src/jfw/front/shorturl.go

@@ -41,19 +41,21 @@ type Short struct {
 	nologinArticle xweb.Mapper `xweb:"/nologin/(\\w+)/(.*).html"`   //([pm]) 无需登录
 }
 
-var mobileReg = regexp.MustCompile("(?i)(Android|Mobile|Phone)")
-var DateFullLayout = "2006-01-02 15:04:05"
-var Map_stype = map[string]bool{
-	"content":         true,
-	"entservice":      true,
-	"bdprivate":       true,
-	"mailprivate":     true,
-	"bdcontent":       true,
-	"indexcontent":    true,
-	"advancedProject": true,
-}
-
-var seoAgentReg = regexp.MustCompile("Baiduspider|360Spider|bingbot|Googlebot")
+var (
+	mobileReg      = regexp.MustCompile("(?i)(Android|Mobile|Phone)")
+	DateFullLayout = "2006-01-02 15:04:05"
+	Map_stype      = map[string]bool{
+		"content":         true,
+		"entservice":      true,
+		"bdprivate":       true,
+		"mailprivate":     true,
+		"bdcontent":       true,
+		"indexcontent":    true,
+		"advancedProject": true,
+	}
+	seoAgentReg      = regexp.MustCompile("Baiduspider|360Spider|bingbot|Googlebot")
+	detailNeedMosaic map[string]interface{}
+)
 
 func (s *Short) Article(stype, id string) error {
 	userId, _ := s.GetSession("userId").(string)
@@ -923,13 +925,24 @@ func ReplaceStringByRegex(str, rule, replace string) (string, error) {
 // 未登录用户进行数据过滤 name 配置文件
 func Filter(obj map[string]interface{}) map[string]interface{} {
 	detail := fmt.Sprint(obj["detail"])
-	mosaicText := fmt.Sprintf(`<span class="noLoginMosaic">%s</span>`, util.ObjToString(config.Sysconfig["detailMosaic"]))
+	mosaicText := fmt.Sprintf(`<span onclick="openLoginDig(true)" style="cursor:pointer;color: #1D1D1D;">%s</span>`, util.ObjToString(config.Sysconfig["detailMosaic"]))
+	detailText := fmt.Sprintf(`<span class="noLoginMosaic" style="color: #2ABED1;">%s</span>`, util.ObjToString(config.Sysconfig["detailMosaic"]))
 	for k, _ := range obj {
-		detailNeedMosaic, _ := config.Sysconfig["detailNeedMosaic"].(map[string]interface{})
 		if ok, _ := detailNeedMosaic[k].(bool); ok {
-			if util.InterfaceToStr(obj[k]) != "" {
-				detail = strings.ReplaceAll(detail, util.ObjToString(obj[k]), mosaicText)
-				obj[k] = mosaicText
+
+			//中标企业信息
+			if k == "winnerMap" && obj[k] != nil {
+				winnerNewMap := map[string]interface{}{}
+				winnerMap := util.ObjToMap(obj[k])
+				for _, wv := range *winnerMap {
+					winnerNewMap[mosaicText] = wv
+				}
+				obj[k] = winnerNewMap
+			} else {
+                if util.ObjToString(obj[k]) != "" {
+                    detail = strings.ReplaceAll(detail, util.ObjToString(obj[k]), detailText)
+                    obj[k] = mosaicText
+                }
 			}
 		}
 	}
@@ -978,6 +991,9 @@ func (s *Short) NologinArticle(stype, id string) error {
 	if userId != "" { //已登录用户直接跳转至正常三级页
 		return s.LoginCommon(userId, stype, id)
 	}
+	if detailNeedMosaic == nil {
+		detailNeedMosaic, _ = config.Sysconfig["detailNeedMosaic"].(map[string]interface{})
+	}
 	return s.NologinCommon(userId, stype, id, sids[0])
 }
 
@@ -994,7 +1010,7 @@ func (s *Short) NologinCommon(userId, stype, id, sid string) error {
 		s.T["shareid"] = se.EncodeString(shareid)
 		s.T["keywords"] = s.GetString("kds")
 		s.DisableHttpCache()
-		po, bo, wo, obj := pcVRT(sid, industry, stype, false || false || false)
+		po, bo, wo, obj := pcVRT(sid, industry, stype, false)
 		if obj != nil && len(obj) > 0 {
 			if len(po) > 0 {
 				s.T["projectOther"] = po
@@ -1017,6 +1033,7 @@ func (s *Short) NologinCommon(userId, stype, id, sid string) error {
 				obj = Filter(obj)
 				obj["description"] = fmt.Sprintf("%s,%s。", obj["title"], baseInfo(obj))
 			}
+			obj["agency"] = ""
 			if obj["publishtime"] != nil {
 				obj["publishtimeShorDate"] = time.Unix(util.Int64All(obj["publishtime"]), 0).Format(date.Date_Short_Layout)
 			}

+ 17 - 5
src/jfw/modules/app/src/app/front/shorturl.go

@@ -282,14 +282,26 @@ func (s *Short) Article(stype, id string) error {
 // 未登录用户进行数据过滤
 func Filter(obj map[string]interface{}) map[string]interface{} {
 	detail := fmt.Sprint(obj["detail"])
-	mosaicText := fmt.Sprintf(`<span class="noLoginMosaic">%s</span>`, util.ObjToString(config.Sysconfig["detailMosaic"]))
+	//mosaicText := fmt.Sprintf(`<span class="noLoginMosaic">%s</span>`, util.ObjToString(config.Sysconfig["detailMosaic"]))
+	mosaicText := fmt.Sprintf(`<span onclick="appAutoLogin()" style="cursor:pointer;color: #1D1D1D;">%s</span>`, util.ObjToString(config.Sysconfig["detailMosaic"]))
+	detailText := fmt.Sprintf(`<span class="noLoginMosaic" style="color: #2ABED1;">%s</span>`, util.ObjToString(config.Sysconfig["detailMosaic"]))
 	for k, _ := range obj {
 		detailNeedMosaic, _ := config.Sysconfig["detailNeedMosaic"].(map[string]interface{})
 		if ok, _ := detailNeedMosaic[k].(bool); ok {
-			if util.InterfaceToStr(obj[k]) != "" {
-				detail = strings.ReplaceAll(detail, util.ObjToString(obj[k]), mosaicText)
-				obj[k] = mosaicText
-			}
+			//中标企业信息
+			if k == "winnerMap" && obj[k] != nil {
+				winnerNewMap := map[string]interface{}{}
+				winnerMap := util.ObjToMap(obj[k])
+				for _, wv := range *winnerMap {
+					winnerNewMap[mosaicText] = wv
+				}
+				obj[k] = winnerNewMap
+			} else {
+                if util.InterfaceToStr(obj[k]) != "" {
+                    detail = strings.ReplaceAll(detail, util.ObjToString(obj[k]), detailText)
+                    obj[k] = mosaicText
+                }
+            }
 		}
 	}
 	obj["detail"] = detail

+ 5 - 1
src/jfw/modules/app/src/config.json

@@ -225,7 +225,11 @@
     "agencyperson":true,
     "agencytel":true,
     "budget":true,
-    "bidamount":true
+    "bidamount":true,
+    "buyer": true,
+    "winner": true,
+    "s_winner": true,
+    "winnerMap": true
   },
   "keepShowRedSpot": true,
   "detail_element": [

+ 2 - 2
src/jfw/modules/app/src/config.yaml

@@ -1,6 +1,6 @@
 etcd:
   hosts:
-  - 127.0.0.1:2379
+  - 192.168.3.149:2379
 userCenterKey: "usercenter.rpc" #用户中台rpc
 powerCheckCenterKey: "powercheck.rpc" #权益校验中台
-entManageApplication: "entmanageapplication.rpc" #企业管理中台
+entManageApplication: "entmanageapplication.rpc" #企业管理中台

+ 1 - 1
src/jfw/modules/app/src/db.json

@@ -20,7 +20,7 @@
 			"password": "jy@DevGroup"
 		},
 		"bidding": {
-			"address": "192.168.3.206:27001,192.168.3.206:27002",
+			"address": "192.168.3.206:27002",
 	 		"size": 5,
 	 		"dbName": "qfw_data",
 			"collection": "bidding",

BIN
src/jfw/modules/app/src/web/staticres/jyapp/images/no-login-content.png


+ 8 - 13
src/jfw/modules/app/src/web/templates/weixin/wxinfocontent.html

@@ -817,18 +817,9 @@
             <div id="third-party-verify-attention" class="third-party-verify-attention" style="display:none;">
               <span class="t-p-v-a-text">*温馨提示:系统识别到正文中对投标方有资质要求~</span>
             </div>
-            <div class="noLoginShow" style="display: none;">
+            <div class="noLoginShow option-login" style="display: none;">
               <div class="serve-list">
-                <img src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/images/register_serve.png" alt="" />
-              </div>
-              <div class="serve-option">
-                <div class="option-title">登录后可查看全文</div>
-                <div class="option-login option-common">立即登录</div>
-                <div class="option-register option-common">还不是会员?立即免费注册</div>
-                <div class="option-hotline">
-                  <img src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/images/telphone.png" alt="" />
-                  <span>咨询热线:400-108-6670</span>
-                </div>
+                <img src="{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/images/no-login-content.png" alt="详情页-未登录-引导" />
               </div>
             </div>
             <!--S 登录引导置底 S-->
@@ -1414,7 +1405,11 @@
             }
         }
     }
-
+    function appAutoLogin(){
+      // 去登录
+        const url = `/jyapp/article/content/${id}.html`
+        autoLogin(url)
+    }
     // 去登录
     $('.option-login').on('click', function() {
       const url = `/jyapp/article/content/${id}.html`
@@ -2417,7 +2412,7 @@
           rerprojectname=""
       }
       outhtml +='<li><p class="name">项目名称</p><p class="textcontent">'+rerprojectname+'</p></li>'
-      var rerbuyer = {{.T.obj.buyer}} ? {{.T.obj.buyer}} : {{.T.obj.owner}};
+      var rerbuyer = {{.T.obj.buyer}} ? {{Html .T.obj.buyer}} : {{.T.obj.owner}};
       var rerbuyer_show = ""
       if(rerbuyer==undefined||rerbuyer==null){
           rerbuyer=""

+ 18 - 6
src/web/staticres/css/pc/index.css

@@ -453,14 +453,16 @@
   width: 100%;
   min-height: 811px;
   background-color: #F4F7FB;
-  background-image: url(/images/index/new/bg.png);
-  background-size: 100% 100%;
-
+  background-image: url(/images/index/new/bg.png?v=1);
+  background-size: 1920px 970px;
+  background-position: right bottom;
+  background-repeat: no-repeat;
 }
 
 /* 4大分类 */
 .jy-index-hot {
   /* margin-top: 40px; */
+  margin-bottom: 40px;
 }
 
 .jy-index-hot>.hot-container {
@@ -540,9 +542,19 @@
   text-decoration: none;
 }
 
+.jy-index-register-guide img {
+  width: 100%;
+  height: 100%;
+  cursor: pointer;
+}
+.jy-index-register-guide {
+  height: 112px;
+  margin-bottom: 32px;
+}
+
 /* 独家行业洞察区域 */
 .jy-index-product {
-  padding: 80px 0 50px 0;
+  padding: 40px 0 50px 0;
 }
 
 .jy-index-product .main-product,
@@ -580,7 +592,7 @@
   overflow: hidden;
   max-width: 100%;
     color: #fff;
-    
+
 }
 
 .jy-index-product .svip-product {
@@ -675,7 +687,7 @@
 }
 .jy-index-product .product-item {
   border-radius: 5px;
-  
+
 }
 .jy-index-product .product-item:hover {
   box-shadow: 0px 4px 16px rgba(8, 31, 38, 0.25);

BIN
src/web/staticres/images/index/new/bg.png


BIN
src/web/staticres/images/index/new/register-guide.png


+ 3 - 0
src/web/staticres/js/login.js

@@ -2048,5 +2048,8 @@ var loginDialog = {
 
 $(function () {
   loginDialog.init()
+  $('#bidLogin').on('hide.bs.modal', function () {
+    backLogin(false)
+  })
 })
 

+ 8 - 2
src/web/staticres/tags/css/no-login-detail.css

@@ -215,7 +215,13 @@
   padding: 10px;
 }
 
-.no-login-detail .reg-service {}
+.no-login-detail .reg-service {
+  width: 828px;
+  height: 310px;
+  background: url(/tags/images/bg.png) no-repeat center;
+  background-size: contain;
+  cursor: pointer;
+}
 .no-login-detail .reg-service .service-top{
   border: 1px solid #F9E5C6;
   border-radius: 4px;
@@ -402,4 +408,4 @@
 }
 .no-login-detail .otherinfo .com-status{
 	float: right;
-}
+}

BIN
src/web/staticres/tags/images/bg.png


+ 4 - 4
src/web/staticres/tags/js/no-login-detail.js

@@ -248,7 +248,7 @@ if(goTemplateData.params.obj.subtype=="中标"||goTemplateData.params.obj.subtyp
     count++
   }
   if(count>=5){
-    $("#bidamount").text(bidmt)
+    $("#bidamount").html(bidmt)
     $("#bidInfoTitle").show();
     $("#bidInfoCont").show();
   }
@@ -773,7 +773,7 @@ $(function(){
       }
     }
   });
-  
+
 
   //
   var uli = 960;
@@ -1402,7 +1402,7 @@ var thishtlists = function(){
 	        hthtml += listtitle
 	      }
 	      hthtml +='</a></div></div>'
-	
+
 	      $(".animathistory .htcontent").append(hthtml);
 	    }
     }
@@ -2183,7 +2183,7 @@ $(function() {
     // 中标联系方式
     var winnerTelContainer = $('#winnertel')
     var winnerTel = winnerTelContainer.text()
-    
+
     if (buyerTel === 'freeView') {
       buyerTelContainer.html('<span class="freeView">点击查看</span>')
     }

+ 7 - 0
src/web/templates/pc/index.html

@@ -121,6 +121,13 @@
             </div>
           </div>
         </div>
+        {{if .T.hasLogin}}
+        {{else}}
+        <!-- 未登录引导注册广告 -->
+        <div class="w1200 jy-index-register-guide CfadeInUp">
+          <img onclick='openLoginDigForReg();openLoginDig();' src='{{Msg "seo" "cdn"}}/images/index/new/register-guide.png?v={{Msg "seo" "version"}}' alt="首页-引导注册">
+        </div>
+        {{end}}
         <!-- 独家行业洞察区域 -->
         <div class="jy-index-product CfadeInUp">
           <h3 class="module-title">核心功能推荐</h3>

+ 12 - 43
src/web/templates/pc/tags/detail.html

@@ -98,32 +98,32 @@
                 <table class="info-table">
                   <tr>
                     <td class="t-label ">省份</td>
-                    <td class="t-text">{{if eq .T.obj.area "A"}}全国{{else}}{{.T.obj.area}}{{end}}</td>
+                    <td class="t-text">{{if .T.obj.area}}{{if eq .T.obj.area "A"}}全国{{else}}{{Html .T.obj.area}}{{end}}{{end}}</td>
                     <td class="t-label ">城市</td>
-                    <td class="t-text">{{.T.obj.city}}</td>
+                    <td class="t-text">{{if .T.obj.city}}{{Html .T.obj.city}}{{end}}</td>
                   </tr>
                   <tr>
                     <td class="t-label " style="padding-right: 0px;">招标代理机构</td>
                     <td class="t-text">
-                      <div class="cont-cont">{{.T.obj.agency}}</div>
+                      <div class="cont-cont">{{if .T.obj.agency}}{{Html .T.obj.agency}}{{end}}</div>
                     </td>
                     <td class="t-label ">项目名称</td>
                     <td class="t-text">
-                      <div class="cont-cont">{{.T.obj.projectname}}</div>
+                      <div class="cont-cont">{{if .T.obj.projectname}}{{Html .T.obj.projectname}}{{end}}</div>
                     </td>
                   </tr>
                   <tr>
                     <td class="t-label ">采购单位</td>
-                    <td class="t-text">{{.T.obj.buyer}}</td>
+                    <td class="t-text">{{if .T.obj.buyer}}{{Html .T.obj.buyer}}{{end}}</td>
                     <td class="t-label " style="padding-right: 9px;">采购联系人</td>
                     <td class="t-text">
-                      <div class="cont-cont">{{.T.obj.buyerperson}}</div>
+                      <div class="cont-cont">{{if .T.obj.buyerperson}}{{Html .T.obj.buyerperson}}{{end}}</div>
                     </td>
                   </tr>
                   <tr>
                     <td class="t-label ">采购电话</td>
                     <td class="t-text">
-                      <div class="cont-cont buyertel">{{.T.obj.buyertel}}</div>
+                      <div class="cont-cont buyertel">{{if .T.obj.buyertel}}{{Html .T.obj.buyertel}}{{end}}</div>
                     </td>
                     <td class="t-label  piddingfour" id="tdbudget"></td>
                     <td class="t-text">
@@ -133,7 +133,7 @@
                   <tr id="baselast" style="display:none;">
                     <td class="t-label">拟定单一来源采购供应商</td>
                     <td class="t-text">
-                      <div class="cont-cont">{{.T.obj.winner}}</div>
+                      <div class="cont-cont">{{if .T.obj.winner}}{{Html .T.obj.winner}}{{end}}</div>
                     </td>
                     <td class="t-label"></td>
                     <td class="t-text">
@@ -152,7 +152,7 @@
                       <div>
                         {{ range $index, $value := .T.obj.winnerMap }}
                         <span style='position: relative;'>
-                          <span class="cont-cont portrait_img winners" >{{$index}}</span>
+                          <span class="cont-cont portrait_img winners" >{{Html $index}}</span>
                           <span class="winner-point">、</span>
                         </span>
                         {{ end }}
@@ -160,7 +160,7 @@
                       {{else}}
                       <div>
                           {{ range $index, $value := .T.obj.winnerMap }}
-                          <span class="cont-cont portrait_img no-show-tip winners">{{$index}}</span>
+                          <span class="cont-cont portrait_img no-show-tip winners">{{Html $index}}</span>
                           <span class='winner-point'>、</span>
                           {{end}}
                         </div>
@@ -191,39 +191,8 @@
                 {{Html (Regexp (Regexp (Regexp (Regexp (Regexp (Regexp .T.obj.detail "(\\n|\\\\n)\\s+" "\n") "(\\n|\\\\n)+" "<br/>") "<td>\\s*$" "") "<tr>\\s*$" "") "<tbody>\\s*$" "") "<table>\\s*$" "")}}
               </div>
             </div>
-            <div class="reg-service">
-              <div class="service-top">
-                <div class="s-t-header"></div>
-                <div class="s-t-content">
-                  <div class="s-t-item">
-                    <p class="item-icon item-icon-1"></p>
-                    <p class="item-hight-title">免费查看招标信息</p>
-                    <p class="item-text">精准匹配你需要的商机,极速推送,获取项目更精准。</p>
-                  </div>
-                  <div class="s-t-item">
-                    <p class="item-icon item-icon-2"></p>
-                    <p class="item-hight-title">潜在竞争对手/合作伙伴挖掘</p>
-                    <p class="item-text">提供个性化定制的标讯数据维度,成为新的拓客方式。</p>
-                  </div>
-                  <div class="s-t-item">
-                    <p class="item-icon item-icon-3"></p>
-                    <p class="item-hight-title">1V1专属服务</p>
-                    <p class="item-text">平台专属服务顾问1V1服务,9大行业社群免费进,行业交流、获取商机更便捷!</p>
-                  </div>
-                </div>
-              </div>
-              <div class="service-bottom">
-                <div class="s-b-header">登录后可查看全文</div>
-                <div class="s-b-group">
-                  <span class="login-btn login-node" id="login-main-btn">立即登录</span>
-                  <span class="reg-btn reg-node" id="reg-main-btn">还不是会员?立即免费注册</span>
-                </div>
-                <div class="s-b-phone">
-                  <i></i>
-                  <span>咨询热线:<span class="tel-num">400-108-6670</span></span>
-                </div>
-              </div>
-            </div>
+           <!--未登录展示的引导广告-->
+            <div class="reg-service login-node"></div>
           </div>
           <div class="bid-footer">
             <div class="otherinfo">