From 2e56105da84145350e9b6fe2925cee63d55283f6 Mon Sep 17 00:00:00 2001 From: ZZJ <zzjdsg2300@163.com> Date: 星期六, 09 十月 2021 10:40:36 +0800 Subject: [PATCH] zzjv2 --- src/pages/settings/views/NetSettings.vue | 683 +++++++++++++++++++++++++++++++++++++------------------- 1 files changed, 445 insertions(+), 238 deletions(-) diff --git a/src/pages/settings/views/NetSettings.vue b/src/pages/settings/views/NetSettings.vue index 5cc0c70..1aa1240 100644 --- a/src/pages/settings/views/NetSettings.vue +++ b/src/pages/settings/views/NetSettings.vue @@ -10,11 +10,11 @@ @click="openRight(i)" ref="leftbar" > - <div> + <div class="item-left"> <span class="icon iconfont">{{ item.icon }}</span> - <span class="text">{{ item.name }}</span> + <span class="text">{{ item.name }}</span> </div> - <span v-if="showStatus && i==2" class="status">宸茶繛鎺�</span> + <!-- <span v-if="showStatus && i == 2" class="status">宸茶繛鎺�</span> --> </div> </div> <div class="net-right"> @@ -25,9 +25,9 @@ :rules="rules" ref="joinForm" class="join-form" - label-width="150px" > - <el-form-item label="璁惧鍚嶇О" prop="deviceName"> + <el-form-item prop="deviceName"> + <div class="p-title">璁惧鍚嶇О</div> <el-input v-model="ruleForm.deviceName" size="small" @@ -35,7 +35,8 @@ ></el-input> </el-form-item> - <el-form-item label="绔彛" prop="port"> + <el-form-item prop="port"> + <div class="p-title">绔彛</div> <el-input v-model="ruleForm.port" placeholder="閫夊~锛屽閮ㄨ闂殑绔彛" @@ -43,10 +44,15 @@ ></el-input> </el-form-item> </el-form> - <div class="save-btn" @click="saveServerName">淇濆瓨</div> + <!-- <div class="save-btn" @click="saveServerName">淇濆瓨</div> --> + <div class="btns"> + <div class="ok" @click="saveServerName">淇濆瓨</div> + </div> </div> - <div class="wifi" v-if="activePage == 1 && !inWifiDetail"> + <div class="wifi-set" v-if="activePage == 1 && !inWifiDetail"> + <div class="title">鏃犵嚎缃戠粶</div> + <switchBar :barName="`鏃犵嚎缃戝崱`" @switchChange="wifiControl" @@ -55,167 +61,190 @@ <div class="wifi-option" v-for="(item, i) in wifiList" :key="i"> <div class="name"> - <span class="icon iconfont"></span> - <span>{{ item.name }}</span> + <span class="icon iconfont" v-if="item.isConnected" + ></span + > + <span + :style="!item.isConnected ? { 'margin-left': '24px' } : {}" + >{{ item.name }}</span + > </div> <div class="more-detail"> - <span class="icon iconfont"></span> - <span - class="icon iconfont" - style="margin-left: 10px; cursor: pointer" - @click="checkWifi(item)" + <span class="icon iconfont lock"></span> + <span class="icon iconfont signal"></span> + <span class="icon iconfont more-icon" @click="checkWifi(item)" ></span > </div> </div> </div> - <div class="wifi-detail" v-if="activePage == 2 && inWifiDetail"> + <div class="wifi-detail" v-if="activePage == 1 && inWifiDetail"> + <div class="title">鏃犵嚎缃戠粶</div> <div class="btns"> - <div class="left">鍒犻櫎</div> - <div class="right">鏂紑杩炴帴</div> + <div class="cancel">鍒犻櫎</div> + <div class="ok">鏂紑杩炴帴</div> </div> - <div class="title">閫氱敤</div> + <div class="general-box"> + <div class="in-title">閫氱敤</div> - <el-form - :model="wifiForm" - :rules="wifiFormRules" - ref="wifiForm" - class="join-form" - label-width="150px" - > - <el-form-item label="鍚嶇О" prop="name"> - <div class="wifi-name">{{ 12123 }}</div> - </el-form-item> + <el-form + :model="wifiForm" + :rules="wifiFormRules" + ref="wifiForm" + class="join-form" + > + <el-form-item prop="name"> + <div class="p-title">鍚嶇О</div> + <!-- <div class="wifi-name">{{ 12123 }}</div> --> + <el-input + v-model="wifiForm.name" + placeholder="" + size="small" + ></el-input> + </el-form-item> - <el-form-item label="瀵嗙爜" prop="password"> - <el-input - v-model="wifiForm.password" - placeholder="璇疯緭鍏ュ瘑鐮�" - size="small" - show-password - ></el-input> - </el-form-item> - </el-form> + <el-form-item prop="password"> + <div class="p-title">瀵嗙爜</div> + <el-input + v-model="wifiForm.password" + placeholder="璇疯緭鍏ュ瘑鐮�" + size="small" + show-password + ></el-input> + </el-form-item> + </el-form> + </div> <switchBar :barName="`楂樼骇璁剧疆`" @switchChange="highClassSetting" :value="isHighClass" ></switchBar> - <div class="title">IPV4</div> - <el-form - :model="ipv4Form" - :rules="ipv4FormRules" - ref="ipv4Form" - label-width="150px" - > - <el-form-item label="鏂规硶"> - <el-select v-model="value" placeholder="璇烽�夋嫨" size="small"> - <el-option - v-for="item in options" - :key="item.value" - :label="item.label" - :value="item.value" - ></el-option> - </el-select> - </el-form-item> - <el-form-item label="IP" prop="ip"> - <ip-input - :ip="ipv4Form.ip" - @on-blur="ipv4Form.ip = arguments[0]" - ></ip-input> - </el-form-item> - <el-form-item label="瀛愮綉鎺╃爜" prop="subMask"> - <ip-input - :ip="ipv4Form.subMask" - @on-blur="ipv4Form.subMask = arguments[0]" - ></ip-input> - </el-form-item> + <div class="general-box"> + <div class="in-title">IPV4</div> - <el-form-item label="缃戝叧" prop="gateway"> - <ip-input - :ip="ipv4Form.gateway" - @on-blur="ipv4Form.gateway = arguments[0]" - ></ip-input> - </el-form-item> - <el-form-item label="棣栭�塂NS" prop="dns"> - <ip-input - :ip="ipv4Form.dns1" - @on-blur="ipv4Form.dns1 = arguments[0]" - ></ip-input> - </el-form-item> - <el-form-item label="澶囩敤DNS" prop="dns"> - <ip-input - :ip="ipv4Form.dns2" - @on-blur="ipv4Form.dns2 = arguments[0]" - ></ip-input> - </el-form-item> - </el-form> + <el-form :model="ipv4Form" :rules="ipv4FormRules" ref="ipv4Form"> + <el-form-item> + <div class="p-title">鏂规硶</div> + <el-select v-model="value" placeholder="璇烽�夋嫨" size="small"> + <el-option + v-for="item in options" + :key="item.value" + :label="item.label" + :value="item.value" + ></el-option> + </el-select> + </el-form-item> + <el-form-item prop="ip"> + <div class="p-title">IP</div> + <ip-input + :ip="ipv4Form.ip" + @on-blur="ipv4Form.ip = arguments[0]" + ></ip-input> + </el-form-item> + <el-form-item prop="subMask"> + <div class="p-title">瀛愮綉鎺╃爜</div> + <ip-input + :ip="ipv4Form.subMask" + @on-blur="ipv4Form.subMask = arguments[0]" + ></ip-input> + </el-form-item> - <div class="title">IPV6</div> + <el-form-item prop="gateway"> + <div class="p-title">缃戝叧</div> + <ip-input + :ip="ipv4Form.gateway" + @on-blur="ipv4Form.gateway = arguments[0]" + ></ip-input> + </el-form-item> + <el-form-item prop="dns"> + <div class="p-title">棣栭�塂NS</div> + <ip-input + :ip="ipv4Form.dns1" + @on-blur="ipv4Form.dns1 = arguments[0]" + ></ip-input> + </el-form-item> + <el-form-item prop="dns"> + <div class="p-title">澶囩敤DNS</div> + <ip-input + :ip="ipv4Form.dns2" + @on-blur="ipv4Form.dns2 = arguments[0]" + ></ip-input> + </el-form-item> + </el-form> + </div> - <el-form - :model="ipv6Form" - :rules="ipv6FormRules" - ref="ipv4Form" - label-width="150px" - > - <el-form-item label="鏂规硶"> - <el-select v-model="value" placeholder="璇烽�夋嫨" size="small"> - <el-option - v-for="item in options" - :key="item.value" - :label="item.label" - :value="item.value" - ></el-option> - </el-select> - </el-form-item> - <el-form-item label="IP鍦板潃" prop="ip"> - <ip-input - :ip="ipv6Form.ip" - @on-blur="ipv6Form.ip = arguments[0]" - ></ip-input> - </el-form-item> - <el-form-item label="鍓嶇紑" prop="subMask"> - <div style="display: flex"> - <el-input - v-model="wifiForm.password" - placeholder - size="small" - ></el-input> + <div class="general-box"> + <div class="in-title">IPV6</div> - <div class="ad">-</div> - <div class="ad">+</div> - <div class="ad">閲嶇疆</div> - </div> - </el-form-item> + <el-form :model="ipv6Form" :rules="ipv6FormRules" ref="ipv4Form"> + <el-form-item> + <div class="p-title">鏂规硶</div> + <el-select v-model="value" placeholder="璇烽�夋嫨" size="small"> + <el-option + v-for="item in options" + :key="item.value" + :label="item.label" + :value="item.value" + ></el-option> + </el-select> + </el-form-item> + <el-form-item prop="ip"> + <div class="p-title">IP</div> + <ip-input + :ip="ipv6Form.ip" + @on-blur="ipv6Form.ip = arguments[0]" + ></ip-input> + </el-form-item> + <el-form-item prop="subMask"> + <div class="p-title">鍓嶇紑</div> + <div style="display: flex; width: 100%"> + <el-input + v-model="wifiForm.password" + placeholder + size="small" + ></el-input> - <el-form-item label="缃戝叧" prop="gateway"> - <ip-input - :ip="ipv6Form.gateway" - @on-blur="ipv6Form.gateway = arguments[0]" - ></ip-input> - </el-form-item> - <el-form-item label="棣栭�塂NS" prop="dns"> - <ip-input - :ip="ipv6Form.dns1" - @on-blur="ipv6Form.dns1 = arguments[0]" - ></ip-input> - </el-form-item> - <el-form-item label="澶囩敤DNS" prop="dns"> - <ip-input - :ip="ipv6Form.dns2" - @on-blur="ipv6Form.dns2 = arguments[0]" - ></ip-input> - </el-form-item> - </el-form> + <div class="ad"> + <i class="el-icon-remove-outline"></i> + </div> + <div class="ad"> + <i class="el-icon-circle-plus-outline"></i> + </div> + <div class="ad"><i class="el-icon-refresh-left"></i></div> + </div> + </el-form-item> + + <el-form-item prop="gateway"> + <div class="p-title">缃戝叧</div> + <ip-input + :ip="ipv6Form.gateway" + @on-blur="ipv6Form.gateway = arguments[0]" + ></ip-input> + </el-form-item> + <el-form-item prop="dns"> + <div class="p-title">棣栭�塂NS</div> + <ip-input + :ip="ipv6Form.dns1" + @on-blur="ipv6Form.dns1 = arguments[0]" + ></ip-input> + </el-form-item> + <el-form-item prop="dns"> + <div class="p-title">澶囩敤DNS</div> + <ip-input + :ip="ipv6Form.dns2" + @on-blur="ipv6Form.dns2 = arguments[0]" + ></ip-input> + </el-form-item> + </el-form> + </div> <div class="btns"> - <div class="left" @click="inWifiDetail = false">鍙栨秷</div> - <div class="right">淇濆瓨</div> + <div class="cancel" @click="inWifiDetail = false">鍙栨秷</div> + <div class="ok">淇濆瓨</div> </div> </div> @@ -230,53 +259,60 @@ <div class="name">{{ "缃戠粶" + item.index }}</div> <div class="right"> - <span class="icon iconfont good" v-if="item.lower_up&&item.active" + <span + class="icon iconfont good" + v-if="item.lower_up && item.active" ></span > - <span class="icon iconfont bad" v-if="!item.lower_up&&item.active"></span> + <span + class="icon iconfont bad" + v-if="!item.lower_up && item.active" + ></span + > <el-switch v-model="item.active" - active-color="rgba(61, 104, 225, 1)" + active-color="#4E94FF" @change="switchNetCard(item)" + :width="30" ></el-switch> </div> </div> - </div> <div class="wire-detail" v-if="activePage == 2 && inWireDetail"> <div class="title">缃戠粶璁剧疆</div> - <el-form - :model="wireForm" - :rules="wireFormRules" - ref="wireForm" - label-width="150px" - > - <el-form-item label="缃戠粶鍚嶇О" prop="name"> + <el-form :model="wireForm" :rules="wireFormRules" ref="wireForm"> + <el-form-item prop="name"> + <div class="p-title">缃戠粶鍚嶇О</div> <div class="wifi-name">{{ "缃戠粶" + activeWireItem.index }}</div> </el-form-item> - <el-form-item label="缃戝崱" prop="ifname"> + <el-form-item prop="ifname"> + <div class="p-title">缃戝崱</div> <div class="wifi-name">{{ activeWireItem.name }}</div> </el-form-item> - <el-form-item label="IP" prop="ip"> + <el-form-item prop="ip"> + <div class="p-title">IP</div> <ip-input :ip="wireForm.ip" @on-blur="wireForm.ip = arguments[0]" ></ip-input> </el-form-item> - <el-form-item label="瀛愮綉鎺╃爜" prop="subMask"> + <el-form-item prop="subMask"> + <div class="p-title">瀛愮綉鎺╃爜</div> <ip-input :ip="wireForm.subMask" @on-blur="wireForm.subMask = arguments[0]" ></ip-input> </el-form-item> - <el-form-item label="缃戝叧" prop="gateway"> + <el-form-item prop="gateway"> + <div class="p-title">缃戝叧</div> <ip-input :ip="wireForm.gateway" @on-blur="wireForm.gateway = arguments[0]" ></ip-input> </el-form-item> - <el-form-item label="DNS" prop="dns"> + <el-form-item prop="dns"> + <div class="p-title">DNS</div> <ip-input :ip="wireForm.dns" @on-blur="wireForm.dns = arguments[0]" @@ -305,7 +341,7 @@ upNetCard, } from "@/api/system"; -import ipInput from "@/components/subComponents/IPInput"; +import ipInput from "../components/IPInput"; import switchBar from "../components/switchBar"; export default { @@ -338,7 +374,10 @@ }, wireArr: [], inWifiDetail: false, - wifiList: [{ name: "鏃犵嚎缃戠粶1" }, { name: "鏃犵嚎缃戠粶2" }], + wifiList: [ + { name: "鏃犵嚎缃戠粶1", isConnected: false }, + { name: "鏃犵嚎缃戠粶2", isConnected: true }, + ], isOpenWifi: false, inWireDetail: false, wireForm: { @@ -359,12 +398,21 @@ ipv6Form: {}, ipv4FormRules: {}, tabList: [ - { name: "缃戠粶璁剧疆", icon: "\ue6ed" }, - { name: "鏃犵嚎缃戠粶", icon: "\ue991" }, - { name: "鏈夌嚎缃戠粶", icon: "\ue6dd" }, + { name: "缃戠粶璁剧疆", icon: "\ue6dd" }, + { name: "鏃犵嚎缃戠粶", icon: "\uea13" }, + { name: "鏈夌嚎缃戠粶", icon: "\ue73b" }, ], ipv6FormRules: {}, - options: [], + options: [ + { + value: "閫夐」1", + label: "鑷姩", + }, + { + value: "閫夐」2", + label: "鎵嬪姩", + }, + ], value: "", }; }, @@ -503,9 +551,9 @@ }, }, computed: { - showStatus(){ - return this.wireArr.some((item) => item.lower_up==true) - } + showStatus() { + return this.wireArr.some((item) => item.lower_up == true); + }, }, }; </script> @@ -518,6 +566,17 @@ font-size: 16px; margin-bottom: 10px; } + .ip-input-container { + max-width: none !important; + height: 32px; + line-height: normal; + box-sizing: border-box; + // background-color: #f2f2f7; + text-align: left; + border-radius: 20px; + border: 2px solid transparent; display: flex; + + } .btns { display: flex; justify-content: space-between; @@ -539,8 +598,10 @@ } } .net-set { + max-width: 600px; + margin: 0 auto; .title { - font-size: 16px; + font-size: 16px; margin-bottom: 10px; height: 30px; line-height: 30px; @@ -562,41 +623,44 @@ flex: 1; flex-basis: auto; box-sizing: border-box; + background-color: #fbfaff; .net-center { height: 100%; - width: 280px; + width: 300px; overflow: auto; box-sizing: border-box; flex-shrink: 0; padding: 10px; - border-right: 5px solid #f8f8f8; - + border-right: 4px solid #f2f2f7; + border-left: 4px solid #f2f2f7; .menu-item { - background-color: #f8f8f8; - height: 50px; - margin-bottom: 10px; + background: #f2f2f7; + height: 56px; + margin-bottom: 4px; border-radius: 8px; - line-height: 50px; + line-height: 56px; box-sizing: border-box; - font-size: 14px; cursor: pointer; + font-size: 14px; + cursor: pointer; padding: 0 20px; display: flex; justify-content: space-between; + .item-left { + display: flex; + align-items: center; + } .icon { margin-right: 8px; - font-size: 18px; + font-size: 23px; } .text { - font-size: 15px; + font-weight: bold; + font-size: 16px; } } .menu-item-active { background-color: var(--colorCard); - color: white; - } - .menu-item:hover { - background-color: var(--colorCard); - color: white; + color: #ffffff; } } .net-right { @@ -605,7 +669,14 @@ overflow: auto; box-sizing: border-box; position: relative; - padding: 20px 40px; + padding: 10px; + .title { + height: 48px; + font-size: 16px; + line-height: 48px; + color: #333333; + font-weight: bold; + } .el-form-item.is-required:not(.is-no-asterisk) > .el-form-item__label:before, .el-form-item.is-required:not(.is-no-asterisk) @@ -616,47 +687,172 @@ .el-select { width: 100%; } - .el-form-item__label{ - font-size: 15px; - } .el-form-item { - margin-bottom: 10px; - height: 54px; - padding: 6px 20px; - background: #f8f8f8; - box-sizing: border-box; - border-radius: 10px; - .el-form-item__label { - text-align: left; - line-height: 42px; - } + margin-bottom: 16px; } .el-form-item__content { - line-height: 40px; - position: relative; - .el-input--small { - font-size: 15px; -} + line-height: 48px; + display: flex; + align-items: center; + background: #f2f2f7; + border-radius: 8px; + padding: 0 15px 0 20px; + .el-input.is-active .el-input__inner, + .el-input__inner:focus { + border: 2px solid #409eff !important; + } + .el-select-dropdown__item { + color: #333333; + height: 32px; + font-size: 12px; + line-height: 32px; + text-align: center; + } + .el-popper { + margin-top: 0; + background: #fbfaff; + box-shadow: 0px 2px 6px rgb(0 0 0 / 18%); + border-radius: 2px; + .el-select-dropdown__item.hover, + .el-select-dropdown__item:hover { + background-color: #f2f2f7; + color: #4e94ff; + } + } + } + .el-form-item__error { + line-height: 0.7; + left: 20px; + } + .p-title { + height: 48px; + text-align: left; + line-height: 48px; + width: 90px; + font-weight: 600; + } + .el-form-item { + .el-input__inner { + background-color: #ffffff; + border: 2px solid transparent; + border-radius: 20px; + height: 32px; + padding: 0 15px; + font-size: 14px; + line-height: 32px; + + font-weight: bold; + } + .el-input__inner::placeholder { + color: #c0c4cc; + font-size: 12px; + font-weight: normal; + } + .el-select { + width: 100%; + } + .el-select .el-input .el-select__caret { + color: #333333; + font-size: 14px; + font-weight: 600; + } } .ip-input-container { max-width: none !important; } - .wifi { + .wifi-set { + max-width: 600px; + margin: 0 auto; + .switch-bar { + background: #f2f2f7; + padding: 0 20px; + } + .switch-bar .name { + font-size: 14px; + color: #333; + font-weight: bold; + } .wifi-option { - height: 50px; - background-color: #f8f8f8; + height: 48px; + line-height: 48px; display: flex; justify-content: space-between; align-items: center; box-sizing: border-box; padding: 0 20px; margin-bottom: 10px; + background: #f2f2f7; + border-radius: 8px; + .name { + font-size: 14px; + color: #333; + font-weight: bold; + .icon { + color: #4e94ff; + margin-right: 8px; + font-size: 16px; + } + } + .more-detail { + display: flex; + align-items: center; + .signal { + margin-right: 10px; + font-size: 20px; + } + .lock { + font-size: 20px; + margin-right: 10px; + } + .more-icon { + font-weight: bold; + cursor: pointer; + } + } } } .wifi-detail { + max-width: 600px; + margin: 0 auto; + .general-box { + background: #f2f2f7; + border-radius: 8px; + padding-bottom: 10px; + margin-bottom: 20px; + .el-form-item { + margin-bottom: 0px; + } + .in-title { + text-align: left; + padding: 14px 20px; + font-weight: bold; + font-size: 14px; + color: #333333; + } + .ip-input-container { + max-width: none !important; + height: 32px; + line-height: normal; + box-sizing: border-box; + // background-color: #f2f2f7; + text-align: left; + border-radius: 20px; + border: 2px solid transparent; + } + } + .switch-bar { + margin-bottom: 0; + } + .switch-bar .name { + font-size: 14px; + color: #4f4f4f; + font-weight: bold; + } .btns { + margin-top: 0; display: flex; justify-content: space-between; + margin-bottom: 20px; .left { background-color: rgba(240, 240, 240, 1); height: 40px; @@ -674,31 +870,31 @@ } } .wifi-name { - height: 40px; + height: 48px; background-color: #f0f0f0; text-align: left; box-sizing: border-box; - padding: 0 20px; + padding: 0 10px; + + line-height: 48px; } .ad { - min-width: 35px; - background-color: rgba(240, 240, 240, 1); - height: 35px; - margin: 4px 0px 4px 5px; - border-radius: 5px; - line-height: 35px; + height: 32px; + /* margin: 4px 0px 4px 5px; */ + /* border-radius: 5px; */ + line-height: 31px; + /* width: 27px; */ + text-align: center; + font-size: 17px; + /* font-weight: bold; */ + margin-left: 10px; + cursor: pointer; } } .wire { - .title { - line-height: 30px; - height: 30px; - font-size: 16px; - margin-bottom: 10px; - } .wire-bar { - height: 50px; - background-color: #f8f8f8; + height: 48px; + background-color: #f2f2f7; cursor: pointer; display: flex; justify-content: space-between; @@ -706,23 +902,46 @@ box-sizing: border-box; padding: 0 20px; margin-bottom: 10px; - border-radius: 10px; + border-radius: 8px; .name { font-size: 15px; + font-weight: bold; + font-size: 14px; + color: #333333; } .right { display: flex; align-items: center; + .el-switch__core { + height: 14px; + } + .el-switch.is-checked .el-switch__core::after { + left: 100%; + margin-left: -12px; + } + + .el-switch__core:after { + content: ""; + position: absolute; + top: 0px; + left: 1px; + border-radius: 100%; + -webkit-transition: all 0.3s; + transition: all 0.3s; + width: 12px; + height: 12px; + background-color: #fff; + } .icon { margin-right: 15px; } .good { - color: #3d68e1; - font-size: 18px; + color: #4e94ff; + font-size: 16px; } .bad { - color: rgb(243, 105, 54); - font-size: 18px; + color: #f44620; + font-size: 16px; } } } @@ -733,18 +952,6 @@ box-sizing: border-box; padding: 0 20px; } - } - .save-btn { - background-color: #3d68e1; - width: 240px; - height: 40px; - margin: 0 auto; - border-radius: 10px; - color: #fff; - line-height: 40px; - cursor: pointer; - font-size: 14px; - margin-top: 30px; } } } -- Gitblit v1.8.0