<template>
|
<div class="list">
|
<el-card class="header-box">
|
<div class="box-title">
|
<img src="@/assets/public/notice.png" class="header-icon"> <span>设立课题规则</span>
|
</div>
|
<div class="header-content">
|
<p>1、根据可研报告、产品构思设计的工艺研究路线,一条工艺路线设立一个课题。如果一个课题中有多个化合物需要开发研究,则每个化合物作为一个分题;分题归集到该课题中,最终形成课题报告。不同课题报告中的分题不能重复使用。
|
</p>
|
<p>2、在可行研究阶段,工艺开发升级,重新规划工艺研究路线,则以新规划的工艺路线方案来设定课题。</p>
|
</div>
|
</el-card>
|
<TableCustom :tableData="tableData" :queryForm="queryForm" :height="null" :total="total"
|
@handleCurrentChange="handleCurrentChange" @handleSizeChange="handleSizeChange">
|
<template #search>
|
<el-form :model="form" label-width="auto" inline>
|
<el-form-item label="所属项目组:">
|
<el-input v-model="form.teamName" placeholder="请输入"></el-input>
|
</el-form-item>
|
<el-form-item label="报告名称:">
|
<el-input v-model="form.reportName" placeholder="请输入"></el-input>
|
</el-form-item>
|
<el-form-item label="创建日期:">
|
<el-date-picker v-model="form.date" type="daterange" range-separator="至"
|
start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
|
</el-form-item>
|
<el-form-item label="状态:">
|
<el-select v-model="form.status" placeholder="请选择">
|
<el-option label="待审核" value="1"></el-option>
|
<el-option label="待评定" value="2"></el-option>
|
<el-option label="已评定" value="3"></el-option>
|
<el-option label="已驳回" value="4"></el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="">
|
<el-button type="default" style="margin-right: 10px;" @click="resetForm">重置</el-button>
|
<el-button type="primary" @click="getLists">查询</el-button>
|
</el-form-item>
|
</el-form>
|
</template>
|
<template #setting>
|
<div class="table-setting-box">
|
<div class="table-setting">
|
<div class="table-tit" :class="!isDraft && 'table-title'" @click="handleTabChange(false)">
|
报告列表
|
</div>
|
<div class="table-tit" v-if="roleType == 3" :class="isDraft && 'table-title'"
|
@click="handleTabChange(true)">
|
草稿箱
|
</div>
|
</div>
|
<el-button @click="handleAddProject" v-if="roleType == 3" class="el-icon-plus" type="primary">
|
新增报告</el-button>
|
</div>
|
</template>
|
<template #table>
|
<el-table-column prop="teamName" label="所属项目组" />
|
<el-table-column prop="reportCode" label="报告编号" />
|
<el-table-column prop="reportName" label="报告名称" />
|
<el-table-column prop="experimentName" label="菌种实验员">
|
</el-table-column>
|
<el-table-column prop="createBy" label="创建人" />
|
<el-table-column prop="createTime" label="创建时间" />
|
<el-table-column prop="status" label="状态" v-if="!isDraft">
|
<template #default="{ row }">
|
<el-tag v-if="row.status == 1" type="warning">待审核</el-tag>
|
<el-tag v-else-if="row.status == 2">待评定</el-tag>
|
<el-tag v-else-if="row.status == 3" type="success">已评定</el-tag>
|
<el-tag v-else-if="row.status == 4" type="danger">已驳回</el-tag>
|
</template>
|
</el-table-column>
|
<el-table-column label="操作">
|
<template #default="{ row }">
|
<el-button type="text" v-if="row.status == 1 && [1, 2].includes(roleType)"
|
@click="handleAudit(row)">审核</el-button>
|
<el-button type="text" v-if="row.status == 2 && [1, 2].includes(roleType)"
|
@click="handleEvaluate(row)">评定</el-button>
|
<el-button type="text" v-if="row.status != 1" @click="viewDetail(row)">详情</el-button>
|
<el-button type="text" v-if="roleType == 3 && row.status == 4 || isDraft"
|
@click="handleDetail(row)">编辑</el-button>
|
<el-button type="text" v-if="roleType == 3 && isDraft" @click="handleDelete(row)">删除</el-button>
|
<el-button type="text" v-if="row.status == 1 && roleType == 3"
|
@click="handleRevoke(row)">撤销审批</el-button>
|
</template>
|
</el-table-column>
|
</template>
|
</TableCustom>
|
|
<Approval @viewEvaluate="viewEvaluate" :visible="showApproval" :obj="obj" @close="showApproval = false"
|
@approve="handleApprove" />
|
<Evaluate :visible="showEvaluate" :obj="obj" :type="obj.evaluateType" @back="backStep"
|
@close="showEvaluate = false" @approve="handleEvaluateRow" />
|
<ChoiceMethod :visible="showChoiceMethod" :obj="obj" @close="showChoiceMethod = false"
|
@next="handleChoiceMethod" />
|
<ShowDelConfirm :show="showDelConfirm" @close="showDelConfirm = false" @confirm="handleDelConfirm" />
|
<ShowDelConfirm :title="changeStatusTitle" :tip="changeStatusTip" :show="changeStatus"
|
@close="changeStatus = false" @confirm="handleChangeStatusConfirm" />
|
</div>
|
</template>
|
|
<script>
|
import Approval from './components/approval'
|
import Evaluate from './components/evaluate'
|
import ChoiceMethod from './components/choiceMethod'
|
import { getList, approve, evaluate, deleteReport, revokeAudit } from './service'
|
import moment from 'moment'
|
|
export default {
|
name: 'ProjectList',
|
components: {
|
Approval,
|
Evaluate,
|
ChoiceMethod
|
},
|
data() {
|
return {
|
form: {
|
teamName: '',
|
reportName: '',
|
date: [],
|
status: '',
|
experimentName: ''
|
},
|
tableData: [],
|
showDelConfirm: false,
|
roleType: Number(JSON.parse(sessionStorage.getItem('userInfo')).roleType || 0),
|
rowId: '',
|
changeStatus: false,
|
showApproval: false,
|
showEvaluate: false,
|
showChoiceMethod: false,
|
changeStatusTitle: '',
|
changeStatusTip: '',
|
queryForm: {
|
pageSize: 10,
|
pageNum: 1,
|
},
|
total: 0,
|
isDraft: false,
|
obj: {},
|
experimentList: []
|
}
|
},
|
mounted() {
|
this.getLists()
|
},
|
methods: {
|
viewEvaluate() {
|
this.obj.viewDetail = true
|
this.showApproval = false
|
this.showEvaluate = true
|
},
|
viewDetail(row) {
|
this.obj = row
|
this.obj.isDetail = true
|
this.showApproval = true
|
},
|
handleDelete(row) {
|
this.rowId = row.id
|
this.showDelConfirm = true
|
},
|
handleChoiceMethod(type) {
|
this.obj.evaluateType = type
|
this.showChoiceMethod = false
|
this.showEvaluate = true
|
},
|
backStep() {
|
this.showEvaluate = false
|
this.obj.evaluateType = ''
|
this.showChoiceMethod = true
|
},
|
handleRevoke(row) {
|
this.rowId = row.id
|
this.changeStatusTitle = '确认要撤销审批吗?'
|
this.changeStatusTip = '撤销审批后,可行报告将被撤销。'
|
this.changeStatus = true
|
},
|
handleDelConfirm() {
|
deleteReport({ id: this.rowId }).then(res => {
|
this.showDelConfirm = false
|
this.$message.success('删除成功')
|
if (this.queryForm.pageNum > 1 && this.tableData.length === 1) {
|
this.queryForm.pageNum = this.queryForm.pageNum - 1
|
}
|
this.rowId = ''
|
this.getLists()
|
})
|
},
|
handleChangeStatusConfirm() {
|
revokeAudit({ id: this.rowId }).then(res => {
|
if (res.code === 200) {
|
this.changeStatus = false
|
this.$message.success('操作成功')
|
this.rowId = ''
|
this.changeStatusTitle = ''
|
this.changeStatusTip = ''
|
this.getLists()
|
} else {
|
this.changeStatus = false
|
this.$message.error(res.msg)
|
}
|
})
|
},
|
handleAddProject() {
|
this.$router.push('/strainReportLibrary/addThree')
|
},
|
handleCurrentChange(page) {
|
this.queryForm.pageNum = page
|
this.getLists()
|
},
|
handleSizeChange(size) {
|
this.queryForm.pageSize = size
|
this.getLists()
|
},
|
handleTabChange(isDraft) {
|
this.isDraft = isDraft
|
this.form.status = ''
|
this.getLists()
|
},
|
getLists() {
|
const params = {
|
pageNum: this.queryForm.pageNum,
|
pageSize: this.queryForm.pageSize,
|
teamName: this.form.teamName,
|
reportName: this.form.reportName,
|
time: this.form.date.length?moment(this.form.date[0]).format('YYYY-MM-DD 00:00:00') + ' - ' + moment(this.form.date[1]).format('YYYY-MM-DD 23:59:59'):'',
|
status: this.form.status,
|
isDraft: this.isDraft ? 1 : 0,
|
reportType: 3
|
}
|
getList(params).then(res => {
|
if (res.code === 200) {
|
this.total = res.data.total
|
this.tableData = res.data.records
|
}
|
})
|
},
|
resetForm() {
|
this.form = {
|
teamName: '',
|
reportName: '',
|
date: [],
|
status: '',
|
experimentName: ''
|
}
|
this.getLists()
|
},
|
handleEvaluate(row) {
|
this.obj = row
|
console.log('this.obj', this.obj);
|
if (!this.obj.evaluateType) {
|
this.showChoiceMethod = true
|
} else {
|
this.showEvaluate = true
|
}
|
},
|
|
handleAudit(row) {
|
this.obj = row
|
this.showApproval = true
|
},
|
handleApprove(params) {
|
approve({ ...params, status: params.statuss }).then(res => {
|
if (res.code === 200) {
|
this.$message.success('审核成功')
|
this.showApproval = false
|
this.getLists()
|
// this.showEvaluate = true
|
this.showChoiceMethod = true
|
}
|
})
|
},
|
handleEvaluateRow(params) {
|
evaluate({ ...params }).then(res => {
|
if (res.code === 200) {
|
this.$message.success('评定成功')
|
this.showEvaluate = false
|
this.obj = {}
|
this.getLists()
|
}
|
})
|
},
|
handleDetail(row) {
|
this.$router.push(`/strainReportLibrary/detail?id=${row.id}`)
|
},
|
handleExperimentChange(val) {
|
this.getLists()
|
},
|
}
|
}
|
</script>
|
|
<style scoped lang="less">
|
.table-setting-box {
|
display: flex;
|
justify-content: space-between;
|
align-items: center;
|
}
|
|
// .el-icon-plus {
|
// margin-bottom: 20px;
|
// }
|
|
.header-content {
|
font-family: PingFangSC, PingFang SC;
|
font-weight: 400;
|
font-size: 14px;
|
color: rgba(0, 0, 0, 0.88);
|
margin-left: 30px;
|
}
|
|
.box-title {
|
font-family: SourceHanSansCN, SourceHanSansCN;
|
font-weight: bold;
|
font-size: 18px;
|
color: #222222;
|
line-height: 27px;
|
display: flex;
|
align-items: center;
|
}
|
|
.header-icon {
|
width: 20px;
|
height: 20px;
|
margin-right: 10px;
|
|
}
|
|
.header-box {
|
border-radius: 16px;
|
margin-bottom: 30px;
|
}
|
|
.table-setting {
|
display: flex;
|
gap: 14px;
|
}
|
|
.table-tit {
|
background: #FAFAFC;
|
border-radius: 8px 8px 0px 0px;
|
border: 1px solid #DCDFE6;
|
width: 166px;
|
height: 50px;
|
border-radius: 8px 8px 0px 0px;
|
display: flex;
|
align-items: center;
|
justify-content: center;
|
// margin-bottom: 21px;
|
font-family: SourceHanSansCN, SourceHanSansCN;
|
font-weight: bold;
|
font-size: 18px;
|
color: rgba(96, 98, 102, 1);
|
line-height: 27px;
|
}
|
|
.list {
|
height: 100%;
|
}
|
|
.table-title {
|
width: 166px;
|
height: 50px;
|
background: #FFFFFF;
|
border-radius: 8px 8px 0px 0px;
|
border: 1px solid #049C9A;
|
display: flex;
|
align-items: center;
|
justify-content: center;
|
// margin-bottom: 21px;
|
font-family: SourceHanSansCN, SourceHanSansCN;
|
font-weight: bold;
|
font-size: 18px;
|
color: #049C9A;
|
line-height: 27px;
|
}
|
</style>
|