whx 3 maanden geleden
bovenliggende
commit
1f66ec1d17

+ 0 - 4
virgo.wzfrontend/console/src/layout/components/breadCrumb.vue

@@ -1,10 +1,6 @@
 <template>
 	<div class="bread-crumb">
 		<div class="crumb-box">
-			<div class="crumb-item" style="opacity: 1;cursor: pointer;" @click="$router.push('/work')">
-				<span>个人工作台</span>
-				<span class="tips">/</span>
-			</div>
 			<div class="crumb-item" v-for="(item,index) in levelList" :key="index">
 				<span>{{item}}</span>
 				<span class="tips" v-if="index !== levelList.length - 1">/</span>

+ 367 - 362
virgo.wzfrontend/console/src/layout/components/topNav.vue

@@ -1,363 +1,368 @@
-<template>
-	<div class="work-layout-title">
-		<div class="work-layout-left">
-			<div class="work-layout-image">
-				<img src="https://file-node.oss-cn-shanghai.aliyuncs.com/youji/2f7b4bfaf9e64817bc2cb46f3a632b01"
-					alt="" />
-			</div>
-			<div class="work-layout-label">红链智慧建筑</div>
-			<div class="work-layout-button" @click="$router.push('/')">
-				<i class="iconfont huifont-shouye"></i><span>首页</span>
-			</div>
-			<div class="work-layout-line"></div>
-			<div class="work-layout-project" @click="visible = true">
-				<span>{{projects.name}}</span>
-				<i class="iconfont huifont-xiala-top"></i>
-			</div>
-		</div>
-		<div class="work-layout-right">
-			<div class="work-layout-button" @click="$router.push('/website/home')" style="margin-right: 20px;">
-				<i class="iconfont huifont-shouye"></i><span>公海房源</span>
-			</div>
-			<div :class="'work-layout-type'+($route.path === item.path?' active' : '')" v-for="(item,index) in list"
-				@click="$router.push(item.path)" :key="item.id">
-				<i :class="'iconfont ' + item.icon"></i><span>{{item.name}}</span>
-			</div>
-			<div class="work-layout-badge" @click="$router.push('/message')">
-				<el-badge :is-dot="systemCountStatus">
-					<i class="iconfont huifont-xiaoxi"></i>
-				</el-badge>
-			</div>
-			<el-dropdown @visible-change="value => userDropdown = value" @command="userCommand">
-				<div class="work-layout-user">
-					<div class="work-layout-avatar">
-						<avatar :user="users"></avatar>
-					</div>
-					<i :class="'iconfont huifont-gerenzhongxinxiala'+ (userDropdown ? ' dropdown-icon' : '')"></i>
-				</div>
-				<el-dropdown-menu class="user-dropdown" slot="dropdown">
-					<el-dropdown-item command="user">{{users.name}}</el-dropdown-item>
-					<el-dropdown-item command="detail">个人信息</el-dropdown-item>
-					<el-dropdown-item command="loginout">退出登录</el-dropdown-item>
-				</el-dropdown-menu>
-			</el-dropdown>
-		</div>
-		<el-drawer title="个人信息" class="user-drawer" :modal="false" :visible.sync="drawer" :size="400"
-			:append-to-body="true">
-			<user-detail v-if="drawer"></user-detail>
-		</el-drawer>
-		<el-dialog :close-on-click-modal="false" title="切换项目" :visible.sync="visible" width="900px"
-			:append-to-body="true">
-			<select-project @callback="callback" v-if="visible"></select-project>
-		</el-dialog>
-	</div>
-</template>
-
-<script>
-	import userDetail from './userDetail'
-	import selectProject from './selectProject'
-	import {
-		removeToken
-	} from '@/uitls/auth';
-	import {
-		getUserInfoById
-	} from '@/httpApi/loginRegister'
-	import {
-		getMessageTest
-	} from '@/httpApi/message'
-	import {
-		mapGetters
-	} from 'vuex';
-	import avatar from '@/components/common/avatar'
-	export default {
-		data() {
-			return {
-				projects: {},
-				users: {},
-				userDropdown: false,
-				drawer: false,
-				visible: false,
-				list: [{
-					id: 2,
-					path: '/work/staging/project',
-					name: '项目工作台',
-					icon: 'huifont-xiangmugongzuotai1'
-				}],
-				systemCountStatus: false,
-				messageDrawer: false,
-				messageList: [],
-				messageIndex: 0
-			}
-		},
-		mounted() {
-			this.init();
-			this.initUserInfo();
-			this.initMessage();
-		},
-		methods: {
-			init() {
-				this.projects = this.$store.getters.project;
-				this.users = this.$store.getters.user;
-				this.users['name'] = this.users.userName;
-			},
-			initUserInfo() {
-				getUserInfoById(this.$store.getters.user.userId).then(res => {
-					if (res.state) {
-						let userData = this.$store.getters.user;
-						userData['portrait'] = res.data.portrait;
-						this.$store.dispatch('app/changeUser', userData);
-					}
-				});
-			},
-			initMessage() {
-				getMessageTest(this.$store.getters.user.userId).then(res => {
-					if (res.state) {
-						let num = 0;
-						for (var i = 0; i < res.data.length; i++) {
-							num += res.data[i].count
-						}
-						this.systemCountStatus = num > 0;
-					}
-				})
-			},
-			loginout() {
-				this.$confirm('是否要退出登录?', () => {
-					removeToken();
-					window.location.replace(window.location.origin);
-					this.$message.success('退出成功');
-				});
-			},
-			callback() {
-				this.visible = false;
-			},
-			userCommand(command) {
-				switch (command) {
-					case 'detail':
-						this.drawer = true;
-						break;
-					case 'loginout':
-						this.loginout();
-						break;
-					default:
-						break;
-				}
-			}
-		},
-		components: {
-			userDetail,
-			selectProject
-		},
-		watch: {
-			user() {
-				this.init();
-			},
-			project() {
-				this.init();
-			},
-			chatList() {
-				this.initMessage();
-			}
-		},
-		computed: {
-			...mapGetters(['user', 'project', 'chatList'])
-		},
-	}
-</script>
-
-<style lang="scss">
-	.work-layout-title {
-		display: flex;
-		height: 52px;
-		position: absolute;
-		left: 0;
-		right: 0;
-		top: 0;
-		justify-content: space-between;
-		background: #1E2430;
-
-		.work-layout-button {
-			background-color: #2b2f3a;
-			width: 82px;
-			height: 36px;
-			border-radius: 4px;
-			display: flex;
-			align-items: center;
-			cursor: pointer;
-			justify-content: center;
-
-			.iconfont {
-				font-size: 23px;
-			}
-
-			span {
-				font-size: 13px;
-				margin-left: 6px;
-			}
-		}
-
-		.work-layout-right {
-			height: 100%;
-			padding-right: 24px;
-			display: flex;
-			align-items: center;
-
-			.work-layout-button {
-				width: 100px;
-			}
-
-			.work-layout-type {
-				display: flex;
-				align-items: center;
-				cursor: pointer;
-				height: 100%;
-				padding: 0 15px;
-
-				.iconfont {
-					font-size: 22px;
-				}
-
-				span {
-					font-size: 13px;
-					margin-left: 2px;
-				}
-			}
-
-			.work-layout-type:hover,
-			.work-layout-type.active {
-				background: $--color-primary;
-				color: #fff;
-			}
-
-			.work-layout-badge {
-				margin-right: 35px;
-				cursor: pointer;
-				margin-left: 20px;
-
-				.iconfont {
-					font-size: 22px;
-				}
-
-				.el-badge__content {
-					border: none;
-				}
-			}
-
-			.work-layout-user {
-				display: flex;
-				align-items: center;
-				cursor: pointer;
-
-				.work-layout-avatar {
-					width: 32px;
-					height: 32px;
-					border-radius: 50%;
-					overflow: hidden;
-					margin-right: 8px;
-				}
-
-				.iconfont {
-					font-size: 14px;
-					color: $--color-common;
-					transition: all 300ms;
-				}
-
-				.dropdown-icon {
-					transform: rotate(180deg);
-				}
-			}
-		}
-
-
-		.work-layout-left {
-			height: 100%;
-			padding-left: 24px;
-			display: flex;
-			align-items: center;
-
-			.work-layout-image {
-				width: 36px;
-				height: 36px;
-				border-radius: 4px;
-				overflow: hidden;
-
-				img {
-					width: 100%;
-					height: 100%;
-				}
-			}
-
-			.work-layout-label {
-				padding-left: 10px;
-				font-size: 18px;
-				font-weight: bold;
-				color: #fff;
-				font-weight: 600;
-				margin-right: 77px;
-			}
-
-
-
-			.work-layout-line {
-				background: #a9a9a9;
-				width: 1px;
-				height: 20px;
-				margin: 0 23px;
-			}
-
-			.work-layout-project {
-				display: flex;
-				align-items: center;
-				color: $--color-common;
-				cursor: pointer;
-
-				span {
-					font-size: 13px;
-					margin-right: 5px;
-				}
-
-				.iconfont {
-					transition: all 300ms;
-				}
-
-				.dropdown-icon {
-					transform: rotate(180deg);
-				}
-			}
-		}
-	}
-
-	.user-dropdown.el-dropdown-menu.el-popper {
-		width: 180px;
-		border-radius: 4px;
-		margin-top: 10px;
-
-		.el-dropdown-menu__item {
-			padding: 8px 40px 8px 16px;
-			margin: 2px 0;
-		}
-
-		.el-dropdown-menu__item:first-child {
-			background: $--color-background-hover;
-
-		}
-	}
-
-	.project-dropdown.el-dropdown-menu.el-popper {
-		border-radius: 4px;
-		margin-top: 17px;
-
-		.el-dropdown-menu__item {
-			padding: 8px 40px 8px 16px;
-			margin: 2px 0;
-		}
-	}
-
-	.user-drawer {
-
-		.el-drawer.ltr,
-		.el-drawer.rtl {
-			top: 52px;
-			height: auto;
-		}
-	}
+<template>
+	<div class="work-layout-title">
+		<div class="work-layout-left">
+			<div class="work-layout-image">
+				<img src="https://file-node.oss-cn-shanghai.aliyuncs.com/youji/2f7b4bfaf9e64817bc2cb46f3a632b01"
+					alt="" />
+			</div>
+			<div class="work-layout-label">红链智慧建筑</div>
+			<div class="work-layout-button" @click="$router.push('/')">
+				<i class="iconfont huifont-shouye"></i><span>首页</span>
+			</div>
+			<div class="work-layout-line"></div>
+			<div class="work-layout-project" @click="visible = true">
+				<span>{{projects.name}}</span>
+				<i class="iconfont huifont-xiala-top"></i>
+			</div>
+		</div>
+		<div class="work-layout-right">
+			<div class="work-layout-button" @click="$router.push('/website/home')" style="margin-right: 20px;">
+				<i class="iconfont huifont-shouye"></i><span>公海房源</span>
+			</div>
+			<div :class="'work-layout-type'+($route.path === item.path?' active' : '')" v-for="(item,index) in list"
+				@click="$router.push(item.path)" :key="item.id">
+				<i :class="'iconfont ' + item.icon"></i><span>{{item.name}}</span>
+			</div>
+			<div class="work-layout-badge" @click="$router.push('/message')">
+				<el-badge :is-dot="systemCountStatus">
+					<i class="iconfont huifont-xiaoxi"></i>
+				</el-badge>
+			</div>
+			<el-dropdown @visible-change="value => userDropdown = value" @command="userCommand">
+				<div class="work-layout-user">
+					<div class="work-layout-avatar">
+						<avatar :user="users"></avatar>
+					</div>
+					<i :class="'iconfont huifont-gerenzhongxinxiala'+ (userDropdown ? ' dropdown-icon' : '')"></i>
+				</div>
+				<el-dropdown-menu class="user-dropdown" slot="dropdown">
+					<el-dropdown-item command="user">{{users.name}}</el-dropdown-item>
+					<el-dropdown-item command="detail">个人信息</el-dropdown-item>
+					<el-dropdown-item command="loginout">退出登录</el-dropdown-item>
+				</el-dropdown-menu>
+			</el-dropdown>
+		</div>
+		<el-drawer title="个人信息" class="user-drawer" :modal="false" :visible.sync="drawer" :size="400"
+			:append-to-body="true">
+			<user-detail v-if="drawer"></user-detail>
+		</el-drawer>
+		<el-dialog :close-on-click-modal="false" title="切换项目" :visible.sync="visible" width="900px"
+			:append-to-body="true">
+			<select-project @callback="callback" v-if="visible"></select-project>
+		</el-dialog>
+	</div>
+</template>
+
+<script>
+	import userDetail from './userDetail'
+	import selectProject from './selectProject'
+	import {
+		removeToken
+	} from '@/uitls/auth';
+	import {
+		getUserInfoById
+	} from '@/httpApi/loginRegister'
+	import {
+		getMessageTest
+	} from '@/httpApi/message'
+	import {
+		mapGetters
+	} from 'vuex';
+	import avatar from '@/components/common/avatar'
+	export default {
+		data() {
+			return {
+				projects: {},
+				users: {},
+				userDropdown: false,
+				drawer: false,
+				visible: false,
+				list: [{
+					id: 1,
+					path: '/work/staging/user',
+					name: '个人工作台',
+					icon: 'huifont-gerengongzuotai1'
+				}, {
+					id: 2,
+					path: '/work',
+					name: '项目工作台',
+					icon: 'huifont-xiangmugongzuotai1'
+				}],
+				systemCountStatus: false,
+				messageDrawer: false,
+				messageList: [],
+				messageIndex: 0
+			}
+		},
+		mounted() {
+			this.init();
+			this.initUserInfo();
+			this.initMessage();
+		},
+		methods: {
+			init() {
+				this.projects = this.$store.getters.project;
+				this.users = this.$store.getters.user;
+				this.users['name'] = this.users.userName;
+			},
+			initUserInfo() {
+				getUserInfoById(this.$store.getters.user.userId).then(res => {
+					if (res.state) {
+						let userData = this.$store.getters.user;
+						userData['portrait'] = res.data.portrait;
+						this.$store.dispatch('app/changeUser', userData);
+					}
+				});
+			},
+			initMessage() {
+				getMessageTest(this.$store.getters.user.userId).then(res => {
+					if (res.state) {
+						let num = 0;
+						for (var i = 0; i < res.data.length; i++) {
+							num += res.data[i].count
+						}
+						this.systemCountStatus = num > 0;
+					}
+				})
+			},
+			loginout() {
+				this.$confirm('是否要退出登录?', () => {
+					removeToken();
+					window.location.replace(window.location.origin);
+					this.$message.success('退出成功');
+				});
+			},
+			callback() {
+				this.visible = false;
+			},
+			userCommand(command) {
+				switch (command) {
+					case 'detail':
+						this.drawer = true;
+						break;
+					case 'loginout':
+						this.loginout();
+						break;
+					default:
+						break;
+				}
+			}
+		},
+		components: {
+			userDetail,
+			selectProject
+		},
+		watch: {
+			user() {
+				this.init();
+			},
+			project() {
+				this.init();
+			},
+			chatList() {
+				this.initMessage();
+			}
+		},
+		computed: {
+			...mapGetters(['user', 'project', 'chatList'])
+		},
+	}
+</script>
+
+<style lang="scss">
+	.work-layout-title {
+		display: flex;
+		height: 52px;
+		position: absolute;
+		left: 0;
+		right: 0;
+		top: 0;
+		justify-content: space-between;
+		background: #1E2430;
+
+		.work-layout-button {
+			background-color: #2b2f3a;
+			width: 82px;
+			height: 36px;
+			border-radius: 4px;
+			display: flex;
+			align-items: center;
+			cursor: pointer;
+			justify-content: center;
+
+			.iconfont {
+				font-size: 23px;
+			}
+
+			span {
+				font-size: 13px;
+				margin-left: 6px;
+			}
+		}
+
+		.work-layout-right {
+			height: 100%;
+			padding-right: 24px;
+			display: flex;
+			align-items: center;
+
+			.work-layout-button {
+				width: 100px;
+			}
+
+			.work-layout-type {
+				display: flex;
+				align-items: center;
+				cursor: pointer;
+				height: 100%;
+				padding: 0 15px;
+
+				.iconfont {
+					font-size: 22px;
+				}
+
+				span {
+					font-size: 13px;
+					margin-left: 2px;
+				}
+			}
+
+			.work-layout-type:hover,
+			.work-layout-type.active {
+				background: $--color-primary;
+				color: #fff;
+			}
+
+			.work-layout-badge {
+				margin-right: 35px;
+				cursor: pointer;
+				margin-left: 20px;
+
+				.iconfont {
+					font-size: 22px;
+				}
+
+				.el-badge__content {
+					border: none;
+				}
+			}
+
+			.work-layout-user {
+				display: flex;
+				align-items: center;
+				cursor: pointer;
+
+				.work-layout-avatar {
+					width: 32px;
+					height: 32px;
+					border-radius: 50%;
+					overflow: hidden;
+					margin-right: 8px;
+				}
+
+				.iconfont {
+					font-size: 14px;
+					color: $--color-common;
+					transition: all 300ms;
+				}
+
+				.dropdown-icon {
+					transform: rotate(180deg);
+				}
+			}
+		}
+
+
+		.work-layout-left {
+			height: 100%;
+			padding-left: 24px;
+			display: flex;
+			align-items: center;
+
+			.work-layout-image {
+				width: 36px;
+				height: 36px;
+				border-radius: 4px;
+				overflow: hidden;
+
+				img {
+					width: 100%;
+					height: 100%;
+				}
+			}
+
+			.work-layout-label {
+				padding-left: 10px;
+				font-size: 18px;
+				font-weight: bold;
+				color: #fff;
+				font-weight: 600;
+				margin-right: 77px;
+			}
+
+
+
+			.work-layout-line {
+				background: #a9a9a9;
+				width: 1px;
+				height: 20px;
+				margin: 0 23px;
+			}
+
+			.work-layout-project {
+				display: flex;
+				align-items: center;
+				color: $--color-common;
+				cursor: pointer;
+
+				span {
+					font-size: 13px;
+					margin-right: 5px;
+				}
+
+				.iconfont {
+					transition: all 300ms;
+				}
+
+				.dropdown-icon {
+					transform: rotate(180deg);
+				}
+			}
+		}
+	}
+
+	.user-dropdown.el-dropdown-menu.el-popper {
+		width: 180px;
+		border-radius: 4px;
+		margin-top: 10px;
+
+		.el-dropdown-menu__item {
+			padding: 8px 40px 8px 16px;
+			margin: 2px 0;
+		}
+
+		.el-dropdown-menu__item:first-child {
+			background: $--color-background-hover;
+
+		}
+	}
+
+	.project-dropdown.el-dropdown-menu.el-popper {
+		border-radius: 4px;
+		margin-top: 17px;
+
+		.el-dropdown-menu__item {
+			padding: 8px 40px 8px 16px;
+			margin: 2px 0;
+		}
+	}
+
+	.user-drawer {
+
+		.el-drawer.ltr,
+		.el-drawer.rtl {
+			top: 52px;
+			height: auto;
+		}
+	}
 </style>

+ 4 - 4
virgo.wzfrontend/console/src/router/modules/staging.js

@@ -1,9 +1,9 @@
 const staging = [{
-	path: 'staging/project',
-	component: () => import('@/views/work/staging/project'),
-	name: '项目工作台',
+	path: 'staging/user',
+	component: () => import('@/views/work/staging/user'),
+	name: '个人工作台',
 	meta: {
-		title: '项目工作台'
+		title: '个人工作台'
 	}
 }]
 export default staging;

+ 3 - 3
virgo.wzfrontend/console/src/router/work.js

@@ -3,10 +3,10 @@ import Layout from '@/layout/work'
 const modulesFiles = require.context('./modules', true, /\.js$/);
 let child = [{
 	path: '',
-	component: () => import('@/views/work'),
-	name: '工作台',
+	component: () => import('@/views/work/staging/project'),
+	name: '项目工作台',
 	meta: {
-		title: '工作台'
+		title: '项目工作台'
 	}
 }];
 modulesFiles.keys().reduce((modules, modulePath) => {

+ 1 - 1
virgo.wzfrontend/console/src/uitls/routerPermission.js

@@ -14,7 +14,7 @@ NProgress.configure({
 	showSpinner: false
 })
 const baseUrl = ['/', '/401', '/404', '/ui', '/loginRegister/login', '/work', '/message', '/work/space/project',
-	'/iot/device/detail', '/work/staging/project', '/work/operation/week/detail'
+	'/iot/device/detail', '/work/operation/week/detail', '/work/staging/user'
 ];
 
 const testBaseUrl = (path) => { //判断公共路由

+ 801 - 0
virgo.wzfrontend/console/src/views/work/staging/user.vue

@@ -0,0 +1,801 @@
+<template>
+	<div class="custom-admin-box">
+		<div class="custom-admin">
+			<div class="staging-left">
+				<div class="staging-user-detail box-background">
+					<div class="user-avatar">
+						<div class="user-avatar-img">
+							<avatar :user="user" :size="20"></avatar>
+						</div>
+						<div class="user-avatar-name">{{user.name}}</div>
+					</div>
+					<div class="user-list">
+						<div class="user-item">
+							<div class="user-key">岗位名称</div>
+							<div class="user-value" @click="open('1')">物业经理</div>
+						</div>
+						<div class="user-item">
+							<div class="user-key">公司部门</div>
+							<div class="user-value" @click="open('2')">智慧城市事业部</div>
+						</div>
+						<div class="user-item">
+							<div class="user-key">联系方式</div>
+							<div class="user-value">{{user.phone}}</div>
+						</div>
+						<div class="user-item">
+							<div class="user-key">空间定位</div>
+							<div class="user-value">魔方大厦A栋</div>
+						</div>
+					</div>
+				</div>
+				<div class="staging-user-sign">
+					<div class="staging-sign-item box-background">
+						<div class="sign-icon">
+							<i class="iconfont huifont-qiandao"></i>
+						</div>
+						<div class="sign-test">
+							<div class="sign-label">月签到</div>
+							<div class="sign-number">59</div>
+						</div>
+					</div>
+					<div class="sign-line"></div>
+					<div class="staging-sign-item box-background">
+						<div class="sign-icon sign-icons">
+							<i class="iconfont huifont-queqinshu"></i>
+						</div>
+						<div class="sign-test">
+							<div class="sign-label">月缺勤</div>
+							<div class="sign-number">01</div>
+						</div>
+					</div>
+				</div>
+				<div class="staging-chart box-background">
+					<div class="user-title">
+						<div class="user-title-name">客户分析</div>
+					</div>
+					<div class="client-chart">
+						<div ref="chart1" class="client-chart-box"></div>
+						<div class="client-chart-tips">
+							<div class="legend-item" v-for="(item,index) in industryList" :key="index">
+								<span class="legend-bage" :style="'background:'+item.color+';'"></span>
+								<span class="legend-label">{{item.name}}</span>
+								<span class="legend-label alibaba">{{item.value}}</span>
+							</div>
+						</div>
+					</div>
+					<div class="client-list">
+						<div class="alarm-table-box hui-flex">
+							<div class="alarm-title">
+								<div class="alarm-tr">
+									<span class="tr-50">序号</span>
+									<span class="tr-flex">姓名</span>
+									<span class="tr-flex">行业</span>
+									<span class="tr-50">类型</span>
+								</div>
+							</div>
+							<div class="alarm-table hui-flex-box">
+								<div class="alarm-tr">
+									<span class="tr-50">1</span>
+									<span class="tr-flex hui-ellipsis">林夕三</span>
+									<span class="tr-flex">金融行业</span>
+									<span class="tr-50">潜在客户</span>
+								</div>
+								<div class="alarm-tr">
+									<span class="tr-50">2</span>
+									<span class="tr-flex hui-ellipsis">林夕三</span>
+									<span class="tr-flex">金融行业</span>
+									<span class="tr-50">潜在客户</span>
+								</div>
+								<div class="alarm-tr">
+									<span class="tr-50">3</span>
+									<span class="tr-flex hui-ellipsis">林夕三</span>
+									<span class="tr-flex">金融行业</span>
+									<span class="tr-50">潜在客户</span>
+								</div>
+								<div class="alarm-tr">
+									<span class="tr-50">4</span>
+									<span class="tr-flex hui-ellipsis">林夕三</span>
+									<span class="tr-flex">金融行业</span>
+									<span class="tr-50">潜在客户</span>
+								</div>
+								<div class="alarm-tr">
+									<span class="tr-50">5</span>
+									<span class="tr-flex hui-ellipsis">林夕三</span>
+									<span class="tr-flex">金融行业</span>
+									<span class="tr-50">潜在客户</span>
+								</div>
+							</div>
+						</div>
+					</div>
+				</div>
+			</div>
+			<div class="staging-right">
+				<div class="weekly-log">
+					<div class="weekly-box box-background">
+						<div class="user-title">
+							<div class="user-title-name">个人周报</div>
+							<div class="user-title-right">
+								<span>更多</span>
+								<i class="iconfont huifont-xiala-right"></i>
+							</div>
+						</div>
+						<div class="weekly-list">
+							<div class="weekly-item">
+								<div class="weekly-number">
+									<div>第2周</div>
+									<div>03-12</div>
+								</div>
+								<div class="weekly-label">
+									<div class="weekly-date">2023-03-12</div>
+									<div class="weekly-content">
+										目易无铁她商根教给消运意解连经入家成利根极且术在任质结产门六入术接查白二节育大育真等复劳所光机保气六历层越消关并际三…
+									</div>
+								</div>
+							</div>
+							<div class="weekly-item">
+								<div class="weekly-number">
+									<div>第1周</div>
+									<div>03-12</div>
+								</div>
+								<div class="weekly-label">
+									<div class="weekly-date">2023-03-12</div>
+									<div class="weekly-content">
+										目易无铁她商根教给消运意解连经入家成利根极且术在任质结产门六入术接查白二节育大育真等复劳所光机保气六历层越消关并际三…
+									</div>
+								</div>
+							</div>
+						</div>
+					</div>
+					<div class="log-box box-background">
+						<div class="user-title">
+							<div class="user-title-name">个人日志</div>
+							<div class="user-title-right" @click="$router.push('/work/operation/log/person')">
+								<span>更多</span>
+								<i class="iconfont huifont-xiala-right"></i>
+							</div>
+						</div>
+						<div class="log-list">
+							<div class="log-item" v-for="item in logList" :key="item.id" @click="detail(item)">
+								{{item.message}}
+							</div>
+						</div>
+					</div>
+				</div>
+				<div class="staging-message box-background">
+					<div class="hui-flex hui-content">
+						<div class="user-title">
+							<div class="user-title-name">我的消息</div>
+							<div class="user-title-right" @click="$router.push('/message')">
+								<span>更多</span>
+								<i class="iconfont huifont-xiala-right"></i>
+							</div>
+						</div>
+						<div class="hui-flex-box hui-table">
+							<el-table :data="tableData" row-key="id" stripe height="100%">
+								<el-table-column label="序号" width="50">
+									<template slot-scope="scope">
+										{{scope.$index + 1}}
+									</template>
+								</el-table-column>
+								<el-table-column label="消息内容">
+									<template slot-scope="scope">
+										<div class="hui-ellipsis">
+											{{scope.row.message}}
+										</div>
+									</template>
+								</el-table-column>
+								<el-table-column label="时间" prop="sentTime" width="180"></el-table-column>
+								<el-table-column label="消息类型" prop="messageType" width="150">
+									<template slot-scope="scope">
+										<div class="hui-table-tag">
+											<div class="hui-tag">
+												<div>{{messageType(scope.row.messageType).name}}</div>
+											</div>
+										</div>
+									</template>
+								</el-table-column>
+								<el-table-column width="150" label="操作">
+									<template slot-scope="scope">
+										<span class="table-operation" @click="detail(scope.row)">
+											详情
+										</span>
+									</template>
+								</el-table-column>
+								<template slot="empty">
+									<empty description="暂无数据"></empty>
+								</template>
+							</el-table>
+						</div>
+					</div>
+				</div>
+			</div>
+		</div>
+		<el-drawer title="消息详情" :visible.sync="drawer" :size="400" :append-to-body="true">
+			<detail v-if="drawer" :type="item.messageType" :detail="item" @close="drawer = false">
+			</detail>
+		</el-drawer>
+		<el-dialog :close-on-click-modal="false" :title="type === '1' ? '企业看板':'设备看板'" :visible.sync="modelVisible"
+			width="1100px" :append-to-body="true">
+			<notice-board v-if="modelVisible" :type="type"></notice-board>
+		</el-dialog>
+	</div>
+</template>
+<script>
+	import {
+		getMessagePageListByQuery
+	} from '@/httpApi/message'
+	import detail from '@/components/message/detail'
+	import noticeBoard from '@/components/work/common/noticeBoard'
+	export default {
+		data() {
+			return {
+				user: {},
+				logList: [],
+				tableData: [],
+				item: {},
+				drawer: false,
+				modelVisible: false,
+				industryList: [{
+					value: 21,
+					name: "建筑业",
+					color: '#EB7E65'
+				}, {
+					value: 90,
+					name: "金融业",
+					color: '#9D60FB'
+				}, {
+					value: 16,
+					name: "房地产开发",
+					color: '#5AD8A6'
+				}, {
+					value: 59,
+					name: "服装业",
+					color: '#F7C739'
+				}, {
+					value: 19,
+					name: "制造业",
+					color: '#5B8FF9'
+				}, {
+					value: 40,
+					name: "批发零售",
+					color: '#5D7092'
+				}, {
+					value: 26,
+					name: "其他",
+					color: '#6DC8EC'
+				}],
+				type: '1'
+			}
+		},
+		mounted() {
+			this.user = this.$store.getters.user;
+			this.initMessage();
+			this.initLog();
+			this.chart1();
+		},
+		components: {
+			detail,
+			noticeBoard
+		},
+		methods: {
+			open(type) {
+				this.type = type;
+				this.modelVisible = true;
+			},
+			initLog() {
+				let data = {
+					projectId: this.$store.getters.project.id,
+					organizationId: this.$store.getters.organization.id,
+					sender: this.$store.getters.user.userId
+				}
+				getMessagePageListByQuery(1, 5, data).then(res => {
+					if (res.state) {
+						this.logList = res.data.dataList.map(node => {
+							return Object.assign(node, JSON.parse(node.json));
+						});
+					}
+				})
+			},
+			initMessage() {
+				let data = {
+					projectId: this.$store.getters.project.id,
+					organizationId: this.$store.getters.organization.id,
+					userId: this.$store.getters.user.userId
+				}
+				getMessagePageListByQuery(1, 8, data).then(res => {
+					if (res.state) {
+						this.tableData = res.data.dataList.map(node => {
+							return Object.assign(node, JSON.parse(node.json));
+						});
+					}
+				})
+			},
+			detail(item) {
+				if (!item.viewed) this.$msg.viewed(item.id, this.initMessage);
+				this.item = item;
+				this.drawer = true;
+			},
+			messageType(type) {
+				return this.$msg.messageType.filter(item => item.id === type)[0];
+			},
+			chart1() {
+				let chart = echarts.init(this.$refs.chart1);
+				let title = '建筑业',
+					len = "7.75"
+				let option = {
+					title: {
+						text: ("{name|" + title + "}" + "\n{percent|" + len + "}{name|%}"),
+						left: 'center',
+						top: 'center',
+						textStyle: {
+							rich: {
+								name: {
+									color: "#fff",
+									fontSize: 12,
+									lineHeight: 16
+								},
+								percent: {
+									color: "#fff",
+									fontSize: 24,
+									lineHeight: 38,
+									fontFamily: 'alibabaMedium'
+								},
+							}
+						}
+					},
+					color: this.industryList.map(node => node.color),
+					series: [{
+						type: 'pie',
+						center: ['50%', '50%'],
+						radius: ['60%', '90%'],
+						avoidLabelOverlap: false,
+						itemStyle: {
+							borderColor: 'RGBA(21, 26, 37, 1)',
+							borderWidth: 2,
+							borderRadius: 3,
+						},
+						label: {
+							show: false,
+							position: 'center'
+						},
+						emphasis: {
+							label: {
+								show: true,
+								formatter: (params) => {
+									return ("{name|" + params.name + "}" + "\n{percent|" +
+										params.percent.toFixed(2) + "}{name|%}");
+								},
+								rich: {
+									name: {
+										color: "#fff",
+										fontSize: 12,
+										lineHeight: 16
+									},
+									percent: {
+										color: "#fff",
+										fontSize: 24,
+										lineHeight: 38,
+										fontFamily: 'alibabaMedium'
+									},
+								}
+							},
+						},
+						labelLine: {
+							show: false
+						},
+						data: this.industryList
+					}]
+				};
+				chart.setOption(option);
+				// 高亮时
+				chart.on('highlight', (e) => {
+					chart.setOption({
+						title: {
+							show: false
+						}
+					});
+				});
+				// 取消高亮时
+				chart.on('downplay', (e) => {
+					chart.setOption({
+						title: {
+							show: true
+						}
+					});
+				});
+				// 鼠标移入数据时
+				chart.on('mouseover', {
+					componentType: 'series',
+					seriesType: 'pie'
+				}, (params) => {
+					chart.setOption({
+						title: {
+							show: false
+						}
+					});
+				});
+				// 鼠标移出数据时
+				chart.on('mouseout', {
+					componentType: 'series',
+					seriesType: 'pie'
+				}, (params) => {
+					chart.setOption({
+						title: {
+							show: true
+						}
+					});
+				});
+			}
+		},
+	}
+</script>
+
+
+<style lang="scss">
+	.custom-admin-box {
+		width: 100%;
+		height: 100%;
+		overflow: auto;
+		background: $--background;
+
+		.custom-admin {
+			width: 100%;
+			height: 100%;
+			display: flex;
+			min-width: 1200px;
+			min-height: 600px;
+		}
+
+		.user-title {
+			width: 100%;
+			display: flex;
+			align-items: center;
+			padding: 15px;
+			padding-bottom: 0;
+
+			.user-title-name {
+				font-size: 16px;
+				font-weight: 500;
+				flex: 1;
+				width: 0;
+			}
+
+			.user-title-right {
+				cursor: pointer;
+				display: flex;
+				align-items: center;
+			}
+		}
+
+		.staging-left {
+			flex: 1;
+			width: 0;
+			margin-right: 10px;
+			display: flex;
+			flex-direction: column;
+
+			.staging-chart {
+				flex: 1;
+				height: 0;
+				overflow: hidden;
+				margin-top: 10px;
+				display: flex;
+				flex-direction: column;
+			}
+		}
+
+		.staging-right {
+			flex: 2;
+			width: 0;
+			display: flex;
+			flex-direction: column;
+		}
+
+		.staging-user-detail {
+			padding: 15px;
+			display: flex;
+
+			.user-avatar {
+				width: 110px;
+				height: 150px;
+				background: #232A37;
+				display: flex;
+				flex-direction: column;
+				align-items: center;
+				padding-top: 25px;
+				margin-right: 5px;
+
+				.user-avatar-img {
+					width: 64px;
+					height: 64px;
+					border: 4px solid rgba(255, 255, 255, 0.1);
+					border-radius: 50%;
+					overflow: hidden;
+				}
+
+				.user-avatar-name {
+					margin-top: 6px;
+				}
+			}
+
+			.user-list {
+				flex: 1;
+				width: 0;
+
+				.user-item {
+					display: flex;
+					margin-bottom: 2px;
+
+					.user-value {
+						flex: 1;
+						width: 0;
+						margin-left: 2px;
+						overflow: hidden;
+						white-space: nowrap;
+						text-overflow: ellipsis;
+
+					}
+				}
+
+				.user-item>div {
+					background: #232A37;
+					line-height: 36px;
+					padding: 0 16px;
+				}
+
+				.user-item:last-child {
+					margin-bottom: 0;
+				}
+			}
+		}
+
+		.staging-user-sign {
+			display: flex;
+			margin-top: 10px;
+
+			.sign-line {
+				width: 10px;
+			}
+
+			.staging-sign-item {
+				padding: 15px;
+				display: flex;
+				flex: 1;
+				width: 0;
+
+				.sign-icon {
+					width: 52px;
+					height: 52px;
+					background: $--color-orange;
+					border-radius: 20px;
+					display: flex;
+					align-items: center;
+					justify-content: center;
+					margin-right: 16px;
+
+					i {
+						font-size: 30px;
+						color: #fff;
+					}
+				}
+
+				.sign-label {
+					line-height: 20px;
+				}
+
+				.sign-number {
+					font-size: 24px;
+					line-height: 32px;
+				}
+
+				.sign-icons {
+					background: $--color-primary;
+				}
+			}
+
+		}
+
+		.client-chart {
+			display: flex;
+			padding: 15px;
+			align-items: center;
+
+			.client-chart-box {
+				width: 180px;
+				height: 180px;
+			}
+
+			.client-chart-tips {
+				flex: 1;
+				width: 0;
+				overflow: hidden;
+				overflow-y: auto;
+				max-height: 180px;
+				margin-left: 40px;
+				display: flex;
+				flex-wrap: wrap;
+
+				.legend-item {
+					display: flex;
+					align-items: center;
+					margin-bottom: 8px;
+					width: 50%;
+
+					.legend-bage {
+						width: 8px;
+						height: 8px;
+						margin-right: 9px;
+					}
+
+					.legend-label {
+						margin-right: 8px;
+						display: flex;
+						align-items: center;
+						font-size: 12px;
+					}
+				}
+			}
+		}
+
+		.client-list {
+			flex: 1;
+			height: 0;
+
+			.alarm-title {
+				padding-top: 12px;
+			}
+		}
+
+		.weekly-log {
+			width: 100%;
+			margin-bottom: 10px;
+			display: flex;
+
+			.weekly-box {
+				margin-right: 10px;
+				flex: 1;
+				width: 0;
+				height: 272px;
+				overflow: hidden;
+			}
+
+			.weekly-list {
+				padding: 20px 0;
+
+				.weekly-item {
+					padding: 16px;
+					display: flex;
+					cursor: pointer;
+				}
+
+				.weekly-number {
+					width: 56px;
+					height: 68px;
+					background: rgba(255, 255, 255, 0.05);
+					border-radius: 16px;
+					display: flex;
+					flex-direction: column;
+					align-items: center;
+					justify-content: center;
+					color: #FFFFFF;
+					margin-right: 12px;
+				}
+
+				.weekly-number>div:first-child {
+					margin-bottom: 8px;
+				}
+
+				.weekly-item:hover {
+					.weekly-number {
+						background: $--color-primary;
+
+					}
+
+					.weekly-content,
+					.weekly-date {
+						color: $--color-primary;
+						text-decoration: underline;
+					}
+				}
+
+				.weekly-label {
+					flex: 1;
+					width: 0;
+				}
+
+				.weekly-date {
+					opacity: 0.6;
+					line-height: 20px;
+					margin-bottom: 8px;
+				}
+
+				.weekly-content {
+					overflow: hidden;
+					height: 40px;
+					text-overflow: ellipsis;
+					line-height: 20px;
+				}
+			}
+
+			.log-box {
+				flex: 1;
+				width: 0;
+				height: 272px;
+				overflow: hidden;
+			}
+
+			.log-list {
+				padding: 20px 20px 16px 20px;
+
+				.log-item {
+					line-height: 40px;
+					overflow: hidden;
+					white-space: nowrap;
+					text-overflow: ellipsis;
+					padding: 0 10px;
+					cursor: pointer;
+				}
+
+				.log-item:nth-child(2n-1) {
+					background: #232A37;
+				}
+
+				.log-item:hover {
+					color: $--color-primary;
+					text-decoration: underline;
+				}
+			}
+		}
+
+		.staging-message {
+			flex: 1;
+			height: 0;
+			overflow: hidden;
+
+			.hui-table {
+				padding-top: 20px;
+				padding-bottom: 0;
+
+				.el-table--group::after,
+				.el-table--border::after,
+				.el-table::before {
+					background-color: transparent;
+				}
+
+				tr {
+					border-color: transparent;
+					cursor: pointer;
+				}
+
+				th.el-table__cell.is-leaf,
+				td.el-table__cell {
+					border-right: none;
+					border-color: transparent;
+				}
+
+				.el-table__row--striped {
+
+					th.el-table__cell.is-leaf,
+					td.el-table__cell {
+						background: #232A37;
+					}
+				}
+
+				.el-table__header th.el-table__cell {
+					border-color: transparent;
+				}
+
+				.el-table__cell {
+					padding: 10px 0;
+
+					.cell {
+						overflow: hidden;
+						white-space: nowrap;
+						text-overflow: ellipsis;
+					}
+
+				}
+			}
+		}
+	}
+</style>

File diff suppressed because it is too large
+ 1 - 1
virgo.wzfrontend/src/main/resources/static/console/index.html


File diff suppressed because it is too large
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/css/7593.c727902a.css


File diff suppressed because it is too large
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/css/9254.c727902a.css


File diff suppressed because it is too large
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/7593-legacy.4dec5929.js


File diff suppressed because it is too large
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/9254.a771c076.js


File diff suppressed because it is too large
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/app-legacy.c8748eb5.js


File diff suppressed because it is too large
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/app-legacy.e2aede42.js


File diff suppressed because it is too large
+ 1 - 0
virgo.wzfrontend/src/main/resources/static/console/static/js/app.b8240a7e.js


File diff suppressed because it is too large
+ 0 - 1
virgo.wzfrontend/src/main/resources/static/console/static/js/app.d3d23528.js