Эх сурвалжийг харах

feat: seo页面选择器选中状态收集逻辑

cuiyalong 2 жил өмнө
parent
commit
b80f21f17d

+ 1 - 1
src/web/staticres/tags/css/tags-lib.css

@@ -274,7 +274,7 @@ a:hover {
     width: 100%;
 }
 #to-subscribe-modal .modal-dialog {
-    margin-top: 30%;
+    margin-top: 30vh;
     width: 336px;
 }
 #to-subscribe-modal .modal-content {

+ 26 - 0
src/web/staticres/tags/js/area-selector.js

@@ -180,6 +180,32 @@ var areaSelector = {
         var container = this.$view
         return container.find('[data-p-name=' + name + ']')
     },
+    getSingleState: function () {
+        var area = {}
+        var container = this.$view
+        var activeList = container.find('.active:not(.country)')
+        activeList.each(function (index, item) {
+            var $item = $(item)
+            var single = $item.hasClass('single')
+            if (single) {
+                var city = $item.attr('data-p-name')
+                area[city] = []
+            } else {
+                var city = $item.attr('data-c-name')
+                var province = $item.parents('.city-list').attr('data-p-children-name')
+                if (city === 'all') {
+                    area[province] = []
+                } else {
+                    if (area[province]) {
+                        area[province].push(city)
+                    } else {
+                        area[province] = [city]
+                    }
+                }
+            }
+        })
+        return area
+    },
     restoreAreaSelectorState: function (conf) {
         var container = this.$view
         var area = conf.area || '全国'

+ 33 - 0
src/web/staticres/tags/js/info-type-selector.js

@@ -60,11 +60,44 @@ var infoTypeSelector = {
             }
         })
     },
+    getSingleState: function () {
+        var container = this.$el
+        var allButton = container.find('.active.all')
+        var level1Arr = container.find('.s-c-label.active:not(.all)')
+        var level2Arr = container.find('.s-c-item.active:not(.all)')
+        var selected = {}
+        if (allButton.length) {
+            return selected
+        }
+        if (level1Arr.length) {
+            level1Arr.each(function (index, item) {
+                var $item = $(item)
+                var label = $item.attr('data-label')
+                selected[label] = []
+            })
+        } else {
+            level2Arr.each(function (index, item) {
+                var $item = $(item)
+                var label = $item.attr('data-label')
+                var value = $item.attr('data-value')
+                if (selected[label]) {
+                    selected[label].push(value)
+                } else {
+                    selected[label] = [value]
+                }
+            })
+        }
+        return selected
+    },
     restoreSelectorState: function (type) {
         if (type) {
             var findIt = this.$el.find('[data-value=' + type + ']')
+            var findSameClass = this.$el.find('[data-label=' + type + ']')
             if (findIt && findIt.length) {
+                // 当前元素高亮
                 findIt.addClass('active').siblings().removeClass('active')
+                // 当前元素如果是父级,则同时子集也高亮
+                findSameClass.addClass('active')
             } else {
                 this.restoreSelectorState()
             }

+ 30 - 3
src/web/staticres/tags/js/tags-lib.js

@@ -43,18 +43,45 @@ var tagsLibs = {
         this.listHighlight()
     },
     initEvents: function () {
+        var _this = this
         this.initSearchContainerEvents()
+        // 查看更多
+        $('.learn-more-button').on('click', function () {
+            var filters = _this.data.filters
+            var cacheData = {}
+            // {
+            //     keywords: '重建工程',
+            //     area: '郑州市',
+            //     industry: '交通工程',
+            //     subtype: '招标预告',
+            // }
+            if (filters.keywords) {
+                cacheData.keywords = filters.keywords
+            }
+            if (filters.area && filters.area !== '全国') {
+                cacheData.area = areaSelector.getSingleState()
+            }
+            if (filters.stype && filters.stype !== '全部') {
+                cacheData.subtype = infoTypeSelector.getSingleState()
+            }
+            if (filters.industry && filters.industry !== '全部') {
+                cacheData.industry = filters.industry
+            }
+            var originSearchUrl = location.origin + '/jylab/supsearch/index.html?keywords=' + cacheData.keywords
+            location.href = _this.getWorkSpaceIframeLink(originSearchUrl)
+        })
     },
     initSearchContainerEvents: function () {
+        var _this = this
         $('.search-container .search-button').on('click', function (e) {
             e.preventDefault()
             var from = $('.search-container.j-search')
             var originSearchUrl = location.origin + '/jylab/supsearch/index.html' + '?' + from.serialize()
-            location.href = '/page_workDesktop/work-bench/page?link=' + encodeURIComponent(originSearchUrl)
+            location.href = _this.getWorkSpaceIframeLink(originSearchUrl)
         })
     },
-    initEvents: function () {
-        this.initSearchContainerEvents()
+    getWorkSpaceIframeLink: function (url) {
+        return '/page_workDesktop/work-bench/page?link=' + encodeURIComponent(url)
     },
     restoreAreaSelectorState: function (filters) {
         var area = filters.area || '全国'