p-honggang.li
2025-09-03 9d4f45939870dde9b59d354616d87536d6274ef1
src/views/tradeManage/confirm/index.vue
@@ -240,6 +240,8 @@
import pointsApi from '@/api/pointsApi' // 新增积分API导入
import { useUserInfo } from '@/stores/modules/userInfo'
import createAxios from '@/utils/axios'
import productApi from '@/api/productApi'
import sysUserService from '@/api/sysUser'
const route = useRoute()
const router = useRouter()
@@ -300,6 +302,39 @@
    const statusName: string = data.orderStatus || ''
    const uiStatus = statusServerToUi[statusName] || 'INFO'
    // 根据产品id获取产品信息,更新头部展示
    try {
      if (data.productId) {
        const detailRes: any = await productApi.getProductById({ id: data.productId })
        if (detailRes?.code === 200 && detailRes.data) {
          // 用产品详情补全头信息
          data.productName = detailRes.data.name || data.productName
          data.providerName = detailRes.data.submissionUnit || data.providerName
          data.industry = detailRes.data.industrialChainName || data.industry
          data.productDesc = detailRes.data.describe || data.productDesc
          data.projectUnit = detailRes.data.importantAreaName || data.productDesc
          data.productType = detailRes.data.typeName || data.productDesc
        }
      }
    } catch (e) {
      // 忽略产品详情失败,不阻塞订单详情
    }
    // 获取用户信息
    try {
      const userRes: any = await sysUserService.getUserdetail({ userId: data.userId })
      if (userRes?.code === 200 && userRes.data) {
        // 用产品详情补全头信息
        data.unitName = userRes.data.unitName || data.unitName
        data.userName = userRes.data.name || data.userName
        data.userDept = userRes.data.departmentName || data.userDept
        data.userPhone = userRes.data.phone || data.userPhone
        data.userAccount = userRes.data.username || data.userAccount
      }
    }catch (e){
    }
    // 映射订单详情头部信息
    const head = {
      orderNo: data.orderId,
@@ -318,6 +353,7 @@
      projectUnit: data.projectUnit || '-',
      productType: data.productType || '-',
      productDesc: data.productDesc || '-',
      providerId: data.providerId || ''
    }
    // 明细项映射
@@ -405,37 +441,37 @@
    // 检查订单是否涉及积分扣减
    const hasPointsDeduction = detail.items && detail.items.some((item: any) => Number(item.pricePoint || 0) > 0)
    
    if (hasPointsDeduction) {
      // 计算需要扣减的积分总额
      const totalPointsToDeduct = detail.items.reduce((sum: number, item: any) => {
        return sum + (Number(item.pricePoint || 0) * Number(item.quantity || 0))
      }, 0)
      if (totalPointsToDeduct > 0) {
        // 获取当前用户积分余额
        try {
          const userPointsRes = await pointsApi.getUserPoints(userId)
          if (userPointsRes.code !== 200 || !userPointsRes.data) {
            ElMessage.error('获取积分余额失败')
            return
          }
          const currentPoints = userPointsRes.data.balance || 0
          if (currentPoints < totalPointsToDeduct) {
            ElMessage.error(`积分余额不足!当前积分:${currentPoints.toLocaleString()},需要积分:${totalPointsToDeduct.toLocaleString()}`)
            return
          }
          // 积分余额充足,继续执行
          console.log(`积分余额检查通过:当前${currentPoints},需要${totalPointsToDeduct}`)
        } catch (error) {
          console.error('获取积分余额失败:', error)
          ElMessage.error('获取积分余额失败,请重试')
          return
        }
      }
    }
    // if (hasPointsDeduction) {
    //   // 计算需要扣减的积分总额
    //   const totalPointsToDeduct = detail.items.reduce((sum: number, item: any) => {
    //     return sum + (Number(item.pricePoint || 0) * Number(item.quantity || 0))
    //   }, 0)
    //
    //   if (totalPointsToDeduct > 0) {
    //     // 获取当前用户积分余额
    //     try {
    //       const userPointsRes = await pointsApi.getUserPoints(userId)
    //       if (userPointsRes.code !== 200 || !userPointsRes.data) {
    //         ElMessage.error('获取积分余额失败')
    //         return
    //       }
    //
    //       const currentPoints = userPointsRes.data.balance || 0
    //
    //       if (currentPoints < totalPointsToDeduct) {
    //         ElMessage.error(`积分余额不足!当前积分:${currentPoints.toLocaleString()},需要积分:${totalPointsToDeduct.toLocaleString()}`)
    //         return
    //       }
    //
    //       // 积分余额充足,继续执行
    //       console.log(`积分余额检查通过:当前${currentPoints},需要${totalPointsToDeduct}`)
    //     } catch (error) {
    //       console.error('获取积分余额失败:', error)
    //       ElMessage.error('获取积分余额失败,请重试')
    //       return
    //     }
    //   }
    // }
    // 确认操作
    await ElMessageBox.confirm('确定要确认交易?', '确认操作', {
@@ -465,7 +501,8 @@
            totalPointsToDeduct, 
            orderId, 
            productNames || '订单交易扣减积分',  // 使用产品名称作为备注
            '积分交易'  // 数据类别
            '积分交易',  // 数据类别
             detail.providerId
          )
          if (!deductRes || deductRes.code !== 200) {
            ElMessage.error(deductRes?.msg || deductRes?.message || '积分扣减失败,交易确认终止')