Ver código fonte

Merge branch 'master' into feature/v4.8.47

lianbingjie 2 anos atrás
pai
commit
263c421c41

+ 1 - 1
src/jfw/front/classificationTag.go

@@ -476,7 +476,7 @@ func NewIndexbids(session *httpsession.Session, r *http.Request) []map[string]in
 		_, total, _ := so.GetBidSearchList(true)
 		data.Count = total
 	*/
-	_, _, lists := bidsearch.GetPcBidSearchData("", "", "", "", "", "", "", "", "", "", "", "", "", 1, false, nil, bidSearch_field_1, "", false, false, "", 10, "")
+	_, _, lists := bidsearch.GetPcBidSearchData("", "", "", "", "拟建,招标预告,招标公告,招标结果,招标信用信息", "", "", "", "", "", "", "", "", 1, false, nil, bidSearch_field_1, "", false, false, "", 10, "")
 	if lists != nil {
 		for _, v1 := range *lists {
 			v1["_id"] = encrypt.CommonEncodeArticle("content", v1["_id"].(string))

+ 6 - 4
src/jfw/front/frontRouter.go

@@ -8,6 +8,7 @@ import (
 	"jy/src/jfw/wx"
 	"net/url"
 	"regexp"
+	"strings"
 
 	"app.yhyue.com/moapp/jypkg/common/src/qfw/util/jy"
 
@@ -211,11 +212,12 @@ var bigVipFreePageReg = regexp.MustCompile(`set_.*|free|unit_portrayal|analysis_
 // 工作桌面需求 不需要判断用户权限
 func (this *CommonRouter) doPcBigPage(pageSign, types string) error {
 	//page := pageSign
-	//userid, _ := this.GetSession("userId").(string)
+	userid, _ := this.GetSession("userId").(string)
 	//没有登录跳转登录页面(采购单位画像除外)
-	//if !strings.Contains(pageSign, "unit_portrayal") && userid == "" {
-	//	return this.Redirect("/notin/page")
-	//}
+	if !strings.Contains(pageSign, "unit_portrayal") &&
+		!strings.Contains(pageSign, "ent_portrait") && userid == "" {
+		return this.Redirect("/notin/page")
+	}
 	return this.Render(fmt.Sprintf("/frontRouter/pc/page_big_pc/sess/index.html"))
 }
 

+ 4 - 4
src/jfw/front/pcIndex.go

@@ -439,10 +439,10 @@ func (f *PcIndex) SearchResult(at, name string) error {
 	}
 	if f.T["seo_keywords"] == "" {
 		if area == "" {
-			if f.T["industry"] == "" {
+			if industry == "" {
 				f.T["seo_keywords"] = seokeywords
 			} else {
-				f.T["seo_keywords"] = fmt.Sprintf("%s", f.T["industry"])
+				f.T["seo_keywords"] = fmt.Sprintf("%s", industry)
 			}
 		} else {
 			f.T["seo_keywords"] = fmt.Sprintf("%s招标信息,%s招标公告,%s中标公告,%s招标采购,%s招标网", seokeywords, seokeywords, seokeywords, seokeywords, seokeywords)
@@ -450,10 +450,10 @@ func (f *PcIndex) SearchResult(at, name string) error {
 	}
 	if f.T["seo_description"] == "" {
 		if area == "" {
-			if f.T["industry"] == "" {
+			if industry == "" {
 				f.T["seo_description"] = seodescription
 			} else {
-				f.T["seo_description"] = fmt.Sprintf("剑鱼标讯提供%s全行业招标信息搜索查询、订阅推送和数据定制化服务,每天实时更新%s相关的招标信息,随时随地免费查看。", f.T["industry"], f.T["industry"])
+				f.T["seo_description"] = fmt.Sprintf("剑鱼标讯提供%s全行业招标信息搜索查询、订阅推送和数据定制化服务,每天实时更新%s相关的招标信息,随时随地免费查看。", industry, industry)
 			}
 		} else {
 			f.T["seo_description"] = fmt.Sprintf("剑鱼标讯%s专栏,提供全行业最新的%s招标信息、%s招标公告、%s中标公告和%s招标采购等内容,强大的搜索查询功能,支持多条件筛选,让招投标更轻松。", seodescription, seodescription, seodescription, seodescription, seodescription)

+ 3 - 1
src/jfw/front/shorturl.go

@@ -1204,10 +1204,12 @@ func (s *Short) NologinCommon(userId, stype, id, sid string) error {
 		s.T["logid"] = config.Seoconfig["jysskzy"].(string)
 		s.T["shareid"] = se.EncodeString(shareid)
 		//s.T["keywords"] = s.GetString("kds")
-
 		s.DisableHttpCache()
 		po, bo, wo, obj := pcVRT(sid, industry, stype, false)
 		if obj != nil && len(obj) > 0 {
+			if obj["subtype"] == "采购意向" { //未登录不能访问采购意向
+				return s.Redirect("/notin/page", 302)
+			}
 			if len(po) > 0 {
 				s.T["projectOther"] = po
 			}

+ 10 - 1
src/jfw/front/supsearch.go

@@ -347,7 +347,16 @@ func (p *Pcsearch) PcSearchIndex(module string) error {
 	//p353包含采购意向与拟建
 	noLoginBl := false
 	if userId == "" {
-		//未登录用户访问全部信息类型 需要过滤掉 拟建和采购意向
+		//未登录用户访问全部信息类型 需要过滤掉 拟建
+		if strings.Contains(subtype, "采购意向") {
+			var ss []string
+			for _, v := range strings.Split(subtype, ",") {
+				if v != "采购意向" {
+					ss = append(ss, v)
+				}
+			}
+			subtype = strings.Join(ss, ",")
+		}
 		if subtype == "" {
 			subtype = "拟建,招标预告,招标公告,招标结果,招标信用信息"
 			noLoginBl = true

+ 16 - 0
src/jfw/front/swordfish.go

@@ -113,6 +113,22 @@ func (m *Front) PcAjaxReq() {
 	if selectType == "" {
 		selectType = "title,content"
 	}
+	if userId == "" {
+		//未登录用户访问全部信息类型 需要过滤掉 拟建和采购意向
+		if strings.Contains(subtype, "采购意向") {
+			var ss []string
+			for _, v := range strings.Split(subtype, ",") {
+				if v != "采购意向" {
+					ss = append(ss, v)
+				}
+			}
+			subtype = strings.Join(ss, ",")
+		}
+		if subtype == "" {
+			subtype = "拟建,招标预告,招标公告,招标结果,招标信用信息"
+		}
+
+	}
 	industry := strings.TrimSpace(m.GetString("industry"))
 	minprice := m.GetString("minprice")               //最低价格
 	maxprice := m.GetString("maxprice")               //最高价格

+ 3 - 0
src/jfw/modules/app/src/app/front/shorturl.go

@@ -128,6 +128,9 @@ func (s *Short) Article(stype, id string) error {
 	var canRead bool
 	obj = wxvisitD(sid, userId, (isVip && isOldVip) || isEntniche || isMember)
 	if len(obj) > 0 {
+		if userId == "" && util.ObjToString(obj["subtype"]) == "采购意向" {
+			return s.Redirect("/jyapp/free/login")
+		}
 		if userId != "" {
 			if ((isVip && isOldVip) || isMember || isEntniche) || //老版本vip、大会员、商机管理
 				((isVip && !isOldVip) && (!(util.ObjToString(obj["subtype"]) == "拟建" || util.ObjToString(obj["subtype"]) == "采购意向"))) { //新超级订阅非采购意向”和“拟建项目”

+ 1 - 1
src/jfw/modules/app/src/web/staticres/jyapp/big-member/js/unit_portrayal.js

@@ -19,7 +19,7 @@ var vNode = {
       ], false
     ), '#FF9F40']
     return {
-      chartLoading: false,
+      chartLoading: true,
       showAll: false,
       buyer: {
         name: '',

Diferenças do arquivo suprimidas por serem muito extensas
+ 1 - 0
src/web/staticres/common-module/js/bundle.min.js


+ 7 - 4
src/web/staticres/common-module/public/head.js

@@ -8,10 +8,13 @@
     productionMain: /jianyu360\.cn$/g, // 主站
     pcCMS: /jianyu360\.cn\/jycms/g, // pcCMS
   }
-  if (patterns.pcCMS.test(uLocation)) {
-    // 剑鱼PC端CMS专用百度统计
-    hm.src = "https://hm.baidu.com/hm.js?32344152a6d39fdf42b2a171d0a8eab7";
-  } else if (patterns.productionMain.test(host)) {
+  // SEO运营要求百度统计依旧使用主域名代码
+  // if (patterns.pcCMS.test(uLocation)) {
+  //   // 剑鱼PC端CMS专用百度统计
+  //   hm.src = "https://hm.baidu.com/hm.js?32344152a6d39fdf42b2a171d0a8eab7";
+  // } else
+
+  if (patterns.productionMain.test(host)) {
     // 主站百度统计
     hm.src = "https://hm.baidu.com/hm.js?52c42de35032567eb9d7a24a43c84bda";
   } else {

+ 5 - 5
src/web/staticres/enterpriseCertificatio/css/enterpriseCertificatio.css

@@ -238,7 +238,7 @@
   margin-top: 121px;
 }
 
-.system_certificatio h1 {
+.system_certificatio h2 {
   font-style: normal;
   font-weight: 700;
   font-size: 36px;
@@ -309,7 +309,7 @@
   margin-top: 112px;
 }
 
-.credit_authentication h1 {
+.credit_authentication h2 {
   font-style: normal;
   font-weight: 700;
   font-size: 36px;
@@ -447,7 +447,7 @@
   padding-top: 72px;
 }
 
-.awarded_marks h1 {
+.awarded_marks h2 {
   font-style: normal;
   font-weight: 700;
   font-size: 36px;
@@ -586,7 +586,7 @@
   background: linear-gradient(180deg, #E6F1FF 0%, #F0F8FF 100%);
 }
 
-.service_process h1 {
+.service_process h2 {
   font-style: normal;
   font-weight: 700;
   font-size: 36px;
@@ -655,7 +655,7 @@
   padding-top: 72px;
 }
 
-.cooperation h1 {
+.cooperation h2 {
   font-style: normal;
   font-weight: 700;
   font-size: 36px;

Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
src/web/staticres/public-pc/js/detection-min.js


+ 334 - 0
src/web/staticres/public-pc/js/detection.js

@@ -0,0 +1,334 @@
+;(function() {
+  function initSentry() {
+    try {
+      Sentry.init({
+        dsn: "https://ea0521e5b3584ca1879b940c165916e4@jysentry.jydev.jianyu360.cn/3",
+        release: "v8.8.48.2",
+        environment: "produce",
+        sampleRate: 0.01
+      });
+      Sentry.setTag("url", location.href);
+      var id = document.cookie.match(/(^|;)\s*ud_safe\s*=\s*([^;]+)/);
+      Sentry.setUser({id: id && id[2]})
+    } catch (e) {
+      console.warn(e)
+    }
+  }
+  initSentry();
+  /**
+   *  0. 是否需要安装、卸载SW
+   *  1. 全局异常检测
+   *  2. 判断是否需要激活SW刷新页面
+   */
+
+  /**
+   * 初始化sw脚本
+   * @param callback(params) - 回调函数
+   * params.active - 是否注册SW成功
+   * params.update - 是否激活并与SW通信成功
+   * params.remove - 是否移除SW成功
+   */
+  function initServiceWorkerScript (callback = () => {}) {
+    const hasServiceWorker = typeof navigator.serviceWorker !== 'undefined'
+    if (hasServiceWorker) {
+      const runSw = true
+      try {
+        navigator.serviceWorker.register('/sw.js').then((registration) => {
+          if (runSw) {
+            try {
+              registration.active.postMessage({
+                type: 'update-sw-cache'
+              })
+              callback({
+                active: true,
+                update: true
+              })
+            } catch (err) {
+              console.warn(err)
+              callback({
+                active: true,
+                update: false
+              })
+            }
+          } else {
+            registration.unregister().then(() => {
+              callback({
+                active: false,
+                remove: true
+              })
+            })
+          }
+        }).catch((err) => {
+          console.warn(err)
+          callback({
+            active: false
+          })
+        })
+      } catch (err) {
+        console.warn(err)
+        callback({
+          active: false
+        })
+      }
+    } else {
+      callback({
+        active: false
+      })
+    }
+  }
+
+  // initServiceWorkerScript()
+
+  let appendCDNDialogState = false
+  // 插入弹窗 Node
+  function addCDNDialogNode (content, confirm = false) {
+    //console.log('[cdn]', 'add', content, confirm)
+    if (!appendCDNDialogState) {
+      const cdnStyle = document.createElement('style')
+      cdnStyle.innerHTML = `
+    .cdn-tip--dialog.show.action-tip .tip-button--submit {
+      display: none;
+    }
+    .cdn-tip--dialog.show,
+    .cdn-tip--dialog.show button{
+      display: inline-block;
+    }
+    .cdn-tip--dialog {
+      position: fixed;
+      top: 20%;
+      left: 50%;
+      transform: translateX(-50%);
+      display: none;
+      box-shadow: 0 0 2px 1px #e0e0e0;
+      border-radius: 8px;
+      background: #FFF;
+      padding: 32px;
+      color: #686868;
+      text-align: center;
+      font-size: 14px;
+      font-style: normal;
+      font-weight: 400;
+      line-height: 22px;
+    }
+    .cdn-tip--dialog button.tip-button--submit {
+      background: #2ABED1;
+      color: #FFF;
+    }
+    .cdn-tip--dialog button {
+      display: none;
+      border-radius: 6px;
+      width: 132px;
+      height: 36px;
+      flex-shrink: 0;
+      line-height: 36px;
+      border: none;
+      margin: 6px;
+      cursor: pointer;
+    }
+`
+      document.head.appendChild(cdnStyle)
+    }
+    appendCDNDialogState = true
+
+    const CDNDialogNode = document.querySelector('#cdn-tip')
+    const hasCDNDialog = Boolean(CDNDialogNode)
+    if (hasCDNDialog) {
+      if (confirm) {
+        CDNDialogNode.classList.remove('action-tip')
+      } else {
+        CDNDialogNode.classList.add('action-tip')
+      }
+      document.querySelector('#cdn-tip p').innerHTML = content
+      return
+    }
+
+    const cdnStyle = document.createElement('style')
+    cdnStyle.innerHTML = `
+    <style>
+
+    .cdn-tip--dialog.show.action-tip .tip-button--submit {
+      display: none;
+    }
+    .cdn-tip--dialog.show,
+    .cdn-tip--dialog.show button{
+      display: inline-block;
+    }
+    .cdn-tip--dialog {
+      min-width: 160px;
+      position: fixed;
+      z-index: 9999;
+      top: 20%;
+      left: 50%;
+      transform: translateX(-50%);
+      display: none;
+      box-shadow: 0 0 2px 1px #e0e0e0;
+      border-radius: 8px;
+      background: #FFF;
+      padding: 24px;
+      color: #686868;
+      text-align: center;
+      font-size: 14px;
+      font-style: normal;
+      font-weight: 400;
+      line-height: 22px;
+    }
+    .cdn-tip--dialog button.tip-button--submit {
+      background: #2ABED1;
+      color: #FFF;
+    }
+    .cdn-tip--dialog button {
+      display: none;
+      border-radius: 6px;
+      width: 132px;
+      height: 36px;
+      flex-shrink: 0;
+      line-height: 36px;
+      border: none;
+      margin: 6px;
+      cursor: pointer;
+    }
+  </style>
+`
+    document.head.appendChild(cdnStyle)
+
+    const cdnNode = document.createElement('div')
+    cdnNode.innerHTML = `
+    <div class="cdn-tip--dialog show ${confirm ? '' : 'action-tip'}" id="cdn-tip">
+      <p>
+        ${content}
+      </p>
+      <div>
+        <button onclick="location.reload()" class="tip-button--submit">刷新重试</button>
+      </div>
+    </div>
+    `
+    if (document.body) {
+      document.body.appendChild(cdnNode)
+    }
+  }
+
+  // 异常资源数组
+  const failedResources = []
+  // 异常域名数组
+  const domains = []
+  // 备用域名映射
+  const BackCDNs = {
+    'cdn-jybx-webtest.jydev.jianyu360.com': 'jybx-webtest.jydev.jianyu360.com',
+    'cdn-ali.jianyu360.cn': 'cdn-ali.jianyu360.com',
+    'cdn-ali2.jianyu360.cn': 'cdn-ali2.jianyu360.com',
+    'cdn-ali3.jianyu360.cn': 'cdn-ali3.jianyu360.com',
+    'cdn-ali4.jianyu360.cn': 'cdn-ali4.jianyu360.com',
+    'cdn-common.jianyu360.cn': 'cdn-common.jianyu360.com'
+  }
+  // 需要检测的域名索引
+  const BackDomains = Object.keys(BackCDNs)
+
+  // 处理异常资源
+  const handleResourceError = (url) => {
+    failedResources.push(url);
+    // 提取域名
+    const domain = new URL(url).hostname
+    if(!domains.includes(domain)) {
+      domains.push(domain)
+    }
+    // 是否存在需要检测的域名
+    if (BackDomains.includes(domain)) {
+      addCDNDialogNode('加载中……')
+    }
+  }
+
+  // 监听错误事件
+  window.addEventListener('error', (e) => {
+    // 脚本错误、图片错误
+    if(e.target.src && (e.target.tagName === 'SCRIPT' || e.target.tagName === 'IMG')) {
+      handleResourceError(e.target.src)
+    }
+
+    // CSS错误
+    if(e.target.href && e.target.tagName === 'LINK') {
+      handleResourceError(e.target.href)
+    }
+  }, true)
+
+  const currentTime = Date.now()
+
+  function sendError (content) {
+    if (window.Sentry && typeof window.Sentry.captureMessage === 'function') {
+      Sentry.captureMessage(content)
+    }
+  }
+
+  window.addEventListener('load', () => {
+    // 页面完全加载完毕
+    // console.log('load Failed resources:', failedResources)
+    // console.log('load Extracted domains:', domains)
+
+    const hasBackCDN = Object.keys(BackCDNs).some(v => domains.includes(v))
+    // console.log('异常域名是否包含备用', hasBackCDN)
+
+    const canNext = domains.length && hasBackCDN
+    // console.log('是否存在可修复的异常域名', canNext)
+
+    if (canNext) {
+      // 存储
+      caches.open('CDN_INSPECT_2SW').then(cache => {
+        cache.put('/CDN-DATA', new Response(JSON.stringify({
+          FailedCDNs: domains,
+          BackCDNs: BackCDNs
+        })))
+      })
+
+      sendError("[CDN] Has wrong cdn: " + domains.join('、'))
+      addCDNDialogNode('加载中……')
+
+      function stopUnlimitedReload (callback) {
+        const saveKey = 'cdn-reload-page--' + location.href
+        const cachePageInfo = JSON.parse(sessionStorage.getItem(saveKey) || '{}')
+
+        const updateCacheAndReload = (updateTime, count, reloadTime) => {
+          cachePageInfo.update = updateTime
+          cachePageInfo.count = count
+          sessionStorage.setItem(saveKey, JSON.stringify(cachePageInfo))
+          setTimeout(() => {
+            callback(true)
+          }, reloadTime)
+        }
+
+        if (cachePageInfo && cachePageInfo.update) {
+          const lastUpdateState = currentTime - cachePageInfo.update < 4000
+          if (lastUpdateState) {
+            if (cachePageInfo.count < 3) {
+              cachePageInfo.count++
+              updateCacheAndReload(currentTime, cachePageInfo.count, 1000 + (100 * cachePageInfo.count))
+            } else {
+              callback(false)
+            }
+          } else {
+            updateCacheAndReload(currentTime, 1, 1000)
+          }
+        } else {
+          updateCacheAndReload(currentTime, 1, 1000)
+        }
+      }
+
+      initServiceWorkerScript( function (params) {
+        //console.log('[cdn]', params, 'params')
+        if (params.active) {
+          sendError("[CDN] Supported")
+          stopUnlimitedReload(function (state) {
+            //console.log('[cdn]', 'state', state)
+            if (state) {
+              location.reload()
+            } else {
+              sendError("[CDN] Need update Supported")
+              addCDNDialogNode('抱歉,当前故障暂无法自动修复<br>请联系剑鱼标讯客服(400-108-6670)帮您尽快解决', true)
+            }
+          })
+        } else {
+          sendError("[CDN] Not supported")
+          addCDNDialogNode('抱歉,当前故障暂无法自动修复<br>请联系剑鱼标讯客服(400-108-6670)帮您尽快解决')
+        }
+      })
+    }
+  })
+})();

+ 115 - 0
src/web/staticres/sw-origin.js

@@ -0,0 +1,115 @@
+/**
+ * log
+ * @param params
+ */
+function log (...params) {
+  console.warn('[sw log]:', ...params)
+}
+
+/**
+ * 根据 Key 读取缓存
+ * @param key
+ * @return {Promise<any>}
+ */
+async function getCacheShareData (key = 'CDN_INSPECT_2SW') {
+  return await caches.open(key).then(async cache => {
+    const res = await cache.match('/CDN-DATA')
+    const data = await res?.json() || {}
+    log(`get ${key} data`, data)
+    return data
+  });
+}
+
+/**
+ * 设置缓存
+ * @param data
+ * @param key
+ */
+function setCacheShareData (data, key = 'CDN_INSPECT_2PAGE') {
+  // 写入缓存
+  caches.open(key).then(cache => {
+    cache.put('/CDN-DATA', new Response(JSON.stringify(data)))
+  })
+}
+
+/**
+ * 防抖
+ * @param func
+ * @param delay
+ * @return {(function(...[*]): void)|*}
+ */
+function debounce(func, delay) {
+  let timerId;
+
+  return function(...args) {
+    if (timerId) {
+      clearTimeout(timerId);
+    }
+
+    timerId = setTimeout(() => {
+      func.apply(this, args);
+      timerId = null;
+    }, delay);
+  }
+}
+
+// 全局缓存数据
+let data = {}
+// 已拦截的CDN
+const ProxyCDNS = []
+const version = 'v8.2.1'
+
+/**
+ * 更新缓存 data 值
+ * @type {(function(...[*]): void)|*}
+ */
+const getData = debounce(async function () {
+  data = await getCacheShareData()
+  log('get cache data: ', data)
+}, 1000)
+
+/**
+ * 生命周期
+ */
+self.addEventListener('install', () => {
+  log(`install script ${version}`)
+  self.skipWaiting()
+});
+
+self.addEventListener('activate',() => {
+  log('activate')
+  getData()
+})
+
+self.addEventListener('message', event => {
+  const message = event.data
+  if (message.type === 'update-sw-cache') {
+    log('update cache')
+    getData()
+  }
+})
+
+
+self.addEventListener('fetch',(event) => {
+  getData()
+  // TODO 清除缓存逻辑
+  const {
+    FailedCDNs = [],
+    BackCDNs = {}
+  } = data || {}
+  log('(Cache)', data)
+
+  const url = new URL(event.request.url)
+  const domain = url.hostname;
+  log(`(Fetch) ${domain} -- ${url}`)
+
+  if(FailedCDNs.includes(domain) && BackCDNs[domain]) {
+    url.hostname = BackCDNs[domain];
+    log(`(Proxy) ${domain} -- ${url}`)
+    if (!ProxyCDNS.includes(domain)) {
+      ProxyCDNS.push(domain)
+      setCacheShareData(ProxyCDNS)
+    }
+    event.respondWith(fetch(url))
+  }
+})

Diferenças do arquivo suprimidas por serem muito extensas
+ 1 - 0
src/web/staticres/sw.js


+ 2 - 1
src/web/templates/common/pnc.html

@@ -12,7 +12,8 @@
 <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/css/unicorn.main.css" />
 <link rel="stylesheet" href="{{Msg "seo" "cdn"}}/css/unicorn.grey.css" />
 <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/public-pc/css/sub-page.css?v={{Msg "seo" "version"}}' />
-
+<script src="/common-module/js/bundle.min.js" crossorigin="anonymous"></script>
+<script src='/public-pc/js/detection-min.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Msg "seo" "cdn"}}/common-module/js/JianyuIframe.umd.min.js?v={{Msg "seo" "version"}}'></script>
 <script src="https://cdn-common.jianyu360.com/cdn/lib/jquery/3.6.0/jquery.min.js"></script>
 <script>

+ 1 - 1
src/web/templates/pc/dataSmt/list.html

@@ -223,7 +223,7 @@
     //获取输入的词
     var name = $('#dataMartForm .ser').val().replace(/\s+/g, "")
     //获取框里边的值
-    var liArr=$(".list_content ul  li.item  h1")
+    var liArr=$(".list_content ul  li.item  .title")
     for (let i = 0; i <liArr.length ; i++) {
       var value= $(liArr[i]).text()
       if (value.indexOf(name) !== -1) {

+ 1 - 1
src/web/templates/pc/jyblog.html

@@ -113,7 +113,7 @@
 			<img src="{{if (index $v "s_pic1")}}{{index $v "s_pic1"}}{{else}}/images/services/default.png{{end}}"/>
 		</div>
 		<div class="jyblog_rightcont">
-			<h1 class="jyblog_title"><a target="_blank" >{{index $v "s_title"}}</a></h1>
+			<h2 class="jyblog_title"><a target="_blank" >{{index $v "s_title"}}</a></h2>
 			<div class="jyblog_date">文/<span>{{index $v "s_author"}}</span>
 			<span>{{if eq (index $v "releasetime") ""}}{{index $v "l_createdate"}}{{else}}{{index $v "releasetime"}}{{end}}</span></div>
 			<div class="jyblog_description">{{index $v "s_description"}}...</div>

Alguns arquivos não foram mostrados porque muitos arquivos mudaram nesse diff