puzhibing
6 天以前 0db8c9b94a9ac655549d5eba5c2a6c92ac386c06
culture/src/views/strain-library/validation/primitive-cell/index.vue
@@ -1,10 +1,29 @@
<template>
  <div class="list">
    <!-- Table -->
    <TableCustom :queryForm="queryForm" :tableData="tableData" :total="total" @handleCurrentChange="handleCurrentChange"
      @handleSizeChange="handleSizeChange">
    <TableCustom :queryForm="queryForm" :height="null" :tableData="tableData" :total="total"
      @handleCurrentChange="handleCurrentChange" @handleSizeChange="handleSizeChange">
      <template #search>
        <el-form :model="form" label-width="auto" inline>
          <el-form-item label="选择项目组:">
            <el-select
                v-model="form.projectIds"
                placeholder="请选择项目组"
                filterable
                clearable
                :key="teamList.length"
                :loading="teamLoading"
                @focus="fetchTeamList"
                multiple
            >
              <el-option
                  v-for="item in teamList"
                  :key="item.id"
                  :label="item.teamName"
                  :value="item.id"
              />
            </el-select>
          </el-form-item>
          <el-form-item label="鉴别菌株编号:">
            <el-input v-model="form.identifyingStrainCode" placeholder="请输入"></el-input>
          </el-form-item>
@@ -26,23 +45,37 @@
        <div class="tableTitle">
          <div class="flex a-center">
            <div class="title" :class="{ active: currentType === 'list' }" @click="handleTypeChange('list')">
              原始细胞库验证资料
              祖代菌种库验证资料
            </div>
            <div class="drafts" v-if="roleType==4" :class="{ active: currentType === 'draft' }" @click="handleTypeChange('draft')">
            <div class="drafts" v-if="roleType == 4 || roleType == 3" :class="{ active: currentType === 'draft' }"
              @click="handleTypeChange('draft')">
              草稿箱
            </div>
          </div>
          <div class="flex a-center" v-if="roleType == 4">
            <el-button @click="handleNewStrain" class="el-icon-plus" type="primary"
              style="margin-right: 12px">新增原始细胞库资料</el-button>
              style="margin-right: 12px">新增祖代菌种库验证资料</el-button>
          </div>
        </div>
      </template>
      <template #table>
        <el-table-column prop="strainSource" label="菌种来源" />
        <el-table-column prop="projectName" label="项目组名称"/>
        <el-table-column prop="strainSource" label="菌种来源">
          <template #default="{ row }">
            <el-tooltip :content="row.strainSource" placement="top" effect="dark">
              <div class="ellipsis-text">{{ row.strainSource }}</div>
            </el-tooltip>
          </template>
        </el-table-column>
        <el-table-column prop="identifyingStrainCode" label="鉴别菌株编号" />
        <el-table-column prop="identifyingStrainName" label="鉴别菌株名称" />
        <el-table-column prop="identifyingStrainName" label="鉴别菌株名称" >
          <template #default="{ row }">
            <el-tooltip :content="row.identifyingStrainName" placement="top" effect="dark">
              <div class="ellipsis-text">{{ row.identifyingStrainName }}</div>
            </el-tooltip>
          </template>
        </el-table-column>
        <el-table-column prop="validationExperimentCode" label="验证实验编号" />
        <el-table-column prop="createBy" label="创建人" />
        <el-table-column prop="createTime" label="创建时间" />
@@ -54,13 +87,13 @@
        </el-table-column>
        <el-table-column label="操作" width="200">
          <template #default="{ row }">
            <el-button type="text"
             v-if="row.status == 1 && roleType == 3"
            <el-button  style="margin-right: 10px" type="text" v-if="row.status == 1 && roleType == 3"
              @click="$router.push('/strain/validation/confirm-detail?id=' + row.id)">确认</el-button>
            <el-button type="text" @click="handleDetail(row)">详情</el-button>
            <el-button type="text" @click="handleDetail2(row)">详情</el-button>
            <el-button type="text" @click="handleEdit(row)">编辑</el-button>
            <el-button type="text" @click="handleDelete(row)">删除</el-button>
            <el-button  style="margin-right: 10px" type="text" v-if="roleType == 4" @click="handleDetail(row)">详情</el-button>
            <el-button  style="margin-right: 10px" type="text" v-if="roleType != 4" @click="handleDetail2(row)">详情</el-button>
            <el-button  style="margin-right: 10px" type="text" v-if="(roleType == 1) || (roleType == 4 && currentType == 'draft')" @click="handleEdit(row)">编辑</el-button>
            <el-button type="text" v-if="(roleType == 1) || (roleType == 4 && currentType == 'draft')"
              @click="handleDelete(row)">删除</el-button>
          </template>
        </el-table-column>
      </template>
@@ -78,6 +111,8 @@
import EditConditionDialog from "./EditConditionDialog.vue";
import { getList, delTwo } from "./service";
import moment from "moment";
import {myTeamPageList} from "@/components/chooseProject/servce";
export default {
  name: "PrimitiveCell",
  components: {
@@ -87,6 +122,8 @@
  },
  data() {
    return {
      teamList: [], // 项目组列表
      teamLoading: false, // 加载状态
      detailDialogVisible: false,
      detailDialogValue: {},
      dialogVisible: false,
@@ -96,11 +133,12 @@
      showDelConfirm: false,
      editDialogValue: {},
      currentDetail: {},
      roleType: JSON.parse(sessionStorage.getItem("userInfo")).roleType,
      roleType: Number(JSON.parse(sessionStorage.getItem("userInfo")).roleType),
      form: {
        identifyingStrainCode: "",
        identifyingStrainName: "",
        validationExperimentCode: "",
        projectIds: [],
        startTime: "",
        endTime: "",
        isDraft: 0,
@@ -116,6 +154,7 @@
  },
  methods: {
    handleDetail(row) {
      row.experimentTime = moment(row.experimentTime).format('YYYY-MM-DD')
      this.currentDetail = row;
      this.detailVisible = true;
    },
@@ -166,6 +205,10 @@
      // Implement batch add logic
    },
    handleEdit(row) {
      if (Number(this.roleType) === 1) {
        this.$router.push({ path: "/strain/validation/confirm-detail", query: { id: row.id, mode: 'edit' } });
        return;
      }
      this.$router.push({
        path: "/strain/validation/edit-primitive-cell",
        query: {
@@ -202,9 +245,26 @@
      this.form.strainType = 1; // 1: 原始细胞库
      this.searchData();
    },
    // 获取项目组列表
    async fetchTeamList() {
      if (this.teamList.length > 0) return // 已有数据不再重复请求
      this.teamLoading = true
      try {
        const res = await myTeamPageList()
        console.log('res', res)
        // 根据实际接口返回的数据结构调整
        this.teamList = res.data || res || []
      } catch (error) {
        console.error('获取项目组列表失败:', error)
        this.$message.error('获取项目组列表失败')
      } finally {
        this.teamLoading = false
      }
    },
  },
  mounted() {
    this.searchData();
  async activated() {
    await this.fetchTeamList();
    await this.searchData();
  },
};
</script>
@@ -389,4 +449,12 @@
    }
  }
}
.ellipsis-text {
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
  text-overflow: ellipsis;
  word-break: break-all;
}
</style>