<template>
|
<div class="list">
|
<el-card class="header-box" v-if="roleType == 3">
|
<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" :height="null" :total="total" @handleCurrentChange="handleCurrentChanges"
|
@handleSizeChange="handleSizeChanges">
|
<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-input v-model="form.reportCode" 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="0"></el-option>
|
<el-option label="已驳回" value="2"></el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="" style="margin-left: 63px;">
|
<el-button type="default" style="margin-right: 10px;">重置</el-button>
|
<el-button type="primary">查询</el-button>
|
</el-form-item>
|
</el-form>
|
</template>
|
<template #setting>
|
<el-button v-if="roleType == 3" @click="handleAddProject" class="el-icon-plus" type="primary">
|
新增可研报告</el-button>
|
<div class="table-setting">
|
<div :class="!isDraft ? 'table-title' : 'table-tit'" @click="changeTab('')">
|
可研报告库
|
</div>
|
<div v-if="roleType == 3" :class="!isDraft ? 'table-tit' : 'table-title'" @click="changeTab('-1')">
|
草稿箱
|
</div>
|
</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="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">待审核</el-tag>
|
<el-tag v-else-if="row.status == 2">待评定</el-tag>
|
<el-tag v-else-if="row.status == 4" type="danger">已驳回</el-tag>
|
<el-tag v-else-if="row.status == 3" type="success">已评定</el-tag>
|
<el-tag v-else-if="row.status == 5" type="info">已撤回</el-tag>
|
|
</template>
|
</el-table-column>
|
<el-table-column prop="options" label="操作">
|
<template #default="{ row }">
|
<el-button type="text" @click="handleApproval(row)"
|
v-if="row.status == 1 && [1, 2].includes(roleType)">审核</el-button>
|
<el-button type="text" @click="handleDetail(row)">详情</el-button>
|
<el-button type="text" @click="handleDelete(row)"
|
v-if="[4, 5].includes(row.status) && roleType == 3">删除</el-button>
|
<el-button type="text" @click="handleEdit(row)"
|
v-if="[4, 5].includes(row.status) && roleType == 3">编辑</el-button>
|
<el-button type="text" @click="handleRevoke(row)"
|
v-if="row.status == 1 && roleType == 3">撤销审批</el-button>
|
</template>
|
</el-table-column>
|
</template>
|
</TableCustom>
|
|
<Approval :visible="showApproval" @close="showApproval = false" :obj="rowData" @approve="handleApprove" />
|
<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 { getDataList, audit, revokeAudit, deleteData } from './service'
|
|
export default {
|
name: 'ProjectList',
|
components: {
|
Approval
|
},
|
data() {
|
return {
|
showDelConfirm: false,
|
rowId: '',
|
changeStatus: false,
|
showApproval: false,
|
changeStatusTitle: '',
|
changeStatusTip: '',
|
tableData: [],
|
isDraft: false,
|
rowData: {},
|
roleType: '', // 1 超级管理员 2 审批人 3 工艺工程师 4化验师 5实验员
|
form: {
|
pageSize: 10,
|
pageNum: 1,
|
teamName: '',
|
status: '',
|
startTime: '',
|
reportType: 1,
|
reportName: '',
|
reportCode: '',
|
endTime: '',
|
date: ''
|
},
|
total: 0
|
}
|
},
|
|
mounted() {
|
this.roleType = JSON.parse(sessionStorage.getItem('userInfo'))?.roleType
|
console.log('adwqedwqeqwe', this.roleType);
|
|
this.getList()
|
},
|
|
methods: {
|
handleApproval(row) {
|
this.rowData = row
|
this.showApproval = true
|
},
|
handleDetail(row) {
|
row.isDetail = true
|
this.rowData = row
|
this.showApproval = true
|
},
|
handleEdit(row) {
|
this.$router.push({
|
path: '/reportLibrary/edit',
|
query: {
|
id: row.id
|
}
|
})
|
},
|
handleAddProject() {
|
this.$router.push('/reportLibrary/add')
|
},
|
changeTab(status) {
|
if (status == -1) {
|
this.isDraft = true
|
this.form.pageNum = 1
|
} else {
|
this.form.pageNum = 1
|
this.isDraft = false
|
this.form.status = status
|
}
|
this.getList()
|
},
|
handleDelete(row) {
|
this.rowId = row.id
|
this.showDelConfirm = true
|
},
|
handleRevoke(row) {
|
this.rowId = row.id
|
this.changeStatusTitle = '确认要撤销审批吗?'
|
this.changeStatusTip = '撤销审批后,可研报告将被撤销。'
|
this.changeStatus = true
|
},
|
handleDelConfirm() {
|
deleteData({ id: this.rowId }).then(res => {
|
this.showDelConfirm = false
|
this.$message.success('删除成功')
|
this.rowId = ''
|
this.getList()
|
})
|
},
|
handleChangeStatusConfirm() {
|
revokeAudit({ id: this.rowId }).then(res => {
|
this.changeStatus = false
|
this.$message.success('操作成功')
|
this.rowId = ''
|
this.changeStatusTitle = ''
|
this.changeStatusTip = ''
|
this.getList()
|
})
|
},
|
handleCurrentChanges(page) {
|
this.form.pageNum = page
|
this.getList()
|
},
|
handleSizeChanges(size) {
|
this.form.pageSize = size
|
this.getList()
|
},
|
getList() {
|
let data = {}
|
if (this.isDraft) {
|
data = {
|
...this.form,
|
status: -1
|
}
|
} else {
|
data = this.form
|
}
|
getDataList(data).then(res => {
|
if (res.code === 200) {
|
this.tableData = res.data.records || []
|
this.total = res.data.total || 0
|
}
|
})
|
},
|
handleApprove(data) {
|
let params = {
|
id: data.id,
|
auditStatus: data.statuss,
|
auditRemark: data.remark
|
}
|
|
audit({ ...params }).then(res => {
|
if (res.code === 200) {
|
this.$message.success('审核成功')
|
this.showApproval = false
|
this.getList()
|
}
|
})
|
}
|
}
|
}
|
</script>
|
|
<style scoped lang="less">
|
.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;
|
background: #FFFFFF;
|
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: #606266;
|
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>
|