You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

592 lines
22 KiB
Vue

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="计划编号" prop="planMaintCode">
<el-input
v-model="queryParams.planMaintCode"
placeholder="请输入计划编号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<!-- <el-form-item label="保养级别1-日常保养2-月度保养3-年度保养" prop="maintLevel">-->
<!-- <el-input-->
<!-- v-model="queryParams.maintLevel"-->
<!-- placeholder="请输入保养级别1-日常保养2-月度保养3-年度保养"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<el-form-item label="保养级别" prop="maintLevel">
<el-select
v-model="queryParams.maintLevel"
placeholder="调试状态"
clearable
style="width: 240px"
>
<el-option
v-for="dict in dict.type.dms_maint_level"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<!-- <el-form-item label="保养组别" prop="maintGroup">-->
<!-- <el-input-->
<!-- v-model="queryParams.maintGroup"-->
<!-- placeholder="请输入保养组别"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="保养负责人" prop="maintSupervisor">-->
<!-- <el-input-->
<!-- v-model="queryParams.maintSupervisor"-->
<!-- placeholder="请输入保养负责人"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="本次保养时间" prop="maintTime">-->
<!-- <el-date-picker clearable-->
<!-- v-model="queryParams.maintTime"-->
<!-- type="date"-->
<!-- value-format="yyyy-MM-dd"-->
<!-- placeholder="请选择本次保养时间">-->
<!-- </el-date-picker>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="循环周期" prop="cyclePeriod">-->
<!-- <el-input-->
<!-- v-model="queryParams.cyclePeriod"-->
<!-- placeholder="请输入循环周期"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="创建方式1-人工创建2-自动创建" prop="createMethod">-->
<!-- <el-input-->
<!-- v-model="queryParams.createMethod"-->
<!-- placeholder="请输入创建方式1-人工创建2-自动创建"-->
<!-- clearable-->
<!-- @keyup.enter.native="handleQuery"-->
<!-- />-->
<!-- </el-form-item>-->
<el-form-item><div>-</div></el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['dms:maint:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['dms:maint:edit']"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['dms:maint:remove']"
>删除</el-button>
</el-col>
<!--el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['dms:maint:export']"
>导出</el-button>
</el-col-->
<!-- <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>-->
</el-row>
<el-table v-loading="loading" :data="maintList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<!-- <el-table-column label="主键标识" align="center" prop="planMaintId" />-->
<el-table-column label="计划编号" align="center" prop="planMaintCode" />
<!-- <el-table-column label="保养级别1-日常保养2-月度保养3-年度保养" align="center" prop="maintLevel" />-->
<el-table-column label="保养级别" align="center" prop="maintLevel">
<template slot-scope="scope">
<dict-tag :options="dict.type.dms_maint_level" :value="scope.row.maintLevel"/>
</template>
</el-table-column>
<el-table-column label="保养组别" align="center" prop="maintGroup" />
<el-table-column label="保养负责人" align="center" prop="maintSupervisor" />
<el-table-column label="本次保养时间" align="center" prop="maintTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.maintTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="时限" align="center" prop="timeLimit" >
<template slot-scope="scope">
<span v-show="scope.row.timeLimitDays!=0&&scope.row.timeLimitDays!=null">{{scope.row.timeLimitDays}}天</span>
<span v-show="scope.row.timeLimitHours!=0&&scope.row.timeLimitHours!=null">{{scope.row.timeLimitHours}}小时</span>
</template>
</el-table-column>
<!-- <el-table-column label="是否标识1-是2-否" align="center" prop="isFlag" />-->
<el-table-column label="备注" align="center" prop="remark" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-right"
@click="jumpToDetail(scope.row)"
v-hasPermi="['dms:checkplan:edit']"
>计划明细</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['dms:maint:edit']"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['dms:maint:remove']"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改保养计划信息对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-form-item label="计划编号" prop="planMaintCode" v-if="false">
<el-input v-model="form.planMaintCode" disabled/>
</el-form-item>
<el-form-item label="保养级别" prop="maintLevel">
<el-radio-group v-model="form.maintLevel">
<el-radio
v-for="dict in dict.type.dms_maint_level"
:key="dict.value"
:label="parseInt(dict.value)"
>{{dict.label}}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="保养组别" prop="maintGroup">
<el-input v-model="form.maintGroup" placeholder="请输入保养组别,如A组" />
</el-form-item>
<el-form-item label="保养负责人" prop="maintSupervisor" >
<el-select v-model="form.maintSupervisor" placeholder="请选择保养负责人">
<el-option
v-for="item in userList"
:key="item.userId.toString()"
:label="item.nickName"
:value="item.nickName">
</el-option>
</el-select>
</el-form-item>
<!-- <el-form-item label="保养负责人" prop="maintSupervisor">-->
<!-- <el-input v-model="form.maintSupervisor" placeholder="请输入保养负责人" />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="本次保养时间" prop="maintTime">-->
<!-- <el-date-picker clearable-->
<!-- v-model="form.maintTime"-->
<!-- type="date"-->
<!-- value-format="yyyy-MM-dd"-->
<!-- placeholder="请选择本次保养时间">-->
<!-- </el-date-picker>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="循环周期" prop="cyclePeriod">-->
<!-- <el-input v-model="form.cyclePeriod" placeholder="请输入循环周期" />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="创建方式1-人工创建2-自动创建" prop="createMethod">-->
<!-- <el-input v-model="form.createMethod" placeholder="请输入创建方式1-人工创建2-自动创建" />-->
<!-- </el-form-item>-->
<el-form-item label="job" prop="jobId" v-if="false">
<el-input v-model="form.jobId" />
</el-form-item>
<el-row>
<el-col :span="12">
<el-form-item label="年" prop="year" v-if="form.maintLevel==3">
<!-- <el-input-number v-model="form.hour" placeholder="请输入几点" :precision="0" :min="0" :max="23"/>月-->
<!-- <el-input-number v-model="form.timeLimitHours" placeholder="请输入几日" :precision="0" :min="0" :max="31"/>日-->
<el-input-number v-model="form.year" placeholder="请输入年份" :precision="0" :min="0" :max="2030"/>年
</el-form-item>
<el-form-item label="周" prop="week" v-if="form.maintLevel==2">
<!-- <el-input-number v-model="form.hour" placeholder="请输入几点" :precision="0" :min="0" :max="23"/>月-->
<!-- <el-input-number v-model="form.timeLimitHours" placeholder="请输入几日" :precision="0" :min="0" :max="31"/>日-->
<el-input-number v-model="form.week" placeholder="请输入周几" :precision="0" :min="0" :max="7"/>周
</el-form-item>
<el-form-item label="月" prop="month">
<!-- <el-input-number v-model="form.hour" placeholder="请输入几点" :precision="0" :min="0" :max="23"/>月-->
<!-- <el-input-number v-model="form.timeLimitHours" placeholder="请输入几日" :precision="0" :min="0" :max="31"/>日-->
<el-input-number v-model="form.month" placeholder="请输入月份" :precision="0" :min="0" :max="12"/>月
</el-form-item>
<el-form-item label="天" prop="day" v-if="form.maintLevel!=2">
<!-- <el-input-number v-model="form.hour" placeholder="请输入几点" :precision="0" :min="0" :max="23"/>月-->
<!-- <el-input-number v-model="form.timeLimitHours" placeholder="请输入几日" :precision="0" :min="0" :max="31"/>日-->
<el-input-number v-model="form.day" placeholder="请输入几号" :precision="0" :min="0" :max="30"/>日
</el-form-item>
<el-form-item label="时" prop="hour">
<el-input-number v-model="form.hour" placeholder="请输入几点" :precision="0" :min="0" :max="23"/>时
<!-- <el-input-number v-model="form.timeLimitHours" placeholder="请输入几日" :precision="0" :min="0" :max="31"/>日-->
<!-- <el-input-number v-model="form.week" placeholder="请输入周几" :precision="0" :min="0" :max="7"/>周-->
</el-form-item>
<el-form-item label="时限" prop="timeLimitDays">
<el-input-number v-model="form.timeLimitDays" placeholder="请输入天数" :precision="0" :min="0" :max="10000"/>天
<el-input-number v-model="form.timeLimitHours" placeholder="请输入小时" :precision="0" :min="0" :max="23"/>小时
</el-form-item>
</el-col>
</el-row>
<!-- <el-form-item label="定时计划" prop="cronExpression">
<el-input v-model="form.cronExpression" placeholder="请输入cron执行表达式" readonly>
<template slot="append">
<el-button type="primary" @click="handleShowCron">
生成计划表达式
<i class="el-icon-time el-icon&#45;&#45;right"></i>
</el-button>
</template>
</el-input>
</el-form-item>-->
<!-- <el-form-item label="定时计划" prop="cronExpression">-->
<!-- <el-input-->
<!-- :value="form.cronExpression"-->
<!-- readonly-->
<!-- placeholder="只能点击右侧生成器">-->
<!-- <template slot="append">-->
<!-- <el-button type="primary" @click="handleShowCron">-->
<!-- 生成计划表达式-->
<!-- <i class="el-icon-time el-icon&#45;&#45;right"></i>-->
<!-- </el-button>-->
<!-- </template>-->
<!-- </el-input>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="是否标识1-是2-否" prop="isFlag">-->
<!-- <el-input v-model="form.isFlag" placeholder="请输入是否标识1-是2-否" />-->
<!-- </el-form-item>-->
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
<el-dialog title="Cron表达式生成器" :visible.sync="openCron" append-to-body destroy-on-close class="scrollbar">
<crontab @hide="openCron=false" @fill="crontabFill" :expression="expression"></crontab>
</el-dialog>
</div>
</template>
<script>
import { listMaint, getMaint, delMaint, addMaint, updateMaint } from "@/api/dms/maint";
import { listLedger } from '@/api/dms/ledger'
import { listStation } from '@/api/dms/station'
import { listStandard } from '@/api/dms/standard'
import {findUserList} from "@//api/system/user";
import Crontab from '@/components/Crontab/index'
import {listDmsBaseInspectStandard} from "@/api/dms/dmsBaseInspectStandard";
import {listUser} from "@/api/system/user";
export default {
components: { Crontab },
name: "Maint",
dicts:['dms_maint_level','dms_create_method','dms_maint_status'],
data() {
return {
// 传入的表达式
expression: "",
openCron:false,
// 遮罩层
loading: true,
// 选中数组
ids: [],
// 选中数组
codes: [],
// 子表选中数据
checkedDmsPlanMaintDetail: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
ledgerList:[],
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
userList: [],
// 保养计划信息表格数据
maintList: [],
stationList:[],
standardList:[],
// 保养计划明细表格数据
dmsPlanMaintDetailList: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
planMaintCode: null,
maintLevel: null,
maintGroup: null,
maintSupervisor: null,
maintTime: null,
cyclePeriod: null,
maintStatus: null,
createMethod: null,
isFlag: null,
params:{
beginTime: null,
endTime: null,
},
},
// 表单参数
form: {},
// 表单校验
rules: {
planMaintCode: [
{ required: true, message: "计划编号不能为空", trigger: "blur" }
],
// cronExpression: [
// { required: true, message: "定时计划不能为空", trigger: "blur" }
// ],
week: [
{ required: true, message: "定时计划周不能为空", trigger: "blur" }
],
hour: [
{ required: true, message: "定时计划时不能为空", trigger: "blur" }
],
maintLevel: [
{ required: true, message: "保养计划不能为空", trigger: "blur" }
],
}
};
},
created() {
this.getList();
this.getDevice();
this.getStation();
this.getStandard();
this.getUser();
},
methods: {
getUser() {
findUserList(null).then(response => {
this.userList = response.data;
console.log(this.userList)
});
},
/** cron表达式按钮操作 */
handleShowCron() {
this.expression = this.form.cronExpression;
this.openCron = true;
},
/** 确定后回传值 */
crontabFill(value) {
// this.form.cronExpression = value;
this.$set(this.form,'cronExpression',value)
},
//跳转
jumpToDetail(row){
this.$router.push('/dms/maintDetail/index/' + row.planMaintId+'/' + row.planMaintCode)
},
//查询设备信息
getDevice(){
listLedger().then(response => {
// console.log(response)
this.ledgerList = response.rows;
})
},
/** 查询保养部位信息列表 */
getStation() {
listStation(this.queryParams).then(response => {
this.stationList = response.rows;
});
},
/** 查询保养标准信息列表 */
getStandard() {
listStandard(this.queryParams).then(response => {
this.standardList = response.rows;
});
},
/** 查询保养计划信息列表 */
getList() {
this.loading = true;
listMaint(this.queryParams).then(response => {
this.maintList = response.rows;
this.total = response.total;
this.loading = false;
});
},
// 取消按钮
cancel() {
this.open = false;
this.reset();
},
// 表单重置
reset() {
this.form = {
planMaintId: null,
planMaintCode: null,
maintLevel: null,
maintGroup: null,
maintSupervisor: null,
maintTime: null,
cyclePeriod: null,
maintStatus: null,
createMethod: null,
cronExpression: null,
isFlag: null,
remark: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null
};
this.dmsPlanMaintDetailList = [];
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map(item => item.planMaintId)
this.codes = selection.map(item => item.planMaintCode)
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加保养计划信息";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const planMaintId = row.planMaintId || this.ids
getMaint(planMaintId).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改保养计划信息";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
this.form.dmsPlanMaintDetailList = this.dmsPlanMaintDetailList;
if (this.form.planMaintId != null) {
updateMaint(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addMaint(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const planMaintIds = row.planMaintId || this.ids;
const planMatinCode = row.planMaintCode || this.ids;
this.$modal.confirm('是否确认删除保养计划编号为"' + planMatinCode + '"的数据项?').then(function() {
return delMaint(planMaintIds);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
},
/** 保养计划明细序号 */
rowDmsPlanMaintDetailIndex({ row, rowIndex }) {
row.index = rowIndex + 1;
},
/** 保养计划明细添加按钮操作 */
handleAddDmsPlanMaintDetail() {
let obj = {};
obj.deviceId = "";
obj.maintStationId = "";
obj.maintProtocol = "";
obj.operationDescription = "";
obj.isFlag = "";
obj.remark = "";
this.dmsPlanMaintDetailList.push(obj);
},
/** 保养计划明细删除按钮操作 */
handleDeleteDmsPlanMaintDetail() {
if (this.checkedDmsPlanMaintDetail.length == 0) {
this.$modal.msgError("请先选择要删除的保养计划明细数据");
} else {
const dmsPlanMaintDetailList = this.dmsPlanMaintDetailList;
const checkedDmsPlanMaintDetail = this.checkedDmsPlanMaintDetail;
this.dmsPlanMaintDetailList = dmsPlanMaintDetailList.filter(function(item) {
return checkedDmsPlanMaintDetail.indexOf(item.index) == -1
});
}
},
/** 复选框选中数据 */
handleDmsPlanMaintDetailSelectionChange(selection) {
this.checkedDmsPlanMaintDetail = selection.map(item => item.index)
},
/** 导出按钮操作 */
handleExport() {
this.download('dms/maint/export', {
...this.queryParams
}, `maint_${new Date().getTime()}.xlsx`)
}
}
};
</script>