Преглед изворни кода

fix: 申请监控更多业主权限判断

Signed-off-by: tangshizhe <48740614+tangshizhe@users.noreply.github.com>
tangshizhe пре 1 година
родитељ
комит
045b0cc911

+ 12 - 7
src/components/common/Monitor.vue

@@ -11,16 +11,15 @@
         <div class="list-center">
           已监控 <span style="color: #2ABED1;">{{alreadyNum}}</span> 个,剩余 <span style="color: #2ABED1;">{{remainNum}}</span> 个
         </div>
-        <div class="list-bottom" @click="monitorApply">申请监控更多项目></div>
+        <div class="list-bottom" @click="monitorApply">申请监控更多业主></div>
       </li>
       <li @click="$emit('monitorCancel')" v-show="showList.length && showList.includes(4)">取消监控</li>
     </ul>
-    <CollectInfo ref="collectRef"></CollectInfo>
   </div>
 </template>
 
 <script>
-import CollectInfo from '@/components/collect-info/CollectInfo.vue'
+import { mapState } from 'vuex'
 export default {
   props: {
     showList: {
@@ -37,15 +36,17 @@ export default {
       default: 0
     }
   },
-  components: {
-    CollectInfo
-  },
   data () {
     return {
       monitor: {
       }
     }
   },
+  computed: {
+    ...mapState({
+      info: state => state.user.info
+    })
+  },
   mounted () {
   },
   methods: {
@@ -55,7 +56,11 @@ export default {
     },
     // 申请监控更多业主
     monitorApply () {
-      this.$refs.collectRef.noCallApiFn('pc_buyer_monitor_more', true)
+      if (this.info.vipStatus > 0) {
+        this.$emit('showNeedSubmit')
+      } else {
+        this.$emit('show')
+      }
     }
   }
 }

+ 55 - 2
src/components/push-list/PotentialList.vue

@@ -47,7 +47,7 @@
                 <i class="icon iconfont" :class="{ 'icon-yijiankong': item.follow, 'icon-jiankong': !item.follow }"></i>
                 <span>{{item.follow ? '取消' : ''}}监控</span>
               </div>
-              <monitor-com :already-num="monitorInfo.alreadyNum" :remain-num="monitorInfo.remainNum" :show-list="monitorInfo.showList"></monitor-com>
+              <monitor-com  @showNeedSubmit="showNeedSubmit" @show="monitorInfo.showD4 = true" :already-num="monitorInfo.alreadyNum" :remain-num="monitorInfo.remainNum" :show-list="monitorInfo.showList"></monitor-com>
             </el-popover>
             <span  @click.stop="changeDelete(item)">不是我的客户</span>
           </div>
@@ -95,11 +95,21 @@
         <div slot="header">选择分组</div>
       </GroupCard>
     </el-dialog>
+    <common-dialog center custom-class="monitor-class" width="380px" :visible="monitorInfo.showD4" title="申请监控更多业主">
+      <template #footer>
+        <button class="action-button confirm" @click="setMonitorConfirm('4')">联系客服</button>
+        <button class="action-button cancel" @click="setMonitorCancel('4')">返回</button>
+      </template>
+      您可联系客服,申请升级产品套餐,监控更多业主
+    </common-dialog>
+    <CollectInfo ref="collectRef"></CollectInfo>
   </el-card>
 </template>
 
 <script>
 import '@/assets/style/iconfont.css'
+import commonDialog from '@/components/dialog/Dialog.vue'
+import CollectInfo from '@/components/collect-info/CollectInfo.vue'
 import { Pagination, Card, Button, Dialog, Popover } from 'element-ui'
 import Empty from '@/components/common/Empty.vue'
 import GroupCard from '@/components/selector/GroupSelector.vue'
@@ -117,7 +127,9 @@ export default {
     [Popover.name]: Popover,
     Empty,
     GroupCard,
-    monitorCom
+    monitorCom,
+    CollectInfo,
+    commonDialog
   },
   filters: {
     formatMoney (value) {
@@ -195,6 +207,29 @@ export default {
   },
   created () {},
   methods: {
+    setMonitorConfirm (data) {
+      switch (data) {
+        case '4':
+          this.contactCustomer(this)
+          this.monitorInfo.showD4 = false
+          break
+        default:
+          break
+      }
+    },
+    setMonitorCancel (data) {
+      switch (data) {
+        case '4':
+          this.monitorInfo.showD4 = false
+          break
+        default:
+          break
+      }
+    },
+    // 显示留资弹窗
+    showNeedSubmit () {
+      this.$refs.collectRef.noCallApiFn('pc_buyer_monitor_more', true)
+    },
     changeFollow (item) {
       this.selectItem = item
       this.cur.fid = item.entId
@@ -300,6 +335,7 @@ export default {
     // 获取监控数量
     async getListStatus (list) {
       const nameList = []
+      if (!list) return
       list.forEach(v => {
         nameList.push(v.Buyer)
       })
@@ -307,6 +343,9 @@ export default {
       if (code === 0) {
         this.monitorInfo.alreadyNum = data.count.use
         this.monitorInfo.remainNum = data.count.surplus
+        if (data.count.surplus === 0) {
+          this.$emit('show', this.monitorInfo)
+        }
       }
     },
     onPageChange (p) {
@@ -367,6 +406,20 @@ export default {
       }
     }
   }
+  ::v-deep{
+    .monitor-class {
+      padding: 32px;
+      .el-dialog__header {
+        padding: 0;
+      }
+      .el-dialog__body {
+        padding: 20px 0 32px;
+      }
+      .el-dialog__footer{
+        padding: 0;
+      }
+    }
+  }
   .sub-manager {
     display: flex;
     align-items: center;

+ 48 - 9
src/views/PotentialList.vue

@@ -37,24 +37,35 @@
         <div class="content-list-box">
           <potential-list @goDetail="goDetail"
                           @follow="changeFollow"
+                          @show="showMonitorDialog"
                           @remove="changeRemove"
                           @delete="changeDelete"
                           :title="getTopInfo.desc || getTopInfo.text" :filters="filters" ref="pushList" :showMore="false"></potential-list>
         </div>
       </div>
-      <common-dialog custom-class="monitor-class" width="380px" :visible="monitorInfo.showD1" title="监控成功">
-        <template #footer>
-          <button class="action-button confirm" @click="setMonitorConfirm('1')">去开启</button>
-          <button class="action-button cancel" @click="setMonitorCancel('1')">暂不开启</button>
-        </template>
-        您可前往“工作台-商机-业主监控”查看业主最新招标动态。为保证您能及时获取新增监控信息推送,请前往开启推送提醒。
-      </common-dialog>
     </forLayOut>
+    <common-dialog custom-class="monitor-class" width="380px" :visible="monitorInfo.showD1" title="监控成功">
+      <template #footer>
+        <button class="action-button confirm" @click="setMonitorConfirm('1')">去开启</button>
+        <button class="action-button cancel" @click="setMonitorCancel('1')">暂不开启</button>
+      </template>
+      您可前往“工作台-商机-业主监控”查看业主最新招标动态。为保证您能及时获取新增监控信息推送,请前往开启推送提醒。
+    </common-dialog>
+    <common-dialog center custom-class="monitor-class" width="380px" :visible="monitorInfo.showD3" title="监控业主个数已达上限">
+      <template #footer>
+        <button class="action-button confirm" @click="setMonitorConfirm('3')">联系客服</button>
+        <button class="action-button cancel" @click="setMonitorCancel('3')">返回</button>
+      </template>
+      您最多可监控{{monitorInfo.remainNum + monitorInfo.alreadyNum}}个业主,可联系客服,申请监控更多业主
+    </common-dialog>
+    <CollectInfo ref="collectRef"></CollectInfo>
   </div>
 </template>
 
 <script>
+import CollectInfo from '@/components/collect-info/CollectInfo.vue'
 import PotentialList from '@/components/push-list/PotentialList.vue'
+import commonDialog from '@/components/dialog/Dialog.vue'
 import AreaSelector from '@/components/selector/AreaSelector.vue'
 import IndustrySelector from '@/components/selector/IndustrySelector.vue'
 import BuyerclassSelector from '@/components/selector/BuyerclassSelector.vue'
@@ -72,7 +83,9 @@ export default {
     BuyerclassSelector,
     BusinessScopeSelector,
     forLayOut,
-    TabHeader
+    TabHeader,
+    commonDialog,
+    CollectInfo
   },
   data () {
     return {
@@ -100,17 +113,29 @@ export default {
         listKey: new Date().getTime()
       },
       monitorInfo: {
-        showD1: false
+        showD1: false,
+        showD3: false,
+        alreadyNum: 0,
+        remainNum: 0
       }
     }
   },
   methods: {
+    showMonitorDialog (data) {
+      const { remainNum, alreadyNum } = data
+      this.monitorInfo.remainNum = remainNum
+      this.monitorInfo.alreadyNum = alreadyNum
+    },
     setMonitorConfirm (data) {
       switch (data) {
         case '1':
           window.open('/swordfish/page_big_pc/push_setting')
           this.monitorInfo.showD1 = false
           break
+        case '3':
+          this.contactCustomer(this)
+          this.monitorInfo.showD3 = false
+          break
         default:
           break
       }
@@ -120,6 +145,9 @@ export default {
         case '1':
           this.monitorInfo.showD1 = false
           break
+        case '3':
+          this.monitorInfo.showD3 = false
+          break
         default:
           break
       }
@@ -135,6 +163,16 @@ export default {
               } else {
                 this.$toast('监控成功,您可前往“工作台-商机-业主监控”查看')
               }
+            } else {
+              if (this.monitorInfo.remainNum === 0) {
+                if (this.info.vipStatus > 0) {
+                  this.$refs.collectRef.noCallApiFn('pc_buyer_monitor_more', true)
+                } else if (this.info.memberStatus > 0) {
+                  this.monitorInfo.showD3 = true
+                }
+              } else {
+                this.$toast(res.error_msg)
+              }
             }
           } else {
             this.$toast(res.error_msg)
@@ -269,6 +307,7 @@ export default {
   computed: {
     ...mapState({
       scope: state => state.user.scope,
+      info: state => state.user.info,
       isDeleteAllScope: state => state.user.isDeleteAllScope
     }),
     getTopInfo () {

+ 5 - 1
src/views/portrayal/UnitPortrayal.vue

@@ -19,7 +19,7 @@
                 <span class="iconfont" :class="{ 'icon-yijiankong': follow.followed, 'icon-jiankong': !follow.followed }"></span>
                 <span class="follow-text">{{ follow.followed ? '已监控' : '监控' }}</span>
               </div>
-              <monitor-com :already-num="monitorInfo.alreadyNum" :remain-num="monitorInfo.remainNum" @monitorCancel="monitorCancel" @monitorStatus="monitorStatus" :show-list="monitorInfo.showList"></monitor-com>
+              <monitor-com @showNeedSubmit="showNeedSubmit" @show="monitorInfo.showD4 = true" :already-num="monitorInfo.alreadyNum" :remain-num="monitorInfo.remainNum" @monitorCancel="monitorCancel" @monitorStatus="monitorStatus" :show-list="monitorInfo.showList"></monitor-com>
             </el-popover>
             <div style="margin-left:10px;" v-if="isNewEnt.isNew || isEntService">
               <div class="u-follow" @click="setClaimed">
@@ -857,6 +857,10 @@ export default {
           break;
       }
     },
+    // 显示留资
+    showNeedSubmit () {
+      this.$refs.collectRef.noCallApiFn('pc_buyer_monitor_more', true)
+    },
     // 取消监控
     monitorCancel () {
       this.monitorInfo.showD2 = true