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

fix:移动端首页、标讯搜索页ui及交互优化调整

yangfeng 9 сар өмнө
parent
commit
328c579ddb

BIN
apps/mobile/src/assets/image/icon/hot.png


+ 1 - 1
apps/mobile/src/components/custom-report/index.vue

@@ -241,7 +241,7 @@ export default {
     align-items: center;
     padding: 0 16px;
     button {
-      width: 165px;
+      width: 156px;
       height: 40px;
       border-radius: 4px;
       font-family: 'PingFang SC';

+ 4 - 1
apps/mobile/src/components/home/HotKeyList.vue

@@ -122,7 +122,8 @@ export default {
   display: inline-block;
   width: 42px;
   height: 16px;
-  background: transparent url(@/assets/image/home-temp/hot-key-title@2x.png) no-repeat center;
+  background: transparent url(@/assets/image/home-temp/hot-key-title@2x.png)
+    no-repeat center;
   background-size: contain;
 }
 .hot-key-list {
@@ -133,6 +134,8 @@ export default {
   overflow: hidden;
 }
 .hot-key-item {
+  font-size: 14px;
+  line-height: 16px;
   &:not(:last-of-type) {
     margin-right: 8px;
   }

+ 28 - 7
apps/mobile/src/components/home/list.vue

@@ -174,7 +174,7 @@ import {
 } from '@/utils'
 import { LINKS } from '@/data'
 import qs from 'qs'
-import { mapState, mapGetters } from 'vuex'
+import { mapState, mapGetters, mapActions } from 'vuex'
 import { ipRegExp } from '@/utils/constant'
 export default {
   name: 'home-list',
@@ -236,7 +236,7 @@ export default {
     showToSettingTip() {
       return this.showTip === 2 && this.showSetTip
     },
-    ...mapGetters('user', ['isLogin', 'isFree'])
+    ...mapGetters('user', ['isLogin', 'isFree', 'vSwitch'])
   },
   watch: {
     showToSettingTip(n) {
@@ -264,8 +264,11 @@ export default {
   },
   mounted() {
     this.calcTipBottom()
+    // 获取用户当前vSwitch状态
+    this.userVipSwitchState()
   },
   methods: {
+    ...mapActions('user', ['userVipSwitchState']),
     calcTipBottom() {
       const footer = document.querySelector('.footer-box')
       const settingTip = this.$refs.settingTip
@@ -480,11 +483,13 @@ export default {
       })
     },
     gotoKeySettingPage() {
-      if (this.isFree) {
-        this.onClickTip('goSubKey')
-      } else {
-        this.onClickTip('goSubSetting')
-      }
+      // P611需求:去设置进入“我的订阅-订阅管理页”,如有多套订阅,则进入当前订阅列表所选产品页
+      // if (this.isFree) {
+      //   this.onClickTip('goSubKey')
+      // } else {
+      //   this.onClickTip('goSubSetting')
+      // }
+      this.onClickTip('goPublicSubSetting')
     },
     onClickTip(type) {
       if (!this.isLogin) {
@@ -511,6 +516,22 @@ export default {
           callChangeTab('subscribe', this.$router)
           break
         }
+        case 'goPublicSubSetting': {
+          if (this.vSwitch === 's') {
+            openLinkOfOther(
+              '/page_entniche_new/page/subsetting/sub_entrance.html'
+            )
+          } else if (this.vSwitch === 'v' || this.vSwitch === 'm') {
+            openAppOrWxPage(LINKS.订阅管理页面, {
+              query: {
+                vSwitch: this.vSwitch
+              }
+            })
+          } else {
+            openAppOrWxPage(LINKS.订阅管理页面)
+          }
+          break
+        }
       }
     },
     /**

+ 1 - 0
apps/mobile/src/components/message/message-card.vue

@@ -304,6 +304,7 @@ export default {
   }
   .message-group {
     //max-width: 315px;
+    width: 100%;
     transition: transform 0.5s ease; /* 添加过渡效果 */
   }
   .message-item {

+ 17 - 9
apps/mobile/src/components/search/bidding/filters.vue

@@ -357,20 +357,16 @@
       <PopupLayout @closeIconClick="popup.infoType = false">
         <div slot="title">
           <span>请选择信息类型</span>
-          <span class="popup-sub-title" v-if="infoTypeSourceConf.name">
+          <!-- <span class="popup-sub-title" v-if="infoTypeSourceConf.name">
             &nbsp;&nbsp;/&nbsp;&nbsp;{{ infoTypeSourceConf.title }}
-          </span>
+          </span> -->
         </div>
-        <InfoTypeOneClassify
+        <!-- <InfoTypeOneClassify
           ref="infoTypeSelector"
           :sourceType="infoTypeSourceConf.name"
           v-if="infoTypeSourceConf.name"
-        />
-        <InfoTypeSidebar
-          ref="infoTypeSelector"
-          v-else
-          :sourceType="infoTypeSourceConf.name"
-        />
+        /> -->
+        <InfoTypeSidebar ref="infoTypeSelector" />
         <div slot="footer">
           <div class="j-button-group height40">
             <button class="j-button-cancel" @click="popupReset('infoType')">
@@ -1451,6 +1447,9 @@ export default {
   .mr-4 {
     margin-right: 4px;
   }
+  .van-dropdown-menu__title {
+    color: $gray_9;
+  }
 }
 
 .fix-pop-height {
@@ -1498,6 +1497,15 @@ export default {
 }
 .more-filter-item {
   ::v-deep {
+    .date-time-selector-content {
+      .jy-checkbox {
+        width: 108px;
+        text-align: center;
+        &:nth-child(3n) {
+          margin-right: 0;
+        }
+      }
+    }
     .j-row-cell-content {
       padding: 12px 0;
     }

+ 0 - 6
apps/mobile/src/views/article/content.vue

@@ -720,12 +720,6 @@ export default {
 
 <style lang="scss" scoped>
 ::v-deep {
-  .article-title,
-  .content-main-text {
-    .highlight-text {
-      color: $orange_red;
-    }
-  }
   .van-tabs__wrap {
     padding-bottom: 4px;
     border-bottom: 1px solid rgba(0, 0, 0, 0.05);

+ 8 - 10
apps/mobile/src/views/search/middle/bidding/index.vue

@@ -195,7 +195,8 @@ export default {
         BIDDING_SEARCH_GROUP_LAST_CACHE_KEY,
         false
       )
-      if (params) {
+      // P611修复遗漏问题:搜索中间页信息类型免费用户不存上次选择的信息类型
+      if (params && !this.isFree) {
         this.searchGroup = params.searchGroup
       }
     },
@@ -492,7 +493,7 @@ export default {
     //content: attr(data-badge);
     position: absolute;
     right: -1px;
-    top: -1px;
+    top: -3px;
     //padding: 2px 6px;
     //font-size: 10px;
     //line-height: 14px;
@@ -510,7 +511,7 @@ export default {
 }
 
 .search-type-tab-container {
-  padding: 10px 16px;
+  padding: 10px 25px;
   display: flex;
   background: linear-gradient(#2abed11f, #2abed100);
 
@@ -518,14 +519,11 @@ export default {
     padding: 1px 12px;
     font-size: 12px;
     line-height: 22px;
-    color: #5f5e64;
+    color: #171826;
     border-radius: 12px;
-    background: linear-gradient(
-      180deg,
-      rgba(255, 255, 255, 0) 0%,
-      #ffffff 100%
-    );
-    box-shadow: 0px 2px 8px 0px #15abda33;
+    white-space: nowrap;
+    background: linear-gradient(180deg, #ffffff 0%, #f7f9fa 100%);
+    box-shadow: 0px 4px 2px 0px #3693b31f;
     &:not(:last-of-type) {
       margin-right: 12px;
     }

+ 29 - 18
apps/mobile/src/views/search/result/bidding/index.vue

@@ -87,7 +87,7 @@
         <AppIcon name="tishi" /> {{ interceptTipText }}
       </div>
       <!-- 超前项目推荐 & 定制化分析报告 P611需求:将报告插到列表第一条数据后面位置 -->
-      <div class="recommend-card-container">
+      <div class="recommend-card-container" v-show="cardLoaded">
         <RecommendCard
           v-if="recommendInfo.show"
           :key="recommendInfo.key"
@@ -331,18 +331,6 @@
       </van-list>
       <div class="table-container" v-show="pageState.listTabActive === 'table'">
         <div class="scroll" v-show="listState.list.length">
-          <div class="recommend-card-table">
-            <RecommendCard
-              v-if="recommendInfo.show"
-              :key="recommendInfo.key"
-              v-model="recommendInfo.showContent"
-              :chart-data="recommendInfo.chart"
-              :brief-list="recommendInfo.brief"
-              :project-list="recommendInfo.project"
-              :keys="pageState.splitKeys"
-              @do-leave="saveState"
-            />
-          </div>
           <table class="table">
             <tr class="table-header">
               <td v-if="containsNiJian">项目代码</td>
@@ -753,7 +741,8 @@ export default {
       scrollStatus: true,
       showPopover: false,
       popoverActions: [{ text: '精简' }, { text: '详细' }, { text: '表格' }],
-      lastScroll: 0
+      lastScroll: 0,
+      cardLoaded: false
     }
   },
   computed: {
@@ -988,12 +977,31 @@ export default {
               '推荐使用电脑浏览器访问剑鱼标讯网站\njianyu360.cn查看数据表格,体验更佳。'
           })
         }
+        // 市场分析报告插到表格头部位置
+        this.$nextTick(() => {
+          const recommend = document.querySelector('.recommend-card-container')
+          const table = document.querySelector('.table')
+          if (recommend && table) {
+            const parentNode = table.parentNode
+            parentNode.insertBefore(recommend, table)
+            this.cardLoaded = true
+          }
+        })
       } else {
         this.$toast.clear()
+        // 市场分析报告插到第一条数据后面位置
+        this.$nextTick(() => {
+          const recommend = document.querySelector('.recommend-card-container')
+          const cellList = document.querySelectorAll('.project-cell')
+          if (recommend && cellList[0]) {
+            const parentNode = cellList[0].parentNode
+            parentNode.insertBefore(recommend, cellList[0].nextSibling)
+            this.cardLoaded = true
+          }
+        })
       }
     },
     searchList(list) {
-      // && this.recommendInfo.show
       if (list && list.length) {
         // 市场分析报告插到第一条数据后面位置
         this.$nextTick(() => {
@@ -1002,6 +1010,7 @@ export default {
           if (recommend && cellList[0]) {
             const parentNode = cellList[0].parentNode
             parentNode.insertBefore(recommend, cellList[0].nextSibling)
+            this.cardLoaded = true
           }
         })
       }
@@ -2432,6 +2441,9 @@ export default {
        * */
       let labelList = formattedList
         .filter((v) => {
+          if (v.label === '搜索范围:') {
+            v.text = v.text.replace(/搜索/g, '')
+          }
           if (this.topSearch.input) {
             return v
           } else {
@@ -2696,7 +2708,7 @@ export default {
     scrollWrapFn(e) {
       const scrollDOM = e.target
       const scrollTop = scrollDOM.scrollTop
-      this.recommendInfo.showContent = false
+      // this.recommendInfo.showContent = false
 
       // if (scrollTop >= this.conf.tabSwitchShowOffset) {
       //   this.pageState.tabSwitchShow = false
@@ -2704,10 +2716,8 @@ export default {
       //   this.pageState.tabSwitchShow = true
       // }
       if (scrollTop > this.lastScroll) {
-        // console.log('Scroll down')
         this.pageState.tabSwitchShow = false
       } else {
-        // console.log('Scroll up')
         this.pageState.tabSwitchShow = true
       }
       this.lastScroll = scrollTop
@@ -3201,6 +3211,7 @@ export default {
   background: #fff;
   &-left {
     flex: 1;
+    margin-right: 4px;
     &-label {
       color: #171826;
       font-size: 13px;

+ 1 - 1
apps/mobile/src/views/tabbar/Home.vue

@@ -645,7 +645,7 @@ export default {
   }
 
   .hot-key-wrapper {
-    padding: 0 8px 8px;
+    padding: 0 16px 8px;
   }
 
   .home-content-container {