From 256ca05f1e4b5937e51cef436504bccf4240c151 Mon Sep 17 00:00:00 2001
From: gaoluyang <gaoluyang@rengu.cc>
Date: 星期三, 24 七月 2024 16:18:24 +0800
Subject: [PATCH] 检测中心-班次时间配置功能
---
src/view/index.vue | 235 ++++++++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 203 insertions(+), 32 deletions(-)
diff --git a/src/view/index.vue b/src/view/index.vue
index fcc83e2..38dc5a4 100644
--- a/src/view/index.vue
+++ b/src/view/index.vue
@@ -16,7 +16,7 @@
}
.logo {
- width: 130px;
+ width: 118px;
height: 40px;
}
@@ -53,6 +53,12 @@
.user span {
font-size: 14px;
}
+ .el-dropdown{
+ display: flex;
+ align-items: center;
+ color: #000;
+ cursor: pointer;
+ }
.left {
height: calc(100vh - 48px - 40px);
@@ -162,8 +168,7 @@
}
.tag>.el-icon-s-unfold,
- .el-icon-s-fold,
- .el-icon-delete {
+ .el-icon-s-fold{
font-size: 16px;
cursor: pointer;
margin: 0 8px;
@@ -211,12 +216,17 @@
.active_tab i {
display: inline;
color: #3A7BFA;
+ border-radius: 50%;
+ }
+
+ .active_tab i:hover{
+ background-color: rgba(0, 0, 0, 0.08);
}
.component_view {
height: calc(100vh - 84px);
- width: calc(100% - 52px);
- padding: 0 26px;
+ width: calc(100% - 40px);
+ padding: 0 20px;
background: rgb(245, 247, 251);
}
@@ -226,12 +236,12 @@
}
.right_key_menu {
- width: 120px;
+ width: 130px;
position: absolute;
top: 0;
left: 0;
display: none;
- z-index: 999;
+ z-index: 9998;
padding: 0;
}
@@ -245,7 +255,7 @@
}
.right_key_menu li i {
- margin-right: 14px;
+ margin-right: 10px;
}
.right_key_menu li:hover {
@@ -259,6 +269,22 @@
cursor: auto !important;
margin: 8px 12px;
}
+
+ .search_thing {
+ display: flex;
+ align-items: center;
+ height: 50px;
+ }
+
+ .search_label {
+ width: 90px;
+ font-size: 14px;
+ text-align: right;
+ }
+
+ .search_input {
+ width: calc(100% - 120px);
+ }
</style>
<style></style>
<template>
@@ -269,8 +295,16 @@
</div>
<div class="label">LIMS瀹為獙瀹ょ鐞嗙郴缁�</div>
<div class="user">
- <el-avatar :size="26">{{ userName.substring(0, 1) }}</el-avatar>
- <span>{{ userName }}</span>
+ <el-badge :is-dot="newMsg" style="cursor: pointer;margin-right: 10px;">
+ <i class="el-icon-bell" style="font-size: 20px;" @click="openNotice"></i>
+ </el-badge>
+ <el-dropdown trigger="click" @command="handleCommand">
+ <el-avatar :size="26">{{ userName.substring(0, 1) }}</el-avatar>
+ <span>{{ userName }}</span>
+ <el-dropdown-menu slot="dropdown">
+ <el-dropdown-item>淇敼瀵嗙爜</el-dropdown-item>
+ </el-dropdown-menu>
+ </el-dropdown>
<img src="../../static/img/閫�鍑�.png" @click="out" title="閫�鍑鸿处鍙�" />
</div>
</div>
@@ -281,7 +315,7 @@
<i :class="a.i"></i>
<div>{{a.v}}</div>
</div>
- <el-popover placement="right-start" trigger="click" v-if="a.self != true && getPower(a.p)">
+ <el-popover ref="popoverName" placement="right-start" trigger="click" v-if="a.self != true && getPower(a.p)">
<div :class="`box ${activeBox == a.k ? 'active_box' : ''}`" slot="reference">
<i :class="a.i"></i>
<div style="text-align: center;">{{ a.v }}</div>
@@ -299,7 +333,6 @@
</div>
</div>
</el-popover>
- </el-popover>
</div>
</div>
<div class="right" :style="`width: calc(100% - ${leftOpen?'92':'0'}px);`">
@@ -312,7 +345,6 @@
<i class="el-icon-close" @click="removeTab(ai)" v-if="tabActive!=0"></i>
</div>
</div>
- <i class="el-icon-delete" @click="allDel" title="鍒犻櫎鎵�鏈夋爣绛鹃〉"></i>
</div>
<div class="component_view">
<component class="com_index" v-for="(com, index) in tabs" :is="com.u" :key="com.k" v-show="com.k == tabActive"
@@ -325,13 +357,43 @@
<el-col :span="24">
<el-card :body-style="{padding: '6px'}">
<ul>
- <li style="color: red;" @click="removeTab(activeIndex)"><i class="el-icon-close"></i>鍏抽棴</li>
+ <li @click="removeTab(activeIndex)" v-show="menuId!=0"><i class="el-icon-close"></i>鍏抽棴</li>
+ <li @click="allDel"><i class="el-icon-delete"></i>鍏抽棴鎵�鏈�</li>
+ <li @click="rightDel(activeIndex)"><i class="el-icon-d-arrow-right"></i>鍏抽棴鍙充晶椤电</li>
<el-divider></el-divider>
<li @click="refreshTable"><i class="el-icon-refresh"></i>鍒锋柊</li>
</ul>
</el-card>
</el-col>
</div>
+ <!-- 淇敼瀵嗙爜 -->
+ <el-dialog
+ title="淇敼瀵嗙爜"
+ :visible.sync="editVisible"
+ width="400px"
+ :before-close="handleClose">
+ <el-row>
+ <el-col class="search_thing" :span="24">
+ <div class="search_label"><span class="required-span">* </span>鏃у瘑鐮侊細</div>
+ <div class="search_input">
+ <el-input v-model="query.oldPassword" size="small" clearable show-password></el-input>
+ </div>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col class="search_thing" :span="24">
+ <div class="search_label"><span class="required-span">* </span>鏂板瘑鐮侊細</div>
+ <div class="search_input">
+ <el-input v-model="query.newPassWord" size="small" clearable show-password></el-input>
+ </div>
+ </el-col>
+ </el-row>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="handleClose">鍙� 娑�</el-button>
+ <el-button type="primary" @click="handleEdit">纭� 瀹�</el-button>
+ </span>
+ </el-dialog>
+ <notice ref="notice" @goNoticeDetail="checkForUnreadData()" />
</div>
</template>
@@ -348,9 +410,10 @@
});
import menus from '../../static/js/menu.js'
import nullFace from '../view/404.vue'
+ import notice from './notice.vue'
comObj['nullFace'] = nullFace
export default {
- components: comObj,
+ components: {...comObj,notice},
data() {
return {
userName: "value",
@@ -359,26 +422,67 @@
activeBox: 0,
activeP: 0,
tabActive: 0,
- tabs: [{
- k: 0,
- v: "涓汉棣栭〉",
- i: "font icon-a-Group1124",
- u: "nullFace"
- }],
+ tabs: [],
upIndex: 0,
activeIndex: 0,
- power: []
+ power: [],
+ editVisible:false,
+ query:{},
+ newMsg:false,
+ timer:null,
+ menuId: 0
};
},
created() {
this.menu = menus.menu
+ if (this.PROJECT !== '瑁呭鐢电紗') { // 妫�娴嬩腑蹇冩殏鏃�'鍘熸潗鏂欐楠屼笅鍗�'鍔熻兘
+ const index = this.menu.findIndex(item => item.v === '涓氬姟绠$悊')
+ if (index > -1) {
+ const index2 = this.menu[index].c.findIndex(obj => obj.v === '鍘熸潗鏂欐楠屼笅鍗�')
+ if (index2 > -1) {
+ this.menu[index].c.splice(index2, 1)
+ }
+ }
+ }
},
mounted() {
this.userName = JSON.parse(localStorage.getItem("user")).name;
this.power = JSON.parse(sessionStorage.getItem('power'))
+ this.tabs = JSON.parse(localStorage.getItem('tabs'))
+ if (this.tabs == undefined || this.tabs == null) {
+ this.tabs = [{
+ k: 0,
+ v: "涓汉棣栭〉",
+ i: "font icon-a-Group1124",
+ u: "index-index"
+ }]
+ }
+ this.tabActive = JSON.parse(localStorage.getItem('tabActive'))
+ if (this.tabActive == undefined || this.tabActive == null) {
+ this.tabActive = 0
+ }
+ this.activeP = JSON.parse(localStorage.getItem('activeP'))
+ if (this.activeP == undefined || this.activeP == null) {
+ this.activeP = 0
+ }
+ this.activeBox = JSON.parse(localStorage.getItem('activeBox'))
+ if (this.activeBox == undefined || this.activeBox == null) {
+ this.activeBox = 0
+ }
this.getPower()
+ this.timer&&clearInterval(this.timer);
+ this.checkForUnreadData()
+ this.timer = setInterval(()=>{
+ this.checkForUnreadData()
+ },30000)
},
methods: {
+ saveClick(){
+ localStorage.setItem('tabs', JSON.stringify(this.tabs))
+ localStorage.setItem('tabActive', JSON.stringify(this.tabActive))
+ localStorage.setItem('activeP', JSON.stringify(this.activeP))
+ localStorage.setItem('activeBox', JSON.stringify(this.activeBox))
+ },
addTab(ob, self) {
this.activeBox = self == -1 ? ob.k : self
this.activeP = ob.k; //0
@@ -390,16 +494,25 @@
}
});
if (num == -1) {
- if(ob.u == "") ob.u = "nullFace"
+ if (ob.u == "") ob.u = "nullFace"
this.tabs.push(ob);
}
+ this.$refs['popoverName'].forEach(a=>{
+ a.doClose()
+ })
+ this.saveClick()
},
removeTab(index) {
this.tabs.splice(index, 1);
let data = this.tabs[this.tabs.length - 1]
- this.activeP = data.k;
- this.tabActive = data.k;
- this.activeBox = data.k
+ this.upTabActive(data.k)
+ },
+ rightDel(index){
+ for (var i = this.tabs.length - 1; i > index; i--) {
+ this.tabs.splice(i, 1);
+ }
+ let data = this.tabs[this.tabs.length - 1]
+ this.upTabActive(data.k)
},
allDel() {
this.activeBox = 0
@@ -407,10 +520,11 @@
this.tabActive = 0
this.tabs = [{
k: 0,
- v: " 棣栭〉",
+ v: "涓汉棣栭〉",
i: "font icon-a-Group1124",
u: "index-index"
}]
+ this.saveClick()
},
upTabActive(num) {
this.tabActive = num;
@@ -423,10 +537,15 @@
}
})
}
+ this.saveClick()
},
out() {
sessionStorage.clear();
localStorage.removeItem("autoenter");
+ localStorage.removeItem("tabs")
+ localStorage.removeItem("tabActive")
+ localStorage.removeItem("activeP")
+ localStorage.removeItem("activeBox")
this.$router.push("/enter");
},
// 鍏抽棴鍙抽敭鑿滃崟
@@ -437,7 +556,8 @@
},
// 鍙抽敭鑿滃崟
rightKeyMenu(id, e) {
- if (id == 0) return
+ // if (id == 0) return
+ this.menuId = id
this.activeIndex = id
var x = e.clientX + 'px'
var y = e.clientY + 'px'
@@ -477,13 +597,64 @@
groupCount(g1, gs) {
if (g1 == undefined) return 24
let count = 0
- gs.forEach(a=>{
- if(a.g == g1) count++
+ gs.forEach(a => {
+ if (a.g == g1) count++
})
if (count > 4) return 8
if (count > 1) return 12
if (count == 1) return 24
- }
- }
+ },
+ // 淇敼瀵嗙爜-鎵撳紑寮圭獥
+ handleCommand(e){
+ this.editVisible = true;
+ },
+ handleEdit(){
+ const reg2 =
+ /^(?=.*?[a-z])(?=.*?[A-Z])(?=.*?\d)(?=.*?[~!#@$%^*&()_+{}\[\]|\\;:'",<.>\/?])[a-zA-Z\d~!#@$%^*&()_+{}\[\]|\\;:'",<.>\/?]*$/;
+ if (!this.query.oldPassword) {
+ this.$message.error('璇峰~鍐欐棫瀵嗙爜')
+ return
+ }else if (!reg2.test(this.query.oldPassword)) {
+ this.$message.error('瀵嗙爜蹇呴』鍖呮嫭鏁板瓧銆佸ぇ灏忓啓瀛楁瘝浠ュ強鐗规畩瀛楃')
+ return
+ }
+ if (!this.query.newPassWord) {
+ this.$message.error('璇峰~鍐欐棫瀵嗙爜')
+ return
+ }else if (!reg2.test(this.query.newPassWord)) {
+ this.$message.error('瀵嗙爜蹇呴』鍖呮嫭鏁板瓧銆佸ぇ灏忓啓瀛楁瘝浠ュ強鐗规畩瀛楃')
+ return
+ }
+ this.$axios.post(this.$api.user.upUserPassword, {...this.query}).then(res => {
+ if (res.code == 201) {
+ this.$message.error('淇敼澶辫触')
+ return
+ }
+ this.$message.success('淇敼鎴愬姛')
+ this.editVisible = false
+ this.query = {}
+ this.out();
+ })
+ },
+ handleClose(){
+ this.editVisible = false
+ this.query = {}
+ },
+ openNotice(){
+ this.$refs.notice.open()
+ this.$refs.notice.handleType()
+ },
+ checkForUnreadData(){
+ this.$axios.get(this.$api.informationNotification.checkForUnreadData).then(res => {
+ if (res.code == 201) {
+ return
+ }
+ this.newMsg = res.data
+ })
+ }
+ },
+ destroyed() {
+ this.timer&&clearInterval(this.timer);
+ }
};
</script>
--
Gitblit v1.9.3