Преглед изворни кода

feat: 移动端阳光直采搜索页接口对接,逻辑完善

cuiyalong пре 9 месеци
родитељ
комит
8c4f1893a1

+ 1 - 2
apps/bigmember_pc/src/views/search/sun/model/modules/filter.js

@@ -73,7 +73,7 @@ export function useSearchFilterModel(conf) {
       publishTime: rPublishTime,
       selectType: filterState.value.selectType.join(','),
       deadlineStatus: bmjzzt - 0,
-      deadlineTime: rSignUpEndTime, // 排除词
+      deadlineTime: rSignUpEndTime, // 投标截止时间
       domainFirstType,
       domainSecondType,
       domainThirdType,
@@ -82,7 +82,6 @@ export function useSearchFilterModel(conf) {
       deliveryDistrict,
       projectArea,
       projectCity,
-      projectArea,
       projectDistrict,
       industry: rIndustry,
       publisher: publisher - 0,

+ 11 - 0
apps/mobile/src/api/modules/search.js

@@ -22,6 +22,17 @@ export function getBiddingSearchList(data, type = 'fType') {
     data
   })
 }
+
+// 阳光采购搜索
+export function getSunSearchList(data) {
+  return request({
+    url: '/jyapi/jybx/core/purchaseSearch',
+    method: 'post',
+    noToast: true,
+    data
+  })
+}
+
 // 标讯搜索
 export function getBiddingSearchListOfNoLogin(data) {
   return request({

+ 12 - 12
apps/mobile/src/components/search/sun/filters.vue

@@ -121,14 +121,14 @@
                 />
               </template>
             </JCell>
-            <van-cell
+            <!-- <van-cell
               class="more-filter-item one-line-filter-item"
               :isLink="true"
               title="领域"
               :border="false"
               @click="showPopup('lingyu')"
               :value="valueTextWithLingyu"
-            />
+            /> -->
             <JCell class="more-filter-item signup-time" title="报名截止日期">
               <template #label>
                 <DateTimeList
@@ -396,7 +396,7 @@ export default {
       default() {
         return {
           moreKeywordsMode: {},
-          scope: ['title', 'content'],
+          scope: ['title', 'purchasing'],
           bmjzzt: '0',
           industry: {},
           jfArea: {},
@@ -418,7 +418,7 @@ export default {
       default() {
         return {
           moreKeywordsMode: {},
-          scope: ['title', 'content'],
+          scope: ['title', 'purchasing'],
           bmjzzt: '0',
           industry: {},
           jfArea: {},
@@ -464,7 +464,7 @@ export default {
           },
           {
             label: '标的名称',
-            key: 'ppa'
+            key: 'purchasing'
           }
         ],
         dateTime: biddingSearchTime,
@@ -543,10 +543,10 @@ export default {
           label: '搜索模式',
           free: true
         },
-        {
-          label: '领域',
-          free: true
-        },
+        // {
+        //   label: '领域',
+        //   free: true
+        // },
         {
           label: '报名截止日期',
           free: true
@@ -719,9 +719,9 @@ export default {
           break
         }
         case 'bmjzzt': {
-          const { industry } = this.filters
-          const { industry: industryDefault } = this.defaultFilterState
-          const same = deepCompare(industry, industryDefault)
+          const { bmjzzt } = this.filters
+          const { bmjzzt: bmjzztDefault } = this.defaultFilterState
+          const same = deepCompare(bmjzzt, bmjzztDefault)
           needHighlight = !same
           break
         }

+ 3 - 0
apps/mobile/src/ui/project-cell/index.vue

@@ -464,6 +464,9 @@ export default {
     &.red {
       color: $orange_red;
       background-color: $color_red_background;
+      &.border {
+        border: 1px solid $orange_red;
+      }
     }
     &--time {
       color: #9b9ca3;

+ 5 - 0
apps/mobile/src/utils/constant/others.js

@@ -10,3 +10,8 @@ export const GUIDE_CACHE_KEY = 'READ_GUIDE'
 export const BIDDING_SEARCH_LAST_FILTERS_CACHE_KEY = 'bidding-search-last-filters'
 // 标讯搜索-searchGroup筛选项缓存key
 export const BIDDING_SEARCH_GROUP_LAST_CACHE_KEY = 'bidding-search-group-last'
+
+// 标讯搜索-上次搜索筛选项缓存key
+export const SUN_SEARCH_LAST_FILTERS_CACHE_KEY = 'sun-search-last-filters'
+// 标讯搜索-searchGroup筛选项缓存key
+export const SUN_SEARCH_GROUP_LAST_CACHE_KEY = 'sun-search-group-last'

+ 1 - 0
apps/mobile/src/utils/format/index.js

@@ -4,6 +4,7 @@ export * from './modules/date'
 export * from './modules/ad-formatter'
 export * from './modules/money'
 export * from './modules/info-type-transform'
+export * from './modules/area-map'
 
 /**
  * 用于从文本中提取数字

+ 43 - 0
apps/mobile/src/utils/format/modules/area-map.js

@@ -0,0 +1,43 @@
+export function threeObjToSingle(obj, split = ',') {
+  const map = {
+    area: '',
+    city: '',
+    district: ''
+  }
+  if (!obj)
+    return map
+  const area = []
+  const city = []
+  let district = []
+  for (const key in obj) {
+    if (typeof obj[key] === 'object') {
+      if (Object.keys(obj[key]).length === 0) {
+        area.push(key)
+      }
+      else {
+        // 城市项
+        const cityItem = obj[key]
+        for (const cKey in cityItem) {
+          // 区县项
+          const districtItem = cityItem[cKey]
+          if (Array.isArray(districtItem)) {
+            if (districtItem.length === 0) {
+              city.push(cKey)
+            }
+            else {
+              const resetArr = districtItem.map((temp) => {
+                return temp
+              })
+              district = district.concat(resetArr)
+            }
+          }
+        }
+      }
+    }
+  }
+  return {
+    first: area.join(split),
+    second: city.join(split),
+    third: district.join(split)
+  }
+}

+ 6 - 8
apps/mobile/src/views/search/layout.vue

@@ -148,18 +148,16 @@ export default {
       this.topSearch.placeholder = ''
       if (name.indexOf('bidding') !== -1) {
         this.topSearch.placeholder = '请输入产品或业务名称关键词'
-      }
-      if (name.indexOf('company') !== -1) {
+      } else if (name.indexOf('company') !== -1) {
         this.topSearch.placeholder = '企业名称'
-      }
-      if (name.indexOf('buyer') !== -1) {
+      } else if (name.indexOf('buyer') !== -1) {
         this.topSearch.placeholder = '采购单位名称'
-      }
-      if (name.indexOf('winner') !== -1) {
+      } else if (name.indexOf('winner') !== -1) {
         this.topSearch.placeholder = '中标企业名称'
-      }
-      if (name.indexOf('docs') !== -1) {
+      } else if (name.indexOf('docs') !== -1) {
         this.topSearch.placeholder = '在上亿级文档资料库里搜索文档'
+      } else if (name.indexOf('sun') !== -1) {
+        this.topSearch.placeholder = '请输入产品或业务名称关键词,例如:钢板'
       }
     }
   }

+ 117 - 138
apps/mobile/src/views/search/result/sun/index.vue

@@ -120,7 +120,6 @@
               :detail-list="item.detailList"
               :key="item.vKid"
               :title="item.title"
-              :detail="filters.scope.includes('content') ? item.detail : null"
               :filetext_search="item.filetext_search"
               :fs_keys="item.fs_word"
               :time="item.dateTime"
@@ -137,40 +136,19 @@
                   >{{ item.text }}</span
                 >
               </template>
-              <template #winnerText="{ item }">
+              <template #buyerTelText="{ item }">
                 <span
-                  v-for="(winner, index) in item.children"
-                  :key="index"
-                  class="winner-item highlight-text link-clickable j-splitter"
-                  data-j-splitter="、"
-                  @click.stop="toToEntProfile(winner.id)"
-                  >{{ winner.text }}</span
-                >
-              </template>
-              <template slot="icon">
-                <button
-                  v-if="inInjectBI"
-                  class="bi-report-inject-button"
-                  :disabled="computedHasAddInfoStatus(item)"
-                  @click.stop="doAddInfoOfBI(item)"
+                  v-if="item.text === '点击查看'"
+                  class="buyer-item link-clickable"
+                  @click.stop="toToBuyerProfile(item.text)"
+                  >{{ item.text }}</span
                 >
-                  {{ computedHasAddInfoStatus(item) ? '已添加' : '添加' }}
-                </button>
-                <div v-else @click.stop="doCollection(item, index)">
-                  <span
-                    class="j-icon"
-                    :class="{
-                      'icon-star-fill': item.star,
-                      'icon-star-streak': !item.star
-                    }"
-                  />
-                  <span>&nbsp;{{ item.star ? '已收藏' : '收藏' }}</span>
-                </div>
+                <span class="buyer-item link-clickable" v-else>{{ item.text }}</span>
               </template>
             </ProjectCell>
             <div
               v-else-if="isLogin"
-              :key="[item.id, index].join('-')"
+              :key="[item.vKid, index].join('-')"
               :data-key="[item.id, index].join('-')"
               class="middle-list-container"
             >
@@ -238,7 +216,7 @@
             </tr>
             <tr
               v-for="item in listState.list.slice(0, 20)"
-              :key="item.id"
+              :key="item.vKid"
               v-visited:content="item.id"
               class="table-content-tr"
               @click="goToDetail(item)"
@@ -352,11 +330,12 @@ import CustomerCorner from '@/components/customer/index'
 import { AppEmpty, AppIcon, ProjectCell } from '@/ui'
 import { LINKS } from '@/data'
 import {
-  BIDDING_SEARCH_GROUP_LAST_CACHE_KEY,
-  BIDDING_SEARCH_LAST_FILTERS_CACHE_KEY
+  SUN_SEARCH_GROUP_LAST_CACHE_KEY,
+  SUN_SEARCH_LAST_FILTERS_CACHE_KEY
 } from '@/utils/constant'
 import toLogin from '@/utils/mixins/modules/to-login'
 import { mixinPoints } from '@/utils/mixins/modules/points'
+import { threeObjToSingle } from '@/utils/format/index'
 import {
   FilterHistoryAjaxModel2ViewModel,
   FilterHistoryViewModel2AjaxModel,
@@ -378,15 +357,14 @@ import {
   ajaxGetInfoIds,
   ajaxSetInfoId,
   checkBiddingFilterPass,
-  getBidColPower,
   getBiddingFilterList,
-  getBiddingSearchList,
+  getSunSearchList,
   searchIndexDataExport,
   selectEnt
 } from '@/api/modules'
 
 export default {
-  name: 'SearchResultBidding',
+  name: 'SearchResultSun',
   components: {
     [Button.name]: Button,
     [Cell.name]: Cell,
@@ -420,7 +398,7 @@ export default {
         savedFilterListMaxCount: 10,
         // 顶部精简列表/详细列表切换滚动显示隐藏距离
         tabSwitchShowOffset: 150,
-        listTabActiveStorageKey: 'bidding_listTabActive',
+        listTabActiveStorageKey: 'sun_listTabActive',
         leaveSource: {
           article: 'article_collection'
         },
@@ -480,18 +458,19 @@ export default {
             cardType: 'detailed',
             needPower: true
           },
-          {
-            title: '表格',
-            name: 'table'
-          }
+          // {
+          //   title: '表格',
+          //   name: 'table'
+          // }
         ],
         defaultFilterState: {
           moreKeywordsMode: {},
           searchMode: ['0'],
-          scope: ['title', 'content'],
+          scope: ['title', 'purchasing'],
           industry: {},
           jfArea: {},
           projectArea: {},
+          lingyu: {},
           dateTime: {
             exact: 'thisyear'
           },
@@ -503,7 +482,8 @@ export default {
         noChangeDefaultFilterState: {
           moreKeywordsMode: {},
           searchMode: ['0'],
-          scope: ['title', 'content'],
+          scope: ['title', 'purchasing'],
+          lingyu: {},
           industry: {},
           jfArea: {},
           projectArea: {},
@@ -525,6 +505,7 @@ export default {
         industry: {},
         jfArea: {},
         projectArea: {},
+        lingyu: {},
         dateTime: {},
         bmjzzt: '0',
         signUpEndTime: {},
@@ -563,9 +544,6 @@ export default {
         interceptOtherWords: '', // 限制后,后端截取字符
         saveFilterDialog: false,
         tabSwitchShow: true,
-        bidColPower: {
-          isOld: false
-        },
         adItem: {
           id: 0,
           random: 4,
@@ -591,7 +569,6 @@ export default {
   computed: {
     ...mapState('user', ['power', 'userInfo']),
     ...mapGetters('user', [
-      'restfulApiUserTypeDefault',
       'vSwitch',
       'isLogin',
       'isFree',
@@ -665,6 +642,8 @@ export default {
     cardTypeTabList() {
       const { searchGroup } = this.pageState
       const { tabList, tabListFree } = this.conf
+
+      return tabList
       const noAdvancedProjectPower = !this.hasAdvancedProjectPower
       if (!this.isLogin) {
         return tabListFree
@@ -686,8 +665,9 @@ export default {
       }
     },
     getContentAdID() {
-      const { inWX } = this.$envs
-      return inWX ? 'jy-wxsearch-middle' : 'jyapp-wxsearch-middle'
+      // const { inWX } = this.$envs
+      const { platform } = this.$env
+      return `${platform}-sunlightlist-search-middle`
     },
     savedFilterListCount() {
       return this.pageState.savedFilterList.length
@@ -768,7 +748,7 @@ export default {
     noChangeDefaultFilterState() {
       const { noChangeDefaultFilterState } = this.conf
       if (!this.isFree) {
-        noChangeDefaultFilterState.dateTime.exact = 'fiveyear'
+        // noChangeDefaultFilterState.dateTime.exact = 'fiveyear'
       }
       return noChangeDefaultFilterState
     }
@@ -828,12 +808,11 @@ export default {
       this.checkLeaveInfo()
       // this.checkDataExport()
     } else {
-      this.getBidColPower()
       this.initDefaultFilterState()
       this.initAdInfo()
-      if (this.isLogin) {
-        this.getFilterHistoryList()
-      }
+      // if (this.isLogin) {
+      //   this.getFilterHistoryList()
+      // }
     }
   },
   mounted() {
@@ -848,11 +827,9 @@ export default {
       const scrollWrap = this.$refs.listContainer
       scrollWrap.addEventListener('scroll', throttle(this.scrollWrapFn, 300))
     })
-    this.getWhiteListInfo()
   },
   methods: {
     ...mapActions('search', ['setHistory']),
-    ...mapActions('user', ['getWhiteListInfo']),
     formatMoney,
     dateFormatter,
     replaceKeyword,
@@ -1015,13 +992,6 @@ export default {
         this.$router.push('/common/order/create/svip')
       } catch (error) {}
     },
-    async getBidColPower() {
-      const { data = {}, error_code: code = 0 } = await getBidColPower()
-      if (code === 0 && data) {
-        Object.assign(this.pageState.bidColPower, data)
-        this.restoreStateFromRouteParams()
-      }
-    },
     closeAllPopup() {
       return new Promise((resolve) => {
         this.$refs.searchFilters.closePopup(-1)
@@ -1167,16 +1137,12 @@ export default {
     },
     async getList() {
       const t = this.listState
-      const { jfArea, city, district } =
+      const { area: deliveryArea, city: deliveryCity, district:deliveryDistrict  } =
         FilterHistoryViewModel2AjaxModel.formatAreaCity(this.filters.jfArea)
-      const infoType = InfoTypeTransform.listToMap(this.filters.infoType)
-      const infoTypeText = InfoTypeTransform.formatMapToList(infoType)
+      const { area: projectArea, city: projectCity, district:projectDistrict  } =
+        FilterHistoryViewModel2AjaxModel.formatAreaCity(this.filters.projectArea)
       const { moreKeywordsMode } = this.filters
-      // 整理searchGroup
-      let searchGroup
-      if (this.activeSearchGroupInfo.id) {
-        searchGroup = this.activeSearchGroupInfo.id - 0
-      }
+      const { first: domainFirstType, second: domainSecondType, third: domainThirdType } = threeObjToSingle(this.filters.lingyu)
       // 整理wordsMode和additionalWords
       let wordsMode
       let additionalWords
@@ -1198,26 +1164,35 @@ export default {
         pageSize: this.listState.pageSize,
         reqType: '', // cache:空搜索缓存数据;lastNews:最新数据
         keyWords: this.filters.keywords,
-        province: jfArea,
-        city,
-        district,
-        // subtype: infoTypeText.join(','), // 信息类型
         publishTime: FilterHistoryViewModel2AjaxModel.formatTime(
           this.filters.dateTime,
           true,
           '-'
         ),
-        // publishTimeType: this.filters.dateTime?.exact,
-        searchGroup, // 搜索分组:默认全部0 招标采购公告1 超前项目2
+        selectType: this.filters.scope.join(','), // 搜索范围
         searchMode: this.filters.searchMode.join('') - 0, // 搜索模式:0精准搜索(不进行系统分词) 1模糊搜索(进行系统分词)
         wordsMode, // 搜索关键词模式;默认0:包含所有,1:包含任意
         additionalWords,
-        selectType: this.filters.scope.join(','), // 搜索范围
+        deadlineStatus: this.filters.bmjzzt - 0,
+        deadlineTime: FilterHistoryViewModel2AjaxModel.formatTime(
+          this.filters.signUpEndTime,
+          true,
+          '-'
+        ),
+        domainFirstType,
+        domainSecondType,
+        domainThirdType,
+        deliveryArea,
+        deliveryCity,
+        deliveryDistrict,
+        projectArea,
+        projectCity,
+        projectDistrict,
         industry: FilterHistoryViewModel2AjaxModel.formatIndustry(
           this.filters.industry
         ),
-        fileExists: this.filters.fileExists.join(','),
-        publisher: this.filters.publisher.join(','),
+        publisher: this.filters.publisher.join(',') - 0,
+        fileExists: this.filters.fileExists.join(',') - 0,
         splitKeywords: this.pageState.splitKeywords
       }
       // if (!params.keyWords && !params.additionalWords) {
@@ -1239,7 +1214,7 @@ export default {
           data = {},
           error_code: code = 0,
           error_msg: msg
-        } = await getBiddingSearchList(params, this.restfulApiUserTypeDefault)
+        } = await getSunSearchList(params)
         const isLimited =
           data.isLimit === 1 ||
           data.isLimit === undefined ||
@@ -1417,7 +1392,7 @@ export default {
     },
     preSortItem(item) {
       if (!item) return
-      const { jfArea, city, isCollected, projectInfo } = item
+      const { area, city, isCollected, projectInfo } = item
       item.star = !!isCollected
       // 是否有附件
       item.isFile = item?.fileExists || false
@@ -1427,19 +1402,38 @@ export default {
       if (projectInfo) {
         Object.assign(item, projectInfo)
       }
-      const region = city || jfArea
+      const region = city || area
       const buyerClass =
         item?.buyerClass && item?.buyerClass !== '其它'
           ? item?.buyerClass
           : undefined
 
+          let signupEndTag = ''
+      if (item.signEndTime) {
+        const now = Date.now()
+        const signupEnd = item.signEndTime * 1000 < now
+        // const signEndTimeText = dateFormatter(item.signEndTime * 1000, 'yyyy-MM-dd  HH:mm')
+        if (signupEnd) {
+          signupEndTag = '报名已截止'
+        } else {
+          signupEndTag = {
+            name: '报名未截止',
+            className: 'red border'
+          }
+        }
+      }
+
       // 标签
       item.tagList = [
+        {
+          name: item.publicType || '',
+          className: 'red'
+        },
         region || '',
         buyerClass,
-        item?.type || item?.subtype,
         // 有中标金额取中标金额,没有取预算,预算没有置空
-        this.formatTypeofItemKey(item?.bidAmount || item?.budget, 'money', '')
+        this.formatTypeofItemKey(item?.bidAmount || item?.budget, 'money', ''),
+        signupEndTag
       ].filter((v) => v)
 
       item.dateTime = item.publishTime ? item.publishTime * 1000 : ''
@@ -1455,6 +1449,14 @@ export default {
 
       item.vKid = `${item.id}--${getRandomString(8).toLowerCase()}`
 
+      const markText = '点击查看'
+      let buyerPersonTelText = ''
+      if (item.buyerPerson === markText || item.buyerTel === markText) {
+        buyerPersonTelText = markText
+      } else {
+        buyerPersonTelText = `${item.buyerPerson || ''} ${item.buyerTel || ''}`
+      }
+
       // 详细列表数据
       item.detailList = [
         {
@@ -1467,47 +1469,23 @@ export default {
           detailTextSlot: 'buyerText'
         },
         {
-          label: '预算金额',
-          splitter: ':',
-          text: this.formatTypeofItemKey(item?.budget, 'money', '')
-        },
-        {
-          label: '代理机构',
-          splitter: ':',
-          text: item.agency || ''
-        },
-        {
-          label: '中标单位',
+          label: '采购单位联系方式',
           splitter: ':',
-          text: Array.isArray(item.winnerInfo)
-            ? item.winnerInfo.map((w) => w.winner).join(',')
-            : '',
-          detailTextSlot: 'winnerText',
-          children: winnerList
-        },
-        {
-          label: '中标金额',
-          splitter: ':',
-          text: this.formatTypeofItemKey(item?.bidAmount, 'money', '')
+          text: buyerPersonTelText,
+          highlightText: buyerPersonTelText === markText,
+          detailTextSlot: 'buyerTelText'
         },
         {
           label: '报名截止日期',
           splitter: ':',
           text: item.signEndTime
-            ? dateFormatter(item.signEndTime * 1000, 'yyyy-MM-dd')
-            : ''
-        },
-        {
-          label: '投标截止日期',
-          splitter: ':',
-          text: item.bidEndTime
-            ? dateFormatter(item.bidEndTime * 1000, 'yyyy-MM-dd')
+            ? dateFormatter(item.signEndTime * 1000, 'yyyy-MM-dd HH:mm')
             : ''
         },
         {
-          label: '开标日期',
+          label: '交付地点',
           splitter: ':',
-          text: this.formatTypeofItemKey(item.bidOpenTime, 'date-ms', '')
+          text: item.deliveryLoc
         }
       ]
     },
@@ -1515,7 +1493,6 @@ export default {
       const { id, industry } = item
       const query = {
         keywords: this.pageState.splitKeys.join('+'),
-        ...this.fromPointTask
       }
       if (industry) {
         query.industry = industry
@@ -1525,13 +1502,13 @@ export default {
         app: `/jyapp/article/content/${id}.html?${qs.stringify(query)}`
       }
       this.saveState()
-      // if (!this.isLogin) {
-      //   return openLinkOfOther(LINKS.APP登录页.app, {
-      //     query: {
-      //       url: this.$envs.inWX ? targetMap.wx : targetMap.app
-      //     }
-      //   })
-      // }
+      if (!this.isLogin) {
+        return openLinkOfOther(LINKS.APP登录页.app, {
+          query: {
+            url: this.$envs.inWX ? targetMap.wx : targetMap.app
+          }
+        })
+      }
       openAppOrWxPage(targetMap)
     },
     // 保存更多关键词到历史记录中
@@ -1651,7 +1628,7 @@ export default {
     // 老接口通用的参数
     getFilterParams2() {
       const { moreKeywordsMode } = this.filters
-      const { jfArea, city, district } =
+      const { area, city, district } =
         FilterHistoryViewModel2AjaxModel.formatAreaCity(this.filters.jfArea)
       const infoType = InfoTypeTransform.listToMap(this.filters.infoType)
       const infoTypeText = InfoTypeTransform.formatMapToList(infoType)
@@ -1678,8 +1655,8 @@ export default {
       const params = {
         searchvalue: this.topSearch.input,
         selectType: this.filters.scope.join(','), // 搜索范围
-        scope: jfArea, // 地区省份(数据导出接口用到)
-        area: jfArea, // 地区省份(保存筛选接口用到)
+        scope: area, // 地区省份(数据导出接口用到)
+        area: area, // 地区省份(保存筛选接口用到)
         city,
         district,
         industry: FilterHistoryViewModel2AjaxModel.formatIndustry(
@@ -1722,7 +1699,7 @@ export default {
       const params = this.getFilterParams2()
       try {
         // 判断是否选择过企业。未选择过调用 selectEnt 选择一个默认的企业
-        await selectEnt()
+        // await selectEnt()
         const { _id } = await searchIndexDataExport(params)
         if (!_id) return
         this.saveState()
@@ -1749,9 +1726,9 @@ export default {
     },
     // 去用户反馈页面
     feedback() {
-      // 判断是否登陆,未登录去登陆
-      this.saveState()
-      openAppOrWxPage(LINKS.用户反馈)
+      this.$router.push({
+        path: '/search/middle/bidding'
+      })
     },
     // 跳转企业画像
     toToEntProfile(id) {
@@ -1764,6 +1741,9 @@ export default {
     },
     // 跳转采购单位画像
     toToBuyerProfile(id) {
+      if (id === '点击查看') {
+        return this.toLeaveInfoPage(`${this.$env.platform}_sunlightlist_viewdetails`)
+      }
       this.saveState()
       const { href } = this.$router.resolve({
         path: `/redirect/unit_portrayal/${id}`
@@ -2062,13 +2042,13 @@ export default {
       if (replace && Object.keys(replace).length) {
         Object.assign(params, replace)
       }
-      this.$storage.set(BIDDING_SEARCH_LAST_FILTERS_CACHE_KEY, params, {
+      this.$storage.set(SUN_SEARCH_LAST_FILTERS_CACHE_KEY, params, {
         login: true
       })
     },
     restoreSearchGroupFromLocal() {
       const params = this.$storage.get(
-        BIDDING_SEARCH_GROUP_LAST_CACHE_KEY,
+        SUN_SEARCH_GROUP_LAST_CACHE_KEY,
         false
       )
       if (params) {
@@ -2156,6 +2136,11 @@ export default {
       this.scrollStatus = scrollTop < 60
     },
     onListTabClick(name) {
+      if (!this.isLogin) {
+        if (name === 'detailedList') {
+          return this.toLogin()
+        }
+      }
       const isPass = this.beforeTabActiveChange(name)
       if (isPass) {
         this.pageState.listTabActive = name
@@ -2644,12 +2629,6 @@ export default {
     }
   }
 }
-.sub-position {
-  position: absolute;
-  bottom: 40px;
-  left: 12px;
-  right: 12px;
-}
 .customer-corner {
   z-index: 10;
 }