From 6fa42e992669e6c1b5d4be14e83e1a730ec36c40 Mon Sep 17 00:00:00 2001 From: MrShi <1878285526@qq.com> Date: 星期五, 22 十二月 2023 09:11:23 +0800 Subject: [PATCH] Mr.Shi --- 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