소스 검색

fix: 列表分页置顶、移动端搜索历史逻辑调整

Signed-off-by: tangshizhe <48740614+tangshizhe@users.noreply.github.com>
tangshizhe 1 년 전
부모
커밋
b1a85373ea

+ 2 - 1
apps/bigmember_pc/src/components/push-list/PotentialList.vue

@@ -168,7 +168,7 @@ import { Pagination, Card, Button, Dialog, Popover } from 'element-ui'
 import Empty from '@/components/common/Empty.vue'
 import GroupCard from '@/components/selector/GroupSelector.vue'
 import monitorCom from '@/components/common/Monitor.vue'
-import { moneyUnit } from '@/utils/'
+import { moneyUnit, scrollTargetView } from '@/utils/'
 import { getCorList, getStatusCustomer } from '@/api/modules/'
 
 export default {
@@ -418,6 +418,7 @@ export default {
       }
     },
     onPageChange(p) {
+      scrollTargetView('.info-list')
       this.listState.pageNum = p
       // this.getList()
     },

+ 7 - 1
apps/bigmember_pc/src/components/push-list/ProjectProgressList.vue

@@ -114,7 +114,12 @@ import Tips from '@/components/common/Tips.vue'
 import Empty from '@/components/common/Empty.vue'
 import ArticleItem from '@/components/article-item/ArticleItem.vue'
 import BidrenewalDialog from '@/views/BidrenewalDialog/index.vue'
-import { dateFromNow, dateFormatter, replaceKeyword } from '@/utils/'
+import {
+  dateFromNow,
+  dateFormatter,
+  replaceKeyword,
+  scrollTargetView
+} from '@/utils/'
 import {
   getFollowProjectList,
   setFollowRemove30Day,
@@ -374,6 +379,7 @@ export default {
       }
     },
     onPageChange(p) {
+      scrollTargetView('.info-list')
       this.listState.pageNum = p
       let thisList = []
       const start = this.listState.pageSize * (this.listState.pageNum - 1)

+ 3 - 1
apps/bigmember_pc/src/components/push-list/PushList.vue

@@ -330,7 +330,8 @@ import {
   replaceKeyword,
   moneyUnit,
   openLinkInWorkspace,
-  formatFilterApiOther
+  formatFilterApiOther,
+  scrollTargetView
 } from '@/utils/'
 import { getEventTarget } from '@/utils/jq-help'
 import { mixinVisited } from '@/utils/mixins/visited'
@@ -1067,6 +1068,7 @@ export default {
       this.getNewData()
       this.listState.pageNum = p
       this.getList()
+      scrollTargetView('.info-list')
     },
     onSizeChange(size) {
       this.listState.pageSize = size

+ 5 - 0
apps/bigmember_pc/src/views/ent-intel/EntIntel.vue

@@ -43,6 +43,7 @@ import TabHeader from '@/components/common/TabHeader.vue'
 import ForFilter from '@/components/forecast/ForFilter.vue'
 import { mapState } from 'vuex'
 import { getEntFollowList } from '@/api/modules'
+import { scrollTargetView } from '@/utils/'
 export default {
   name: 'ent-intel',
   components: {
@@ -71,6 +72,7 @@ export default {
     })
   },
   created() {
+    // listData
     this.getMyFollowList()
   },
   mounted() {
@@ -79,6 +81,9 @@ export default {
   methods: {
     // 我关注的企业列表
     getMyFollowList(p = 0, match = '', group = '', pageSize = 10) {
+      this.$nextTick(() => {
+        scrollTargetView('.listData_ul')
+      })
       if (this.$refs.myList) {
         this.myDataObj.list = []
       }

+ 2 - 0
apps/bigmember_pc/src/views/ent-intel/MyClient.vue

@@ -236,6 +236,7 @@ import Empty from '@/components/common/Empty.vue'
 import { mixinVisited } from '@/utils/mixins/visited'
 import { mapState, mapGetters } from 'vuex'
 import { getPowerUrl } from '@/utils/power/redirect'
+import { scrollTargetView } from '@/utils/'
 import {
   followClientList,
   entNewFollowClientList,
@@ -479,6 +480,7 @@ export default {
       }
     },
     onPageChange(p) {
+      scrollTargetView('.client-list')
       this.client.pageNum = p
       this.getClientList()
     },

+ 9 - 1
apps/bigmember_pc/src/views/portrayal/components/DynamicList.vue

@@ -268,7 +268,12 @@ import ExportDialog from '@/components/dialog/Dialog.vue'
 import ExportTip from './DataExportTip.vue'
 import PortrayalArticleItem from './DynamicListItem.vue'
 import freetextTags from './freetextTags.vue'
-import { dateFormatter, formatMoney, dateFromNow } from '@/utils/'
+import {
+  dateFormatter,
+  formatMoney,
+  dateFromNow,
+  scrollTargetView
+} from '@/utils/'
 import $bus from '@/utils/bus'
 import { mapState } from 'vuex'
 import { mixinVisited } from '@/utils/mixins/visited'
@@ -949,6 +954,9 @@ export default {
       }
     },
     onPageChange(p) {
+      this.$nextTick(() => {
+        scrollTargetView('.info-list-card')
+      })
       if (!this.loginFlag && p > 1) {
         location.href = '/notin/page?close_goBack=1'
         return false

+ 10 - 1
apps/bigmember_pc/src/views/search/layout/search-list.vue

@@ -1,6 +1,7 @@
 <script setup>
 import Empty from '@/components/common/Empty.vue'
 import { computed } from 'vue'
+import { scrollTargetView } from '@/utils/'
 
 const props = defineProps({
   showSelect: {
@@ -67,6 +68,14 @@ const canShowPagination = computed(() => {
   if (!props.list.length) return false
   return props.listState.total > 0 && props.showPagination
 })
+
+const emit = defineEmits(['current-change'])
+function onCurrentChange($event) {
+  // 点分页定位到第一条
+  scrollTargetView('.search-result-container')
+  emit('current-change', $event)
+}
+
 </script>
 
 <template>
@@ -181,7 +190,7 @@ const canShowPagination = computed(() => {
             :page-sizes="[5, 10, 50, 100]"
             :total="listState.total"
             :show-confirm-btn="true"
-            @current-change="$emit('current-change', $event)"
+            @current-change="onCurrentChange($event)"
             @size-change="$emit('size-change', $event)"
           >
           </el-pagination>

+ 17 - 35
apps/bigmember_pc/src/views/search/nzj/model/base.js

@@ -68,44 +68,24 @@ export default function () {
   function perSortArticleItem(item, index) {
     const { pageNum, pageSize } = listState
     const tagList = []
-    if (item.area_city) {
-      tagList.push({
-        value: item.area_city,
-        className: 'grey'
-      })
-    }
-    if (item.ownerclass) {
-      tagList.push({
-        value: item.ownerclass,
-        className: 'grey'
-      })
-    }
-    if (item.project_stage) {
-      tagList.push({
-        value: item.project_stage,
-        className: 'grey'
-      })
-    }
-    if (item.category) {
-      tagList.push({
-        value: item.category,
-        className: 'grey'
-      })
-    }
-
-    // 检查是否访问过
-    // const visited = this.pathVisited(
-    //   this.createPathItem(
-    //     '/proposed/detail',
-    //     `pid=${item.proposed_id}`
-    //   )
-    // )
+    // 构建 tagList 数组
+    const arr = ['area_city', 'ownerclass', 'project_stage', 'category']
+    arr.forEach((property) => {
+      if (item[property]) {
+        tagList.push({
+          value: item[property],
+          className: 'grey'
+        })
+      }
+    })
+
+    // 计算索引
+    const indexInList = (pageNum - 1) * pageSize + index + 1
     const itemInfo = {
       ...item,
       tagList,
       time: item.publish_time ? item.publish_time * 1000 : 0,
-      index: (pageNum - 1) * pageSize + index + 1
-      // visited
+      index: indexInList
     }
     return itemInfo
   }
@@ -124,7 +104,9 @@ export default function () {
   // 进入工作台
   const goWorkSpace = () => {
     const goHref_ = location.origin + '/succbi/nzj/app/nzj.app/nzj_search_1.spg'
-    window.location.replace(`/page_workDesktop/work-bench/page?link=${encodeURIComponent(goHref_)}`)
+    window.location.replace(
+      `/page_workDesktop/work-bench/page?link=${encodeURIComponent(goHref_)}`
+    )
   }
 
   // 分页事件

+ 5 - 12
apps/mobile/src/views/collection/index.vue

@@ -1425,14 +1425,9 @@ export default {
         FilterHistoryViewModel2AjaxModel.formatAreaCity(this.filters.area)
       const infoType = InfoTypeTransform.listToMap(this.filters.infoType)
       const infoTypeText = InfoTypeTransform.formatMapToList(infoType)
-      // 整理wordsMode和additionalWords
-      let wordsMode
       let additionalWords
 
       if (moreKeywordsMode) {
-        if (moreKeywordsMode.wordsMode) {
-          wordsMode = moreKeywordsMode.wordsMode - 0
-        }
         if (
           Array.isArray(moreKeywordsMode.tags) &&
           moreKeywordsMode.tags.length
@@ -1445,27 +1440,25 @@ export default {
       )
 
       const params = {
-        searchvalue: this.filters.additionalWords,
         label: this.filters.label.join(','), // 个人标签
         province: area, // 地区省份(数据导出接口用到)
         area, // 地区省份(保存筛选接口用到)
         city,
         district,
+        keyWords: additionalWords,
         industry: FilterHistoryViewModel2AjaxModel.formatFilterApiOther(rexIndustry), // 行业
         minprice: this.filters.price.start,
         maxprice: this.filters.price.end,
-        publishtime: FilterHistoryViewModel2AjaxModel.formatTime(
+        publishTime: FilterHistoryViewModel2AjaxModel.formatTime(
           this.filters.publishTime
         ),
         selectTime: FilterHistoryViewModel2AjaxModel.formatTime(
           this.filters.selectTime
         ),
         subtype: infoTypeText.join(','), // 信息类型
-        buyerclass: this.filters.buyerClass.join(','),
-        winnertel: this.filters.winnerConcat.join(','),
-        buyertel: this.filters.buyerConcat.join(','),
-        wordsMode,
-        additionalWords
+        buyerClass: this.filters.buyerClass.join(','),
+        winnerTel: this.filters.winnerConcat.join(','),
+        buyerTel: this.filters.buyerConcat.join(',')
       }
       return params
     },

+ 2 - 8
apps/mobile/src/views/search/middle/buyer/index.vue

@@ -96,7 +96,7 @@ export default {
         if (!this.isLogin) return
         const res = await getHistoryQuery({ type: '4,5' })
         if (res.success) {
-          this.processSearchHistory(res.search)
+          this.buyerSearchHistory = res?.res.search || []
           this.processBrowseHistory(res.browse)
         } else {
           // 处理success为false的情况,例如记录日志、提示用户等
@@ -107,12 +107,6 @@ export default {
         console.error('获取历史信息时发生错误:', error)
       }
     },
-    processSearchHistory(searchHistory) {
-      if (!searchHistory || !Array.isArray(searchHistory)) return
-      this.buyerSearchHistory = searchHistory.map((s) =>
-        s.length > 20 ? s.slice(0, 20) : s
-      )
-    },
     processBrowseHistory(browseHistory) {
       if (!browseHistory || !Array.isArray(browseHistory)) return
       browseHistory.forEach((item) => {
@@ -280,7 +274,7 @@ export default {
     height: 12px;
     background: #F7F9FA;
   }
-  .browse-history{
+  .browse-history, .search-history{
     ::v-deep {
       .hover-css--slide{
         max-width: 100%;

+ 3 - 8
apps/mobile/src/views/search/middle/company/index.vue

@@ -92,7 +92,7 @@ export default {
         if (!this.isLogin) return
         const res = await getHistoryQuery({ type: '2,3' })
         if (res.success) {
-          this.processSearchHistory(res.search)
+          this.companySearchHistory = res?.search || []
           this.processBrowseHistory(res.browse)
         } else {
           // 处理success为false的情况,例如记录日志、提示用户等
@@ -103,12 +103,6 @@ export default {
         console.error('获取历史信息时发生错误:', error)
       }
     },
-    processSearchHistory(searchHistory) {
-      if (!searchHistory || !Array.isArray(searchHistory)) return
-      this.companySearchHistory = searchHistory.map((s) =>
-        s.length > 20 ? s.slice(0, 20) : s
-      )
-    },
     processBrowseHistory(browseHistory) {
       if (!browseHistory || !Array.isArray(browseHistory)) return
       browseHistory.forEach((item) => {
@@ -249,7 +243,8 @@ export default {
     height: 12px;
     background: #F7F9FA;
   }
-  .browse-history{
+  .browse-history,
+  .search-history {
     ::v-deep {
       .hover-css--slide{
         max-width: 100%;