Browse Source

feat:周报筛选组件添加、项目明细组件添加

tsz 2 years ago
parent
commit
1d3fa467aa

+ 18 - 0
src/jfw/modules/app/src/web/staticres/jyapp/big-member/css/report_detail_month.css

@@ -179,4 +179,22 @@
     font-size: .26rem;
     line-height: .4rem;
     color: #171826;
+}
+
+.project-detail-list{
+  margin-top: .16rem;
+  background: #fff;
+}
+
+#report_month .search-filters .filters-title, #report_week .search-filters .filters-title{
+  background-color: #fff;
+}
+
+#report_month .empty-container{
+  background-color: #fff;
+}
+
+#report_month .empty-main.tip-text {
+  color: #9B9CA3;
+  font-size: .26rem;
 }

+ 49 - 2
src/jfw/modules/app/src/web/staticres/jyapp/big-member/js/report_detail_month.js

@@ -5,7 +5,8 @@ var vNode = {
       monthReportExample: monthReportExample,
       filterComponent: filterComponent,
       projectHeader: projectHeaderComponent,
-      projectCell: projectCellComponent
+      projectCell: projectCellComponent,
+      empty: emptyComponent
     },
     data: {
         scrollTop:0,
@@ -125,7 +126,15 @@ var vNode = {
         },
         power: [],
         bigStatus: 0,
-        tabActive: '0'
+        tabActive: '0',
+        projectInfo: {},
+        listParams: {
+          sortType: 0, // 项目明细排序方式
+          pageSize: 10,
+          pageNum: 1,
+          start: parseInt(utils.getParam('start')),
+          end: parseInt(utils.getParam('end'))
+        },
     },
     computed: {
         showCurMonthCount: function () {
@@ -174,6 +183,44 @@ var vNode = {
         utils.iosBackRefresh()
     },
     methods: {
+      // 设置排序方式
+      setsortType (data) {
+        this.sortType = data
+      },
+      showLoading: function () {
+        return this.$toast.loading({
+          duration: 0,
+          forbidClick: true,
+          message: 'loading...',
+        })
+      },
+      // 查询项目明细
+      confirm (data) {
+        const params = {
+          ...this.listParams,
+          ...data
+        }
+        this.getProjectInfo(params)
+      },
+      getProjectInfo: function (params) {
+        const loading = this.showLoading()
+        $.ajax({
+          type: 'POST',
+          url: '/bigmember/report/projectInfo',
+          data: JSON.stringify(params),
+          contentType: 'application/json',
+          success: function(res) {
+            if (res && res.error_code === 0 && res.data) {
+              this.projectInfo = res.data
+            } else {
+              this.$toast(res.error_msg)
+            }
+            if(loading) {
+              loading.clear()
+            }
+          }.bind(this)
+        })
+      },
       saveScrollTop: function () {
         var wrapper = document.querySelector('.j-container .j-main')
         if (wrapper.scrollTop) {

+ 16 - 1
src/jfw/modules/app/src/web/staticres/jyapp/big-member/js/report_detail_week.js

@@ -1,6 +1,12 @@
 var vNode = {
     delimiters: ['${', '}'],
     el: '#report_week',
+    components: {
+      filterComponent: filterComponent,
+      projectHeader: projectHeaderComponent,
+      projectCell: projectCellComponent,
+      empty: emptyComponent
+    },
     data: {
         barChart: barChart,
         keywords: '',
@@ -46,7 +52,16 @@ var vNode = {
         showFollowEnt: true,
         initRendererSvg:{
             renderer:'svg'
-        }
+        },
+        tabActive: '0',
+        projectInfo: {},
+        listParams: {
+          sortType: 0, // 项目明细排序方式
+          pageSize: 10,
+          pageNum: 1,
+          start: parseInt(utils.getParam('start')),
+          end: parseInt(utils.getParam('end'))
+        },
     },
     computed: {
         amountWinArr: function () {

+ 15 - 6
src/jfw/modules/app/src/web/templates/big-member/page_report_detail_month.html

@@ -22,6 +22,7 @@
     <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/css/index.css?v={{Msg "seo" "version"}}' />
     <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/filter/css/project_header.css?v={{Msg "seo" "version"}}' />
     <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/filter/css/project_cell.css?v={{Msg "seo" "version"}}' />
+    <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/public/css/empty.css?v={{Msg "seo" "version"}}' />
     <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/css/report_detail_month.css?v={{Msg "seo" "version"}}' />
     <style>
       .example-title{
@@ -490,12 +491,19 @@
             </div>
           </van-tab>
           <van-tab name="1" title="本月项目明细">
-            <div class="j-container search-filters bg-white">
-              <filter-component></filter-component>
-              <div class="project-detail-list">
-                <project-header></project-header>
-                <project-cell></project-cell>
-              </div>
+            <filter-component keyformat="phrases" @confirm="confirm"></filter-component>
+            <div class="project-detail-list" v-if="Object.keys(projectInfo).length != 0 && projectInfo.list.length > 0">
+              <project-header @setsort-type="setsortType"></project-header>
+              <project-cell :item="item" v-for="item in projectInfo.list" :key="item.id">
+                <div class="update-time" v-if="item.lastTime" >
+                  <div class="update-time-label">
+                    本月项目更新时间:
+                  </div>
+                  <div class="update-time-content">2023-5-13</div>
+                </div>
+              </project-cell>
+            </div>
+            <empty v-else>暂无数据</empty>
           </van-tab>
         </van-tabs>
     </div>
@@ -527,6 +535,7 @@
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/filter/js/filter_limit.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/filter/js/project_header.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/filter/js/project_cell.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/public/js/empty.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/js/report_detail_month.js?v={{Msg "seo" "version"}}'></script>
 
 </body>

+ 196 - 164
src/jfw/modules/app/src/web/templates/big-member/page_report_detail_week.html

@@ -19,6 +19,10 @@
     <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/vant/2.12.24/lib/icon/local.css />
     <link rel="stylesheet" href=//cdn-common.jianyu360.com/cdn/lib/v-charts/1.19.0/style.min.css />
     <!--E-当前页面的css资源-->
+    <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/css/index.css?v={{Msg "seo" "version"}}' />
+    <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/filter/css/project_header.css?v={{Msg "seo" "version"}}' />
+    <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/filter/css/project_cell.css?v={{Msg "seo" "version"}}' />
+    <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/public/css/empty.css?v={{Msg "seo" "version"}}' />
     <link rel="stylesheet" href='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/css/report_detail_month.css?v={{Msg "seo" "version"}}' />
     <style>
         .emphasis-list{
@@ -130,193 +134,212 @@
             <p>项目重复统计:一个招标项目可能同属于多个关键词组,故各关键词组的数据统计之和可能大于整体市场的统计。</p>
         </div>
         <!-- 本周新增招标项目数量 -->
-        <div class="chart" v-if="showCurWeekAdd">
-            <div class="chart_title">本周新增招标项目数量</div>
-            <div class="progress-bar-container">
-                <div class="progress-bar-item" v-for="(item,index) in curWeekAddBirds" :key="index">
-                    <div class="item-label">
-                        <span class="item-name">${item.item}</span>
-                        <span class="item-count">${item.count}个</span>
-                    </div>
-                    <div class="item-progress">
-                        <span class="item-progress-count" :class="index > 2 ? 'blue-progress' : 'yellow-progress'" :style="{width: item.parent}"></span>
+        <van-tabs v-model:active="tabActive" sticky>
+          <van-tab name="0" title="本周分析">
+            <div class="chart" v-if="showCurWeekAdd">
+                <div class="chart_title">本周新增招标项目数量</div>
+                <div class="progress-bar-container">
+                    <div class="progress-bar-item" v-for="(item,index) in curWeekAddBirds" :key="index">
+                        <div class="item-label">
+                            <span class="item-name">${item.item}</span>
+                            <span class="item-count">${item.count}个</span>
+                        </div>
+                        <div class="item-progress">
+                            <span class="item-progress-count" :class="index > 2 ? 'blue-progress' : 'yellow-progress'" :style="{width: item.parent}"></span>
+                        </div>
                     </div>
                 </div>
+                <div class="mark-words" @click="goCollect('week_project_seek_count')">全面获取关注项目的新增数量,挖掘商机!<em class="mark-icon-right"></em></div>
             </div>
-            <div class="mark-words" @click="goCollect('week_project_seek_count')">全面获取关注项目的新增数量,挖掘商机!<em class="mark-icon-right"></em></div>
-        </div>
-        <!-- 本周新增招标项目预算 -->
-        <div class="chart" v-if="showBudget">
-            <div class="chart_title">本周新增招标项目预算</div>
-            <div>
-                <ve-histogram
-                    height="284px"
-                    :init-options="initRendererSvg"
-                    :data="addCountData"
-                    :after-config="addCountConfig"
-                    :settings="addCountSettings"
-                    :extend="barChart.chartExtend">
-                </ve-histogram>
+            <!-- 本周新增招标项目预算 -->
+            <div class="chart" v-if="showBudget">
+                <div class="chart_title">本周新增招标项目预算</div>
+                <div>
+                    <ve-histogram
+                        height="284px"
+                        :init-options="initRendererSvg"
+                        :data="addCountData"
+                        :after-config="addCountConfig"
+                        :settings="addCountSettings"
+                        :extend="barChart.chartExtend">
+                    </ve-histogram>
+                </div>
+                <div class="mark-words" @click="goCollect('week_project_seek_budget')">提前获取关注项目的市场动向,挖掘潜在客户!<em class="mark-icon-right"></em></div>
             </div>
-            <div class="mark-words" @click="goCollect('week_project_seek_budget')">提前获取关注项目的市场动向,挖掘潜在客户!<em class="mark-icon-right"></em></div>
-        </div>
-        <!-- 本周新增开标项目数量 -->
-        <div class="chart" v-if="showCurWeekOpen">
-            <div class="chart_title">本周新增开标项目数量</div>
-            <div class="progress-bar-container">
-                <div class="progress-bar-item" v-for="(item,index) in curWeekOpenBirds" :key="index">
-                    <div class="item-label">
-                        <span class="item-name">${item.item}</span>
-                        <span class="item-count">${item.count}个</span>
-                    </div>
-                    <div class="item-progress">
-                        <span class="item-progress-count" :class="index > 2 ? 'blue-progress' : 'yellow-progress'" :style="{width: item.parent}"></span>
+            <!-- 本周新增开标项目数量 -->
+            <div class="chart" v-if="showCurWeekOpen">
+                <div class="chart_title">本周新增开标项目数量</div>
+                <div class="progress-bar-container">
+                    <div class="progress-bar-item" v-for="(item,index) in curWeekOpenBirds" :key="index">
+                        <div class="item-label">
+                            <span class="item-name">${item.item}</span>
+                            <span class="item-count">${item.count}个</span>
+                        </div>
+                        <div class="item-progress">
+                            <span class="item-progress-count" :class="index > 2 ? 'blue-progress' : 'yellow-progress'" :style="{width: item.parent}"></span>
+                        </div>
                     </div>
                 </div>
+                <div class="mark-words" @click="goCollect('week_project_open_count')">获取新项目的全部开标统计,帮助企业寻找客户!<em class="mark-icon-right"></em></div>
             </div>
-            <div class="mark-words" @click="goCollect('week_project_open_count')">获取新项目的全部开标统计,帮助企业寻找客户!<em class="mark-icon-right"></em></div>
-        </div>
-        <!-- 本周新增招标项目规模 -->
-        <div class="chart" v-if="showScale">
-            <div class="chart_title">本周新增开标项目规模</div>
-            <div>
-                <ve-histogram
-                    height="284px"
-                    :init-options="initRendererSvg"
-                    :data="curWeekAddScaleData"
-                    :after-config="curWeekAddScaleConfig"
-                    :settings="curWeekAddScaleSettings"
-                    :extend="barChart.chartExtend">
-                </ve-histogram>
+            <!-- 本周新增招标项目规模 -->
+            <div class="chart" v-if="showScale">
+                <div class="chart_title">本周新增开标项目规模</div>
+                <div>
+                    <ve-histogram
+                        height="284px"
+                        :init-options="initRendererSvg"
+                        :data="curWeekAddScaleData"
+                        :after-config="curWeekAddScaleConfig"
+                        :settings="curWeekAddScaleSettings"
+                        :extend="barChart.chartExtend">
+                    </ve-histogram>
+                </div>
+                <div class="mark-words" @click="goCollect('week_project_seek_bidamount')">全面获取关注项目的规模,分析市场容量,寻找客户!<em class="mark-icon-right"></em></div>
             </div>
-            <div class="mark-words" @click="goCollect('week_project_seek_bidamount')">全面获取关注项目的规模,分析市场容量,寻找客户!<em class="mark-icon-right"></em></div>
-        </div>
-        <!-- 项目金额排行榜 -->
-        <div class="chart" v-if="showItemAmount">
-            <div class="chart_title">项目金额排行榜</div>
-            <div>
-                <div class="current-list" v-for="(item,index) in amountWinArr">
-                    <div class="win-name">
-                        <span v-if="index === 0" class="index first-index">${index + 1}</span>
-                        <span v-else-if="index === 1" class="index second-index">${index + 1}</span>
-                        <span v-else-if="index === 2" class="index third-index">${index + 1}</span>
-                        <span v-else class="index ">${index + 1}</span>
-                        <span class="title">${item.projectname || '--'}</span>
-                    </div>
-                    <div class="item-double">
-                        <div class="item-single">
-                            <span class="i-label">采购单位</span>
-                            <span class="i-value mosaic-text-for-check">${item.buyer || '--'}</span>
+            <!-- 项目金额排行榜 -->
+            <div class="chart" v-if="showItemAmount">
+                <div class="chart_title">项目金额排行榜</div>
+                <div>
+                    <div class="current-list" v-for="(item,index) in amountWinArr">
+                        <div class="win-name">
+                            <span v-if="index === 0" class="index first-index">${index + 1}</span>
+                            <span v-else-if="index === 1" class="index second-index">${index + 1}</span>
+                            <span v-else-if="index === 2" class="index third-index">${index + 1}</span>
+                            <span v-else class="index ">${index + 1}</span>
+                            <span class="title">${item.projectname || '--'}</span>
                         </div>
-                    </div>
-                    <div class="item-double">
-                        <div class="item-single">
-                            <span class="i-label">中标单位</span>
-                            <span class="i-value mosaic-text-for-check">${item.winner || '--'}</span>
+                        <div class="item-double">
+                            <div class="item-single">
+                                <span class="i-label">采购单位</span>
+                                <span class="i-value mosaic-text-for-check">${item.buyer || '--'}</span>
+                            </div>
                         </div>
-                    </div>
-                    <div class="item-double">
-                        <div class="item-single">
-                            <span class="i-label">预算金额(亿)</span>
-                            <span class="i-value mosaic-text-for-check">${item.budget || '--'}</span>
+                        <div class="item-double">
+                            <div class="item-single">
+                                <span class="i-label">中标单位</span>
+                                <span class="i-value mosaic-text-for-check">${item.winner || '--'}</span>
+                            </div>
                         </div>
-                        <div class="item-single">
-                            <span class="i-label">中标金额(亿)</span>
-                            <span class="i-value mosaic-text-for-check">${item.bidamount || '--'}</span>
+                        <div class="item-double">
+                            <div class="item-single">
+                                <span class="i-label">预算金额(亿)</span>
+                                <span class="i-value mosaic-text-for-check">${item.budget || '--'}</span>
+                            </div>
+                            <div class="item-single">
+                                <span class="i-label">中标金额(亿)</span>
+                                <span class="i-value mosaic-text-for-check">${item.bidamount || '--'}</span>
+                            </div>
                         </div>
                     </div>
                 </div>
+                <div v-if="itemAmount.list.length > 5 && !itemAmount.showAll">
+                    <div class="more">
+                        <span @click="itemAmount.showAll = true">查看更多</span>
+                    </div>
+                </div>
+                <div class="mark-words" @click="goCollect('week_project_money_list')">提供你关注的top项目榜单,帮你分析市场动向!<em class="mark-icon-right"></em></div>
             </div>
-            <div v-if="itemAmount.list.length > 5 && !itemAmount.showAll">
-                <div class="more">
-                    <span @click="itemAmount.showAll = true">查看更多</span>
+            <!-- 下周开标提醒 -->
+            <div class="chart" v-if="showBidOpen">
+                <div class="chart_title">下周开标提醒</div>
+                <div class="emphasis">
+                    <div class="emphasis-list" v-for="item in bidOpenList">
+                        <p class="emphasis-p">
+                            <span class="e-l-label">开标时间</span>
+                            <span class="e-l-value">${item.bidopentime || '--'}</span>
+                        </p>
+                        <p class="emphasis-p">
+                            <span class="e-l-label">省市</span>
+                            <span class="e-l-value">${item.area || '--'} ${item.city}</span>
+                        </p>
+                        <p class="emphasis-p">
+                            <span class="e-l-label">项目名称</span>
+                            <span class="e-l-value mosaic-text-for-check">${item.projectname || '--'}</span>
+                        </p>
+                        <p class="emphasis-p">
+                            <span class="e-l-label">采购单位</span>
+                            <span class="e-l-value mosaic-text-for-check">${item.buyer || '--'}</span>
+                        </p>
+                        <p class="emphasis-p">
+                            <span class="e-l-label">项目预算(万)</span>
+                            <span class="e-l-value mosaic-text-for-check">${item.budget || '--'}</span>
+                        </p>
+                    </div>
                 </div>
+                <div class="mark-words" @click="goCollect('week_next_remind')">实时跟踪全部关注项目的开标详情,不遗漏商机!<em class="mark-icon-right"></em></div>
             </div>
-            <div class="mark-words" @click="goCollect('week_project_money_list')">提供你关注的top项目榜单,帮你分析市场动向!<em class="mark-icon-right"></em></div>
-        </div>
-        <!-- 下周开标提醒 -->
-        <div class="chart" v-if="showBidOpen">
-            <div class="chart_title">下周开标提醒</div>
-            <div class="emphasis">
-                <div class="emphasis-list" v-for="item in bidOpenList">
-                    <p class="emphasis-p">
-                        <span class="e-l-label">开标时间</span>
-                        <span class="e-l-value">${item.bidopentime || '--'}</span>
-                    </p>
-                    <p class="emphasis-p">
-                        <span class="e-l-label">省市</span>
-                        <span class="e-l-value">${item.area || '--'} ${item.city}</span>
-                    </p>
-                    <p class="emphasis-p">
-                        <span class="e-l-label">项目名称</span>
-                        <span class="e-l-value mosaic-text-for-check">${item.projectname || '--'}</span>
-                    </p>
-                    <p class="emphasis-p">
-                        <span class="e-l-label">采购单位</span>
-                        <span class="e-l-value mosaic-text-for-check">${item.buyer || '--'}</span>
-                    </p>
-                    <p class="emphasis-p">
-                        <span class="e-l-label">项目预算(万)</span>
-                        <span class="e-l-value mosaic-text-for-check">${item.budget || '--'}</span>
-                    </p>
+            <!-- 重点关注项目 -->
+            <div class="chart" v-if="showFollowProject">
+                <div class="chart_title">重点关注项目</div>
+                <div class="emphasis">
+                    <div class="emphasis-list" v-for="fp in followProject">
+                        <p class="emphasis-p">
+                            <span class="e-l-label">项目名称</span>
+                            <span class="e-l-value">${fp.projectname || '--'}</span>
+                        </p>
+                        <p class="emphasis-p">
+                            <span class="e-l-label">项目状态</span>
+                            <span class="e-l-value">${fp.bidstatus || '--'}</span>
+                        </p>
+                        <p class="emphasis-p">
+                            <span class="e-l-label">采购单位</span>
+                            <span class="e-l-value">${fp.buyer || '--'}</span>
+                        </p>
+                        <p class="emphasis-p">
+                            <span class="e-l-label">项目预算(万)</span>
+                            <span class="e-l-value">${fp.budget || '--'}</span>
+                        </p>
+                    </div>
                 </div>
+                <div class="mark-words" @click="goCollect('week_important_project')">实时跟踪关注项目的最新动态,不遗漏任何商机!<em class="mark-icon-right"></em></div>
             </div>
-            <div class="mark-words" @click="goCollect('week_next_remind')">实时跟踪全部关注项目的开标详情,不遗漏商机!<em class="mark-icon-right"></em></div>
-        </div>
-        <!-- 重点关注项目 -->
-        <div class="chart" v-if="showFollowProject">
-            <div class="chart_title">重点关注项目</div>
-            <div class="emphasis">
-                <div class="emphasis-list" v-for="fp in followProject">
-                    <p class="emphasis-p">
-                        <span class="e-l-label">项目名称</span>
-                        <span class="e-l-value">${fp.projectname || '--'}</span>
-                    </p>
-                    <p class="emphasis-p">
-                        <span class="e-l-label">项目状态</span>
-                        <span class="e-l-value">${fp.bidstatus || '--'}</span>
-                    </p>
-                    <p class="emphasis-p">
-                        <span class="e-l-label">采购单位</span>
-                        <span class="e-l-value">${fp.buyer || '--'}</span>
-                    </p>
-                    <p class="emphasis-p">
-                        <span class="e-l-label">项目预算(万)</span>
-                        <span class="e-l-value">${fp.budget || '--'}</span>
-                    </p>
+            <!-- 重点关注企业 -->
+            <div class="chart" v-if="showFollowEnt">
+                <div class="chart_title">重点关注企业</div>
+                <div class="emphasis">
+                    <div class="emphasis-list" v-for="fi in followEnt">
+                        <p class="emphasis-p">
+                            <span class="e-l-label">企业名称</span>
+                            <span class="e-l-value">${fi.entname || '--'}</span>
+                        </p>
+                        <p class="emphasis-p">
+                            <span class="e-l-label">注册省市</span>
+                            <span class="e-l-value">${fi.area || '--'} ${fi.city}</span>
+                        </p>
+                        <p class="emphasis-p">
+                            <span class="e-l-label">中标项目</span>
+                            <span class="e-l-value">${fi.projectname || '--'}</span>
+                        </p>
+                        <p class="emphasis-p">
+                            <span class="e-l-label">中标日期</span>
+                            <span class="e-l-value">${fi.jgtime || '--'}</span>
+                        </p>
+                        <p class="emphasis-p">
+                            <span class="e-l-label">中标金额(万)</span>
+                            <span class="e-l-value">${fi.bidamount || '--'}</span>
+                        </p>
+                    </div>
                 </div>
+                <div class="mark-words" @click="goCollect('week_important_ent')">动态跟踪关注企业的最新中标项目,实时监控友商!<em class="mark-icon-right"></em></div>
             </div>
-            <div class="mark-words" @click="goCollect('week_important_project')">实时跟踪关注项目的最新动态,不遗漏任何商机!<em class="mark-icon-right"></em></div>
-        </div>
-        <!-- 重点关注企业 -->
-        <div class="chart" v-if="showFollowEnt">
-            <div class="chart_title">重点关注企业</div>
-            <div class="emphasis">
-                <div class="emphasis-list" v-for="fi in followEnt">
-                    <p class="emphasis-p">
-                        <span class="e-l-label">企业名称</span>
-                        <span class="e-l-value">${fi.entname || '--'}</span>
-                    </p>
-                    <p class="emphasis-p">
-                        <span class="e-l-label">注册省市</span>
-                        <span class="e-l-value">${fi.area || '--'} ${fi.city}</span>
-                    </p>
-                    <p class="emphasis-p">
-                        <span class="e-l-label">中标项目</span>
-                        <span class="e-l-value">${fi.projectname || '--'}</span>
-                    </p>
-                    <p class="emphasis-p">
-                        <span class="e-l-label">中标日期</span>
-                        <span class="e-l-value">${fi.jgtime || '--'}</span>
-                    </p>
-                    <p class="emphasis-p">
-                        <span class="e-l-label">中标金额(万)</span>
-                        <span class="e-l-value">${fi.bidamount || '--'}</span>
-                    </p>
+          </van-tab>
+          <van-tab name="1" title="本周项目明细">
+            <filter-component keyformat="phrases" @confirm="confirm"></filter-component>
+            <div class="project-detail-list" v-if="Object.keys(projectInfo).length != 0 && projectInfo.list.length > 0">
+              <project-header @setsort-type="setsortType"></project-header>
+              <project-cell :item="item" v-for="item in projectInfo.list" :key="item.id">
+                <div class="update-time" v-if="item.lastTime" >
+                  <div class="update-time-label">
+                    本月项目更新时间:
+                  </div>
+                  <div class="update-time-content">2023-5-13</div>
                 </div>
+              </project-cell>
             </div>
-            <div class="mark-words" @click="goCollect('week_important_ent')">动态跟踪关注企业的最新中标项目,实时监控友商!<em class="mark-icon-right"></em></div>
-        </div>
+            <empty v-else>暂无数据</empty>
+          </van-tab>
+        </van-tabs>
     </div>
 </div>
 
@@ -336,8 +359,17 @@
 <script src=//cdn-common.jianyu360.com/cdn/lib/v-charts/1.19.0/index.min.js></script>
 {{include "/big-member/commonjs.html"}}
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/js/echarts_option.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/public/js/china-map-data.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/js/keyword-mobile.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/js/area-city-mobile.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/js/industry-mobile.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/collection/js/cate-mobile.js?v={{Msg "seo" "version"}}'></script>
 <!-- mock数据(与后端返回数据结构一致) 联调后可删除 -->
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/js/mock.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/filter/js/filter_limit.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/filter/js/project_header.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/filter/js/project_cell.js?v={{Msg "seo" "version"}}'></script>
+<script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/common-module/public/js/empty.js?v={{Msg "seo" "version"}}'></script>
 <script src='{{Cdns .Host "seo" "cdn"|SafeUrl}}/jyapp/big-member/js/report_detail_week.js?v={{Msg "seo" "version"}}'></script>
 
 </body>

+ 18 - 1
src/web/staticres/common-module/collection/js/keyword-mobile.js

@@ -46,7 +46,7 @@ var keywordComponentTemplate = `<div class="j-container">
             @click="toggleCheck(iitem, item)"
           >
             <template #title v-if="useKeyCard">
-              <span class="j-tag" :class="iitem.matchway == 1 ? 'tag-orange' : 'tag-green'">{{ iitem.matchway == 1 ? '模糊' : '精准' }}</span>
+              <span class="j-tag" v-if="keyformat=='all'" :class="iitem.matchway == 1 ? 'tag-orange' : 'tag-green'">{{ iitem.matchway == 1 ? '模糊' : '精准' }}</span>
               <span class="custom-title">{{ iitem.text || iitem.name }}</span>
             </template>
             <template #label v-if="useKeyCard && (iitem.notkey && iitem.notkey.length)">
@@ -73,6 +73,11 @@ var keywordComponentTemplate = `<div class="j-container">
 var keywordComponent = {
   name: 'keyword-mobile',
   props: {
+    // phrases: 只显示关键词组,all:显示所有关键词
+    keyformat: {
+      type: String,
+      default: 'all'
+    },
     useKeyCard: {
       type: Boolean,
       default: false
@@ -304,6 +309,18 @@ var keywordComponent = {
               _this.setState()
             }
           }
+          if (_this.keyformat == 'phrases') {
+            // 只显示关键词组
+            _this.tablist.forEach((v) => {
+              const ownKey = {
+                name: Object.keys(v)[0],
+                text: Object.keys(v)[0],
+                type: false
+              }
+              v[Object.keys(v)[0]] = []
+              v[Object.keys(v)[0]].push(ownKey)
+            })
+          }
           _this.checkNoKey()
         },
         error: function(err){

+ 28 - 1
src/web/staticres/common-module/filter/css/project_cell.css

@@ -1,5 +1,18 @@
 .project-cell{
-  /* padding: .32rem; */
+  padding: .32rem 0;
+}
+.ellipsis{
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+.ellipsis-2{
+  overflow: hidden;
+  text-overflow: ellipsis;
+  display: -webkit-box;
+  -webkit-line-clamp: 2;
+  -webkit-box-orient: vertical;
+  word-break: break-all;
 }
 .project-cell .project-cell-title{
   width: 100%;
@@ -37,14 +50,28 @@
   background: linear-gradient(180deg, rgba(108, 218, 237, 0.2) 0%, rgba(255, 255, 255, 0) 100%);
   border-radius: .12rem;
 }
+.project-cell .project-unit .van-cell .van-cell__title{
+  display: flex;
+  flex-direction: column;
+}
+.project-cell .project-unit .van-cell .van-cell__title .unit_title{
+  display: flex;
+  align-items: center;
+}
 .project-cell .project-unit .van-cell .van-cell__title span:first-child{
   font-size: .24rem;
   color: #9B9CA3;
 }
 .project-cell .project-unit .van-cell .van-cell__title span:last-child{
+  display: block;
+  width: 4.6rem;
   font-size: .26rem;
   color: #171826;
 }
+.van-cell__label{
+  display: flex;
+  align-items: center;
+}
 .project-cell .project-update-time{
   display: flex;
   align-items: center;

+ 1 - 1
src/web/staticres/common-module/filter/css/project_header.css

@@ -29,7 +29,7 @@
 }
 .project-detail-title .van-dropdown-menu__title .van-ellipsis{
   font-size: .28rem;
-  color: #2ABED1;
+  color: #5F5E64;
 }
 .project-detail-list .van-dropdown-menu__title::after{
   border: 5px solid;

+ 24 - 32
src/web/staticres/common-module/filter/js/filter_limit.js

@@ -1,5 +1,5 @@
 var filterTemp = `
-<div class="j-container search-filters bg-white">
+<div class="j-container search-filters">
   <div class="j-main">
       <div class="filters-title pd-lr16">
           <span>{{title}}</span>
@@ -9,6 +9,8 @@ var filterTemp = `
           <van-cell center v-if="filterAction.areaModule.isShow" :title="filterAction.areaModule.label" is-link value-class="ellipsis" :value="resolveSelected('area')" @click="clickCell('area')"></van-cell>
           <van-cell center v-if="filterAction.buyerModule.isShow" :title="filterAction.buyerModule.label" value-class="ellipsis" is-link :value="resolveSelected('buyerclass')" @click="clickCell('buyerclass')"></van-cell>
           <van-cell center v-if="filterAction.industryModule.isShow" :title="filterAction.industryModule.label" is-link value-class="ellipsis" :value="resolveSelected('industry')" @click="clickCell('industry')"></van-cell>
+          <van-field type="textarea" rows="1" autosize v-model="filters.winnerUnit" label="中标单位" placeholder="请输入中标单位"></van-field>
+          <van-field type="textarea" rows="1" autosize v-model="filters.buyerUnit" label="采购单位" placeholder="请输入采购单位"></van-field>
       </van-cell-group>
   </div>
   <div class="j-footer j-button-group">
@@ -38,6 +40,7 @@ var filterTemp = `
           <keyword-component
               ref="keywordSelector"
               protype="bigmember"
+              :keyformat="keyformat"
               :use-key-card="true"
               @nokeys="showSetKeyTip"
               @cancel="cancel($event, 'keys')"
@@ -125,6 +128,11 @@ var filterComponent = {
     cateComponent: cateComponent
   },
   props: {
+    // phrases: 关键词组,all:所有关键词
+    keyformat: {
+      type: String,
+      default: 'all'
+    },
     title: {
       type: String,
       default: '筛选条件'
@@ -178,6 +186,8 @@ var filterComponent = {
         industry: [],
         industryDetail: {},
         buyerclass: [],
+        buyerUnit: '',
+        winnerUnit: '',
         rangeTime: {
           start: '',
           end: '',
@@ -352,46 +362,28 @@ var filterComponent = {
     getSelectedKeys () {
       const keys = this.filters.keys
       if (Array.isArray(keys) && keys.length) {
-        return JSON.stringify(keys)
+        return keys
       } else {
         var allKeys = this.$refs.keywordSelector.keywordGroupList
-        return JSON.stringify(allKeys)
+        return allKeys
       }
     },
     startAnalysis: function () {
       // this.dateTimeSelectorConfirm()
 
       const query = {
-        keysItems: this.getSelectedKeys(),
-        area: JSON.stringify(this.filters.area),
-        industry: JSON.stringify(this.filters.industryDetail),
-        buyerclass: this.filters.buyerclass.join(',')
+        items: this.getSelectedKeys(),
+        area: this.filters.area,
+        industry: this.filters.industryDetail,
+        buyerclass: this.filters.buyerclass,
+        winner: this.filters.winnerUnit,
+        buyer: this.filters.buyerUnit
       }
-
-      this.analysis.loaded = false
-      this.analysis.loading = true
-      this.showLoading()
-
-      $.ajax({
-        type: 'POST',
-        url: '/bigmember/marketAnalysis/doAnalysis',
-        data: query,
-        success: function (res) {
-          if (res && res.error_code === 0 && res.data) {
-            this.rid = res.data
-            this.analysis.loaded = true
-            // location.replace('./report_analysis?id=' + res.data)
-            this.rid = res.data
-            history.replaceState({}, null, '?id=' + this.rid)
-            this.getReportResult()
-          } else {
-            this.$toast(res.error_msg)
-          }
-        }.bind(this),
-        complete: function () {
-          this.analysis.loading = false
-        }.bind(this)
-      })
+      if (this.keyformat == 'phrases') {
+        query.items = this.filters.selectKeysArr
+        query.industry = Object.values(this.filters.industryDetail).flat()
+      }
+      this.$emit('confirm', query)
     },
     // 重置
     resetFilter: function (type) {

+ 20 - 12
src/web/staticres/common-module/filter/js/project_cell.js

@@ -1,40 +1,44 @@
 var projectCellTemp = `
 <div class="project-cell">
   <div class="project-cell-title">
-    2019-2021年度水电气管理内部控制专项审计2019-2021年度水电气管理内部控制专项审计
+    {{ item.name }}
   </div>
   <div class="project-cell-tags">
-    <span>四川</span>
+    <span v-if="item.area">{{ item.area }}</span>
+    <span v-if="item.bidStatus">{{ item.bidStatus }}</span>
+    <span v-if="item.buyerClass">{{ item.buyerClass }}</span>
+    <span v-if="item.budget&&item.bidAmount">{{ utils.moneyUnit(item.budget || item.bidAmount)}}</span>
   </div>
   <div class="project-unit">
     <van-cell is-link>
       <template #title>
-        <span>采购单位:</span>
-        <span>广东省高速公路有限公司深汕西分公司</span>
+        <div class="unit_title">
+          <span>采购单位:</span>
+          <span class="ellipsis">{{ item.buyer }}</span>
+          </div>
       </template>
       <template #label>
         <span>预算金额:</span>
-        <span>9.09 万元</span>
+        <span>{{ utils.moneyUnit(item.budget) || '--' }}</span>
       </template>
     </van-cell>
   </div>
   <div class="project-unit">
     <van-cell is-link>
       <template #title>
-        <span>中标单位:</span>
-        <span>广东省高速公路有限公司深汕西分公司</span>
+        <div class="unit_title">
+          <span>中标单位:</span>
+          <span class="ellipsis">广东省高速公路有限公司深汕西分公司</span>
+        </div>
       </template>
       <template #label>
         <span>中标金额:</span>
-        <span>9.09 万元</span>
+        <span>{{ utils.moneyUnit(item.bidAmount) || '--' }}</span>
       </template>
     </van-cell>
   </div>
   <div class="project-update-time">
-    <div class="update-time-label">
-      本月项目更新时间:
-    </div>
-    <div class="update-time-content">2023-5-13</div>
+    <slot></slot>
   </div>
 </div>
 `
@@ -44,6 +48,10 @@ var projectCellComponent = {
   name: 'project-cell',
   template: projectCellTemp,
   props: {
+    item: {
+      type: Object,
+      default: {}
+    }
   },
   data () {
     return {

+ 1 - 0
src/web/staticres/common-module/filter/js/project_header.js

@@ -38,6 +38,7 @@ var projectHeaderComponent = {
       })
       data.active = true
       this.sortOptionSelect = data.text
+      this.$emit('setsortType', data.value)
       // 关闭菜单
       this.$refs.sortMenu.toggle(false)
     },

+ 88 - 0
src/web/staticres/common-module/public/css/empty.css

@@ -0,0 +1,88 @@
+.empty-container {
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  justify-content: center;
+  flex: 1;
+  min-height: 6.4rem;
+  padding: 16px;
+  box-sizing: border-box;
+}
+
+.empty-container .empty-content-position {
+  display: flex;
+  align-items: center;
+  flex-direction: column;
+  justify-content: center;
+}
+
+.empty-container .empty-main {
+  display: flex;
+  align-items: center;
+  flex-direction: column;
+  justify-content: center;
+  text-align: center;
+}
+
+.empty-container .max-width70 {
+  width: 70%;
+}
+
+.empty-container .max-width80 {
+  width: 80%;
+}
+
+.empty-container .tip-text {
+  color: #5f5e64;
+  font-size: 14px;
+  line-height: 20px;
+  text-align: center;
+}
+
+.empty-container .tip-sub-text {
+  color: #9b9ca3;
+  font-size: 13px;
+  line-height: 20px;
+  margin-top: 6px;
+  text-align: center;
+}
+
+.empty-container .image {
+  width: 200px;
+  height: 200px;
+}
+
+.empty-container .image.empty-box {
+  margin-top: unset;
+  width: 160px;
+  height: 160px;
+}
+
+.empty-container .fixed-position {
+  margin-top: -50px;
+}
+
+.empty-container .empty-back {
+  background: url(../image/jy-back.png) no-repeat;
+  background-size: contain;
+}
+
+.empty-container .empty-cry {
+  background: url(../image/jy-cry.png) no-repeat;
+  background-size: contain;
+}
+
+.empty-container .empty-chagrin {
+  background: url(../image/jy-chagrin.png) no-repeat;
+  background-size: contain;
+}
+
+.empty-container .empty-sleep {
+  background: url(../image/jy-sleep.png) no-repeat;
+  background-size: contain;
+}
+
+.empty-container .empty-smile {
+  background: url(../image/jy-smile.png) no-repeat;
+  background-size: contain;
+}

+ 46 - 0
src/web/staticres/common-module/public/js/empty.js

@@ -0,0 +1,46 @@
+var emptyTemp = `
+<div class="empty-container">
+  <div class="empty-content-position">
+    <div class="image" :class="stateClass"></div>
+    <div class="empty-main tip-text">
+      <slot name="default"></slot>
+    </div>
+  </div>
+</div>
+`
+
+var emptyComponent = {
+  name: 'empty-container',
+  template: emptyTemp,
+  props: {
+    /**
+     * 图标名称 back [back cry chagrin sleep smile box]
+     */
+    state: {
+      type: String,
+      default: 'back'
+    }
+  },
+  computed: {
+    stateClass () {
+      const imgType = this.typeSrc[this.state]
+      const classArr = [imgType]
+      if (!window.utils.$envs.inH5) {
+        classArr.push('fixed-position')
+      }
+      return classArr
+    }
+  },
+  data () {
+    return {
+      typeSrc: {
+        back: 'empty-back',
+        cry: 'empty-cry',
+        chagrin: 'empty-chagrin',
+        sleep: 'empty-sleep',
+        smile: 'empty-smile',
+        box: 'empty-box'
+      }
+    }
+  }
+}