<template>
  <view class="inspection-page">
    <!-- 顶部渐变导航栏 -->
    <view class="nav-bar" :style="{height: navBarTotalHeight + 'px', paddingTop: statusBarHeight + 'px'}">
      <view class="nav-bar-inner">
        <view class="back-icon" @tap="navigateBack">
          <uni-icons type="left" size="22" color="#fff" />
        </view>
        <view class="nav-bar-title">质检报告</view>
        <view class="nav-bar-right">
          <uni-icons type="more-filled" size="22" color="#fff" />
        </view>
      </view>
    </view>
    <!-- 打钩标签区及说明 -->
    <view class="feature-area" :style="{marginTop: navBarTotalHeight+statusBarHeight + 'px'}">
      <view class="feature-desc">该报告由「瀚海回收」质检查验出具</view>
      <view class="feature-tags">
        <view class="tag" v-for="(t, i) in featureTags" :key="i">
          <text class="check">✓</text>
          <text class="text">{{t}}</text>
        </view>
      </view>
    </view>
    <!-- 主内容区（卡片悬浮覆盖打钩区） -->
    <view class="main-content">
      <view v-if="showQualified && goodsList.length" class="inspection-card">
        <view class="report-title">质检合格</view>
        <view class="goods-list">
          <view class="goods-item" v-for="(item, i) in goodsList" :key="i" @tap="goToInspectionDetail('qualified')">
            <image class="goods-img" :src="item.img" mode="aspectFit" />
            <view class="goods-info">
              <view class="goods-row">
                <view class="goods-name">{{item.name}}</view>
                <view v-if="item.detail" class="detail-link">查看详情 <uni-icons type="right" size="16" color="#bbb" /></view>
              </view>
              <view class="goods-desc">{{item.desc}}</view>
              <view class="goods-bottom-row">
                <view class="goods-price-row">
                  <text class="goods-price">￥{{item.price}}</text>
                  <text class="goods-unit">/件</text>
                  <text class="goods-count">x{{item.count}}</text>
                </view>
                <view class="goods-total">￥{{item.total}}</view>
              </view>
            </view>
          </view>
        </view>
        <view class="summary-row">
          <text>件数：<text class="highlight">{{totalCount}}</text> 件</text>
          <text>结算金额：<text class="highlight">￥{{totalAmount}}</text></text>
        </view>
      </view>
      <view v-if="showProblem && problemList.length" class="inspection-card problem-card">
        <view class="report-title">质量问题</view>
        <view class="goods-list">
          <view class="goods-item" v-for="(item, i) in problemList" :key="i" @tap="goToInspectionDetail('problem')">
            <image class="goods-img" :src="item.img" mode="aspectFit" />
            <view class="goods-info">
              <view class="goods-row">
                <view class="goods-name">{{item.name}}</view>
                <view v-if="item.detail" class="detail-link">查看详情 <uni-icons type="right" size="16" color="#bbb" /></view>
              </view>
              <view class="goods-desc">{{item.desc}}</view>
              <view class="goods-bottom-row">
                <view class="goods-price-row problem-price-row">
                  <!-- <text class="goods-price">￥{{item.price}}</text>
                  <text class="goods-unit">/件</text> -->
                  <text class="goods-count">x{{item.count}}</text>
                </view>
                <!-- <view class="goods-total">￥{{item.total}}</view> -->
              </view>
            </view>
          </view>
        </view>
        <view class="summary-row">
          <text>件数：<text class="highlight">{{problemCount}}</text> 件</text>
          <text>结算金额：<text class="highlight">￥ 0</text></text>
        </view>
      </view>

    </view>
  </view>
</template>

<script>
import pullRefreshMixin from '@/pages/mixins/pullRefreshMixin.js'

export default {
  mixins: [pullRefreshMixin],
  data() {
    return {
      statusBarHeight: 0,
      navBarHeight: 14,
      navBarTotalHeight: 14,
      featureTags: ['透明检', '专业验', '公正评', '逐件验'],
      goodsList: [], // 质检合格
      problemList: [], // 质量问题
      reportData: null,
      showQualified: false,
      showProblem: false
    }
  },
  computed: {
    totalCount() {
      return this.goodsList.reduce((sum, item) => sum + item.count, 0)
    },
    totalAmount() {
      return this.goodsList.reduce((sum, item) => sum + item.total, 0).toFixed(1)
    },
    problemCount() {
      return this.problemList.reduce((sum, item) => sum + item.count, 0)
    },
    problemAmount() {
      return this.problemList.reduce((sum, item) => sum + item.total, 0).toFixed(1)
    }
  },
  onLoad(options) {
    const sysInfo = uni.getSystemInfoSync()
    this.statusBarHeight = sysInfo.statusBarHeight
    this.navBarHeight = 14
    this.navBarTotalHeight = this.statusBarHeight + this.navBarHeight
    // 获取 orderId
    const orderId = options.orderId 
    if (orderId) {
      this.fetchQualityReport(orderId)
    }
  },
  methods: {
    async fetchQualityReport(orderId) {
      // 调用订单详情接口
      this.$api && this.$api('getOrderDetail', { orderId }, res => {
        if (res && res.code === 200 && res.result) {
          this.reportData = res.result
          // 解析嵌套的订单数据
          this.parseOrderData(res.result)
        }
      })
    },
    
    parseOrderData(orderData) {
      // 重置数据
      this.goodsList = []
      this.problemList = []
      
      // 遍历主订单的 commonOrderList
      if (orderData.commonOrderList && orderData.commonOrderList.length > 0) {
        orderData.commonOrderList.forEach(mainOrder => {
          // 如果有子订单列表，遍历子订单
          if (mainOrder.commonOrderList && mainOrder.commonOrderList.length > 0) {
            mainOrder.commonOrderList.forEach(subOrder => {
              this.categorizeOrderItem(subOrder, mainOrder)
            })
          } else {
            // 如果没有子订单，直接处理主订单项
            this.categorizeOrderItem(mainOrder)
          }
        })
      }
      
      // 设置显示状态
      this.showQualified = this.goodsList.length > 0
      this.showProblem = this.problemList.length > 0
    },
    
    categorizeOrderItem(orderItem, parentOrder = null) {
      const status = Number(orderItem.testingStatus)
      const parentData = parentOrder || orderItem
      
      // 根据 testingStatus 分类：0-质检合格，1-质量问题
      if (status === 0) {
        // 质检合格
        this.goodsList.push(this.mapOrderToGoods(orderItem, parentData))
      } else if (status === 1) {
        // 质量问题
        this.problemList.push(this.mapOrderToGoods(orderItem, parentData, true))
      }
      // 移除 testingStatus = 2 (不可回收) 的处理
    },
    
    mapOrderToGoods(orderItem, parentData, isProblem = false) {
      return {
        img: parentData.image || '/static/default-goods.png',
        name: parentData.title || '未知品类',
        desc: parentData.pinName ? `${parentData.pinName}` :'',
        price: parentData.onePrice || 0,
        count: orderItem.num || 1,
        total: parentData.price,
        detail: true,
        testingInstructions: orderItem.testingInstructions || '',
        testingImages: orderItem.testingImages || '',
        testingTime: orderItem.testingTime || '',
        problemDesc: isProblem ? (orderItem.testingInstructions || '') : ''
      }
    },

    async onRefresh() {
      // 模拟刷新数据
      await new Promise(resolve => setTimeout(resolve, 1000))
      uni.stopPullRefresh()
    },
    navigateBack() {
      uni.navigateBack()
    },
    goToInspectionDetail(status) {
      // 根据状态获取对应的商品数据
      let itemData = null
      if (status === 'qualified' && this.goodsList.length > 0) {
        itemData = this.goodsList[0]
      } else if (status === 'problem' && this.problemList.length > 0) {
        itemData = this.problemList[0]
      }
      
      if (itemData) {
        uni.navigateTo({
          url: `/pages/subcomponent/inspection-detail?status=${status}` +
            `&testingInstructions=${encodeURIComponent(itemData.testingInstructions || '')}` +
            `&testingTime=${encodeURIComponent(itemData.testingTime || '')}` +
            `&testingImages=${encodeURIComponent(itemData.testingImages || '')}`
        })
      }
    }
  }
}
</script>

<style lang="scss" scoped>
.inspection-page {
  min-height: 100vh;
  background: #422525;
  height: 100vh;
  overflow: hidden;
//   padding-bottom: calc(env(safe-area-inset-bottom) + 120rpx);
}

.nav-bar {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 1000;
  width: 100vw;
  background: #422525;
  box-shadow: 0 2rpx 12rpx rgba(0,0,0,0.03);
  .nav-bar-inner {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 44px;
    width: 100vw;
    position: relative;
  }
  .back-icon, .nav-bar-right {
    width: 44px;
    height: 44px;
    display: flex;
    align-items: center;
    justify-content: center;
    position: absolute;
    top: 0;
  }
  .back-icon { left: 0; }
  .nav-bar-right { right: 0; }
  .nav-bar-title {
    flex: 1;
    text-align: center;
    font-size: 36rpx;
    font-weight: bold;
    color: #fff;
    letter-spacing: 2rpx;
    line-height: 44px;
    font-family: DingTalk JinBuTi;
    font-weight: 400;
    font-style: italic;
    font-size: 28px;
    line-height: 100%;
    letter-spacing: 0%;
    text-align: center;
    // vertical-align: bottom;
  }
}

.feature-area {
  margin: 0 32rpx;
  margin-top: 0;
  margin-bottom: 0;
  background:#422525;
  border-radius: 32rpx;
//   box-shadow: 0 4rpx 24rpx rgba(60, 167, 250, 0.08);
  padding: 18rpx 24rpx 18rpx 24rpx;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  justify-content: center;
}

.feature-desc {
  text-align: center;
  font-size: 22rpx;
  color: #fff;
  font-weight: 500;
  margin-bottom: 10rpx;
  margin-top: 18rpx;
  letter-spacing: 1rpx;
}

.feature-tags {
//   margin: 0 32rpx;
  background: #533030;
  border-radius: 12rpx;
  box-shadow: 0 4rpx 24rpx rgba(60, 167, 250, 0.08);
//   padding: 0 24rpx;
  width: 100%;
  height: 80rpx;
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  align-items: center;

  .tag {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    .check {
      width: 36rpx;
      height: 36rpx;
      background: #fff;
      border-radius: 50%;
      display: flex;
      align-items: center;
      justify-content: center;
      font-size: 28rpx;
      color: #422525;
      font-weight: bold;
      margin-right: 10rpx;
      box-shadow: 0 2rpx 8rpx rgba(0,0,0,0.08);
    }
    .text {
      color: #fff;
      font-size: 28rpx;
      font-weight: bold;
    }
  }
}

.main-content {
  margin-top: 20rpx;
//   padding-top: 88rpx;
  background: linear-gradient(180deg, #fef7e6 0%, #fff 50%);
  height: calc(100vh - 88rpx);
  width: 100vw;
  box-sizing: border-box;
  position: relative;
  z-index: 11;
  border-radius: 40rpx 40rpx 0 0;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  align-items: center;
}

.inspection-card {
  background: #fff;
  border-radius: 32rpx;
  box-shadow: 0 8rpx 32rpx rgba(60, 167, 250, 0.08);
  padding: 40rpx 32rpx 32rpx 32rpx;
  margin: 24rpx  auto 0 auto;
  width: calc(100vw - 64rpx);
  max-width: 700rpx;
  display: flex;
  flex-direction: column;
  .report-title {
    font-size: 32rpx;
    font-weight: bold;
    color: #222;
    text-align: center;
    margin-bottom: 12rpx;
  }
  .goods-list {
    .goods-item {
      display: flex;
      align-items: center;
      background: #fff;
      border-radius: 20rpx;
      box-shadow: 0 2rpx 8rpx rgba(60, 167, 250, 0.04);
      padding: 24rpx 20rpx;
      margin-bottom: 20rpx;
      .goods-img {
        width: 80rpx;
        height: 80rpx;
        border-radius: 16rpx;
        margin-right: 20rpx;
        background: #f5f5f5;
      }
      .goods-info {
        flex: 1;
        display: flex;
        flex-direction: column;
        .goods-row {
          display: flex;
          justify-content: space-between;
          align-items: center;
          .goods-name {
            font-size: 28rpx;
            color: #222;
            font-weight: bold;
          }
          .detail-link {
            font-size: 24rpx;
            color: #bbb;
            display: flex;
            align-items: center;
          }
        }
        .goods-desc {
          font-size: 24rpx;
          color: #bbb;
          margin-bottom: 8rpx;
        }
        .goods-bottom-row {
          display: flex;
          justify-content: space-between;
          align-items: flex-end;
          margin-top: 8rpx;
          .goods-price-row {
            display: flex;
            align-items: baseline;
            .goods-price {
              font-size: 26rpx;
              color: #bbb;
              font-weight: bold;
            }
            .goods-unit {
              font-size: 24rpx;
              color: #bbb;
              margin-left: 2rpx;
            }
            .goods-count {
              font-size: 22rpx;
              color: #bbb;
              margin-left: 8rpx;
              font-weight: normal;
            }
          }
          .goods-total {
            font-size: 28rpx;
            color: #222;
            font-weight: bold;
            margin-left: 24rpx;
          }
        }
      }
    }
    .goods-item:last-child { margin-bottom: 0; }
  }
  .summary-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-top: 24rpx;
    font-size: 28rpx;
    color: #222;
    .highlight {
      color: #f79400;
      font-weight: bold;
      font-size: 30rpx;
    }
  }
}

.check {
  width: 36rpx;
  height: 36rpx;
  background: #fff;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 28rpx;
  color: #13ac47;
  font-weight: bold;
  margin-right: 10rpx;
  box-shadow: 0 2rpx 8rpx rgba(0,0,0,0.08);
}

.problem-card {
  margin-top: 40rpx;
}

.problem-price-row {
  color: #bbb !important;
}
</style> 