✨ feat(mes): 添加任务状态列表支持,优化任务查询功能
parent
0d13f32654
commit
500d20155b
|
|
@ -11,6 +11,14 @@
|
|||
<template>
|
||||
<Dialog title="点检方案选择" v-model="dialogVisible" width="70%">
|
||||
<ContentWrap>
|
||||
<el-alert
|
||||
v-if="type != null"
|
||||
:title="`仅展示【${getDictLabel(DICT_TYPE.MES_DV_SUBJECT_TYPE, type)}】类型的计划`"
|
||||
type="info"
|
||||
:closable="false"
|
||||
show-icon
|
||||
class="!mb-10px"
|
||||
/>
|
||||
<el-form :inline="true" :model="queryParams" label-width="85px">
|
||||
<el-form-item label="计划编号">
|
||||
<el-input
|
||||
|
|
@ -125,7 +133,7 @@
|
|||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { DICT_TYPE } from '@/utils/dict'
|
||||
import { DICT_TYPE, getDictLabel } from '@/utils/dict'
|
||||
import { dateFormatter2 } from '@/utils/formatTime'
|
||||
import { DvCheckPlanApi, DvCheckPlanVO } from '@/api/mes/dv/checkplan'
|
||||
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="点检计划" prop="planId">
|
||||
<DvCheckPlanSelect v-model="formData.planId" />
|
||||
<DvCheckPlanSelect v-model="formData.planId" :type="MesDvSubjectTypeEnum.CHECK" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
|
|
@ -73,7 +73,7 @@ import DvMachinerySelect from '@/views/mes/dv/machinery/components/DvMachinerySe
|
|||
import DvCheckPlanSelect from '@/views/mes/dv/checkplan/components/DvCheckPlanSelect.vue'
|
||||
import UserSelectV2 from '@/views/system/user/components/UserSelectV2.vue'
|
||||
import CheckRecordLineList from './CheckRecordLineList.vue'
|
||||
import { MesDvCheckRecordStatusEnum } from '@/views/mes/utils/constants'
|
||||
import { MesDvCheckRecordStatusEnum, MesDvSubjectTypeEnum } from '@/views/mes/utils/constants'
|
||||
|
||||
defineOptions({ name: 'CheckRecordForm' })
|
||||
const emit = defineEmits(['success'])
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="保养计划" prop="planId">
|
||||
<DvCheckPlanSelect v-model="formData.planId" />
|
||||
<DvCheckPlanSelect v-model="formData.planId" :type="MesDvSubjectTypeEnum.MAINTENANCE" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
|
|
@ -73,7 +73,7 @@ import DvCheckPlanSelect from '@/views/mes/dv/checkplan/components/DvCheckPlanSe
|
|||
import UserSelectV2 from '@/views/system/user/components/UserSelectV2.vue'
|
||||
import MaintenRecordLineList from './MaintenRecordLineList.vue'
|
||||
import { useUserStore } from '@/store/modules/user'
|
||||
import { MesDvMaintenRecordStatusEnum } from '@/views/mes/utils/constants'
|
||||
import { MesDvMaintenRecordStatusEnum, MesDvSubjectTypeEnum } from '@/views/mes/utils/constants'
|
||||
|
||||
defineOptions({ name: 'MaintenRecordForm' })
|
||||
const emit = defineEmits(['success'])
|
||||
|
|
|
|||
|
|
@ -60,6 +60,7 @@
|
|||
<ProTaskSelect
|
||||
v-model="formData.taskId"
|
||||
:workOrderId="formData.workOrderId"
|
||||
:statuses="[MesProTaskStatusEnum.NORMAL, MesProTaskStatusEnum.START, MesProTaskStatusEnum.PAUSE]"
|
||||
:disabled="isHeaderReadonly || !formData.workOrderId"
|
||||
placeholder="请选择任务"
|
||||
@change="handleTaskChange"
|
||||
|
|
@ -298,6 +299,7 @@ import { useUserStore } from '@/store/modules/user'
|
|||
import {
|
||||
MesAutoCodeRuleCode,
|
||||
MesProFeedbackStatusEnum,
|
||||
MesProTaskStatusEnum,
|
||||
MesProWorkOrderStatusEnum
|
||||
} from '@/views/mes/utils/constants'
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
Props:
|
||||
modelValue — 绑定的任务 ID(v-model)
|
||||
workOrderId — 可选,打开弹窗时默认按此工单过滤
|
||||
statuses — 可选,任务状态列表(IN 查询),仅展示这些状态的任务
|
||||
disabled — 是否禁用
|
||||
clearable — 是否允许清空(鼠标悬停时显示清除图标)
|
||||
placeholder — 占位文字
|
||||
|
|
@ -43,7 +44,7 @@
|
|||
</el-tooltip>
|
||||
</div>
|
||||
<!-- 弹窗必须放在 div 外部,否则弹窗内的点击事件会冒泡到 div 触发 handleClick -->
|
||||
<ProTaskSelectDialog ref="dialogRef" :multiple="false" @selected="handleSelected" />
|
||||
<ProTaskSelectDialog ref="dialogRef" :multiple="false" :statuses="statuses" @selected="handleSelected" />
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
|
|
@ -61,6 +62,7 @@ const props = withDefaults(
|
|||
defineProps<{
|
||||
modelValue?: number // 绑定的任务 ID
|
||||
workOrderId?: number // 可选,打开弹窗时默认按此工单过滤
|
||||
statuses?: number[] // 可选,任务状态列表(IN 查询)
|
||||
disabled?: boolean // 是否禁用
|
||||
clearable?: boolean // 是否允许清空
|
||||
placeholder?: string // 占位文字
|
||||
|
|
|
|||
|
|
@ -9,10 +9,20 @@
|
|||
selected(rows: ProTaskVO[]) — 确认选择后触发,单选时数组长度为 1
|
||||
Expose:
|
||||
open(selectedIds?: number[], workOrderId?: number) — 打开弹窗,可传入已选 ID 和工单 ID 用于预选/过滤
|
||||
|
||||
支持通过 statuses prop 传入状态列表,后端 IN 查询,只展示指定状态的任务
|
||||
-->
|
||||
<template>
|
||||
<Dialog title="生产任务选择" v-model="dialogVisible" width="80%">
|
||||
<ContentWrap>
|
||||
<el-alert
|
||||
v-if="statuses?.length"
|
||||
:title="`仅展示状态为【${statuses!.map((s) => getDictLabel(DICT_TYPE.MES_PRO_TASK_STATUS, s)).join('、')}】的任务`"
|
||||
type="info"
|
||||
:closable="false"
|
||||
show-icon
|
||||
class="!mb-10px"
|
||||
/>
|
||||
<el-form :inline="true" :model="queryParams" label-width="100px">
|
||||
<el-form-item label="所属工序">
|
||||
<ProProcessSelect
|
||||
|
|
@ -139,7 +149,7 @@
|
|||
|
||||
<script setup lang="ts">
|
||||
import { formatDate } from '@/utils/formatTime'
|
||||
import { DICT_TYPE } from '@/utils/dict'
|
||||
import { DICT_TYPE, getDictLabel } from '@/utils/dict'
|
||||
import { ProTaskApi, ProTaskVO } from '@/api/mes/pro/task'
|
||||
import ProProcessSelect from '@/views/mes/pro/process/components/ProProcessSelect.vue'
|
||||
import ProWorkOrderSelect from '@/views/mes/pro/workorder/components/ProWorkOrderSelect.vue'
|
||||
|
|
@ -150,6 +160,7 @@ defineOptions({ name: 'ProTaskSelectDialog' })
|
|||
const props = withDefaults(
|
||||
defineProps<{
|
||||
multiple?: boolean // true 多选(checkbox),false 单选(radio)
|
||||
statuses?: number[] // 可选:任务状态列表(IN 查询),仅展示这些状态的任务
|
||||
}>(),
|
||||
{
|
||||
multiple: true
|
||||
|
|
@ -213,7 +224,8 @@ const queryParams = reactive({
|
|||
name: undefined as string | undefined, // 任务名称
|
||||
processId: undefined as number | undefined, // 所属工序
|
||||
workOrderId: undefined as number | undefined, // 生产工单
|
||||
workstationId: undefined as number | undefined // 工作站
|
||||
workstationId: undefined as number | undefined, // 工作站
|
||||
statuses: undefined as number[] | undefined // 任务状态列表(IN 查询)
|
||||
})
|
||||
|
||||
/** 查询任务列表 */
|
||||
|
|
@ -267,6 +279,7 @@ const resetQuery = () => {
|
|||
queryParams.processId = undefined
|
||||
queryParams.workOrderId = undefined
|
||||
queryParams.workstationId = undefined
|
||||
queryParams.statuses = props.statuses // 保持 props 传入的状态过滤
|
||||
handleQuery()
|
||||
}
|
||||
|
||||
|
|
@ -299,6 +312,7 @@ const open = async (selectedIds?: number[], workOrderId?: number) => {
|
|||
queryParams.processId = undefined
|
||||
queryParams.workOrderId = workOrderId ?? undefined // 传入 workOrderId 则默认按工单过滤
|
||||
queryParams.workstationId = undefined
|
||||
queryParams.statuses = props.statuses // 固定状态过滤条件(从 props 传入)
|
||||
queryParams.pageNo = 1
|
||||
// 清空上一次的选中状态
|
||||
selectedRows.value = []
|
||||
|
|
|
|||
|
|
@ -88,6 +88,7 @@
|
|||
<ProTaskSelect
|
||||
v-model="formData.taskId"
|
||||
:workOrderId="formData.workOrderId"
|
||||
:statuses="[MesProTaskStatusEnum.NORMAL, MesProTaskStatusEnum.START, MesProTaskStatusEnum.PAUSE]"
|
||||
placeholder="请选择生产任务"
|
||||
class="!w-1/1"
|
||||
:disabled="isFromPendingTask || (!isFromPendingTask && !formData.workOrderId)"
|
||||
|
|
@ -301,6 +302,7 @@ import {
|
|||
MesQcTypeEnum,
|
||||
MesQcStatusEnum,
|
||||
MesAutoCodeRuleCode,
|
||||
MesProTaskStatusEnum,
|
||||
MesProWorkOrderStatusEnum
|
||||
} from '@/views/mes/utils/constants'
|
||||
|
||||
|
|
|
|||
|
|
@ -96,6 +96,12 @@ export const MesProTaskStatusEnum = {
|
|||
CANCELED: 4 // 已取消
|
||||
}
|
||||
|
||||
/** MES 点检保养项目类型枚举(对应字典 mes_dv_subject_type) */
|
||||
export const MesDvSubjectTypeEnum = {
|
||||
CHECK: 1, // 点检
|
||||
MAINTENANCE: 2 // 保养
|
||||
}
|
||||
|
||||
/** MES 点检保养方案状态枚举 */
|
||||
export const MesDvCheckPlanStatusEnum = {
|
||||
PREPARE: 0, // 草稿
|
||||
|
|
|
|||
|
|
@ -11,6 +11,14 @@
|
|||
<template>
|
||||
<Dialog title="装箱单选择" v-model="dialogVisible" width="80%">
|
||||
<ContentWrap>
|
||||
<el-alert
|
||||
v-if="childableOnly"
|
||||
title="仅展示可作为子箱的装箱单(无父箱 + 已完成)"
|
||||
type="info"
|
||||
:closable="false"
|
||||
show-icon
|
||||
class="!mb-10px"
|
||||
/>
|
||||
<el-form :inline="true" :model="queryParams" label-width="100px">
|
||||
<el-form-item label="装箱单编号">
|
||||
<el-input
|
||||
|
|
|
|||
|
|
@ -12,6 +12,14 @@
|
|||
<template>
|
||||
<Dialog title="发货通知单选择" v-model="dialogVisible" width="70%">
|
||||
<ContentWrap>
|
||||
<el-alert
|
||||
v-if="status != null"
|
||||
:title="`仅展示状态为【${getDictLabel(DICT_TYPE.MES_WM_SALES_NOTICE_STATUS, status)}】的发货通知单`"
|
||||
type="info"
|
||||
:closable="false"
|
||||
show-icon
|
||||
class="!mb-10px"
|
||||
/>
|
||||
<el-form :inline="true" :model="queryParams" label-width="100px">
|
||||
<el-form-item label="通知单编号">
|
||||
<el-input
|
||||
|
|
@ -134,7 +142,7 @@
|
|||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
|
||||
import { DICT_TYPE, getIntDictOptions, getDictLabel } from '@/utils/dict'
|
||||
import { formatDate } from '@/utils/formatTime'
|
||||
import { WmSalesNoticeApi, WmSalesNoticeVO } from '@/api/mes/wm/salesnotice'
|
||||
import MdClientSelect from '@/views/mes/md/client/components/MdClientSelect.vue'
|
||||
|
|
|
|||
Loading…
Reference in New Issue