fdcqxmTable.vue 6.52 KB
<!--
 * @Description: 房屋多幢明细
 * @Autor:
 * @LastEditTime: 2023-09-01 13:29:29
-->
<template>
  <div>
    <el-table
      :data="tableDataList"
      border
      :pagination="false"
      :key="key"
      :header-cell-style="{ 'text-align': 'center' }"
      :heightNumSetting="true"
      :minHeight="150"
      height="150"
      style="width: 100%">
      <el-table-column prop="index" width="50" :render-header="renderHeader">
        <template slot-scope="scope">
          <div style="text-align: center">{{ scope.$index + 1 }}</div>
        </template>
      </el-table-column>
      <el-table-column prop="bdcdyh" label="不动产单元号" min-width="100">
        <template slot-scope="scope">
          <div style="text-align: center">{{ scope.row.bdcdyh }}</div>
        </template>
      </el-table-column>
      <el-table-column prop="xmmc" label="项目名称" min-width="100">
        <template slot-scope="scope">
          <el-input
            class="item"
            :disabled="!ableOperation"
            v-model="scope.row.xmmc"
            placeholder="请输入内容"
            @input="updaterow(scope.row)">
          </el-input>
        </template>
      </el-table-column>
      <el-table-column prop="fwxz" label="房屋性质" min-width="100">
        <template slot-scope="scope">
          <treeselect
            v-model="scope.row.fwxz"
            :disabled="!ableOperation"
            noOptionsText="暂无数据"
            placeholder=""
            :show-count="true"
            :options="dictData['A19']"
            :normalizer="normalizer"
            :appendToBody="true"
            z-index="9999"
            @input="updaterow(scope.row)" />
        </template>
      </el-table-column>
      <el-table-column prop="ghyt" label="房屋用途" min-width="100">
        <template slot-scope="scope">
          <treeselect
            v-model="scope.row.ghyt"
            :disabled="!ableOperation"
            noOptionsText="暂无数据"
            placeholder=""
            :show-count="true"
            :options="dictData['A17']"
            :normalizer="normalizer"
            :appendToBody="true"
            z-index="9999"
            @input="updaterow(scope.row)" />
        </template>
      </el-table-column>
      <el-table-column prop="fwjg" label="房屋结构" min-width="100">
        <template slot-scope="scope">
          <treeselect
            v-model="scope.row.fwjg"
            :disabled="!ableOperation"
            noOptionsText="暂无数据"
            placeholder=""
            :show-count="true"
            :options="dictData['A46']"
            :normalizer="normalizer"
            :appendToBody="true"
            z-index="9999"
            @input="updaterow(scope.row)" />
        </template>
      </el-table-column>
      <el-table-column prop="jzmj" label="建筑面积" min-width="100">
        <template slot-scope="scope">
          <el-input
            maxlength="12"
            class="item"
            :disabled="!ableOperation"
            oninput="value = (value.match(/^\d*(\.?\d{0,2})/g)[0]) || null"
            v-model="scope.row.jzmj"
            placeholder="请输入内容"
            @input="updaterow(scope.row)">
          </el-input>
        </template>
      </el-table-column>
      <el-table-column prop="jgsj" label="竣工时间" min-width="100">
        <template slot-scope="scope">
          <el-date-picker
            v-model="scope.row.jgsj"
            type="date"
            :disabled="!ableOperation"
            placeholder="选择日期"
            value-format="yyyy-MM-dd HH:mm:ss"
            format="yyyy-MM-dd"
            @input="updaterow(scope.row)">
          </el-date-picker>
        </template>
      </el-table-column>
      <el-table-column prop="zcs" label="总层数" min-width="100">
        <template slot-scope="scope">
          <el-input
            class="item"
            :disabled="!ableOperation"
            oninput="value = (value.match(/^\d*(\.?\d{0,2})/g)[0]) || null"
            v-model="scope.row.zcs"
            placeholder="请输入内容"
            @input="updaterow(scope.row)">
          </el-input>
        </template>
      </el-table-column>
      <el-table-column prop="zts" label="总套数" min-width="100">
        <template slot-scope="scope">
          <el-input
            class="item"
            :disabled="!ableOperation"
            oninput="value = (value.match(/^\d*(\.?\d{0,2})/g)[0]) || null"
            v-model="scope.row.zts"
            placeholder="请输入内容"
            @input="updaterow(scope.row)">
          </el-input>
        </template>
      </el-table-column>
    </el-table>
  </div>
</template>
<script>
  import { mapGetters } from "vuex";

  export default {
    computed: {
      ...mapGetters(["dictData"]),
    },
    props: {
      tableData: {
        type: Array,
        default: function () {
          return [];
        },
      },
      ableOperation: {
        type: Boolean,
        default: false,
      },

    },
    data () {
      return {
        // 键名转换,方法默认是label和children进行树状渲染
        key: 0,
        tableDataList: [],
        normalizer (node) {
          if (node.children == null || node.children == "null") {
            delete node.children;
          }
          return {
            id: node.dcode,
            label: node.dname,
            children: node.children,
          };
        },
      };
    },
    mounted () {
    },
    watch: {
      tableData: {
        handler: function (val, oldVal) {
          let that = this;
          this.$nextTick(() => {
            if (val.length == 0 || !val) {
              that.tableDataList = _.cloneDeep([
                {
                  yt: null,
                  qssj: "",
                  jssj: "",
                  tdsyqx: "",
                },
              ]);
            } else {
              that.tableDataList = _.cloneDeep(val);
            }
          });
        },
        immediate: true,
        deep: true,
      },
    },
    methods: {
      /**
       * @description: renderHeader
       * @author: renchao
       */
      renderHeader () {
        return (
          <div>
            {"序号"}
          </div>
        );
      },
      updaterow (a) {
        this.$emit("updateFdcwxmList", this.tableDataList);
      }
    }
  }
</script>
<style scoped lang="scss">
  .el-input {
    border: none !important;
  }

  /deep/ .el-table__row {
    border: none !important;
  }

  .el-date-editor.el-input {
    width: 100%;
  }

  /deep/ .el-table th {
    height: 30px !important;
  }
</style>