<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 style="padding-top: 10px">
                <el-form :label-position="labelPosition" :model="queryConfigure" :rules="rules" ref="queryFlight"
                         label-width="130px" class="demo-ruleForm">
                    <el-row>
                        <el-col :span="5"  style="margin-right: 70px">
                            <el-form-item label="承运人" prop="awcd" label-width="70px">
                                <el-input v-model="queryConfigure.awcd" style="width:120px"></el-input>
                            </el-form-item>
                        </el-col>
                        <el-col :span="5"  style="margin-right: 70px">
                            <el-form-item label="航班号" prop="flightNo" label-width="70px">
                                <el-input v-model="queryConfigure.flightNo" style="width:120px"></el-input>
                            </el-form-item>
                        </el-col>
                        <el-col :span="8" >
                            <el-button type="primary" icon="el-icon-search" @click="submitForm()">查询</el-button>
                            <el-button type="success" icon="el-icon-edit" @click="addForm()">新增</el-button>

                        </el-col>
                    </el-row>

                </el-form>
            </el-row>
            <!--            表单区域-->
            <el-row>
                <el-table
                        :data="tableData"
                        border
                        v-loading="tableloading" style="margin-bottom: 20px;margin-top: 20px">
                    <el-table-column
                            prop="awcd"
                            label="承运人">
                    </el-table-column>
                    <el-table-column
                            prop="flightNo"
                            label="航班号">
                    </el-table-column>
                    <el-table-column
                            prop="customscode"
                            label="申报关区">
                    </el-table-column>
                    <el-table-column
                            prop="aircraftNo"
                            label="航空注册器编号">
                    </el-table-column>
                    <el-table-column
                            prop="transportflag"
                            label="航空器备案类型"
                            show-overflow-tooltip>
                    </el-table-column>
                    <el-table-column
                            prop="aircraftstand"
                            label="停机位">
                    </el-table-column>
                    <el-table-column
                            prop="departurePort"
                            label="航班起始站">
                    </el-table-column>
                    <el-table-column
                            prop="arrivalPort"
                            label="航班目的站">
                    </el-table-column>
                    <el-table-column
                            prop="departuredatetime"
                            label="预计出境时间">
                    </el-table-column>
                    <el-table-column
                            prop="arrivaldatetime"
                            label="预计入境时间">
                    </el-table-column><el-table-column
                        prop="validtime"
                        label="配置生效到期日">
                </el-table-column>
                    <el-table-column
                            label="配置状态">
                        <template slot-scope="scope">
                            <span v-if="scope.row.status ==='0'">禁用</span>
                            <span v-if="scope.row.status ==='1'">生效</span>
                        </template>
                    </el-table-column>
                    <el-table-column
                        label="配置类型">
                        <template slot-scope="scope">
                            <span v-if="scope.row.type ==='2'">入境</span>
                            <span v-if="scope.row.type ==='1'">出境</span>
                        </template>
                </el-table-column>
                    <el-table-column
                            prop="userid"
                            label="创建人">
                    </el-table-column>
                    <el-table-column
                            prop="creatdate"
                            label="创建时间">
                    </el-table-column>
                    <el-table-column
                            prop="updatedate"
                            label="配置更新时间">
                    </el-table-column>
                    <el-table-column
                            prop="meno"
                            label="备注">
                    </el-table-column>
                    <el-table-column
                            fixed="right"
                            prop=""
                            label="报文操作"
                            width="280">
                        <template slot-scope="scope">
                            <el-button
                                    size="mini"
                                    type="primary"
                                    @click="handleEdit(scope.$index, scope.row)">编辑</el-button>
                            <el-button
                                    size="mini"
                                    type="danger"
                                    @click="handleDel(scope.$index, scope.row)">删除</el-button>
                        </template>
                    </el-table-column>
                </el-table>
            </el-row>
            <el-row>
                <div class="block">
                    <el-pagination
                            @size-change="handleSizeChange"
                            @current-change="handleCurrentChange"
                            :current-page="pageNum"
                            :page-sizes="[10, 20, 30, 40]"
                            :page-size="pageSize"
                            layout="total, sizes, prev, pager, next, jumper"
                            :total="total">
                    </el-pagination>
                </div>
            </el-row>
<!--            新增编辑弹框-->
            <el-row>
                <el-dialog :title="dialogMap[dialogApply]" :visible.sync="configure_dialog.addDialog" width="80%" @close="configure_addDialogClosed">
                    <el-form  :model="configure_addForm"  :rules="rules" ref="configure_addForm">
                        <el-row>
                            <el-col :span="6"  style="margin-top: 10px">
                                <el-form-item label="承运人" prop="awcd" label-width="120px">
                                    <el-input v-model.trim="configure_addForm.awcd" @input="e => configure_addForm.awcd=inputMe(e)"
                                              maxLength='2'></el-input>
                                </el-form-item>
                            </el-col>
                            <el-col :span="6" style="margin-top: 10px">
                                <el-form-item label="航班号" prop="flightNo" label-width="120px">
                                    <el-input v-model="configure_addForm.flightNo" @input="e => configure_addForm.flightNo=inputMe(e)"></el-input>
                                </el-form-item>
                            </el-col>

                            <el-col :span="6"  style="margin-top: 10px">
                                <el-form-item label="申报关区" prop="customscode" label-width="120px">
                                    <el-input v-model="configure_addForm.customscode" oninput="value=value.replace(/[^\d]/g,'')"
                                              maxLength='4'></el-input>
                                </el-form-item>
                            </el-col>
                            <el-col :span="6"  style="margin-top: 10px">
                                <el-form-item label="航空注册器编号" prop="aircraftNo" label-width="130px">
                                    <el-input v-model="configure_addForm.aircraftNo"></el-input>
                                </el-form-item>
                            </el-col>

                        </el-row>
                        <el-row>
                            <el-col :span="6">
                                <el-form-item label="航空器备案类型" prop="transportflag" label-width="140px">
                                    <el-input v-model="configure_addForm.transportflag"
                                    ></el-input>
                                </el-form-item>
                            </el-col>
                            <el-col :span="6">
                                <el-form-item label="停机位" prop="aircraftstand" label-width="120px">
                                    <el-input v-model="configure_addForm.aircraftstand"></el-input>
                                </el-form-item>
                            </el-col>
                            <el-col :span="6">
                                <el-form-item label="航班起始站" prop="departurePort" label-width="120px">
                                    <el-input v-model="configure_addForm.departurePort" @input="e => configure_addForm.departurePort=inputMe(e)"
                                              maxLength='3'></el-input>
                                </el-form-item>
                            </el-col>
                            <el-col :span="6">
                                <el-form-item label="航班目的站" prop="arrivalPort" label-width="120px">
                                    <el-input v-model="configure_addForm.arrivalPort" @input="e => configure_addForm.arrivalPort=inputMe(e)"
                                              maxLength='3'></el-input>
                                </el-form-item>
                            </el-col>
                            <el-col :span="6">
                                <el-form-item label="预计出境时间" prop="departuredatetime" label-width="120px">
                                    <el-date-picker
                                            v-model="configure_addForm.departuredatetime"
                                            type="datetime"
                                            placeholder="选择日期时间"
                                            value-format="yyyyMMddhhmmss"
                                            format="yyyyMMddhhmmss"
                                            style="width:100%">
                                    </el-date-picker>
                                </el-form-item>
                            </el-col>
                            <el-col :span="6">
                                <el-form-item label="预计入境时间" prop="arrivaldatetime" label-width="120px">
                                    <el-date-picker
                                            v-model="configure_addForm.arrivaldatetime"
                                            type="datetime"
                                            placeholder="选择日期时间"
                                            value-format="yyyyMMddhhmmss"
                                            format="yyyyMMddhhmmss"
                                            style="width:100%">
                                    </el-date-picker>
                                </el-form-item>
                            </el-col>
                            <el-col :span="6">
                                <el-form-item label="配置生效到期日" prop="validtime" label-width="130px">
                                    <el-date-picker
                                            v-model="configure_addForm.validtime"
                                            type="datetime"
                                            placeholder="选择日期时间"
                                            value-format="yyyyMMddhhmmss"
                                            format="yyyyMMddhhmmss"
                                            style="width: 100%"
                                            :picker-options="pickerOptions">
                                    </el-date-picker>
                                </el-form-item>
                            </el-col>
                            <el-col :span="6">
                                <el-form-item label="创建人" prop="userid" label-width="120px">
                                    <el-input v-model="configure_addForm.userid"></el-input>
                                </el-form-item>
                            </el-col>

                            <el-col :span="6">
                                <el-form-item label="配置类型" prop="type" label-width="120px">
<!--                                    <el-input v-model="configure_addForm.type"></el-input>-->
                                    <el-select v-model="configure_addForm.type" placeholder="请选择" size="mini">
                                        <el-option label="2-入境" value="2"></el-option>
                                        <el-option label="1-出境" value="1"></el-option>
                                    </el-select>
                                </el-form-item>
                            </el-col>
                            <el-col :span="6">
                                <el-form-item label="配置状态" prop="status" label-width="120px">
                                    <!--                                    <el-input v-model="configure_addForm.status"></el-input>-->
                                    <el-select v-model="configure_addForm.status" placeholder="请选择" size="mini">
                                        <el-option label="0-禁用" value="0"></el-option>
                                        <el-option label="1-生效" value="1"></el-option>
                                    </el-select>
                                </el-form-item>
                            </el-col>
                            <el-col :span="6">
                                <el-form-item label="创建时间" prop="creatdate" label-width="120px">
                                    <el-date-picker
                                            v-model="configure_addForm.creatdate"
                                            type="datetime"
                                            placeholder="选择日期时间"
                                            value-format="yyyyMMddhhmmss"
                                            format="yyyyMMddhhmmss"
                                            style="width: 100%"
                                            :picker-options="pickerOptions">
                                    </el-date-picker>
                                </el-form-item>
                            </el-col>
                            <el-col :span="6">
                                <el-form-item label="配置更新时间" prop="updatedate" label-width="120px">
                                    <el-date-picker
                                            v-model="configure_addForm.updatedate"
                                            type="datetime"
                                            placeholder="选择日期时间"
                                            value-format="yyyyMMddhhmmss"
                                            format="yyyyMMddhhmmss"
                                            style="width: 100%"
                                            :picker-options="pickerOptions">
                                    </el-date-picker>
                                </el-form-item>
                            </el-col>
                        </el-row>
                        <el-row>
                            <el-col :span="12">
                                <el-form-item label="星期日期" prop="schedule.options" label-width="120px">
                                    <el-select v-model="configure_addForm.schedule.options" multiple placeholder="请选择(可多选)" style="width: 100%">
                                        <el-option
                                                v-for="item in options"
                                                :key="item.value"
                                                :label="item.label"
                                                :value="item.value">
                                        </el-option>
                                    </el-select>
                                </el-form-item>
                            </el-col>
                            <el-col :span="12">
                                <el-form-item label="备注" prop="meno" label-width="120px">
                                    <el-input v-model="configure_addForm.meno"></el-input>
                                </el-form-item>
                            </el-col>
                        </el-row>

                    </el-form>
                    <div slot="footer" class="dialog-footer">
                        <el-button @click="configure_dialog.addDialog = false" size="small">取 消</el-button>
                        <el-button type="primary" @click="dialogApply==='create'?configure_add():configure_edit()" size="small">提 交</el-button>
                    </div>
                </el-dialog>
            </el-row>
        </el-main>
    </el-container>
</template>


<script>
    import {addPrePlanConfig, delPrePlanConfig, ediPrePlanConfig, selectPrePlanConfig,} from "../../api/transport";

    export default {
        data(){
            return{
                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]);
                        }
                    }]
                },

                queryConfigure:{
                    flightNo:undefined,
                    awcd:undefined,
                },
                labelPosition:'left',
                pageNum: 1,
                pageSize:10,
                total:0,
                tableData:[],
                tableloading:false,
                dialogMap: {
                    update: '编辑',
                    create: '新增'
                },
                dialogApply: 'create',
                configure_dialog: {
                    // 添加对话框
                    addDialog: false,
                    // 编辑对话框
                    editDialog: false
                },
                formLabelWidth: '220px',
                configure_addForm: {
                    id:'',
                    awcd:'',
                    flightNo:'',
                    customscode:'',
                    aircraftNo:'',
                    transportflag:'',
                    aircraftstand:'',
                    departurePort:'',
                    arrivalPort:'',
                    departuredatetime:'',
                    arrivaldatetime:'',
                    validtime:'',
                    status:'',
                    type:'',
                    userid:'',
                    creatdate:'',
                    updatedate:'',
                    schedulelist:[],
                    schedule:{
                        id:'',
                        planconfigid:'',
                        //周几
                        weekday:'',
                        options:[]
                    }
                },
                options: [{
                    value: '1',
                    label: '周一'
                }, {
                    value: '2',
                    label: '周二'
                }, {
                    value: '3',
                    label: '周三'
                }, {
                    value: '4',
                    label: '周四'
                }, {
                    value: '5',
                    label: '周五'
                }, {
                    value: '6',
                    label: '周六'
                }, {
                    value: '7',
                    label: '周日'
                }],
                rules: {
                    awcd: [
                        {  required: true, message: '请输入', trigger: 'change' }
                    ],
                    flightNo: [
                        {  required: true, message: '请输入', trigger: 'change' }
                    ],
                    customscode: [
                        {  required: true, message: '请输入', trigger: 'change' }
                    ],
                    aircraftNo: [
                        {  required: true, message: '请输入', trigger: 'change' }
                    ],
                    transportflag: [
                        {  required: true, message: '请输入', trigger: 'change' }
                    ],
                    aircraftstand: [
                        {  required: true, message: '请输入', trigger: 'change' }
                    ],
                    departurePort: [
                        {  required: true, message: '请输入', trigger: 'change' }
                    ],
                    arrivalPort: [
                        {  required: true, message: '请输入', trigger: 'change' }
                    ],
                    departuredatetime: [
                        {  required: true, message: '请输入', trigger: 'change' }
                    ],
                    arrivaldatetime: [
                        {  required: true, message: '请输入', trigger: 'change' }
                    ],
                    validtime: [
                        {  required: true, message: '请输入', trigger: 'change' }
                    ],
                    userid: [
                        {  required: true, message: '请输入', trigger: 'change' }
                    ],
                    type: [
                        {  required: true, message: '请输入', trigger: 'change' }
                    ],
                    status: [
                        {  required: true, message: '请输入', trigger: 'change' }
                    ],
                    creatdate: [
                        {  required: true, message: '请输入', trigger: 'change' }
                    ],
                    updatedate: [
                        {  required: true, message: '请输入', trigger: 'change' }
                    ],
                    'schedule.options': [
                        {  required: true, message: '请输入', trigger: 'change' }
                    ],
                }

            }
        },
        methods: {
            //分页
            handleSizeChange(val) {
                this.pageSize=val;
            },
            handleCurrentChange(val) {
                this.pageNum=val;
                this.submitForm();
            },
// 获取消息标签列表
            submitForm() {
                const _this = this
                selectPrePlanConfig(this.queryConfigure).then((response) => {
                    const res = response.data
                    console.log(response.data)
                    if (res.code !== '200') {
                        return _this.$message.error('获取消息收发记录,失败!')
                    }
                    // 获取列表数据
                    _this.tableData = res.data.list
                    // 获取列表的总记录数
                    _this.total = res.data.total
                    _this.$message.success('获取消息收发记录,成功!')
                }).catch(error => {
                    // 关闭加载
                    _this.$message.error(error.toString())
                })
            },
//新增编辑弹框关闭重置
            configure_addDialogClosed() {
                // 重置对话框
                this.$refs.configure_addForm.resetFields()
            },
            // 打开新增
            addForm() {
                this.dialogStatus = 'create'
                this.configure_dialog.addDialog = true
            },
            // 新增功能
            configure_add() {     // 进行表单的预验证
                this.$refs.configure_addForm.validate(valid => {
                    // 未通过,表单预校验
                    if (!valid) return
                    console.log(this.configure_addForm);
                    addPrePlanConfig(this.configure_addForm).then((response) => {
                        const res = response.data
                        // 添加失败
                        if (res.code !== '200') {
                            // 关闭加载
                            return this.$message.error(res.msg)
                        }
                        // 添加,成功
                        this.$message.success(res.msg)
                        // 隐藏对话框
                        this.configure_dialog.addDialog = false
                        // 刷新列表
                        this.submitForm()
                    }).catch(error => {
                        this.$message.error(error.toString())
                    })
                })
            },
            // 打开编辑
            handleEdit(index, row) {
                this.configure_addForm = Object.assign({}, row);
                console.log(this.configure_addForm)
                this.configure_addForm.schedule.options=[];
                for(var obj in row.schedulelist){
                    console.log(this.configure_addForm.schedule.options.push(row.schedulelist[obj]['weekday']))
                }
                this.configure_dialog.addDialog = true
                this.dialogApply = 'update'
                this.$nextTick(() => {
                    this.configure_addForm = Object.assign({}, row)
                })
            },
            // 编辑功能
            configure_edit() {
                // 进行表单的预验证
                this.$refs.configure_addForm.validate(valid => {
                    // 未通过,表单预校验
                    if (!valid) return
                    ediPrePlanConfig(this.configure_addForm).then((response) => {
                        const res = response.data
                        if (res.code !== '200') {
                            return this.$message.error(res.msg)
                        }
                        this.$message.success(res.msg)
                        // 隐藏对话框
                        this.configure_dialog.addDialog = false
                        // 刷新列表
                        this.submitForm()
                    }).catch(error => {
                        this.$message.error(error.toString())
                    })
                })
            },
            // 删除
            handleDel(index,row) {
                // 弹框询问是否删除?
                this.$confirm('此操作永久删除该消息收发记录, 是否继续?', '警告', {
                        confirmButtonText: '确定删除',
                        cancelButtonText: '取消',
                        type: 'warning'
                    }
                ).then(() => {
                    console.log(row)
                    delPrePlanConfig(row).then((response) => {

                        const res = response.data
                        if (res.code !== '200') {
                            return this.$message.error(res.msg)
                        }
                        this.$message.success(res.msg)
                        // 刷新列表
                        this.submitForm()
                    }).catch(error => {
                        this.$message.error(res.msg)
                    })
                }).catch(() => {
                })
            },
            // 过滤中英文
            inputMe(e){
                return e.replace(/[^a-zA-Z0-9.-]/g,'').toUpperCase();
            }
        },
        //渲染方法
        mounted(){
            this.submitForm();
        }
    }
</script>

<style scoped>

</style>