feat(select): 增加状态过滤功能,优化选择器提示信息

在 DvCheckPlanSelect 和相关组件中新增状态过滤功能,允许用户根据计划状态筛选可选项。同时,优化了提示信息的拼装逻辑,提升用户体验。
pull/871/MERGE
YunaiV 2026-04-08 01:15:03 +08:00
parent 500d20155b
commit 606a9ed6e8
19 changed files with 153 additions and 37 deletions

View File

@ -51,6 +51,7 @@
ref="dialogRef" ref="dialogRef"
:multiple="false" :multiple="false"
:type="type" :type="type"
:status="status"
@selected="handleSelected" @selected="handleSelected"
/> />
</template> </template>
@ -74,6 +75,7 @@ const props = withDefaults(
clearable?: boolean // clearable?: boolean //
placeholder?: string // placeholder?: string //
type?: number // type?: number //
status?: number //
}>(), }>(),
{ {
disabled: false, disabled: false,

View File

@ -12,8 +12,8 @@
<Dialog title="点检方案选择" v-model="dialogVisible" width="70%"> <Dialog title="点检方案选择" v-model="dialogVisible" width="70%">
<ContentWrap> <ContentWrap>
<el-alert <el-alert
v-if="type != null" v-if="type != null || status != null"
:title="`仅展示【${getDictLabel(DICT_TYPE.MES_DV_SUBJECT_TYPE, type)}】类型的计划`" :title="alertTitle"
type="info" type="info"
:closable="false" :closable="false"
show-icon show-icon
@ -143,12 +143,25 @@ const props = withDefaults(
defineProps<{ defineProps<{
multiple?: boolean // true checkboxfalse radio multiple?: boolean // true checkboxfalse radio
type?: number // type?: number //
status?: number // = 1
}>(), }>(),
{ {
multiple: true multiple: true
} }
) )
/** 拼装 el-alert 提示文字 */
const alertTitle = computed(() => {
const parts: string[] = []
if (props.type != null) {
parts.push(`类型【${getDictLabel(DICT_TYPE.MES_DV_SUBJECT_TYPE, props.type)}`)
}
if (props.status != null) {
parts.push(`状态【${getDictLabel(DICT_TYPE.MES_DV_CHECK_PLAN_STATUS, props.status)}`)
}
return `仅展示${parts.join('且')}的方案`
})
const message = useMessage() const message = useMessage()
const emit = defineEmits<{ const emit = defineEmits<{
selected: [rows: DvCheckPlanVO[]] selected: [rows: DvCheckPlanVO[]]
@ -204,7 +217,8 @@ const queryParams = reactive({
pageSize: 10, // pageSize: 10, //
code: undefined as string | undefined, code: undefined as string | undefined,
name: undefined as string | undefined, name: undefined as string | undefined,
type: undefined as number | undefined type: undefined as number | undefined,
status: undefined as number | undefined
}) })
/** 查询列表 */ /** 查询列表 */
@ -285,6 +299,7 @@ const open = async (selectedIds?: number[]) => {
queryParams.code = undefined queryParams.code = undefined
queryParams.name = undefined queryParams.name = undefined
queryParams.type = props.type queryParams.type = props.type
queryParams.status = props.status
queryParams.pageNo = 1 queryParams.pageNo = 1
// //
selectedRows.value = [] selectedRows.value = []

View File

@ -16,7 +16,11 @@
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="点检计划" prop="planId"> <el-form-item label="点检计划" prop="planId">
<DvCheckPlanSelect v-model="formData.planId" :type="MesDvSubjectTypeEnum.CHECK" /> <DvCheckPlanSelect
v-model="formData.planId"
:type="MesDvSubjectTypeEnum.CHECK"
:status="MesDvCheckPlanStatusEnum.ENABLED"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
@ -73,7 +77,11 @@ import DvMachinerySelect from '@/views/mes/dv/machinery/components/DvMachinerySe
import DvCheckPlanSelect from '@/views/mes/dv/checkplan/components/DvCheckPlanSelect.vue' import DvCheckPlanSelect from '@/views/mes/dv/checkplan/components/DvCheckPlanSelect.vue'
import UserSelectV2 from '@/views/system/user/components/UserSelectV2.vue' import UserSelectV2 from '@/views/system/user/components/UserSelectV2.vue'
import CheckRecordLineList from './CheckRecordLineList.vue' import CheckRecordLineList from './CheckRecordLineList.vue'
import { MesDvCheckRecordStatusEnum, MesDvSubjectTypeEnum } from '@/views/mes/utils/constants' import {
MesDvCheckRecordStatusEnum,
MesDvSubjectTypeEnum,
MesDvCheckPlanStatusEnum
} from '@/views/mes/utils/constants'
defineOptions({ name: 'CheckRecordForm' }) defineOptions({ name: 'CheckRecordForm' })
const emit = defineEmits(['success']) const emit = defineEmits(['success'])

View File

@ -16,7 +16,11 @@
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="保养计划" prop="planId"> <el-form-item label="保养计划" prop="planId">
<DvCheckPlanSelect v-model="formData.planId" :type="MesDvSubjectTypeEnum.MAINTENANCE" /> <DvCheckPlanSelect
v-model="formData.planId"
:type="MesDvSubjectTypeEnum.MAINTENANCE"
:status="MesDvCheckPlanStatusEnum.ENABLED"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
@ -73,7 +77,11 @@ import DvCheckPlanSelect from '@/views/mes/dv/checkplan/components/DvCheckPlanSe
import UserSelectV2 from '@/views/system/user/components/UserSelectV2.vue' import UserSelectV2 from '@/views/system/user/components/UserSelectV2.vue'
import MaintenRecordLineList from './MaintenRecordLineList.vue' import MaintenRecordLineList from './MaintenRecordLineList.vue'
import { useUserStore } from '@/store/modules/user' import { useUserStore } from '@/store/modules/user'
import { MesDvMaintenRecordStatusEnum, MesDvSubjectTypeEnum } from '@/views/mes/utils/constants' import {
MesDvMaintenRecordStatusEnum,
MesDvSubjectTypeEnum,
MesDvCheckPlanStatusEnum
} from '@/views/mes/utils/constants'
defineOptions({ name: 'MaintenRecordForm' }) defineOptions({ name: 'MaintenRecordForm' })
const emit = defineEmits(['success']) const emit = defineEmits(['success'])

View File

@ -41,7 +41,12 @@
</el-tooltip> </el-tooltip>
</div> </div>
<!-- 弹窗必须放在 div 外部否则弹窗内的点击事件会冒泡到 div 触发 handleClick --> <!-- 弹窗必须放在 div 外部否则弹窗内的点击事件会冒泡到 div 触发 handleClick -->
<MdWorkstationSelectDialog ref="dialogRef" :multiple="false" @selected="handleSelected" /> <MdWorkstationSelectDialog
ref="dialogRef"
:multiple="false"
:process-id="processId"
@selected="handleSelected"
/>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
@ -58,6 +63,7 @@ defineOptions({ name: 'MdWorkstationSelect', inheritAttrs: false })
const props = withDefaults( const props = withDefaults(
defineProps<{ defineProps<{
modelValue?: number // ID modelValue?: number // ID
processId?: number // Dialog
disabled?: boolean // disabled?: boolean //
clearable?: boolean // clearable?: boolean //
placeholder?: string // placeholder?: string //

View File

@ -110,6 +110,7 @@ defineOptions({ name: 'MdWorkstationSelectDialog' })
const props = withDefaults( const props = withDefaults(
defineProps<{ defineProps<{
multiple?: boolean // true checkboxfalse radio multiple?: boolean // true checkboxfalse radio
processId?: number //
}>(), }>(),
{ {
multiple: true multiple: true
@ -222,7 +223,7 @@ const handleQuery = () => {
/** 重置查询条件 */ /** 重置查询条件 */
const resetQuery = () => { const resetQuery = () => {
queryParams.code = undefined queryParams.code = undefined
queryParams.processId = undefined queryParams.processId = props.processId //
queryParams.workshopId = undefined queryParams.workshopId = undefined
queryParams.status = CommonStatusEnum.ENABLE queryParams.status = CommonStatusEnum.ENABLE
handleQuery() handleQuery()
@ -251,9 +252,9 @@ const confirmSelect = () => {
/** 打开弹窗,可传入已选 ID 用于预选高亮 */ /** 打开弹窗,可传入已选 ID 用于预选高亮 */
const open = async (selectedIds?: number[]) => { const open = async (selectedIds?: number[]) => {
dialogVisible.value = true dialogVisible.value = true
// + // +
queryParams.code = undefined queryParams.code = undefined
queryParams.processId = undefined queryParams.processId = props.processId // processId
queryParams.workshopId = undefined queryParams.workshopId = undefined
queryParams.status = CommonStatusEnum.ENABLE queryParams.status = CommonStatusEnum.ENABLE
queryParams.pageNo = 1 queryParams.pageNo = 1
@ -262,7 +263,6 @@ const open = async (selectedIds?: number[]) => {
selectedRadioId.value = undefined selectedRadioId.value = undefined
currentRadioRow.value = undefined currentRadioRow.value = undefined
preSelectedIds.value = selectedIds ?? [] preSelectedIds.value = selectedIds ?? []
//
await nextTick() await nextTick()
tableRef.value?.clearSelection() tableRef.value?.clearSelection()
await getList() await getList()

View File

@ -60,7 +60,12 @@
<ProTaskSelect <ProTaskSelect
v-model="formData.taskId" v-model="formData.taskId"
:workOrderId="formData.workOrderId" :workOrderId="formData.workOrderId"
:statuses="[MesProTaskStatusEnum.NORMAL, MesProTaskStatusEnum.START, MesProTaskStatusEnum.PAUSE]" :workstationId="formData.workstationId"
:statuses="[
MesProTaskStatusEnum.NORMAL,
MesProTaskStatusEnum.START,
MesProTaskStatusEnum.PAUSE
]"
:disabled="isHeaderReadonly || !formData.workOrderId" :disabled="isHeaderReadonly || !formData.workOrderId"
placeholder="请选择任务" placeholder="请选择任务"
@change="handleTaskChange" @change="handleTaskChange"

View File

@ -44,7 +44,12 @@
</el-tooltip> </el-tooltip>
</div> </div>
<!-- 弹窗必须放在 div 外部否则弹窗内的点击事件会冒泡到 div 触发 handleClick --> <!-- 弹窗必须放在 div 外部否则弹窗内的点击事件会冒泡到 div 触发 handleClick -->
<ProTaskSelectDialog ref="dialogRef" :multiple="false" :statuses="statuses" @selected="handleSelected" /> <ProTaskSelectDialog
ref="dialogRef"
:multiple="false"
:statuses="statuses"
@selected="handleSelected"
/>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
@ -62,6 +67,7 @@ const props = withDefaults(
defineProps<{ defineProps<{
modelValue?: number // ID modelValue?: number // ID
workOrderId?: number // workOrderId?: number //
workstationId?: number //
statuses?: number[] // IN statuses?: number[] // IN
disabled?: boolean // disabled?: boolean //
clearable?: boolean // clearable?: boolean //
@ -143,7 +149,7 @@ const handleClick = (e: MouseEvent) => {
} }
// ID // ID
const selectedIds = props.modelValue != null ? [props.modelValue] : [] const selectedIds = props.modelValue != null ? [props.modelValue] : []
dialogRef.value.open(selectedIds, props.workOrderId) dialogRef.value.open(selectedIds, props.workOrderId, props.workstationId)
} }
/** 弹窗选中回调 */ /** 弹窗选中回调 */

View File

@ -278,7 +278,7 @@ const resetQuery = () => {
queryParams.name = undefined queryParams.name = undefined
queryParams.processId = undefined queryParams.processId = undefined
queryParams.workOrderId = undefined queryParams.workOrderId = undefined
queryParams.workstationId = undefined queryParams.workstationId = externalWorkstationId.value //
queryParams.statuses = props.statuses // props queryParams.statuses = props.statuses // props
handleQuery() handleQuery()
} }
@ -303,15 +303,18 @@ const confirmSelect = () => {
// ==================== ==================== // ==================== ====================
/** 打开弹窗,可传入已选 ID 用于预选高亮workOrderId 用于默认过滤工单 */ const externalWorkstationId = ref<number | undefined>() // workstationId resetQuery
const open = async (selectedIds?: number[], workOrderId?: number) => {
/** 打开弹窗,可传入已选 ID 用于预选高亮workOrderId / workstationId 用于默认过滤 */
const open = async (selectedIds?: number[], workOrderId?: number, workstationId?: number) => {
dialogVisible.value = true dialogVisible.value = true
externalWorkstationId.value = workstationId
// + // +
queryParams.code = undefined queryParams.code = undefined
queryParams.name = undefined queryParams.name = undefined
queryParams.processId = undefined queryParams.processId = undefined
queryParams.workOrderId = workOrderId ?? undefined // workOrderId queryParams.workOrderId = workOrderId ?? undefined // workOrderId
queryParams.workstationId = undefined queryParams.workstationId = workstationId ?? undefined // workstationId
queryParams.statuses = props.statuses // props queryParams.statuses = props.statuses // props
queryParams.pageNo = 1 queryParams.pageNo = 1
// //

View File

@ -44,6 +44,7 @@
ref="dialogRef" ref="dialogRef"
:multiple="false" :multiple="false"
:status="status" :status="status"
:type="type"
@selected="handleSelected" @selected="handleSelected"
/> />
</template> </template>
@ -65,7 +66,8 @@ const props = withDefaults(
disabled?: boolean // disabled?: boolean //
clearable?: boolean // clearable?: boolean //
placeholder?: string // placeholder?: string //
status?: number // Dialog status?: number //
type?: number //
}>(), }>(),
{ {
disabled: false, disabled: false,

View File

@ -12,6 +12,14 @@
<Dialog title="生产工单选择" v-model="dialogVisible" width="80%"> <Dialog title="生产工单选择" v-model="dialogVisible" width="80%">
<!-- 搜索 --> <!-- 搜索 -->
<ContentWrap> <ContentWrap>
<el-alert
v-if="type != null"
:title="`仅展示【${getDictLabel(DICT_TYPE.MES_PRO_WORK_ORDER_TYPE, type)}】类型的工单`"
type="info"
:closable="false"
show-icon
class="!mb-10px"
/>
<el-form :inline="true" :model="queryParams" label-width="80px"> <el-form :inline="true" :model="queryParams" label-width="80px">
<el-form-item label="工单编码"> <el-form-item label="工单编码">
<el-input <el-input
@ -142,7 +150,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { dateFormatter2 } from '@/utils/formatTime' import { dateFormatter2 } from '@/utils/formatTime'
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict' import { DICT_TYPE, getDictLabel, getIntDictOptions } from '@/utils/dict'
import { ProWorkOrderApi, ProWorkOrderVO } from '@/api/mes/pro/workorder' import { ProWorkOrderApi, ProWorkOrderVO } from '@/api/mes/pro/workorder'
import MdItemSelect from '@/views/mes/md/item/components/MdItemSelect.vue' import MdItemSelect from '@/views/mes/md/item/components/MdItemSelect.vue'
import MdClientSelect from '@/views/mes/md/client/components/MdClientSelect.vue' import MdClientSelect from '@/views/mes/md/client/components/MdClientSelect.vue'
@ -153,6 +161,7 @@ const props = withDefaults(
defineProps<{ defineProps<{
multiple?: boolean // true checkboxfalse radio multiple?: boolean // true checkboxfalse radio
status?: number // status?: number //
type?: number //
}>(), }>(),
{ {
multiple: true multiple: true
@ -216,7 +225,8 @@ const queryParams = reactive({
name: undefined as string | undefined, // name: undefined as string | undefined, //
productId: undefined as number | undefined, // productId: undefined as number | undefined, //
clientId: undefined as number | undefined, // clientId: undefined as number | undefined, //
status: undefined as number | undefined // status: undefined as number | undefined, //
type: undefined as number | undefined //
}) })
/** 查询工单列表 */ /** 查询工单列表 */
@ -270,6 +280,7 @@ const resetQuery = () => {
queryParams.productId = undefined queryParams.productId = undefined
queryParams.clientId = undefined queryParams.clientId = undefined
queryParams.status = props.status queryParams.status = props.status
queryParams.type = props.type
handleQuery() handleQuery()
} }
@ -302,6 +313,7 @@ const open = async (selectedIds?: number[]) => {
queryParams.productId = undefined queryParams.productId = undefined
queryParams.clientId = undefined queryParams.clientId = undefined
queryParams.status = props.status queryParams.status = props.status
queryParams.type = props.type
queryParams.pageNo = 1 queryParams.pageNo = 1
// //
selectedRows.value = [] selectedRows.value = []

View File

@ -88,7 +88,12 @@
<ProTaskSelect <ProTaskSelect
v-model="formData.taskId" v-model="formData.taskId"
:workOrderId="formData.workOrderId" :workOrderId="formData.workOrderId"
:statuses="[MesProTaskStatusEnum.NORMAL, MesProTaskStatusEnum.START, MesProTaskStatusEnum.PAUSE]" :workstationId="formData.workstationId"
:statuses="[
MesProTaskStatusEnum.NORMAL,
MesProTaskStatusEnum.START,
MesProTaskStatusEnum.PAUSE
]"
placeholder="请选择生产任务" placeholder="请选择生产任务"
class="!w-1/1" class="!w-1/1"
:disabled="isFromPendingTask || (!isFromPendingTask && !formData.workOrderId)" :disabled="isFromPendingTask || (!isFromPendingTask && !formData.workOrderId)"

View File

@ -147,7 +147,12 @@
label="装箱单" label="装箱单"
prop="bizId" prop="bizId"
> >
<WmPackageSelect v-model="formData.bizId" @change="handleBizSelect" class="!w-1/1" /> <WmPackageSelect
v-model="formData.bizId"
:childable-only="true"
@change="handleBizSelect"
class="!w-1/1"
/>
</el-form-item> </el-form-item>
<el-form-item <el-form-item
v-else-if="formData.bizType === BarcodeBizTypeEnum.STOCK" v-else-if="formData.bizType === BarcodeBizTypeEnum.STOCK"

View File

@ -59,6 +59,8 @@ const props = withDefaults(
defineProps<{ defineProps<{
modelValue?: number // ID modelValue?: number // ID
itemId?: number // ID itemId?: number // ID
clientId?: number // ID
vendorId?: number // ID
disabled?: boolean // disabled?: boolean //
clearable?: boolean // clearable?: boolean //
placeholder?: string // placeholder?: string //
@ -139,7 +141,7 @@ const handleClick = (e: MouseEvent) => {
} }
// ID itemId // ID itemId
const selectedIds = props.modelValue != null ? [props.modelValue] : [] const selectedIds = props.modelValue != null ? [props.modelValue] : []
dialogRef.value.open(selectedIds, props.itemId) dialogRef.value.open(selectedIds, props.itemId, props.clientId, props.vendorId)
} }
/** 弹窗选中回调 */ /** 弹窗选中回调 */

View File

@ -12,6 +12,14 @@
<template> <template>
<Dialog title="批次选择" v-model="dialogVisible" width="75%"> <Dialog title="批次选择" v-model="dialogVisible" width="75%">
<ContentWrap> <ContentWrap>
<el-alert
v-if="externalClientId != null || externalVendorId != null"
:title="alertTitle"
type="info"
:closable="false"
show-icon
class="!mb-10px"
/>
<el-form :inline="true" :model="queryParams" label-width="100px"> <el-form :inline="true" :model="queryParams" label-width="100px">
<el-form-item label="批次编号"> <el-form-item label="批次编号">
<el-input <el-input
@ -387,8 +395,8 @@ const handleQuery = () => {
const resetQuery = () => { const resetQuery = () => {
queryParams.code = undefined queryParams.code = undefined
queryParams.itemId = undefined queryParams.itemId = undefined
queryParams.vendorId = undefined queryParams.vendorId = externalVendorId.value
queryParams.clientId = undefined queryParams.clientId = externalClientId.value
queryParams.workOrderId = undefined queryParams.workOrderId = undefined
queryParams.taskId = undefined queryParams.taskId = undefined
queryParams.workstationId = undefined queryParams.workstationId = undefined
@ -422,20 +430,38 @@ const confirmSelect = () => {
dialogVisible.value = false dialogVisible.value = false
} }
// ==================== ==================== const externalClientId = ref<number | undefined>() // clientId
const externalVendorId = ref<number | undefined>() // vendorId
/** 拼装 el-alert 提示文字 */
const alertTitle = computed(() => {
const parts: string[] = []
if (externalClientId.value != null) parts.push('客户')
if (externalVendorId.value != null) parts.push('供应商')
return `已按${parts.join('/')}预过滤`
})
/** /**
* 打开弹窗 * 打开弹窗
* @param selectedIds 已选 ID用于预选高亮 * @param selectedIds 已选 ID用于预选高亮
* @param itemId 默认过滤的物料 ID由外层 WmBatchSelect itemId prop 传入 * @param itemId 默认过滤的物料 ID
* @param clientId 默认过滤的客户 ID
* @param vendorId 默认过滤的供应商 ID
*/ */
const open = async (selectedIds?: number[], itemId?: number) => { const open = async (
selectedIds?: number[],
itemId?: number,
clientId?: number,
vendorId?: number
) => {
dialogVisible.value = true dialogVisible.value = true
// + externalClientId.value = clientId
externalVendorId.value = vendorId
// +
queryParams.code = undefined queryParams.code = undefined
queryParams.itemId = itemId ?? undefined // itemId queryParams.itemId = itemId ?? undefined
queryParams.vendorId = undefined queryParams.vendorId = vendorId ?? undefined
queryParams.clientId = undefined queryParams.clientId = clientId ?? undefined
queryParams.workOrderId = undefined queryParams.workOrderId = undefined
queryParams.taskId = undefined queryParams.taskId = undefined
queryParams.workstationId = undefined queryParams.workstationId = undefined
@ -454,7 +480,6 @@ const open = async (selectedIds?: number[], itemId?: number) => {
selectedRadioId.value = undefined selectedRadioId.value = undefined
currentRadioRow.value = undefined currentRadioRow.value = undefined
preSelectedIds.value = selectedIds ?? [] preSelectedIds.value = selectedIds ?? []
//
await nextTick() await nextTick()
tableRef.value?.clearSelection() tableRef.value?.clearSelection()
await getList() await getList()

View File

@ -88,7 +88,11 @@
<!-- 非新建模式展示行项目信息退货物料 --> <!-- 非新建模式展示行项目信息退货物料 -->
<template v-if="formData.id"> <template v-if="formData.id">
<el-divider content-position="center">物料信息</el-divider> <el-divider content-position="center">物料信息</el-divider>
<ReturnSalesLineList :return-id="formData.id" :form-type="formType" /> <ReturnSalesLineList
:return-id="formData.id"
:form-type="formType"
:client-id="formData.clientId"
/>
</template> </template>
<template #footer> <template #footer>
<el-button v-if="isEditable" @click="submitForm" type="primary" :disabled="formLoading"> <el-button v-if="isEditable" @click="submitForm" type="primary" :disabled="formLoading">

View File

@ -103,6 +103,7 @@
<WmBatchSelect <WmBatchSelect
v-model="formData.batchId" v-model="formData.batchId"
:item-id="formData.itemId" :item-id="formData.itemId"
:client-id="props.clientId"
placeholder="请选择批次" placeholder="请选择批次"
class="!w-1/1" class="!w-1/1"
/> />
@ -149,6 +150,7 @@ defineOptions({ name: 'ReturnSalesLineList' })
const props = defineProps<{ const props = defineProps<{
returnId: number returnId: number
formType: string formType: string
clientId?: number // ID
}>() }>()
const { t } = useI18n() // const { t } = useI18n() //

View File

@ -100,7 +100,11 @@
<!-- 非新建模式展示行项目信息退货物料 --> <!-- 非新建模式展示行项目信息退货物料 -->
<template v-if="formData.id"> <template v-if="formData.id">
<el-divider content-position="center">物料信息</el-divider> <el-divider content-position="center">物料信息</el-divider>
<ReturnVendorLineList :return-id="formData.id" :form-type="formType" /> <ReturnVendorLineList
:return-id="formData.id"
:form-type="formType"
:vendor-id="formData.vendorId"
/>
</template> </template>
<template #footer> <template #footer>
<el-button v-if="isEditable" @click="submitForm" type="primary" :disabled="formLoading"> <el-button v-if="isEditable" @click="submitForm" type="primary" :disabled="formLoading">

View File

@ -98,6 +98,7 @@
<WmBatchSelect <WmBatchSelect
v-model="formData.batchId" v-model="formData.batchId"
:item-id="formData.itemId" :item-id="formData.itemId"
:vendor-id="props.vendorId"
@change="handleBatchChange" @change="handleBatchChange"
/> />
</el-form-item> </el-form-item>
@ -137,6 +138,7 @@ defineOptions({ name: 'ReturnVendorLineList' })
const props = defineProps<{ const props = defineProps<{
returnId: number returnId: number
formType: string formType: string
vendorId?: number // ID
}>() }>()
const { t } = useI18n() // const { t } = useI18n() //