<template>
|
<div class="capacity-scope">
|
<div style="display: flex;justify-content: space-between;align-items: flex-start">
|
<el-form :model="queryParams0" ref="queryParams0" size="small" :inline="true">
|
<el-form-item label="年月" prop="month">
|
<el-date-picker v-model="queryParams0.month" type="month" placeholder="选择月" format="yyyy-MM"
|
value-format="yyyy-MM" size="small" @change="refreshTable()">
|
</el-date-picker>
|
</el-form-item>
|
<el-form-item>
|
<el-button type="primary" size="mini" @click="refreshTable">查询</el-button>
|
<el-button size="mini" @click="refresh">重置</el-button>
|
</el-form-item>
|
</el-form>
|
<el-button size="small" type="primary" @click="handleAdd0">新增</el-button>
|
</div>
|
<div class="table">
|
<lims-table :tableData="tableData0" :column="column0" :tableLoading="tableLoading"
|
key="tableData0" :height="'calc(100vh - 240px)'" :page="page0" @pagination="pagination0"></lims-table>
|
</div>
|
<el-dialog title="详情" :visible.sync="editDialogVisible" width="70%">
|
<el-button size="small" type="primary" @click="handleAdd('add')" style="margin-bottom: 10px">新增</el-button>
|
<lims-table :tableData="tableData" :column="column" :tableLoading="tableLoading"
|
key="tableData" :height="'calc(100vh - 290px)'">
|
</lims-table>
|
<span slot="footer" class="dialog-footer">
|
<el-button @click="editDialogVisible = false">取消</el-button>
|
</span>
|
</el-dialog>
|
<!-- 新增样品 -->
|
<el-dialog title="新增" :visible.sync="addDialogVisible" width="400px" @close="closeAddDialogVisible">
|
<el-form ref="addInfo" :model="addInfo" :rules="rules" label-width="120px">
|
<el-row>
|
<el-col :span="24">
|
<el-form-item label="样品名称" prop="sampleName">
|
<el-input size="small" placeholder="请输入" clearable
|
v-model="addInfo.sampleName"></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="24">
|
<el-form-item label="样品编号" prop="sampleCode">
|
<el-input size="small" placeholder="请输入" clearable
|
v-model="addInfo.sampleCode"></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="24">
|
<el-form-item label="供样单位" prop="sampleSupplier">
|
<el-select v-model="addInfo.sampleSupplier" size="small">
|
<el-option :label="item.company" :value="item.company" v-for="(item, index) in customPageList"
|
:key="item.id"></el-option>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
<el-col :span="24">
|
<el-form-item label="数量" prop="num">
|
<el-input size="small" placeholder="请输入" clearable
|
v-model="addInfo.num"></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="24">
|
<el-form-item label="处理方式" prop="dealMethod">
|
<el-input size="small" placeholder="请输入" clearable
|
v-model="addInfo.dealMethod"></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="24">
|
<el-form-item label="时间" prop="dealTime">
|
<el-date-picker v-model="addInfo.dealTime" type="date" size="small" placeholder="选择日期" format="yyyy-MM-dd"
|
value-format="yyyy-MM-dd" style="width: 100%;">
|
</el-date-picker>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
</el-form>
|
<span slot="footer" class="dialog-footer">
|
<el-button @click="closeAddDialogVisible">取 消</el-button>
|
<el-button type="primary" @click="submitAdd" :loading="addLoading">确 定</el-button>
|
</span>
|
</el-dialog>
|
<!-- 新增历史 -->
|
<el-dialog title="新增" :visible.sync="addDialogVisibleDeal" width="400px" @close="closeDiaDeal">
|
<el-form ref="addInfoDeal" :model="addInfoDeal" :rules="rulesDeal" label-width="80px">
|
<el-row>
|
<el-col :span="24">
|
<el-form-item label="月份" prop="month">
|
<el-date-picker v-model="addInfoDeal.month" type="month" size="small" placeholder="选择月份" format="yyyy-MM"
|
value-format="yyyy-MM" style="width: 100%;">
|
</el-date-picker>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
</el-form>
|
<span slot="footer" class="dialog-footer">
|
<el-button @click="closeDiaDeal">取 消</el-button>
|
<el-button type="primary" @click="submitAddDeal" :loading="addLoading">确 定</el-button>
|
</span>
|
</el-dialog>
|
<!-- 详情/下载/审核/批准 -->
|
<el-dialog :title="title0" :visible.sync="lookDialogVisible" width="400px" :class="{ downPdf: title0 == '下载' }"
|
:modal="title0 != '下载'" top="5vh">
|
<span>是否通过{{title0}}?</span>
|
<span slot="footer" class="dialog-footer" v-if="title0 == '审核' || title0 == '批准'">
|
<el-button @click="submitCheck('不通过')" :loading="noCheckLoading">不通过</el-button>
|
<el-button type="primary" @click="submitCheck('通过')" :loading="checkLoading">通 过</el-button>
|
</span>
|
</el-dialog>
|
</div>
|
</template>
|
|
<script>
|
import limsTable from "@/components/Table/lims-table.vue";
|
import filePreview from "@/components/Preview/filePreview.vue";
|
import { selectCustomPageList } from "@/api/system/customer";
|
import {
|
doProcessDeal,
|
addProcessDeal,
|
submitProcessTotaldeal,
|
checkProcessTotaldeal,
|
ratifyProcessTotaldeal,
|
delProcessDeal,
|
pageProcessTotaldeal, getProcessDeal, addProcessTotaldeal,
|
exportProcessTotaldeal
|
} from "@/api/cnas/process/sampleDisposal";
|
export default {
|
name: 'SampleDisposal',
|
components: {
|
limsTable,
|
filePreview,
|
},
|
data() {
|
return {
|
title: '新增',
|
addDialogVisible: false,
|
addLoading: false,
|
outLoading: false,
|
editDialogVisible: false,
|
queryParams: {},
|
submitState: '',
|
lookDialogVisible: false,
|
title0: '查看',
|
noCheckLoading: false,
|
checkLoading: false,
|
// 历史列表
|
addInfo: {},//新增样品
|
addInfoDeal: {
|
month: ''
|
},//新增样品
|
addDialogVisibleDeal: false,
|
rules: {
|
sampleName: [{ required: true, message: '请填写样品名称', trigger: 'blur' }],
|
sampleCode: [{ required: true, message: '请填写样品编号', trigger: 'blur' }],
|
sampleSupplier: [{ required: true, message: '请选择供样单位', trigger: 'change' }],
|
num: [{ required: true, message: '请填写数量', trigger: 'blur' }],
|
dealMethod: [{ required: true, message: '请填写处理方式', trigger: 'blur' }],
|
dealTime: [{ required: true, message: '请选择时间', trigger: 'change' }],
|
},
|
rulesDeal: {
|
month: [{ required: true, message: '请选择月份', trigger: 'change' }],
|
},
|
customPageList: [],
|
currentInfo: {
|
arr: []
|
},//查看的详情
|
outPower: false,
|
addPower: false,
|
tableData: [],
|
column: [
|
{ label: "样品名称", prop: "sampleName" },
|
{ label: "样品编号", prop: "sampleCode" },
|
{ label: "供样单位", prop: "sampleSupplier" },
|
{ label: "数量", prop: "num" },
|
{ label: "处理方式", prop: "dealMethod" },
|
{ label: "时间", prop: "dealTime" },
|
{
|
dataType: "action",
|
label: "操作",
|
operation: [
|
{
|
name: "编辑",
|
type: "text",
|
clickFun: (row) => {
|
this.handleAdd('edit',row);
|
},
|
disabled: (row) => {
|
return this.submitState === '已提交'
|
}
|
},
|
{
|
name: "删除",
|
type: "text",
|
clickFun: (row) => {
|
this.handleDelete(row);
|
},
|
disabled: (row) => {
|
return this.submitState === '已提交'
|
}
|
},
|
],
|
},
|
],
|
tableLoading: false,
|
queryParams0: {},
|
tableData0: [],
|
column0: [
|
{ label: "月份", prop: "month" },
|
{ label: "提交人", prop: "submitUserName" },
|
{
|
dataType: 'tag',
|
label: '提交状态',
|
prop: 'submitState',
|
formatData: (params) => {
|
return params
|
},
|
formatType: (params) => {
|
if (params === '待提交') {
|
return 'danger';
|
} else if (params === '已提交') {
|
return 'success';
|
} else {
|
return null;
|
}
|
}
|
},
|
{ label: "审核人", prop: "examineUserName" },
|
{
|
dataType: 'tag',
|
label: '审核状态',
|
prop: 'examineState',
|
formatData: (params) => {
|
return params
|
},
|
formatType: (params) => {
|
if (params === '不通过') {
|
return 'danger';
|
} else if (params === '通过') {
|
return 'success';
|
} else {
|
return null;
|
}
|
}
|
},
|
{ label: "批准人", prop: "ratifyUserName" },
|
{
|
dataType: 'tag',
|
label: '批准状态',
|
prop: 'ratifyState',
|
formatData: (params) => {
|
return params
|
},
|
formatType: (params) => {
|
if (params === '不通过') {
|
return 'danger';
|
} else if (params === '通过') {
|
return 'success';
|
} else {
|
return null;
|
}
|
}
|
},
|
{
|
dataType: "action",
|
label: "操作",
|
operation: [
|
{
|
name: "查看",
|
type: "text",
|
clickFun: (row) => {
|
this.handleLook(row);
|
},
|
},
|
{
|
name: "下载",
|
type: "text",
|
clickFun: (row) => {
|
this.handleDown0(row);
|
}
|
},
|
{
|
name: "提交",
|
type: "text",
|
clickFun: (row) => {
|
this.handleSubmit(row);
|
},
|
disabled: (row) => {
|
return !!row.submitState && row.submitState != '待提交'
|
}
|
},
|
{
|
name: "审核",
|
type: "text",
|
clickFun: (row) => {
|
this.handleCheck(row);
|
},
|
disabled: (row) => {
|
return row.examineState == '通过' || row.submitState == '待提交'
|
}
|
},
|
{
|
name: "批准",
|
type: "text",
|
clickFun: (row) => {
|
this.handleApproval(row);
|
},
|
disabled: (row) => {
|
return row.ratifyState == '通过' || row.submitState == '待提交'
|
}
|
},
|
],
|
},
|
],
|
page0: {
|
total: 0,
|
size: 20,
|
current: 1,
|
},
|
operationType: ''
|
};
|
},
|
mounted() {
|
this.getList0()
|
},
|
methods: {
|
// 获取送样单位列表
|
getCustomPageList() {
|
selectCustomPageList({
|
current: -1,
|
size: -1
|
}).then(res => {
|
this.customPageList = res.data.records
|
}).catch(err => { });
|
},
|
handleDown() { },
|
refresh() {
|
this.queryParams0 = {};
|
this.page0.current = 1;
|
this.getList0();
|
},
|
refreshTable() {
|
this.page0.current = 1;
|
this.getList0();
|
},
|
// 查询全部记录
|
getList0() {
|
this.tableLoading = true;
|
let param = { ...this.queryParams0, ...this.page0 };
|
delete param.total;
|
pageProcessTotaldeal({ ...param })
|
.then((res) => {
|
this.tableLoading = false;
|
if (res.code === 200) {
|
this.tableData0 = res.data.records;
|
this.page0.total = res.data.total;
|
}
|
})
|
.catch((err) => {
|
this.tableLoading = false;
|
});
|
},
|
pagination0({ page, limit }) {
|
this.page0.current = page;
|
this.page0.size = limit;
|
this.getList0();
|
},
|
// 打开新增历史界面
|
handleAdd0() {
|
this.addDialogVisibleDeal = true
|
this.addInfoDeal.month = ''
|
},
|
closeAddDialogVisible() {
|
this.$refs['addInfo'].resetFields();
|
this.addDialogVisible = false
|
},
|
// 提交新增-历史
|
submitAddDeal () {
|
this.$refs.addInfoDeal.validate(valid => {
|
if (valid) {
|
// 新增
|
this.addLoading = true
|
addProcessTotaldeal({
|
...this.addInfoDeal
|
}).then(res => {
|
this.addLoading = false
|
this.addDialogVisibleDeal = false
|
this.$message({
|
type: 'success',
|
message: '新增成功!'
|
});
|
this.getList0()
|
}).catch(err => {
|
this.addLoading = false
|
});
|
}
|
})
|
},
|
closeDiaDeal() {
|
this.$refs['addInfoDeal'].resetFields();
|
this.addDialogVisibleDeal = false
|
},
|
// 提交
|
handleSubmit(row) {
|
this.$confirm('是否提交 ' + row.month + ' 月份的数据', '提交', {
|
confirmButtonText: '确定',
|
cancelButtonText: '取消',
|
type: 'warning'
|
}).then(() => {
|
submitProcessTotaldeal({
|
id: row.id
|
}).then(res => {
|
this.$message({
|
type: 'success',
|
message: '提交成功!'
|
});
|
this.refreshTable()
|
}).catch(err => { });
|
})
|
},
|
// 查看
|
handleLook(row) {
|
this.queryParams.id = row.id
|
this.submitState = row.submitState
|
this.$nextTick(() => {
|
this.editDialogVisible = true
|
this.getList();
|
})
|
},
|
getList() {
|
this.tableLoading = true;
|
let param = { ...this.queryParams };
|
getProcessDeal({ ...param }).then((res) => {
|
this.tableLoading = false;
|
if (res.code === 200) {
|
this.tableData = res.data;
|
}
|
})
|
.catch((err) => {
|
this.tableLoading = false;
|
});
|
},
|
// 打开新增详情弹框
|
handleAdd(type, row) {
|
this.addDialogVisible = true
|
this.getCustomPageList()
|
this.operationType = type
|
if (row) {
|
this.addInfo = {...row}
|
}
|
},
|
// 提交-详情
|
submitAdd() {
|
this.$refs.addInfo.validate(valid => {
|
if (valid) {
|
this.addLoading = true
|
addProcessDeal({
|
totaldealId: this.queryParams.id,
|
...this.addInfo
|
}).then(res => {
|
this.addLoading = false
|
this.addDialogVisible = false
|
this.$message({
|
type: 'success',
|
message: '新增成功!'
|
});
|
this.getList()
|
}).catch(err => {
|
this.addLoading = false
|
});
|
}
|
})
|
},
|
// 提交修改详情
|
handleEdit() {
|
if (type === 'submit') {
|
doProcessDeal({
|
id: row.id,
|
...row
|
}).then(res => {
|
this.$message({
|
type: 'success',
|
message: '编辑成功!'
|
});
|
this.getList();
|
}).catch(err => { });
|
}
|
},
|
// 审核
|
handleCheck(row) {
|
this.title0 = '审核'
|
this.lookDialogVisible = true
|
this.currentInfo = row
|
this.queryParams.id = row.id
|
},
|
// 批准
|
handleApproval(row) {
|
this.title0 = '批准'
|
this.lookDialogVisible = true
|
this.currentInfo = row
|
this.queryParams.id = row.id
|
},
|
// 提交审核/批准
|
submitCheck(state) {
|
if (state == '通过') {
|
this.checkLoading = true
|
} else {
|
this.noCheckLoading = true
|
}
|
if (this.title0 == '审核') {
|
checkProcessTotaldeal({
|
id: this.currentInfo.id,
|
state: state
|
}).then(res => {
|
this.checkLoading = false
|
this.noCheckLoading = false
|
this.$message({
|
type: 'success',
|
message: '操作成功!'
|
});
|
this.refreshTable()
|
this.lookDialogVisible = false
|
}).catch(err => { });
|
} else if (this.title0 == '批准') {
|
ratifyProcessTotaldeal({
|
id: this.currentInfo.id,
|
state: state
|
}).then(res => {
|
this.checkLoading = false
|
this.noCheckLoading = false
|
this.$message({
|
type: 'success',
|
message: '操作成功!'
|
});
|
this.refreshTable()
|
this.lookDialogVisible = false
|
}).catch(err => { });
|
}
|
},
|
// 导出详情
|
handleDown0(row) {
|
exportProcessTotaldeal({ id: row.id }).then(res => {
|
this.outLoading = false
|
const blob = new Blob([res], { type: 'application/msword' });
|
this.$download.saveAs(blob, '样品处理' + '.docx');
|
})
|
},
|
handleDelete(row) {
|
this.$confirm("是否删除该条数据?", "提示", {
|
confirmButtonText: "确定",
|
cancelButtonText: "取消",
|
type: "warning",
|
}).then(() => {
|
delProcessDeal({ id: row.id }).then((res) => {
|
this.$message.success("删除成功");
|
this.getList();
|
});
|
}).catch(() => { });
|
},
|
},
|
}
|
</script>
|
|
<style scoped>
|
>>>.el-dialog__body {
|
padding-top: 10px;
|
}
|
</style>
|