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.

1343 lines
46 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="100px">
<el-form-item label="计划编码" prop="planCode">
<el-input
v-model="queryParams.planCode"
placeholder="请输入计划编码"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="计划名称" prop="planName">
<el-input
v-model="queryParams.planName"
placeholder="请输入计划名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="车间" prop="planWorkshop">
<el-select v-model="queryParams.planWorkshop" placeholder="请选择车间" clearable>
<el-option
v-for="work in workCenterList"
:key="work.factoryCode"
:label="work.factoryName"
:value="work.factoryCode"
/>
</el-select>
</el-form-item>
<el-form-item label="计划状态" prop="planStatus">
<el-select v-model="queryParams.planStatus" placeholder="请选择计划状态" clearable>
<el-option
v-for="dict in dict.type.sys_normal_disable"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item v-if="false" label="产线" prop="planProdLine">
<el-input
v-model="queryParams.planProdLine"
placeholder="请输入产线"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item v-if="false" label="设备名称" prop="equipmentName">
<el-input
v-model="queryParams.equipmentName"
placeholder="请输入设备名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item v-if="false" label="设备编码" prop="equipmentCode">
<el-input
v-model="queryParams.equipmentCode"
placeholder="请输入设备编码"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item v-if="false" label="循环周期" prop="planLoop">
<el-input
v-model="queryParams.planLoop"
placeholder="请输入循环周期"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item v-if="false" label="循环执行时间开始" prop="planLoopStart">
<el-date-picker clearable
v-model="queryParams.planLoopStart"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择循环执行时间开始">
</el-date-picker>
</el-form-item>
<el-form-item v-if="false" label="循环执行时间结束" prop="planLoopEnd">
<el-date-picker clearable
v-model="queryParams.planLoopEnd"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择循环执行时间结束">
</el-date-picker>
</el-form-item>
<el-form-item v-if="false" label="巡检人员" prop="planPerson">
<el-input
v-model="queryParams.planPerson"
placeholder="请输入巡检人员"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item v-if="false" label="是否可生产-限制" prop="planRestrict">
<el-input
v-model="queryParams.planRestrict"
placeholder="请输入是否可生产-限制"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item v-if="false" label="是否委外" prop="planOutsource">
<el-input
v-model="queryParams.planOutsource"
placeholder="请输入是否委外"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item v-if="false" label="委外工单编码" prop="workCode">
<el-input
v-model="queryParams.workCode"
placeholder="请输入委外工单编码"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item v-if="false" label="工厂" prop="factoryCode">
<el-input
v-model="queryParams.factoryCode"
placeholder="请输入工厂"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item v-if="false" label="备用字段1" prop="attr1">
<el-input
v-model="queryParams.attr1"
placeholder="请输入备用字段1"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item v-if="false" label="备用字段2" prop="attr2">
<el-input
v-model="queryParams.attr2"
placeholder="请输入备用字段2"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item v-if="false" label="备用字段3" prop="attr3">
<el-input
v-model="queryParams.attr3"
placeholder="请输入备用字段3"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item v-if="false" label="删除标志" prop="delFlag">
<el-input
v-model="queryParams.delFlag"
placeholder="请输入删除标志"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item v-if="false" label="创建人" prop="createBy">
<el-input
v-model="queryParams.createBy"
placeholder="请输入创建人"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item v-if="false" label="创建时间" prop="createTime">
<el-date-picker
v-model="queryParams.createTimeArray"
type="daterange"
align="right"
unlink-panels
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
value-format="yyyy-MM-dd"
:picker-options="pickerOptions">
</el-date-picker>
</el-form-item>
<el-form-item v-if="false" label="更新人" prop="updateBy">
<el-input
v-model="queryParams.updateBy"
placeholder="请输入更新人"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item v-if="false" label="更新时间" prop="updateTime">
<el-date-picker
v-model="queryParams.updateTimeArray"
type="daterange"
align="right"
unlink-panels
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
value-format="yyyy-MM-dd"
:picker-options="pickerOptions">
</el-date-picker>
</el-form-item>
<el-form-item label="循环范围开始" prop="planLoopStart">
<el-date-picker
v-model="queryParams.loopStartArray"
type="daterange"
align="right"
unlink-panels
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
value-format="yyyy-MM-dd"
:picker-options="pickerOptions">
</el-date-picker>
</el-form-item>
<el-form-item label="循环范围结束" prop="planLoopEnd">
<el-date-picker
v-model="queryParams.loopEndArray"
type="daterange"
align="right"
unlink-panels
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
value-format="yyyy-MM-dd"
:picker-options="pickerOptions">
</el-date-picker>
</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="['device:inspectionPlan:add']"
>添加计划
</el-button>
</el-col>
<el-col v-if="false" :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['device:inspectionPlan: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="['device:inspectionPlan: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="['device:inspectionPlan:export']"
>导出
</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="planList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column v-if="false" label="主键" align="center" prop="planId"/>
<el-table-column width="60" align="center" label="序号" type="index"></el-table-column>
<el-table-column width="150" label="计划编码" align="center" prop="planCode"/>
<el-table-column width="200" label="计划名称" align="center" prop="planName"/>
<el-table-column width="100" label="车间编码" align="center" prop="planWorkshop"/>
<el-table-column width="150" label="车间" align="center" prop="workCenterName"/>
<el-table-column v-if="false" label="产线" align="center" prop="planProdLine"/>
<el-table-column v-if="false" label="设备名称" align="center" prop="equipmentName"/>
<el-table-column v-if="false" label="设备编码" align="center" prop="equipmentCode"/>
<el-table-column label="循环周期" align="center" prop="planLoop"/>
<el-table-column width="100" label="循环周期类型" align="center" prop="planLoopType">
<template slot-scope="scope">
<dict-tag :options="dict.type.device_loop_type" :value="scope.row.planLoopType"/>
</template>
</el-table-column>
<el-table-column label="循环范围开始" align="center" prop="planLoopStart" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.planLoopStart, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="循环范围结束" align="center" prop="planLoopEnd" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.planLoopEnd, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column v-if="false" label="巡检人员" align="center" prop="planPerson"/>
<el-table-column label="计划状态" align="center" prop="planStatus">
<template slot-scope="scope">
<dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.planStatus"/>
</template>
</el-table-column>
<el-table-column v-if="false" label="是否可生产-限制" align="center" prop="planRestrict"/>
<el-table-column v-if="false" label="维护类型" align="center" prop="planType"/>
<el-table-column v-if="false" label="是否委外" align="center" prop="planOutsource"/>
<el-table-column v-if="false" label="委外工单编码" align="center" prop="workCode"/>
<el-table-column v-if="false" label="工厂" align="center" prop="factoryCode"/>
<el-table-column v-if="false" label="备用字段1" align="center" prop="attr1"/>
<el-table-column v-if="false" label="备用字段2" align="center" prop="attr2"/>
<el-table-column v-if="false" label="备用字段3" align="center" prop="attr3"/>
<el-table-column v-if="false" label="删除标志" align="center" prop="delFlag"/>
<el-table-column label="创建人" align="center" prop="createBy"/>
<el-table-column label="创建时间" align="center" prop="createTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="更新人" align="center" prop="updateBy"/>
<el-table-column label="更新时间" align="center" prop="updateTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column width="180" label="操作" align="center" class-name="small-padding fixed-width" fixed="right">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['device:inspectionPlan:edit']"
>修改
</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['device:inspectionPlan: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 v-loading="planLoading" :title="title" :visible.sync="open" width="900px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<div class="my-step-mar">
<el-steps :active="inspectionPlanStep" finish-status="success" align-center>
<el-step title="巡检计划基本信息"></el-step>
<el-step title="选择设备、巡检项目"></el-step>
<el-step title="巡检人员"></el-step>
</el-steps>
<!-- 巡检计划基本信息 -->
<div class="my-step-body" v-if="inspectionPlanStep==0">
<el-row>
<el-col :span="8" :offset="2">
<el-form-item label="计划名称">
<el-input v-model="form.planName" placeholder="请输入计划名称"/>
</el-form-item>
</el-col>
<el-col :span="8" :offset="1">
<el-form-item label="循环周期">
<el-input-number v-model="form.planLoop" label=""></el-input-number>
</el-form-item>
</el-col >
<el-col :span="2">
<el-select v-model="form.planLoopType" placeholder="周期">
<el-option
v-for="dict in dict.type.device_loop_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-col>
</el-row>
<el-row>
<el-col :span="8" :offset="2">
<el-form-item label="计划状态">
<el-select v-model="form.planStatus" placeholder="计划状态">
<el-option
v-for="dict in dict.type.sys_normal_disable"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8" :offset="1">
<el-form-item label="车间">
<el-select @change="changeCenter" v-model="form.planWorkshop" placeholder="请选择车间">
<el-option
v-for="item in workCenterList"
:key="item.factoryCode"
:label="item.factoryName"
:value="item.factoryCode">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span=12 :offset="2">
<el-form-item label-width="100px" label="循环时间范围">
<el-date-picker
@change="changeArray"
v-model="form.planTimeArray"
type="datetimerange"
range-separator="至"
start-placeholder="开始时间"
end-placeholder="结束时间">
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
</div>
<!-- 选择设备、巡检项目 -->
<div class="my-step-body" v-if="inspectionPlanStep==1">
<el-row>
<el-col class="my-step-mar" :span="1.5">
<el-button
type="primary"
plain
size="mini"
@click="selectEquBtn">
选择设备
</el-button>
</el-col>
</el-row>
<el-table
border
:data="form.equipmentItem"
stripe
style="width: 100%">
<el-table-column
prop="equipmentCode"
label="设备编码"
width="180">
</el-table-column>
<el-table-column
prop="equipmentName"
label="设备名称"
width="180">
</el-table-column>
<el-table-column
prop="itemTempName"
label="部位"
width="300">
<template slot-scope="scope">
<div v-html="scope.row.equPlanDetailList.filter(detail => detail.equPlanStandardList.filter(standard => standard.showFlag == false).length == 0).map(item => item.itemName).join(',')"></div>
</template>
</el-table-column>
<el-table-column
fixed="right"
label="操作"
>
<template slot-scope="scope">
<el-button @click="editorTheItem(scope.row)" type="text" size="small">检查项</el-button>
<el-button @click="delTheEquItem(scope.row)" type="text" size="small">删除</el-button>
</template>
</el-table-column>
</el-table>
<!-- 编辑检查项弹窗 -->
<el-dialog
title="编辑检查项"
:visible.sync="editorItem"
width="50%"
append-to-body
>
<!-- 编辑检查标准 -->
<el-table
border
:data="itemDetailList"
v-loading="detailLoading"
stripe
@selection-change="selectChangeEqu"
style="width: 100%">
<el-table-column
prop="itemName"
label="部位">
</el-table-column>
<el-table-column
prop="itemMethod"
label="方法">
</el-table-column>
<el-table-column
prop="itemTools"
label="工具">
</el-table-column>
<el-table-column
width="200"
prop="standardName"
label="检查标准">
</el-table-column>
<el-table-column
prop="standardTypeName"
label="标准类型">
</el-table-column>
<el-table-column
fixed="right"
label="操作"
>
<template slot-scope="scope">
<el-button @click="delStandard(scope.row)" type="text" size="small">删除</el-button>
</template>
</el-table-column>
</el-table>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="standardBtn">确 定</el-button>
</span>
</el-dialog>
<!-- 选择设备弹窗 -->
<el-dialog
title="选择设备"
:visible.sync="selectEqu"
width="1100px"
append-to-body
>
<el-form :model="equipmentQuery" ref="queryBPForm" size="small" :inline="true" v-show="showSearch"
label-width="68px">
<el-form-item label="组线" prop="groupLine">
<el-select v-model="equipmentQuery.groupLine" placeholder="请选择组线">
<el-option
v-for="group in groupLineList"
:key="group.equipmentCode"
:label="group.equipmentName"
:value="group.equipmentCode"
/>
</el-select>
</el-form-item>
<el-form-item label="设备编码">
<el-input
v-model="equipmentQuery.equipmentCode"
placeholder="请输入设备编码"
clearable
/>
</el-form-item>
<el-form-item label="设备名称">
<el-input
v-model="equipmentQuery.equipmentName"
placeholder="请输入设备名称"
clearable
/>
</el-form-item>
<el-form-item v-if="false" label="设备类型">
<el-input
v-model="equipmentQuery.equipmentName"
placeholder="请输入设备类型"
clearable
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="getEquList">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetEqu">重置</el-button>
</el-form-item>
</el-form>
<!-- 搜索-设备列表 -->
<el-table
:data="queryEquipment"
v-loading="equLoading"
stripe
@selection-change="selectChangeEqu"
style="width: 100%">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column
prop="equipmentCode"
label="设备编码">
</el-table-column>
<el-table-column
prop="equipmentName"
label="设备名称">
</el-table-column>
<el-table-column
prop="equipmentTypeName"
label="设备类型">
</el-table-column>
<el-table-column
prop="workshopName"
label="工作中心">
</el-table-column>
</el-table>
<pagination
v-show="equTotal>0"
:total="equTotal"
:page.sync="equipmentQuery.pageNum"
:limit.sync="equipmentQuery.pageSize"
@pagination="getEquList"
/>
<span slot="footer" class="dialog-footer">
<el-button @click="selectEqu = false">取 消</el-button>
<el-button type="primary" @click="confirmSelectEquBtn">确 定</el-button>
</span>
</el-dialog>
</div>
<!-- 巡检人员 -->
<div class="my-step-body" v-if="inspectionPlanStep==2">
<el-row>
<el-col :span="24" :offset="1">
<el-transfer
:titles="['人员','已选择人员']"
filterable
:filter-method="filterMethod"
filter-placeholder="请输入人员名称"
v-model="selectPersonList"
:data="personList">
</el-transfer>
</el-col>
</el-row>
</div>
</div>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button v-if="inspectionPlanStep>0" @click="stepLast">上一步</el-button>
<el-button v-if="inspectionPlanStep<2" @click="stepNext">下一步</el-button>
<el-button v-if="inspectionPlanStep==2" type="primary" @click="submitForm"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
listPlan,
getPlan,
delPlan,
addPlan,
updatePlan,
getEquList,
formatEquItem,
getPersonList, getWorkCenter, initUpdatePlanInfo, getGroupLine
} from "@/api/device/plan";
import plan from "@/views/plan/plan/index.vue";
export default {
name: "Plan",
dicts: ['device_loop_type', 'sys_normal_disable'],
data() {
return {
// 设备组线
groupLineList:[],
// 加载
planLoading:false,
// 工作中心list
workCenterList: [],
// 巡检人员选择穿梭框
personList: [],
selectPersonList: [],
// 编辑检查标准list
itemDetailList: [],
// 编辑检查标准loading
detailLoading: false,
// 选中的设备信息
selectEquList: [],
// 设备信息loading
equLoading: false,
// 搜索到的设备总数
equTotal: 0,
// 搜索到的设备list
queryEquipment: [],
// 设备弹窗搜索条件
equipmentQuery: {
equipmentCode: null,
equipmentName: null,
workshopCode: null,
groupLine:null,
pageNum: 1,
pageSize: 10,
},
// 选择设备弹窗
selectEqu: false,
// 编辑检查项弹窗
editorItem: false,
// 巡检计划步骤
inspectionPlanStep: 0,
// 日期范围选择快捷
pickerOptions: {
shortcuts: [{
text: '最近一周',
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
picker.$emit('pick', [start, end]);
}
}, {
text: '最近一个月',
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
picker.$emit('pick', [start, end]);
}
}, {
text: '最近三个月',
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
picker.$emit('pick', [start, end]);
}
}]
},
// 遮罩层
loading: true,
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 计划表格数据
planList: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
planCode: null,
planName: null,
planWorkshop: null,
planProdLine: null,
equipmentName: null,
equipmentCode: null,
planLoop: null,
planLoopType: null,
planLoopStart: null,
planLoopEnd: null,
planPerson: null,
planStatus: null,
planRestrict: null,
planType: "inspection",
planOutsource: null,
workCode: null,
factoryCode: null,
attr1: null,
attr2: null,
attr3: null,
delFlag: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null,
createTimeArray: [],
updateTimeArray: [],
loopEndArray: [],
loopStartArray: [],
},
// 表单参数
form: {
planLoopType: 'day',
planName: null,
planStatus: '0',
planPerson: null,
planLoop: null,
planTimeArray: [],
equipmentItem: [],
personList: [],
planWorkshop: null,
planType: "inspection",
},
// 表单校验
rules: {}
};
},
created() {
this.setWorkCenter();
this.getList();
},
methods: {
// 选择工作中心
changeCenter() {
},
// 改变巡检周期事件
changeArray(e) {
if (this.form.planLoop == null) {
this.$message({
message: '请输入循环周期!',
type: 'warning'
})
this.form.planTimeArray = [];
return
}
if (this.form.planLoopType == null) {
this.$message({
message: '请选择循环类型!',
type: 'warning'
})
this.form.planTimeArray = [];
return
}
//
// // 检验
// if (this.form.planLoopType == 'day'){
// // 计算日期差值(以毫秒为单位)
// let diff = this.form.planTimeArray[1].getTime() - this.form.planTimeArray[0].getTime();
// // 转换为天数
// let days = Math.floor(diff / (1000 * 60 * 60 * 24));
//
// if (days > this.form.planLoop) {
// this.$message({
// message: '可执行时间范围为'+days+'天,循环周期为'+days+'天,超过循环周期'+(days-this.form.planLoop)+'天,请重新选择执行时间!',
// type: 'warning'
// })
// this.form.planTimeArray = [];
// return
// }
// }
//
// if (this.form.planLoopType == 'week') {
// // 计算日期差值(以毫秒为单位)
// let diff = this.form.planTimeArray[1].getTime() - this.form.planTimeArray[0].getTime();
// // 转换为周数
// let weeks = Math.floor(diff / (1000 * 60 * 60 * 24 * 7));
//
// if (weeks > (this.form.planLoop/7)) {
// this.$message({
// message: '可执行时间范围为'+weeks+'周,循环周期为'+weeks+'周,超过循环周期'+(weeks*7-this.form.planLoop)+'天,请重新选择执行时间!',
// type: 'warning'
// })
// this.form.planTimeArray = [];
// return
// }
// }
//
// if (this.form.planLoopType == 'month'){
// let monthsDiff = (this.form.planTimeArray[1].getFullYear() - this.form.planTimeArray[0].getFullYear()) * 12 + this.form.planTimeArray[1].getMonth() - this.form.planTimeArray[0].getMonth();
//
// if (monthsDiff > this.form.planLoop) {
// this.$message({
// message: '可执行时间范围为'+monthsDiff+'月,循环周期为'+monthsDiff+'月,超过循环周期'+(monthsDiff-this.form.planLoop)+'月,请重新选择执行时间!',
// type: 'warning'
// })
// this.form.planTimeArray = [];
// return
// }
// }
//
// if (this.form.planLoopType == 'season'){
// let monthsDiff = (this.form.planTimeArray[1].getFullYear() - this.form.planTimeArray[0].getFullYear()) * 12 + this.form.planTimeArray[1].getMonth() - this.form.planTimeArray[0].getMonth();
//
// if (monthsDiff*3 > this.form.planLoop) {
// this.$message({
// message: '可执行时间范围为'+monthsDiff*3+'季度,循环周期为'+monthsDiff*3+'季度,超过循环周期'+(monthsDiff-this.form.planLoop)+'月,请重新选择执行时间!',
// type: 'warning'
// })
// this.form.planTimeArray = [];
// return
// }
// }
//
// if (this.form.planLoopType == 'year'){
// // 计算年份差值
// let yearsDiff = this.form.planTimeArray[1].getFullYear() - this.form.planTimeArray[0].getFullYear();
//
// if (yearsDiff > this.form.planLoop) {
// this.$message({
// message: '可执行时间范围为'+yearsDiff+'年,循环周期为'+yearsDiff+'年,超过循环周期'+(yearsDiff-this.form.planLoop)+'年,请重新选择执行时间!',
// type: 'warning'
// })
// this.form.planTimeArray = [];
// return
// }
// }
},
// 获取设备List-置入穿梭框信息
setPerson() {
getPersonList().then(response => {
for (let i = 0; i < response.data.length; i++) {
this.personList.push({
label: response.data[i].nickName + '(' + response.data[i].userName + ')',
key: response.data[i].userName,
})
}
});
},
// 巡检人员穿梭框
filterMethod(query, item) {
return item.label.indexOf(query) > -1;
},
// 点击选择设备按钮
selectEquBtn() {
this.equipmentQuery = {
equipmentCode: null,
equipmentName: null,
workshopCode: null,
groupLine:null,
pageNum: 1,
pageSize: 10,
};
// 获取设备组线信息
getGroupLine().then(response => {
this.groupLineList = response.data;
this.equipmentQuery.groupLine = response.data[0].equipmentCode;
this.getEquList();
})
this.selectEqu = true;
},
// 编辑标准确认按钮
standardBtn() {
this.editorItem = false;
},
// 删除标准
delStandard(e) {
e.showFlag = false;
for (let i = 0; i < this.itemDetailList.length; i++) {
if (this.itemDetailList[i].detailCode == e.detailCode) {
this.itemDetailList[i].showFlag = false;
this.itemDetailList.splice(i, 1);
}
}
},
// 点击编辑设备-巡检项目
editorTheItem(e) {
// 清除缓存
this.itemDetailList = [];
let qw = 1;
for (let i = 0; i < this.form.equipmentItem.length; i++) {
if (e.equipmentCode == this.form.equipmentItem[i].equipmentCode) {
for (let j = 0; j < this.form.equipmentItem[i].equPlanDetailList.length; j++) {
// 部位
var itemName = this.form.equipmentItem[i].equPlanDetailList[j].itemName;
// 方法
var itemMethod = this.form.equipmentItem[i].equPlanDetailList[j].itemMethod;
// 工具
var itemTools = this.form.equipmentItem[i].equPlanDetailList[j].itemTools;
// // 周期
// var itemLoop = this.form.equipmentItem[i].equPlanDetailList[j].itemLoop;
// var itemLoopType = this.form.equipmentItem[i].equPlanDetailList[j].itemLoopType;
for (let k = 0; k < this.form.equipmentItem[i].equPlanDetailList[j].equPlanStandardList.length; k++) {
if (this.form.equipmentItem[i].equPlanDetailList[j].equPlanStandardList[k].showFlag == true) {
this.form.equipmentItem[i].equPlanDetailList[j].equPlanStandardList[k].itemName = itemName;
this.form.equipmentItem[i].equPlanDetailList[j].equPlanStandardList[k].itemMethod = itemMethod;
this.form.equipmentItem[i].equPlanDetailList[j].equPlanStandardList[k].itemTools = itemTools;
// this.form.equipmentItem[i].equPlanDetailList[j].equPlanStandardList[k].itemLoop = itemLoop;
// this.form.equipmentItem[i].equPlanDetailList[j].equPlanStandardList[k].itemLoopType = itemLoopType;
if (this.form.equipmentItem[i].equPlanDetailList[j].equPlanStandardList[k].standardType == "qualitative") {
this.form.equipmentItem[i].equPlanDetailList[j].equPlanStandardList[k].standardTypeName = "定性";
} else {
this.form.equipmentItem[i].equPlanDetailList[j].equPlanStandardList[k].standardTypeName = "定量";
}
this.itemDetailList.push(this.form.equipmentItem[i].equPlanDetailList[j].equPlanStandardList[k]);
}
}
}
}
}
this.editorItem = true;
},
// 删除设备-巡检项
delTheEquItem(e) {
for (let i = 0; i < this.form.equipmentItem.length; i++) {
if (this.form.equipmentItem[i].equipmentCode == e.equipmentCode) {
this.form.equipmentItem.splice(i, 1);
}
}
},
// 选择设备确认按钮
confirmSelectEquBtn() {
// 查询是否已经选择过
for (let i = 0; i < this.form.equipmentItem.length; i++) {
for (let j = 0; j < this.selectEquList.length; j++) {
if (this.form.equipmentItem[i].equipmentCode == this.selectEquList[j].equipmentCode) {
this.$message({
message: "存在已选择的设备!",
type: "warning"
})
return
}
}
}
// 设置循环周期,用来后端格式化处理设备信息
for (let i = 0; i < this.selectEquList.length; i++) {
this.selectEquList[i].itemLoop = this.form.planLoop;
this.selectEquList[i].itemLoopType = this.form.planLoopType;
}
// 处理信息
formatEquItem(this.selectEquList).then(response => {
for (let i = 0; i < response.data.length; i++) {
this.form.equipmentItem.push(response.data[i]);
}
this.selectEqu = false;
})
},
// 选择设备多选操作
selectChangeEqu(e) {
this.selectEquList = e;
},
// 获取设备信息
getEquList() {
this.equLoading = true;
this.equipmentQuery.workshopCode = this.form.planWorkshop;
getEquList(this.equipmentQuery).then(response => {
this.equTotal = response.total;
this.queryEquipment = response.rows;
this.equLoading = false;
})
},
// 重置设备搜索
resetEqu() {
this.equipmentQuery = {
equipmentCode: null,
equipmentName: null,
workshopCode: null,
groupLine:this.groupLineList[0].equipmentCode,
pageNum: 1,
pageSize: 10,
};
this.getEquList();
},
// 步骤上一步
stepLast() {
this.inspectionPlanStep--;
},
// 下一步
stepNext() {
// 校验
if (this.inspectionPlanStep == 0) {
if (this.form.planName == null) {
this.$message({
message: "计划名称不能为空!",
type: "warning"
})
return
}
if (this.form.planLoop <= 0) {
this.$message({
message: "循环周期不可小于等于0",
type: "warning"
})
return
}
if (this.form.planTimeArray.length == 0) {
this.$message({
message: "循环时间范围不能为空!",
type: "warning"
})
return
}
if (this.form.planWorkshop == null) {
this.$message({
message: "车间不能为空!",
type: "warning"
})
return
}
}
if (this.inspectionPlanStep == 1) {
if (this.form.equipmentItem.length == 0) {
this.$message({
message: "请选择设备!",
type: "warning"
})
return
}
}
this.inspectionPlanStep++;
},
/** 查询计划列表 */
getList() {
this.loading = true;
this.setWorkCenter();
listPlan(this.queryParams).then(response => {
this.planList = response.rows;
this.total = response.total;
this.loading = false;
});
},
// 取消按钮
cancel() {
this.open = false;
this.reset();
},
// 表单重置
reset() {
this.form = {
planId: null,
planCode: null,
planName: null,
planWorkshop: null,
planProdLine: null,
equipmentName: null,
equipmentCode: null,
planLoop: null,
planLoopType: 'day',
planLoopStart: null,
planLoopEnd: null,
planPerson: null,
planStatus: '0',
planRestrict: null,
planType: "inspection",
planOutsource: null,
workCode: null,
factoryCode: null,
attr1: null,
attr2: null,
attr3: null,
delFlag: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null,
createTimeArray: [],
updateTimeArray: [],
planTimeArray: [],
equipmentItem: [],
personList: [],
loopEndArray: [],
loopStartArray: [],
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
// 重置日期范围
this.queryParams.createTimeArray = [];
this.queryParams.updateTimeArray = [];
this.queryParams.loopEndArray = [];
this.queryParams.loopStartArray = [];
this.handleQuery();
},
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map(item => item.planId)
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
// 清除缓存
this.resetQuery();
this.queryEquipment = [];
this.inspectionPlanStep = 0;
this.selectPersonList = [];
this.personList = [];
this.setPerson();
this.setWorkCenter();
this.open = true;
this.title = "添加计划";
},
// 获取工作中心
setWorkCenter() {
getWorkCenter().then(response => {
this.workCenterList = response.data;
})
},
/** 修改按钮操作 */
handleUpdate(row) {
this.loading = true;
this.reset();
// 清除缓存
this.queryEquipment = [];
this.inspectionPlanStep = 0;
this.selectPersonList = [];
this.personList = [];
this.setPerson();
this.setWorkCenter();
initUpdatePlanInfo(row).then(response => {
this.form = response.data;
this.selectPersonList = response.data.personListVO;
// for (let i = 0; i < this.form.equipmentItem.length; i++) {
// if (this.form.equipmentItem[i].itemTempName == null) {
// this.form.equipmentItem[i].itemTempName = '';
// }
// for (let j = 0; j < this.form.equipmentItem[i].equPlanDetailList.length; j++) {
// this.form.equipmentItem[i].itemTempName = this.form.equipmentItem[i].itemTempName + this.form.equipmentItem[i].equPlanDetailList[j].itemName + ","
// }
// }
this.loading = false;
this.open = true;
this.title = "修改计划";
})
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.selectPersonList.length == 0) {
this.$message({
message: "请请选择人员!",
type: "warning"
})
return
}
this.planLoading = true;
if (this.form.planId != null) {
this.form.personList = this.selectPersonList.map(item => {
return{
userName: item.toString()
}
});
updatePlan(this.form).then(response => {
this.planLoading = false;
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
this.form.personList = this.selectPersonList.map(item => {
return{
userName: item.toString()
}
});
addPlan(this.form).then(response => {
this.planLoading = false;
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const planIds = row.planId || this.ids;
var planCodes = '';
// 处理信息
for (let i = 0; i < this.planList.length; i++) {
for (let j = 0; j < planIds.length; j++) {
if (planIds[j] == this.planList[i].planId) {
planCodes = planCodes + this.planList[i].planCode + ',';
}
}
}
if (planCodes == '') {
for (let i = 0; i < this.planList.length; i++) {
if (planIds == this.planList[i].planId) {
planCodes = this.planList[i].planCode;
}
}
}
this.$modal.confirm('是否确认删除计划编号为"' + planCodes + '"的数据项?').then(function () {
return delPlan(planIds);
}).then(response => {
if (response.code != 500) {
this.$modal.msgSuccess("删除成功");
this.getList();
}
}).catch(() => {
});
},
/** 导出按钮操作 */
handleExport() {
this.download('device/inspectionPlan/export', {
...this.queryParams
}, `plan_${new Date().getTime()}.xlsx`)
}
}
};
</script>
<style>
.my-step-mar {
margin-left: 10px;
margin-right: 10px;
}
.my-step-body {
margin-top: 15px;
}
.el-transfer-panel {
width: 260px !important;
}
</style>