盘带报废

This commit is contained in:
hongchao 2025-02-27 14:40:35 +08:00
parent d17634a4ca
commit 67f3382ef5
7 changed files with 1939 additions and 0 deletions

View File

@ -0,0 +1,77 @@
import request from '@/utils/request'
//
//获取机具类型树
export function equipmentTypeTree(data) {
return request({
url: '/material/select/getDeviceTypeTree',
method: 'post',
data: data
})
}
//获取设备编号列表
export function getMachineListByCode(query) {
return request({
url: '/material/base/machine/getMachineList',
method: 'get',
params: query
})
}
//新增盘带报废
export function addScrapInfo(data) {
return request({
url: '/material/scrap/addList ',
method: 'post',
data: data
})
}
//获取盘带报废列表
export function getInventoryList(query) {
return request({
url: '/material/scrap/inventoryList',
method: 'get',
params: query
})
}
//获取盘带报废详情
export function getScrapInfo(query) {
return request({
url: '/material/scrap/getDetailsList',
method: 'get',
params: query
})
}
//修改盘带报废
export function editScrapInfo(data) {
return request({
url: '/material/scrap/updateList ',
method: 'post',
data: data
})
}
//一级页面删除盘带报废
export function applyRemove(data) {
return request({
url: '/material/scrap/delete ',
method: 'post',
data: data
})
}
//盘点报废通过与驳回
export function inventoryPass(data) {
return request({
url: '/material/scrap/inventoryApprove',
method: 'post',
data: data
})
}

BIN
src/assets/file.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

37
src/utils/download.js Normal file
View File

@ -0,0 +1,37 @@
// 下载blob文件
export const downloadFile = ({ fileData, fileType, fileName }) => {
const blob = new Blob([fileData], {
type: fileType
})
const link = document.createElement('a')
link.href = URL.createObjectURL(blob)
link.download = fileName
link.style.display = 'none'
document.body.appendChild(link)
link.click()
URL.revokeObjectURL(link.href)
document.body.removeChild(link)
}
// 通用a链接下载
export const downloadFileByUrl = (url) => {
const link = document.createElement('a');
link.href = url; // 设置文件 URL
link.download = ''; // 提供下载提示
document.body.appendChild(link); // 将链接添加到 DOM
link.click(); // 模拟点击下载
document.body.removeChild(link); // 下载后移除链接
}
// pdf、doc、docx等文件下载
export const downloadFileData = ({ fileName, fileUrl }) => {
const link = document.createElement('a')
link.setAttribute('download', '')
link.style.display = 'none'
link.href = fileUrl
link.download = fileName
document.body.appendChild(link)
link.click();
// URL.revokeObjectURL(link.href)
document.body.removeChild(link)
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,364 @@
<template>
<div>
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
<el-form-item>
<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 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 prop="taskStatus">
<el-select
v-model="queryParams.taskStatus"
placeholder="请选择状态"
clearable
filterable
style="width: 240px"
>
<el-option label="进行中" value="0"></el-option>
<el-option label="已通过" value="1"></el-option>
<el-option label="已驳回" value="2"></el-option>
</el-select>
</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"
>新增报废
</el-button>
</el-col>
<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>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="typeList" row-key="id" @selection-change="handleSelectionChange" border>
<el-table-column type="selection" width="55" align="center" :selectable="selectable"/>
<el-table-column width="60" align="center" label="序号" 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="scrapCode" width="160" :show-overflow-tooltip="true"/>
<el-table-column label="物资类型" align="center" prop="type" :show-overflow-tooltip="true"/>
<el-table-column label="提交人" align="center" prop="createName" :show-overflow-tooltip="true"/>
<el-table-column label="提交时间" align="center" prop="createTime" :show-overflow-tooltip="true"/>
<el-table-column label="状态" align="center" prop="taskStatus" :show-overflow-tooltip="true" width="150">
<template slot-scope="scope">
<span v-if="scope.row.taskStatus == 0">进行中</span>
<span v-if="scope.row.taskStatus == 1">已通过</span>
<span v-if="scope.row.taskStatus == 2">已驳回</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" >
<template slot-scope="scope">
<el-button size="mini" style="margin-bottom: 10px" type="normal"
@click="handleView(scope.row)"
>查看</el-button>
<el-button size="mini" style="margin-bottom: 10px" type="primary"
@click="handleUpdate(scope.row)" v-if="scope.row.taskStatus != 1"
>编辑</el-button>
<el-button size="mini" type="danger"
@click="handleDeletePurchase(scope.row)" v-if="scope.row.taskStatus != 1"
>删除</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"
/>
</div>
</template>
<script>
import { getInventoryList,applyRemove,inventoryPass } from '@/api/repairTest/inventoryScrap'
export default {
name: "Home",
data() {
return {
//
loading: true,
loadingTwo: true,
updateTime: "",
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
showPeople: false,
peopleOpen: false,
//
total: 0,
totalTwo: 0,
//
typesList: [],
modelList: [],
//
typeList: [],
getListPeople: [],
configUserList: [],
phoneNumbers: [],
userList: [],
//
title: "",
//
dateRange: [],
statusDataRange: [],
//
queryParams: {
pageNum: 1,
pageSize: 10,
time: null, //
keyword: "",
taskStatus: null, //
},
form: {
remark: "",
},
open: false,
checkDataInfo: {},
//
supplierStr: "",
//
leaseApplyData: {},
sendTemp: [],
//
showView: false,
titleView: "",
getListViewInfo: [],
};
},
created() {
this.getList();
},
methods: {
//
handleSelectionChange(selection) {
// this.sendTemp = [];
this.ids = selection.map((item) => item.taskId);
// selection.forEach((item) => {
// this.sendTemp.push({ id: item.id, taskId: item.taskId });
// });
this.single = selection.length != 1;
this.multiple = !selection.length;
},
//
selectable(row) {
if (row.taskStatus == 0) {
return true;
} else {
return false;
}
},
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,
taskStatus: this.queryParams.taskStatus
};
getInventoryList(params).then((response) => {
this.typeList = response.data.rows;
this.total = response.data.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.$emit("addTools");
},
/** 查看按钮操作 */
handleView(row) {
this.$emit("queryTools", row.taskId);
},
/** 修改按钮操作 */
handleUpdate(row) {
this.$emit("editTools", row.taskId, row.id);
},
//
reset() {
this.form = {
taskId: "",
remark: "",
};
this.resetForm("form");
},
//
closeDialogAndRefresh() {
this.openPrint = false;
},
codeInfo(row) {
this.showView = true;
this.titleView = "查看";
this.getListViewInfo = row.maCodeVoList;
},
/** 删除按钮操作 */
handleDeletePurchase(row) {
this.$modal
.confirm("是否确认删除所选择的数据项?")
.then(function () {
return applyRemove({taskId: row.taskId});
})
.then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
})
.catch(() => {});
},
//
batchPass() {
if (this.ids == 0) {
this.$alert("未勾选数据", "提示", {
type: "warning",
confirmButtonText: "确定",
});
return;
}
inventoryPass({idList:this.ids,status:1}).then((response) => {
this.$modal.msgSuccess("通过成功");
this.ids = [];
this.getList();
this.$refs.multipleTable.clearSelection();
});
},
//
batchReject(){
if (this.ids == 0) {
this.$alert("未勾选数据", "提示", {
type: "warning",
confirmButtonText: "确定",
});
return;
}
inventoryPass({idList:this.ids,status:2}).then((response) => {
this.$modal.msgSuccess("驳回成功");
this.ids = [];
this.getList();
this.$refs.multipleTable.clearSelection();
});
}
},
};
</script>
<style lang="scss" scoped>
// ::v-deep.el-table .fixed-width .el-button--mini {
// width: 70px !important;
// margin-bottom: 10px;
// }
.image-type {
/* 旋转图片 */
transform: rotate(-90deg);
/* 确保旋转后的图片不会超出容器 */
max-width: 100%;
/* 保持图片的宽高比 */
width: 40px;
height: 100px;
}
.sign-type{
width: 100px;
height: 40px;
}
</style>

View File

@ -0,0 +1,246 @@
<template>
<div>
<el-form
:model="maForm"
ref="maForm"
size="small"
:inline="true"
label-width="120px"
>
<el-form-item prop="keyword">
<el-input
v-model="maForm.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-item label="附件" prop="bmFileInfos">
<el-upload
:action="uploadUrl"
:file-list="maForm.bmFileInfos"
:show-file-list="true"
:auto-upload="true"
:key="uploadKey"
:limit="5"
list-type="picture-card"
accept=".png, .jpg, .jpeg, .pdf"
:on-change="handleChangeBusinessList"
:class="{ disabledFbs: uploadDisabled }"
:on-preview="picturePreviewFbs"
:on-remove="handleRemoveElectricianImgList"
>
<!-- 文件格式下载图片格式预览 -->
<div slot="file" slot-scope="{ file }">
<img v-if="isImage(file)" class="el-upload-list__item-thumbnail" :src="file.url" alt="" />
<div v-else class="picture-card-container">
<img class="picture-card" :src="urlTemp" alt="" />
<p class="file-name">{{ file.name }}</p>
</div>
<span class="el-upload-list__item-actions">
<span v-if="updataIf(file)" class="el-upload-list__item-delete" @click="handleDownload(file)">
<i class="el-icon-download" />
</span>
<span v-else class="el-upload-list__item-preview" @click="picturePreviewFbs(file)">
<i class="el-icon-zoom-in" />
</span>
<span class="el-upload-list__item-delete" @click="handleRemoveElectricianImgList(file)">
<i class="el-icon-delete" />
</span>
</span>
</div>
<i class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</el-form-item>
</el-form>
<!-- <el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
>导出</el-button
>
</el-col>
</el-row> -->
<el-table v-loading="loading" :data="equipmentList">
<el-table-column label="序号" align="center" type="index" />
<el-table-column
label="物资类型"
align="center"
prop="machineTypeName"
:show-overflow-tooltip="true"
/>
<el-table-column
label="规格型号"
align="center"
prop="specificationType"
:show-overflow-tooltip="true"
/>
<el-table-column
label="计量单位"
align="center"
prop="unitName"
:show-overflow-tooltip="true"
>
</el-table-column>
<el-table-column
label="当前库存"
align="center"
prop="storageNum"
:show-overflow-tooltip="true"
>
</el-table-column>
<el-table-column
label="报废数量"
align="center"
prop="scrapNum"
:show-overflow-tooltip="true"
/>
<el-table-column
label="设备编码"
align="center"
prop="maCode"
:show-overflow-tooltip="true"
/>
<el-table-column
label="报废原因"
align="center"
prop="scrapReason"
:show-overflow-tooltip="true"
/>
</el-table>
</div>
</template>
<script>
import { getScrapInfo } from '@/api/repairTest/inventoryScrap'
import { getToken } from "@/utils/auth";
export default {
name: "QueryTools",
components: {
// UploadImg,
},
props: {
isView: {
type: Boolean,
default: () => {
return false;
},
},
queryTaskId: {
type: [String, Number],
default: () => {
return "";
},
},
queryId: {
type: [String, Number],
default: () => {
return "";
},
},
},
data() {
return {
//ID
taskId: "",
//
loading: true,
//
equipmentList: [],
//
open: false,
rowData: {},
maForm: {
keyword: "",
bmFileInfos: []
},
};
},
computed: {},
mounted() {
this.taskId = this.queryTaskId;
this.getTaskInfo();
},
methods: {
/** 搜索按钮操作 */
handleQuery() {
this.getTaskInfo();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("maForm");
this.maForm.keyword = "";
this.handleQuery();
},
//-
getTaskInfo() {
this.loading = true;
console.log('xxxxxxxxxxxxxxxxxxxxx',this.taskId)
getScrapInfo({'taskId':this.taskId,'keyword':this.maForm.keyword}).then((response) => {
this.equipmentList = response.data.scrapApplyDetailsList;
this.maForm.bmFileInfos = response.data.fileList
this.loading = false;
});
},
/** 导出按钮操作 */
handleExport() {
this.download(
"/material/lease_apply_info/exportDetails",
{ id: this.id },
`盘点报废详情_${new Date().getTime()}.xlsx`
);
},
},
};
</script>
<style lang="scss" scoped>
::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;
}
}
.custom-textarea {
width: 300px;
height: 100px;
}
.accept-img {
color: #409eff;
.a-two {
margin-left: 20px;
}
}
.left-tip {
font-size: 16px;
letter-spacing: 1px;
}
</style>

View File

@ -0,0 +1,87 @@
<template>
<!-- 盘点报废管理 -->
<div class="app-container">
<PageHeader
v-if="isShowComponent != 'Home'"
:pageContent="pageContent"
@goBack="goBack"
/>
<component
:is="isShowComponent"
:isEdit="isEdit"
:editTaskId="editTaskId"
:editId="editId"
:queryTaskId="queryTaskId"
:queryId="queryId"
:isView="isView"
:codingTaskId="codingTaskId"
@addTools="addTools"
@editTools="editTools"
@addToolsSuccess="addToolsSuccess"
@queryTools="queryTools"
/>
</div>
</template>
<script>
import PageHeader from '@/components/pageHeader'
import Home from "./component/homeApply.vue"; //
import AddTools from "./component/addToolsApply.vue"; //
import QueryTools from "./component/queryToolsApply.vue"; //
export default {
components: {
Home,
PageHeader,
AddTools,
QueryTools,
},
data() {
return {
isShowComponent: "Home",
pageContent: "盘点报废申请",
isEdit: false,
editTaskId: "",
editId: "",
queryId: "",
queryTaskId: "",
isView: false,
codingTaskId: "",
};
},
methods: {
/* 新增工机具 */
addTools() {
this.isEdit = false;
this.editTaskId = "";
this.queryTaskId = "";
this.pageContent = "报废新增";
this.isShowComponent = "AddTools";
},
/* 新增成功 */
addToolsSuccess() {
this.isShowComponent = "Home";
},
/* 编辑工机具 */
editTools(taskId, id) {
this.isEdit = true;
this.pageContent = "报废编辑";
this.editTaskId = taskId;
this.editId = id;
this.isShowComponent = "AddTools";
},
/* 查询工机具 */
queryTools(taskId, id) {
this.isView = true;
this.pageContent = "详情信息";
this.queryTaskId = taskId;
this.queryId = id;
this.isShowComponent = "QueryTools";
},
/* 返回按钮 */
goBack() {
this.isShowComponent = "Home";
},
},
};
</script>