From 2baa58f9515a661d53118344e237e3441300b24f Mon Sep 17 00:00:00 2001 From: whychdw <49690745@qq.com> Date: 星期四, 03 六月 2021 17:03:40 +0800 Subject: [PATCH] 内容修改 --- src/components/smallModule/mwSwitch.vue | 124 +++++++++++++++++++++++------------------ 1 files changed, 69 insertions(+), 55 deletions(-) diff --git a/src/components/smallModule/mwSwitch.vue b/src/components/smallModule/mwSwitch.vue index f0f1c3e..44f7ddb 100644 --- a/src/components/smallModule/mwSwitch.vue +++ b/src/components/smallModule/mwSwitch.vue @@ -1,62 +1,74 @@ <template> - <div> - <span class="weui-switch" :class="{'weui-switch-on' : isChecked}" :value="value" @click="toggle" - style="position:relative"> - <div v-if="isChecked && direction.length > 0" style="width:100%;height:100%;position:absolute;padding:0 5px;display: flex; - align-items: center;color:#FFF;user-select:none"> - {{direction[0]}} - </div> - <div v-if="!isChecked && direction.length > 0" style="width:100%;height:100%;position:absolute;padding:0 5px;right:2px;display: flex;flex-direction: row-reverse; - align-items: center;color:#7A7A7A;user-select:none"> - {{direction[1]}} - </div> - </span> - </div> + <div> + <span + class="weui-switch" :class="{'weui-switch-on' : isChecked, 'switch-disabled': disabled}" + :value="value" @click="toggle" style="position:relative"> + <div v-if="isChecked && direction.length > 0" style="width:100%;height:100%;position:absolute;padding:0 5px;display: flex; + align-items: center;color:#FFF;user-select:none"> + {{ direction[0] }} + </div> + <div v-if="!isChecked && direction.length > 0" style="width:100%;height:100%;position:absolute;padding:0 5px;right:2px;display: flex;flex-direction: row-reverse; + align-items: center;color:#7A7A7A;user-select:none"> + {{ direction[1] }} + </div> + </span> + </div> </template> <script> - export default { +export default { name: 'switchComponent', + model: { + prop: "value", + event: 'changeValue' + }, props: { - value: { - type: Boolean, - default: true - }, - text: { - type: String, - default: '' - } + value: { + type: Boolean, + default: true + }, + text: { + type: String, + default: '' + }, + disabled: { + type: Boolean, + default: false + }, }, data() { - return { - isChecked: this.value - } + return { + isChecked: this.value + } }, computed: { - direction() { - if (this.text) { - return this.text.split('|') - } else { - return [] + direction() { + if (this.text) { + return this.text.split('|') + } else { + return [] + } } - } }, watch: { - value(val) { - this.isChecked = val - }, - isChecked(val) { - this.$emit('change', val); - } + value(val) { + this.isChecked = val + }, + isChecked(val) { + this.$emit('change', val); + } }, methods: { - toggle() { - this.isChecked = !this.isChecked; - } - } - } + toggle() { + if(!this.disabled) { + this.isChecked = !this.isChecked; + this.$emit('changeValue', this.isChecked); + } + } + }, +} </script> <style> - .weui-switch { +.weui-switch { display: block; position: relative; width: 72px; @@ -68,9 +80,11 @@ transition: background-color 0.1s, border 0.1s; cursor: pointer; font-size: 12px; - } - - .weui-switch:before { +} +.weui-switch.switch-disabled { + cursor: not-allowed; +} +.weui-switch:before { content: " "; position: absolute; top: 0; @@ -80,9 +94,9 @@ border-radius: 15px; background-color: #d7d7d7; transition: transform 0.35s cubic-bezier(0.45, 1, 0.4, 1); - } +} - .weui-switch:after { +.weui-switch:after { content: " "; position: absolute; top: 0; @@ -93,19 +107,19 @@ background-color: #FFFFFF; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4); transition: transform 0.35s cubic-bezier(0.4, 0.4, 0.25, 1.35); - } +} - .weui-switch-on { +.weui-switch-on { border-color: #6F6F6F; background-color: #1AAD19; - } +} - .weui-switch-on:before { +.weui-switch-on:before { border-color: #1AAD19; background-color: #409eff; - } +} - .weui-switch-on:after { +.weui-switch-on:after { transform: translateX(45px); - } +} </style> \ No newline at end of file -- Gitblit v1.9.1