From d8944c4764c3fc4b7baf6b5c1586cf17c88b0bb1 Mon Sep 17 00:00:00 2001 From: zhangzengfei <zhangzengfei@smartai.com> Date: 星期三, 23 三月 2022 22:38:20 +0800 Subject: [PATCH] 修改ztree复选框默认为父子联动 --- src/pages/settings/index/index.vue | 2243 +++++++++++++++++++++++++++++++++++++++------------------- 1 files changed, 1,484 insertions(+), 759 deletions(-) diff --git a/src/pages/settings/index/index.vue b/src/pages/settings/index/index.vue index 0cad7cf..39e6106 100644 --- a/src/pages/settings/index/index.vue +++ b/src/pages/settings/index/index.vue @@ -3,22 +3,25 @@ <div class="container-left"> <div class="left-card" - :class="activeIndex == index ? 'left-card-active' : ''" - v-for="(item, index) in menuArr" - :key="index" - @click="openMenu(item.name, index)" + :class="activeIndex == i ? 'left-card-active' : ''" + v-for="(item, i) in menuArr" + :key="i" + @click="openMenu(i)" > - <span class="icon iconfont">{{ item.icon }}</span> + <img :src="item.blackIcon" class="b" alt="" /> + <img :src="item.whiteIcon" class="w" alt="" /> <span class="card-text">{{ item.name }}</span> </div> </div> - <div - class="container-center" - v-if="activeIndex == 0 || activeIndex == 1" - > + <div class="container-center" v-if="activeIndex == 0"> <div class="account-left" v-if="activeIndex == 0"> - <div class="account-list"> + <div + class="account-list" + :class="{ 'account-list-scroll': account_list_scroll }" + @mouseenter="account_list_scroll = true" + @mouseleave="account_list_scroll = false" + > <div class="account-card" :class="activeAccountIndex == index ? 'account-card-active' : ''" @@ -35,54 +38,24 @@ /> <span class="user-name">{{ item.username }}</span> </div> - <el-tag size="mini" v-if="item.id == curUserID">鎴戠殑</el-tag> + <div class="login-tag" v-if="item.id == curUserID"> + <span>褰撳墠鐧诲綍</span> + </div> </div> </div> <div class="add-account" v-if="curUserRole != '鏅�氱敤鎴�'"> - <!-- <span class="icon iconfont" @click="openAdd"></span> --> <i class="el-icon-circle-plus" - style="font-size: 38px" + style="font-size: 40px" @click="openAdd" ></i> - </div> - </div> - <div class="datetime-left" v-if="activeIndex == 1"> - <div class="time-card"> - <div class="head"> - <span class="icon iconfont"></span> - <span>璁惧鏃堕棿</span> - </div> - <div class="time-main">{{ equipmentTime }}</div> - <div class="date-bot"> - <span class="year">{{ equipmentDate }}</span> - <span class="week">{{ weekday }}</span> - </div> - </div> - <div class="line"> - <div class="name">NTP鏍℃椂</div> - <el-switch - v-model="isNtp" - @change="changeSwitch('isNtp')" - active-color="rgba(61, 104, 225, 1)" - > - </el-switch> - </div> - - <div class="line"> - <div class="name">鎵嬪姩鏍″</div> - <el-switch - v-model="isManual" - @change="changeSwitch('isManual')" - active-color="rgba(61, 104, 225, 1)" - > - </el-switch> </div> </div> </div> <div class="container-right" v-if="activeIndex == 0 || activeIndex == 1" + :class="activeIndex == 0 ? 'container-right-for-account' : ''" > <div class="account-right" v-if="activeIndex == 0"> <div @@ -93,7 +66,7 @@ <div class="touxiang-big" @mouseenter="showChangePic = true" - @mouseleave="onLeave" + @mouseleave="showChangePic = false" > <img v-if="activeAccountItem.headpic" @@ -101,31 +74,22 @@ alt="" /> <div class="touxiang-mask" v-show="showChangePic"> - <span - class="enable" - v-if="!showJPGArr" - @click="showJPGArr = true" - >淇敼澶村儚</span - > - <span - class="enable" - v-if="addForm.headpic" - @click="confirmChangePic" - >纭閫夋嫨</span - > - <span class="enable" v-if="showJPGArr" @click="cacelChoosePic"> - 鍙栨秷</span + <span class="enable" v-if="!showJPGArr" @click="editHeadPic" + >缂栬緫澶村儚</span > </div> </div> <div class="user-desc"> - <div class="username"> + <div class="user-name"> <span class="icon iconfont" - style="font-size: 18px; margin-right: 3px" - ></span + style="font-size: 19px; margin-right: 4px" + ></span > <span>{{ activeAccountItem.username }}</span> + </div> + <div class="user-role"> + {{ activeUserRole }} </div> <div class="nick-name"> <span class="nick-text">鏄电О锛�</span> @@ -139,26 +103,22 @@ ></el-input> <span v-show="!showInputNickName" - class="icon iconfont" + class="icon iconfont edit-icon" @click="editNickName" - ></span + ></span > <span v-show="showInputNickName" - class="icon iconfont" + class="icon iconfont clear-icon" @click="showInputNickName = false" - ></span + ></span > <span v-show="showInputNickName" - class="icon iconfont" - style="font-size: 21px; font-weight: 600; color: green" + class="icon iconfont confirm-icon" @click="hideInputNick" - ></span + ></span > - </div> - <div class="user-role"> - <el-tag type="info" size="mini">{{ activeUserRole }}</el-tag> </div> </div> </div> @@ -183,10 +143,16 @@ </div> </div> </div> + <div class="btns" v-if="showJPGArr"> + <div class="cancel" @click="cacelChoosePic">鍙栨秷</div> + <div class="ok" @click="confirmChangePic">淇濆瓨</div> + </div> <div class="list-btn" v-if="showJPGArr == false"> - <div class="item-btn" @click="showChangePassword">淇敼瀵嗙爜</div> + <div class="item-btn alt-pw-btn" @click="showChangePassword"> + 淇敼瀵嗙爜 + </div> <div - class="item-btn" + class="item-btn del-usr-btn" v-if="isShowDeleteAccount" @click="deleteAccount" > @@ -194,7 +160,7 @@ </div> <div v-if="isShowPermitBtn" - class="item-btn" + class="item-btn auth-set-btn" @click="openPermission" > 鏉冮檺璁剧疆 @@ -203,7 +169,10 @@ </div> <div class="change-pw" v-if="inAccountDetail && isChangePw"> - <div class="title">淇敼瀵嗙爜</div> + <div class="title"> + <span class="icon iconfont"></span> + <span>淇敼瀵嗙爜</span> + </div> <el-form :model="passwordForm" :rules="pwRules" @@ -214,7 +183,7 @@ prop="curPassword" v-if="activeAccountItem.id == curUserID" > - <div class="p-title">褰撳墠瀵嗙爜锛�</div> + <div class="p-title">褰撳墠瀵嗙爜</div> <el-input placeholder="蹇呭~" @@ -223,7 +192,7 @@ ></el-input> </el-form-item> <el-form-item prop="newPassword"> - <div class="p-title">鏂板瘑鐮侊細</div> + <div class="p-title">鏂板瘑鐮�</div> <el-input placeholder="蹇呭~" v-model="passwordForm.newPassword" @@ -231,7 +200,7 @@ ></el-input> </el-form-item> <el-form-item prop="confirmPassword"> - <div class="p-title">纭瀵嗙爜锛�</div> + <div class="p-title">纭瀵嗙爜</div> <el-input placeholder="蹇呭~" v-model="passwordForm.confirmPassword" @@ -247,33 +216,17 @@ <div class="permission" v-if="inAccountDetail && isSetPermission"> <div class="title">鏉冮檺绠$悊</div> - - <div class="line-wrap" v-for="item in sysMenus" :key="item.id"> - <div class="line"> - <div class="name">{{ item.name }}</div> - <el-switch - v-model="item.selected" - active-color="rgba(61, 104, 225, 1)" - @change="fatherChange(item)" - > - </el-switch> - </div> - <div v-if="item.children"> - <div - class="line" - style="margin-left: 55px" - v-for="x in item.children" - :key="x.id" - > - <div class="name">{{ x.name }}</div> - <el-switch - v-model="x.selected" - active-color="rgba(61, 104, 225, 1)" - @change="childrenChange(item)" - > - </el-switch> - </div> - </div> + <div class="tree-window"> + <el-tree + ref="treeMenus" + :data="sysMenus" + :props="props" + node-key="id" + :default-checked-keys="checkedArr" + show-checkbox + check-on-click-node + default-expand-all + ></el-tree> </div> <div class="btns"> <div class="cancel" @click="cancelSet">鍙栨秷</div> @@ -310,15 +263,19 @@ class="add-form" > <el-form-item prop="userName"> - <div class="p-title">鐢ㄦ埛鍚嶏細</div> + <div class="p-title">鐢ㄦ埛鍚�</div> <el-input - placeholder="蹇呭~锛岄暱搴︿负 2 ~ 10 浣嶅瓧绗︼紝涓嶈兘浠ユ暟瀛楀紑澶达紝涓嶅厑璁稿寘鍚眽瀛�" + placeholder="2~10 浣嶅瓧绗︼紝涓嶈兘浠ユ暟瀛楀紑澶达紝涓嶅彲鍖呭惈姹夊瓧" v-model="addForm.userName" ></el-input> </el-form-item> <el-form-item prop="roleId" v-if="curUserRole != '鏅�氱敤鎴�'"> - <div class="p-title">瑙掕壊锛�</div> - <el-select v-model="addForm.roleId" placeholder="璇烽�夋嫨瑙掕壊"> + <div class="p-title">瑙掕壊</div> + <el-select + v-model="addForm.roleId" + placeholder="璇烽�夋嫨瑙掕壊" + :popper-append-to-body="false" + > <el-option v-for="(item, i) in roleList" :key="i" @@ -328,14 +285,14 @@ </el-select> </el-form-item> <el-form-item prop="nickName"> - <div class="p-title">鏄电О锛�</div> + <div class="p-title">鏄电О</div> <el-input - placeholder="閫夊~锛岄暱搴︿负 2 ~ 10 浣嶅瓧绗�" + placeholder="閫夊~锛�2~10 浣嶅瓧绗�" v-model="addForm.nickName" ></el-input> </el-form-item> <el-form-item prop="password"> - <div class="p-title">瀵嗙爜锛�</div> + <div class="p-title">瀵嗙爜</div> <el-input placeholder="蹇呭~锛岃嚦灏戜负 6 浣�" v-model="addForm.password" @@ -343,7 +300,7 @@ ></el-input> </el-form-item> <el-form-item prop="confirmPassword"> - <div class="p-title">纭瀵嗙爜锛�</div> + <div class="p-title">纭瀵嗙爜</div> <el-input placeholder="蹇呭~" v-model="addForm.confirmPassword" @@ -360,211 +317,314 @@ </div> <div class="datetime-right" v-if="activeIndex == 1"> - <div class="ntp-time" v-if="isNtp"> - <el-form label-width="160px"> - <el-form-item label="鏈嶅姟鍣ㄥ湴鍧�"> - <!-- :disabled="syncType === '2'" --> - <ip-input - :ip="ntpServer" - @on-blur="ntpServer = arguments[0]" - ></ip-input> - </el-form-item> - - <el-form-item label="鏍℃椂鏃堕棿闂撮殧锛堝垎閽燂級"> - <div class="right"> - <el-input-number - v-model.number="timeInterval" - :min="1" - :max="60" - placeholder="璇疯緭鍏�" - size="small" - :controls="false" - ></el-input-number> - <el-button - type="text" - @click="testNTP" - :loading="ntpTestLoading" - >娴嬭瘯</el-button - > - </div> - </el-form-item> - </el-form> - </div> - - <div class="manual-time" v-if="isManual"> - <switchBar - :barName="`鍚屾鏈绠楁満鏃堕棿`" - @switchChange="syncBrowser" - :value="isSyncBrowser" - ></switchBar> - - <div class="clock-wrap"> - <div class="clock"> - <div class="hour"> - <div class="dnum" @click="showInput('Hour')"> - <span v-show="!showHourInput">{{ syncHour }}</span> - <input - class="input-box" - v-show="showHourInput" - ref="iptHour" - oninput="value=value.replace(/[^\d]/g,'');if(value.length>2)value=value.slice(0,2);if(+value>23)value='23'" - type="text" - v-model="inputHour" - @blur="hideInput('Hour')" - @keydown.enter="hideInput('Hour')" - /> - </div> - <div class="control"> - <span class="icon iconfont" @click="plusOne('hrs')" - ></span - > - <span class="icon iconfont fanzhuan" @click="minusOne('hrs')" - ></span - > - </div> - </div> - <div class="sep">:</div> - <div class="mins"> - <div class="dnum" @click="showInput('Min')"> - <span v-show="!showMinInput">{{ syncMin }}</span> - <input - class="input-box" - v-show="showMinInput" - ref="iptMin" - oninput="value=value.replace(/[^\d]/g,'');if(value.length>2)value=value.slice(0,2);if(+value>59)value='59'" - type="text" - v-model="inputMin" - @blur="hideInput('Min')" - @keydown.enter="hideInput('Min')" - /> - </div> - <div class="control"> - <span class="icon iconfont" @click="plusOne('min')" - ></span - > - <span class="icon iconfont fanzhuan" @click="minusOne('min')" - ></span - > - </div> - </div> - <div class="sep">:</div> - <div class="mins"> - <div class="dnum" @click="showInput('Sec')"> - <span v-show="!showSecInput">{{ syncSec }}</span> - <input - class="input-box" - v-show="showSecInput" - ref="iptSec" - oninput="value=value.replace(/[^\d]/g,'');if(value.length>2)value=value.slice(0,2);if(+value>59)value='59'" - type="text" - v-model="inputSec" - @blur="hideInput('Sec')" - @keydown.enter="hideInput('Sec')" - /> - </div> - <div class="control"> - <span class="icon iconfont" @click="plusOne('sec')" - ></span - > - <span class="icon iconfont fanzhuan" @click="minusOne('sec')" - ></span - > - </div> - </div> + <div class="datetime-left"> + <div class="device-time"> + <div class="title"> + <img src="/images/settings/榛戣壊涓�绾con/璁惧淇℃伅.png" alt="" /> + <span>璁惧鏃堕棿</span> + </div> + <div class="time-main">{{ equipmentTime }}</div> + <div class="date-bot"> + <span class="year">{{ equipmentDate }}</span> + <span class="week">{{ weekday }}</span> </div> </div> - <div class="adjust-bar"> - <div class="minus" @click="minusOne('yrs')">-</div> - <div class="middle" @click="showInput('Yrs')"> - <span v-show="!showYrsInput">{{ syncYrs }}</span> - <input - class="input-box" - v-show="showYrsInput" - ref="iptYrs" - oninput="value=value.replace(/[^\d]/g,'');if(value.length>4)value=value.slice(0,4);" - type="text" - v-model="inputYrs" - @blur="hideInput('Yrs')" - @keydown.enter="hideInput('Yrs')" - /> - 骞� - </div> - <div class="plus" @click="plusOne('yrs')">+</div> - </div> - <div class="adjust-bar"> - <div class="minus" @click="minusOne('mth')">-</div> - <div class="middle" @click="showInput('Month')"> - <span v-show="!showMonthInput">{{ syncMonth }}</span> - <input - class="input-box" - v-show="showMonthInput" - ref="iptMonth" - oninput="value=value.replace(/[^\d]/g,'');if(value.length>2)value=value.slice(0,2);if(+value>12)value='12'" - type="text" - v-model="inputMonth" - @blur="hideInput('Month')" - @keydown.enter="hideInput('Month')" - /> - 鏈� + <div class="adjust-zone"> + <div class="two-radio"> + <div + class="radio" + :class="isNtp ? '' : 'highlight-radio'" + @click="isNtp = false" + > + 鎵嬪姩鏍℃椂 + </div> + <div + class="radio" + :class="isNtp ? 'highlight-radio' : ''" + @click="isNtp = true" + > + NTP鏍℃椂 + </div> </div> - <div class="plus" @click="plusOne('mth')">+</div> - </div> - <div class="adjust-bar"> - <div class="minus" @click="minusOne('day')">-</div> - <div class="middle" @click="showInput('Day')"> - <span v-show="!showDayInput">{{ syncDay }}</span> - <input - class="input-box" - v-show="showDayInput" - ref="iptDay" - oninput="value=value.replace(/[^\d]/g,'');if(value.length>2)value=value.slice(0,2);if(+value>31)value='31'" - type="text" - v-model="inputDay" - @blur="hideInput('Day')" - @keydown.enter="hideInput('Day')" - /> - 鏃� - </div> - <div class="plus" @click="plusOne('day')">+</div> - </div> - </div> + <div class="mamal-wrap" v-if="isNtp == false"> + <div class="clock-wrap"> + <div class="clock"> + <div class="time-block"> + <div class="dnum" @click="showInput('Hour')"> + <span v-show="!showHourInput">{{ syncHour }}</span> + <input + class="input-box" + v-show="showHourInput" + ref="iptHour" + oninput="value=value.replace(/[^\d]/g,'');if(value.length>2)value=value.slice(0,2);if(+value>23)value='23'" + type="text" + v-model="inputHour" + @blur="hideInput('Hour')" + @keydown.enter="hideInput('Hour')" + /> + </div> + <div class="control"> + <span class="icon iconfont" @click="plusOne('hrs')" + ></span + > + <span + class="icon iconfont fanzhuan" + @click="minusOne('hrs')" + ></span + > + </div> + </div> + <div class="sep">:</div> + <div class="time-block"> + <div class="dnum" @click="showInput('Min')"> + <span v-show="!showMinInput">{{ syncMin }}</span> + <input + class="input-box" + v-show="showMinInput" + ref="iptMin" + oninput="value=value.replace(/[^\d]/g,'');if(value.length>2)value=value.slice(0,2);if(+value>59)value='59'" + type="text" + v-model="inputMin" + @blur="hideInput('Min')" + @keydown.enter="hideInput('Min')" + /> + </div> + <div class="control"> + <span class="icon iconfont" @click="plusOne('min')" + ></span + > + <span + class="icon iconfont fanzhuan" + @click="minusOne('min')" + ></span + > + </div> + </div> + <div class="sep">:</div> + <div class="time-block"> + <div class="dnum" @click="showInput('Sec')"> + <span v-show="!showSecInput">{{ syncSec }}</span> + <input + class="input-box" + v-show="showSecInput" + ref="iptSec" + oninput="value=value.replace(/[^\d]/g,'');if(value.length>2)value=value.slice(0,2);if(+value>59)value='59'" + type="text" + v-model="inputSec" + @blur="hideInput('Sec')" + @keydown.enter="hideInput('Sec')" + /> + </div> + <div class="control"> + <span class="icon iconfont" @click="plusOne('sec')" + ></span + > + <span + class="icon iconfont fanzhuan" + @click="minusOne('sec')" + ></span + > + </div> + </div> + </div> + </div> - <div class="btns"> - <div class="cancel" @click="cancelPassword">鍙栨秷</div> - <div class="ok" @click="submitClock">淇濆瓨</div> + <div class="date-adjust"> + <div class="adjust-bar"> + <div class="minus" @click="minusOne('yrs')"> + <i class="el-icon-remove-outline"></i> + </div> + <div class="middle" @click="showInput('Yrs')"> + <span v-show="!showYrsInput">{{ syncYrs }}</span> + <input + class="input-box" + v-show="showYrsInput" + ref="iptYrs" + oninput="value=value.replace(/[^\d]/g,'');if(value.length>4)value=value.slice(0,4);" + type="text" + v-model="inputYrs" + @blur="hideInput('Yrs')" + @keydown.enter="hideInput('Yrs')" + /> + <span>骞�</span> + </div> + <div class="plus" @click="plusOne('yrs')"> + <i class="el-icon-circle-plus-outline"></i> + </div> + </div> + <div class="adjust-bar"> + <div class="minus" @click="minusOne('mth')"> + <i class="el-icon-remove-outline"></i> + </div> + <div class="middle" @click="showInput('Month')"> + <span v-show="!showMonthInput">{{ syncMonth }}</span> + <input + class="input-box" + v-show="showMonthInput" + ref="iptMonth" + @input="checkMonthInput" + type="text" + v-model="inputMonth" + @blur="hideInput('Month')" + @keydown.enter="hideInput('Month')" + /> + <span>鏈�</span> + </div> + + <div class="plus" @click="plusOne('mth')"> + <i class="el-icon-circle-plus-outline"></i> + </div> + </div> + <div class="adjust-bar"> + <div class="minus" @click="minusOne('day')"> + <i class="el-icon-remove-outline"></i> + </div> + <div class="middle" @click="showInput('Day')"> + <span v-show="!showDayInput">{{ syncDay }}</span> + <input + class="input-box" + v-show="showDayInput" + ref="iptDay" + @input="checkDayInput" + type="text" + v-model="inputDay" + @blur="hideInput('Day')" + @keydown.enter="hideInput('Day')" + /> + <span>鏃�</span> + </div> + <div class="plus" @click="plusOne('day')"> + <i class="el-icon-circle-plus-outline"></i> + </div> + </div> + </div> + + <div class="manual-time"> + <switchBar + :barName="`鍚屾鏈绠楁満鏃堕棿`" + @switchChange="syncBrowser" + :value="isSyncBrowser" + ></switchBar> + </div> + </div> + + <div class="ntp-wrap" v-if="isNtp"> + <el-form> + <el-form-item label="鏈嶅姟鍣ㄥ湴鍧�"> + <ipInput + :ip="ntpServer" + @on-blur="ntpServer = arguments[0]" + ></ipInput> + </el-form-item> + + <el-form-item label="鏍℃椂鏃堕棿闂撮殧"> + <div class="right"> + <el-input-number + v-model.number="timeInterval" + :min="1" + :max="60" + placeholder="璇疯緭鍏�" + size="small" + :controls="false" + ></el-input-number> + + <span class="desc-min">鍒嗛挓</span> + <el-button + type="text" + @click="testNTP" + :loading="ntpTestLoading" + >娴嬭瘯</el-button + > + </div> + </el-form-item> + </el-form> + </div> + + <div class="btns"> + <div class="cancel" @click="cancelSetTime">鍙栨秷</div> + <div class="ok" @click="submitClock">淇濆瓨</div> + </div> + </div> </div> </div> </div> <clusterManagement v-if="activeIndex == 2" + ref="view_2" style="width: 100%" ></clusterManagement> <netSettings + ref="view_3" v-if="activeIndex == 3" style="width: 100%" ></netSettings> <keyboardLanguage + ref="view_4" v-if="activeIndex == 4" style="width: 100%" ></keyboardLanguage> <generalSettings + ref="view_5" v-if="activeIndex == 5" style="width: 100%" ></generalSettings> + <deviceInfo + v-if="activeIndex == 6" + style="width: 100%" + ref="view_6" + ></deviceInfo> + <Authorization v-if="activeIndex == 7" style="width: 100%" ref="view_7"> + </Authorization> </div> - <div class="welcome-page" v-else> + <div class="welcome-page" v-else ref="curPage" @mouseup="mouseDownIndex = ''"> <div - class="child" - @click="openWelcome(item, i)" - v-for="(item, i) in menuArr" - :key="i" + class="search-box" + :class="showRecomand ? 'border-change' : ''" + @click.stop > - <div class="child-info"> - <span class="icon iconfont welcome-icon">{{ item.icon }}</span> - <span class="welcome-title">{{ item.name }}</span> + <el-input + class="search-input" + placeholder="鏌ユ壘璁剧疆" + size="mini" + @focus="showRecomand = true" + clearable + @input="filterRecomand" + :suffix-icon="showRecomand && searchText.length ? '' : 'el-icon-search'" + v-model="searchText" + > + </el-input> + + <div class="search-res" v-if="showRecomand"> + <div + class="res-bar" + v-for="(item, index) in searchArrForShow" + :key="index" + @click="pickQuick(item.addr)" + > + {{ item.name }} + </div> + <div class="no-res-bar" v-if="searchArrForShow.length == 0"> + 娌℃湁鎵惧埌涓� {{ searchText }} 鐩稿叧鐨勭粨鏋� + </div> + </div> + <div class="dummy-end" v-if="showRecomand" style="height: 14px"></div> + </div> + <div class="nav-items"> + <div + class="nav-child" + @click="openWelcome(i)" + @mousedown="mouseDownIndex = i" + :class="mouseDownIndex === i ? 'nav-child-active' : ''" + v-for="(item, i) in menuArr" + :key="i" + > + <div class="child-info"> + <img :src="item.imgUrl" alt="" /> + <span class="welcome-title">{{ item.name }}</span> + </div> </div> </div> </div> @@ -573,7 +633,6 @@ <script> import { getClockInfo, saveClockInfo, testNTPserver } from "@/api/system"; import { - uploadHeadPic, addUser, getUsers, updateUser, @@ -585,12 +644,14 @@ getRoles, } from "@/api/user"; import switchBar from "../components/switchBar"; -import ipInput from "@/components/subComponents/IPInput"; +import ipInput from "../components/IPInput"; import clusterManagement from "../views/clusterManagement"; import netSettings from "../views/NetSettings"; +import deviceInfo from "../views/deviceInfo"; import keyboardLanguage from "../views/keyboardLanguage"; import generalSettings from "../views/generalSettings"; -import { pad0 } from "@/api/utils"; +import Authorization from "../views/Authorization"; +import { pad0, getUrlKey } from "@/api/utils"; export default { name: "settings", @@ -601,10 +662,11 @@ netSettings, keyboardLanguage, generalSettings, + deviceInfo, + Authorization, }, data() { var v2 = (rule, value, callback) => { - console.log("rule", rule); if (value === "") { callback(new Error("璇峰啀娆¤緭鍏ュ瘑鐮�")); } else if (value !== this.addForm.password) { @@ -614,7 +676,6 @@ } }; var v4 = (rule, value, callback) => { - console.log("rule", rule); if (value === "") { callback(new Error("璇峰啀娆¤緭鍏ュ瘑鐮�")); } else if (value !== this.passwordForm.newPassword) { @@ -638,7 +699,6 @@ } }; return { - showAccount: true, showChangePic: false, syncYrs: "", activeAccountItem: {}, @@ -646,16 +706,33 @@ syncHour: "", showWelcome: true, syncDay: "", + searchText: "", syncMin: "", syncSec: "00", isSyncBrowser: false, showDateTime: false, isAddAccount: false, - isCount: false, - isCalculate: false, browserTimer: null, timezone: "", - isRealtime: false, + showRecomand: false, + searchArr: [ + { name: "璐︽埛", addr: [0] }, + { name: "閫氱敤璁剧疆", addr: [5] }, + { name: "鏃堕棿褰曞儚鏃堕暱", addr: [5, 0] }, + { name: "浜嬩欢澹伴煶", addr: [5, 1] }, + { name: "涓�у寲璁剧疆", addr: [5, 2] }, + { name: "闆嗙兢绠$悊", addr: [2] }, + { name: "缃戠粶璁剧疆", addr: [3] }, + { name: "鏃犵嚎缃戠粶", addr: [3, 1] }, + { name: "鏈夌嚎缃戠粶", addr: [3, 2] }, + { name: "璁惧淇℃伅", addr: [6] }, + { name: "鏃ユ湡鏃堕棿", addr: [1] }, + { name: "NTP鏍℃椂", addr: [1, 0] }, + { name: "鎵嬪姩鏍℃椂", addr: [1, 1] }, + { name: "閿洏鍜岃瑷�", addr: [4] }, + { name: "绯荤粺璇█", addr: [4, 0] }, + { name: "閿洏绠$悊", addr: [4, 1] }, + ], inputNickName: "", showHourInput: false, showMinInput: false, @@ -664,16 +741,12 @@ showMonthInput: false, selectedPic: null, showDayInput: false, - loadedPic: "", - cameraInfo: false, - dependentScene: false, timestamp: 0, inAccountDetail: false, isChangePw: false, isSetPermission: false, timeInterval: 10, ntpServer: "", - syncType: "1", equipmentTime: "", equipmentDate: "", roleList: [], @@ -682,23 +755,72 @@ settime: "", weekday: "", menuArr: [ - { name: "璐︽埛", icon: "\ue6de" }, - { name: "鏃ユ湡鏃堕棿", icon: "\ue6ff" }, - { name: "闆嗙兢绠$悊", icon: "\ue6df" }, - { name: "缃戠粶璁剧疆", icon: "\ue6dd" }, - { name: "閿洏鍜岃瑷�", icon: "\ue6dc" }, - { name: "閫氱敤璁剧疆", icon: "\ue6db" }, + { + name: "璐︽埛", + icon: "\ue6de", + imgUrl: "/images/settings/璐︽埛-钃�.png", + blackIcon: "/images/settings/榛戣壊涓�绾con/璐︽埛.png", + whiteIcon: "/images/settings/鐧借壊涓�绾con/璐︽埛.png", + }, + { + name: "鏃ユ湡鏃堕棿", + icon: "\ue6ff", + imgUrl: "/images/settings/鏃堕棿鏃ユ湡.png", + blackIcon: "/images/settings/榛戣壊涓�绾con/鏃堕棿淇℃伅.png", + whiteIcon: "/images/settings/鐧借壊涓�绾con/鏃堕棿鏃ユ湡.png", + }, + { + name: "闆嗙兢绠$悊", + icon: "\ue6df", + imgUrl: "/images/settings/闆嗙兢绠$悊.png", + blackIcon: "/images/settings/榛戣壊涓�绾con/闆嗙兢绠$悊.png", + whiteIcon: "/images/settings/鐧借壊涓�绾con/闆嗙兢绠$悊.png", + }, + { + name: "缃戠粶璁剧疆", + icon: "\ue6dd", + imgUrl: "/images/settings/缃戠粶璁剧疆.png", + blackIcon: "/images/settings/榛戣壊涓�绾con/缃戠粶璁剧疆.png", + whiteIcon: "/images/settings/鐧借壊涓�绾con/缃戠粶璁剧疆.png", + }, + { + name: "閿洏鍜岃瑷�", + icon: "\ue6dc", + imgUrl: "/images/settings/閿洏鍜岃瑷�.png", + blackIcon: "/images/settings/榛戣壊涓�绾con/閿洏鍜岃瑷�.png", + whiteIcon: "/images/settings/鐧借壊涓�绾con/閿洏鍜岃瑷�.png", + }, + { + name: "閫氱敤璁剧疆", + icon: "\ue6db", + imgUrl: "/images/settings/閫氱敤璁剧疆.png", + blackIcon: "/images/settings/榛戣壊涓�绾con/閫氱敤璁剧疆.png", + whiteIcon: "/images/settings/鐧借壊涓�绾con/閫氱敤璁剧疆.png", + }, + { + name: "璁惧淇℃伅", + icon: "\ue756", + imgUrl: "/images/settings/璁惧淇℃伅.png", + blackIcon: "/images/settings/榛戣壊涓�绾con/璁惧淇℃伅.png", + whiteIcon: "/images/settings/鐧借壊涓�绾con/璁惧淇℃伅.png", + }, + { + name: "鎺堟潈绠$悊", + icon: "\ue7e9;", + imgUrl: "/images/settings/鎺堟潈绠$悊.png", + blackIcon: "/images/settings/榛戣壊涓�绾con/鎺堟潈绠$悊.png", + whiteIcon: "/images/settings/鐧借壊涓�绾con/鎺堟潈绠$悊.png", + }, ], accountArr: [], jpgArr: [], - isManual: false, - isNtp: true, - // activePage: "璐︽埛", + isNtp: false, activeIndex: 0, clockTimer: null, inputHour: "", inputMin: "", inputSec: "", + mouseDownIndex: "", inputYrs: "", showInputNickName: false, inputMonth: "", @@ -710,6 +832,7 @@ }, activeAccountIndex: 0, sysMenus: [], + checkedArr: [], addForm: { userName: "", nickName: "", @@ -717,6 +840,9 @@ headpic: "", confirmPassword: "", roleId: "", + }, + props: { + label: "name", }, addRules: { userName: [{ validator: v1, trigger: "blur" }], @@ -740,15 +866,44 @@ ], confirmPassword: [{ validator: v4, trigger: "blur" }], }, + account_list_scroll: false, }; + }, + created() { + let color = localStorage.getItem("--colorCard"); + if (color) { + document.documentElement.style.setProperty("--colorCard", `${color}`); + } }, beforeDestroy() { clearTimeout(this.clockTimer); clearInterval(this.browserTimer); }, mounted() { + // 杩斿洖鎸夐挳鍥炶皟 + window.addEventListener("message", (e) => { + if (e.data.msg === "杩斿洖绯荤粺璁剧疆") { + this.showWelcome = true; + } + }); + const menu = getUrlKey("menu"); + if (menu) { + this.showWelcome = false; + this.activeIndex = this.menuArr.findIndex((x) => x.name == menu); + this.$nextTick(() => { + this.$refs.view_3.openRight(2); + }); + } this.fetchUserList(); this.fetchDefHeadPic(); + const e = this.$refs.curPage; + if (e) { + e.addEventListener("click", () => { + if (this.showRecomand) { + this.showRecomand = false; + } + }); + } }, methods: { fetchDefHeadPic() { @@ -781,6 +936,24 @@ } }); }, + checkMonthInput() { + this.inputMonth = this.inputMonth.replace(/[^\d]/g, ""); + if (this.inputMonth.length > 2) + this.inputMonth = this.inputMonth.slice(0, 2); + if (+this.inputMonth > 12) { + this.inputMonth = "12"; + } + }, + checkDayInput() { + this.inputDay = this.inputDay.replace(/[^\d]/g, ""); + if (this.inputDay.length > 2) { + this.inputDay = this.inputDay.slice(0, 2); + } + const max = this.getMaxDayOfMonth(); + if (+this.inputDay > max) { + this.inputDay = max + ""; + } + }, editNickName() { this.showInputNickName = true; this.inputNickName = this.activeAccountItem.nickname; @@ -801,15 +974,17 @@ }); }, openAccount(item, i) { + this.showInputNickName = false; this.activeAccountItem = item; this.activeAccountIndex = i; + this.isChangePw = false; this.inAccountDetail = false; this.cancelSet(); - this.cancelAdd(); + this.inAccountDetail = false; + this.isAddAccount = false; + this.selectedPic = null; this.cacelChoosePic(); this.fetchMenu(); - this.cancelPassword(); - this.showInputNickName = false; }, minusOne(typ) { this.isSyncBrowser = false; @@ -848,23 +1023,23 @@ this.minusOne("yrs"); } this.syncMonth = pad0(+num); + if (+this.syncDay > this.getMaxDayOfMonth()) { + this.minusOne("day"); + } break; case "day": num = +this.syncDay - 1; if (num == 0) { - this.minusOne("mth"); - const maxDay = new Date( - +this.syncYrs, - +this.syncMonth, - 0 - ).getDate(); - num = maxDay; + num = this.getMaxDayOfMonth(); } this.syncDay = pad0(+num); break; default: break; } + }, + getMaxDayOfMonth() { + return new Date(+this.syncYrs, +this.syncMonth, 0).getDate(); }, fatherChange(item) { item.children.forEach((x) => { @@ -911,11 +1086,13 @@ num = 1; } this.syncMonth = pad0(+num); + if (+this.syncDay > this.getMaxDayOfMonth()) { + this.minusOne("day"); + } break; case "day": num = +this.syncDay + 1; - const maxDay = new Date(+this.syncYrs, +this.syncMonth, 0).getDate(); - if (num > maxDay) { + if (num > this.getMaxDayOfMonth()) { num = 1; } this.syncDay = pad0(+num); @@ -924,56 +1101,60 @@ break; } }, + editHeadPic() { + this.showJPGArr = true; + this.jpgArr.forEach((item, index) => { + if (this.activeAccountItem.headpic == item.path) { + this.selectedPic = index; + } + }); + }, submitClock() { - if (this.syncType === "1") { + if (this.isNtp) { if (this.ntpServer === "" || this.ntpServer === "...") { - this.$notify({ - type: "error", - message: "NTP 鏈嶅姟鍣ㄥ湴鍧�涓嶈兘涓虹┖", - }); + this.$notify.error("NTP 鏈嶅姟鍣ㄥ湴鍧�涓嶈兘涓虹┖"); return false; } else if (this.timeInterval === "") { this.timeInterval = 1; } } else if (this.isSyncBrowser) { if (this.settime === "") { - this.$notify({ - type: "error", - message: "璁剧疆鏃堕棿涓嶈兘涓虹┖", - }); + this.$notify.error("璁剧疆鏃堕棿涓嶈兘涓虹┖"); return false; } } else { this.settime = `${this.syncYrs}-${this.syncMonth}-${this.syncDay} ${this.syncHour}:${this.syncMin}:${this.syncSec}`; } + + const now = new Date().getTime(); + if (new Date(this.settime).getTime() > now) { + this.$message.warning( + "璁剧疆鐨勬椂闂翠笉鑳芥櫄浜庡綋鍓嶆椂闂�: " + this.formatTime(now, "Y-M-D h:m:s") + ); + return; + } saveClockInfo({ timeZone: this.timezone, - ntp: this.syncType === "1", + ntp: this.isNtp, ntpServer: this.ntpServer, interval: this.timeInterval, newTime: this.settime, - }).then((rsp) => { - if (rsp && rsp.success) { - this.$notify({ - type: "success", - message: "璁剧疆鎴愬姛", - }); + }).then( + (rsp) => { + if (rsp && rsp.success) { + this.$notify.success("璁剧疆鎴愬姛"); + } + this.initClockConf(); + }, + (err) => { + this.$notify.error("璁剧疆澶辫触 " + err.msg); } - this.initClockConf(); - }); - }, - flatGetArr(arr, res) { - for (const item of arr) { - if (item.selected) res.push(item.id); - if (item.children) this.flatGetArr(item.children, res); - } + ); }, saveAuth() { - let arr = []; - this.flatGetArr(this.sysMenus, arr); updataUser({ id: this.activeAccountItem.id, - menuIds: arr, + menuIds: this.$refs.treeMenus.getCheckedKeys(), }).then((res) => { if (res.success) { this.$message.success(res.msg); @@ -981,56 +1162,56 @@ } }); }, - formatTime(number, format) { + formatTime(timestamp, format) { + const formatNumber = (n) => { + n = n + ""; + return n[1] ? n : "0" + n; + }; var formateArr = ["Y", "M", "D", "h", "m", "s"]; var returnArr = []; - var date = new Date(number * 1000); + var date = new Date(timestamp); returnArr.push(date.getFullYear()); - returnArr.push(this.formatNumber(date.getMonth() + 1)); - returnArr.push(this.formatNumber(date.getDate())); - returnArr.push(this.formatNumber(date.getHours())); - returnArr.push(this.formatNumber(date.getMinutes())); - returnArr.push(this.formatNumber(date.getSeconds())); - this.weekday = "鏄熸湡" + "鏃ヤ竴浜屼笁鍥涗簲鍏�".charAt(date.getDay()); + returnArr.push(formatNumber(date.getMonth() + 1)); + returnArr.push(formatNumber(date.getDate())); + returnArr.push(formatNumber(date.getHours())); + returnArr.push(formatNumber(date.getMinutes())); + returnArr.push(formatNumber(date.getSeconds())); for (var i in returnArr) { format = format.replace(formateArr[i], returnArr[i]); } return format; - }, - formatNumber(n) { - n = n.toString(); - return n[1] ? n : "0" + n; }, initClockConf(ntpTest = false) { getClockInfo().then((rsp) => { if (rsp && rsp.success) { this.timezone = rsp.data.time_zone; if (!ntpTest) { - this.syncType = rsp.data.ntp ? "1" : "2"; this.isNtp = rsp.data.ntp; - this.isManual = !rsp.data.ntp; } if (rsp.data.ntp) { this.ntpServer = rsp.data.ntp_server; this.timeInterval = rsp.data.interval; } this.timestamp = rsp.data.local_time; + this.weekday = + "鏄熸湡" + + "鏃ヤ竴浜屼笁鍥涗簲鍏�".charAt(new Date(+this.timestamp * 1000).getDay()); if (this.clockTimer === null) { this.runClock(); - if (this.isManual) this.parseTime(); + if (!this.isNtp) this.parseTime(); } } }); }, - openMenu(name, i) { + openMenu(i) { this.activeIndex = i; if (this.activeIndex == 1) { this.initClockConf(); } }, - openWelcome(item, i) { + openWelcome(i) { this.showWelcome = false; - this.openMenu(item.name, i); + this.openMenu(i); }, showInput(typ) { this[`show${typ}Input`] = true; @@ -1044,12 +1225,17 @@ } this[`show${typ}Input`] = false; this[`input${typ}`] = ""; - }, - onLeave() { - if (this.showJPGArr) { - return; + if (typ == "Month") { + const max = this.getMaxDayOfMonth(); + if (+this.syncDay > max) { + this.syncDay = max + ""; + } } - this.showChangePic = false; + }, + cancelSetTime() { + this.parseTime(); + this.ntpServer = "..."; + this.timeInterval = 10; }, syncBrowser(enable) { this.isSyncBrowser = enable; @@ -1057,8 +1243,7 @@ clearInterval(this.browserTimer); } else { this.browserTimer = setInterval(() => { - let timestamp = new Date().getTime() / 1000; - this.settime = this.formatTime(timestamp, "Y-M-D h:m:s"); + this.settime = this.formatTime(new Date().getTime(), "Y-M-D h:m:s"); let [arr1, arr2] = this.settime.split(" "); [this.syncYrs, this.syncMonth, this.syncDay] = arr1.split("-"); [this.syncHour, this.syncMin, this.syncSec] = arr2.split(":"); @@ -1086,6 +1271,19 @@ this.isChangePw = false; this.inAccountDetail = false; this.$refs["passwordForm"].resetFields(); + }, + pickQuick(addr) { + if (addr.length == 1) { + this.openWelcome(addr[0]); + } else { + this.openWelcome(addr[0]); + this.$nextTick(() => { + if (addr[0] == 1) { + return; + } + this.$refs[`view_${addr[0]}`].openRight(addr[1]); + }); + } }, cacelChoosePic() { this.addForm.headpic = ""; @@ -1145,7 +1343,6 @@ } ); } else { - console.log("error submit!!"); return false; } }); @@ -1195,16 +1392,34 @@ this.inAccountDetail = true; }, runClock() { - const str = this.formatTime(++this.timestamp, "Y-M-D h:m:s"); + const str = this.formatTime(++this.timestamp * 1000, "Y-M-D h:m:s"); [this.equipmentDate, this.equipmentTime] = str.split(" "); + this.clockTimer = setTimeout(() => { this.runClock(); }, 1000); }, deleteAccount() { - this.$confirm("鎮ㄦ槸鍚︾‘璁ゅ垹闄よ处鎴凤紵", "鍒犻櫎璐︽埛", { + const h = this.$createElement; + this.$msgbox({ + title: "", + message: h( + "div", + { + style: + "display: flex; flex-direction: column; justify-content: center; align-items: center;", + }, + [ + h("span", { class: "icon iconfont warn-icon" }, "\ue71c"), + h("span", { class: "warn-title" }, "鍒犻櫎璐︽埛"), + h("span", { class: "warn-dec" }, "鎮ㄦ槸鍚︾‘璁ゅ垹闄よ处鎴凤紵"), + ] + ), + showCancelButton: true, + showClose: true, confirmButtonText: "纭畾", cancelButtonText: "鍙栨秷", + customClass: "del-account-message-box", }) .then(() => { let obj = { @@ -1213,10 +1428,7 @@ deleteUser(obj).then((res) => { if (res.success) { this.fetchUserList(); - this.$message({ - type: "success", - message: "鍒犻櫎鎴愬姛!", - }); + this.$message.success("鍒犻櫎鎴愬姛!"); } else { this.$message.error("鍒犻櫎澶辫触"); } @@ -1230,8 +1442,17 @@ }).then((res) => { if (res && res.success) { this.sysMenus = res.data; + let arr = []; + this.drawChecked(this.sysMenus, arr); + this.checkedArr = arr; } }); + }, + drawChecked(arr, res) { + for (const item of arr) { + if (item.selected && !item.children) res.push(item.id); + if (item.children) this.drawChecked(item.children, res); + } }, openPermission() { this.inAccountDetail = true; @@ -1241,26 +1462,21 @@ } }, parseTime() { - [this.syncYrs, this.syncMonth, this.syncDay] = this.equipmentDate.split( - "-" - ); - [this.syncHour, this.syncMin, this.syncSec] = this.equipmentTime.split( - ":" - ); - }, - changeSwitch(str) { - if (str == "isNtp") { - this.isManual = !this[str]; - } else { - this.isNtp = !this[str]; - } - this.syncType = this.isNtp ? "1" : "2"; - if (this.isManual) this.parseTime(); + [this.syncYrs, this.syncMonth, this.syncDay] = + this.equipmentDate.split("-"); + [this.syncHour, this.syncMin, this.syncSec] = + this.equipmentTime.split(":"); }, }, computed: { activeUserRole() { - return this.activeAccountItem.sysRoles[0].name; + if ( + this.activeAccountItem.sysRoles && + this.activeAccountItem.sysRoles.length + ) { + return this.activeAccountItem.sysRoles[0].name; + } + return "鏅�氱敤鎴�"; }, curUserRole() { const info = JSON.parse(sessionStorage.getItem("userInfo")); @@ -1272,28 +1488,48 @@ }, isShowDeleteAccount() { if (this.curUserRole == "瓒呯骇绠$悊鍛�") { - if (this.activeUserRole == "瓒呯骇绠$悊鍛�") { - return false; - } - return true; + return this.activeUserRole != "瓒呯骇绠$悊鍛�"; } else if (this.curUserRole == "绠$悊鍛�") { - if (this.activeUserRole == "鏅�氱敤鎴�") { - return true; - } - return false; + return this.activeUserRole == "鏅�氱敤鎴�"; } return false; }, - isShowPermitBtn(){ + isShowPermitBtn() { if (this.curUserRole == "绠$悊鍛�") { - if (this.activeUserRole == "鏅�氱敤鎴�") { - return true - } - return false - }else if (this.curUserRole == "鏅�氱敤鎴�"){ - return false + return this.activeUserRole == "鏅�氱敤鎴�"; + } else { + return this.curUserRole != "鏅�氱敤鎴�"; } - return true + }, + searchArrForShow() { + if (this.searchText == "") { + return this.searchArr; + } else { + return this.searchArr.filter((item) => { + return item.name.indexOf(this.searchText.toUpperCase()) > -1; + }); + } + }, + }, + watch: { + showWelcome(newVal) { + if (newVal) { + // 闅愯棌杩斿洖鎸夋寜閽� + window.parent.postMessage( + { + msg: "hiddenBack", + }, + "*" + ); + } else { + //鏄剧ず杩斿洖鎸夐挳 + window.parent.postMessage( + { + msg: "showBack", + }, + "*" + ); + } }, }, }; @@ -1302,44 +1538,177 @@ .welcome-page { width: 100%; height: 100%; - background-color: #f5f5f5; display: -ms-flexbox; - padding: 0 50px; + padding: 145px 32px 50px 32px; box-sizing: border-box; - .child { + background-color: rgba(255, 255, 255, 0.9); + backdrop-filter: blur(4px); + .border-change { + border-radius: 15px !important; + } + .search-box { + width: 332px; + z-index: 999; + position: fixed; + left: calc(50% - 166px); + top: 50px; + + border: 2px solid var(--colorCard); box-sizing: border-box; - background-color: white; - float: left; - width: 250px; - height: 200px; - margin: 50px 57px 30px 57px; - border-radius: 20px; - display: flex; - justify-content: center; - align-items: center; - cursor: pointer; - -moz-box-shadow: 2px 2px 4px rgb(226, 226, 226); - -webkit-box-shadow: 2px 2px 4px rgb(226, 226, 226); - box-shadow: 2px 2px 4px rgb(226, 226, 226); - .child-info { - display: flex; - flex-direction: column; - height: 62%; - justify-content: space-around; - .welcome-icon { - font-size: 72px; + backdrop-filter: blur(4px); + border-radius: 40px; + + .search-res { + background-color: rgba(255, 255, 255, 0.5); + } + .search-input { + font-size: 14px; + .el-input--mini .el-input__inner { + height: 36px; + line-height: 36px; } - .welcome-title { - font-size: 18px; + .el-input--suffix .el-input__inner { + padding-right: 40px; + } + .el-input__inner { + background-color: #fff; + background-image: none; + border-radius: 40px; + border: none; + box-sizing: border-box; + color: #606266; + display: inline-block; + font-size: 14px; + height: 36px; + line-height: 36px; + outline: 0; + padding: 0 20px; + -webkit-transition: border-color 0.2s + cubic-bezier(0.645, 0.045, 0.355, 1); + transition: border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1); + width: 100%; + font-weight: bold; + + &::-webkit-input-placeholder { + /* WebKit browsers */ + color: #828282; + font-weight: normal; + font-size: 14px; + } + &:-moz-placeholder { + /* Mozilla Firefox 4 to 18 */ + color: #828282; + font-weight: normal; + font-size: 14px; + } + &::-moz-placeholder { + /* Mozilla Firefox 19+ */ + color: #828282; + font-weight: normal; + font-size: 14px; + } + &:-ms-input-placeholder { + /* Internet Explorer 10+ */ + color: #828282; + font-weight: normal; + font-size: 14px; + } + } + .el-input__suffix { + display: flex; + align-items: center; + padding-right: 10px; + .el-input__suffix-inner { + border-color: none; + .el-icon-circle-close:before { + content: "\e79d" !important; + font-size: 17px; + } + .el-icon-search { + color: #2f2d3d; + font-weight: bold; + font-size: 17px; + } + } + } + } + .search-res { + max-height: 240px; + overflow: auto; + .res-bar { + height: 40px; + line-height: 40px; + text-align: left; + box-sizing: border-box; + padding: 0 20px; + color: #4f4f4f; + font-size: 14px; + cursor: pointer; + } + .no-res-bar { + height: 40px; + line-height: 40px; + text-align: left; + box-sizing: border-box; + padding: 0 20px; + color: #4f4f4f; + font-size: 14px; + } + .res-bar:hover { + background: #f5f5f6 10%; + font-weight: bold; + color: var(--colorCard); } } } - .child:hover { - -moz-box-shadow: 5px 5px 15px rgb(218, 218, 218); - -webkit-box-shadow: 5px 5px 15px rgb(218, 218, 218); - box-shadow: 5px 5px 15px rgb(218, 218, 218); - transform: translate3d(0, -3px, 0); - transition: all 0.4s; + .nav-items { + max-width: 960px; + margin: 0 auto; + .nav-child { + box-sizing: border-box; + background-color: rgba(251, 251, 255, 0.1); + backdrop-filter: blur(4px); + float: left; + width: 208px; + height: 190px; + margin: 0 15px; + margin-bottom: 30px; + border-radius: 15px; + display: flex; + justify-content: center; + align-items: center; + cursor: pointer; + border: 2px solid #f2f2f7; + + &-active { + border: 2px solid #4e94ff; + } + + &:hover { + background: #f2f2f7; + } + + .child-info { + display: flex; + flex-direction: column; + height: 100%; + .welcome-icon { + font-size: 72px; + } + img { + width: 64px; + margin: 0 auto; + margin-top: 61px; + height: 50px; + } + .welcome-title { + font-size: 16px; + font-weight: bold; + margin-top: 24px; + color: #4f4f4f; + } + } + } } } .container { @@ -1349,141 +1718,148 @@ flex: 1; flex-basis: auto; box-sizing: border-box; + background-color: #fff; + color: #4f4f4f; + border-top: 2px solid #e1e0e6; + overflow-x: hidden; .container-left { height: 100%; - width: 230px; + width: 244px; overflow: auto; box-sizing: border-box; flex-shrink: 0; padding: 10px; - border-right: 5px solid rgba(248, 248, 248, 1); box-sizing: border-box; .left-card { - height: 55px; + height: 56px; cursor: pointer; - border-radius: 12px; - margin-bottom: 10px; + border-radius: 8px; + margin-bottom: 4px; display: flex; align-items: center; - .iconfont { - margin-left: 25px; - margin-right: 10px; - font-size: 24px; - } + padding: 0 20px; + .card-text { + margin-left: 20px; + color: #4f4f4f; + font-weight: bold; font-size: 16px; + line-height: 22px; + height: 22px; + } + img { + height: 30px; + width: 30px; + } + .w { + display: none; + } + .b { + display: block; } } .left-card-active { - background-color: rgba(61, 104, 225, 1); - color: #fff; + background-color: var(--colorCard) !important; + .card-text { + color: #fff !important; + } + .b { + display: none; + } + .w { + display: block; + } } .left-card:hover { - background-color: rgba(61, 104, 225, 1); - color: #fff; + background-color: #f2f2f7; } } .container-center { height: 100%; - width: 280px; + width: 300px; overflow: auto; flex-shrink: 0; padding: 10px; - border-right: 5px solid rgba(248, 248, 248, 1); + padding-top: 6px; + padding-right: 5px; + border-top: 4px solid #f2f2f7; + border-left: 4px solid #f2f2f7; box-sizing: border-box; + background-color: #fbfaff; .account-left { height: 100%; .account-list { height: calc(85%); overflow: auto; + padding-right: 5px; + &::-webkit-scrollbar-track, + &::-webkit-scrollbar-thumb { + visibility: hidden; + } + &::-webkit-scrollbar { + background-color: #fff; + } + + &.account-list-scroll::-webkit-scrollbar-thumb, + &.account-list-scroll::-webkit-scrollbar-track { + visibility: visible; + } + &.account-list-scroll::-webkit-scrollbar { + background-color: #f5f5f5; + } } .add-account { - color: rgba(61, 104, 225, 1); - margin-top: 15px; + color: var(--colorCard); + margin-top: 30px; .el-icon-circle-plus { cursor: pointer; font-size: 38px; } } .account-card { - height: 50px; - background-color: rgba(248, 248, 248, 1); - margin-bottom: 10px; + height: 60px; + background-color: #f2f2f7; + margin-bottom: 4px; display: flex; align-items: center; - padding: 0 20px; + padding: 0 5px 0 20px; + box-sizing: border-box; - border-radius: 10px; + border-radius: 8px; cursor: pointer; justify-content: space-between; - .touxiang { display: flex; align-items: center; img { border: none; - - height: 35px; - width: 35px; - border-radius: 17.5px; + height: 44px; + width: 44px; + border-radius: 50%; + } + } + .login-tag { + width: 72px; + height: 19.21px; + background: #ffffff; + border-radius: 20px; + color: #4f4f4f; + transform: scale(0.833333); + line-height: 22.21px; + span { + font-size: 13px; } } .user-name { - margin-left: 10px; + margin-left: 20px; font-size: 14px; + font-weight: bold; } } .account-card-active { - background-color: rgba(61, 104, 225, 1); + background-color: var(--colorCard); color: #fff; - } - } - .datetime-left { - .time-card { - height: 105px; - background-color: rgba(248, 248, 248, 1); - margin-bottom: 30px; - border-radius: 10px; - .head { - height: 30px; - line-height: 30px; - text-align: left; - box-sizing: border-box; - padding: 0 10px; - font-size: 14px; - .icon { - margin-right: 5px; - color: rgba(61, 104, 225, 1); - } - } - .time-main { - height: 42px; - line-height: 42px; - font-family: Consolas; - font-size: 36px; - } - .date-bot { - height: 25px; - font-size: 14px; - line-height: 25px; - color: #868686; - display: flex; - justify-content: space-evenly; - } - } - .line { - display: flex; - align-items: center; - height: 50px; - padding: 0 25px; - background-color: rgba(248, 248, 248, 1); - justify-content: space-between; - border-radius: 12px; - margin-bottom: 10px; - .name { - font-size: 14px; - } } } } @@ -1493,22 +1869,25 @@ overflow: auto; box-sizing: border-box; position: relative; - padding: 20px 40px; + padding: 30px 40px; + background: #f2f2f7; + border-left: 4px solid #f2f2f7; + border-top: 4px solid #f2f2f7; .account-right { + height: 100%; .account-content { + margin-top: 40px; .content-top { - height: 120px; - width: 350px; margin: 0 auto; display: flex; + flex-direction: column; align-items: center; - justify-content: center; - margin-bottom: 20px; .touxiang-big { width: 100px; height: 100px; position: relative; border-radius: 50px; + margin-bottom: 20px; img { border: none; width: 100px; @@ -1536,10 +1915,9 @@ border-radius: 3px; border: 1px solid transparent; font-size: 14px; + font-weight: bold; } .enable:hover { - color: orangered; - font-size: 15px; transition: all 0.2s; } .selected { @@ -1551,83 +1929,193 @@ height: 100px; display: flex; flex-direction: column; - align-items: baseline; + align-items: center; + color: #4f4f4f; min-width: 200px; - .username { - margin: 0 15px; + .user-name { + margin-bottom: 10px; height: 28px; line-height: 28px; text-align: left; - font-size: 16px; display: flex; align-items: center; + font-weight: bold; + font-size: 16px; } .nick-name { margin: 5px 15px; font-size: 14px; display: flex; + font-weight: bold; height: 30px; align-items: center; .nick-text { width: fit-content; text-align: left; } - + .edit-icon { + font-size: 13px; + margin-left: 10px; + } + .confirm-icon { + color: var(--colorCard); + font-size: 18px; + margin-left: 10px; + } + .clear-icon { + margin-left: 10px; + font-size: 18px; + } .iconfont { - font-size: 14px; - margin-left: 5px; cursor: pointer; + font-weight: normal; } .el-input--mini { - font-size: 14px; - width: 83px; + width: 82px; .el-input__inner { - padding: 0 5px; + padding: 0 8px; + height: 20px; + line-height: 20px; + /* border: 1px solid; */ + border: 1px solid var(--colorCard); + border-radius: 20px; + background: #f2f2f7; } } } .user-role { - margin: 5px 0 0 15px; - font-size: 14px; - color: skyblue; + width: 75px; + height: 18px; + border: 1px solid #333333; + box-sizing: border-box; + border-radius: 20px; + font-weight: bold; + font-size: 12px; + margin-bottom: 20px; } } + } + .chang-pic-arr { + margin-top: 40px; } .list-btn { display: flex; flex-direction: column; align-items: center; - .item-btn { - width: 500px; - height: 45px; - background-color: #f0f0f0; - margin-bottom: 15px; - border-radius: 10px; - line-height: 45px; - font-size: 15px; - cursor: pointer; + margin-top: 80px; + .alt-pw-btn { + background: rgba(78, 148, 255, 0.1); + border: 1px solid var(--colorCard); } - .item-btn:hover { - color: rgba(255, 153, 102, 1); + .del-usr-btn { + background: #e0e0e0; + color: #fc4958; + } + .auth-set-btn { + background: var(--colorCard); + color: #ffffff; + } + .item-btn { + width: 212px; + height: 40px; + margin-bottom: 15px; + line-height: 40px; + border-radius: 25px; + font-size: 16px; + font-weight: bold; + cursor: pointer; } } } - .title { - height: 30px; - line-height: 30px; - margin-bottom: 10px; - font-size: 16px; - font-weight: 600; - } + .change-pw { + padding: 40px 10px; + max-width: 600px; + margin: 0 auto; + .title { + font-weight: bold; + font-size: 16px; + line-height: 22px; + color: #4f4f4f; + margin-bottom: 40px; + height: 28px; + display: flex; + align-items: center; + justify-content: center; + .icon { + font-size: 28px; + font-weight: normal; + margin-right: 10px; + } + } + .el-form-item__content { + line-height: 48px; + display: flex; + align-items: center; + background: #f2f2f7; + border-radius: 8px; + padding: 0 15px 0 20px; + .el-select-dropdown__item { + color: #4f4f4f; + 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: var(--colorCard); + } + } + } + .el-form-item__error { + line-height: 0.7; + left: 20px; + } + .el-form-item { + .el-input__inner { + background-color: #ffffff; + border: 2px solid transparent; + border-radius: 20px; + height: 32px; + line-height: 32px; + padding: 0 15px; + font-size: 14px; + font-weight: bold; + } + .el-input__inner:focus { + border: 2px solid var(--colorCard); + } + .el-input__inner::placeholder { + color: #c0c4cc; + font-size: 12px; + font-weight: normal; + } + .el-select { + width: 100%; + } + .el-select .el-input .el-select__caret { + color: #4f4f4f; + font-size: 14px; + font-weight: 600; + } + } .p-title { + height: 48px; text-align: left; - font-size: 15px; - margin-top: 5px; + line-height: 48px; + width: 90px; + font-weight: 600; } } .el-form-item { - margin-bottom: 0; + margin-bottom: 15px; .el-input__inner { background-color: rgba(240, 240, 240, 1); border: none; @@ -1637,9 +2125,9 @@ font-size: 15px; } .el-input__clear { - color: dimgray; - font-size: 17px; - line-height: 45px; + color: #4f4f4f; + font-size: 16px; + line-height: 48px; } .el-input__suffix { right: 1px; @@ -1649,86 +2137,444 @@ } } .permission { - .line { - display: flex; - align-items: center; - height: 50px; - padding: 0 25px; - background-color: rgba(248, 248, 248, 1); - justify-content: space-between; - border-radius: 12px; - margin-bottom: 10px; - .name { - font-size: 14px; + height: 100%; + + .title { + height: 22px; + line-height: 48px; + font-size: 16px; + font-weight: 600; + color: #4f4f4f; + height: 48px; + background: #fbfaff; + border-bottom: 2px solid #f2f2f7; + } + .tree-window { + padding: 10px 15px; + height: calc(100% - 155px); + border-bottom: 2px solid #f2f2f7; + .el-tree { + background: initial; + color: #333; + height: 100%; + overflow: auto; + max-width: 600px; + margin: 0 auto; + .el-tree-node { + background: initial; + .el-tree-node__content { + height: 30px; + background: #f2f2f7; + margin-bottom: 4px; + border-radius: 4px; + box-sizing: border-box; + border: 2px solid transparent; + .el-tree-node__content > .el-tree-node__expand-icon { + padding: 6px 18px; + font-size: 16px; + } + .el-checkbox__input.is-checked .el-checkbox__inner, + .el-checkbox__input.is-indeterminate .el-checkbox__inner { + background-color: var(--colorCard); + border-color: var(--colorCard); + } + .el-checkbox__inner { + border-radius: 1px; + border: 1px solid var(--colorCard); + } + .el-tree-node__label { + font-size: 13px; + font-weight: 600; + } + } + .el-tree-node__content:hover { + border: 2px solid var(--colorCard); + } + } } + } + .btns { + margin-top: 19px; } } .upload-group { - height: 120px; - width: 360px; + width: 340px; + margin: 0 auto; overflow: hidden; .upload-jpg { position: relative; - height: 48px; - width: 48px; + height: 44px; + width: 44px; float: left; margin: 0 10px; - margin-bottom: 10px; + margin-bottom: 20px; background-color: rgba(242, 242, 242, 1); border: 2px solid transparent; border-radius: 50%; cursor: pointer; img { - height: 48px; - width: 48px; + height: 44px; + width: 44px; border-radius: 50%; } .img-mask { position: absolute; left: 0; top: 0; - height: 48px; - width: 48px; + height: 44px; + width: 44px; background-color: rgba(0, 0, 0, 0.3); color: white; border-radius: 50%; display: flex; justify-content: center; align-items: center; + .icon { + font-size: 20px; + } .selected { font-size: 22px; } } } .upload-jpg-border { - border: 2px solid cornflowerblue; + border: 2px solid var(--colorCard); } } .add-account-page { + margin-top: 20px; + padding: 0 10px; + .title { + height: 22px; + margin-bottom: 20px; + font-weight: bold; + font-size: 16px; + line-height: 22px; + } .fill-group { + max-width: 450px; + margin-top: 10px; + + margin: 0 auto; .el-form-item__content { - line-height: 44px; + line-height: 48px; + display: flex; + align-items: center; + background: #f2f2f7; + border-radius: 8px; + padding: 0 15px 0 20px; + .el-select-dropdown__item { + color: #4f4f4f; + 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: var(--colorCard); + } + } } .p-title { - height: 34px; + height: 48px; text-align: left; - line-height: 50px; + line-height: 48px; + width: 90px; + font-weight: 600; } .el-form-item__error { - line-height: 0.8; - left: 3.3%; + line-height: 0.7; + left: 20px; } .el-form-item { + .el-input__inner { + background-color: #ffffff; + border: 2px solid transparent; + border-radius: 20px; + height: 32px; + line-height: 32px; + padding: 0 15px; + font-size: 14px; + font-weight: bold; + } + .el-input__inner:focus { + border: 2px solid var(--colorCard); + } + .el-input__inner::placeholder { + color: #c0c4cc; + font-size: 12px; + font-weight: normal; + } .el-select { width: 100%; + } + .el-select .el-input .el-select__caret { + color: #4f4f4f; + font-size: 14px; + font-weight: 600; } } } } } .datetime-right { + .datetime-left { + .device-time { + color: #4f4f4f; + .title { + display: flex; + justify-content: center; + align-items: center; + font-size: 16px; + line-height: 28px; + font-weight: bold; + margin-bottom: 22px; + img { + margin-right: 10px; + height: 28px; + width: 28px; + } + } + .time-main { + height: 50px; + line-height: 50px; + font-family: Consolas; + font-size: 40px; + + font-weight: bold; + letter-spacing: 2px; + } + .date-bot { + height: 20px; + letter-spacing: 0.5px; + display: flex; + justify-content: center; + font-weight: bold; + font-size: 14px; + line-height: 20px; + margin-top: 8px; + .year { + margin-right: 10px; + } + } + } + .adjust-zone { + margin-top: 40px; + background: linear-gradient( + 96.76deg, + rgba(234, 253, 255, 0.1) 0%, + rgba(200, 249, 255, 0.35) 29.69%, + rgba(244, 238, 255, 0.5) 68.75%, + rgba(201, 249, 255, 0.5) 100% + ); + height: 370px; + box-sizing: border-box; + padding: 29px; + .two-radio { + width: 180px; + height: 28px; + background: #ffffff; + border-radius: 20px; + display: flex; + margin: 0 auto; + .radio { + width: 90px; + height: 28px; + line-height: 28px; + border-radius: 20px; + display: flex; + justify-content: center; + font-weight: bold; + font-size: 14px; + cursor: pointer; + letter-spacing: 0.5px; + } + .highlight-radio { + background: var(--colorCard); + color: #ffffff; + } + } + .clock-wrap { + display: flex; + margin: 30px auto; + justify-content: center; + align-items: center; + .clock { + display: flex; + align-items: center; + justify-content: space-evenly; + .iconfont { + cursor: pointer; + color: rgba(134, 134, 134, 1); + } + .iconfont:hover { + background-color: gainsboro; + } + .time-block { + background-color: #fff; + display: flex; + align-items: center; + width: 100px; + height: 50px; + justify-content: space-evenly; + border-radius: 10px; + } + .dnum { + width: 40px; + height: 40px; + line-height: 40px; + font-size: 34px; + font-family: Consolas; + display: flex; + align-items: center; + .input-box { + width: inherit; + border: none; + border-radius: 5px; + height: 35px; + font-size: 28px; + text-align: center; + } + + .input-box:focus { + outline: none; + } + } + .control { + width: 20px; + .fanzhuan { + display: inline-block; + -moz-transform: scaleY(-1); + -webkit-transform: scaleY(-1); + -o-transform: scaleY(-1); + transform: scaleY(-1); + } + } + .sep { + font-family: Consolas; + width: 40px; + font-size: 34px; + height: 40px; + line-height: 40px; + } + } + } + .date-adjust { + width: 580px; + margin: 0 auto; + height: 40px; + background: #ffffff; + border-radius: 20px; + display: flex; + justify-content: space-evenly; + justify-content: space-around; + padding: 0px 15px; + box-sizing: border-box; + .adjust-bar { + display: flex; + justify-content: space-between; + align-items: center; + line-height: 40px; + width: 90px; + .middle { + font-weight: 600; + font-size: 14px; + width: 70px; + } + .input-box { + width: 38px; + border: none; + border-radius: 2px; + height: 25px; + text-align: center; + background-color: #f2f2f7; + } + + .input-box:focus { + outline: none; + } + .minus { + font-size: 14px; + cursor: pointer; + line-height: 40px; + color: #000000; + width: 25px; + cursor: pointer; + } + .plus { + font-size: 14px; + cursor: pointer; + line-height: 40px; + color: #000000; + width: 25px; + cursor: pointer; + } + } + } + .ntp-wrap { + margin-top: 40px; + margin-bottom: 68px; + .el-form-item { + margin: 20px auto; + height: 48px; + background: #ffffff; + box-sizing: border-box; + border-radius: 8px; + width: 580px; + padding: 0 30px; + display: flex; + align-items: center; + } + .right { + display: flex; + align-items: center; + .desc-min { + font-size: 12px; + font-weight: bold; + margin-left: 6px; + } + .el-input-number--small { + width: 195px; + .el-input__inner { + height: 32px; + line-height: 32px; + border: 2px solid transparent; + border-radius: 20px; + background: #f2f2f7; + } + .el-input__inner:focus { + border: 2px solid var(--colorCard); + } + } + .el-button--text { + margin-left: 42px; + color: #409eff; + background: rgba(78, 148, 255, 0.1); + border: 1px solid var(--colorCard); + box-sizing: border-box; + border-radius: 20px; + width: 68px; + color: #333; + font-weight: bold; + padding: 6px 20px; + } + } + } + .manual-time { + width: 500px; + margin: 0 auto; + } + } + } .el-form-item.is-required:not(.is-no-asterisk) > .el-form-item__label:before, .el-form-item.is-required:not(.is-no-asterisk) @@ -1746,182 +2592,61 @@ border-radius: 10px; .el-form-item__label { text-align: left; - line-height: 42px; + width: 184px; + color: #333; + font-weight: bold; } } .el-form-item__content { - line-height: 40px; + line-height: 16px; position: relative; font-size: 14px; - margin-bottom: 10px; } .ip-input-container { max-width: none !important; - } - .ntp-time { - .right { - display: flex; - align-items: baseline; - .el-input-number--small { - width: 100%; - } - .el-button--text { - margin-left: 10px; - text-decoration: underline; - } - } - } - .manual-time { - .clock-wrap { - height: 75px; - - background-color: #f8f8f8; - display: flex; - justify-content: center; - align-items: center; - margin-bottom: 10px; - border-radius: 10px; - .clock { - display: flex; - align-items: center; - height: 90px; - justify-content: space-evenly; - .iconfont { - cursor: pointer; - color: rgba(134, 134, 134, 1); - } - .iconfont:hover { - background-color: gainsboro; - } - .hour { - background-color: rgba(240, 240, 240, 1); - display: flex; - align-items: center; - width: 100px; - height: 50px; - justify-content: space-evenly; - border-radius: 10px; - } - .dnum { - width: 40px; - height: 40px; - line-height: 40px; - font-size: 34px; - font-family: Consolas; - display: flex; - align-items: center; - .input-box { - width: inherit; - border: none; - border-radius: 5px; - height: 35px; - font-size: 28px; - text-align: center; - } - - .input-box:focus { - outline: none; - } - } - .control { - width: 20px; - .fanzhuan { - display: inline-block; - -moz-transform: scaleY(-1); - -webkit-transform: scaleY(-1); - -o-transform: scaleY(-1); - transform: scaleY(-1); - } - } - .sep { - font-family: Consolas; - width: 40px; - font-size: 34px; - height: 40px; - line-height: 40px; - } - .mins { - background-color: #f0f0f0; - display: flex; - align-items: center; - width: 110px; - height: 50px; - justify-content: space-evenly; - border-radius: 10px; - } - } - } - .adjust-bar { - display: flex; - justify-content: space-between; - align-items: center; - margin-bottom: 10px; - border-radius: 10px; - height: 50px; - background-color: rgba(248, 248, 248, 1); - .middle { - font-size: 14px; - } - .input-box { - width: 80px; - border: none; - border-radius: 5px; - height: 25px; - font-size: 18px; - text-align: center; - } - - .input-box:focus { - outline: none; - } - .minus { - width: 50px; - height: 50px; - background-color: #f0f0f0; - font-size: 35px; - border-radius: 10px; - cursor: pointer; - line-height: 50px; - color: rgba(134, 134, 134, 1); - } - .plus { - width: 50px; - height: 50px; - cursor: pointer; - background-color: #f0f0f0; - font-size: 35px; - border-radius: 10px; - line-height: 50px; - color: rgba(134, 134, 134, 1); - } - } + width: 336px; + height: 34px; + line-height: normal; + box-sizing: border-box; + background-color: #f2f2f7; + text-align: left; + max-width: 360px; + border-radius: 20px; + border: 2px solid transparent; } } - .btns { - display: flex; - justify-content: space-between; - margin-top: 20px; - - .cancel { - height: 40px; - width: 48%; - cursor: pointer; - border-radius: 8px; - background-color: rgba(240, 240, 240, 1); - line-height: 40px; - font-size: 14px; - } - .ok { - height: 40px; - width: 48%; - cursor: pointer; - border-radius: 8px; - background-color: rgba(61, 104, 225, 1); - color: #fff; - line-height: 40px; - font-size: 14px; - } + } + .btns { + margin: 0 auto; + margin-top: 40px; + width: fit-content; + display: flex; + .cancel { + width: 188px; + height: 40px; + cursor: pointer; + border-radius: 25px; + background-color: #e0e0e0; + line-height: 40px; + font-weight: bold; + font-size: 16px; + margin-right: 12px; } + .ok { + width: 188px; + height: 40px; + cursor: pointer; + border-radius: 25px; + background-color: var(--colorCard); + color: #fff; + line-height: 40px; + font-weight: bold; + font-size: 16px; + } + } + .container-right-for-account { + background: #fbfaff; + padding: 0; } } </style> -- Gitblit v1.8.0