<template>
  <view class="maintain-container">
    <!-- 顶部选择器区域 -->
    <view class="selector-section">
      <!-- 紧急程度选择器 -->
      <view class="selector-item" @click="openUrgencyPicker">
        <text class="selector-label" :class="{ active: urgency }">{{ urgency.label || '紧急状态' }}</text>
        <uv-icon name="arrow-down-fill" size="14" :color="urgency ? '#C70019' : '#000'"></uv-icon>
      </view>
      
      <!-- 维修状态选择器 -->
      <view class="selector-item" @click="openStatusPicker">
        <text class="selector-label" :class="{ active: status }">{{ status.label || '维修状态' }}</text>
        <uv-icon name="arrow-down-fill" size="14" :color="status ? '#C70019' : '#000'"></uv-icon>
      </view>
    </view>
    
    <!-- 产品列表 -->
    <view class="product-list">
      <view class="product-item" v-for="(item, index) in list" :key="index" @click="navigateToDetail(item)">
        <!-- 产品ID和状态标签 -->
        <view class="item-header">
          <view @click.stop="copyID(item.id)">
            <text class="item-id">{{ item.id }}</text>
            <img src="@/static/copy.png" alt="复制图标" class="item-icon">
          </view>
          <view class="status-tag" :class="[getStatusClass(item.status)]">
            <text class="status-text">{{ item.status_dictText }}</text>
          </view>
        </view>
        
        <!-- 中间那条下划线 -->
        <view class="item-border" />

        <!-- 产品标题 -->
        <view class="item-title">
          <text class="title-text">{{ item.showpieceId_dictText }}</text>
        </view>
        
        <!-- 产品详情 -->
        <view class="item-details">
          <view class="detail-row">
            <view class="detail-item">
              <text class="detail-label">展品编号</text>
              <text class="detail-value">{{ item.showpieceId }}</text>
            </view>
            <view class="detail-item">
              <text class="detail-label">紧急程度</text>
              <text class="detail-value">{{ item.urgency_dictText }}</text>
            </view>
          </view>
          <view class="detail-row">
            <view class="detail-item">
              <text class="detail-label">展品位置</text>
              <text class="detail-value">{{ item.showpiece.position }}</text>
            </view>
          </view>
          <view class="detail-row">
            <view class="detail-item">
              <text class="detail-label">报修人</text>
              <text class="detail-value">{{ item.malfunctionName_dictText }}</text>
            </view>
            <view class="detail-item">
              <text class="detail-label">报修日期</text>
              <text class="detail-value">{{ item.malfunctionDate }}</text>
            </view>
          </view>
          <view class="detail-row">
            <view class="detail-item full-width">
              <text class="detail-label">故障描述</text>
              <text class="detail-value">{{ item.malfunctionDesc }}</text>
            </view>
          </view>
        </view>
        
        <!-- 操作按钮 -->
        <view class="item-actions">
          <button class="item-actions-button">立即维修</button>
        </view>
      </view>
     <!-- 空状态 -->
    </view>
    <uv-empty v-if="!list.length"  icon="/static/暂无搜索结果.png" />
    
    <!-- 紧急程度选择器 -->
    <uv-picker 
      ref="urgencyPicker"
      v-model="urgencyShow" 
      :columns="urgencyColumns"
      keyName="label"
      mode="selector"
      @confirm="onUrgencyConfirm"
      confirmColor="#C70019"
    ></uv-picker>
    
    <!-- 维修状态选择器 -->
    <uv-picker 
      ref="statusPicker"
      v-model="statusShow" 
      :columns="statusColumns"
      keyName="label"
      mode="selector"
      @confirm="onStatusConfirm"
      confirmColor="#C70019"
    ></uv-picker>
  </view>
</template>

<script>
import ListMixin from '@/mixins/list'

export default {
  mixins: [ListMixin],
  data() {
    return {
      urgency: null,
      status: null,
      urgencyShow: false,
      statusShow: false,
      mixinListApi: 'exhibit.queryMalfunctionList',
      urgencyColumns: [
        [
          {
            label: '全部',
            value: ''
          },
          {
            label: '一般',
            value: '0'
          },
          {
            label: '紧急',
            value: '1'
          },
        ]
      ],
      statusColumns: [
        [
          {
            label: '全部',
            value: ''
          },
          {
            label: '故障中',
            value: '0'
          },
          {
            label: '维修中',
            value: '1'
          },
          {
            label: '已解决',
            value: '2'
          }
        ]
      ],
    }
  },
  methods: {
    copyID(id) {
      uni.setClipboardData({
        data: id,
        success: () => {
          uni.showToast({
            title: '复制成功',
            icon: 'success'
          })
        }
      })
    },
    mixinSetParams(){
      return {
        urgency: this.urgency?.value || '',
        status: this.status?.value || ''
      }
    },
    navigateToDetail(item) {
      uni.navigateTo({
        url: '/subPages/repair/maintainSubmit?id=' + item.id + '&showpieceId=' + item.showpieceId
      })
    },
    openUrgencyPicker() {
      this.$refs.urgencyPicker.open()
    },
    openStatusPicker() {
      this.$refs.statusPicker.open()
    },
    onUrgencyConfirm(e) {
      this.urgency = e.value[0]
      console.log('选择紧急程度:', e)
      this.initPage()
      this.getList(true)
      // TODO: 根据紧急程度筛选
    },
    onStatusConfirm(e) {
      this.status = e.value[0]
      console.log('选择维修状态:', e)
      this.initPage()
      this.getList(true)
      // TODO: 根据状态筛选
    },
    getStatusClass(status) {
      switch(status) {
        case '维修中':
          return 'status-repairing'
        case '故障中':
          return 'status-fault'
        case '已解决':
          return 'status-resolved'
        default:
          return ''
      }
    },
    handleRepair(item) {
      console.log('立即维修:', item)
      // TODO: 处理维修逻辑
    }
  }
}
</script>

<style lang="scss" scoped>
.maintain-container {
  background-color: #fff;
  min-height: 100vh;
}

.selector-section {
  display: flex;
  padding: 34rpx 41rpx;
  // background-color: #fff;
  gap: 58rpx;
  
  .selector-item {
    display: flex;
    align-items: center;
    gap: 9rpx;
    cursor: pointer;
    
    .selector-label {
      font-size: 28rpx;
      color: #000;
      
      &.active {
        color: $primary-color;
      }
    }
  }
}

.product-list {
  padding: 20rpx 32rpx;
  
  .product-item {
    background-color: #fff;
    border-radius: 15rpx;
    padding: 30rpx 30rpx 20rpx;
    margin-bottom: 24rpx;
    box-shadow: 0rpx 3rpx 6rpx 0rpx rgba(0,0,0,0.16);
    
    .item-header {
      display: flex;
      align-items: center;
      justify-content: space-between;
      margin-bottom: 13.5rpx;

        .item-icon {
          width: 25.5rpx;
          height: 25.5rpx;
        }
  
        .item-id {
          font-size: 28rpx;
          margin-right: 20rpx;
          color: $secondary-text-color;
        }

      
      .status-tag {
        border-radius: 15rpx;
        width: 135rpx;
        height: 57rpx;
        display: flex;
        align-items: center;
        justify-content: center;
        .status-text {
          font-size: 28rpx;
        }
        
        &.status-repairing {
          background-color: #ffffca;
          color: #CE7C62;
        }
        
        &.status-fault {
          background-color: #fccec7;
          color: #b82222;
        }
        
        &.status-resolved {
          background-color: #cfffca;
          color: #528828;
        }
      }
    }
    
    .item-border {
      border-bottom: 1rpx solid $secondary-text-color;
      // background-color: #E5E5E5;
      margin-bottom: 26.5rpx;
      opacity: 0.22;
    }

    .item-title {
      margin-bottom: 37rpx;
      
      .title-text {
        font-size: 30rpx;
        color: $primary-text-color;
        font-weight: bold;
      }
    }
    
    .item-details {
      margin-bottom: 52rpx;
      
      .detail-row {
        display: flex;
        margin-bottom: 25rpx;
        
        &:last-child {
          margin-bottom: 0;
        }
        
        .detail-item {
          flex: 1;
          display: flex;
          align-items: flex-start;
          margin-right: 35rpx;
          
          &.full-width {
            flex: 1 1 100%;
            margin-right: 0;
          }
          
          &:last-child {
            margin-right: 0;
            margin-bottom: 0;
          }
          
          .detail-label {
            font-size: 22rpx;
            color: $secondary-text-color;
            margin-right: 19rpx;
            flex-shrink: 0;
            min-width: 95rpx;
          }
          
          .detail-value {
            font-size: 22rpx;
            color: $primary-text-color;
            flex: 1;
          }
        }
      }
    }
    
    .item-actions {
      display: flex;
      justify-content: center;
      .item-actions-button {
        width: 378rpx;
        height: 78rpx;
        background-color: $primary-color;
        color: #fff;
        font-size: 28rpx;
        border-radius: 39rpx;
      }
    }
  }
}
</style>