aircraft.vue 18.2 KB
<template>
    <el-container>
        <el-main>
            <el-row class="row-bg">
                <el-col :span="24">
                    <div class="grid-content content">航空器备案申报</div>
                </el-col>
            </el-row>
            <el-row>
                <el-form :model="aircraft" :rules="rules" ref="aircraft" label-width="130px" class="demo-ruleForm">
                    <el-col :span="6">
                        <el-form-item label="海关关区" prop="customcode" label-width="130px">
                            <el-input v-model="aircraft.customcode" placeholder="请输入关区号" oninput="value=value.replace(/[^\d]/g,'')" maxLength='4'></el-input>
                        </el-form-item>
                    </el-col>
                    <el-col :span="6">
                        <el-form-item label="代理企业海关编码" prop="agentcode" label-width="140px">
                            <el-input v-model="aircraft.agentcode" placeholder="请输入编码" ></el-input>
                        </el-form-item>
                    </el-col>
                    <el-col :span="6">
                        <el-form-item label="航空公司英文名称" prop="airwayNameEn" label-width="140px">
                            <el-input v-model="aircraft.airwayNameEn" placeholder="请输入英文名称" ></el-input>
                        </el-form-item>
                    </el-col>
                    <el-col :span="6">
                        <el-form-item label="航空公司中文名称" prop="airwayNameCn" label-width="130px">
                            <el-input v-model="aircraft.airwayNameCn" placeholder="请输入中文名称"></el-input>
                        </el-form-item>
                    </el-col>
                    <el-col :span="6">
                        <el-form-item label="航空器注册编号" prop="aircraftNo" label-width="130px">
                            <el-input v-model.trim="aircraft.aircraftNo" placeholder="请输入编号"></el-input>
                        </el-form-item>
                    </el-col>
                    <el-col :span="6">
                        <el-form-item label="航空器国籍/地区" prop="areoNationality" label-width="140px">
<!--                            <el-input v-model="aircraft.areoNationality" placeholder="请输入"  maxLength='2' @input="e => aircraft.areoNationality=inputMe(e)"></el-input>-->
                            <el-select v-model="aircraft.areoNationality"
                                       filterable
                                       @click.native="getCountry"
                                       :loading="loading" placeholder="请选择" @input="e => aircraft.areoNationality=inputMe(e)"
                                       style="text-transform:uppercase">
                                <el-option
                                        v-for="item in countryOptions"
                                        :key="item.countryid"
                                        :label="item.countryid+'-'+item.countrydescchn"
                                        :value="item.countryid">
                                    <span style="float: left">{{ item.countryid }}</span>
                                    <span style="float: right; color: #8492a6; font-size: 13px">{{ item.countrydescchn }}</span>
                                </el-option>
                            </el-select>
                        </el-form-item>
                    </el-col>
<!--                    <el-col :span="6">-->
<!--                        <el-form-item label="航空器类型" prop="areoNationality" label-width="140px">-->
<!--                            <el-input v-model="aircraft.areoNationality" placeholder="请输入"  maxLength='2' @input="e => aircraft.areoNationality=inputMe(e)"></el-input>-->
<!--                        </el-form-item>-->
<!--                    </el-col>-->
                    <el-col :span="6">
                        <el-form-item label="机型" prop="areoModel" label-width="140px">
                            <el-input v-model="aircraft.areoModel" placeholder="请输入机型"></el-input>
                        </el-form-item>
                    </el-col>
                    <el-col :span="6">
                        <el-form-item label="标客舱载客人数" prop="passengerLimit" label-width="130px">
                            <el-input v-model="aircraft.passengerLimit" placeholder="请输入数量(单位:人)"  oninput="value=value.replace(/[^\d]/g,'')"></el-input>
                        </el-form-item>
                    </el-col>
                    <el-col :span="6">
                        <el-form-item label="航空器所有人" prop="ownerCo" label-width="130px">
                            <el-input v-model="aircraft.ownerCo"  placeholder="请输入"></el-input>
                        </el-form-item>
                    </el-col>
                    <el-col :span="6">
                        <el-form-item label="所有人证件类型" prop="credentialType" label-width="140px">
<!--                            <el-input v-model="aircraft.credentialType" placeholder="请输入"></el-input>-->
                            <el-select v-model="aircraft.credentialType"
                                       filterable  oninput="value=value.replace(/[^\d]/g,'')"
                                       @click.native="getCreden"
                                       :loading="loading" placeholder="请选择">
                                <el-option
                                        v-for="item in certOptions"
                                        :key="item.serialno"
                                        :label="item.serialno+'-'+item.credenname"
                                        :value="item.serialno">
                                    <span style="float: left">{{ item.serialno }}</span>
                                    <span style="float: right; color: #8492a6; font-size: 13px">{{ item.credenname }}</span>
                                </el-option>
                            </el-select>
                        </el-form-item>
                    </el-col>
                    <el-col :span="6">
                        <el-form-item label="所有人证件号码" prop="credentialNo" label-width="140px">
                            <el-input v-model="aircraft.credentialNo" placeholder="请输入"></el-input>
                        </el-form-item>
                    </el-col>
                    <el-col :span="6">
                        <el-form-item label="最大起飞重量" prop="grossWeight" label-width="130px">
                            <el-input v-model="aircraft.grossWeight" placeholder="请输入重量(单位:KG)"  oninput="value=value.replace(/[^\d]/g,'')"></el-input>
                        </el-form-item>
                    </el-col>
                    <el-col :span="24">
                        <el-form-item label="备注" prop="meno" label-width="130px">
                            <el-input v-model="aircraft.meno" placeholder="请输入" ></el-input>
                        </el-form-item>
                    </el-col>
<!--                    <el-col :sapn="6">-->
<!--                        <el-form-item label="备注" prop="meno" label-width="130px">-->
<!--                            <el-input v-model="aircraft.meno" placeholder="请输入"></el-input>-->
<!--                        </el-form-item>-->
<!--                    </el-col>-->



<!--                    <el-col :span="6">-->
<!--                        <el-form-item label="航空公司代码" prop="airwayCode" label-width="130px">-->
<!--                            <el-input v-model="aircraft.airwayCode" placeholder="请输入"  @input="e => aircraft.airwayCode=inputMe(e)" maxLength='2'></el-input>-->
<!--                        </el-form-item>-->
<!--                    </el-col>-->
<!--                    <el-col :span="6">-->
<!--                        <el-form-item label="航空器所有方式" prop="useRelation" label-width="140px">-->
<!--                            <el-input v-model="aircraft.useRelation" placeholder="请输入"></el-input>-->
<!--                        </el-form-item>-->
<!--                    </el-col>-->

<!--                    <el-col :span="6">-->
<!--                        <el-form-item label="国际证书编号" prop="certNo" label-width="140px">-->
<!--                            <el-input v-model="aircraft.certNo" placeholder="请输入"></el-input>-->
<!--                        </el-form-item>-->
<!--                    </el-col>-->
<!--                    <el-col :span="6">-->
<!--                        <el-form-item label="交付日期" prop="deliverDate" label-width="120px">-->
<!--                            <el-date-picker-->
<!--                                    v-model="aircraft.deliverDate"-->
<!--                                    type="date"-->
<!--                                    value-format="yyyyMMdd"-->
<!--                                    format="yyyyMMdd"-->
<!--                                    style="width:100%"-->
<!--                                    placeholder="选择日期">-->
<!--                            </el-date-picker>-->
<!--                        </el-form-item>-->
<!--                    </el-col>-->

                </el-form>
            </el-row>
            <el-row style="margin-left: 130px">
                <el-col :span="24">   <el-button type="primary" @click="submitForm('aircraft')">保 存</el-button>
                    <el-button type="success" @click="sendForm('aircraft')">保存并发送</el-button></el-col>
            </el-row>
            <!--对话提示框-->
            <el-row>
                <el-dialog
                        title="系统提示"
                        :visible.sync="centerDialogVisible"
                        width="30%"
                        center>
                    <span>{{msg}}</span>
                    <span slot="footer" class="dialog-footer">
                          <el-button @click="centerDialogVisible = false">取 消</el-button>
                        <el-button type="primary" @click="centerDialogVisible = false">确 定</el-button>
                      </span>
                </el-dialog>
            </el-row>
        </el-main>
    </el-container>
</template>
<style scoped>
    .grid-content {
        height: 36px;
        line-height: 36px;
    }
    .el-dialog__body{text-align: center}
    .content {
        border-left: 4px #409EFF solid;
        padding-left: 10px;
        background-color: #f9fafc;
        margin-bottom: 2px
    }

    .row-bg{
        background-color: white;
    }
    .el-col{margin-right: 0px;}
</style>
<script>
    const fecha = require('fecha');
    import {addAircraft, selectCountry, selectCreden, sendAircraft} from "../../api/transport";
    import loginUserInfo from '../../api/base'

    export default {
        data(){
            return{
                aircraft:{
                    createBy:loginUserInfo.username,
                    updateBy:loginUserInfo.username,
                    agentcode:undefined,
                    customcode:undefined,
                    uuid:undefined,
                    airwayCode:undefined,
                    airwayNameEn:undefined,
                    airwayNameCn:undefined,
                    aircraftNo:undefined,
                    areoModel:undefined,
                    areoNationality:undefined,
                    certNo:undefined,
                    grossWeight:undefined,
                    passengerLimit:undefined,
                    useRelation:undefined,
                    deliverDate:undefined,
                    ownerCo:undefined,
                    credentialType:undefined,
                    credentialNo:undefined,
                    statusMsg:undefined,
                    status:undefined,
                    createTime:undefined,
                    updateTime:undefined,
                    meno:undefined,
                    isDelete:undefined,
                    messageid:undefined
                },
                loading:false,
                certOptions:[],
                countryOptions:[],

                rules:{
                    customcode: [
                        {required: true, message: '请输入', trigger: 'blur'}
                    ],
                    airwayNameEn: [
                        {required: true, message: '请输入英文名称', trigger: 'blur'}
                    ],
                    // airwayNameCn: [
                    //     {required: true, message: '请输入', trigger: 'blur'}
                    // ],
                    areoNationality: [
                        {required: true, message: '请输入', trigger: 'blur'}
                    ],
                    aircraftNo: [
                        {required: true, message: '请输入编号', trigger: 'blur'}
                    ],
                    credentialType: [
                        {required: true, message: '请输入', trigger: 'blur'}
                    ],
                    credentialNo: [
                        {required: true, message: '请输入', trigger: 'blur'}
                    ],
                    areoModel: [
                        {required: true, message: '请输入', trigger: 'blur'}
                    ],
                    grossWeight: [
                        {required: true, message: '请输入', trigger: 'blur'}
                    ],
                    passengerLimit: [
                        {required: true, message: '请输入', trigger: 'blur'}
                    ],
                    // useRelation: [
                    //     {required: true, message: '请输入', trigger: 'blur'}
                    // ],
                    ownerCo: [
                        {required: true, message: '请输入', trigger: 'blur'}
                    ],
                    agentcode: [
                        {required: true, message: '请输入编码', trigger: 'blur'}
                    ],
                    // certNo: [
                    //     {required: true, message: '请输入', trigger: 'blur'}
                    // ],
                    // deliverDate: [
                    //     {required: true, message: '请输入', trigger: 'blur'}
                    // ],
                },
                centerDialogVisible:false,
                msg:undefined
            }
        },
        methods:{
            /*获取国籍*/
            getCountry:function(query){
                this.countryOptions=[];
                let params={countryid:query};
                this.loading = true;
                selectCountry(params).then(res =>{
                    if (res!=null) {
                        setTimeout(() => {
                            this.loading = false;
                            this.countryOptions=res.data.data;
                        }, 200);
                    } else {
                        this.countryOptions = [];
                    }

                });
            },
            /*获取证件*/
            getCreden:function(query){
                this.certOptions=[];
                let params={serialno:query};
                this.loading = true;
                selectCreden(params).then(res =>{
                    if (res!=null) {
                        setTimeout(() => {
                            this.loading = false;
                            this.certOptions=res.data.data;
                        }, 200);
                    } else {
                        this.certOptions = [];
                    }

                });
            },
            //新增当日飞行计划(保存按钮)
            submitForm(formName) {
                this.$refs[formName].validate((valid) => {
                    if (valid) {
                        addAircraft(this.aircraft).then(res=>{
                            let response=res.data;
                            if(response.code=='200'){
                                //this.centerDialogVisible=true;
                                //this.msg=response.msg;
                                this.$message.success(response.msg)
                                this.$router.push({path:'/queryAircraft',query:{airwayCode:this.aircraft.airwayCode,aircraftNo:this.aircraft.aircraftNo}});
                            }else{
                                this.msg=response.msg;
                            }
                        });
                    } else {
                        console.log('error submit!!');
                        return false;
                    }
                });
            },
            //保存并发送
            sendForm(formName) {
                this.$refs[formName].validate((valid) => {
                    if (valid) {
                        this.aircraft.createBy=loginUserInfo.username
                        sendAircraft(this.aircraft).then(res=>{
                            let response=res.data;
                            if(response.code=='200'){
                                //this.centerDialogVisible=true;
                                //this.msg=response.msg;
                                this.$router.push({path:'/queryAircraft',query:{airwayCode:this.aircraft.airwayCode,aircraftNo:this.aircraft.aircraftNo}});
                                this.$message.success(response.msg)
                            }else{
                                this.$message.error(response.msg)
                            }
                        });
                    } else {
                        return false;
                    }
                });
            },
            //加载默认值
            defaultData(){
                if(this.$route.query!=null){
                    Object.assign(this.aircraft, this.$route.query);
                    /*有时分秒时用fecha
                    this.flight.flightDate=ob.flightDate;
                    this.flight.currentLandingTime=fecha.parse(ob.currentLandingTime,'yyyyMMddHHmm');
                    this.flight.currentTakeoffTime=fecha.parse(ob.currentTakeoffTime,'yyyyMMddHHmm');*/
                }
            },
            // 过滤中英文
            inputMe(e){
                return e.replace(/[^a-zA-Z0-9.-]/g,'').toUpperCase();
            }
        },
        activated(){
            this.defaultData();
        }
    }
</script>