devicesmgt/sgzb-ui/src/views/store/warehousing/putInStore.vue

1050 lines
37 KiB
Vue

<template>
<div class="app-container" id="devicesWarehousing">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px" @submit.native.prevent>
<el-form-item label="关键字" label-width="auto" prop="keyWord">
<el-input
v-model="queryParams.keyWord"
placeholder="请输入关键字"
clearable maxlength="50"
style="width: 240px"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">查询</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
<el-button type="success" icon="el-icon-plus" size="mini" @click="handleNumberAdd">数量盘点</el-button>
<el-button type="success" icon="el-icon-plus" size="mini" @click="handleCodeAdd">编码盘点</el-button>
</el-form-item>
</el-form>
<el-table v-loading="loading" :data="returnList" @selection-change="handleSelectionChange">
<el-table-column label="序号" type="index" width="55" align="center" />
<el-table-column label="入库来源" align="center" prop="putInType" />
<el-table-column label="工程名称" align="center" prop="projectName" :show-overflow-tooltip="true" />
<el-table-column label="退料单位" align="center" prop="unitName" :show-overflow-tooltip="true" />
<el-table-column label="单号" align="center" prop="kindName" :show-overflow-tooltip="true"></el-table-column>
<el-table-column label="设备/物资名称" align="center" prop="typeName" :show-overflow-tooltip="true"></el-table-column>
<el-table-column label="入库人" align="center" prop="modelName" :show-overflow-tooltip="true"></el-table-column>
<el-table-column label="入库日期" align="center" prop="createDate" :show-overflow-tooltip="true"></el-table-column>
<el-table-column label="备注" align="center" prop="remark" :show-overflow-tooltip="true" />
<!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['system:dict:edit']"
>审核</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="codeOpen"
width="90%"
append-to-body
:show-close="false"
:close-on-click-modal="false"
>
<el-form :model="codeForm" :rules="codeFormRules" ref="codeForm" size="small" :inline="true" v-show="showSearch">
<el-row :gutter="20">
<el-col :span="7">
<el-form-item label="入库来源" label-width="130px" prop="putInType">
<el-select
v-model="codeForm.putInType"
placeholder="请选择入库来源"
filterable
style="width: 220px"
@change="changePutInType"
>
<el-option
v-for="item in codeInStoreOptions"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="设备/物资类型" label-width="130px" prop="typeId">
<el-cascader
placeholder="请选择物品类型"
:options="deviceTypeTree"
:props="deviceTypeTreeProps"
v-model="codeForm.typeId"
@change="deviceTypeChange"
ref="deviceTypeCascader"
style="width: 400px;"
clearable filterable
:disabled="cascaderDisabled"
></el-cascader>
</el-form-item>
</el-col>
<el-col :span="7">
<el-form-item label="待入库总数" label-width="130px" prop="num" v-if="!isNumCheck">
<el-input-number
v-model="codeForm.num"
placeholder="请输入待入库总数"
clearable
:min="1"
:max="99"
:controls="false"
style="width: 13vw;"
/>
</el-form-item>
</el-col>
<el-col :span="7">
<el-form-item label="备注" label-width="130px" prop="remarks" v-if="isNumCheck">
<el-input
v-model="codeForm.remarks"
type="textarea"
placeholder="请输入备注"
maxlength="200"
rows="3"
show-word-limit
style="width: 13vw;"
/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="7">
<el-form-item label="前缀" label-width="130px" prop="codePrefix" v-if="!isNumCheck">
<el-input
v-model="codeForm.codePrefix"
placeholder="请输入前缀"
clearable
style="width: 220px"
/>
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="后缀范围" label-width="130px" prop="codeSuffixStart" v-if="!isNumCheck">
<el-input
v-model="codeForm.codeSuffixStart"
clearable
placeholder="请输入后缀范围起始值"
style="width: 185px"
@change="changeSuffixStart(codeForm.codeSuffixStart)"
/>
</el-form-item>
<el-form-item label="~" label-width="auto" prop="codeSuffixEnd" v-if="!isNumCheck">
<el-input
v-model="codeForm.codeSuffixEnd"
clearable
placeholder="请输入后缀范围结束值"
style="width: 185px"
@change="changeSuffixEnd"
/>
</el-form-item>
</el-col>
<el-col :span="7">
<el-form-item label="单价" label-width="130px" prop="buyPrice" v-if="!isNumCheck">
<el-input-number
v-model="codeForm.buyPrice"
:precision="2"
placeholder="请输入单价"
clearable
:min="0"
:controls="false"
style="width: 13vw;"
/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="7">
<el-form-item label="选择厂家" label-width="130px" prop="codeFactory" v-if="!isNumCheck">
<el-select
v-model="codeForm.codeFactory"
placeholder="请选择厂家"
clearable filterable
style="width: 220px"
>
<el-option
v-for="item in supplierList"
:key="item.supplierId"
:label="item.supplier"
:value="item.supplierId"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="检验时间" label-width="130px" prop="thisCheckTime" v-if="!isNumCheck">
<el-date-picker
v-model="codeForm.thisCheckTime"
type="date"
placeholder="请输入检验时间"
style="width: 400px"
/>
</el-form-item>
</el-col>
<el-col :span="7">
<el-form-item label="下次检验时间" label-width="130px" prop="nextCheckTime" v-if="!isNumCheck">
<el-date-picker
v-model="codeForm.nextCheckTime"
type="date"
placeholder="请输入检验时间"
style="width: 13vw;"
/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="7">
<el-form-item label="领料单位" label-width="130px" prop="unitId" v-show="isPutInType"
:rules="{ required: isPutInType, message: '领料单位不能为空', trigger: 'change' }">
<el-select v-model="codeForm.unitId" placeholder="请选择领料单位" style="width: 220px;"
@change="changeUnitData" clearable filterable>
<el-option
v-for="item in unitList"
:key="item.id"
:label="item.name"
:value="item.id"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="领料工程" label-width="130px" prop="proId" v-show="isPutInType"
:rules="{ required: isPutInType, message: '领料工程不能为空', trigger: 'change' }">
<el-select v-model="codeForm.proId" placeholder="请选择领料工程" style="width: 400px;"
@change="changeProList" clearable filterable>
<el-option
v-for="item in proList"
:key="item.id"
:label="item.name"
:value="item.id"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="7">
<el-form-item label=" " label-width="130px" v-show="isPutInType">
<el-button type="primary" icon="el-icon-edit" size="mini" @click="fillCodeForm">点击填充</el-button>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="7">
<el-form-item label="检验人" label-width="130px" prop="checkMan" v-if="!isNumCheck">
<el-input v-model="codeForm.checkMan" placeholder="请输入检验人" clearable style="width: 220px;" />
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="备注" label-width="130px" prop="remarks" v-if="!isNumCheck">
<el-input
v-model="codeForm.remarks"
type="textarea"
placeholder="请输入备注"
maxlength="200"
rows="4"
show-word-limit
style="width: 400px;"
/>
</el-form-item>
</el-col>
<el-col :span="7">
<el-form-item label=" " label-width="130px" v-show="!isPutInType">
<el-button type="primary" icon="el-icon-edit" size="mini" @click="fillCodeForm">点击填充</el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
<!-- <el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
:disabled="multiple"
>批量通过</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
:disabled="multiple"
>批量不通过</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['system:dict:export']"
>导出</el-button>
</el-col>
</el-row> -->
<el-table v-loading="loading" :data="codeTableList" v-if="!isNumCheck"
@selection-change="handleSelectionChange" :stripe="true" :border="true">
<!-- <el-table-column type="selection" width="55" align="center" /> -->
<el-table-column label="序号" align="center" type="index" />
<el-table-column label="设备编码" align="center" prop="maCode" :show-overflow-tooltip="true">
<template v-slot:default="{ row }" v-if="!isNumCheck">
<el-input v-model="row.maCode" placeholder="请输入设备编码"></el-input>
</template>
</el-table-column>
<el-table-column label="出厂编码" align="center" prop="outFacCode" :show-overflow-tooltip="true">
<template v-slot:default="{ row }" v-if="!isNumCheck">
<el-input v-model="row.outFacCode" placeholder="请输入出厂编码"></el-input>
</template>
</el-table-column>
<el-table-column label="生产厂家" align="center" prop="maVender" :show-overflow-tooltip="true">
<template v-slot:default="{ row }" v-if="!isNumCheck">
<el-select v-model="row.maVender" placeholder="请选择生产厂家" clearable filterable>
<el-option
v-for="item in supplierList"
:key="item.supplierId"
:label="item.supplier"
:value="item.supplierId"
/>
</el-select>
</template>
</el-table-column>
<el-table-column label="检验日期" align="center" prop="thisCheckTime" :show-overflow-tooltip="true">
<template v-slot:default="{ row }" v-if="!isNumCheck">
<el-date-picker
v-model="row.thisCheckTime"
type="date"
placeholder="请输入检验时间"
style="width: 170px"
></el-date-picker>
</template>
</el-table-column>
<el-table-column label="下次检验日期" align="center" prop="nextCheckTime" :show-overflow-tooltip="true">
<template v-slot:default="{ row }" v-if="!isNumCheck">
<el-date-picker
v-model="row.nextCheckTime"
type="date"
placeholder="请输入下次检验时间"
style="width: 170px"
></el-date-picker>
</template>
</el-table-column>
<el-table-column label="单价" align="center" prop="buyPrice" :show-overflow-tooltip="true">
<template v-slot:default="{ row }" v-if="!isNumCheck">
<el-input-number
v-model="row.buyPrice"
:precision="2"
placeholder="请输入单价"
:min="0"
:controls="false"
clearable
style="width: 160px"
/>
</template>
</el-table-column>
<!-- <el-table-column label="状态" align="center" prop="status">
<template slot-scope="scope">
<dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status"/>
</template>
</el-table-column> -->
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template v-slot:default="{ row }">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleResetRow(row)"
>重置</el-button>
<!-- <el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
>不通过</el-button> -->
<!-- <el-button-->
<!-- size="mini"-->
<!-- type="text"-->
<!-- icon="el-icon-delete"-->
<!-- @click="handleDelete(scope.row)"-->
<!-- v-hasPermi="['system:dict:remove']"-->
<!-- >删除</el-button>-->
</template>
</el-table-column>
</el-table>
<!-- 数量入库 -->
<el-table v-loading="loading" :data="numTableList" border stripe v-if="isNumCheck">
<el-table-column label="序号" align="center" type="index" />
<el-table-column prop="typeCn" label="设备名称" align="center" :show-overflow-tooltip="true">
</el-table-column>
<el-table-column prop="guigeCn" label="规格型号" align="center" :show-overflow-tooltip="true">
</el-table-column>
<el-table-column prop="num" label="当前库存" align="center" :show-overflow-tooltip="true">
</el-table-column>
<el-table-column prop="num" label="入库数量" align="center" :show-overflow-tooltip="true">
<template v-slot:default="{ row }">
<el-input-number v-model="row.putInStoreNum" placeholder="请输入入库数量" @blur="handlePutBlur(row)"
clearable :controls="false" :min="1" style="width: 10vw;" />
</template>
</el-table-column>
<el-table-column prop="unitCn" label="计量单位" align="center" :show-overflow-tooltip="true">
</el-table-column>
<el-table-column prop="remark" label="备注" align="center" :show-overflow-tooltip="true">
<template v-slot:default="{ row }">
<el-input v-model="row.remark" placeholder="请输入备注" align="center" :show-overflow-tooltip="true" clearable></el-input>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template v-slot:default="{ $index }">
<el-popconfirm
title="确定删除吗?"
icon="el-icon-info"
placement="top"
@confirm="handleDeleteRow($index)"
@cancel="cancelPop"
>
<el-button slot="reference" size="mini" type="text" icon="el-icon-delete">删除</el-button>
</el-popconfirm>
</template>
</el-table-column>
</el-table>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="cancelCode"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listType, getType, delType, addType, updateType, refreshCache } from "@/api/system/dict/type";
import {
getReturnOfMaterialsInfoAll,
getTypeList,
getDeviceTypeTree,
inputByCode
} from "@/api/store/putInStore";
import { getInfo } from '@/api/login'
import { supplierInfoList } from "@/api/store/tools";
import { getUnitData, getProData } from "@/api/claimAndRefund/receive";
export default {
name: "DevicesWarehousing",
// dicts: ['sys_normal_disable'],
data() {
return {
// 用户信息
user: null,
// 遮罩层
loading: true,
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
typeList: [],
modelList: [],
// 表格数据
returnList: [],
// 编码盘点表格数据
codeTableList: [],
// 编码盘点表格数据
numTableList: [],
numTable: {},
// 弹出层标题
title: "",
// 入库来源选项
codeInStoreOptions: [
{ label: "库存盘点入库", value: "库存盘点入库" },
{ label: "退料入库", value: "退料入库" },
],
// 是否显示弹出层
numberOpen: false,
codeOpen: false,
// 日期范围
dateRange: [],
isNumCheck: false,
isAdd: false,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
keyWord: "",
},
// 级联框禁用
cascaderDisabled: false,
//机具厂家(供应商管理)
supplierList: [],
deviceTypeTree: [], // 设备 树结构数据
// 设备 树显示 配置
deviceTypeTreeProps: {
multiple:false,
value:'id'
},
// 选中的设备类型
deviceType: null,
// 领料集合
leaseApplyDetails: [],
//领料详情单条模板
leaseApplyDetailsItem:{
parentId:null,
createBy: null,
companyId: null,
status: 0,
typeId: null, // 树结构第4级 规格id
typeCn:'', //显示的设备类型
guigeCn:'', //显示的设备规格
unitCn:'', //显示的设备 单位
remark: '', //单条备注
preNum: 1, //预领数量
},
// 领料单位
unitList: [],
// 领料工程
proList: [],
isPutInType: false,
// 表单参数:编号表单 / 数量表单
numberForm: {},
codeForm: {
checkMan: undefined,
putInType: undefined,
remarks: undefined,
typeId: undefined,
num: undefined,
codePrefix: undefined,
codeSuffixStart: undefined,
codeSuffixEnd: undefined,
buyPrice: undefined,
codeFactory: undefined,
thisCheckTime: undefined,
nextCheckTime: undefined,
unitId: null,
proId: null,
pageNum: 1,
pageSize: 10,
},
// 表单校验
rules: {
dictName: [
{ required: true, message: "字典名称不能为空", trigger: "blur" }
],
dictType: [
{ required: true, message: "字典类型不能为空", trigger: "blur" }
]
},
codeFormRules: {
putInType: [
{ required: true, message: "入库来源不能为空", trigger: "change" }
],
typeId: [
{ required: true, message: "设备/物资类型不能为空", trigger: "change" }
],
num: [
{ required: true, message: "待入库总数不能为空", trigger: "blur" }
],
}
};
},
created() {
this.getList();
this.getTypeList();
this.GetDeviceTypeTree();
this.supplierInfoList();
},
methods: {//
// 获取用户信息
async GetUserInfo(){
const res = await getInfo()
console.log(res, '用户信息')
this.user = res.user
},
/** 查询字典类型列表 */
getTypeList() {
getTypeList({level:'3'}).then(response => {
this.typeList = response.data;
}
);
getTypeList({level:'4'}).then(response => {
this.modelList = response.data;
}
);
},
/** 查询字典类型列表 */
getList() {
this.loading = true;
getReturnOfMaterialsInfoAll(this.queryParams).then(response => {
this.returnList = response.rows;
this.total = response.total;
this.loading = false;
}
);
},
// 取消编码盘点按钮
cancelCode() {
this.cascaderDisabled = false
this.resetCodeForm();
this.deviceType = {}
this.reset();
this.codeTableList = []
this.numTableList = []
this.$refs['codeForm'].clearValidate()
this.codeOpen = false;
this.getList()
},
// 表单重置
reset() {
this.form = {
dictId: undefined,
dictName: undefined,
dictType: undefined,
status: "0",
remark: undefined
};
this.resetForm("form");
},
// 编码表单重置
resetCodeForm() {
this.codeForm = {
checkMan: undefined,
putInType: null,
remarks: undefined,
typeId: null,
num: undefined,
codePrefix: undefined,
codeSuffixStart: undefined,
codeSuffixEnd: undefined,
buyPrice: undefined,
codeFactory: undefined,
thisCheckTime: undefined,
nextCheckTime: undefined,
pageNum: 1,
pageSize: 10,
}
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 填充编码盘点表单 */
fillCodeForm() {
console.log('🚀 ~ fillCodeForm ~ this.isNumCheck:', this.isNumCheck);
// 校验表单
this.$refs['codeForm'].validate(valid => {
if (!valid) return
console.log('🚀 ~ fillCodeForm ~ this.codeForm:', this.codeForm);
// 清空this.codeTableList
this.codeTableList = []
if (this.isNumCheck) {
// 判断 this.numTableList 中是否有 this.numTable 的数据, 如果有, 则不添加
if (this.numTableList.some(item => item.typeId == this.codeForm.typeId)) {
this.$message.warning('请勿重复添加')
return
}
console.log('🚀 ~ fillCodeForm ~ this.numTable:', this.numTable);
this.numTableList.push(this.numTable)
} else {
// 根据this.codeForm.num的数量, 往this.codeTableList中添加this.codeForm的数据
for (let i = 0; i < this.codeForm.num; i++) {
// 设备编码: 前缀 拼接 后缀
let suffix = parseInt(this.codeForm.codeSuffixStart) + i
if (suffix > parseInt(this.codeForm.codeSuffixEnd)) {
suffix = parseInt(this.codeForm.codeSuffixEnd)
}
suffix = suffix.toString().padStart(this.codeForm.codeSuffixStart?.length, '0')
// console.log('🚀 ~ fillCodeForm ~ suffix:', suffix);
suffix = isNaN(suffix) ? '' : suffix
const maCode = `${this.codeForm.codePrefix || ''}${suffix}`
// 出厂编码
const outFacCode = ''
// 生产厂家
const maVender = this.supplierList.find(item => item.supplierId == this.codeForm.codeFactory)?.supplier || ''
// 检验日期: codeForm.thisCheckTime
const thisCheckTime = this.codeForm.thisCheckTime
// 下次检验日期: codeForm.nextCheckTime
const nextCheckTime = this.codeForm.nextCheckTime
// 单价: codeForm.buyPrice
const buyPrice = this.codeForm.buyPrice || 0
this.codeTableList.push({
maCode,
outFacCode,
maVender,
thisCheckTime,
nextCheckTime,
buyPrice
})
}
}
})
},
/** 输入框改变 */
changeSuffixStart(num) {
if (isNaN(num)) {
this.$message.error('后缀范围请输入数字类型')
this.codeForm.codeSuffixStart = this.codeForm.codeSuffixStart.replace(/[^\d]/g, '')
}
if (!this.codeForm.codeSuffixStart) {
this.codeForm.codeSuffixEnd = ''
}
},
changeSuffixEnd() {
if (!this.codeForm.codeSuffixStart) {
this.$message.error('请输入后缀范围起始值')
this.codeForm.codeSuffixEnd = ''
} else if (isNaN(this.codeForm.codeSuffixEnd)) {
this.$message.error('后缀范围请输入数字类型')
this.codeForm.codeSuffixEnd = this.codeForm.codeSuffixStart.replace(/[^\d]/g, '')
} else {
if (parseInt(this.codeForm.codeSuffixStart) > parseInt(this.codeForm.codeSuffixEnd)) {
this.$message.error('后缀结束值不能小于起始值')
this.codeForm.codeSuffixEnd = +this.codeForm.codeSuffixStart + 1
}
}
},
handleResetRow(row) {
// 重置当前行所有数据为空
row.maCode = ''
row.outFacCode = ''
row.maVender = ''
row.thisCheckTime = ''
row.nextCheckTime = ''
row.buyPrice = 0
},
/** 重置按钮操作 */
resetQuery() {
this.dateRange = [];
this.resetForm("queryForm");
this.handleQuery();
},
/** 新增数量盘点按钮操作 */
handleNumberAdd() {
this.isNumCheck = true;
this.isPutInType = false;
this.reset();
this.codeOpen = true;
this.title = "数量盘点入库";
this.resetCodeForm()
this.getUnitData();
this.$nextTick(() => {
this.$refs['codeForm'].clearValidate()
})
},
/** 新增编号盘点按钮操作 */
handleCodeAdd() {
this.isNumCheck = false;
this.isPutInType = false;
this.reset();
this.codeOpen = true;
this.title = "编码盘点入库";
this.resetCodeForm()
this.getUnitData();
this.$nextTick(() => {
this.$refs['codeForm'].clearValidate()
})
},
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map(item => item.dictId)
this.single = selection.length!=1
this.multiple = !selection.length
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const dictId = row.dictId || this.ids
getType(dictId).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改字典类型";
});
},
/** 提交按钮 */
submitForm: function() {
this.$refs['codeForm'].validate(valid => {
if (valid) {
let SavePutInfoDto = {}
// console.log('🚀 ~ this.codeForm:', this.codeForm);
// console.log('🚀 ~ this.numTableList:', this.numTableList);
// console.log('🚀 ~ this.codeTableList:', this.codeTableList);
if (this.isNumCheck) {
// 提交数据
SavePutInfoDto = {
isCode: false,
putInType: this.codeForm.putInType,
remarks: this.codeForm.remarks || '',
machIneDtoList: this.numTableList,
unitId: this.codeForm.unitId,
proId: this.codeForm.proId,
}
console.log('🚀 ~ submitForm: ~ SavePutInfoDto-isNum', SavePutInfoDto)
// 发送请求
inputByCode(SavePutInfoDto).then(response => {
this.$message.success('入库成功')
this.resetCodeForm()
this.numTableList = []
this.codeOpen = false
this.reset()
this.getList()
})
} else {
// 统一处理时间格式为 yyyy-MM-dd
this.codeTableList.forEach(item => {
if (item.thisCheckTime) {
item.thisCheckTime = new Date(item.thisCheckTime).toLocaleDateString('zh-CN', {year: 'numeric', month: '2-digit', day: '2-digit'}).replace(/\//g, '-')
} else {
item.thisCheckTime = ''
}
if (item.nextCheckTime) {
item.nextCheckTime = new Date(item.nextCheckTime).toLocaleDateString('zh-CN', {year: 'numeric', month: '2-digit', day: '2-digit'}).replace(/\//g, '-')
} else {
item.nextCheckTime = ''
}
})
// 提交数据
SavePutInfoDto = {
isCode: true, // 是否编码盘点
putInType: this.codeForm.putInType,
typeId: this.codeForm.typeId,
num: this.codeForm.num,
remarks: this.codeForm.remarks || '',
machIneDtoList: this.codeTableList,
checkMan: this.codeForm.checkMan || '',
unitId: this.codeForm.unitId,
proId: this.codeForm.proId,
}
console.log('🚀 ~ submitForm: ~ SavePutInfoDto', SavePutInfoDto)
if (this.codeTableList.length == 0) {
this.$message.error('请点击填充按钮, 填充数据')
return
}
// 发送请求
inputByCode(SavePutInfoDto).then(response => {
this.$message.success('入库成功')
this.resetCodeForm()
this.codeTableList = []
this.codeOpen = false
this.reset()
this.getList()
})
}
}
})
/* this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.dictId != undefined) {
updateType(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addType(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
}); */
},
// 入库数量输入框失去焦点
handlePutBlur(row) {
if (!row.putInStoreNum) {
this.$message.warning('入库数量不能为空')
row.putInStoreNum = 1
}
},
// 删除行
handleDeleteRow(index) {
this.numTableList.splice(index, 1)
setTimeout(() => {
this.$message.success('删除成功')
}, 50)
},
cancelPop() {
this.$message.info('取消删除')
},
/** 删除按钮操作 */
handleDelete(row) {
const dictIds = row.dictId || this.ids;
this.$modal.confirm('是否确认删除字典编号为"' + dictIds + '"的数据项?').then(function() {
return delType(dictIds);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download('material/returnOfMaterialsInfo/export', {
...this.queryParams
}, `机具退料入库_${new Date().getTime()}.xlsx`)
},
/** 刷新缓存按钮操作 */
handleRefreshCache() {
refreshCache().then(() => {
this.$modal.msgSuccess("刷新成功");
this.$store.dispatch('dict/cleanDict');
});
},
// 获取 设备树结构数据
async GetDeviceTypeTree(){
const params = {
level:4
}
const res = await getDeviceTypeTree(params)
console.log(res)
this.deviceTypeTree = res.data
},
/////// 设备类型树 切换
deviceTypeChange(val){
console.log('🚀 ~ deviceTypeChange ~ val:', val);
// this.cascaderDisabled = true
let nodes = null;
nodes = this.$refs.deviceTypeCascader.getCheckedNodes().length > 0 ? this.$refs.deviceTypeCascader.getCheckedNodes() : [this.$refs.deviceTypeCascader.panel.getNodeByValue(val)]
if(nodes[0].level != 4){
return
}
console.log('🚀 ~ deviceTypeChange ~ nodes[0]:', nodes[0]);
for(let i = 0; i < this.leaseApplyDetails.length; i++) {
if (this.leaseApplyDetails[i].typeId == nodes[0].data.id) {
this.leaseApplyDetails.splice(i,1)
break;
}
}
this.leaseApplyDetails.push(
this.handelTableItemData(nodes[0])
)
console.log('🚀 ~ deviceTypeChange ~ this.leaseApplyDetails:', this.leaseApplyDetails);
// this.deviceType = {}
this.numTable = this.handelTableItemData(nodes[0])
},
//// 将数据处理成 表格中需要的数据
handelTableItemData(node){
const template = JSON.parse(JSON.stringify(this.leaseApplyDetailsItem))
// template.createBy = this.user.name
console.log('🚀 ~ handelTableItemData ~ node.data, node.data.id:', node.data, node.data.id, node);
this.codeForm.typeId = node.data.id
template.num = node.data.num
template.companyId = node.data.companyId
template.typeId = node.data.id
template.unitCn = node.data.unitName
template.typeCn = node.pathLabels[2]
template.guigeCn = node.pathLabels[3]
template.putInStoreNum = 1
if(this.taskId){
const index = this.leaseApplyInfoList.find(key => key.companyId == node.data.companyId)
template.parentId = index ? index.id : ''
}
console.log('🚀 ~ handelTableItemData ~ template:', template);
return template
},
/** 机具厂家 */
supplierInfoList() {
supplierInfoList().then(response => {
this.supplierList = response.rows;
}
);
},
changePutInType(val) {
if (val == '退料入库') {
this.isPutInType = true
} else {
this.isPutInType = false
this.$nextTick(() => {
this.$set(this.codeForm, 'unitId', null)
this.$set(this.codeForm, 'proId', null)
})
}
},
// 领料单位
async getUnitData() {
try {
const res = await getUnitData()
this.unitList = res.data
} catch (error) {
console.log('🚀 ~ getUnitData ~ error:', error)
}
},
changeUnitData(val) {
// console.log('🚀 ~ changeUnitData ~ val:', val);
this.codeForm.unitId = val
this.proList = []
this.$set(this.codeForm, 'proId', null)
if(val) {
this.getProList()
}
},
async getProList() {
const unitId = this.codeForm.unitId
// 领料工程
try {
const res = await getProData({id: unitId})
// console.log('🚀 ~ changeUnitData ~ data:', res.data);
this.proList = res.data
if (res.data.length == 0) {
this.proList = []
this.codeForm.proId = null
} else {
this.proList = res.data
}
// console.log('🚀 ~ changeUnitData ~ this.proList:', this.proList);
} catch (error) {
console.log('🚀 ~ changeUnitData ~ error:', error)
}
},
changeProList(val) {
this.codeForm.proId = val
// console.log('🚀 ~ changeProList ~ this.codeForm:', this.codeForm.proId);
}
},
};
</script>
<style lang="scss" scoped>
::v-deep.el-table .fixed-width .el-button--mini {
width: 60px !important;
margin-bottom: 10px;
}
::v-deep.el-form-item__label {
padding: 0 20px !important;
}
</style>