<template>
  <div class="app-container">
    <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
      <el-form-item label="羊只id" prop="id">
        <el-input
          v-model="queryParams.id"
          placeholder="请输入羊只id"
          clearable
          @keyup.enter="handleQuery"
        />
      </el-form-item>
      <el-form-item label="管理耳号" prop="bsManageTags">
        <el-input
          v-model="queryParams.bsManageTags"
          placeholder="请输入管理耳号"
          clearable
          @keyup.enter="handleQuery"
        />
      </el-form-item>
      <el-form-item label="电子耳号" prop="electronicTags">
        <el-input
          v-model="queryParams.electronicTags"
          placeholder="请输入电子耳号"
          clearable
          @keyup.enter="handleQuery"
        />
      </el-form-item>
      <el-form-item>
        <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
        <el-button icon="Refresh" @click="resetQuery">重置</el-button>
      </el-form-item>
    </el-form>

    <el-row :gutter="10" class="mb8">
      <el-col :span="1.5">
        <el-button
          type="danger"
          plain
          icon="Delete"
          :disabled="multiple"
          @click="handleDelete"
          v-hasPermi="['sheep_file:sheep_file:remove']"
        >删除</el-button>
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="warning"
          plain
          icon="Download"
          @click="handleExport"
          v-hasPermi="['sheep_file:sheep_file:export']"
        >导出</el-button>
      </el-col>
      <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
    </el-row>

    <div style="margin-bottom: 10px;">
      <el-button type="info" plain icon="Setting" @click="openColumnDialog">显示列</el-button>
    </div>

    <el-table
      v-loading="loading"
      :data="sheep_fileList"
      @selection-change="handleSelectionChange"
      style="width: 100%"
      border
    >
      <el-table-column type="selection" width="55" align="center" />
      <el-table-column
        v-if="columns['id'].visible"
        label="羊只id"
        align="center"
        prop="id"
        width="120"
        fixed="left"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">羊只id</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['bsManageTags'].visible"
        label="管理耳号"
        align="center"
        prop="bsManageTags"
        width="120"
        fixed="left"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">管理耳号</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['ranchId'].visible"
        label="牧场id"
        align="center"
        prop="ranchId"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">牧场id</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['drRanch'].visible"
        label="牧场名称"
        align="center"
        prop="drRanch"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">牧场名称</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['sheepfoldId'].visible"
        label="羊舍id"
        align="center"
        prop="sheepfoldId"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">羊舍id</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['sheepfoldName'].visible"
        label="羊舍名称"
        align="center"
        prop="sheepfoldName"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">羊舍名称</span>
        </template>
        <template #default="scope">
          <el-tooltip :content="scope.row.sheepfoldName" placement="top">
            <span style="display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;">
            {{ scope.row.sheepfoldName }}
            </span>
          </el-tooltip>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['electronicTags'].visible"
        label="电子耳号"
        align="center"
        prop="electronicTags"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">电子耳号</span>
        </template>
        <template #default="scope">
          <el-tooltip :content="scope.row.electronicTags" placement="top">
            <span style="display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;">
            {{ scope.row.electronicTags }}
            </span>
          </el-tooltip>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['varietyId'].visible"
        label="品种id"
        align="center"
        prop="varietyId"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">品种id</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['variety'].visible"
        label="品种"
        align="center"
        prop="variety"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">品种</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['family'].visible"
        label="家系"
        align="center"
        prop="family"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">家系</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['name'].visible"
        label="羊只类型"
        align="center"
        prop="name"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">羊只类型</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['gender'].visible"
        label="性别"
        align="center"
        prop="gender"
        width="120"
        sortable
      >
        <!-- <template #header>
          <span style="font-weight: bold; color: #333;">性别</span>
        </template> -->
        <template #default="scope">
          <dict-tag :options="sheep_gender" :value="scope.row.gender"/>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['birthday'].visible"
        label="出生日期"
        align="center"
        prop="birthday"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">出生日期</span>
        </template>
        <template #default="scope">
          <span>{{ parseTime(scope.row.birthday, '{y}-{m}-{d}') }}</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['dayAge'].visible"
        label="日龄"
        align="center"
        prop="dayAge"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">日龄</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['monthAge'].visible"
        label="月龄"
        align="center"
        prop="monthAge"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">月龄</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['parity'].visible"
        label="胎次"
        align="center"
        prop="parity"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">胎次</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['birthWeight'].visible"
        label="出生体重"
        align="center"
        prop="birthWeight"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">出生体重</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['weaningDate'].visible"
        label="断奶日期"
        align="center"
        prop="weaningDate"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">断奶日期</span>
        </template>
        <template #default="scope">
          <span>{{ parseTime(scope.row.weaningDate, '{y}-{m}-{d}') }}</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['statusId'].visible"
        label="羊只状态"
        align="center"
        prop="statusId"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">羊只状态</span>
        </template>
        <template #default="scope">
          <dict-tag :options="sheep_status" :value="scope.row.statusId"/>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['weaningWeight'].visible"
        label="断奶体重"
        align="center"
        prop="weaningWeight"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">断奶体重</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['currentWeight'].visible"
        label="当前体重"
        align="center"
        prop="currentWeight"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">当前体重</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['breedStatusId'].visible"
        label="繁育状态id"
        align="center"
        prop="breedStatusId"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">繁育状态id</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['breed'].visible"
        label="繁殖状态"
        align="center"
        prop="breed"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">繁殖状态</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['bsFatherId'].visible"
        label="父号id"
        align="center"
        prop="bsFatherId"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">父号id</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['fatherManageTags'].visible"
        label="父亲管理耳号"
        align="center"
        prop="fatherManageTags"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">父亲管理耳号</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['bsMotherId'].visible"
        label="母号id"
        align="center"
        prop="bsMotherId"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">母号id</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['motherManageTags'].visible"
        label="母亲管理耳号"
        align="center"
        prop="motherManageTags"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">母亲管理耳号</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['receptorId'].visible"
        label="受体id"
        align="center"
        prop="receptorId"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">受体id</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['receptorManageTags'].visible"
        label="受体管理耳号"
        align="center"
        prop="receptorManageTags"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">受体管理耳号</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['fatherFatherId'].visible"
        label="祖父号id"
        align="center"
        prop="fatherFatherId"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">祖父号id</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['grandfatherManageTags'].visible"
        label="祖父管理耳号"
        align="center"
        prop="grandfatherManageTags"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">祖父管理耳号</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['fatherMotherId'].visible"
        label="祖母号id"
        align="center"
        prop="fatherMotherId"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">祖母号id</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['grandmotherManageTags'].visible"
        label="祖母管理耳号"
        align="center"
        prop="grandmotherManageTags"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">祖母管理耳号</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['fatherId'].visible"
        label="外祖父号id"
        align="center"
        prop="fatherId"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">外祖父号id</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['maternalGrandfatherManageTags'].visible"
        label="外祖父管理耳号"
        align="center"
        prop="maternalGrandfatherManageTags"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">外祖父管理耳号</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['motherId'].visible"
        label="外祖母号id"
        align="center"
        prop="motherId"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">外祖母号id</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['maternalGrandmotherManageTags'].visible"
        label="外祖母管理耳号"
        align="center"
        prop="maternalGrandmotherManageTags"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">外祖母管理耳号</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['matingDate'].visible"
        label="配种日期"
        align="center"
        prop="matingDate"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">配种日期</span>
        </template>
        <template #default="scope">
          <span>{{ parseTime(scope.row.matingDate, '{y}-{m}-{d}') }}</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['matingTypeId'].visible"
        label="配种类型"
        align="center"
        prop="matingTypeId"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">配种类型</span>
        </template>
        <template #default="scope">
          <dict-tag :options="breed_type" :value="scope.row.matingTypeId"/>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['pregDate'].visible"
        label="孕检日期"
        align="center"
        prop="pregDate"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">孕检日期</span>
        </template>
        <template #default="scope">
          <span>{{ parseTime(scope.row.pregDate, '{y}-{m}-{d}') }}</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['lambingDate'].visible"
        label="产羔日期"
        align="center"
        prop="lambingDate"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">产羔日期</span>
        </template>
        <template #default="scope">
          <span>{{ parseTime(scope.row.lambingDate, '{y}-{m}-{d}') }}</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['lambingDay'].visible"
        label="产羔时怀孕天数"
        align="center"
        prop="lambingDay"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">产羔时怀孕天数</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['matingDay'].visible"
        label="配后天数"
        align="center"
        prop="matingDay"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">配后天数</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['gestationDay'].visible"
        label="怀孕天数"
        align="center"
        prop="gestationDay"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">怀孕天数</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['expectedDate'].visible"
        label="预产日期"
        align="center"
        prop="expectedDate"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">预产日期</span>
        </template>
        <template #default="scope">
          <span>{{ parseTime(scope.row.expectedDate, '{y}-{m}-{d}') }}</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['postLambingDay'].visible"
        label="产后天数"
        align="center"
        prop="postLambingDay"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">产后天数</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['lactationDay'].visible"
        label="泌乳天数"
        align="center"
        prop="lactationDay"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">泌乳天数</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['anestrousDay'].visible"
        label="空怀天数"
        align="center"
        prop="anestrousDay"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">空怀天数</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['matingCounts'].visible"
        label="配种次数"
        align="center"
        prop="matingCounts"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">配种次数</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['matingTotal'].visible"
        label="累计配种次数"
        align="center"
        prop="matingTotal"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">累计配种次数</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['miscarriageCounts'].visible"
        label="累计流产次数"
        align="center"
        prop="miscarriageCounts"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">累计流产次数</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['comment'].visible"
        label="备注"
        align="center"
        prop="comment"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">备注</span>
        </template>
        <template #default="scope">
          <el-tooltip :content="scope.row.comment" placement="top">
            <span style="display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;">
              {{ scope.row.comment }}
            </span>
          </el-tooltip>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['controlled'].visible"
        label="是否性控"
        align="center"
        prop="controlled"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">是否性控</span>
        </template>
        <template #default="scope">
          <dict-tag :options="controlled" :value="scope.row.controlled"/>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['body'].visible"
        label="体况评分"
        align="center"
        prop="body"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">体况评分</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['breast'].visible"
        label="乳房评分"
        align="center"
        prop="breast"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">乳房评分</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['source'].visible"
        label="入群来源"
        align="center"
        prop="source"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">入群来源</span>
        </template>
        <template #default="scope">
          <dict-tag :options="source" :value="scope.row.source"/>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['sourceDate'].visible"
        label="入群日期"
        align="center"
        prop="sourceDate"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">入群日期</span>
        </template>
        <template #default="scope">
          <span>{{ parseTime(scope.row.sourceDate, '{y}-{m}-{d}') }}</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['sourceRanchId'].visible"
        label="来源牧场id"
        align="center"
        prop="sourceRanchId"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">来源牧场id</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['sourceRanch'].visible"
        label="来源牧场"
        align="center"
        prop="sourceRanch"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">来源牧场</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['updateBy'].visible"
        label="修改人"
        align="center"
        prop="updateBy"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">修改人</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['updateTime'].visible"
        label="修改日期"
        align="center"
        prop="updateTime"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">修改日期</span>
        </template>
        <template #default="scope">
          <span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d}') }}</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['createBy'].visible"
        label="创建人"
        align="center"
        prop="createBy"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">创建人</span>
        </template>
      </el-table-column>
      <el-table-column
        v-if="columns['createTime'].visible"
        label="创建日期"
        align="center"
        prop="createTime"
        width="120"
        sortable
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">创建日期</span>
        </template>
        <template #default="scope">
          <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
        </template>
      </el-table-column>
      <el-table-column
        label="操作"
        align="center"
        class-name="small-padding fixed-width"
        fixed="right"
        width="120"
      >
        <template #header>
          <span style="font-weight: bold; color: #333;">操作</span>
        </template>
        <template #default="scope">
          <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['sheep_file:sheep_file:remove']">删除</el-button>
        </template>
      </el-table-column>
    </el-table>
    
    <pagination
      v-show="total>0"
      :total="total"
      v-model:page="queryParams.pageNum"
      v-model:limit="queryParams.pageSize"
      @pagination="getList"
    />

    <!-- 列显示设置对话框 -->
    <el-dialog v-model="columnDialogVisible" title="显示列设置" width="800px">
      <div style="max-height: 400px; overflow-y: auto; ">
        <el-checkbox-group v-model="selectedColumns" style="grid; grid-template-columns: repeat(3, 1fr); gap: 10px;" >
          <el-checkbox label="id">羊只id</el-checkbox>
          <el-checkbox label="bsManageTags">管理耳号</el-checkbox>
          <el-checkbox label="ranchId">牧场id</el-checkbox>
          <el-checkbox label="drRanch">牧场名称</el-checkbox>
          <el-checkbox label="sheepfoldId">羊舍id</el-checkbox>
          <el-checkbox label="sheepfoldName">羊舍名称</el-checkbox>
          <el-checkbox label="electronicTags">电子耳号</el-checkbox>
          <el-checkbox label="varietyId">品种id</el-checkbox>
          <el-checkbox label="variety">品种</el-checkbox>
          <el-checkbox label="family">家系</el-checkbox>
          <el-checkbox label="name">羊只类型</el-checkbox>
          <el-checkbox label="gender">性别</el-checkbox>
          <el-checkbox label="birthday">出生日期</el-checkbox>
          <el-checkbox label="dayAge">日龄</el-checkbox>
          <el-checkbox label="monthAge">月龄</el-checkbox>
          <el-checkbox label="parity">胎次</el-checkbox>
          <el-checkbox label="birthWeight">出生体重</el-checkbox>
          <el-checkbox label="weaningDate">断奶日期</el-checkbox>
          <el-checkbox label="statusId">羊只状态</el-checkbox>
          <el-checkbox label="weaningWeight">断奶体重</el-checkbox>
          <el-checkbox label="currentWeight">当前体重</el-checkbox>
          <el-checkbox label="breedStatusId">繁育状态id</el-checkbox>
          <el-checkbox label="breed">繁殖状态</el-checkbox>
          <el-checkbox label="bsFatherId">父号id</el-checkbox>
          <el-checkbox label="fatherManageTags">父亲管理耳号</el-checkbox>
          <el-checkbox label="bsMotherId">母号id</el-checkbox>
          <el-checkbox label="motherManageTags">母亲管理耳号</el-checkbox>
          <el-checkbox label="receptorId">受体id</el-checkbox>
          <el-checkbox label="receptorManageTags">受体管理耳号</el-checkbox>
          <el-checkbox label="fatherFatherId">祖父号id</el-checkbox>
          <el-checkbox label="grandfatherManageTags">祖父管理耳号</el-checkbox>
          <el-checkbox label="fatherMotherId">祖母号id</el-checkbox>
          <el-checkbox label="grandmotherManageTags">祖母管理耳号</el-checkbox>
          <el-checkbox label="fatherId">外祖父号id</el-checkbox>
          <el-checkbox label="maternalGrandfatherManageTags">外祖父管理耳号</el-checkbox>
          <el-checkbox label="motherId">外祖母号id</el-checkbox>
          <el-checkbox label="maternalGrandmotherManageTags">外祖母管理耳号</el-checkbox>
          <el-checkbox label="matingDate">配种日期</el-checkbox>
          <el-checkbox label="matingTypeId">配种类型</el-checkbox>
          <el-checkbox label="pregDate">孕检日期</el-checkbox>
          <el-checkbox label="lambingDate">产羔日期</el-checkbox>
          <el-checkbox label="lambingDay">产羔时怀孕天数</el-checkbox>
          <el-checkbox label="matingDay">配后天数</el-checkbox>
          <el-checkbox label="gestationDay">怀孕天数</el-checkbox>
          <el-checkbox label="expectedDate">预产日期</el-checkbox>
          <el-checkbox label="postLambingDay">产后天数</el-checkbox>
          <el-checkbox label="lactationDay">泌乳天数</el-checkbox>
          <el-checkbox label="anestrousDay">空怀天数</el-checkbox>
          <el-checkbox label="matingCounts">配种次数</el-checkbox>
          <el-checkbox label="matingTotal">累计配种次数</el-checkbox>
          <el-checkbox label="miscarriageCounts">累计流产次数</el-checkbox>
          <el-checkbox label="comment">备注</el-checkbox>
          <el-checkbox label="controlled">是否性控</el-checkbox>
          <el-checkbox label="body">体况评分</el-checkbox>
          <el-checkbox label="breast">乳房评分</el-checkbox>
          <el-checkbox label="source">入群来源</el-checkbox>
          <el-checkbox label="sourceDate">入群日期</el-checkbox>
          <el-checkbox label="sourceRanchId">来源牧场id</el-checkbox>
          <el-checkbox label="sourceRanch">来源牧场</el-checkbox>
          <el-checkbox label="updateBy">修改人</el-checkbox>
          <el-checkbox label="updateTime">修改日期</el-checkbox>
          <el-checkbox label="createBy">创建人</el-checkbox>
          <el-checkbox label="createTime">创建日期</el-checkbox>
        </el-checkbox-group>
      </div>
      <div style="margin-top: 20px; display: flex; justify-content: space-between; align-items: center;">
        <el-checkbox v-model="isAllSelected" @change="toggleAllSelection" >全选</el-checkbox>
        <div>
          <el-button type="primary" @click="confirmColumnSettings">提交</el-button>
          <el-button @click="resetColumnSettings">重置</el-button>
        </div>
      </div>
    </el-dialog>
  </div>
</template>

<script setup name="Sheep_file">
import { listSheep_file, getSheep_file } from "@/api/fileManagement/sheep_file"




const { proxy } = getCurrentInstance()
const { sheep_gender } = proxy.useDict('sheep_gender')
const { breed_type } = proxy.useDict('breed_type')
const { controlled } = proxy.useDict('controlled')
const { source } = proxy.useDict('source')
const { sheep_status } = proxy.useDict('sheep_status')
const sheep_fileList = ref([])
const open = ref(false)
const loading = ref(true)
const showSearch = ref(true)
const ids = ref([])
const single = ref(true)
const multiple = ref(true)
const total = ref(0)
const title = ref("")
const columnDialogVisible = ref(false)
const selectedColumns = ref([
  'id', 'bsManageTags', 'ranchId', 'drRanch', 'sheepfoldId', 'sheepfoldName', 'electronicTags', 'varietyId', 'variety', 'family', 'name', 'gender', 'birthday', 'dayAge', 'monthAge', 'parity', 'birthWeight', 'weaningDate', 'statusId', 'weaningWeight', 'currentWeight', 'breedStatusId', 'breed', 'bsFatherId', 'fatherManageTags', 'bsMotherId', 'motherManageTags', 'receptorId', 'receptorManageTags', 'fatherFatherId', 'grandfatherManageTags', 'fatherMotherId', 'grandmotherManageTags', 'fatherId', 'maternalGrandfatherManageTags', 'motherId', 'maternalGrandmotherManageTags', 'matingDate', 'matingTypeId', 'pregDate', 'lambingDate', 'lambingDay', 'matingDay', 'gestationDay', 'expectedDate', 'postLambingDay', 'lactationDay', 'anestrousDay', 'matingCounts', 'matingTotal', 'miscarriageCounts', 'comment', 'controlled', 'body', 'breast', 'source', 'sourceDate', 'sourceRanchId', 'sourceRanch', 'updateBy', 'updateTime', 'createBy', 'createTime'
])
const isAllSelected = ref(false)
const columns = reactive({
  id: { visible: true },
  bsManageTags: { visible: true },
  ranchId: { visible: true },
  drRanch: { visible: true },
  sheepfoldId: { visible: true },
  sheepfoldName: { visible: true },
  electronicTags: { visible: true },
  varietyId: { visible: true },
  variety: { visible: true },
  family: { visible: true },
  name: { visible: true },
  gender: { visible: true },
  birthday: { visible: true },
  dayAge: { visible: true },
  monthAge: { visible: true },
  parity: { visible: true },
  birthWeight: { visible: true },
  weaningDate: { visible: true },
  statusId: { visible: true },
  weaningWeight: { visible: true },
  currentWeight: { visible: true },
  breedStatusId: { visible: true },
  breed: { visible: true },
  bsFatherId: { visible: true },
  fatherManageTags: { visible: true },
  bsMotherId: { visible: true },
  motherManageTags: { visible: true },
  receptorId: { visible: true },
  receptorManageTags: { visible: true },
  fatherFatherId: { visible: true },
  grandfatherManageTags: { visible: true },
  fatherMotherId: { visible: true },
  grandmotherManageTags: { visible: true },
  fatherId: { visible: true },
  maternalGrandfatherManageTags: { visible: true },
  motherId: { visible: true },
  maternalGrandmotherManageTags: { visible: true },
  matingDate: { visible: true },
  matingTypeId: { visible: true },
  pregDate: { visible: true },
  lambingDate: { visible: true },
  lambingDay: { visible: true },
  matingDay: { visible: true },
  gestationDay: { visible: true },
  expectedDate: { visible: true },
  postLambingDay: { visible: true },
  lactationDay: { visible: true },
  anestrousDay: { visible: true },
  matingCounts: { visible: true },
  matingTotal: { visible: true },
  miscarriageCounts: { visible: true },
  comment: { visible: true },
  controlled: { visible: true },
  body: { visible: true },
  breast: { visible: true },
  source: { visible: true },
  sourceDate: { visible: true },
  sourceRanchId: { visible: true },
  sourceRanch: { visible: true },
  updateBy: { visible: true },
  updateTime: { visible: true },
  createBy: { visible: true },
  createTime: { visible: true }
})

const data = reactive({
  form: {},
  queryParams: {
    pageNum: 1,
    pageSize: 10,
    id: null,
    bsManageTags: null,
    drRanch: null,
    electronicTags: null,
    variety: null,
    name: null,
    gender: null,
    statusId: null,
    breed: null,
  },
  rules: {
    id: [
      { required: true, message: "羊只id不能为空", trigger: "blur" }
    ],
  }
})

const { queryParams, form, rules } = toRefs(data)

/** 查询羊只档案列表 */
function getList() {
  loading.value = true
  listSheep_file(queryParams.value).then(response => {
    sheep_fileList.value = response.rows
    total.value = response.total
    loading.value = false
  })
}

// 表单重置
function reset() {
  form.value = {
    id: null,
    bsManageTags: null,
    ranchId: null,
    drRanch: null,
    sheepfoldId: null,
    sheepfoldName: null,
    electronicTags: null,
    varietyId: null,
    variety: null,
    family: null,
    name: null,
    gender: null,
    birthday: null,
    dayAge: null,
    monthAge: null,
    parity: null,
    birthWeight: null,
    weaningDate: null,
    statusId: null,
    weaningWeight: null,
    currentWeight: null,
    breedStatusId: null,
    breed: null,
    bsFatherId: null,
    fatherManageTags: null,
    bsMotherId: null,
    motherManageTags: null,
    receptorId: null,
    receptorManageTags: null,
    fatherFatherId: null,
    grandfatherManageTags: null,
    fatherMotherId: null,
    grandmotherManageTags: null,
    fatherId: null,
    maternalGrandfatherManageTags: null,
    motherId: null,
    maternalGrandmotherManageTags: null,
    matingDate: null,
    matingTypeId: null,
    pregDate: null,
    lambingDate: null,
    lambingDay: null,
    matingDay: null,
    gestationDay: null,
    expectedDate: null,
    postLambingDay: null,
    lactationDay: null,
    anestrousDay: null,
    matingCounts: null,
    matingTotal: null,
    miscarriageCounts: null,
    comment: null,
    controlled: null,
    body: null,
    breast: null,
    source: null,
    sourceDate: null,
    sourceRanchId: null,
    sourceRanch: null,
    updateBy: null,
    updateTime: null,
    createBy: null,
    createTime: null,
    isDelete: null
  }
  proxy.resetForm("sheep_fileRef")
}

/** 搜索建议功能 */
function handleQuery() {
  queryParams.value.pageNum = 1
  getList()
}

/** 重置按钮操作 */
function resetQuery() {
  proxy.resetForm("queryRef")
  handleQuery()
}

// 多选框选中数据
function handleSelectionChange(selection) {
  ids.value = selection.map(item => item.id)
  single.value = selection.length != 1
  multiple.value = !selection.length
}

/** 删除按钮操作 */
function handleDelete(row) {
  const _ids = row.id || ids.value
  proxy.$modal.confirm('是否确认删除羊只档案编号为"' + _ids + '"的数据项？').then(function() {
    return delSheep_file(_ids)
  }).then(() => {
    getList()
    proxy.$modal.msgSuccess("删除成功")
  }).catch(() => {})
}

/** 导出按钮操作 */
function handleExport() {
  proxy.download('sheep_file/sheep_file/export', {
    ...queryParams.value
  }, `sheep_file_${new Date().getTime()}.xlsx`)
}

// 打开列设置对话框
function openColumnDialog() {
  // 加载上次选择的状态
  const savedColumns = localStorage.getItem('selectedColumns')
  if (savedColumns) {
    selectedColumns.value = JSON.parse(savedColumns)
    Object.keys(columns).forEach(column => {
      columns[column].visible = selectedColumns.value.includes(column)
    })
  }
  columnDialogVisible.value = true
}

// 全选功能
function toggleAllSelection() {
  if (isAllSelected.value) {
    selectedColumns.value = Object.keys(columns)
  } else {
    selectedColumns.value = []
  }
  updateColumnVisibility()
}

// 更新列的显示状态
function updateColumnVisibility() {
  Object.keys(columns).forEach(column => {
    columns[column].visible = selectedColumns.value.includes(column)
  })
}

// 确认列设置
function confirmColumnSettings() {
  updateColumnVisibility()
  // 保存当前选择到本地存储
  localStorage.setItem('selectedColumns', JSON.stringify(selectedColumns.value))
  columnDialogVisible.value = false
}

// 重置列设置
function resetColumnSettings() {
  selectedColumns.value = [
    'id', 'bsManageTags', 'ranchId', 'drRanch', 'sheepfoldId', 'sheepfoldName', 'electronicTags', 'varietyId', 'variety', 'family', 'name', 'gender', 'birthday', 'dayAge', 'monthAge', 'parity', 'birthWeight', 'weaningDate', 'statusId', 'weaningWeight', 'currentWeight', 'breedStatusId', 'breed', 'bsFatherId', 'fatherManageTags', 'bsMotherId', 'motherManageTags', 'receptorId', 'receptorManageTags', 'fatherFatherId', 'grandfatherManageTags', 'fatherMotherId', 'grandmotherManageTags', 'fatherId', 'maternalGrandfatherManageTags', 'motherId', 'maternalGrandmotherManageTags', 'matingDate', 'matingTypeId', 'pregDate', 'lambingDate', 'lambingDay', 'matingDay', 'gestationDay', 'expectedDate', 'postLambingDay', 'lactationDay', 'anestrousDay', 'matingCounts', 'matingTotal', 'miscarriageCounts', 'comment', 'controlled', 'body', 'breast', 'source', 'sourceDate', 'sourceRanchId', 'sourceRanch', 'updateBy', 'updateTime', 'createBy', 'createTime'
  ]
  updateColumnVisibility()
  localStorage.setItem('selectedColumns', JSON.stringify(selectedColumns.value))
}

getList()
</script>

<style scoped>
:deep(.el-checkbox) {
  border: 1px solid #dcdfe6;
  border-radius: 4px;
  padding: 10px;
  margin: 5px;
  width: calc(30% - 20px);
}
</style>