devicesmgt/sgzb-ui/src/views/warehouseManage/newPurchase/toolsAcceptance/component/home.vue

751 lines
26 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>
<el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="100px"
>
<el-form-item label="日期">
<el-date-picker
v-model="queryParams.time"
type="daterange"
value-format="yyyy-MM-dd"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
style="width: 240px"
>
</el-date-picker>
</el-form-item>
<el-form-item label="设备类型" prop="typeId">
<el-select
v-model="queryParams.typeId"
placeholder="请选择设备类型"
clearable
filterable
style="width: 240px"
>
<el-option
v-for="typeItem in typesList"
:key="typeItem.typeId"
:label="typeItem.typeName"
:value="typeItem.typeId"
/>
</el-select>
</el-form-item>
<el-form-item label="采购状态" prop="taskState">
<el-select
v-model="queryParams.taskState"
placeholder="请选择采购状态"
clearable
filterable
style="width: 240px"
>
<el-option
v-for="statusItem in statusList"
:key="statusItem.taskState"
:label="statusItem.label"
:value="statusItem.taskState"
/>
</el-select>
</el-form-item>
<el-form-item label="关键字" 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="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['newPurchase:tools:add']"
>新增</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
>导出</el-button
>
</el-col>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table
v-loading="loading"
:data="typeList"
@selection-change="handleSelectionChange"
border
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column
align="center"
label="序号"
type="index"
:index="
indexContinuation(queryParams.pageNum, queryParams.pageSize)
"
/>
<el-table-column
label="采购单号"
align="center"
prop="code"
:show-overflow-tooltip="true"
/>
<el-table-column
label="采购日期"
align="center"
prop="purchaseTime"
:show-overflow-tooltip="true"
/>
<el-table-column
label="到货日期"
align="center"
prop="arrivalTime"
:show-overflow-tooltip="true"
/>
<el-table-column
label="采购机具设备"
align="center"
prop="purchasingTypeName"
:show-overflow-tooltip="true"
/>
<el-table-column
label="采购员"
align="center"
prop="purchaserName"
:show-overflow-tooltip="true"
/>
<el-table-column
label="采购状态"
align="center"
prop="purchasingStatus"
:show-overflow-tooltip="true"
>
</el-table-column>
<el-table-column
label="备注"
align="center"
prop="remark"
:show-overflow-tooltip="true"
/>
<el-table-column label="操作" align="center" width="200">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-zoom-in"
@click="handleView(scope.row)"
v-if="scope.row.taskStatus != 24"
>查看</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-if="scope.row.taskStatus == 24"
v-hasPermi="['newPurchase:tools:edit']"
>编辑</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-edit"
v-if="
scope.row.purchasingStatus == '待通知' ||
scope.row.purchasingStatus == '待验收'
"
@click="handleAccept(scope.row)"
v-hasPermi="['newPurchase:tools:accept']"
>验收</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-edit"
v-if="
scope.row.purchasingStatus == '验收合格' &&
scope.row.manageType != '1'
"
@click="handleCode(scope.row)"
v-hasPermi="['newPurchase:tools:coding']"
>编码管理</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-edit"
v-if="
scope.row.purchasingStatus == '验收合格' ||
scope.row.purchasingStatus ==
'综合服务中心审核中' ||
scope.row.purchasingStatus == '入库审核中' ||
scope.row.purchasingStatus == '入库审核未通过' ||
scope.row.purchasingStatus == '部分已入库' ||
scope.row.purchasingStatus == '已全部入库'
"
@click="handlePrint(scope.row)"
>验收单</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-edit"
v-if="scope.row.purchasingStatus == '验收合格'"
@click="handleSubmit(scope.row)"
>提交审核</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
v-if="
scope.row.purchasingStatus == '待通知' ||
scope.row.purchasingStatus == '验收未通过' ||
scope.row.purchasingStatus ==
'综合服务中心未通过' ||
scope.row.purchasingStatus == '入库审核未通过'
"
@click="handleDelete(scope.row)"
v-hasPermi="['newPurchase:tools:del']"
>删除</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="title"
:visible.sync="openPrint"
width="1100px"
append-to-body
>
<div style="height: 500px; overflow-y: scroll">
<vue-easy-print tableShow ref="remarksPrintRef" class="print">
<div
class="title"
style="
text-align: center;
font-weight: 600;
font-size: 16px;
"
>
到货验收单
</div>
<div
class="info"
style="margin-top: 10px; display: flex; flex-wrap: wrap"
>
<div
class="item"
style="
width: 50%;
flex-shrink: 0;
margin-bottom: 5px;
font-size: 14px;
"
>
<span>工程名称:</span>
</div>
<div
class="item"
style="
width: 50%;
flex-shrink: 0;
margin-bottom: 5px;
font-size: 14px;
"
>
<span>验收单编号:</span>{{ printData.code }}
</div>
<div
class="item"
style="
width: 50%;
flex-shrink: 0;
margin-bottom: 5px;
font-size: 14px;
"
>
<span>合同名称:</span>
</div>
<div
class="item"
style="
width: 50%;
flex-shrink: 0;
margin-bottom: 5px;
font-size: 14px;
"
>
<span>合同编号:</span>
</div>
<div
class="item"
style="
width: 50%;
flex-shrink: 0;
margin-bottom: 5px;
font-size: 14px;
"
>
<span>验收地点:</span>
</div>
<div
class="item"
style="
width: 50%;
flex-shrink: 0;
margin-bottom: 5px;
font-size: 14px;
"
>
<span>供应商:</span>
<!-- <span v-if="printTableData.length > 0">{{
printTableData[0].supplier
}}</span>
-->
<span v-if="printTableData.length > 0">
{{ supplierListNew }}
</span>
</div>
</div>
<el-table
:data="printTableData"
class="table"
style="
margin-top: 20px;
width: 1000px;
padding-bottom: 1px;
"
border
>
<!-- <el-table-column type="selection" width="55" align="center" />-->
<el-table-column
label="序号"
align="center"
type="index"
/>
<el-table-column
label="类型名称"
align="center"
prop="machineTypeName"
/>
<el-table-column
label="规格型号"
align="center"
prop="specificationType"
/>
<el-table-column
label="计量单位"
align="center"
prop="unitName"
/>
<el-table-column
label="采购数量"
align="center"
prop="purchaseNum"
/>
<el-table-column
label="已验收数量"
align="center"
prop=""
/>
<el-table-column
label="本次验收数量"
align="center"
prop="checkNum"
/>
<el-table-column
label="累积验收数量"
align="center"
prop=""
/>
<el-table-column
label="验收日期"
align="center"
prop=""
/>
<el-table-column
label="合格证及技术资料"
align="center"
prop=""
/>
<el-table-column label="包装" align="center" prop="" />
</el-table>
<div
class="fillIn"
style="
margin-top: 20px;
display: flex;
justify-content: space-between;
"
>
<div class="item" style="width: 50%">
<div>
<span>接收单位验收意见:</span>
</div>
<div>
<span>验收人:</span>
</div>
<div>
<span>接收单位(章):</span>
</div>
<div>
<span>验收负责人: 年 月 日</span>
</div>
</div>
<div class="item" style="width: 50%">
<div>
<span>供应商:</span>
</div>
<div>
<span>供应商(章):</span>
</div>
<div>
<span>验收负责人: 年 月 日</span>
</div>
</div>
</div>
</vue-easy-print>
</div>
<div slot="footer" class="dialog-footer" style="text-align: center">
<el-button type="primary" @click="print">打 印</el-button>
<el-button @click="openPrint = false"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
listPurchaseCheckInfo,
getPurchaseCheckInfo,
getAcceptanceForm,
purchaseCheckInfoRemove,
submitCheck,
} from '@/api/store/newBuy'
import {
getRepairedList,
getRepairedDetailList,
inputByType,
getTypeList,
} from '@/api/store/warehousing'
import vueEasyPrint from 'vue-easy-print'
import { getLeaseAuditListAll } from '@/api/claimAndRefund/receive'
export default {
// name: "NewDevicesList",
dicts: ['sys_normal_disable'],
components: { vueEasyPrint },
data() {
return {
// 遮罩层
loading: true,
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
//搜索下拉数据
typesList: [],
modelList: [],
// 采购状态下拉数据
statusList: [
{ label: '待通知', taskState: 24 },
{ label: '待验收', taskState: 25 },
{ label: '验收合格', taskState: 26 },
{ label: '验收未通过', taskState: 27 },
{ label: '综合服务中心审核中', taskState: 122 },
{ label: '综合服务中心未通过', taskState: 106 },
{ label: '入库审核中', taskState: 105 },
{ label: '入库审核未通过', taskState: 107 },
{ label: '部分已入库', taskState: 123 },
{ label: '已全部入库', taskState: 28 },
],
// 字典表格数据
typeList: [],
// 弹出层标题
title: '',
// 日期范围
dateRange: [],
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
time: null, //申请时间
name: undefined,
typeId: '',
keyWord: '',
taskState: '',
},
openPrint: false,
printData: {},
printTableData: [],
supplierNew: '', // 验收单中的供应商字段
}
},
created() {
this.getList()
this.getTypeList()
},
methods: {
getTypeList() {
getTypeList({ level: '3' }).then((response) => {
this.typesList = response.data
})
getTypeList({ level: '4' }).then((response) => {
this.modelList = response.data
})
},
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],
typeId: this.queryParams.typeId,
taskStatus: this.queryParams.taskState,
pageSize: this.queryParams.pageSize,
pageNum: this.queryParams.pageNum,
}
listPurchaseCheckInfo(this.addDateRange(params)).then(
(response) => {
this.typeList = response.rows
this.total = response.total
this.loading = false
},
)
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1
this.getList()
},
/** 重置按钮操作 */
resetQuery() {
this.queryParams.time = []
this.resetForm('queryForm')
this.queryParams.keyWord = ''
this.handleQuery()
},
/** 新增按钮操作 */
handleAdd() {
// this.$tab.closeOpenPage({
// path: '/store/newBuy/newDevicesArrival',
// })
this.$emit('addTools')
},
/** 查看按钮操作 */
handleView(row) {
// let query = { taskId: row.taskId, isView: true }
// this.$tab
// .closeOpenPage({
// path: '/store/newBuy/newDevicesAccept',
// query,
// })
// .then(() => {
// this.$tab.refreshPage()
// })
this.$emit('queryTools', row.taskId)
},
/** 修改按钮操作 */
handleUpdate(row) {
// let query = { taskId: row.taskId }
// this.$tab.closeOpenPage({
// path: '/store/newBuy/newDevicesArrival',
// query,
// })
this.$emit('editTools', row.taskId)
},
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map((item) => item.taskId)
this.single = selection.length != 1
this.multiple = !selection.length
},
/** 验收按钮 */
handleAccept(row) {
// let query = { taskId: row.taskId }
// this.$tab.closeOpenPage({
// path: '/store/newBuy/newDevicesAccept',
// query,
// })
this.$emit('acceptTools', row.taskId)
},
//编码管理
handleCode(row) {
// let query = { taskId: row.taskId }
// this.$tab
// .closeOpenPage({
// path: '/store/newBuy/newDevicesCode',
// query,
// })
// .then(() => {
// this.$tab.refreshPage()
// })
this.$emit('codingTools', row.taskId)
},
//获取验收单数据
getPrintTable(taskId) {
getAcceptanceForm({ taskId: taskId }).then((response) => {
console.log(response, '验收单返回的数据')
this.printData = response.data
this.printTableData = response.data.checkDetailsList
let supplierList = []
this.printTableData.map((e) => {
if (e.supplier) {
supplierList.push(e.supplier)
}
})
const supplierListNew = [...new Set(supplierList)]
this.supplierListNew = supplierListNew.join('')
})
},
//查看验收单
handlePrint(row) {
// this.query.taskId = row.taskId
this.getPrintTable(row.taskId)
this.openPrint = true
this.title = '新购工机具验收单'
},
//打印
print() {
this.$refs.remarksPrintRef.print()
},
/** 删除按钮操作 */
handleDelete(row) {
// console.log(row)
const taskIds = row.taskId || this.ids
this.$modal
.confirm('是否确认删除所选择的数据项?')
.then(function () {
return purchaseCheckInfoRemove(taskIds)
})
.then(() => {
this.getList()
this.$modal.msgSuccess('删除成功')
})
.catch(() => {})
},
/** 导出按钮操作 */
handleExport() {
this.download(
'material/purchaseCheckInfo/export',
{
...this.queryParams,
},
`新购工机具验收_${new Date().getTime()}.xlsx`,
)
},
// 提交审核按钮
handleSubmit(row) {
const taskId = row.taskId
this.$modal
.confirm('是否确认提交审核?')
.then(() => {
return submitCheck(taskId)
})
.then((res) => {
this.getList()
this.$modal.msgSuccess(res.msg)
})
.catch((err) => {
console.log(err)
// this.$modal.msgError(err)
})
},
},
watch: {
$route: {
handler(to) {
if (to.query.keyWord) {
this.queryParams.keyWord = to.query.keyWord
}
},
deep: true,
immediate: true,
},
},
}
</script>
<style lang="scss" scoped>
::v-deep.el-table .fixed-width .el-button--mini {
width: 70px !important;
margin-bottom: 10px;
}
</style>