index.vue 8.26 KB
<template>
    <div class="main">
        <table border="1">
            <tr>
                <td colspan="2">土地坐落</td>
                <td colspan="3"><input type="text" class="formInput" v-model="tdzl" disabled/></td>
            </tr>
            <tr>
                <td colspan="2">宗地代码</td>
                <td colspan="3"><input type="text" class="formInput" v-model="zddm " disabled/></td>
            </tr>
            <tr>
                <td colspan="2">宗地面积(㎡)</td>
                <td><input type="number" class="formInput" v-model.number="zdmj" disabled/></td>
                <td>定着物数量</td>
                <td class="dzwsl">{{dzwdsl}}</td>
            </tr>
            <tr>
                <td colspan="2">备注</td>
                <td colspan="3"><input type="text" class="formInput" v-model="mjftData.bz"/></td>
            </tr>
        </table>
        <table border="1">
            <tr>
                <td @click="addRow">+</td>
                <td>定着物代码</td>
                <td>土地所有权/使用权面积(㎡)</td>
                <td>独有独用土地面积(㎡)</td>
                <td>分摊土地面积(㎡)</td>
            </tr>
            <tr v-for="(item,i) in mjftData.list" :key="i">
                <td @click="delRow(i)">-</td>
                <td><input type="text" class="formInput" v-model="item.dzwdm"/></td>
                <td><input type="number" class="formInput" v-model="item.tdsyqsyqmj" @keydown="oninput"/></td>
                <td><input type="number" class="formInput" v-model="item.dydytdmj" @keydown="oninput"/></td>
                <td><input type="number" class="formInput" v-model="item.fttdmj" @keydown="oninput"/></td>
            </tr>
            <tr>
                <td></td>
                <td>统计</td>
                <td>{{sumTdsyqsyqmj}}</td>
                <td>{{sumDydytdmj}}</td>
                <td>{{sumFttdmj}}</td>
            </tr>
        </table>
        <div class="pers">
            <el-button @click="save" type="primary">保存</el-button>
        </div>
    </div>
</template>

<script>
    import {getMjftInfo, savemjft} from '../../../api/zd'
    import {Message} from 'element-ui'

    export default {
        name: "index",
        data() {
            return {
                tdzl: '',       // 土地坐落 继承获取
                zdmj: '',       // 宗地面积 继承获取
                zddm: '',
                mjftData: {
                    zdbsm: '',      // 宗地标识码 继承获取
                    tdsyqsyqmjhj: '',// 土地所有权/使用权面积合计
                    fttdmjhj: '',   // 分摊土地面积合计
                    dzwdys: '',     // 表示同一宗地内所有的定着物单元数
                    dydytdmjhj: '', // 根据该宗地下共有/共用定着物量自动计算。 ,
                    bz: '',      // 备注
                    list: [
                        {
                            dydytdmj: '',  // 独有独用土地面积
                            dzwdm: '',     // 定着物代码
                            fttdmj: '',     // 分摊土地面积
                            gygyzdmjftbsm: '',// 共有公用面积分摊标识码 ,
                            tdsyqsyqmj: ''    // 土地所有权/使用权面积
                        }
                    ]
                }
            }
        },

        methods: {
            getData(bsm) {
                getMjftInfo(bsm).then(res => {
                    if (res.success) {
                        this.mjftData = res.result
                    }
                })
            },
            save() {
                for (let val  of this.mjftData.list) {
                    if (val.dzwdm == '') {
                        Message.error("定着物代码不能为空")
                        return
                    }
                }
                this.mjftData['zdbsm'] = this.$store.state.zdbsm
                savemjft(this.mjftData).then(res => {
                    if (res.success) {
                        Message.success("保存成功")
                        this.getData(this.mjftData.zdbsm)
                    } else {
                        Message.error(res.message)
                    }
                }).catch(error => {
                    console.log(error)
                })
            },
            oninput(e) {
                e.target.value = (e.target.value.match(/^\d*(\.?\d{0,2})/g)[0]) || null
            },
            addRow() {
                this.mjftData.list.push({
                    dydytdmj: '',
                    dzwdm: '',
                    fttdmj: '',
                    gygyzdmjftbsm: '',
                    tdsyqsyqmj: ''
                })
            },
            delRow(index) {
                this.mjftData.list.splice(index, 1)
            }
        },
        computed: {
            sumTdsyqsyqmj: function () {
                let self = this;
                let sum = 0;
                let data = this.mjftData.list;
                for (let i = 0; i < data.length; i++) {
                    if (isNaN(parseFloat(data[i].tdsyqsyqmj))) {
                        continue;
                    }
                    sum += parseFloat(data[i].tdsyqsyqmj)
                }
                let num = isNaN(sum) ? '' : sum.toFixed(3);
                self.mjftData.tdsyqsyqmjhj = num;
                return num;
            },
            sumDydytdmj: function () {
                let self = this;
                let sum = 0;
                let data = this.mjftData.list;
                for (let i = 0; i < data.length; i++) {
                    if (isNaN(parseFloat(data[i].dydytdmj))) {
                        continue;
                    }
                    sum += parseFloat(data[i].dydytdmj)
                }
                let num = isNaN(sum) ? '' : sum.toFixed(3);
                self.mjftData.dydytdmjhj = num;
                return num;
            },
            sumFttdmj: function () {
                let self = this;
                let sum = 0;
                let data = this.mjftData.list;
                for (let i = 0; i < data.length; i++) {
                    if (isNaN(parseFloat(data[i].fttdmj))) {
                        continue;
                    }
                    sum += parseFloat(data[i].fttdmj)
                }
                let num = isNaN(sum) ? '' : sum.toFixed(3);
                self.mjftData.fttdmjhj = num;
                return num;
            },
            dzwdsl: function () {
                let self = this
                let num = this.mjftData.list.length ? this.mjftData.list.length : 0
                self.mjftData.dzwdys = num
                return num;
            }
        },
        created() {
            console.log("create init...")
        },
        mounted() {
            console.log("mounted init...")
            this.mjftData.zdbsm=this.$store.state.zdbsm
            this.zdmj=this.$store.state.zdmj
            this.tdzl=this.$store.state.zdzl
            this.zddm=this.$store.state.zddm
            if (this.mjftData.zdbsm) {
                this.getData(this.mjftData.zdbsm)
            }
        },
        watch: {
            "$store.state.zdbsm": function (bsm) {
                this.mjftData.zdbsm = bsm
            },
            "$store.state.zdmj": function (zdmj) {
                this.zdmj = zdmj
            },
            "$store.state.zdzl": function (tdzl) {
                this.tdzl = tdzl
            },
            "$store.state.zddm": function (zddm) {
                this.zddm = zddm
            },
        }
    }
</script>

<style scoped>
    .main {
        box-sizing: border-box;
        padding: 18px;
        height: auto;
        width: 80%;
    }

    table {
        margin-top: 10px;
        background-color: #fff;
        font-size: 14px;
        width: 100%;
    }

    td {
        text-align: center;
        height: 36px;
        min-width: 50px;
    }

    table .formInput {
        margin: 0;
        height: 36px;
        outline: none;
        border: none;
        color: #606764;
        overflow: visible;
        text-align: center;
        cursor: text;
    }

    .pers {
        text-align: center;
        margin-top: 10px;
    }

    .pers .el-button {
        width: 150px;
    }

    .dzwsl {
        width: 200px;
    }

</style>