Merge branch 'main' of http://120.76.84.145:10101/gitblit/r/H5/leshan-laboratory
| | |
| | | isDrawing: false, |
| | | context: null, |
| | | lastX: 0, |
| | | lastY: 0 |
| | | lastY: 0, |
| | | hasDrawn: false |
| | | } |
| | | }, |
| | | computed: { |
| | |
| | | |
| | | this.lastX = x |
| | | this.lastY = y |
| | | this.hasDrawn = true |
| | | }, |
| | | |
| | | handleTouchStart(event) { |
| | |
| | | |
| | | this.lastX = x |
| | | this.lastY = y |
| | | this.hasDrawn = true |
| | | }, |
| | | |
| | | stopDrawing() { |
| | |
| | | clearCanvas() { |
| | | this.context.clearRect(0, 0, this.canvasWidth, this.canvasHeight) |
| | | this.drawDashedBorder() |
| | | this.hasDrawn = false |
| | | }, |
| | | |
| | | confirmSignature() { |
| | | const canvas = this.$refs.signatureCanvas |
| | | const ctx = this.context |
| | | |
| | | // 校验是否签名 |
| | | if (this.isCanvasBlank()) { |
| | | this.$message && this.$message.warning('请先确认签名') |
| | | return |
| | | } |
| | | // 保存当前画布内容 |
| | | const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height) |
| | | |
| | |
| | | // 导出图片 |
| | | const signatureImage = canvas.toDataURL('image/png') |
| | | this.$emit('confirm', 'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg') |
| | | }, |
| | | |
| | | // 新增方法:判断画布是否为空白 |
| | | isCanvasBlank() { |
| | | return !this.hasDrawn |
| | | } |
| | | }, |
| | | beforeDestroy() { |
| | |
| | | position: absolute; |
| | | top: 338px; |
| | | left: 0; |
| | | width: 183px; |
| | | width: 178px; |
| | | height: 316px; |
| | | background: #FFFCE5; |
| | | opacity: 0.56; |
| | |
| | | component: () => import("../views/pedigree-chart"), |
| | | }, |
| | | { |
| | | path: "detail-pedigree", |
| | | name: "DetailPedigree", |
| | | meta: { |
| | | title: "母代菌种传代生产谱系图详情", |
| | | hide: true, |
| | | }, |
| | | component: () => import("../views/pedigree-chart/add"), |
| | | }, |
| | | { |
| | | path: "add-pedigree", |
| | | name: "AddPedigree", |
| | | meta: { |
| | |
| | | }, |
| | | component: () => import("../views/pedigree-chart/addProgenitor"), |
| | | }, |
| | | { |
| | | path: "detail-progenitor", |
| | | name: "DetailProgenitor", |
| | | meta: { |
| | | title: "祖代菌种传代生产谱系图详情", |
| | | hide: true, |
| | | }, |
| | | component: () => import("../views/pedigree-chart/addProgenitor"), |
| | | }, |
| | | // { |
| | | // path: "strain-flow-chart", |
| | | // name: "StrainFlowChart", |
| | |
| | | { |
| | | text: '菌种库', |
| | | icon: require('../../assets/login/img1.png'), |
| | | path: '/strain' |
| | | path: '/strain-library/strain-library-manage' |
| | | }, |
| | | { |
| | | text: '菌种报告库', |
| | | icon: require('../../assets/login/img4.png'), |
| | | path: '/deliveryAssessment' |
| | | path: '/strainReportLibrary/reportLibraryOne' |
| | | }, |
| | | { |
| | | text: '项目组管理', |
| | |
| | | { |
| | | text: '系统管理', |
| | | icon: require('../../assets/login/img6.png'), |
| | | path: '/system' |
| | | path: '/system/user' |
| | | } |
| | | ] |
| | | } |
| | |
| | | } |
| | | &.ant-fullcalendar-last-month-cell { |
| | | .ant-fullcalendar-value { |
| | | color: #ffffff !important; |
| | | // color: #ffffff !important; |
| | | } |
| | | } |
| | | |
| | |
| | | .ant-fullcalendar-date {} |
| | | |
| | | .ant-fullcalendar-value { |
| | | color: #ffffff !important; |
| | | // color: #ffffff !important; |
| | | |
| | | &:hover { |
| | | // background: #FFFFFF; |
| | |
| | | <template> |
| | | <div> |
| | | <el-form |
| | | :model="form" |
| | | :rules="rules" |
| | | ref="pedigreeForm" |
| | | label-position="top" |
| | | class="strain-form" |
| | | > |
| | | <el-form :model="form" :rules="rules" ref="pedigreeForm" label-position="top" class="strain-form"> |
| | | <div class="card"> |
| | | <div class="form-items-row"> |
| | | <el-form-item label="菌种源" required> |
| | | <div class="flex-row"> |
| | | <div class="input-wrapper"> |
| | | <el-form-item prop="strainSourceStart" style="margin-bottom: 0"> |
| | | <el-input |
| | | v-model="form.strainSourceStart" |
| | | placeholder="请输入" |
| | | class="fixed-width-input" |
| | | ></el-input> |
| | | <el-input v-model="form.strainSourceStart" placeholder="请输入" class="fixed-width-input"></el-input> |
| | | </el-form-item> |
| | | </div> |
| | | <span class="form-text">代—</span> |
| | | <div class="input-wrapper"> |
| | | <el-form-item prop="strainSourceEnd" style="margin-bottom: 0"> |
| | | <el-input |
| | | v-model="form.strainSourceEnd" |
| | | placeholder="请输入" |
| | | class="fixed-width-input" |
| | | ></el-input> |
| | | <el-input v-model="form.strainSourceEnd" placeholder="请输入" class="fixed-width-input"></el-input> |
| | | </el-form-item> |
| | | </div> |
| | | <span class="form-text">细胞库</span> |
| | | </div> |
| | | </el-form-item> |
| | | <el-form-item label="传代菌种编号" prop="strainCode" required> |
| | | <el-input |
| | | v-model="form.strainCode" |
| | | placeholder="请输入" |
| | | class="fixed-width-input" |
| | | ></el-input> |
| | | <el-input v-model="form.strainCode" placeholder="请输入" class="fixed-width-input"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="传代菌种名称" prop="strainName" required> |
| | | <el-input |
| | | v-model="form.strainName" |
| | | placeholder="请输入" |
| | | class="fixed-width-input" |
| | | ></el-input> |
| | | <el-input v-model="form.strainName" placeholder="请输入" class="fixed-width-input"></el-input> |
| | | </el-form-item> |
| | | </div> |
| | | </div> |
| | | <div class="card" v-if="roleType != 4" style="margin-top: 30px; display: block"> |
| | | <Table |
| | | :height="null" |
| | | :total="total" |
| | | :data="tableData" |
| | | :queryForm="queryForm" |
| | | @handleCurrentChange="handleCurrentChange" |
| | | @handleSizeChange="handleSizeChange" |
| | | > |
| | | <div class="title" style="padding: 25px 0">待确认入库菌种列表</div> |
| | | <Table :height="null" :total="total" :data="tableData" :queryForm="queryForm" |
| | | @handleCurrentChange="handleCurrentChange" @handleSizeChange="handleSizeChange"> |
| | | <el-table-column label="菌种实验员" prop="experimenter" /> |
| | | <el-table-column label="菌种编号" prop="strainCode" /> |
| | | <el-table-column label="菌种名称" prop="strainName" /> |
| | |
| | | <el-table-column label="菌种保存/废弃时间" prop="storageTime" /> |
| | | <el-table-column v-if="roleType == 3" label="操作"> |
| | | <template #default="{ row }"> |
| | | <el-button type="text" @click="handleConfirm(row)" |
| | | >确认入库</el-button |
| | | > |
| | | <el-button type="text" @click="handleConfirm(row)">确认入库</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </Table> |
| | |
| | | <div class="header"> |
| | | <div class="title">菌种传代生产谱系图</div> |
| | | <div class="option-btn"> |
| | | <el-button type="primary" class="el-icon-plus" @click="addNode"> |
| | | 新增</el-button |
| | | > |
| | | |
| | | <el-button type="primary" @click="setGenerationPlan" |
| | | >设置传代计划数</el-button |
| | | > |
| | | <el-button type="primary" v-if="$route.query.type != 1" class="el-icon-plus" @click="addNode"> |
| | | 新增</el-button> |
| | | |
| | | <el-button type="primary" v-if="$route.query.type != 1" @click="setGenerationPlan">设置传代计划数</el-button> |
| | | <el-button type="primary" @click="showDetail">详情</el-button> |
| | | <el-button type="primary" @click="handleEdit" v-if="roleType == 1">编辑</el-button> |
| | | <el-button type="primary" @click="handleDelete" v-if="roleType == 1">删除</el-button> |
| | | <el-button type="primary" @click="handleEdit" v-if="roleType == 1 && $route.query.type != 1">编辑</el-button> |
| | | <el-button type="primary" @click="handleDelete" v-if="roleType == 1 && $route.query.type != 1">删除</el-button> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="strain-flow-chart"> |
| | | <div id="mountNode"></div> |
| | | </div> |
| | | |
| | | <el-button type="primary" v-if="!$route.query.id" @click="handleSubmit" style="width: 150px" |
| | | >保存</el-button |
| | | > |
| | | |
| | | <el-button type="primary" v-if="!$route.query.id" @click="handleSubmit" style="width: 150px">保存</el-button> |
| | | </div> |
| | | <div class="end-btn"> |
| | | <!-- <el-button @click="handleDraft">存草稿</el-button> |
| | |
| | | <PlanForm ref="planForm" @addNodeSign="addNodeSign" /> |
| | | <AddSublevelForm ref="addSublevelForm" @addNodeSign="addNodeSign" /> |
| | | <AddSublevelPlan ref="addSublevelPlan" @addNodeSign="addNodeSign" /> |
| | | <ConfirmStorageDialog |
| | | name="接种操作人签字" |
| | | :visible.sync="confirmStorageDialogVisible" |
| | | @confirm="handleSignatureConfirm" |
| | | /> |
| | | <ConfirmStorageDialog name="接种操作人签字" :visible.sync="confirmStorageDialogVisible" |
| | | @confirm="handleSignatureConfirm" /> |
| | | <!-- 菌种工程师 --> |
| | | <ConfirmStorageDialog |
| | | name="菌种保藏人签字" |
| | | text="是否确认该项菌种信息入库" |
| | | :visible.sync="storageVisible" |
| | | @confirm="handleSignatureConfirm1" |
| | | /> |
| | | <ConfirmStorageDialog name="菌种保藏人签字" text="是否确认该项菌种信息入库" :visible.sync="storageVisible" |
| | | @confirm="handleSignatureConfirm1" /> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | } |
| | | const nodeModel = this.selectedNode; |
| | | console.log(nodeModel); |
| | | |
| | | |
| | | if (nodeModel.label === "母代") { |
| | | this.$refs.parentForm.openInitData({ |
| | | strainSourceStart: this.form.strainSourceStart, |
| | |
| | | this.dialogTitle = `${nodeModel.label}详情`; |
| | | this.$refs.addSublevelForm.openInitData({ |
| | | strainCode1: this.form.strainCode, |
| | | strainName1: this.form.strainName, |
| | | strainName1: this.form.strainName, |
| | | title: `编辑${nodeModel.label}`, |
| | | form: { ...nodeModel.data }, |
| | | formStatus: "edit", |
| | |
| | | this.getList(); |
| | | getDetail({ id: this.$route.query.id }).then((res) => { |
| | | console.log(JSON.stringify(res.pedigreeChartParentAllDetailDTO)); |
| | | |
| | | |
| | | const nodeMap = new Map(); |
| | | const calculateLevel = (node) => { |
| | | if (node.parentId === "0") return 0; |
| | |
| | | nodes.forEach(node => { |
| | | const processedNode = processNode(node); |
| | | this.graphData.nodes.push(processedNode); |
| | | |
| | | |
| | | // 根据parentId创建边,直接使用原始id |
| | | if (node.parentId !== "0") { |
| | | this.graphData.edges.push({ |
| | |
| | | }); |
| | | }, |
| | | addNodeSign(value, type) { |
| | | console.log('/////8415454545'); |
| | | this.nodeData = value; |
| | | this.nodeType = type; |
| | | this.$refs.addAncestor.closeDialog() |
| | | this.$refs.addSublevelForm.closeDialog() |
| | | this.confirmStorageDialogVisible = true; |
| | | }, |
| | | handleSubmit() { |
| | |
| | | const titleFill = isDiscarded |
| | | ? "rgba(245, 248, 250, 1)" |
| | | : cfg.selected |
| | | ? "l(0) 0:#0ACBCA 1:#049C9A" |
| | | : "l(0) 0:#0ACBCA 1:#049C9A"; |
| | | ? "l(0) 0:#0ACBCA 1:#049C9A" |
| | | : "l(0) 0:#0ACBCA 1:#049C9A"; |
| | | const contentFill = isDiscarded |
| | | ? "rgba(245, 248, 250, 1)" |
| | | : cfg.selected |
| | | ? "rgba(4,156,154,0.2)" |
| | | : "rgba(4,156,154,0.1)"; |
| | | ? "rgba(4,156,154,0.2)" |
| | | : "rgba(4,156,154,0.1)"; |
| | | const textFill = isDiscarded ? "rgba(144, 147, 153, 1)" : "#049C9A"; |
| | | const stroke = isDiscarded |
| | | ? "#DCDFE6" |
| | | : cfg.selected |
| | | ? "#049C9A" |
| | | : "transparent"; |
| | | ? "#049C9A" |
| | | : "transparent"; |
| | | |
| | | // 创建渐变 |
| | | const gradient = group.addShape("rect", { |
| | |
| | | x: 0, |
| | | y: -totalHeight / 2 + titleHeight / 2, |
| | | fill: isDiscarded ? "rgba(144, 147, 153, 1)" : "#fff", |
| | | fontSize: 12, |
| | | fontSize: 14, |
| | | textAlign: "center", |
| | | textBaseline: "middle", |
| | | fontWeight: "bold", |
| | |
| | | if (cfg.label === "传代计划数") { |
| | | content = `${cfg.planCount || 0}`; |
| | | } else if (cfg.number) { |
| | | content = |
| | | cfg.label === "母代" |
| | | ? `代传菌种编号:${cfg.number}` |
| | | : `接种菌种编号:${cfg.number}`; |
| | | // 获取类型名称 |
| | | let typeName = "传代菌种"; |
| | | if (cfg.data && cfg.data.strainType) { |
| | | const typeMap = { |
| | | "1": "原始祖代菌株SO", |
| | | "2": "分离菌落 CO", |
| | | "3": "祖代菌株 O", |
| | | }; |
| | | typeName = typeMap[cfg.data.strainType] || "传代菌种"; |
| | | } |
| | | content = `${typeName}编号:${cfg.number}`; |
| | | } |
| | | |
| | | if (content) { |
| | |
| | | x: 0, |
| | | y: -totalHeight / 2 + titleHeight + gap + contentHeight / 2, |
| | | fill: textFill, |
| | | fontSize: 10, |
| | | fontSize: 12, |
| | | textAlign: "center", |
| | | textBaseline: "middle", |
| | | cursor: "move", |
| | |
| | | parentId: nodeModel.id, |
| | | title: `新增${nextLevel}`, |
| | | strainName1: this.form.strainName, |
| | | strainCode1: this.form.strainCode, |
| | | strainCode1: this.form.strainCode, |
| | | form: { |
| | | isDiscarded: true, |
| | | }, |
| | |
| | | }, |
| | | handleAddPlan(value) { |
| | | if (value.formStatus == 'edit') { |
| | | |
| | | console.log(value,'params'); |
| | | |
| | | console.log(value, 'params'); |
| | | updateChild(value).then((res) => { |
| | | if (res.code === 200) { |
| | | this.$message.success("操作成功"); |
| | |
| | | this.dialogTitle = `${nodeModel.label}详情`; |
| | | this.$refs.addSublevelForm.openInitData({ |
| | | strainCode1: this.form.strainCode, |
| | | strainName1: this.form.strainName, |
| | | strainName1: this.form.strainName, |
| | | title: `${nodeModel.label}详情`, |
| | | form: { ...nodeModel.data }, |
| | | }); |
| | |
| | | }); |
| | | } else { |
| | | console.log(123); |
| | | |
| | | |
| | | this.$refs.planForm.openInitData({ |
| | | strainSourceStart: this.form.strainSourceStart, |
| | | strainSourceEnd: this.form.strainSourceEnd, |
| | |
| | | align-items: center; |
| | | } |
| | | |
| | | .title { |
| | | font-size: 18px; |
| | | } |
| | | |
| | | |
| | | .chart { |
| | | padding: 20px 38px; |
| | | background: rgba(255, 255, 255, 0.8); |
| | |
| | | </div> |
| | | </div> |
| | | <div class="card" style="margin-top: 30px; display: block" v-if="roleType != 4"> |
| | | <div class="title" style="padding: 25px 0">菌种传代生产谱系图</div> |
| | | <Table |
| | | :height="null" |
| | | :total="total" |
| | |
| | | addNodeSign(value, type) { |
| | | this.nodeData = value; |
| | | this.nodeType = type; |
| | | this.$refs.addAncestor.closeDialog() |
| | | this.$refs.addSublevelForm.closeDialog() |
| | | this.confirmStorageDialogVisible = true; |
| | | }, |
| | | handleSubmit() { |
| | |
| | | x: 0, |
| | | y: -totalHeight / 2 + titleHeight / 2, |
| | | fill: isDiscarded ? "rgba(144, 147, 153, 1)" : "#fff", |
| | | fontSize: 12, |
| | | fontSize: 14, |
| | | textAlign: "center", |
| | | textBaseline: "middle", |
| | | fontWeight: "bold", |
| | |
| | | if (cfg.label === "传代计划数") { |
| | | content = `${cfg.planCount || 0}`; |
| | | } else if (cfg.number) { |
| | | content = |
| | | cfg.label === "母代" |
| | | ? `代传菌种编号:${cfg.number}` |
| | | : `接种菌种编号:${cfg.number}`; |
| | | // 获取类型名称 |
| | | let typeName = "传代菌种"; |
| | | if (cfg.data && cfg.data.strainType) { |
| | | const typeMap = { |
| | | "1": "原始祖代菌株SO", |
| | | "2": "分离菌落 CO", |
| | | "3": "祖代菌株 O", |
| | | }; |
| | | typeName = typeMap[cfg.data.strainType] || "传代菌种"; |
| | | } |
| | | content = `${typeName}编号:${cfg.number}`; |
| | | } |
| | | |
| | | if (content) { |
| | |
| | | x: 0, |
| | | y: -totalHeight / 2 + titleHeight + gap + contentHeight / 2, |
| | | fill: textFill, |
| | | fontSize: 10, |
| | | fontSize: 11, |
| | | textAlign: "center", |
| | | textBaseline: "middle", |
| | | cursor: "move", |
| | |
| | | } |
| | | } |
| | | } |
| | | .title { |
| | | font-size: 18px; |
| | | } |
| | | |
| | | .end-btn { |
| | | margin-top: 20px; |
| | |
| | | this.dialogVisible = true; |
| | | }, |
| | | closeDialog() { |
| | | console.log(41515151541561541564156); |
| | | |
| | | this.dialogVisible = false; |
| | | // 重置表单数据 |
| | | this.form = { |
| | |
| | | } |
| | | |
| | | div { |
| | | width: 183px; |
| | | width: 178px; |
| | | height: 32px; |
| | | text-align: center; |
| | | flex-shrink: 0; |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import moment from 'moment' |
| | | export default { |
| | | name: 'AddSublevelPlan', |
| | | data() { |
| | | return { |
| | | planDialogVisible: false, |
| | |
| | | strainName1: '', |
| | | generationCount: 1, |
| | | isDiscarded: true, |
| | | confirmTime: moment().format('YYYY-MM-DD HH:mm:ss') |
| | | , |
| | | }, |
| | | planRules: { |
| | | strainCode: [ |
| | |
| | | openInitData(value) { |
| | | this.planForm = { |
| | | ...this.planForm, |
| | | ...value |
| | | ...value, |
| | | confirmTime: moment().format('YYYY-MM-DD HH:mm:ss') |
| | | } |
| | | this.openDialog() |
| | | }, |
| | |
| | | this.planDialogVisible = true |
| | | }, |
| | | closeDialog() { |
| | | console.log('qqweeee/////////////'); |
| | | |
| | | this.planDialogVisible = false |
| | | // 重置表单数据 |
| | | this.planForm = { |
| | |
| | | } |
| | | |
| | | div { |
| | | width: 183px; |
| | | width: 178px; |
| | | height: 32px; |
| | | text-align: center; |
| | | flex-shrink: 0; |
| | |
| | | } |
| | | |
| | | div { |
| | | width: 183px; |
| | | width: 178px; |
| | | height: 32px; |
| | | text-align: center; |
| | | flex-shrink: 0; |
| | |
| | | <el-col :span="10"> |
| | | <el-form-item label="传代计划数" prop="generationCount"> |
| | | <el-input-number :disabled="planForm.formStatus === 'detail'" v-model="planForm.generationCount" |
| | | :controls="false" :min="1" placeholder="请输入" /> |
| | | :controls="false" :min="0" placeholder="请输入" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | |
| | | } |
| | | |
| | | div { |
| | | width: 183px; |
| | | width: 178px; |
| | | height: 32px; |
| | | text-align: center; |
| | | flex-shrink: 0; |
| | |
| | | </div> |
| | | </template> |
| | | <template #table> |
| | | <el-table-column prop="strainCode" label="菌种编号"></el-table-column> |
| | | <el-table-column prop="strainName" label="菌种名称"></el-table-column> |
| | | <el-table-column prop="generationType" label="起传类型"> |
| | | <template slot-scope="scope"> |
| | | {{ scope.row.generationType === 1 ? '母代' : '祖代' }} |
| | |
| | | {{ scope.row.strainSourceStart }}代—{{ scope.row.strainSourceEnd }}细胞库 |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="strainCode" label="菌种编号"></el-table-column> |
| | | <el-table-column prop="strainName" label="菌种名称"></el-table-column> |
| | | <el-table-column prop="createTime" label="创建时间"></el-table-column> |
| | | <el-table-column prop="createBy" label="创建人"></el-table-column> |
| | | <el-table-column label="操作" width="250"> |
| | |
| | | handleDetail(row) { |
| | | if (row.generationType == 1) { |
| | | //母代详情 |
| | | this.$router.push('/strain/add-pedigree?id=' + row.id) |
| | | this.$router.push('/strain/detail-pedigree?id=' + row.id + '&type=1') |
| | | } else { |
| | | //祖代详情 |
| | | this.$router.push('/strain/add-progenitor?id=' + row.id) |
| | | this.$router.push('/strain/detail-progenitor?id=' + row.id + '&type=1') |
| | | } |
| | | |
| | | }, |
| | |
| | | </el-dialog> |
| | | </template> |
| | | <script> |
| | | import moment from 'moment' |
| | | export default { |
| | | name: "AddAncestor", |
| | | data() { |
| | | return { |
| | | planDialogVisible: false, |
| | |
| | | strainType: "1", // 1原始祖代菌株 2分离菌落 3祖代菌株 |
| | | status: 1, // 1保存 2废弃 |
| | | type: 1, // 固定为1 |
| | | confirmTime: "", |
| | | confirmTime: moment().format('YYYY-MM-DD HH:mm:ss'), |
| | | remark: "", |
| | | formStatus: "add", |
| | | }, |
| | |
| | | }, |
| | | methods: { |
| | | openInitData(value) { |
| | | console.log('45646545645',value) |
| | | // 赋值当前时间 |
| | | // const now = new Date(); |
| | | // const pad = (n) => n.toString().padStart(2, "0"); |
| | |
| | | // now.getMinutes() |
| | | // )}:${pad(now.getSeconds())}`; |
| | | this.planForm = value; |
| | | if(value.confirmTime){ |
| | | this.planForm.confirmTime = moment(value.confirmTime).format('YYYY-MM-DD HH:mm:ss') |
| | | }else{ |
| | | this.planForm.confirmTime = moment().format('YYYY-MM-DD HH:mm:ss') |
| | | } |
| | | this.openDialog(); |
| | | }, |
| | | openDialog() { |
| | |
| | | } |
| | | |
| | | div { |
| | | width: 183px; |
| | | width: 178px; |
| | | height: 32px; |
| | | text-align: center; |
| | | flex-shrink: 0; |
| | |
| | | color: #049c9a; |
| | | background: #ebfefd; |
| | | border-radius: 10px; |
| | | width: 183px; |
| | | width: 178px; |
| | | line-height: 40px; |
| | | border-radius: 10px; |
| | | text-align: center; |
| | |
| | | </el-dialog> |
| | | </template> |
| | | <script> |
| | | import moment from 'moment' |
| | | export default { |
| | | data() { |
| | | return { |
| | |
| | | ? value.form.vaccinateTime |
| | | : formatTime, |
| | | type: 1, |
| | | confirmTime:value.confirmTime?moment(value.confirmTime).format('YYYY-MM-DD HH:mm:ss'):moment().format('YYYY-MM-DD HH:mm:ss') |
| | | }; |
| | | |
| | | this.dialogVisible = true; |
| | | }, |
| | | closeDialog() { |
| | | console.log('78978998789798'); |
| | | this.dialogVisible = false; |
| | | }, |
| | | handleSubmit() { |
| | |
| | | } |
| | | |
| | | div { |
| | | width: 183px; |
| | | width: 178px; |
| | | height: 32px; |
| | | text-align: center; |
| | | flex-shrink: 0; |
| | |
| | | </el-dialog> |
| | | </template> |
| | | <script> |
| | | import moment from 'moment' |
| | | export default { |
| | | name: 'PlanForm', |
| | | props: { |
| | | formStatus: { |
| | | type: String, |
| | | default: 'add' |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | planDialogVisible: false, |
| | |
| | | methods: { |
| | | openInitData(value) { |
| | | this.planForm = value |
| | | if(value.confirmTime){ |
| | | this.planForm.confirmTime = moment(value.confirmTime).format('YYYY-MM-DD HH:mm:ss') |
| | | }else{ |
| | | this.planForm.confirmTime = moment().format('YYYY-MM-DD HH:mm:ss') |
| | | } |
| | | this.openDialog() |
| | | }, |
| | | openDialog() { |
| | |
| | | color: #049C9A; |
| | | background: #EBFEFD; |
| | | border-radius: 10px; |
| | | width: 183px; |
| | | width: 178px; |
| | | line-height: 40px; |
| | | border-radius: 10px; |
| | | text-align: center; |
| | |
| | | </el-table-column> |
| | | <el-table-column prop="images" label="拍照上传" width="180"> |
| | | <template #default="{ row }"> |
| | | <el-upload :file-list="row.images" :disabled="roleType!=4" list-type="picture-card" :on-preview="file => handlePreview(row, file)" |
| | | <el-upload :file-list="row.images" :disabled="roleType!=4 || row.uploading" list-type="picture-card" |
| | | :on-preview="file => handlePreview(row, file)" |
| | | :on-remove="(file, fileList) => handleRemove(row, file, fileList)" |
| | | :on-success="(res, file, fileList) => handleUpload(row, file, fileList)" :before-upload="beforeUpload" |
| | | :on-success="(res, file, fileList) => handleUpload(row, file, fileList)" |
| | | :before-upload="file => beforeUpload(file, row)" |
| | | action="#" :limit="5" class="mini-upload"> |
| | | <i class="el-icon-plus"></i> |
| | | <template v-if="row.uploading"> |
| | | <i class="el-icon-loading"></i> |
| | | </template> |
| | | <template v-else> |
| | | <i class="el-icon-plus"></i> |
| | | </template> |
| | | </el-upload> |
| | | </template> |
| | | </el-table-column> |
| | |
| | | </el-table-column> |
| | | </el-table> |
| | | <div style="text-align: center;" v-if="roleType==4"> |
| | | <el-button type="primary" @click="handleOk">保存</el-button> |
| | | <el-button type="primary" @click="handleOk" :disabled="hasUploading">保存</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | </template> |
| | |
| | | index: i + 1, |
| | | desc: '', |
| | | time: '', |
| | | images: [] |
| | | images: [], |
| | | uploading: false |
| | | })) |
| | | } |
| | | }, |
| | |
| | | index: this.tableData.length + 1, |
| | | desc: '', |
| | | time: '', |
| | | images: [] |
| | | images: [], |
| | | uploading: false |
| | | }) |
| | | } |
| | | } catch (e) { |
| | |
| | | index: i + 1, |
| | | desc: '', |
| | | time: '', |
| | | images: [] |
| | | images: [], |
| | | uploading: false |
| | | })) |
| | | } |
| | | } else { |
| | |
| | | index: i + 1, |
| | | desc: '', |
| | | time: '', |
| | | images: [] |
| | | images: [], |
| | | uploading: false |
| | | })) |
| | | } |
| | | } else { |
| | |
| | | index: i + 1, |
| | | desc: '', |
| | | time: '', |
| | | images: [] |
| | | images: [], |
| | | uploading: false |
| | | })) |
| | | this.handleClose() |
| | | }) |
| | |
| | | handleClose() { |
| | | this.$emit('update:visible', false) |
| | | }, |
| | | beforeUpload(file) { |
| | | // 这里只做本地预览 |
| | | beforeUpload(file, row) { |
| | | row.uploading = true |
| | | return new Promise(resolve => { |
| | | const reader = new FileReader() |
| | | reader.onload = e => { |
| | |
| | | }) |
| | | }, |
| | | handleUpload(row, file, fileList) { |
| | | // 这里只做本地预览 |
| | | row.images = fileList.map(f => ({ ...f, url: f.url || URL.createObjectURL(f.raw) })) |
| | | row.uploading = false |
| | | }, |
| | | handleRemove(row, file, fileList) { |
| | | row.images = fileList |
| | | row.uploading = false |
| | | }, |
| | | handlePreview(row, file) { |
| | | this.previewImg = file.url |
| | |
| | | this.$forceUpdate() |
| | | } |
| | | } |
| | | }, |
| | | computed: { |
| | | hasUploading() { |
| | | return this.tableData.some(row => row.uploading) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | |
| | | 新增培养皿分离记录</el-button> |
| | | </div> |
| | | </div> |
| | | <Table :data="form.separationOfCultureDishesList" :height="null" :queryForm="queryForm" :total="0"> |
| | | <Table :data="form.separationOfCultureDishesList" :height="300" :queryForm="queryForm" :total="0"> |
| | | <el-table-column width="100" type="index" label="培养皿序号" /> |
| | | <el-table-column prop="separateBacterialColoniesCode" label="分离菌落编号" /> |
| | | <el-table-column prop="handleSignature" label="接种操作人签字"> |
| | |
| | | 新增观察记录</el-button> |
| | | </div> |
| | | </div> |
| | | <Table :data="form.observationOfPetriDishes" :height="null" :queryForm="queryForm" :total="0"> |
| | | <Table :data="form.observationOfPetriDishes" :height="300" :queryForm="queryForm" :total="0"> |
| | | <el-table-column prop="separateColonyCode" label="分离菌落编号" /> |
| | | <el-table-column prop="strength" label="形状强壮度排名" /> |
| | | <el-table-column prop="address" label="操作"> |
| | |
| | | 新增斜面记录</el-button> |
| | | </div> |
| | | </div> |
| | | <el-table :data="form.vaccinationSlopes" border style="width: 100%; margin-bottom: 16px;" |
| | | <Table :data="form.vaccinationSlopes" border style="width: 100%; margin-bottom: 16px;" :height="300" |
| | | :span-method="inoculationRowSpan"> |
| | | <el-table-column prop="separateColonyCode" label="分离菌落编号" /> |
| | | <el-table-column prop="vaccinationSlopeCode" label="接种斜面编号" /> |
| | |
| | | v-if="!scope.row.preserveSignature && [4].includes(roleType)">删除</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </Table> |
| | | <div class="header-title" style="margin-top: 20px;"> |
| | | <div class="header-title-left"> |
| | | <img src="@/assets/public/headercard.png" /> |
| | |
| | | 新增菌种保藏记录</el-button> |
| | | </div> |
| | | </div> |
| | | <Table :data="form.culturePreservations" :height="null" :queryForm="queryForm" :total="0"> |
| | | <Table :data="form.culturePreservations" :height="300" :queryForm="queryForm" :total="0" > |
| | | <el-table-column prop="forPreserveCode" label="用于保藏的菌种编号" /> |
| | | <el-table-column prop="verificationConclusion" label="实验验证结论" /> |
| | | <el-table-column prop="preserveMethod" label="保藏方法" /> |
| | |
| | | @confirm="handleConfirmPreserveSubmit" /> |
| | | <div class="end-btn" style="margin-top: 20px;" |
| | | v-if="($route.query.isDetail && [3].includes(roleType)) || !$route.query.isDetail && [3, 4].includes(roleType)"> |
| | | <el-button type="primary" @click="handleSubmit(1)">提交</el-button> |
| | | <el-button type="primary" v-if="[1,4].includes(roleType)" @click="handleSubmit(1)">提交</el-button> |
| | | <el-button v-if="!$route.query.isDetail" type="primary" @click="handleSubmit(3)">同步给保藏人</el-button> |
| | | <el-button v-if="!$route.query.isDetail" type="default" @click="handleSubmit(2)">存草稿</el-button> |
| | | </div> |
| | |
| | | padding: 4px; |
| | | |
| | | div { |
| | | width: 183px; |
| | | width: 178px; |
| | | height: 32px; |
| | | border-radius: 10px; |
| | | text-align: center; |
| | |
| | | :visible.sync="visible" |
| | | title="新增接种斜面记录" |
| | | width="700px" |
| | | :close-on-click-modal="false" |
| | | @close="handleClose" |
| | | > |
| | | <el-form |
| | |
| | | separateColonyCode: "", |
| | | vaccinationSlopeCode: "", |
| | | handleType: "保存", |
| | | preserveTime: '', |
| | | preserveTime: this.getNowTime(), |
| | | handleTime: this.getNowTime(), |
| | | handleSignature: "", |
| | | handleName: JSON.parse(sessionStorage.getItem('userInfo'))?.nickName || '', |
| | |
| | | :visible.sync="visible" |
| | | title="新增菌种保藏记录" |
| | | width="900px" |
| | | :close-on-click-modal="false" |
| | | @close="handleClose" |
| | | > |
| | | <el-form |
| | |
| | | } |
| | | } |
| | | }, |
| | | activated() { |
| | | mounted() { |
| | | if (this.$route.query.id) { |
| | | getDetail({ id: this.$route.query.id }).then(res => { |
| | | this.form = res |
| | |
| | | <el-table-column prop="strainName" label="菌种名称" /> |
| | | <el-table-column prop="strainSource" label="菌种来源" /> |
| | | <el-table-column prop="appraisalMethod" label="鉴定方法" /> |
| | | <el-table-column prop="features" label="特征描述" /> |
| | | <el-table-column prop="features" label="特征描述" > |
| | | <template #default="{ row }"> |
| | | <el-tooltip :content="row.features" placement="top" effect="dark"> |
| | | <div class="ellipsis-text">{{ row.features }}</div> |
| | | </el-tooltip> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="saveMethod" label="菌种保存方法" /> |
| | | <el-table-column prop="saveLocation" label="保藏位置" /> |
| | | <el-table-column prop="stock" label="库存余量" /> |
| | |
| | | </el-table-column> |
| | | </template> |
| | | </TableCustom> |
| | | <StrainDetail :visible.sync="detailVisible" :detail="currentDetail" /> |
| | | <StrainDetail title="主细胞库" :visible.sync="detailVisible" :detail="currentDetail" /> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | }, |
| | | total: 800, |
| | | tableData: [], |
| | | roleType: "", |
| | | roleType: JSON.parse(sessionStorage.getItem("userInfo")).roleType, |
| | | }; |
| | | }, |
| | | activated() { |
| | | mounted() { |
| | | this.searchData(); |
| | | // 角色类型 1=超级管理员 2=审批人 3=工程师 4=实验员 |
| | | this.roleType = JSON.parse(sessionStorage.getItem("userInfo")).roleType; |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | .ellipsis-text { |
| | | display: -webkit-box; |
| | | -webkit-line-clamp: 3; |
| | | -webkit-box-orient: vertical; |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | word-break: break-all; |
| | | } |
| | | </style> |
| | |
| | | } |
| | | } |
| | | }, |
| | | activated() { |
| | | mounted() { |
| | | if (this.$route.query.id) { |
| | | getDetail({ id: this.$route.query.id }).then(res => { |
| | | this.form = res |
| | |
| | | <el-table-column prop="strainName" label="菌种名称" /> |
| | | <el-table-column prop="strainSource" label="菌种来源" /> |
| | | <el-table-column prop="appraisalMethod" label="鉴定方法" /> |
| | | <el-table-column prop="features" label="特征描述" /> |
| | | <el-table-column prop="features" label="特征描述" > |
| | | <template #default="{ row }"> |
| | | <el-tooltip :content="row.features" placement="top" effect="dark"> |
| | | <div class="ellipsis-text">{{ row.features }}</div> |
| | | </el-tooltip> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="saveMethod" label="菌种保存方法" /> |
| | | <el-table-column prop="saveLocation" label="保藏位置" /> |
| | | <el-table-column prop="stock" label="库存余量" /> |
| | |
| | | </el-table-column> |
| | | </template> |
| | | </TableCustom> |
| | | <StrainDetail :visible.sync="detailVisible" :detail="currentDetail" /> |
| | | <StrainDetail title="生产细胞库" :visible.sync="detailVisible" :detail="currentDetail" /> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | roleType: "", |
| | | }; |
| | | }, |
| | | activated() { |
| | | mounted() { |
| | | this.searchData(); |
| | | // 角色类型 1=超级管理员 2=审批人 3=工程师 4=实验员 |
| | | this.roleType = JSON.parse(sessionStorage.getItem("userInfo")).roleType; |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | .ellipsis-text { |
| | | display: -webkit-box; |
| | | -webkit-line-clamp: 3; |
| | | -webkit-box-orient: vertical; |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | word-break: break-all; |
| | | } |
| | | </style> |
| | |
| | | <div :class="[ |
| | | 'right-block', |
| | | item.confirmTime && item.confirmTime !== '--' ? |
| | | (item.type === '2' ? 'confirmed-in' : 'confirmed-out') : |
| | | (item.type == '2' ? 'confirmed-in' : 'confirmed-out') : |
| | | 'unconfirmed' |
| | | ]"> |
| | | <div class="info-title">保藏人:{{ item.preserveName || '--' }}</div> |
| | |
| | | type: Array, |
| | | default: () => [] |
| | | } |
| | | }, |
| | | mounted() { |
| | | console.log('123123123',this.list); |
| | | |
| | | } |
| | | } |
| | | |
| | | </script> |
| | | |
| | | <style lang="less" scoped> |
| | |
| | | <template> |
| | | <div> |
| | | <el-dialog |
| | | title="原始细胞库详情" |
| | | :title="`${title}详情`" |
| | | :visible.sync="visible" |
| | | width="70%" |
| | | :close-on-click-modal="false" |
| | |
| | | </div> |
| | | |
| | | <div class="record-table"> |
| | | <div class="table-title">原始细胞库出/入库记录</div> |
| | | <div class="table-title">{{title}}出/入库记录</div> |
| | | <el-table :data="detail.records" style="width: 100%"> |
| | | <el-table-column label="出库/入库"> |
| | | <template #default="{ row }"> |
| | |
| | | type: Object, |
| | | default: () => ({}), |
| | | }, |
| | | title: { |
| | | type: String, |
| | | default: "原始细胞库", |
| | | }, |
| | | }, |
| | | data() { |
| | | return { |
| | |
| | | <el-table-column prop="strainName" label="菌种名称" /> |
| | | <el-table-column prop="strainSource" label="菌种来源" /> |
| | | <el-table-column prop="appraisalMethod" label="鉴定方法" /> |
| | | <el-table-column prop="features" label="特征描述" /> |
| | | <el-table-column prop="features" label="特征描述" > |
| | | <template #default="{ row }"> |
| | | <el-tooltip :content="row.features" placement="top" effect="dark"> |
| | | <div class="ellipsis-text">{{ row.features }}</div> |
| | | </el-tooltip> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="saveMethod" label="菌种保存方法" /> |
| | | <el-table-column prop="saveLocation" label="保藏位置" /> |
| | | <el-table-column prop="stock" label="库存余量" /> |
| | |
| | | </el-table-column> |
| | | <el-table-column label="操作" width="200"> |
| | | <template #default="{ row }"> |
| | | <el-button type="text" @click="handleDetail(row)">详情</el-button> |
| | | <el-button v-if="row.status == 2 || row.status == 4" type="text" @click="handleEdit(row)">编辑</el-button> |
| | | <el-button type="text" style="margin-right: 10rpx;" @click="handleDetail(row)">详情</el-button> |
| | | <el-button style="margin-right: 10rpx;" v-if="row.status == 2 || row.status == 4" type="text" @click="handleEdit(row)">编辑</el-button> |
| | | <el-button |
| | | v-if="currentType === 'list'" |
| | | type="text" |
| | | style="margin-right: 10rpx;" |
| | | @click="handleRecord(row)" |
| | | >出入库记录</el-button |
| | | > |
| | |
| | | }, |
| | | getStatusType(status) { |
| | | const types = { |
| | | 1: "warning", |
| | | 2: "warning", |
| | | 3: "success", |
| | | 4: "success", |
| | | 1: "info", |
| | | 2: "success", |
| | | 3: "info", |
| | | 4: "warning", |
| | | }; |
| | | return types[status] || "info"; |
| | | }, |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | .ellipsis-text { |
| | | display: -webkit-box; |
| | | -webkit-line-clamp: 3; |
| | | -webkit-box-orient: vertical; |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | word-break: break-all; |
| | | } |
| | | </style> |
| | |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="boundTime" label="操作时间" /> |
| | | <el-table-column prop="handleSignature" label="操作人签字"> |
| | | <el-table-column prop="signature" label="操作人签字"> |
| | | <template #default="{ row }"> |
| | | <el-image |
| | | v-if="row.handleSignature" |
| | | v-if="row.signature" |
| | | style="width: 100px; height: 100px" |
| | | :src="row.handleSignature" |
| | | :preview-src-list="[row.handleSignature]" |
| | | :src="row.signature" |
| | | :preview-src-list="[row.signature]" |
| | | > |
| | | </el-image> |
| | | </template> |
| | |
| | | background: #fafafc; |
| | | border-radius: 8px 8px 0px 0px; |
| | | border: 1px solid #dcdfe6; |
| | | font-weight: 400; |
| | | font-weight: 600; |
| | | font-size: 18px; |
| | | color: #606266; |
| | | margin-left: 16px; |
| | |
| | | <template> |
| | | <el-dialog :visible.sync="visible" width="80%" @open="handleOpen" @close="handleClose"> |
| | | <el-dialog :close-on-click-modal="false" :visible.sync="visible" width="80%" @open="handleOpen" @close="handleClose"> |
| | | <el-card class="top-card"> |
| | | <el-row :gutter="24" class="top-info-row"> |
| | | <el-col :span="6" class="info-col"> |
| | |
| | | <template> |
| | | <el-dialog :visible.sync="visible" width="800px" @close="handleClose"> |
| | | <el-dialog :close-on-click-modal="false" :visible.sync="visible" width="800px" @close="handleClose"> |
| | | <el-form label-width="120px" label-position="top"> |
| | | <el-form-item label="菌种培养工艺条件"> |
| | | <el-input v-model="form.conditions" :disabled="isFixed || value.isDetail" placeholder="请输入" /> |
| | |
| | | </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 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> |
| | |
| | | :visible.sync="visible" |
| | | title="原始细胞库资料详情" |
| | | width="650px" |
| | | :close-on-click-modal="false" |
| | | @close="handleClose" |
| | | > |
| | | <el-form label-width="120px" label-position="top" class="detail-form"> |
| | |
| | | <template> |
| | | <el-dialog :visible.sync="visible" width="80%" @open="handleOpen" @close="handleClose"> |
| | | <el-dialog :close-on-click-modal="false" :visible.sync="visible" width="80%" @open="handleOpen" @close="handleClose"> |
| | | <el-card class="top-card"> |
| | | <el-row :gutter="24" class="top-info-row"> |
| | | <el-col :span="6" class="info-col"> |
| | |
| | | </el-col> |
| | | <el-col :span="6" class="info-col"> |
| | | <div class="info-item"> |
| | | <span class="label">签字时间:</span>{{ detail.preserveTime }} |
| | | <span class="label">签字时间:</span>{{ detail.handleTime }} |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | |
| | | this.detail = { |
| | | ...res, |
| | | handleSignature: res.handleSignature || '', // 处理签名为空的情况 |
| | | purpose: res.purpose.split(',') || [] // 处理 purpose 为空的情况 |
| | | purpose:res.purpose && res.purpose.split(',') || [] // 处理 purpose 为空的情况 |
| | | } |
| | | this.tableData = res.list || [] |
| | | }) |
| | |
| | | <template> |
| | | <el-dialog :visible.sync="visible" width="800px" @close="handleClose"> |
| | | <el-dialog :close-on-click-modal="false" :visible.sync="visible" width="800px" @close="handleClose"> |
| | | <el-form label-width="120px" label-position="top"> |
| | | <el-form-item label="菌种培养工艺条件"> |
| | | <el-input v-model="form.conditions" :disabled="isFixed || value.isDetail" placeholder="请输入" /> |
| | |
| | | </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 type="text" v-if="row.status == 1 && roleType == 3&¤tType != 'draft'" |
| | | @click="$router.push('/strain/validation/confirm-detail?id=' + row.id)">确认</el-button> |
| | | <el-button type="text" v-if="roleType == 4" @click="handleDetail(row)">详情</el-button> |
| | | <el-button type="text" v-if="roleType != 4" @click="handleDetail2(row)">详情</el-button> |
| | |
| | | import EditConditionDialog from "./EditConditionDialog.vue"; |
| | | |
| | | import { getList, delTwo } from "./service"; |
| | | import moment from "moment"; |
| | | export default { |
| | | name: "PrimitiveCell", |
| | | components: { |
| | |
| | | }, |
| | | methods: { |
| | | handleDetail(row) { |
| | | row.experimentTime = moment(row.experimentTime).format('YYYY-MM-DD') |
| | | this.currentDetail = row; |
| | | this.detailVisible = true; |
| | | }, |
| | |
| | | :visible.sync="visible" |
| | | title="原始细胞库资料详情" |
| | | width="650px" |
| | | :close-on-click-modal="false" |
| | | @close="handleClose" |
| | | > |
| | | <el-form label-width="120px" label-position="top" class="detail-form"> |
| | |
| | | if (this.$route.query.id) { |
| | | getDetail(this.$route.query.id).then(res => { |
| | | const data = res.data || res; |
| | | console.log('qweqweqweq',data); |
| | | |
| | | this.form = { |
| | | ...this.form, |
| | | ...data, |
| | |
| | | return item |
| | | }) |
| | | |
| | | this.tableData = data.projectTeam ? |
| | | this.selectedMember = [{ |
| | | nickName:data.experimentName, |
| | | userId:data.experimentId |
| | | }] |
| | | |
| | | this.projectData = data.projectTeam ? |
| | | [{ ...data.projectTeam, staffName: data.projectTeam.staff || '' }] : |
| | | []; |
| | | |
| | | console.log('qwe45645664',this.tableData); |
| | | |
| | | |
| | | |
| | | }).catch(err => { |
| | |
| | | return item.selectedScore |
| | | }) |
| | | |
| | | try { |
| | | const params = { |
| | | isDraft: 1, |
| | | projectId: this.projectData[0].id, |
| | |
| | | this.$router.push('/strainReportLibrary/reportLibraryOne'); |
| | | } |
| | | }) |
| | | } catch (e) { |
| | | this.$message.error('保存失败'); |
| | | } |
| | | }); |
| | | }, getProjectData(data) { |
| | | this.projectData = [data]; // 将选中的项目组数据存储到数组中 |
| | |
| | | <template> |
| | | <el-dialog :title="dialogTitle" :visible.sync="visible" width="80%" @open="open" po :close-on-click-modal="false" |
| | | <el-dialog :title="dialogTitle" :visible.sync="visible" width="80%" @open="open" po :close-on-click-modal="false" |
| | | @close="handleClose"> |
| | | <div class="approval-dialog" :style="{ height: obj?.isDetail ? '50vh' : '40vh' }"> |
| | | <!-- 左侧审批内容 --> |
| | |
| | | return item |
| | | }) |
| | | |
| | | this.tableData = data.projectTeam ? |
| | | this.projectData = data.projectTeam ? |
| | | [{ ...data.projectTeam, staffName: data.projectTeam.staff || '' }] : |
| | | []; |
| | | |
| | |
| | | return item |
| | | }) |
| | | |
| | | this.tableData = data.projectTeam ? |
| | | this.projectData = data.projectTeam ? |
| | | [{ ...data.projectTeam, staffName: data.projectTeam.staff || '' }] : |
| | | []; |
| | | |
| | |
| | | return item |
| | | }) |
| | | |
| | | this.tableData = data.projectTeam ? |
| | | this.projectData = data.projectTeam ? |
| | | [{ ...data.projectTeam, staffName: data.projectTeam.staff || '' }] : |
| | | []; |
| | | |
| | |
| | | <template> |
| | | <div> |
| | | <el-dialog :visible.sync="dialogVisible" @close="$emit('close')" :title="row.userId ? '编辑人员' : '添加人员'" width="30%"> |
| | | <el-dialog :close-on-click-modal="false" :visible.sync="dialogVisible" @close="$emit('close')" :title="row.userId ? '编辑人员' : '添加人员'" width="30%"> |
| | | <el-form ref="form" :model="form" :rules="rules" label-width="80px"> |
| | | <el-form-item label="姓名" prop="nickName"> |
| | | <el-input v-model="form.nickName" placeholder="请输入" style="width: 50%"></el-input> |
| | |
| | | <template> |
| | | <div> |
| | | <el-dialog :visible.sync="dialogVisible" @close="$emit('close')" title="禁用人员" width="30%"> |
| | | <el-dialog :close-on-click-modal="false" :visible.sync="dialogVisible" @close="$emit('close')" title="禁用人员" width="30%"> |
| | | <el-form ref="form" :model="form" label-width="80px"> |
| | | <el-form-item label="姓名" prop="nickName"> |
| | | {{ form.nickName }} |
| | |
| | | <template> |
| | | <div> |
| | | <el-dialog :visible.sync="dialogVisible" :z-index="1000" @close="$emit('close')" title="账号继承" :show-close="false"> |
| | | <el-dialog :close-on-click-modal="false" :visible.sync="dialogVisible" :z-index="1000" @close="$emit('close')" title="账号继承" :show-close="false"> |
| | | <div class="inherit-title">当前账号</div> |
| | | <div class="inherit-content"> |
| | | <div>姓名:{{row.nickName}}</div> |
| | |
| | | <el-button type="primary" @click="submit">保存</el-button> |
| | | </div> |
| | | </el-dialog> |
| | | <SelectMember ref="selectMember" /> |
| | | <SelectMember ref="selectMember" @submit="selectUser" /> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | selectMember() { |
| | | this.$refs.selectMember.open() |
| | | }, |
| | | selectUser(e){ |
| | | this.$refs.selectMember.close() |
| | | this.$emit('confirm',{ |
| | | userId:e[0].userId, |
| | | currentUserId:this.row.userId |
| | | }) |
| | | }, |
| | | submit() { |
| | | } |
| | | }, |
| | |
| | | <template> |
| | | <div> |
| | | <el-dialog :visible.sync="dialogVisible" @close="$emit('close')" title="重置密码" width="30%"> |
| | | <el-dialog :close-on-click-modal="false" :visible.sync="dialogVisible" @close="$emit('close')" title="重置密码" width="30%"> |
| | | <el-form ref="form" :model="form" :rules="rules" label-width="80px"> |
| | | <el-form-item label="姓名" prop="nickName"> |
| | | <el-input :disabled="true" v-model="form.nickName" placeholder="请输入" style="width: 95%;"></el-input> |
| | |
| | | <template> |
| | | <div> |
| | | <el-dialog :visible.sync="dialogVisible" @close="$emit('close')" title="禁用信息" width="30%"> |
| | | <el-dialog :close-on-click-modal="false" :visible.sync="dialogVisible" @close="$emit('close')" title="禁用信息" width="30%"> |
| | | <el-form ref="form" label-width="80px"> |
| | | <el-form-item label="禁用原因" prop="disableRemark"> |
| | | {{ form.disableRemark }} |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import { getList, add, edit, delDept, roleList, updatePwd, changeStatus, typeList } from './service' |
| | | import { getList, add, edit, delDept, roleList, updatePwd, changeStatus, accountInherit } from './service' |
| | | import AddEdit from './components/add-edit.vue' |
| | | import Disb from './components/disb.vue' |
| | | import ResetPassword from './components/reset-password.vue' |
| | |
| | | this.disbDialogVisible = true |
| | | } |
| | | }, |
| | | inheritConfirm() { |
| | | inheritConfirm(e) { |
| | | accountInherit({...e}).then(res=>{ |
| | | this.inheritDialogVisible = false |
| | | this.inheritRow = {} |
| | | this.$message.success('账号继承成功') |
| | | this.getListData() |
| | | }) |
| | | }, |
| | | del(row) { |
| | | this.delShow = true |
| | |
| | | export const updatePwd = (data) => { |
| | | return axios.post(`/api/system/user/resetPwd`, { ...data }) |
| | | } |
| | | |
| | | //账号继承 |
| | | export const accountInherit = (data) => { |
| | | console.log('qwqweqwrt3123',data); |
| | | |
| | | return axios.post(`/api/system/user/inherit`, { ...data }) |
| | | } |
| | | |
| | | |
| | | |
| | | // export const typeList = () => { |
| | | // return axios.get(`/t-business-dept/list/type?type=1`,) |
| | | // } |