You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

685 lines
20 KiB
Vue

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<!-- 组线批准人隐藏出库单号 -->
<div class="app-container">
<el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="98px"
>
<!-- <el-form-item label="出库单号" prop="applyCode">
<el-input
v-model="queryParams.applyCode"
placeholder="请输入出库单号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item> -->
<el-form-item label="备品备件编码" prop="spareCode">
<el-input
v-model="queryParams.spareCode"
placeholder="请输入备品备件编码"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="备品备件名称" prop="spareName">
<el-input
v-model="queryParams.spareName"
placeholder="请输入备品备件名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="规格型号" prop="spareModel">
<el-input
v-model="queryParams.spareModel"
placeholder="请输入规格型号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="数量" prop="spareQuantity">
<el-input
v-model="queryParams.spareQuantity"
placeholder="请输入数量"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<!-- <el-form-item label="使用组线" prop="spareGroupLine">
<el-input
v-model="queryParams.spareGroupLine"
placeholder="请输入使用组线"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item> -->
<el-form-item label="使用设备" prop="spareUseEquipment">
<el-input
v-model="queryParams.spareUseEquipment"
placeholder="请输入使用设备"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="申领人" prop="applyPeople">
<el-input
v-model="queryParams.applyPeople"
placeholder="请输入申领人"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<!-- <el-form-item label="批准人" prop="applyApprovePeople">
<el-input
v-model="queryParams.applyApprovePeople"
placeholder="请输入批准人"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item> -->
<el-form-item label="领用时间" prop="applyTime">
<el-date-picker
v-model="queryParams.applyTimeArray"
type="daterange"
align="right"
unlink-panels
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
value-format="yyyy-MM-dd"
:picker-options="pickerOptions"
>
</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"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['device:sparePartsApplicationRecord:add']"
>新增</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
v-if="false"
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['device:sparePartsApplicationRecord:edit']"
>修改</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['device:sparePartsApplicationRecord:remove']"
>删除</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['device:sparePartsApplicationRecord:export']"
>导出</el-button
>
</el-col>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table
v-loading="loading"
:data="sparePartsApplicationRecordList"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" />
<!-- 序号 -->
<el-table-column
type="index"
width="90"
align="center"
:index="indexMethod"
label="序号"
/>
<el-table-column width="200" label="出库单号" align="center" prop="applyCode" />
<el-table-column
label="备品备件编码"
align="center"
prop="spareCode"
width="200"
/>
<el-table-column
label="备品备件名称"
align="center"
prop="spareName"
width="200"
/>
<el-table-column
label="使用设备"
align="center"
prop="spareUseEquipment"
/>
<el-table-column
label="规格型号"
align="center"
prop="spareModel"
width="150"
/>
<el-table-column label="领用数量" align="center" prop="spareQuantity" />
<!-- <el-table-column label="使用组线" align="center" prop="spareGroupLine" /> -->
<el-table-column
label="领用时间"
align="center"
prop="applyTime"
width="180"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.applyTime) }}</span>
</template>
</el-table-column>
<el-table-column
label="申领人"
align="center"
prop="applyPeople"
width="80"
/>
<!-- <el-table-column label="批准人" align="center" prop="applyApprovePeople" width="80"/> -->
<el-table-column
v-if="false"
label="工厂号"
align="center"
prop="factoryCode"
/>
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
>
<template slot-scope="scope">
<el-button
v-if="false"
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['device:sparePartsApplicationRecord:edit']"
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['device:sparePartsApplicationRecord:remove']"
>删除</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="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="110px">
<!-- <el-form-item label="出库单号" prop="applyCode">
<el-input v-model="form.applyCode" placeholder="请输入出库单号" style="width: 280px"/>
</el-form-item> -->
<el-form-item label="使用设备" prop="spareUseEquipment">
<el-input
v-model="form.spareUseEquipment"
placeholder="请输选择使用设备"
style="width: 280px"
>
<el-button
slot="append"
@click="handleSelectEquipment"
icon="el-icon-search"
></el-button>
</el-input>
<ItemSelectEquipment
ref="itemSelectEquipment"
@onSelected="onItemSelectedEquipment"
>
</ItemSelectEquipment>
</el-form-item>
<el-form-item label="备品备件编码" prop="spareCode">
<el-input
v-model="form.spareCode"
placeholder="请选择备品备件编码"
style="width: 280px"
>
<el-button
slot="append"
@click="handleSelectSparePartsLedger"
icon="el-icon-search"
></el-button>
</el-input>
<ItemSelectSparePartsLedger
ref="itemSelectSparePartsLedger"
@onSelected="onItemSelectedSparePartsLedger"
>
</ItemSelectSparePartsLedger>
</el-form-item>
<el-form-item label="备品备件名称" prop="spareName">
<el-input
v-model="form.spareName"
placeholder="请选择备品备件名称"
style="width: 280px"
/>
</el-form-item>
<el-form-item label="规格型号" prop="spareModel">
<el-input
v-model="form.spareModel"
placeholder="请选择规格型号"
style="width: 280px"
/>
</el-form-item>
<el-form-item label="库存总数量" prop="amount">
<el-input v-model="form.amount" style="width: 280px" disabled />
</el-form-item>
<el-form-item label="冻结数量" prop="storageAmount">
<el-input
v-model="form.storageAmount"
style="width: 280px"
disabled
/>
</el-form-item>
<el-form-item label="库存可用数量" prop="availableQuantity">
<el-input
v-model="form.availableQuantity"
style="width: 280px"
disabled
/>
</el-form-item>
<el-form-item label="数量" prop="spareQuantity">
<el-input
v-model="form.spareQuantity"
placeholder="请输入数量"
style="width: 280px"
/>
</el-form-item>
<!-- <el-form-item label="使用组线" prop="spareGroupLine">
<el-input v-model="form.spareGroupLine" placeholder="请选择使用组线" style="width: 280px"/>
</el-form-item> -->
<el-form-item label="领用时间" prop="applyTime">
<el-date-picker
clearable
v-model="form.applyTime"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
style="width: 280px"
placeholder="请选择领用时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="申领人" prop="applyPeople">
<el-input
v-model="form.applyPeople"
placeholder="请选择申领人"
style="width: 280px"
>
<el-button
slot="append"
@click="handleSelectPerson"
icon="el-icon-search"
></el-button>
</el-input>
<ItemSelectPerson
ref="itemSelectPerson"
@onSelected="onItemSelectedPerson"
>
</ItemSelectPerson>
</el-form-item>
<!-- <el-form-item label="批准人" prop="applyApprovePeople">
<el-input v-model="form.applyApprovePeople" placeholder="请选择批准人" style="width: 280px"/>
</el-form-item> -->
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
listSparePartsApplicationRecord,
getSparePartsApplicationRecord,
delSparePartsApplicationRecord,
addSparePartsApplicationRecord,
updateSparePartsApplicationRecord,
} from "@/api/device/sparePartsApplicationRecord";
import ItemSelectPerson from "./selectSinglePerson.vue";
import ItemSelectEquipment from "./selectSingleEquipment.vue";
import ItemSelectSparePartsLedger from "./selectSparePartsLedger.vue";
export default {
name: "SparePartsApplicationRecord",
components: {
ItemSelectPerson,
ItemSelectEquipment,
ItemSelectSparePartsLedger,
},
data() {
return {
// 遮罩层
loading: true,
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 申领记录表格数据
sparePartsApplicationRecordList: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
applyCode: null,
spareCode: null,
spareName: null,
spareModel: null,
spareQuantity: null,
spareGroupLine: null,
spareUseEquipment: null,
applyTime: null,
applyPeople: null,
applyApprovePeople: null,
attr1: null,
attr2: null,
attr3: null,
factoryCode: null,
applyTimeArray: [],
},
// 日期范围选择快捷
pickerOptions: {
shortcuts: [
{
text: "最近一周",
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
picker.$emit("pick", [start, end]);
},
},
{
text: "最近一个月",
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
picker.$emit("pick", [start, end]);
},
},
{
text: "最近三个月",
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
picker.$emit("pick", [start, end]);
},
},
],
},
// 表单参数
form: {},
// 表单校验
rules: {
spareCode: [
{ required: true, message: "备品备件编码不能为空", trigger: "blur" },
],
spareName: [
{ required: true, message: "备品备件名称不能为空", trigger: "blur" },
],
spareModel: [
{ required: true, message: "规格型号不能为空", trigger: "blur" },
],
spareQuantity: [
{ required: true, message: "数量不能为空", trigger: "blur" },
],
applyTime: [
{ required: true, message: "领用时间不能为空", trigger: "blur" },
],
applyPeople: [
{ required: true, message: "申领人不能为空", trigger: "blur" },
],
},
};
},
created() {
this.getList();
},
methods: {
//备品备件选择弹出框
handleSelectSparePartsLedger() {
this.$refs.itemSelectSparePartsLedger.showFlag = true;
},
//备品备件回显
onItemSelectedSparePartsLedger(obj) {
this.form.spareCode = obj[0].materialCode;
this.form.spareName = obj[0].materialDesc;
this.form.spareModel = obj[0].spareMode;
this.form.amount = obj[0].amount;
this.form.storageAmount = obj[0].storageAmount;
this.form.availableQuantity = obj[0].amount - obj[0].storageAmount;
},
//设备选择
handleSelectEquipment() {
this.$refs.itemSelectEquipment.showFlag = true;
},
//设备选择
onItemSelectedEquipment(obj) {
this.form.spareUseEquipment = obj;
},
//人员选择
handleSelectPerson() {
this.$refs.itemSelectPerson.showFlag = true;
},
//人员选择
onItemSelectedPerson(obj) {
this.form.applyPeople = obj;
},
// 生成表头序号
indexMethod(index) {
return index + 1;
},
/** 查询申领记录列表 */
getList() {
this.loading = true;
listSparePartsApplicationRecord(this.queryParams).then((response) => {
this.sparePartsApplicationRecordList = response.rows;
this.total = response.total;
this.loading = false;
});
},
// 取消按钮
cancel() {
this.open = false;
this.reset();
},
// 表单重置
reset() {
this.form = {
applyId: null,
applyCode: null,
spareCode: null,
spareName: null,
spareModel: null,
spareQuantity: null,
spareGroupLine: null,
spareUseEquipment: null,
applyTime: null,
applyPeople: null,
applyApprovePeople: null,
attr1: null,
attr2: null,
attr3: null,
delFlag: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null,
factoryCode: null,
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.queryParams.applyTimeArray = [];
this.handleQuery();
},
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map((item) => item.applyId);
this.single = selection.length !== 1;
this.multiple = !selection.length;
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加申领记录";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const applyId = row.applyId || this.ids;
getSparePartsApplicationRecord(applyId).then((response) => {
this.form = response.data;
this.open = true;
this.title = "修改申领记录";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.form.applyId != null) {
updateSparePartsApplicationRecord(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
if (
this.form.amount - this.form.storageAmount <
this.form.spareQuantity
) {
this.$message({
message: "您填入的领用数量大于库存可用数量!",
type: "warning",
});
} else {
addSparePartsApplicationRecord(this.form).then((response) => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const applyIds = row.applyId || this.ids;
var applyCode = '';
// 处理信息
for (let i = 0; i < this.sparePartsApplicationRecordList.length; i++) {
for (let j = 0; j < applyIds.length; j++) {
if (applyIds[j] == this.sparePartsApplicationRecordList[i].applyId) {
applyCode = applyCode + this.sparePartsApplicationRecordList[i].applyCode + ',';
}
}
}
if (applyCode == '') {
for (let i = 0; i < this.sparePartsApplicationRecordList.length; i++) {
if (applyIds == this.sparePartsApplicationRecordList[i].orderId) {
applyCode = this.sparePartsApplicationRecordList[i].applyCode;
}
}
}
this.$modal.confirm('是否确认删除出库单号为"' + applyCode + '"的数据项?').then(function() {
return delSparePartsApplicationRecord(applyIds);
}).then(response => {
if (response.code != 500) {
this.$modal.msgSuccess("删除成功");
this.getList();
}
}).catch(() => {
});
},
/** 导出按钮操作 */
handleExport() {
this.download('device/sparePartsApplicationRecord/export', {
...this.queryParams
}, `sparePartsApplicationRecord_${new Date().getTime()}.xlsx`)
}
}
};
</script>