style:模具管理-任务计划-启用列修改switch

main
黄伟杰 2 days ago
parent d4b2427547
commit c7febab9db

@ -48,5 +48,10 @@ export const TaskManagementApi = {
exportTaskManagement: async (params: any) => {
return await request.download({ url: `/mes/mold-task-management/export-excel`, params })
},
updateTaskManagementEnabled: async (id: number | string, enabled: string) => {
const data = { id, enabled }
return await request.put({ url: `/mes/mold-task-management/update-enabled`, data })
}
}

@ -188,8 +188,9 @@
>
<template #default="scope">
<el-switch
:model-value="scope.row.enabled === true || scope.row.enabled === 'true'"
:model-value="isTaskEnabled(scope.row)"
:before-change="() => handleBeforeEnabledChange(scope.row)"
@click.stop
@change="(val) => handleEnabledChange(scope.row, val)"
/>
</template>
@ -258,7 +259,6 @@
<script setup lang="ts">
import { ElMessageBox } from 'element-plus'
import { DICT_TYPE } from '@/utils/dict'
import { dateFormatter, dateFormatter2 } from '@/utils/formatTime'
import download from '@/utils/download'
import { TaskManagementApi, TaskManagementVO } from '@/api/mes/taskManagement'
@ -403,7 +403,12 @@ const openForm = (type: string, row?: TaskManagementVO) => {
formRef.value.open(type, row)
}
const isTaskEnabled = (row: TaskManagementVO) => row.enabled === true || (row.enabled as any) === 'true'
const isTaskEnabled = (row: TaskManagementVO) => {
const value = (row as any)?.enabled
if (typeof value === 'boolean') return value
const text = String(value ?? '').toLowerCase().trim()
return text === 'true' || text === '1' || text === 'yes'
}
const handleDelete = async (id?: number) => {
if (!id) return
@ -457,12 +462,13 @@ const handleBeforeEnabledChange = async (row: TaskManagementVO) => {
return false
}
const handleEnabledChange = async (row: TaskManagementVO, value: boolean) => {
const handleEnabledChange = async (row: TaskManagementVO, value: string | number | boolean) => {
if (!row.id) return
const enabled = value === true || value === 'true' || value === '1' || value === 1
const oldEnabled = row.enabled
row.enabled = value
row.enabled = enabled
try {
await TaskManagementApi.updateTaskManagementEnabled(String(row.id), value ? 'true' : 'false')
await TaskManagementApi.updateTaskManagementEnabled(String(row.id), enabled ? 'true' : 'false')
message.success(t('EquipmentManagement.TaskManagement.updateEnabledSuccess'))
} catch {
row.enabled = oldEnabled

@ -43,7 +43,7 @@
class="!w-320px"
/>
</el-form-item>
<!-- <el-form-item :label="t('EquipmentManagement.TaskManagement.cronExpression')" prop="cronExpression">
<el-form-item :label="t('EquipmentManagement.TaskManagement.cronExpression')" prop="cronExpression">
<template #label>
<Tooltip
title="Cron 表达式"
@ -51,7 +51,7 @@
/>
</template>
<crontab v-model="formData.cronExpression" />
</el-form-item> -->
</el-form-item>
<el-form-item :label="t('EquipmentManagement.TaskManagement.operableUsers')" prop="operableUsers">
<el-select
v-model="formData.operableUsers"

@ -88,10 +88,15 @@
<el-table-column :label="t('EquipmentManagement.TaskManagement.projectForm')" align="center" prop="projectFormName" min-width="140" sortable />
<!-- <el-table-column :label="t('EquipmentManagement.TaskManagement.startDate')" align="center" prop="startDate" :formatter="dateFormatter2" width="120" sortable /> -->
<el-table-column :label="t('EquipmentManagement.TaskManagement.planEndDate')" align="center" prop="endDate" :formatter="dateFormatter2" width="150" sortable />
<!-- <el-table-column :label="t('EquipmentManagement.TaskManagement.cronExpression')" align="center" prop="cronExpression" min-width="180" /> -->
<el-table-column :label="t('EquipmentManagement.TaskManagement.enabled')" align="center" prop="enabled" width="90">
<el-table-column :label="t('EquipmentManagement.TaskManagement.cronExpression')" align="center" prop="cronExpression" min-width="180" />
<el-table-column :label="t('EquipmentManagement.TaskManagement.enabled')" align="center" prop="enabled" width="110">
<template #default="scope">
<dict-tag :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="scope.row.enabled" />
<el-switch
:model-value="isTaskEnabled(scope.row)"
:before-change="() => handleBeforeEnabledChange(scope.row)"
@click.stop
@change="(val) => handleEnabledChange(scope.row, val)"
/>
</template>
</el-table-column>
<el-table-column :label="t('EquipmentManagement.TaskManagement.creatorName')" align="center" prop="creatorName" width="120" sortable />
@ -107,7 +112,8 @@
<el-button
link
type="success"
@click="handleCreateTicket(scope.row.id)"
:disabled="!isTaskEnabled(scope.row)"
@click="handleCreateTicket(scope.row)"
:loading="ticketLoadingId === scope.row.id"
>
{{ t('EquipmentManagement.TaskManagement.createWorkOrder') }}
@ -137,7 +143,7 @@
</template>
<script setup lang="ts">
import { DICT_TYPE } from '@/utils/dict'
import { ElMessageBox } from 'element-plus'
import { dateFormatter, dateFormatter2 } from '@/utils/formatTime'
import download from '@/utils/download'
import { TaskManagementApi, TaskManagementVO } from '@/api/mold/taskManagement'
@ -253,6 +259,13 @@ const openForm = (type: string, row?: TaskManagementVO) => {
formRef.value.open(type, row)
}
const isTaskEnabled = (row: TaskManagementVO) => {
const value = (row as any)?.enabled
if (typeof value === 'boolean') return value
const text = String(value ?? '').toLowerCase().trim()
return text === 'true' || text === '1' || text === 'yes'
}
const handleDelete = async (id?: number) => {
if (!id) return
try {
@ -264,11 +277,16 @@ const handleDelete = async (id?: number) => {
}
const ticketLoadingId = ref<number | undefined>(undefined)
const handleCreateTicket = async (id?: number) => {
if (!id) return
ticketLoadingId.value = id
const handleCreateTicket = async (row?: TaskManagementVO) => {
if (!row?.id) return
if (!isTaskEnabled(row)) {
message.warning(t('EquipmentManagement.TaskManagement.createTicketDisabledTip'))
return
}
ticketLoadingId.value = row.id
try {
await TaskManagementApi.createTaskManagementTicket(id)
await TaskManagementApi.createTaskManagementTicket(row.id)
message.success(t('EquipmentManagement.TaskManagement.createTicketSuccess'))
} catch {
message.error(t('EquipmentManagement.TaskManagement.createTicketFail'))
@ -277,6 +295,34 @@ const handleCreateTicket = async (id?: number) => {
}
}
const handleBeforeEnabledChange = async (row: TaskManagementVO) => {
const isEnabled = isTaskEnabled(row)
if (isEnabled) return true
const cronExpression = (row as any)?.cronExpression
if (typeof cronExpression === 'string' && cronExpression.trim()) return true
await ElMessageBox.alert(t('EquipmentManagement.TaskManagement.selectCronBeforeEnable'), t('EquipmentManagement.TaskManagement.cronAlertTitle'), {
type: 'warning',
confirmButtonText: t('EquipmentManagement.TaskManagement.cronAlertConfirm'),
closeOnClickModal: false,
closeOnPressEscape: false
})
return false
}
const handleEnabledChange = async (row: TaskManagementVO, value: string | number | boolean) => {
if (!row.id) return
const enabled = value === true || value === 'true' || value === '1' || value === 1
const oldEnabled = row.enabled
row.enabled = enabled
try {
await TaskManagementApi.updateTaskManagementEnabled(String(row.id), enabled ? 'true' : 'false')
message.success(t('EquipmentManagement.TaskManagement.updateEnabledSuccess'))
} catch {
row.enabled = oldEnabled
message.error(t('EquipmentManagement.TaskManagement.updateEnabledFail'))
}
}
const handleExport = async () => {
try {
await message.exportConfirm()

Loading…
Cancel
Save