<template>
  <div>
    <el-input style="width: 200px; height: 30px; margin-right: 10px;" suffix-icon="Search" placeholder="请输入订单编号"
      v-model="name"></el-input>
    <el-button class="ml-5" type="primary" @click="load" style="height: 25px;">搜索</el-button>
    <el-button type="warning" @click="reset" style="height:25px">重置</el-button>
  </div>
  <!-- 数据展示层 -->
  <el-table :data="tableData" border stripe header-cell-class-name="headerBg"
    :cell-style="{ 'text-align': 'center', 'font-size': '16px' }" @selection-change="handleSelectionChange"
    :header-cell-style="{ 'text-align': 'center' }">
    <el-table-column type="selection" width="55" fixed="left"></el-table-column>
    <el-table-column prop="id" label="订单序号" width="80">
      <template #default="{ $index }">
        {{ $index + 1 }}
      </template>
    </el-table-column>
    <el-table-column prop="orderNumber" label="订单编号" width="180"></el-table-column>
    <el-table-column prop="createTime" label="下单时间" width="180"></el-table-column>
    <el-table-column prop="userName" label="用户名" width="80"></el-table-column>
    <el-table-column label="所购买的商品" width="100">
      <el-table-column label="展开所有商品" type="expand" width="100">
        <template #default="props">
          <el-table :data="props.row.orderItemList">
            <el-table-column label="商品名称" prop="goodSnapshot.name" />
            <el-table-column label="商品图片" prop="goodSnapshot.goodImg">
              <template #default="scope">
                <div>
                  <img :src="scope.row.goodSnapshot.goodImg" alt="" style="height: 50px;">
                </div>
              </template>
            </el-table-column>
            <el-table-column label="类别" prop="goodSnapshot.type" />
            <el-table-column label="商品单价" prop="goodSnapshot.price" />
            <el-table-column label="是否是限定商品" prop="goodSnapshot.festivalOrder" />
            <el-table-column label="数量" prop="quantity" />
            <el-table-column label="总价" prop="itemTotalAmount" />
          </el-table>
        </template>
      </el-table-column>
    </el-table-column>
    <el-table-column label="地址信息快照" width="180">
      <el-table-column prop="addressSnapshot.name" label="收货人" />
      <el-table-column prop="addressSnapshot.phone" label="手机号" width="180"/>
      <el-table-column prop="addressSnapshot.region" label="地区" width="180"/>
      <el-table-column prop="addressSnapshot.detailAddress" label="详细地址" width="180"/>
    </el-table-column>
    <el-table-column label="优惠卷信息快照" width="50">
      <el-table-column prop="couponSnapshot.name" label="优惠卷名称" />
      <el-table-column prop="couponSnapshot.conditionAmount" label="优惠金额" />
    </el-table-column>
    <el-table-column prop="totalAmount" label="订单总金额"></el-table-column>
    <el-table-column prop="orderStatus" label="订单状态"></el-table-column>
    <el-table-column prop="orderStatus" label="快递单号"></el-table-column>
    <el-table-column label="操作" width="220px" fixed="right">
      <template #default="scope">
        <el-button size="small" @click="showDetail(scope.$index, scope.row)">
          详情
        </el-button>
        <el-button size="small" @click="deliverGoods(scope.row)">
          发货
        </el-button>
        <el-button size="small" @click="deleteOrder(scope.row)" type="warning" plain>
          取消订单
        </el-button>
      </template>
    </el-table-column>
  </el-table>
  <div style="padding: 10px 0">
    <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
      :current-page="searchParams.current" :page-size="searchParams.pageSize" :page-sizes="[5, 10, 15, 20]"
      :small="null" :disabled="null" :background="null" layout="total, sizes, prev, pager, next, jumper"
      :total="total" />
  </div>
  <el-dialog title="订单详情信息" v-model="DialogVisible" width="60%">
      <el-form label-width="100px" size="default" :model="editForm">
        <el-form-item label="订单编号">
          <el-input v-model="editForm.addressSnapshot" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="用户名称">
          <el-input v-model="editForm.addressSnapshot.name" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="收货手机">
          <el-input v-model="editForm.addressSnapshot.phone" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="收货地址">
          <el-input v-model="editForm.addressSnapshot.region" autocomplete="off"></el-input>
        </el-form-item>
        <!-- 这里的商品明细就不放图片了 -->
        <el-form-item label="商品明细">
          <el-input v-model="editForm.addressSnapshot.detailAddress" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="订单总金额">
          <el-input v-model="editForm.totalAmount" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="订单状态">
          <el-input v-model="editForm.orderStatus" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="快递单号">
          <!-- <el-input v-model="editForm.totalAmount" autocomplete="off"></el-input> -->
        </el-form-item>
        <el-form-item label="创建时间">
          <el-input v-model="editForm.createTime" autocomplete="off"></el-input>
        </el-form-item>
        <el-form-item label="更新时间">
          <el-input v-model="editForm.updateTime" autocomplete="off"></el-input>
        </el-form-item>
      </el-form>
      <template #footer>
        <div class="dialog-footer">
          <el-button style="height: 30px;" @click="DialogVisible = false">取消</el-button>
          <el-button style="height: 30px" type="primary" @click="DialogVisible = false">确认</el-button>
        </div>
      </template>
     </el-dialog>
</template>

<script lang="ts" setup>
import { onMounted, ref } from "vue";
import myAxios from "@/api/myAxios";
import { ElMessage } from "element-plus";
const tableData: any = ref([]);  //表单展示数据
const total = ref(0);
const title = ref('') 
const editForm: any = ref({});  //编辑表单
const DialogVisible = ref(false); //详情展示
const name = ref('')
const searchParams: any = ref({ //封装分页
  current: 1, //当前页码
  pageSize: 5, //每页显示条数
  sortField: "id",  //根据ID分类
  sortOrder: "descend" //降序
})
const id = ref({})
const num = ref(0)
const orderDetail: any = ref([])  //订单中的商品明细，多个商品
//订单列表
const orderList = ref([{}])
onMounted(() => {
  getOrderList()  //页面加载获取订单列表
})
const handleSizeChange = (newSize: any) => {
  searchParams.value.pageSize = newSize //新的页面数
  getOrderList()
}
const handleCurrentChange = (Current: any) => {
  searchParams.value.current = Current
  getOrderList()
}
const handleSelectionChange = (row: any) => {
  // id.value = JSON.parse(JSON.stringify(row)); 
}
//获取订单列表
const getOrderList = async () => {
  try {
    const res = await myAxios.post('/order/list/page', { ...searchParams.value });
    // console.log('订单信息--->', res.data.data);
    if (res.data.code === 1) {
      tableData.value = res.data.data.records;
      total.value = parseInt(res.data.data.total)
      // console.log('表单信息--->', tableData.value);
    } else {
      ElMessage({
        message: '获取数据失败',
      });
    }
  } catch (error) {
    ElMessage({
      message: '发生错误',
    });
  }
}
//查看订单详情
const showDetail = (index: number, row: any) => {
  title.value = "订单详情"
  DialogVisible.value = true;
  editForm.value = row;
  console.log('editForm--->',editForm.value);
};
//发货方法
const deliverGoods = async (row : any)=>{
  // console.log('status--->',row.id);
  const res = await myAxios.post('/order/update',{
    id: row.id,
    orderStatus: "已发货"
  })
  //发货要改的，要有弹窗填写快递单号
  if(res.data.code === 1) {
    ElMessage({
      type: 'success',
      message: '发货成功'
    })
    getOrderList()
  }
}
//取消订单
const deleteOrder = async (row : any) => {
  // console.log(typeof index)
  const res = await myAxios.post('/goods/delete', { id: row.id })
  console.log(res)
  if (res.data.code === 1) {
    ElMessage({
      type: 'success',
      message: '删除成功',
    })
    getOrderList()
  }
}
const reset = () => {
  name.value = '';

};
const load = () => { }
//保存订单状态
const save =()=>{

}
</script>

<style lang="scss" scoped></style>