rate.vue 12.3 KB
<template>
    <div>
        <el-row :gutter="24">
            <el-col :span="4">
                <el-input size="medium" v-model="query.carrier" onkeyup="this.value=this.value.toUpperCase()" placeholder="承运人二字码"></el-input>
            </el-col>
            <el-col :span="4">
                <el-input size="medium" v-model="query.dest" onkeyup="this.value=this.value.toUpperCase()" placeholder="目的港"></el-input>
            </el-col>
            <el-col :span="2">
                <el-button size="medium" @click="getList" type="primary">查询</el-button>
            </el-col>
            <el-col :span="2">
                <el-button size="medium" @click="add" type="primary">新增</el-button>
            </el-col>
        </el-row>
        <el-row :gutter="24">
            <el-col :span="24">
                <el-table
                        :data="tableData"
                        border
                        style="width: 100%">
                    <el-table-column
                            prop="carrier"
                            label="承运人二字码"
                            width="120">
                    </el-table-column>
                    <el-table-column
                            prop="dest"
                            label="目的港"
                            width="120">
                    </el-table-column>
                    <el-table-column
                            prop="destrate"
                            label="目的港费率"
                            width="120">
                    </el-table-column>
                    <el-table-column
                            prop="mycname"
                            label="燃油费类型"
                            width="120">
                    </el-table-column>
                    <el-table-column
                            prop="myc"
                            label="燃油费率"
                            width="120">
                    </el-table-column>
                    <el-table-column
                            prop="sccname"
                            label="战险类型"
                            width="120">
                    </el-table-column>
                    <el-table-column
                            prop="scc"
                            label="战险费率"
                            width="120">
                    </el-table-column>
                    <el-table-column
                            prop="zhidanfei"
                            label="制单费"
                            width="120">
                    </el-table-column>
                    <el-table-column
                            prop="cgc"
                            label="信息传输费"
                            width="120">
                    </el-table-column>
                    <el-table-column
                            fixed="right"
                            label="操作"
                            width="100">
                        <template slot-scope="scope">
                            <el-button @click="handleClick(scope.row)" type="text" size="small">编辑</el-button>
                            <el-button @click="deleteClick(scope.row)" type="text" size="small">删除</el-button>
                        </template>
                    </el-table-column>
                </el-table>
            </el-col>
            <el-col :span="24">
                <div class="block">
                    <el-pagination
                            @size-change="handleSizeChange"
                            @current-change="handleCurrentChange"
                            :current-page="query.pageNum"
                            :page-sizes="[10, 20, 30, 40]"
                            :page-size="query.pageSize"
                            layout="total, sizes, prev, pager, next, jumper"
                            :total="total">
                    </el-pagination>
                </div>
            </el-col>
        </el-row>

                <el-dialog
                        title="费率信息"
                        :visible.sync="dialogVisible"
                        width="30%"
                        :before-close="handleClose">
                    <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
                        <el-form-item label="目的港" prop="dest">
                            <el-input v-model="ruleForm.dest" onkeyup="this.value=this.value.toUpperCase()"></el-input>
                        </el-form-item>
                        <el-form-item label="目的港费率" prop="destrate">
                            <el-input v-model="ruleForm.destrate" type="number"></el-input>
                        </el-form-item>
                        <el-form-item label="承运人二字码" prop="carrier">
                            <el-input v-model="ruleForm.carrier" onkeyup="this.value=this.value.toUpperCase()"></el-input>
                        </el-form-item>
                        <el-form-item label="燃油费类型:" prop="mycname">
                            <el-input v-model="ruleForm.mycname" onkeyup="this.value=this.value.toUpperCase()"></el-input>
                        </el-form-item>
                        <el-form-item label="燃油费率" prop="myc">
                            <el-input v-model="ruleForm.myc" type="number"></el-input>
                        </el-form-item>
                        <el-form-item label="战险类型" prop="sccname">
                            <el-input v-model="ruleForm.sccname" onkeyup="this.value=this.value.toUpperCase()"></el-input>
                        </el-form-item>
                        <el-form-item label="战险费率" prop="scc">
                            <el-input v-model="ruleForm.scc" type="number"></el-input>
                        </el-form-item>
                        <el-form-item label="制单费" prop="zhidanfei">
                            <el-input v-model="ruleForm.zhidanfei" type="number"></el-input>
                        </el-form-item>
                        <el-form-item label="信息传输费" prop="cgc">
                            <el-input v-model="ruleForm.cgc" type="number"></el-input>
                        </el-form-item>
                        <el-form-item>
                            <el-button type="primary" @click="dialogStatus==='create'?addForm('ruleForm'):ediForm('ruleForm')">保存</el-button>
                            <el-button @click="resetForm('ruleForm')">重置</el-button>
                        </el-form-item>
                    </el-form>
                </el-dialog>

    </div>
</template>
<script>
    import {addRate,delRate,ediRate,selectRate} from "../../api/zhidan/zhidan";
    export default {
        data(){
            return{
                ruleForm: {
                    id:'',
                    carrier: '',
                    dest:'',
                    destrate:0,
                    myc:0,
                    scc:0,
                    zhidanfei:0,
                    mycname:'',
                    sccname:'',
                    cgc:0,
                },
                rules: {

                },
                query:{
                    carrier:'',
                    dest:'',
                    pageNum:1,
                    pageSize:20
                },
                total:0,
                tableData:[],
                dialogVisible:false,
                dialogStatus: '',
            }
        },
        mounted() {
            this.getList();
        },
        methods:{
            addForm(formName) {
                this.$refs[formName].validate((valid) => {
                    if (valid) {
                        addRate(this.ruleForm).then((response) => {
                            const res = response.data
                            if (res.code !== '200') {
                                return this.$message.error('费率新增,失败!')
                            }
                            this.$message.success('费率新增,成功!')
                            this.dialogVisible = false;
                            this.getList();
                        }).catch(error => {
                            // 关闭加载
                            this.$message.warning('费率新增,失败!')
                        })
                    } else {
                        console.log('error submit!!');
                        return false;
                    }
                });
            },
            ediForm(formName) {
                this.$refs[formName].validate((valid) => {
                    if (valid) {
                        ediRate(this.ruleForm).then((response) => {
                            const res = response.data
                            if (res.code !== '200') {
                                return this.$message.error('费率更新,失败!')
                            }
                            this.$message.success('费率更新,成功!')
                            this.dialogVisible = false;
                            this.getList();
                        }).catch(error => {
                            // 关闭加载
                            this.$message.warning('费率更新,失败!')
                        })
                    } else {
                        console.log('error submit!!');
                        return false;
                    }
                });
            },
            resetForm(formName) {
                this.$refs[formName].resetFields();
            },
            add(){
                this.ruleForm={
                    id:'',
                        carrier: '',
                        dest:'',
                        destrate:0,
                        myc:0,
                        scc:0,
                        zhidanfei:0,
                        mycname:'',
                        sccname:'',
                        cgc:0,
                }
                this.dialogVisible=true;
                this.dialogStatus='create';
            },
            handleClose(done) {
                this.$confirm('确认关闭?')
                    .then(_ => {
                        done();
                    })
                    .catch(_ => {});
            },
            handleClick(row) {
                this.dialogVisible=true;
                this.dialogStatus='update';
                this.ruleForm=row;
            },
            deleteClick(row) {
                this.$confirm('此操作永久删除该消息收发记录, 是否继续?', '警告', {
                        confirmButtonText: '确定删除',
                        cancelButtonText: '取消',
                        type: 'warning'
                    }
                ).then(() => {
                    delRate({id: row.id}).then((response) => {
                        const res = response.data
                        this.$message.success(res.msg)
                        this.getList();
                    }).catch(error => {
                        this.$message.error('删除配置,失败!')
                    })
                }).catch(() => {
                })
            },
            handleSizeChange(val) {
                this.query.pageSize=val;
                this.getList();
            },
            handleCurrentChange(val) {
                this.query.pageNum=val;
                this.getList();
            },
            getList(){
                selectRate(this.query).then((response) => {
                    const res = 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())
                })
            },
            validateUppercaseInput() {
                // 使用正则表达式来匹配非大写字母,并替换为空字符串
                this.uppercaseInput = this.uppercaseInput.replace(/[^A-Z]/g, '');
            }
        }
    }
</script>