From 78ce920fa8a3f06cf40ee936b7b33c457206ecb6 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期三, 28 二月 2024 10:51:57 +0800
Subject: [PATCH] 整理
---
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