代码更新

This commit is contained in:
2022-10-08 16:19:31 +08:00
parent c00e3d0e2f
commit 48f1ce8b01
13 changed files with 1223 additions and 1 deletions

View File

@@ -58,6 +58,7 @@
mst.*, mst.*,
class.class_name, class.class_name,
file.device_code, file.device_code,
file.material_type_id,
file.device_name, file.device_name,
file.extend_code, file.extend_code,
d1.name AS dept_name, d1.name AS dept_name,

View File

@@ -0,0 +1,55 @@
package org.nl.wms.sb.stat.rest;
import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.annotation.Log;
import org.nl.wms.sb.stat.service.DevicePairQueryService;
import org.springframework.data.domain.Pageable;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;
/**
* @author Liuxy
* @date 2022-09-30
**/
@RestController
@RequiredArgsConstructor
@Api(tags = "维修记录")
@RequestMapping("/api/devicerepairquery")
@Slf4j
public class DevicePairQueryController {
private final DevicePairQueryService devicePairQueryService;
@GetMapping
@Log("维修记录查询")
@ApiOperation("维修记录查询")
//@PreAuthorize("@el.check('devicesparepartivt:list')")
public ResponseEntity<Object> query(@RequestParam Map whereJson, Pageable page) {
return new ResponseEntity<>(devicePairQueryService.queryAll(whereJson, page), HttpStatus.OK);
}
@ApiOperation("导出数据")
@GetMapping(value = "/download")
public void download(HttpServletResponse response, @RequestParam Map whereJson) throws IOException {
devicePairQueryService.download(whereJson, response);
}
@PostMapping("/getDeviceInfo")
@ApiOperation("获取数据")
@Log("获取数据")
public ResponseEntity<Object> getDeviceInfo(@RequestBody JSONObject whereJson){
return new ResponseEntity<>(devicePairQueryService.getDeviceInfo(whereJson), HttpStatus.OK);
}
}

View File

@@ -0,0 +1,35 @@
package org.nl.wms.sb.stat.service;
import com.alibaba.fastjson.JSONObject;
import org.springframework.data.domain.Pageable;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;
/**
* @author Liuxy
* @description 服务接口
* @date 2022-06-28
**/
public interface DevicePairQueryService {
/**
* 查询数据分页
*
* @param whereJson 条件
* @param page 分页参数
* @return Map<String, Object>
*/
Map<String, Object> queryAll(Map whereJson, Pageable page);
void download(Map whereJson, HttpServletResponse response) throws IOException;
/**
* 获取数据
* @param whereJson
* @return JSONObject
*/
JSONObject getDeviceInfo(JSONObject whereJson);
}

View File

@@ -0,0 +1,196 @@
package org.nl.wms.sb.stat.service.impl;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.modules.system.service.DeptService;
import org.nl.utils.FileUtil;
import org.nl.utils.SpringContextHolder;
import org.nl.wms.basedata.master.service.ClassstandardService;
import org.nl.wms.sb.stat.service.DevicePairQueryService;
import org.nl.wql.WQL;
import org.nl.wql.util.WqlUtil;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.*;
@Service
@RequiredArgsConstructor
@Slf4j
public class DevicePairQueryServiceImpl implements DevicePairQueryService {
private final ClassstandardService classstandardService;
@Override
public Map<String, Object> queryAll(Map whereJson, Pageable page) {
DeptService deptService = SpringContextHolder.getBean(DeptService.class);
String repair_code = MapUtil.getStr(whereJson, "repair_code");
String device_code = MapUtil.getStr(whereJson, "device_code");
String invstatus = MapUtil.getStr(whereJson, "invstatus");
String begin_time = MapUtil.getStr(whereJson, "begin_time");
String end_time = MapUtil.getStr(whereJson, "end_time");
String material_type_id = MapUtil.getStr(whereJson, "material_type_id");
String class_idStr = (String) whereJson.get("class_idStr");
HashMap<String, String> map = new HashMap<>();
map.put("flag", "1");
map.put("invstatus",invstatus);
map.put("begin_time",begin_time);
map.put("end_time",end_time);
if (ObjectUtil.isNotEmpty(repair_code)) map.put("repair_code","%"+repair_code+"%");
if (ObjectUtil.isNotEmpty(device_code)) map.put("device_code","%"+device_code+"%");
//处理物料当前节点的所有子节点
if (!StrUtil.isEmpty(material_type_id)) {
map.put("material_type_id", material_type_id);
String classIds = classstandardService.getChildIdStr(material_type_id);
map.put("classIds", classIds);
} else if (ObjectUtil.isNotEmpty(class_idStr)) {
String classIds = classstandardService.getAllChildIdStr(class_idStr);
map.put("classIds", classIds);
}
// 归属部门
String dept_id = MapUtil.getStr(whereJson, "dept_id");
if (!StrUtil.isEmpty(dept_id)) {
String deptIds = deptService.getChildIdStr(Long.parseLong(dept_id));
map.put("deptIds", deptIds);
}
JSONObject json = WQL.getWO("EM_BI_DEVICEPAIRQUERY01").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "mst.input_time DESC");
JSONArray content = json.getJSONArray("content");
for (int i = 0; i < content.size(); i++) {
JSONObject jsonObject = content.getJSONObject(i);
String real_start_date = jsonObject.getString("real_start_date");
String real_end_date = jsonObject.getString("real_end_date");
if (ObjectUtil.isNotEmpty(real_start_date) && ObjectUtil.isNotEmpty(real_end_date)) {
Date date1 = DateUtil.parse(real_start_date);
Date date2 = DateUtil.parse(real_end_date);
long betweenDay = DateUtil.between(date1, date2, DateUnit.HOUR);
jsonObject.put("repair_time",String.valueOf(betweenDay));
}
}
return json;
}
@Override
public void download(Map whereJson, HttpServletResponse response) throws IOException {
DeptService deptService = SpringContextHolder.getBean(DeptService.class);
String repair_code = MapUtil.getStr(whereJson, "repair_code");
String device_code = MapUtil.getStr(whereJson, "device_code");
String invstatus = MapUtil.getStr(whereJson, "invstatus");
String begin_time = MapUtil.getStr(whereJson, "begin_time");
String end_time = MapUtil.getStr(whereJson, "end_time");
String material_type_id = MapUtil.getStr(whereJson, "material_type_id");
String class_idStr = (String) whereJson.get("class_idStr");
HashMap<String, String> map = new HashMap<>();
map.put("flag", "1");
map.put("invstatus",invstatus);
map.put("begin_time",begin_time);
map.put("end_time",end_time);
if (ObjectUtil.isNotEmpty(repair_code)) map.put("repair_code","%"+repair_code+"%");
if (ObjectUtil.isNotEmpty(device_code)) map.put("device_code","%"+device_code+"%");
//处理物料当前节点的所有子节点
if (!StrUtil.isEmpty(material_type_id)) {
map.put("material_type_id", material_type_id);
String classIds = classstandardService.getChildIdStr(material_type_id);
map.put("classIds", classIds);
} else if (ObjectUtil.isNotEmpty(class_idStr)) {
String classIds = classstandardService.getAllChildIdStr(class_idStr);
map.put("classIds", classIds);
}
// 归属部门
String dept_id = MapUtil.getStr(whereJson, "dept_id");
if (!StrUtil.isEmpty(dept_id)) {
String deptIds = deptService.getChildIdStr(Long.parseLong(dept_id));
map.put("deptIds", deptIds);
}
JSONArray rows = WQL.getWO("EM_BI_DEVICEPAIRQUERY01").addParamMap(map).process().getResultJSONArray(0);
List<Map<String, Object>> list = new ArrayList<>();
for (int i = 0; i < rows.size(); i++) {
JSONObject jo = rows.getJSONObject(i);
String real_start_date = jo.getString("real_start_date");
String real_end_date = jo.getString("real_end_date");
String repair_time = "";
if (ObjectUtil.isNotEmpty(real_start_date) && ObjectUtil.isNotEmpty(real_end_date)) {
Date date1 = DateUtil.parse(real_start_date);
Date date2 = DateUtil.parse(real_end_date);
long betweenDay = DateUtil.between(date1, date2, DateUnit.HOUR);
repair_time = String.valueOf(betweenDay);
}
Map<String, Object> dtl_map = new LinkedHashMap<>();
dtl_map.put("维修单号", jo.getString("repair_code"));
dtl_map.put("设备编码", jo.getString("device_code"));
dtl_map.put("设备名称", jo.getString("device_name"));
dtl_map.put("设备自编码", jo.getString("extend_code"));
dtl_map.put("使用班组", jo.getString("use_name"));
dtl_map.put("故障等级", jo.getString("fault_level"));
dtl_map.put("单据状态", jo.getString("invstatus"));
dtl_map.put("计划维修日期", jo.getString("plan_start_date"));
dtl_map.put("创建人", jo.getString("input_optname"));
dtl_map.put("创建时间", jo.getString("input_time"));
dtl_map.put("报修人", jo.getString("bx_name"));
dtl_map.put("报修时间", jo.getString("bx_time"));
dtl_map.put("维修人", jo.getString("update_optname"));
dtl_map.put("维修开始时间", jo.getString("real_start_date"));
dtl_map.put("维修结束时间", jo.getString("real_end_date"));
dtl_map.put("维修用时(h)", repair_time);
dtl_map.put("委外申请人", jo.getString("outsourceaskfor_optname"));
dtl_map.put("委外申请时间", jo.getString("outsourceaskfor_time"));
dtl_map.put("委外单位", jo.getString("outsourceback_remark"));
dtl_map.put("委外验收人", jo.getString("outsourceback_optname"));
dtl_map.put("委外验收时间", jo.getString("outsourceback_time"));
dtl_map.put("维修确认人", jo.getString("confirm_optname"));
dtl_map.put("维修确认时间", jo.getString("confirm_time"));
dtl_map.put("故障类别", jo.getString("device_faultclass_name"));
dtl_map.put("故障描述", jo.getString("fault_comment"));
dtl_map.put("故障原因", jo.getString("fault_cause"));
dtl_map.put("问题分析", jo.getString("fault_analysis"));
dtl_map.put("处理措施", jo.getString("measure"));
dtl_map.put("审核人", jo.getString("audit_optname"));
dtl_map.put("审核时间", jo.getString("audit_time"));
dtl_map.put("源单号", jo.getString("source_bill_code"));
dtl_map.put("源单业务类型", jo.getString("source_bill_type"));
list.add(dtl_map);
}
FileUtil.downloadExcel(list, response);
}
@Override
public JSONObject getDeviceInfo(JSONObject whereJson) {
String repair_id = whereJson.getString("repair_id");
JSONObject map = new JSONObject();
map.put("flag", "2");
map.put("repair_id", repair_id);
JSONObject json = WQL.getWO("EM_BI_DEVICEPAIRQUERY01").addParamMap(map).process().uniqueResult(0);
// 查询维修项目
map.put("flag", "3");
JSONArray dtlArr = WQL.getWO("EM_BI_DEVICEPAIRQUERY01").addParamMap(map).process().getResultJSONArray(0);
// 查询维修记录更换记录
map.put("flag", "4");
JSONArray relArr = WQL.getWO("EM_BI_DEVICEPAIRQUERY01").addParamMap(map).process().getResultJSONArray(0);
json.put("tableData1", dtlArr);
json.put("tableData2", relArr);
return json;
}
}

View File

@@ -0,0 +1,266 @@
[交易说明]
交易名: 维修记录分页查询
所属模块:
功能简述:
版权所有:
表引用:
版本经历:
[数据库]
--指定数据库为空采用默认值默认为db.properties中列出的第一个库
[IO定义]
#################################################
## 表字段对应输入参数
#################################################
输入.flag TYPEAS s_string
输入.classIds TYPEAS f_string
输入.repair_type TYPEAS s_string
输入.invstatus TYPEAS s_string
输入.repair_code TYPEAS s_string
输入.begin_time TYPEAS s_string
输入.end_time TYPEAS s_string
输入.device_code TYPEAS s_string
输入.repair_id TYPEAS s_string
输入.deptIds TYPEAS f_string
[临时表]
--这边列出来的临时表就会在运行期动态创建
[临时变量]
--所有中间过程变量均可在此处定义
[业务过程]
##########################################
# 1、输入输出检查 #
##########################################
##########################################
# 2、主过程前处理 #
##########################################
##########################################
# 3、业务主过程 #
##########################################
IF 输入.flag = "1"
PAGEQUERY
SELECT
mst.repair_id,
mst.devicerecord_id,
mst.repair_code,
file.device_code,
file.device_name,
file.extend_code,
d2.name AS use_name,
mst.fault_level,
mst.invstatus,
mst.plan_start_date,
mst.input_optname,
mst.input_time,
st.create_name AS bx_name,
st.create_time AS bx_time,
mst.update_optname,
mst.real_start_date,
mst.real_end_date,
mst.outsourceaskfor_optname,
mst.outsourceaskfor_time,
mst.outsourceback_remark,
mst.outsourceback_optname,
mst.outsourceback_time,
mst.confirm_optname,
mst.confirm_time,
fau.device_faultclass_name,
re.fault_comment,
re.fault_cause,
re.fault_analysis,
re.measure,
mst.audit_optname,
mst.audit_time,
mst.source_bill_code,
mst.source_bill_type
FROM
EM_BI_DeviceRepairMst mst
LEFT JOIN EM_BI_EquipmentFile file ON file.devicerecord_id = mst.devicerecord_id
LEFT JOIN md_pb_classstandard class ON file.material_type_id = class.class_id
LEFT JOIN sys_dept d2 ON file.use_groupid = d2.dept_id
LEFT JOIN EM_BI_DeviceRepairRequest st ON st.request_id = mst.source_bill_id AND mst.source_bill_type = 'BXD'
LEFT JOIN EM_BI_DeviceFaultClass fau ON st.device_faultclass_id = fau.device_faultclass_id
LEFT JOIN EM_BI_DeviceRepairRecord re ON mst.repair_id = re.repair_id
WHERE
mst.is_delete = '0'
AND file.is_delete = '0'
OPTION 输入.repair_code <> ""
(mst.repair_code like 输入.repair_code or
mst.repair_code like 输入.repair_code)
ENDOPTION
OPTION 输入.device_code <> ""
(file.device_code like 输入.device_code or
file.device_name like 输入.device_code)
ENDOPTION
OPTION 输入.classIds <> ""
class.class_id in 输入.classIds
ENDOPTION
OPTION 输入.invstatus <> ""
mst.invstatus = 输入.invstatus
ENDOPTION
OPTION 输入.repair_type <> ""
mst.repair_type = 输入.repair_type
ENDOPTION
OPTION 输入.begin_time <> ""
mst.plan_start_date >= 输入.begin_time
ENDOPTION
OPTION 输入.end_time <> ""
mst.plan_start_date <= 输入.end_time
ENDOPTION
OPTION 输入.deptIds <> ""
d2.dept_id in 输入.deptIds
ENDOPTION
ENDSELECT
ENDPAGEQUERY
ENDIF
IF 输入.flag = "2"
QUERY
SELECT
mst.repair_code,
mst.plan_start_date,
mst.maintenancecycle,
file.device_code,
dept.name AS use_name,
(
CASE
mst.fault_level
WHEN '01' THEN '紧急'
WHEN '02' THEN '一般'
WHEN '03' THEN '不紧急'
END
) AS fault_level,
fau.device_faultclass_name,
(
CASE
mst.invstatus
WHEN '01' THEN '生成'
WHEN '02' THEN '提交'
WHEN '03' THEN '维修开始'
WHEN '04' THEN '委外维修'
WHEN '05' THEN '委外验收'
WHEN '06' THEN '维修结束'
WHEN '07' THEN '班组确认'
WHEN '99' THEN '审核完毕'
END
) AS invstatus,
mst.remark,
st.create_time,
st.create_name,
st.product_person_name,
mst.real_start_date,
mst.real_end_date,
mst.update_optname,
mst.outsourceaskfor_time,
mst.outsourceaskfor_optname,
mst.outsourceback_remark,
mst.outsourceback_time,
mst.outsourceback_optname,
mst.confirm_time,
mst.confirm_optname,
mst.audit_time,
mst.audit_optname,
re.fault_comment,
re.fault_cause,
re.fault_analysis,
re.measure
FROM
EM_BI_DeviceRepairMst mst
LEFT JOIN EM_BI_EquipmentFile file ON mst.devicerecord_id = file.devicerecord_id
LEFT JOIN sys_dept dept ON file.use_groupid = dept.dept_id
LEFT JOIN EM_BI_DeviceRepairRequest st ON mst.source_bill_id = st.request_id
LEFT JOIN EM_BI_DeviceFaultClass fau ON fau.device_faultclass_id = st.device_faultclass_id
LEFT JOIN EM_BI_DeviceRepairRecord re ON re.repair_id = mst.repair_id
WHERE
mst.is_delete = '0'
AND file.is_delete = '0'
OPTION 输入.repair_id <> ""
mst.repair_id = 输入.repair_id
ENDOPTION
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "3"
QUERY
SELECT
item.repair_item_code,
item.repair_item_name,
item.requirement,
(
CASE
dtl.isfinish
WHEN '0' THEN '否'
ELSE '是'
END
) AS isfinish
FROM
EM_BI_DeviceRepairDtl dtl
LEFT JOIN EM_BI_DeviceRepairItems item ON dtl.repair_item_id = item.repair_item_id
WHERE
1=1
OPTION 输入.repair_id <> ""
dtl.repair_id = 输入.repair_id
ENDOPTION
ENDSELECT
ENDQUERY
ENDIF
IF 输入.flag = "4"
QUERY
SELECT
item.repair_item_code,
file.device_code,
mater.material_code,
mater.material_name,
re.new_sparepart_only_id,
re.old_sparepart_only_id
FROM
EM_BI_DeviceRepairReplaceRecord re
LEFT JOIN EM_BI_DeviceRepairItems item ON re.repair_item_id = item.repair_item_id
LEFT JOIN EM_BI_DeviceRepairMst mst ON mst.repair_id = re.repair_id
LEFT JOIN EM_BI_EquipmentFile file ON mst.devicerecord_id = file.devicerecord_id
LEFT JOIN md_me_materialbase mater ON re.material_id = mater.material_id
WHERE
mst.is_delete = '0'
AND file.is_delete = '0'
OPTION 输入.repair_id <> ""
re.repair_id = 输入.repair_id
ENDOPTION
ENDSELECT
ENDQUERY
ENDIF

View File

@@ -53,6 +53,7 @@
mst.*, mst.*,
class.class_name, class.class_name,
file.device_code, file.device_code,
file.material_type_id,
file.device_name, file.device_name,
file.extend_code, file.extend_code,
d1.name AS dept_name, d1.name AS dept_name,
@@ -298,6 +299,7 @@
mst.*, mst.*,
class.class_name, class.class_name,
file.device_code, file.device_code,
file.material_type_id,
file.device_name, file.device_name,
file.extend_code, file.extend_code,
d1.name AS dept_name, d1.name AS dept_name,

View File

@@ -144,4 +144,12 @@ export function submitReceive(data) {
}) })
} }
export default { findByCode, add, edit, del, getDtl, submit, startRepair, endRepair, submitRepair, confirmRepair, submitResuft, getResult, outRepair, checkRepair, uditRepair, getNormBom, getFileBom, submitReceive } export function getDeviceInfo(data) {
return request({
url: 'api/devicerepairquery/getDeviceInfo',
method: 'post',
data
})
}
export default { findByCode, add, edit, del, getDtl, submit, startRepair, endRepair, submitRepair, confirmRepair, submitResuft, getResult, outRepair, checkRepair, uditRepair, getNormBom, getFileBom, submitReceive, getDeviceInfo }

View File

@@ -219,6 +219,7 @@ export default {
const data = { const data = {
'repair_id': this.form.repair_id 'repair_id': this.form.repair_id
} }
this.form.device_code = this.form.device_name + '-' + this.form.device_code
crudDevicerepairmst.getDtl(data).then(res => { crudDevicerepairmst.getDtl(data).then(res => {
this.form.tableData = res this.form.tableData = res
}) })

View File

@@ -260,6 +260,9 @@ export default {
], ],
product_person_name: [ product_person_name: [
{ required: true, message: '班组配合人不能为空', trigger: 'blur' } { required: true, message: '班组配合人不能为空', trigger: 'blur' }
],
solutions: [
{ required: true, message: '故障描述不能为空', trigger: 'blur' }
] ]
} }
} }

View File

@@ -0,0 +1,345 @@
<template>
<el-dialog
title="维修详情"
append-to-body
:visible.sync="dialogVisible"
fullscreen
:before-close="handleClose"
destroy-on-close
@close="close"
>
<el-row :gutter="20">
<el-col :span="20" style="border: 1px solid white">
<span />
</el-col>
<el-col :span="4">
<span>
<el-button icon="el-icon-close" size="mini" type="info" @click="close">关闭</el-button>
</span>
</el-col>
</el-row>
<div class="crud-opts2">
<span class="role-span">基本信息</span>
</div>
<el-form ref="form" style="border: 1px solid #cfe0df;margin-top: 10px;padding-top: 10px;" :inline="true" :model="form" size="mini" label-width="120px" label-suffix=":">
<el-row>
<el-col :span="8">
<el-form-item label="单据号">
<el-input v-model="form.repair_code" style="width: 200px;" disabled placeholder="系统自动生成" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="计划维修日期">
<el-date-picker v-model="form.plan_start_date" type="date" placeholder="选择日期" style="width: 200px" value-format="yyyy-MM-dd" disabled />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="维修类型">
<el-select
v-model="form.maintenancecycle"
disabled
size="mini"
placeholder="请选择"
class="filter-item"
>
<el-option
v-for="item in dict.EM_DEVICE_WX_INVTYPE"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="设备档案">
<el-input v-model="form.device_code" disabled style="width: 200px;"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="使用班组">
<el-input v-model="form.use_name" disabled style="width: 200px;"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="故障等级">
<el-input v-model="form.fault_level" disabled style="width: 200px;"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="故障类别">
<el-input v-model="form.device_faultclass_name" disabled style="width: 200px;"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="单据状态">
<el-input v-model="form.invstatus" disabled style="width: 200px;"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<el-form-item label="备注">
<el-input v-model="form.remark" style="width: 650px;" disabled rows="2" type="textarea" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<div class="crud-opts2">
<span class="role-span">维修信息</span>
</div>
<el-form ref="form" style="border: 1px solid #cfe0df;margin-top: 10px;padding-top: 10px;" :inline="true" :model="form" size="mini" label-width="120px" label-suffix=":">
<el-row>
<el-col :span="8">
<el-form-item label="报修时间">
<el-input v-model="form.create_time" disabled style="width: 200px;"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="报修人">
<el-input v-model="form.create_name" disabled style="width: 200px;"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="生产配合人">
<el-input v-model="form.product_person_name" disabled style="width: 200px;"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="维修开始时间">
<el-input v-model="form.real_start_date" disabled style="width: 200px;"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="维修结束时间">
<el-input v-model="form.real_end_date" disabled style="width: 200px;"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="维修人">
<el-input v-model="form.update_optname" disabled style="width: 200px;"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="委外申请时间">
<el-input v-model="form.outsourceaskfor_time" disabled style="width: 200px;"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="委外申请人">
<el-input v-model="form.outsourceaskfor_optname" disabled style="width: 200px;"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="委外单位">
<el-input v-model="form.outsourceback_remark" disabled style="width: 200px;"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="委外验收时间">
<el-input v-model="form.outsourceback_time" disabled style="width: 200px;"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="委外验收人">
<el-input v-model="form.outsourceback_optname" disabled style="width: 200px;"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="班组确认时间">
<el-input v-model="form.confirm_time" disabled style="width: 200px;"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="班组确认人">
<el-input v-model="form.confirm_optname" disabled style="width: 200px;"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="审核时间">
<el-input v-model="form.audit_time" disabled style="width: 200px;"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="审核人">
<el-input v-model="form.audit_optname" disabled style="width: 200px;"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="故障描述">
<el-input v-model="form.fault_comment" disabled style="width: 580px;" rows="2" type="textarea" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="故障原因">
<el-input v-model="form.fault_cause" disabled style="width: 580px;" rows="2" type="textarea" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="问题分析">
<el-input v-model="form.fault_analysis" disabled style="width: 580px;" rows="2" type="textarea" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="处理措施">
<el-input v-model="form.measure" disabled style="width: 580px;" rows="2" type="textarea" />
</el-form-item>
</el-col>
</el-row>
</el-form>
<div class="crud-opts2">
<span class="role-span">维修项目</span>
</div>
<el-card class="box-card" shadow="never" :body-style="{padding:'0'}">
<!--表格渲染-->
<el-table
ref="table2"
:data="form.tableData1"
style="width: 100%;"
max-height="500"
border
:highlight-current-row="true"
:header-cell-style="{background:'#f5f7fa',color:'#606266'}"
>
<el-table-column type="index" label="序号" width="55" align="center" />
<el-table-column show-overflow-tooltip prop="repair_item_code" label="维修项目编号" align="center" />
<el-table-column show-overflow-tooltip prop="repair_item_name" label="维修项目名称" align="center" />
<el-table-column show-overflow-tooltip prop="requirement" label="要求" align="center" />
<el-table-column prop="isfinish" label="是否完成" align="center" />
</el-table>
</el-card>
<div class="crud-opts2">
<span class="role-span">更换备件</span>
</div>
<el-card class="box-card" shadow="never" :body-style="{padding:'0'}">
<!--表格渲染-->
<el-table
ref="table3"
:data="form.tableData2"
style="width: 100%;"
max-height="500"
border
:highlight-current-row="true"
:header-cell-style="{background:'#f5f7fa',color:'#606266'}"
>
<el-table-column type="index" label="序号" width="55" align="center" />
<el-table-column show-overflow-tooltip prop="repair_item_code" label="维修项目" align="center" />
<el-table-column show-overflow-tooltip prop="repair_item_name" label="设备编码" align="center" />
<el-table-column show-overflow-tooltip prop="repair_item_name" label="物料编码" align="center" />
<el-table-column show-overflow-tooltip prop="repair_item_name" label="物料名称" align="center" />
<el-table-column show-overflow-tooltip prop="repair_item_name" label="备件唯一标识" align="center" />
<el-table-column show-overflow-tooltip prop="repair_item_name" label="更换备件唯一标识" align="center" />
</el-table>
</el-card>
</el-dialog>
</template>
<script>
import CRUD, { crud } from '@crud/crud'
export default {
name: 'ExecuteDialog',
dicts: ['EM_DEVICE_WX_INVTYPE', 'IS_OR_NOT'],
mixins: [crud()],
props: {
dialogShow: {
type: Boolean,
default: false
},
openParam: {
type: Object
}
},
watch: {
dialogShow: {
handler(newValue, oldValue) {
this.dialogVisible = newValue
this.form = this.openParam
}
}
},
data() {
return {
form: {
tableData1: [],
tableData2: []
},
dialogVisible: false
}
},
methods: {
handleClose(done) {
this.$confirm('确认关闭?')
.then(_ => {
done()
})
.catch(_ => {
})
},
close() {
this.$emit('update:dialogShow', false)
}
}
}
</script>
<style>
.crud-opts2 {
padding: 0;
display: -webkit-flex;
display: flex;
align-items: center;
}
.crud-opts2 .el-dialog__title2 {
line-height: 24px;
font-size:20px;
color:#303133;
}
.crud-opts2 .role-span {
padding: 10px 0px 10px 0px;
}
.crud-opts2 .crud-opts-form {
padding: 10px 0px 0px 20px;
}
.input-with-select {
background-color: #fff;
}
</style>

View File

@@ -0,0 +1,308 @@
<template>
<div class="app-container">
<!--工具栏-->
<div class="head-container">
<div v-if="crud.props.searchToggle">
<!-- 搜索 -->
<el-form
:inline="true"
class="demo-form-inline"
label-position="right"
label-width="110px"
label-suffix=":"
>
<el-form-item label="设备类别">
<treeselect
v-model="query.material_type_id"
:load-options="loadClass"
:options="classes"
style="width: 200px;"
placeholder="请选择"
/>
</el-form-item>
<el-form-item label="使用班组">
<treeselect
v-model="query.dept_id"
:load-options="loadDepts"
:options="depts"
style="width: 200px;"
placeholder="请选择"
/>
</el-form-item>
<el-form-item label="单据号">
<el-input
v-model="query.repair_code"
clearable
size="mini"
placeholder="请输入编码、名称"
@keyup.enter.native="crud.toQuery"
/>
</el-form-item>
<el-form-item label="设备">
<el-input
v-model="query.device_code"
clearable
size="mini"
placeholder="请输入设备编码、名称"
@keyup.enter.native="crud.toQuery"
/>
</el-form-item>
<el-form-item label="维修单日期">
<date-range-picker v-model="query.createTime" class="date-item" />
</el-form-item>
<el-form-item label="单据状态">
<el-select
v-model="query.invstatus"
clearable
size="mini"
placeholder="请选择"
class="filter-item"
@change="hand"
>
<el-option
v-for="item in dict.EM_DEVICE_WX_INVSTATUS"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<rrOperation />
</el-form>
</div>
<!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'-->
<crudOperation :permission="permission">
<el-button
slot="right"
class="filter-item"
type="success"
icon="el-icon-check"
size="mini"
@click="downdtl"
>
导出
</el-button>
<!-- <el-button
slot="right"
class="filter-item"
type="warning"
icon="el-icon-check"
:disabled="crud.selections.length !== 1"
size="mini"
@click="printRepair"
>
打印
</el-button>-->
</crudOperation>
<!--表格渲染-->
<el-table ref="table" v-loading="crud.loading" :data="crud.data" size="mini" style="width: 100%;" @selection-change="crud.selectionChangeHandler">
<el-table-column type="selection" width="55" />
<el-table-column v-if="false" prop="repair_id" label="设备维修单标识" />
<el-table-column prop="repair_code" label="维修单号" width="120px" show-overflow-tooltip>
<template slot-scope="scope">
<el-link type="warning" @click="showView(scope.row)">{{ scope.row.repair_code }}</el-link>
</template>
</el-table-column>
<el-table-column prop="device_code" label="设备编码" width="120px" show-overflow-tooltip />
<el-table-column prop="device_name" label="设备名称" show-overflow-tooltip />
<el-table-column prop="extend_code" label="设备自编码" width="90px" show-overflow-tooltip />
<el-table-column prop="use_name" label="使用班组" show-overflow-tooltip />
<el-table-column prop="fault_level" label="故障等级" :formatter="formatLevelName" />
<el-table-column prop="invstatus" label="单据状态" :formatter="formatStatusName" />
<el-table-column prop="plan_start_date" label="计划维修日期" width="120px" show-overflow-tooltip />
<el-table-column prop="input_optname" label="创建人" />
<el-table-column prop="input_time" label="创建时间" width="120px" show-overflow-tooltip />
<el-table-column prop="bx_name" label="报修人" />
<el-table-column prop="bx_time" label="报修时间" width="120px" show-overflow-tooltip />
<el-table-column prop="update_optname" label="维修人" />
<el-table-column prop="real_start_date" label="维修开始时间" width="150px" show-overflow-tooltip />
<el-table-column prop="real_end_date" label="维修结束时间" width="150px" show-overflow-tooltip />
<el-table-column prop="repair_time" label="维修用时(h)" width="90px" />
<el-table-column prop="outsourceaskfor_optname" label="委外申请人" width="90px" />
<el-table-column prop="outsourceaskfor_time" label="委外申请时间" width="120px" show-overflow-tooltip />
<el-table-column prop="outsourceback_remark" label="委外单位" show-overflow-tooltip />
<el-table-column prop="outsourceback_optname" label="委外验收人" width="90px" />
<el-table-column prop="outsourceback_time" label="委外验收时间" width="120px" show-overflow-tooltip />
<el-table-column prop="confirm_optname" label="维修确认人" width="90px" />
<el-table-column prop="confirm_time" label="维修确认时间" width="120px" show-overflow-tooltip />
<el-table-column prop="device_faultclass_name" label="故障类别" show-overflow-tooltip />
<el-table-column prop="fault_comment" label="故障描述" show-overflow-tooltip />
<el-table-column prop="fault_cause" label="故障原因" show-overflow-tooltip />
<el-table-column prop="fault_analysis" label="问题分析" show-overflow-tooltip />
<el-table-column prop="measure" label="处理措施" show-overflow-tooltip />
<el-table-column prop="audit_optname" label="审核人" />
<el-table-column prop="audit_time" label="审核时间" width="150px" show-overflow-tooltip />
<el-table-column prop="source_bill_code" label="源单号" show-overflow-tooltip />
<el-table-column prop="source_bill_type" label="源单业务类型" width="120px" :formatter="fprmatTypeName"/>
</el-table>
<!--分页组件-->
<pagination />
</div>
<ShowViewDialog :dialog-show.sync="showViewDialog" :open-param="openParam" />
</div>
</template>
<script>
import crudDevicerepairmst from '@/api/wms/sb/devicerepairmst'
import CRUD, { presenter, header, crud } from '@crud/crud'
import rrOperation from '@crud/RR.operation'
import crudOperation from '@crud/CRUD.operation'
import udOperation from '@crud/UD.operation'
import pagination from '@crud/Pagination'
import DateRangePicker from '@/components/DateRangePicker'
import crudClassstandard from '@/api/wms/basedata/master/classstandard'
import Treeselect, { LOAD_CHILDREN_OPTIONS } from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
import crudMaterialbase from '@/api/wms/basedata/master/materialbase'
import { getDepts } from '@/api/system/dept'
import ShowViewDialog from '@/views/wms/sb/stat/devicerepairquery/ShowViewDialog'
import {download} from "@/api/data";
import {downloadFile} from "@/utils";
export default {
name: 'Devicerepairquery',
dicts: ['EM_DEVICE_WX_INVTYPE', 'EM_DEVICE_WX_INVSTATUS', 'EM_FAULT_LEVEL'],
components: { pagination, crudOperation, rrOperation, udOperation, DateRangePicker, Treeselect, ShowViewDialog },
mixins: [presenter(), header(), crud()],
cruds() {
return CRUD({
title: '维修记录查询',
url: 'api/devicerepairquery',
idField: 'repair_id',
sort: 'repair_id,desc',
crudMethod: { ...crudDevicerepairmst },
optShow: {
add: false,
edit: false,
del: false,
download: false,
reset: true
}
})
},
data() {
return {
openParam: null,
showViewDialog: false,
classes: [],
depts: [],
class_idStr: null,
materOpt_code: '23',
permission: {
}
}
},
created() {
const param = {
'materOpt_code': this.materOpt_code
}
crudMaterialbase.getMaterOptType(param).then(res => {
this.class_idStr = res.class_idStr
this.crud.query.class_idStr = this.class_idStr
this.crud.toQuery()
this.queryClassId()
})
this.getDepts()
},
methods: {
// 钩子在获取表格数据之前执行false 则代表不获取数据
[CRUD.HOOK.beforeRefresh]() {
return true
},
hand(value) {
this.crud.toQuery()
},
loadClass({ action, parentNode, callback }) {
if (action === LOAD_CHILDREN_OPTIONS) {
crudClassstandard.getClass({ pid: parentNode.id }).then(res => {
parentNode.children = res.content.map(function(obj) {
if (obj.hasChildren) {
obj.children = null
}
return obj
})
setTimeout(() => {
callback()
}, 100)
})
}
},
queryClassId() {
const param = {
'class_idStr': this.class_idStr
}
crudClassstandard.queryClassById(param).then(res => {
this.classes = res.content.map(obj => {
if (obj.hasChildren) {
obj.children = null
}
return obj
})
})
},
// 获取弹窗内部门数据
loadDepts({ action, parentNode, callback }) {
if (action === LOAD_CHILDREN_OPTIONS) {
getDepts({ enabled: true, pid: parentNode.id }).then(res => {
parentNode.children = res.content.map(function(obj) {
if (obj.hasChildren) {
obj.children = null
}
return obj
})
setTimeout(() => {
callback()
}, 200)
})
}
},
getDepts() {
getDepts({ enabled: true }).then(res => {
this.depts = res.content.map(function(obj) {
if (obj.hasChildren) {
obj.children = null
}
return obj
})
})
},
showView(row) {
const data = row
crudDevicerepairmst.getDeviceInfo(data).then(res => {
this.openParam = res
this.showViewDialog = true
})
},
formatStatusName(row, cloum) {
return this.dict.label.EM_DEVICE_WX_INVSTATUS[row.invstatus]
},
formatTypeName(row, cloum) {
return this.dict.label.EM_DEVICE_WX_INVTYPE[row.maintenancecycle]
},
formatLevelName(row, cloum) {
return this.dict.label.EM_FAULT_LEVEL[row.fault_level]
},
fprmatTypeName(row, cloum) {
if (row.source_bill_type === 'BXD') {
return '报修单'
} else {
return '维修计划'
}
},
downdtl() {
if (this.currentRow !== null) {
crud.downloadLoading = true
download('/api/devicerepairquery/download', this.crud.query).then(result => {
downloadFile(result, '维修明细', 'xlsx')
crud.downloadLoading = false
}).catch(() => {
crud.downloadLoading = false
})
}
}
}
}
</script>
<style scoped>
</style>

View File

@@ -214,6 +214,7 @@ export default {
const data = { const data = {
'maint_id': this.form.maint_id 'maint_id': this.form.maint_id
} }
this.form.device_code = this.form.device_name + '-' + this.form.device_code
crudDevicemaintenancemst.getDtl(data).then(res => { crudDevicemaintenancemst.getDtl(data).then(res => {
this.form.tableData = res this.form.tableData = res
}) })

View File

@@ -214,6 +214,7 @@ export default {
const data = { const data = {
'maint_id': this.form.maint_id 'maint_id': this.form.maint_id
} }
this.form.device_code = this.form.device_name + '-' + this.form.device_code
crudDevicemaintenancemst.getDtl(data).then(res => { crudDevicemaintenancemst.getDtl(data).then(res => {
this.form.tableData = res this.form.tableData = res
}) })