|
|
|
|
@ -31,13 +31,12 @@
|
|
|
|
|
<el-form-item label="项目表单" prop="projectForm">
|
|
|
|
|
<el-select
|
|
|
|
|
v-model="formData.projectForm"
|
|
|
|
|
multiple
|
|
|
|
|
filterable
|
|
|
|
|
clearable
|
|
|
|
|
placeholder="请选择项目表单"
|
|
|
|
|
class="!w-full"
|
|
|
|
|
>
|
|
|
|
|
<el-option v-for="item in planOptions" :key="String(item.id)" :label="item.planName" :value="String(item.id)" />
|
|
|
|
|
<el-option v-for="item in planOptions" :key="String(item.id)" :label="item.planName" :value="Number(item.id)" />
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="起止日期" prop="dateRange">
|
|
|
|
|
@ -129,7 +128,7 @@ const toCommaSeparatedIds = (value: any): string | undefined => {
|
|
|
|
|
const ensureOptionsLoaded = async () => {
|
|
|
|
|
const [deviceRes, planRes, userRes] = await Promise.all([
|
|
|
|
|
DeviceLedgerApi.getDeviceLedgerPage({}),
|
|
|
|
|
PlanMaintenanceApi.getPlanMaintenancePage({}),
|
|
|
|
|
PlanMaintenanceApi.getPlanMaintenancePage({ pageNo: 1, pageSize: 100 }),
|
|
|
|
|
getSimpleUserList()
|
|
|
|
|
])
|
|
|
|
|
deviceOptions.value = (deviceRes?.list ?? []) as DeviceOption[]
|
|
|
|
|
@ -142,7 +141,7 @@ const formData = ref({
|
|
|
|
|
name: undefined as string | undefined,
|
|
|
|
|
taskType: undefined as number | undefined,
|
|
|
|
|
deviceList: [] as string[],
|
|
|
|
|
projectForm: [] as string[],
|
|
|
|
|
projectForm: undefined as number | undefined,
|
|
|
|
|
dateRange: [] as string[],
|
|
|
|
|
cronExpression: undefined as string | undefined,
|
|
|
|
|
operableUsers: [] as string[],
|
|
|
|
|
@ -155,6 +154,7 @@ const formRules = reactive({
|
|
|
|
|
enabled: [{ required: true, message: '是否启用不能为空', trigger: 'change' }],
|
|
|
|
|
deviceList: [{ required: true, message: '设备列表不能为空', trigger: 'change' }],
|
|
|
|
|
projectForm: [{ required: true, message: '项目表单不能为空', trigger: 'change' }],
|
|
|
|
|
dateRange: [{required: true, message: '起止日期不能为空', trigger: 'change' }]
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
const resetForm = () => {
|
|
|
|
|
@ -163,7 +163,7 @@ const resetForm = () => {
|
|
|
|
|
name: undefined,
|
|
|
|
|
taskType: undefined,
|
|
|
|
|
deviceList: [],
|
|
|
|
|
projectForm: [],
|
|
|
|
|
projectForm: undefined,
|
|
|
|
|
dateRange: [],
|
|
|
|
|
cronExpression: undefined,
|
|
|
|
|
operableUsers: [],
|
|
|
|
|
@ -186,14 +186,16 @@ const open = async (type: string, row?: TaskManagementVO) => {
|
|
|
|
|
formData.value.deviceList = parseIdsValue((row as any).deviceList)
|
|
|
|
|
const projectFormIds = parseIdsValue((row as any).projectForm)
|
|
|
|
|
if (projectFormIds.length) {
|
|
|
|
|
formData.value.projectForm = projectFormIds
|
|
|
|
|
const n = Number(projectFormIds[0])
|
|
|
|
|
formData.value.projectForm = Number.isFinite(n) ? n : undefined
|
|
|
|
|
} else {
|
|
|
|
|
const projectFormNames = parseIdsValue((row as any).projectFormName)
|
|
|
|
|
const mappedIds = projectFormNames
|
|
|
|
|
const mapped = projectFormNames
|
|
|
|
|
.map((name) => planOptions.value.find((p) => p.planName === name)?.id)
|
|
|
|
|
.filter((id) => id !== undefined && id !== null)
|
|
|
|
|
.map((id) => String(id))
|
|
|
|
|
formData.value.projectForm = mappedIds
|
|
|
|
|
.map((id) => Number(id))
|
|
|
|
|
const firstId = mapped[0]
|
|
|
|
|
formData.value.projectForm = typeof firstId === 'number' && Number.isFinite(firstId) ? firstId : undefined
|
|
|
|
|
}
|
|
|
|
|
formData.value.dateRange = [row.startDate, row.endDate].filter(Boolean) as string[]
|
|
|
|
|
formData.value.cronExpression = row.cronExpression
|
|
|
|
|
@ -222,7 +224,7 @@ const submitForm = async () => {
|
|
|
|
|
name: formData.value.name,
|
|
|
|
|
taskType: formData.value.taskType,
|
|
|
|
|
deviceList: toCommaSeparatedIds((formData.value as any).deviceList),
|
|
|
|
|
projectForm: toCommaSeparatedIds((formData.value as any).projectForm),
|
|
|
|
|
projectForm: formData.value.projectForm,
|
|
|
|
|
startDate: startDate || undefined,
|
|
|
|
|
endDate: endDate || undefined,
|
|
|
|
|
cronExpression: formData.value.cronExpression,
|
|
|
|
|
|