Browse Source

feat: 页面显示逻辑优化

cuiyalong 2 years ago
parent
commit
a714c219ed

+ 24 - 18
src/components/article-item/ProjectItem.vue

@@ -18,33 +18,39 @@
         </span>
       </div>
       <div class="description">
-        <p class="p-bd-d-item-list" v-if="buyer || budget">
-          <span class="p-bd-d-item" v-if="buyer">
+        <p class="p-bd-d-item-list">
+          <span class="p-bd-d-item">
             <i class="p-bd-d-item-label">采购单位:</i>
-            <el-link
-              :underline="false"
-              type="primary"
-              @click.prevent.stop="goPortrayal(buyer, 'buyer')">{{ buyer }}</el-link>
+            <template v-if="buyer">
+              <el-link
+                :underline="false"
+                type="primary"
+                @click.prevent.stop="goPortrayal(buyer, 'buyer')">{{ buyer }}</el-link>
+            </template>
+            <template v-else>--</template>
           </span>
           <span class="p-bd-d-item">
             <i class="p-bd-d-item-label">预算金额:</i>
             <em>{{ budget ? formatMoney(budget, { level: 1 }) : '--' }}</em>
           </span>
         </p>
-        <p class="p-bd-d-item-list" v-if="winners.length">
+        <p class="p-bd-d-item-list">
           <span class="p-bd-d-item">
             <i class="p-bd-d-item-label">中标单位:</i>
-            <el-link
-              data-dot=","
-              :class="{ 'dot-suffix': i !== winners.length - 1 }"
-              :underline="false"
-              :disabled="!w.id"
-              type="primary"
-              v-for="(w, i) in winners"
-              :key="i"
-              @click.prevent.stop="goPortrayal(w.id, 'winner')">
-              {{ w.name }}
-            </el-link>
+            <template v-if="winners.length">
+              <el-link
+                data-dot=","
+                :class="{ 'dot-suffix': i !== winners.length - 1 }"
+                :underline="false"
+                :disabled="!w.id"
+                type="primary"
+                v-for="(w, i) in winners"
+                :key="i"
+                @click.prevent.stop="goPortrayal(w.id, 'winner')">
+                {{ w.name }}
+              </el-link>
+            </template>
+            <template v-else>--</template>
           </span>
           <span class="p-bd-d-item">
             <i class="p-bd-d-item-label">中标金额:</i>

+ 6 - 2
src/views/analysisReport/MarketAnalysisResult.vue

@@ -314,6 +314,7 @@
       </el-tab-pane>
       <el-tab-pane lazy label="项目明细" name="2">
         <ProjectDetailsList
+          :rid="rid"
           :initFilters="projectDetailFilters.initFilters"
           :reportFilters="reportFilters"
           :subscribeClassList="projectDetailFilters.keywordsGroupList"
@@ -377,7 +378,10 @@ export default {
     CollectInfo
   },
   props: {
-    rid: String
+    rid: {
+      type: String,
+      required: true
+    }
   },
   data () {
     return {
@@ -1864,7 +1868,7 @@ export default {
       } else if (type === 'buyerclassTOP') {
         this.recoverBuyerFilter(e.name)
       } else if (type === 'winnerTOP') {
-        this.recoverWinnerFilter(e.winner_name)
+        this.recoverWinnerFilter(e.name)
       } else if (type === 'areaScatter') {
         this.recoverAreaCityFilter(e.name)
       } else if (type === 'userScatter') {

+ 24 - 10
src/views/analysisReport/components/ProjectDetailsList.vue

@@ -1,6 +1,6 @@
 <template>
   <section class="project-details">
-    <header class="project-details-header pd-lr">
+    <header class="project-details-header">
       <div class="filter-list line-1">
         <SubscribeClassListCascader
           class="filter-item"
@@ -66,7 +66,7 @@
       </div>
       <div class="project-details-list" v-loading="listState.loading">
         <ProjectItem
-          class="project-details-item pd-lr"
+          class="project-details-item"
           v-for="project in listState.list"
           :buyer="project.buyer"
           :title="project.name"
@@ -84,7 +84,7 @@
       </div>
     </main>
     <div class="project-details-footer">
-      <div class="pagination-container pd-lr" v-show="listState.total > 0">
+      <div class="pagination-container" v-show="listState.total > 0">
         <el-pagination
           background
           popper-class="pagination-custom-select"
@@ -134,6 +134,11 @@ export default {
     Empty
   },
   props: {
+    rid: {
+      type: String,
+      required: true,
+      default: ''
+    },
     // 更改时会清空其他选择器并恢复initFilter中的选项
     initFilters: {
       type: Object,
@@ -178,7 +183,7 @@ export default {
       conf: {
         sortList: [
           {
-            name: '项目更新时间由晚到早',
+            name: '成交时间时间由晚到早',
             value: 0
           },
           {
@@ -290,6 +295,7 @@ export default {
     async getList () {
       const filters = this.getFilters()
       const params = {
+        rid: this.rid,
         pageNum: this.listState.pageNum,
         pageSize: this.listState.pageSize,
         ...filters
@@ -313,7 +319,7 @@ export default {
               },
               {
                 // 有中标金额取中标金额,没有取预算,预算没有置空
-                value: formatMoney(item?.bidAmount || item?.budget)
+                value: formatMoney(item?.bidAmount || item?.budget, { level: 1 })
               }
             ].filter(v => v.value)
             // 整理中标企业
@@ -359,17 +365,20 @@ export default {
   padding-right: 40px;
 }
 .project-details {
-  padding: 32px 0;
+  padding: 32px 20px;
   background-color: #fff;
-  &-header {
-    margin-bottom: 46px;
+   &-header {
+    padding-bottom: 16px;
+    border-bottom: 1px dashed rgba(0,0,0,0.05);
+  }
+  &-main {
+    padding-top: 30px;
   }
 }
 .project-details-actions {
   display: flex;
   align-items: center;
   justify-content: space-between;
-  padding: 0 40px;
   margin-bottom: 16px;
 }
 .project-details-actions-right {
@@ -383,8 +392,13 @@ export default {
 }
 .project-details-list {
   min-height: 420px;
+  margin-bottom: 16px;
+}
+.project-details-item {
+  padding-left: 0;
+  padding-right: 0;
+  border-bottom: 1px solid rgba(0,0,0,0.05);
 }
-
 .filter-list {
   display: flex;
   align-items: center;

+ 16 - 7
src/views/reportData/components/ProjectDetailsList.vue

@@ -1,6 +1,6 @@
 <template>
   <section class="project-details">
-    <header class="project-details-header pd-lr">
+    <header class="project-details-header">
       <div class="filter-list line-1">
         <SubscribeClassListCascader
           class="filter-item"
@@ -65,7 +65,7 @@
       </div>
       <div class="project-details-list" v-loading="listState.loading">
         <ProjectItem
-          class="project-details-item pd-lr"
+          class="project-details-item"
           v-for="project in listState.list"
           :buyer="project.buyer"
           :title="project.name"
@@ -83,7 +83,7 @@
       </div>
     </main>
     <div class="project-details-footer">
-      <div class="pagination-container pd-lr" v-show="listState.total > 0">
+      <div class="pagination-container" v-show="listState.total > 0">
         <el-pagination
           background
           popper-class="pagination-custom-select"
@@ -317,7 +317,7 @@ export default {
               },
               {
                 // 有中标金额取中标金额,没有取预算,预算没有置空
-                value: formatMoney(item?.bidAmount || item?.budget)
+                value: formatMoney(item?.bidAmount || item?.budget, { level: 1 })
               }
             ].filter(v => v.value)
             // 整理中标企业
@@ -363,17 +363,20 @@ export default {
   padding-right: 40px;
 }
 .project-details {
-  padding: 32px 0;
+  padding: 32px 40px;
   background-color: #fff;
   &-header {
-    margin-bottom: 46px;
+    padding-bottom: 16px;
+    border-bottom: 1px dashed rgba(0,0,0,0.05);
+  }
+  &-main {
+    padding-top: 30px;
   }
 }
 .project-details-actions {
   display: flex;
   align-items: center;
   justify-content: space-between;
-  padding: 0 40px;
   margin-bottom: 16px;
 }
 .project-details-actions-right {
@@ -387,6 +390,12 @@ export default {
 }
 .project-details-list {
   min-height: 420px;
+  margin-bottom: 16px;
+}
+.project-details-item {
+  padding-left: 0;
+  padding-right: 0;
+  border-bottom: 1px solid rgba(0,0,0,0.05);
 }
 
 .filter-list {