dyztsd.vue 3.91 KB
<!--
 * @Description: 单元状态设定
 * @Autor: renchao
 * @LastEditTime: 2023-07-19 14:10:44
-->
<template>
  <div class='该组件名称'>
    <el-form :model="ruleForm">
      <el-row>
        <el-col :span="5">
          <el-form-item label="登记业务编码">
            {{ ruleForm.djywbm }}
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="登记业务名称">
            {{ ruleForm.djywmc }}
          </el-form-item>
        </el-col>
      </el-row>
    </el-form>
    <div v-if="ruleForm.sfsxql != '0'">
      <div class="dyztsd-title">
        <b>请勾选需要查询的权利信息</b>
        <div>
          <el-button type="text" @click="handleSelectall">选择全部 </el-button>
          <el-button type="text" @click="handleInvert">清除全部</el-button>
        </div>
      </div>
      <el-divider></el-divider>
      <ul class="qlxx-list">
        <li v-for="(item, index) in dataList.sxql" :key="index">
          <el-checkbox v-model="item.checked">{{ item.sxzdmc }}</el-checkbox>
        </li>
      </ul>
    </div>
    <b>限制办理状态</b>
    <ul class="screen-list">
      <li v-for="(item, index) in dataList.sxzt" :key="index">
        <div class="screen-list-left">
          <el-switch v-model="item.checked" @change="handleSelect(item)">
          </el-switch>
          {{ item.sxzdmc }}
        </div>
        <el-radio-group v-model="item.selected" :disabled="!item.checked">
          <el-radio :label="obj.sxzdz" v-for="(obj, index) in item.children" :key="index">{{ obj.sxzdmc }}</el-radio>
        </el-radio-group>
      </li>
    </ul>
  </div>
</template>
<script>
  export default {
    props: {
      ruleForm: {
        type: Object, default: {}
      },
      subData: {
        type: Object, default: () => {
          return {}
        }
      }
    },
    data () {
      return {
        dataList: {
          sxql: [],
          sxzt: []
        }
      }
    },
    watch: {
      dataList: {
        handler (newValue, oldValue) {
          this.$emit('updateValue', newValue)
        },
        deep: true
      },
      subData: {
        handler (newValue, oldValue) {
          if (!_.isEqual(newValue.sxql, this.dataList.sxql)) {
            this.dataList.sxql = _.cloneDeep(newValue.sxql)
          }
          if (!_.isEqual(newValue.sxzt, this.dataList.sxzt)) {
            this.dataList.sxzt = _.cloneDeep(newValue.sxzt)
          }
        },
        deep: true
      },
    },
    methods: {
      /**
       * @description: handleSelect
       * @param {*} item
       * @author: renchao
       */
      handleSelect (item) {
        if (item.checked) {
          item.selected = '0'
        }
      },
      /**
       * @description: handleSelectall
       * @author: renchao
       */
      handleSelectall () {
        this.dataList.sxql.forEach(item => {
          item.checked = true
        })
      },
      /**
       * @description: handleInvert
       * @author: renchao
       */
      handleInvert () {
        this.dataList.sxql.forEach(item => {
          item.checked = false
        })
      }
    }
  }
</script>
<style scoped lang='scss'>
  @import "~@/styles/mixin.scss";

  .dyztsd-title {
    @include flex;
    align-items: center;
    justify-content: space-between;
    padding-left: 20px;
  }

  .qlxx-list {
    @include flex;
    flex-wrap: wrap;
    padding-left: 20px;

    li {
      width: 33%;
      margin-bottom: 15px;
    }
  }

  .screen-list {
    @include flex;
    align-items: center;
    flex-wrap: wrap;
    border: 1px solid $borderColor;
    border-bottom: none;

    li {
      @include flex;
      align-items: center;
      width: 50%;
      line-height: 50px;
      border-bottom: 1px solid $borderColor;
      padding-left: 20px;
    }

    &-left {
      margin-right: 20px;
      width: 160px;
      white-space: nowrap;
    }

    li:nth-child(odd) {
      border-right: 1px solid $borderColor;
    }
  }
</style>