【出库管理】

dev
qiuhongwu 6 months ago
parent 7d8defe6e6
commit 39d39f9955

@ -9,7 +9,14 @@
<img src="/src/assets/imgs/status/statuszf.png" v-else-if="formData.status == 3" alt="" />
<span v-else></span>
</div>
<el-form ref="formRef" :model="formData" :rules="formRules" label-width="100px" v-loading="formLoading" v-bind:disabled="isShowBtnOther">
<el-form
ref="formRef"
:model="formData"
:rules="formRules"
label-width="100px"
v-loading="formLoading"
v-bind:disabled="isShowBtnOther"
>
<!-- 基础信息 -->
<el-card class="hl-card-info">
<template #header>
@ -27,8 +34,19 @@
<el-row>
<el-col :span="24">
<el-form-item prop="stockInType" label="出库类型">
<el-select v-model="formData.stockInType" clearable style="width: 100%" @change="handleStockType" v-bind:disabled="ctrView || ctrSave">
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.BIZ_STORAGE_OUT_TYPE)" :key="dict.value" :label="dict.label" :value="dict.value" />
<el-select
v-model="formData.stockInType"
clearable
style="width: 100%"
@change="handleStockType"
v-bind:disabled="ctrView || ctrSave || query.type !== 'create'"
>
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.BIZ_STORAGE_OUT_TYPE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
@ -38,7 +56,13 @@
<el-row>
<el-col :span="24">
<el-form-item label="单据日期" prop="createTime">
<el-date-picker v-model="formData.createTime" value-format="x" placeholder="单据日期" disabled class="!w-400px" />
<el-date-picker
v-model="formData.createTime"
value-format="x"
placeholder="单据日期"
disabled
class="!w-400px"
/>
</el-form-item>
</el-col>
</el-row>
@ -47,29 +71,63 @@
<!-- 上游单号修改为派工单号 注释关联销售单-->
<el-form-item prop="headerNo" label="派工单号">
<!-- <el-input v-model="formData.headerNo" class="!w-400px" @click="handleHeaderNo" v-bind:disabled="ctrView || ctrSave || enableHeadNo" /> -->
<el-input class="!w-400px" v-bind:disabled="ctrView || ctrSave || enableHeadNo" v-model="formData.saleOrderCode" @click.prevent="handleHeaderNo" :readonly="!isEditing" placeholder="请输入派工单号">
<template #append><el-button v-bind:disabled="ctrView || ctrSave || enableHeadNo" :icon="Search" @click="handleHeaderNo" /></template>
</el-input>
<el-input
class="!w-400px"
v-bind:disabled="ctrView || ctrSave || enableHeadNo || query.type !== 'create'"
v-model="formData.headerNo"
@click.prevent="handleHeaderNo"
:readonly="!isEditing"
placeholder="请输入派工单号"
>
<template #append
><el-button
v-bind:disabled="ctrView || ctrSave || enableHeadNo||query.type !== 'create'"
:icon="Search"
@click="handleHeaderNo"
/></template>
</el-input>
</el-form-item>
</el-col>
</el-row>
</el-col>
<el-col :span="8">
<el-row>
<el-col :span="24">
<el-form-item prop="industry" label="单据状态">
<el-select v-model="formData.status" placeholder="下拉选择" clearable class="!w-400px" disabled>
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.BIZ_STORAGE_STATUS)" :key="dict.value" :label="dict.label" :value="dict.value" />
<el-select
v-model="formData.status"
placeholder="下拉选择"
clearable
class="!w-400px"
disabled
>
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.BIZ_STORAGE_STATUS)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item prop="whId" label="出库仓库" required>
<el-select v-model="formData.whId" placeholder="下拉选择" clearable class="!w-400px" @change="handleWh" v-bind:disabled="ctrView || ctrSave">
<el-option v-for="dict in whList" :key="dict.id" :label="dict.whName" :value="dict.id" />
<el-form-item label="出库仓库">
<el-select
v-model="formData.whId"
placeholder="下拉选择"
clearable
class="!w-400px"
@change="handleWh"
v-bind:disabled="ctrView || ctrSave || query.type !== 'create'"
>
<el-option
v-for="dict in whList"
:key="dict.id"
:label="dict.whName"
:value="dict.id"
/>
</el-select>
</el-form-item>
</el-col>
@ -79,33 +137,63 @@
<el-row>
<el-col :span="24">
<el-form-item label="备注" prop="description">
<el-input type="textarea" v-model="formData.description" show-word-limit maxlength="200" class="!w-2080px" v-bind:disabled="ctrView || ctrSave" />
<el-input
type="textarea"
v-model="formData.description"
show-word-limit
maxlength="200"
class="!w-2080px"
v-bind:disabled="ctrView || ctrSave"
/>
</el-form-item>
</el-col>
</el-row>
</el-card>
<!-- 物料信息 -->
<el-card class="hl-card-info">
<el-card class="hl-card-info" :style="{ display: query.type == 'create' ? 'none' : '' }">
<template #header>
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">物料信息</span>
</template>
<el-row>
<el-row v-if="!formData.headerNo">
<el-col>
<el-card class="hl-incard">
<el-col>
<el-button class="hl-addbutton" type="primary" size="large" v-bind:disabled="ctrView || ctrSave" @click="openMatForm"></el-button>
<el-button
class="hl-addbutton"
type="primary"
size="large"
v-bind:disabled="ctrView || ctrSave"
@click="openMatForm"
>新增</el-button
>
</el-col>
<el-form ref="matSubFormRef" :model="formData.matItemDOList" :rules="subFormRules" v-loading="subFormLoading" label-width="0">
<el-form
ref="matSubFormRef"
:model="formData.matItemDOList"
:rules="subFormRules"
v-loading="subFormLoading"
label-width="0"
>
<el-table :data="formData.matItemDOList" class="hl-table">
<el-table-column type="index" label="序号" min-width="80" align="center" fixed />
<el-table-column prop="matCode" min-width="180" align="center">
<template #header> <span class="hl-table_header">*</span> 物料编码</template>
<template #default="scope">
<el-form-item :prop="`${scope.$index}.matCode`" :rules="subFormRules.matCode" class="mb-0px!">
<el-form-item
:prop="`${scope.$index}.matCode`"
:rules="subFormRules.matCode"
class="mb-0px!"
>
<!-- <MaterialSelect v-model="scope.row.matId"
@update:newValue="handleSelectedMaterial(scope.$index, $event)"
v-bind:disabled="ctrView || ctrSave" /> -->
<el-input class="!w-265px" placeholder="物料编码" v-bind:disabled="true || ctrView || ctrSave" v-model="scope.row.matCode" readonly>
<el-input
class="!w-265px"
placeholder="物料编码"
v-bind:disabled="true || ctrView || ctrSave"
v-model="scope.row.matCode"
readonly
>
<!-- <template #append><el-button @click="openMatForm" disabled>
<Icon icon="ep:search" class="mr-5px" />
</el-button></template> -->
@ -120,7 +208,12 @@
v-if="scope.row.matType ? true : false" />
</template> -->
</el-table-column>
<el-table-column prop="matSpec" label="规格/型号" min-width="120" align="center" />
<el-table-column
prop="matSpec"
label="规格/型号"
min-width="120"
align="center"
/>
<el-table-column prop="matUnit" label="系统单位" min-width="120" align="center">
<!-- <template #default="scope">
@ -133,21 +226,164 @@
<el-table-column prop="storageOkQty" min-width="120" align="center">
<template #header> <span class="hl-table_header">*</span>本次出库数量</template>
<template #default="scope">
<el-form-item :prop="`${scope.$index}.storageOkQty`" :rules="subFormRules.storageOkQty" class="mb-0px!">
<el-input v-model="scope.row.storageOkQty" v-bind:disabled="ctrView || ctrSave" />
<el-form-item
:prop="`${scope.$index}.storageOkQty`"
:rules="subFormRules.storageOkQty"
class="mb-0px!"
>
<el-input
v-model="scope.row.storageOkQty"
v-bind:disabled="ctrView || ctrSave"
/>
</el-form-item>
</template>
</el-table-column>
<!-- 新增领料工序 -->
<el-table-column prop="procedureId" label="领料工序" min-width="120" align="center" >
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.procedureId`" :rules="subFormRules.procedureId" class="mb-0px!">
<ProcedureSelect :disabled="detailDisabled || row.procedureStatus != 0" v-model="row.procedureId" @update:newValue="(val) => { handleSelectedProcedure(row, val);}" />
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="description" min-width="180" label="备注" align="center">
<template #default="scope">
<el-input v-model="scope.row.description" v-bind:disabled="ctrView || ctrSave" />
<el-input
v-model="scope.row.description"
v-bind:disabled="ctrView || ctrSave"
/>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="100">
<template #default="scope">
<!-- <el-button link type="primary" @click="handlefuke(scope.$index, scope.row)">复制</el-button> -->
<el-button link type="danger" size="small" @click.prevent="handleDelete2(scope.$index)" v-bind:disabled="ctrView || ctrDelete">
<el-button
link
type="danger"
size="small"
@click.prevent="handleDelete2(scope.$index)"
v-bind:disabled="ctrView || ctrDelete"
>
删除
</el-button>
</template>
</el-table-column>
</el-table>
</el-form>
</el-card>
</el-col>
</el-row>
<el-row v-else>
<el-col>
<el-card class="hl-incard">
<el-col>
<el-button
class="hl-addbutton"
type="primary"
size="large"
v-bind:disabled="ctrView || ctrSave"
@click="openMatForm2"
>新增</el-button
>
</el-col>
<el-form
ref="matSubFormRef"
:model="formData.matItemDOList"
:rules="subFormRules"
v-loading="subFormLoading"
label-width="0"
>
<el-table :data="formData.matItemDOList" class="hl-table">
<el-table-column type="index" label="序号" min-width="70" align="center" fixed />
<el-table-column prop="projectSubCode" min-width="160" align="center">
<template #header> <span class="hl-table_header">*</span> 物料编码</template>
<template #default="scope">
<el-form-item
:prop="`${scope.$index}.projectSubCode`"
:rules="subFormRules.projectSubCode"
class="mb-0px!"
>
<!-- <MaterialSelect v-model="scope.row.matId"
@update:newValue="handleSelectedMaterial(scope.$index, $event)"
v-bind:disabled="ctrView || ctrSave" /> -->
<el-input
class="!w-265px"
placeholder="物料编码"
v-bind:disabled="true || ctrView || ctrSave"
v-model="scope.row.projectSubCode"
readonly
>
<!-- <template #append><el-button @click="openMatForm" disabled>
<Icon icon="ep:search" class="mr-5px" />
</el-button></template> -->
</el-input>
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="projectSubName" label="物料名称" min-width="220" align="center" />
<el-table-column prop="materialType" label="物料类型" min-width="120" align="center">
<!-- <template #default="scope">
<dict-tag :type="DICT_TYPE.BIZ_MATERIAL_TYPE" :value="scope.row.matType"
v-if="scope.row.matType ? true : false" />
</template> -->
</el-table-column>
<el-table-column
prop="spec"
label="规格/型号"
min-width="120"
align="center"
/>
<el-table-column prop="unit" label="系统单位" min-width="120" align="center">
<!-- <template #default="scope">
<dict-tag :type="DICT_TYPE.BIZ_MATERIAL_UNIT" :value="scope.row.matUnit"
v-if="scope.row.matUnit ? true : false" />
</template> -->
</el-table-column>
<el-table-column prop="stockQuantity" label="库存数量" min-width="120" align="center" />
<el-table-column prop="storageOkQty" min-width="120" align="center">
<template #header> <span class="hl-table_header">*</span>本次出库数量</template>
<template #default="scope">
<el-form-item
:prop="`${scope.$index}.storageOkQty`"
:rules="subFormRules.storageOkQty"
class="mb-0px!"
>
<el-input
v-model="scope.row.storageOkQty"
v-bind:disabled="ctrView || ctrSave"
/>
</el-form-item>
</template>
</el-table-column>
<!-- 新增领料工序 -->
<el-table-column prop="procedureId" label="领料工序" min-width="120" align="center" >
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.procedureId`" :rules="subFormRules.procedureId" class="mb-0px!">
<ProcedureSelect v-bind:disabled="ctrView || ctrSave" v-model="row.procedureId" @update:newValue="(val) => { handleSelectedProcedure(row, val);}" />
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="description" min-width="180" label="备注" align="center">
<template #default="scope">
<el-input
v-model="scope.row.description"
v-bind:disabled="ctrView || ctrSave"
/>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="100">
<template #default="scope">
<!-- <el-button link type="primary" @click="handlefuke(scope.$index, scope.row)">复制</el-button> -->
<el-button
link
type="danger"
size="small"
@click.prevent="handleDelete2(scope.$index)"
v-bind:disabled="ctrView || ctrDelete"
>
删除
</el-button>
</template>
@ -159,7 +395,7 @@
</el-row>
</el-card>
<!-- 附件信息 -->
<el-card class="hl-card-info">
<el-card class="hl-card-info" :style="{ display: query.type == 'create' ? 'none' : '' }">
<template #header>
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">附件信息</span>
</template>
@ -167,30 +403,68 @@
<el-col>
<el-card class="hl-incard">
<el-col>
<el-upload ref="matUploadRef" :file-list="matUploadFiles" multiple :action="uploadUrl" :headers="{
Authorization: 'Bearer ' + getAccessToken(),
'tenant-id': getTenantId()
}" name="files" :show-file-list="false" :auto-upload="false" :data="matUploadData" :on-change="matUploadChange" :on-error="handleError" :on-success="handleSuccess" :before-upload="before" class="upload-file-uploader">
<el-upload
ref="matUploadRef"
:file-list="matUploadFiles"
multiple
:action="uploadUrl"
:headers="{
Authorization: 'Bearer ' + getAccessToken(),
'tenant-id': getTenantId()
}"
name="files"
:show-file-list="false"
:auto-upload="false"
:data="matUploadData"
:on-change="matUploadChange"
:on-error="handleError"
:on-success="handleSuccess"
:before-upload="before"
class="upload-file-uploader"
>
<el-button type="primary" v-bind:disabled="ctrView || ctrSave">
<Icon icon="ep:upload-filled" />上传
</el-button>
</el-upload>
</el-col>
<el-table :data="formData.attachments" class="hl-table" v-loading.fullscreen.lock="uploading" element-loading-text="..." element-loading-background="rgba(122, 122, 122, 0.6)">
<el-table
:data="formData.attachments"
class="hl-table"
v-loading.fullscreen.lock="uploading"
element-loading-text="附件上传中..."
element-loading-background="rgba(122, 122, 122, 0.6)"
>
<el-table-column prop="name" label="文件名称" align="center">
<!-- <template #default="scope">
<a :href="scope.row.url" target="_blank" style="color: #409eff">{{ scope.row.name }} </a>
</template> -->
</el-table-column>
<el-table-column prop="createTime" align="center" label="上传日期" :formatter="dateFormatter" />
<el-table-column
prop="createTime"
align="center"
label="上传日期"
:formatter="dateFormatter"
/>
<el-table-column label="操作" align="center">
<template #default="scope">
<el-button link type="danger" size="small" v-bind:disabled="ctrView || ctrDelete" @click="handleDeleteAttachment(scope.$index, scope.row.businessFileType)">
<el-button
link
type="danger"
size="small"
v-bind:disabled="ctrView || ctrDelete"
@click="handleDeleteAttachment(scope.$index, scope.row.businessFileType)"
>
删除
</el-button>
<el-button link type="primary" size="small" v-bind:disabled="ctrView || ctrDelete" @click="downloadAttachment(scope.row.name, scope.row.url)">
<el-button
link
type="primary"
size="small"
v-bind:disabled="ctrView || ctrDelete"
@click="downloadAttachment(scope.row.name, scope.row.url)"
>
下载
</el-button>
</template>
@ -201,7 +475,7 @@
</el-row>
</el-card>
<!-- 系统信息 -->
<el-card class="hl-card-info">
<el-card class="hl-card-info" :style="{ display: query.type == 'create' ? 'none' : '' }">
<template #header>
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">系统信息</span>
</template>
@ -246,20 +520,21 @@
</el-form>
<div class="text-center hl-footer">
<el-button @click="() => router.go(-1)" size="large"> </el-button>
<el-button @click="submitForm" type="success" v-if="btnSave" size="large">
</el-button>
<el-button @click="handleStatus(2)" type="primary" v-if="btnSave" size="large">
</el-button>
<el-button @click="handleStatus(3)" type="danger" v-if="btnCancel" size="large">
</el-button>
<el-button @click="submitForm" type="success" v-if="btnSave" size="large"> </el-button>
<el-button @click="handleStatus(2)" type="primary" v-if="btnSave||query.type!=='create'" size="large"
> </el-button
>
<el-button @click="handleStatus(3)" type="danger" v-if="btnCancel" size="large"
> </el-button
>
</div>
</el-card>
<!-- 表单弹窗物料列表 -->
<materials ref="matOpenFormRef" @success="getList" />
<materials2 ref="matOpenFormRef2" @success="getList2" />
<!-- 表单弹窗物料列表 -->
<projects ref="proOpenFormRef" @success="getProject" />
<taskdispatchselect ref="handleHeaderNoRef" @success="getHeaderNo" />
</template>
<script setup lang="ts">
import { ref } from 'vue'
@ -273,7 +548,7 @@ import * as StorageMatApi from '@/api/biz/storagemat'
import { getAccessToken, getTenantId } from '@/utils/auth'
import { useUserStore } from '@/store/modules/user'
import MaterialSelect from '@/views/biz/hlvuestyle/materialSelect.vue'
import ProcedureSelect from '@/views/biz/hlvuestyle/procedureSelect.vue'
import * as MaterialApi from '@/api/biz/material'
import * as WarehouseApi from '@/api/biz/warehouse'
import * as RgApi from '@/api/biz/rg'
@ -284,6 +559,7 @@ import * as UserApi from '@/api/system/user'
import RgSelect from '@/views/biz/hlvuestyle/rgSelect.vue'
import PnSelect from '@/views/biz/hlvuestyle/pnSelect.vue'
import materials from './materials.vue'
import materials2 from './materials2.vue'
import projects from './subproject.vue'
import taskdispatchselect from './taskdispatchselect.vue'
@ -316,7 +592,8 @@ const formData = ref({
cancel: undefined,
cancelTime: undefined,
matItemDOList: [],
attachments: []
attachments: [],
projectSubCode:undefined
})
const formRules = reactive({
@ -338,25 +615,28 @@ const subFormRules = reactive({
})
const matOpenFormRef = ref()
const matOpenFormRef2 = ref()
const proOpenFormRef = ref()
//
const openMatForm = () => {
// if (formData.value.whId == undefined || formData.value.whId == '') {
// message.alertWarning('')
// return
// }
// formData.value.whId
matOpenFormRef.value.open(formData.value.whId, 'out')
}
//
const openMatForm2 = () => {
console.log(formData.value.projectSubCode);
matOpenFormRef2.value.open(formData.value.whId, formData.value.projectSubCode)
}
const handleHeaderNoRef = ref()
const handleHeaderNo =()=>{
handleHeaderNoRef.value.open()
const handleHeaderNo = () => {
handleHeaderNoRef.value.open()
}
const openProjectForm = (scope) => {
proOpenFormRef.value.open(scope)
}
// const openProjectForm = (scope) => {
// proOpenFormRef.value.open(scope)
// }
const getList = async (arrMat) => {
arrMat.forEach((row) => {
if (
@ -380,6 +660,13 @@ const getList = async (arrMat) => {
}
})
}
const getList2 = async (arrMat) => {
arrMat.forEach((row) => {
formData.value.matItemDOList.push(row)
})
}
const getProject = async (pro, scope) => {
formData.value.matItemDOList.forEach((item) => {
@ -396,9 +683,7 @@ const getProject = async (pro, scope) => {
}
const getHeaderNo = async (headerNo) => {
console.log(headerNo.code);
formData.value.headerNo = headerNo.code
}
//
@ -752,12 +1037,6 @@ const handleWh = async (wid) => {
formData.value.matItemDOList = []
formData.value.rgId = ''
//
rgList.value = (await RgApi.getSimpList()).filter((rg) => rg.wh_id == wid)
//
pnList.value = (await PnApi.getSimpList()).filter((pn) => pn.wh_id == wid)
//await getMatList()
}
const getMatList = async (name) => {
@ -919,13 +1198,14 @@ onMounted(async () => {
//-
whList.value = await WarehouseApi.getWarehouseSimpList()
console.log('仓库', whList.value)
formData.value.whId = Math.min.apply(
Math,
whList.value.map(function (i) {
return i.id
})
)
// formData.value.whId = Math.min.apply(
// Math,
// whList.value.map(function (i) {
// return i.id
// })
// )
//
await getMatList('')
@ -1029,13 +1309,13 @@ const handleSelectedMaterial = (currentIndex: number, newValue: any) => {
)
}
//
const handleSelectedrg = (currentIndex: number, newValue: any) => {
formData.value.matItemDOList[currentIndex].rgId = newValue?.id
}
//
const handleSelectedpn = (currentIndex: number, newValue: any) => {
formData.value.matItemDOList[currentIndex].pnId = newValue?.id
//
const handleSelectedProcedure = async (row: any, newValue: any) => {
if (newValue) {
row.procedureId = newValue.id
} else {
row.procedureId = undefined
}
}
</script>
<style>

@ -28,8 +28,6 @@
<el-table-column prop="shortName" label="物料简称" min-width="120" align="center" />
<el-table-column prop="matSpec" label="规格/型号" min-width="120" align="center" />
<el-table-column prop="matBrand" label="品牌" min-width="120" align="center" />
<el-table-column prop="rgName" label="库区" min-width="120" align="center" v-if="formType =='out'"/>
<el-table-column prop="pnName" label="库位" min-width="140" align="center" v-if="formType =='out'" />
<el-table-column prop="storageOkQty" label="库存数量" min-width="120" align="center" />
<el-table-column prop="matUnit" label="库存单位" min-width="120" align="center" />
</el-table>

@ -0,0 +1,218 @@
<template>
<Dialog :title="dialogTitle" v-model="dialogVisible" width="80%">
<ContentWrap class="borderxx">
<el-form class="-mb-15px" :model="queryReqVo" :inline="true" label-width="108px">
<el-form-item label=" 物料编码:" label-width="150px">
<el-input
v-model="queryReqVo.projectsubCode"
placeholder="物料编码"
class="!w-240px"
v-bind:disabled="!chkboxEnable"
/>
</el-form-item>
<el-form-item label=" 物料名称:" label-width="150px">
<el-input
v-model="queryReqVo.projectSubName"
placeholder="物料名称"
class="!w-240px"
v-bind:disabled="!chkboxEnable"
/>
</el-form-item>
<el-form-item label="规格/型号">
<el-input
v-model="queryReqVo.spec"
placeholder="规格/型号"
class="!w-240px"
v-bind:disabled="!chkboxEnable"
/>
</el-form-item>
<el-form-item>
<el-button @click="handleQuery" type="primary" v-bind:disabled="!chkboxEnable">
<Icon icon="ep:search" class="mr-5px" /> 搜索 </el-button
><el-button @click="resetQuery" v-bind:disabled="!chkboxEnable">
<Icon icon="ep:refresh" class="mr-5px" /> 重置
</el-button>
</el-form-item>
</el-form>
</ContentWrap>
<el-card class="hl-table">
<el-table
ref="multipleTable"
:data="list"
v-loading="formLoading"
class="hl-table"
@selection-change="handleSelectionChange"
:row-key="getRowKeys"
min-width="1800"
@row-click="clickRow"
:style="{ height: list && list.length > 9 ? '450px' : '' }"
>
<el-table-column
type="selection"
width="55"
:reserve-selection="true"
:selectable="(row) => chkboxEnable"
/>
<!-- <el-table-column prop="no" label="序号" min-width="120" align="center" /> -->
<el-table-column label="序号" type="index" min-width="70" align="center" />
<el-table-column label="层级" prop="layer" min-width="70" align="center" />
<el-table-column label="层次" prop="layerSort" min-width="70" align="center" />
<el-table-column prop="projectSubCode" label="物料编码" min-width="140" align="center" />
<el-table-column prop="projectSubName" label="物料名称" min-width="260" align="center" />
<el-table-column prop="materialType" label="物料类型" min-width="120" align="center" />
<el-table-column prop="spec" label="规格/型号" min-width="120" align="center" />
<el-table-column prop="isVirtual" label="是否虚拟件" min-width="120" align="center">
<template #default="scope">
<dict-tag :type="DICT_TYPE.BIZ_COMMON_IS_OR_NOT" :value="scope.row.isVirtual" />
</template>
</el-table-column>
<el-table-column prop="sort" label="版本号" min-width="120" align="center" />
<el-table-column prop="stockQuantity" label="库存数量" min-width="120" align="center" />
<el-table-column label="库存单位" align="center" prop="unit" min-width="120">
<template #default="scope">
<dict-tag :type="DICT_TYPE.BIZ_MATERIAL_UNIT" :value="scope.row.unit" />
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<Pagination
:total="total"
v-model:page="queryReqVo.pageNo"
v-model:limit="queryReqVo.pageSize"
@pagination="getList()"
/>
</el-card>
<template #footer>
<el-button @click="submitForm" type="primary" :disabled="formLoading"> </el-button>
<el-button @click="dialogVisible = false"> </el-button>
</template>
</Dialog>
</template>
<script setup lang="ts">
import { ref } from 'vue'
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
// import * as StorageLogApi from '@/api/biz/storagelog'
import * as StorageApi from '@/api/biz/storage'
import { ElTable } from 'element-plus'
//:selectable="row=>row.disabled || chkboxEnable"
const chkboxEnable = ref(true)
const queryEnable = ref(true)
const { t } = useI18n() //
const message = useMessage() //
const dialogVisible = ref(false) //
const dialogTitle = ref('') //
const formLoading = ref(false) // 12
const list = ref([]) //
const total = ref(0) //
const multipleTable = ref<InstanceType<typeof ElTable>>()
const multipleSelection = ref([])
const handleSelectionChange = (val: []) => {
multipleSelection.value = val
}
const clickRow = (row: any) => {
if (chkboxEnable.value) {
if (row) {
multipleTable.value!.toggleRowSelection(row, undefined)
} else {
multipleTable.value!.clearSelection()
}
}
}
//key,
const getRowKeys = (row) => {
return row.matId
}
const queryReqVo: any = reactive({
pageNo: 1,
pageSize: 10,
code: undefined,
whId: undefined,
projectsubCode: undefined,
spec: undefined,
projectSubName: undefined
})
/** 搜索按钮操作 */
const handleQuery = async () => {
queryReqVo.pageNo = 1
getList()
}
/** 重置按钮操作 */
const resetQuery = () => {
queryReqVo.matCode = ''
queryReqVo.matSpec = ''
handleQuery()
}
const getList = async () => {
formLoading.value = true
var data
try {
data = await StorageApi.getBomByCode(queryReqVo)
console.log(data)
// data.list.forEach(mat =>{
// mat.storageOkQty = mat.matRest
// mat.requireAmount = mat.matRest
// })
//list.value = data.splice((queryReqVo.pageNo - 1) * queryReqVo.pageSize, queryReqVo.pageSize)
list.value = data
} finally {
formLoading.value = false
}
}
/** 打开弹窗 */
const open = async (whId: number, code: any) => {
queryReqVo.code = code
multipleSelection.value = []
dialogVisible.value = true
dialogTitle.value = '物料列表'
//
queryReqVo.whId = whId
queryReqVo.matCode = ''
queryReqVo.matSpec = ''
getList()
chkboxEnable.value = true
list.value.forEach((row) => {
setTimeout(() => {
multipleTable.value.toggleRowSelection(row, !chkboxEnable.value) //
}, 0)
})
try {
//
} finally {
formLoading.value = false
}
}
defineExpose({ open }) // open
/** 提交表单 */
const emit = defineEmits(['success']) // success
const submitForm = async () => {
//
formLoading.value = true
try {
dialogVisible.value = false
multipleSelection.value.forEach((item) => {
item.matId = item.id
item.matRest = item.storageOkQty
item.storageOkQty = ''
item.whId = item.whId ?? ''
item.rgId = item.rgId ?? ''
item.pnId = item.pnId ?? ''
})
//
emit('success', multipleSelection.value)
} finally {
formLoading.value = false
}
}
</script>
Loading…
Cancel
Save