<template>
    <div class="car_add">
        <div>
            <div class="communal-title">
                <div>{{ title }}</div>
            </div>
        </div>
        <hr style='background-color:#5555; height:1px; border:none;' />
        <div>
            <el-form :model="delegationInfo" label-width="100px" class="demo-ruleForm">
                <div style="display: flex;">
                    <div style="width: 25%;">
                        <el-form-item label="团组名称:" label-width="160px">
                            <el-select v-model="DiIdSelect" clearable filterable placeholder="团组选择"
                                @change="DecreasePaymentsChange" :disabled="isShow" style="width: 100%;">
                                <el-option v-for="item in delegationInfoList" :key="item.id" :label="item.teamName"
                                    :value="item.id">
                                </el-option>
                            </el-select>
                        </el-form-item>
                    </div>
                    <div style="width: 25%;">
                        <el-form-item label="团 号:" prop="tourCode" label-width="160px">
                            <el-input placeholder="团号" v-model="delegationInfo.tourCode" :disabled="true">
                            </el-input>
                        </el-form-item>
                    </div>
                    <div style="width: 25%;">
                        <el-form-item label="客户:" prop="clientName" label-width="160px">
                            <el-input placeholder="客户" v-model="delegationInfo.clientName" :disabled="true">
                            </el-input>
                        </el-form-item>
                    </div>
                    <div style="width: 25%;">
                        <el-form-item label="出访国家:" prop="visitCountry" label-width="160px">
                            <el-input placeholder="出访国家" v-model="delegationInfo.visitCountry" :disabled="true">
                            </el-input>
                        </el-form-item>
                    </div>
                </div>
            </el-form>
            <el-form :model="DecreasePaymentsData" ref="DecreasePaymentsData" :rules="DecreasePaymentsRules"
                label-width="100px" class="demo-ruleForm">
                <div style="display:flex ;flex-wrap: wrap;">
                    <div style="width: 25%;">
                        <el-form-item label="费用名称:" prop="priceName" label-width="160px">
                            <el-input placeholder="费用名称" v-model="DecreasePaymentsData.priceName">
                            </el-input>
                        </el-form-item>
                    </div>
                    <div style="width: 25%;">
                        <el-form-item label="费用金额:" prop="price" label-width="160px">
                            <el-input placeholder="费用金额" v-model="DecreasePaymentsData.price" style="width: 58%;">
                            </el-input>
                            <el-select v-model="DecreasePaymentsData.currency" style="width: 40%;">
                                <el-option v-for="item in rateList" :key="item.currencyId" :label="item.currencyCode"
                                    :value="item.currencyId"></el-option>
                            </el-select>
                        </el-form-item>
                    </div>
                    <div style="width: 25%;">
                        <el-form-item label="收款方:" prop="payee" label-width="160px">
                            <el-input placeholder="收款方" v-model="DecreasePaymentsData.payee">
                            </el-input>
                        </el-form-item>
                    </div>
                    <div style="width: 25%;">
                        <el-form-item label="费用标识:" prop="orbitalPrivateTransfer" label-width="160px">
                            <el-select v-model="DecreasePaymentsData.orbitalPrivateTransfer" placeholder="费用标识"
                                style="width: 100%;">
                                <el-option key="0" label="公转" :value=0>
                                </el-option>
                                <el-option key="1" label="私转" :value=1>
                                </el-option>
                            </el-select>
                        </el-form-item>
                    </div>
                    <div style="width: 25%;">
                        <el-form-item label="支付方式:" prop="payDId" label-width="160px">
                            <el-select v-model="DecreasePaymentsData.payDId" placeholder="支付方式" style="width: 100%;">
                                <el-option v-for="item in payment" :key="item.id" :label="item.name" :value="item.id">
                                </el-option>
                            </el-select>
                        </el-form-item>
                    </div>
                </div>
                <div style="display: flex;">
                    <div>
                        <el-form-item label="附件:" prop="fileUrl" label-width="160px">
                            <el-upload :file-list="uploadFiles" ref="upload" :on-success="upLoadSuccess"
                                :on-error="upLoadError" :before-remove="beforeRemove" :on-change="onChange" :limit="1"
                                :on-exceed="exceed" :action="uploadURL" :headers="headers" :auto-upload="false">
                                <el-button slot="trigger" size="small" type="primary">选取文件</el-button>
                                <!-- <el-button style="margin-left: 10px;" size="small" type="success"
                                    @click="submitUpload">上传到服务器</el-button> -->
                            </el-upload>


                        </el-form-item>
                    </div>
                </div>
                <div style="display: flex;">
                    <div style="width: 100%;">
                        <el-form-item label="备 注:" prop="remark" label-width="160px">
                            <el-input type="textarea" :rows="5" placeholder="备注"
                                v-model="DecreasePaymentsData.remark"></el-input>
                        </el-form-item>
                    </div>
                </div>
                <el-form-item>
                    <div style="margin-left: 60%;">
                        <el-button type="primary" @click="addBtn">保存</el-button>
                        <router-link to='/home/DecreasePayments'>
                            <el-button>取消</el-button>
                        </router-link>
                    </div>
                </el-form-item>
            </el-form>

        </div>
    </div>
</template>
<script>
export default {
    data() {
        return {
            projectName: "",
            uploadURL: "http://132.232.92.186:8888/api/Groups/UploadProject",
            uploadFiles: [],//上传的文件列表
            DelfileName: "",
            title: "新增团组增减款项费用",
            token: '',
            userId: 0,
            id: '',
            DiId: '',
            isShow: false,
            DiIdSelect: '',
            delegationInfo: {},
            delegationInfoList: [],//团组下拉框
            payment: [],//支付方式下拉框
            DecreasePaymentsData: {
                status: 0,
                payDId: 72,
                orbitalPrivateTransfer: 0,
                payee: "",
                id: 0,
                diId: 0,
                priceName: "",
                price: 0,
                currency: '',
                filePath: "",
                createUserId: 0,
                remark: ""
            },
            IsAuditGM: 0,
            Decrease: {},
            CreditCard: {},
            headers: {
                Authorization: JSON.parse(localStorage.getItem('userinif')).token,
                TypeName: "A"
            },
            DecreasePaymentsRules: {
                price: [
                    { required: true, message: '请输入费用金额', trigger: 'change' },
                    { pattern: /^(([1-9]?\d{0,8}(\.\d{1,2})?)|999999999|999999999\.(0){1,2})$/, message: '请输入正确的金额(最多2位小数)' }
                ],
                priceName: [
                    { required: true, message: '请输入费用名称', trigger: 'change' },
                ],
                payee: [
                    { required: true, message: '请输入收款方姓名', trigger: 'change' },
                ],
                orbitalPrivateTransfer: [
                    { required: true, message: '请选择费用标识', trigger: 'change' },
                ],
                payDId: [
                    { required: true, message: '请选择支付方式', trigger: 'change' }
                ],
            },
            rateList: [],
        }
    },

    methods: {
        //团组下拉框
        AirTicketResSelect() {
            var url = "/api/Groups/DecreasePaymentsSelect"
            var that = this
            this.$axios({
                method: 'post',
                url: url,
                headers: {
                    Authorization: 'Bearer ' + this.token
                },
                data: {
                    userId: that.userId,
                    CTId: 98
                }
            }).then(function (res) {
                if (res.data.code == 200) {
                    that.delegationInfoList = res.data.data.groupName;
                    that.DiIdSelect = parseInt(that.DiId)
                    for (let index = 0; index < that.delegationInfoList.length; index++) {
                        if (that.delegationInfoList[index].id == that.DiIdSelect) {
                            that.delegationInfo = that.delegationInfoList[index];
                            break;
                        }
                    }

                    that.payment = res.data.data.payment
                }

            })


        },
        QueryDecreasePaymentsById() {
            var url = "/api/Groups/QueryDecreasePaymentsById"
            var that = this
            this.$axios({
                method: 'post',
                url: url,
                headers: {
                    Authorization: 'Bearer ' + this.token
                },
                data: {
                    Id: that.id
                }
            }).then(function (res) {
                if (res.data.code == 200) {

                    that.Decrease = res.data.data._Decrease
                    that.CreditCard = res.data.data._CreditCard
                    that.DecreasePaymentsData.payDId = that.CreditCard.payDId
                    that.DecreasePaymentsData.orbitalPrivateTransfer = that.CreditCard.orbitalPrivateTransfer
                    that.DecreasePaymentsData.payee = that.CreditCard.payee
                    that.DecreasePaymentsData.id = that.Decrease.id
                    that.DecreasePaymentsData.diId = that.Decrease.diId
                    that.DecreasePaymentsData.priceName = that.Decrease.priceName
                    that.DecreasePaymentsData.price = that.Decrease.price
                    that.DecreasePaymentsData.currency = that.Decrease.currency
                    that.DecreasePaymentsData.filePath = that.Decrease.filePath
                    that.projectName = that.Decrease.filePath
                    that.DecreasePaymentsData.remark = that.Decrease.remark
                    that.IsAuditGM = that.CreditCard.isAuditGM
                    if (that.Decrease.filePath != null && that.Decrease.filePath != undefined && that.Decrease.filePath != "") {
                        that.uploadFiles.push({
                            name: that.Decrease.filePath,
                            url: 'http://132.232.92.186:24/Office/GrpFile/团组增减款项相关文件/',
                        })
                    }

                }

            })
        },

        //点击保存事件
        addBtn() {
            if (this.IsAuditGM == 1) {
                this.$message.error('已通过审核，不可修改！');
            } else {
                if (this.DiId == null && this.DiId == undefined && this.DiId == "") {
                    this.$message.error("请选择团组名称");
                    return;
                }
                const that = this;
                that.$refs.DecreasePaymentsData.validate((valid) => {
                    if (valid) {
                        if (that.DecreasePaymentsData.filePath == that.projectName) {
                            if (that.DelfileName != null && that.DelfileName != "" && that.DelfileName != undefined) {
                                that.$axios({
                                    method: 'post',
                                    url: "/api/Groups/DelFile",
                                    headers: {
                                        Authorization: 'Bearer ' + that.token
                                    },
                                    data: {
                                        fileName: that.DelfileName,
                                        id: that.id
                                    }
                                }).then(function (res) {
                                    if (res.data.code == 200) {

                                    }
                                })
                            }
                            that.DecreasePaymentsData.filePath = that.projectName
                            that.DecreasePaymentsData.diId = that.DiIdSelect;
                            that.DecreasePaymentsData.createUserId = that.userId;
                            var url = "/api/Groups/OpDecreasePayments"
                            that.$axios({
                                method: 'post',
                                url: url,
                                headers: {
                                    Authorization: 'Bearer ' + that.token
                                },
                                data: that.DecreasePaymentsData
                            }).then(function (res) {
                                if (res.data.code == 200) {
                                    that.$message({
                                        message: res.data.msg,
                                        type: 'success'
                                    });
                                    that.loading = true;
                                    setTimeout(() => {
                                        that.$router.push('/home/DecreasePayments')
                                    }, 3000);
                                } else {
                                    that.$message.error(res.data.msg);
                                }
                            })

                        } else {
                            if (that.DelfileName != null && that.DelfileName != "" && that.DelfileName != undefined) {
                                that.$axios({
                                    method: 'post',
                                    url: "/api/Groups/DelFile",
                                    headers: {
                                        Authorization: 'Bearer ' + that.token
                                    },
                                    data: {
                                        fileName: that.DelfileName,
                                        id: that.id
                                    }
                                }).then(function (res) {
                                    if (res.data.code == 200) {

                                    }
                                })
                            }
                            if (that.projectName != "" && that.projectName != null && that.projectName != undefined) {
                                that.$refs.upload.submit();//上传文件到服务器
                            } else {
                                that.DecreasePaymentsData.filePath = that.projectName
                                that.DecreasePaymentsData.diId = that.DiIdSelect;
                                that.DecreasePaymentsData.createUserId = that.userId;
                                var url = "/api/Groups/OpDecreasePayments"
                                that.$axios({
                                    method: 'post',
                                    url: url,
                                    headers: {
                                        Authorization: 'Bearer ' + that.token
                                    },
                                    data: that.DecreasePaymentsData
                                }).then(function (res) {
                                    if (res.data.code == 200) {
                                        that.$message({
                                            message: res.data.msg,
                                            type: 'success'
                                        });
                                        that.loading = true;
                                        setTimeout(() => {
                                            that.$router.push('/home/DecreasePayments')
                                        }, 3000);
                                    } else {
                                        that.$message.error(res.data.msg);
                                    }
                                })
                            }

                        }

                    } else {
                        this.$message.error('请完善信息在保存！');
                        return false;
                    }
                })

            }
            // 此时必填完成，做保存后的业务操作
        },
        DecreasePaymentsChange() {
            this.QueryRate();
            for (let index = 0; index < this.delegationInfoList.length; index++) {
                if (this.delegationInfoList[index].id == parseInt(this.DiIdSelect)) {
                    this.delegationInfo = this.delegationInfoList[index];
                    break;
                }
            }
        },

        //上传
        // 文件超出限制
        exceed(files, fileList) {
            this.$message.warning(
                `当前限制选择 1个文件，本次选择了 ${files.length} 个文件，共选择了 ${files.length + fileList.length
                } 个文件,请取消要替换的文件`
            );
        },

        //文件上传成功时的钩子
        upLoadSuccess(response, file, fileList) {
            if (response.code == 200) {
                var that = this;
                that.$axios({
                    method: 'post',
                    url: "/api/Groups/DelFile",
                    headers: {
                        Authorization: 'Bearer ' + that.token,
                        TypeName: "A"
                    },
                    data: {
                        fileName: that.DelfileName,
                        id: that.id
                    }
                }).then(function (res) {
                    if (res.data.code == 200) {

                    }
                })

                that.DecreasePaymentsData.filePath = response.data
                that.DecreasePaymentsData.diId = that.DiIdSelect;
                that.DecreasePaymentsData.createUserId = that.userId;
                var url = "/api/Groups/OpDecreasePayments"
                that.$axios({
                    method: 'post',
                    url: url,
                    headers: {
                        Authorization: 'Bearer ' + that.token
                    },
                    data: that.DecreasePaymentsData
                }).then(function (res) {
                    if (res.data.code == 200) {
                        that.$message({
                            message: res.data.msg,
                            type: 'success'
                        });
                        that.loading = true;
                        setTimeout(() => {
                            that.$router.push('/home/DecreasePayments')
                        }, 3000);
                    } else {
                        that.$message.error(res.data.msg);
                    }
                })
                console.log("上传成功");
            } else {
                console.log("保存失败");
            }

        },
        //文件上传失败时的钩子
        upLoadError(response, file, fileList) {
            console.log("项目添加失败");
        },
        beforeRemove(file, fileList) {
            console.log(file.name)
            let id1 = this.uploadFiles.findIndex(item => {
                if (item.name == file.name) {
                    return true
                }
            })
            this.uploadFiles.splice(id1, 1)
            this.projectName = ""
            this.DelfileName = file.name
        },
        onChange(file, fileList) {
            this.projectName = file.name
        },
        QueryRate() {
            var url = "/api/Business/PostGroupTeamRateByDiIdAndCTableId"
            var that = this
            this.$axios({
                method: 'post',
                url: url,
                headers: {
                    Authorization: 'Bearer ' + that.token
                },
                data: {
                    "portType": 1,
                    "diId": this.DiIdSelect ? this.DiIdSelect : this.DiId,
                    "cTable": 98
                }
            }).then(function (res) {
                if (res.data.code == 200) {
                    //汇率
                    console.log("汇率--", res.data.data);
                    that.rateList = res.data.data.teamRates;
                }
            })


        }

    },

    mounted() {

        this.DiId = this.$route.query.DiId
        this.QueryRate();
        this.token = JSON.parse(localStorage.getItem('userinif')).token;
        this.userId = JSON.parse(localStorage.getItem('userinif')).userInfo.userId
        this.AirTicketResSelect();
        this.id = this.$route.query.id
        if (this.id != null && this.id != undefined && this.id != 0) {
            this.QueryDecreasePaymentsById();
            this.title = "修改团组增减款项费用";
            this.DecreasePaymentsData.status = 2
            this.isShow = true
        } else {
            this.DecreasePaymentsData.status = 1
            this.title = "新增团组增减款项费用"
            this.isShow = false
        }

    }
}
</script>
<style>
.communal-list {
    background-color: #fff;
    padding: 10px;
    box-shadow: 0 0 5px #0005;
    border-radius: 10px;

}

.car_add .communal-title {
    display: flex;
    font-size: 17px;
    font-weight: 600;
    color: #555;
    margin-bottom: 20px;
    justify-content: space-between;
    align-items: center;
}

.appraise-box {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    margin: 50px 0;
}

.appraise-box>div {
    width: 30%;
}

.communal-box {
    display: flex;
}

.communal-box>button {
    margin-left: 10px;
    padding: 8px 20px;
}

.car_add {
    background-color: #fff;
    padding: 20px;
    box-shadow: 0 0 5px #0005;
    border-radius: 10px;
}

@media screen and (max-width: 1700px) {
    .appraise-box>div {
        width: 48%;
    }

    .appraise-box>div el-form-item__content {
        width: 260px !important;
    }
}
</style>