修改工单

This commit is contained in:
龙运模 2024-08-26 22:39:09 +08:00
parent 34c1a74812
commit 9ca2c0e905
10 changed files with 213 additions and 145 deletions

View File

@ -168,8 +168,22 @@ export default {
post: async function (params) {
return await http.post(this.url,params);
}
},
status:{
url: `${config.API_URL}/maintenance.order.business.status.list`,
name: "维保工单业务状态",
post: async function (params) {
return await http.post(this.url,params);
}
},
optionList:{
url: `${config.API_URL}/maintenance.repair.options.const.list`,
name: "维保工单常量下拉",
post: async function (params) {
return await http.post(this.url,params);
}
},
},
sock: {
list:{
url: `${config.API_URL}/inventory.list`,

View File

@ -50,4 +50,27 @@ export default {
},
}
},
bom:{
list:{
url: `${config.API_URL}/bom.list`,
name: "bom列表",
get: async function (data = {}) {
return await http.post(this.url, data);
},
},
info:{
url: `${config.API_URL}/bom.detail`,
name: "bom详情",
post: async function (data = {}) {
return await http.post(this.url, data);
},
},
refresh:{
url: `${config.API_URL}/bom.refresh`,
name: "重新拉取bom",
post: async function (data = {}) {
return await http.post(this.url, data);
},
}
}
};

View File

@ -2,7 +2,7 @@
<el-container>
<el-main>
<el-scrollbar>
<el-form ref="form" :size="size" label-width="100px" :model="form">
<el-form ref="form" :size="size" label-width="90px" :model="form">
<div class="boxMain">
<div class="title">工作时间</div>
<div class="boxCom">
@ -29,14 +29,9 @@
<div class="title">维保单号</div>
<div class="boxCom">
<el-row>
<!-- <el-col :span="8" :lg="6">-->
<!-- <el-form-item label="维修单ID">-->
<!-- <el-input class="input" type="text" placeholder="请输入维修单ID"></el-input>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<el-col :span="8" :lg="6">
<el-form-item label="维修单号">
<el-input class="input" type="text" placeholder="请输入维修单号"></el-input>
<el-form-item label="维修单号" prop="repair_order_no">
<el-input class="input" type="text" v-model="form.repair_order_no" disabled placeholder="请输入维修单号"></el-input>
</el-form-item>
</el-col>
</el-row>
@ -47,36 +42,35 @@
<div class="boxCom">
<el-row>
<el-col :span="8" :lg="6">
<el-form-item label="维修单等级" prop="maintenance_level">
<el-input class="input" v-model="form.maintenance_level" type="text" placeholder="请输入维修等级"></el-input>
<el-form-item label="维修单等级" prop="maintenance_grade">
<el-input class="input" v-model="form.maintenance_grade" type="text" placeholder="请输入维修等级"></el-input>
</el-form-item>
</el-col>
<el-col :span="8" :lg="6">
<el-form-item label="故障类型" prop="fault_type">
<el-select class="input" v-model="form.fault_type" placeholder="请选择故障类型">
<el-option></el-option>
<el-form-item label="维修分类" prop="maintenance_level">
<el-select class="input" v-model="form.maintenance_level" @visible-change="getSelect('maintenance_level',2)" placeholder="请选择维修分类">
<el-option v-for="(item,index) in setMap['maintenance_level']" :key="index" :value="item.id" :label="item.item_name"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8" :lg="6">
<el-col :span="8" :lg="12">
<el-form-item label="故障内容" prop="fault_description">
<el-input class="input" v-model="form.fault_description" type="text" placeholder="请输入维修单号"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<!-- <el-col :span="8" :lg="6">-->
<!-- <el-form-item label="当前状态">-->
<!-- <el-select class="input" placeholder="请选择当前状态">-->
<!-- <el-option></el-option>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<el-col :span="8" :lg="6">
<el-form-item label="故障类型" prop="fault_type">
<el-select class="input" v-model="form.fault_type" @visible-change="getSelect('fault_type',1)" placeholder="请选择故障类型">
<el-option v-for="(item,index) in setMap['fault_type']" :key="index" :value="item.id" :label="item.item_name"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8" :lg="6">
<el-form-item label="维保等级" prop="maintenance_plan">
<el-select class="input" v-model="form.maintenance_plan" placeholder="请选择维保等级">
<el-option></el-option>
</el-select>
<el-input class="input" v-model="form.maintenance_plan" placeholder="维保等级">
</el-input>
</el-form-item>
</el-col>
<el-col :span="8" :lg="6">
@ -88,33 +82,25 @@
</el-form-item>
</el-col>
</el-row>
</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="city">
<el-select class="input" v-model="form.city" placeholder="请选择机房城市">
<el-option></el-option>
</el-select>
<el-input class="input" v-model="form.city" placeholder="机房城市">
</el-input>
</el-form-item>
</el-col>
<el-col :span="8" :lg="6">
<el-form-item label="园区" prop="park_name">
<el-select class="input" v-model="form.park_name" placeholder="请选择园区">
<el-option></el-option>
</el-select>
<el-input class="input" v-model="form.park_name" placeholder="园区">
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8" :lg="6">
<el-form-item label="机房/IDC" prop="data_center_name">
<el-select class="input" v-model="form.data_center_name" placeholder="请选择机房/IDC">
<el-option></el-option>
</el-select>
<el-input class="input" v-model="form.data_center_name" placeholder="机房/IDC">
</el-input>
</el-form-item>
</el-col>
<el-col :span="8" :lg="6">
@ -126,9 +112,8 @@
<el-row>
<el-col :span="8" :lg="6">
<el-form-item label="整机SN/Se" prop="device_sn">
<el-select class="input" v-model="form.device_sn" placeholder="请选择整机SN/Se">
<el-option></el-option>
</el-select>
<el-input class="input" v-model="form.device_sn" placeholder="整机SN/Se">
</el-input>
</el-form-item>
</el-col>
<el-col :span="8" :lg="6">
@ -142,12 +127,16 @@
</el-form-item>
</el-col>
</el-row>
</div>
</div>
<div class="boxMain">
<div class="title">维保工单信息</div>
<div class="boxCom">
<el-row>
<el-col :span="8" :lg="6">
<el-form-item label="部件SN/Sp" prop="component_serial_no">
<el-select class="input" v-model="form.component_serial_no" placeholder="请选择部件SN/Se">
<el-option></el-option>
</el-select>
<el-input class="input" v-model="form.component_serial_no" placeholder="部件SN/Se">
</el-input>
</el-form-item>
</el-col>
<el-col :span="8" :lg="6">
@ -181,7 +170,7 @@
</div>
</div>
<div class="btnBox">
<el-button type="primary" @click="save" :loading="isSave"> </el-button>
<el-button type="primary" size="default" @click="save" :loading="isSave">确认保存</el-button>
</div>
</el-form>
</el-scrollbar>
@ -196,26 +185,32 @@ export default {
return{
size:"small",
isSave:false,
setMap:{
maintenance_level:[],
fault_type:[],
},
form:{
maintenance_level: "234", //
fault_type: "234", //
fault_description: "234", //
requires_shutdown: "234", //
city: "234", //
park_name: "234", //
data_center_name: "234", // /IDC
rack_position: "234", //
device_sn: "234", // SN
device_manufacturer: "234", //
device_model: "234", //
component_serial_no: "234", //
component_manufacturer: "234", //
component_model: "234", //
component_pn: "234", // PN
sla_expiration: "2024-08-21", // SLA
bd_backup_count: "234", // BD
pe_confirmation_time: "2024-08-21", // PE
warranty_end_date: "2024-08-21", //
repair_order_no:"",
maintenance_grade:"", //
maintenance_level: "", //
fault_type: "", //
fault_description: "", //
requires_shutdown: "", //
city: "", //
park_name: "", //
data_center_name: "", // /IDC
rack_position: "", //
device_sn: "", // SN
device_manufacturer: "", //
device_model: "", //
component_serial_no: "", //
component_manufacturer: "", //
component_model: "", //
component_pn: "", // PN
sla_expiration: "", // SLA
bd_backup_count: "", // BD
pe_confirmation_time: "", // PE
warranty_end_date: "", //
maintenance_plan: '' // 1-
}
}
@ -224,6 +219,12 @@ export default {
},
methods:{
async getSelect(name,num) {
const res = await this.$API.orders.order.maintenance.optionList.post({const_type:num});
if(res.code == 200){
this.setMap[name] = res.data;
}
},
save(){
this.$refs.form.validate(async (valid) => {
if (valid) {
@ -260,7 +261,7 @@ export default {
}
.btnBox{
margin-top: 15px;
text-align: right;
text-align: left;
padding: 0 10px;
}
</style>

View File

@ -4,7 +4,11 @@
<div class="title">工单时间</div>
<div class="status">
<span class="name">当前状态</span>
<span class="text">{{info.business_status}}</span>
<span class="text">
<span v-for="(item,ind) in statusList" :key="ind">
<span v-if="item.value == info.business_status">{{item.label}}</span>
</span>
</span>
</div>
</div>
<div class="cardBody">
@ -53,15 +57,19 @@
<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>
<span class="label">维修分类</span>
<span class="text">{{info.maintenance_level}}</span>
</el-col>
<el-col :span="8" :lg="6">
<el-col :span="8" :lg="12">
<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.fault_type}}</span>
</el-col>
<el-col :span="8" :lg="6">
<span class="label">维保等级</span>
<span class="text">{{info.maintenance_plan}}</span>
@ -71,11 +79,6 @@
<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>
@ -110,6 +113,11 @@
<span class="text">{{info.device_model}}</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">部件SN/Sp</span>
@ -159,14 +167,20 @@ export default {
},
data(){
return{
info:{}
info:{},
statusList:[]
}
},
mounted() {
this.getStatusList();
},
methods:{
async getStatusList() {
const res = await this.$API.orders.order.maintenance.status.post();
if (res.code == 200) {
this.statusList = res.data;
}
},
}
}
</script>

View File

@ -11,8 +11,8 @@
<div v-auth="'companyImportTemplate'" @click="importTemplate">下载导入模版</div>
</template>
</scImport>
<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="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="issued_maintenance">下发维保</el-button>
<el-button type="danger" plain :size="size" icon="el-icon-Delete" :disabled="selection.length==0" @click="batch_del"></el-button>
</div>
@ -47,6 +47,11 @@
</template>
</el-image>
</template>
<template #business_status="scope">
<span v-for="(item,ind) in statusList" :key="ind">
<span v-if="item.value == scope.row.business_status">{{item.label}}</span>
</span>
</template>
<template #active_status="scope">
<el-switch :size="size" v-model="scope.row.active_status" @change="changeSwitch($event, scope.row)" :loading="scope.row.$switch_status" :active-value="true" :inactive-value="false"></el-switch>
</template>
@ -127,8 +132,12 @@ export default {
{name:'关键字',type:'text',code:['fault_description'],keyword:true,show:true},
],
params: {},
statusList:[],
}
},
mounted() {
this.getStatusList();
},
methods: {
searchShowClick(){
this.searchShow = !this.searchShow;
@ -339,6 +348,12 @@ export default {
handleSaveSuccess(){
this.$refs.table.refresh();
},
async getStatusList() {
const res = await this.$API.orders.order.maintenance.status.post();
if (res.code == 200) {
this.statusList = res.data;
}
},
}
}
</script>

View File

@ -7,7 +7,11 @@
<div class="title">工单时间</div>
<div class="status">
<span class="name">当前状态</span>
<span class="text">{{info.business_status}}</span>
<span class="text">
<span v-for="(item,ind) in statusList" :key="ind">
<span v-if="item.value == info.business_status">{{item.label}}</span>
</span>
</span>
</div>
</div>
<div class="cardBody">
@ -56,15 +60,19 @@
<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>
<span class="label">维修分类</span>
<span class="text">{{info.maintenance_level}}</span>
</el-col>
<el-col :span="8" :lg="6">
<el-col :span="8" :lg="12">
<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.fault_type}}</span>
</el-col>
<el-col :span="8" :lg="6">
<span class="label">维保等级</span>
<span class="text">{{info.maintenance_plan}}</span>
@ -74,59 +82,45 @@
<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>
<span class="text">{{info.city}}</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>
<span class="text">{{info.park_name}}</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>
<span class="text">{{info.data_center_name}}</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>
<span class="text">{{info.rack_position}}</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>
<span class="text">{{info.device_sn}}</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>
<span class="text">{{info.device_manufacturer}}</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>
<span class="text">{{info.device_model}}</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">部件SN/Sp</span>
@ -170,7 +164,7 @@
</div>
</div>
<div class="btnView">
<el-button type="primary" :size="size" @click="save" :loading="saveLoading">确认提交</el-button>
<el-button type="primary" size="default" @click="save" :loading="saveLoading">确认提交</el-button>
</div>
</div>
</el-scrollbar>
@ -189,11 +183,13 @@ export default {
params:{
order_id:Number(this.$route.query.id)
},
info:{}
info:{},
statusList:[]
}
},
mounted() {
this.getData();
this.getStatusList();
},
methods:{
async getData() {
@ -236,12 +232,18 @@ export default {
}
this.saveLoading = false;
},
async getStatusList() {
const res = await this.$API.orders.order.maintenance.status.post();
if (res.code == 200) {
this.statusList = res.data;
}
},
}
}
</script>
<style scoped lang="scss">
.btnView{
text-align: right;
text-align: left;
}
</style>

View File

@ -60,11 +60,6 @@ export default {
title: "费用配置",
component: "password"
},
{
icon: "sc-icon-AgentMaintenance",
title: "维保代理商维护",
component: "pushSettings"
},
]
},
{
@ -76,7 +71,7 @@ export default {
component: "mail"
},
{
icon: "sc-icon-DataSource",
icon: "sc-icon-AgentMaintenance",
title: "K3接口配置",
component: "interface"
}

View File

@ -68,8 +68,10 @@ export default {
async getMail() {
const res = await this.$API.setup.k3.get.post();
if(res.code == 200){
if(res.data && res.data.account_id){
this.inter = res.data;
}
}
},
async save() {
this.loading = true;

View File

@ -61,8 +61,10 @@ export default {
async getMail() {
const res = await this.$API.setup.mail.get.post();
if(res.code == 200){
if(res.data && res.data.alias){
this.mail = res.data;
}
}
},
async save() {
this.loading = true;

View File

@ -2,20 +2,7 @@
<el-container class="mainBox mainHeaderNoBorderPadding">
<el-header>
<div class="left-panel">
<el-button type="primary" :size="size" icon="el-icon-plus" @click="add">新增工单</el-button>
<scImport ref="scImport" :size="size" title="批量导入维保工单" @parentParams="importUpload" @importSuccess="importSuccess">
<template #header>
<el-button v-auth="'organizationImport'" type="primary" :size="size" plain @click="importFile">批量导入</el-button>
</template>
<template #download>
<div v-auth="'companyImportTemplate'" @click="importTemplate">下载导入模版</div>
</template>
</scImport>
</div>
<div class="right-panel">
<scExport :size="size" @exportData="exportData" @updateShow="exportChangeShow" :show="exportShow" type="11">
<el-button :size="size" icon="sc-icon-Download" @click="exportData">下载</el-button>
</scExport>
<el-button type="primary" :size="size" icon="el-icon-plus" @click="add">新增BOM</el-button>
</div>
</el-header>
<el-main class="nopadding">
@ -80,23 +67,36 @@ export default {
show: false,
},
list: {
apiObj: {},
apiObj: this.$API.setup.bom.list,
column: [],
},
selection: [],
exportShow:false,
searchShow:false,
searchList:[
{name:'生产日期',type:'date',code:'activation_date'},
{name:'反厂日期',type:'date',code:'activation_date'},
{name:'处理时间',type:'date',code:'activation_date'},
{name:'客户名称',type:'multiple',code:'id', data:[], placeholder:"请选择公司名称",show:false},
{name:'状态',type:'select',code:'active_status', data:[], placeholder:"请选择状态",show:false},
{name:'工单号',type:'text',code:['mobile'],placeholder:"请输入手机号",isOpen:true,show:false},
{name:'邮件地址',type:'text',code:['email'],placeholder:"请输入邮箱地址",isOpen:true,show:false},
{name:'公司地址',type:'text',code:['address'],placeholder:"请输入公司地址",isOpen:true,show:false},
{name:'负责人',type:'text',code:['owner'],placeholder:"请输入负责人",isOpen:true,show:false},
{name:'关键字',type:'text',code:['domain','name'],keyword:true,show:true},
{name:'创建时间',type:'date',code:'created_at',show: true},
{name:'更新时间',type:'date',code:'updated_at',show: true},
{name:'BOM版本',type:'text',code:'bom_version',placeholder:"请输入BOM版本",show:true},
{name:'BOM简称',type:'text',code:'bom_abbreviation',placeholder:"请输入BOM简称",show:false},
{name:'BOM分类',type:'text',code:['bom_classification'],placeholder:"请输入BOM分类",isOpen:true,show:false},
{name:'BOM用途',type:'text',code:['bom_purpose'],placeholder:"请输入BOM用途",isOpen:true,show:false},
{name:'父项物料编码',type:'text',code:['parent_material_code'],placeholder:"请输入父项物料编码",isOpen:true,show:false},
{name:'父项物料名称',type:'text',code:['parent_material_name'],placeholder:"请输入父项物料名称",isOpen:true,show:false},
{name:'父项物料单位',type:'text',code:['parent_material_unit'],placeholder:"请输入父项物料单位",isOpen:true,show:false},
{name:'子项物料编码',type:'text',code:['child_material_code'],placeholder:"请输入子项物料编码",isOpen:true,show:false},
{name:'子项物料名称',type:'text',code:['child_material_name'],placeholder:"请输入子项物料名称",isOpen:true,show:false},
{name:'子项物料单位',type:'text',code:['child_material_unit'],placeholder:"请输入子项物料单位",isOpen:true,show:false},
{name:'次项',type:'text',code:['item_sequence'],placeholder:"请输入次项",isOpen:true,show:false},
{name:'子项类型',type:'text',code:['child_material_type'],placeholder:"请输入子项类型",isOpen:true,show:false},
{name:'用量分母',type:'text',code:['usage_numerator'],placeholder:"请输入用量分母",isOpen:true,show:false},
{name:'用量分子',type:'text',code:['usage_denominator'],placeholder:"请输入用量分子",isOpen:true,show:false},
{name:'创建组织编码',type:'text',code:['create_org_code'],placeholder:"请输入创建组织编码",isOpen:true,show:false},
{name:'创建组织名称',type:'text',code:['create_org_name'],placeholder:"请输入创建组织名称",isOpen:true,show:false},
{name:'使用组织编码',type:'text',code:['use_org_code'],placeholder:"请输入使用组织编码",isOpen:true,show:false},
{name:'使用组织名称',type:'text',code:['use_org_name'],placeholder:"请输入使用组织名称",isOpen:true,show:false},
{name:'单据状态',type:'text',code:['document_status'],placeholder:"请输入单据状态",isOpen:true,show:false},
{name:'禁用状态',type:'text',code:['disable_status'],placeholder:"请输入禁用状态",isOpen:true,show:false},
{name:'关键字',type:'text',code:['bom_abbreviation'],keyword:true,show:true},
],
params: {},
}