Sfoglia il codice sorgente

feat: 摘要、推荐等优化

zhangyuhan 1 anno fa
parent
commit
a8013c5bb4

+ 2 - 2
apps/bigmember_pc/src/views/article-content/components/ContentSummary.vue

@@ -22,7 +22,7 @@ const tableConfig = ref({
 })
 
 const contentSummaryTable = computed(() => {
-  const list = SummaryModel.value.list || []
+  const list = SummaryModel.value.list.filter((v) => v.value) || []
   let result = []
 
   if (!list.length) {
@@ -48,7 +48,7 @@ const contentSummaryTable = computed(() => {
   // 不足的数组需要补全
   const lastArr = result[result.length - 1]
   let fillArr = new Array(4 - lastArr.length)
-  fill(fillArr, { label: '-' })
+  fill(fillArr, { label: '' })
   result[result.length - 1] = lastArr.concat(fillArr)
 
   return result

+ 2 - 0
apps/bigmember_pc/src/views/article-content/components/FooterAd.vue

@@ -59,7 +59,9 @@ const props = defineProps({
 <style lang="scss" scoped>
 .article-page-footer-container {
   position: fixed;
+  width: 100%;
   bottom: 0;
+  left: 0;
   ::v-deep {
     .adsense {
       margin-top: 0;

+ 10 - 10
apps/bigmember_pc/src/views/article-content/components/RecommendEnt.vue

@@ -18,35 +18,35 @@ function getRecommendEntInfo(list) {
     const key = item?.id || item?.name || ''
     ajaxGetMiniEntInfo(type, key).then((res) => {
       if (res.error_code === 0) {
-        const item = res.data
+        const resItem = res.data
         resultList[i] = {
           type,
-          id: item?.winnerId || '',
-          name: item.companyName,
-          time: item.timeFrame,
+          id: resItem?.winnerId || '',
+          name: resItem.companyName || item?.name || '',
+          time: resItem.timeFrame,
           tags: [
             {
-              value: item.contactCount,
+              value: resItem.contactCount || 0,
               unit: '个',
               label: '联系人'
             },
             {
-              value: item.biddingCount,
+              value: resItem.biddingCount || 0,
               unit: '条',
               label: '招标动态'
             },
             {
-              value: item.projectCount,
+              value: resItem.projectCount || 0,
               unit: '个',
               label: '采购项目数量'
             },
             {
-              value: formatMoney(item.bidamountCount, { type: 'number' }),
-              unit: formatMoney(item.bidamountCount, { type: 'unit' }),
+              value: formatMoney(resItem.bidamountCount, { type: 'number' }),
+              unit: formatMoney(resItem.bidamountCount, { type: 'unit' }),
               label: '采购规模'
             },
             {
-              value: item.cooperate,
+              value: resItem.cooperate || 0,
               unit: '个',
               label: '合作企业'
             }

+ 26 - 11
apps/bigmember_pc/src/views/article-content/components/RecommendOpportunities.vue

@@ -26,13 +26,14 @@ function dateFormat(str) {
  */
 function createRecommendation(modelName) {
   const model = ContentExpandsModel.value[modelName]
-  const list = model.list.map((item) => ({
+  const list = model.list?.map((item) => ({
     ...item,
     _id: item.id,
     matchKeys: []
   }))
   return {
     list,
+    name: model.name || '',
     title: model.title,
     total: model.total,
     more: model.more
@@ -59,8 +60,8 @@ const recommendWinners = computed(() => {
 
 const canShowModule = computed(() => {
   const result =
-    ContentExpandsModel.value.recommendProjects.total > 0 &&
-    ContentExpandsModel.value.recommendBuyers.total > 0 &&
+    ContentExpandsModel.value.recommendProjects.total > 0 ||
+    ContentExpandsModel.value.recommendBuyers.total > 0 ||
     ContentExpandsModel.value.recommendWinners.total > 0
   return result
 })
@@ -188,13 +189,20 @@ const recommendMaskConfig = {
             {{ recommendBuyers.total }}
           </span>
         </div>
-        <span
-          class="more-text"
-          v-if="recommendBuyers.more"
-          @click="doOpenMore('buyer')"
-        >
-          查看更多 <i class="iconfont icon-more"></i>
-        </span>
+        <div class="right-quick-more-actions flex flex-(row items-center)">
+          <quick-monitor
+            v-if="recommendBuyers.name"
+            type="client"
+            :params="recommendBuyers.name"
+          />
+          <span
+            class="more-text"
+            v-if="recommendBuyers.more"
+            @click="doOpenMore('buyer')"
+          >
+            查看更多 <i class="iconfont icon-more"></i>
+          </span>
+        </div>
       </div>
 
       <div class="article-info-list">
@@ -233,7 +241,7 @@ const recommendMaskConfig = {
             {{ recommendWinners.total }}
           </span>
         </div>
-        <div>
+        <div class="right-quick-more-actions flex flex-(row items-center)">
           <quick-monitor
             v-if="recommendWinners.id"
             type="ent"
@@ -335,6 +343,13 @@ const recommendMaskConfig = {
       }
     }
   }
+  .right-quick-more-actions {
+    color: #686868;
+    font-size: 14px;
+    .more-text {
+      margin-left: 16px;
+    }
+  }
 
   .recommend-serve-card.has-header {
     min-height: 205px;

+ 43 - 5
apps/bigmember_pc/src/views/article-content/pages/Article.vue

@@ -50,6 +50,28 @@ const contentTabs = [
   }
 ]
 
+const tabContentState = ref({
+  公告摘要: true,
+  公告正文: true,
+  '招标/采购进度': true,
+  投标服务: true,
+  商机推荐: true,
+  客户推荐: true
+})
+
+const tabContentShow = computed(() => {
+  return tabContentState.value
+})
+const tabContentHeaderList = computed(() => {
+  return contentTabs.filter((v) => {
+    return tabContentState.value[v.label]
+  })
+})
+
+function doHideTabContent(label) {
+  tabContentState.value[label] = false
+}
+
 function scrollToTop(element, diff = 0) {
   if (element) {
     const topOffset = element.getBoundingClientRect().top + window.pageYOffset
@@ -135,6 +157,9 @@ const originLinkElement = ref(null)
 function doOpenOriginLink() {
   originLinkElement.value?.doGetLinkAction()
 }
+
+// 客户推荐
+function doOpenMore(key) {}
 </script>
 <template>
   <ContentLayout :need-ad="true">
@@ -157,7 +182,7 @@ function doOpenOriginLink() {
           <div
             class="content-tab-label"
             :class="{ 'is-active': item.label === activeContentTab }"
-            v-for="item in contentTabs"
+            v-for="item in tabContentHeaderList"
             :key="item.label"
             @click="doSelectTab(item)"
           >
@@ -168,7 +193,7 @@ function doOpenOriginLink() {
           <div
             class="content-tab-label"
             :class="{ 'is-active': item.label === activeContentTab }"
-            v-for="item in contentTabs"
+            v-for="item in tabContentHeaderList"
             :key="item.label"
             @click="doSelectTab(item)"
           >
@@ -311,9 +336,22 @@ function doOpenOriginLink() {
         <recommend-opportunities></recommend-opportunities>
       </div>
 
-      <div class="content-card watch-tab-content" name="客户推荐">
-        <div class="content-block-header">客户推荐</div>
-        <recommend-customers-list />
+      <div
+        class="content-card watch-tab-content"
+        name="客户推荐"
+        v-if="tabContentShow['客户推荐']"
+      >
+        <div class="flex flex-(row items-center justify-between)">
+          <div class="content-block-header">客户推荐</div>
+          <span
+            class="more-text"
+            v-if="ContentExpandsModel.recommendCustomers.more"
+            @click="doOpenMore('recommendCustomers')"
+          >
+            查看更多 <i class="iconfont icon-more"></i>
+          </span>
+        </div>
+        <recommend-customers-list @doHide="doHideTabContent('客户推荐')" />
       </div>
 
       <Nps></Nps>