增加备件预警管理
This commit is contained in:
parent
9161fa358e
commit
098396f716
@ -9,6 +9,35 @@ export default {
|
||||
get: async function (params) {
|
||||
return await http.post(this.url, params);
|
||||
},
|
||||
},
|
||||
add:{
|
||||
url: `${config.API_URL}/spare.parts.water.level.warning.edit`,
|
||||
name: "新增/编辑水位信息",
|
||||
post: async function (params) {
|
||||
return await http.post(this.url, params);
|
||||
},
|
||||
},
|
||||
delete:{
|
||||
url: `${config.API_URL}/spare.parts.water.level.warning.delete`,
|
||||
name: "删除水位信息",
|
||||
post: async function (params) {
|
||||
return await http.post(this.url, params);
|
||||
},
|
||||
},
|
||||
room:{
|
||||
url: `${config.API_URL}/regional.room.code.list`,
|
||||
name: "区域机房代码列表",
|
||||
post: async function (params) {
|
||||
return await http.post(this.url, params);
|
||||
},
|
||||
},
|
||||
export:{
|
||||
url: `${config.API_URL}/spare.parts.water.level.warning.export`,
|
||||
name: "导出备件预警列表",
|
||||
post: async function (params) {
|
||||
return await http.post(this.url,params);
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
@ -47,7 +47,7 @@ export default {
|
||||
},
|
||||
methods:{
|
||||
getWsResult(res){
|
||||
if(res.data && (res.data.type == 6 || res.data.type == 7 || res.data.type == 8 || res.data.type == 11 || res.data.type == 19 || res.data.type == 20 || res.data.type == 29 || res.data.type == 30 || res.data.type == 32 || res.data.type == 33 || res.data.type == 34)){
|
||||
if(res.data && (res.data.type == 6 || res.data.type == 7 || res.data.type == 8 || res.data.type == 11 || res.data.type == 19 || res.data.type == 20 || res.data.type == 29 || res.data.type == 30 || res.data.type == 32 || res.data.type == 33 || res.data.type == 34 || res.data.type == 43)){
|
||||
let item = {
|
||||
type:res.data.type,
|
||||
type_desc:res.data.type_desc,
|
||||
@ -86,9 +86,12 @@ export default {
|
||||
case 33:
|
||||
this.list[9] = item;
|
||||
break;
|
||||
default:
|
||||
case 34:
|
||||
this.list[10] = item;
|
||||
break;
|
||||
default:
|
||||
this.list[11] = item;
|
||||
break;
|
||||
}
|
||||
|
||||
if(res.data && res.data.status == 1100){
|
||||
|
||||
@ -1,5 +1,16 @@
|
||||
<template>
|
||||
<el-container class="mainBox mainBoxHeaderNoBorder">
|
||||
<el-header class="header">
|
||||
<div class="left-panel">
|
||||
<el-button type="primary" v-auth="'sparePartsWaterLevelWarningEdit'" :size="size" icon="el-icon-plus" @click="add">新增预警</el-button>
|
||||
<el-button type="danger" v-auth="'sparePartsWaterLevelWarningDelete'" plain :size="size" icon="el-icon-Delete" :disabled="selection.length==0" @click="batch_del"></el-button>
|
||||
</div>
|
||||
<div class="right-panel">
|
||||
<scExport :size="size" @exportData="exportData" @updateShow="exportChangeShow" :show="exportShow" type="43">
|
||||
<el-button :size="size" v-auth="'sparePartsWaterLevelWarningExport'" icon="sc-icon-Download" :disabled="exportShow" @click="exportData">下载</el-button>
|
||||
</scExport>
|
||||
</div>
|
||||
</el-header>
|
||||
<el-main class="nopadding">
|
||||
<div class="searchMain">
|
||||
<scSearch ref="scSearch" :searchList="searchList" @fetchSelectData="getSelectData"></scSearch>
|
||||
@ -9,7 +20,7 @@
|
||||
<el-button :size="size" type="info" icon="el-icon-RefreshRight">重置</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<scTable ref="table" :apiObj="list.apiObj" row-key="id" @selection-change="selectionChange" stripe :size="size">
|
||||
<scTable ref="table" :apiObj="list.apiObj" :column="list.column" row-key="id" @selection-change="selectionChange" stripe :size="size">
|
||||
<el-table-column type="selection" align="center" width="40"></el-table-column>
|
||||
<sc-table-column label="序号" align="center" type="index"></sc-table-column>
|
||||
<el-table-column label="操作" fixed="right" align="center" width="150">
|
||||
@ -18,9 +29,13 @@
|
||||
<el-button class="noBorderBtn" icon="el-icon-more" :size="size"></el-button>
|
||||
<template #dropdown>
|
||||
<el-dropdown-menu>
|
||||
<el-dropdown-item @click="table_show(scope.row, 'see')" icon="sc-icon-See">查看详情</el-dropdown-item>
|
||||
<el-dropdown-item @click="table_show(scope.row, 'see')" icon="sc-icon-See">查看</el-dropdown-item>
|
||||
<span v-auth="'sparePartsWaterLevelWarningEdit'">
|
||||
<el-dropdown-item @click="table_edit(scope.row, 'edit')" icon="sc-icon-Edit">编辑</el-dropdown-item>
|
||||
<el-dropdown-item @click="table_del(scope.row, 'delete')" icon="sc-icon-Delete">删除</el-dropdown-item>
|
||||
</span>
|
||||
<span v-auth="'sparePartsWaterLevelWarningDelete'">
|
||||
<el-dropdown-item @click="table_del(scope.row, 'delete')" divided icon="sc-icon-Delete">删除</el-dropdown-item>
|
||||
</span>
|
||||
</el-dropdown-menu>
|
||||
</template>
|
||||
</el-dropdown>
|
||||
@ -29,27 +44,25 @@
|
||||
</scTable>
|
||||
</el-main>
|
||||
</el-container>
|
||||
|
||||
<save-dialog v-if="dialog.save" ref="saveDialog" @success="handleSaveSuccess" @closed="dialog.save=false"></save-dialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
||||
import saveDialog from "./save"
|
||||
export default {
|
||||
name: 'earlyManager',
|
||||
components: {
|
||||
|
||||
saveDialog
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
size:'small',
|
||||
searchShow:false,
|
||||
setMap:{
|
||||
status:[]
|
||||
},
|
||||
dialog: {
|
||||
save: false,
|
||||
permission: false
|
||||
},
|
||||
exportShow:false,
|
||||
list:{
|
||||
apiObj: this.$API.early.earlyWarn.list,
|
||||
column:[]
|
||||
@ -105,31 +118,28 @@ export default {
|
||||
this.$refs.saveDialog.open('show').setData(row)
|
||||
})
|
||||
},
|
||||
//权限设置
|
||||
permission(){
|
||||
this.dialog.permission = true
|
||||
this.$nextTick(() => {
|
||||
this.$refs.permissionDialog.open()
|
||||
})
|
||||
},
|
||||
//删除
|
||||
async table_del(row){
|
||||
const reqData = {id: row.id};
|
||||
const res = await this.$API.demo.post.post(reqData);
|
||||
const reqData = {ids: [row.id]};
|
||||
const res = await this.$API.early.earlyWarn.delete.post(reqData);
|
||||
if(res.code == 200){
|
||||
this.$refs.table.refresh()
|
||||
this.$message.success("删除成功")
|
||||
this.$refs.table.refresh();
|
||||
this.$message.success("删除成功");
|
||||
}
|
||||
},
|
||||
//批量删除
|
||||
async batch_del(){
|
||||
this.$confirm(`确定删除选中的 ${this.selection.length} 项吗?`, '提示', {
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
}).then(async () => {
|
||||
const loading = this.$loading();
|
||||
const params = {ids: this.selection.map(em => em.id)}
|
||||
const res = await this.$API.early.earlyWarn.delete.post(params);
|
||||
if (res.code == 200) {
|
||||
this.$refs.table.refresh()
|
||||
loading.close();
|
||||
this.$message.success("操作成功")
|
||||
}
|
||||
}).catch(() => {
|
||||
|
||||
})
|
||||
@ -138,16 +148,6 @@ export default {
|
||||
selectionChange(selection){
|
||||
this.selection = selection;
|
||||
},
|
||||
//表格内开关
|
||||
changeSwitch(val, row){
|
||||
row.status = row.status == '1'?'0':'1'
|
||||
row.$switch_status = true;
|
||||
setTimeout(()=>{
|
||||
delete row.$switch_status;
|
||||
row.status = val;
|
||||
this.$message.success("操作成功")
|
||||
}, 500)
|
||||
},
|
||||
//搜索
|
||||
upSearch(){
|
||||
this.$refs.table.upData(this.params);
|
||||
@ -160,7 +160,21 @@ export default {
|
||||
}else if(mode=='edit'){
|
||||
this.$refs.table.refresh()
|
||||
}
|
||||
},
|
||||
|
||||
// 下载导出
|
||||
exportChangeShow(params){
|
||||
if(params.type == 43){
|
||||
this.exportShow = params.status==0?true:false
|
||||
}
|
||||
},
|
||||
async exportData() {
|
||||
if(this.exportShow) return
|
||||
const res = await this.$API.early.earlyWarn.export.post(this.params);
|
||||
if(res.code == 200){
|
||||
this.$message.success('开始导出');
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
139
src/views/earlyManager/save.vue
Normal file
139
src/views/earlyManager/save.vue
Normal file
@ -0,0 +1,139 @@
|
||||
<template>
|
||||
<el-dialog :title="titleMap[mode]" v-model="visible" :width="500" destroy-on-close @closed="$emit('closed')">
|
||||
<el-form :model="form" :rules="rules" :disabled="mode=='show'" ref="dialogForm" label-width="140px">
|
||||
<el-form-item label="区域" prop="region">
|
||||
<el-select v-model="form.region" placeholder="请选择区域" filterable clearable style="width: 100%;">
|
||||
<el-option v-for="(item,index) in setMap.roomList" :key="index" :label="item.room_name" :value="item.room_code"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="部件类别" prop="part_category">
|
||||
<el-input v-model="form.part_category" placeholder="请输入部件类别" clearable type="text"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="部件MPN" prop="part_mpn">
|
||||
<el-input v-model="form.part_mpn" placeholder="请输入部件MPN" clearable type="text"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="在保备件出货总数" prop="total_protected_parts">
|
||||
<el-input v-model="form.total_protected_parts" placeholder="请输入出货总数" clearable type="text"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="在保备件水位" prop="protected_spares_water_level">
|
||||
<el-input v-model="form.protected_spares_water_level" placeholder="请输入备件水位" clearable type="text"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="在保备件数量" prop="protected_spares_quantity">
|
||||
<el-input v-model="form.protected_spares_quantity" placeholder="请输入备件数量" clearable type="text"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="治理计划" prop="governance_plan">
|
||||
<el-input v-model="form.governance_plan" placeholder="请输入治理计划" clearable type="textarea" :rows="3"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="风险描述" prop="risk_description">
|
||||
<el-input v-model="form.risk_description" placeholder="请输入风险描述" clearable type="textarea" :rows="3"></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="visible=false" >取 消</el-button>
|
||||
<el-button v-if="mode!='show'" type="primary" :loading="isSave" @click="submit()">保 存</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
emits: ['success', 'closed'],
|
||||
data() {
|
||||
return {
|
||||
mode: "add",
|
||||
titleMap: {
|
||||
add: '新增预警',
|
||||
edit: '编辑预警',
|
||||
show: '查看详情'
|
||||
},
|
||||
visible: false,
|
||||
isSave: false,
|
||||
|
||||
setMap:{
|
||||
roomList:[]
|
||||
},
|
||||
//表单数据
|
||||
form: {
|
||||
id:"",
|
||||
region: "",
|
||||
part_category: "",
|
||||
part_mpn: "",
|
||||
total_protected_parts: "",
|
||||
protected_spares_water_level: "",
|
||||
protected_spares_quantity: "",
|
||||
governance_plan: "",
|
||||
risk_description: "",
|
||||
},
|
||||
//验证规则
|
||||
rules: {
|
||||
region:[
|
||||
{required:true,message:"区域不能为空"}
|
||||
],
|
||||
part_category:[
|
||||
{required:true,message:"部件类别不能为空"}
|
||||
],
|
||||
part_mpn:[
|
||||
{required:true,message:"部件MPN不能为空"}
|
||||
],
|
||||
total_protected_parts:[
|
||||
{required:true,message:"在保备件出货总数不能为空"}
|
||||
],
|
||||
protected_spares_water_level:[
|
||||
{required:true,message:"在保备件水位不能为空"}
|
||||
],
|
||||
protected_spares_quantity:[
|
||||
{required:true,message:"在保备件数量不能为空"}
|
||||
]
|
||||
},
|
||||
|
||||
roomParams:{
|
||||
field:"room_code",
|
||||
room_code:{
|
||||
operator:"link",
|
||||
value:""
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.roomList()
|
||||
},
|
||||
methods: {
|
||||
//显示
|
||||
open(mode='add'){
|
||||
this.mode = mode;
|
||||
this.visible = true;
|
||||
return this
|
||||
},
|
||||
//加载树数据
|
||||
async roomList(){
|
||||
const res = await this.$API.early.earlyWarn.room.post(this.roomParams);
|
||||
if(res.code == 200){
|
||||
this.setMap.roomList = res.data;
|
||||
}
|
||||
},
|
||||
//表单提交方法
|
||||
submit(){
|
||||
this.$refs.dialogForm.validate(async (valid) => {
|
||||
if (valid) {
|
||||
this.isSave = true;
|
||||
const res = await this.$API.early.earlyWarn.add.post(this.form);
|
||||
this.isSave = false;
|
||||
if(res.code == 200){
|
||||
this.$emit('success', this.form, this.mode);
|
||||
this.visible = false;
|
||||
this.$message.success("操作成功");
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
//表单注入数据
|
||||
async setData(data) {
|
||||
Object.assign(this.form, data);
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
</style>
|
||||
@ -44,6 +44,26 @@
|
||||
</el-row>
|
||||
</div>
|
||||
</div>
|
||||
<div class="boxMain cardItem">
|
||||
<div class="title">流程进度</div>
|
||||
<div class="boxCom cardBody">
|
||||
<el-steps class="orderSteps" :active="form.process_num" align-center>
|
||||
<el-step :status="item.status" v-for="(item,index) in form.process_engine" :key="index" :title="item.description" />
|
||||
</el-steps>
|
||||
</div>
|
||||
</div>
|
||||
<div class="boxMain ">
|
||||
<div class="title">维保单号</div>
|
||||
<div class="boxCom">
|
||||
<el-row>
|
||||
<el-col :span="8" :lg="6">
|
||||
<el-form-item label="维修单号" prop="maintenance_grade">
|
||||
<el-input class="input" v-model="form.repair_order_no" type="text" disabled placeholder="请输入维修单号"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
</div>
|
||||
<div class="boxMain">
|
||||
<div class="title">维保工单信息</div>
|
||||
<div class="boxCom">
|
||||
@ -192,8 +212,13 @@ export default {
|
||||
setMap:{
|
||||
maintenance_level:[],
|
||||
fault_type:[],
|
||||
customer:[],
|
||||
},
|
||||
params:{
|
||||
order_id:Number(this.$route.query.id)
|
||||
},
|
||||
form:{
|
||||
id:"",
|
||||
customer_id:"", // 客户
|
||||
standard_model:"", // 标准机型
|
||||
repair_order_no:"",
|
||||
@ -219,7 +244,8 @@ export default {
|
||||
warranty_end_date: "", // 保修期结束
|
||||
maintenance_plan: '', // 维保等级:1-铜牌;常量维护项
|
||||
is_verify_erp_inventory:true,
|
||||
component_info:[]
|
||||
component_info:[],
|
||||
process_engine:[]
|
||||
},
|
||||
rules:{
|
||||
fault_description:[{required:true,trigger:"blur",message:"故障描述不能为空"}],
|
||||
@ -238,9 +264,60 @@ export default {
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
|
||||
this.getData();
|
||||
this.getCustomerSelect('customer');
|
||||
this.getSelect('fault_type',1);
|
||||
this.getSelect('maintenance_level',2);
|
||||
},
|
||||
methods:{
|
||||
async getData() {
|
||||
this.loading = true;
|
||||
const res = await this.$API.orders.order.maintenance.info.post(this.params);
|
||||
if(res.code == 200){
|
||||
for(let i in this.form){
|
||||
this.form[i] = res.data[i]===0?'':res.data[i];
|
||||
}
|
||||
|
||||
if(res.data.process_engine){
|
||||
let obj = this.processList(res.data.process_engine);
|
||||
res.data.process_engine = obj.processedList;
|
||||
res.data.process_num = obj.num;
|
||||
}
|
||||
this.form.process_engine = res.data.process_engine;
|
||||
this.form.component_info = res.data.component_info;
|
||||
if(res.data.component_info.length==0){
|
||||
this.form.component_info = [
|
||||
{
|
||||
component_serial_no:res.data.component_serial_no,
|
||||
component_manufacturer:res.data.component_manufacturer,
|
||||
component_model:res.data.component_model,
|
||||
component_pn:res.data.component_pn,
|
||||
bd_backup_count:res.data.bd_backup_count
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
this.loading = false;
|
||||
},
|
||||
processList(list) {
|
||||
let obj = {
|
||||
num:0,
|
||||
processedList:this.$TOOL.objCopy(list)
|
||||
}
|
||||
let foundNodeTrue = false;
|
||||
for (let i = 0; i < obj.processedList.length; i++) {
|
||||
if (obj.processedList[i].node === true) {
|
||||
foundNodeTrue = true;
|
||||
obj.processedList[i].status = 'finish';
|
||||
obj.num = i;
|
||||
} else if (!foundNodeTrue) {
|
||||
obj.processedList[i].status = 'success';
|
||||
}
|
||||
if (foundNodeTrue && obj.processedList[i].node !== true) break;
|
||||
}
|
||||
return obj;
|
||||
},
|
||||
|
||||
async getSelect(name,num) {
|
||||
const res = await this.$API.orders.order.maintenance.optionList.post({const_type:num});
|
||||
if(res.code == 200){
|
||||
|
||||
Loading…
Reference in New Issue
Block a user