From 22a00c47589ded6699a563690ee5545b73eaca01 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期五, 22 十二月 2023 09:30:08 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 admin/src/components/business/OperaDeviceRoleWindow.vue |  140 ++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 127 insertions(+), 13 deletions(-)

diff --git a/admin/src/components/business/OperaDeviceRoleWindow.vue b/admin/src/components/business/OperaDeviceRoleWindow.vue
index 76ddcfb..4910ac9 100644
--- a/admin/src/components/business/OperaDeviceRoleWindow.vue
+++ b/admin/src/components/business/OperaDeviceRoleWindow.vue
@@ -6,27 +6,25 @@
         @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 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-form-item>
         </el-form>
@@ -36,21 +34,39 @@
 <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: [],
       // 楠岃瘉瑙勫垯
       rules: {
+        name: [
+          { required: true, message: '璇疯緭鍏ラ棬绂佺粍鍚嶇О' }
+        ],
+        doorIds: [
+          { validator: validatePass, trigger: 'blur' }
+        ]
       }
     }
   },
@@ -59,6 +75,104 @@
       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({})
+        .then(res => {
+          this.device = res
+        })
+    },
+    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>

--
Gitblit v1.9.3