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