Merge branch 'master' of https://gitee.com/doan-tech/zhuangpei-mesvue3
This commit is contained in:
commit
4f127ea80f
@ -101,7 +101,7 @@
|
||||
|
||||
<el-col :lg="12">
|
||||
<el-form-item label="停机时间合计" prop="consumeTime">
|
||||
<el-time-select v-model="form.consumeTime" start="00:00" step="00:05" end="23:59" />
|
||||
<el-input v-model="form.consumeTime" placeholder="自动计算" :readonly="true" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
@ -353,4 +353,28 @@ function handleDelete(row) {
|
||||
}
|
||||
|
||||
handleQuery()
|
||||
function calculateConsumeTime(startTime, endTime) {
|
||||
if (!startTime || !endTime) {
|
||||
return 0
|
||||
}
|
||||
const start = proxy.dayjs(startTime)
|
||||
const end = proxy.dayjs(endTime)
|
||||
const diffMinutes = end.diff(start, 'minute')
|
||||
return diffMinutes > 0 ? diffMinutes : 0
|
||||
}
|
||||
|
||||
watch(
|
||||
() => [form.value.startTime, form.value.endTime],
|
||||
([newStartTime, newEndTime]) => {
|
||||
if (newStartTime && newEndTime) {
|
||||
const start = proxy.dayjs(newStartTime)
|
||||
const end = proxy.dayjs(newEndTime)
|
||||
const diffMinutes = end.diff(start, 'minute')
|
||||
form.value.consumeTime = diffMinutes > 0 ? diffMinutes : 0
|
||||
} else {
|
||||
form.value.consumeTime = 0
|
||||
}
|
||||
},
|
||||
{ deep: true }
|
||||
)
|
||||
</script>
|
||||
|
||||
@ -85,6 +85,8 @@
|
||||
<dict-tag :options="options.statusOptions" :value="scope.row.status" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="reason" label="引起故障原因" align="center" :show-overflow-tooltip="true" v-if="columns.showColumn('reason')" width="200" />
|
||||
<el-table-column prop="measure" label="解决措施" align="center" :show-overflow-tooltip="true" v-if="columns.showColumn('measure')" width="200" />
|
||||
<el-table-column prop="createdBy" label="创建人" align="center" :show-overflow-tooltip="true" v-if="columns.showColumn('createdBy')" />
|
||||
<el-table-column prop="createdTime" label="创建时间" :show-overflow-tooltip="true" v-if="columns.showColumn('createdTime')" />
|
||||
<el-table-column prop="updatedBy" label="更新人" align="center" :show-overflow-tooltip="true" v-if="columns.showColumn('updatedBy')" />
|
||||
@ -155,7 +157,17 @@
|
||||
<UploadImage v-model="form.file" :data="{ uploadType: 1, filePath: 'device/repair/file' }" :limit="1" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :lg="24">
|
||||
<el-form-item label="引起故障原因" prop="reason">
|
||||
<el-input type="textarea" :rows="2" v-model.trim="form.reason" placeholder="请输入引起故障原因" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :lg="24">
|
||||
<el-form-item label="解决措施" prop="measure">
|
||||
<el-input type="textarea" :rows="2" v-model.trim="form.measure" placeholder="请输入解决措施" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :lg="12" v-if="opertype != 1">
|
||||
<el-form-item label="状态" prop="status">
|
||||
<el-select v-model="form.status" placeholder="请选择工单状态">
|
||||
@ -210,6 +222,8 @@ const columns = ref([
|
||||
{ visible: true, prop: 'phone', label: '手机号' },
|
||||
{ visible: true, prop: 'faultDescription', label: '故障描述' },
|
||||
{ visible: true, prop: 'file', label: '拍照描述' },
|
||||
{ visible: true, prop: 'reason', label: '引起故障原因' },
|
||||
{ visible: true, prop: 'measure', label: '解决措施' },
|
||||
{ visible: true, prop: 'status', label: '状态(启用,关闭 维修中)' },
|
||||
{ visible: false, prop: 'createdBy', label: '创建人' },
|
||||
{ visible: false, prop: 'createdTime', label: '创建时间' },
|
||||
@ -364,7 +378,9 @@ function reset() {
|
||||
createdBy: null,
|
||||
createdTime: null,
|
||||
updatedBy: null,
|
||||
updatedTime: null
|
||||
updatedTime: null,
|
||||
reason: null,
|
||||
measure: null
|
||||
}
|
||||
proxy.resetForm('formRef')
|
||||
}
|
||||
|
||||
@ -4,224 +4,177 @@
|
||||
* @Date: (2024-05-31)
|
||||
-->
|
||||
<template>
|
||||
<div>
|
||||
<el-form :model="queryParams" label-position="right" inline ref="queryRef" v-show="showSearch" @submit.prevent>
|
||||
<el-form-item label="任务名称" prop="taskName">
|
||||
<el-input clearable v-model.trim="queryParams.taskName" placeholder="请输入任务名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="任务派发时间" prop="timeRange">
|
||||
<el-date-picker :clearable="true" v-model="queryParams.timeRange" type="daterange" placeholder="选择日期时间区间"></el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="任务类型" prop="type">
|
||||
<el-select v-model="queryParams.type" placeholder="请选择任务类型" @change="handleQuery">
|
||||
<el-option label="全部" :value="-1"></el-option>
|
||||
<el-option
|
||||
v-for="item in options.typeOptions"
|
||||
:key="item.dictValue"
|
||||
:label="item.dictLabel"
|
||||
:value="parseInt(item.dictValue)"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="状态" prop="status">
|
||||
<el-radio-group v-model="queryParams.status" @change="handleQuery">
|
||||
<el-radio-button :value="-1"> 全部 </el-radio-button>
|
||||
<el-radio-button v-for="item in options.statusOptions" :key="item.dictValue" :value="parseInt(item.dictValue)">
|
||||
{{ item.dictLabel }}
|
||||
</el-radio-button>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button icon="search" type="primary" @click="handleQuery">{{ $t('btn.search') }}</el-button>
|
||||
<el-button icon="refresh" @click="resetQuery">{{ $t('btn.reset') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<!-- 工具区域 -->
|
||||
<el-row :gutter="15" class="mb10">
|
||||
<el-col :span="1.5">
|
||||
<el-button type="primary" v-hasPermi="['deviceManagement:devicetaskexecute:add']" plain icon="RefreshRight" @click="handleSynchronize">
|
||||
{{ $t('btn.synchronize') }}
|
||||
</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="danger" v-hasPermi="['deviceManagement:devicetaskexecute:delete']" plain icon="delete" @click="handleClear">
|
||||
{{ $t('btn.clean') }}
|
||||
</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="warning" plain icon="download" @click="handleExport" v-hasPermi="['deviceManagement:devicetaskexecute:export']">
|
||||
{{ $t('btn.export') }}
|
||||
</el-button>
|
||||
</el-col>
|
||||
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
|
||||
</el-row>
|
||||
|
||||
<el-table
|
||||
:data="dataList"
|
||||
v-loading="loading"
|
||||
ref="table"
|
||||
border
|
||||
header-cell-class-name="el-table-header-cell"
|
||||
highlight-current-row
|
||||
@sort-change="sortChange"
|
||||
@selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="50" align="center" />
|
||||
<el-table-column prop="id" label="数据库编号" align="center" v-if="columns.showColumn('id')" />
|
||||
<el-table-column prop="taskId" label="任务编号" align="center" :show-overflow-tooltip="true" v-if="columns.showColumn('taskId')" />
|
||||
<el-table-column
|
||||
prop="taskName"
|
||||
label="任务名称"
|
||||
align="center"
|
||||
min-width="120"
|
||||
:show-overflow-tooltip="true"
|
||||
v-if="columns.showColumn('taskName')" />
|
||||
<el-table-column prop="person" label="执行人" align="center" :show-overflow-tooltip="true" v-if="columns.showColumn('person')" />
|
||||
<el-table-column prop="type" label="任务类型" align="center" v-if="columns.showColumn('type')">
|
||||
<template #default="scope">
|
||||
<dict-tag :options="options.typeOptions" :value="scope.row.type" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="distributedTime"
|
||||
label="任务派发时间"
|
||||
align="center"
|
||||
min-width="140"
|
||||
:show-overflow-tooltip="true"
|
||||
v-if="columns.showColumn('distributedTime')" />
|
||||
<el-table-column prop="startTime" label="任务开始时间" align="center" :show-overflow-tooltip="true" v-if="columns.showColumn('startTime')" />
|
||||
<el-table-column prop="endTime" label="任务结束时间" align="center" :show-overflow-tooltip="true" v-if="columns.showColumn('endTime')" />
|
||||
<el-table-column prop="consumeTime" label="耗时(min)" align="center">
|
||||
<template #default="scope">
|
||||
<span style="color: red; font-size: larger">{{ scope.row.consumeTime }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="status" label="状态" align="center" v-if="columns.showColumn('status')">
|
||||
<template #default="scope">
|
||||
<dict-tag :options="options.statusOptions" :value="scope.row.status" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="remark" label="备注" align="center" :show-overflow-tooltip="true" v-if="columns.showColumn('remark')" />
|
||||
<el-table-column prop="createdBy" label="创建人" align="center" :show-overflow-tooltip="true" v-if="columns.showColumn('createdBy')" />
|
||||
<el-table-column prop="createdTime" label="创建时间" :show-overflow-tooltip="true" v-if="columns.showColumn('createdTime')" />
|
||||
<el-table-column prop="updatedBy" label="更新人" align="center" :show-overflow-tooltip="true" v-if="columns.showColumn('updatedBy')" />
|
||||
<el-table-column prop="updatedTime" label="更新时间" :show-overflow-tooltip="true" v-if="columns.showColumn('updatedTime')" />
|
||||
<el-table-column label="任务执行" width="100" fixed="right">
|
||||
<template #default="scope">
|
||||
<el-button type="info" size="small" icon="EditPen" @click="handleExecute(scope.row)">执行</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="160" fixed="right">
|
||||
<template #default="scope">
|
||||
<el-button type="primary" size="small" icon="view" title="详情" @click="handlePreview(scope.row)"></el-button>
|
||||
<el-button
|
||||
type="success"
|
||||
size="small"
|
||||
icon="edit"
|
||||
title="编辑"
|
||||
v-hasPermi="['deviceManagement:devicetaskexecute:edit']"
|
||||
@click="handleUpdate(scope.row)"></el-button>
|
||||
<el-button
|
||||
type="danger"
|
||||
size="small"
|
||||
icon="delete"
|
||||
title="删除"
|
||||
v-hasPermi="['deviceManagement:devicetaskexecute:delete']"
|
||||
@click="handleDelete(scope.row)"></el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<pagination :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
|
||||
|
||||
<!-- 添加或修改任务执行对话框 -->
|
||||
<el-dialog :title="title" :lock-scroll="false" v-model="open">
|
||||
<el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
|
||||
<el-row :gutter="20">
|
||||
<el-col :lg="24">
|
||||
<div>
|
||||
<el-form :model="queryParams" label-position="right" inline ref="queryRef" v-show="showSearch" @submit.prevent>
|
||||
<el-form-item label="任务名称" prop="taskName">
|
||||
<el-input disabled v-model="form.taskName" placeholder="请输入任务名称" />
|
||||
<el-input clearable v-model.trim="queryParams.taskName" placeholder="请输入任务名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="任务派发时间" prop="timeRange">
|
||||
<el-date-picker :clearable="true" v-model="queryParams.timeRange" type="daterange" placeholder="选择日期时间区间"></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :lg="12">
|
||||
<el-form-item label="任务类型" prop="type">
|
||||
<el-select disabled v-model="form.type" placeholder="请选择任务类型">
|
||||
<el-option
|
||||
v-for="item in options.typeOptions"
|
||||
:key="item.dictValue"
|
||||
:label="item.dictLabel"
|
||||
:value="parseInt(item.dictValue)"></el-option>
|
||||
</el-select>
|
||||
<el-select v-model="queryParams.type" placeholder="请选择任务类型" @change="handleQuery">
|
||||
<el-option label="全部" :value="-1"></el-option>
|
||||
<el-option v-for="item in options.typeOptions" :key="item.dictValue" :label="item.dictLabel" :value="parseInt(item.dictValue)"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :lg="12">
|
||||
<el-form-item label="任务派发时间" prop="distributedTime">
|
||||
<el-date-picker
|
||||
disabled
|
||||
v-model="form.distributedTime"
|
||||
type="datetime"
|
||||
:teleported="false"
|
||||
placeholder="选择日期时间"></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :lg="12">
|
||||
<el-form-item label="任务开始时间" prop="startTime">
|
||||
<el-date-picker
|
||||
:disabled="opertype === 3"
|
||||
v-model="form.startTime"
|
||||
type="datetime"
|
||||
:teleported="false"
|
||||
placeholder="选择日期时间"></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :lg="12">
|
||||
<el-form-item label="任务结束时间" prop="endTime">
|
||||
<el-date-picker
|
||||
:disabled="opertype === 3"
|
||||
v-model="form.endTime"
|
||||
type="datetime"
|
||||
:teleported="false"
|
||||
placeholder="选择日期时间"></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :lg="24">
|
||||
<el-form-item label="状态" prop="status">
|
||||
<el-radio-group :disabled="opertype === 3" v-model="form.status">
|
||||
<el-radio-button v-for="item in options.statusOptions" :key="item.dictValue" :value="parseInt(item.dictValue)">
|
||||
{{ item.dictLabel }}
|
||||
</el-radio-button>
|
||||
</el-radio-group>
|
||||
<el-radio-group v-model="queryParams.status" @change="handleQuery">
|
||||
<el-radio-button :value="-1"> 全部 </el-radio-button>
|
||||
<el-radio-button v-for="item in options.statusOptions" :key="item.dictValue" :value="parseInt(item.dictValue)">
|
||||
{{ item.dictLabel }}
|
||||
</el-radio-button>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :lg="24">
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input
|
||||
:disabled="opertype === 3"
|
||||
type="textarea"
|
||||
:maxlength="200"
|
||||
:show-word-limit="true"
|
||||
v-model="form.remark"
|
||||
placeholder="请输入备注" />
|
||||
<el-form-item>
|
||||
<el-button icon="search" type="primary" @click="handleQuery">{{ $t('btn.search') }}</el-button>
|
||||
<el-button icon="refresh" @click="resetQuery">{{ $t('btn.reset') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-form>
|
||||
<!-- 工具区域 -->
|
||||
<el-row :gutter="15" class="mb10">
|
||||
<el-col :span="1.5">
|
||||
<el-button type="primary" v-hasPermi="['deviceManagement:devicetaskexecute:add']" plain icon="RefreshRight" @click="handleSynchronize">
|
||||
{{ $t('btn.synchronize') }}
|
||||
</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="danger" v-hasPermi="['deviceManagement:devicetaskexecute:delete']" plain icon="delete" @click="handleClear">
|
||||
{{ $t('btn.clean') }}
|
||||
</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="warning" plain icon="download" @click="handleExport" v-hasPermi="['deviceManagement:devicetaskexecute:export']">
|
||||
{{ $t('btn.export') }}
|
||||
</el-button>
|
||||
</el-col>
|
||||
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<template #footer v-if="opertype != 3">
|
||||
<el-button text @click="cancel">{{ $t('btn.cancel') }}</el-button>
|
||||
<el-button type="primary" @click="submitForm">{{ $t('btn.submit') }}</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
<TheTaskExecuteDialog v-model="open2" :executeKey="executeKey" :fkPlanId="fkPlanId" :planType="planType"> </TheTaskExecuteDialog>
|
||||
</div>
|
||||
|
||||
<el-table
|
||||
:data="dataList"
|
||||
v-loading="loading"
|
||||
ref="table"
|
||||
border
|
||||
header-cell-class-name="el-table-header-cell"
|
||||
highlight-current-row
|
||||
@sort-change="sortChange"
|
||||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
<el-table-column type="selection" width="50" align="center" />
|
||||
<el-table-column prop="id" label="数据库编号" align="center" v-if="columns.showColumn('id')" />
|
||||
<el-table-column prop="taskId" label="任务编号" align="center" :show-overflow-tooltip="true" v-if="columns.showColumn('taskId')" />
|
||||
<el-table-column prop="taskName" label="任务名称" align="center" min-width="120" :show-overflow-tooltip="true" v-if="columns.showColumn('taskName')" />
|
||||
<el-table-column prop="person" label="执行人" align="center" :show-overflow-tooltip="true" v-if="columns.showColumn('person')" />
|
||||
<el-table-column prop="type" label="任务类型" align="center" v-if="columns.showColumn('type')">
|
||||
<template #default="scope">
|
||||
<dict-tag :options="options.typeOptions" :value="scope.row.type" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="inner_type" label="内部类型" align="center" v-if="columns.showColumn('inner_type')">
|
||||
<template #default="scope">
|
||||
<dict-tag :options="options.innertypeOptions" :value="scope.row.type" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="distributedTime" label="任务派发时间" align="center" min-width="140" :show-overflow-tooltip="true" v-if="columns.showColumn('distributedTime')" />
|
||||
<el-table-column prop="startTime" label="任务开始时间" align="center" :show-overflow-tooltip="true" v-if="columns.showColumn('startTime')" />
|
||||
<el-table-column prop="endTime" label="任务结束时间" align="center" :show-overflow-tooltip="true" v-if="columns.showColumn('endTime')" />
|
||||
<el-table-column prop="consumeTime" label="耗时(min)" align="center">
|
||||
<template #default="scope">
|
||||
<span style="color: red; font-size: larger">{{ scope.row.consumeTime }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="status" label="状态" align="center" v-if="columns.showColumn('status')">
|
||||
<template #default="scope">
|
||||
<dict-tag :options="options.statusOptions" :value="scope.row.status" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="remark" label="备注" align="center" :show-overflow-tooltip="true" v-if="columns.showColumn('remark')" />
|
||||
<el-table-column prop="createdBy" label="创建人" align="center" :show-overflow-tooltip="true" v-if="columns.showColumn('createdBy')" />
|
||||
<el-table-column prop="createdTime" label="创建时间" :show-overflow-tooltip="true" v-if="columns.showColumn('createdTime')" />
|
||||
<el-table-column prop="updatedBy" label="更新人" align="center" :show-overflow-tooltip="true" v-if="columns.showColumn('updatedBy')" />
|
||||
<el-table-column prop="updatedTime" label="更新时间" :show-overflow-tooltip="true" v-if="columns.showColumn('updatedTime')" />
|
||||
<el-table-column label="任务执行" width="100" fixed="right">
|
||||
<template #default="scope">
|
||||
<el-button type="info" size="small" icon="EditPen" @click="handleExecute(scope.row)">执行</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="160" fixed="right">
|
||||
<template #default="scope">
|
||||
<el-button type="primary" size="small" icon="view" title="详情" @click="handlePreview(scope.row)"></el-button>
|
||||
<el-button type="success" size="small" icon="edit" title="编辑" v-hasPermi="['deviceManagement:devicetaskexecute:edit']" @click="handleUpdate(scope.row)"></el-button>
|
||||
<el-button type="danger" size="small" icon="delete" title="删除" v-hasPermi="['deviceManagement:devicetaskexecute:delete']" @click="handleDelete(scope.row)"></el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<pagination :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
|
||||
|
||||
<!-- 添加或修改任务执行对话框 -->
|
||||
<el-dialog :title="title" :lock-scroll="false" v-model="open">
|
||||
<el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
|
||||
<el-row :gutter="20">
|
||||
<el-col :lg="24">
|
||||
<el-form-item label="任务名称" prop="taskName">
|
||||
<el-input disabled v-model="form.taskName" placeholder="请输入任务名称" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :lg="12">
|
||||
<el-form-item label="任务类型" prop="type">
|
||||
<el-select disabled v-model="form.type" placeholder="请选择任务类型">
|
||||
<el-option v-for="item in options.typeOptions" :key="item.dictValue" :label="item.dictLabel" :value="parseInt(item.dictValue)"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :lg="12">
|
||||
<el-form-item label="任务派发时间" prop="distributedTime">
|
||||
<el-date-picker disabled v-model="form.distributedTime" type="datetime" :teleported="false" placeholder="选择日期时间"></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :lg="12">
|
||||
<el-form-item label="任务开始时间" prop="startTime">
|
||||
<el-date-picker :disabled="opertype === 3" v-model="form.startTime" type="datetime" :teleported="false" placeholder="选择日期时间"></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :lg="12">
|
||||
<el-form-item label="任务结束时间" prop="endTime">
|
||||
<el-date-picker :disabled="opertype === 3" v-model="form.endTime" type="datetime" :teleported="false" placeholder="选择日期时间"></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :lg="24">
|
||||
<el-form-item label="状态" prop="status">
|
||||
<el-radio-group :disabled="opertype === 3" v-model="form.status">
|
||||
<el-radio-button v-for="item in options.statusOptions" :key="item.dictValue" :value="parseInt(item.dictValue)">
|
||||
{{ item.dictLabel }}
|
||||
</el-radio-button>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :lg="24">
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<el-input :disabled="opertype === 3" type="textarea" :maxlength="200" :show-word-limit="true" v-model="form.remark" placeholder="请输入备注" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<template #footer v-if="opertype != 3">
|
||||
<el-button text @click="cancel">{{ $t('btn.cancel') }}</el-button>
|
||||
<el-button type="primary" @click="submitForm">{{ $t('btn.submit') }}</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
<TheTaskExecuteDialog v-model="open2" :executeKey="executeKey" :fkPlanId="fkPlanId" :planType="planType"> </TheTaskExecuteDialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup name="devicetaskexecute">
|
||||
import {
|
||||
listDeviceTaskExecute,
|
||||
addDeviceTaskExecute,
|
||||
delDeviceTaskExecute,
|
||||
updateDeviceTaskExecute,
|
||||
getDeviceTaskExecute,
|
||||
clearDeviceTaskExecute,
|
||||
setTaskStartTime
|
||||
listDeviceTaskExecute,
|
||||
addDeviceTaskExecute,
|
||||
delDeviceTaskExecute,
|
||||
updateDeviceTaskExecute,
|
||||
getDeviceTaskExecute,
|
||||
clearDeviceTaskExecute,
|
||||
setTaskStartTime
|
||||
} from '@/api/deviceManagement/devicetaskexecute.js'
|
||||
import { default as TheTaskExecuteDialog } from './TheTaskExecuteDialog'
|
||||
import importData from '@/components/ImportData'
|
||||
@ -231,31 +184,31 @@ const loading = ref(false)
|
||||
const showSearch = ref(true)
|
||||
const defaultTimeRange = ref(null)
|
||||
const queryParams = reactive({
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
timeRange: defaultTimeRange,
|
||||
timeStart: null,
|
||||
timeEnd: null,
|
||||
type: -1,
|
||||
status: -1,
|
||||
sort: 'createdTime',
|
||||
sortType: 'desc'
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
timeRange: defaultTimeRange,
|
||||
timeStart: null,
|
||||
timeEnd: null,
|
||||
type: -1,
|
||||
status: -1,
|
||||
sort: 'createdTime',
|
||||
sortType: 'desc'
|
||||
})
|
||||
const columns = ref([
|
||||
{ visible: false, prop: 'id', label: '主键' },
|
||||
{ visible: false, prop: 'taskId', label: '任务id' },
|
||||
{ visible: true, prop: 'taskName', label: '任务名称' },
|
||||
{ visible: true, prop: 'person', label: '执行人' },
|
||||
{ visible: true, prop: 'type', label: '任务类型' },
|
||||
{ visible: true, prop: 'distributedTime', label: '任务派发时间' },
|
||||
{ visible: true, prop: 'startTime', label: '任务执行——开始时间' },
|
||||
{ visible: true, prop: 'endTime', label: '任务执行——结束时间' },
|
||||
{ visible: true, prop: 'status', label: '状态' },
|
||||
{ visible: true, prop: 'remark', label: '备注' },
|
||||
{ visible: false, prop: 'createdBy', label: '创建人' },
|
||||
{ visible: false, prop: 'createdTime', label: '创建时间' },
|
||||
{ visible: false, prop: 'updatedBy', label: '更新人' },
|
||||
{ visible: false, prop: 'updatedTime', label: '更新时间' }
|
||||
{ visible: false, prop: 'id', label: '主键' },
|
||||
{ visible: false, prop: 'taskId', label: '任务id' },
|
||||
{ visible: true, prop: 'taskName', label: '任务名称' },
|
||||
{ visible: true, prop: 'person', label: '执行人' },
|
||||
{ visible: true, prop: 'type', label: '任务类型' },
|
||||
{ visible: true, prop: 'distributedTime', label: '任务派发时间' },
|
||||
{ visible: true, prop: 'startTime', label: '任务执行——开始时间' },
|
||||
{ visible: true, prop: 'endTime', label: '任务执行——结束时间' },
|
||||
{ visible: true, prop: 'status', label: '状态' },
|
||||
{ visible: true, prop: 'remark', label: '备注' },
|
||||
{ visible: false, prop: 'createdBy', label: '创建人' },
|
||||
{ visible: false, prop: 'createdTime', label: '创建时间' },
|
||||
{ visible: false, prop: 'updatedBy', label: '更新人' },
|
||||
{ visible: false, prop: 'updatedTime', label: '更新时间' }
|
||||
])
|
||||
const total = ref(0)
|
||||
const dataList = ref([])
|
||||
@ -264,61 +217,61 @@ const queryRef = ref()
|
||||
var dictParams = []
|
||||
|
||||
function getList() {
|
||||
loading.value = true
|
||||
listDeviceTaskExecute(queryParams).then((res) => {
|
||||
const { code, data } = res
|
||||
if (code == 200) {
|
||||
dataList.value = data.result
|
||||
total.value = data.totalNum
|
||||
loading.value = false
|
||||
}
|
||||
})
|
||||
loading.value = true
|
||||
listDeviceTaskExecute(queryParams).then((res) => {
|
||||
const { code, data } = res
|
||||
if (code == 200) {
|
||||
dataList.value = data.result
|
||||
total.value = data.totalNum
|
||||
loading.value = false
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
const consume_time = computed((date1, date2) => {
|
||||
var milliseconds1 = date1.getTime()
|
||||
var milliseconds2 = date2.getTime()
|
||||
var milliseconds1 = date1.getTime()
|
||||
var milliseconds2 = date2.getTime()
|
||||
|
||||
// 计算毫秒级的时间差
|
||||
var millisecondsDiff = Math.abs(milliseconds2 - milliseconds1)
|
||||
// 计算毫秒级的时间差
|
||||
var millisecondsDiff = Math.abs(milliseconds2 - milliseconds1)
|
||||
|
||||
var minutesDiff = millisecondsDiff / (1000 * 60)
|
||||
return minutesDiff
|
||||
var minutesDiff = millisecondsDiff / (1000 * 60)
|
||||
return minutesDiff
|
||||
})
|
||||
// 查询
|
||||
function handleQuery() {
|
||||
queryParams.pageNum = 1
|
||||
getList()
|
||||
queryParams.pageNum = 1
|
||||
getList()
|
||||
}
|
||||
|
||||
// 重置查询操作
|
||||
function resetQuery() {
|
||||
proxy.resetForm('queryRef')
|
||||
handleQuery()
|
||||
proxy.resetForm('queryRef')
|
||||
handleQuery()
|
||||
}
|
||||
// 多选框选中数据
|
||||
function handleSelectionChange(selection) {
|
||||
ids.value = selection.map((item) => item.id)
|
||||
single.value = selection.length != 1
|
||||
multiple.value = !selection.length
|
||||
ids.value = selection.map((item) => item.id)
|
||||
single.value = selection.length != 1
|
||||
multiple.value = !selection.length
|
||||
}
|
||||
// 自定义排序
|
||||
function sortChange(column) {
|
||||
var sort = undefined
|
||||
var sortType = undefined
|
||||
var sort = undefined
|
||||
var sortType = undefined
|
||||
|
||||
if (column.prop != null && column.order != null) {
|
||||
sort = column.prop
|
||||
sortType = column.order
|
||||
}
|
||||
queryParams.sort = sort
|
||||
queryParams.sortType = sortType
|
||||
handleQuery()
|
||||
if (column.prop != null && column.order != null) {
|
||||
sort = column.prop
|
||||
sortType = column.order
|
||||
}
|
||||
queryParams.sort = sort
|
||||
queryParams.sortType = sortType
|
||||
handleQuery()
|
||||
}
|
||||
|
||||
// 任务手动同步
|
||||
function handleSynchronize() {
|
||||
proxy.$modal.msgSuccess('同步成功!')
|
||||
proxy.$modal.msgSuccess('同步成功!')
|
||||
}
|
||||
// 任务执行弹窗
|
||||
const open2 = ref(false)
|
||||
@ -327,13 +280,13 @@ const fkPlanId = ref('')
|
||||
const planType = ref(1)
|
||||
// 执行任务,填写表单
|
||||
function handleExecute(row) {
|
||||
planType.value = row.type
|
||||
fkPlanId.value = row.planId
|
||||
executeKey.value = row.id
|
||||
setTaskStartTime({ id: executeKey.value })
|
||||
// open2.value = true;
|
||||
proxy.$router.push({ name: 'TheTaskExecuteView', query: { planType: row.type, fkPlanId: row.planId, executeKey: row.id } })
|
||||
// proxy.$router.push({ path: '/deviceManagement/deviceTaskExecute', query: { planType: row.type, fkPlanId: row.taskId, executeKey: row.id } });
|
||||
planType.value = row.type
|
||||
fkPlanId.value = row.planId
|
||||
executeKey.value = row.id
|
||||
setTaskStartTime({ id: executeKey.value })
|
||||
// open2.value = true;
|
||||
proxy.$router.push({ name: 'TheTaskExecuteView', query: { planType: row.type, fkPlanId: row.planId, executeKey: row.id } })
|
||||
// proxy.$router.push({ path: '/deviceManagement/deviceTaskExecute', query: { planType: row.type, fkPlanId: row.taskId, executeKey: row.id } });
|
||||
}
|
||||
|
||||
/*************** form操作 ***************/
|
||||
@ -344,132 +297,136 @@ const opertype = ref(0)
|
||||
const open = ref(false)
|
||||
|
||||
const state = reactive({
|
||||
single: true,
|
||||
multiple: true,
|
||||
form: {},
|
||||
rules: {
|
||||
// type: [{ required: true, message: '任务类型(1是巡检,2是点检)不能为空', trigger: 'change', type: 'number' }]
|
||||
},
|
||||
options: {
|
||||
// 任务类型(1是巡检,2是点检) 选项列表 格式 eg:{ dictLabel: '标签', dictValue: '0'}
|
||||
typeOptions: [
|
||||
{ dictLabel: '巡检', dictValue: 1, listClass: 'primary' },
|
||||
{ dictLabel: '点检', dictValue: 2, listClass: 'warning' }
|
||||
],
|
||||
// 0-未执行 1-执行中 2-已完成 3-超时
|
||||
// 状态 选项列表 格式 eg:{ dictLabel: '标签', dictValue: '0'}
|
||||
statusOptions: [
|
||||
{ dictLabel: '未执行', dictValue: 0, listClass: 'info' },
|
||||
{ dictLabel: '执行中', dictValue: 1, listClass: 'primary' },
|
||||
{ dictLabel: '已完成', dictValue: 2, listClass: 'success' },
|
||||
{ dictLabel: '超时', dictValue: 3, listClass: 'danger' }
|
||||
]
|
||||
}
|
||||
single: true,
|
||||
multiple: true,
|
||||
form: {},
|
||||
rules: {
|
||||
// type: [{ required: true, message: '任务类型(1是巡检,2是点检)不能为空', trigger: 'change', type: 'number' }]
|
||||
},
|
||||
options: {
|
||||
// 任务类型(1是巡检,2是点检) 选项列表 格式 eg:{ dictLabel: '标签', dictValue: '0'}
|
||||
typeOptions: [
|
||||
{ dictLabel: '巡检', dictValue: 1, listClass: 'primary' },
|
||||
{ dictLabel: '点检', dictValue: 2, listClass: 'warning' }
|
||||
],
|
||||
innertypeOptions: [
|
||||
{ dictLabel: '检查', dictValue: 1, listClass: 'primary' },
|
||||
{ dictLabel: '保养', dictValue: 2, listClass: 'warning' }
|
||||
],
|
||||
// 0-未执行 1-执行中 2-已完成 3-超时
|
||||
// 状态 选项列表 格式 eg:{ dictLabel: '标签', dictValue: '0'}
|
||||
statusOptions: [
|
||||
{ dictLabel: '未执行', dictValue: 0, listClass: 'info' },
|
||||
{ dictLabel: '执行中', dictValue: 1, listClass: 'primary' },
|
||||
{ dictLabel: '已完成', dictValue: 2, listClass: 'success' },
|
||||
{ dictLabel: '超时', dictValue: 3, listClass: 'danger' }
|
||||
]
|
||||
}
|
||||
})
|
||||
|
||||
const { form, rules, options, single, multiple } = toRefs(state)
|
||||
|
||||
// 关闭dialog
|
||||
function cancel() {
|
||||
open.value = false
|
||||
reset()
|
||||
open.value = false
|
||||
reset()
|
||||
}
|
||||
|
||||
// 重置表单
|
||||
function reset() {
|
||||
form.value = {
|
||||
id: null,
|
||||
taskName: null,
|
||||
taskId: null,
|
||||
type: 1,
|
||||
distributedTime: null,
|
||||
startTime: null,
|
||||
endTime: null,
|
||||
status: 0,
|
||||
remark: null,
|
||||
createdBy: null,
|
||||
createdTime: null,
|
||||
updatedBy: null,
|
||||
updatedTime: null
|
||||
}
|
||||
proxy.resetForm('formRef')
|
||||
form.value = {
|
||||
id: null,
|
||||
taskName: null,
|
||||
taskId: null,
|
||||
type: 1,
|
||||
distributedTime: null,
|
||||
startTime: null,
|
||||
endTime: null,
|
||||
status: 0,
|
||||
remark: null,
|
||||
createdBy: null,
|
||||
createdTime: null,
|
||||
updatedBy: null,
|
||||
updatedTime: null
|
||||
}
|
||||
proxy.resetForm('formRef')
|
||||
}
|
||||
// 添加按钮操作
|
||||
function handleAdd() {
|
||||
reset()
|
||||
open.value = true
|
||||
title.value = '添加任务执行'
|
||||
opertype.value = 1
|
||||
reset()
|
||||
open.value = true
|
||||
title.value = '添加任务执行'
|
||||
opertype.value = 1
|
||||
}
|
||||
// 修改按钮操作
|
||||
function handleUpdate(row) {
|
||||
reset()
|
||||
const id = row.id || ids.value
|
||||
getDeviceTaskExecute(id).then((res) => {
|
||||
const { code, data } = res
|
||||
if (code == 200) {
|
||||
open.value = true
|
||||
title.value = '修改任务执行'
|
||||
opertype.value = 2
|
||||
reset()
|
||||
const id = row.id || ids.value
|
||||
getDeviceTaskExecute(id).then((res) => {
|
||||
const { code, data } = res
|
||||
if (code == 200) {
|
||||
open.value = true
|
||||
title.value = '修改任务执行'
|
||||
opertype.value = 2
|
||||
|
||||
form.value = {
|
||||
...data
|
||||
}
|
||||
}
|
||||
})
|
||||
form.value = {
|
||||
...data
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// 添加&修改 表单提交
|
||||
function submitForm() {
|
||||
proxy.$refs['formRef'].validate((valid) => {
|
||||
if (valid) {
|
||||
if (form.value.id != undefined && opertype.value === 2) {
|
||||
updateDeviceTaskExecute(form.value).then((res) => {
|
||||
proxy.$modal.msgSuccess('修改成功')
|
||||
open.value = false
|
||||
getList()
|
||||
})
|
||||
} else {
|
||||
addDeviceTaskExecute(form.value).then((res) => {
|
||||
proxy.$modal.msgSuccess('新增成功')
|
||||
open.value = false
|
||||
getList()
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
proxy.$refs['formRef'].validate((valid) => {
|
||||
if (valid) {
|
||||
if (form.value.id != undefined && opertype.value === 2) {
|
||||
updateDeviceTaskExecute(form.value).then((res) => {
|
||||
proxy.$modal.msgSuccess('修改成功')
|
||||
open.value = false
|
||||
getList()
|
||||
})
|
||||
} else {
|
||||
addDeviceTaskExecute(form.value).then((res) => {
|
||||
proxy.$modal.msgSuccess('新增成功')
|
||||
open.value = false
|
||||
getList()
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// 删除按钮操作
|
||||
function handleDelete(row) {
|
||||
const Ids = row.id || ids.value
|
||||
const Ids = row.id || ids.value
|
||||
|
||||
proxy
|
||||
.$confirm('是否确认删除参数编号为"' + Ids + '"的数据项?')
|
||||
.then(function () {
|
||||
return delDeviceTaskExecute(Ids)
|
||||
})
|
||||
.then(() => {
|
||||
getList()
|
||||
proxy.$modal.msgSuccess('删除成功')
|
||||
})
|
||||
proxy
|
||||
.$confirm('是否确认删除参数编号为"' + Ids + '"的数据项?')
|
||||
.then(function () {
|
||||
return delDeviceTaskExecute(Ids)
|
||||
})
|
||||
.then(() => {
|
||||
getList()
|
||||
proxy.$modal.msgSuccess('删除成功')
|
||||
})
|
||||
}
|
||||
|
||||
// 清空
|
||||
function handleClear() {
|
||||
proxy
|
||||
.$confirm('是否确认清空所有数据项?清空后不可恢复!', '警告', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
.then(function () {
|
||||
return clearDeviceTaskExecute()
|
||||
})
|
||||
.then(() => {
|
||||
handleQuery()
|
||||
proxy.$modal.msgSuccess('清空成功')
|
||||
})
|
||||
proxy
|
||||
.$confirm('是否确认清空所有数据项?清空后不可恢复!', '警告', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
.then(function () {
|
||||
return clearDeviceTaskExecute()
|
||||
})
|
||||
.then(() => {
|
||||
handleQuery()
|
||||
proxy.$modal.msgSuccess('清空成功')
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
@ -477,37 +434,37 @@ function handleClear() {
|
||||
* @param {*} row
|
||||
*/
|
||||
function handlePreview(row) {
|
||||
reset()
|
||||
open.value = true
|
||||
title.value = '查看'
|
||||
opertype.value = 3
|
||||
form.value = { ...row }
|
||||
reset()
|
||||
open.value = true
|
||||
title.value = '查看'
|
||||
opertype.value = 3
|
||||
form.value = { ...row }
|
||||
}
|
||||
|
||||
// 导入数据成功处理
|
||||
const handleFileSuccess = (response) => {
|
||||
const { item1, item2 } = response.data
|
||||
var error = ''
|
||||
item2.forEach((item) => {
|
||||
error += item.storageMessage + ','
|
||||
})
|
||||
proxy.$alert(item1 + '<p>' + error + '</p>', '导入结果', {
|
||||
dangerouslyUseHTMLString: true
|
||||
})
|
||||
getList()
|
||||
const { item1, item2 } = response.data
|
||||
var error = ''
|
||||
item2.forEach((item) => {
|
||||
error += item.storageMessage + ','
|
||||
})
|
||||
proxy.$alert(item1 + '<p>' + error + '</p>', '导入结果', {
|
||||
dangerouslyUseHTMLString: true
|
||||
})
|
||||
getList()
|
||||
}
|
||||
|
||||
// 导出按钮操作
|
||||
function handleExport() {
|
||||
proxy
|
||||
.$confirm('是否确认导出任务执行数据项?', '警告', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
.then(async () => {
|
||||
await proxy.downFile('/dev/DeviceTaskExecute/export', { ...queryParams })
|
||||
})
|
||||
proxy
|
||||
.$confirm('是否确认导出任务执行数据项?', '警告', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
})
|
||||
.then(async () => {
|
||||
await proxy.downFile('/dev/DeviceTaskExecute/export', { ...queryParams })
|
||||
})
|
||||
}
|
||||
|
||||
handleQuery()
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user