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.

1299 lines
43 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="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 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="planLoopType">
<el-select v-model="queryParams.planLoopType" placeholder="请选择循环周期类型" clearable>
<el-option
v-for="dict in dict.type.device_loop_type"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</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 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 label-width="90px" label="是否可生产" prop="planRestrict">
<el-select v-model="queryParams.planRestrict" placeholder="请选择计划状态" clearable>
<el-option
v-for="dict in dict.type.device_yes_no"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</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="upkeep">
<el-input
v-model="queryParams.upkeep"
placeholder="请输入保养类型"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item v-if="false" label="计划保养时间计算规则" prop="calculationRule">
<el-input
v-model="queryParams.calculationRule"
placeholder="请输入计划保养时间计算规则"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item v-if="false" label="是否停机保养" prop="shutDown">
<el-input
v-model="queryParams.shutDown"
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 label-width="100px" 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 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>
<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:spotCheckPlan: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:spotCheckPlan: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:spotCheckPlan: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:spotCheckPlan:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="spotCheckPlanList" @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="120" label="计划编码" align="center" prop="planCode" />
<el-table-column width="200" label="计划名称" align="center" prop="planName" />
<el-table-column 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="120" 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 v-if="false" 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 width="120" label="是否可生产" align="center" prop="planRestrict" >
<template slot-scope="scope">
<dict-tag :options="dict.type.device_yes_no" :value="scope.row.planRestrict"/>
</template>
</el-table-column>
<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="upkeep" />
<el-table-column v-if="false" label="计划保养时间计算规则" align="center" prop="calculationRule" />
<el-table-column v-if="false" label="是否停机保养" align="center" prop="shutDown" />
<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:spotCheckPlan:edit']"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['device:spotCheckPlan: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="spotCheckStep" 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="spotCheckStep==0">
<el-row>
<el-col :span="8" :offset="2">
<el-form-item label="计划名称" prop="planName">
<el-input v-model="form.planName" placeholder="请输入计划名称"/>
</el-form-item>
</el-col>
<el-col :span="8" :offset="1">
<el-form-item label="循环周期" prop="planLoop">
<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-width="115px" label="点检开始时间" prop="planLoopStart">
<el-date-picker
v-model="form.planLoopStart"
type="date"
placeholder="开始时间">
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8" offset="2" >
<el-form-item label="车间" prop="planWorkshop">
<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-col :span=12 :offset="1">
<el-form-item label-width="100px" label="是否可生产:">
<el-radio v-model="form.planRestrict" label="0">未点检不可生产</el-radio>
<el-radio v-model="form.planRestrict" label="1">未点检可生产</el-radio>
</el-form-item>
</el-col>
</el-row>
</div>
<!-- 选择设备、点检项目 -->
<div class="my-step-body" v-if="spotCheckStep==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
:data="form.equipmentItem"
stripe
style="width: 100%">
<el-table-column type="selection" width="55" align="center"/>
<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">
</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
:data="itemDetailList"
v-loading="detailLoading"
stripe
@selection-change="selectChangeEqu"
style="width: 100%">
<el-table-column width="55" align="center"/>
<el-table-column
prop="itemName"
label="检查项">
</el-table-column>
<el-table-column
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="50%"
append-to-body
>
<el-form :model="equipmentQuery" ref="queryBPForm" size="small" :inline="true" v-show="showSearch"
label-width="68px">
<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="spotCheckStep==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="spotCheckStep>0" @click="stepLast">上一步</el-button>
<el-button v-if="spotCheckStep<2" @click="stepNext">下一步</el-button>
<el-button v-if="spotCheckStep == 2" type="primary" @click="submitForm"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
listSpotCheckPlan,
getSpotCheckPlan,
delSpotCheckPlan,
addSpotCheckPlan,
updateSpotCheckPlan,
formatEquItem
} from "@/api/device/spotCheckPlan";
import {
addPlan,
delPlan,
getEquList,
getPersonList,
getWorkCenter,
initUpdatePlanInfo, listPlan,
updatePlan
} from "@/api/device/plan";
export default {
name: "SpotCheckPlan",
dicts: ['device_loop_type', 'sys_normal_disable','device_yes_no'],
data() {
return {
// 表单校验
rules: {},
// 日期范围选择快捷
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]);
}
}]
},
// 加载
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,
pageNum: 1,
pageSize: 10,
},
// 选择设备弹窗
selectEqu: false,
// 编辑检查项弹窗
editorItem: false,
// 点检计划步骤
inspectionPlanStep: 0,
// 步骤
spotCheckStep: 0,
// 遮罩层
loading: true,
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 点检计划表格数据
spotCheckPlanList: [],
// 弹出层标题
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: "spotInspection",
planOutsource: null,
workCode: null,
upkeep: null,
calculationRule: null,
shutDown: null,
factoryCode: null,
attr1: null,
attr2: null,
attr3: null,
delFlag: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null,
createTimeArray: [],
updateTimeArray: [],
loopStartArray: [],
},
// 表单参数
form: {
planLoopType: 'day',
planName: null,
planStatus: '0',
planPerson: null,
planLoop: null,
planTimeArray: [],
equipmentItem: [],
personList: [],
planWorkshop: null,
planType: "spotInspection",
planLoopStart: null,
},
};
},
created() {
this.getList();
this.setWorkCenter();
},
methods: {
// 获取工作中心
setWorkCenter() {
getWorkCenter().then(response => {
this.workCenterList = response.data;
})
},
// 选择工作中心
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].userId,
})
}
});
},
// 点检人员穿梭框
filterMethod(query, item) {
return item.label.indexOf(query) > -1;
},
// 点击选择设备按钮
selectEquBtn() {
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;
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;
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
}
}
}
// 处理信息
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,
pageNum: 1,
pageSize: 10,
};
this.getEquList();
},
// 上一步
stepLast() {
this.spotCheckStep--;
},
// 下一步
stepNext() {
// 校验
if (this.spotCheckStep == 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.planLoopStart == null) {
this.$message({
message: "点检开始时间不能为空!",
type: "warning"
})
return
}
if (this.form.planWorkshop == null) {
this.$message({
message: "车间不能为空!",
type: "warning"
})
return
}
}
if (this.spotCheckStep == 1) {
if (this.form.equipmentItem.length == 0) {
this.$message({
message: "请选择设备!",
type: "warning"
})
return
}
}
this.spotCheckStep++;
},
/** 查询点检计划列表 */
getList() {
this.loading = true;
listPlan(this.queryParams).then(response => {
this.spotCheckPlanList = 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: '1',
planType: "spotInspection",
planOutsource: null,
workCode: null,
upkeep: null,
calculationRule: null,
shutDown: null,
factoryCode: null,
attr1: null,
attr2: null,
attr3: null,
delFlag: null,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null,
createTimeArray: [],
updateTimeArray: [],
planTimeArray: [],
equipmentItem: [],
personList: [],
loopStartArray: [],
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
// 重置日期范围
this.queryParams.createTimeArray = [];
this.queryParams.updateTimeArray = [];
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.spotCheckStep = 0;
this.selectPersonList = [];
this.personList = [];
this.setPerson();
this.setWorkCenter();
this.open = true;
this.title = "添加点检计划";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.loading = true;
this.reset();
// 清除缓存
this.queryEquipment = [];
this.spotCheckStep = 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;
updatePlan(this.form).then(response => {
this.planLoading = false;
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
this.form.personList = this.selectPersonList;
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.spotCheckPlanList.length; i++) {
for (let j = 0; j < planIds.length; j++) {
if (planIds[j] == this.spotCheckPlanList[i].planId) {
planCodes = planCodes + this.spotCheckPlanList[i].planCode + ',';
}
}
}
if (planCodes == '') {
for (let i = 0; i < this.spotCheckPlanList.length; i++) {
if (planIds == this.spotCheckPlanList[i].planId) {
planCodes = this.spotCheckPlanList[i].planCode;
}
}
}
this.$modal.confirm('是否确认删除计划编号为"' + planCodes + '"的数据项?').then(function () {
return delPlan(planIds);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {
});
},
/** 导出按钮操作 */
handleExport() {
this.download('device/spotCheckPlan/export', {
...this.queryParams
}, `spotCheckPlan_${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;
}
</style>