Просмотр исходного кода

Merge branch 'feature/v4.8.83' into dev/v4.8.83_rjj

renjiaojiao 1 год назад
Родитель
Сommit
db8d85c73a
34 измененных файлов с 477 добавлено и 110 удалено
  1. 14 0
      src/index.yaml
  2. 1 0
      src/jfw/tag/a_init.go
  3. 11 1
      src/jfw/tag/util.go
  4. 42 28
      src/web/staticres/css/pc.css
  5. 4 3
      src/web/staticres/frontRouter/pc/cooperation/css/index.css
  6. BIN
      src/web/staticres/images/header/jy-logo-130_34.png
  7. 90 8
      src/web/staticres/js/ent-search-index-pc.js
  8. 7 9
      src/web/staticres/js/index/index_2023.12.js
  9. 37 2
      src/web/staticres/js/index/index_swiper.js
  10. 3 0
      src/web/staticres/js/login.js
  11. 42 6
      src/web/staticres/js/pur-search-index-pc.js
  12. 34 0
      src/web/staticres/js/selector/area-city-pc.js
  13. 2 2
      src/web/staticres/landingpage/css/AppDownload.css
  14. 52 8
      src/web/staticres/pccss/index_pc.css
  15. 9 3
      src/web/staticres/public-pc/css/header-nav-mini.css
  16. 59 0
      src/web/staticres/public-pc/css/pc-header-nav-second.css
  17. 6 0
      src/web/staticres/public-pc/js/header-nav-mini.js
  18. 1 1
      src/web/templates/common/friend-link.html
  19. 3 3
      src/web/templates/common/pc-header-nav-mini.html
  20. 17 0
      src/web/templates/common/pc-header-nav-second.html
  21. 9 7
      src/web/templates/common/pcbottom.html
  22. 1 0
      src/web/templates/frontRouter/pc/AppDownload/free/index.html
  23. 1 0
      src/web/templates/frontRouter/pc/InformationDistribution/free/index.html
  24. 1 0
      src/web/templates/frontRouter/pc/biddingProject/free/index.html
  25. 2 2
      src/web/templates/pc/entsearchindex.html
  26. 3 3
      src/web/templates/pc/newIndex.html
  27. 1 1
      src/web/templates/pc/pursearchindex.html
  28. 1 1
      src/web/templates/pc/template/index/banner-module-27.html
  29. 1 1
      src/web/templates/pc/template/index/cms-card-deep.html
  30. 5 5
      src/web/templates/pc/template/index/data-service-module.html
  31. 1 1
      src/web/templates/pc/template/index/ent-service-module.html
  32. 1 1
      src/web/templates/pc/template/index/hot-buyer-card.html
  33. 7 7
      src/web/templates/pc/template/index/search-module.html
  34. 9 7
      src/web/templates/pc/template/index/user-info-card.html

+ 14 - 0
src/index.yaml

@@ -97,6 +97,20 @@ topMenu:
       - name: 招标项目管理
         href: /front/entServerTransfer/tbxmgl
 
+topMenuSpecial:
+  - name: 招标公告
+    href: /list/stype/ZBGG.html
+  - name: 招标结果
+    href: /list/stype/ZBGG.html
+  - name: 采购意向
+    href: /list/stype/CGYX.html
+  - name: 企业直采
+    href: /list/stype/QYZC.html
+  - name: 热门项目
+    href: /list/rmxm/
+  - name: 市场分析
+    href: /big/page/sc
+
 # 区位配置
 areaLocation:
   - name: 华北

+ 1 - 0
src/jfw/tag/a_init.go

@@ -17,4 +17,5 @@ func init() {
 	xweb.RootApp().AddTmplVar("ParseHtmlAttr", ParseHtmlAttr)
 	xweb.RootApp().AddTmplVar("Export", Export)
 	xweb.RootApp().AddTmplVar("GetAreaLocations", GetAreaLocations)
+	xweb.RootApp().AddTmplVar("GetTopMenuSpecial", GetTopMenuSpecial)
 }

+ 11 - 1
src/jfw/tag/util.go

@@ -40,7 +40,10 @@ type AreaDom struct {
 	Url   string `json:"url"`
 }
 
-var JyAreaLocation []*AreaLocation
+var (
+	JyAreaLocation   []*AreaLocation
+	JyTopMenuSpecial []map[string]interface{}
+)
 
 var initAreaLocations = func() []*AreaLocation {
 	var jyAreaLocation []*AreaLocation
@@ -63,3 +66,10 @@ func GetAreaLocations() []*AreaLocation {
 	}
 	return JyAreaLocation
 }
+
+func GetTopMenuSpecial() []map[string]interface{} {
+	if len(JyTopMenuSpecial) == 0 {
+		return g.Cfg("index").MustGet(context.Background(), "topMenuSpecial").Maps()
+	}
+	return JyTopMenuSpecial
+}

+ 42 - 28
src/web/staticres/css/pc.css

@@ -1991,12 +1991,16 @@ form{
   background: rgba(255, 255, 255, 0.12);
   z-index: 9;
 }
-.jy_classify_l dl{
-	margin-right: 40px;
+.jy_classify_l .jy_classify_column{
+	display: flex;
+	flex-shrink: 0;
+	flex-direction: column;
+	padding: 0 40px;
+	border-right: 1px solid #E0E0E0;
 	/* flex: 1; */
 }
-.jy_classify_l dl dt,
-.jy_classify_l dl dt > a{
+.jy_classify_l .jy_classify_column .jy_classify_column_header,
+.jy_classify_l .jy_classify_column .jy_classify_column_header > a{
 	font-size: 14px;
 	color: rgba(255,255,255,.8);
 	line-height: 22px;
@@ -2004,29 +2008,34 @@ form{
   white-space: nowrap;
   font-weight: 400;
 }
-.jy_classify_l dl dt > a:hover{
+.jy_classify_l .jy_classify_column .jy_classify_column_header > a:hover{
   text-decoration: none;
   color: #2cb7ca;
 }
-
-.jy_classify_l dl dd{
+.jy_classify_l .jy_classify_column_content {
+	display: flex;
+	flex-direction: column;
+	/* flex-wrap: wrap;
+	max-height: 128px; */
+}
+.jy_classify_l .jy_classify_column .jy_classify_column_content_item{
 	position: relative;
 }
-.jy_classify_l dl dd a{
+.jy_classify_l .jy_classify_column .jy_classify_column_content_item a{
 	display: block;
 	font-size: 12px;
 	color: rgba(255,255,255,.6);
 	line-height: 20px;
 	white-space: nowrap;
 }
-.jy_classify_l dl dd a:hover{
+.jy_classify_l .jy_classify_column .jy_classify_column_content_item a:hover{
 	text-decoration: none;
 	color: #2cb7ca;
 }
-.jy_classify_l dl dd:hover .jy_community{
+.jy_classify_l .jy_classify_column .jy_classify_column_content_item:hover .jy_community{
 	display: block;
 }
-.jy_classify_l dl dd .jy_community{
+.jy_classify_l .jy_classify_column .jy_classify_column_content_item .jy_community{
 	display: none;
 	position: absolute;
 	right: -130px;
@@ -2036,12 +2045,12 @@ form{
 	width: 120px;
 	padding: 10px 10px 5px;
 }
-.jy_classify_l dl dd .jy_community p{
+.jy_classify_l .jy_classify_column .jy_classify_column_content_item .jy_community p{
 	color: #1d1d1d;
 	font-size: 14px;
 	text-align: center;
 }
-.jy_classify_l dl dd .jy_community img{
+.jy_classify_l .jy_classify_column .jy_classify_column_content_item .jy_community img{
 	width: 100px;
 }
 .jy_classify_r .jy_classify_kefu{
@@ -2185,6 +2194,7 @@ form{
 }
 .jy_renzheng div a{
   display: inline-block;
+  font-size: inherit;
 }
 .jy_renzheng div{
 	width: 1200px;
@@ -5382,39 +5392,43 @@ h6 {
   width: 100%;
 }
 
-.body-footer.theme-light {
+.body-footer .j-bottom.theme-light {
+	border-top: none;
+}
+.j-bottom.theme-light,
+.friend-link-container.theme-light {
 	border-top: 1px solid #E3E4E5;
 }
-.body-footer.theme-light .jy_friendlink {
+.friend-link-container.theme-light .jy_friendlink {
 	border-bottom-color: #e0e0e0;
 }
-.body-footer.theme-light .friend-link-container,
-.body-footer.theme-light .j-bottom {
+.friend-link-container.theme-light,
+.j-bottom.theme-light {
 	background-color: #F7F9FC;
 }
-.body-footer.theme-light .jy_renzheng {
+.j-bottom.theme-light .jy_renzheng {
 	background-color: #fff;
 	border-top: 1px solid #E3E4E5;
 }
-.body-footer.theme-light .friendlink-href,
-.body-footer.theme-light .friendlink-href:hover,
-.body-footer.theme-light .jy_classify_l dl dd a,
-.body-footer.theme-light .jy_renzheng div {
+.friend-link-container.theme-light .friendlink-href,
+.friend-link-container.theme-light .friendlink-href:hover,
+.j-bottom.theme-light .jy_classify_l .jy_classify_column .jy_classify_column_content_item a,
+.j-bottom.theme-light .jy_renzheng div {
 	color: #686868;
 }
-.body-footer.theme-light .jy_friendlink_title,
-.body-footer.theme-light .jy_classify_l dl dt,
-.body-footer.theme-light .jy_classify_l dl dt > a {
+.friend-link-container.theme-light .jy_friendlink_title,
+.j-bottom.theme-light .jy_classify_l .jy_classify_column .jy_classify_column_header,
+.j-bottom.theme-light .jy_classify_l .jy_classify_column .jy_classify_column_header > a {
 	color: #1d1d1d;	
 }
-.body-footer.theme-light .jy_classify_r .jy_classify_kefu span {
+.j-bottom.theme-light .jy_classify_r .jy_classify_kefu span {
 	color: #1d1d1d;
 	background: url(/images/pc/phone-black@2x.png) no-repeat left center;
 	background-size: 24px;
 }
-.body-footer.theme-light .jy_classify_kefu .logo-light {
+.j-bottom.theme-light .jy_classify_kefu .logo-light {
 	display: none;
 }
-.body-footer.theme-light .jy_classify_kefu .logo-main {
+.j-bottom.theme-light .jy_classify_kefu .logo-main {
 	display: block;
 }

+ 4 - 3
src/web/staticres/frontRouter/pc/cooperation/css/index.css

@@ -14,14 +14,15 @@
 .cooperation-page-banner .banner-content .text-theme{
   margin-top: 84px;
   width: 385px;
-  height: 44px;
+  height: 32px;
 }
 .text-partner{
+  margin-top: 20px;
   width: 480px;
-  height: 82px;
+  height: 46px;
 }
 .text-title{
-  margin-top: 4px;
+  margin-top: 26px;
   font-size: 28px;
   color: #383838;
 }

BIN
src/web/staticres/images/header/jy-logo-130_34.png


+ 90 - 8
src/web/staticres/js/ent-search-index-pc.js

@@ -309,18 +309,32 @@ var entSearch = new Vue({
         this.inIframe = goTemplateData.inIframe
         this.isLogin = !!params.isLogin
         if (this.isLogin) {
-            this.getPower()
+          this.getPower()
         } else {
-            this.doSearch()
+          this.doSearch()
         }
-        this.getQuery()
-        this.initPageData()
-        this.initProvinceMapList()
     },
     mounted: function () {
+        const entdata = sessionStorage.getItem('entdata')
+        if(entdata) {
+          const {filterState, listState, searchContent} = JSON.parse(entdata)
+          this.filterState = filterState
+          this.listState = listState
+          this.searchContent = searchContent
+          const proviceCity = {
+            province: this.filterState.entArea,
+            city: this.filterState.entCity,
+          }
+          this.$refs.areaCityFilter.setStateData(proviceCity)
+          sessionStorage.removeItem('entdata')
+        } else {
+          this.getQuery()
+          this.initPageData()
+          this.initProvinceMapList()
+        }
         this.initDOMEvents()
-        // 默认选中搜索范围
-        this.$refs.searchType.setState(this.filterState.searchType)
+        this.filterEcho(this.filterState)
+        
         // 全选按钮逻辑
         // this.searchTypeChange([], true)
         this.industryTab()
@@ -340,7 +354,76 @@ var entSearch = new Vue({
         // }
     },
     methods: {
+        // 筛选条件回显
+        filterEcho: function (data) {
+          const filterLabel = [
+            'searchType',
+            'entCapital',
+            'entType',
+            'entState',
+            'entTime',
+          ]
+          filterLabel.forEach(item => {
+            if (data[item] && data[item].length) {
+              if(item ==='entCapital') {
+                // 注册资本输入框是否有值
+                const writePrice = this.priceList.filter(f => {
+                  return data[item].some(v => f.value === v);
+                });
+                if(!writePrice.length) {
+                  console.info(data[item][0])
+                  const priceData = data[item][0].split('-')
+                  priceData.sort((a, b) => a - b)
+                  const min = priceData[0]
+                  const max = priceData[1]
+                  this.$refs.priceRef.setState(min, max)
+                  this.inputStatus = true
+                  this.$refs[item].setState([0])
+                } else {
+                  this.$refs[item].setState(data[item])
+                }
+              } else {
+                this.$refs[item].setState(data[item])
+              }
+            }
+            if(item === 'entTime') {
+              const thisList = []
+              data['establish'].forEach(item => {
+                if (item === '-1y') {
+                  thisList.push('A');
+                } else if (item === '1y-3y') {
+                  thisList.push('B');
+                } else if (item === '3y-5y') {
+                  thisList.push('C');
+                } else if (item === '5y-10y') {
+                  thisList.push('D');
+                } else if (item === '10y-') {
+                  thisList.push('E');
+                } else {
+                  // 回显时间输入框
+                  this.focusColor = true;
+                  thisList.push('0')
+                  const timeData = item.split('-')
+                  timeData[0] = timeData[0] + '000'
+                  timeData[1] = timeData[1] + '000'
+                  this.startTimeChange(parseInt(timeData[0]))
+                  this.endTimeChange(parseInt(timeData[1]))
+                }
+              })
+              this.$refs[item].setState(thisList)
+            }
+            if(item === 'entState') {
+              this.$refs[item].setState(data['entStatus'])
+            }
+          })
+        },
         goWorkSpace: function () {
+          const saveData = {
+            filterState: this.filterState,
+            listState: this.listState,
+            searchContent: this.searchContent
+          }
+          sessionStorage.setItem('entdata',  JSON.stringify(saveData))
           var goHref = location.origin + '/jylab/entSearch/index.html'
           window.location.replace('/page_workDesktop/work-bench/page?link=' + encodeURIComponent(goHref))
         },
@@ -844,7 +927,6 @@ var entSearch = new Vue({
 
             this.listState.loading = true
             this.listState.loaded = false
-
             $.ajax({
                 url: '/publicapply/enterpriseSearch/doQuery',
                 method: 'POST',

+ 7 - 9
src/web/staticres/js/index/index_2023.12.js

@@ -2,7 +2,7 @@ var _page = {
   searchInput: $('.index-search-container .search-input'),
   searchConfMap: {
     zb: {
-      placeholder: '请输入您想要查询的招标信息,多个关键词用空格隔开',
+      placeholder: '请输入搜项目名称等关键词,例如:医疗设备',
       target: '/jylab/supsearch/index.html',
     },
     qy: {
@@ -19,8 +19,8 @@ var _page = {
     },
   },
   init: function () {
+    headerNavMini.changeHeaderPlaceholder(true)
     this.initEvents()
-    this.changeBottomTheme()
     this.initHotBuyerShortName()
     this.initHotIndustryTwoLine()
   },
@@ -61,6 +61,7 @@ var _page = {
       if (conf) {
         var url = conf.target
         if (dataId == 'zb') {
+          // /jylab/supsearch/index.html?keywords=&searchvalue=&selectType=title%2Ccontent
           targetUrl = url + '?keywords=' + searchValue + '&selectType=title'
         } else if (dataId == 'qy') {
           targetUrl = url + '?searchvalue=' + searchValue
@@ -118,13 +119,10 @@ var _page = {
       $('.hot-industry [data-simple-hidden]').addClass('hidden')
     })
 
-    $('.hot-industry .more').on('click', function () {
-      $(this).parents('.industry-aside-item-content').find('[data-simple-hidden]').removeClass('hidden')
-      $(this).hide()
-    })
-  },
-  changeBottomTheme: function () {
-    $('.body-footer').addClass('theme-light')
+    // $('.hot-industry .more').on('click', function () {
+    //   $(this).parents('.industry-aside-item-content').find('[data-simple-hidden]').removeClass('hidden')
+    //   $(this).hide()
+    // })
   },
   // 获取第二行最后一个元素
   getLine2LastDom: function ($container, $items) {

+ 37 - 2
src/web/staticres/js/index/index_swiper.js

@@ -15,6 +15,7 @@ var pageSwiper = {
     }
     this.partnersInit()
     this.initGongYingShangList()
+    this.initDataServiceScrollList()
   },
   initSwiper: function (id) {
     // banner广告位轮播
@@ -57,11 +58,45 @@ var pageSwiper = {
       direction: 'vertical',
       speed: 800,
       autoplay: {
-        delay: 5000
+        delay: 10000
       },
       loop: true,
     });
-  }
+  },
+  // 数据服务专区-热门采购数据
+  initDataServiceScrollList: function () {
+    var $container = $('.data-service-module .service-tags-main')
+    var $list = $('.data-service-module .service-tags-list')
+    // 容器高度
+    var viewportH = $container.innerHeight()
+    // 列表高度
+    var $listH = $list.height()
+    // 初始化页码1
+    var pageNum = 1
+    $container.attr('data-page-num', pageNum)
+    // 总共能滚动多少页
+    var pageTotal = Math.ceil($listH / viewportH)
+    // 每页距离
+    var pageSize = viewportH
+    pageSize = ($('.data-service-module .service-tags-item').height() + 8) * 4
+
+    function next () {
+      var pN = $container.attr('data-page-num') - 0 || pageNum
+      var px = (pageNum - 1) * pageSize
+      $list.css({
+        transform: 'translateY(-'+ px +'px)'
+      })
+      if (pN >= pageTotal) {
+        // 重置
+        pageNum = 1
+      } else {
+        // 页码++
+        pageNum++
+      }
+      $container.attr('data-page-num', pageNum)
+    }
+    setInterval(next, 10000)
+  },
 }
 $(function () {
   pageSwiper.init()

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

@@ -823,6 +823,9 @@ var haslogin = function(num,kyorpn,url){
         try {
           loginCallback()
         } catch (e) {}
+        try {
+          headerNavMini.checkLogin(true)
+        } catch (e) {}
   
         encryptId = data.encryptId
         if(data.s_nickname!=null&&data.s_nickname.length>11){

+ 42 - 6
src/web/staticres/js/pur-search-index-pc.js

@@ -214,14 +214,17 @@ var vm = new Vue({
       // this.qyCustmer()
       // this.jobRange()
       this.initPageData()
-      this.getList()
     },
     mounted: function () {
-        this.initCollectEvent()
-        this.initDOMEvents()
-        ewmMoveHover()
-        this.$on('updatescope', function(data) {
-            this.setData.keyList = data
+        this.filterEcho()
+        this.$nextTick(() => {
+          this.getList()
+          this.initCollectEvent()
+          this.initDOMEvents()
+          ewmMoveHover()
+          this.$on('updatescope', function(data) {
+              this.setData.keyList = data
+          })
         })
         /**
          * 初始化页面搜索框与工作台顶部搜索联动事件函数,详情见对应函数 common.js
@@ -240,6 +243,22 @@ var vm = new Vue({
     },
     methods: {
         goWorkSpace: function () {
+          // 不在工作台,添加缓存
+          if(!this.inIframe) {
+            let obj = {
+              buyerName: this.searchContent.trim(),
+              province: this.area.province,
+              city: this.area.city,
+              buyerClass: this.buyerClassArr,
+              isCheckFollow: this.isLogin ? true : false,
+              isCheckReceive: this.isLogin ? true : false,
+              isContact: this.buyerPhoneState,
+              pageSize: this.listState.pageSize,
+              pageNum: this.listState.pageNum,
+            }
+            obj.buyerClassObj = this.buyerClassObj
+            sessionStorage.setItem('purParams', JSON.stringify(obj))
+          }
           var goHref = location.origin + '/jylab/purSearch/index.html'
           window.location.replace('/page_workDesktop/work-bench/page?link=' + encodeURIComponent(goHref))
         },
@@ -627,6 +646,23 @@ var vm = new Vue({
               seoTdkUpdate(_title, _keywords, _desc)
             } catch (error) {}
         },
+        filterEcho: function (val) {
+          let purParams = sessionStorage.getItem('purParams')
+          if(purParams) {
+            purParams = JSON.parse(purParams)
+            this.searchContent = purParams.buyerName.trim()
+            this.area.province = purParams.province
+            this.area.city = purParams.city
+            this.$refs.areaCityFilter.setStateData(this.area)
+            this.buyerClassArr = purParams.buyerClass
+            this.isLogin = purParams.isCheckFollow
+            this.buyerPhoneState = purParams.isContact
+            this.listState.pageSize = purParams.pageSize
+            this.listState.pageNum = purParams.pageNum
+            this.buyerClassObj = purParams.buyerClassObj
+            sessionStorage.removeItem('purParams')
+          }
+        },
         getList: function () {
             let obj = {
               buyerName: this.searchContent.trim(),

+ 34 - 0
src/web/staticres/js/selector/area-city-pc.js

@@ -466,6 +466,40 @@ var areaCityComponent = {
             }
             this.getSelectedTagList(data)
         },
+        // 回显省份城市数据
+        // data数据格式:{province: ['北京'], city: ['郑州', '洛阳']}
+        setStateData: function (data) {
+          if(data) {
+            if(data.province.length > 0 || data.city.length > 0) {
+              this.provinceListMap['#'][0].selectedState = ''
+            }
+          }
+          for (var key in this.provinceListMap) {
+            this.provinceListMap[key].forEach(function (item) {
+              if(data.province.length > 0) {
+                data.province.forEach(v => {
+                  if(v === item.name) {
+                    item.selectedState = 'checked'
+                  }
+                })
+                
+              }
+              // 当前被选中的城市数量
+              item.children.forEach(function (iitem) {
+                if(data.city.length > 0) {
+                  data.city.forEach(v => {
+                    if(v === iitem.city) {
+                      iitem.selected = true
+                      item.selectedState = 'half'
+                    }
+                  })
+                }
+              })
+            })
+          }
+          this.selectedCity = this.getSelectedCity()
+          this.getSelectedTagList(this.selectedCity)
+        },
         // 获取当前选中城市数据
         getSelectedCity: function () {
             var counter = {}

+ 2 - 2
src/web/staticres/landingpage/css/AppDownload.css

@@ -61,14 +61,14 @@
   width: 116px;
   height: 116px;
 }
-.qr-text{
+.AppDownload .qr-text{
   font-size: 14px;
   line-height: 20px;
   color: #1D1D1D;
   text-align: center;
   margin-top: 4px;
 }
-.head-desc{
+.AppDownload .head-desc{
 font-size: 36px;
 font-weight: 400;
 line-height: 48px;

+ 52 - 8
src/web/staticres/pccss/index_pc.css

@@ -19,6 +19,23 @@
     padding-right: 20px;
 }
 
+.banner-remark {
+    position: relative;
+}
+.banner-remark::after {
+    content: '广告';
+    padding: 2px 8px;
+    position: absolute;
+    left: 0;
+    top: 0;
+    border-radius: 8px 0px;
+    background: rgba(29,29,29,0.5);
+    color: #FFF;
+    text-align: center;
+    font-size: 12px;
+    line-height: 18px;
+}
+
 .main-module {
     padding-top: 20px;
     font-size: 14px;
@@ -162,7 +179,7 @@
 /* no-login */
 .user-info-card {
     margin-bottom: 40px;
-    height: 328px;
+    min-height: 328px;
     border-radius: 4px;
 }
 .user-info-card img {
@@ -234,18 +251,25 @@
 }
 .user-info-card .user-power-item {
     position: relative;
+    width: 96px;
+    width: 33.32%;
+    height: 74px;
+}
+.user-info-card .user-power-item-link {
     display: flex;
     align-items: center;
     justify-content: center;
     flex-direction: column;
-    width: 96px;
-    width: 33.32%;
-    height: 74px;
+    width: 100%;
+    height: 100%;
     color: #999;
     text-align: center;
     font-size: 12px;
     line-height: 18px;
 }
+.user-info-card .user-power-item-link:hover {
+    text-decoration: none;
+}
 /* 除了最后3个之外,其他的 */
 .user-info-card .user-power-item:not(:nth-last-of-type(-n+3)) {
     border-bottom: 1px solid #ECECEC;
@@ -258,7 +282,6 @@
     width: 32px;
     height: 32px;
     margin-bottom: 4px;
-    background-color: #f8f8f8;
 }
 .user-info-card .user-power-item-icon img {
     display: block;
@@ -396,6 +419,7 @@
 }
 .hot-key-list {
     display: flex;
+    max-width: 550px;
 }
 .hot-key-list .hot-key-item {
     margin-right: 12px;
@@ -608,9 +632,12 @@
 .swiper-module-12,
 .swiper-module-21 {
     width: 100%;
-    max-height: 80px;
+    height: 80px;
     overflow: hidden;
 }
+.swiper-module-12 .swiper-container {
+    height: 100%;
+}
 .swiper-module-21 {
     max-width: 892px;
 }
@@ -710,7 +737,7 @@
 }
 
 #good-supplier-card .notice-card-content {
-    height: 610px;
+    height: 566px;
     overflow: hidden;
 }
 
@@ -823,6 +850,9 @@
     line-height: 22px;
     box-shadow: 0px -1px 0px 0px rgba(0, 0, 0, 0.05) inset;
 }
+.buyer-list-cell-title {
+    max-width: 340px;
+}
 .buyer-list-cell-title a {
     font-size: 16px;
     line-height: 22px;
@@ -882,6 +912,9 @@
     line-height: 24px;
     border-radius: 4px;
 }
+.service-desc-button:hover {
+    text-decoration: none;
+}
 .service-desc-button.s-main {
     color: #2ABED1;
     background: rgba(42, 190, 209, 0.08);
@@ -925,8 +958,9 @@
     width: 288px;
 }
 .data-service-module .service-tags-main {
+    max-height: 122px;
+    overflow: hidden;
     margin-top: 10px;
-    padding-bottom: 12px;
     border-bottom: 1px solid #e0e0e0;
 }
 .data-service-module .service-desc-footer {
@@ -935,6 +969,7 @@
 .data-service-module .service-tags-list {
     display: flex;
     flex-wrap: wrap;
+    transition: transform 0.5s ease;
 }
 .data-service-module .service-tags-item {
     margin-right: 8px;
@@ -945,6 +980,7 @@
 }
 .data-service-module .service-desc-button:not(:last-of-type) {
     margin-bottom: 16px;
+    margin-bottom: 20px;
 }
 /* hot-chart */
 .data-service-module .hot-industry-year-chart {
@@ -973,6 +1009,7 @@
 
 .bidding-desc-module .bidding-desc-content-card-list {
     width: 100%;
+    max-width: 892px;
 }
 
 .bidding-desc-module .bidding-desc-content-card-list .cms-card-list-item {
@@ -1104,3 +1141,10 @@
     margin-right: 20px;
     margin-bottom: 10px;
 }
+
+.jianyu-school-card .cms-card-list {
+    padding: 16px 20px;
+}
+.jianyu-school-card .cms-card-list-item:not(:last-of-type) {
+    margin-bottom: 12px;
+}

+ 9 - 3
src/web/staticres/public-pc/css/header-nav-mini.css

@@ -73,6 +73,9 @@ a {
     background-color: transparent;
     cursor: pointer;
 }
+a.j-s-button:hover {
+    text-decoration: none;
+}
 
 .j-s-button.main {
     height: auto;
@@ -129,18 +132,21 @@ a {
 #public-nav {
     height: unset;
 }
-.header-nav-mini {
+.fixed-header {
     position: fixed;
     top: 0;
     left: 0;
     width: 100%;
-    background-color: #F2F2F4;
     z-index: 999;
 }
+.header-nav-mini {
+    background-color: #F2F2F4;
+}
 .header-nav-mini-placeholder {
     height: 52px;
 }
-.header-nav-mini a:hover {
+.header-nav-mini a:hover,
+.header-nav-mini a:focus {
     color: unset;
     text-decoration: none;
 }

+ 59 - 0
src/web/staticres/public-pc/css/pc-header-nav-second.css

@@ -0,0 +1,59 @@
+.pc-header-nav-second {
+ width: 100%;
+}
+.pc-header-nav-second .pc-header-nav-second-head{
+  /* position: fixed;
+  top: 52px;
+  left: 0;
+  width: 100%;
+  z-index: 999; */
+  background-color: #fff;
+  height: 72px;
+
+}
+.header-nav-mini-placeholder {
+  height: 72px;
+}
+.pc-header-nav-second .pc-header-nav-second-head .pc-header-nav-second-head-content{
+  width: 1200px;
+  margin: auto;
+  height: 72px;
+  display: flex;
+  justify-content: space-between;
+}
+.pc-header-nav-second .pc-header-nav-second-head-left{
+  display: flex;
+  align-items: center;
+} 
+.pc-header-nav-second .pc-header-nav-second-head-left img{
+  width: 130px;
+  height: 34px;
+}
+.pc-header-nav-second .pc-header-nav-second-head-left .pc-header-nav-second-head-line{
+  margin-left: 16px;
+  width: 1px;
+  height: 32px;
+  background-color:#e0e0e0;
+}
+.pc-header-nav-second .pc-header-nav-second-head-left .pc-header-nav-second-head-desc{
+  font-size: 14px;
+  font-weight: 400;
+  line-height: 18px;
+  text-align: left;
+  margin-left: 16px; 
+  color: #3E3E3E;
+}
+.pc-header-nav-second .pc-header-nav-second-head-right{
+  display: flex;
+  align-items: center;
+  justify-content: end;
+}
+.pc-header-nav-second .pc-header-nav-second-head-right .pc-header-nav-second-head-right-item{
+font-size: 16px;
+font-weight: 400;
+line-height: 24px;
+margin-left: 24px;
+color: #1D1D1D;
+cursor: pointer;
+text-decoration: none;
+}

+ 6 - 0
src/web/staticres/public-pc/js/header-nav-mini.js

@@ -116,10 +116,16 @@ var headerNavMini = {
       // 登录
       $('.login-show').show()
       $('.no-login-show').hide()
+      // 登陆按钮
+      $('.login-register-button').hide()
+      $('.go-to-workspace').show()
     } else {
       // 未登录
       $('.login-show').hide()
       $('.no-login-show').show()
+      // 登陆按钮
+      $('.login-register-button').show()
+      $('.go-to-workspace').hide()
     }
   },
   changeMenuActive: function (name) {

+ 1 - 1
src/web/templates/common/friend-link.html

@@ -13,7 +13,7 @@
     border-bottom: 1px solid rgba(255,255,255,0.12);
   }
 </style>
-<div class="friend-link-container">
+<div class="friend-link-container theme-light">
   <div class="w jy_friendlink">
     <div class="jy_friendlink_title">友情链接</div>
     <div class="jy_friendlink_content">

+ 3 - 3
src/web/templates/common/pc-header-nav-mini.html

@@ -1,6 +1,6 @@
 <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/public-pc/css/page-img-icons.css?v={{Msg "seo" "version"}}' />
 <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/public-pc/css/header-nav-mini.css?v={{Msg "seo" "version"}}' />
-<section class="header-nav-mini" id="public-nav">
+<section class="header-nav-mini fixed-header" id="public-nav" style="display: none">
     <main class="w header-nav-content">
         <div class="h-nav-c-left flex-row-center">
             <h2 class="nav-home">
@@ -60,8 +60,8 @@
                     </div>
                 </li>
                 <li class="menu-item action-menu">
-                    <button class="login-register-button j-s-button main no-login-show" style="display: none">注册/登录</button>
-                    <a class="j-s-button main login-show" href="/page_workDesktop/" style="display: none">进入工作台</a>
+                    <button class="login-register-button j-s-button main" style="display: none">注册/登录</button>
+                    <a class="go-to-workspace j-s-button main" href="/page_workDesktop/" style="display: none">进入工作台</a>
                 </li>
             </ul>
         </div>

+ 17 - 0
src/web/templates/common/pc-header-nav-second.html

@@ -0,0 +1,17 @@
+<link rel="stylesheet" href='{{Msg "seo" "cdn"}}/public-pc/css/pc-header-nav-second.css?v={{Msg "seo" "version"}}' />
+<section id="pc-header-nav-second" class="pc-header-nav-second">
+ <div class="pc-header-nav-second-head">
+  <div class="pc-header-nav-second-head-content">
+    <div class="pc-header-nav-second-head-left">
+      <img src="{{Msg "seo" "cdn"}}/images/header/jy-logo-130_34.png?={{Msg "seo" "version"}}" alt="">
+      <div class="pc-header-nav-second-head-line"></div>
+      <p class="pc-header-nav-second-head-desc">全国招标信息<br>免费看,不遮挡</p>
+    </div>
+    <div class="pc-header-nav-second-head-right">
+      {{range $menu :=GetTopMenuSpecial}}
+        <a href="{{$menu.href}}" class="pc-header-nav-second-head-right-item">{{$menu.name}}</a>
+      {{end}}
+    </div>
+  </div>
+ </div>
+</section>

+ 9 - 7
src/web/templates/common/pcbottom.html

@@ -1,5 +1,5 @@
 <link rel="stylesheet" href='{{Msg "seo" "cdn"}}/public-pc/css/pc-bottom.css?v={{Msg "seo" "version"}}'>
-<div class="j-bottom" style="display: none">
+<div class="j-bottom theme-light" style="display: none">
 	<div>
 		<div class="jy_proandcify">
       <!-- 友情链接已移到common文件friend-link.html -->
@@ -7,12 +7,14 @@
 				<div class="jy_classify_l">
           {{$BottomLink :=JyBottomLink .Request.URL.Path}}
           {{range $i, $v := $BottomLink.MenuList }}
-            <dl>
-              <dt><a {{if $v.Link}} href="{{$v.Link}}"{{else}} href="javascript:;"{{end}}>{{$v.Title}}</a></dt>
-              {{range $ii,$c := $v.Child }}
-                <dd><a {{if $c.Link}} href="{{$c.Link}}"{{else}} href="javascript:;"{{end}} {{ParseHtmlAttr $c.Attr}}>{{$c.Title}}</a></dd>
-              {{end}}
-            </dl>
+            <section class="jy_classify_column">
+              <div class="jy_classify_column_header"><a {{if $v.Link}} href="{{$v.Link}}"{{else}} href="javascript:;"{{end}}>{{$v.Title}}</a></div>
+              <ul class="jy_classify_column_content clearfix">
+                {{range $ii,$c := $v.Child }}
+                  <li class="jy_classify_column_content_item"><a {{if $c.Link}} href="{{$c.Link}}"{{else}} href="javascript:;"{{end}} {{ParseHtmlAttr $c.Attr}}>{{$c.Title}}</a></dd>
+                {{end}}
+              </ul>
+            </section>
           {{end}}
         </div>
         <div class="jy_classify_r">

+ 1 - 0
src/web/templates/frontRouter/pc/AppDownload/free/index.html

@@ -26,6 +26,7 @@
 <body>
 {{include "/common/pchead.html"}}
 <div class="AppDownload">
+  {{include "/common/pc-header-nav-second.html"}}
   <div class="AppDownload-head">
     <div class="content">
       <h2 class="title-m">亿万级标讯数据实时更新</h2>

+ 1 - 0
src/web/templates/frontRouter/pc/InformationDistribution/free/index.html

@@ -25,6 +25,7 @@
 <body>
 {{include "/common/pchead.html"}}
 <div class="InformationDistribution">
+  {{include "/common/pc-header-nav-second.html"}}
   <section class="Information-head">
     <div class="head_content">
       <div class="text_box">

+ 1 - 0
src/web/templates/frontRouter/pc/biddingProject/free/index.html

@@ -29,6 +29,7 @@
 <!-- 用户留资 -->
 <div id="vue-collect-user-info"></div>
 <div class="biddingProject">
+  {{include "/common/pc-header-nav-second.html"}}
   <div class="biddingProject-head">
     <div class="content">
       <img src="{{Msg "seo" "cdn"}}/landingpage/image/biddingProject/title1.png?v={{Msg "seo" "version"}}" alt="好用易上手" class="title1">

+ 2 - 2
src/web/templates/pc/entsearchindex.html

@@ -257,7 +257,7 @@
                     <div class="selector-card">
                         <div class="selector-card-header">注册地:</div>
                         <div class="selector-card-content">
-                            <area-city-component @change="areaCityChange"></area-city-component>
+                            <area-city-component ref="areaCityFilter" @change="areaCityChange"></area-city-component>
                         </div>
                     </div>
                     <div class="selector-card price">
@@ -269,7 +269,7 @@
                                 :list="priceList"
                                 @change="inexactPriceChange"
                             ></select-list-component>
-                            <price-component class="parent-input-group" :class="{'focus-within': getInputStatus}" @confirm="exactPriceChange"></price-component>
+                            <price-component ref="priceRef" class="parent-input-group" :class="{'focus-within': getInputStatus}" @confirm="exactPriceChange"></price-component>
                         </div>
                     </div>
                     <div class="selector-card">

+ 3 - 3
src/web/templates/pc/newIndex.html

@@ -95,7 +95,7 @@
               <div class="banner-swiper swiper-container" id="new-pc-index-middle-carousel">
                 <div class="swiper-wrapper">
                   {{range $ad := $ad_3}}
-                  <a class="swiper-slide" target="_blank" href="{{$ad.S_link}}">
+                  <a class="swiper-slide banner-remark" target="_blank" href="{{$ad.S_link}}">
                     <img class="img-banner" src='{{$ad.S_pic}}' alt="{{$ad.S_picalt}}">
                   </a>
                   {{end}}
@@ -116,7 +116,7 @@
                 <div class="banner-swiper swiper-container" id="new-pc-index-twenty-three-left">
                   <div class="swiper-wrapper">
                     {{range $ad := $ad_4}}
-                    <a class="swiper-slide" target="_blank" href="{{$ad.S_link}}">
+                    <a class="swiper-slide banner-remark" target="_blank" href="{{$ad.S_link}}">
                       <img class="img-banner" src='{{$ad.S_pic}}' alt="{{$ad.S_picalt}}">
                     </a>
                     {{end}}
@@ -131,7 +131,7 @@
                 <div class="banner-swiper swiper-container" id="new-pc-index-twenty-three-right">
                   <div class="swiper-wrapper">
                     {{range $ad := $ad_5}}
-                    <a class="swiper-slide" target="_blank" href="{{$ad.S_link}}">
+                    <a class="swiper-slide banner-remark" target="_blank" href="{{$ad.S_link}}">
                       <img class="img-banner" src='{{$ad.S_pic}}' alt="{{$ad.S_picalt}}">
                     </a>
                     {{end}}

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

@@ -177,7 +177,7 @@
                     <div class="selector-card">
                         <div class="selector-card-header">所在地:</div>
                         <div class="selector-card-content">
-                            <area-city-component :show-selected-list="false" @change="areaCityChange" style="padding-right:0;"></area-city-component>
+                            <area-city-component ref="areaCityFilter" :show-selected-list="false" @change="areaCityChange" style="padding-right:0;"></area-city-component>
                         </div>
                     </div>
                     <div class="selector-card">

+ 1 - 1
src/web/templates/pc/template/index/banner-module-27.html

@@ -4,7 +4,7 @@
 <section class="banner-module-container-27">
   <ul class="banner-module-list-27 clearfix">
     {{range $ad := $ad_27}}
-    <li class="banner-module-item-27">
+    <li class="banner-module-item-27 banner-remark">
       <a href="{{$ad.S_link}}">
         <img src='{{$ad.S_pic}}' alt="{{$ad.S_picalt}}">
       </a>

+ 1 - 1
src/web/templates/pc/template/index/cms-card-deep.html

@@ -1,4 +1,4 @@
-<section class="cms-card header-deep-theme zb-aside-card">
+<section class="cms-card header-deep-theme jianyu-school-card">
   <header class="cms-card-header">
     <h3 class="cms-card-title">剑鱼学堂</h3>
   </header>

+ 5 - 5
src/web/templates/pc/template/index/data-service-module.html

@@ -22,11 +22,11 @@
           <h3 class="title-left-line">数据服务</h3>
         </footer>
       </section>
-      <ul class="service-button-list clearfix">
-        <li class="service-desc-button pointer s-plain">数据导出</li>
-        <li class="service-desc-button pointer s-confirm">定制服务</li>
-        <li class="service-desc-button pointer s-plain">对接服务</li>
-      </ul>
+      <div class="service-button-list clearfix">
+        <a class="service-desc-button pointer s-plain" href="/front/dataExport/toSieve">数据导出</a>
+        <a class="service-desc-button pointer s-confirm" href="/front/dataMarket/customExport">定制服务</a>
+        <a class="service-desc-button pointer s-plain" href="/front/dataMarket/dataInterface">对接服务</a>
+      </div>
     </div>
     <div class="service-module-content-right">
       <section class="hot-industry-year-chart">

+ 1 - 1
src/web/templates/pc/template/index/ent-service-module.html

@@ -18,7 +18,7 @@
           </ul>
         </main>
         <footer class="service-desc-footer">
-          <button class="service-desc-button s-confirm">申请开通</button>
+          <button class="service-desc-button s-confirm open-customer">申请开通</button>
         </footer>
       </section>
     </div>

+ 1 - 1
src/web/templates/pc/template/index/hot-buyer-card.html

@@ -10,7 +10,7 @@
           <div class="list-info-item-head head-blue">{{$v.ent_Id}}</div>
         </div>
         <div class="buyer-list-cell-bd">
-          <div class="buyer-list-cell-title">
+          <div class="buyer-list-cell-title ellipsis">
             <a class="cms-link" title="" href="{{$v.url}}" target="_blank">{{$v.ent_Id}}</a>
           </div>
           <div class="buyer-list-cell-info">

+ 7 - 7
src/web/templates/pc/template/index/search-module.html

@@ -18,7 +18,7 @@
       </ul>
       <div class="index-search-container">
         <div class="index-search-input-container">
-          <input type="text" class="search-input" name="keywords" autocomplete="off" placeholder="请输入您要查询的招标信息,多个关键词用空格隔开">
+          <input type="text" class="search-input" name="keywords" autocomplete="off" placeholder="请输入搜项目名称等关键词,例如:医疗设备">
         </div>
         <input type="button" class="search-button" value="剑鱼一下" id="doSearch">
       </div>
@@ -55,18 +55,18 @@
   </div>
   <div class="header-top-right">
     <div class="flex-row-center">
-      <button class="j-s-button plain mr12">
+      <a class="j-s-button plain mr12" href="/brand">
         <i class="j-icon base-icon icon-img-huangguan"></i>
         剑鱼官网
-      </button>
-      <a class="cms-link mr12" href="">企业愿景</a>
-      <a class="cms-link" href="">品牌介绍</a>
+      </a>
+      <a class="cms-link mr12" href="/brand/index">企业愿景</a>
+      <a class="cms-link" href="/brand/index#Company_Dynamic">品牌介绍</a>
     </div>
     <div class="flex-row-center mt12">
-      <button class="j-s-button plain">
+      <a class="j-s-button plain" href="/jycms">
         <i class="j-icon base-icon icon-img-zixun"></i>
         商情门户
-      </button>
+      </a>
     </div>
   </div>
 </section>

+ 9 - 7
src/web/templates/pc/template/index/user-info-card.html

@@ -2,7 +2,7 @@
 {{if not .T.hasLogin}}
 <section class="user-info-card no-login-card">
   <header class="user-info-header">
-    <button class="service-desc-button s-confirm">注册/登录</button>
+    <button class="service-desc-button s-confirm login-register-button">注册/登录</button>
   </header>
   <main class="user-info-main">
     <p class="user-info-desc-tip">- 注册立享,8大免费权益 -</p>
@@ -15,7 +15,7 @@
     </div>
   </main>
   <footer class="user-info-footer">
-    <button class="j-s-button plain to-learn-more">了解详情</button>
+    <button class="j-s-button plain to-learn-more open-customer">了解详情</button>
   </footer>
 </section>
 {{else}}
@@ -27,7 +27,7 @@
       <span class="user-info-title-text highlight-text">欢迎您!<i class="user-nickname">{{.T.nickname}}</i></span>
     </h4>
     <p class="user-info-header-line">
-      <span class="u-i-h-line-label">账类型:</span>
+      <span class="u-i-h-line-label">账类型:</span>
       <span class="u-i-h-line-value">{{.T.vipType}}</span>
     </p>
     <p class="user-info-header-line">
@@ -41,10 +41,12 @@
     <ul class="user-power-list clearfix">
       {{range $ad := $ad_menu}}
         <li class="user-power-item pointer">
-          <span class="user-power-item-icon" attr-href="{{$ad.S_link}}">
-            <img src="{{$ad.S_pic}}" alt="{{$ad.S_picalt}}">
-          </span>
-          <span class="user-power-item-name">{{$ad.S_remark}}</span>
+          <a class="user-power-item-link" href="{{$ad.S_link}}" target="_blank">
+            <span class="user-power-item-icon">
+              <img src="{{$ad.S_pic}}" alt="{{$ad.S_picalt}}">
+            </span>
+            <span class="user-power-item-name">{{$ad.S_remark}}</span>
+          </a>
         </li>
       {{end}}
     </ul>