From 1f6893d24ba87313d4114c68813073ead53b2e12 Mon Sep 17 00:00:00 2001 From: zhouwx <1175765986@qq.com> Date: 星期五, 30 八月 2024 09:26:22 +0800 Subject: [PATCH] 群发新通讯录懒加载 --- src/views/Home.vue | 140 ++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 126 insertions(+), 14 deletions(-) diff --git a/src/views/Home.vue b/src/views/Home.vue index c16b872..f2cc6f3 100644 --- a/src/views/Home.vue +++ b/src/views/Home.vue @@ -2,55 +2,66 @@ <div> <a-layout id="components-layout-demo-custom-trigger" :style="{ height: '100vh' }"> <a-layout-sider v-model="collapsed" :trigger="null" collapsible> - <div class="logo">{{ collapsed ? collapsed : '预警响应系统' }}</div> + <div class="logo" v-if="!collapsed">{{ '预警响应系统' }}</div> + <div class="logo" v-else><a-icon type="alert" /></div> <menuSider /> </a-layout-sider> <a-layout> <a-layout-header style="background: #fff; padding: 0"> <a-icon class="trigger" :type="collapsed ? 'menu-unfold' : 'menu-fold'" - @click="() => (collapsed = !collapsed)" /> + @click="() => (collapsed = !collapsed)"/> <a-dropdown> <a class="ant-dropdown-link" @click="e => e.preventDefault()"> - 您好,李静 <a-icon type="down" /> + 您好,{{userInfo.realName}} <a-icon type="down"/> </a> <a-menu slot="overlay"> <a-menu-item> - <a href="javascript:;">修改密码</a> + <a href="javascript:;" @click="editPwd">修改密码</a> </a-menu-item> <a-menu-item> - <a href="javascript:;">回到首页</a> + <a href="javascript:;" @click="backHome">回到首页</a> </a-menu-item> <a-menu-item> <a @click="logout">退出登录</a> </a-menu-item> </a-menu> </a-dropdown> - </a-layout-header> <TabsHeader :pageList="pageList" :activePage="activePage" @change="changePage" @close="remove" /> <a-layout-content :style="{ margin: '15px 16px 24px 16px', }"> <!-- Content --> - <router-view ref="tabContent"></router-view> - <div style="height: 30px"></div> + <keep-alive include="notice"> + <router-view ref="tabContent"></router-view> + </keep-alive> + <div style="height: 30px;text-align: center;line-height: 30px"> + 技术支持:技术保障部 + </div> </a-layout-content> </a-layout> </a-layout> - <center style="textAlign: center;margin-left: 5%;margin-top:50px;"> - 技术支持:中国科学院 - </center> + <pwd-mod ref="pwdMod"></pwd-mod> +<!-- <center style="textAlign: center;margin-left: 5%;margin-top:50px;">--> +<!-- 技术支持:中国科学院--> +<!-- </center>--> </div> </template> <script> import menuSider from "@/layout/menuSider"; import TabsHeader from '@/components/TabsHeader'; + import pwdMod from "@/views/Admin/components/pwdMod"; + import { loginOut, getDistrictInfo } from "@/api/login"; + import { Session, getUserInfo} from '@/util/storage'; + import Cookies from "js-cookie"; + import {getAreaWithUserIfo} from "@/api/user"; export default { name: "Home", data() { return { + userInfo: getUserInfo(), collapsed: false, //返回logo图片或表述 pageList: [], activePage: '', @@ -60,6 +71,7 @@ components: { menuSider, TabsHeader, + pwdMod }, created() { const route = this.$route @@ -73,6 +85,7 @@ }) this.addListener() } + this.getAreaUsers(getUserInfo().districtId) }, watch: { '$route': function(newRoute) { @@ -92,10 +105,56 @@ } } }, - methods: { - logout(){ - this.$router.push('/') + methods: { + backHome(){ + this.$router.push('/home') + }, + + editPwd(){ + const t = this + t.$refs.pwdMod.updateType = 1 + t.$refs.pwdMod.form.uid = t.userInfo.uid + t.$refs.pwdMod.visible = true + }, + + logout(){ + const t = this + this.$confirm({ + title: '提示', + content: h => <div>该操作将登出,是否继续?</div>, + cancelText: '取消', + okText: '确认', + centered: true, + onOk() { + loginOut().then(res=>{ + if (res.data.code === 100) { + Session.clear(); // 清除缓存/token等 + // 使用 reload 时,不需要调用 resetRoute() 重置路由 + t.$router.push('/') + // window.location.reload(); + } else { + this.$message.warning(res.data.msg); + } + }) + }, + onCancel() { + console.log('Cancel'); + }, + class: 'test', + }); }, + + // async getDistrictInfo(){ + // let res = await getDistrictInfo() + // if(res.data.code == 100){ + // console.log(res.data.data) + // Cookies.set('district', res.data.data); + // console.log(Cookies.get('district'),666) + // } else { + // this.$message.warning(res.data.msg); + // } + // }, + changePage(key) { this.activePage = key const page = this.pageList.find(item => item.path === key) @@ -160,6 +219,59 @@ const path = closePath && closePath.split('?')[0] this.remove(path, nextRoute) }, + async getAreaUsers(districtId) { + let t = this + let res = await getAreaWithUserIfo() + if (res.data.code == 100) { + if (res.data.data) { + t.userTitTree(res.data.data) + const areaUsers = t.findNodeById(res.data.data, districtId).children + localStorage.removeItem('areaUsers') + localStorage.setItem('areaUsers',JSON.stringify(areaUsers)) + } else { + console.log('暂无数据') + } + } else { + this.$message.warning(res.data.msg); + } + }, + + // 根据id查对象 + findNodeById(data, value) { + for (const node of data) { + if (node.id === value) { + return node; + } + if (node.children) { + const foundNode = this.findNodeById(node.children, value); + if (foundNode) { + return foundNode; + } + } + } + return null; + }, + + // 将树状数据name字段放入users的姓名电话 + userTitTree(treeData) { + for (const node of treeData) { + if (node.users) { + node.users = node.users.filter(i => i.roleId == 3) + node.users = node.users.map((i) => { + return { + ...i, + unittype: node.type, + districtId: node.id + } + }) + node.name = node.name + '(' + node.users.map(i => i.realName + ' ' + i.phone).join(',') + ')' + } + if (node.children) { + this.userTitTree(node.children) + } + } + return treeData + } } }; </script> -- Gitblit v1.9.2