主子表样式设置

master
maxw@mesnac.com 1 week ago
parent 44282a7a03
commit ffef49a080

@ -0,0 +1,63 @@
import request from '@/utils/request';
import { AxiosPromise } from 'axios';
import { AllocateOrderVO, AllocateOrderForm, AllocateOrderQuery } from '@/api/wms/allocateOrder/types';
/**
*
* @param query
* @returns {*}
*/
export const listAllocateOrder = (query?: AllocateOrderQuery): AxiosPromise<AllocateOrderVO[]> => {
return request({
url: '/wms/allocateOrder/list',
method: 'get',
params: query
});
};
/**
*
* @param aoId
*/
export const getAllocateOrder = (aoId: string | number): AxiosPromise<AllocateOrderVO> => {
return request({
url: '/wms/allocateOrder/' + aoId,
method: 'get'
});
};
/**
*
* @param data
*/
export const addAllocateOrder = (data: AllocateOrderForm) => {
return request({
url: '/wms/allocateOrder',
method: 'post',
data: data
});
};
/**
*
* @param data
*/
export const updateAllocateOrder = (data: AllocateOrderForm) => {
return request({
url: '/wms/allocateOrder',
method: 'put',
data: data
});
};
/**
*
* @param aoId
*/
export const delAllocateOrder = (aoId: string | number | Array<string | number>) => {
return request({
url: '/wms/allocateOrder/' + aoId,
method: 'delete'
});
};

@ -0,0 +1,241 @@
export interface AllocateOrderVO {
/**
*
*/
aoId: string | number;
/**
*
*/
allocateOrderCode: string;
/**
*
*/
materialCategories: string;
/**
* ID
*/
planWarehouseId: string | number;
/**
*
*/
orderStatus: string;
/**
* ID
*/
targetWarehouseId: string | number;
/**
*
*/
auditBy: string;
/**
*
*/
auditTime: string;
/**
* (0,1,2)
*/
auditStatus: string;
/**
*
*/
auditComments: string;
/**
*
*/
createOut: string;
/**
*
*/
outCode: string;
/**
*
*/
createIn: string;
/**
*
*/
inCode: string;
/**
*
*/
inMethod: string;
}
export interface AllocateOrderForm extends BaseEntity {
/**
*
*/
aoId?: string | number;
/**
*
*/
allocateOrderCode?: string;
/**
*
*/
materialCategories?: string;
/**
* ID
*/
planWarehouseId?: string | number;
/**
*
*/
orderStatus?: string;
/**
* ID
*/
targetWarehouseId?: string | number;
/**
*
*/
auditBy?: string;
/**
*
*/
auditTime?: string;
/**
* (0,1,2)
*/
auditStatus?: string;
/**
*
*/
auditComments?: string;
/**
*
*/
createOut?: string;
/**
*
*/
outCode?: string;
/**
*
*/
createIn?: string;
/**
*
*/
inCode?: string;
/**
*
*/
inMethod?: string;
}
export interface AllocateOrderQuery extends PageQuery {
/**
*
*/
aoId?: string | number;
/**
*
*/
allocateOrderCode?: string;
/**
*
*/
materialCategories?: string;
/**
* ID
*/
planWarehouseId?: string | number;
/**
*
*/
orderStatus?: string;
/**
* ID
*/
targetWarehouseId?: string | number;
/**
*
*/
auditBy?: string;
/**
*
*/
auditTime?: string;
/**
* (0,1,2)
*/
auditStatus?: string;
/**
*
*/
auditComments?: string;
/**
*
*/
createOut?: string;
/**
*
*/
outCode?: string;
/**
*
*/
createIn?: string;
/**
*
*/
inCode?: string;
/**
*
*/
inMethod?: string;
/**
*
*/
params?: any;
}

@ -0,0 +1,63 @@
import request from '@/utils/request';
import { AxiosPromise } from 'axios';
import { AllocateOrderDetailVO, AllocateOrderDetailForm, AllocateOrderDetailQuery } from '@/api/wms/allocateOrderDetail/types';
/**
*
* @param query
* @returns {*}
*/
export const listAllocateOrderDetail = (query?: AllocateOrderDetailQuery): AxiosPromise<AllocateOrderDetailVO[]> => {
return request({
url: '/wms/allocateOrderDetail/list',
method: 'get',
params: query
});
};
/**
*
* @param aoDId
*/
export const getAllocateOrderDetail = (aoDId: string | number): AxiosPromise<AllocateOrderDetailVO> => {
return request({
url: '/wms/allocateOrderDetail/' + aoDId,
method: 'get'
});
};
/**
*
* @param data
*/
export const addAllocateOrderDetail = (data: AllocateOrderDetailForm) => {
return request({
url: '/wms/allocateOrderDetail',
method: 'post',
data: data
});
};
/**
*
* @param data
*/
export const updateAllocateOrderDetail = (data: AllocateOrderDetailForm) => {
return request({
url: '/wms/allocateOrderDetail',
method: 'put',
data: data
});
};
/**
*
* @param aoDId
*/
export const delAllocateOrderDetail = (aoDId: string | number | Array<string | number>) => {
return request({
url: '/wms/allocateOrderDetail/' + aoDId,
method: 'delete'
});
};

@ -0,0 +1,106 @@
export interface AllocateOrderDetailVO {
/**
*
*/
aoDId: string | number;
/**
*
*/
allocateCode: string;
/**
* id
*/
materialId: string | number;
/**
*
*/
allocateOrderQty: number;
/**
* erp
*/
erpSynchronousStatus: string;
/**
* erp
*/
erpSynchronousQty: number;
}
export interface AllocateOrderDetailForm extends BaseEntity {
/**
*
*/
aoDId?: string | number;
/**
*
*/
allocateCode?: string;
/**
* id
*/
materialId?: string | number;
/**
*
*/
allocateOrderQty?: number;
/**
* erp
*/
erpSynchronousStatus?: string;
/**
* erp
*/
erpSynchronousQty?: number;
}
export interface AllocateOrderDetailQuery extends PageQuery {
/**
*
*/
aoDId?: string | number;
/**
*
*/
allocateCode?: string;
/**
* id
*/
materialId?: string | number;
/**
*
*/
allocateOrderQty?: number;
/**
* erp
*/
erpSynchronousStatus?: string;
/**
* erp
*/
erpSynchronousQty?: number;
/**
*
*/
params?: any;
}

@ -84,7 +84,22 @@ export const constantRoutes: RouteRecordRaw[] = [
path: 'instockDetail',
component: () => import('@/views/wms/instockDetail/index.vue'),
name: 'instockDetail',
meta: { title: '入库明细', icon: 'dashboard', affix: true }
meta: { title: '入库明细', icon: 'dashboard', affix: true },
hidden: true
}
]
},
{
path: '/wms',
component: Layout,
redirect: '/index',
children: [
{
path: 'allocateOrderDetail',
component: () => import('@/views/wms/allocateOrderDetail/index.vue'),
name: 'allocateOrderDetail',
meta: { title: '调拨单明细', icon: 'dashboard', affix: true },
hidden: true
}
]
},
@ -97,7 +112,8 @@ export const constantRoutes: RouteRecordRaw[] = [
path: 'outStockDetail',
component: () => import('@/views/wms/outstockDetail/index.vue'),
name: 'outstockDetail',
meta: { title: '出库明细', icon: 'dashboard', affix: true }
meta: { title: '出库明细', icon: 'dashboard', affix: true },
hidden: true
}
]
},

@ -0,0 +1,528 @@
<template>
<div class="p-2">
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
<div v-show="showSearch" class="mb-[10px]">
<el-card shadow="hover">
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
<el-form-item label="表主键" prop="aoId">
<el-input v-model="queryParams.aoId" placeholder="请输入表主键" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="调拨单号" prop="allocateOrderCode">
<el-input v-model="queryParams.allocateOrderCode" placeholder="请输入调拨单号" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="物料大类" prop="materialCategories">
<el-input v-model="queryParams.materialCategories" placeholder="请输入物料大类" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="出库仓库ID" prop="planWarehouseId">
<el-input v-model="queryParams.planWarehouseId" placeholder="请输入出库仓库ID" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="工单状态" prop="orderStatus">
<el-select v-model="queryParams.orderStatus" placeholder="请选择工单状态" clearable >
<el-option v-for="dict in wms_allocate_status" :key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select>
</el-form-item>
<el-form-item label="入库仓库ID" prop="targetWarehouseId">
<el-input v-model="queryParams.targetWarehouseId" placeholder="请输入入库仓库ID" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="审核人" prop="auditBy">
<el-input v-model="queryParams.auditBy" placeholder="请输入审核人" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="审核时间" prop="auditTime">
<el-date-picker clearable
v-model="queryParams.auditTime"
type="date"
value-format="YYYY-MM-DD"
placeholder="请选择审核时间"
/>
</el-form-item>
<el-form-item label="审核状态" prop="auditStatus">
<el-select v-model="queryParams.auditStatus" placeholder="请选择审核状态(0待审核,1审核通过,2审核未通过)" clearable >
<el-option v-for="dict in approve_status" :key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select>
</el-form-item>
<el-form-item label="审核意见" prop="auditComments">
<el-input v-model="queryParams.auditComments" placeholder="请输入审核意见" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="是否创建出库单" prop="createOut">
<el-input v-model="queryParams.createOut" placeholder="请输入是否创建出库单" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="出库单号" prop="outCode">
<el-input v-model="queryParams.outCode" placeholder="请输入出库单号" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="是否创建入库单" prop="createIn">
<el-input v-model="queryParams.createIn" placeholder="请输入是否创建入库单" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="入库单号" prop="inCode">
<el-input v-model="queryParams.inCode" placeholder="请输入入库单号" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="入库方式" prop="inMethod">
<el-input v-model="queryParams.inMethod" placeholder="请输入入库方式" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery"></el-button>
<el-button icon="Refresh" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
</el-card>
</div>
</transition>
<el-card shadow="never">
<template #header>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['system:allocateOrder:add']"></el-button>
</el-col>
<el-col :span="1.5">
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['system:allocateOrder:edit']"></el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['system:allocateOrder:remove']"></el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="Download" @click="handleExport" v-hasPermi="['system:allocateOrder:export']"></el-button>
</el-col>
<right-toolbar v-model:showSearch="showSearch" :columns="columns" :search="true" @queryTable="getList"></right-toolbar>
</el-row>
</template>
<el-table v-loading="loading" :data="allocateOrderList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<!-- <el-table-column label="表主键" align="center" prop="aoId" v-if="columns[0].visible"/> -->
<el-table-column label="调拨单号" align="center" prop="allocateOrderCode" v-if="columns[1].visible"/>
<el-table-column label="物料大类" align="center" prop="materialCategories" v-if="columns[2].visible">
<template #default="scope">
<dict-tag :options="material_mategories" :value="scope.row.materialCategories"/>
</template>
</el-table-column>
<el-table-column label="出库仓库ID" align="center" prop="planWarehouseCode" v-if="columns[3].visible"/>
<el-table-column label="工单状态" align="center" prop="orderStatus" v-if="columns[4].visible">
<template #default="scope">
<dict-tag :options="wms_allocate_status" :value="scope.row.orderStatus"/>
</template>
</el-table-column>
<el-table-column label="入库仓库ID" align="center" prop="targetWarehouseCode" v-if="columns[5].visible"/>
<el-table-column label="审核人" align="center" prop="auditBy" v-if="columns[6].visible"/>
<el-table-column label="审核时间" align="center" prop="auditTime" width="180" v-if="columns[7].visible">
<template #default="scope">
<span>{{ parseTime(scope.row.auditTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column label="审核状态" align="center" prop="auditStatus" v-if="columns[8].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[9].visible"/>
<el-table-column label="是否创建出库单" align="center" prop="createOut" v-if="columns[11].visible">
<template #default="scope">
<dict-tag :options="wms_allocate_create" :value="scope.row.createOut"/>
</template>
</el-table-column>
<el-table-column label="出库单号" align="center" prop="outCode" v-if="columns[12].visible"/>
<el-table-column label="是否创建入库单" align="center" prop="createIn" v-if="columns[13].visible">
<template #default="scope">
<dict-tag :options="wms_allocate_create" :value="scope.row.createIn"/>
</template>
</el-table-column>
<el-table-column label="入库单号" align="center" prop="inCode" v-if="columns[14].visible"/>
<el-table-column label="入库方式" align="center" prop="inMethod" v-if="columns[15].visible">
<template #default="scope">
<dict-tag :options="wms_allocate_way" :value="scope.row.inMethod"/>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope">
<el-tooltip content="修改" placement="top">
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['system:allocateOrder:edit']"></el-button>
</el-tooltip>
<el-tooltip content="删除" placement="top">
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['system:allocateOrder:remove']"></el-button>
</el-tooltip>
<el-tooltip content="详情" placement="top">
<el-button link type="primary" icon="Star" @click="HandleInfo(scope.row)" v-hasPermi="['system:allocateOrder:remove']"></el-button>
</el-tooltip>
</template>
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
</el-card>
<!-- 添加或修改调拨工单对话框 -->
<el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
<el-form ref="allocateOrderFormRef" :model="form" :rules="rules" label-width="100px">
<!-- <el-form-item label="表主键" prop="aoId">
<el-input v-model="form.aoId" placeholder="请输入表主键" />
</el-form-item> -->
<!-- <el-form-item label="调拨单号" prop="allocateOrderCode">
<el-input v-model="form.allocateOrderCode" placeholder="请输入调拨单号" />
</el-form-item> -->
<el-form-item label="物料大类" prop="materialCategories">
<el-select v-model="form.materialCategories" placeholder="请输入物料大类">
<el-option
v-for="dict in material_mategories"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="出库仓库" prop="planWarehouseId">
<el-select v-model="form.planWarehouseId" placeholder="请选择所属仓库">
<el-option
v-for="item in baseStoreList"
:key="item.warehouseId"
:label="item.warehouseName"
:value="item.warehouseId"
></el-option>
</el-select>
</el-form-item>
<!-- <el-form-item label="工单状态" prop="orderStatus">
<el-radio-group v-model="form.orderStatus">
<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="targetWarehouseId">
<el-select v-model="form.targetWarehouseId" placeholder="请选择所属仓库">
<el-option
v-for="item in baseStoreList"
:key="item.warehouseId"
:label="item.warehouseName"
:value="item.warehouseId"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="审核人" prop="auditBy">
<el-select v-model="form.auditBy" placeholder="请选择审核人">
<el-option
v-for="item in userList"
:key="item.userId"
:label="item.userName"
:value="item.userName"
/>
</el-select>
</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="创建出库单" prop="createOut">
<el-radio-group v-model="form.createOut">
<el-radio
v-for="dict in wms_allocate_create"
:key="dict.value"
:value="dict.value"
>{{dict.label}}</el-radio>
</el-radio-group>
</el-form-item>
<!-- <el-form-item label="出库单号" prop="outCode">
<el-input v-model="form.outCode" placeholder="请输入出库单号" />
</el-form-item> -->
<el-form-item label="创建入库单" prop="createIn">
<el-radio-group v-model="form.createIn">
<el-radio
v-for="dict in wms_allocate_create"
:key="dict.value"
:value="dict.value"
>{{dict.label}}</el-radio>
</el-radio-group>
</el-form-item>
<!-- <el-form-item label="入库单号" prop="inCode">
<el-input v-model="form.inCode" placeholder="请输入入库单号" />
</el-form-item> -->
<el-form-item label="入库方式" prop="inMethod">
<el-radio-group v-model="form.inMethod">
<el-radio
v-for="dict in wms_allocate_way"
:key="dict.value"
:value="dict.value"
>{{dict.label}}</el-radio>
</el-radio-group>
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button :loading="buttonLoading" type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<script setup name="AllocateOrder" lang="ts">
import { listAllocateOrder, getAllocateOrder, delAllocateOrder, addAllocateOrder, updateAllocateOrder } from '@/api/wms/allocateOrder';
import { AllocateOrderVO, AllocateOrderQuery, AllocateOrderForm } from '@/api/wms/allocateOrder/types';
import {getBaseWarehouseList} from "@/api/wms/baseWarehouse";
import { UserForm, UserQuery, UserVO } from '@/api/system/user/types';
import api from '@/api/system/user';
import { useRouter } from 'vue-router';
let router = useRouter();
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const { approve_status, material_mategories, wms_out_type, wms_allocate_status, wms_allocate_create, wms_allocate_way } = toRefs<any>(proxy?.useDict('approve_status', 'material_mategories', 'wms_out_type','wms_allocate_status','wms_allocate_create','wms_allocate_way'));
const allocateOrderList = ref<AllocateOrderVO[]>([]);
const buttonLoading = ref(false);
const loading = ref(true);
const showSearch = ref(true);
const ids = ref<Array<string | number>>([]);
const single = ref(true);
const multiple = ref(true);
const total = ref(0);
const userList = ref<UserVO[]>();
const queryFormRef = ref<ElFormInstance>();
const allocateOrderFormRef = ref<ElFormInstance>();
const dialog = reactive<DialogOption>({
visible: false,
title: ''
});
//
const columns = ref<FieldOption[]>([
{ key: 0, label: `表主键`, visible: true },
{ key: 1, label: `调拨单号`, visible: true },
{ key: 2, label: `物料大类`, visible: true },
{ key: 3, label: `出库仓库ID`, visible: true },
{ key: 4, label: `工单状态`, visible: true },
{ key: 5, label: `入库仓库ID`, visible: true },
{ key: 6, label: `审核人`, visible: true },
{ key: 7, label: `审核时间`, visible: true },
{ key: 8, label: `审核状态(0待审核,1审核通过,2审核未通过)`, visible: true },
{ key: 9, label: `审核意见`, visible: true },
{ key: 10, label: `租户号`, 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: `创建人`, visible: true },
{ key: 17, label: `创建时间`, visible: true },
{ key: 18, label: `更新人`, visible: true },
{ key: 19, label: `更新时间`, visible: true },
{ key: 20, label: `创建部门`, visible: true },
]);
const initFormData: AllocateOrderForm = {
aoId: undefined,
allocateOrderCode: undefined,
materialCategories: undefined,
planWarehouseId: undefined,
orderStatus: undefined,
targetWarehouseId: undefined,
auditBy: undefined,
auditTime: undefined,
auditStatus: undefined,
auditComments: undefined,
createOut: undefined,
outCode: undefined,
createIn: undefined,
inCode: undefined,
inMethod: undefined,
}
const data = reactive<PageData<AllocateOrderForm, AllocateOrderQuery>>({
form: {...initFormData},
queryParams: {
pageNum: 1,
pageSize: 10,
aoId: undefined,
allocateOrderCode: undefined,
materialCategories: undefined,
planWarehouseId: undefined,
orderStatus: undefined,
targetWarehouseId: undefined,
auditBy: undefined,
auditTime: undefined,
auditStatus: undefined,
auditComments: undefined,
createOut: undefined,
outCode: undefined,
createIn: undefined,
inCode: undefined,
inMethod: undefined,
params: {
}
},
rules: {
aoId: [
{ required: true, message: "表主键不能为空", trigger: "blur" }
],
allocateOrderCode: [
{ required: true, message: "调拨单号不能为空", trigger: "blur" }
],
materialCategories: [
{ required: true, message: "物料大类不能为空", trigger: "blur" }
],
planWarehouseId: [
{ required: true, message: "出库仓库ID不能为空", trigger: "blur" }
],
orderStatus: [
{ required: true, message: "工单状态不能为空", trigger: "change" }
],
targetWarehouseId: [
{ required: true, message: "入库仓库ID不能为空", trigger: "blur" }
],
auditBy: [
{ required: true, message: "审核人不能为空", trigger: "blur" }
],
auditTime: [
{ required: true, message: "审核时间不能为空", trigger: "blur" }
],
auditStatus: [
{ required: true, message: "审核状态(0待审核,1审核通过,2审核未通过)不能为空", trigger: "change" }
],
auditComments: [
{ required: true, message: "审核意见不能为空", trigger: "blur" }
],
createOut: [
{ required: true, message: "是否创建出库单不能为空", trigger: "blur" }
],
outCode: [
{ required: true, message: "出库单号不能为空", trigger: "blur" }
],
createIn: [
{ required: true, message: "是否创建入库单不能为空", trigger: "blur" }
],
inCode: [
{ required: true, message: "入库单号不能为空", trigger: "blur" }
],
inMethod: [
{ required: true, message: "入库方式不能为空", trigger: "blur" }
],
}
});
const { queryParams, form, rules } = toRefs(data);
let baseStoreList = ref([]);
/** 查询用户列表 */
const getUserList = async () => {
const res = await api.listUser(null);
userList.value = res.rows;
};
/** 查询车间下拉树结构 */
const getBaseWarehouseListsss = async () => {
let res = await getBaseWarehouseList(null);
baseStoreList.value = res.data;
};
/** 查询调拨工单列表 */
const getList = async () => {
loading.value = true;
const res = await listAllocateOrder(queryParams.value);
allocateOrderList.value = res.rows;
total.value = res.total;
loading.value = false;
}
/** 取消按钮 */
const cancel = () => {
reset();
dialog.visible = false;
}
const HandleInfo = async (row?: AllocateOrderVO) => {
const aoId = row?.aoId;
const materialCategories = row?.materialCategories;
// const instockCode = row?.instockCode;
router.push({
path: '/wms/allocateOrderDetail',query: {'aoId': aoId}
});
}
/** 表单重置 */
const reset = () => {
form.value = {...initFormData};
allocateOrderFormRef.value?.resetFields();
}
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.value.pageNum = 1;
getList();
}
/** 重置按钮操作 */
const resetQuery = () => {
queryFormRef.value?.resetFields();
handleQuery();
}
/** 多选框选中数据 */
const handleSelectionChange = (selection: AllocateOrderVO[]) => {
ids.value = selection.map(item => item.aoId);
single.value = selection.length != 1;
multiple.value = !selection.length;
}
/** 新增按钮操作 */
const handleAdd = () => {
reset();
dialog.visible = true;
dialog.title = "添加调拨工单";
}
/** 修改按钮操作 */
const handleUpdate = async (row?: AllocateOrderVO) => {
reset();
const _aoId = row?.aoId || ids.value[0]
const res = await getAllocateOrder(_aoId);
Object.assign(form.value, res.data);
dialog.visible = true;
dialog.title = "修改调拨工单";
}
/** 提交按钮 */
const submitForm = () => {
allocateOrderFormRef.value?.validate(async (valid: boolean) => {
if (valid) {
buttonLoading.value = true;
if (form.value.aoId) {
await updateAllocateOrder(form.value).finally(() => buttonLoading.value = false);
} else {
await addAllocateOrder(form.value).finally(() => buttonLoading.value = false);
}
proxy?.$modal.msgSuccess("操作成功");
dialog.visible = false;
await getList();
}
});
}
/** 删除按钮操作 */
const handleDelete = async (row?: AllocateOrderVO) => {
const _aoIds = row?.aoId || ids.value;
await proxy?.$modal.confirm('是否确认删除调拨工单编号为"' + _aoIds + '"的数据项?').finally(() => loading.value = false);
await delAllocateOrder(_aoIds);
proxy?.$modal.msgSuccess("删除成功");
await getList();
}
/** 导出按钮操作 */
const handleExport = () => {
proxy?.download('wms/allocateOrder/export', {
...queryParams.value
}, `allocateOrder_${new Date().getTime()}.xlsx`)
}
onMounted(() => {
getUserList();
getBaseWarehouseListsss();
getList();
});
</script>

@ -0,0 +1,528 @@
<template>
<div class="p-2">
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
<div v-show="showSearch" class="mb-[10px]">
<el-card shadow="hover">
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
<el-form-item label="表主键" prop="aoId">
<el-input v-model="queryParams.aoId" placeholder="请输入表主键" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="调拨单号" prop="allocateOrderCode">
<el-input v-model="queryParams.allocateOrderCode" placeholder="请输入调拨单号" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="物料大类" prop="materialCategories">
<el-input v-model="queryParams.materialCategories" placeholder="请输入物料大类" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="出库仓库ID" prop="planWarehouseId">
<el-input v-model="queryParams.planWarehouseId" placeholder="请输入出库仓库ID" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="工单状态" prop="orderStatus">
<el-select v-model="queryParams.orderStatus" placeholder="请选择工单状态" clearable >
<el-option v-for="dict in wms_allocate_status" :key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select>
</el-form-item>
<el-form-item label="入库仓库ID" prop="targetWarehouseId">
<el-input v-model="queryParams.targetWarehouseId" placeholder="请输入入库仓库ID" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="审核人" prop="auditBy">
<el-input v-model="queryParams.auditBy" placeholder="请输入审核人" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="审核时间" prop="auditTime">
<el-date-picker clearable
v-model="queryParams.auditTime"
type="date"
value-format="YYYY-MM-DD"
placeholder="请选择审核时间"
/>
</el-form-item>
<el-form-item label="审核状态" prop="auditStatus">
<el-select v-model="queryParams.auditStatus" placeholder="请选择审核状态(0待审核,1审核通过,2审核未通过)" clearable >
<el-option v-for="dict in approve_status" :key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select>
</el-form-item>
<el-form-item label="审核意见" prop="auditComments">
<el-input v-model="queryParams.auditComments" placeholder="请输入审核意见" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="是否创建出库单" prop="createOut">
<el-input v-model="queryParams.createOut" placeholder="请输入是否创建出库单" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="出库单号" prop="outCode">
<el-input v-model="queryParams.outCode" placeholder="请输入出库单号" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="是否创建入库单" prop="createIn">
<el-input v-model="queryParams.createIn" placeholder="请输入是否创建入库单" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="入库单号" prop="inCode">
<el-input v-model="queryParams.inCode" placeholder="请输入入库单号" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="入库方式" prop="inMethod">
<el-input v-model="queryParams.inMethod" placeholder="请输入入库方式" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery"></el-button>
<el-button icon="Refresh" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
</el-card>
</div>
</transition>
<el-card shadow="never">
<template #header>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['system:allocateOrder:add']"></el-button>
</el-col>
<el-col :span="1.5">
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['system:allocateOrder:edit']"></el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['system:allocateOrder:remove']"></el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="Download" @click="handleExport" v-hasPermi="['system:allocateOrder:export']"></el-button>
</el-col>
<right-toolbar v-model:showSearch="showSearch" :columns="columns" :search="true" @queryTable="getList"></right-toolbar>
</el-row>
</template>
<el-table v-loading="loading" :data="allocateOrderList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<!-- <el-table-column label="表主键" align="center" prop="aoId" v-if="columns[0].visible"/> -->
<el-table-column label="调拨单号" align="center" prop="allocateOrderCode" v-if="columns[1].visible"/>
<el-table-column label="物料大类" align="center" prop="materialCategories" v-if="columns[2].visible">
<template #default="scope">
<dict-tag :options="material_mategories" :value="scope.row.materialCategories"/>
</template>
</el-table-column>
<el-table-column label="出库仓库ID" align="center" prop="planWarehouseCode" v-if="columns[3].visible"/>
<el-table-column label="工单状态" align="center" prop="orderStatus" v-if="columns[4].visible">
<template #default="scope">
<dict-tag :options="wms_allocate_status" :value="scope.row.orderStatus"/>
</template>
</el-table-column>
<el-table-column label="入库仓库ID" align="center" prop="targetWarehouseCode" v-if="columns[5].visible"/>
<el-table-column label="审核人" align="center" prop="auditBy" v-if="columns[6].visible"/>
<el-table-column label="审核时间" align="center" prop="auditTime" width="180" v-if="columns[7].visible">
<template #default="scope">
<span>{{ parseTime(scope.row.auditTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column label="审核状态" align="center" prop="auditStatus" v-if="columns[8].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[9].visible"/>
<el-table-column label="是否创建出库单" align="center" prop="createOut" v-if="columns[11].visible">
<template #default="scope">
<dict-tag :options="wms_allocate_create" :value="scope.row.createOut"/>
</template>
</el-table-column>
<el-table-column label="出库单号" align="center" prop="outCode" v-if="columns[12].visible"/>
<el-table-column label="是否创建入库单" align="center" prop="createIn" v-if="columns[13].visible">
<template #default="scope">
<dict-tag :options="wms_allocate_create" :value="scope.row.createIn"/>
</template>
</el-table-column>
<el-table-column label="入库单号" align="center" prop="inCode" v-if="columns[14].visible"/>
<el-table-column label="入库方式" align="center" prop="inMethod" v-if="columns[15].visible">
<template #default="scope">
<dict-tag :options="wms_allocate_way" :value="scope.row.inMethod"/>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope">
<el-tooltip content="修改" placement="top">
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['system:allocateOrder:edit']"></el-button>
</el-tooltip>
<el-tooltip content="删除" placement="top">
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['system:allocateOrder:remove']"></el-button>
</el-tooltip>
<el-tooltip content="详情" placement="top">
<el-button link type="primary" icon="Star" @click="HandleInfo(scope.row)" v-hasPermi="['system:allocateOrder:remove']"></el-button>
</el-tooltip>
</template>
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
</el-card>
<!-- 添加或修改调拨工单对话框 -->
<el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
<el-form ref="allocateOrderFormRef" :model="form" :rules="rules" label-width="100px">
<!-- <el-form-item label="表主键" prop="aoId">
<el-input v-model="form.aoId" placeholder="请输入表主键" />
</el-form-item> -->
<!-- <el-form-item label="调拨单号" prop="allocateOrderCode">
<el-input v-model="form.allocateOrderCode" placeholder="请输入调拨单号" />
</el-form-item> -->
<el-form-item label="物料大类" prop="materialCategories">
<el-select v-model="form.materialCategories" placeholder="请输入物料大类">
<el-option
v-for="dict in material_mategories"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="出库仓库" prop="planWarehouseId">
<el-select v-model="form.planWarehouseId" placeholder="请选择所属仓库">
<el-option
v-for="item in baseStoreList"
:key="item.warehouseId"
:label="item.warehouseName"
:value="item.warehouseId"
></el-option>
</el-select>
</el-form-item>
<!-- <el-form-item label="工单状态" prop="orderStatus">
<el-radio-group v-model="form.orderStatus">
<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="targetWarehouseId">
<el-select v-model="form.targetWarehouseId" placeholder="请选择所属仓库">
<el-option
v-for="item in baseStoreList"
:key="item.warehouseId"
:label="item.warehouseName"
:value="item.warehouseId"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="审核人" prop="auditBy">
<el-select v-model="form.auditBy" placeholder="请选择审核人">
<el-option
v-for="item in userList"
:key="item.userId"
:label="item.userName"
:value="item.userName"
/>
</el-select>
</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="创建出库单" prop="createOut">
<el-radio-group v-model="form.createOut">
<el-radio
v-for="dict in wms_allocate_create"
:key="dict.value"
:value="dict.value"
>{{dict.label}}</el-radio>
</el-radio-group>
</el-form-item>
<!-- <el-form-item label="出库单号" prop="outCode">
<el-input v-model="form.outCode" placeholder="请输入出库单号" />
</el-form-item> -->
<el-form-item label="创建入库单" prop="createIn">
<el-radio-group v-model="form.createIn">
<el-radio
v-for="dict in wms_allocate_create"
:key="dict.value"
:value="dict.value"
>{{dict.label}}</el-radio>
</el-radio-group>
</el-form-item>
<!-- <el-form-item label="入库单号" prop="inCode">
<el-input v-model="form.inCode" placeholder="请输入入库单号" />
</el-form-item> -->
<el-form-item label="入库方式" prop="inMethod">
<el-radio-group v-model="form.inMethod">
<el-radio
v-for="dict in wms_allocate_way"
:key="dict.value"
:value="dict.value"
>{{dict.label}}</el-radio>
</el-radio-group>
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button :loading="buttonLoading" type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<script setup name="AllocateOrder" lang="ts">
import { listAllocateOrder, getAllocateOrder, delAllocateOrder, addAllocateOrder, updateAllocateOrder } from '@/api/wms/allocateOrder';
import { AllocateOrderVO, AllocateOrderQuery, AllocateOrderForm } from '@/api/wms/allocateOrder/types';
import {getBaseWarehouseList} from "@/api/wms/baseWarehouse";
import { UserForm, UserQuery, UserVO } from '@/api/system/user/types';
import api from '@/api/system/user';
import { useRouter } from 'vue-router';
let router = useRouter();
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const { approve_status, material_mategories, wms_out_type, wms_allocate_status, wms_allocate_create, wms_allocate_way } = toRefs<any>(proxy?.useDict('approve_status', 'material_mategories', 'wms_out_type','wms_allocate_status','wms_allocate_create','wms_allocate_way'));
const allocateOrderList = ref<AllocateOrderVO[]>([]);
const buttonLoading = ref(false);
const loading = ref(true);
const showSearch = ref(true);
const ids = ref<Array<string | number>>([]);
const single = ref(true);
const multiple = ref(true);
const total = ref(0);
const userList = ref<UserVO[]>();
const queryFormRef = ref<ElFormInstance>();
const allocateOrderFormRef = ref<ElFormInstance>();
const dialog = reactive<DialogOption>({
visible: false,
title: ''
});
//
const columns = ref<FieldOption[]>([
{ key: 0, label: `表主键`, visible: true },
{ key: 1, label: `调拨单号`, visible: true },
{ key: 2, label: `物料大类`, visible: true },
{ key: 3, label: `出库仓库ID`, visible: true },
{ key: 4, label: `工单状态`, visible: true },
{ key: 5, label: `入库仓库ID`, visible: true },
{ key: 6, label: `审核人`, visible: true },
{ key: 7, label: `审核时间`, visible: true },
{ key: 8, label: `审核状态(0待审核,1审核通过,2审核未通过)`, visible: true },
{ key: 9, label: `审核意见`, visible: true },
{ key: 10, label: `租户号`, 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: `创建人`, visible: true },
{ key: 17, label: `创建时间`, visible: true },
{ key: 18, label: `更新人`, visible: true },
{ key: 19, label: `更新时间`, visible: true },
{ key: 20, label: `创建部门`, visible: true },
]);
const initFormData: AllocateOrderForm = {
aoId: undefined,
allocateOrderCode: undefined,
materialCategories: undefined,
planWarehouseId: undefined,
orderStatus: undefined,
targetWarehouseId: undefined,
auditBy: undefined,
auditTime: undefined,
auditStatus: undefined,
auditComments: undefined,
createOut: undefined,
outCode: undefined,
createIn: undefined,
inCode: undefined,
inMethod: undefined,
}
const data = reactive<PageData<AllocateOrderForm, AllocateOrderQuery>>({
form: {...initFormData},
queryParams: {
pageNum: 1,
pageSize: 10,
aoId: undefined,
allocateOrderCode: undefined,
materialCategories: undefined,
planWarehouseId: undefined,
orderStatus: undefined,
targetWarehouseId: undefined,
auditBy: undefined,
auditTime: undefined,
auditStatus: undefined,
auditComments: undefined,
createOut: undefined,
outCode: undefined,
createIn: undefined,
inCode: undefined,
inMethod: undefined,
params: {
}
},
rules: {
aoId: [
{ required: true, message: "表主键不能为空", trigger: "blur" }
],
allocateOrderCode: [
{ required: true, message: "调拨单号不能为空", trigger: "blur" }
],
materialCategories: [
{ required: true, message: "物料大类不能为空", trigger: "blur" }
],
planWarehouseId: [
{ required: true, message: "出库仓库ID不能为空", trigger: "blur" }
],
orderStatus: [
{ required: true, message: "工单状态不能为空", trigger: "change" }
],
targetWarehouseId: [
{ required: true, message: "入库仓库ID不能为空", trigger: "blur" }
],
auditBy: [
{ required: true, message: "审核人不能为空", trigger: "blur" }
],
auditTime: [
{ required: true, message: "审核时间不能为空", trigger: "blur" }
],
auditStatus: [
{ required: true, message: "审核状态(0待审核,1审核通过,2审核未通过)不能为空", trigger: "change" }
],
auditComments: [
{ required: true, message: "审核意见不能为空", trigger: "blur" }
],
createOut: [
{ required: true, message: "是否创建出库单不能为空", trigger: "blur" }
],
outCode: [
{ required: true, message: "出库单号不能为空", trigger: "blur" }
],
createIn: [
{ required: true, message: "是否创建入库单不能为空", trigger: "blur" }
],
inCode: [
{ required: true, message: "入库单号不能为空", trigger: "blur" }
],
inMethod: [
{ required: true, message: "入库方式不能为空", trigger: "blur" }
],
}
});
const { queryParams, form, rules } = toRefs(data);
let baseStoreList = ref([]);
/** 查询用户列表 */
const getUserList = async () => {
const res = await api.listUser(null);
userList.value = res.rows;
};
/** 查询车间下拉树结构 */
const getBaseWarehouseListsss = async () => {
let res = await getBaseWarehouseList(null);
baseStoreList.value = res.data;
};
/** 查询调拨工单列表 */
const getList = async () => {
loading.value = true;
const res = await listAllocateOrder(queryParams.value);
allocateOrderList.value = res.rows;
total.value = res.total;
loading.value = false;
}
/** 取消按钮 */
const cancel = () => {
reset();
dialog.visible = false;
}
const HandleInfo = async (row?: AllocateOrderVO) => {
const aoId = row?.aoId;
const materialCategories = row?.materialCategories;
// const instockCode = row?.instockCode;
router.push({
path: '/wms/allocateOrderDetail',query: {'aoId': aoId}
});
}
/** 表单重置 */
const reset = () => {
form.value = {...initFormData};
allocateOrderFormRef.value?.resetFields();
}
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.value.pageNum = 1;
getList();
}
/** 重置按钮操作 */
const resetQuery = () => {
queryFormRef.value?.resetFields();
handleQuery();
}
/** 多选框选中数据 */
const handleSelectionChange = (selection: AllocateOrderVO[]) => {
ids.value = selection.map(item => item.aoId);
single.value = selection.length != 1;
multiple.value = !selection.length;
}
/** 新增按钮操作 */
const handleAdd = () => {
reset();
dialog.visible = true;
dialog.title = "添加调拨工单";
}
/** 修改按钮操作 */
const handleUpdate = async (row?: AllocateOrderVO) => {
reset();
const _aoId = row?.aoId || ids.value[0]
const res = await getAllocateOrder(_aoId);
Object.assign(form.value, res.data);
dialog.visible = true;
dialog.title = "修改调拨工单";
}
/** 提交按钮 */
const submitForm = () => {
allocateOrderFormRef.value?.validate(async (valid: boolean) => {
if (valid) {
buttonLoading.value = true;
if (form.value.aoId) {
await updateAllocateOrder(form.value).finally(() => buttonLoading.value = false);
} else {
await addAllocateOrder(form.value).finally(() => buttonLoading.value = false);
}
proxy?.$modal.msgSuccess("操作成功");
dialog.visible = false;
await getList();
}
});
}
/** 删除按钮操作 */
const handleDelete = async (row?: AllocateOrderVO) => {
const _aoIds = row?.aoId || ids.value;
await proxy?.$modal.confirm('是否确认删除调拨工单编号为"' + _aoIds + '"的数据项?').finally(() => loading.value = false);
await delAllocateOrder(_aoIds);
proxy?.$modal.msgSuccess("删除成功");
await getList();
}
/** 导出按钮操作 */
const handleExport = () => {
proxy?.download('wms/allocateOrder/export', {
...queryParams.value
}, `allocateOrder_${new Date().getTime()}.xlsx`)
}
onMounted(() => {
getUserList();
getBaseWarehouseListsss();
getList();
});
</script>

@ -0,0 +1,290 @@
<template>
<div class="p-2">
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
<div v-show="showSearch" class="mb-[10px]">
<el-card shadow="hover">
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
<el-form-item label="调拨单号" prop="allocateCode">
<el-input v-model="queryParams.allocateCode" placeholder="请输入调拨单号" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="物料id" prop="materialId">
<el-input v-model="queryParams.materialId" placeholder="请输入物料id" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="调拨数量" prop="allocateOrderQty">
<el-input v-model="queryParams.allocateOrderQty" placeholder="请输入调拨数量" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="erp同步状态" prop="erpSynchronousStatus">
<el-select v-model="queryParams.erpSynchronousStatus" placeholder="请选择erp同步状态" clearable >
<el-option v-for="dict in erp_synchronous_status" :key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select>
</el-form-item>
<el-form-item label="erp同步数量" prop="erpSynchronousQty">
<el-input v-model="queryParams.erpSynchronousQty" placeholder="请输入erp同步数量" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery"></el-button>
<el-button icon="Refresh" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
</el-card>
</div>
</transition>
<el-card shadow="never">
<template #header>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['system:allocateOrderDetail:add']"></el-button>
</el-col>
<el-col :span="1.5">
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['system:allocateOrderDetail:edit']"></el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['system:allocateOrderDetail:remove']"></el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="Download" @click="handleExport" v-hasPermi="['system:allocateOrderDetail:export']"></el-button>
</el-col>
<right-toolbar v-model:showSearch="showSearch" :columns="columns" :search="true" @queryTable="getList"></right-toolbar>
</el-row>
</template>
<el-table v-loading="loading" :data="allocateOrderDetailList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="调拨子表主键" align="center" prop="aoDId" v-if="columns[0].visible"/>
<el-table-column label="调拨单号" align="center" prop="allocateCode" v-if="columns[1].visible"/>
<el-table-column label="物料id" align="center" prop="materialId" v-if="columns[2].visible"/>
<el-table-column label="调拨数量" align="center" prop="allocateOrderQty" v-if="columns[3].visible"/>
<el-table-column label="erp同步状态" align="center" prop="erpSynchronousStatus" v-if="columns[4].visible"/>
<el-table-column label="erp同步数量" align="center" prop="erpSynchronousQty" v-if="columns[5].visible"/>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope">
<el-tooltip content="修改" placement="top">
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['system:allocateOrderDetail:edit']"></el-button>
</el-tooltip>
<el-tooltip content="删除" placement="top">
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['system:allocateOrderDetail:remove']"></el-button>
</el-tooltip>
</template>
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
</el-card>
<!-- 添加或修改调拨子对话框 -->
<el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
<el-form ref="allocateOrderDetailFormRef" :model="form" :rules="rules" label-width="80px">
<el-form-item label="调拨子表主键" prop="aoDId">
<el-input v-model="form.aoDId" placeholder="请输入调拨子表主键" />
</el-form-item>
<el-form-item label="调拨单号" prop="allocateCode">
<el-input v-model="form.allocateCode" placeholder="请输入调拨单号" />
</el-form-item>
<el-form-item label="物料id" prop="materialId">
<el-input v-model="form.materialId" placeholder="请输入物料id" />
</el-form-item>
<el-form-item label="调拨数量" prop="allocateOrderQty">
<el-input v-model="form.allocateOrderQty" placeholder="请输入调拨数量" />
</el-form-item>
<el-form-item label="erp同步状态" prop="erpSynchronousStatus">
<el-radio-group v-model="form.erpSynchronousStatus">
<el-radio
v-for="dict in erp_synchronous_status"
: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>
<template #footer>
<div class="dialog-footer">
<el-button :loading="buttonLoading" type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<script setup name="AllocateOrderDetail" lang="ts">
import { listAllocateOrderDetail, getAllocateOrderDetail, delAllocateOrderDetail, addAllocateOrderDetail, updateAllocateOrderDetail } from '@/api/wms/allocateOrderDetail';
import { AllocateOrderDetailVO, AllocateOrderDetailQuery, AllocateOrderDetailForm } from '@/api/wms/allocateOrderDetail/types';
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const { erp_synchronous_status } = toRefs<any>(proxy?.useDict('erp_synchronous_status', 'wms_allocate_way'));
const allocateOrderDetailList = ref<AllocateOrderDetailVO[]>([]);
const buttonLoading = ref(false);
const loading = ref(true);
const showSearch = ref(true);
const ids = ref<Array<string | number>>([]);
const single = ref(true);
const multiple = ref(true);
const total = ref(0);
const queryFormRef = ref<ElFormInstance>();
const allocateOrderDetailFormRef = ref<ElFormInstance>();
const dialog = reactive<DialogOption>({
visible: false,
title: ''
});
//
const columns = ref<FieldOption[]>([
{ key: 0, label: `调拨子表主键`, visible: true },
{ key: 1, label: `调拨单号`, visible: true },
{ key: 2, label: `物料id`, visible: true },
{ key: 3, label: `调拨数量`, visible: true },
{ key: 4, label: `erp同步状态`, visible: true },
{ key: 5, label: `erp同步数量`, 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: `更新时间`, visible: true },
{ key: 11, label: `创建部门`, visible: true },
]);
const initFormData: AllocateOrderDetailForm = {
aoDId: undefined,
allocateCode: undefined,
materialId: undefined,
allocateOrderQty: undefined,
erpSynchronousStatus: undefined,
erpSynchronousQty: undefined,
}
const data = reactive<PageData<AllocateOrderDetailForm, AllocateOrderDetailQuery>>({
form: {...initFormData},
queryParams: {
pageNum: 1,
pageSize: 10,
aoDId: undefined,
allocateCode: undefined,
materialId: undefined,
allocateOrderQty: undefined,
erpSynchronousStatus: undefined,
erpSynchronousQty: undefined,
params: {
}
},
rules: {
aoDId: [
{ required: true, message: "调拨子表主键不能为空", trigger: "blur" }
],
allocateCode: [
{ required: true, message: "调拨单号不能为空", trigger: "blur" }
],
materialId: [
{ required: true, message: "物料id不能为空", trigger: "blur" }
],
allocateOrderQty: [
{ required: true, message: "调拨数量不能为空", trigger: "blur" }
],
erpSynchronousStatus: [
{ required: true, message: "erp同步状态不能为空", trigger: "change" }
],
erpSynchronousQty: [
{ required: true, message: "erp同步数量不能为空", trigger: "blur" }
],
}
});
const { queryParams, form, rules } = toRefs(data);
/** 查询调拨子列表 */
const getList = async () => {
loading.value = true;
const res = await listAllocateOrderDetail(queryParams.value);
allocateOrderDetailList.value = res.rows;
total.value = res.total;
loading.value = false;
}
/** 取消按钮 */
const cancel = () => {
reset();
dialog.visible = false;
}
/** 表单重置 */
const reset = () => {
form.value = {...initFormData};
allocateOrderDetailFormRef.value?.resetFields();
}
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.value.pageNum = 1;
getList();
}
/** 重置按钮操作 */
const resetQuery = () => {
queryFormRef.value?.resetFields();
handleQuery();
}
/** 多选框选中数据 */
const handleSelectionChange = (selection: AllocateOrderDetailVO[]) => {
ids.value = selection.map(item => item.aoDId);
single.value = selection.length != 1;
multiple.value = !selection.length;
}
/** 新增按钮操作 */
const handleAdd = () => {
reset();
dialog.visible = true;
dialog.title = "添加调拨子";
}
/** 修改按钮操作 */
const handleUpdate = async (row?: AllocateOrderDetailVO) => {
reset();
const _aoDId = row?.aoDId || ids.value[0]
const res = await getAllocateOrderDetail(_aoDId);
Object.assign(form.value, res.data);
dialog.visible = true;
dialog.title = "修改调拨子";
}
/** 提交按钮 */
const submitForm = () => {
allocateOrderDetailFormRef.value?.validate(async (valid: boolean) => {
if (valid) {
buttonLoading.value = true;
if (form.value.aoDId) {
await updateAllocateOrderDetail(form.value).finally(() => buttonLoading.value = false);
} else {
await addAllocateOrderDetail(form.value).finally(() => buttonLoading.value = false);
}
proxy?.$modal.msgSuccess("操作成功");
dialog.visible = false;
await getList();
}
});
}
/** 删除按钮操作 */
const handleDelete = async (row?: AllocateOrderDetailVO) => {
const _aoDIds = row?.aoDId || ids.value;
await proxy?.$modal.confirm('是否确认删除调拨子编号为"' + _aoDIds + '"的数据项?').finally(() => loading.value = false);
await delAllocateOrderDetail(_aoDIds);
proxy?.$modal.msgSuccess("删除成功");
await getList();
}
/** 导出按钮操作 */
const handleExport = () => {
proxy?.download('system/allocateOrderDetail/export', {
...queryParams.value
}, `allocateOrderDetail_${new Date().getTime()}.xlsx`)
}
onMounted(() => {
getList();
});
</script>

@ -0,0 +1,406 @@
<template>
<div class="p-2">
<h4 class="form-header h4">调拨工单信息</h4>
<el-form ref="allocateOrderDetailFormRef" :model="form" :rules="rules" label-width="80px">
<el-row>
<el-col :span="8" :offset="2">
<el-form-item label="表主键" prop="aoId">
<el-input v-model="form1.aoId"/>
</el-form-item>
</el-col>
<el-col :span="8" :offset="2">
<el-form-item label="调拨单号" prop="allocateOrderCode">
<el-input v-model="form1.allocateOrderCode" />
</el-form-item>
</el-col>
<el-col :span="8" :offset="2">
<el-form-item label="物料大类" prop="materialCategories">
<el-input v-model="form1.materialCategories"/>
</el-form-item>
</el-col>
<el-col :span="8" :offset="2">
<el-form-item label="出库仓库" prop="planWarehouseId">
<el-input v-model="form1.planWarehouseId"/>
</el-form-item>
</el-col>
<el-col :span="8" :offset="2">
<el-form-item label="工单状态" prop="orderStatus">
<el-input v-model="form1.orderStatus"/>
</el-form-item>
</el-col>
<el-col :span="8" :offset="2">
<el-form-item label="入库仓库" prop="targetWarehouseId">
<el-input v-model="form1.targetWarehouseId"/>
</el-form-item>
</el-col>
<el-col :span="8" :offset="2">
<el-form-item label="审核人" prop="auditBy">
<el-input v-model="form1.auditBy"/>
</el-form-item>
</el-col>
<el-col :span="8" :offset="2">
<el-form-item label="审核时间" prop="auditTime">
<el-input v-model="form1.auditTime"/>
</el-form-item>
</el-col>
<el-col :span="8" :offset="2">
<el-form-item label="审核状态" prop="auditStatus">
<el-input v-model="form1.auditStatus"/>
</el-form-item>
</el-col>
<el-col :span="8" :offset="2">
<el-form-item label="审核意见" prop="auditComments">
<el-input v-model="form1.auditComments"/>
</el-form-item>
</el-col>
<el-col :span="8" :offset="2">
<el-form-item label="入库方式" prop="inMethod">
<el-input v-model="form1.inMethod"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<!-- <transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
<div v-show="showSearch" class="mb-[10px]">
<el-card shadow="hover">
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
<el-form-item label="调拨单号" prop="allocateCode">
<el-input v-model="queryParams.allocateCode" placeholder="请输入调拨单号" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="物料id" prop="materialId">
<el-input v-model="queryParams.materialId" placeholder="请输入物料id" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="调拨数量" prop="allocateOrderQty">
<el-input v-model="queryParams.allocateOrderQty" placeholder="请输入调拨数量" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="erp同步状态" prop="erpSynchronousStatus">
<el-select v-model="queryParams.erpSynchronousStatus" placeholder="请选择erp同步状态" clearable >
<el-option v-for="dict in erp_synchronous_status" :key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select>
</el-form-item>
<el-form-item label="erp同步数量" prop="erpSynchronousQty">
<el-input v-model="queryParams.erpSynchronousQty" placeholder="请输入erp同步数量" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery"></el-button>
<el-button icon="Refresh" @click="resetQuery"></el-button>
</el-form-item>
</el-form>
</el-card>
</div>
</transition> -->
<h4 class="form-header h4">调拨工单详细信息</h4>
<el-card shadow="never">
<template #header>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['system:allocateOrderDetail:add']"></el-button>
</el-col>
<el-col :span="1.5">
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['system:allocateOrderDetail:edit']"></el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['system:allocateOrderDetail:remove']"></el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="Download" @click="handleExport" v-hasPermi="['system:allocateOrderDetail:export']"></el-button>
</el-col>
<right-toolbar v-model:showSearch="showSearch" :columns="columns" :search="true" @queryTable="getList"></right-toolbar>
</el-row>
</template>
<el-table v-loading="loading" :data="allocateOrderDetailList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="调拨子表主键" align="center" prop="aoDId" v-if="columns[0].visible"/>
<el-table-column label="调拨单号" align="center" prop="allocateCode" v-if="columns[1].visible"/>
<el-table-column label="物料id" align="center" prop="materialId" v-if="columns[2].visible"/>
<el-table-column label="调拨数量" align="center" prop="allocateOrderQty" v-if="columns[3].visible"/>
<el-table-column label="erp同步状态" align="center" prop="erpSynchronousStatus" v-if="columns[4].visible"/>
<el-table-column label="erp同步数量" align="center" prop="erpSynchronousQty" v-if="columns[5].visible"/>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope">
<el-tooltip content="修改" placement="top">
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['system:allocateOrderDetail:edit']"></el-button>
</el-tooltip>
<el-tooltip content="删除" placement="top">
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['system:allocateOrderDetail:remove']"></el-button>
</el-tooltip>
</template>
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
</el-card>
<!-- 添加或修改调拨子对话框 -->
<el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
<el-form ref="allocateOrderDetailFormRef" :model="form" :rules="rules" label-width="80px">
<el-form-item label="调拨子表主键" prop="aoDId">
<el-input v-model="form.aoDId" placeholder="请输入调拨子表主键" />
</el-form-item>
<el-form-item label="调拨单号" prop="allocateCode">
<el-input v-model="form.allocateCode" placeholder="请输入调拨单号" />
</el-form-item>
<el-form-item label="物料id" prop="materialId">
<el-input v-model="form.materialId" placeholder="请输入物料id" />
</el-form-item>
<el-form-item label="调拨数量" prop="allocateOrderQty">
<el-input v-model="form.allocateOrderQty" placeholder="请输入调拨数量" />
</el-form-item>
<el-form-item label="erp同步状态" prop="erpSynchronousStatus">
<el-radio-group v-model="form.erpSynchronousStatus">
<el-radio
v-for="dict in erp_synchronous_status"
: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>
<template #footer>
<div class="dialog-footer">
<el-button :loading="buttonLoading" type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<script setup name="AllocateOrderDetail" lang="ts">
import { listAllocateOrderDetail, getAllocateOrderDetail, delAllocateOrderDetail, addAllocateOrderDetail, updateAllocateOrderDetail } from '@/api/wms/allocateOrderDetail';
import { AllocateOrderDetailVO, AllocateOrderDetailQuery, AllocateOrderDetailForm } from '@/api/wms/allocateOrderDetail/types';
import { getAllocateOrder } from '@/api/wms/allocateOrder';
import { AllocateOrderVO, AllocateOrderForm, AllocateOrderQuery } from '@/api/wms/allocateOrder/types';
import { useRoute } from 'vue-router';
const router = useRoute();
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const { erp_synchronous_status } = toRefs<any>(proxy?.useDict('erp_synchronous_status', 'wms_allocate_way'));
const allocateOrderDetailList = ref<AllocateOrderDetailVO[]>([]);
const buttonLoading = ref(false);
const loading = ref(true);
const showSearch = ref(true);
const ids = ref<Array<string | number>>([]);
const single = ref(true);
const multiple = ref(true);
const total = ref(0);
const queryFormRef = ref<ElFormInstance>();
const allocateOrderDetailFormRef = ref<ElFormInstance>();
const form1 = ref({});
const dialog = reactive<DialogOption>({
visible: false,
title: ''
});
//
const columns = ref<FieldOption[]>([
{ key: 0, label: `调拨子表主键`, visible: true },
{ key: 1, label: `调拨单号`, visible: true },
{ key: 2, label: `物料id`, visible: true },
{ key: 3, label: `调拨数量`, visible: true },
{ key: 4, label: `erp同步状态`, visible: true },
{ key: 5, label: `erp同步数量`, 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: `更新时间`, visible: true },
{ key: 11, label: `创建部门`, visible: true },
]);
// const initOrderFormData: AllocateOrderForm = {
// aoId: undefined,
// allocateOrderCode: undefined,
// materialCategories: undefined,
// planWarehouseId: undefined,
// orderStatus: undefined,
// targetWarehouseId: undefined,
// auditBy: undefined,
// auditTime: undefined,
// auditStatus: undefined,
// auditComments: undefined,
// createOut: undefined,
// outCode: undefined,
// createIn: undefined,
// inCode: undefined,
// inMethod: undefined,
// }
const initFormData: AllocateOrderDetailForm = {
aoDId: undefined,
allocateCode: undefined,
materialId: undefined,
allocateOrderQty: undefined,
erpSynchronousStatus: undefined,
erpSynchronousQty: undefined,
}
// const data1 = reactive<PageData<AllocateOrderForm, AllocateOrderQuery>>({
// form1 : {...initOrderFormData},
// rules: {
// aoDId: [
// { required: true, message: "", trigger: "blur" }
// ],
// allocateCode: [
// { required: true, message: "", trigger: "blur" }
// ],
// materialId: [
// { required: true, message: "id", trigger: "blur" }
// ],
// allocateOrderQty: [
// { required: true, message: "", trigger: "blur" }
// ],
// erpSynchronousStatus: [
// { required: true, message: "erp", trigger: "change" }
// ],
// erpSynchronousQty: [
// { required: true, message: "erp", trigger: "blur" }
// ],
// }
// });
const data = reactive<PageData<AllocateOrderDetailForm, AllocateOrderDetailQuery>>({
form: {...initFormData},
queryParams: {
pageNum: 1,
pageSize: 10,
aoDId: undefined,
allocateCode: undefined,
materialId: undefined,
allocateOrderQty: undefined,
erpSynchronousStatus: undefined,
erpSynchronousQty: undefined,
params: {
}
},
rules: {
aoDId: [
{ required: true, message: "调拨子表主键不能为空", trigger: "blur" }
],
allocateCode: [
{ required: true, message: "调拨单号不能为空", trigger: "blur" }
],
materialId: [
{ required: true, message: "物料id不能为空", trigger: "blur" }
],
allocateOrderQty: [
{ required: true, message: "调拨数量不能为空", trigger: "blur" }
],
erpSynchronousStatus: [
{ required: true, message: "erp同步状态不能为空", trigger: "change" }
],
erpSynchronousQty: [
{ required: true, message: "erp同步数量不能为空", trigger: "blur" }
],
}
});
const { queryParams, form, rules } = toRefs(data);
/** 查询调拨子列表 */
const getList = async () => {
loading.value = true;
const res = await listAllocateOrderDetail(queryParams.value);
allocateOrderDetailList.value = res.rows;
total.value = res.total;
loading.value = false;
}
const selectAllocateOrder = async (row?: AllocateOrderVO) => {
const _aoId = router.query.aoId
const res = await getAllocateOrder(_aoId);
console.log(res.data)
Object.assign(form1.value, res.data);
console.log(form1.value)
}
/** 取消按钮 */
const cancel = () => {
reset();
dialog.visible = false;
}
/** 表单重置 */
const reset = () => {
form.value = {...initFormData};
allocateOrderDetailFormRef.value?.resetFields();
}
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.value.pageNum = 1;
getList();
}
/** 重置按钮操作 */
const resetQuery = () => {
queryFormRef.value?.resetFields();
handleQuery();
}
/** 多选框选中数据 */
const handleSelectionChange = (selection: AllocateOrderDetailVO[]) => {
ids.value = selection.map(item => item.aoDId);
single.value = selection.length != 1;
multiple.value = !selection.length;
}
/** 新增按钮操作 */
const handleAdd = () => {
reset();
dialog.visible = true;
dialog.title = "添加调拨子";
}
/** 修改按钮操作 */
const handleUpdate = async (row?: AllocateOrderDetailVO) => {
reset();
const _aoDId = row?.aoDId || ids.value[0]
const res = await getAllocateOrderDetail(_aoDId);
Object.assign(form.value, res.data);
dialog.visible = true;
dialog.title = "修改调拨子";
}
/** 提交按钮 */
const submitForm = () => {
allocateOrderDetailFormRef.value?.validate(async (valid: boolean) => {
if (valid) {
buttonLoading.value = true;
if (form.value.aoDId) {
await updateAllocateOrderDetail(form.value).finally(() => buttonLoading.value = false);
} else {
await addAllocateOrderDetail(form.value).finally(() => buttonLoading.value = false);
}
proxy?.$modal.msgSuccess("操作成功");
dialog.visible = false;
await getList();
}
});
}
/** 删除按钮操作 */
const handleDelete = async (row?: AllocateOrderDetailVO) => {
const _aoDIds = row?.aoDId || ids.value;
await proxy?.$modal.confirm('是否确认删除调拨子编号为"' + _aoDIds + '"的数据项?').finally(() => loading.value = false);
await delAllocateOrderDetail(_aoDIds);
proxy?.$modal.msgSuccess("删除成功");
await getList();
}
/** 导出按钮操作 */
const handleExport = () => {
proxy?.download('system/allocateOrderDetail/export', {
...queryParams.value
}, `allocateOrderDetail_${new Date().getTime()}.xlsx`)
}
onMounted(() => {
selectAllocateOrder();
getList();
});
</script>

@ -71,6 +71,11 @@
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column label="是否退货" align="center" prop="returnFlag">
<template #default="scope">
<dict-tag :options="wms_return_flag" :value="scope.row.returnFlag"/>
</template>
</el-table-column>
<el-table-column label="erp同步状态" align="center" prop="erpSynchronousStatus" v-if="columns[10].visible">
<template #default="scope">
<dict-tag :options="sys_common_status" :value="scope.row.erpSynchronousStatus"/>
@ -85,6 +90,13 @@
<el-tooltip content="删除" placement="top">
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['wms:outstockRecord:remove']"></el-button>
</el-tooltip>
<el-tooltip content="退货" placement="top">
<el-button link type="primary" @click="handleReturn(scope.row)" v-hasPermi="['wms:outstockRecord:remove']">
<el-icon>
<DocumentAdd/>
</el-icon>
</el-button>
</el-tooltip>
</template>
</el-table-column>
</el-table>
@ -98,48 +110,48 @@
<!-- <el-input v-model="form.outstockRecordId" placeholder="请输入出库记录主键" />-->
<!-- </el-form-item>-->
<el-form-item label="出库单号" prop="outstockCode">
<el-input v-model="form.outstockCode" placeholder="请输入出库单号" />
<el-input v-model="form.outstockCode" placeholder="" :disabled="returnFlag"/>
</el-form-item>
<!-- <el-form-item label="出库单 主键" prop="outstockId">-->
<!-- <el-input v-model="form.outstockId" placeholder="请输入出库单 主键" />-->
<!-- </el-form-item>-->
<el-form-item label="批次码" prop="batchCode">
<el-input v-model="form.batchCode" placeholder="请输入批次码" />
<el-input v-model="form.batchCode" placeholder="" :disabled="returnFlag"/>
</el-form-item>
<el-form-item label="物料id" prop="materialId">
<el-input v-model="form.materialId" placeholder="请输入物料id" />
<el-input v-model="form.materialId" placeholder="" :disabled="returnFlag"/>
</el-form-item>
<el-form-item label="库位编码" prop="locationCode">
<el-input v-model="form.locationCode" placeholder="请输入库位编码" />
<el-input v-model="form.locationCode" placeholder="" :disabled="returnFlag"/>
</el-form-item>
<el-form-item label="出库数量" prop="outstockQty">
<el-input v-model="form.outstockQty" placeholder="请输入出库数量" />
<el-input v-model="form.outstockQty" placeholder="" :disabled="returnFlag"/>
</el-form-item>
<el-form-item label="回退数量" prop="returnQty">
<el-input v-model="form.returnQty" placeholder="请输入回退数量" v-if="returnFlag"/>
</el-form-item>
<el-form-item label="物料大类" prop="materialCategories">
<el-select v-model="form.materialCategories" placeholder="请选择物料大类">
<el-select v-model="form.materialCategories" placeholder="" :disabled="returnFlag">
<el-option
v-for="dict in material_mategories"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
disabled="returnFlag"></el-option>
</el-select>
</el-form-item>
<el-form-item label="出库人" prop="createBy">
<el-input v-model="form.createBy" placeholder="请输入出库人" />
<el-input v-model="form.createBy" placeholder="" :disabled="returnFlag"/>
</el-form-item>
<el-form-item label="erp同步状态" prop="erpSynchronousStatus">
<el-select v-model="form.erpSynchronousStatus" placeholder="请选择erp同步状态">
<el-select v-model="form.erpSynchronousStatus" placeholder="" :disabled="returnFlag">
<el-option
v-for="dict in sys_common_status"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
></el-option>
</el-select>
</el-form-item>
<el-form-item label="erp同步数量" prop="erpSynchronousQty">
<el-input v-model="form.erpSynchronousQty" placeholder="请输入erp同步数量" />
<el-input v-model="form.erpSynchronousQty" placeholder="" :disabled="returnFlag"/>
</el-form-item>
</el-form>
<template #footer>
@ -155,9 +167,10 @@
<script setup name="OutstockRecord" lang="ts">
import { listOutstockRecord, getOutstockRecord, delOutstockRecord, addOutstockRecord, updateOutstockRecord } from '@/api/wms/outstockRecord';
import { OutstockRecordVO, OutstockRecordQuery, OutstockRecordForm } from '@/api/wms/outstockRecord/types';
import { DocumentAdd } from '@element-plus/icons-vue';
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const { sys_common_status, mes_material_categories, material_mategories } = toRefs<any>(proxy?.useDict('sys_common_status', 'mes_material_categories','material_mategories'));
const { sys_common_status, wms_return_flag, material_mategories, } = toRefs<any>(proxy?.useDict('sys_common_status','material_mategories','wms_return_flag'));
const outstockRecordList = ref<OutstockRecordVO[]>([]);
const buttonLoading = ref(false);
@ -170,7 +183,7 @@ const total = ref(0);
const queryFormRef = ref<ElFormInstance>();
const outstockRecordFormRef = ref<ElFormInstance>();
const returnFlag = ref(false);
const dialog = reactive<DialogOption>({
visible: false,
title: ''
@ -239,6 +252,7 @@ const getList = async () => {
/** 取消按钮 */
const cancel = () => {
reset();
returnFlag.value = false;
dialog.visible = false;
}
@ -283,6 +297,16 @@ const handleUpdate = async (row?: OutstockRecordVO) => {
dialog.visible = true;
dialog.title = "修改出库记录";
}
/** 退库按钮操作 */
const handleReturn = async (row?: OutstockRecordVO) => {
returnFlag.value = true;
reset();
const _outstockRecordId = row?.outstockRecordId || ids.value[0]
const res = await getOutstockRecord(_outstockRecordId);
Object.assign(form.value, res.data);
dialog.visible = true;
dialog.title = "申请退库";
}
/** 提交按钮 */
const submitForm = () => {
@ -296,6 +320,7 @@ const submitForm = () => {
}
proxy?.$modal.msgSuccess("操作成功");
dialog.visible = false;
returnFlag.value = false;
await getList();
}
});
@ -310,6 +335,7 @@ const handleDelete = async (row?: OutstockRecordVO) => {
await getList();
}
/** 导出按钮操作 */
const handleExport = () => {
proxy?.download('wms/outstockRecord/export', {

@ -94,7 +94,7 @@
<el-table v-loading="loading" :data="returnOrderList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="表主键" align="center" prop="roId" v-if="columns[0].visible"/>
<el-table-column label="物料ID" align="center" prop="materialId" v-if="columns[6].visible"/>
<el-table-column label="物料ID" align="center" prop="materialCode" v-if="columns[6].visible"/>
<el-table-column label="物料大类" align="center" prop="materialCategories" v-if="columns[7].visible">
<template #default="scope">
<dict-tag :options="material_mategories" :value="scope.row.materialCategories"/>
@ -102,7 +102,7 @@
</el-table-column>
<el-table-column label="批次条码" align="center" prop="batchCode" v-if="columns[8].visible"/>
<el-table-column label="计划数量" align="center" prop="planAmount" v-if="columns[9].visible"/>
<el-table-column label="仓库ID" align="center" prop="warehouseId" v-if="columns[10].visible"/>
<el-table-column label="仓库" align="center" prop="warehouseCode" v-if="columns[10].visible"/>
<el-table-column label="计划退库库位" align="center" prop="planLocationCode" v-if="columns[11].visible"/>
<el-table-column label="退库工单状态" align="center" prop="orderStatus" v-if="columns[12].visible">
<template #default="scope">

Loading…
Cancel
Save