瀏覽代碼

Merge branch 'dev/v1.0.51_zsy' of jianyu/web into feature/v1.0.51

zhangsiya 1 年之前
父節點
當前提交
6c5c6636e7

+ 2 - 1
apps/bigmember_pc/src/assets/style/page/pdf.scss

@@ -33,7 +33,8 @@ body {
 }
 * {
   line-height: 22px;
-  font-family: SimSun, Tahoma, Arial, sans-serif !important;
+  font-family: 'Microsoft YaHei', '微软雅黑', sans-serif !important;
+  //font-family: SimSun, Tahoma, Arial, sans-serif !important;
   box-sizing: border-box !important;
   word-break: break-all;
 }

+ 32 - 2
apps/bigmember_pc/src/components/download-report/DownloadBottomTip.vue

@@ -20,12 +20,13 @@
           </slot>
         </span>
       </template>
-      <span class="iconfont icon-close" @click="hiddenTip"></span>
+<!--      <span class="iconfont icon-close" @click="hiddenTip"></span>-->
     </div>
   </el-collapse-transition>
 </template>
 
 <script>
+import { throttle } from 'lodash'
 export default {
   props: {
     typeText:{
@@ -50,6 +51,18 @@ export default {
       showTip: true
     }
   },
+  mounted () {
+    this.windowScrollFn()
+    this.$on('hook:mounted', () => {
+      // dom插入到根元素
+      window.addEventListener('scroll', this.windowScrollFn)
+      window.addEventListener('resize', this.windowScrollFn)
+    })
+    this.$on('hook:destroyed', () => {
+      window.removeEventListener('scroll', this.windowScrollFn)
+      window.removeEventListener('resize', this.windowScrollFn)
+    })
+  },
   methods: {
     hiddenTip () {
       this.showTip = !this.showTip
@@ -59,7 +72,24 @@ export default {
     },
     downloadReport () {
       this.$emit('downloadReport')
-    }
+    },
+    windowScrollFn: throttle (function () {
+      const $ = this.$querySelector.bind(this)
+      // 吸底
+      // 如果距离底部
+      const bottomFooter = document.querySelector('.j-bottom')
+      let ob = { top: 0 }
+      if (bottomFooter) {
+        ob = bottomFooter.getBoundingClientRect()
+      }
+      // bottom出现在视口
+      const bottom = window.innerHeight - ob.top
+      if (bottom > 0 && ob.top !== 0) {
+        $(this.$el).css({ bottom: parseInt(bottom) })
+      } else {
+        $(this.$el).css({ bottom: 0 })
+      }
+    })
   }
 }
 </script>

+ 4 - 6
apps/bigmember_pc/src/components/report-data/ReportList.vue

@@ -6,7 +6,7 @@
         :data="listState.list"
         style="width: 960px; margin: 0 auto"
       >
-        <el-table-column label="报告发起时间" width="170">
+        <el-table-column label="报告发起时间" align="center" width="170">
           <template slot-scope="scope">
             <span class="max-line-3">{{
               (scope.row.createTime * 1000) | formatTime('yyyy-MM-dd HH:mm')
@@ -96,12 +96,12 @@
             </el-tooltip>
           </template>
         </el-table-column>
-        <el-table-column label="状态">
+        <el-table-column label="状态" align="center">
           <template slot-scope="scope">
             <span v-html="formatState(scope.row.state)"></span>
           </template>
         </el-table-column>
-        <el-table-column label="备注" min-width="300">
+        <el-table-column label="备注" align="center" min-width="300">
           <template slot-scope="scope">
             <span
               v-if="scope.row.state === null || scope.row.state === undefined"
@@ -133,7 +133,7 @@
             </span>
           </template>
         </el-table-column>
-        <el-table-column min-width="128" label="操作">
+        <el-table-column min-width="128" align="center" label="操作">
           <template slot-scope="scope">
             <!-- 下载完成,且当前分析下查询的项目总数>0展示-->
               <span
@@ -586,13 +586,11 @@ export default {
       font-weight: 400;
       color: #1d1d1d;
       line-height: 22px;
-      text-align: center;
       border-bottom-color: rgba(255, 255, 255, 0.5);
     }
     .el-table th.is-leaf {
       line-height: 18px;
       background: #f7f9fc;
-      text-align: center;
       border-bottom-color: transparent;
     }
   }

+ 16 - 11
apps/bigmember_pc/src/views/analysisReport/MarketAnalysisResult.vue

@@ -592,7 +592,7 @@ function getImgForVipUpgrade(name, bg = false, suffix = '.png') {
 export default {
   name: 'analysis-report-result',
   mixins: [workDeskTop],
-  inject: ['downloadReportFun'],
+  inject: ['downloadReportFun', 'confirmTipFun'],
   components: {
     [Icon.name]: Icon,
     [Dropdown.name]: Dropdown,
@@ -2452,16 +2452,21 @@ export default {
     // 申请免费体验
     goFreeExperience () {
       const _this = this
-      if(this.entniche && this.bigmember) {
-        this.$confirm('您可联系客服,申请体验查看完整报告内容', '申请免费体验', {
-          confirmButtonText: '联系客服',
-          cancelButtonText: '我再想想',
-          center: true,
-          showClose: false,
-          customClass: 'download-message-tip',
-        }).then(() => {
-          _this.contactCustomer(_this)
-        }).catch(() => {})
+      if(this.entniche || this.bigmember) {
+        const config = {
+          title: '申请免费体验',
+          messageInfo:
+            '<p>您可联系客服,申请体验查看完整报告内容</p>',
+          confirmButtonText: '我再想想',
+          cancelButtonText: '联系客服',
+          showCancelButton: true,
+          btnMiddle: false,
+          confirmCallBack: () => {},
+          cancelCallBack: () => {
+            _this.contactCustomer(_this)
+          }
+        }
+        this.confirmTipFun(config)
       } else {
         this.openLeaveSourceDialog('pc_dzbg_fullreport')
       }

+ 4 - 4
apps/bigmember_pc/src/views/analysisReport/components/ReportDownloadDialog.vue

@@ -214,9 +214,9 @@ export default {
         width:720px;
       }
       .el-button{
-        padding: 6px 35px;
-        font-size:16px;
-        line-height: 24px;
+        padding: 7px 22px;
+        font-size:14px;
+        line-height: 22px;
       }
     }
     .market-general-box{
@@ -238,7 +238,7 @@ export default {
     }
     .download-notice-box{
       padding:20px;
-      background: linear-gradient(180deg, #F7F9FA 100%, #F7F9FA 0%);
+      background: linear-gradient(90deg, #F7F9FA 0%, #fff 100%);
       border-radius: 8px;
       border: 1px solid rgba(0,0,0, 0.05);
     }

+ 12 - 1
apps/bigmember_pc/src/views/analysisReport/index.vue

@@ -122,7 +122,8 @@ export default {
   },
   provide () {
     return {
-      downloadReportFun: this.downloadReport
+      downloadReportFun: this.downloadReport,
+      confirmTipFun: this.confirmTipFun
     }
   },
   methods: {
@@ -325,6 +326,16 @@ export default {
         }
       )
       this.showConfirm = true
+    },
+    // 需要展示弹窗
+    confirmTipFun (config) {
+      if(config) {
+        this.dialogConfig = Object.assign(
+          {},
+          config
+        )
+        this.showConfirm = true
+      }
     }
   }
 }

+ 28 - 85
apps/bigmember_pc/src/views/download-pdf/components/DetailList.vue

@@ -11,7 +11,7 @@
           {{ scope.row.name }}
         </template>
       </el-table-column>
-      <el-table-column label="项目金额">
+      <el-table-column label="项目金额(万元)">
         <template slot-scope="scope">
           {{ scope.row.money || '--' }}
         </template>
@@ -48,9 +48,7 @@
 </template>
 
 <script>
-import { getMarketAnalysisReportProjectList } from '@/api/modules'
 import { formatMoney, dateFormatter } from '@/utils/'
-
 export default {
   props: {
     // 父级筛选条件
@@ -76,96 +74,41 @@ export default {
   data() {
     return {
       dataList: [],
-      filters: {
-        subscribe: [],
-        area: {},
-        buyerClass: [],
-        industry: {},
-        winner: '',
-        sort: 0,
-        buyerName: ''
-      },
-      listState: {
-        loaded: false,
-        loading: false,
-        pageNum: 1,
-        pageSize: 100,
-        total: 0,
-        list: []
-      }
     }
   },
   mounted() {
-    // this.getList()
+    this.dataList = this.list.map((item) => {
+      item.money = this.calcMoney(item?.bidAmount || item?.budget)
+      // 整理中标企业
+      if (Array.isArray(item.winner)) {
+        const winners = item.winner.map((w, index) => {
+          let id = null
+          if (Array.isArray(item.winnerId)) {
+            id = item.winnerId[index]
+          }
+          return {
+            name: w,
+            id
+          }
+        })
+        item.winners = winners.filter((w) => w.name)
+      }
+      return item
+    })
   },
   methods: {
     dateFormatter,
-    async getList() {
-      const filters = this.getFilters()
-      const params = {
-        rid: this.rid,
-        pageNum: this.listState.pageNum,
-        pageSize: this.listState.pageSize,
-        ...filters
-      }
-      try {
-        this.listState.loading = true
-        const { data, error_code: code } =
-          await getMarketAnalysisReportProjectList(params)
-        this.$emit('ajax-loaded')
-        if (code === 0 && data && Array.isArray(data.list)) {
-          this.listState.list = data.list.map((item) => {
-            item.money = formatMoney(item?.bidAmount || item?.budget)
-            // 整理中标企业
-            if (Array.isArray(item.winner)) {
-              const winners = item.winner.map((w, index) => {
-                let id = null
-                if (Array.isArray(item.winnerId)) {
-                  id = item.winnerId[index]
-                }
-                return {
-                  name: w,
-                  id
-                }
-              })
-              item.winners = winners.filter((w) => w.name)
-            }
-            return item
-          })
-          this.listState.total = data.total
-        } else {
-          this.listState.list = []
-          this.listState.total = 0
-        }
-      } catch (error) {
-        console.log(error)
-      } finally {
-        this.listState.loading = false
-        this.listState.loaded = true
+    calcMoney(budget) {
+      if (budget) {
+        return formatMoney(budget, {
+          type: 'number',
+          digit: 2,
+          level: 1
+        })
+      } else {
+        return ''
       }
     },
-    getFilters() {
-      const { selectTime, selectTimeExtra } = this.reportFilters || {}
-      const { area, buyerClass, industry, winner, buyerName, sort } =
-        this.filters
-      let { subscribe } = this.filters
-
-      if (Array.isArray(subscribe) && subscribe.length === 0) {
-        subscribe = this.subscribeClassList
-      }
-
-      return {
-        rangeTime: selectTime,
-        rangeTimeExtra: selectTimeExtra,
-        keysItems: JSON.stringify(subscribe),
-        sort,
-        area: JSON.stringify(area),
-        buyerclass: buyerClass.join(','),
-        industry: JSON.stringify(industry),
-        buyer: buyerName,
-        winner
-      }
-    }
   }
 }
 </script>

+ 1 - 1
apps/bigmember_pc/src/views/download-pdf/marketReport.vue

@@ -386,7 +386,7 @@
             />
           </div>
         </div>
-        <h4>1.6.1项目金额</h4>
+        <h4>1.6.2项目金额</h4>
         <div class="sub-section-content">
           <MarketSegment
             v-if="sections.market.refine.dataAlready"

+ 0 - 2
apps/bigmember_pc/src/views/order/components/download-pack/footer.vue

@@ -8,8 +8,6 @@
       :productionPay="amount.pay"
       @submit="submitCreatedProductOrder"
       :loading="loadingStatus.some"
-      :useStickyBar="true"
-      :alwaysShowSticky="true"
     >
       <template v-slot:buy-tip-group>
         <router-view name="buy-tip"></router-view>

+ 20 - 3
apps/bigmember_pc/src/views/portrayal/UnitPortrayal.vue

@@ -156,7 +156,8 @@
         :ent-name="info.buyerName"
         name="buyer"
         titlename="采购单位通讯录"
-        style="padding: 32px 40px 32px; margin-top: 0"
+        style="padding: 32px 40px 32px; margin-top: 0;border-bottom-left-radius: 4px;
+        border-bottom-right-radius: 4px;"
         v-if="!noBuyerAuth"
       ></ContactList>
       <div class="buyer-phone-list-mask" v-else>
@@ -216,7 +217,7 @@
         ></Dynamic-list>
         <!-- <unit-list :noauth="noBuyerAuth" :usage="usageInfo" :bidparams="bidInfoParams" v-if="unitlistshow" @list="getList" @click="openCheckPop" @onClickUnlock="goEmitClick"></unit-list>-->
         <div class="partingLine"></div>
-        <div class="bg-white" style="padding-top: 30px">
+        <div class="bg-white" style="padding-top: 30px; border-top-right-radius: 4px;border-top-left-radius: 4px;">
           <div class="markPosition cgfx" v-if="!noBuyerAuth">
             <div class="item"></div>
           </div>
@@ -1700,8 +1701,12 @@ export default {
     margin-top: 30vh !important;
   }
   .prop-report-download-dialog.el-dialog {
-    margin-top: 5vh !important;
+    margin-top: 10vh !important;
+   .el-dialog--center .el-dialog__body {
+      padding: 0 32px 20px 32px;
+    }
   }
+
   .el-dialog--center .el-dialog__body {
     text-align: center;
   }
@@ -1862,12 +1867,16 @@ export default {
 
   .placeholderbox {
     height: 49px;
+    border-top-left-radius: 4px;
+    border-top-right-radius: 4px;
   }
 
   .tab-header {
     height: 48px;
     line-height: 48px;
     border-bottom: 1px solid #ececec;
+    border-top-left-radius: 4px;
+    border-top-right-radius: 4px;
 
     a {
       text-decoration: none;
@@ -1920,6 +1929,7 @@ export default {
       margin-left: -140px;
       transform: translateX(-50%);
       z-index: 100;
+      transition: max-width, width 0.5s ease;
     }
   }
 
@@ -2040,6 +2050,7 @@ export default {
     position: relative;
     padding: 20px 40px 22px;
     background: #fff;
+    border-radius: 4px;
 
     .u-top-container {
       display: flex;
@@ -2120,6 +2131,8 @@ export default {
     margin-top: 16px;
     padding: 32px 32px 0 32px;
     background: #fff;
+    border-top-left-radius: 4px;
+    border-top-right-radius: 4px;
   }
 
   .u-i-box {
@@ -2185,6 +2198,10 @@ export default {
         margin-left:10px;
       }
     }
+    .unit-chart{
+      border-bottom-right-radius: 4px;
+      border-bottom-left-radius: 4px;
+    }
   }
 
   .free-bg {

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

@@ -2,7 +2,7 @@
   <section class="search-box">
     <div class="filter-row prop-name">
       <span class="row-label" :style="!hasPower ? 'width:80px': ''">
-        {{ type === 'procurementUnit' ? '目标业主' : '目标企业' }}
+        {{ type === 'procurementUnit' ? '目标业主' : '目标企业' }}
       </span>
       <span>{{ type === 'procurementUnit' ? buyerName : entName }}</span>
     </div>

+ 17 - 9
apps/bigmember_pc/src/views/portrayal/components/UnitReportDownloadDialog.vue

@@ -1,5 +1,6 @@
 <template>
   <el-dialog
+    style="overflow: hidden"
     title="业主采购分析报告下载"
     :visible.sync="options.visible"
     :close-on-click-modal="false"
@@ -78,6 +79,7 @@ import DownloadFilter from './DownloadFilter.vue'
 import { getPDFPackBalance, getPdfEmail, savePdfCondition, ajaxExportPdf } from '@/api/modules/'
 import { emailRegExp } from '@/utils/constant'
 import { debounce } from '@/utils/'
+import {  throttle } from 'lodash'
 
 export default {
   components: {
@@ -264,11 +266,10 @@ export default {
   }
 }
 </script>
-
 <style lang="scss" scoped>
 .prop-report-download-dialog{
   section {
-    margin-top:20px;
+    margin-top:12px;
     text-align: left;
   }
   .box-label{
@@ -293,9 +294,9 @@ export default {
       width:720px;
     }
     .el-button{
-      padding: 6px 35px;
-      font-size:16px;
-      line-height: 24px;
+      padding: 7px 22px;
+      font-size:14px;
+      line-height: 22px;
     }
   }
   .market-general-box{
@@ -316,8 +317,8 @@ export default {
     }
   }
   .download-notice-box, .search-box{
-    padding:20px;
-    background: linear-gradient(180deg, #F7F9FA 100%, #F7F9FA 0%);
+    padding:12px 20px;
+    background: linear-gradient(90deg, #F7F9FA 0%, #fff 100%);
     border-radius: 8px;
     border: 1px solid rgba(0,0,0, 0.05);
   }
@@ -417,7 +418,6 @@ export default {
         background-color: #ffecec;
       }
     }
-
   }
 }
 ::v-deep {
@@ -428,7 +428,8 @@ export default {
     padding: 32px 32px 0 32px;
   }
   .el-dialog__body {
-    padding: 0 20px 32px 32px;
+    overflow-y:auto ;
+    padding: 0 32px 20px 32px;
   }
   .el-dialog__footer{
     padding: 11px 32px;
@@ -443,4 +444,11 @@ export default {
     border-radius: 6px !important;
   }
 }
+@media (max-height: 720px) {
+  ::v-deep {
+    .prop-report-download-dialog .el-dialog__body{
+      height: calc(90vh - 56px - 69px - 10px);
+    }
+  }
+}
 </style>