siontion 3 months ago
commit 5138d9c974

@ -4,7 +4,7 @@
<el-card class="hl-card-info">
<el-row>
<el-col>
<el-button type="primary" size="large" @click="onAddItem"></el-button>
<el-button type="primary" size="large" @click="onAddItem" v-if="!distype"></el-button>
</el-col>
<el-col>
<el-card class="hl-incard">
@ -42,7 +42,7 @@
<el-input-number
min="1"
:precision="0"
:disabled="detailDisabled"
:disabled="distype"
v-model="scope.row.sort"
placeholder="请输入显示顺序"
/>
@ -54,7 +54,7 @@
<el-input-number
min="1"
:precision="0"
:disabled="detailDisabled"
:disabled="distype"
@change="endTimeChange(scope.row)"
v-model="scope.row.amount"
placeholder="请输入每箱配比"
@ -63,10 +63,10 @@
</el-table-column>
<el-table-column label="箱数量" align="center" prop="integer" min-width="100" />
<el-table-column label="剩余数量" align="center" prop="remainder" min-width="100" />
<el-table-column label="操作" align="center" prop="" fixed="right" min-width="120">
<el-table-column label="操作" align="center" prop="" fixed="right" min-width="120" v-if="!distype">
<template #default="scope">
<el-button type="danger" link size="small" @click="onDeleteItem(scope.$index)"
>删除</el-button
>删除</el-button
>
</template>
</el-table-column>
@ -79,7 +79,7 @@
<template #footer>
<el-button @click="dialogVisible = false" :loading="formLoading"> </el-button>
<el-button type="primary" @click="submitForm()" :loading="formLoading"> </el-button>
<el-button type="primary" @click="submitForm()" :loading="formLoading" v-if="!distype"> </el-button>
</template>
</Dialog>
<Fromdialog ref="fromref" @success="handleFromClick" />
@ -117,7 +117,12 @@ const subFormRules = reactive({
})
/** 打开弹窗 */
const fid = ref()
const open = async (fData, val, index) => {
const distype = ref(false)
const open = async (fData, val, index, type) => {
console.log(type)
if (type == 'detail') {
distype.value=true
}
resetForm()
formData.value.index = index
console.log(val.saleOrderPackingClauseDetails == undefined)

@ -313,7 +313,7 @@
min-width="220"
:formatter="dateFormatter"
/>
<el-table-column label="操作" align="center" width="180">
<el-table-column label="操作" align="center" width="220">
<template #default="scope">
<el-button
v-if="'update,create,alter'.indexOf(query.active) > -1"
@ -345,6 +345,9 @@
>
打印
</el-button>
<el-button link
type="primary"
size="small" @click="openDetail(scope.row, scope.$index,'detail')">详情</el-button>
</template>
</el-table-column>
</el-table>
@ -563,8 +566,8 @@ const onAddItem = () => {
//
const chestref = ref()
const openDetail = (val, index) => {
chestref.value.open(formData.value, val, index)
const openDetail = (val, index,type) => {
chestref.value.open(formData.value, val, index,type)
}
const handlechestSuccess = (val) => {
List.value[val.index].saleOrderPackingClauseDetails = []

@ -39,9 +39,7 @@
clearable
style="width: 100%"
@change="handleStockType"
v-bind:disabled="
ctrView || ctrSave || enableHeadNo || activetypetype !== 'create'
"
v-bind:disabled="ctrView || ctrSave || enableHeadNo || activetype !== 'create'"
>
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.BIZ_STORAGE_OUT_TYPE)"
@ -188,6 +186,7 @@
>新增</el-button
>
<el-button
style="margin-left: 10px !important"
class="hl-addbutton"
type="primary"
size="large"
@ -337,24 +336,24 @@
<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="activetype == 'review' || activetype == 'Check'"
@click="openMatForm2"
>新增(bom)</el-button
>
<el-button
class="hl-addbutton"
type="primary"
size="large"
v-bind:disabled="activetype == 'review' || activetype == 'Check'"
@click="processBom"
>更新BOM</el-button
>
</el-col>
<el-button
class="hl-addbutton"
type="primary"
size="large"
v-bind:disabled="activetype == 'review' || activetype == 'Check'"
@click="openMatForm2"
>新增</el-button
>
<!-- (bom) -->
<el-button
style="margin-left: 10px !important"
class="hl-addbutton"
type="primary"
size="large"
v-bind:disabled="activetype == 'review' || activetype == 'Check'"
@click="processBom"
>更新BOM</el-button
>
<el-form
ref="matSubFormRef"
:model="formData.matItemDOList"
@ -732,7 +731,6 @@ import { id } from 'node_modules/element-plus/es/locale'
const reload: any = inject('reload')
const commonStore = useCommonStore()
const activetype = toRef(commonStore.getStore('active'))
const activeId = toRef(commonStore.getStore('id'))
const { t } = useI18n() //
@ -812,13 +810,23 @@ const handleHeaderNo = () => {
}
const getList = async (arrMat) => {
arrMat.forEach((row) => {
formData.value.matItemDOList.push(row)
arrMat.forEach((item) => {
const exists = formData.value.matItemDOList.some(
(listItem) => listItem.projectSubCode === item.projectSubCode
)
if (!exists) {
formData.value.matItemDOList.push(item)
}
})
}
const getList2 = async (arrMat) => {
arrMat.forEach((row) => {
formData.value.matItemDOList.push(row)
arrMat.forEach((item) => {
const exists = formData.value.matItemDOList.some(
(listItem) => listItem.projectSubCode === item.projectSubCode
)
if (!exists) {
formData.value.matItemDOList.push(item)
}
})
}

@ -1,6 +1,6 @@
<template>
<el-card class="hl-card">
<template #header> <span>入库管理</span></template>
<template #header> <span>退料申请</span></template>
<ContentWrap class="borderxx">
<!-- 搜索工作栏 -->
<el-form
@ -10,7 +10,7 @@
:inline="true"
label-width="108px"
>
<el-form-item label="入库单号" prop="stockNo">
<el-form-item label="退料单号" prop="stockNo">
<el-input
v-model="queryParams.stockNo"
placeholder="入库单号"
@ -19,10 +19,10 @@
class="!w-240px"
/>
</el-form-item>
<el-form-item label="上游单号" prop="headerNo">
<el-form-item label="单据日期" prop="stockNo">
<el-input
v-model="queryParams.headerNo"
placeholder="上游单号"
v-model="queryParams.stockNo"
placeholder="单据日期"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
@ -38,30 +38,16 @@
/>
</el-form-item>
<el-form-item label="物料名称" prop="matName">
<el-input
v-model="queryParams.matName"
placeholder="物料名称"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="入库类型" prop="stockInType">
<el-select
v-model="queryParams.stockInType"
placeholder="下拉选择"
<el-input
v-model="queryParams.matName"
placeholder="物料名称"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
>
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.BIZ_STORAGE_IN_TYPE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
/>
</el-form-item>
<el-form-item label="入库仓库" prop="whId">
<el-form-item label="接收仓库" prop="whId">
<el-select v-model="queryParams.whId" placeholder="下拉选择" clearable class="!w-240px">
<el-option
v-for="dict in warehouseList"
@ -106,23 +92,28 @@
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list" :show-overflow-tooltip="true" :stripe="true" class="hl-table">
<el-table
v-loading="loading"
:data="list"
:show-overflow-tooltip="true"
:stripe="true"
class="hl-table"
>
<!-- <el-table-column label="主键id" align="center" prop="id" /> -->
<el-table-column type="index" width="100" fixed label="序号" align="center" />
<el-table-column label="入库单号" align="center" prop="stockNo" min-width="210" fixed >
<el-table-column type="index" width="100" fixed label="序号" align="center" />
<el-table-column label="退料单号" align="center" prop="stockNo" min-width="210" fixed>
<template #default="scope">
<el-button text type="primary" @click="openDetail('review',scope.row.id)">
{{scope.row.stockNo}}
<el-button text type="primary" @click="openDetail('review', scope.row.id)">
{{ scope.row.stockNo }}
</el-button>
</template>
</el-table-column>
<el-table-column label="入库类型" align="center" prop="stockInType" min-width="120">
<el-table-column label="退料类型" align="center" prop="stockInType" min-width="120">
<template #default="scope">
<dict-tag :type="DICT_TYPE.BIZ_STORAGE_IN_TYPE" :value="scope.row.stockInType" />
</template>
</el-table-column>
<el-table-column label="上游单号" align="center" prop="headerNo" min-width="200" />
<el-table-column label="入库仓库" align="center" prop="whId" min-width="120">
<el-table-column label="接收仓库" align="center" prop="whId" min-width="120">
<template #default="scope">
{{ warehouseList.find((tag) => tag.id === scope.row.whId)?.whName }}
</template>
@ -141,38 +132,54 @@
min-width="240"
/>
<el-table-column label="提交人" align="center" prop="keeper" min-width="120">
<el-table-column label="送审人" align="center" prop="keeper" min-width="120">
<template #default="scope">
{{ userList.find((user) => user.id == scope.row.keeper)?.nickname }}
</template>
</el-table-column>
<el-table-column
label="提交时间"
label="送审时间"
align="center"
prop="keeperTime"
:formatter="dateFormatter"
min-width="240"
/>
<el-table-column label="作废人" align="center" prop="cancel" min-width="120">
<el-table-column label="审核人" align="center" prop="cancel" min-width="120">
<template #default="scope">
{{ userList.find((user) => user.id == scope.row.cancel)?.nickname }}
</template>
</el-table-column>
<el-table-column
label="作废时间"
label="审核时间"
align="center"
prop="cancelTime"
:formatter="dateFormatter"
min-width="240"
min-width="240"
/>
<el-table-column label="单据状态" align="center" prop="status" min-width="120" fixed="right">
<el-table-column
label="单据状态"
align="center"
prop="status"
min-width="120"
fixed="right"
>
<template #default="scope">
<dict-tag :type="DICT_TYPE.BIZ_STORAGE_STATUS" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column label="操作" align="center" min-width="180" fixed="right">
<el-table-column label="操作" align="right" min-width="180" fixed="right">
<template #header>
<span style="margin-right:35%">
操作
</span>
</template>
<template #default="scope">
<el-button link type="primary" @click="openDetail('update', scope.row.id)" v-if="scope.row.status != 3">
<el-button
link
type="primary"
@click="openDetail('update', scope.row.id)"
v-if="scope.row.status != 4&&scope.row.status != 2"
>
编辑
</el-button>
<el-button link type="primary" @click="openDetail('review', scope.row.id)">
@ -206,8 +213,10 @@ import download from '@/utils/download'
import * as StorageApi from '@/api/biz/storage'
import * as WarehouseApi from '@/api/biz/warehouse'
import * as UserApi from '@/api/system/user'
import { useCommonStateWithOut } from '@/store/modules/common'
defineOptions({ name: 'Storage' })
const commonStore = useCommonStateWithOut()
const message = useMessage() //
const { t } = useI18n() //
@ -276,6 +285,8 @@ const openForm = (type: string, id?: number) => {
}
/** 详情操作 新增/查看 */
const openDetail = (active: string, id?: number) => {
commonStore.setStore('active', active)
commonStore.setStore('id', id)
router.push({ path: '/inventory/storagedetail', query: { type: active, id: id } })
}

@ -0,0 +1,310 @@
<template>
<el-card class="hl-card">
<template #header> <span>退料申请</span></template>
<ContentWrap class="borderxx">
<!-- 搜索工作栏 -->
<el-form
class="-mb-15px"
:model="queryParams"
ref="queryFormRef"
:inline="true"
label-width="108px"
>
<el-form-item label="退料单号" prop="stockNo">
<el-input
v-model="queryParams.stockNo"
placeholder="入库单号"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="单据日期" prop="stockNo">
<el-input
v-model="queryParams.stockNo"
placeholder="单据日期"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="物料编码" prop="matNo">
<el-input
v-model="queryParams.matNo"
placeholder="物料编码"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="物料名称" prop="matName">
<el-input
v-model="queryParams.matName"
placeholder="物料名称"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="接收仓库" prop="whId">
<el-select v-model="queryParams.whId" placeholder="下拉选择" clearable class="!w-240px">
<el-option
v-for="dict in warehouseList"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<!-- <el-form-item label="单据状态" prop="status">
<el-select v-model="queryParams.status" placeholder="下拉选择" clearable class="!w-240px">
<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-form-item>
<el-button @click="handleQuery" type="primary"
><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button
>
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
<el-button type="primary" plain @click="openDetail('create')">
<Icon icon="ep:plus" class="mr-5px" /> 新增
</el-button>
<!-- <el-button
type="success"
plain
@click="handleExport"
:loading="exportLoading"
v-hasPermi="['biz:storage:export']"
>
<Icon icon="ep:download" class="mr-5px" /> 导出
</el-button> -->
</el-form-item>
</el-form>
</ContentWrap>
<!-- 列表 -->
<ContentWrap>
<el-table
v-loading="loading"
:data="list"
:show-overflow-tooltip="true"
:stripe="true"
class="hl-table"
>
<!-- <el-table-column label="主键id" align="center" prop="id" /> -->
<el-table-column type="index" width="100" fixed label="序号" align="center" />
<el-table-column label="退料单号" align="center" prop="stockNo" min-width="210" fixed>
<template #default="scope">
<el-button text type="primary" @click="openDetail('review', scope.row.id)">
{{ scope.row.stockNo }}
</el-button>
</template>
</el-table-column>
<el-table-column label="退料类型" align="center" prop="stockInType" min-width="120">
<template #default="scope">
<dict-tag :type="DICT_TYPE.BIZ_STORAGE_IN_TYPE" :value="scope.row.stockInType" />
</template>
</el-table-column>
<el-table-column label="接收仓库" align="center" prop="whId" min-width="120">
<template #default="scope">
{{ warehouseList.find((tag) => tag.id === scope.row.whId)?.whName }}
</template>
</el-table-column>
<el-table-column label="备注" align="center" prop="description" min-width="160" />
<el-table-column label="创建人" align="center" prop="creator" min-width="120">
<template #default="scope">
{{ userList.find((user) => user.id === scope.row.creator)?.nickname }}
</template>
</el-table-column>
<el-table-column
label="创建时间"
align="center"
prop="createTime"
:formatter="dateFormatter"
min-width="240"
/>
<el-table-column label="送审人" align="center" prop="keeper" min-width="120">
<template #default="scope">
{{ userList.find((user) => user.id == scope.row.keeper)?.nickname }}
</template>
</el-table-column>
<el-table-column
label="送审时间"
align="center"
prop="keeperTime"
:formatter="dateFormatter"
min-width="240"
/>
<el-table-column label="审核人" align="center" prop="cancel" min-width="120">
<template #default="scope">
{{ userList.find((user) => user.id == scope.row.cancel)?.nickname }}
</template>
</el-table-column>
<el-table-column
label="审核时间"
align="center"
prop="cancelTime"
:formatter="dateFormatter"
min-width="240"
/>
<el-table-column
label="单据状态"
align="center"
prop="status"
min-width="120"
fixed="right"
>
<template #default="scope">
<dict-tag :type="DICT_TYPE.BIZ_STORAGE_STATUS" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column label="操作" align="right" min-width="180" fixed="right">
<template #header>
<span style="margin-right:35%">
操作
</span>
</template>
<template #default="scope">
<el-button link type="primary" @click="openDetail('Check', scope.row.id)" v-if="scope.row.status ==2">
审核
</el-button>
<el-button link type="primary" @click="openDetail('review', scope.row.id)">
查看详情
</el-button>
<!-- <el-button
link
type="danger"
@click="handleDelete(scope.row.id)"
>
删除
</el-button> -->
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<Pagination
:total="total"
v-model:page="queryParams.pageNo"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
</ContentWrap>
</el-card>
</template>
<script setup lang="ts">
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
import { dateFormatter } from '@/utils/formatTime'
import download from '@/utils/download'
import * as StorageApi from '@/api/biz/storage'
import * as WarehouseApi from '@/api/biz/warehouse'
import * as UserApi from '@/api/system/user'
import { useCommonStateWithOut } from '@/store/modules/common'
defineOptions({ name: 'Storage' })
const commonStore = useCommonStateWithOut()
const message = useMessage() //
const { t } = useI18n() //
const router = useRouter() //
const loading = ref(true) //
const list = ref([]) //
const total = ref(0) //
const queryParams = reactive({
pageNo: 1,
pageSize: 10,
stockType: 1,
stockInType: undefined,
stockOutType: undefined,
stockNo: undefined,
headerNo: undefined,
description: undefined,
status: 2,
whId: undefined,
creator: undefined,
createTime: [],
updater: undefined,
updateTime: [],
keeper: undefined,
keeperTime: [],
outbound: undefined,
outboundTime: [],
cancel: undefined,
cancelTime: [],
matNo: undefined,
matName: undefined
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
const warehouseList = ref([])
const userList = ref<UserApi.UserVO[]>([]) //
/** 查询列表 */
const getList = async () => {
loading.value = true
try {
const data = await StorageApi.getStoragePage(queryParams)
list.value = data.list
total.value = data.total
} finally {
loading.value = false
}
}
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.pageNo = 1
getList()
}
/** 重置按钮操作 */
const resetQuery = () => {
queryFormRef.value.resetFields()
handleQuery()
}
/** 添加/修改操作 */
const formRef = ref()
const openForm = (type: string, id?: number) => {
formRef.value.open(type, id)
}
/** 详情操作 新增/查看 */
const openDetail = (active: string, id?: number) => {
commonStore.setStore('active', active)
commonStore.setStore('id', id)
router.push({ path: '/inventory/storagedetail', query: { type: active, id: id } })
}
/** 初始化 **/
onMounted(async () => {
const queryParamsWarehouse = reactive({
pageNo: 1,
pageSize: 99
})
const data = await WarehouseApi.getWarehousePage(queryParamsWarehouse)
data.list.forEach((element) => {
element.label = element.whName
element.value = element.id
})
warehouseList.value = data.list
userList.value = await UserApi.getSimpleUserList()
await getList()
})
onActivated(() => {
getList()
})
</script>
Loading…
Cancel
Save