This commit is contained in:
bb_pan 2025-06-18 20:07:48 +08:00
parent 98c23b4154
commit 0f73417cc2
7 changed files with 419 additions and 443 deletions

View File

@ -572,11 +572,11 @@ export default {
// },
// ],
phone: [
{
required: true,
trigger: 'blur',
message: '请输入退料人的手机号'
},
// {
// required: true,
// trigger: 'blur',
// message: '退'
// },
{
pattern: /^1[3456789]\d{9}$/,
message: '请输入正确的手机号码',

View File

@ -1099,7 +1099,7 @@ export default {
//
highlightText(text, keyword) {
console.log("yyyyyyyyyyyyy",text,keyword)
// console.log("yyyyyyyyyyyyy",text,keyword)
if (!keyword) return text;
const reg = new RegExp(keyword, 'gi');
return text.replace(reg, match => `<span class="highlight-text">${match}</span>`);
@ -1167,9 +1167,8 @@ export default {
if (this.currentMatchIndex === -1 || !this.matchedOptions.length) return;
const option = this.matchedOptions[this.currentMatchIndex];
const selectDom = this.$el.querySelector('.el-select-dropdown__wrap');
const selectDom = this.$el.querySelector('.type-select-dropdown');
const optionDom = selectDom?.querySelector(`[data-key="${option.typeId}"]`);
if (optionDom) {
optionDom.scrollIntoView({ block: 'center', behavior: 'smooth' });
}
@ -1225,7 +1224,7 @@ export default {
// overflow-y: auto;
// }
.highlight-text {
::v-deep .highlight-text {
background-color: #ffd04b;
color: #000;
}

View File

@ -11,17 +11,8 @@
label-width="90px"
>
<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 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">
@ -40,33 +31,18 @@
placeholder="请选择出厂日期"
value-format="yyyy-MM-dd"
type="date"
>
</el-date-picker>
></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-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-button type="primary" size="mini" icon="el-icon-back" @click="jumpList">配件验收</el-button>
</el-col>
<!-- <el-col :span="1.5">
<el-button
@ -78,111 +54,66 @@
>导出</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-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-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 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-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" 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"
>
<el-table-column label="出厂日期" align="center" prop="productionTime" :show-overflow-tooltip="true" />
<el-table-column label="相关配套资料" align="center" prop="">
<template slot-scope="scope">
<dict-tag
:options="dict.type.purchase_task_status"
:value="scope.row.status"
/>
<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">
@ -238,42 +169,43 @@
<!-- 验收弹窗 -->
<el-dialog title="验收" :visible.sync="confirmShow" width="600px" height="300px">
<div style="width: 100%; height: 80%; display: flex;margin-bottom: 10px;">
<div style="width:15%;">验收结论</div>
<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%;"
:rows="3"
style="width: 80%"
placeholder="请输入结论"
v-model="checkResult"
maxlength="100">
</el-input>
maxlength="100"
></el-input>
</div>
<div style="width: 100%;height: 20%;display: flex;justify-content: flex-end;align-items: center;">
<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="confirmShow = false">取消</el-button>
</div>
</el-dialog>
<el-dialog title="报告管理" :visible.sync="open" width="900px" append-to-body>
<el-table :data="fileDataList" width="100%" height="350px">
<el-table-column label="序号" type="index" width="55" align="center"/>
<el-table-column label="报告类型" align="center" prop="dictLabel" :show-overflow-tooltip="true"/>
<el-table-column label="类型名称" align="center" :show-overflow-tooltip="true">
<template>
<div>{{this.rowData.maTypeName}}</div>
</template>
</el-table-column>
<el-table-column label="规格型号" align="center" :show-overflow-tooltip="true">
<template>
<div>{{this.rowData.partName}}</div>
</template>
</el-table-column>
<!-- <el-table-column label="报告日期" align="center" prop="orgName" :show-overflow-tooltip="true"/>
<el-dialog title="报告管理" :visible.sync="open" width="900px" append-to-body>
<el-table :data="fileDataList" width="100%" height="350px">
<el-table-column label="序号" type="index" width="55" align="center" />
<el-table-column label="报告类型" align="center" prop="dictLabel" :show-overflow-tooltip="true" />
<el-table-column label="类型名称" align="center" :show-overflow-tooltip="true">
<template>
<div>{{ this.rowData.maTypeName }}</div>
</template>
</el-table-column>
<el-table-column label="规格型号" align="center" :show-overflow-tooltip="true">
<template>
<div>{{ this.rowData.partName }}</div>
</template>
</el-table-column>
<!-- <el-table-column label="报告日期" align="center" prop="orgName" :show-overflow-tooltip="true"/>
<el-table-column label="截止有效期" align="center" prop="orgName" :show-overflow-tooltip="true"/> -->
<el-table-column label="操作" align="center" width="100">
<template slot-scope="scope">
<div style="display: flex;align-items: center;justify-content: center;">
<!-- <el-upload ref="upload" :limit="1" :headers="upload.headers"
<el-table-column label="操作" align="center" width="100">
<template slot-scope="scope">
<div style="display: flex; align-items: center; justify-content: center">
<!-- <el-upload ref="upload" :limit="1" :headers="upload.headers"
:action="upload.url" :show-file-list="false" accept=".png, .jpg, .jpeg, .pdf, .doc, .docx"
:on-success="handleFileSuccess" :auto-upload="true"
>
@ -282,58 +214,55 @@
</el-button>
</el-upload> -->
<el-button size="mini" type="text" @click="picturePreviewFile(scope.row)" v-if="scope.row.fileListTemp!=0">
查看
</el-button>
</div>
<el-button
size="mini"
type="text"
@click="picturePreviewFile(scope.row)"
v-if="scope.row.fileListTemp != 0"
>
查看
</el-button>
</div>
</template>
</el-table-column>
</el-table>
</el-dialog>
<!-- 图片查看弹窗 -->
<el-dialog :visible.sync="dialogVisible" width="500px" height="500px">
<img width="100%" height="500px" :src="dialogImageUrl" />
</el-dialog>
</template>
</el-table-column>
</el-table>
</el-dialog>
<!-- 图片查看弹窗 -->
<el-dialog :visible.sync="dialogVisible" width="500px" height="500px" >
<img width="100%" height="500px" :src="dialogImageUrl" />
</el-dialog>
<!-- 文件查看列表 -->
<el-dialog title="文件列表" :visible.sync="dialogVisibleFile" width="500px" height="500px" >
<el-table :data="fileListInfo" width="100%" height="350px">
<el-table-column label="序号" type="index" width="55" align="center"/>
<el-table-column label="文件名称" align="center" prop="name" :show-overflow-tooltip="true"/>
<el-table-column label="操作" align="center" >
<template slot-scope="scope">
<el-button size="mini" type="text" @click="picturePreview(scope.row)" v-if="scope.row.url" >
查看
</el-button>
</template>
</el-table-column>
</el-table>
</el-dialog>
<!-- 文件查看列表 -->
<el-dialog title="文件列表" :visible.sync="dialogVisibleFile" width="500px" height="500px">
<el-table :data="fileListInfo" width="100%" height="350px">
<el-table-column label="序号" type="index" width="55" align="center" />
<el-table-column label="文件名称" align="center" prop="name" :show-overflow-tooltip="true" />
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<el-button size="mini" type="text" @click="picturePreview(scope.row)" v-if="scope.row.url">查看</el-button>
</template>
</el-table-column>
</el-table>
</el-dialog>
</div>
</template>
<script>
import { getManufacturerSelect } from "@/api/ma/supplier";
import {
acceptInnerVerifyer,
getPurchaseFileList,
uploadPurchaseFile,
} from "@/api/purchase/goodsAccept";
import { getPartType,partTypeWarehouse,partTypeReject,innerVerify } from '@/api/part/partAccept';
import { getPartTypeCheckInfo,getPartTypeFileList } from '@/api/part/partArrived';
import { downloadFile } from "@/utils/download";
import { getToken } from "@/utils/auth";
<script>
import { getManufacturerSelect } from '@/api/ma/supplier'
import { acceptInnerVerifyer, getPurchaseFileList, uploadPurchaseFile } from '@/api/purchase/goodsAccept'
import { getPartType, partTypeWarehouse, partTypeReject, innerVerify } from '@/api/part/partAccept'
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"],
name: 'PartAcceptDetailTwo',
dicts: ['purchase_task_status'],
data() {
return {
Id: "",
taskId: "",
Id: '',
taskId: '',
//
loading: false,
dialogLoading: false,
@ -354,18 +283,18 @@ export default {
total: 0,
//
tableList: [],
fixCodeList: ["否", "是"],
fixCodeList: ['否', '是'],
//
title: "",
title: '',
//
open: false,
rowData: {},
fileDataList: [
{ dictLabel: "合格证", fileType: "0", name: "", url: "" },
{ dictLabel: "型式试验报告", fileType: "1", name: "", url: "" },
{ dictLabel: "出厂检测报告", fileType: "2", name: "", url: "" },
{ dictLabel: "第三方检测报告", fileType: "3", name: "", url: "" },
{ dictLabel: "其他", fileType: "4", name: "", url: "" },
{ dictLabel: '合格证', fileType: '0', name: '', url: '' },
{ dictLabel: '型式试验报告', fileType: '1', name: '', url: '' },
{ dictLabel: '出厂检测报告', fileType: '2', name: '', url: '' },
{ dictLabel: '第三方检测报告', fileType: '3', name: '', url: '' },
{ dictLabel: '其他', fileType: '4', name: '', url: '' }
],
//
queryParams: {
@ -373,42 +302,42 @@ export default {
// pageSize: 10,
partId: undefined,
supplierId: undefined,
productionTime: undefined,
productionTime: undefined
},
//
confirmShow: false,
taskStatus: "", //31
checkResult: "",
taskStatus: '', //31
checkResult: '',
verifyPass: true, //truefalse
//
dialogImageUrl: "",
dialogImageUrl: '',
dialogVisible: false,
//
upload: {
//
headers: { Authorization: "Bearer " + getToken() },
headers: { Authorization: 'Bearer ' + getToken() },
//
url: process.env.VUE_APP_BASE_API + "/file/upload",
url: process.env.VUE_APP_BASE_API + '/file/upload'
},
fileListInfo:[],
fileListInfo: [],
dialogVisibleFile: false,
auditingList: []
};
}
},
mounted() {
const taskId = this.$route.query && this.$route.query.taskId;
const Id = this.$route.query && this.$route.query.Id;
const isView = this.$route.query && this.$route.query.isView;
this.taskId = taskId;
this.Id = Id;
if (isView == "true") {
this.isView = true;
const taskId = this.$route.query && this.$route.query.taskId
const Id = this.$route.query && this.$route.query.Id
const isView = this.$route.query && this.$route.query.isView
this.taskId = taskId
this.Id = Id
if (isView == 'true') {
this.isView = true
} else {
this.isView = false;
this.isView = false
}
this.getPartType();
console.log(this.isView);
this.getList();
this.getPartType()
console.log(this.isView)
this.getList()
this.getSignList()
},
methods: {
@ -419,25 +348,42 @@ export default {
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 }
const length = res.data.length
this.auditingList = res.data.map((item, index) => {
return {
...item,
deptName: index == 0 ? '供应科' : item.deptName || '',
auditStatus: 1
}
})
const list = [
{ deptName: '安全/技术科', auditStatus: 0 },
{ deptName: '库管班', auditStatus: 0 }
]
console.log('🚀 ~ getSignList ~ this.auditingList:', this.auditingList)
if (length == 1) {
this.auditingList.push(...list)
} else if (length == 2) {
this.auditingList.push(list[1])
}
console.log('🚀 ~ getSignList ~ this.审核:', this.auditingList)
// 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 }
// ]
}
} catch (error) {
console.log('🚀 ~ getSignList ~ error:', error)
@ -446,70 +392,70 @@ export default {
//
selectable(row) {
console.log(row)
if (row.status == 2||row.status == 13 ||row.status == 14) {
return true
if (row.status == 2 || row.status == 13 || row.status == 14) {
return true
} else {
return false
return false
}
},
//
jumpList() {
const obj = { path: "/part/partAcceptTwo" };
this.$tab.closeOpenPage(obj);
const obj = { path: '/part/partAcceptTwo' }
this.$tab.closeOpenPage(obj)
},
getPartType() {
getPartType({ level: 3 }).then((response) => {
let matModelRes = response.data;
this.materialModelList = matModelRes.map((item) => {
getPartType({ level: 3 }).then(response => {
let matModelRes = response.data
this.materialModelList = matModelRes.map(item => {
return {
label: item.partName,
value: item.partId,
};
});
});
value: item.partId
}
})
})
},
getSupplierList() {
getManufacturerSelect().then((response) => {
let arrRes = response.rows;
this.supplierList = arrRes.map((item) => {
getManufacturerSelect().then(response => {
let arrRes = response.rows
this.supplierList = arrRes.map(item => {
return {
label: item.supplier,
value: item.supplierId,
};
});
});
value: item.supplierId
}
})
})
},
/** 查询列表 */
getList() {
this.loading = true;
this.queryParams.id = this.Id;
this.queryParams.taskId = this.taskId;
getPartTypeCheckInfo(this.queryParams).then((response) => {
this.tableList = response.data.partTypeCheckDetailsList;
this.loading = true
this.queryParams.id = this.Id
this.queryParams.taskId = this.taskId
getPartTypeCheckInfo(this.queryParams).then(response => {
this.tableList = response.data.partTypeCheckDetailsList
// this.total = response.total;
this.loading = false;
});
this.loading = false
})
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.queryParams.keyWord = null;
this.handleQuery();
this.resetForm('queryForm')
this.queryParams.keyWord = null
this.handleQuery()
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
this.queryParams.pageNum = 1
this.getList()
},
//
handleSelectionChange(selection) {
this.ids = selection;
this.infos = [];
selection.forEach((item) => {
this.infos.push({id:item.id,partId:item.partId,purchaseNum:item.purchaseNum,taskId:item.taskId});
});
this.single = selection.length != 1;
this.multiple = !selection.length;
this.ids = selection
this.infos = []
selection.forEach(item => {
this.infos.push({ id: item.id, partId: item.partId, purchaseNum: item.purchaseNum, taskId: item.taskId })
})
this.single = selection.length != 1
this.multiple = !selection.length
},
//
pass(row) {
@ -518,25 +464,31 @@ export default {
// return;
// }
const infos=[{id:row.id,partId:row.partId,purchaseNum:row.purchaseNum,taskId:this.taskId}]
this.$modal.confirm('是否确认入库该配件?')
.then(function() {
return partTypeWarehouse(infos)
}).then(() => {
this.$modal.msgSuccess('入库成功')
this.getList()
}).catch(() => {});
const infos = [{ id: row.id, partId: row.partId, purchaseNum: row.purchaseNum, taskId: this.taskId }]
this.$modal
.confirm('是否确认入库该配件?')
.then(function () {
return partTypeWarehouse(infos)
})
.then(() => {
this.$modal.msgSuccess('入库成功')
this.getList()
})
.catch(() => {})
},
//
reject(row) {
const infos=[{id:row.id,partId:row.partId,purchaseNum:row.purchaseNum,taskId:this.taskId}]
this.$modal.confirm('是否确认驳回该配件?')
.then(function() {
return partTypeReject(infos)
}).then(() => {
this.$modal.msgSuccess('驳回成功')
this.getList()
}).catch(() => {});
const infos = [{ id: row.id, partId: row.partId, purchaseNum: row.purchaseNum, taskId: this.taskId }]
this.$modal
.confirm('是否确认驳回该配件?')
.then(function () {
return partTypeReject(infos)
})
.then(() => {
this.$modal.msgSuccess('驳回成功')
this.getList()
})
.catch(() => {})
},
//
@ -545,102 +497,105 @@ export default {
// this.$modal.msgError("");
// return;
// }
this.taskStatus = "3";
this.checkResult = "合格";
this.verifyPass = true;
this.checkList = [];
this.checkList = this.tableList.map((item) => {
this.taskStatus = '3'
this.checkResult = '合格'
this.verifyPass = true
this.checkList = []
this.checkList = this.tableList.map(item => {
let obj = {
taskId: item.taskId,
partId: item.partId,
checkResult: this.checkResult,
};
return obj;
});
this.confirmShow = true;
checkResult: this.checkResult
}
return obj
})
this.confirmShow = true
},
//
batchReject() {
// if(this.infos==0){
// this.$modal.msgError("");
// return;
// }
this.taskStatus = "1";
this.checkResult = "不合格";
this.verifyPass = false;
this.checkList = [];
this.checkList = this.tableList.map((item) => {
// if(this.infos==0){
// this.$modal.msgError("");
// return;
// }
this.taskStatus = '1'
this.checkResult = '不合格'
this.verifyPass = false
this.checkList = []
this.checkList = this.tableList.map(item => {
let obj = {
taskId: item.taskId,
partId: item.partId,
checkResult: this.checkResult,
};
return obj;
});
this.confirmShow = true;
checkResult: this.checkResult
}
return obj
})
this.confirmShow = true
},
//
confirmCheck() {
this.checkList.forEach((item) => {
item.checkResult = this.checkResult;
});
this.checkList.forEach(item => {
item.checkResult = this.checkResult
})
let param = {
purchaseCheckDetailsList:this.checkList,
verifyPass:this.verifyPass
purchaseCheckDetailsList: this.checkList,
verifyPass: this.verifyPass
}
console.log(param);
innerVerify(param).then((response) => {
console.log(param)
innerVerify(param).then(response => {
if (response.code == 200) {
this.$modal.msgSuccess("验收成功");
this.confirmShow = false;
this.getList();
this.$refs.multipleTable.clearSelection();
this.$modal.msgSuccess('验收成功')
this.confirmShow = false
this.getList()
this.$refs.multipleTable.clearSelection()
//
this.jumpList()
}
});
})
},
//
openFileDialog(row){
this.rowData=row;
this.fileDataList = [{dictLabel:"合格证",fileType:"0",name:"",url:"",fileList:[],fileListTemp:[]},
{dictLabel:"型式试验报告",fileType:"1",name:"",url:"",fileList:[],fileListTemp:[]},
{dictLabel:"出厂检测报告",fileType:"2",name:"",url:"",fileList:[],fileListTemp:[]},
{dictLabel:"第三方检测报告",fileType:"3",name:"",url:"",fileList:[],fileListTemp:[]},
{dictLabel:"其他",fileType:"4",name:"",url:"",fileList:[],fileListTemp:[]}]
this.getFileData()
this.open=true
},
getFileData(){
let param = {
modelId:this.rowData.partId,
taskType:13,
taskId:this.rowData.taskId
}
getPartTypeFileList(param).then((response) => {
if(response.data.length>0){
response.data.forEach(item=>{
let index = this.fileDataList.findIndex(v => v.fileType == item.fileType)
item.fileDetailList.forEach(item2=>{
this.fileDataList[index].fileList.push({
name:item2.name,
url:item2.url
})
this.fileDataList[index].fileListTemp.push({
name:item2.name,
url:item2.url
})
})
//
openFileDialog(row) {
this.rowData = row
this.fileDataList = [
{ dictLabel: '合格证', fileType: '0', name: '', url: '', fileList: [], fileListTemp: [] },
{ dictLabel: '型式试验报告', fileType: '1', name: '', url: '', fileList: [], fileListTemp: [] },
{ dictLabel: '出厂检测报告', fileType: '2', name: '', url: '', fileList: [], fileListTemp: [] },
{ dictLabel: '第三方检测报告', fileType: '3', name: '', url: '', fileList: [], fileListTemp: [] },
{ dictLabel: '其他', fileType: '4', name: '', url: '', fileList: [], fileListTemp: [] }
]
this.getFileData()
this.open = true
},
getFileData() {
let param = {
modelId: this.rowData.partId,
taskType: 13,
taskId: this.rowData.taskId
}
getPartTypeFileList(param)
.then(response => {
if (response.data.length > 0) {
response.data.forEach(item => {
let index = this.fileDataList.findIndex(v => v.fileType == item.fileType)
item.fileDetailList.forEach(item2 => {
this.fileDataList[index].fileList.push({
name: item2.name,
url: item2.url
})
this.fileDataList[index].fileListTemp.push({
name: item2.name,
url: item2.url
})
})
})
}
}).catch(() => {
})
},
})
.catch(() => {})
},
//
beforeFileUpload(row) {
this.rowData.fileType = row.fileType;
this.rowData.fileType = row.fileType
// this.rowData.dictLabel=row.dictLabel;
},
//
@ -648,63 +603,66 @@ export default {
if (response.code == 200) {
let param = {
taskId: this.taskId,
taskType: "0",
taskType: '0',
name: response.data.name,
url: response.data.url,
modelId: this.rowData.typeId,
fileType: this.rowData.fileType,
};
console.log(param);
fileType: this.rowData.fileType
}
console.log(param)
uploadPurchaseFile(param)
.then((response) => {
this.$modal.msgSuccess("上传成功");
this.getFileData();
.then(response => {
this.$modal.msgSuccess('上传成功')
this.getFileData()
})
.catch(() => {
this.$modal.msgError("上传失败");
});
this.$modal.msgError('上传失败')
})
}
},
picturePreviewFile(row) {
this.fileListInfo = row.fileListTemp
this.fileListInfo = row.fileListTemp
this.dialogVisibleFile = true
},
this.dialogVisibleFile = true
},
//
picturePreview(file) {
this.dialogImageUrl = file.url;
const parts = file.name.split(".");
const extension = parts.pop();
if (extension === 'doc' || extension === 'DOC' || extension === 'docx' || extension === 'DOCX' || extension === 'pdf' || extension === 'PDF') {
const windowName = file.name;
window.open(file.url, windowName);
this.dialogImageUrl = file.url
const parts = file.name.split('.')
const extension = parts.pop()
if (
extension === 'doc' ||
extension === 'DOC' ||
extension === 'docx' ||
extension === 'DOCX' ||
extension === 'pdf' ||
extension === 'PDF'
) {
const windowName = file.name
window.open(file.url, windowName)
} else {
this.dialogVisible = true;
this.dialogVisible = true
}
},
/** 导出按钮操作 */
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());
this.download(
"/material/part_arrived/exportDetails",
{ taskId: this.taskId },
`新购到货详情_${currentTime}.xlsx`
);
},
},
};
const currentTime = formatTime(new Date())
this.download('/material/part_arrived/exportDetails', { taskId: this.taskId }, `新购到货详情_${currentTime}.xlsx`)
}
}
}
</script>
<style lang="scss" scoped>
<style lang="scss" scoped>
.uploadImg {
padding-top: 20px;
display: flex;
@ -757,7 +715,6 @@ export default {
}
}
.btn-container {
margin-top: 10px;
display: flex;

View File

@ -395,7 +395,7 @@
<div slot="footer" class="dialog-footer" style="text-align: center">
<el-button type="primary" @click="addUserOpen">人员添加</el-button>
<el-button type="primary" @click="configNotice">发起验收</el-button>
<el-button type="primary" @click="configNotice" v-loading="btnLoading">发起验收</el-button>
</div>
</el-dialog>
@ -454,6 +454,7 @@ export default {
//
loading: true,
loadingTwo: true,
btnLoading: false,
updateTime: "",
//
ids: [],
@ -774,6 +775,8 @@ export default {
isPartFlag: 0,
};
if (this.configUserList.length > 0) {
if (this.btnLoading) return
this.btnLoading = true
bmNoticeInfo(param).then((response) => {
console.log(response);
if (response.code == 200) {
@ -781,9 +784,12 @@ export default {
message: "操作成功",
type: "success",
});
this.btnLoading = false
this.showPeople = false;
this.getList();
}
}).catch(() => {
this.btnLoading = false
});
} else {
this.$message({

View File

@ -11,7 +11,13 @@
label-width="90px"
>
<el-form-item label="类型规格:" prop="typeId">
<el-select v-model="queryParams.typeId" placeholder="请选择类型规格" clearable filterable style="width: 240px">
<el-select
v-model="queryParams.typeId"
placeholder="请选择类型规格"
clearable
filterable
style="width: 240px"
>
<el-option v-for="dict in materialModelList" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
@ -364,25 +370,42 @@ export default {
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 }
const length = res.data.length
this.auditingList = res.data.map((item, index) => {
return {
...item,
deptName: index == 0 ? '供应科' : item.deptName || '',
auditStatus: 1
}
})
const list = [
{ deptName: '安全/技术科', auditStatus: 0 },
{ deptName: '库管班', auditStatus: 0 }
]
console.log('🚀 ~ getSignList ~ this.auditingList:', this.auditingList)
if (length == 1) {
this.auditingList.push(...list)
} else if (length == 2) {
this.auditingList.push(list[1])
}
console.log('🚀 ~ getSignList ~ this.审核:', this.auditingList)
// 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 }
// ]
}
} catch (error) {
console.log('🚀 ~ getSignList ~ error:', error)
@ -717,7 +740,6 @@ export default {
}
}
.btn-container {
margin-top: 10px;
display: flex;

View File

@ -104,7 +104,7 @@
collapse-tags
:filter-method="handleSearchImpl"
:popper-class="'type-select-dropdown'"
:popper-append-to-body="true"
:popper-append-to-body="false"
@visible-change="handleVisibleChange"
>
<el-option
@ -141,20 +141,6 @@
</el-input>
</el-col>
</el-row>
<!-- <el-cascader
:key="propsKey"
v-model="deviceType"
:show-all-levels="false"
:options="equipmentTypeList"
:props="deviceTypeTreeProps"
filterable
collapse-tags
style="width: 240px"
placeholder="请选择规格型号"
ref="deviceTypeCascader"
popper-class="popper-select"
@change="deviceTypeChange"
></el-cascader> -->
</el-form-item>
<el-form-item label="备注" prop="remark">
@ -612,6 +598,7 @@ export default {
},
watch: {},
mounted() {
this.equipmentType()
if (this.isEdit) {
console.log('isEdit',this.isEdit)
this.taskId = this.editTaskId
@ -621,7 +608,7 @@ export default {
this.maForm.arrivalTime = this.formatDate(new Date());
}
this.supplierInfoList()
this.equipmentType()
},
methods: {
handleDateTypeChange(val) {
@ -1367,9 +1354,8 @@ export default {
if (this.currentMatchIndex === -1 || !this.matchedOptions.length) return
const option = this.matchedOptions[this.currentMatchIndex]
const selectDom = this.$el.querySelector('.el-select-dropdown__wrap')
const selectDom = this.$el.querySelector('.type-select-dropdown')
const optionDom = selectDom?.querySelector(`[data-key="${option.typeId}"]`)
if (optionDom) {
optionDom.scrollIntoView({ block: 'center', behavior: 'smooth' })
}
@ -1414,7 +1400,7 @@ export default {
// overflow-y: auto;
// }
.highlight-text {
::v-deep .highlight-text {
background-color: #ffd04b;
color: #000;
}

View File

@ -354,7 +354,7 @@
<div slot="footer" class="dialog-footer" style="text-align: center">
<el-button type="primary" @click="addUserOpen">人员添加</el-button>
<el-button type="primary" @click="configNotice">发起验收</el-button>
<el-button type="primary" @click="configNotice" v-loading="btnLoading">发起验收</el-button>
</div>
</el-dialog>
@ -412,6 +412,7 @@ export default {
//
loading: true,
loadingTwo: true,
btnLoading: false,
updateTime: "",
//
ids: [],
@ -643,6 +644,8 @@ export default {
content: this.form.remark,
};
if (this.configUserList.length > 0) {
if (this.btnLoading) return
this.btnLoading = true
bmNoticeInfo(param).then((response) => {
console.log(response);
if (response.code == 200) {
@ -650,9 +653,12 @@ export default {
message: "操作成功",
type: "success",
});
this.btnLoading = false
this.showPeople = false;
this.getList();
}
}).catch(() => {
this.btnLoading = false
});
} else {
this.$message({