新购管理+新购配件
This commit is contained in:
parent
20c22b65e8
commit
c96be871c3
|
|
@ -77,7 +77,14 @@ export function getCheckUserList(query) {
|
|||
})
|
||||
}
|
||||
|
||||
|
||||
// 流程图
|
||||
export function getSignListApi(query) {
|
||||
return request({
|
||||
url: '/material/purchase_check_info/getSignList',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -131,6 +131,7 @@ const user = {
|
|||
|
||||
// 存取用户的userId
|
||||
sessionStorage.setItem('userId', res.user.userId)
|
||||
sessionStorage.setItem('deptName', res.user?.dept?.deptName)
|
||||
return res
|
||||
})
|
||||
.catch(error => Promise.reject(error))
|
||||
|
|
|
|||
|
|
@ -1,202 +1,241 @@
|
|||
<template>
|
||||
<div class="app-container" id="acceptDetail">
|
||||
<el-form
|
||||
:model="queryParams"
|
||||
ref="queryForm"
|
||||
size="small"
|
||||
:inline="true"
|
||||
v-show="showSearch"
|
||||
label-width="90px"
|
||||
>
|
||||
<el-form-item label="类型规格:" prop="partId">
|
||||
<el-select
|
||||
v-model="queryParams.partId"
|
||||
placeholder="请选择类型规格"
|
||||
clearable
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="19" :offset="0">
|
||||
<el-form
|
||||
:model="queryParams"
|
||||
ref="queryForm"
|
||||
size="small"
|
||||
:inline="true"
|
||||
v-show="showSearch"
|
||||
label-width="90px"
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in materialModelList"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
<el-form-item label="类型规格:" prop="partId">
|
||||
<el-select
|
||||
v-model="queryParams.partId"
|
||||
placeholder="请选择类型规格"
|
||||
clearable
|
||||
>
|
||||
<el-option
|
||||
v-for="dict in materialModelList"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="机具厂家:" prop="supplierId">
|
||||
<el-select v-model="queryParams.supplierId" placeholder="请选择机具厂家" clearable>
|
||||
<el-option
|
||||
v-for="dict in supplierList"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item> -->
|
||||
<el-form-item label="出厂日期:" prop="productionTime">
|
||||
<el-date-picker
|
||||
v-model="queryParams.productionTime"
|
||||
placeholder="请选择出厂日期"
|
||||
value-format="yyyy-MM-dd"
|
||||
type="date"
|
||||
>
|
||||
</el-date-picker>
|
||||
</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"
|
||||
size="mini"
|
||||
icon="el-icon-back"
|
||||
@click="jumpList"
|
||||
>配件验收</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> -->
|
||||
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="success"
|
||||
@click="batchPass"
|
||||
icon="el-icon-check"
|
||||
v-show="!isView"
|
||||
size="mini"
|
||||
>合格</el-button
|
||||
>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="danger"
|
||||
@click="batchReject"
|
||||
icon="el-icon-close"
|
||||
v-show="!isView"
|
||||
size="mini"
|
||||
>不合格</el-button
|
||||
>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
:data="tableList"
|
||||
ref="multipleTable"
|
||||
>
|
||||
<!-- <el-table-column
|
||||
type="selection"
|
||||
width="55"
|
||||
align="center" :selectable="selectable"
|
||||
:reserve-selection="true"
|
||||
/> -->
|
||||
<el-table-column label="序号" align="center" width="80" type="index">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="配件类型"
|
||||
align="center"
|
||||
prop="maName"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="机具厂家:" prop="supplierId">
|
||||
<el-select v-model="queryParams.supplierId" placeholder="请选择机具厂家" clearable>
|
||||
<el-option
|
||||
v-for="dict in supplierList"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item> -->
|
||||
<el-form-item label="出厂日期:" prop="productionTime">
|
||||
<el-date-picker
|
||||
v-model="queryParams.productionTime"
|
||||
placeholder="请选择出厂日期"
|
||||
value-format="yyyy-MM-dd"
|
||||
type="date"
|
||||
>
|
||||
</el-date-picker>
|
||||
</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"
|
||||
size="mini"
|
||||
icon="el-icon-back"
|
||||
@click="jumpList"
|
||||
>配件验收</el-button
|
||||
>
|
||||
<el-table-column
|
||||
label="配件名称"
|
||||
align="center"
|
||||
prop="maTypeName"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<el-table-column
|
||||
label="规格型号"
|
||||
align="center"
|
||||
prop="partName"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<el-table-column
|
||||
label="到货数量"
|
||||
align="center"
|
||||
prop="purchaseNum"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<el-table-column
|
||||
label="单位"
|
||||
align="center"
|
||||
prop="unitName"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
|
||||
<!-- <el-table-column
|
||||
label="供应商"
|
||||
align="center"
|
||||
prop="supplier"
|
||||
:show-overflow-tooltip="true"
|
||||
/> -->
|
||||
<el-table-column
|
||||
label="出厂日期"
|
||||
align="center"
|
||||
prop="productionTime"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<el-table-column
|
||||
label="相关配套资料"
|
||||
align="center"
|
||||
prop=""
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<div style="color: #02A7F0;cursor: pointer;" @click="openFileDialog(scope.row)" v-if="scope.row.isExitFile==1">报告管理</div>
|
||||
<div style="color: red;cursor: pointer;" @click="openFileDialog(scope.row)" v-if="scope.row.isExitFile==0">报告管理</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
label="状态"
|
||||
align="center"
|
||||
prop="status"
|
||||
:show-overflow-tooltip="true"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<dict-tag
|
||||
:options="dict.type.purchase_task_status"
|
||||
:value="scope.row.status"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<!-- <el-table-column label="操作" align="center" width="180" v-if="!isView">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="success" @click="pass(scope.row)" v-if="scope.row.status==0">
|
||||
入库
|
||||
</el-button>
|
||||
<el-button size="mini" type="danger" @click="reject(scope.row)" v-if="scope.row.status==0">
|
||||
驳回
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column> -->
|
||||
</el-table>
|
||||
</el-col>
|
||||
<!-- <el-col :span="1.5">
|
||||
<el-button
|
||||
type="warning"
|
||||
plain
|
||||
icon="el-icon-download"
|
||||
size="mini"
|
||||
@click="handleExport"
|
||||
>导出</el-button
|
||||
>
|
||||
</el-col> -->
|
||||
<el-col :span="5" :offset="0">
|
||||
<div class="right-container">
|
||||
<div class="right-title">
|
||||
<div></div>
|
||||
<div></div>
|
||||
<div>流程记录</div>
|
||||
</div>
|
||||
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="success"
|
||||
@click="batchPass"
|
||||
icon="el-icon-check"
|
||||
v-show="!isView"
|
||||
size="mini"
|
||||
:disabled="multiple"
|
||||
>合格</el-button
|
||||
>
|
||||
</el-col>
|
||||
<div class="process-record">
|
||||
<el-steps :space="120" direction="vertical">
|
||||
<el-step v-for="(step, index) in auditingList" :key="index" :title="step.deptName">
|
||||
<template slot="description">
|
||||
<div class="custom-description">
|
||||
审核结果:
|
||||
<el-tag size="mini" type="primary" v-if="step.auditStatus == 0">待审核</el-tag>
|
||||
<el-tag size="mini" type="success" v-if="step.auditStatus == 1">审核通过</el-tag>
|
||||
<el-tag size="mini" type="danger" v-if="step.auditStatus == 2">审核驳回</el-tag>
|
||||
</div>
|
||||
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="danger"
|
||||
@click="batchReject"
|
||||
icon="el-icon-close"
|
||||
v-show="!isView"
|
||||
size="mini"
|
||||
:disabled="multiple"
|
||||
>不合格</el-button
|
||||
>
|
||||
<div class="node-info" v-if="step.userName">
|
||||
审核人:
|
||||
{{ step.userName }}
|
||||
</div>
|
||||
|
||||
<div class="node-info" v-if="step.createTime">
|
||||
审核时间:
|
||||
{{ step.createTime }}
|
||||
</div>
|
||||
|
||||
<div class="node-info" v-if="step.auditRemark">
|
||||
审核意见:
|
||||
{{ step.auditRemark }}
|
||||
</div>
|
||||
</template>
|
||||
</el-step>
|
||||
</el-steps>
|
||||
</div>
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
:data="tableList"
|
||||
ref="multipleTable"
|
||||
row-key="partId"
|
||||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
<el-table-column
|
||||
type="selection"
|
||||
width="55"
|
||||
align="center" :selectable="selectable"
|
||||
:reserve-selection="true"
|
||||
/>
|
||||
<el-table-column label="序号" align="center" width="80" type="index">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="配件类型"
|
||||
align="center"
|
||||
prop="maName"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<el-table-column
|
||||
label="配件名称"
|
||||
align="center"
|
||||
prop="maTypeName"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<el-table-column
|
||||
label="规格型号"
|
||||
align="center"
|
||||
prop="partName"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<el-table-column
|
||||
label="到货数量"
|
||||
align="center"
|
||||
prop="purchaseNum"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<el-table-column
|
||||
label="单位"
|
||||
align="center"
|
||||
prop="unitName"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
|
||||
<!-- <el-table-column
|
||||
label="供应商"
|
||||
align="center"
|
||||
prop="supplier"
|
||||
:show-overflow-tooltip="true"
|
||||
/> -->
|
||||
<el-table-column
|
||||
label="出厂日期"
|
||||
align="center"
|
||||
prop="productionTime"
|
||||
:show-overflow-tooltip="true"
|
||||
/>
|
||||
<el-table-column
|
||||
label="相关配套资料"
|
||||
align="center"
|
||||
prop=""
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<div style="color: #02A7F0;cursor: pointer;" @click="openFileDialog(scope.row)" v-if="scope.row.isExitFile==1">报告管理</div>
|
||||
<div style="color: red;cursor: pointer;" @click="openFileDialog(scope.row)" v-if="scope.row.isExitFile==0">报告管理</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
label="状态"
|
||||
align="center"
|
||||
prop="status"
|
||||
:show-overflow-tooltip="true"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<dict-tag
|
||||
:options="dict.type.purchase_task_status"
|
||||
:value="scope.row.status"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<!-- <el-table-column label="操作" align="center" width="180" v-if="!isView">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="success" @click="pass(scope.row)" v-if="scope.row.status==0">
|
||||
入库
|
||||
</el-button>
|
||||
<el-button size="mini" type="danger" @click="reject(scope.row)" v-if="scope.row.status==0">
|
||||
驳回
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column> -->
|
||||
</el-table>
|
||||
|
||||
<!-- 验收弹窗 -->
|
||||
<el-dialog title="验收" :visible.sync="confirmShow" width="600px" height="300px">
|
||||
<div style="width: 100%; height: 80%; display: flex;margin-bottom: 10px;">
|
||||
|
|
@ -287,6 +326,7 @@ import { getPartType,partTypeWarehouse,partTypeReject,innerVerify } from '@/api/
|
|||
import { getPartTypeCheckInfo,getPartTypeFileList } from '@/api/part/partArrived';
|
||||
import { downloadFile } from "@/utils/download";
|
||||
import { getToken } from "@/utils/auth";
|
||||
import { getSignListApi } from '@/api/purchase/goodsAccept'
|
||||
export default {
|
||||
name: "PartAcceptDetailTwo",
|
||||
dicts: ["purchase_task_status"],
|
||||
|
|
@ -352,6 +392,7 @@ export default {
|
|||
},
|
||||
fileListInfo:[],
|
||||
dialogVisibleFile: false,
|
||||
auditingList: []
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
|
|
@ -368,8 +409,40 @@ export default {
|
|||
this.getPartType();
|
||||
console.log(this.isView);
|
||||
this.getList();
|
||||
this.getSignList()
|
||||
},
|
||||
methods: {
|
||||
// 流程图
|
||||
async getSignList() {
|
||||
try {
|
||||
const res = await getSignListApi({ taskId: this.taskId })
|
||||
console.log('🚀 ~ getSignList ~ res:', res)
|
||||
// 合并auditingList
|
||||
if (res.code === 200 && res.data && res.data.length > 0) {
|
||||
const kuGuanOrder = ['库管一班', '库管二班', '库管三班']
|
||||
// 用 deptName 去重
|
||||
const map = new Map()
|
||||
res.data.forEach(item => map.set(item.deptName, { ...item }))
|
||||
// 查找有数据的库管班
|
||||
const kuGuanItem = kuGuanOrder.map(name => map.get(name)).find(Boolean)
|
||||
// 组装最终列表
|
||||
this.auditingList = [
|
||||
// 第一层:供应科,userName 没有值时默认 '姚士超'
|
||||
(() => {
|
||||
const item = map.get('供应科') || { deptName: '供应科', auditStatus: 1 }
|
||||
return { ...item, userName: item.userName || '姚士超' }
|
||||
})(),
|
||||
// 第二层:技术科
|
||||
map.get('技术科') || { deptName: '技术科', auditStatus: 0 },
|
||||
// 第三层:库管班
|
||||
kuGuanItem || { deptName: '库管班', auditStatus: 0 }
|
||||
]
|
||||
console.log('🚀 ~ getSignList ~ this.auditingList:', this.auditingList)
|
||||
}
|
||||
} catch (error) {
|
||||
console.log('🚀 ~ getSignList ~ error:', error)
|
||||
}
|
||||
},
|
||||
//是否可用勾选框
|
||||
selectable(row) {
|
||||
console.log(row)
|
||||
|
|
@ -468,15 +541,15 @@ export default {
|
|||
|
||||
//批量入库
|
||||
batchPass() {
|
||||
if(this.infos==0){
|
||||
this.$modal.msgError("请选择配件");
|
||||
return;
|
||||
}
|
||||
// if(this.infos==0){
|
||||
// this.$modal.msgError("请选择配件");
|
||||
// return;
|
||||
// }
|
||||
this.taskStatus = "3";
|
||||
this.checkResult = "合格";
|
||||
this.verifyPass = true;
|
||||
this.checkList = [];
|
||||
this.checkList = this.ids.map((item) => {
|
||||
this.checkList = this.tableList.map((item) => {
|
||||
let obj = {
|
||||
taskId: item.taskId,
|
||||
partId: item.partId,
|
||||
|
|
@ -489,15 +562,15 @@ export default {
|
|||
|
||||
//批量驳回
|
||||
batchReject() {
|
||||
if(this.infos==0){
|
||||
this.$modal.msgError("请选择配件");
|
||||
return;
|
||||
}
|
||||
// if(this.infos==0){
|
||||
// this.$modal.msgError("请选择配件");
|
||||
// return;
|
||||
// }
|
||||
this.taskStatus = "1";
|
||||
this.checkResult = "不合格";
|
||||
this.verifyPass = false;
|
||||
this.checkList = [];
|
||||
this.checkList = this.ids.map((item) => {
|
||||
this.checkList = this.tableList.map((item) => {
|
||||
let obj = {
|
||||
taskId: item.taskId,
|
||||
partId: item.partId,
|
||||
|
|
@ -524,6 +597,8 @@ export default {
|
|||
this.confirmShow = false;
|
||||
this.getList();
|
||||
this.$refs.multipleTable.clearSelection();
|
||||
// 返回
|
||||
this.jumpList()
|
||||
}
|
||||
});
|
||||
},
|
||||
|
|
@ -651,4 +726,74 @@ export default {
|
|||
display: none;
|
||||
}
|
||||
}
|
||||
.right-container {
|
||||
padding: 0 20px;
|
||||
.right-title {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-size: 14px;
|
||||
& div:first-child {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
border-radius: 50%;
|
||||
background-color: #19a4a0;
|
||||
z-index: 9;
|
||||
}
|
||||
& div:nth-child(2) {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
border-radius: 50%;
|
||||
background-color: #b2e1e0;
|
||||
transform: translateX(-50%);
|
||||
}
|
||||
}
|
||||
.process-record {
|
||||
margin-top: 20px;
|
||||
// height: 60vh;
|
||||
.node-info {
|
||||
word-break: break-all;
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.btn-container {
|
||||
margin-top: 10px;
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
}
|
||||
|
||||
::v-deep .el-step__icon.is-text {
|
||||
background-color: #19a4a0;
|
||||
color: #19a4a0;
|
||||
border: none;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
|
||||
::v-deep .el-step.is-vertical .el-step__line {
|
||||
width: 2px;
|
||||
top: 26px;
|
||||
bottom: 8px;
|
||||
left: 7px;
|
||||
}
|
||||
|
||||
::v-deep .el-step__title.is-finish {
|
||||
font-weight: bold;
|
||||
color: #303133;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
::v-deep .el-step__title.is-wait {
|
||||
font-weight: bold;
|
||||
color: #303133;
|
||||
font-size: 16px;
|
||||
}
|
||||
// 居中
|
||||
.cont-center {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -83,7 +83,7 @@
|
|||
</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="primary" v-if="scope.row.taskStatusName == '未完成'"
|
||||
type="primary" v-if="scope.row.taskStatusName == '未完成' && deptName.includes(signLevelDeptMap[scope.row.signLevel])"
|
||||
@click="handleUpdate(scope.row)"
|
||||
>
|
||||
验收
|
||||
|
|
@ -251,7 +251,6 @@ import { passAll, rejectAll } from '@/api/part/partAccept';
|
|||
import vueEasyPrint from "vue-easy-print";
|
||||
import { downloadFile } from '@/utils/download'
|
||||
import { getToken } from '@/utils/auth'
|
||||
import printJS from 'print-js'
|
||||
export default {
|
||||
name: "PartAcceptTwo",
|
||||
dicts: ['part_task_status'],
|
||||
|
|
@ -295,6 +294,11 @@ import printJS from 'print-js'
|
|||
{ value: '1', label: '李四' },
|
||||
{ value: '2', label: '王五' },
|
||||
],
|
||||
deptName: sessionStorage.getItem("deptName"),
|
||||
signLevelDeptMap: {
|
||||
'2': '技术科',
|
||||
'3': '库管'
|
||||
}
|
||||
};
|
||||
},
|
||||
created() {
|
||||
|
|
@ -415,16 +419,16 @@ import printJS from 'print-js'
|
|||
});
|
||||
},
|
||||
//打印
|
||||
print() {
|
||||
// this.$refs.remarksPrintRef.print()
|
||||
printJS({
|
||||
printable: 'checkId',
|
||||
type: 'html',
|
||||
targetStyles: ['*'],
|
||||
maxWidth:'1400'
|
||||
// 其他配置选项
|
||||
});
|
||||
},
|
||||
// print() {
|
||||
// // this.$refs.remarksPrintRef.print()
|
||||
// printJS({
|
||||
// printable: 'checkId',
|
||||
// type: 'html',
|
||||
// targetStyles: ['*'],
|
||||
// maxWidth:'1400'
|
||||
// // 其他配置选项
|
||||
// });
|
||||
// },
|
||||
handleExport() {
|
||||
const formatTime = (date) => {
|
||||
const year = date.getFullYear();
|
||||
|
|
|
|||
|
|
@ -193,7 +193,7 @@
|
|||
size="mini"
|
||||
style="margin-bottom: 10px"
|
||||
type="primary"
|
||||
v-if="scope.row.taskStatusName == '未完成'"
|
||||
v-show="scope.row.taskStatusName == '未完成'"
|
||||
@click="handleUpdate(scope.row)"
|
||||
v-hasPermi="['purchase:info:edit']"
|
||||
>编辑</el-button
|
||||
|
|
@ -209,6 +209,7 @@
|
|||
>
|
||||
|
||||
<el-button
|
||||
v-show="scope.row.taskStatusName == '未完成'"
|
||||
size="mini"
|
||||
type="danger"
|
||||
@click="handleDeletePart(scope.row)"
|
||||
|
|
@ -378,7 +379,7 @@
|
|||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-table :data="getListPeople" width="600px" height="450" @selection-change="handleSelectionUser">
|
||||
<el-table :data="getListPeople" width="600px" height="450" @selection-change="handleSelectionUser" row-key="id">
|
||||
<el-table-column type="selection" width="55" align="center" :reserve-selection="true"/>
|
||||
<el-table-column label="人员名称" align="center" prop="userName" :show-overflow-tooltip="true"/>
|
||||
<el-table-column label="所属机构" align="center" prop="deptName" :show-overflow-tooltip="true"/>
|
||||
|
|
|
|||
|
|
@ -48,27 +48,13 @@
|
|||
</el-col>
|
||||
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="success"
|
||||
icon="el-icon-check"
|
||||
size="mini"
|
||||
@click="batchPass"
|
||||
v-show="!isView"
|
||||
:disabled="multiple"
|
||||
>
|
||||
<el-button type="success" icon="el-icon-check" size="mini" @click="batchPass" v-show="!isView">
|
||||
合格
|
||||
</el-button>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="danger"
|
||||
icon="el-icon-close"
|
||||
size="mini"
|
||||
@click="batchReject"
|
||||
v-show="!isView"
|
||||
:disabled="multiple"
|
||||
>
|
||||
<el-button type="danger" icon="el-icon-close" size="mini" @click="batchReject" v-show="!isView">
|
||||
不合格
|
||||
</el-button>
|
||||
</el-col>
|
||||
|
|
@ -84,14 +70,14 @@
|
|||
row-key="typeId"
|
||||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
<el-table-column
|
||||
<!-- <el-table-column
|
||||
type="selection"
|
||||
width="55"
|
||||
align="center"
|
||||
:selectable="selectable"
|
||||
:reserve-selection="true"
|
||||
v-if="!isView"
|
||||
/>
|
||||
/> -->
|
||||
<el-table-column label="序号" align="center" width="80" type="index"></el-table-column>
|
||||
<el-table-column label="物资名称" align="center" prop="maTypeName" :show-overflow-tooltip="true" />
|
||||
<el-table-column label="规格型号" align="center" prop="typeName" :show-overflow-tooltip="true" />
|
||||
|
|
@ -159,18 +145,18 @@
|
|||
|
||||
<div class="process-record">
|
||||
<el-steps :space="120" direction="vertical">
|
||||
<el-step v-for="(step, index) in auditingList" :key="index" :title="step.nodeName">
|
||||
<el-step v-for="(step, index) in auditingList" :key="index" :title="step.deptName">
|
||||
<template slot="description">
|
||||
<div class="custom-description">
|
||||
审核结果:
|
||||
<el-tag size="mini" type="primary" v-if="step.isAccept === 0">待审批</el-tag>
|
||||
<el-tag size="mini" type="success" v-if="step.isAccept === 1">已通过</el-tag>
|
||||
<el-tag size="mini" type="danger" v-if="step.isAccept === 2">已驳回</el-tag>
|
||||
<el-tag size="mini" type="primary" v-if="step.auditStatus == 0">待审核</el-tag>
|
||||
<el-tag size="mini" type="success" v-if="step.auditStatus == 1">审核通过</el-tag>
|
||||
<el-tag size="mini" type="danger" v-if="step.auditStatus == 2">审核驳回</el-tag>
|
||||
</div>
|
||||
|
||||
<div class="node-info" v-if="step.name">
|
||||
<div class="node-info" v-if="step.userName">
|
||||
审核人:
|
||||
{{ step.name }}
|
||||
{{ step.userName }}
|
||||
</div>
|
||||
|
||||
<div class="node-info" v-if="step.createTime">
|
||||
|
|
@ -178,9 +164,9 @@
|
|||
{{ step.createTime }}
|
||||
</div>
|
||||
|
||||
<div class="node-info" v-if="step.remark">
|
||||
<div class="node-info" v-if="step.auditRemark">
|
||||
审核意见:
|
||||
{{ step.remark }}
|
||||
{{ step.auditRemark }}
|
||||
</div>
|
||||
</template>
|
||||
</el-step>
|
||||
|
|
@ -280,7 +266,8 @@ import {
|
|||
acceptInnerVerifyer,
|
||||
getPurchaseFileList,
|
||||
uploadPurchaseFile,
|
||||
getCheckUserList
|
||||
getCheckUserList,
|
||||
getSignListApi
|
||||
} from '@/api/purchase/goodsAccept'
|
||||
import { downloadFile } from '@/utils/download'
|
||||
import { getToken } from '@/utils/auth'
|
||||
|
|
@ -348,11 +335,7 @@ export default {
|
|||
},
|
||||
checkUserList: [], // 验收人列表
|
||||
checkUser: '', // 验收人
|
||||
auditingList: [
|
||||
{ nodeName: '供应科审核', isAccept: 1, name: '姚士超', createTime: '2025-05-21' },
|
||||
{ nodeName: '技术科审核', isAccept: 0 },
|
||||
{ nodeName: '库管班审核', isAccept: 0 }
|
||||
]
|
||||
auditingList: []
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
|
|
@ -371,8 +354,40 @@ export default {
|
|||
console.log(this.isView)
|
||||
this.getList()
|
||||
this.getCheckUser()
|
||||
this.getSignList()
|
||||
},
|
||||
methods: {
|
||||
// 流程图
|
||||
async getSignList() {
|
||||
try {
|
||||
const res = await getSignListApi({ taskId: this.taskId })
|
||||
console.log('🚀 ~ getSignList ~ res:', res)
|
||||
// 合并auditingList
|
||||
if (res.code === 200 && res.data && res.data.length > 0) {
|
||||
const kuGuanOrder = ['库管一班', '库管二班', '库管三班']
|
||||
// 用 deptName 去重
|
||||
const map = new Map()
|
||||
res.data.forEach(item => map.set(item.deptName, { ...item }))
|
||||
// 查找有数据的库管班
|
||||
const kuGuanItem = kuGuanOrder.map(name => map.get(name)).find(Boolean)
|
||||
// 组装最终列表
|
||||
this.auditingList = [
|
||||
// 第一层:供应科,userName 没有值时默认 '姚士超'
|
||||
(() => {
|
||||
const item = map.get('供应科') || { deptName: '供应科', auditStatus: 1 }
|
||||
return { ...item, userName: '姚士超' }
|
||||
})(),
|
||||
// 第二层:技术科
|
||||
map.get('技术科') || { deptName: '技术科', auditStatus: 0 },
|
||||
// 第三层:库管班
|
||||
kuGuanItem || { deptName: '库管班', auditStatus: 0 }
|
||||
]
|
||||
console.log('🚀 ~ getSignList ~ this.auditingList:', this.auditingList)
|
||||
}
|
||||
} catch (error) {
|
||||
console.log('🚀 ~ getSignList ~ error:', error)
|
||||
}
|
||||
},
|
||||
// 获取验收人
|
||||
async getCheckUser() {
|
||||
try {
|
||||
|
|
@ -498,7 +513,7 @@ export default {
|
|||
this.checkResult = '合格'
|
||||
this.verifyPass = true
|
||||
this.checkList = []
|
||||
this.checkList = this.ids.map(item => {
|
||||
this.checkList = this.tableList.map(item => {
|
||||
let obj = {
|
||||
taskId: item.taskId,
|
||||
typeId: item.typeId,
|
||||
|
|
@ -516,7 +531,7 @@ export default {
|
|||
this.checkResult = '不合格'
|
||||
this.verifyPass = false
|
||||
this.checkList = []
|
||||
this.checkList = this.ids.map(item => {
|
||||
this.checkList = this.tableList.map(item => {
|
||||
let obj = {
|
||||
taskId: item.taskId,
|
||||
typeId: item.typeId,
|
||||
|
|
@ -543,7 +558,9 @@ export default {
|
|||
this.$modal.msgSuccess(response.msg)
|
||||
this.confirmShow = false
|
||||
this.getList()
|
||||
this.getSignList()
|
||||
this.$refs.multipleTable.clearSelection()
|
||||
this.jumpList()
|
||||
}
|
||||
})
|
||||
},
|
||||
|
|
@ -627,17 +644,17 @@ export default {
|
|||
},
|
||||
/** 导出按钮操作 */
|
||||
handleExport() {
|
||||
const formatTime = (date) => {
|
||||
const year = date.getFullYear();
|
||||
const month = String(date.getMonth() + 1).padStart(2, '0');
|
||||
const day = String(date.getDate()).padStart(2, '0');
|
||||
const hours = String(date.getHours()).padStart(2, '0');
|
||||
const minutes = String(date.getMinutes()).padStart(2, '0');
|
||||
const seconds = String(date.getSeconds()).padStart(2, '0');
|
||||
return `${year}${month}${day}_${hours}${minutes}${seconds}`;
|
||||
};
|
||||
const formatTime = date => {
|
||||
const year = date.getFullYear()
|
||||
const month = String(date.getMonth() + 1).padStart(2, '0')
|
||||
const day = String(date.getDate()).padStart(2, '0')
|
||||
const hours = String(date.getHours()).padStart(2, '0')
|
||||
const minutes = String(date.getMinutes()).padStart(2, '0')
|
||||
const seconds = String(date.getSeconds()).padStart(2, '0')
|
||||
return `${year}${month}${day}_${hours}${minutes}${seconds}`
|
||||
}
|
||||
|
||||
const currentTime = formatTime(new Date());
|
||||
const currentTime = formatTime(new Date())
|
||||
this.download(
|
||||
'/material/purchase_check_info/exportDetails',
|
||||
{ taskId: this.taskId, taskStage: 2, id: this.Id },
|
||||
|
|
@ -671,31 +688,35 @@ export default {
|
|||
}
|
||||
.right-container {
|
||||
padding: 0 20px;
|
||||
.right-title {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-size: 14px;
|
||||
& div:first-child {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
border-radius: 50%;
|
||||
background-color: #19a4a0;
|
||||
z-index: 9;
|
||||
}
|
||||
& div:nth-child(2) {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
border-radius: 50%;
|
||||
background-color: #b2e1e0;
|
||||
transform: translateX(-50%);
|
||||
}
|
||||
}
|
||||
.process-record {
|
||||
margin-top: 20px;
|
||||
// height: 60vh;
|
||||
.node-info {
|
||||
word-break: break-all;
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.right-title {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-size: 14px;
|
||||
& div:first-child {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
border-radius: 50%;
|
||||
background-color: #19a4a0;
|
||||
z-index: 9;
|
||||
}
|
||||
& div:nth-child(2) {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
border-radius: 50%;
|
||||
background-color: #b2e1e0;
|
||||
transform: translateX(-50%);
|
||||
}
|
||||
}
|
||||
.process-record {
|
||||
margin-top: 20px;
|
||||
// height: 60vh;
|
||||
}
|
||||
|
||||
.btn-container {
|
||||
margin-top: 10px;
|
||||
|
|
|
|||
|
|
@ -102,7 +102,7 @@
|
|||
</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="primary" v-if="scope.row.taskStatusName == '未完成'"
|
||||
type="primary" v-if="scope.row.taskStatusName == '未完成' && deptName.includes(signLevelDeptMap[scope.row.signLevel])"
|
||||
@click="handleUpdate(scope.row)"
|
||||
>
|
||||
验收
|
||||
|
|
@ -286,10 +286,15 @@
|
|||
openPrint: false,
|
||||
printData: {},
|
||||
printTableData: [],
|
||||
deptName: sessionStorage.getItem("deptName"),
|
||||
signLevelDeptMap: {
|
||||
'2': '技术科',
|
||||
'3': '库管'
|
||||
}
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.getList();
|
||||
this.getList()
|
||||
},
|
||||
methods: {
|
||||
//是否可用勾选框
|
||||
|
|
|
|||
|
|
@ -509,7 +509,7 @@ export default {
|
|||
},
|
||||
// 显示验收单
|
||||
showCheckForm(row) {
|
||||
return [3, 4, 13, 14, 19, 21, 22].includes(Number(row.purchaseStatus))
|
||||
return [3, 4, 12, 13, 14, 19, 21, 22].includes(Number(row.purchaseStatus))
|
||||
},
|
||||
// 显示入库单
|
||||
showInboundForm(row) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue