| | |
| | | @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 |
| | | :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> |
| | |
| | | <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|| roleType==3" :class="{ active: currentType === '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|| roleType==3"> |
| | | <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="鉴别菌株名称"> |
| | | <template #default="{ row }"> |
| | |
| | | </el-table-column> |
| | | <el-table-column label="操作" width="200"> |
| | | <template #default="{ row }"> |
| | | <el-button type="text" v-if="row.status == 1 && roleType == 3&¤tType != 'draft'" |
| | | style="margin-right: 10px;" |
| | | @click="$router.push('/strain/validation/confirm-detail?id=' + row.id)">确认</el-button> |
| | | <el-button type="text" style="margin-right: 10px;" v-if="roleType == 4" @click="handleDetail(row)">详情</el-button> |
| | | <el-button type="text" style="margin-right: 10px;" v-if="roleType != 4" @click="handleDetail2(row)">详情</el-button> |
| | | <el-button type="text" style="margin-right: 10px;" v-if="roleType == 4 && currentType == 'draft'" @click="handleEdit(row)">编辑</el-button> |
| | | <el-button type="text" v-if="roleType == 4 && currentType == 'draft'" @click="handleDelete(row)">删除</el-button> |
| | | <el-button type="text" v-if="row.status == 1 && roleType == 3" |
| | | style="margin-right: 10px;" |
| | | @click="$router.push('/strain/validation/confirm-detail-chief?id=' + row.id)">确认</el-button> |
| | | <el-button type="text" style="margin-right: 10px;" v-if="roleType == 4" |
| | | @click="handleDetail(row)">详情</el-button> |
| | | <el-button type="text" style="margin-right: 10px;" v-if="roleType != 4" |
| | | @click="handleDetail2(row)">详情</el-button> |
| | | <el-button type="text" style="margin-right: 10px;" |
| | | v-if="(roleType == 4 && currentType == 'draft') || (roleType == 1)" |
| | | @click="handleEdit(row)">编辑</el-button> |
| | | <el-button type="text" v-if="(roleType == 4 && currentType == 'draft') || (roleType == 1)" |
| | | @click="handleDelete(row)">删除</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </template> |
| | |
| | | import PrimitiveCellDetailDialog from "./primitive-cell-detail-dialog.vue"; |
| | | import DetailConditionDialog from "./DetailConditionDialog.vue"; |
| | | import EditConditionDialog from "./EditConditionDialog.vue"; |
| | | |
| | | import moment from "moment"; |
| | | import { getList, delOne } from "./service"; |
| | | import {myTeamPageList} from "@/components/chooseProject/servce"; |
| | | export default { |
| | | name: "PrimitiveCell", |
| | | components: { |
| | |
| | | editDialogValue: {}, |
| | | currentDetail: {}, |
| | | roleType: JSON.parse(sessionStorage.getItem("userInfo")).roleType, |
| | | teamList: [], // 项目组列表 |
| | | teamLoading: false, // 加载状态 |
| | | form: { |
| | | projectIds: [], |
| | | identifyingStrainCode: "", |
| | | identifyingStrainName: "", |
| | | validationExperimentCode: "", |
| | |
| | | }; |
| | | }, |
| | | methods: { |
| | | // 获取项目组列表 |
| | | 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 |
| | | } |
| | | }, |
| | | handleDetail(row) { |
| | | row.experimentTime = moment(row.experimentTime).format('YYYY-MM-DD') |
| | | this.currentDetail = row; |
| | | this.detailVisible = true; |
| | | }, |
| | |
| | | // Implement batch add logic |
| | | }, |
| | | handleEdit(row) { |
| | | if (Number(this.roleType) === 1) { |
| | | this.$router.push({ path: "/strain/validation/confirm-detail-chief", query: { id: row.id, mode: 'edit' } }); |
| | | return; |
| | | } |
| | | this.$router.push({ |
| | | path: "/strain/validation/edit-chief-cell", |
| | | query: { |
| | |
| | | this.searchData(); |
| | | }, |
| | | }, |
| | | mounted() { |
| | | |
| | | activated() { |
| | | this.searchData(); |
| | | }, |
| | | }; |
| | |
| | | cursor: pointer; |
| | | height: 50px; |
| | | line-height: 50px; |
| | | width: 166px; |
| | | min-width: 166px; |
| | | text-align: center; |
| | | } |
| | | |