feat(wms): 添加退库工单审批功能并优化相关页面

- 在 returnOrder 目录下添加审批退库工单的 API 接口
- 在 returnOrder 页面中添加审批功能相关的对话框和逻辑
- 优化 moveOrder 页面的列显示和表单验证规则
- 调整 selectOutstockDetail 页面的列显示
master
zangch@mesnac.com 5 months ago
parent 24c51045a6
commit 01e81b8972

@ -66,6 +66,8 @@ export interface MoveOrderVO {
*/ */
erpSynchronousQty: number; erpSynchronousQty: number;
batchCode: string;
} }
export interface MoveOrderForm extends BaseEntity { export interface MoveOrderForm extends BaseEntity {
@ -136,6 +138,8 @@ export interface MoveOrderForm extends BaseEntity {
*/ */
erpSynchronousQty?: number; erpSynchronousQty?: number;
batchCode: string;
} }
export interface MoveOrderQuery extends PageQuery { export interface MoveOrderQuery extends PageQuery {
@ -207,6 +211,8 @@ export interface MoveOrderQuery extends PageQuery {
*/ */
erpSynchronousQty?: number; erpSynchronousQty?: number;
batchCode: string;
/** /**
* *
*/ */

@ -61,3 +61,15 @@ export const delReturnOrder = (roId: string | number | Array<string | number>) =
method: 'delete' method: 'delete'
}); });
}; };
/**
* 退
* @param data
*/
export const auditReturnOrder = (data: ReturnOrderForm) => {
return request({
url: '/wms/returnOrder/audit',
method: 'post',
data: data
});
};

@ -258,6 +258,3 @@ export interface ReturnOrderQuery extends PageQuery {
*/ */
params?: any; params?: any;
} }

@ -10,10 +10,7 @@
<!-- <el-form-item label="物料ID" prop="materialId"> <!-- <el-form-item label="物料ID" prop="materialId">
<el-input v-model="queryParams.materialId" placeholder="请输入物料ID" clearable @keyup.enter="handleQuery" /> <el-input v-model="queryParams.materialId" placeholder="请输入物料ID" clearable @keyup.enter="handleQuery" />
</el-form-item> --> </el-form-item> -->
<el-form-item label="物料大类" prop="materialCategoryId"> <!-- <el-form-item label="物料大类" prop="materialCategoryId">
<!-- <el-select v-model="queryParams.materialCategoryId" placeholder="请选择物料大类" clearable >
<el-option v-for="dict in material_mategories" :key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select>-->
<el-select v-model="queryParams.materialCategoryId" placeholder="请选择物料大类" clearable > <el-select v-model="queryParams.materialCategoryId" placeholder="请选择物料大类" clearable >
<el-option v-for="item in mategoryOptions" <el-option v-for="item in mategoryOptions"
:key="item.materialCategoryId" :key="item.materialCategoryId"
@ -21,7 +18,7 @@
:value="item.materialCategoryId" :value="item.materialCategoryId"
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>-->
<el-form-item label="仓库" prop="warehouseId"> <el-form-item label="仓库" prop="warehouseId">
<el-select v-model="form.warehouseId" placeholder="请选择所属仓库" clearable> <el-select v-model="form.warehouseId" placeholder="请选择所属仓库" clearable>
<el-option <el-option
@ -32,17 +29,17 @@
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="计划库位" prop="planLocationCode"> <!-- <el-form-item label="库位" prop="planLocationCode">
<el-input v-model="queryParams.planLocationCode" placeholder="请输入计划库位" clearable @keyup.enter="handleQuery" /> <el-input v-model="queryParams.planLocationCode" placeholder="请输入计划库位" clearable @keyup.enter="handleQuery" />
</el-form-item> </el-form-item>-->
<!-- <el-form-item label="工单状态(0执行中1完成2关闭)" prop="orderStatus"> <!-- <el-form-item label="工单状态(0执行中1完成2关闭)" prop="orderStatus">
<el-select v-model="queryParams.orderStatus" placeholder="请选择工单状态(0执行中1完成2关闭)" clearable > <el-select v-model="queryParams.orderStatus" placeholder="请选择工单状态(0执行中1完成2关闭)" clearable >
<el-option v-for="dict in ${dictType}" :key="dict.value" :label="dict.label" :value="dict.value"/> <el-option v-for="dict in ${dictType}" :key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select> </el-select>
</el-form-item> --> </el-form-item> -->
<el-form-item label="目标库位" prop="targetLocationCode"> <!-- <el-form-item label="目标库位" prop="targetLocationCode">
<el-input v-model="queryParams.targetLocationCode" placeholder="请输入目标库位" clearable @keyup.enter="handleQuery" /> <el-input v-model="queryParams.targetLocationCode" placeholder="请输入目标库位" clearable @keyup.enter="handleQuery" />
</el-form-item> </el-form-item>-->
<!-- <el-form-item label="审核人" prop="auditBy"> <!-- <el-form-item label="审核人" prop="auditBy">
<el-input v-model="queryParams.auditBy" placeholder="请输入审核人" clearable @keyup.enter="handleQuery" /> <el-input v-model="queryParams.auditBy" placeholder="请输入审核人" clearable @keyup.enter="handleQuery" />
</el-form-item> --> </el-form-item> -->
@ -82,7 +79,7 @@
<el-card shadow="never"> <el-card shadow="never">
<template #header> <template #header>
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
<el-col :span="1.5"> <!-- <el-col :span="1.5">
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['system:moveOrder:add']"></el-button> <el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['system:moveOrder:add']"></el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
@ -93,7 +90,7 @@
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="warning" plain icon="Download" @click="handleExport" v-hasPermi="['system:moveOrder:export']"></el-button> <el-button type="warning" plain icon="Download" @click="handleExport" v-hasPermi="['system:moveOrder:export']"></el-button>
</el-col> </el-col>-->
<right-toolbar v-model:showSearch="showSearch" :columns="columns" :search="true" @queryTable="getList"></right-toolbar> <right-toolbar v-model:showSearch="showSearch" :columns="columns" :search="true" @queryTable="getList"></right-toolbar>
</el-row> </el-row>
</template> </template>
@ -101,18 +98,19 @@
<el-table v-loading="loading" :data="moveOrderList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="moveOrderList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<!-- <el-table-column label="表主键" align="center" prop="moveId" v-if="columns[0].visible"/> --> <!-- <el-table-column label="表主键" align="center" prop="moveId" v-if="columns[0].visible"/> -->
<el-table-column label="物料" align="center" prop="materialCode" v-if="columns[2].visible"/> <el-table-column label="批次码" align="center" prop="batchCode" v-if="columns[6].visible"/>
<el-table-column label="物料大类" align="center" prop="materialCategoryId" v-if="columns[3].visible"> <el-table-column label="物料" align="center" prop="materialCode" v-if="columns[0].visible"/>
</el-table-column> <!-- <el-table-column label="物料大类" align="center" prop="materialCategoryId" v-if="columns[3].visible">
<el-table-column label="仓库" align="center" prop="warehouseCode" v-if="columns[4].visible"/> </el-table-column>-->
<el-table-column label="计划库位" align="center" prop="planLocationCode" v-if="columns[5].visible"/> <el-table-column label="仓库" align="center" prop="warehouseCode" v-if="columns[1].visible"/>
<el-table-column label="工单状态" align="center" prop="orderStatus" v-if="columns[6].visible"> <el-table-column label="原库位" align="center" prop="planLocationCode" v-if="columns[2].visible"/>
<!-- <el-table-column label="工单状态" align="center" prop="orderStatus" v-if="columns[6].visible">
<template #default="scope"> <template #default="scope">
<dict-tag :options="wms_order_status" :value="scope.row.orderStatus"/> <dict-tag :options="wms_order_status" :value="scope.row.orderStatus"/>
</template> </template>
</el-table-column> </el-table-column>-->
<el-table-column label="目标库位" align="center" prop="targetLocationCode" v-if="columns[7].visible"/> <el-table-column label="目标库位" align="center" prop="targetLocationCode" v-if="columns[3].visible"/>
<el-table-column label="审核人" align="center" prop="auditBy" v-if="columns[8].visible"/> <!-- <el-table-column label="审核人" align="center" prop="auditBy" v-if="columns[8].visible"/>
<el-table-column label="审核时间" align="center" prop="auditTime" width="180" v-if="columns[9].visible"> <el-table-column label="审核时间" align="center" prop="auditTime" width="180" v-if="columns[9].visible">
<template #default="scope"> <template #default="scope">
<span>{{ parseTime(scope.row.auditTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span> <span>{{ parseTime(scope.row.auditTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
@ -123,14 +121,14 @@
<dict-tag :options="approve_status" :value="scope.row.auditStatus"/> <dict-tag :options="approve_status" :value="scope.row.auditStatus"/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="审核意见" align="center" prop="auditComments" v-if="columns[11].visible"/> <el-table-column label="审核意见" align="center" prop="auditComments" v-if="columns[11].visible"/>-->
<el-table-column label="同步状态" align="center" prop="erpSynchronousStatus" v-if="columns[16].visible"> <el-table-column label="同步状态" align="center" prop="erpSynchronousStatus" v-if="columns[4].visible">
<template #default="scope"> <template #default="scope">
<dict-tag :options="erp_synchronous_status" :value="scope.row.erpSynchronousStatus"/> <dict-tag :options="erp_synchronous_status" :value="scope.row.erpSynchronousStatus"/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="同步数量" align="center" prop="erpSynchronousQty" v-if="columns[17].visible"/> <el-table-column label="同步数量" align="center" prop="erpSynchronousQty" v-if="columns[5].visible"/>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope"> <template #default="scope">
<el-tooltip content="修改" placement="top"> <el-tooltip content="修改" placement="top">
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['system:moveOrder:edit']"></el-button> <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['system:moveOrder:edit']"></el-button>
@ -139,7 +137,7 @@
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['system:moveOrder:remove']"></el-button> <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['system:moveOrder:remove']"></el-button>
</el-tooltip> </el-tooltip>
</template> </template>
</el-table-column> </el-table-column>-->
</el-table> </el-table>
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" /> <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
@ -152,7 +150,7 @@
<el-input v-model="form.moveId" placeholder="请输入表主键" /> <el-input v-model="form.moveId" placeholder="请输入表主键" />
</el-form-item> --> </el-form-item> -->
<el-form-item label="物料大类" prop="materialCategoryId"> <!-- <el-form-item label="物料大类" prop="materialCategoryId">
<el-select v-model="form.materialCategoryId" placeholder="请选择物料大类"> <el-select v-model="form.materialCategoryId" placeholder="请选择物料大类">
<el-select v-model="queryParams.materialCategoryId" placeholder="请选择物料大类" clearable > <el-select v-model="queryParams.materialCategoryId" placeholder="请选择物料大类" clearable >
<el-option v-for="item in mategoryOptions" <el-option v-for="item in mategoryOptions"
@ -162,7 +160,7 @@
/> />
</el-select> </el-select>
</el-select> </el-select>
</el-form-item> </el-form-item>-->
<el-form-item label="仓库" prop="warehouseId"> <el-form-item label="仓库" prop="warehouseId">
<el-select v-model="form.warehouseId" placeholder="请选择所属仓库" @change="getLocationList"> <el-select v-model="form.warehouseId" placeholder="请选择所属仓库" @change="getLocationList">
<el-option <el-option
@ -295,24 +293,13 @@ const dialog = reactive<DialogOption>({
// //
const columns = ref<FieldOption[]>([ const columns = ref<FieldOption[]>([
{ key: 0, label: `表主键`, visible: true }, { key: 0, label: `物料`, visible: true },
{ key: 1, label: `租户号`, visible: true }, { key: 1, label: `仓库`, visible: true },
{ key: 2, label: `物料ID`, visible: true }, { key: 2, label: `原库位`, visible: true },
{ key: 3, label: `物料大类`, visible: true }, { key: 3, label: `目标库位`, visible: true },
{ key: 4, label: `仓库`, visible: true }, { key: 4, label: `erp同步状态`, visible: true },
{ key: 5, label: `计划库位`, visible: true }, { key: 5, label: `erp同步数量`, visible: true },
{ key: 6, label: `工单状态(0执行中1完成2关闭)`, visible: true }, { key: 6, label: `批次条码`, visible: true}
{ key: 7, label: `目标库位`, visible: true },
{ key: 8, label: `审核人`, visible: true },
{ key: 9, label: `审核时间`, visible: true },
{ key: 10, label: `审核状态(0待审核,1审核通过,2审核未通过)`, visible: true },
{ key: 11, label: `审核意见`, visible: true },
{ key: 12, label: `工单创建人`, visible: true },
{ key: 13, label: `工单创建时间`, visible: true },
{ key: 14, label: `实际接收人`, visible: true },
{ key: 15, label: `实际接收时间`, visible: true },
{ key: 16, label: `erp同步状态`, visible: true },
{ key: 17, label: `erp同步数量`, visible: true },
]); ]);
const initFormData: MoveOrderForm = { const initFormData: MoveOrderForm = {
@ -329,7 +316,8 @@ const initFormData: MoveOrderForm = {
auditStatus: undefined, auditStatus: undefined,
auditComments: undefined, auditComments: undefined,
erpSynchronousStatus: undefined, erpSynchronousStatus: undefined,
erpSynchronousQty: undefined erpSynchronousQty: undefined,
batchCode: undefined,
} }
const data = reactive<PageData<MoveOrderForm, MoveOrderQuery>>({ const data = reactive<PageData<MoveOrderForm, MoveOrderQuery>>({
form: {...initFormData}, form: {...initFormData},
@ -350,11 +338,12 @@ const data = reactive<PageData<MoveOrderForm, MoveOrderQuery>>({
auditComments: undefined, auditComments: undefined,
erpSynchronousStatus: undefined, erpSynchronousStatus: undefined,
erpSynchronousQty: undefined, erpSynchronousQty: undefined,
batchCode: undefined,
params: { params: {
} }
}, },
rules: { rules: {
moveId: [ /* moveId: [
{ required: true, message: "表主键不能为空", trigger: "blur" } { required: true, message: "表主键不能为空", trigger: "blur" }
], ],
materialId: [ materialId: [
@ -392,7 +381,7 @@ const data = reactive<PageData<MoveOrderForm, MoveOrderQuery>>({
], ],
erpSynchronousQty: [ erpSynchronousQty: [
{ required: true, message: "erp同步数量不能为空", trigger: "blur" } { required: true, message: "erp同步数量不能为空", trigger: "blur" }
] ]*/
} }
}); });

@ -87,7 +87,7 @@ const columns = ref<FieldOption[]>([
{ key: 3, label: `创建时间`, visible: false }, { key: 3, label: `创建时间`, visible: false },
{ key: 4, label: `物料id`, visible: true }, { key: 4, label: `物料id`, visible: true },
{ key: 5, label: `出库数量`, visible: true }, { key: 5, label: `出库数量`, visible: true },
{ key: 6, label: `物料大类`, visible: true }, { key: 6, label: `物料大类`, visible: false },
{ key: 7, label: `物料编码`, visible: true }, { key: 7, label: `物料编码`, visible: true },
{ key: 8, label: `物料名称`, visible: true }, { key: 8, label: `物料名称`, visible: true },
]); ]);

@ -11,7 +11,7 @@
<!-- <el-form-item label="物料名称" prop="materialId"> <!-- <el-form-item label="物料名称" prop="materialId">
<el-input v-model="queryParams.materialId" placeholder="请输入物料名称" clearable @keyup.enter="handleQuery" /> <el-input v-model="queryParams.materialId" placeholder="请输入物料名称" clearable @keyup.enter="handleQuery" />
</el-form-item> --> </el-form-item> -->
<el-form-item label='物料大类' prop='materialCategoryId'> <!-- <el-form-item label='物料大类' prop='materialCategoryId'>
<el-select v-model='queryParams.materialCategoryId' placeholder='请选择物料大类' clearable> <el-select v-model='queryParams.materialCategoryId' placeholder='请选择物料大类' clearable>
<el-option v-for='item in mategoryOptions' <el-option v-for='item in mategoryOptions'
:key='item.materialCategoryId' :key='item.materialCategoryId'
@ -19,7 +19,7 @@
:value='item.materialCategoryId' :value='item.materialCategoryId'
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>-->
<el-form-item label='批次条码' prop='batchCode'> <el-form-item label='批次条码' prop='batchCode'>
<el-input v-model='queryParams.batchCode' placeholder='请输入批次条码' clearable <el-input v-model='queryParams.batchCode' placeholder='请输入批次条码' clearable
@keyup.enter='handleQuery' /> @keyup.enter='handleQuery' />
@ -37,10 +37,10 @@
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label='计划库位' prop='planLocationCode'> <!-- <el-form-item label='计划库位' prop='planLocationCode'>
<el-input v-model='queryParams.planLocationCode' placeholder='请输入计划退库库位' clearable <el-input v-model='queryParams.planLocationCode' placeholder='请输入计划退库库位' clearable
@keyup.enter='handleQuery' /> @keyup.enter='handleQuery' />
</el-form-item> </el-form-item>-->
<el-form-item label='退库状态' prop='orderStatus'> <el-form-item label='退库状态' prop='orderStatus'>
<el-select v-model='queryParams.orderStatus' placeholder='请选择退库工单状态' clearable> <el-select v-model='queryParams.orderStatus' placeholder='请选择退库工单状态' clearable>
<el-option v-for='dict in wms_return_status' :key='dict.value' :label='dict.label' <el-option v-for='dict in wms_return_status' :key='dict.value' :label='dict.label'
@ -50,10 +50,10 @@
<!-- <el-form-item label="实际数量" prop="returnAmount"> <!-- <el-form-item label="实际数量" prop="returnAmount">
<el-input v-model="queryParams.returnAmount" placeholder="请输入实际数量" clearable @keyup.enter="handleQuery" /> <el-input v-model="queryParams.returnAmount" placeholder="请输入实际数量" clearable @keyup.enter="handleQuery" />
</el-form-item> --> </el-form-item> -->
<el-form-item label='实际库位' prop='returnLocationCode'> <!-- <el-form-item label='实际库位' prop='returnLocationCode'>
<el-input v-model='queryParams.returnLocationCode' placeholder='请输入实际退库库位' clearable <el-input v-model='queryParams.returnLocationCode' placeholder='请输入实际退库库位' clearable
@keyup.enter='handleQuery' /> @keyup.enter='handleQuery' />
</el-form-item> </el-form-item>-->
<!-- <el-form-item label="审核人" prop="auditBy"> <!-- <el-form-item label="审核人" prop="auditBy">
<el-input v-model="queryParams.auditBy" placeholder="请输入审核人" clearable @keyup.enter="handleQuery" /> <el-input v-model="queryParams.auditBy" placeholder="请输入审核人" clearable @keyup.enter="handleQuery" />
</el-form-item> </el-form-item>
@ -140,7 +140,11 @@
<span>{{ parseTime(scope.row.auditTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span> <span>{{ parseTime(scope.row.auditTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label='审核状态' align='center' prop='auditStatus' v-if='columns[17].visible' /> <el-table-column label='审核状态' align='center' prop='auditStatus' v-if='columns[17].visible' >
<template #default='scope'>
<dict-tag :options='approve_status' :value='scope.row.auditStatus' />
</template>
</el-table-column>
<el-table-column label='审核意见' align='center' prop='auditComments' v-if='columns[18].visible' /> <el-table-column label='审核意见' align='center' prop='auditComments' v-if='columns[18].visible' />
<el-table-column label='erp同步状态' align='center' prop='erpSynchronousStatus' v-if='columns[19].visible'> <el-table-column label='erp同步状态' align='center' prop='erpSynchronousStatus' v-if='columns[19].visible'>
<template #default='scope'> <template #default='scope'>
@ -148,16 +152,25 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label='erp同步数量' align='center' prop='erpSynchronousQty' v-if='columns[20].visible' /> <el-table-column label='erp同步数量' align='center' prop='erpSynchronousQty' v-if='columns[20].visible' />
<!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope"> <template #default="scope">
<el-tooltip content="修改" placement="top"> <!-- <el-tooltip content="修改" placement="top">
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['system:returnOrder:edit']"></el-button> <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['system:returnOrder:edit']"></el-button>
</el-tooltip> </el-tooltip>-->
<el-tooltip content="删除" placement="top"> <!-- <el-tooltip content="删除" placement="top">
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['system:returnOrder:remove']"></el-button> <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['system:returnOrder:remove']"></el-button>
</el-tooltip>-->
<el-tooltip content="审批" placement="top">
<el-button
size="small"
type="success"
icon="Check"
@click="handleAudit(scope.row)"
:disabled="scope.row.auditStatus == '1' || scope.row.auditStatus == '2' || scope.row.orderStatus === '1'"
>审批</el-button>
</el-tooltip> </el-tooltip>
</template> </template>
</el-table-column> --> </el-table-column>
</el-table> </el-table>
<pagination v-show='total > 0' :total='total' v-model:page='queryParams.pageNum' <pagination v-show='total > 0' :total='total' v-model:page='queryParams.pageNum'
@ -249,41 +262,18 @@
<!-- <el-form-item label='实际退库库位' prop='returnLocationCode'>--> <!-- <el-form-item label='实际退库库位' prop='returnLocationCode'>-->
<!-- <el-input v-model='form.returnLocationCode' placeholder='请输入实际退库库位' />--> <!-- <el-input v-model='form.returnLocationCode' placeholder='请输入实际退库库位' />-->
<!-- </el-form-item>--> <!-- </el-form-item>-->
<!-- <el-form-item label="审核人" prop="auditBy"> <el-form-item label='审核状态' prop='auditStatus'>
<el-input v-model="form.auditBy" placeholder="请输入审核人" /> <el-radio-group v-model='form.auditStatus'>
<el-radio
v-for="dict in approve_status"
:key="dict.value"
:value="dict.value"
>{{dict.label}}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label='审核意见' prop='auditComments'>
<el-input v-model='form.auditComments' type='textarea' placeholder='请输入审核意见' />
</el-form-item> </el-form-item>
<el-form-item label="审核时间" prop="auditTime">
<el-date-picker clearable
v-model="form.auditTime"
type="datetime"
value-format="YYYY-MM-DD HH:mm:ss"
placeholder="请选择审核时间">
</el-date-picker>
</el-form-item> -->
<!-- <el-form-item label="审核状态(0待审核,1审核通过,2审核未通过)" prop="auditStatus">
<el-radio-group v-model="form.auditStatus">
<el-radio
v-for="dict in ${dictType}"
:key="dict.value"
:value="dict.value"
>{{dict.label}}</el-radio>
</el-radio-group>
</el-form-item> -->
<!-- <el-form-item label="审核意见" prop="auditComments">
<el-input v-model="form.auditComments" placeholder="请输入审核意见" />
</el-form-item> -->
<!-- <el-form-item label="erp同步状态" prop="erpSynchronousStatus">
<el-radio-group v-model="form.erpSynchronousStatus">
<el-radio
v-for="dict in ${dictType}"
:key="dict.value"
:value="dict.value"
>{{dict.label}}</el-radio>
</el-radio-group>
</el-form-item> -->
<!-- <el-form-item label="erp同步数量" prop="erpSynchronousQty">
<el-input v-model="form.erpSynchronousQty" placeholder="请输入erp同步数量" />
</el-form-item>-->
</el-form> </el-form>
<template #footer> <template #footer>
<div class='dialog-footer'> <div class='dialog-footer'>
@ -293,6 +283,34 @@
</template> </template>
</el-dialog> </el-dialog>
<!-- 审批对话框 -->
<el-dialog v-model="auditOpen" title="退库工单审批" width="500px" append-to-body>
<el-form ref="auditFormRef" :model="form" :rules="rules" label-width="100px">
<el-form-item label="审核状态" prop="auditStatus">
<el-radio-group v-model="form.auditStatus">
<el-radio value="1">审核通过</el-radio>
<el-radio value="2">审核未通过</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="审核意见" prop="auditComments">
<el-input
v-model="form.auditComments"
type="textarea"
:rows="4"
placeholder="请输入审核意见"
maxlength="500"
show-word-limit
/>
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button @click="cancelAudit"> </el-button>
<el-button type="primary" @click="submitAudit"> </el-button>
</div>
</template>
</el-dialog>
<!-- 添加物料信息对话框 --> <!-- 添加物料信息对话框 -->
<el-dialog title="选择物料信息" v-model="materialOpen" width='1200px' append-to-body> <el-dialog title="选择物料信息" v-model="materialOpen" width='1200px' append-to-body>
<MaterialSelectInWMS <MaterialSelectInWMS
@ -329,9 +347,10 @@ import {
getReturnOrder, getReturnOrder,
delReturnOrder, delReturnOrder,
addReturnOrder, addReturnOrder,
updateReturnOrder updateReturnOrder,
auditReturnOrder
} from '@/api/wms/returnOrder'; } from '@/api/wms/returnOrder';
import { ReturnOrderVO, ReturnOrderQuery, ReturnOrderForm } from '@/api/wms/returnOrder/types'; import { ReturnOrderVO, ReturnOrderForm, ReturnOrderQuery } from '@/api/wms/returnOrder/types';
import { getBaseWarehouseList } from '@/api/wms/baseWarehouse'; import { getBaseWarehouseList } from '@/api/wms/baseWarehouse';
import { getBaseMaterialCategoryListInWMS } from '@/api/wms/baseMaterialCategory'; import { getBaseMaterialCategoryListInWMS } from '@/api/wms/baseMaterialCategory';
@ -341,6 +360,7 @@ import { getBaseDeviceTypeList } from '@/api/mes/baseDeviceType';
import { getWmsBaseLocationVoList } from '@/api/wms/baseLocation'; import { getWmsBaseLocationVoList } from '@/api/wms/baseLocation';
import { getOutstockDetailList } from '@/api/wms/outstockDetail'; import { getOutstockDetailList } from '@/api/wms/outstockDetail';
import { OutstockDetailQuery } from '@/api/wms/outstockDetail/types'; import { OutstockDetailQuery } from '@/api/wms/outstockDetail/types';
import { FormRules } from 'element-plus';
const { proxy } = getCurrentInstance() as ComponentInternalInstance; const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const { const {
@ -356,6 +376,16 @@ const ids = ref<Array<string | number>>([]);
const single = ref(true); const single = ref(true);
const multiple = ref(true); const multiple = ref(true);
const total = ref(0); const total = ref(0);
//
const auditOpen = ref(false);
const auditFormRef = ref<ElFormInstance>();
//
const auditRules = reactive<FormRules<ReturnOrderForm>>({
auditStatus: [{ required: true, message: '请选择审核状态', trigger: 'change' }]
});
const baseStoreList = ref([]); const baseStoreList = ref([]);
const queryFormRef = ref<ElFormInstance>(); const queryFormRef = ref<ElFormInstance>();
const returnOrderFormRef = ref<ElFormInstance>(); const returnOrderFormRef = ref<ElFormInstance>();
@ -543,14 +573,14 @@ const handleQuery = () => {
/** 重置按钮操作 */ /** 重置按钮操作 */
const resetQuery = () => { const resetQuery = () => {
queryFormRef.value?.resetFields(); proxy?.resetForm('queryFormRef');
handleQuery(); handleQuery();
}; };
/** 多选框选中数据 */ /** 多选框选中数据 */
const handleSelectionChange = (selection: ReturnOrderVO[]) => { const handleSelectionChange = (selection: ReturnOrderVO[]) => {
ids.value = selection.map(item => item.roId); ids.value = selection.map((item) => item.roId);
single.value = selection.length != 1; single.value = selection.length !== 1;
multiple.value = !selection.length; multiple.value = !selection.length;
}; };
@ -664,6 +694,41 @@ const submitOutstockDetailForm = async () => {
outstockDetailOpen.value = false; outstockDetailOpen.value = false;
}; };
/** 打开审批对话框 */
const handleAudit = (row?: ReturnOrderVO) => {
if (row?.roId) {
form.value.roId = row.roId;
form.value.auditStatus = '';
form.value.auditComments = '';
auditOpen.value = true;
}
};
/** 取消审批 */
const cancelAudit = () => {
auditOpen.value = false;
form.value.auditStatus = '';
form.value.auditComments = '';
auditFormRef.value?.resetFields();
};
/** 提交审批 */
const submitAudit = async () => {
if (!auditFormRef.value) return;
const valid = await auditFormRef.value.validate().catch(() => false);
if (!valid) return;
try {
await auditReturnOrder(form.value);
proxy?.$modal.msgSuccess('审批成功');
auditOpen.value = false;
await getList();
} catch (error) {
console.error('审批失败:', error);
}
};
onMounted(() => { onMounted(() => {
getSelectBaseWarehouseList(); getSelectBaseWarehouseList();
getMaterialCategorySelect(); getMaterialCategorySelect();

Loading…
Cancel
Save