瀏覽代碼

信息中心修改

yuwenjun1997 2 年之前
父節點
當前提交
1ca31912a7

+ 27 - 24
src/main/resources/static/css/article/article.css

@@ -150,20 +150,19 @@ dl,dd,dt{zoom:1}
 	.tui .tui-img img{width:100%;max-height:432px}
 	.tui .tui-img img:hover{opacity:0.8;border:solid 1px #e15616}
 	.tui .tui-img .none:hover{opacity:1;border:none;cursor:default}
-	.new-list .search{width:860px;height:100px;padding:0 30px;border-bottom:solid 1px #ededed}
-	.new-list .search .serachBox{position:relative;width:796px;height:50px;margin-top:30px;margin-bottom:15px}
-	.new-list .serachBox .keyword{width:696px;height:50px;line-height:50px;padding-left:40px;border:1px solid #ddd;border-right:none;border-radius:12px 0 0 12px;color:#777;font-size:14px;background:url(/img/info/search1.png) no-repeat 10px 12px}
-	.new-list .serachBox .keyword:focus{border:1px solid #ddd;border-right:none;outline:medium}
-	.new-list .serachBox .searchBtn{position:absolute;top:0px;right:1px;display:block;width:100px;height:50px;line-height:50px;text-align:center;border-radius:0 12px 12px 0;color:#fff;background-color:#e15616;background-image:none;font-size:20px}
-	.new-list .search-tip{ font-size: 16px; color: #333; font-weight: bold; position: relative;line-height: 32px}
-	.new-list .search-tip b{color:#E15616;font-weight:bold;}
-	.new-list .search-tip a{ color:#E15616; text-decoration: underline; }
-	.new-list .search-tip.pointer::after {content: ""; display: inline-block;/* position: absolute; left: 0;top: 50%; transform: translateY(-50%);*/ width: 30px; height: 30px; background: url(/img/base/icon-pointer-right.png) no-repeat center; background-size: 30px; height: 30px;
-		-webkit-animation: ease pointerFlashing infinite 0.3s;
-		animation: ease pointerFlashing infinite 0.3s; -webkit-transform: rotateY(180deg); transform: rotateY(180deg);vertical-align: -8px;
-		-webkit-filter: invert(54%) sepia(57%) saturate(5587%) hue-rotate(352deg) brightness(90%) contrast(96%);filter: invert(54%) sepia(57%) saturate(5587%) hue-rotate(352deg) brightness(90%) contrast(96%);
-	}
-	.search .result b{color:#e15616}
+	/*.new-list .search{width:860px;padding:0 30px;border-bottom:solid 1px #ededed}*/
+	/*.new-list .search .search-box{position:relative;width:796px;height:50px;margin-top:30px;}*/
+	/*.new-list .search-box .keyword{width:696px;height:50px;line-height:50px;padding-left:40px;border:1px solid #ddd;border-right:none;border-radius:12px 0 0 12px;color:#777;font-size:14px;background:url(/img/info/search1.png) no-repeat 10px 12px}*/
+	/*.new-list .search-box .keyword:focus{border:1px solid #ddd;border-right:none;outline:medium}*/
+	/*.new-list .search-box .search-btn{position:absolute;top:0px;right:1px;display:block;width:100px;height:50px;line-height:50px;text-align:center;border-radius:0 12px 12px 0;color:#fff;background-color:#e15616;background-image:none;font-size:20px}*/
+	.new-list .search { padding: 32px 32px 0; }
+	.new-list .search-box { display: flex; justify-content: space-between; align-items: center; }
+	.new-list .search-box .keyword{ flex: 1; flex-shrink: 0; display: block; height: 48px; padding-left:40px; box-sizing: border-box; border:1px solid #ddd;border-right:none; color:#777;font-size:14px; background:url(/img/info/search1.png) no-repeat 10px 12px; }
+	.new-list .search-box .search-btn{ display: block; width: 100px; height: 48px; text-align: center; line-height: 48px; color: #fff; background: #E15616; font-size: 14px; }
+	.new-list .search-tip { display: flex; align-items: center; height: 48px; margin: 15px 0; padding: 0 16px; font-size: 16px; color: #4A4F58; background: #FEF6F3; }
+	.new-list .search-tip span { color:#E15616; font-weight:bold; margin: 0 2px; }
+	.new-list .search-tip a { display: block; width: 88px; height: 32px; background: #E15616; color: #fff; text-align: center; line-height: 32px; margin-left: 12px; }
+
 	.no-result{width:860px;height:500px;text-align:center;padding-top:100px}
 	.no-result .nofound{color:#333;font-size:18px;margin-top:20px}
 	.no-result .nofound span{color:#e15616}
@@ -218,17 +217,21 @@ dl,dd,dt{zoom:1}
 	/*.tip-bar{display: flex;justify-content: space-between;align-items: center;flex-direction: row-reverse}*/
 	.tip-bar{ padding: 2vw 0 }
 	.tip,.bar,.classify{height:6vw;line-height:6vw;font-size:3.1vw;overflow:hidden;color:#93979F;padding:0 2vw}
-	.classify.search-tip{ font-size: 3.2vw; font-weight: bold; }
-	.classify.search-tip em{color:#E15616;font-weight:bold;}
-	.classify.search-tip a{ color:#E15616; text-decoration: underline; }
-	.classify.search-tip.pointer::after {content: ""; display: inline-block;width: 6.2vw; height: 6.2vw;
-		background: url(/img/base/icon-pointer-right.png) no-repeat center; background-size: 6.2vw 6.2vw;
-		-webkit-animation: ease pointerFlashing infinite 0.3s;
-		animation: ease pointerFlashing infinite 0.3s; -webkit-transform: rotateY(180deg); transform: rotateY(180deg);vertical-align: -1.6vw;
-		-webkit-filter: invert(54%) sepia(57%) saturate(5587%) hue-rotate(352deg) brightness(90%) contrast(96%);filter: invert(54%) sepia(57%) saturate(5587%) hue-rotate(352deg) brightness(90%) contrast(96%);
-	}
+	/*.classify.search-tip{ font-size: 3.2vw; font-weight: bold; }*/
+	/*.classify.search-tip em{color:#E15616;font-weight:bold;}*/
+	/*.classify.search-tip a{ color:#E15616; text-decoration: underline; }*/
+	/*.classify.search-tip.pointer::after {content: ""; display: inline-block;width: 6.2vw; height: 6.2vw;*/
+	/*	background: url(/img/base/icon-pointer-right.png) no-repeat center; background-size: 6.2vw 6.2vw;*/
+	/*	-webkit-animation: ease pointerFlashing infinite 0.3s;*/
+	/*	animation: ease pointerFlashing infinite 0.3s; -webkit-transform: rotateY(180deg); transform: rotateY(180deg);vertical-align: -1.6vw;*/
+	/*	-webkit-filter: invert(54%) sepia(57%) saturate(5587%) hue-rotate(352deg) brightness(90%) contrast(96%);filter: invert(54%) sepia(57%) saturate(5587%) hue-rotate(352deg) brightness(90%) contrast(96%);*/
+	/*}*/
 	.mainData{min-height:68vh}
-	.new-list{background:#FFF;}
+	.new-list{background:#FFF;padding-top: 3.2vw;}
+	.new-list .search-tip { display: flex; align-items: center; margin: 0 2.4vw 2.4vw; padding: 2.8vw 2.4vw; font-size: 3vw; color: #4A4F58; background: #FEF6F3; }
+	.new-list .search-tip .content div { display: inline }
+	.new-list .search-tip span { color:#E15616; font-weight:bold; }
+	.new-list .search-tip a { display: block; flex-shrink: 0; width: 14.6vw; height: 5.4vw; background: #E15616; color: #fff; text-align: center; line-height: 5.4vw; margin-left: 3.2vw; }
 	.dataRousce{width:100%;background:#FFF;overflow:hidden}
 	.dataRousce .row{width:100%;height:34.8vw;border-top:1px solid #F5F5F5;background:#FFF;overflow:hidden;box-sizing:border-box;padding:2vw 3.3vw 2vw 37vw;position:relative;color:#93979F;line-height:3.5vw;font-size:2.6vw}
 	.dataRousce .row img{position:absolute;left:3.3vw;top:2.3vw;width:30.4vw;height:30.4vw}

+ 56 - 0
src/main/resources/static/css/article/filter-sort.css

@@ -0,0 +1,56 @@
+.date-picker-wrapper .footer {width: initial;margin: initial;text-align: initial;height: initial;box-sizing:initial;padding: initial;}
+
+@media screen and (min-width:768px){
+.cm-filter-sort{position:relative;z-index: 1;font-size:14px;color:#4a4f58;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;padding-bottom: 16px;}
+.cm-filter-sort .cm-drop-btn{display: inline-block;font-size: 16px;color: #4A4F58;margin-left: 32px;position: relative;padding-right: 24px;cursor: pointer;}
+.cm-filter-sort .cm-drop-btn:after{display:block;content:"";width: 0;height: 0;border-style: solid;border-width: 8px 8px 0 8px;border-color: #B1B1B1 transparent transparent transparent;position: absolute;top: 50%;right: 0;transform: translateY(-50%);}
+.cm-filter-sort .cm-drop-btn.cm-active:after{border-width: 0 8px 8px 8px;border-color: transparent transparent #B1B1B1 transparent;}
+.cm-filter-sort .cm-drop-down{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;position:absolute;top:32px;left: 32px;background-color:#fff;-webkit-box-shadow:0px 6px 16px 1px rgba(51,51,51,0.16);box-shadow:0px 6px 16px 1px rgba(51,51,51,0.16)}
+.cm-filter-sort .cm-drop-down .cm-slide-nav{padding:12px 0;-webkit-box-sizing:border-box;box-sizing:border-box}
+.cm-filter-sort .cm-drop-down .cm-slide.cm-active .cm-slide-name{background:#fef6f3;color:#e15616}
+.cm-filter-sort .cm-drop-down .cm-slide .cm-slide-name{width:102px;height:40px;line-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;padding:0 16px;cursor:pointer;-webkit-transition:all 0.2s;transition:all 0.2s}
+.cm-filter-sort .cm-drop-down .cm-slide .cm-slide-name:hover{background:#fef6f3;color:#e15616}
+.cm-filter-sort .cm-drop-down .cm-slide-alert{-ms-flex-negative:0;flex-shrink:0}
+.cm-filter-sort .cm-drop-down .cm-slide-alert .cm-sub-slide{background-color:#fff;height:100%;width:440px;border-left:1px solid #efefef}
+.cm-filter-sort .cm-drop-down .cm-slide-alert .cm-sub-slide.cm-filter-date{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end;-webkit-box-sizing:border-box;box-sizing:border-box;padding:24px;height:280px}
+.cm-filter-sort .cm-drop-down .cm-slide-alert .cm-sub-slide.cm-filter-date .cm-item{cursor:pointer;margin-bottom:14px;-webkit-transition:all 0.2s;transition:all 0.2s}
+.cm-filter-sort .cm-drop-down .cm-slide-alert .cm-sub-slide.cm-filter-date .cm-item.cm-active{color:#e15616}
+.cm-filter-sort .cm-drop-down .cm-slide-alert .cm-sub-slide.cm-filter-date .cm-item:hover{color:#e15616}
+.cm-filter-sort .cm-drop-down .cm-slide-alert .cm-sub-slide.cm-filter-date .cm-date-picker{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-top:12px}
+.cm-filter-sort .cm-drop-down .cm-slide-alert .cm-sub-slide.cm-filter-date .cm-date-picker .cm-label{line-height:32px;margin-right:8px}
+.cm-filter-sort .cm-drop-down .cm-slide-alert .cm-sub-slide.cm-filter-date .cm-date-picker .cm-divider{margin:0 12px}
+.cm-filter-sort .cm-drop-down .cm-slide-alert .cm-sub-slide.cm-filter-date .cm-date-picker .cm-date-choose{position:relative;min-width:120px;height:32px;padding-right:36px;padding-left:8px;line-height:30px;border:1px solid #d8d8d8;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer}
+.cm-filter-sort .cm-drop-down .cm-slide-alert .cm-sub-slide.cm-filter-date .cm-date-picker .cm-date-choose::after{content:'';position:absolute;right:4px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:block;width:24px;height:24px;background: url(/img/base/icon.png) no-repeat;background-position: -343px -372px;}
+.cm-filter-sort .cm-drop-down .cm-slide-alert .cm-sub-slide.cm-filter-date .cm-control{display:-webkit-box;display:-ms-flexbox;display:flex;position:absolute;right:24px;bottom:16px}
+.cm-filter-sort .cm-drop-down .cm-control .cm-btn{width:88px;height:32px;text-align:center;line-height:32px;cursor:pointer;-webkit-transition:all 0.2s;transition:all 0.2s;border-radius:2px}
+.cm-filter-sort .cm-drop-down .cm-control .cm-btn.cm-confirm{background:#e15616;color:#fff}
+.cm-filter-sort .cm-drop-down .cm-control .cm-btn.cm-confirm:hover{background:#d85316}
+.cm-filter-sort .cm-drop-down .cm-control .cm-btn.cm-cancel{background:#f5f5f5;margin-right:16px}
+.cm-filter-sort .cm-drop-down .cm-control .cm-btn.cm-cancel:hover{background:#f1f1f1}
+}
+
+@media screen and (max-width:768px){
+.cm-filter-sort{position:relative;z-index: 1;font-size:3.2vw;color:#4a4f58;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;padding-bottom: 2.4vw;}
+.cm-filter-sort .cm-tip{font-weight:bold}
+.cm-filter-sort .cm-drop-btn{display: inline-block;font-size: 16px;color: #4A4F58;margin-left: 3.2vw;position: relative;padding-right: 24px;cursor: pointer;}
+.cm-filter-sort .cm-drop-btn:after{display:block;content:"";width: 0;height: 0;border-style: solid;border-width: 8px 8px 0 8px;border-color: #B1B1B1 transparent transparent transparent;position: absolute;top: 50%;right: 0;transform: translateY(-50%);}
+.cm-filter-sort .cm-drop-btn.cm-active:after{border-width: 0 8px 8px 8px;border-color: transparent transparent #B1B1B1 transparent;}
+.cm-filter-sort .cm-drop-down{position:absolute;top:7vw;left:3.2vw;background-color:#fff;-webkit-box-sizing:border-box;box-sizing:border-box;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-shadow:0px 0.6vw 2.4vw 0.1vw rgba(51,51,51,0.16);box-shadow:0px 0.6vw 2.4vw 0.1vw rgba(51,51,51,0.16)}
+.cm-filter-sort .cm-drop-down .cm-slide.cm-active .cm-slide-name{background:#fef6f3;color:#e15616}
+.cm-filter-sort .cm-drop-down .cm-slide .cm-slide-name{width:23.2vw;height:10vw;line-height:10vw;-webkit-box-sizing:border-box;box-sizing:border-box;padding:0 2.8vw;cursor:pointer;-webkit-transition:all 0.2s;transition:all 0.2s}
+.cm-filter-sort .cm-drop-down .cm-slide-nav{padding:2.4vw 0}
+.cm-filter-sort .cm-drop-down .cm-slide-alert .cm-sub-slide{background-color:#fff;height:100%;width:70.4vw;border-left:0.1vw solid #efefef}
+.cm-filter-sort .cm-drop-down .cm-slide-alert .cm-sub-slide.cm-filter-date{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end;-webkit-box-sizing:border-box;box-sizing:border-box;padding:4vw;height:70vw}
+.cm-filter-sort .cm-drop-down .cm-slide-alert .cm-sub-slide.cm-filter-date .cm-item{cursor:pointer;margin-bottom:3.6vw;-webkit-transition:all 0.2s;transition:all 0.2s}
+.cm-filter-sort .cm-drop-down .cm-slide-alert .cm-sub-slide.cm-filter-date .cm-item.cm-active{color:#e15616}
+.cm-filter-sort .cm-drop-down .cm-slide-alert .cm-sub-slide.cm-filter-date .cm-date-picker{margin-top:3.2vw}
+.cm-filter-sort .cm-drop-down .cm-slide-alert .cm-sub-slide.cm-filter-date .cm-date-picker .cm-label{display:block;font-size:3.4vw;width:100%;-ms-flex-negative:0;flex-shrink:0;margin-bottom:1.6vw}
+.cm-filter-sort .cm-drop-down .cm-slide-alert .cm-sub-slide.cm-filter-date .cm-date-picker .cm-divider{display:inline-block;margin:0 1vw}
+.cm-filter-sort .cm-drop-down .cm-slide-alert .cm-sub-slide.cm-filter-date .cm-date-picker .cm-date-choose{display:inline-block;position:relative;min-width:28vw;height:8vw;padding-right:8vw;padding-left:2vw;line-height:8vw;border:0.1vw solid #d8d8d8;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer}
+.cm-filter-sort .cm-drop-down .cm-slide-alert .cm-sub-slide.cm-filter-date .cm-date-picker .cm-date-choose::after{content:'';position:absolute;right:2vw;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:block;width:5.6vw;height:5.6vw;background: url(/img/base/icon.png) no-repeat;background-position: -341px -372px;}
+.cm-filter-sort .cm-drop-down .cm-slide-alert .cm-sub-slide.cm-filter-date .cm-control{display:-webkit-box;display:-ms-flexbox;display:flex;position:absolute;right:4vw;bottom:2.4vw}
+.cm-filter-sort .cm-drop-down .cm-control .cm-btn{width:18.6vw;height:8vw;text-align:center;line-height:8vw;cursor:pointer;-webkit-transition:all 0.2s;transition:all 0.2s;border-radius:0.2vw}
+.cm-filter-sort .cm-drop-down .cm-control .cm-btn.cm-confirm{background:#e15616;color:#fff}
+.cm-filter-sort .cm-drop-down .cm-control .cm-btn.cm-confirm:hover{background:#d85316}
+.cm-filter-sort .cm-drop-down .cm-control .cm-btn.cm-cancel{background:#f5f5f5;margin-right:3.2vw}
+}

+ 331 - 118
src/main/resources/static/js/article/list.js

@@ -1,3 +1,105 @@
+function initFilter(option) {
+    var comEl = $(option.el);
+    var dropBtn = comEl.find('.cm-drop-btn');
+    var dropDown = comEl.find('.cm-drop-down');
+    var datePicker = comEl.find('.cm-date-picker');
+    var dateFilter = comEl.find('.cm-filter-date');
+    var slideNav = comEl.find('.cm-slide');
+    var slideAlert = comEl.find('.cm-sub-slide');
+    var startDate = datePicker.find('.cm-date-begin');
+    var endDate = datePicker.find('.cm-date-end');
+
+    $(window).on('click', function (el) {
+        if (comEl.has(el.target).length > 0) return;
+        dropDown.fadeOut();
+        dropBtn.removeClass('cm-active');
+    })
+
+    dropBtn.on('click', function () {
+        dropDown.fadeToggle();
+        dropBtn.toggleClass('cm-active');
+    })
+
+    slideNav.on('click', function () {
+        $(this).addClass('cm-active').siblings('.cm-slide').removeClass('cm-active').find('.cm-sub-slide').hide();
+        slideAlert.hide();
+        $($(this).attr('data-target')).show();
+    })
+
+    slideNav.each(function (index, el) {
+        var confirmBtn = $($(el).attr('data-target')).find('.cm-confirm');
+        var cancelBtn = $($(el).attr('data-target')).find('.cm-cancel');
+        if (cancelBtn.length > 0) {
+            cancelBtn.on('click', function () {
+                option.cancel && option.cancel();
+                dropDown.fadeOut();
+                dropBtn.removeClass('cm-active');
+            });
+        }
+        if (confirmBtn.length > 0) {
+            confirmBtn.on('click', function () {
+                option.confirm && option.confirm({status: 2});
+                dropDown.fadeOut();
+                dropBtn.removeClass('cm-active');
+            });
+        } else {
+            $(el).on('click', function () {
+                option.confirm && option.confirm({status: 1});
+                dropDown.fadeOut();
+                dropBtn.removeClass('cm-active');
+            })
+        }
+    })
+
+    function generageDateStr(type) {
+        var dayTimestamp = 24 * 60 * 60 * 1000;
+        var result = {
+            week: 7,
+            month: 30,
+            halfYear: 182,
+            year: 365,
+        };
+        return moment(Date.now() - result[type] * dayTimestamp).format('YYYY-MM-DD');
+    }
+
+    dateFilter.find('.cm-item').on('click', function () {
+        $(this).siblings('.cm-item').removeClass('cm-active');
+        $(this).addClass('cm-active');
+        var days = $(this).attr('data-last-date');
+        var start = generageDateStr(days);
+        var end = moment().format('YYYY-MM-DD');
+        var date = start + ' to ' + end;
+        option.getDate && option.getDate({date, start, end});
+    });
+
+    datePicker.on('click', function () {
+        dateFilter.find('.cm-item').removeClass('cm-active');
+    });
+
+    // 初始化时间选择器
+    datePicker.dateRangePicker({
+        language: 'cn',
+        format: 'YYYY-MM-DD',
+        autoClose: isPC,
+        showShortcuts: false,
+        isNowrap: false,
+        getValue: function () {
+            return option.setDate ? option.setDate() : ''
+        },
+        setValue: function (date, start, end) {
+            option.getDate && option.getDate({date, start, end})
+            startDate.text(start)
+            endDate.text(end)
+        },
+    });
+}
+
+var requestUrlConfig = {
+    keyword: coreServer + "/commodity/search/query/article",
+    labelId: coreServer + "/commodity/search/query/article/label",
+    typeId: coreServer + "/commodity/search/query/article/type"
+};
+
 var articleList = new Vue({
     el: '#articleList',
     data: {
@@ -10,12 +112,17 @@ var articleList = new Vue({
             num: 1,
             typeId: '',
             labelId: '',
-            keyword: ''
+            keyword: '',
+            status: 1,
+            startDate: '',
+            endDate: ''
         },
         listData: [],
         listRecord: 0,
         productRecord: 0,
-        pageInput: '1'
+        pageInput: '1',
+        keyword: '',
+        requestType: '', // 请求链接类型keyword | labelId | typeId
     },
     computed: {
         pageTotal: function () {
@@ -37,49 +144,102 @@ var articleList = new Vue({
             return [1, 0, index - 2, index - 1, index, index + 1, index + 2, 0, total];
         }
     },
+    created: function () {
+        // 判断登录状态
+        if (globalUserData.token) {
+            this.loginStatus = true;
+        }
+        var self = this;
+        this.$nextTick(function () {
+            self.initQueryParam();
+            self.initBase();
+        });
+    },
     methods: {
-        toPagination: function (pageNum) {
-            if (pageNum <= this.pageTotal) {
-                var params = {pageNum: pageNum};
-                window.location.href = updateUrlParam(params);
+        // 初始化链接参数
+        initQueryParam() {
+            if (isPC) {
+                this.params.size = getUrlParam("pageSize") ? getUrlParam("pageSize") * 1 : 8;
+                this.params.num = $("#pageNum").val() ? $("#pageNum").val() * 1 : 1;
+            } else {
+                this.params.size = 8;
+                this.params.num = 1;
             }
+            this.keyword = getUrlParam("keyword") ? getUrlParam("keyword") : '';
+            this.params.keyword = this.keyword;
         },
-        paginationUrl: function(pageNum) {
-             var path = window.location.href;
-             var paramsArr = window.location.pathname.split(".")[0].split("-");
-             var pageId =  paramsArr.length>=1 ? paramsArr[1] : '';
-             if (paramsArr[0].indexOf('/info/search') >= 0) {
-                var search = window.location.search;
-                path = '/info/search-'+pageNum+'.html'+search;
-             }else if (paramsArr[0].indexOf('/info/center') >= 0) {
-                path = '/info/center-'+pageId+'-'+pageNum+'.html';
-            } else if (paramsArr[0].indexOf('/info/label') >= 0) {
-                path = '/info/label-'+pageId+'-'+pageNum+'.html';
+
+        //初始化页面
+        initBase: function () {
+            this.params.typeId = $("#typeId").val() * 1;
+            this.params.labelId = $("#labelId").val() * 1;
+            if (!this.params.typeId) {
+                $(".content").addClass("sea-top");
             }
-            return path;
+            if (this.params.typeId) {
+                this.requestType = 'typeId'
+            } else if (this.params.labelId) {
+                this.requestType = 'labelId'
+            } else if (this.params.keyword) {
+                this.requestType = 'keyword'
+                $("header").find("#topSearch").remove();
+            }
+            this.requestAction(this.requestType);
+            this.initPageReset();
+            this.initSortControl();
+            this.fetchProductList();
         },
-        checkNum: function () {
-            if (this.pageInput > this.pageTotal) {
-                this.pageInput = this.pageTotal;
-            } else if (this.pageInput < 1) {
-                this.pageInput = 1;
+
+        // 发起文章列表请求
+        requestAction: function (type) {
+            var requestAction = {
+                'typeId': this.initWithTypeId,
+                'labelId': this.initWithLabelId,
+                'keyword': this.initWithKeyword,
+            };
+            requestAction[type]();
+        },
+
+        // 文章分类查询列表
+        initWithTypeId: function () {
+            var params = {
+                id: this.params.typeId,
+                pageSize: this.params.size,
+                pageNum: this.params.num
             }
+            this.getArticleList(requestUrlConfig['typeId'], params);
         },
-        fetchProductList : function(){
-            var _self = this;
-            ProductApi.GetProductSearchList({
-                keyword: this.params.keyword
-            }, function (res) {
-                res = JSON.parse(res.data)
-                _self.productRecord = res.total
-            })
+
+        //文章标签查询文章列表
+        initWithLabelId: function () {
+            var params = {
+                id: this.params.labelId,
+                pageSize: this.params.size,
+                pageNum: this.params.num
+            }
+            this.getArticleList(requestUrlConfig['labelId'], params);
         },
+
+        // 关键词查询文章列表
+        initWithKeyword: function () {
+            var params = {
+                keyword: this.params.keyword,
+                pageSize: this.params.size,
+                pageNum: this.params.num,
+                status: this.params.status,
+                startDate: this.params.startDate,
+                endDate: this.params.endDate
+            }
+            this.getArticleList(requestUrlConfig['keyword'], params);
+        },
+
+        // 获取文章列表
         getArticleList: function (url, params) {
-            var _self = this;
+            var self = this;
             $.getJSON(url, params, function (r) {
                 if (r.code === 0 && r.data) {
                     var result = JSON.parse(r.data);
-                    _self.listRecord = result.total;
+                    self.listRecord = result.total;
                     var resultData = [];
                     result.items.map(function (item) {
                         resultData.push({
@@ -96,98 +256,151 @@ var articleList = new Vue({
                             publishDate: item.publishDate
                         });
                     });
-                    if(isPC){
-                        _self.listData = resultData;
-                    }else{
-                        _self.listData = _self.listData.concat(resultData);
+                    if (isPC) {
+                        self.listData = resultData;
+                    } else {
+                        self.listData = self.listData.concat(resultData);
                     }
                 }
-                _self.listLoading = false;
-                _self.requestFlag = true;
+                self.listLoading = false;
+                self.requestFlag = true;
             })
         },
-    },
-    created: function () {
-        if(isPC){
-            this.params.size = getUrlParam("pageSize") ? getUrlParam("pageSize") * 1 : 8;
-            this.params.num = $("#pageNum").val() ? $("#pageNum").val()*1 : 1;
-        }else{
-            this.params.size = 8;
-            this.params.num = 1;
-        }
-        this.params.keyword = getUrlParam("keyword")?getUrlParam("keyword"):'';
-        // 判断登录状态
-        if (globalUserData.token) {
-            this.loginStatus = true;
-        }
-    },
-    mounted: function () {
-        this.params.typeId = $("#typeId").val()*1;
-        this.params.labelId = $("#labelId").val()*1;
-        if(!this.params.typeId){$(".content").addClass("sea-top")}
-        var requestUrl = '';
-        var requestParams = {};
-        if (this.params.typeId) {
-            requestUrl = coreServer+"/commodity/search/query/article/type";
-            requestParams = {
-                id: this.params.typeId,
-                pageSize: this.params.size,
-                pageNum: this.params.num
-            };
-        } else if (this.params.labelId) {
-            requestUrl = coreServer+"/commodity/search/query/article/label";
-            requestParams = {
-                id: this.params.labelId,
-                pageSize: this.params.size,
-                pageNum: this.params.num
-            };
-        } else if(this.params.keyword){
-            requestUrl = coreServer+"/commodity/search/query/article";
-            requestParams = {
-                keyword: this.params.keyword,
-                pageSize: this.params.size,
-                pageNum: this.params.num
-            };
-            $("header").find("#topSearch").remove();
-        }
-        if (requestUrl) {
-            this.getArticleList(requestUrl, requestParams);
-            this.fetchProductList()
-        }
-        var _self = this;
-        if(!isPC){
-            $('footer').addClass("noneImportant");
-            //移动端上垃加载更多
-            $('body').on('scroll', function(){
-                var scrollTop =  $(this).scrollTop();
-                var documentHeight = $(document).height();
-                var windowHeight = $(this).height() ;
-                // alert(scrollTop + windowHeight == documentHeight)
-                if( scrollTop + windowHeight + 100 > documentHeight ){
-                    //此处是滚动条到底部时候触发的事件,在这里写要加载的数据,或者是拉动滚动条的操作
-                    var totalPage = Math.ceil(_self.listRecord / _self.params.size)?Math.ceil(_self.listRecord / _self.params.size):1;
-                    var next = _self.params.num+1;
-                    if(next <= totalPage){ // 获取列表数据
-                        if (_self.requestFlag){
-                            _self.params.num = next;
-                            requestParams.pageNum = next;
-                            _self.getArticleList(requestUrl, requestParams);
+
+        // 搜索
+        onSearchEnter: function () {
+            if (this.keyword === '') {
+                $.confirm({
+                    useBootstrap: false,
+                    boxWidth: (isPC ? '300px' : '70%'),
+                    title: '提示',
+                    content: '请输入文章关键字!',
+                    closeIcon: true,
+                    animation: 'opacity',
+                    closeAnimation: 'opacity',
+                    animateFromElement: false,
+                    buttons: {
+                        close: {
+                            text: '确定',
+                            btnClass: 'btn-confirm'
                         }
-                        _self.requestFlag = false;
-                    }else{ //到底了
-                        _self.noMore = false;
-                        $('footer').removeClass("noneImportant");
                     }
-                }
+                });
+                return;
+            }
+            var query = param({
+                keyword: this.keyword,
+            })
+            window.location.href = '/info/search-1.html?' + query;
+        },
+
+        // 页码跳转
+        toPagination: function (pageNum) {
+            if (pageNum <= this.pageTotal) {
+                var params = {pageNum: pageNum};
+                window.location.href = updateUrlParam(params);
+            }
+        },
+
+        // 页码链接处理
+        paginationUrl: function (pageNum) {
+            var path = window.location.href;
+            var paramsArr = window.location.pathname.split(".")[0].split("-");
+            var pageId = paramsArr.length >= 1 ? paramsArr[1] : '';
+            if (paramsArr[0].indexOf('/info/search') >= 0) {
+                var search = window.location.search;
+                path = '/info/search-' + pageNum + '.html' + search;
+            } else if (paramsArr[0].indexOf('/info/center') >= 0) {
+                path = '/info/center-' + pageId + '-' + pageNum + '.html';
+            } else if (paramsArr[0].indexOf('/info/label') >= 0) {
+                path = '/info/label-' + pageId + '-' + pageNum + '.html';
+            }
+            return path;
+        },
+
+        // 页面修改
+        checkNum: function () {
+            if (this.pageInput > this.pageTotal) {
+                this.pageInput = this.pageTotal;
+            } else if (this.pageInput < 1) {
+                this.pageInput = 1;
+            }
+        },
+
+        // 获取产品列表
+        fetchProductList: function () {
+            var self = this;
+            ProductApi.GetProductSearchList({
+                keyword: this.params.keyword
+            }, function (res) {
+                res = JSON.parse(res.data);
+                self.productRecord = res.total;
+            })
+        },
+
+        // 初始化排序控件
+        initSortControl: function () {
+            var self = this;
+            // filter article
+            initFilter({
+                el: '#cm-filter-sort',
+                setDate() {
+                    return self.params.startDate + ' to ' + self.params.endDate;
+                },
+                getDate(result) {
+                    self.params.startDate = result.start;
+                    self.params.endDate = result.end;
+                },
+                confirm(result) {
+                    console.log('确定')
+                    self.listLoading = true;
+                    self.requestFlag = false;
+                    self.listData = [];
+                    self.listRecord = 0;
+                    self.params.status = result.status;
+                    self.params.num = 1;
+                    self.requestAction(self.requestType);
+                },
+                cancel() {
+                    console.log('取消');
+                },
             });
-        }
-        $("body").on("click", ".header .hotWord", function(){
-            $("#mHotWord").show();
-        }).on("click", "#mHotWord .close,#mHotWord", function(){
-            $("#mHotWord").hide();
-        }).on("click", "#mHotWord .tags", function(e){
-            e.stopPropagation();
-        })
+        },
 
+        // 页面样式初始化
+        initPageReset: function () {
+            var self = this;
+            if (!isPC) {
+                $('footer').addClass("noneImportant");
+                //移动端上垃加载更多
+                $('body').on('scroll', function () {
+                    var scrollTop = $(this).scrollTop();
+                    var documentHeight = $(document).height();
+                    var windowHeight = $(this).height();
+                    // alert(scrollTop + windowHeight == documentHeight)
+                    if (scrollTop + windowHeight + 100 > documentHeight) {
+                        //此处是滚动条到底部时候触发的事件,在这里写要加载的数据,或者是拉动滚动条的操作
+                        var totalPage = Math.ceil(self.listRecord / self.params.size) ? Math.ceil(self.listRecord / self.params.size) : 1;
+                        self.params.num = self.params.num + 1;
+                        if (next <= totalPage) { // 获取列表数据
+                            if (self.requestFlag) {
+                                self.requestAction(self.requestType);
+                            }
+                            self.requestFlag = false;
+                        } else { //到底了
+                            self.noMore = false;
+                            $('footer').removeClass("noneImportant");
+                        }
+                    }
+                });
+            }
+            $("body").on("click", ".header .hotWord", function () {
+                $("#mHotWord").show();
+            }).on("click", "#mHotWord .close,#mHotWord", function () {
+                $("#mHotWord").hide();
+            }).on("click", "#mHotWord .tags", function (e) {
+                e.stopPropagation();
+            })
+        },
     }
 });

+ 28 - 0
src/main/resources/static/js/base.js

@@ -889,3 +889,31 @@ function dateFormat(date = new Date(), format = 'yyyy-MM-dd hh:mm:ss') {
 	}
 	return format
 }
+
+/**
+ * @param {Array} actual
+ * @returns {Array}
+ */
+function cleanArray(actual) {
+    const newArray = []
+    for (let i = 0; i < actual.length; i++) {
+        if (actual[i]) {
+            newArray.push(actual[i])
+        }
+    }
+    return newArray
+}
+
+/**
+ * @param {Object} json
+ * @returns {Array}
+ */
+function param(json) {
+    if (!json) return ''
+    return cleanArray(
+        Object.keys(json).map(key => {
+            if (json[key] === undefined) return ''
+            return encodeURIComponent(key) + '=' + encodeURIComponent(json[key])
+        })
+    ).join('&')
+}

+ 2 - 0
src/main/resources/templates/article/components/article-link.html

@@ -11,5 +11,7 @@
     <link rel="bookmark" th:href="@{/favicon.png}" type="image/x-icon"/>
     <link href="/lib/swiper.min.css" media="screen and (max-width:768px)" rel="stylesheet" type="text/css">
     <link href="/lib/jquery-confirm.min.css" rel="stylesheet" type="text/css">
+    <link href="/lib/datapicker/daterangepicker.css" rel="stylesheet">
     <link th:href="@{/css/base/init.css(v=${version})}" rel="stylesheet" type="text/css">
     <link th:href="@{/css/article/article.css(v=${version})}" rel="stylesheet" type="text/css">
+    <link th:href="@{/css/article/filter-sort.css(v=${version})}" rel="stylesheet" type="text/css">

+ 62 - 17
src/main/resources/templates/article/list.html

@@ -22,30 +22,71 @@
     <div class="mainData">
         <div class="new-list" id="articleList" v-cloak>
             <div v-if="params.keyword" class="search">
-                <div class="serachBox" id="topSearch">
-                    <input class="keyword" type="text" :value="params.keyword" placeholder="请输入关键词" />
-                    <a class="searchBtn" href="javascript:void(0);">搜索</a>
+                <div class="search-box" id="topSearch">
+                    <input class="keyword" type="text" v-model="keyword" placeholder="请输入关键词"
+                           @keyup.enter="onSearchEnter"/>
+                    <a class="search-btn" href="javascript:void(0)" @click="onSearchEnter">搜索</a>
                 </div>
-                <p v-if="isPC" class="result search-tip" :class="{pointer:productRecord && productRecord > 0}">
-                    <span>为你找到相关文章<b v-text="listRecord"></b>条<template v-if="productRecord && productRecord > 0">,</template></span>
-                    <template  v-if="productRecord && productRecord > 0">
-                        <span>同时为您找到相关产品<b v-text="productRecord"></b>个</span>
-                        <a target="_blank" :href="'/product/list.html?keyword=' + params.keyword" v-if="listRecord > 0">点击前往</a>
+                <!-- PC端文章搜索提示 -->
+                <div class="search-tip" v-if="isPC">
+                    <div>为您找到相关文章<span v-text="listRecord">200</span>条</div>
+                    <template v-if="productRecord > 0">
+                        <div>,</div>
+                        <div>同时为您找到相关产品<span v-text="productRecord">200</span>条。</div>
+                        <a target="_blank" :href="'/product/list.html?keyword=' + params.keyword">点击前往</a>
                     </template>
-                </p>
+                </div>
             </div>
             <p v-else-if="params.labelId" class="classify biaoqian">
                 <em id="labelTxt"></em>相关的文章
             </p>
-            <p v-if="params.keyword && !isPC" class="classify search-tip" :class="{pointer:productRecord && productRecord > 0}">
-                <span>为你找到相关文章<em v-text="listRecord"></em>条<template v-if="productRecord && productRecord > 0">,</template></span>
-                <template v-if="productRecord && productRecord > 0">
-                    <span>同时为您找到相关产品<em v-text="productRecord"></em>个</span>
-                    <a target="_blank" :href="'/product/list.html?keyword=' + params.keyword" v-if="listRecord > 0">点击前往</a>
-                </template>
-            </p>
+            <!-- 移动端文章搜索提示 -->
+            <div class="search-tip" v-if="params.keyword && !isPC">
+                <div class="content">
+                    <div>为您找到相关文章<span v-text="listRecord">200</span>条</div>
+                    <template v-if="productRecord > 0">
+                        <div>,</div>
+                        <div>同时为您找到相关产品<span v-text="productRecord">200</span>条。</div>
+                    </template>
+                </div>
+                <a target="_blank" :href="'/product/list.html?keyword=' + params.keyword" v-if="productRecord">点击前往</a>
+            </div>
+            <!-- 排序 -->
+            <div class="cm-filter-sort" id="cm-filter-sort" v-show="params.keyword">
+                <div class="cm-tip cm-drop-btn">综合排序</div>
+                <div class="cm-drop-down" style="display: none">
+                    <div class="cm-slide-nav">
+                        <div class="cm-slide cm-active" data-sort-status="1">
+                            <div class="cm-slide-name">综合排序</div>
+                        </div>
+                        <div class="cm-slide" data-target="#cm-filter-date" data-sort-status="2">
+                            <div class="cm-slide-name">按时间排序</div>
+                        </div>
+                    </div>
+                    <div class="cm-slide-alert">
+                        <div class="cm-sub-slide cm-filter-date" id="cm-filter-date" style="display: none">
+                            <div class="cm-row">
+                                <div class="cm-item" data-last-date="week">近一周</div>
+                                <div class="cm-item" data-last-date="month">近一月</div>
+                                <div class="cm-item" data-last-date="halfYear">近半年</div>
+                                <div class="cm-item" data-last-date="year">近一年</div>
+                            </div>
+                            <div class="cm-date-picker">
+                                <input type="text" hidden/>
+                                <div class="cm-label">自定义:</div>
+                                <div class="cm-date-choose cm-date-begin">开始时间</div>
+                                <div class="cm-divider">-</div>
+                                <div class="cm-date-choose cm-date-end">结束时间</div>
+                            </div>
+                            <div class="cm-control">
+                                <div class="cm-btn cm-cancel">取消</div>
+                                <div class="cm-btn cm-confirm">确定</div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
             <div v-if="listData.length>0" class="dataRousce">
-                <!--<div class="search-tip">为你找到相关文章59条,同时为您找到相关产品59条<a href="/">点击前往</a></div>-->
                 <div class="row" v-for="item in listData">
                     <div class="new-img">
                         <a :href="'/info/detail-'+item.id+'-1.html'" target="_blank">
@@ -116,11 +157,15 @@
         </div>
     </div>
 </div>
+
 <template th:replace="article/components/article-footer"></template>
 <template th:replace="components/foot-link"></template>
+<script charset="utf-8" type="text/javascript" src="/lib/datapicker/moment-2.29.min.js"></script>
+<script charset="utf-8" type="text/javascript" src="/lib/datapicker/jquery.daterangepicker.js"></script>
 <script charset="utf-8" type="text/javascript" th:src="@{/js/common/ajax.service.js}"></script>
 <script charset="utf-8" type="text/javascript" th:src="@{/js/common/serviceapi/product.service.js}"></script>
 <script charset="utf-8" type="text/javascript" th:src="@{/js/article/common.js(v=${version})}"></script>
+<script charset="utf-8" type="text/javascript" th:src="@{/js/article/cm-filter-sort.js(v=${version})}"></script>
 <script charset="utf-8" type="text/javascript" th:src="@{/js/article/list.js(v=${version})}"></script>
 </body>
 </html>