Browse Source

Merge branch 'feature/v2.4.46' of https://jygit.jydev.jianyu360.cn/jianyu/qmx_page_admin into feature/v2.4.46

tangshizhe 2 months ago
parent
commit
6cb98c4c7e

+ 8 - 3
src/views/create-order/components/product-info-submodule/ServiceList.vue

@@ -619,14 +619,19 @@ export default {
       if (names_str.includes('业主分析') && !idArr.includes(5)) {
       if (names_str.includes('业主分析') && !idArr.includes(5)) {
         idArr.push(5) // 添加基础服务
         idArr.push(5) // 添加基础服务
       }
       }
+      // console.log(`serviceList选中服务: `, idArr.sort((a, b) => a - b), nameArr)
       return {
       return {
         idArr: [...new Set(idArr)], // 数组去重
         idArr: [...new Set(idArr)], // 数组去重
         nameArr,
         nameArr,
       }
       }
     },
     },
-    getSelectedIdArrAndNameArr() {
-      const { selectedInfoList } = this.getSelected()
-      return this.calcSelectedArrIdNames(selectedInfoList)
+    getSelectedIdArrAndNameArr(sInfoList = []) {
+      if (Array.isArray(sInfoList) && sInfoList.length > 0) {
+        return this.calcSelectedArrIdNames(sInfoList)
+      } else {
+        const { selectedInfoList } = this.getSelected()
+        return this.calcSelectedArrIdNames(selectedInfoList)
+      }
     },
     },
     getState() {
     getState() {
       const { selectedInfoList } = this.getSelected()
       const { selectedInfoList } = this.getSelected()

+ 17 - 4
src/views/create-order/components/schema-form/params/bigmember.js

@@ -35,18 +35,31 @@ export class BigMemberParamsGroup extends Parameters {
 
 
     const comboId = this.getComboId(commonParams.product_code)
     const comboId = this.getComboId(commonParams.product_code)
     const commonFilter = getCommonFilterParams({ pageForm, productForm })
     const commonFilter = getCommonFilterParams({ pageForm, productForm })
+
+    const relateOrdersServiceList = productForm.selectedRelatedOrder?.serviceList
+
+    // 由于套餐升级自定义过程中,serviceList组件可能会造成套餐特定id丢失(serviceList是自定义选择,隐藏了套餐id的选项,不会回显套餐id)
+    // 所以,所有id需要结合关联订单中的id
+    let allServiceList = productForm.serviceList
+    const originServiceList = relateOrdersServiceList
+    let supServiceIds = []
+    if (Array.isArray(relateOrdersServiceList)) {
+      allServiceList = allServiceList.concat(originServiceList)
+      allServiceList = [...new Set(allServiceList)]
+      supServiceIds = allServiceList.filter(item => !relateOrdersServiceList.includes(item)) // 对比以前的,新增的id
+    }
+
     const filter = {
     const filter = {
       ...commonFilter,
       ...commonFilter,
       comboId,
       comboId,
-      serviceIds: productForm.serviceList,  // 当前所有选择的id
+      serviceIds: allServiceList,  // 当前所有选择的id
       // 大会员个人版也可开通子账号,getCommonFilterParams中个人版没有加上的,此处要加上
       // 大会员个人版也可开通子账号,getCommonFilterParams中个人版没有加上的,此处要加上
       buyAccountCount: productForm.subAccountNumbers?.payCount,
       buyAccountCount: productForm.subAccountNumbers?.payCount,
       giftAccountCount: productForm.subAccountNumbers?.freeCount
       giftAccountCount: productForm.subAccountNumbers?.freeCount
     }
     }
 
 
-    const relateOrdersServiceList = productForm.selectedRelatedOrder?.serviceList
-    if (Array.isArray(relateOrdersServiceList)) {
-      filter.supServiceIds = filter.serviceIds.filter(item => !relateOrdersServiceList.includes(item)) // 对比以前的,新增的id
+    if (supServiceIds.length > 0) {
+      filter.supServiceIds = supServiceIds // 对比以前的,新增的id
     }
     }
 
 
     p.filter = filter
     p.filter = filter

+ 11 - 0
src/views/create-order/components/schema-form/required/common.js

@@ -28,6 +28,17 @@ export function checkProductCommonRequired(pageForm, product) {
     })
     })
   }
   }
 
 
+  // 升级:升级内容必填
+  if (form.paymentType === 3) {
+    const pass = Array.isArray(form.upgradeContent) && form.upgradeContent.length > 0
+    if (!form.upgradeContent || !pass) {
+      return Object.assign(res, {
+        p: false,
+        msg: '升级内容为必填'
+      })
+    }
+  }
+
   if (form.validityPeriod) {
   if (form.validityPeriod) {
     // 续费不需要填写有效周期
     // 续费不需要填写有效周期
     if (form.paymentType !== 3) {
     if (form.paymentType !== 3) {

+ 17 - 1
src/views/create-order/components/schema-form/resort/bigmember.js

@@ -1,4 +1,4 @@
-import { sortValidityPeriod, sortSubAccountNumbers, getFilter } from './common'
+import { sortValidityPeriod, sortSubAccountNumbers, getFilter, hasAddSubAccount } from './common'
 import { schemaKeyMap } from "@/views/create-order/data";
 import { schemaKeyMap } from "@/views/create-order/data";
 import store from '@/store'
 import store from '@/store'
 
 
@@ -28,6 +28,22 @@ export function sortBigMemberProductFrom(product) {
     const sub = sortSubAccountNumbers(filter)
     const sub = sortSubAccountNumbers(filter)
     Object.assign(map, sub)
     Object.assign(map, sub)
 
 
+    if (product.service_type === 3) {
+      // 升级内容
+      // supServiceIds 不等于空 且 长度大于0  表示有补充服务1
+      // buyAccountCount+giftAccountCount>0 表示有增购子账号2
+      const hasAddSub = hasAddSubAccount(filter)
+      const hasSupService = Array.isArray(filter.supServiceIds) && filter.supServiceIds.length > 0
+      const upgradeContent = []
+      if (hasAddSub) {
+        upgradeContent.push(2)
+      }
+      if (hasSupService) {
+        upgradeContent.push(1)
+      }
+      map[schemaKeyMap.upgradeContent] = upgradeContent
+    }
+
     if (filter.comboId) {
     if (filter.comboId) {
       // 有comboId说明是套餐,不需要回显serviceList
       // 有comboId说明是套餐,不需要回显serviceList
       map[schemaKeyMap.specification] = getCodeWithComboId(filter.comboId)
       map[schemaKeyMap.specification] = getCodeWithComboId(filter.comboId)

+ 6 - 1
src/views/create-order/components/schema-form/resort/common.js

@@ -40,7 +40,7 @@ export function sortCommonForm(product, order) {
     map[schemaKeyMap.payment] = product.service_type - 0
     map[schemaKeyMap.payment] = product.service_type - 0
   }
   }
   // 关联订单relatedOrders
   // 关联订单relatedOrders
-  if (product.service_type) {
+  if (product.service_type && product.linked_detail_id) {
     map[schemaKeyMap.relatedOrders] = [product.linked_detail_id]
     map[schemaKeyMap.relatedOrders] = [product.linked_detail_id]
   }
   }
 
 
@@ -123,3 +123,8 @@ export function sortValidityDateTime(product = {}) {
   }
   }
 }
 }
 
 
+// 判断是否有增购子账号
+// buyAccountCount+giftAccountCount>0 表示有增购子账号2
+export function hasAddSubAccount(filter = {}) {
+  return Number(filter.buyAccountCount) + Number(filter.giftAccountCount) > 0
+}

+ 17 - 1
src/views/create-order/components/schema-form/resort/svip.js

@@ -1,4 +1,5 @@
-import { sortValidityPeriod, getFilter } from './common'
+import { sortValidityPeriod, getFilter, hasAddSubAccount } from './common'
+import { schemaKeyMap } from "@/views/create-order/data";
 
 
 export function sortSvipProductFrom(product = {}) {
 export function sortSvipProductFrom(product = {}) {
   const map = {}
   const map = {}
@@ -7,6 +8,21 @@ export function sortSvipProductFrom(product = {}) {
     // 周期
     // 周期
     const period = sortValidityPeriod(filter, product)
     const period = sortValidityPeriod(filter, product)
     Object.assign(map, period)
     Object.assign(map, period)
+    // 升级内容
+    if (product.service_type === 3) {
+      // 升级内容
+      // addAreaCount 不等于空 且 长度大于0  表示有补充服务1
+      // buyAccountCount+giftAccountCount>0 表示有增购子账号2
+      const hasAddSub = hasAddSubAccount(filter)
+      const upgradeContent = []
+      if (hasAddSub) {
+        upgradeContent.push(2)
+      }
+      if (filter.addAreaCount > 0) {
+        upgradeContent.push(1)
+      }
+      map[schemaKeyMap.upgradeContent] = upgradeContent
+    }
   }
   }
 
 
   return map
   return map

+ 1 - 0
src/views/create-order/components/schema-form/schema-form.vue

@@ -277,6 +277,7 @@ export default {
         'validityCount',
         'validityCount',
         'validityPeriod',
         'validityPeriod',
         'contractAmount',
         'contractAmount',
+        'relatedOrders',
         'subAccountNumbers',
         'subAccountNumbers',
       ]
       ]
       const waitingRestoreForm = this.thisProductInfoListItem.productCardInfo?.waitingRestoreForm
       const waitingRestoreForm = this.thisProductInfoListItem.productCardInfo?.waitingRestoreForm