瀏覽代碼

feat:分析报告筛选条件逻辑调整

tsz 2 年之前
父節點
當前提交
622dec203f

+ 77 - 29
src/jfw/modules/app/src/web/staticres/jyapp/big-member/js/report_detail_month.js

@@ -130,12 +130,11 @@ var vNode = {
         detailInfo: {},
         vanlistParams: {
           loading: false,
-          finished: false,
-          scrollTop:0
+          finished: false
         },
         listParams: {
           sort: 0, // 项目明细排序方式
-          pageSize: 10,
+          pageSize: 50,
           pageNum: 1,
           start: parseInt(utils.getParam('start')),
           end: parseInt(utils.getParam('end'))
@@ -150,6 +149,18 @@ var vNode = {
           keywords:'',
           keywordsList: [],
         },
+        tabScrollTop: {
+          '0': 0,
+          '1': 0
+        },
+        // 备选项
+        initFilters: {
+          keys: [],
+          area: {},
+          industry: [],
+          industryDetail: {},
+          buyerclass: []
+        },
         filterData: {},
         stickyOffset: 0,
         confirmSwitch: false
@@ -186,9 +197,23 @@ var vNode = {
     },
     watch: {
       tabActive (newVal) {
-        if (newVal === '1') {
-          this.confirmSwitch = true
+        // 保存tab滚动高度
+        let beforetabname = ''
+        let aftertabname = 'tab_' + newVal
+        let beforetabnum = '0'
+        if(newVal === '1') {
+          beforetabname = 'tab_' + 0
+          beforetabnum = '0'
+        } else {
+          beforetabname = 'tab_' + 1
+          beforetabnum = '1'
         }
+        var beforewrapper = document.querySelector('.' + beforetabname)
+        this.tabScrollTop[beforetabnum] = parseInt(beforewrapper.scrollTop) || this.tabScrollTop[beforetabnum]
+        setTimeout(() => {
+          var afterwrapper = document.querySelector('.' + aftertabname)
+          afterwrapper.scrollTop = this.tabScrollTop[newVal]
+        }, 100)
       }
     },
     created () {
@@ -211,6 +236,12 @@ var vNode = {
       observer.observe(this.$refs.reportSource)
     },
     methods: {
+      // tab切换
+      setTabChange (data) {
+        if(data === '1') {
+          this.confirmSwitch = true
+        }
+      },
       handleIntersection(entries) {
         entries.forEach((entry) => {
           // 元素不可见
@@ -246,7 +277,7 @@ var vNode = {
         })
       },
       // 查询项目明细
-      confirm (data) {
+      confirm (data, str) {
         this.filterData = data
         const { area, buyerclass, industry, industryDetail, items, buyer, winner, selectKeysArr } = data
         this.filters.area = area
@@ -257,22 +288,36 @@ var vNode = {
         this.filters.selectKeysArr = selectKeysArr
         this.filters.buyer = buyer
         this.filters.winner = winner
-        data.items = data.items.map((v) => {
+        const itemsArr = items.map((v) => {
           return v.s_item
         })
-        data.industry = industryDetail
-        delete data.industryDetail
-        delete data.selectKeysArr
+        // data.industry = industryDetail
+        // delete data.industryDetail
+        // delete data.selectKeysArr
         const params = {
           ...this.listParams,
-          ...data
+          items: itemsArr,
+          area: area,
+          buyerclass: buyerclass,
+          industry: industryDetail,
+          buyer: buyer,
+          winner: winner
+        }
+        if(!str) {
+          this.resetListParams()
         }
         this.getProjectInfo(params)
       },
+      resetListParams () {
+        this.listParams.pageNum = 1
+        this.projectInfo.list = []
+        this.projectInfo.total = 0
+      },
       onListLoad: function () {
         this.listParams.pageNum++
         this.vanlistParams.loading = true
-        this.confirm(this.filterData)
+        // 传noreload不需要重置页码
+        this.confirm(this.filterData, 'noreload')
       },
       getProjectInfo: function (params) {
         const loading = this.showLoading()
@@ -330,14 +375,16 @@ var vNode = {
           filterData: this.filterData,
           detailInfo: this.detailInfo,
           projectInfo: this.projectInfo,
-          filters: this.filters
+          filters: this.filters,
+          tabScrollTop: this.tabScrollTop,
+          initFilters: this.initFilters
         }
         sessionStorage.setItem(this.sessStorageKey, JSON.stringify($data))
       },
       saveScrollTop: function () {
         var wrapper = document.getElementById('report_month')
         if (wrapper.scrollTop) {
-          this.vanlistParams.scrollTop = parseInt(wrapper.scrollTop)
+          this.tabScrollTop[this.tabActive] = parseInt(wrapper.scrollTop)
         }
       },
       reStoreState: function () {
@@ -351,11 +398,13 @@ var vNode = {
           this.setFilterData(this.detailInfo)
           Object.assign(this.projectInfo, $data.projectInfo)
           Object.assign(this.filters, $data.filters)
+          Object.assign(this.tabScrollTop, $data.tabScrollTop)
+          Object.assign(this.initFilters, $data.initFilters)
           this.tabActive = $data.tabActive,
           setTimeout(function () {
             // 恢复滚动高度
-            this.setScrollTop(this.vanlistParams.scrollTop)
-          }.bind(this), 0)
+            this.setScrollTop(this.tabScrollTop[this.tabActive])
+          }.bind(this), 500)
           sessionStorage.removeItem(this.sessStorageKey)
           return $data
         }
@@ -541,9 +590,7 @@ var vNode = {
                     if(res.error_code == 0 && res.data) {
                         // 关键词组
                         that.detailInfo = res.data
-                        if(!that.reStoreState()) {
-                          that.setFilterData(res.data, str)
-                        }
+                        that.setFilterData(res.data)
                         // 项目数量 1
                         if (res.data.project_count && res.data.project_count.length > 0) {
                             var pCount = res.data.project_count;
@@ -736,31 +783,32 @@ var vNode = {
                 }
             })
         },
-        resetFilter () {
-          this.getAllChartsData('reset')
-        },
-        setFilterData (res, str) {
+        setFilterData (res) {
           var that = this
           if(res.item && res.item.length > 0 && res.item.toString() != '') {
               that.filters.keywords = res.item.join('、')
               that.filters.keywordsList = res.item
-              if(str) {
-                this.filters.keys = []
-              }
           } else {
               that.filters.keywords = '--'
+              that.filters.selectKeysArr = []
           }
           // 地区
           if (res.area) {
-            that.filters.area = res.area
+            that.initFilters.area = res.area
+          } else {
+            that.initFilters.area = {}
           }
           // 采购单位类型
           if(res.buyerClass) {
-            that.filters.buyerclass = res.buyerClass
+            that.initFilters.buyerclass = res.buyerClass
+          } else {
+            that.initFilters.buyerclass = []
           }
           // 行业
           if(res.industry) {
-            that.filters.industry = res.industry
+            that.initFilters.industry = res.industry
+          } else {
+            that.initFilters.industry = []
           }
         },
         // 颜色值转换

+ 78 - 34
src/jfw/modules/app/src/web/staticres/jyapp/big-member/js/report_detail_week.js

@@ -58,12 +58,11 @@ var vNode = {
         detailInfo: {},
         vanlistParams: {
           loading: false,
-          finished: false,
-          scrollTop: 0
+          finished: false
         },
         listParams: {
           sort: 0, // 项目明细排序方式
-          pageSize: 10,
+          pageSize: 50,
           pageNum: 1,
           start: parseInt(utils.getParam('start')),
           end: parseInt(utils.getParam('end'))
@@ -78,6 +77,18 @@ var vNode = {
           keywords:'',
           keywordsList: [],
         },
+        tabScrollTop: {
+          '0': 0,
+          '1': 0
+        },
+        // 备选项
+        initFilters: {
+          keys: [],
+          area: {},
+          industry: [],
+          industryDetail: {},
+          buyerclass: []
+        },
         filterData: {},
         stickyOffset: 0,
         confirmSwitch: false // 为true开始查询项目明细
@@ -89,9 +100,23 @@ var vNode = {
     },
     watch: {
       tabActive (newVal) {
-        if (newVal === '1') {
-          this.confirmSwitch = true
+        // 保存tab滚动高度
+        let beforetabname = ''
+        let aftertabname = 'tab_' + newVal
+        let beforetabnum = '0'
+        if(newVal === '1') {
+          beforetabname = 'tab_' + 0
+          beforetabnum = '0'
+        } else {
+          beforetabname = 'tab_' + 1
+          beforetabnum = '1'
         }
+        var beforewrapper = document.querySelector('.' + beforetabname)
+        this.tabScrollTop[beforetabnum] = parseInt(beforewrapper.scrollTop) || this.tabScrollTop[beforetabnum]
+        setTimeout(() => {
+          var afterwrapper = document.querySelector('.' + aftertabname)
+          afterwrapper.scrollTop = this.tabScrollTop[newVal]
+        }, 100)
       }
     },
     created () {
@@ -112,6 +137,12 @@ var vNode = {
       observer.observe(this.$refs.reportSource)
     },
     methods: {
+      // tab切换
+      setTabChange (data) {
+        if(data === '1') {
+          this.confirmSwitch = true
+        }
+      },
       // 保存页面状态
       saveState: function () {
         this.saveScrollTop()
@@ -122,7 +153,9 @@ var vNode = {
           filterData: this.filterData,
           detailInfo: this.detailInfo,
           projectInfo: this.projectInfo,
-          filters: this.filters
+          filters: this.filters,
+          tabScrollTop: this.tabScrollTop,
+          initFilters: this.initFilters
         }
         sessionStorage.setItem(this.sessStorageKey, JSON.stringify($data))
       },
@@ -137,12 +170,15 @@ var vNode = {
           this.setFilterData(this.detailInfo)
           Object.assign(this.projectInfo, $data.projectInfo)
           Object.assign(this.filters, $data.filters)
+          Object.assign(this.tabScrollTop, $data.tabScrollTop)
+          Object.assign(this.initFilters, $data.initFilters)
+          // this.filters.industry = this.filters.industryDetail
           this.tabActive = $data.tabActive
 
           setTimeout(function () {
             // 恢复滚动高度
-            this.setScrollTop(this.vanlistParams.scrollTop)
-          }.bind(this), 0)
+            this.setScrollTop(this.tabScrollTop[this.tabActive])
+          }.bind(this), 300)
 
           sessionStorage.removeItem(this.sessStorageKey)
         }
@@ -158,7 +194,7 @@ var vNode = {
       saveScrollTop: function () {
         var wrapper = document.getElementById('report_week')
         if (wrapper.scrollTop) {
-          this.vanlistParams.scrollTop = parseInt(wrapper.scrollTop)
+          this.tabScrollTop[this.tabActive] = parseInt(wrapper.scrollTop)
         }
       },
       handleIntersection(entries) {
@@ -207,7 +243,7 @@ var vNode = {
         })
       },
       // 查询项目明细
-      confirm (data) {
+      confirm (data, str) {
         this.filterData = data
         const { area, buyerclass, industry, items, buyer, winner, industryDetail, selectKeysArr } = data
         this.filters.area = area
@@ -218,22 +254,36 @@ var vNode = {
         this.filters.selectKeysArr = selectKeysArr
         this.filters.buyer = buyer
         this.filters.winner = winner
-        data.items = data.items.map((v) => {
+        const itemsArr = items.map((v) => {
           return v.s_item
         })
-        data.industry = industryDetail
-        delete data.industryDetail
-        delete data.selectKeysArr
+        // data.industry = industryDetail
+        // delete data.industryDetail
+        // delete data.selectKeysArr
         const params = {
           ...this.listParams,
-          ...data
+          items: itemsArr,
+          area: area,
+          buyerclass: buyerclass,
+          industry: industryDetail,
+          buyer: buyer,
+          winner: winner
+        }
+        if(!str) {
+          this.resetListParams()
         }
         this.getProjectInfo(params)
       },
+      resetListParams () {
+        this.listParams.pageNum = 1
+        this.projectInfo.list = []
+        this.projectInfo.total = 0
+      },
       onListLoad: function () {
         this.listParams.pageNum++
         this.vanlistParams.loading = true
-        this.confirm(this.filterData)
+        // 传noreload不需要重置页码
+        this.confirm(this.filterData, 'noreload')
       },
       getProjectInfo: function (params) {
         const loading = this.showLoading()
@@ -311,7 +361,7 @@ var vNode = {
 			this.changeForKeyTip()
         },
         // 数据部分
-        getAllChartsData: function(str){
+        getAllChartsData: function(){
             var that = this
             $.ajax({
                 type:'POST',
@@ -325,9 +375,7 @@ var vNode = {
                     // console.log(res)
                     if(res.error_code == 0 && res.data) {
                         that.detailInfo = res.data
-                        if(!that.reStoreState()) {
-                          that.setFilterData(res.data, str)
-                        }
+                        that.setFilterData(res.data)
                         // 本周新增招标项目数量
                         if(res.data.zhao_matchitem && res.data.zhao_matchitem.length > 0){
                             that.curWeekAddBirds = that.formatterWinData(res.data.zhao_matchitem)
@@ -428,39 +476,35 @@ var vNode = {
                 }
             })
         },
-        resetFilter () {
-          this.getAllChartsData('reset')
-        },
-        setFilterData (data, str) {
+        // resetFilter () {
+        //   this.getAllChartsData('reset')
+        // },
+        setFilterData (data) {
           var that = this
           if(data.item && data.item.length > 0 && data.item.toString() != '') {
               that.filters.keywords = data.item.join('、')
               that.filters.keywordsList = data.item
-              if(str) {
-                this.filters.keys = []
-              }
           } else {
               that.filters.keywords = '--'
               that.filters.selectKeysArr = []
           }
           // 地区
           if (data.area) {
-            that.filters.area = data.area
+            that.initFilters.area = data.area
           } else {
-            that.filters.area = {}
+            that.initFilters.area = {}
           }
           // 采购单位类型
           if(data.buyerClass) {
-            that.filters.buyerclass = data.buyerClass
+            that.initFilters.buyerclass = data.buyerClass
           } else {
-            that.filters.buyerclass = []
+            that.initFilters.buyerclass = []
           }
           // 行业
           if(data.industry) {
-            that.filters.industry = data.industry
+            that.initFilters.industry = data.industry
           } else {
-            that.filters.industry = []
-            that.filters.industryDetail = {}
+            that.initFilters.industry = []
           }
           this.$forceUpdate()
         },

+ 0 - 1
src/jfw/modules/app/src/web/templates/big-member/page_report_analysis.html

@@ -333,7 +333,6 @@
                                   <area-component
                                       :multiple="false"
                                       :newprovincelist="reportFilters.area"
-                                      :showzxs="false"
                                       :showcountry="false"
                                       ref="areaSelector"
                                       @cancel="cancelSelectArea"

+ 1 - 1
src/jfw/modules/app/src/web/templates/big-member/page_report_analysis_pro_list.html

@@ -18,7 +18,7 @@
 <div class="j-container">
     {{include "/big-member/header.html"}}
     <div class="j-main" id="analysisList" v-cloak>
-      <filter-component @resetfilter="resetFilter" :switch="confirmSwitch" :show-tip="false" :show-select="false" :filtersdata="filters"  @confirm="confirm"></filter-component>
+      <filter-component :anyncdata="anyncData" :initfilters="initFilters" :switch="confirmSwitch" :show-tip="false" :show-select="false" :filtersdata="filters"  @confirm="confirm"></filter-component>
       <div class="project-detail-list" v-if="Object.keys(projectInfo).length != 0 && projectInfo.list.length > 0">
         <project-header :total="projectInfo.total"  @setsort="setsortType"></project-header>
         <van-list

+ 3 - 3
src/jfw/modules/app/src/web/templates/big-member/page_report_detail_month.html

@@ -90,7 +90,7 @@
 <body>
 <div class="j-container">
     {{include "/big-member/header.html"}}
-    <div id="report_month" class="j-main" v-cloak>
+    <div id="report_month" :class="'tab_'+tabActive" class="j-main" v-cloak>
         <div class="report_title">
             <div class="keyword">
                 <span>订阅关键词${keyTip == 'free' ? '' : '组'}:</span>
@@ -491,7 +491,7 @@
               </div>
             </div>
         </div>
-        <van-tabs v-else v-model:active="tabActive" :offset-top="stickyOffset"  sticky>
+        <van-tabs @change="setTabChange" v-else v-model:active="tabActive" :offset-top="stickyOffset"  sticky>
           <van-tab name="0" title="本月分析">
             <!-- 项目数量 1-->
             <div class="chart count_chart" v-if="isShow.show_1">
@@ -891,7 +891,7 @@
             </div>
           </van-tab>
           <van-tab name="1" title="本月项目明细">
-            <filter-component :switch="confirmSwitch" @resetfilter="resetFilter" :show-tip="false" :show-select="false" :filtersdata="filters" :keyphraseslist="filters.keywordsList" keyformat="phrases" @confirm="confirm"></filter-component>
+            <filter-component :initfilters="initFilters" :switch="confirmSwitch" :show-tip="false" :show-select="false" :filtersdata="filters" :keyphraseslist="filters.keywordsList" keyformat="phrases" @confirm="confirm"></filter-component>
             <div class="project-detail-list" v-if="Object.keys(projectInfo).length != 0 && projectInfo.list.length > 0">
               <project-header :total="projectInfo.total" @setsort="setsortType"></project-header>
               <van-list

+ 6 - 6
src/jfw/modules/app/src/web/templates/big-member/page_report_detail_week.html

@@ -117,7 +117,7 @@
 <body>
 <div class="j-container">
     {{include "/big-member/header.html"}}
-    <div id="report_week" class="j-main" v-cloak>
+    <div id="report_week" :class="'tab_'+tabActive" class="j-main" v-cloak>
         <div class="report_title">
             <div class="keyword">
                 <span>订阅关键词${keyTip == 'free' ? '' : '组'}:</span>
@@ -328,7 +328,7 @@
               <div class="mark-words" @click="goCollect('week_important_ent')">动态跟踪关注企业的最新中标项目,实时监控友商!<em class="mark-icon-right"></em></div>
           </div>
         </div>
-        <van-tabs v-else v-model:active="tabActive" :offset-top="stickyOffset" sticky>
+        <van-tabs v-else @change="setTabChange" v-model:active="tabActive" :offset-top="stickyOffset" sticky>
           <van-tab name="0" title="本周分析">
             <!-- 本周新增招标项目数量 -->
             <div class="chart" v-if="showCurWeekAdd">
@@ -414,12 +414,12 @@
                             </template>
                             <template #label>
                               <span>预算金额:</span>
-                              <span>${ item.budget || '--' }万元</span>
+                              <span>${ item.budget || '--' }${ item.budget ? '万元' : ''}</span>
                             </template>
                           </van-cell>
                         </div>
                         <div class="project-unit">
-                          <van-cell is-link @click="setWinnerLink($event, item)">
+                          <van-cell is-link @click="setWinnerLink(item.id)">
                             <template #title>
                               <div class="unit_title">
                                 <span>中标单位:</span>
@@ -428,7 +428,7 @@
                             </template>
                             <template #label>
                               <span>中标金额:</span>
-                              <span>${ item.bidamount || '--' }万元</span>
+                              <span>${ item.bidamount || '--' }${ item.bidamount ? '万元' : ''}</span>
                             </template>
                           </van-cell>
                         </div>
@@ -548,7 +548,7 @@
             </div>
           </van-tab>
           <van-tab name="1" title="本周项目明细">
-            <filter-component :switch="confirmSwitch" :show-tip="false" @resetfilter="resetFilter" :show-select="false" :filtersdata="filters" :keyphraseslist="filters.keywordsList" keyformat="phrases" @confirm="confirm"></filter-component>
+            <filter-component :switch="confirmSwitch" :show-tip="false" :show-select="false" :filtersdata="filters" :initfilters="initFilters" :keyphraseslist="filters.keywordsList" keyformat="phrases" @confirm="confirm"></filter-component>
             <div class="project-detail-list" v-if="Object.keys(projectInfo).length != 0 && projectInfo.list.length > 0">
               <project-header :total="projectInfo.total" @setsort="setsortType"></project-header>
               <van-list

+ 1 - 1
src/web/staticres/common-module/collection/js/area-city-mobile.js

@@ -112,7 +112,7 @@ var areaCityMobileComponent = {
     getData: function (newData) {
       var provinceListMapExp = this.provinceListMapExp
       // 从父组件传进来的地区
-      if (newData) {
+      if (newData && JSON.stringify(newData) !== '{}') {
         let newProList = []
         Object.keys(provinceListMapExp).forEach((v, i) => {
           provinceListMapExp[v].forEach(m => {

+ 36 - 2
src/web/staticres/common-module/collection/js/cate-mobile.js

@@ -91,7 +91,7 @@ var cateComponent = {
     }
   },
   created () {
-    this.getData()
+    this.setNewSelect()
     this.setState()
     this.getbBtnClick()
   },
@@ -119,9 +119,14 @@ var cateComponent = {
       }
     },
     // 获取数据
-    getData: function(){
+    getData: function(data){
       const _this = this
       let maxarr = []
+      if(data) {
+        _this.tablist = data
+      } else {
+        _this.tablist = cateSimpleList
+      }
       _this.tablist.forEach(function(item,index) {
         let minarr = []
         let keyname = Object.keys(item)[0]
@@ -141,6 +146,35 @@ var cateComponent = {
       })
       _this.tablist = maxarr
     },
+    // 设置新的备选项
+    setNewSelect (buyerClass) {
+      if(!buyerClass) {
+        this.getData()
+      } else {
+        var allValues = [];
+        for (var i = 0; i < cateSimpleList.length; i++) {
+          var obj = cateSimpleList[i];
+          for (var key in obj) {
+            allValues = allValues.concat(obj[key]);
+          }
+        }
+
+        var result = [];
+        for (var i = 0; i < allValues.length; i++) {
+          var value = allValues[i];
+          if (buyerClass.indexOf(value) !== -1) {
+            result.push(value);
+          }
+        }
+
+        var output = [{
+          '党政机关事业单位': result.filter(value => cateSimpleList[0]['党政机关事业单位'].includes(value))
+        }, {
+          '企业': result.filter(value => cateSimpleList[1]['企业'].includes(value))
+        }]
+        this.getData(output)
+      }
+    },
     // 总全选
     checkBoxAll:function() {
       if(this.checkedAll){

+ 69 - 33
src/web/staticres/common-module/filter/js/filter_limit.js

@@ -195,6 +195,18 @@ var filterComponent = {
         }
       }
     },
+    initfilters: {
+      type: Object,
+      default () {
+        return {
+          keys: [],
+          area: {},
+          industry: [],
+          industryDetail: {},
+          buyerclass: []
+        }
+      },
+    },
     filterAction: {
       type: Object,
       default () {
@@ -225,9 +237,26 @@ var filterComponent = {
           }
         }
       }
+    },
+    anyncdata: {
+      type: Boolean,
+      default: false
     }
   },
   watch: {
+    anyncdata: {
+      handler (newval) {
+        if(newval) {
+          this.$refs.areaCitySelector.getData(this.initfilters.area)
+          if(this.initfilters.buyerclass.length > 0) {
+            this.$refs.buyerclassSelector.setNewSelect(this.initfilters.buyerclass)
+          } else {
+            this.$refs.buyerclassSelector.setNewSelect()
+          }
+        }
+      },
+      immediate: true
+    },
     filtersdata: {
       handler (newval) {
         Object.assign(this.filters, newval)
@@ -258,9 +287,6 @@ var filterComponent = {
         }
       },
       immediate: true
-    },
-    keyphraseslist (newval) {
-      console.log(newval)
     }
   },
   data () {
@@ -297,8 +323,18 @@ var filterComponent = {
     }
   },
   mounted () {
-    if (Object.keys(this.arealist).length > 0) {
-      this.$refs.areaCitySelector.getData(this.arealist)
+    // if (Object.keys(this.arealist).length > 0) {
+    //   this.$refs.areaCitySelector.getData(this.arealist)
+    // }
+    try {
+      this.$refs.areaCitySelector.getData(this.initfilters.area)
+      if(this.initfilters.buyerclass.length > 0) {
+        this.$refs.buyerclassSelector.setNewSelect(this.initfilters.buyerclass)
+      } else {
+        this.$refs.buyerclassSelector.setNewSelect()
+      }
+    } catch (error) {
+      
     }
   },
   methods: {
@@ -314,6 +350,7 @@ var filterComponent = {
       if (key === 'keys') {
         filters.keys = e.detail
         filters.selectKeysArr = e.data
+        this.anyncdata = false
       } else if (key === 'area') {
         filters.area = e.data
       } else if (key === 'industry') {
@@ -368,7 +405,7 @@ var filterComponent = {
         if (this.notSetKey) {
           return this.setKeyTip()
         }
-        if(this.filters.selectKeysArr.length > 0) {
+        if(this.filters.selectKeysArr && this.filters.selectKeysArr.length > 0) {
           _this.$refs.keywordSelector.setState(this.filters.selectKeysArr.join(','))
         }
       } else if (key === 'area') {
@@ -496,33 +533,32 @@ var filterComponent = {
     },
     // 重置
     resetFilter: function (type) {
-      // var filters = this.filters
-      // if (type === 'keys') {
-      //   filters.keys = []
-      //   filters.selectKeysArr = []
-      //   try {
-      //     this.$refs.keywordSelector.resetAllNoSelect()
-      //   } catch (error) {}
-      // } else if (type === 'area') {
-      //   filters.area = {}
-      // } else if (type === 'industry') {
-      //   filters.industry = []
-      //   filters.industryDetail = {}
-      // } else if (type === 'buyerclass') {
-      //   filters.buyerclass = []
-      // } else if (type === 'date') {
-      //   // this.filters.rangeTime.start = ''
-      //   // this.filters.rangeTime.edd = ''
-      //   // this.filters.rangeTime.exact = 'sinceYearBeforeLast'
-      //   // this.initDateTimeSelector(this.filters.rangeTime.exact)
-      // } else {
-      //   this.resetFilter('keys')
-      //   this.resetFilter('area')
-      //   this.resetFilter('industry')
-      //   this.resetFilter('buyerclass')
-      //   this.resetFilter('date')
-      // }
-      this.$emit('resetfilter')
+      var filters = this.filters
+      if (type === 'keys') {
+        filters.keys = []
+        filters.selectKeysArr = []
+        try {
+          this.$refs.keywordSelector.resetAllNoSelect()
+        } catch (error) {}
+      } else if (type === 'area') {
+        filters.area = {}
+      } else if (type === 'industry') {
+        filters.industry = []
+        filters.industryDetail = {}
+      } else if (type === 'buyerclass') {
+        filters.buyerclass = []
+      } else if (type === 'date') {
+        // this.filters.rangeTime.start = ''
+        // this.filters.rangeTime.edd = ''
+        // this.filters.rangeTime.exact = 'sinceYearBeforeLast'
+        // this.initDateTimeSelector(this.filters.rangeTime.exact)
+      } else {
+        this.resetFilter('keys')
+        this.resetFilter('area')
+        this.resetFilter('industry')
+        this.resetFilter('buyerclass')
+        this.resetFilter('date')
+      }
     },
     toSubManageButtonClick: function () {
       if (this.isSubCount) {

+ 38 - 24
src/web/staticres/common-module/report-analysis/js/report_analysis_pro_list.js

@@ -27,6 +27,13 @@ var vm = new Vue({
       },
       rangeTimeExtra: 'sinceYearBeforeLast',
     },
+    initFilters: {
+      keys: [],
+      area: {},
+      industry: [],
+      industryDetail: {},
+      buyerclass: []
+    },
     listParams: {
       sort: 0, // 项目明细排序方式
       pageSize: 10,
@@ -34,15 +41,18 @@ var vm = new Vue({
     },
     filterData: {},
     projectInfo: {},
-    confirmSwitch: false
+    confirmSwitch: false,
+    anyncData: false // 获取筛选条件结束后置为true,传到filter-limit组件设置筛选条件初始值
   },
   computed: {
   },
-  mounted: function () {
+  created: function () {
     const recover = this.reStoreState()
     if (!recover) {
       this.getFilterData()
     }
+  },
+  mounted: function () {
     utils.iosBackRefresh()
   },
   methods: {
@@ -54,7 +64,8 @@ var vm = new Vue({
         listParams: this.listParams,
         filterData: this.filterData,
         projectInfo: this.projectInfo,
-        vanlistParams: this.vanlistParams
+        vanlistParams: this.vanlistParams,
+        initFilters: this.initFilters
       }
       sessionStorage.setItem(this.sessStorageKey, JSON.stringify($data))
     },
@@ -68,7 +79,7 @@ var vm = new Vue({
         Object.assign(this.filterData, $data.filterData)
         Object.assign(this.projectInfo, $data.projectInfo)
         Object.assign(this.vanlistParams, $data.vanlistParams)
-
+        Object.assign(this.initFilters, $data.initFilters)
         setTimeout(function () {
           // 恢复滚动高度
           this.setScrollTop(this.vanlistParams.scrollTop)
@@ -91,9 +102,6 @@ var vm = new Vue({
         this.vanlistParams.scrollTop = parseInt(wrapper.scrollTop)
       }
     },
-    resetFilter () {
-      this.getFilterData()
-    },
     // 获取筛选条件并回显
     getFilterData () {
       $.ajax({
@@ -107,6 +115,7 @@ var vm = new Vue({
           if (res.error_code === 0) {
             this.sortReportFilters(res.data)
             this.confirmSwitch = true
+            this.anyncData = true
           } else {
             this.$toast(res.error_msg)
           }
@@ -116,16 +125,17 @@ var vm = new Vue({
     // 整理数据,并赋值给filters
     sortReportFilters (data) {
       if (data.keysItems && data.keysItems !== '[]') {
-        this.filters.keys = JSON.parse(data.keysItems)
-        var keyArr = []
-        this.filters.keys.forEach(function (classify) {
-          if(Array.isArray(classify.a_key)) {
-            classify.a_key.forEach(function (item) {
-              keyArr.push(item.key.join(' '))
-            })
-          }
-        })
-        this.filters.selectKeysArr = keyArr
+        // this.filters.keys = JSON.parse(data.keysItems)
+        this.initFilters.keys = JSON.parse(data.keysItems)
+        // var keyArr = []
+        // this.filters.keys.forEach(function (classify) {
+        //   if(Array.isArray(classify.a_key)) {
+        //     classify.a_key.forEach(function (item) {
+        //       keyArr.push(item.key.join(' '))
+        //     })
+        //   }
+        // })
+        // this.initFilters.keys = keyArr
       }
       if(data.s_rangeTimeExtra) {
         this.filters.rangeTimeExtra = data.s_rangeTimeExtra
@@ -141,7 +151,7 @@ var vm = new Vue({
         }
       }
       if (data.area && data.area !== '{}') {
-        this.filters.area = JSON.parse(data.area)
+        this.initFilters.area = JSON.parse(data.area)
       }
       if (data.industry && data.industry !== '{}') {
         this.$set(this.filters, 'industryDetail', JSON.parse(data.industry))
@@ -154,7 +164,7 @@ var vm = new Vue({
         this.filters.industry = industry
       }
       if (data.buyerclass) {
-        this.filters.buyerclass = data.buyerclass.split(',')
+        this.initFilters.buyerclass = data.buyerclass.split(',')
       }
     },
     // 点击项目
@@ -184,18 +194,17 @@ var vm = new Vue({
     },
     // 设置排序方式
     setsortType (data) {
-      this.listParams.pageNum = 0
-      this.listParams.sort = data
+      this.filterData.pageNum = 0
+      this.filterData.sort = data
       this.onListLoad()
     },
     onListLoad: function () {
-      this.listParams.pageNum++
+      this.filterData.pageNum++
       this.vanlistParams.loading = true
-      this.confirm(this.filterData)
+      this.getProjectInfo(this.filterData)
     },
     // 查询项目明细
     confirm (data) {
-      this.filterData = data
       const { items, area, industry, industryDetail, buyerclass, buyer, winner, selectKeysArr } = data
       this.filters.keys = items
       this.filters.selectKeysArr = selectKeysArr
@@ -223,6 +232,11 @@ var vm = new Vue({
         rangeTime: parseInt(this.filters.rangeTime.start / 1000)+'-'+parseInt(this.filters.rangeTime.end / 1000),
         rangeTimeExtra: this.filters.rangeTimeExtra
       }
+      if(this.confirmSwitch) {
+        params.keysItems = JSON.stringify(this.initFilters.keys)
+        this.confirmSwitch = !this.confirmSwitch
+      }
+      this.filterData = params
       this.getProjectInfo(params)
     },
     getProjectInfo: function (params) {

+ 1 - 1
src/web/templates/big-member/wx/page_report_analysis_pro_list.html

@@ -29,7 +29,7 @@
 <body>
   <div class="j-container">
     <div class="j-main" id="analysisList" v-cloak>
-      <filter-component @resetfilter="resetFilter" :show-tip="false" :switch="confirmSwitch" :show-select="false" :filtersdata="filters"  @confirm="confirm"></filter-component>
+      <filter-component :anyncdata="anyncData" :initfilters="initFilters" :show-tip="false" :switch="confirmSwitch" :show-select="false" :filtersdata="filters"  @confirm="confirm"></filter-component>
       <div class="project-detail-list" v-if="Object.keys(projectInfo).length != 0 && projectInfo.list.length > 0">
         <project-header :total="projectInfo.total"  @setsort="setsortType"></project-header>
         <van-list