<template>
|
<div class="list">
|
<TableCustom :queryForm="queryForm" :tableData="dataList" :total="total" @currentChange="handleCurrentChange"
|
@sizeChange="handleSizeChange">
|
<template #search>
|
<el-form :model="form" label-width="auto" inline>
|
<el-form-item label="所属项目组:">
|
<el-input v-model="form.name" placeholder="请输入"></el-input>
|
</el-form-item>
|
<el-form-item label="检测项名称:">
|
<el-input v-model="form.name" placeholder="请输入"></el-input>
|
</el-form-item>
|
<el-form-item label="检测项编号:">
|
<el-input v-model="form.name" placeholder="请输入"></el-input>
|
</el-form-item>
|
<el-form-item label="报告内容:">
|
<el-input v-model="form.name" placeholder="请输入"></el-input>
|
</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 @click="handleAddProject" class="el-icon-plus" type="primary">
|
新增检测项</el-button>
|
<div class="table-setting">
|
<div class="table-title">
|
项目检测项、检验包列表
|
</div>
|
<div class="table-tit">
|
草稿箱
|
</div>
|
</div>
|
|
</template>
|
<template #tableCustom>
|
<Table :data="tableData" :total="0" @row-click="handleRowClick" row-key="id"
|
:expand-row-keys="expandRowKeys">
|
<el-table-column type="expand" width="1">
|
<template #default="{ row }">
|
<div class="expand-box">
|
<div style="display: flex;align-items: center;"><div class="expand-box-title">报告列表 </div> <el-button style="margin-left: 10px;" @click="handleAdd" class="el-icon-plus" type="primary">
|
新增报告 </el-button> </div>
|
|
<Table :total="0" :height="null">
|
<el-table-column prop="name" label="报告内容" />
|
<el-table-column prop="name" label="制订人" />
|
<el-table-column prop="name" label="制订日期" />
|
<el-table-column prop="name" label="审批人" />
|
<el-table-column prop="name" label="审批时间" />
|
<el-table-column prop="age" label="状态">
|
<template #default="{ row }">
|
<el-tag v-if="row.status == 0" type="info" color="#fff">待审核</el-tag>
|
<el-tag v-if="row.status == 1" type="success" color="#fff">已通过</el-tag>
|
<el-tag v-else type="danger">未通过</el-tag>
|
</template>
|
</el-table-column>
|
<el-table-column prop="age" label="操作">
|
<template #default="{ row }">
|
<el-button type="text">详情</el-button>
|
</template>
|
</el-table-column>
|
</Table>
|
</div>
|
</template>
|
</el-table-column>
|
<el-table-column prop="name" label="所属项目组" />
|
<el-table-column prop="age" label="检测项名称" />
|
<el-table-column prop="age" label="检测项编号" />
|
<el-table-column prop="age" label="报告内容" />
|
<el-table-column prop="age" label="创建人" />
|
<el-table-column prop="age" label="创建时间" />
|
<el-table-column prop="age" label="审批时间" />
|
<el-table-column prop="age" label="状态">
|
<template #default="{ row }">
|
<el-tag v-if="row.status == 1" type="info" color="#fff">已评定</el-tag>
|
<el-tag v-else type="success">待评定</el-tag>
|
</template>
|
</el-table-column>
|
<el-table-column prop="age" label="操作">
|
<template #default="{ row }">
|
<el-button type="text" @click="showApproval = true">详情</el-button>
|
</template>
|
</el-table-column>
|
</Table>
|
</template>
|
</TableCustom>
|
|
<Approval :visible="showApproval" @close="showApproval = false" />
|
<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'
|
|
export default {
|
name: 'ProjectList',
|
components: {
|
Approval
|
},
|
data() {
|
return {
|
form: {
|
name: ''
|
},
|
showDelConfirm: false,
|
rowId: '',
|
changeStatus: false,
|
showApproval: false,
|
changeStatusTitle: '',
|
changeStatusTip: '',
|
queryForm: {
|
pageSize: 10,
|
pageNum: 1
|
},
|
tableData: [
|
{
|
name: '项目组1',
|
age1: '检测项名称1',
|
age2: '检测项编号1',
|
age3: '报告内容1',
|
age4: '创建人1',
|
age5: '创建时间1',
|
age6: '审批时间1',
|
age7: '状态1'
|
}
|
],
|
expandRowKeys: [],
|
total: 0
|
}
|
},
|
methods: {
|
handleAddProject() {
|
this.$router.push('/chemistQa/add')
|
},
|
handleAdd() {
|
this.$router.push('/chemistQa/addDetectionReport')
|
},
|
handleRowClick(row, column, event) {
|
if (column.label === '操作') return
|
if (this.expandRowKeys.includes(row.id)) {
|
this.expandRowKeys = this.expandRowKeys.filter(key => key !== row.id);
|
} else {
|
this.expandRowKeys.push(row.id);
|
}
|
},
|
handleDel(row) {
|
this.rowId = row.id
|
this.showDelConfirm = true
|
},
|
handleDelConfirm() {
|
this.showDelConfirm = false
|
this.msgsuccess('删除成功')
|
this.rowId = ''
|
this.getList()
|
},
|
handleChangeStatus(row, status) {
|
this.rowId = row.id
|
this.changeStatusTitle = status == 1 ? '确认要封存这个项目组吗?' : '确认要解封该项目组吗?'
|
this.changeStatusTip = status == 1 ? '封存后项目组内人员看不到数据,审批人仍然可见数据。' : '解封后项目组内人员数据恢复。'
|
this.changeStatus = true
|
},
|
handleChangeStatusConfirm() {
|
this.changeStatus = false
|
this.msgsuccess('操作成功')
|
this.rowId = ''
|
this.changeStatusTitle = ''
|
this.changeStatusTip = ''
|
this.getList()
|
},
|
handleCurrentChange(page) {
|
this.queryForm.pageNum = page
|
this.getList()
|
},
|
handleSizeChange(size) {
|
this.queryForm.pageSize = size
|
this.getList()
|
},
|
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: #049C9A;
|
line-height: 27px;
|
}
|
|
.list {
|
height: 100%;
|
}
|
|
.table-title {
|
// width: 166px;1
|
height: 50px;
|
padding: 0 29px;
|
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;
|
}
|
|
|
.table-title {
|
width: 220px;
|
height: 50px;
|
background: #FFFFFF;
|
border-radius: 8px 8px 0px 0px;
|
border: 1px solid #049C9A;
|
display: flex;
|
align-items: center;
|
justify-content: center;
|
font-family: SourceHanSansCN, SourceHanSansCN;
|
font-weight: bold;
|
font-size: 18px;
|
color: #049C9A;
|
line-height: 27px;
|
}
|
|
.expand-box {
|
padding: 20px;
|
background: linear-gradient(180deg, #049C9A 0%, #0ACBCA 100%);
|
border-radius: 20px;
|
|
&-title {
|
font-weight: 500;
|
font-size: 16px;
|
color: #FFFFFF;
|
line-height: 24px;
|
margin-bottom: 20px;
|
}
|
}
|
</style>
|