设备管理

yangwl
A0010407 1 year ago
parent d1b5b00888
commit 9f0a86225c

@ -50,3 +50,21 @@ export function getMaintenanceTeamList() {
method: 'get' method: 'get'
}); });
} }
// 查询班组列表
export function listTeamMembers(query) {
return request({
url: '/device/equTeam/listTeamMembers',
method: 'get',
params: query
});
}
// 查询班组列表
export function getRightList(query) {
return request({
url: '/device/equTeam/getRightList',
method: 'get',
params: query
});
}

@ -58,3 +58,28 @@ export function getEquipmentTypeList() {
method: 'get' method: 'get'
}); });
} }
// 查询设备备件
export function getSparePartsList() {
return request({
url: '/wms/equipment/getSparePartsList',
method: 'get'
});
}
// 查询设备备件右侧列表
export function getRightSparePartsList() {
return request({
url: '/wms/equipment/getRightSparePartsList',
method: 'get'
});
}
// 绑定
export function bindSpareParts(data) {
return request({
url: '/wms/equipment/bindSpareParts',
method: 'post',
data: data
});
}

@ -154,8 +154,9 @@
/> />
<!-- 添加或修改设备班组维护对话框 --> <!-- 添加或修改设备班组维护对话框 -->
<el-dialog :title="title" :visible.sync="open" width="800px" append-to-body> <el-dialog :title="title" :visible.sync="open" width="1000px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="班组编号" prop="teamCode"> <el-form-item label="班组编号" prop="teamCode">
<el-input <el-input
@ -212,6 +213,24 @@
</ItemSelectPerson> </ItemSelectPerson>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row>
<el-divider></el-divider>
<el-card>
<div class = "my-team">
<template>
<el-transfer
filterable
filter-placeholder="请输入班组人员名称"
:titles="['可选班组人员', '当前班组人员']"
:button-texts="['解除添加', '添加']"
:data="leftList"
v-model="rightList"
style="text-align: left"
>
</el-transfer>
</template>
</div>
</el-card>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button> <el-button type="primary" @click="submitForm"> </el-button>
@ -229,6 +248,8 @@ import {
addEquTeam, addEquTeam,
updateEquTeam, updateEquTeam,
getMaintenanceTeamList, getMaintenanceTeamList,
listTeamMembers,
getRightList,
} from "@/api/device/equTeam"; } from "@/api/device/equTeam";
import ItemSelectPerson from "./selectSinglePerson.vue"; import ItemSelectPerson from "./selectSinglePerson.vue";
@ -237,6 +258,10 @@ export default {
components: { ItemSelectPerson }, components: { ItemSelectPerson },
data() { data() {
return { return {
//
leftList: [],
// key
rightList: [],
// //
checkTeamPerson: null, checkTeamPerson: null,
// //
@ -293,8 +318,28 @@ export default {
}, },
created() { created() {
this.getList(); this.getList();
this.getTeamMembers();
}, },
methods: { methods: {
getTeamMembers() {
//
this.queryParams.pageNum = 1;
this.queryParams.pageSize = 2000;
listTeamMembers(this.queryParams).then(response => {
for(let i in response.rows){
// 穿
this.leftList.push({
key: response.rows[i].userId,
label: response.rows[i].teamUserName
})
}
for(let i in response.selected){
this.rightList.push(response.selected[i].key);
this.form.rightData = this.rightList;
}
this.loading = false;
});
},
// //
handleSelectPerson() { handleSelectPerson() {
this.$refs.itemSelectPerson.showFlag = true; this.$refs.itemSelectPerson.showFlag = true;
@ -362,21 +407,30 @@ export default {
const id = row.id || this.ids; const id = row.id || this.ids;
getEquTeam(id).then((response) => { getEquTeam(id).then((response) => {
this.form = response.data; this.form = response.data;
for(let i in response.data.selectedData){
// 穿
this.rightList.push(
response.data.selectedData[i].userId
)
};
console.log('response.data.selectedData',response.data.selectedData);
this.open = true; this.open = true;
this.title = "修改设备班组维护"; this.title = "修改设备班组维护";
}); });
}, },
/** 提交按钮 */ /** 提交按钮 */
submitForm() { submitForm() {
this.$refs["form"].validate((valid) => { this.$refs["form"].validate((valid) => {
if (valid) { if (valid) {
if (this.form.id != null) { if (this.form.id != null) {
this.form.rightData = this.rightList;
updateEquTeam(this.form).then((response) => { updateEquTeam(this.form).then((response) => {
this.$modal.msgSuccess("修改成功"); this.$modal.msgSuccess("修改成功");
this.open = false; this.open = false;
this.getList(); this.getList();
}); });
} else { } else {
this.form.rightData = this.rightList;
addEquTeam(this.form).then((response) => { addEquTeam(this.form).then((response) => {
this.$modal.msgSuccess("新增成功"); this.$modal.msgSuccess("新增成功");
this.open = false; this.open = false;
@ -432,3 +486,13 @@ export default {
}, },
}; };
</script> </script>
<style>
.el-transfer-panel{
width: 320px;
height: 400px;
}
.el-transfer-panel__list.is-filterable{
height: 300px;
}
</style>

File diff suppressed because it is too large Load Diff

@ -5,7 +5,7 @@
:modal= false :modal= false
width="800px" width="800px"
center center
:before-close="cancelEquipmentForm" :before-close="cancel"
> >
<el-row :gutter="20"> <el-row :gutter="20">
<!--人员数据--> <!--人员数据-->
@ -34,7 +34,7 @@
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button> <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-table v-loading="loading" :data="itemList" @selection-change="handleEquipmentSelectionChange" ref="myTable"> <el-table v-loading="loading" :data="itemList" @selection-change="handleSelectionChange" ref="multipleTable">
<el-table-column width="50" align="center" type="selection"></el-table-column> <el-table-column width="50" align="center" type="selection"></el-table-column>
<!-- 序号 --> <!-- 序号 -->
<el-table-column type="index" width="90" align="center" :index="indexMethod" label="序号"></el-table-column> <el-table-column type="index" width="90" align="center" :index="indexMethod" label="序号"></el-table-column>
@ -53,8 +53,8 @@
</el-col> </el-col>
</el-row> </el-row>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitPersonForm"> </el-button> <el-button type="primary" @click="submitForm" :disabled="multiple"> </el-button>
<el-button @click="cancelEquipmentForm"> </el-button> <el-button @click="cancel"> </el-button>
</div> </div>
</el-dialog> </el-dialog>
</template> </template>
@ -112,7 +112,7 @@ export default {
this.resetForm("form"); this.resetForm("form");
}, },
handleEquipmentSelectionChange (val) { handleSelectionChange (val) {
this.itemList = val; this.itemList = val;
}, },
@ -133,14 +133,6 @@ export default {
); );
}, },
//
handleNodeClick(data) {
console.log('id',data.id);
this.queryParams.equipmentTypeCode = data.equipmentTypeCode;
console.log(this.equipmentTypeCode);
this.handleQuery();
},
/** 搜索按钮操作 */ /** 搜索按钮操作 */
handleQuery() { handleQuery() {
this.queryParams.pageNum = 1; this.queryParams.pageNum = 1;
@ -155,27 +147,20 @@ export default {
}, },
// //
handleEquipmentSelectionChange(selection) { handleSelectionChange(selection) {
this.ids = selection.map(item => item.nickName); this.ids = selection.map(item => item.userId);
this.userCodes = selection.map(item => item.userName);
this.single = selection.length!==1; this.single = selection.length!==1;
this.multiple = !selection.length; this.multiple = !selection.length;
console.log("多选框",this.ids);
}, },
submitPersonForm() { submitForm() {
const data = this.ids; if(this.$refs.multipleTable.selection.length > 1){
const nickName = data.toString();
if(data.length >1){
Message.warning("只能选择一个报修人,请勿选择多个!"); Message.warning("只能选择一个报修人,请勿选择多个!");
}else{ }else{
if(this.queryParams.itemCodeGet == ""){ this.$emit('onSelected', this.$refs.multipleTable.selection);
this.queryParams.itemCodeGet = nickName;
}
this.selectedRows = this.queryParams.itemCodeGet;
this.$emit('onSelected', this.selectedRows);
this.getList();
this.showFlag = false; this.showFlag = false;
this.queryParams.itemCodeGet = ""; this.getList();
} }
} }
} }

@ -88,12 +88,12 @@
style="width: 200px" style="width: 200px"
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
> >
<el-option <el-option
v-for="item in workStatusOption" v-for="dict in dict.type.device_repair_status"
:key="item.workStatus" :key="dict.value"
:label="item.label" :label="dict.label"
:value="item.workStatus" :value="dict.value"
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="是否委外" prop="workOutsource"> <el-form-item label="是否委外" prop="workOutsource">
@ -250,13 +250,13 @@
label="维修单号" label="维修单号"
align="center" align="center"
prop="workCode" prop="workCode"
width="180" width="200"
/> />
<el-table-column <el-table-column
label="报修单号" label="报修单号"
align="center" align="center"
prop="orderCode" prop="orderCode"
width="180" width="200"
/> />
<el-table-column label="设备编码" align="center" prop="equipmentCode" /> <el-table-column label="设备编码" align="center" prop="equipmentCode" />
<el-table-column <el-table-column
@ -347,10 +347,13 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="维修费用" align="center" prop="workCost" /> <el-table-column label="维修费用" align="center" prop="workCost" />
<el-table-column label="维修状态" align="center" prop="workStatus" > <el-table-column label="维修状态" align="center" prop="workStatus" width="150">
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.workStatus == "1"?'维修结束': scope.row.workStatus == "2"?'维修中' : scope.row.workStatus == "0" ? '待维修' : '无'}} <dict-tag
</template> :options="dict.type.device_repair_status"
:value="scope.row.workStatus"
/>
</template>
</el-table-column> </el-table-column>
<el-table-column label="工厂编码" align="center" prop="factoryCode" /> <el-table-column label="工厂编码" align="center" prop="factoryCode" />
<el-table-column <el-table-column
@ -953,12 +956,12 @@
style="width: 195px" style="width: 195px"
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
> >
<el-option <el-option
v-for="item in workStatusOption" v-for="dict in dict.type.device_repair_status"
:key="item.workStatus" :key="dict.value"
:label="item.label" :label="dict.label"
:value="item.workStatus" :value="dict.value"
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-form-item> </el-form-item>
@ -1070,6 +1073,7 @@ import ItemSelectSpareParts from "./selectSpareParts.vue";
export default { export default {
name: " RepairOrder", name: " RepairOrder",
components: { ItemSelect, ItemSelectPerson, ItemSelectSpareParts }, components: { ItemSelect, ItemSelectPerson, ItemSelectSpareParts },
dicts: ["device_repair_status"],
data() { data() {
return { return {
// //
@ -1153,21 +1157,6 @@ export default {
label: "不停机", label: "不停机",
}, },
], ],
//
workStatusOption: [
{
workStatus: "0",
label: "待维修",
},
{
workStatus: "2",
label: "维修中",
},
{
workStatus: "1",
label: "维修结束",
},
],
// //
pickerOptions: { pickerOptions: {
shortcuts: [ shortcuts: [

@ -159,20 +159,20 @@ export default {
// //
handleEquipmentSelectionChange(selection) { handleEquipmentSelectionChange(selection) {
this.ids = selection.map(item => item.nickName); this.ids = selection.map(item => item.userId);
this.userCodes = selection.map(item => item.userNames);
this.single = selection.length!==1; this.single = selection.length!==1;
this.multiple = !selection.length; this.multiple = !selection.length;
console.log("多选框",this.ids);
}, },
submitPersonForm() { submitPersonForm() {
const data = this.ids; const data = this.userNames;
const nickName = data.toString(); const userCodes = data.toString();
if(data.length >1){ if(data.length >1){
Message.warning("只能选择一个维修人,请勿选择多个!"); Message.warning("只能选择一个维修人,请勿选择多个!");
}else{ }else{
if(this.queryParams.itemCodeGet == ""){ if(this.queryParams.itemCodeGet == ""){
this.queryParams.itemCodeGet = nickName; this.queryParams.itemCodeGet = userCodes;
} }
this.selectedRows = this.queryParams.itemCodeGet; this.selectedRows = this.queryParams.itemCodeGet;
this.$emit('onSelected', this.selectedRows); this.$emit('onSelected', this.selectedRows);

@ -10,18 +10,7 @@
@click="handleSelectSparePartsLedger" @click="handleSelectSparePartsLedger"
v-hasPermi="['device:sparePartsApplicationRecord:add']" v-hasPermi="['device:sparePartsApplicationRecord:add']"
>新增</el-button> >新增</el-button>
<ItemSelectSparePartsLedger ref="itemSelectSparePartsLedger" @onSelected="selectSparePartsLedger" ></ItemSelectSparePartsLedger> <ItemSelectSparePartsLedger ref="itemSelectSparePartsLedger" @onSelected="selectSparePartsLedger"></ItemSelectSparePartsLedger>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['device:sparePartsApplicationRecord:edit']"
>修改</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
@ -40,8 +29,8 @@
<el-table v-loading="loading" :data="sparePartsApplicationRecordList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="sparePartsApplicationRecordList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<!-- 序号 --> <!-- 序号 -->
<el-table-column type="index" width="90" align="center" :index="indexMethod" label="序号"/> <el-table-column type="index" width="90" align="center" :index="indexMethod" label="序号" fixed/>
<el-table-column label="维修单号" align="center" prop="workCode" width="150"/> <el-table-column label="维修单号" align="center" prop="workCode" width="200" fixed/>
<el-table-column label="使用设备" align="center" prop="spareUseEquipment" /> <el-table-column label="使用设备" align="center" prop="spareUseEquipment" />
<el-table-column label="备品备件编码" align="center" prop="spareCode" width="120"/> <el-table-column label="备品备件编码" align="center" prop="spareCode" width="120"/>
<el-table-column label="备品备件名称" align="center" prop="spareName" width="120"/> <el-table-column label="备品备件名称" align="center" prop="spareName" width="120"/>
@ -54,24 +43,6 @@
</el-table-column> </el-table-column>
<el-table-column label="申领人" align="center" prop="applyPeople" width="80"/> <el-table-column label="申领人" align="center" prop="applyPeople" width="80"/>
<el-table-column label="批准人" align="center" prop="applyApprovePeople" width="80"/> <el-table-column label="批准人" align="center" prop="applyApprovePeople" width="80"/>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['device:sparePartsApplicationRecord:edit']"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['device:sparePartsApplicationRecord:remove']"
>删除</el-button>
</template>
</el-table-column>
</el-table> </el-table>
<pagination <pagination
@ -87,7 +58,7 @@
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form ref="form" :model="form" :rules="rules" label-width="80px">
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitAddForm"> </el-button> <el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button> <el-button @click="cancel"> </el-button>
</div> </div>
</el-dialog> </el-dialog>
@ -141,42 +112,14 @@ export default {
attr1: null, attr1: null,
attr2: null, attr2: null,
attr3: null, attr3: null,
factoryCode: null, factoryCode: null
applyTimeArray: []
}, },
//
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]);
}
}]
},
// //
form: {}, form: {},
// //
rules: { rules: {
} },
componentKey:0
}; };
}, },
props: { props: {
@ -190,6 +133,7 @@ export default {
methods: { methods: {
// //
handleSelectSparePartsLedger() { handleSelectSparePartsLedger() {
this.$forceUpdate();
this.$refs.itemSelectSparePartsLedger.showFlag = true; this.$refs.itemSelectSparePartsLedger.showFlag = true;
}, },
// //
@ -235,7 +179,8 @@ export default {
createTime: null, createTime: null,
updateBy: null, updateBy: null,
updateTime: null, updateTime: null,
factoryCode: null factoryCode: null,
spareApplyLists : []
}; };
this.resetForm("form"); this.resetForm("form");
}, },
@ -247,7 +192,6 @@ export default {
/** 重置按钮操作 */ /** 重置按钮操作 */
resetQuery() { resetQuery() {
this.resetForm("queryForm"); this.resetForm("queryForm");
this.queryParams.applyTimeArray = [];
this.handleQuery(); this.handleQuery();
}, },
// //
@ -294,16 +238,23 @@ export default {
}, },
// //
selectSparePartsLedger(obj){ selectSparePartsLedger(obj){
console.log("接收参数",obj[0]); console.log("接收参数",obj);
//使 //使
this.form.spareCode = obj[0].materialCode; var spareApplyLists = [];
this.form.spareName = obj[0].materialDesc; obj.forEach(item => {
this.form.spareModel = obj[0].spareMode; var spareApplyList = {};
this.form.spareUseEquipment = this.queryParams.equipmentCode; spareApplyList.spareCode = item.materialCode;
this.form.spareQuantity = obj[0].spareQuantity; spareApplyList.spareName = item.materialDesc;
this.form.workCode = this.queryParams.workCode; spareApplyList.spareModel = item.spareMode;
spareApplyList.spareUseEquipment = this.queryParams.equipmentCode;
spareApplyList.spareQuantity = item.spareQuantity;
spareApplyList.workCode = this.queryParams.workCode;
spareApplyList.storageId = item.storageId;
spareApplyList.amount = item.amount;
spareApplyLists.push(spareApplyList);
});
this.form.spareApplyLists = spareApplyLists;
addSparePartsApplicationRecord(this.form).then(response => { addSparePartsApplicationRecord(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false; this.open = false;
this.getList(); this.getList();
}); });

@ -63,7 +63,7 @@
/> />
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button> <el-button type="primary" @click="submitForm" :disabled="multiple"> </el-button>
<el-button @click="cancel"> </el-button> <el-button @click="cancel"> </el-button>
</div> </div>
</el-dialog> </el-dialog>
@ -71,6 +71,7 @@
<script> <script>
import { listSparePartsLedger, getSparePartsLedger, delSparePartsLedger, addSparePartsLedger, updateSparePartsLedger } from "@/api/device/sparePartsLedger"; import { listSparePartsLedger, getSparePartsLedger, delSparePartsLedger, addSparePartsLedger, updateSparePartsLedger } from "@/api/device/sparePartsLedger";
import { Message } from "element-ui";
export default { export default {
name: "SparePartsLedger", name: "SparePartsLedger",
@ -167,7 +168,6 @@ export default {
methods: { methods: {
handleEdit(index, row) { handleEdit(index, row) {
console.log('row:',index, row); console.log('row:',index, row);
console.log('storageId:',row.storageId) //name
}, },
// //
indexMethod(index) { indexMethod(index) {
@ -250,7 +250,8 @@ export default {
}, },
// //
handleSelectionChange(selection) { handleSelectionChange(selection) {
this.ids = selection.map(item => item.storageId) this.ids = selection.map(item => item.storageId);
this.codes = selection.map(item => item.materialCode);
this.single = selection.length!==1 this.single = selection.length!==1
this.multiple = !selection.length this.multiple = !selection.length
}, },
@ -258,8 +259,15 @@ export default {
submitForm(){ submitForm(){
console.log('data:',this.sparePartsLedgerList); console.log('data:',this.sparePartsLedgerList);
console.log("选择的数据",this.$refs.multipleTable.selection); console.log("选择的数据",this.$refs.multipleTable.selection);
this.$refs.multipleTable.selection.forEach(item => {
if(item.spareQuantity >(item.amount - item.storageAmount)){
Message.warning('备件编码"' + item.materialCode + '"的申领数量大于可用数量,请重新填写!');
this.$refs.multipleTable.clearSelection();
}
});
this.$emit('onSelected',this.$refs.multipleTable.selection); this.$emit('onSelected',this.$refs.multipleTable.selection);
this.showFlag = false; this.showFlag = false;
this.getList();
}, },
} }
}; };

@ -0,0 +1,789 @@
<template>
<div class="app-container">
<el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="98px"
>
<el-form-item label="维修单号" prop="workCode">
<el-input
v-model="queryParams.workCode"
placeholder="请输入维修单号"
clearable
style="width: 200px"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="报修单号" prop="orderCode">
<el-input
v-model="queryParams.orderCode"
placeholder="请输入报修单号"
style="width: 200px"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="设备编码" prop="equipmentCode">
<el-input
v-model="queryParams.equipmentCode"
placeholder="请输入设备编码"
clearable
style="width: 200px"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="是否停机维修" prop="workDownMachine">
<el-select
v-model="queryParams.workDownMachine"
placeholder="请选择是否停机"
@change="$forceUpdate()"
clearable
style="width: 200px"
@keyup.enter.native="handleQuery"
>
<el-option
v-for="item in workDownMachineOption"
:key="item.workDownMachine"
:label="item.label"
:value="item.workDownMachine"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="维修人员" prop="workPerson">
<el-input
v-model="queryParams.workPerson"
placeholder="请输入维修人员"
clearable
style="width: 200px"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="维修组" prop="workTeam">
<el-select
v-model="queryParams.workTeam"
placeholder="请选择维修组"
@change="$forceUpdate()"
clearable
filterable
style="width: 200px"
@keyup.enter.native="handleQuery"
>
<el-option
v-for="item in teamOption"
:key="item.teamCode"
:label="item.teamName"
:value="item.teamCode"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="维修状态" prop="workStatus">
<el-select
v-model="queryParams.workStatus"
placeholder="请选择维修状态"
@change="$forceUpdate()"
clearable
style="width: 200px"
@keyup.enter.native="handleQuery"
>
<el-option
v-for="dict in dict.type.device_repair_status"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="是否委外" prop="workOutsource">
<el-select
v-model="queryParams.workOutsource"
placeholder="请选择是否委外"
@change="$forceUpdate()"
clearable
style="width: 200px"
@keyup.enter.native="handleQuery"
>
<el-option
v-for="item in workOutsourceOption"
:key="item.workOutsource"
:label="item.label"
:value="item.workOutsource"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="委外工单编码" prop="outWorkCode">
<el-input
v-model="queryParams.outWorkCode"
placeholder="请输入委外工单编码"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="计划维修时间" prop="workPlanTime">
<el-date-picker
clearable
v-model="queryParams.workPlanTimeArray"
type="daterange"
align="right"
unlink-panels
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
value-format="yyyy-MM-dd HH:mm:ss"
:picker-options="pickerOptions"
>
</el-date-picker>
</el-form-item>
<el-form-item label="计划停机时间" prop="workPlanDownTime">
<el-date-picker
clearable
v-model="queryParams.workPlanDownTimeArray"
type="daterange"
align="right"
unlink-panels
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
value-format="yyyy-MM-dd HH:mm:ss"
: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="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['device: repairOrder:export']"
>导出</el-button
>
</el-col>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="repairOrderList">
<el-table-column width="55" align="center" border />
<el-table-column
label="维修单号"
align="center"
prop="workCode"
width="200"
fixed
>
<template slot-scope="scope">
<el-button
type="text"
@click="handleView(scope.row)"
v-hasPermi="['device:repairOrderReport:query']"
>{{ scope.row.workCode }}</el-button
>
</template>
</el-table-column>
<el-table-column
label="报修单号"
align="center"
prop="orderCode"
width="200"
/>
<el-table-column label="设备编码" align="center" prop="equipmentCode" />
<el-table-column
label="故障描述"
align="center"
prop="workFaultDesc"
width="300"
/>
<el-table-column
label="计划维修时间"
align="center"
prop="workPlanTime"
width="180"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.workPlanTime) }}</span>
</template>
</el-table-column>
<el-table-column
label="是否停机维修"
align="center"
prop="workDownMachine"
width="180"
>
<template slot-scope="scope">
{{ scope.row.workDownMachine == "1" ? "停机" : "不停机" }}
</template>
</el-table-column>
<el-table-column
label="计划停机时间"
align="center"
prop="workPlanDownTime"
width="180"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.workPlanDownTime) }}</span>
</template>
</el-table-column>
<el-table-column label="维修人员" align="center" prop="workPerson" />
<el-table-column
label="维修组编码"
align="center"
prop="workTeam"
width="100"
/>
<el-table-column
label="维修组名称"
align="center"
prop="teamName"
width="100"
/>
<el-table-column
label="维修组人员"
align="center"
prop="teamPerson"
width="300"
/>
<el-table-column label="是否委外" align="center" prop="workOutsource">
<template slot-scope="scope">
{{ scope.row.workOutsource == "1" ? "转委外" : "不委外" }}
</template>
</el-table-column>
<el-table-column
label="委外工单编码"
align="center"
prop="outWorkCode"
width="180"
/>
<el-table-column
label="原因分析"
align="center"
prop="workReason"
width="300"
/>
<el-table-column
label="维修开始时间"
align="center"
prop="workStartTime"
width="180"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.workStartTime) }}</span>
</template>
</el-table-column>
<el-table-column
label="维修结束时间"
align="center"
prop="workEndTime"
width="180"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.workEndTime) }}</span>
</template>
</el-table-column>
<el-table-column
label="维修用时"
align="center"
prop="workCostTime"
width="180"
>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.workCostTime) }}</span>
</template>
</el-table-column>
<el-table-column label="维修费用" align="center" prop="workCost" />
<el-table-column
label="维修状态"
align="center"
prop="workStatus"
width="150"
>
<template slot-scope="scope">
<dict-tag
:options="dict.type.device_repair_status"
:value="scope.row.workStatus"
/>
</template>
</el-table-column>
<el-table-column label="工厂编码" align="center" prop="factoryCode" />
</el-table>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 修改维修工单对话框 -->
<el-dialog
:title="title"
:visible.sync="openView"
width="1000px"
append-to-body
>
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-tabs type="border-card">
<el-tab-pane label="报修基本信息">
<el-descriptions :column="3" border>
<el-descriptions-item label="报修单编号">{{
form.orderCode
}}</el-descriptions-item>
<el-descriptions-item label="设备编号">{{
form.equipmentCode
}}</el-descriptions-item>
<el-descriptions-item label="设备名称">{{
form.equipmentName
}}</el-descriptions-item>
<el-descriptions-item label="报修来源">{{
form.orderSource
}}</el-descriptions-item>
<el-descriptions-item label="报修时间">{{
form.orderTime
}}</el-descriptions-item>
<el-descriptions-item label="报修人名字">{{
form.orderRepairmanName
}}</el-descriptions-item>
<el-descriptions-item label="联系方式">{{
form.orderConnection
}}</el-descriptions-item>
<el-descriptions-item label="是否立即处理">{{
form.workHandle ? "否" : "是"
}}</el-descriptions-item>
<el-descriptions-item label="计划维修时间">{{
form.workPlanTime
}}</el-descriptions-item>
<el-descriptions-item label="是否停机维修">{{
form.workDownMachine ? "否" : "是"
}}</el-descriptions-item>
<el-descriptions-item label="计划停机时间">{{
form.workPlanDownTime
}}</el-descriptions-item>
<el-descriptions-item label="是否委外">{{
form.workOutsource ? "否" : "是"
}}</el-descriptions-item>
<el-descriptions-item label="故障描述">{{
form.orderDesc
}}</el-descriptions-item>
</el-descriptions>
<el-descriptions :column="1" border>
<el-descriptions-item label="维修前故障图片">
<el-image
v-for="(item, index) in urlBeforeLists"
:key="index"
:src="item"
></el-image
></el-descriptions-item>
</el-descriptions>
</el-tab-pane>
<el-tab-pane label="维修基本信息">
<el-descriptions :column="2" border>
<el-descriptions-item label="维修工单号">{{
form.workCode
}}</el-descriptions-item>
<el-descriptions-item label="报修单号">{{
form.workCode
}}</el-descriptions-item>
<el-descriptions-item label="设备编号">{{
form.equipmentCode
}}</el-descriptions-item>
<el-descriptions-item label="设备名称">{{
form.equipmentName
}}</el-descriptions-item>
<el-descriptions-item label="设备类型">{{
form.equipmentTypeName
}}</el-descriptions-item>
<el-descriptions-item label="设备位置">{{
form.equipmentLocation
}}</el-descriptions-item>
<el-descriptions-item label="工作中心编码">{{
form.workshopCode
}}</el-descriptions-item>
<el-descriptions-item label="工作中心名称">{{
form.workshopName
}}</el-descriptions-item>
<el-descriptions-item label="维修开始时间">{{
form.workStartTime
}}</el-descriptions-item>
<el-descriptions-item label="维修结束时间">{{
form.workEndTime
}}</el-descriptions-item>
<el-descriptions-item label="维修实际开始停机时间">{{
form.actualDownStartTime
}}</el-descriptions-item>
<el-descriptions-item label="维修实际结束停机时间">{{
form.actualDownEndTime
}}</el-descriptions-item>
<el-descriptions-item label="维修人(负责人)">{{
form.workPerson
}}</el-descriptions-item>
<el-descriptions-item label="维修人联系方式">{{
form.workConnection
}}</el-descriptions-item>
<el-descriptions-item label="维修班组">{{
form.workTeam
}}</el-descriptions-item>
<el-descriptions-item label="维修班组人员">{{
form.workTeamPerson
}}</el-descriptions-item>
<el-descriptions-item label="维修用时">{{
form.workCostTime
}}</el-descriptions-item>
<el-descriptions-item label="维修费用">{{
form.workCost
}}</el-descriptions-item>
<el-descriptions-item label="故障原因">{{
form.orderDesc
}}</el-descriptions-item>
<el-descriptions-item label="维修后原因分析">{{
form.workReason
}}</el-descriptions-item>
</el-descriptions>
<el-descriptions :column="1" border>
<el-descriptions-item label="维修后图片">
<el-image
v-for="(item, index) in urlAfterLists"
:key="index"
:src="item"
></el-image
></el-descriptions-item>
</el-descriptions>
</el-tab-pane>
<el-tab-pane label="检查项信息">
<el-table :data="detailList" border style="width: 100%">
<el-table-column prop="itemName" label="检查项名称" width="150">
</el-table-column>
<el-table-column prop="standardName" label="标准名称" width="180">
</el-table-column>
<el-table-column prop="standardType" label="标准类型" width="100">
</el-table-column>
<el-table-column prop="detailReach" label="是否达标" width="50">
</el-table-column>
<el-table-column prop="actualValue" label="实际值" width="50">
</el-table-column>
<el-table-column prop="detailUpLimit" label="上限" width="50">
</el-table-column>
<el-table-column prop="detailDownLimit" label="下限" width="50">
</el-table-column>
<el-table-column prop="detailUnit" label="单位" width="50">
</el-table-column>
<el-table-column prop="detailUnit" label="故障图片">
</el-table-column>
</el-table>
</el-tab-pane>
</el-tabs>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
listRepairOrder,
getRepairOrder,
delRepairOrder,
addRepairOrder,
updateRepairOrder,
applyOutsource,
writeRepairOrder,
} from "@/api/device/repairOrder";
import { Message } from "element-ui";
export default {
name: "RepairOrderReport",
dicts: ["device_repair_status"],
data() {
return {
//
urlBeforeLists: [],
//
urlAfterLists: [],
//
teamOption: [],
optType: undefined,
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
repairOrderList: [],
//
title: "",
//
openView: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
orderId: null,
orderCode: null,
workCode: null,
workHandle: null,
workPlanTime: null,
workPlanDownTime: null,
orderRelevance: null,
workPerson: null,
workTeam: null,
workOutsource: null,
workDownMachine: null,
equipmentCode: null,
workReason: null,
workFaultDesc: null,
workCostTime: null,
workCost: null,
outWorkId: null,
outWorkCode: null,
attr1: null,
attr2: null,
attr3: null,
factoryCode: null,
//
workPlanTimeArray: [],
workPlanDownTimeArray: [],
},
//
workOutsourceOption: [
{
workOutsource: "1",
label: "转委外",
},
{
workOutsource: "0",
label: "不委外",
},
],
//
workDownMachineOption: [
{
workDownMachine: "1",
label: "停机",
},
{
workDownMachine: "0",
label: "不停机",
},
],
//
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]);
},
},
],
},
//
form: {},
//
rules: {},
};
},
created() {
this.getList();
},
methods: {
/** 查询维修工单列表 */
getList() {
this.loading = true;
listRepairOrder(this.queryParams).then((response) => {
this.repairOrderList = response.rows;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.openView = false;
},
//
reset() {
this.form = {
workId: null,
orderId: null,
orderCode: null,
workHandle: null,
workPlanTime: null,
workPlanDownTime: null,
orderRelevance: null,
workPerson: null,
workTeam: null,
workOutsource: null,
workDownMachine: null,
equipmentCode: null,
workReason: null,
workFaultDesc: null,
workCostTime: null,
workCost: null,
outWorkId: null,
outWorkCode: null,
attr1: null,
attr2: null,
attr3: null,
createBy: null,
createTime: null,
updateTime: null,
updateBy: null,
delFlag: null,
factoryCode: null,
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
//
(this.queryParams.workPlanTimeArray = []),
(this.queryParams.workPlanDownTimeArray = []),
this.handleQuery();
},
/** 查询按钮操作 */
handleView(row) {
this.reset();
const workId = row.workId || this.ids;
getRepairOrder(workId).then((response) => {
this.form = response.data;
//response.data.beforeRepairFiles
if (response.data.beforeRepairFiles != null) {
var beforeNewFiles = [];
response.data.beforeRepairFiles.forEach((item) => {
var beforeNewFile = {};
beforeNewFile.name = item.fileName;
beforeNewFile.url = item.fileAddress;
beforeNewFiles.push(beforeNewFile);
});
this.form.beforeRepairFiles = beforeNewFiles;
//
var urlBeforeLists = [];
beforeNewFiles.forEach((item) => {
urlBeforeLists.push(item.url);
});
this.urlBeforeLists = urlBeforeLists;
}
//response.data.afterRepairFiles
if (response.data.afterRepairFiles != null) {
var afterNewFiles = [];
response.data.afterRepairFiles.forEach((item) => {
var afterNewFile = {};
afterNewFile.name = item.fileName;
afterNewFile.url = item.fileAddress;
afterNewFiles.push(afterNewFile);
});
this.form.afterRepairFiles = afterNewFiles;
//
var urlAfterLists = [];
afterNewFiles.forEach((item) => {
urlAfterLists.push(item.url);
});
this.urlAfterLists = urlAfterLists;
}
this.detailList = response.data.detailList;
//
var standards = [];
this.detailList.forEach((item1) => {
//
item1.standardList.forEach((item) => {
var standard = {};
standard.itemName = item1.itemName;
standard.standardName = item.standardName;
standard.detailUpLimit = item.detailUpLimit;
standard.detailDownLimit = item.detailDownLimit;
standard.detailUnit = item.detailUnit;
standard.detailReach = item.detailReach;
standard.actualValue = item.actualValue;
standard.standardType = item.standardType;
standards.push(standard);
});
});
this.detailList = standards;
//
this.openView = true;
this.title = "查看维修工单";
});
},
/** 导出按钮操作 */
handleExport() {
this.download(
"device/repairOrder/export",
{
...this.queryParams,
},
` repairOrder_${new Date().getTime()}.xlsx`
);
},
},
};
</script>
Loading…
Cancel
Save