feat(mes): 优化杂项出库单表单,移除提交功能并调整字段逻辑

移除杂项出库单表单中的提交按钮,简化用户操作流程。调整表单字段逻辑,确保在编辑和查看模式下的字段状态一致,提升用户体验。
pull/871/MERGE
YunaiV 2026-03-30 23:05:39 +08:00
parent e954777753
commit 6e58d4d73f
5 changed files with 47 additions and 49 deletions

View File

@ -104,10 +104,7 @@
</el-button>
<el-button
v-if="
(isEditable && formData.id && formData.status === MesWmMiscIssueStatusEnum.PREPARE) ||
isSubmit
"
v-if="isEditable && formData.id && formData.status === MesWmMiscIssueStatusEnum.PREPARE"
@click="handleSubmit"
type="warning"
:disabled="formLoading"
@ -135,17 +132,15 @@ const emit = defineEmits(['success'])
const message = useMessage() //
const dialogVisible = ref(false) //
const formLoading = ref(false) //
const formType = ref<string>('create') // 表单的类型create / update / submit / finish / detail
const formType = ref<string>('create') // 表单的类型create / update / finish / detail
const isEditable = computed(() => ['create', 'update'].includes(formType.value)) //
const isSubmit = computed(() => formType.value === 'submit') //
const isFinish = computed(() => formType.value === 'finish') //
const isDetail = computed(() => ['detail', 'submit', 'finish'].includes(formType.value)) //
const isHeaderReadonly = computed(() => ['submit', 'detail', 'finish'].includes(formType.value)) //
const isDetail = computed(() => ['detail', 'finish'].includes(formType.value)) //
const isHeaderReadonly = computed(() => ['detail', 'finish'].includes(formType.value)) //
const dialogTitle = computed(() => {
const titles = {
create: '新增杂项出库单',
update: '编辑杂项出库单',
submit: '提交杂项出库单',
finish: '执行出库',
detail: '杂项出库单详情'
}
@ -183,7 +178,7 @@ const open = async (type: string, id?: number) => {
dialogVisible.value = true
formType.value = type
resetForm()
// ///
// //
if (id) {
formLoading.value = true
try {

View File

@ -48,11 +48,13 @@
v-loading="formLoading"
>
<el-row>
<!-- TODO @AIWmMaterialStockSelect/Users/yunai/Java/yudao-all-in-one/yudao-ui-admin-vue3/src/views/mes/wm/productsales -->
<!-- TODO @AI库存物资选择选择后物料批次号仓库位置就自动选上他们都是 disabled disabled -->
<el-col :span="8">
<el-form-item label="物料" prop="itemId">
<MdItemSelect v-model="formData.itemId" placeholder="请选择物料" class="!w-1/1" />
<el-form-item label="库存物资" prop="materialStockId">
<WmMaterialStockSelect
v-model="formData.materialStockId"
:item-id="formData.itemId"
@change="handleStockChange"
/>
</el-form-item>
</el-col>
<el-col :span="8">
@ -68,14 +70,14 @@
</el-col>
<el-col :span="8">
<el-form-item label="批次号" prop="batchCode">
<el-input v-model="formData.batchCode" placeholder="请输入批次号" />
<el-input v-model="formData.batchCode" placeholder="批次号" disabled />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="仓库" prop="warehouseId">
<WmWarehouseSelect v-model="formData.warehouseId" @change="handleWarehouseChange" />
<WmWarehouseSelect v-model="formData.warehouseId" disabled />
</el-form-item>
</el-col>
<el-col :span="8">
@ -83,13 +85,17 @@
<WmWarehouseLocationSelect
v-model="formData.locationId"
:warehouse-id="formData.warehouseId"
@change="handleLocationChange"
disabled
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="库位" prop="areaId">
<WmWarehouseAreaSelect v-model="formData.areaId" :location-id="formData.locationId" />
<WmWarehouseAreaSelect
v-model="formData.areaId"
:location-id="formData.locationId"
disabled
/>
</el-form-item>
</el-col>
</el-row>
@ -110,7 +116,8 @@
<script setup lang="ts">
import { WmMiscIssueLineApi, WmMiscIssueLineVO } from '@/api/mes/wm/miscissue/line'
import MdItemSelect from '@/views/mes/md/item/components/MdItemSelect.vue'
import { WmMaterialStockVO } from '@/api/mes/wm/materialstock'
import WmMaterialStockSelect from '@/views/mes/wm/materialstock/components/WmMaterialStockSelect.vue'
import WmWarehouseSelect from '@/views/mes/wm/warehouse/components/WmWarehouseSelect.vue'
import WmWarehouseLocationSelect from '@/views/mes/wm/warehouse/components/WmWarehouseLocationSelect.vue'
import WmWarehouseAreaSelect from '@/views/mes/wm/warehouse/components/WmWarehouseAreaSelect.vue'
@ -168,6 +175,7 @@ const lineFormType = ref('') // 行表单的类型
const formData = ref({
id: undefined,
issueId: undefined as number | undefined,
materialStockId: undefined as number | undefined,
itemId: undefined,
quantity: undefined,
batchCode: undefined,
@ -177,7 +185,7 @@ const formData = ref({
remark: undefined
})
const formRules = reactive({
itemId: [{ required: true, message: '物料不能为空', trigger: 'change' }],
materialStockId: [{ required: true, message: '请选择库存物资', trigger: 'change' }],
quantity: [
{ required: true, message: '出库数量不能为空', trigger: 'blur' },
{ type: 'number', min: 0.01, message: '出库数量必须大于等于0.01', trigger: 'blur' }
@ -185,15 +193,21 @@ const formRules = reactive({
})
const formRef = ref() // Ref
/** 仓库变化时,清空库区和库位 */
const handleWarehouseChange = () => {
formData.value.locationId = undefined
formData.value.areaId = undefined
}
/** 库区变化时,清空库位 */
const handleLocationChange = () => {
formData.value.areaId = undefined
/** 库存物资选择变化时,自动回填物料、批次号、仓库位置 */
const handleStockChange = (stock: WmMaterialStockVO | undefined) => {
if (stock) {
formData.value.itemId = stock.itemId
formData.value.batchCode = stock.batchCode
formData.value.warehouseId = stock.warehouseId
formData.value.locationId = stock.locationId
formData.value.areaId = stock.areaId
} else {
formData.value.itemId = undefined
formData.value.batchCode = undefined
formData.value.warehouseId = undefined
formData.value.locationId = undefined
formData.value.areaId = undefined
}
}
/** 打开表单弹窗 */
@ -237,6 +251,7 @@ const resetForm = () => {
formData.value = {
id: undefined,
issueId: undefined,
materialStockId: undefined,
itemId: undefined,
quantity: undefined,
batchCode: undefined,

View File

@ -149,16 +149,6 @@
>
编辑
</el-button>
<!-- TODO @AI提交合并到编辑因为打开后就能看到提交 -->
<el-button
link
type="warning"
@click="openForm('submit', scope.row.id)"
v-hasPermi="['mes:wm-misc-issue:update']"
v-if="scope.row.status === MesWmMiscIssueStatusEnum.PREPARE"
>
提交
</el-button>
<el-button
link
type="danger"

View File

@ -108,8 +108,8 @@ const message = useMessage() // 消息弹窗
const dialogVisible = ref(false) //
const formLoading = ref(false) //
const formType = ref<string>('create') // 表单的类型create / update / submit / stock / finish / detail
const isEditable = computed(() => ['create', 'update', 'submit'].includes(formType.value)) //
const formType = ref<string>('create') // 表单的类型create / update / stock / finish / detail
const isEditable = computed(() => ['create', 'update'].includes(formType.value)) //
const isStock = computed(() => formType.value === 'stock') //
const isFinish = computed(() => formType.value === 'finish') //
const isDetail = computed(() => ['detail', 'finish'].includes(formType.value)) //
@ -120,7 +120,6 @@ const dialogTitle = computed(() => {
const titles = {
create: '新增领料出库单',
update: '编辑领料出库单',
submit: '提交领料出库单',
stock: '执行拣货',
finish: '完成领料出库',
detail: '领料出库单详情'
@ -158,7 +157,7 @@ const open = async (type: string, id?: number) => {
dialogVisible.value = true
formType.value = type
resetForm()
// ////
// ///
if (id) {
formLoading.value = true
try {
@ -171,7 +170,7 @@ const open = async (type: string, id?: number) => {
originalFormData.value = JSON.stringify(formData.value)
}
/** 提交表单create/update/submit 模式的保存按钮) */
/** 保存表单create/update 模式的保存按钮) */
const submitForm = async () => {
//
await formRef.value.validate()

View File

@ -127,8 +127,8 @@ const message = useMessage() // 消息弹窗
const dialogVisible = ref(false) //
const formLoading = ref(false) //
const formType = ref<string>('create') // 表单的类型create / update / submit / stock / finish / detail
const isEditable = computed(() => ['create', 'update', 'submit'].includes(formType.value)) //
const formType = ref<string>('create') // 表单的类型create / update / stock / finish / detail
const isEditable = computed(() => ['create', 'update'].includes(formType.value)) //
const isStock = computed(() => formType.value === 'stock') //
const isFinish = computed(() => formType.value === 'finish') // 退
const isHeaderReadonly = computed(() =>
@ -138,7 +138,6 @@ const dialogTitle = computed(() => {
const titles = {
create: '新增生产退料单',
update: '编辑生产退料单',
submit: '提交生产退料单',
stock: '入库上架',
finish: '执行退料',
detail: '生产退料单详情'
@ -177,7 +176,7 @@ const open = async (type: string, id?: number) => {
dialogVisible.value = true
formType.value = type
resetForm()
// ////
// ///
if (id) {
formLoading.value = true
try {
@ -190,7 +189,7 @@ const open = async (type: string, id?: number) => {
originalFormData.value = JSON.stringify(formData.value)
}
/** 保存表单create/update/submit 模式的保存按钮) */
/** 保存表单create/update 模式的保存按钮) */
const submitForm = async () => {
//
await formRef.value.validate()