From 17efddc6a667670dca682bf36b51a43e99615e6d Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期三, 16 十月 2024 15:59:38 +0800
Subject: [PATCH] 代码初始化

---
 admin/src/components/business/OperaDeviceRoleWindow.vue |  185 ++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 171 insertions(+), 14 deletions(-)

diff --git a/admin/src/components/business/OperaDeviceRoleWindow.vue b/admin/src/components/business/OperaDeviceRoleWindow.vue
index 76ddcfb..84844fb 100644
--- a/admin/src/components/business/OperaDeviceRoleWindow.vue
+++ b/admin/src/components/business/OperaDeviceRoleWindow.vue
@@ -2,32 +2,39 @@
     <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"
                     inactive-color="#ff4949"
-                    :active-value="1"
-                    :inactive-value="0">
+                    :active-value="0"
+                    :inactive-value="1">
                 </el-switch>
             </el-form-item>
             <el-form-item label="鎺堟潈闂ㄧ" prop="doorIds">
-                <el-radio-group v-model="form.doorIds">
-                    <el-radio :label="3">鍏ㄩ儴闂ㄧ</el-radio>
-                    <el-radio :label="6">閮ㄥ垎闂ㄧ</el-radio>
+                <el-radio-group v-model="form.radio" @input="changeRadio">
+                    <el-radio :label="0">鍏ㄩ儴闂ㄧ</el-radio>
+                    <el-radio :label="1">閮ㄥ垎闂ㄧ</el-radio>
                 </el-radio-group>
-                <el-checkbox-group v-model="form.doorIds">
-                    <el-checkbox label="闂ㄧA"></el-checkbox>
-                    <el-checkbox label="闂ㄧB"></el-checkbox>
-                    <el-checkbox label="闂ㄧC"></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>
@@ -36,21 +43,43 @@
 <script>
 import BaseOpera from '@/components/base/BaseOpera'
 import GlobalWindow from '@/components/common/GlobalWindow'
+import { getList } from '@/api/business/device'
 export default {
   name: 'OperaDeviceRoleWindow',
   extends: BaseOpera,
   components: { GlobalWindow },
   data () {
+    var validatePass = (rule, value, callback) => {
+      if (this.form.radio === 1) {
+        if (value.length === 0) {
+          callback(new Error('璇烽�夋嫨闂ㄧ璁惧'))
+        }
+      }
+      callback()
+    };
     return {
       // 琛ㄥ崟鏁版嵁
       form: {
         id: null,
         name: '',
-        isDefault: '',
-        doorIds: ''
+        isDefault: 1,
+        doorIds: [],
+        status: 1,
+        radio: 0
+      },
+      device: [],
+      filterMethod(query, item) {
+        if (!query) return item;
+        return item.label.indexOf(query) > -1 || item.area.indexOf(query) > -1;
       },
       // 楠岃瘉瑙勫垯
       rules: {
+        name: [
+          { required: true, message: '璇疯緭鍏ラ棬绂佺粍鍚嶇О' }
+        ],
+        doorIds: [
+          { validator: validatePass, trigger: 'blur' }
+        ]
       }
     }
   },
@@ -59,6 +88,134 @@
       api: '/business/deviceRole',
       'field.id': 'id'
     })
+  },
+  methods: {
+    confirm () {
+      this.$refs.form.validate((valid) => {
+        if (!valid) {
+          return
+        }
+        // 璋冪敤鏂板缓鎺ュ彛
+        this.isWorking = true
+        if (this.form.id == null || this.form.id === '') {
+          const doorNames = []
+          this.form.doorIds.forEach(item => {
+            this.device.forEach(row => {
+              if (item === row.id) {
+                doorNames.push(row.name)
+              }
+            })
+          })
+          this.api.create({
+            name: this.form.name,
+            status: this.form.status,
+            doorNames: doorNames.join(','),
+            type: 2,
+            isDefault: this.form.isDefault,
+            doorIds: this.form.doorIds.join(',')
+          })
+            .then(() => {
+              this.visible = false
+              this.$tip.apiSuccess('鏂板缓鎴愬姛')
+              this.$emit('success')
+            })
+            .catch(e => {
+              // this.$tip.apiFailed(e)
+            })
+            .finally(() => {
+              this.isWorking = false
+            })
+        } else {
+          const doorNames = []
+          this.form.doorIds.forEach(item => {
+            this.device.forEach(row => {
+              if (item === row.id) {
+                doorNames.push(row.name)
+              }
+            })
+          })
+          this.api.updateById({
+            id: this.form.id,
+            name: this.form.name,
+            status: this.form.status,
+            isDefault: this.form.isDefault,
+            type: 2,
+            doorNames: doorNames.join(','),
+            doorIds: this.form.doorIds.join(',')
+          })
+            .then(() => {
+              this.visible = false
+              this.$tip.apiSuccess('淇敼鎴愬姛')
+              this.$emit('success')
+            })
+            .catch(e => {
+              // this.$tip.apiFailed(e)
+            })
+            .finally(() => {
+              this.isWorking = false
+            })
+        }
+      })
+    },
+    // 鑾峰彇璁惧
+    getLists () {
+      getList({type:0, isdeleted:0 })
+        .then(res => {
+          this.device = res.map(item => {
+            return {
+              label: item.doorName,
+              area: item.regionPathName,
+              key: item.id
+            }
+          })
+          console.log(this.device)
+        })
+    },
+    changeRadio (e) {
+      this.form.doorIds = []
+    },
+    open (title, target) {
+      this.getLists()
+      this.title = title
+      this.visible = true
+      // 鏂板缓
+      if (target == null) {
+        this.$nextTick(() => {
+          this.$refs.form.resetFields()
+          this.form[this.configData['field.id']] = null
+        })
+        return
+      }
+      // 缂栬緫
+      this.$nextTick(() => {
+        for (const key in this.form) {
+          this.form[key] = target[key]
+        }
+      })
+    }
   }
 }
 </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>

--
Gitblit v1.9.3