完善工单列表详情

This commit is contained in:
龙运模
2024-08-22 19:37:18 +08:00
parent 7db33a3ea9
commit f81c63f5f0
12 changed files with 725 additions and 190 deletions
+32 -143
View File
@@ -1,163 +1,28 @@
<template>
<el-container>
<el-main class="orderMain">
<el-main class="orderMain" v-loading="loading" element-loading-text="加载中...">
<el-scrollbar>
<div class="cardBox">
<div class="headerView">
<div class="title">工单时间</div>
<div class="status">
<span class="name">当前状态:</span>
<span class="text">{{info.business_status}}</span>
</div>
</div>
<div class="cardBody">
<el-row>
<el-col :span="8" :lg="6">
<span class="label">创建时间:</span>
<span class="text">{{info.created_at}}</span>
</el-col>
<el-col :span="8" :lg="6">
<span class="label">PE确认时间:</span>
<span class="text">{{info.pe_confirmation_time}}</span>
</el-col>
<el-col :span="8" :lg="6">
<span class="label">过保时间:</span>
<span class="text">{{info.warranty_end_date}}</span>
</el-col>
</el-row>
</div>
</div>
<div class="cardBox footerCard">
<div class="cardItem">
<div class="title">流程进度</div>
<div class="cardBody">
<el-steps :active="2" align-center>
<el-step :status="item.node?'error':'finish'" v-for="item in info.process_engine" :key="item" :title="item.description" />
</el-steps>
</div>
</div>
<div class="cardItem">
<div class="title">维保单号</div>
<div class="cardBody">
<el-row>
<el-col :span="8" :lg="6">
<span class="label">维修单号:</span>
<span class="text">{{info.repair_order_no}}</span>
</el-col>
</el-row>
</div>
</div>
<div class="cardItem">
<div class="title">维保工单信息</div>
<div class="cardBody">
<el-row>
<el-col :span="8" :lg="6">
<span class="label">维修等级:</span>
<span class="text">{{info.maintenance_plan}}</span>
</el-col>
<el-col :span="8" :lg="6">
<span class="label">故障类型:</span>
<span class="text">{{info.fault_type}}</span>
</el-col>
<el-col :span="8" :lg="6">
<span class="label">故障内容:</span>
<span class="text">{{info.fault_description}}</span>
</el-col>
</el-row>
<el-row>
<el-col :span="8" :lg="6">
<span class="label">维保等级:</span>
<span class="text">{{info.maintenance_plan}}</span>
</el-col>
<el-col :span="8" :lg="6">
<span class="label">是否关机:</span>
<span class="text">{{info.requires_shutdown}}</span>
</el-col>
</el-row>
</div>
</div>
<div class="cardItem">
<div class="title">部件信息</div>
<div class="cardBody">
<el-row>
<el-col :span="8" :lg="6">
<span class="label">机房城市:</span>
<span class="text">{{info.city}}</span>
</el-col>
<el-col :span="8" :lg="6">
<span class="label">园区:</span>
<span class="text">{{info.park_name}}</span>
</el-col>
</el-row>
<el-row>
<el-col :span="8" :lg="6">
<span class="label">机房:</span>
<span class="text">{{info.data_center_name}}</span>
</el-col>
<el-col :span="8" :lg="6">
<span class="label">机架位:</span>
<span class="text">{{info.rack_position}}</span>
</el-col>
</el-row>
<el-row>
<el-col :span="8" :lg="6">
<span class="label">整机SN:</span>
<span class="text">{{info.device_sn}}</span>
</el-col>
<el-col :span="8" :lg="6">
<span class="label">整机厂商:</span>
<span class="text">{{info.device_manufacturer}}</span>
</el-col>
<el-col :span="8" :lg="6">
<span class="label">整机型号:</span>
<span class="text">{{info.device_model}}</span>
</el-col>
</el-row>
<el-row>
<el-col :span="8" :lg="6">
<span class="label">部件SN/Sp:</span>
<span class="text">{{info.component_serial_no}}</span>
</el-col>
<el-col :span="8" :lg="6">
<span class="label">部件厂商:</span>
<span class="text">{{info.component_manufacturer}}</span>
</el-col>
<el-col :span="8" :lg="6">
<span class="label">部件型号:</span>
<span class="text">{{info.component_model}}</span>
</el-col>
</el-row>
<el-row>
<el-col :span="8" :lg="6">
<span class="label">部件PN/Sp:</span>
<span class="text">{{info.component_pn}}</span>
</el-col>
<el-col :span="8" :lg="6">
<span class="label">SLA截止时间:</span>
<span class="text">{{info.sla_expiration}}</span>
</el-col>
<el-col :span="8" :lg="6">
<span class="label">剩余BD数:</span>
<span class="text">{{info.bd_backup_count}}</span>
</el-col>
</el-row>
</div>
</div>
</div>
<detailView :data="info"></detailView>
</el-scrollbar>
</el-main>
</el-container>
</template>
<script>
import detailView from "@/views/order/orderList/detailView";
export default {
name: "order-info",
components:{
detailView
},
data(){
return{
loading:false,
params:{
order_id:Number(this.$route.query.id)
},
info:{}
}
},
mounted() {
@@ -165,10 +30,34 @@ export default {
},
methods:{
async getData() {
this.loading = true;
const res = await this.$API.orders.order.maintenance.info.post(this.params);
if(res.code == 200){
if(res.data.process_engine){
res.data.process_engine = this.processList(res.data.process_engine).processedList;
res.data.process_num = this.processList(res.data.process_engine).num;
}
this.info = res.data;
}
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;
}
}
}
+1 -1
View File
@@ -23,7 +23,7 @@ export default {
column: [],
},
params:{
bill_id: this.$route.query.id,
bill_id: Number(this.$route.query.id),
bill_type:1, // 1维保单 2维修单
}
}
+176
View File
@@ -0,0 +1,176 @@
<template>
<div class="cardBox">
<div class="headerView">
<div class="title">工单时间</div>
<div class="status">
<span class="name">当前状态:</span>
<span class="text">{{info.business_status}}</span>
</div>
</div>
<div class="cardBody">
<el-row>
<el-col :span="8" :lg="6">
<span class="label">创建时间:</span>
<span class="text">{{info.created_at}}</span>
</el-col>
<el-col :span="8" :lg="6">
<span class="label">PE确认时间:</span>
<span class="text">{{info.pe_confirmation_time}}</span>
</el-col>
<el-col :span="8" :lg="6">
<span class="label">过保时间:</span>
<span class="text">{{info.warranty_end_date}}</span>
</el-col>
</el-row>
</div>
</div>
<div class="cardBox footerCard">
<div class="cardItem">
<div class="title">流程进度</div>
<div class="cardBody">
<el-steps class="orderSteps" :active="info.process_num" align-center>
<el-step :status="item.status" v-for="item in info.process_engine" :key="item" :title="item.description" />
</el-steps>
</div>
</div>
<div class="cardItem">
<div class="title">维保单号</div>
<div class="cardBody">
<el-row>
<el-col :span="8" :lg="6">
<span class="label">维修单号:</span>
<span class="text">{{info.repair_order_no}}</span>
</el-col>
</el-row>
</div>
</div>
<div class="cardItem">
<div class="title">维保工单信息</div>
<div class="cardBody">
<el-row>
<el-col :span="8" :lg="6">
<span class="label">维修等级:</span>
<span class="text">{{info.maintenance_plan}}</span>
</el-col>
<el-col :span="8" :lg="6">
<span class="label">故障类型:</span>
<span class="text">{{info.fault_type}}</span>
</el-col>
<el-col :span="8" :lg="6">
<span class="label">故障内容:</span>
<span class="text">{{info.fault_description}}</span>
</el-col>
</el-row>
<el-row>
<el-col :span="8" :lg="6">
<span class="label">维保等级:</span>
<span class="text">{{info.maintenance_plan}}</span>
</el-col>
<el-col :span="8" :lg="6">
<span class="label">是否关机:</span>
<span class="text">{{info.requires_shutdown}}</span>
</el-col>
</el-row>
</div>
</div>
<div class="cardItem">
<div class="title">部件信息</div>
<div class="cardBody">
<el-row>
<el-col :span="8" :lg="6">
<span class="label">机房城市:</span>
<span class="text">{{info.city}}</span>
</el-col>
<el-col :span="8" :lg="6">
<span class="label">园区:</span>
<span class="text">{{info.park_name}}</span>
</el-col>
</el-row>
<el-row>
<el-col :span="8" :lg="6">
<span class="label">机房:</span>
<span class="text">{{info.data_center_name}}</span>
</el-col>
<el-col :span="8" :lg="6">
<span class="label">机架位:</span>
<span class="text">{{info.rack_position}}</span>
</el-col>
</el-row>
<el-row>
<el-col :span="8" :lg="6">
<span class="label">整机SN:</span>
<span class="text">{{info.device_sn}}</span>
</el-col>
<el-col :span="8" :lg="6">
<span class="label">整机厂商:</span>
<span class="text">{{info.device_manufacturer}}</span>
</el-col>
<el-col :span="8" :lg="6">
<span class="label">整机型号:</span>
<span class="text">{{info.device_model}}</span>
</el-col>
</el-row>
<el-row>
<el-col :span="8" :lg="6">
<span class="label">部件SN/Sp:</span>
<span class="text">{{info.component_serial_no}}</span>
</el-col>
<el-col :span="8" :lg="6">
<span class="label">部件厂商:</span>
<span class="text">{{info.component_manufacturer}}</span>
</el-col>
<el-col :span="8" :lg="6">
<span class="label">部件型号:</span>
<span class="text">{{info.component_model}}</span>
</el-col>
</el-row>
<el-row>
<el-col :span="8" :lg="6">
<span class="label">部件PN/Sp:</span>
<span class="text">{{info.component_pn}}</span>
</el-col>
<el-col :span="8" :lg="6">
<span class="label">SLA截止时间:</span>
<span class="text">{{info.sla_expiration}}</span>
</el-col>
<el-col :span="8" :lg="6">
<span class="label">剩余BD数:</span>
<span class="text">{{info.bd_backup_count}}</span>
</el-col>
</el-row>
</div>
</div>
<slot name="review"></slot>
</div>
</template>
<script>
export default {
name: "detailView",
props:{
data:{
type:Object
}
},
watch:{
data(val){
this.info = val;
}
},
data(){
return{
info:{}
}
},
mounted() {
},
methods:{
}
}
</script>
<style scoped lang="scss">
</style>
+78 -32
View File
@@ -3,9 +3,9 @@
<el-header>
<div class="left-panel">
<el-button type="primary" :size="size" icon="el-icon-plus" @click="add">新增工单</el-button>
<el-button type="success" :size="size" icon="sc-icon-Review" :disabled="selection.length==0" @click="batch_del">批量审核</el-button>
<el-button type="primary" plain :size="size" icon="sc-icon-OrderSetup" :disabled="selection.length==0" @click="batch_del">提交维保</el-button>
<el-button type="primary" plain :size="size" icon="sc-icon-OrderSetup" :disabled="selection.length==0" @click="batch_del">下发维保</el-button>
<el-button type="success" :size="size" icon="sc-icon-OrderReview" :disabled="selection.length==0" @click="batch_review">批量审核</el-button>
<el-button type="primary" plain :size="size" :disabled="selection.length==0" @click="save_maintenance">提交维保</el-button>
<el-button type="primary" plain :size="size" :disabled="selection.length==0" @click="issued_maintenance">下发维保</el-button>
<el-button type="danger" plain :size="size" icon="el-icon-Delete" :disabled="selection.length==0" @click="batch_del"></el-button>
<scImport ref="scImport" :size="size" title="批量导入维保工单" @parentParams="importUpload" @importSuccess="importSuccess">
<template #header>
@@ -53,12 +53,12 @@
<el-button class="noBorderBtn" icon="el-icon-more" :size="size"></el-button>
<template #dropdown>
<el-dropdown-menu>
<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>
<el-dropdown-item @click="table_show(scope.row, 'see')" icon="sc-icon-See" divided>审核工单</el-dropdown-item>
<el-dropdown-item @click="table_show(scope.row, 'see')" icon="sc-icon-See">工单详情</el-dropdown-item>
<el-dropdown-item icon="sc-icon-OrderSetup" @click="table_setup(scope.row)" divided>提交维保</el-dropdown-item>
<el-dropdown-item icon="sc-icon-OrderSetup" @click="table_setup(scope.row)">下发维保</el-dropdown-item>
<el-dropdown-item @click="table_edit(scope.row)" icon="sc-icon-Edit">编辑工单</el-dropdown-item>
<el-dropdown-item @click="table_del(scope.row)" icon="sc-icon-Delete">删除工单</el-dropdown-item>
<el-dropdown-item @click="table_review(scope.row)" icon="sc-icon-OrderReview" divided>审核工单</el-dropdown-item>
<el-dropdown-item @click="table_show(scope.row)" icon="sc-icon-See">工单详情</el-dropdown-item>
<el-dropdown-item icon="sc-icon-SaveMaintenance" @click="table_submit(scope.row)" divided>提交维保</el-dropdown-item>
<el-dropdown-item icon="sc-icon-OrderMaintenance" @click="table_send(scope.row)">下发维保</el-dropdown-item>
<el-dropdown-item icon="sc-icon-OrderLog" @click="table_logs(scope.row)" divided>工单日志</el-dropdown-item>
</el-dropdown-menu>
</template>
@@ -158,7 +158,7 @@ export default {
//添加
add(){
eventBus.$emit('tagClose','/order/create-order',{id:this.emailId});
eventBus.$emit('tagClose','/order/create-order');
},
// 批量导入
@@ -192,15 +192,16 @@ export default {
//编辑
table_edit(row){
this.dialog.save = true
this.$nextTick(() => {
this.$refs.saveDialog.open('edit').setData(row)
})
eventBus.$emit('tagClose','/order/create-order',{id:row.id});
},
//查看
table_show(row){
eventBus.$emit('tagClose','/order/order-info',{id:row.id});
},
// 审核
table_review(row){
eventBus.$emit('tagClose','/order/preview-order',{id:row.id});
},
//删除
async table_del(row){
this.$confirm(`确定删除 ${row.repair_order_no} 吗?`, '提示', {
@@ -210,7 +211,6 @@ export default {
const res = await this.$API.orders.order.maintenance.delete.post(reqData);
if(res.code == 200){
this.$refs.table.refresh();
this.$message.success("删除成功")
}
}).catch(()=>{})
},
@@ -223,30 +223,68 @@ export default {
const res = await this.$API.orders.order.maintenance.delete.post(reqData);
if(res.code == 200){
this.$refs.table.refresh();
this.$message.success("删除成功")
}
}).catch(()=>{})
},
async batch_review(){
this.$messageBox.prompt('如果拒绝,请输入审核不通过的理由。', '审核', {
confirmButtonText: '拒绝',
cancelButtonText: '通过',
cancelButtonClass:'cancelBtn el-button--primary',
confirmButtonClass:'saveBtn el-button--danger',
}).then(async ({value}) => {
let params = {
order_ids:this.selection.map(em=>em.id),
status:false,
opinion:value
}
const res = await this.$API.orders.order.maintenance.review.post(params);
if(res.code == 200){
this.$refs.table.refresh();
}
}).catch(async () => {
let params = {
order_ids: this.selection.map(em => em.id),
status: true,
}
const res = await this.$API.orders.order.maintenance.review.post(params);
if (res.code == 200) {
this.$refs.table.refresh();
}
})
},
async save_maintenance() {
const params = {order_ids: this.selection.map(em => em.id)};
const res = await this.$API.orders.order.maintenance.submit.post(params);
if (res.code == 200) {
this.$refs.table.refresh();
this.$message.success("操作成功")
}
},
async issued_maintenance() {
const params = {order_ids: this.selection.map(em => em.id)};
const res = await this.$API.orders.order.maintenance.send.post(params);
if (res.code == 200) {
this.$refs.table.refresh();
this.$message.success("操作成功")
}
},
// 工单设置
table_setup(){
// row
// this.$router.push({
// path: '/order/add-permission',
// query: {
// id: row.id,
// name:row.name
// }
// })
async table_submit(row){
eventBus.$emit('tagClose','/order/submit-order',{id:row.id});
},
async table_send(row) {
let params = {
order_ids:[row.id]
}
const res = await this.$API.orders.order.maintenance.send.post(params);
if (res.code == 200) {
this.$refs.table.refresh();
}
},
// 工单日志
table_logs(row){
this.$router.push({
path: '/order/order-logs',
query: {
id: row.id,
name:row.name
}
})
eventBus.$emit('tagClose','/order/order-logs',{id:row.id});
},
//表格选择后回调事件
selectionChange(selection){
@@ -303,4 +341,12 @@ export default {
height: 20px;
margin: 0 auto;
}
.el-message-box{
::v-deep .cancelBtn{
}
::v-deep .saveBtn{
}
}
</style>
+84 -5
View File
@@ -1,24 +1,103 @@
<template>
<div></div>
<el-container>
<el-main class="orderMain" v-loading="loading" element-loading-text="加载中...">
<el-scrollbar>
<detailView :data="info">
<template #review>
<div class="reviewBox">
<el-input type="textarea" v-model="opinion" min="4" placeholder="请填写具体原因"></el-input>
<div class="btnView">
<el-button type="primary" :size="size" @click="save(1)" :loading="confirmLoading">审核通过</el-button>
<el-button type="danger" :size="size" @click="save(2)" :loading="cancelLoading">审核拒绝</el-button>
</div>
</div>
</template>
</detailView>
</el-scrollbar>
</el-main>
</el-container>
</template>
<script>
import detailView from "@/views/order/orderList/detailView";
export default {
name: "preview-order",
components:{
detailView
},
data(){
return{
size:'small',
loading:false,
confirmLoading:false,
cancelLoading:false,
opinion:"",
params:{
order_id:Number(this.$route.query.id)
},
info:{}
}
},
mounted() {
this.getData();
},
methods:{
async getData() {
this.loading = true;
const res = await this.$API.orders.order.maintenance.info.post(this.params);
if(res.code == 200){
if(res.data.process_engine){
res.data.process_engine = this.processList(res.data.process_engine).processedList;
res.data.process_num = this.processList(res.data.process_engine).num;
}
this.info = res.data;
}
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 save(type) {
let params = {
order_ids: [this.params.order_id],
status: type == 1?true:false,
opinion: this.opinion
}
if (type == 1) {
delete params.opinion
this.confirmLoading = true;
}else{
this.cancelLoading = true;
}
const res = await this.$API.orders.order.maintenance.review.post(params);
if (res.code == 200) {
await this.getData();
}
this.confirmLoading = false;
this.cancelLoading = false;
}
}
}
</script>
<style scoped lang="scss">
.btnView{
margin-top: 15px;
display: flex;justify-content: flex-end;
}
</style>
+246
View File
@@ -0,0 +1,246 @@
<template>
<el-container>
<el-main class="orderMain" v-loading="loading" element-loading-text="加载中...">
<el-scrollbar>
<div class="cardBox">
<div class="headerView">
<div class="title">工单时间</div>
<div class="status">
<span class="name">当前状态:</span>
<span class="text">{{info.business_status}}</span>
</div>
</div>
<div class="cardBody">
<el-row>
<el-col :span="8" :lg="6">
<span class="label">创建时间:</span>
<span class="text">{{info.created_at}}</span>
</el-col>
<el-col :span="8" :lg="6">
<span class="label">PE确认时间:</span>
<span class="text">{{info.pe_confirmation_time}}</span>
</el-col>
<el-col :span="8" :lg="6">
<span class="label">过保时间:</span>
<span class="text">{{info.warranty_end_date}}</span>
</el-col>
</el-row>
</div>
</div>
<div class="cardBox footerCard">
<div class="cardItem">
<div class="title">流程进度</div>
<div class="cardBody">
<el-steps class="orderSteps" :active="info.process_num" align-center>
<el-step :status="item.status" v-for="item in info.process_engine" :key="item" :title="item.description" />
</el-steps>
</div>
</div>
<div class="cardItem">
<div class="title">维保单号</div>
<div class="cardBody">
<el-row>
<el-col :span="8" :lg="6">
<span class="label">维修单号:</span>
<span class="text">{{info.repair_order_no}}</span>
</el-col>
</el-row>
</div>
</div>
<div class="cardItem">
<div class="title">维保工单信息</div>
<div class="cardBody">
<el-row>
<el-col :span="8" :lg="6">
<span class="label">维修等级:</span>
<span class="text">{{info.maintenance_plan}}</span>
</el-col>
<el-col :span="8" :lg="6">
<span class="label">故障类型:</span>
<span class="text">{{info.fault_type}}</span>
</el-col>
<el-col :span="8" :lg="6">
<span class="label">故障内容:</span>
<span class="text">{{info.fault_description}}</span>
</el-col>
</el-row>
<el-row>
<el-col :span="8" :lg="6">
<span class="label">维保等级:</span>
<span class="text">{{info.maintenance_plan}}</span>
</el-col>
<el-col :span="8" :lg="6">
<span class="label">是否关机:</span>
<span class="text">{{info.requires_shutdown}}</span>
</el-col>
</el-row>
</div>
</div>
<div class="cardItem">
<div class="title">部件信息</div>
<div class="cardBody">
<el-row>
<el-col :span="8" :lg="6">
<span class="label labelText">机房城市:</span>
<span class="text">
<el-input :size="size" v-model="info.city" placeholder="机房城市"></el-input>
</span>
</el-col>
<el-col :span="8" :lg="6">
<span class="label labelText">园区:</span>
<span class="text">
<el-input :size="size" v-model="info.park_name" placeholder="园区"></el-input>
</span>
</el-col>
</el-row>
<el-row>
<el-col :span="8" :lg="6">
<span class="label labelText">机房:</span>
<span class="text">
<el-input :size="size" v-model="info.data_center_name" placeholder="机房"></el-input>
</span>
</el-col>
<el-col :span="8" :lg="6">
<span class="label labelText">机架位:</span>
<span class="text">
<el-input :size="size" v-model="info.rack_position" placeholder="机架位"></el-input>
</span>
</el-col>
</el-row>
<el-row>
<el-col :span="8" :lg="6">
<span class="label labelText">整机SN:</span>
<span class="text">
<el-input :size="size" v-model="info.device_sn" placeholder="整机SN"></el-input>
</span>
</el-col>
<el-col :span="8" :lg="6">
<span class="label labelText">整机厂商:</span>
<span class="text">
<el-input :size="size" v-model="info.device_manufacturer" placeholder="整机厂商"></el-input>
</span>
</el-col>
<el-col :span="8" :lg="6">
<span class="label labelText">整机型号:</span>
<span class="text">
<el-input :size="size" v-model="info.device_model" placeholder="整机型号"></el-input>
</span>
</el-col>
</el-row>
<el-row>
<el-col :span="8" :lg="6">
<span class="label labelText">部件SN/Sp:</span>
<span class="text">
<el-input :size="size" v-model="info.component_serial_no" placeholder="部件SN/Sp"></el-input>
</span>
</el-col>
<el-col :span="8" :lg="6">
<span class="label labelText">部件厂商:</span>
<span class="text">
<el-input :size="size" v-model="info.component_manufacturer" placeholder="部件厂商"></el-input>
</span>
</el-col>
<el-col :span="8" :lg="6">
<span class="label labelText">部件型号:</span>
<span class="text">
<el-input :size="size" v-model="info.component_model" placeholder="部件型号"></el-input>
</span>
</el-col>
</el-row>
<el-row>
<el-col :span="8" :lg="6">
<span class="label labelText">部件PN/Sp:</span>
<span class="text">
<el-input :size="size" v-model="info.component_pn" placeholder="部件PN/Sp"></el-input>
</span>
</el-col>
<el-col :span="8" :lg="6">
<span class="label labelText">SLA截止时间:</span>
<span class="text">
<el-input :size="size" v-model="info.sla_expiration" placeholder="SLA截止时间"></el-input>
</span>
</el-col>
<el-col :span="8" :lg="6">
<span class="label labelText">剩余BD数:</span>
<span class="text">
<el-input :size="size" v-model="info.bd_backup_count" placeholder="剩余BD数"></el-input>
</span>
</el-col>
</el-row>
</div>
</div>
<div class="btnView">
<el-button type="primary" :size="size" @click="save" :loading="saveLoading">确认提交</el-button>
</div>
</div>
</el-scrollbar>
</el-main>
</el-container>
</template>
<script>
export default {
name: "submit-order",
data(){
return{
size:"small",
loading:false,
saveLoading:false,
params:{
order_id:Number(this.$route.query.id)
},
info:{}
}
},
mounted() {
this.getData();
},
methods:{
async getData() {
this.loading = true;
const res = await this.$API.orders.order.maintenance.info.post(this.params);
if(res.code == 200){
if(res.data.process_engine){
res.data.process_engine = this.processList(res.data.process_engine).processedList;
res.data.process_num = this.processList(res.data.process_engine).num;
}
this.info = res.data;
}
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 save() {
const params = {order_ids: [this.params.order_id]};
this.saveLoading = true;
const res = await this.$API.orders.order.maintenance.submit.post(params);
if (res.code == 200) {
await this.getData();
}
this.saveLoading = false;
},
}
}
</script>
<style scoped lang="scss">
.btnView{
text-align: right;
}
</style>