devicesmgt/sgzb-ui/src/views/warehouseManage/warehousing/Inventory/index.vue

1506 lines
56 KiB
Vue
Raw Normal View History

2024-06-04 11:04:01 +08:00
<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"
2024-06-05 10:08:46 +08:00
v-hasPermi="['warehousing:Inventory:add']"
2024-06-04 11:04:01 +08:00
>数量盘点</el-button
>
<el-button
type="success"
icon="el-icon-plus"
size="mini"
@click="handleCodeAdd"
2024-06-05 10:08:46 +08:00
v-hasPermi="['warehousing:Inventory:add']"
2024-06-04 11:04:01 +08:00
>编码盘点</el-button
>
</el-form-item>
</el-form>
<el-table
v-loading="loading"
:data="returnList"
@selection-change="handleSelectionChange"
border
>
<el-table-column
align="center"
label="序号"
type="index"
:index="
indexContinuation(queryParams.pageNum, queryParams.pageSize)
"
/>
<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">
<template slot-scope="{ row }">
<el-button
type="text"
size="mini"
@click="queryDetails(row)"
2024-06-05 10:08:46 +08:00
v-hasPermi="['warehousing:Inventory:view']"
>查看</el-button
2024-06-04 11:04:01 +08:00
>
</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="100"
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="100"
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"
>
<!-- <el-table-column type="selection" width="55" align="center" /> -->
<el-table-column
label="序号"
align="center"
width="80"
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"
stripe
v-if="isNumCheck"
>
<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>
<!-- 查看时详情弹框 -->
<DialogModel
:dialogConfig="dialogConfig"
@closeDialogOuter="closeDialogOuter"
>
<template slot="outerContent">
<TableMode
:config="dialogConfig"
:sendParams="sendParams"
:sendApi="getInventoryWarehousingApi"
/>
</template>
</DialogModel>
</div>
</template>
<script>
import {
listType,
getType,
delType,
addType,
updateType,
refreshCache,
} from '@/api/system/dict/type'
import {
getReturnOfMaterialsInfoAll,
getTypeList,
getDeviceTypeTree,
inputByCode,
getInventoryWarehousingApi,
} from '@/api/store/putInStore'
import { getInfo } from '@/api/login'
import { supplierInfoList } from '@/api/store/tools'
import { getUnitData, getProData } from '@/api/claimAndRefund/receive'
import DialogModel from '@/components/DialogModel'
import TableMode from '@/components/TableModel'
import { dialogConfig } from './config'
export default {
name: 'DevicesWarehousing',
// dicts: ['sys_normal_disable'],
components: {
DialogModel,
TableMode,
},
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',
},
],
},
// 详情弹框配置
dialogConfig,
getInventoryWarehousingApi,
sendParams: {},
}
},
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.GetDeviceTypeTree()
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.GetDeviceTypeTree()
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('是否确认所选择的数据项?')
.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);
},
/**
* -----------------------------------------------------------------------------------------------------------------------------
*/
/* 查看详情 */
async queryDetails(row) {
this.sendParams.kindName = row.kindName
this.dialogConfig.outerVisible = true
},
/* 外层弹框关闭 */
closeDialogOuter() {
this.dialogConfig.outerVisible = false
},
},
}
</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>