bonus-ui/src/views/material/repair/scrapLedgerReview/index.vue

391 lines
12 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="app-container" >
<el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="90px"
>
<el-form-item prop="time">
<el-date-picker
v-model="queryParams.time"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
<el-form-item prop="keyWord">
<el-input
v-model="queryParams.keyWord"
placeholder="请输入关键字"
clearable
maxlength="50"
style="width: 240px"
@keyup.enter.native="handleQuery"/>
</el-form-item>
<el-form-item>
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>查询</el-button
>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
>重置</el-button
>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="success"
@click="batchPass"
icon="el-icon-check"
size="mini"
:disabled="multiple"
>通过</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
@click="batchReject"
icon="el-icon-close"
size="mini"
:disabled="multiple"
>驳回</el-button
>
</el-col>
<el-col :span="21" style="text-align: right;">
<div style="color: red;">待审核周期:{{ reviewPeriod }}</div>
<div style="color: red;">审核费用(万元){{ reviewCost }}</div>
</el-col>
</el-row>
<el-table
v-loading="loading"
:data="tableList"
row-key="id"
ref="multipleTable"
@selection-change="handleSelectionChange"
>
<el-table-column
type="selection"
width="55"
align="center"
:reserve-selection="true"
/>
<el-table-column label="序号" align="center" width="80" type="index">
<template slot-scope="scope">
<span>{{
(queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1
}}</span>
</template>
</el-table-column>
<el-table-column label="类型名称" align="center" prop="typeName" :show-overflow-tooltip="true"/>
<el-table-column label="规格型号" align="center" prop="typeModelName" :show-overflow-tooltip="true"/>
<el-table-column label="计量单位" align="center" prop="unitName" :show-overflow-tooltip="true"/>
<el-table-column label="报废数量" align="center" prop="scrapNum" :show-overflow-tooltip="true"/>
<el-table-column label="报废费用(万元)" align="center" prop="totalCost" :show-overflow-tooltip="true"/>
<el-table-column label="报废类型" align="center" prop="scrapStyle" :show-overflow-tooltip="true"/>
<el-table-column label="损坏类型" align="center" prop="scrapType" :show-overflow-tooltip="true">
<template slot-scope="scope">
<span v-if="scope.row.scrapType==0">{{ '自然损坏' }}</span>
<span v-if="scope.row.scrapType==1">{{ '人为损坏' }}</span>
</template>
</el-table-column>
<el-table-column label="提交人" align="center" prop="createName" :show-overflow-tooltip="true"/>
<el-table-column label="本次审核周期" align="center" prop="month" :show-overflow-tooltip="true"/>
<el-table-column label="状态" align="center" prop="ledgerStatus" :show-overflow-tooltip="true">
<template slot-scope="scope">
<span style="color:#70B603">{{ '待审核'}}</span>
</template>
</el-table-column>
<!-- <el-table-column label="备注" align="center" prop="remark" :show-overflow-tooltip="true"/> -->
<el-table-column label="操作" align="center" width="180" >
<template slot-scope="scope">
<el-button size="mini" type="success" @click="pass(scope.row)" v-if="scope.row.ledgerStatus==0">
通过
</el-button>
<el-button size="mini" type="danger" @click="reject(scope.row)" v-if="scope.row.ledgerStatus==0">
驳回
</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 驳回弹窗 -->
<el-dialog title="驳回" :visible.sync="confirmShow" width="600px" height="300px" @close="closeCancel">
<div style="width: 100%; height: 80%; display: flex;margin-bottom: 10px;">
<div style="width:15%;">驳回原因:</div>
<el-input
type="textarea"
:rows="3" style="width:80%;"
placeholder="请输入驳回原因"
v-model="checkResult"
maxlength="100">
</el-input>
</div>
<div style="width: 100%;height: 20%;display: flex;justify-content: flex-end;align-items: center;">
<el-button type="primary" @click="confirmCheck">确认</el-button>
<el-button size="mini" @click="cancel">取消</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { getTotalList,getTotalPrice,ledgerApprove,ledgerReject } from '@/api/repair/scrapLedgerReview';
export default {
name: "AcceptDetail",
dicts: ["part_task_status"],
data() {
return {
// 遮罩层
loading: false,
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
total: 0,
// 显示搜索条件
showSearch: true,
showHouse: false,
ids: [],
idList: [],
taskIds: [],
taskIdList: [],
checkList: [],
//表格数据
tableList: [],
// 弹出层标题
title: "",
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
time: null,
keyWord: '',
},
//确认弹窗
confirmShow: false,
checkResult: "", // 驳回原因
reviewPeriod: '', // 新增变量用于存储待审核周期
reviewCost: null, // 新增变量用于存储审核费用
};
},
created() {
this.getTopData();
this.getList();
},
methods: {
// 格式化日期范围
formatDateRange(dates) {
if (!dates || dates.length!== 2) {
return '';
}
const startDate = new Date(dates[0]);
const endDate = new Date(dates[1]);
const startYear = startDate.getFullYear();
const startMonth = startDate.getMonth() + 1;
const endYear = endDate.getFullYear();
const endMonth = endDate.getMonth() + 1;
if (startYear === endYear && startMonth === endMonth) {
return `${startYear}${startMonth}`;
} else {
return `${startYear}${startMonth}月 ~ ${endYear}${endMonth}`;
}
},
/** 查询列表 */
async getList() {
this.loading = true;
const params = {
keyWord: this.queryParams.keyWord,
startTime: this.queryParams.time && this.queryParams.time[0],
endTime: this.queryParams.time && this.queryParams.time[1],
pageSize: this.queryParams.pageSize,
pageNum: this.queryParams.pageNum
}
console.log('11111111111',params)
await getTotalList(params).then((response) => {
console.log('222222222',params)
this.tableList = response.data.rows;
this.total = response.data.total;
this.loading = false;
});
},
// 获取待审核周期和审核金额
getTopData() {
getTotalPrice().then((response) => {
this.reviewPeriod = response.data.month;
this.reviewCost = response.data.totalCost;
});
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.$refs.multipleTable.clearSelection();
this.queryParams.keyWord = null;
this.queryParams.time=[]
this.handleQuery();
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
// this.reviewPeriod = this.formatDateRange(this.queryParams.time); // 更新待审核周期
this.getTopData();
this.getList();
},
// 多选框选中数据
handleSelectionChange(selection) {
console.log('111111111',selection)
this.ids = selection;
this.idList = [];
this.taskIdList = [];
selection.forEach((item) => {
if (item.idList) {
this.idList = this.idList.concat(item.idList);
}
if (item.taskIdList) {
this.taskIdList = this.taskIdList.concat(item.taskIdList);
}
});
this.single = selection.length != 1;
this.multiple = !selection.length;
},
//通过
pass(row) {
// if(this.infos==0){
// this.$modal.msgError("请选择配件");
// return;
// }
const infos={'idList':this.idList,'taskIdList':this.taskIdList}
this.$modal.confirm('是否确认通过?')
.then(function() {
return ledgerApprove(infos)
}).then(() => {
this.$modal.msgSuccess('入库成功')
this.getTopData();
this.getList()
}).catch(() => {});
},
//驳回
reject(row) {
this.checkResult = "不合格";
this.confirmShow = true;
// this.$modal.confirm('是否确认驳回该配件?')
// .then(function() {
// return partTypeReject(infos)
// }).then(() => {
// this.$modal.msgSuccess('驳回成功')
// this.getList()
// }).catch(() => {});
},
//批量通过
batchPass() {
if(this.ids.length==0){
this.$modal.msgError("请选择数据");
return;
}
const infos={'idList':this.idList,'taskIdList':this.taskIdList}
console.log('111111111infos',infos)
this.$modal.confirm('是否确认通过?')
.then(() => {
return ledgerApprove(infos)
})
.then(() => {
this.$modal.msgSuccess('通过成功')
this.getTopData();
this.getList()
// 清除表格的选中状态
this.$refs.multipleTable.clearSelection();
})
.catch(() => {});
},
//批量驳回
batchReject() {
if(this.ids.length==0){
this.$modal.msgError("请选择数据");
return;
}
this.checkResult = "不合格";
this.confirmShow = true;
},
//驳回确认请求
confirmCheck() {
const infos={'idList':this.idList,'taskIdList':this.taskIdList,'rejectReason':this.checkResult}
ledgerReject(infos).then((response) => {
if (response.code == 200) {
this.$modal.msgSuccess("驳回成功");
this.confirmShow = false;
this.getTopData();
this.getList();
this.$refs.multipleTable.clearSelection();
}
});
},
//取消
cancel() {
this.confirmShow = false;
this.checkResult = "";
},
//关闭
closeCancel() {
this.cancel()
},
},
};
</script>
<style lang="scss" scoped>
.uploadImg {
padding-top: 20px;
display: flex;
align-items: center;
justify-content: center;
}
.deviceCode {
margin-top: 10px;
padding-bottom: 20px;
font-size: 18px;
}
::v-deep.el-table .fixed-width .el-button--mini {
width: 60px !important;
margin-bottom: 10px;
}
//隐藏图片上传框的css
::v-deep.disabled {
.el-upload--picture-card {
display: none;
}
}
</style>