Selaa lähdekoodia

feat: 修复需求中特殊判断业务逻辑

zhangyuhan 1 viikko sitten
vanhempi
commit
0969e20c56

+ 3 - 0
apps/bigmember_pc/src/components/selector-cascader/AreaCityCountryCascader.vue

@@ -308,6 +308,9 @@ export default {
     this.setState(this.initMap)
   },
   methods: {
+    doReset () {
+      this.setState(this.initMap)
+    },
     // select内置下拉方法
     toggleSelect() {
       this.$refs.selectRegion.toggleMenu()

+ 17 - 2
apps/bigmember_pc/src/views/subscribe/FreeConfig.vue

@@ -13,7 +13,7 @@
 
     <div v-loading='pageLoading'>
       <!-- 订阅设置 -->
-      <free-sub-config :datas="setData" :setStatus="setStatus" @update="getUpdate"></free-sub-config>
+      <free-sub-config :datas="setData" :can-select='setData.canSelectArea' :setStatus="setStatus" @update="getUpdate"></free-sub-config>
       <!-- 关键词设置 -->
       <free-key-config id="setkey" :datas="setData" :setStatus="setStatus" @update="getUpdate"></free-key-config>
       <!-- 关键词列表 -->
@@ -103,7 +103,8 @@ export default {
         maxCount: 0,
         // 关键词匹配方式(新)
         matchType: [],
-        amount: ''
+        amount: '',
+        canSelectArea: true
       },
       // 子账号业务范围
       scope: [],
@@ -275,6 +276,16 @@ export default {
           regionMap: {}
         }
 
+        function getMaxSelectCount () {
+          var baseNum = res.basenum
+          var provincenum = res.provincenum
+          if (provincenum === -1) {
+            return provincenum
+          } else {
+            return provincenum + baseNum
+          }
+        }
+
         if (res.area) {
           for (const areaInfoKey in res.area) {
             areaInfo.list.push(areaInfoKey)
@@ -285,6 +296,10 @@ export default {
           this.setData.areaObj = areaInfo.regionMap
         }
 
+
+        this.setData.areaCount = getMaxSelectCount()
+        this.setData.canSelectArea = res?.areanum > 0
+
         if (res.infotype && res.infotype.length) {
           // 免费用户格式不一样,需要转换
           this.setData.infoTypeArr = res.infotype

+ 0 - 3
apps/bigmember_pc/src/views/subscribe/components/key/Edit.vue

@@ -266,9 +266,6 @@ export default {
     },
     // 排除词输入框失去焦点 查询推送数量
     notKeyBlur() {
-      if (this.isFreeSubCustom) {
-        this.cur.notkey = this.cur.notkey.replace(/\s/g, '')
-      }
       if (this.cur.notkey) {
         this.getPushCountFn()
       }

+ 17 - 0
apps/bigmember_pc/src/views/subscribe/components/key/FreeSubConfig.vue

@@ -160,6 +160,10 @@ export default {
     setStatus: {
       type: Boolean,
       default: false
+    },
+    canSelect: {
+      type: Boolean,
+      default: true
     }
   },
   components: {
@@ -396,6 +400,14 @@ export default {
       console.log(area, district)
     },
     async onAreaSelectClick() {
+      if (!this.canSelect) {
+        return this.$message({
+          message: '修改区域次数已达上限',
+          type: 'error'
+        })
+      }
+      this.$refs.areaCityCountry.toggleSelect()
+      return false
       const { data } = await entBaseInfo()
       if (
         data.vip_power === 1 ||
@@ -416,6 +428,11 @@ export default {
     // 当下拉框隐藏时回调事件(应用场景:每次选择地区时不需要都调用接口,等所有选择完 下拉框隐藏时再调用)
     onAreaHideSelect(data) {
       const { area, district } = data
+      console.log(data)
+      if (!data.resultText) {
+        this.$refs.areaCityCountry.doReset()
+        return false
+      }
       setAreaBuyer({
         vSwitch: 'f',
         area: JSON.stringify(area),

+ 5 - 1
apps/mobile/src/views/subscribe/Guide.vue

@@ -370,7 +370,11 @@ export default {
     },
     nextHandle() {
       if (!this.nextDisabled) return this.$toast('请选择关注地区')
-      const isFreeEmpty = this.isFree && this.freeSelectedProvince.length === 0
+      let isFreeEmpty = this.isFree && this.freeSelectedProvince.length === 0
+      // 省份订阅包订阅向导问题修复
+      if (this.someInfo.areaCount > 1 && this.vipSelectedProvince.length > 0) {
+        isFreeEmpty = false
+      }
       const vipFreeEmpty = !this.isFree && !this.vipSelectedProvince
       if (this.active === 0) {
         if (isFreeEmpty || vipFreeEmpty) {