<template>
  <view class="inspection-page">
    <!-- 固定顶部区域 -->
    <view class="fixed-header">
      <!-- 顶部渐变导航栏 -->
      <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">
        <view class="feature-desc">该报告由「{{ applet_title }}」质检查验出具</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>

    <!-- 主内容区（卡片悬浮覆盖打钩区） -->
    <scroll-view scroll-y class="main-content" enhanced :show-scrollbar="false">
      <view class="content-wrapper">
        <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 displayedGoodsList" :key="i"
              @tap="goToInspectionDetail('qualified', item)">
              <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" v-if="item.price">￥{{ (item.price / item.count).toFixed(2) }}</text>
                    <text class="goods-unit" v-if="item.price && item.unit">/{{ item.unit }}</text>
                    <text class="goods-count">x{{ item.count }}</text>
                  </view>
                  <!-- <view class="goods-total">￥{{item.total}}</view> -->
                </view>
              </view>
            </view>
          </view>
          <view v-if="goodsList.length > 2" class="collapse-btn" @tap="qualifiedCollapsed = !qualifiedCollapsed">
            <text>{{ qualifiedCollapsed ? '展开（共' + goodsList.length + '件）' : '收起' }}</text>
            <uni-icons :type="qualifiedCollapsed ? 'arrowdown' : 'arrowup'" size="16" color="#bbb" />
          </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 displayedProblemList" :key="i"
              @tap="goToInspectionDetail('problem', item)">
              <image class="goods-img" :src="item.img || bkhs_image" 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" v-if="item.price">￥{{ (item.price / item.count).toFixed(2) }}</text>
                    <text class="goods-unit" v-if="item.price">/件</text>
                    <text class="goods-count">x{{ item.count }}</text>
                  </view>
                  <!-- <view class="goods-total">￥{{item.total}}</view> -->
                </view>
              </view>
            </view>
          </view>
          <view v-if="problemList.length > 2" class="collapse-btn" @tap="problemCollapsed = !problemCollapsed">
            <text>{{ problemCollapsed ? '展开（共' + problemList.length + '件）' : '收起' }}</text>
            <uni-icons :type="problemCollapsed ? 'arrowdown' : 'arrowup'" size="16" color="#bbb" />
          </view>
          <view class="summary-row">
            <text>件数：<text class="highlight">{{ problemCount }}</text> 件</text>
            <text>结算金额：<text class="highlight">￥{{ problemAmount }}</text></text>
          </view>
        </view>
        <view v-if="showUnrecyclable && unrecyclableList.length" class="inspection-card problem-card">
          <view class="report-title">不可回收</view>
          <view class="goods-list">
            <view class="goods-item" v-for="(item, i) in displayedUnrecyclableList" :key="i"
              @tap="goToInspectionDetail('unrecyclable', item)">
              <image class="goods-img" :src="item.img || bkhs_image" 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" v-if="item.price">￥{{ (item.price / item.count).toFixed(2) }}</text>
                    <text class="goods-unit" v-if="item.price">/件</text>
                    <text class="goods-count">x{{ item.count }}</text>
                  </view>
                  <!-- <view class="goods-total">￥{{item.total}}</view> -->
                </view>
              </view>
            </view>
          </view>
          <view v-if="unrecyclableList.length > 2" class="collapse-btn"
            @tap="unrecyclableCollapsed = !unrecyclableCollapsed">
            <text>{{ unrecyclableCollapsed ? '展开（共' + unrecyclableList.length + '件）' : '收起' }}</text>
            <uni-icons :type="unrecyclableCollapsed ? 'arrowdown' : 'arrowup'" size="16" color="#bbb" />
          </view>
          <view class="summary-row">
            <text>件数：<text class="highlight">{{ unrecyclableCount }}</text> 件</text>
            <text>结算金额：<text class="highlight">￥{{ unrecyclableAmount }}</text></text>
          </view>
        </view>
      </view>
    </scroll-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: [], // 质量问题
      unrecyclableList: [], // 不可回收
      reportData: null,
      showQualified: false,
      showProblem: false,
      showUnrecyclable: false,
      orderId: 0,
      fixedHeaderHeight: 0, // 固定头部的高度
      qualifiedCollapsed: true,
      problemCollapsed: true,
      unrecyclableCollapsed: true,
      isSelf: false,
    }
  },
  computed: {
    applet_title() {
      const item = getApp().globalData.configData.find(i => i.keyName === 'applet_title')
      return item ? item.keyContent : ''
    },
    totalCount() {
      return this.goodsList.reduce((sum, item) => sum + item.count, 0)
    },
    totalAmount() {
      return this.goodsList.reduce((sum, item) => sum + item.price, 0).toFixed(2)
    },
    problemCount() {
      return this.problemList.reduce((sum, item) => sum + item.count, 0)
    },
    problemAmount() {
      return this.problemList.reduce((sum, item) => sum + item.price, 0).toFixed(2)
    },
    unrecyclableCount() {
      return this.unrecyclableList.reduce((sum, item) => sum + item.count, 0)
    },
    unrecyclableAmount() {
      return this.unrecyclableList.reduce((sum, item) => sum + item.price, 0).toFixed(2)
    },
    fixedHeaderHeight() {
      // 导航栏高度 + 状态栏高度 + 特性区域高度 (约140rpx转px)
      return this.statusBarHeight + this.navBarHeight + 70
    },
    displayedGoodsList() {
      return this.qualifiedCollapsed ? this.goodsList.slice(0, 2) : this.goodsList;
    },
    displayedProblemList() {
      return this.problemCollapsed ? this.problemList.slice(0, 2) : this.problemList;
    },
    displayedUnrecyclableList() {
      return this.unrecyclableCollapsed ? this.unrecyclableList.slice(0, 2) : this.unrecyclableList;
    },
    bkhs_image() {//不可回收图片
      const item = getApp().globalData.configData.find(i => i.keyName === 'bkhs_image')
      return item ? item.keyContent : ''
    },
    zlwt_image() {//质量问题图片
      const item = getApp().globalData.configData.find(i => i.keyName === 'zlwt_image')
      return item ? item.keyContent : ''
    },
  },
  onLoad(options) {
    const sysInfo = uni.getSystemInfoSync()
    this.statusBarHeight = sysInfo.statusBarHeight
    this.navBarHeight = 14
    this.navBarTotalHeight = this.statusBarHeight + this.navBarHeight
    // 获取 orderId
    const orderId = options.orderId
    this.isSelf = options.isSelf

    this.orderId = orderId
    if (orderId) {
      this.fetchQualityReport(orderId)
    }
  },
  methods: {
    async fetchQualityReport(orderId) {
      // 调用订单详情接口
      this.$api && this.$api('getOrderDetail', {
        orderId: this.orderId
      }, res => {
        if (res && res.code === 200 && res.result) {
          this.reportData = res.result
          // 解析嵌套的订单数据
          this.parseOrderData(res.result)
        }
      })
    },

    parseOrderData(orderData) {
      this.goodsList = []
      this.problemList = []
      this.unrecyclableList = []
      if (orderData.orderCheckList && orderData.orderCheckList.length > 0) {
        orderData.orderCheckList.forEach(item => {
          // 合格
          if (Number(item.qualifiedNum) > 0) {
            this.goodsList.push({
              img: item.image || '/static/default-goods.png',
              name: item.title || '未知品类',
              desc: item.pinName ? `${item.pinName}` : '',
              price: item.price || 0,
              count: item.qualifiedNum,
              total: (item.price || 0) * item.qualifiedNum,
              detail: true,
              testingInstructions: '',
              testingImages: (item.commonOrderList && item.commonOrderList[0] && item.commonOrderList[0].testingImages) || '',
              testingTime: (item.commonOrderList && item.commonOrderList[0] && item.commonOrderList[0].testingTime) || '',
              problemDesc: ''
            })
          }
          // 质量问题和不可回收
          if (Array.isArray(item.commonOrderList)) {
            item.commonOrderList.forEach(sub => {
              // 质量问题
              if (sub.testingStatus == 1) {
                this.problemList.push({
                  img: item.image,
                  name: item.title || '未知品类',
                  desc: item.pinName ? `${item.pinName}` : '',
                  price: (item.price || 0) / (item.noQualifiedNum || 1),
                  count: sub.num || 1,
                  total: (item.price || 0),
                  detail: true,
                  testingInstructions: sub.testingInstructions || '',
                  testingImages: sub.testingImages || '',
                  testingTime: sub.testingTime || '',
                  problemDesc: sub.testingInstructions || ''
                })
              }
              // 不可回收
              if (sub.testingStatus == 2) {
                this.unrecyclableList.push({
                  img: item.image,
                  name: item.title || '未知品类',
                  desc: item.pinName ? `${item.pinName}` : '',
                  price: (item.price || 0) / (item.unrecyclable || 1),

                  count: sub.num || 1,
                  total: (item.price || 0),
                  detail: true,
                  testingInstructions: sub.testingInstructions || '',
                  testingImages: sub.testingImages || '',
                  testingTime: sub.testingTime || '',
                  problemDesc: sub.testingInstructions || ''
                })
              }
            })
          }
        })
      }
      this.showQualified = this.goodsList.length > 0
      this.showProblem = this.problemList.length > 0
      this.showUnrecyclable = this.unrecyclableList.length > 0
    },

    async onRefresh() {
      // 模拟刷新数据
      await new Promise(resolve => setTimeout(resolve, 1000))
      uni.stopPullRefresh()
    },
    navigateBack() {
      uni.navigateBack()
    },
    goToInspectionDetail(status, item) {
      if (!this.orderId) return;
      let url = `/pages/subcomponent/inspection-detail?orderId=${this.orderId}`

      if (this.isSelf) {
        console.log(this.isSelf, 'this.isSelf');
        url += `&isSelf=true`
      }

      uni.navigateTo({
        url
      })
    }
  }
}
</script>

<style lang="scss" scoped>
.inspection-page {
  min-height: 100vh;
  background: #422525;
  position: relative;
}

.fixed-header {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 1000;
  background: #422525;
}

.nav-bar {
  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;
  background: #422525;
  border-radius: 32rpx;
  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 {
  background: linear-gradient(180deg, #fef7e6 0%, #fff 50%);
  position: absolute;
  top: 220rpx;
  left: 0;
  right: 0;
  bottom: 0;
  border-radius: 40rpx 40rpx 0 0;
  z-index: 11;
}

.content-wrapper {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 30rpx 0;
  padding-bottom: calc(env(safe-area-inset-bottom) + 60rpx);
}

.inspection-card {
  background: #fff;
  border-radius: 32rpx;
  box-shadow: 0 8rpx 32rpx rgba(60, 167, 250, 0.08);
  padding: 40rpx 32rpx 32rpx 32rpx;
  margin: 150rpx auto 0 auto;
  width: calc(100vw - 64rpx);
  max-width: 700rpx;
  display: flex;
  flex-direction: column;
  flex-shrink: 0;

  .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: 24rpx;
  margin-bottom: 40rpx;
}

.problem-price-row {
  color: #bbb !important;
}

.collapse-btn {
  text-align: center;
  color: #bbb;
  font-size: 24rpx;
  margin: 10rpx 0;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8rpx;
}
</style>