style:模具管理-任务配置修改接口

main
黄伟杰 3 weeks ago
parent 93b604b501
commit 7b23889297

@ -0,0 +1,47 @@
import request from '@/config/axios'
export interface TaskManagementVO {
id?: number
name?: string
taskType?: number
deviceList?: string
projectForm?: string
startDate?: string
endDate?: string
cronExpression?: string
operableUsers?: string
enabled?: boolean
execFrequency?: string
frequencyValue?: string
time?: string
validMinutes?: number
creator?: string
createTime?: string
updateTime?: string
}
export const TaskManagementApi = {
getTaskManagementPage: async (params: any) => {
return await request.get({ url: `/mes/mold-task-management/page`, params })
},
createTaskManagementTicket: async (id: number | string) => {
return await request.post({ url: `/mes/mold-task-management/createTicket`, params: { id } })
},
createTaskManagement: async (data: TaskManagementVO) => {
return await request.post({ url: `/mes/mold-task-management/create`, data })
},
updateTaskManagement: async (data: TaskManagementVO) => {
return await request.put({ url: `/mes/mold-task-management/update`, data })
},
deleteTaskManagement: async (ids: string) => {
return await request.delete({ url: `/mes/mold-task-management/delete?ids=` + ids })
},
exportTaskManagement: async (params: any) => {
return await request.download({ url: `/mes/mold-task-management/export-excel`, params })
}
}

@ -1,12 +1,6 @@
<template> <template>
<Dialog :title="dialogTitle" v-model="dialogVisible"> <Dialog :title="dialogTitle" v-model="dialogVisible">
<el-form <el-form ref="formRef" :model="formData" :rules="formRules" label-width="110px" v-loading="formLoading">
ref="formRef"
:model="formData"
:rules="formRules"
label-width="110px"
v-loading="formLoading"
>
<el-form-item label="名称" prop="name"> <el-form-item label="名称" prop="name">
<el-input v-model="formData.name" placeholder="请输入名称" /> <el-input v-model="formData.name" placeholder="请输入名称" />
</el-form-item> </el-form-item>
@ -17,57 +11,37 @@
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="设备列表" prop="deviceList"> <el-form-item label="设备列表" prop="deviceList">
<el-select <el-select v-model="formData.deviceList" multiple filterable clearable placeholder="请选择设备列表" class="!w-full">
v-model="formData.deviceList" <el-option
multiple v-for="item in deviceOptions" :key="String(item.id)" :label="item.deviceName"
filterable :value="String(item.id)" />
clearable
placeholder="请选择设备列表"
class="!w-full"
>
<el-option v-for="item in deviceOptions" :key="String(item.id)" :label="item.deviceName" :value="String(item.id)" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="项目表单" prop="projectForm"> <el-form-item label="项目表单" prop="projectForm">
<el-select <el-select v-model="formData.projectForm" multiple filterable clearable placeholder="请选择项目表单" class="!w-full">
v-model="formData.projectForm" <el-option
multiple v-for="item in planOptions" :key="String(item.id)" :label="item.planName"
filterable :value="String(item.id)" />
clearable
placeholder="请选择项目表单"
class="!w-full"
>
<el-option v-for="item in planOptions" :key="String(item.id)" :label="item.planName" :value="String(item.id)" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="起止日期" prop="dateRange"> <el-form-item label="起止日期" prop="dateRange">
<el-date-picker <el-date-picker
v-model="formData.dateRange" v-model="formData.dateRange" value-format="YYYY-MM-DD" type="daterange" start-placeholder="开始日期"
value-format="YYYY-MM-DD" end-placeholder="结束日期" class="!w-320px" />
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
class="!w-320px"
/>
</el-form-item> </el-form-item>
<el-form-item label="cron 表达式" prop="cronExpression"> <el-form-item label="cron 表达式" prop="cronExpression">
<crontab v-model="formData.cronExpression" /> <crontab v-model="formData.cronExpression" />
</el-form-item> </el-form-item>
<el-form-item label="可操作人" prop="operableUsers"> <el-form-item label="可操作人" prop="operableUsers">
<el-select <el-select v-model="formData.operableUsers" multiple filterable clearable placeholder="请选择可操作人" class="!w-full">
v-model="formData.operableUsers"
multiple
filterable
clearable
placeholder="请选择可操作人"
class="!w-full"
>
<el-option v-for="item in users" :key="String(item.id)" :label="item.nickname" :value="String(item.id)" /> <el-option v-for="item in users" :key="String(item.id)" :label="item.nickname" :value="String(item.id)" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="是否启用" prop="enabled"> <el-form-item label="是否启用" prop="enabled">
<el-radio-group v-model="formData.enabled"> <el-radio-group v-model="formData.enabled">
<el-radio v-for="dict in getBoolDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)" :key="String(dict.value)" :label="dict.value"> <el-radio
v-for="dict in getBoolDictOptions(DICT_TYPE.INFRA_BOOLEAN_STRING)" :key="String(dict.value)"
:label="dict.value">
{{ dict.label }} {{ dict.label }}
</el-radio> </el-radio>
</el-radio-group> </el-radio-group>
@ -82,9 +56,9 @@
<script setup lang="ts"> <script setup lang="ts">
import { DICT_TYPE, getBoolDictOptions } from '@/utils/dict' import { DICT_TYPE, getBoolDictOptions } from '@/utils/dict'
import { TaskManagementApi, TaskManagementVO } from '@/api/mes/taskManagement' import { TaskManagementApi, TaskManagementVO } from '@/api/mold/taskManagement'
import { DeviceLedgerApi } from '@/api/mes/deviceledger' import { MoldBrandApi } from '@/api/erp/mold'
import { PlanMaintenanceApi } from '@/api/mes/planmaintenance' import { PlanMaintenanceApi } from '@/api/mold/planmaintenance'
import { getSimpleUserList, UserVO } from '@/api/system/user' import { getSimpleUserList, UserVO } from '@/api/system/user'
defineOptions({ name: 'MoldTaskConfigurationForm' }) defineOptions({ name: 'MoldTaskConfigurationForm' })
@ -128,8 +102,8 @@ const toCommaSeparatedIds = (value: any): string | undefined => {
const ensureOptionsLoaded = async () => { const ensureOptionsLoaded = async () => {
const [deviceRes, planRes, userRes] = await Promise.all([ const [deviceRes, planRes, userRes] = await Promise.all([
DeviceLedgerApi.getDeviceLedgerPage({}), MoldBrandApi.getMoldPage({}),
PlanMaintenanceApi.getPlanMaintenancePage({ pageNo: 1, pageSize: 100 }), PlanMaintenanceApi.getPlanMaintenancePage({}),
getSimpleUserList() getSimpleUserList()
]) ])
deviceOptions.value = (deviceRes?.list ?? []) as DeviceOption[] deviceOptions.value = (deviceRes?.list ?? []) as DeviceOption[]
@ -152,7 +126,9 @@ const formData = ref({
const formRules = reactive({ const formRules = reactive({
name: [{ required: true, message: '名称不能为空', trigger: 'blur' }], name: [{ required: true, message: '名称不能为空', trigger: 'blur' }],
taskType: [{ required: true, message: '类型不能为空', trigger: 'change' }], taskType: [{ required: true, message: '类型不能为空', trigger: 'change' }],
enabled: [{ required: true, message: '是否启用不能为空', trigger: 'change' }] enabled: [{ required: true, message: '是否启用不能为空', trigger: 'change' }],
deviceList: [{ required: true, message: '设备列表不能为空', trigger: 'change' }],
projectForm: [{ required: true, message: '项目表单不能为空', trigger: 'change' }],
}) })
const resetForm = () => { const resetForm = () => {
@ -242,4 +218,3 @@ const submitForm = async () => {
} }
} }
</script> </script>

@ -22,13 +22,16 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="项目表单" prop="projectForm"> <el-form-item label="项目表单" prop="projectForm">
<el-input <el-select
v-model="queryParams.projectForm" v-model="queryParams.projectForm"
placeholder="请输入项目表单" multiple
filterable
clearable clearable
@keyup.enter="handleQuery" placeholder="请选择项目表单"
class="!w-240px" class="!w-240px"
/> >
<el-option v-for="item in planOptions" :key="String(item.id)" :label="item.planName" :value="String(item.id)" />
</el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button @click="handleQuery"> <el-button @click="handleQuery">
@ -71,7 +74,7 @@
<span v-else>-</span> <span v-else>-</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="项目表单" align="center" prop="projectForm" min-width="140" /> <el-table-column label="项目表单" align="center" prop="projectFormName" min-width="140" />
<el-table-column label="开始日期" align="center" prop="startDate" :formatter="dateFormatter2" width="120" /> <el-table-column label="开始日期" align="center" prop="startDate" :formatter="dateFormatter2" width="120" />
<el-table-column label="结束日期" align="center" prop="endDate" :formatter="dateFormatter2" width="120" /> <el-table-column label="结束日期" align="center" prop="endDate" :formatter="dateFormatter2" width="120" />
<el-table-column label="cron 表达式" align="center" prop="cronExpression" min-width="180" /> <el-table-column label="cron 表达式" align="center" prop="cronExpression" min-width="180" />
@ -123,7 +126,8 @@
import { DICT_TYPE } from '@/utils/dict' import { DICT_TYPE } from '@/utils/dict'
import { dateFormatter, dateFormatter2 } from '@/utils/formatTime' import { dateFormatter, dateFormatter2 } from '@/utils/formatTime'
import download from '@/utils/download' import download from '@/utils/download'
import { TaskManagementApi, TaskManagementVO } from '@/api/mes/taskManagement' import { TaskManagementApi, TaskManagementVO } from '@/api/mold/taskManagement'
import { PlanMaintenanceApi } from '@/api/mold/planmaintenance'
import TaskConfigurationForm from './TaskConfigurationForm.vue' import TaskConfigurationForm from './TaskConfigurationForm.vue'
defineOptions({ name: 'MoldTaskConfiguration' }) defineOptions({ name: 'MoldTaskConfiguration' })
@ -142,19 +146,52 @@ const total = ref(0)
const exportLoading = ref(false) const exportLoading = ref(false)
const selectedIds = ref<number[]>([]) const selectedIds = ref<number[]>([])
type PlanOption = {
id: number | string
planName: string
}
const planOptions = ref<PlanOption[]>([])
const queryParams = reactive({ const queryParams = reactive({
pageNo: 1, pageNo: 1,
pageSize: 10, pageSize: 10,
name: undefined as string | undefined, name: undefined as string | undefined,
taskType: undefined as number | undefined, taskType: undefined as number | undefined,
projectForm: undefined as string | undefined projectForm: [] as string[]
}) })
const queryFormRef = ref() const queryFormRef = ref()
const parseIdsValue = (value: any): string[] => {
if (!value) return []
if (Array.isArray(value)) return value.map((v) => String(v).trim()).filter(Boolean)
return String(value)
.split(',')
.map((v) => v.trim())
.filter(Boolean)
}
const toCommaSeparatedIds = (value: any): string | undefined => {
const ids = parseIdsValue(value)
return ids.length ? ids.join(',') : undefined
}
const ensurePlanOptionsLoaded = async () => {
const planRes = await PlanMaintenanceApi.getPlanMaintenancePage({ pageNo: 1, pageSize: 100 })
planOptions.value = (planRes?.list ?? []) as PlanOption[]
}
const buildQueryParams = () => {
return {
...queryParams,
projectForm: toCommaSeparatedIds(queryParams.projectForm)
}
}
const getList = async () => { const getList = async () => {
loading.value = true loading.value = true
try { try {
const data = await TaskManagementApi.getTaskManagementPage(queryParams) const data = await TaskManagementApi.getTaskManagementPage(buildQueryParams())
list.value = data.list list.value = data.list
total.value = data.total total.value = data.total
} finally { } finally {
@ -211,7 +248,7 @@ const handleExport = async () => {
try { try {
await message.exportConfirm() await message.exportConfirm()
exportLoading.value = true exportLoading.value = true
const params: Record<string, any> = { ...queryParams } const params: Record<string, any> = buildQueryParams()
if (selectedIds.value.length > 0) { if (selectedIds.value.length > 0) {
params.ids = selectedIds.value.join(',') params.ids = selectedIds.value.join(',')
} }
@ -223,8 +260,11 @@ const handleExport = async () => {
} }
} }
onMounted(() => { onMounted(async () => {
try {
await ensurePlanOptionsLoaded()
} finally {
getList() getList()
}
}) })
</script> </script>

Loading…
Cancel
Save