✨ feat(mes): 优化杂项出库单表单,移除提交功能并调整字段逻辑
移除杂项出库单表单中的提交按钮,简化用户操作流程。调整表单字段逻辑,确保在编辑和查看模式下的字段状态一致,提升用户体验。pull/871/MERGE
parent
e954777753
commit
6e58d4d73f
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -48,11 +48,13 @@
|
|||
v-loading="formLoading"
|
||||
>
|
||||
<el-row>
|
||||
<!-- TODO @AI:WmMaterialStockSelect,/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,
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
Loading…
Reference in New Issue