Browse Source

feat:留资弹窗图片修改、数据回显

tsz 2 năm trước cách đây
mục cha
commit
23bfacec02

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

@@ -9,11 +9,8 @@ var vNode = {
       empty: emptyComponent
     },
     data: {
-        scrollTop:0,
+        sessStorageKey: '$data-report_month',
         barChart: barChart,
-        keywords:'',
-        area: {},
-        keywordsList: [],
         keyTip: '',
         dateVal:'',
         settings1:{
@@ -133,7 +130,8 @@ var vNode = {
         detailInfo: {},
         vanlistParams: {
           loading: false,
-          finished: false
+          finished: false,
+          scrollTop:0
         },
         listParams: {
           sort: 0, // 项目明细排序方式
@@ -142,6 +140,16 @@ var vNode = {
           start: parseInt(utils.getParam('start')),
           end: parseInt(utils.getParam('end'))
         },
+        filters: {
+          selectKeysArr: [], // 关键词简单数组,用于恢复选择状态
+          keys: [], // 关键词详细数组,用于提交数据
+          area: {},
+          industry: [],
+          industryDetail: {},
+          buyerclass: [],
+          keywords:'',
+          keywordsList: [],
+        },
         filterData: {},
         stickyOffset: 0
     },
@@ -182,19 +190,19 @@ var vNode = {
         this.getPowerInfo()
     },
     mounted() {
-        this.getAllChartsData();
+      const recover = this.reStoreState()
+      if(!recover) {
+        this.getAllChartsData()
         if (this.$refs['chartRegCount']) {
           this.$refs['chartRegCount'].echarts.resize()
         }
-        setTimeout(() => {
-            this.reStoreState()
-        }, 500);
-        utils.iosBackRefresh()
-        const observer = new IntersectionObserver(this.handleIntersection, {
-          root: null, // 默认为浏览器视窗
-          threshold: 0, // 交叉比例,0为完全进入视窗
-        });
-        observer.observe(this.$refs.reportSource)
+      }
+      // utils.iosBackRefresh()
+      const observer = new IntersectionObserver(this.handleIntersection, {
+        root: null, // 默认为浏览器视窗
+        threshold: 0, // 交叉比例,0为完全进入视窗
+      });
+      observer.observe(this.$refs.reportSource)
     },
     methods: {
       handleIntersection(entries) {
@@ -207,15 +215,15 @@ var vNode = {
       },
       // 点击项目
       setLinkUrl () {
-        this.saveScrollTop()
+        this.saveState()
         location.href = '/jyapp/big/page/pro_follow_detail'
       },
       setBuyerLink (data) {
-        this.saveScrollTop()
+        this.saveState()
         location.href = '/jyapp/big/page/unit_portrayal?entName=' + data.buyer
       },
       setWinnerLink (id) {
-        this.saveScrollTop()
+        this.saveState()
         location.href = '/jyapp/big/page/ent_portrait?eId=' + id
       },
       // 设置排序方式
@@ -234,6 +242,15 @@ var vNode = {
       // 查询项目明细
       confirm (data) {
         this.filterData = data
+        const { area, buyerclass, industry, items, buyer, winner } = data
+        this.filters.area = area
+        this.filters.buyerclass = buyerclass
+        this.filters.industryDetail = industry
+        this.filters.industry = industry
+        this.filters.keys = items
+        this.filters.selectKeysArr = items
+        this.filters.buyer = buyer
+        this.filters.winner = winner
         const params = {
           ...this.listParams,
           ...data
@@ -291,34 +308,48 @@ var vNode = {
           this.stickyOffset = headerHeight - 2
         }.bind(this), 100)
       },
+      // 保存页面状态
+      saveState: function () {
+        this.saveScrollTop()
+        var $data = {
+          tabActive: this.tabActive,
+          listParams: this.listParams,
+          vanlistParams: this.vanlistParams,
+          filterData: this.filterData,
+          detailInfo: this.detailInfo,
+          projectInfo: this.projectInfo,
+          filters: this.filters
+        }
+        sessionStorage.setItem(this.sessStorageKey, JSON.stringify($data))
+      },
       saveScrollTop: function () {
-        var wrapper = document.querySelector('.j-container .j-main')
+        var wrapper = document.getElementById('report_month')
         if (wrapper.scrollTop) {
-          this.scrollTop = parseInt(wrapper.scrollTop)
-        }
-        var $data = {
-          scrollTop: this.scrollTop, 
+          this.vanlistParams.scrollTop = parseInt(wrapper.scrollTop)
         }
-        sessionStorage.setItem('$data_month', JSON.stringify($data))
       },
       reStoreState: function () {
-        var $data = sessionStorage.getItem('$data_month')
+        var $data = sessionStorage.getItem(this.sessStorageKey)
         if ($data) {
           $data = JSON.parse($data)
-          this.scrollTop = $data.scrollTop
-        
+          Object.assign(this.listParams, $data.listParams)
+          Object.assign(this.vanlistParams, $data.vanlistParams)
+          Object.assign(this.filterData, $data.filterData)
+          Object.assign(this.detailInfo, $data.detailInfo)
+          Object.assign(this.projectInfo, $data.projectInfo)
+          Object.assign(this.filters, $data.filters)
+          this.tabActive = $data.tabActive,
           setTimeout(function () {
             // 恢复滚动高度
-            this.setScrollTop(this.scrollTop)
+            this.setScrollTop(this.vanlistParams.scrollTop)
           }.bind(this), 0)
-  
-          sessionStorage.removeItem('$data_month')
-        } 
-  
+          sessionStorage.removeItem(this.sessStorageKey)
+          return $data
+        }
       },
       setScrollTop: function (scrollTop) {
         this.$nextTick(function () {
-          var wrapper = document.querySelector('.j-container .j-main')
+          var wrapper = document.getElementById('report_month')
           wrapper.scrollTop = scrollTop
         })
       },
@@ -498,14 +529,23 @@ var vNode = {
                         // 关键词组
                         that.detailInfo = res.data
                         if(res.data.item && res.data.item.length > 0 && res.data.item.toString() != '') {
-                            that.keywords = res.data.item.join('、')
-                            that.keywordsList = res.data.item
+                            that.filters.keywords = res.data.item.join('、')
+                            that.filters.keywordsList = res.data.item
+                            that.filters.selectKeysArr = res.data.item
                         } else {
-                            that.keywords = '--'
+                            that.filters.keywords = '--'
                         }
                         // 地区
                         if (res.data.area) {
-                          that.area = res.data.area
+                          that.filters.area = res.data.area
+                        }
+                        // 采购单位类型
+                        if(res.data.buyerClass) {
+                          that.filters.buyerclass = res.data.buyerClass
+                        }
+                        // 行业
+                        if(res.data.industry) {
+                          that.filters.industry = res.data.industry
                         }
                         // 项目数量 1
                         if (res.data.project_count && res.data.project_count.length > 0) {

+ 36 - 10
src/jfw/modules/app/src/web/staticres/jyapp/big-member/js/report_detail_week.js

@@ -71,6 +71,16 @@ var vNode = {
           start: parseInt(utils.getParam('start')),
           end: parseInt(utils.getParam('end'))
         },
+        filters: {
+          selectKeysArr: [], // 关键词简单数组,用于恢复选择状态
+          keys: [], // 关键词详细数组,用于提交数据
+          area: {},
+          industry: [],
+          industryDetail: {},
+          buyerclass: [],
+          keywords:'',
+          keywordsList: [],
+        },
         filterData: {},
         stickyOffset: 0
     },
@@ -88,8 +98,8 @@ var vNode = {
       const recover = this.reStoreState()
       if(!recover) {
         this.getUserPower()
+        this.getAllChartsData()
       }
-      this.getAllChartsData()
       const observer = new IntersectionObserver(this.handleIntersection, {
         root: null, // 默认为浏览器视窗
         threshold: 0, // 交叉比例,0为完全进入视窗
@@ -107,8 +117,7 @@ var vNode = {
           filterData: this.filterData,
           detailInfo: this.detailInfo,
           projectInfo: this.projectInfo,
-          keywordsList: this.keywordsList,
-          keywords: this.keywords,
+          filters: this.filters
         }
         sessionStorage.setItem(this.sessStorageKey, JSON.stringify($data))
       },
@@ -121,9 +130,8 @@ var vNode = {
           Object.assign(this.filterData, $data.filterData)
           Object.assign(this.detailInfo, $data.detailInfo)
           Object.assign(this.projectInfo, $data.projectInfo)
-          this.keywordsList = $data.keywordsList,
-          this.tabActive = $data.tabActive,
-          this.keywords = $data.keywords
+          Object.assign(this.filters, $data.filters)
+          this.tabActive = $data.tabActive
 
           setTimeout(function () {
             // 恢复滚动高度
@@ -195,6 +203,15 @@ var vNode = {
       // 查询项目明细
       confirm (data) {
         this.filterData = data
+        const { area, buyerclass, industry, items, buyer, winner } = data
+        this.filters.area = area
+        this.filters.buyerclass = buyerclass
+        this.filters.industryDetail = industry
+        this.filters.industry = industry
+        this.filters.keys = items
+        this.filters.selectKeysArr = items
+        this.filters.buyer = buyer
+        this.filters.winner = winner
         const params = {
           ...this.listParams,
           ...data
@@ -297,14 +314,23 @@ var vNode = {
                     if(res.error_code == 0 && res.data) {
                         that.detailInfo = res.data
                         if(res.data.item && res.data.item.length > 0 && res.data.item.toString() != '') {
-                            that.keywords = res.data.item.join('、')
-                            that.keywordsList = res.data.item
+                            that.filters.keywords = res.data.item.join('、')
+                            that.filters.keywordsList = res.data.item
+                            that.filters.selectKeysArr = res.data.item
                         } else {
-                            that.keywords = '--'
+                            that.filters.keywords = '--'
                         }
                         // 地区
                         if (res.data.area) {
-                          that.area = res.data.area
+                          that.filters.area = res.data.area
+                        }
+                        // 采购单位类型
+                        if(res.data.buyerClass) {
+                          that.filters.buyerclass = res.data.buyerClass
+                        }
+                        // 行业
+                        if(res.data.industry) {
+                          that.filters.industry = res.data.industry
                         }
                         // 本周新增招标项目数量
                         if(res.data.zhao_matchitem && res.data.zhao_matchitem.length > 0){

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

@@ -94,7 +94,7 @@
         <div class="report_title">
             <div class="keyword">
                 <span>订阅关键词${keyTip == 'free' ? '' : '组'}:</span>
-                <span>${keywords} </span>
+                <span>${filters.keywords} </span>
             </div>
             <van-cell-group>
                 <!-- <van-cell title-class="keyword" title="订阅关键词组:" :value="keywords"></van-cell> -->
@@ -111,7 +111,7 @@
             <p>项目重复统计:一个招标项目可能同属于多个关键词组,故各关键词组的数据统计之和可能大于整体市场的统计。</p>
         </div>
         <!--  || !detailInfo.isNewData -->
-        <div v-if="utils.getParam('type')!='member'">
+        <div v-if="utils.getParam('type')!='member' || !detailInfo.isNewData">
           <!-- 项目数量 1-->
           <div class="chart count_chart" v-if="isShow.show_1">
             <div class="chart_title">项目数量</div>
@@ -891,7 +891,7 @@
             </div>
           </van-tab>
           <van-tab name="1" title="本月项目明细">
-            <filter-component :show-tip="false" :show-select="false" :arealist="area" :keyphraseslist="keywordsList" keyformat="phrases" @confirm="confirm"></filter-component>
+            <filter-component :show-tip="false" :show-select="false" :filters="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

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

@@ -121,7 +121,7 @@
         <div class="report_title">
             <div class="keyword">
                 <span>订阅关键词${keyTip == 'free' ? '' : '组'}:</span>
-                <span>${keywords} </span>
+                <span>${filters.keywords} </span>
             </div>
             <van-cell-group>
                 <!-- <van-cell title-class="keyword" title="订阅关键词组:端点安全、网络安全、应用安全、数据安全、身份与访问管理、安全管理;"></van-cell> -->
@@ -138,7 +138,7 @@
             <p>项目重复统计:一个招标项目可能同属于多个关键词组,故各关键词组的数据统计之和可能大于整体市场的统计。</p>
         </div>
         <!--  || !detailInfo.isNewData -->
-        <div v-if="utils.getParam('type')!='member'">
+        <div v-if="utils.getParam('type')!='member' || !detailInfo.isNewData">
           <!-- 本周新增招标项目数量 -->
           <div class="chart" v-if="showCurWeekAdd">
             <div class="chart_title">本周新增招标项目数量</div>
@@ -520,7 +520,7 @@
             </div>
           </van-tab>
           <van-tab name="1" title="本周项目明细">
-            <filter-component :show-tip="false" :show-select="false" :arealist="area" :keyphraseslist="keywordsList" keyformat="phrases" @confirm="confirm"></filter-component>
+            <filter-component :show-tip="false" :show-select="false" :filters="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

BIN
src/web/staticres/common-module/collection/image/bg/vip_ex_6.png


BIN
src/web/staticres/common-module/collection/image/buyer/07.png


+ 7 - 2
src/web/staticres/common-module/filter/js/filter_limit.js

@@ -226,7 +226,7 @@ var filterComponent = {
   watch: {
     'filters.industry': {
       handler (newVal) {
-        if (!newVal.length) {
+        if (!newVal) {
           if (newVal && newVal !== '{}') {
             var industry = []
             for (var key in this.filters.industryDetail) {
@@ -275,6 +275,7 @@ var filterComponent = {
     }
   },
   mounted () {
+    console.log(this.keyphraseslist)
     if (Object.keys(this.arealist).length > 0) {
       this.$refs.areaCitySelector.getData(this.arealist)
     }
@@ -463,7 +464,11 @@ var filterComponent = {
       }
       if (this.keyformat == 'phrases') {
         query.items = this.filters.selectKeysArr
-        query.industry = Object.values(this.filters.industryDetail).flat()
+        if(!this.filters.industryDetail) {
+          this.filters.industryDetail = []
+        }
+        const result = Object.values(this.filters.industryDetail).reduce((acc, val) => acc.concat(val), [])
+        query.industry = result
       }
       this.$emit('confirm', query)
     },

BIN
src/web/staticres/common-module/report-analysis/image/05.png


BIN
src/web/staticres/common-module/report-analysis/image/06.png


BIN
src/web/staticres/common-module/report-analysis/image/07.png


BIN
src/web/staticres/common-module/report-analysis/image/08.png