doum
3 天以前 bc09bc87234065abe7130b84c92f81f143f5f3e7
admin/src/components/business/OperaDeviceRoleWindow.vue
@@ -2,14 +2,15 @@
    <GlobalWindow
        :title="title"
        :visible.sync="visible"
        width="1000px"
        :confirm-working="isWorking"
        @confirm="confirm"
    >
        <el-form :model="form" ref="form" :rules="rules">
            <el-form-item label="门禁组名称" prop="name">
            <el-form-item label="门禁点分组名称" prop="name">
                <el-input v-model="form.name" placeholder="请输入名称" v-trim/>
            </el-form-item>
            <el-form-item label="默认门禁组" prop="isDefault">
            <el-form-item label="默认门禁点分组" prop="isDefault">
                <el-switch
                    v-model="form.isDefault"
                    active-color="#13ce66"
@@ -23,9 +24,17 @@
                    <el-radio :label="0">全部门禁</el-radio>
                    <el-radio :label="1">部分门禁</el-radio>
                </el-radio-group>
                <el-checkbox-group v-model="form.doorIds" v-if="form.radio === 1">
                    <el-checkbox :label="item.id" v-for="(item, index) in device" :key="index">{{item.name}}</el-checkbox>
                </el-checkbox-group>
                <el-transfer
                    v-if="form.radio === 1"
                    style="margin-top: 15px;"
                    :titles="['未选门禁点', '已选门禁点']"
                    filterable
                    :filter-method="filterMethod"
                    filter-placeholder="请输入门禁点或区域名称"
                    v-model="form.doorIds"
                    class="transfer"
                    :data="device">
                </el-transfer>
            </el-form-item>
        </el-form>
    </GlobalWindow>
@@ -47,7 +56,7 @@
        }
      }
      callback()
    }
    };
    return {
      // 表单数据
      form: {
@@ -59,6 +68,10 @@
        radio: 0
      },
      device: [],
      filterMethod(query, item) {
        if (!query) return item;
        return item.label.indexOf(query) > -1 || item.area.indexOf(query) > -1;
      },
      // 验证规则
      rules: {
        name: [
@@ -107,7 +120,7 @@
              this.$emit('success')
            })
            .catch(e => {
              this.$tip.apiFailed(e)
              // this.$tip.apiFailed(e)
            })
            .finally(() => {
              this.isWorking = false
@@ -136,7 +149,7 @@
              this.$emit('success')
            })
            .catch(e => {
              this.$tip.apiFailed(e)
              // this.$tip.apiFailed(e)
            })
            .finally(() => {
              this.isWorking = false
@@ -146,9 +159,16 @@
    },
    // 获取设备
    getLists () {
      getList({})
      getList({type:0, isdeleted:0 })
        .then(res => {
          this.device = res
          this.device = res.map(item => {
            return {
              label: item.doorName,
              area: item.regionPathName,
              key: item.id
            }
          })
          console.log(this.device)
        })
    },
    changeRadio (e) {
@@ -176,3 +196,26 @@
  }
}
</script>
<style lang="scss" scoped>
.transfer {
  height: 600px;
  width: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
  ::v-deep .el-transfer-panel {
    flex: 1;
    height: 100%;
  }
  ::v-deep .el-transfer-panel__body {
    height: 500px;
  }
  ::v-deep .el-transfer-panel__list.is-filterable {
    height: 480px;
  }
}
</style>