Browse Source

Merge branch 'dev/v1.0.53_tsz' of jianyu/web into feature/v1.0.53

汤世哲 1 year ago
parent
commit
0334c6c59a

+ 9 - 0
apps/mobile/src/api/modules/public.js

@@ -305,3 +305,12 @@ export function collectionNps(data) {
     data
   })
 }
+
+export function getCollectList(data) {
+  // data = qs.stringify(data)
+  return request({
+    url: '/publicapply/bidcoll/list',
+    method: 'post',
+    data
+  })
+}

+ 1 - 0
apps/mobile/src/components/selector/date-time-list/index.vue

@@ -199,6 +199,7 @@ export default {
       } else {
         Object.assign(timeState, this.calcNotExactTime(timeState.exact))
       }
+      console.log(timeState, 'timeState')
       return timeState
     }
   }

+ 2 - 2
apps/mobile/src/components/selector/tag-sidebar/index.vue

@@ -31,8 +31,8 @@ export default {
     beforeChange: Function
   },
   methods: {
-    setState() {
-      let arr = this.selecttaglist
+    setState(list) {
+      let arr = list
       if (arr && arr.length) {
         this.tagList.forEach((item) => {
           arr.forEach((data) => {

+ 29 - 0
apps/mobile/src/data/bidding.js

@@ -73,6 +73,35 @@ export const biddingSearchTime = [
   }
 ]
 
+// 收藏页面-收藏日期
+export const collectionSearchTime = [
+  {
+    label: '全部',
+    key: ''
+  },
+  {
+    label: '今天',
+    key: 'today'
+  },
+  {
+    label: '昨天',
+    key: 'yesterday'
+  },
+  {
+    label: '最近7天',
+    key: 'lately-7'
+  },
+  {
+    label: '最近30天',
+    key: 'lately-30'
+  },
+  {
+    label: '自定义',
+    key: 'exact',
+    needPower: true
+  }
+]
+
 // 是否有联系方式
 export const biddingSearchConcat = [
   {

+ 4 - 1
apps/mobile/src/utils/format/modules/filter-history-formatter.js

@@ -694,8 +694,10 @@ export class FilterHistoryViewModel2AjaxModel {
     const { area, city } = this.formatAreaCity(map.area)
     // 金额筛选整理
     const price = this.formatPrice(map.price)
-    // 时间筛选整理
+    // 发布时间筛选整理
     const publishTime = this.formatTime(map.publishTime)
+    // 收藏时间筛选整理
+    const selectTime = this.formatTime(map.selectTime)
     // 信息类型
     const infoType = this.formatInfoType(map.infotype)
     // 采购单位
@@ -709,6 +711,7 @@ export class FilterHistoryViewModel2AjaxModel {
       price,
       dateTime: publishTime, // 标讯搜索恢复数据可能要用到?
       publishTime,
+      selectTime,
       infoType,
       buyerClass
     }

+ 86 - 103
apps/mobile/src/views/collection/components/filters.vue

@@ -5,7 +5,7 @@
     :close-on-click-outside="false"
   >
     <van-dropdown-item
-      ref="scopeDropdown"
+      ref="labelDropdown"
       :title-class="dropdownMenuHighlight('label')"
       title="个人标签"
       get-container="body"
@@ -21,48 +21,41 @@
       </DropdownLayout>
     </van-dropdown-item>
     <van-dropdown-item
-      ref="industryDropdown"
-      :title-class="dropdownMenuHighlight('industry')"
+      ref="selectTimeDropdown"
+      :title-class="dropdownMenuHighlight('selectTime')"
       title="收藏日期"
       get-container="body"
-      @open="doOpen('industry')"
-      @opened="openedDropDown('industry')"
+      @open="doOpen('selectTime')"
+      @opened="openedDropDown('selectTime')"
     >
       <DropdownLayout
-        @cancel="onReset('industry')"
-        @confirm="onConfirm('industry')"
+        @cancel="onReset('selectTime')"
+        @confirm="onConfirm('selectTime')"
       >
-        <!-- <IndustrySidebar
-          ref="industrySelector"
-          v-model="cacheMoreFilters.industry"
-        /> -->
+        <DateTimeList
+          ref="selectTimeSelector"
+          @checkboxClick="checkboxGroupClick"
+          :options="getTimeOptions"
+        ></DateTimeList>
       </DropdownLayout>
     </van-dropdown-item>
     <van-dropdown-item
-      ref="areaDropdown"
-      :title-class="dropdownMenuHighlight('area')"
+      ref="publishTimeDropdown"
+      :title-class="dropdownMenuHighlight('publishTime')"
       title="发布日期"
       get-container="body"
-      @open="doOpen('area')"
-      @opened="openedDropDown('area')"
+      @open="doOpen('publishTime')"
+      @opened="openedDropDown('publishTime')"
     >
-      <DropdownLayout @cancel="onReset('area')" @confirm="onConfirm('area')">
-        <!-- <AreaCitySidebar
-          class="area-city-sidebar"
-          :tagTextOnlySelectedCount="true"
-          :disabledCitySelect="noLoginOrFree"
-          :useProvinceCitySplit="true"
-          v-model="cacheMoreFilters.area"
-          @onDisabledCityClick="onNoPower"
-          v-if="useAreaCity"
-          ref="areaSelector"
-        ></AreaCitySidebar> -->
-        <!-- 未登录下。确定时候,手动获取数据转换为对象。设置时候,手动将对象转为数组并手动恢复数据 -->
-        <!-- <AreaSelectorContent
-          class="area-selector"
-          v-else
-          ref="areaSelector"
-        ></AreaSelectorContent> -->
+      <DropdownLayout
+        @cancel="onReset('publishTime')"
+        @confirm="onConfirm('publishTime')"
+      >
+        <DateTimeList
+          ref="publishTimeSelector"
+          @checkboxClick="checkboxGroupClick"
+          :options="getPulishTimeOptions"
+        ></DateTimeList>
       </DropdownLayout>
     </van-dropdown-item>
     <van-dropdown-item
@@ -104,15 +97,6 @@
               ></MoneyInputGroup>
             </template>
           </JCell>
-          <JCell class="more-filter-item" title="时间">
-            <template #label>
-              <DateTimeList
-                ref="dateTimeGroup"
-                @checkboxClick="checkboxGroupClick"
-                :options="getTimeOptions"
-              />
-            </template>
-          </JCell>
           <van-cell
             class="more-filter-item one-line-filter-item"
             :isLink="true"
@@ -352,19 +336,18 @@ import DropdownLayout from '@/components/common/DropdownLayout'
 // 地区三级选择器
 import AreaCitySidebar from '@/components/selector/area-three-sidebar/index'
 import AreaSelectorContent from '@/components/selector/area'
+import DateTimeList from '@/components/selector/date-time-list/index'
 import TagSelector from '@/components/selector/tag-sidebar/index.vue';
 import IndustrySidebar from '@/components/selector/industry-sidebar/index'
 import InfoTypeSidebar from '@/components/selector/info-type-sidebar/index'
 import InfoTypeOneClassify from '@/components/selector/info-type-one-classify/index'
 import BuyerClassSidebar from '@/components/selector/buyer-class-sidebar/index'
 import MoneyInputGroup from '@/components/selector/money-input-group'
-import DateTimeList from '@/components/selector/date-time-list'
 import KeywordsInputGroup from '@/components/selector/keyword-input-group/index'
 import { deepCompare } from '@/utils'
 import {
-  biddingSearchScope,
   biddingSearchConcat,
-  biddingSearchFileExists,
+  collectionSearchTime,
   biddingSearchTime
 } from '@/data'
 
@@ -502,9 +485,9 @@ export default {
   data() {
     return {
       conf: {
-        dropdownTypeList: ['label', 'industry', 'area', 'more'],
-        label: biddingSearchScope,
-        dateTime: biddingSearchTime,
+        dropdownTypeList: ['label', 'selectTime', 'publishTime', 'more'],
+        label: this.tagList,
+        dateTime: collectionSearchTime,
         checkboxGroup: {
           icon: false,
           multiple: false
@@ -557,33 +540,45 @@ export default {
         return true
       }
     },
-    getScopeOptions() {
+    getLabelOptions() {
       const { label: list } = this.conf
       list.forEach((item) => {
-        // 老用户专享
-        const oldUserExclusive =
-          this.bidColPower.isOld && item.label.includes('中标企业')
         if (item.needPower) {
-          if (this.noLoginOrFree && !oldUserExclusive) {
+          this.$set(item, 'disabled', false)
+          this.$set(item, 'tag', '')
+        }
+      })
+      return list
+    },
+    getTimeOptions() {
+      const list = this.conf.dateTime
+      if (this.noLoginOrFree) {
+        list.forEach((item) => {
+          if (item.needPower) {
             this.$set(item, 'disabled', true)
             this.$set(item, 'tag', '开通')
-          } else {
+          }
+        })
+      } else {
+        list.forEach((item) => {
+          if (item.needPower) {
             this.$set(item, 'disabled', false)
             this.$set(item, 'tag', '')
-            if (oldUserExclusive) {
-              this.$set(item, 'labelTag', '老用户免费专享')
-            }
           }
-        }
-      })
+        })
+      }
       if (this.isLogin) {
         return list
       } else {
         return list.filter((s) => !s.disabled)
       }
     },
-    getTimeOptions() {
-      const list = this.conf.dateTime
+    getPulishTimeOptions() {
+      let list = [{
+        label: '全部',
+        key: ''
+      }]
+      list = list.concat(biddingSearchTime)
       if (this.noLoginOrFree) {
         list.forEach((item) => {
           if (item.needPower) {
@@ -692,17 +687,17 @@ export default {
           needHighlight = !same
           break
         }
-        case 'industry': {
-          const { industry } = this.filters
-          const { industry: industryDefault } = this.defaultFilterState
-          const same = deepCompare(industry, industryDefault)
+        case 'selectTime': {
+          const { selectTime } = this.filters
+          const { selectTime: selectTimeDefault } = this.defaultFilterState
+          const same = deepCompare(selectTime, selectTimeDefault)
           needHighlight = !same
           break
         }
-        case 'area': {
-          const { area } = this.filters
-          const { area: areaDefault } = this.defaultFilterState
-          const same = deepCompare(area, areaDefault)
+        case 'publishTime': {
+          const { publishTime } = this.filters
+          const { publishTime: publishTimeDefault } = this.defaultFilterState
+          const same = deepCompare(publishTime, publishTimeDefault)
           needHighlight = !same
           break
         }
@@ -769,6 +764,7 @@ export default {
         case 'label': {
           const { tagSelector } = this.$refs
           const { label } = this.filters
+          console.log(label, 'label')
           tagSelector?.setState(label)
           break
         }
@@ -854,24 +850,16 @@ export default {
           }
           break
         }
-        case 'industry': {
-          const { industry } = this.defaultFilterState
-          if (industry) {
-            filters.industry = industry
-            this.cacheMoreFilters.industry = industry
-          }
+        case 'selectTime': {
+          const { selectTimeSelector } = this.$refs
+          const str = selectTimeSelector?.setState() || {}
+          filters.selectTime = str
           break
         }
-        case 'area': {
-          const { area } = this.defaultFilterState
-          if (area) {
-            this.cacheMoreFilters.area = area
-            filters.area = area
-            if (!this.useAreaCity) {
-              const { areaSelector } = this.$refs
-              areaSelector?.setState(Object.keys(area))
-            }
-          }
+        case 'publishTime': {
+          const { publishTimeSelector } = this.$refs
+          const str = publishTimeSelector?.setState() || {}
+          filters.publishTime = str
           break
         }
         case 'more': {
@@ -969,26 +957,21 @@ export default {
           filters.label = state
           break
         }
-        case 'industry': {
-          const { industry } = this.cacheMoreFilters
-          filters.industry = industry
+        case 'selectTime': {
+          const { selectTimeSelector } = this.$refs
+          const str = selectTimeSelector?.getState() || {}
+          filters.selectTime = str
           break
         }
-        case 'area': {
-          if (!this.useAreaCity) {
-            const { areaSelector } = this.$refs
-            const arr = areaSelector?.getState() || []
-            // 得到的数组转为对象
-            const m = {}
-            arr.forEach((i) => (m[i] = []))
-            this.cacheMoreFilters.area = m
-          }
-          const { area } = this.cacheMoreFilters
-          filters.area = area
+        case 'publishTime': {
+          const { publishTimeSelector } = this.$refs
+          const str = publishTimeSelector?.getState() || {}
+          console.log(str, 'str')
+          filters.publishTime = str
           break
         }
         case 'more': {
-          const { priceSelector, dateTimeGroup } = this.$refs
+          const { priceSelector } = this.$refs
           const {
             moreKeywordsMode,
             priceCheckbox,
@@ -1014,10 +997,6 @@ export default {
           }
           filters.priceCheckbox = priceCheckbox
 
-          // 时间
-          const dateTime = dateTimeGroup.getState()
-          filters.dateTime = dateTime || {}
-
           // 信息类型
           filters.infoType = infoType
           // 采购单位类型
@@ -1036,6 +1015,7 @@ export default {
     },
     confirmModelChange(type) {
       const filters = this.confirmSelectors(type)
+      console.log(filters, 'filters')
       this.onChange(filters)
     },
     onConfirm(type) {
@@ -1134,6 +1114,9 @@ export default {
 
 <style lang="scss" scoped>
 ::v-deep {
+  .date-time-selector-content {
+    padding: 0 16px;
+  }
   .highlight {
     color: $main;
   }

+ 37 - 98
apps/mobile/src/views/collection/index.vue

@@ -33,9 +33,6 @@
           ></van-tab>
         </van-tabs>
       </div>
-      <div class="intercept-tip-container" v-show="interceptTipText">
-        <AppIcon name="tishi" /> {{ interceptTipText }}
-      </div>
     </div>
     <div class="j-main list-container" ref="listContainer">
       <van-list
@@ -193,14 +190,6 @@
         </div>
         <AppEmpty v-show="listState.list.length === 0 && listState.finished">
           <div class="empty-text" v-html="emptyText"></div>
-          <van-button
-            class="feedback-button"
-            plain
-            size="small"
-            type="primary"
-            @click="feedback"
-            >意见反馈</van-button
-          >
         </AppEmpty>
       </van-list>
       <div class="table-container" v-show="pageState.listTabActive === 'table'">
@@ -329,7 +318,6 @@ import AdSingle from '@/components/ad/Ad'
 import CollectionFilters from '@/views/collection/components/filters'
 import SearchFilterHistoryDialog from '@/components/search/bidding/filterHistoryDialog'
 import OneKeySubscribeDialog from '@/components/search/bidding/oneKeySubscribeDialog'
-import RecommendCard from '@/components/recommend/'
 import popupDataexport from '@/components/dataExport/popupDataexport.vue'
 import { AppIcon, AppEmpty, ProjectCell } from '@/ui'
 import { getFreeSubscribeInfo } from '@/api/modules/public'
@@ -351,8 +339,7 @@ import {
   FilterHistoryViewModel2AjaxModel,
 } from '@/utils'
 import {
-  getBiddingSearchList,
-  freeSubscribeKeys,
+  getCollectList,
   searchIndexDataExport,
   selectEnt,
   getBiddingFilterList,
@@ -381,7 +368,6 @@ export default {
     AppEmpty,
     ProjectCell,
     AdSingle,
-    RecommendCard,
     bidStatusNode,
     popupDataexport
   },
@@ -402,17 +388,6 @@ export default {
         leaveSource: {
           article: 'article_collection'
         },
-        tabListFree: [
-          {
-            title: '列表',
-            cardType: 'simplify',
-            name: 'list'
-          },
-          {
-            title: '表格',
-            name: 'table'
-          }
-        ],
         tabList: [
           {
             title: '精简列表',
@@ -610,10 +585,7 @@ export default {
       })
     },
     cardTypeTabList() {
-      const { tabList, tabListFree } = this.conf
-      if (!this.isLogin) {
-        return tabListFree
-      }
+      const { tabList } = this.conf
       return tabList
     },
     cellCardType() {
@@ -657,30 +629,7 @@ export default {
       return additionalWordsArr
     },
     emptyText() {
-      const { dateTime, keywords } = this.filters
-      const { exact: defaultExact } = this.defaultFilterState.dateTime
-      const exact = dateTime.exact || defaultExact
-      const tipMap = {
-        fiveyear: '近5年',
-        threeyear: '近3年',
-        thisyear: '近1年',
-        'lately-7': '近7天',
-        'lately-30': '近30天'
-      }
-      const tipKey = tipMap[exact] || ''
-      if (keywords || this.additionalWordsArr.length) {
-        return `对不起,没有找到<span class="highlight-text"> ${tipKey} </span>相关匹配的信息,修改时间范围或换个搜索词试试吧`
-      } else {
-        return '请输入关键词试试吧'
-      }
-    },
-    interceptTipText() {
-      const { interceptLimit, interceptOtherWords } = this.pageState
-      if (interceptLimit && interceptOtherWords) {
-        return `“${interceptOtherWords}”及其后面的字词均被忽略,因为剑鱼标讯的查询限制在${interceptLimit}个汉字以内。`
-      } else {
-        return ''
-      }
+      return '暂未收藏标讯'
     },
     tabSwitchShow() {
       return this.pageState.tabSwitchShow
@@ -931,14 +880,17 @@ export default {
           login: true
         })
       }
-      console.log(filters)
       if (!filters || Object.keys(filters).length === 0) return
-      const { getScopeOptions = [], getTimeOptions = [] } = searchFilters
+      const {
+        getLabelOptions = [],
+        getPulishTimeOptions = [],
+        getTimeOptions = []
+      } = searchFilters
       this.topSearch.input = filters.keywords.join(' ')
       // 恢复搜索范围
       if (filters.label) {
         // 只恢复可用的部分
-        const canUseOptions = getScopeOptions
+        const canUseOptions = getLabelOptions
           .filter((item) => !item.disabled)
           .map((item) => item.key)
         this.filters.label = filters.label.filter((item) =>
@@ -968,7 +920,7 @@ export default {
       }
       if (filters.publishTime) {
         // 只恢复可用的部分
-        const canUseOptions = getTimeOptions
+        const canUseOptions = getPulishTimeOptions
           .filter((item) => !item.disabled)
           .map((item) => item.key)
         const { exact } = filters.publishTime
@@ -976,6 +928,16 @@ export default {
           this.$set(this.filters, 'dateTime', filters.publishTime)
         }
       }
+      if (filters.selectTime) {
+        // 只恢复可用的部分
+        const canUseOptions = getTimeOptions
+          .filter((item) => !item.disabled)
+          .map((item) => item.key)
+        const { exact } = filters.selectTime
+        if (exact && canUseOptions.includes(exact)) {
+          this.$set(this.filters, 'selectTime', filters.selectTime)
+        }
+      }
       // 附加词
       const { additionalWords, wordsMode } = filters
       const moreKeywordsModeState = {}
@@ -1060,11 +1022,9 @@ export default {
         }
       })
     },
-    doOpen(type) {
+    doOpen() {
       if (!this.isLogin) {
-        if (type !== 'label') {
-          return this.toLogin()
-        }
+        return this.toLogin()
       }
     },
     doSearch(conf = {}) {
@@ -1086,7 +1046,7 @@ export default {
       // 重置页码
       this.resetListState()
       this.saveDefaultScope()
-      this.filters.keywords = this.topSearch.input
+      this.filters.keywords = ''
       this.pageState.splitKeywords = ''
       this.listState.loading = true
       this.getList()
@@ -1136,7 +1096,12 @@ export default {
         district: district,
         subtype: infoTypeText.join(','), // 信息类型
         publishTime: FilterHistoryViewModel2AjaxModel.formatTime(
-          this.filters.dateTime,
+          this.filters.publishTime,
+          true,
+          '-'
+        ),
+        selectTime: FilterHistoryViewModel2AjaxModel.formatTime(
+          this.filters.selectTime,
           true,
           '-'
         ),
@@ -1180,12 +1145,8 @@ export default {
           data = {},
           error_code: code = 0,
           error_msg: msg
-        } = await getBiddingSearchList(params, this.restfulApiUserTypeDefault)
-        const isLimited =
-          data.isLimit === 1 ||
-          data.isLimit === undefined ||
-          data.isLimit === null
-        if (code === 0 && data && isLimited) {
+        } = await getCollectList(params, this.restfulApiUserTypeDefault)
+        if (code === 0 && data) {
           // 判断是否为刷新
           if (t.refreshing) {
             t.list = []
@@ -1194,9 +1155,8 @@ export default {
           // 请求完成后的回调
           this.afterSearch(params, data)
           // 列表赋值
-          const list = data.list
+          const list = data.res
           const count = data.count
-          const total = data.total
           if (Array.isArray(list)) {
             // 整理每一项
             this.preSortList(list)
@@ -1217,9 +1177,6 @@ export default {
           if (count && count !== -1) {
             t.count = count
           }
-          if (total) {
-            t.total = total
-          }
 
           // 加载状态结束
           t.loaded = true
@@ -1241,16 +1198,7 @@ export default {
             t.finished = true
           }
         } else {
-          // 限制正文、附件查询
-          if (data) {
-            if (data.isLimit === -1) {
-              this.$toast('抱歉!由于系统繁忙暂时无法进行搜索,请1分钟后再试!')
-            } else if (data.isLimit === -2) {
-              this.$toast('抱歉!由于系统繁忙暂时无法进行搜索,请稍后再试!')
-            }
-          } else {
-            this.$toast(msg || '请求失败')
-          }
+          this.$toast(msg || '请求失败')
           t.loaded = true
           t.loading = false
           t.finished = true
@@ -1454,7 +1402,7 @@ export default {
       ].filter((v) => v)
 
       item.dateTime = item.publishTime ? item.publishTime * 1000 : ''
-
+      item.selectTime = item.selectTime ? item.selectTime * 1000 : ''
       // 整理企业画像数据
       let winnerList = Array.isArray(item.winnerInfo) ? item.winnerInfo : []
       winnerList = winnerList.map((w) => {
@@ -1693,6 +1641,9 @@ export default {
         publishtime: FilterHistoryViewModel2AjaxModel.formatTime(
           this.filters.dateTime
         ),
+        selectTime: FilterHistoryViewModel2AjaxModel.formatSelectTime(
+          this.filters.selectTime
+        ),
         subtype: infoTypeText.join(','), // 信息类型
         buyerclass: this.filters.buyerClass.join(','),
         winnertel: this.filters.winnerConcat.join(','),
@@ -2054,18 +2005,6 @@ export default {
   font-size: 14px;
 }
 
-.intercept-tip-container {
-  padding: 8px 16px;
-  font-size: 14px;
-  color: #1d1d1d;
-  line-height: 20px;
-  ::v-deep {
-    .iconfont {
-      color: $main;
-    }
-  }
-}
-
 .list-item {
   &:not(:first-of-type) {
     margin-top: 8px;