|
@ -1,18 +1,14 @@ |
|
|
<template> |
|
|
<template> |
|
|
<div> |
|
|
<div> |
|
|
<div class="head-container"> |
|
|
<div class="head-container"> |
|
|
<crudOperation :permission="permission"> |
|
|
|
|
|
<template v-slot:right> |
|
|
|
|
|
<el-button :loading="crud.downloadLoading" :disabled="!crud.selections.length" size="mini" icon="el-icon-download" style="margin-right: 6px;" @click="downloadApi(crud.selections)">导出</el-button> |
|
|
|
|
|
</template> |
|
|
|
|
|
</crudOperation> |
|
|
|
|
|
|
|
|
<crudOperation :permission="permission" /> |
|
|
<div class="head-search" style="margin-left: 40px;"> |
|
|
<div class="head-search" style="margin-left: 40px;"> |
|
|
<!-- 搜索 --> |
|
|
<!-- 搜索 --> |
|
|
<el-select v-model="query.enabled" clearable size="small" placeholder="状态" class="filter-item" style="width: 100px" @change="crud.toQuery"> |
|
|
|
|
|
|
|
|
<el-select v-model="query.status" clearable size="small" placeholder="状态" class="filter-item" style="width: 100px" @change="crud.toQuery"> |
|
|
<i slot="prefix" class="iconfont icon-zhuangtai-fanbai" /> |
|
|
<i slot="prefix" class="iconfont icon-zhuangtai-fanbai" /> |
|
|
<el-option v-for="item in enabledTypeOptions" :key="item.key" :label="item.display_name" :value="item.key" /> |
|
|
<el-option v-for="item in enabledTypeOptions" :key="item.key" :label="item.display_name" :value="item.key" /> |
|
|
</el-select> |
|
|
</el-select> |
|
|
<el-input v-model="query.blurry" size="small" clearable placeholder="输入任务名称搜索" prefix-icon="el-icon-search" style="width: 200px;" class="filter-item" @keyup.enter.native="crud.toQuery" /> |
|
|
|
|
|
|
|
|
<el-input v-model="query.taskName" size="small" clearable placeholder="输入任务名称搜索" prefix-icon="el-icon-search" style="width: 200px;" class="filter-item" @keyup.enter.native="crud.toQuery" /> |
|
|
<rrOperation /> |
|
|
<rrOperation /> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
@ -22,23 +18,38 @@ |
|
|
<!--表格渲染--> |
|
|
<!--表格渲染--> |
|
|
<el-table ref="table" v-loading="crud.loading" :data="crud.data" style="width: 100%;" height="calc(100vh - 300px)" @row-click="clickRowHandler" @row-dblclick="handleDbClick" @selection-change="crud.selectionChangeHandler"> |
|
|
<el-table ref="table" v-loading="crud.loading" :data="crud.data" style="width: 100%;" height="calc(100vh - 300px)" @row-click="clickRowHandler" @row-dblclick="handleDbClick" @selection-change="crud.selectionChangeHandler"> |
|
|
<el-table-column type="selection" width="55" align="center" /> |
|
|
<el-table-column type="selection" width="55" align="center" /> |
|
|
<el-table-column align="center" prop="username" label="任务名称" /> |
|
|
|
|
|
<el-table-column align="center" prop="username" label="任务类型" /> |
|
|
|
|
|
<el-table-column align="center" prop="username" label="目标设备" /> |
|
|
|
|
|
<el-table-column align="center" prop="username" label="计划" /> |
|
|
|
|
|
<el-table-column prop="createTime" label="下次运行"> |
|
|
|
|
|
|
|
|
<el-table-column prop="taskName" label="任务名称" /> |
|
|
|
|
|
<el-table-column prop="taskType" label="任务类型"> |
|
|
<template slot-scope="scope"> |
|
|
<template slot-scope="scope"> |
|
|
<div>{{ scope.row.createTime | parseTime }}</div> |
|
|
|
|
|
|
|
|
<div>{{ scope.row.taskType === 1 ? '通风任务' :'' }}</div> |
|
|
</template> |
|
|
</template> |
|
|
</el-table-column> |
|
|
</el-table-column> |
|
|
<el-table-column prop="createTime" label="最后运行"> |
|
|
|
|
|
|
|
|
<el-table-column prop="deviceName" label="目标设备" /> |
|
|
|
|
|
<el-table-column prop="timeInterval" label="计划"> |
|
|
<template slot-scope="scope"> |
|
|
<template slot-scope="scope"> |
|
|
<div>{{ scope.row.createTime | parseTime }}</div> |
|
|
|
|
|
|
|
|
<div v-if="scope.row.timerType===2">每隔{{ scope.row.timeInterval }}天</div> |
|
|
|
|
|
<div v-if="scope.row.timerType===1">每隔{{ scope.row.timeInterval }}小时</div> |
|
|
|
|
|
<!-- 如果只选了整点或半点,那么就是整点或半点每隔1小时运行1次 --> |
|
|
|
|
|
<!-- 如果是都选中了,就是整点和半点每间隔30分钟执行一次!! --> |
|
|
|
|
|
<div v-if="scope.row.timerType===4 && scope.row.timeInterval === '1'">整点</div> |
|
|
|
|
|
<div v-if="scope.row.timerType===4 && scope.row.timeInterval === '2'">半点</div> |
|
|
|
|
|
<div v-if="scope.row.timerType===4 && (scope.row.timeInterval && scope.row.timeInterval.split(',').length === 2)">整点/半点</div> |
|
|
</template> |
|
|
</template> |
|
|
</el-table-column> |
|
|
</el-table-column> |
|
|
<el-table-column label="状态" prop="enabled"> |
|
|
|
|
|
|
|
|
<el-table-column prop="nextExecute" label="下次运行"> |
|
|
<template slot-scope="scope"> |
|
|
<template slot-scope="scope"> |
|
|
<el-switch v-model="scope.row.enabled" active-color="#409EFF" inactive-color="#F56C6C" @change="changeEnabled(scope.row, scope.row.enabled)" /> |
|
|
|
|
|
|
|
|
<div>{{ scope.row.nextExecute | parseTime }}</div> |
|
|
|
|
|
</template> |
|
|
|
|
|
</el-table-column> |
|
|
|
|
|
<el-table-column prop="lastExecute" label="最后运行"> |
|
|
|
|
|
<template slot-scope="scope"> |
|
|
|
|
|
<div v-if="scope.row.lastExecute">{{ scope.row.lastExecute | parseTime }}</div> |
|
|
|
|
|
<div v-else> - </div> |
|
|
|
|
|
</template> |
|
|
|
|
|
</el-table-column> |
|
|
|
|
|
<el-table-column label="状态" prop="status"> |
|
|
|
|
|
<template slot-scope="scope"> |
|
|
|
|
|
<el-switch v-model="scope.row.status" active-color="#409EFF" inactive-color="#F56C6C" :active-value="1" :inactive-value="2" @change="changeStatus(scope.row, scope.row.status)" /> |
|
|
</template> |
|
|
</template> |
|
|
</el-table-column> |
|
|
</el-table-column> |
|
|
</el-table> |
|
|
</el-table> |
|
@ -56,9 +67,9 @@ |
|
|
</ul> |
|
|
</ul> |
|
|
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="small" label-width="80px"> |
|
|
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="small" label-width="80px"> |
|
|
<div v-show="tabIndex===0"> |
|
|
<div v-show="tabIndex===0"> |
|
|
<el-form-item label="任务类型" prop="type"> |
|
|
|
|
|
|
|
|
<el-form-item label="任务类型" prop="taskType"> |
|
|
<el-select |
|
|
<el-select |
|
|
v-model="form.type" |
|
|
|
|
|
|
|
|
v-model="form.taskType" |
|
|
style="width: 240px; height:30px" |
|
|
style="width: 240px; height:30px" |
|
|
clearable |
|
|
clearable |
|
|
placeholder="请选择" |
|
|
placeholder="请选择" |
|
@ -72,9 +83,9 @@ |
|
|
/> |
|
|
/> |
|
|
</el-select> |
|
|
</el-select> |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
<el-form-item label="目标设备" prop="deviceName"> |
|
|
|
|
|
|
|
|
<el-form-item label="目标设备" prop="deviceId"> |
|
|
<el-select |
|
|
<el-select |
|
|
v-model="form.deviceName" |
|
|
|
|
|
|
|
|
v-model="form.deviceId" |
|
|
style="width: 240px; height:30px" |
|
|
style="width: 240px; height:30px" |
|
|
clearable |
|
|
clearable |
|
|
placeholder="请选择" |
|
|
placeholder="请选择" |
|
@ -87,22 +98,23 @@ |
|
|
/> |
|
|
/> |
|
|
</el-select> |
|
|
</el-select> |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
<el-form-item label="任务名称" prop="name"> |
|
|
|
|
|
<el-input v-model="form.name" style="width: 572px;" /> |
|
|
|
|
|
|
|
|
<el-form-item label="任务名称" prop="taskName"> |
|
|
|
|
|
<el-input v-model="form.taskName" style="width: 572px;" /> |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
<el-form-item v-if="form.deviceName === 'DDAF09DDD05ED8ACF9928E'" label="说明" prop="remark"> |
|
|
|
|
|
|
|
|
<el-form-item v-if="form.deviceId === 'DDAF09DDD05ED8ACF9928E'" label="说明" prop="remark"> |
|
|
<div style="display:inline-block; width: 572px; color: #fff; border: 1px solid #339cff; border-radius: 4px; padding: 6px 10px; line-height: 24px;">通风任务是系统给 密集架设备 指定的专属计划任务,根据计划设定的时间可开启通风作业,作业完成后通风会自动停止。同一个密集架设备可以设置多个任务,注意每个任务的计划尽量不要有冲突或者重复,否则会导致任务执行失败。<span style="font-weight: bold; color: rgb(26, 174, 147);">如果用户在创建任务时,未手动设置“计划”,系统将默认从创建时间开始,每隔1天执行1次该任务。</span></div> |
|
|
<div style="display:inline-block; width: 572px; color: #fff; border: 1px solid #339cff; border-radius: 4px; padding: 6px 10px; line-height: 24px;">通风任务是系统给 密集架设备 指定的专属计划任务,根据计划设定的时间可开启通风作业,作业完成后通风会自动停止。同一个密集架设备可以设置多个任务,注意每个任务的计划尽量不要有冲突或者重复,否则会导致任务执行失败。<span style="font-weight: bold; color: rgb(26, 174, 147);">如果用户在创建任务时,未手动设置“计划”,系统将默认从创建时间开始,每隔1天执行1次该任务。</span></div> |
|
|
<!-- <el-input v-model="form.remark" type="textarea" style="width: 572px;" disabled :rows="4" /> --> |
|
|
<!-- <el-input v-model="form.remark" type="textarea" style="width: 572px;" disabled :rows="4" /> --> |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
</div> |
|
|
</div> |
|
|
<div v-show="tabIndex===1"> |
|
|
<div v-show="tabIndex===1"> |
|
|
<div> |
|
|
<div> |
|
|
<el-form-item label="定时类型" prop="timeType"> |
|
|
|
|
|
|
|
|
<el-form-item label="定时类型" prop="timerType"> |
|
|
<el-select |
|
|
<el-select |
|
|
v-model="form.timeType" |
|
|
|
|
|
|
|
|
v-model="form.timerType" |
|
|
style="width: 240px; height:30px" |
|
|
style="width: 240px; height:30px" |
|
|
clearable |
|
|
clearable |
|
|
placeholder="请选择" |
|
|
placeholder="请选择" |
|
|
|
|
|
@change="handleTimerType" |
|
|
> |
|
|
> |
|
|
<el-option |
|
|
<el-option |
|
|
v-for="item in timeTypeOptions" |
|
|
v-for="item in timeTypeOptions" |
|
@ -113,34 +125,42 @@ |
|
|
</el-select> |
|
|
</el-select> |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
</div> |
|
|
</div> |
|
|
<el-form-item v-if="form.timeType===1 || form.timeType===2" label="间隔" prop="interval"> |
|
|
|
|
|
<el-input-number v-model="form.interval" controls-position="right" :min="1" /> |
|
|
|
|
|
<span v-if="form.timeType===1" class="unit-name">小时</span> |
|
|
|
|
|
<span v-if="form.timeType===2" class="unit-name">天</span> |
|
|
|
|
|
|
|
|
<el-form-item v-if="form.timerType===1 || form.timerType===2" label="间隔" prop="timeInterval"> |
|
|
|
|
|
<div> |
|
|
|
|
|
<el-input-number v-model="form.timeInterval" controls-position="right" :min="1" /> |
|
|
|
|
|
<span v-if="form.timerType===1" class="unit-name">小时</span> |
|
|
|
|
|
<span v-if="form.timerType===2" class="unit-name">天</span> |
|
|
|
|
|
</div> |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
<!-- <el-form-item v-if="form.timeType===3" label="" prop="weekly"> |
|
|
|
|
|
|
|
|
<!-- <el-form-item v-if="form.timerType===3" label="" prop="weekly"> |
|
|
<el-checkbox-group v-model="form.weekly" style="margin-left: 80px;" @change="handleWeeklyTypes"> |
|
|
<el-checkbox-group v-model="form.weekly" style="margin-left: 80px;" @change="handleWeeklyTypes"> |
|
|
<el-checkbox v-for="item in weeklyOptions" :key="item.value" :label="item.value">{{ item.label }}</el-checkbox> |
|
|
<el-checkbox v-for="item in weeklyOptions" :key="item.value" :label="item.value">{{ item.label }}</el-checkbox> |
|
|
</el-checkbox-group> |
|
|
</el-checkbox-group> |
|
|
</el-form-item> --> |
|
|
</el-form-item> --> |
|
|
<el-form-item v-if="form.timeType===4" label="" prop="halfOrPart"> |
|
|
|
|
|
<el-radio-group v-model="form.halfOrPart" style="margin-left: 80px;"> |
|
|
|
|
|
<el-radio v-for="item in halfOrPartOptions" :key="item.value" :label="item.value">{{ item.label }}</el-radio> |
|
|
|
|
|
</el-radio-group> |
|
|
|
|
|
|
|
|
<el-form-item v-if="form.timerType===4" label="" prop="halfOrPart"> |
|
|
|
|
|
<el-checkbox-group v-if="form.timerType===4" v-model="form.halfOrPart" style="margin-left: 80px;"> |
|
|
|
|
|
<el-checkbox v-for="item in halfOrPartOptions" :key="item.value" :label="item.value">{{ item.label }}</el-checkbox> |
|
|
|
|
|
</el-checkbox-group> |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
<div> |
|
|
<div> |
|
|
<el-form-item label="开始时间" prop="startTime"> |
|
|
|
|
|
|
|
|
<el-form-item label="开始时间" prop="startTime2"> |
|
|
<el-date-picker |
|
|
<el-date-picker |
|
|
v-model="form.startTime" |
|
|
|
|
|
|
|
|
v-model="form.startTime2" |
|
|
type="datetime" |
|
|
type="datetime" |
|
|
placeholder="选择日期时间" |
|
|
placeholder="选择日期时间" |
|
|
:disabled="form.nowTime === true" |
|
|
:disabled="form.nowTime === true" |
|
|
format="yyyy-MM-dd HH:mm:ss" |
|
|
format="yyyy-MM-dd HH:mm:ss" |
|
|
value-format="yyyy-MM-dd HH:mm:ss" |
|
|
value-format="yyyy-MM-dd HH:mm:ss" |
|
|
:picker-options="{ |
|
|
:picker-options="{ |
|
|
disabledDate: (time) => |
|
|
|
|
|
time.getTime() < |
|
|
|
|
|
new Date(new Date().setHours(0, 0, 0, 0)) |
|
|
|
|
|
|
|
|
disabledDate: (time) =>{ |
|
|
|
|
|
// if (form.endTime) { |
|
|
|
|
|
// return time.getTime() > new Date(form.endTime).getTime() |
|
|
|
|
|
// }else{ |
|
|
|
|
|
// return time.getTime() < new Date(new Date().setHours(0, 0, 0, 0)) |
|
|
|
|
|
// } |
|
|
|
|
|
// return time.getTime() < new Date(new Date().setHours(0, 0, 0, 0)) |
|
|
|
|
|
return time.getTime() < Date.now() - 8.64e7 |
|
|
|
|
|
} |
|
|
}" |
|
|
}" |
|
|
style="width: 240px; height:30px" |
|
|
style="width: 240px; height:30px" |
|
|
/> |
|
|
/> |
|
@ -150,9 +170,9 @@ |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
</div> |
|
|
</div> |
|
|
<div> |
|
|
<div> |
|
|
<el-form-item label="结束时间" prop="endTime"> |
|
|
|
|
|
|
|
|
<el-form-item label="结束时间" prop="endTime2"> |
|
|
<el-date-picker |
|
|
<el-date-picker |
|
|
v-model="form.endTime" |
|
|
|
|
|
|
|
|
v-model="form.endTime2" |
|
|
class="task-date" |
|
|
class="task-date" |
|
|
type="datetime" |
|
|
type="datetime" |
|
|
placeholder="选择日期时间" |
|
|
placeholder="选择日期时间" |
|
@ -187,26 +207,27 @@ import rrOperation from '@crud/RR.operation' |
|
|
import crudOperation from '@crud/CRUD.operation' |
|
|
import crudOperation from '@crud/CRUD.operation' |
|
|
import pagination from '@crud/Pagination' |
|
|
import pagination from '@crud/Pagination' |
|
|
import Detail from './module/detail' |
|
|
import Detail from './module/detail' |
|
|
import { parseTime } from '@/utils/index.js' |
|
|
|
|
|
|
|
|
import { parseTime, timeToTimestamp } from '@/utils/index.js' |
|
|
import { getAllDev } from '@/api/system/logs' |
|
|
import { getAllDev } from '@/api/system/logs' |
|
|
import qs from 'qs' |
|
|
import qs from 'qs' |
|
|
import { exportFile } from '@/utils/index' |
|
|
import { exportFile } from '@/utils/index' |
|
|
import { mapGetters } from 'vuex' |
|
|
import { mapGetters } from 'vuex' |
|
|
|
|
|
|
|
|
const defaultForm = { id: null, type: null, deviceName: null, name: null, timeType: 2, halfOrPart: 1, interval: 1, startTime: parseTime(new Date().getTime()), endTime: null, nowTime: null, longTime: true, remark: null } |
|
|
|
|
|
|
|
|
const defaultForm = { id: null, taskType: null, deviceId: null, taskName: null, timerType: 2, timeInterval: 1, status: 1, startTime2: parseTime(new Date().getTime()), endTime2: null, nowTime: null, longTime: true, remark: null, halfOrPart: [] } |
|
|
|
|
|
|
|
|
export default { |
|
|
export default { |
|
|
name: 'TaskManage', |
|
|
name: 'TaskManage', |
|
|
components: { rrOperation, crudOperation, pagination, Detail }, |
|
|
components: { rrOperation, crudOperation, pagination, Detail }, |
|
|
cruds() { |
|
|
cruds() { |
|
|
return CRUD({ title: '任务', url: 'api/roles', crudMethod: crudTask, |
|
|
|
|
|
|
|
|
return CRUD({ title: '任务', url: 'api/device/initTimedTasks', crudMethod: crudTask, |
|
|
optShow: { |
|
|
optShow: { |
|
|
add: true, |
|
|
add: true, |
|
|
edit: true, |
|
|
edit: true, |
|
|
del: true, |
|
|
del: true, |
|
|
download: false, |
|
|
download: false, |
|
|
group: false |
|
|
group: false |
|
|
} |
|
|
|
|
|
|
|
|
}, |
|
|
|
|
|
sort: [] |
|
|
}) |
|
|
}) |
|
|
}, |
|
|
}, |
|
|
mixins: [presenter(), header(), form(defaultForm), crud()], |
|
|
mixins: [presenter(), header(), form(defaultForm), crud()], |
|
@ -216,8 +237,8 @@ export default { |
|
|
formVisible: false, |
|
|
formVisible: false, |
|
|
formTitle: '新增任务', |
|
|
formTitle: '新增任务', |
|
|
enabledTypeOptions: [ |
|
|
enabledTypeOptions: [ |
|
|
{ key: 'true', display_name: '激活' }, |
|
|
|
|
|
{ key: 'false', display_name: '锁定' } |
|
|
|
|
|
|
|
|
{ key: 1, display_name: '激活' }, |
|
|
|
|
|
{ key: 2, display_name: '锁定' } |
|
|
], |
|
|
], |
|
|
permission: { |
|
|
permission: { |
|
|
add: ['admin', 'task:add'], |
|
|
add: ['admin', 'task:add'], |
|
@ -290,29 +311,32 @@ export default { |
|
|
} |
|
|
} |
|
|
], |
|
|
], |
|
|
rules: { |
|
|
rules: { |
|
|
name: [ |
|
|
|
|
|
|
|
|
taskName: [ |
|
|
{ required: true, message: '请输入', trigger: 'blur' } |
|
|
{ required: true, message: '请输入', trigger: 'blur' } |
|
|
], |
|
|
], |
|
|
type: [ |
|
|
|
|
|
|
|
|
taskType: [ |
|
|
{ required: true, message: '请选择', trigger: 'change' } |
|
|
{ required: true, message: '请选择', trigger: 'change' } |
|
|
], |
|
|
], |
|
|
deviceName: [ |
|
|
|
|
|
|
|
|
deviceId: [ |
|
|
{ required: true, message: '请选择', trigger: 'change' } |
|
|
{ required: true, message: '请选择', trigger: 'change' } |
|
|
], |
|
|
], |
|
|
timeType: [ |
|
|
|
|
|
|
|
|
timerType: [ |
|
|
{ required: true, message: '请选择', trigger: 'change' } |
|
|
{ required: true, message: '请选择', trigger: 'change' } |
|
|
], |
|
|
], |
|
|
interval: [ |
|
|
|
|
|
|
|
|
timeInterval: [ |
|
|
{ required: true, message: '请输入', trigger: 'blur' } |
|
|
{ required: true, message: '请输入', trigger: 'blur' } |
|
|
], |
|
|
], |
|
|
startTime: [ |
|
|
startTime: [ |
|
|
{ required: true, message: '请选择', trigger: 'change' } |
|
|
|
|
|
|
|
|
{ required: true, message: '请选择', trigger: 'change' }, |
|
|
|
|
|
{ validator: this.validateDateRange, trigger: 'blur' } |
|
|
], |
|
|
], |
|
|
endTime: [ |
|
|
endTime: [ |
|
|
{ |
|
|
{ |
|
|
validator: (rule, value, callback) => { |
|
|
validator: (rule, value, callback) => { |
|
|
if (this.isRequired && !value) { |
|
|
if (this.isRequired && !value) { |
|
|
callback(new Error('请选择结束时间')) |
|
|
callback(new Error('请选择结束时间')) |
|
|
|
|
|
} else if (this.form.startTime > value) { |
|
|
|
|
|
callback(new Error('开始时间不得大于结束时间')) |
|
|
} else { |
|
|
} else { |
|
|
callback() |
|
|
callback() |
|
|
} |
|
|
} |
|
@ -323,9 +347,15 @@ export default { |
|
|
}, |
|
|
}, |
|
|
endPickerOptions: { |
|
|
endPickerOptions: { |
|
|
disabledDate: (time) => { |
|
|
disabledDate: (time) => { |
|
|
const startTime = this.form.startTime |
|
|
|
|
|
|
|
|
const startTime = new Date(this.form.startTime).getTime() |
|
|
|
|
|
// if (startTime) { |
|
|
|
|
|
// return time.getTime() < new Date(startTime).getTime() - 1 * 24 * 60 * 60 * 1000 || time.getTime() < startTime |
|
|
|
|
|
// } |
|
|
if (startTime) { |
|
|
if (startTime) { |
|
|
return time.getTime() < new Date(startTime).getTime() |
|
|
|
|
|
|
|
|
// return time.getTime() <= new Date(startTime).getTime() |
|
|
|
|
|
return (time.getTime()) <= startTime - 8.64e7 |
|
|
|
|
|
} else { |
|
|
|
|
|
return time.getTime() < Date.now() - 8.64e7 |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
@ -346,21 +376,58 @@ export default { |
|
|
methods: { |
|
|
methods: { |
|
|
// 新增与编辑前做的操作 |
|
|
// 新增与编辑前做的操作 |
|
|
[CRUD.HOOK.afterToCU](crud, form) { |
|
|
[CRUD.HOOK.afterToCU](crud, form) { |
|
|
|
|
|
this.tabIndex = 0 |
|
|
|
|
|
if (form.taskType) { |
|
|
|
|
|
this.getDev() |
|
|
|
|
|
} |
|
|
}, |
|
|
}, |
|
|
// 新增前将多选的值设置为空 |
|
|
// 新增前将多选的值设置为空 |
|
|
[CRUD.HOOK.beforeToAdd]() { |
|
|
[CRUD.HOOK.beforeToAdd]() { |
|
|
|
|
|
this.form.startTime2 = parseTime(new Date().getTime()) |
|
|
}, |
|
|
}, |
|
|
// 初始化编辑时候的角色与岗位 |
|
|
// 初始化编辑时候的角色与岗位 |
|
|
[CRUD.HOOK.beforeToEdit](crud, form) { |
|
|
[CRUD.HOOK.beforeToEdit](crud, form) { |
|
|
|
|
|
if (form.endTime === null) { |
|
|
|
|
|
form.longTime = true |
|
|
|
|
|
} |
|
|
|
|
|
if (form.timerType === 4 && form.timeInterval) { |
|
|
|
|
|
form.halfOrPart = form.timeInterval.split(',') |
|
|
|
|
|
} |
|
|
|
|
|
if (form.startTime) { |
|
|
|
|
|
this.form.startTime2 = parseTime(form.startTime) |
|
|
|
|
|
} |
|
|
|
|
|
if (form.endTime) { |
|
|
|
|
|
this.form.endTime2 = parseTime(form.endTime) |
|
|
|
|
|
} |
|
|
|
|
|
}, |
|
|
|
|
|
[CRUD.HOOK.beforeValidateCU](crud, form) { |
|
|
|
|
|
if (this.form.taskType === null || this.form.deviceId === null || this.form.name === null) { |
|
|
|
|
|
this.$message.error('请制定完善 “ 任务设定 ” ') |
|
|
|
|
|
} |
|
|
}, |
|
|
}, |
|
|
// 提交前做的操作 |
|
|
// 提交前做的操作 |
|
|
[CRUD.HOOK.afterValidateCU](crud) { |
|
|
[CRUD.HOOK.afterValidateCU](crud) { |
|
|
console.log(crud.form) |
|
|
|
|
|
if (crud.form.timeType !== 4) { |
|
|
|
|
|
this.form.halfOrPart = null |
|
|
|
|
|
|
|
|
if (this.form.startTime2) { |
|
|
|
|
|
this.form.startTime = timeToTimestamp(this.form.startTime2) |
|
|
|
|
|
} else { |
|
|
|
|
|
this.form.startTime = null |
|
|
|
|
|
} |
|
|
|
|
|
if (this.form.endTime2) { |
|
|
|
|
|
this.form.endTime = timeToTimestamp(this.form.endTime2) |
|
|
|
|
|
} else { |
|
|
|
|
|
this.form.endTime = null |
|
|
|
|
|
} |
|
|
|
|
|
if (this.form.timerType === 4 && this.form.halfOrPart) { |
|
|
|
|
|
this.form.timeInterval = this.form.halfOrPart.join(',') |
|
|
} |
|
|
} |
|
|
delete crud.form.remark |
|
|
delete crud.form.remark |
|
|
return false |
|
|
|
|
|
|
|
|
delete crud.form.longTime |
|
|
|
|
|
delete crud.form.startTime2 |
|
|
|
|
|
delete crud.form.endTime2 |
|
|
|
|
|
delete crud.form.nowTime |
|
|
|
|
|
delete crud.form.halfOrPart |
|
|
|
|
|
console.log(crud.form) |
|
|
|
|
|
return true |
|
|
}, |
|
|
}, |
|
|
changeFormTab(index) { |
|
|
changeFormTab(index) { |
|
|
this.tabIndex = index |
|
|
this.tabIndex = index |
|
@ -380,20 +447,33 @@ export default { |
|
|
}, |
|
|
}, |
|
|
handleNowTime(val) { |
|
|
handleNowTime(val) { |
|
|
if (val === true) { |
|
|
if (val === true) { |
|
|
this.form.startTime = parseTime(new Date().getTime()) |
|
|
|
|
|
|
|
|
this.form.startTime2 = parseTime(new Date().getTime()) |
|
|
} |
|
|
} |
|
|
}, |
|
|
}, |
|
|
|
|
|
// validateDateRange() { |
|
|
|
|
|
// if (this.form.startTime > this.form.endTime) { |
|
|
|
|
|
// this.$message.warning('开始时间不能大于结束时间') |
|
|
|
|
|
// return false |
|
|
|
|
|
// } |
|
|
|
|
|
// return true |
|
|
|
|
|
// }, |
|
|
handleTaskType(val) { |
|
|
handleTaskType(val) { |
|
|
this.form.deviceName = null |
|
|
|
|
|
|
|
|
this.form.deviceId = null |
|
|
if (val) { |
|
|
if (val) { |
|
|
this.getDev() |
|
|
this.getDev() |
|
|
} |
|
|
} |
|
|
}, |
|
|
}, |
|
|
|
|
|
handleTimerType(val) { |
|
|
|
|
|
if (val === 4) { |
|
|
|
|
|
this.form.timeInterval = null |
|
|
|
|
|
this.form.halfOrPart = [1] |
|
|
|
|
|
} |
|
|
|
|
|
}, |
|
|
// 获取设备 |
|
|
// 获取设备 |
|
|
getDev() { |
|
|
getDev() { |
|
|
getAllDev().then(res => { |
|
|
getAllDev().then(res => { |
|
|
let arr = [] |
|
|
let arr = [] |
|
|
if (this.form.type === 1) { |
|
|
|
|
|
|
|
|
if (this.form.taskType === 1) { |
|
|
arr = res.filter(item => item.deviceTypeId.name === '密集架') |
|
|
arr = res.filter(item => item.deviceTypeId.name === '密集架') |
|
|
.map(item => ({ |
|
|
.map(item => ({ |
|
|
value: item.id, |
|
|
value: item.id, |
|
@ -411,7 +491,6 @@ export default { |
|
|
}) |
|
|
}) |
|
|
} |
|
|
} |
|
|
this.deviceOptions = arr |
|
|
this.deviceOptions = arr |
|
|
console.log('this.deviceOptions', this.deviceOptions) |
|
|
|
|
|
}) |
|
|
}) |
|
|
}, |
|
|
}, |
|
|
clickRowHandler(row) { |
|
|
clickRowHandler(row) { |
|
@ -422,19 +501,24 @@ export default { |
|
|
this.$refs.detailRefs.detailVisible = true |
|
|
this.$refs.detailRefs.detailVisible = true |
|
|
}, |
|
|
}, |
|
|
// 改变状态 |
|
|
// 改变状态 |
|
|
changeEnabled(data, val) { |
|
|
|
|
|
this.$confirm('此操作将 "' + this.dict.label.user_status[val] + '" ' + data.username + ', 是否继续?', '提示', { |
|
|
|
|
|
|
|
|
changeStatus(data, val) { |
|
|
|
|
|
this.$confirm('此操作将改变任务状态,是否继续?', '提示', { |
|
|
confirmButtonText: '确定', |
|
|
confirmButtonText: '确定', |
|
|
cancelButtonText: '取消', |
|
|
cancelButtonText: '取消', |
|
|
type: 'warning' |
|
|
type: 'warning' |
|
|
}).then(() => { |
|
|
}).then(() => { |
|
|
// crudRoles.edit(data).then(res => { |
|
|
|
|
|
// this.crud.notify(this.dict.label.user_status[val] + '成功', CRUD.NOTIFICATION_TYPE.SUCCESS) |
|
|
|
|
|
|
|
|
const params = { |
|
|
|
|
|
'id': data.id, |
|
|
|
|
|
'status': val |
|
|
|
|
|
} |
|
|
|
|
|
console.log('params', params) |
|
|
|
|
|
// crudTask.FetchStatus(params).then(res => { |
|
|
|
|
|
// this.crud.notify('状态修改成功', CRUD.NOTIFICATION_TYPE.SUCCESS) |
|
|
// }).catch(() => { |
|
|
// }).catch(() => { |
|
|
// data.enabled = !data.enabled |
|
|
|
|
|
|
|
|
// data.status = !data.status |
|
|
// }) |
|
|
// }) |
|
|
}).catch(() => { |
|
|
}).catch(() => { |
|
|
data.enabled = !data.enabled |
|
|
|
|
|
|
|
|
// data.status = !data.status |
|
|
}) |
|
|
}) |
|
|
}, |
|
|
}, |
|
|
// 导出接口调用 |
|
|
// 导出接口调用 |
|
@ -443,7 +527,9 @@ export default { |
|
|
const params = { |
|
|
const params = { |
|
|
'logIds': ids |
|
|
'logIds': ids |
|
|
} |
|
|
} |
|
|
exportFile(this.baseApi + '/api/case/exportCaseLogList?' + qs.stringify(params, { indices: false })) |
|
|
|
|
|
|
|
|
console.log(params) |
|
|
|
|
|
// /case/exportCaseLogList |
|
|
|
|
|
exportFile(this.baseApi + '/api?' + qs.stringify(params, { indices: false })) |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
@ -458,26 +544,32 @@ export default { |
|
|
.head-search{ |
|
|
.head-search{ |
|
|
margin-bottom:0 ; |
|
|
margin-bottom:0 ; |
|
|
} |
|
|
} |
|
|
::v-deep .form-dialog.el-dialog{ |
|
|
|
|
|
width: 712px !important; |
|
|
|
|
|
.el-dialog__body{ |
|
|
|
|
|
padding: 0 0 30px 0; |
|
|
|
|
|
.archives-tab{ |
|
|
|
|
|
margin-bottom: 20px; |
|
|
|
|
|
} |
|
|
|
|
|
.el-form{ |
|
|
|
|
|
padding: 0 20px; |
|
|
|
|
|
.el-checkbox__label{ |
|
|
|
|
|
color: #fff !important; |
|
|
|
|
|
|
|
|
.form-dialog{ |
|
|
|
|
|
::v-deep .el-dialog{ |
|
|
|
|
|
width: 712px !important; |
|
|
|
|
|
.el-dialog__body{ |
|
|
|
|
|
padding: 0 0 30px 0; |
|
|
|
|
|
.archives-tab{ |
|
|
|
|
|
margin-bottom: 20px; |
|
|
} |
|
|
} |
|
|
.unit-name{ |
|
|
|
|
|
color: #fff; |
|
|
|
|
|
margin-left: 15px; |
|
|
|
|
|
|
|
|
.el-form{ |
|
|
|
|
|
padding: 0 20px; |
|
|
|
|
|
.el-checkbox__label{ |
|
|
|
|
|
color: #fff !important; |
|
|
|
|
|
} |
|
|
|
|
|
.unit-name{ |
|
|
|
|
|
color: #fff; |
|
|
|
|
|
margin-left: 15px; |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
.el-dialog__header .el-dialog__close::before{ |
|
|
|
|
|
position: absolute; |
|
|
|
|
|
right: -60px; |
|
|
|
|
|
bottom: -10px; |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
</style> |
|
|
</style> |
|
|
<style> |
|
|
<style> |
|
|
.el-picker-panel__footer .el-button, |
|
|
.el-picker-panel__footer .el-button, |
|
|