|
|
@@ -1,7 +1,7 @@
|
|
|
<template>
|
|
|
<div class="home-container">
|
|
|
- <el-row :gutter="20">
|
|
|
- <el-col :span="24">
|
|
|
+ <el-row :gutter="12" style="height: 158px;">
|
|
|
+ <el-col :span="24" class="box-col">
|
|
|
<el-card class="box-card">
|
|
|
<div slot="header" class="clearfix">
|
|
|
<span>常用功能</span>
|
|
|
@@ -25,11 +25,11 @@
|
|
|
"
|
|
|
>
|
|
|
<!-- <div class="common-function-item-content"> -->
|
|
|
- <div>
|
|
|
+ <div class="common-function-item-icon">
|
|
|
<!-- <i :class="item.icon || 'el-icon-s-opportunity'"></i> -->
|
|
|
- <img :src="item.icon || '~@/assets/home/commonIcon/icon_0.svg'" alt="">
|
|
|
+ <img :src="getIconPath(item.pic)" alt="">
|
|
|
</div>
|
|
|
- <div>{{ item.name }}</div>
|
|
|
+ <div class="common-function-item-name">{{ item.name }}</div>
|
|
|
<!-- </div> -->
|
|
|
</div>
|
|
|
</vuedraggable>
|
|
|
@@ -38,8 +38,8 @@
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
|
|
|
- <el-row :gutter="20" class="mt-20">
|
|
|
- <el-col :span="18">
|
|
|
+ <el-row :gutter="12" class="mt-20" style="height: 250px;">
|
|
|
+ <el-col :span="18" class="box-col">
|
|
|
<el-card class="box-card">
|
|
|
<div slot="header" class="clearfix">
|
|
|
<span>数据概览</span>
|
|
|
@@ -52,26 +52,20 @@
|
|
|
<div class="overview-top-img"><img src="~@/assets/home/my-project.svg" alt=""></div>
|
|
|
<div class="overview-top-content">
|
|
|
<div class="overview-top-content-name">我的项目</div>
|
|
|
- <div class="overview-top-content-count">123</div>
|
|
|
+ <div class="overview-top-content-count">{{ myProjectList['总数量'] || 0 }}</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<el-divider></el-divider>
|
|
|
<div class="overview-bottom">
|
|
|
- <div class="overview-bottom-item">
|
|
|
- <div class="overview-bottom-item-name">实施项目</div>
|
|
|
- <div class="overview-bottom-item-count">123</div>
|
|
|
- </div>
|
|
|
- <div class="overview-bottom-item">
|
|
|
- <div class="overview-bottom-item-name">开发项目</div>
|
|
|
- <div class="overview-bottom-item-count">123</div>
|
|
|
- </div>
|
|
|
- <div class="overview-bottom-item">
|
|
|
- <div class="overview-bottom-item-name">测试项目</div>
|
|
|
- <div class="overview-bottom-item-count">123</div>
|
|
|
- </div>
|
|
|
- <div class="overview-bottom-item">
|
|
|
- <div class="overview-bottom-item-name">研发项目</div>
|
|
|
- <div class="overview-bottom-item-count">123</div>
|
|
|
+ <div
|
|
|
+ v-for="(value, key) in myProjectList"
|
|
|
+ :key="key"
|
|
|
+ v-if="key !== '总数量'"
|
|
|
+ class="overview-bottom-item"
|
|
|
+ @click="handleTo(key)"
|
|
|
+ >
|
|
|
+ <div class="overview-bottom-item-name">{{ key }}</div>
|
|
|
+ <div class="overview-bottom-item-count">{{ value || 0 }}</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
@@ -82,26 +76,20 @@
|
|
|
<div class="overview-top-img"><img src="~@/assets/home/my-project.svg" alt=""></div>
|
|
|
<div class="overview-top-content">
|
|
|
<div class="overview-top-content-name">我的工单</div>
|
|
|
- <div class="overview-top-content-count">123</div>
|
|
|
+ <div class="overview-top-content-count">{{ myWorkOrderList['总数量'] || 0 }}</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<el-divider></el-divider>
|
|
|
<div class="overview-bottom">
|
|
|
- <div class="overview-bottom-item">
|
|
|
- <div class="overview-bottom-item-name">运维工单</div>
|
|
|
- <div class="overview-bottom-item-count">123</div>
|
|
|
- </div>
|
|
|
- <div class="overview-bottom-item">
|
|
|
- <div class="overview-bottom-item-name">生产工单</div>
|
|
|
- <div class="overview-bottom-item-count">123</div>
|
|
|
- </div>
|
|
|
- <div class="overview-bottom-item">
|
|
|
- <div class="overview-bottom-item-name">质检工单</div>
|
|
|
- <div class="overview-bottom-item-count">123</div>
|
|
|
- </div>
|
|
|
- <div class="overview-bottom-item">
|
|
|
- <div class="overview-bottom-item-name">盘点工单</div>
|
|
|
- <div class="overview-bottom-item-count">123</div>
|
|
|
+ <div
|
|
|
+ v-for="(value, key) in myWorkOrderList"
|
|
|
+ :key="key"
|
|
|
+ v-if="key !== '总数量'"
|
|
|
+ class="overview-bottom-item"
|
|
|
+ @click="handleTo(key)"
|
|
|
+ >
|
|
|
+ <div class="overview-bottom-item-name">{{ key }}</div>
|
|
|
+ <div class="overview-bottom-item-count">{{ value || 0 }}</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
@@ -112,26 +100,20 @@
|
|
|
<div class="overview-top-img"><img src="~@/assets/home/my-project.svg" alt=""></div>
|
|
|
<div class="overview-top-content">
|
|
|
<div class="overview-top-content-name">我的任务</div>
|
|
|
- <div class="overview-top-content-count">123</div>
|
|
|
+ <div class="overview-top-content-count">{{ myTaskList['总数量'] || 0 }}</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<el-divider></el-divider>
|
|
|
<div class="overview-bottom">
|
|
|
- <div class="overview-bottom-item">
|
|
|
- <div class="overview-bottom-item-name">项目任务</div>
|
|
|
- <div class="overview-bottom-item-count">123</div>
|
|
|
- </div>
|
|
|
- <div class="overview-bottom-item">
|
|
|
- <div class="overview-bottom-item-name">生产任务</div>
|
|
|
- <div class="overview-bottom-item-count">123</div>
|
|
|
- </div>
|
|
|
- <div class="overview-bottom-item">
|
|
|
- <div class="overview-bottom-item-name">质检任务</div>
|
|
|
- <div class="overview-bottom-item-count">123</div>
|
|
|
- </div>
|
|
|
- <div class="overview-bottom-item">
|
|
|
- <div class="overview-bottom-item-name">盘点任务</div>
|
|
|
- <div class="overview-bottom-item-count">123</div>
|
|
|
+ <div
|
|
|
+ v-for="(value, key) in myTaskList"
|
|
|
+ :key="key"
|
|
|
+ v-if="key !== '总数量'"
|
|
|
+ class="overview-bottom-item"
|
|
|
+ @click="handleTo(key)"
|
|
|
+ >
|
|
|
+ <div class="overview-bottom-item-name">{{ key }}</div>
|
|
|
+ <div class="overview-bottom-item-count">{{ value || 0 }}</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
@@ -140,14 +122,14 @@
|
|
|
</div>
|
|
|
</el-card>
|
|
|
</el-col>
|
|
|
- <el-col :span="6">
|
|
|
+ <el-col :span="6" class="box-col">
|
|
|
<el-card class="box-card">
|
|
|
<div slot="header" class="clearfix">
|
|
|
<span>统一门户</span>
|
|
|
</div>
|
|
|
- <div class="card-content">
|
|
|
+ <div class="card-content portal-content">
|
|
|
<div class="portal">
|
|
|
- <el-row :gutter="20">
|
|
|
+ <el-row :gutter="12">
|
|
|
<el-col :span="12" v-for="item in portals" :key="item.name" class="portal-item">
|
|
|
<div class="portal-item-content">
|
|
|
<div class="portal-item-img"><img :src="item.img" alt=""></div>
|
|
|
@@ -161,8 +143,8 @@
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
|
|
|
- <el-row :gutter="20" class="mt-20">
|
|
|
- <el-col :span="18">
|
|
|
+ <el-row :gutter="12" class="mt-20" style="height: 404px;">
|
|
|
+ <el-col :span="18" class="box-col">
|
|
|
<el-card class="box-card">
|
|
|
<!-- <div slot="header" class="clearfix">
|
|
|
<span>通知公告</span>
|
|
|
@@ -178,26 +160,29 @@
|
|
|
<el-tab-pane label="系统通知" name="system"></el-tab-pane>
|
|
|
</el-tabs>
|
|
|
|
|
|
- <div class="notification-list">
|
|
|
- <div v-for="(item, index) in currentNotifications" :key="index" class="notification-item">
|
|
|
+ <div v-if="notifications.length > 0" class="notification-list">
|
|
|
+ <div v-for="(item, index) in notifications" :key="index" class="notification-item">
|
|
|
<div class="notification-dot"></div>
|
|
|
<div class="notification-content">
|
|
|
<div class="notification-header">
|
|
|
<div class="notification-title">{{ item.title }}</div>
|
|
|
<div class="notification-text">{{ item.content }}</div>
|
|
|
</div>
|
|
|
- <div class="notification-info">{{ item.info }}</div>
|
|
|
+ <div class="notification-info">发文机关:{{ item.department }} {{ item.createUser }}</div>
|
|
|
</div>
|
|
|
- <div class="notification-date">{{ item.date }}</div>
|
|
|
+ <div class="notification-date">{{ item.createTime }}</div>
|
|
|
</div>
|
|
|
<div class="notification-more" @click="loadMoreNotifications">
|
|
|
更多......
|
|
|
</div>
|
|
|
</div>
|
|
|
+ <div v-else class="no-notification">
|
|
|
+ <el-empty description="暂无数据"></el-empty>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</el-card>
|
|
|
</el-col>
|
|
|
- <el-col :span="6">
|
|
|
+ <el-col :span="6" class="box-col">
|
|
|
<el-card class="box-card">
|
|
|
<div slot="header" class="clearfix">
|
|
|
<span>工作日历</span>
|
|
|
@@ -262,13 +247,17 @@
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
+import { notifyMessagePageAPI } from '@/api/bpm/task';
|
|
|
import {
|
|
|
- projectsPageAPI,
|
|
|
- projectsTaskPageAPI,
|
|
|
userResourceDeleteAPI,
|
|
|
userResourceListAPI,
|
|
|
- getList
|
|
|
+ getList,
|
|
|
+ getMyProjectTotal,
|
|
|
+ getMyWorkOrderTotal,
|
|
|
+ getMyTaskTotal
|
|
|
} from '@/api/home';
|
|
|
+import { deepClone } from 'ele-admin/lib/utils/core';
|
|
|
+import { mapGetters } from 'vuex';
|
|
|
import vuedraggable from 'vuedraggable';
|
|
|
import commonDialog from '@/views/home/common-dialog.vue';
|
|
|
export default {
|
|
|
@@ -279,154 +268,110 @@ export default {
|
|
|
},
|
|
|
data() {
|
|
|
return {
|
|
|
- activeMenu: 'workbench',
|
|
|
currentDate: new Date(),
|
|
|
calendarRange: [],
|
|
|
- commonFunctions: [
|
|
|
- { name: '出差申请', icon: 'el-icon-plane' },
|
|
|
- { name: '报销申请', icon: 'el-icon-document' },
|
|
|
- { name: '请假申请', icon: 'el-icon-time' },
|
|
|
- { name: '加班申请', icon: 'el-icon-clock' },
|
|
|
- { name: '日报', icon: 'el-icon-date' },
|
|
|
- { name: '周报', icon: 'el-icon-date' },
|
|
|
- { name: '月报', icon: 'el-icon-date' },
|
|
|
- { name: '出差申请1', icon: 'el-icon-plane' },
|
|
|
- { name: '报销申请2', icon: 'el-icon-document' },
|
|
|
- { name: '请假申请3', icon: 'el-icon-time' },
|
|
|
- { name: '加班申请4', icon: 'el-icon-clock' },
|
|
|
- { name: '日报5', icon: 'el-icon-date' },
|
|
|
- { name: '周报6', icon: 'el-icon-date' },
|
|
|
- { name: '月报7', icon: 'el-icon-date' }
|
|
|
- ],
|
|
|
- projectData: [
|
|
|
- { name: '实施项目', value: 30 },
|
|
|
- { name: '开发项目', value: 30 },
|
|
|
- { name: '测试项目', value: 30 },
|
|
|
- { name: '研发项目', value: 30 },
|
|
|
- { name: '运维工单', value: 30 },
|
|
|
- { name: '生产工单', value: 30 },
|
|
|
- { name: '质检工单', value: 30 },
|
|
|
- { name: '盘点工单', value: 30 }
|
|
|
- ],
|
|
|
- orderData: [
|
|
|
- { name: '运维工单', value: 30 },
|
|
|
- { name: '生产工单', value: 30 },
|
|
|
- { name: '质检工单', value: 30 },
|
|
|
- { name: '盘点工单', value: 30 }
|
|
|
- ],
|
|
|
- taskData: [
|
|
|
- { name: '项目任务', value: 30 },
|
|
|
- { name: '生产任务', value: 30 },
|
|
|
- { name: '质检任务', value: 30 },
|
|
|
- { name: '盘点任务', value: 30 }
|
|
|
- ],
|
|
|
- notifications: [
|
|
|
- {
|
|
|
- title: '关于门户界面升级的通知公告',
|
|
|
- info: '发文机关:总经办 联系人:张三',
|
|
|
- date: '2023-09-09'
|
|
|
- },
|
|
|
- {
|
|
|
- title: '关于门户界面升级的通知公告',
|
|
|
- info: '发文机关:总经办 联系人:张三',
|
|
|
- date: '2023-09-09'
|
|
|
- },
|
|
|
- {
|
|
|
- title: '关于门户界面升级的通知公告',
|
|
|
- info: '发文机关:总经办 联系人:张三',
|
|
|
- date: '2023-09-09'
|
|
|
- },
|
|
|
- {
|
|
|
- title: '关于门户界面升级的通知公告',
|
|
|
- info: '发文机关:总经办 联系人:张三',
|
|
|
- date: '2023-09-09'
|
|
|
- }
|
|
|
- ],
|
|
|
- activeTab: 'notice',
|
|
|
- notifications: {
|
|
|
- notice: [
|
|
|
- {
|
|
|
- title: '关于门户界面升级的通知公告',
|
|
|
- info: '发文机关:总经办 拟稿人:张三',
|
|
|
- content: '连日来,外交部和中国民航局全力协调,紧急派出航班协助滞留中东地区中国旅客回国。外交部领事保护中心建议……',
|
|
|
- date: '2023-03-09'
|
|
|
- },
|
|
|
- {
|
|
|
- title: '关于门户界面升级的通知公告',
|
|
|
- info: '发文机关:总经办 拟稿人:张三',
|
|
|
- content: '连日来,外交部和中国民航局全力协调,紧急派出航班协助滞留中东地区中国旅客回国。外交部领事保护中心建议……',
|
|
|
- date: '2023-03-09'
|
|
|
- },
|
|
|
- {
|
|
|
- title: '关于门户界面升级的通知公告',
|
|
|
- info: '发文机关:总经办 拟稿人:张三',
|
|
|
- content: '连日来,外交部和中国民航局全力协调,紧急派出航班协助滞留中东地区中国旅客回国。外交部领事保护中心建议……',
|
|
|
- date: '2023-03-09'
|
|
|
- },
|
|
|
- {
|
|
|
- title: '关于门户界面升级的通知公告',
|
|
|
- info: '发文机关:总经办 拟稿人:张三',
|
|
|
- content: '连日来,外交部和中国民航局全力协调,紧急派出航班协助滞留中东地区中国旅客回国。外交部领事保护中心建议……',
|
|
|
- date: '2023-03-09'
|
|
|
- }
|
|
|
- ],
|
|
|
- industry: [
|
|
|
- {
|
|
|
- title: '行业发展趋势分析',
|
|
|
- info: '来源:行业协会 发布人:李四',
|
|
|
- content: '近年来,人工智能技术在各行业的应用日益广泛,为企业数字化转型提供了强大动力……',
|
|
|
- date: '2023-03-08'
|
|
|
- },
|
|
|
- {
|
|
|
- title: '市场调研报告',
|
|
|
- info: '来源:市场研究机构 发布人:王五',
|
|
|
- content: '根据最新市场调研数据显示,2023年上半年市场需求呈现稳步增长趋势……',
|
|
|
- date: '2023-03-07'
|
|
|
- }
|
|
|
- ],
|
|
|
- system: [
|
|
|
- {
|
|
|
- title: '系统升级通知',
|
|
|
- info: '发布人:系统管理员',
|
|
|
- content: '系统将于今晚23:00-次日凌晨2:00进行升级维护,期间系统可能暂时无法访问,请提前做好准备。',
|
|
|
- date: '2023-03-06'
|
|
|
- },
|
|
|
- {
|
|
|
- title: '数据备份通知',
|
|
|
- info: '发布人:系统管理员',
|
|
|
- content: '系统已完成本月数据备份,备份文件已存储至安全位置。',
|
|
|
- date: '2023-03-01'
|
|
|
- }
|
|
|
- ]
|
|
|
- },
|
|
|
+ commonFunctions: [],
|
|
|
+ activeTab: 'system',
|
|
|
+ notifications: [],
|
|
|
currentPage: 1,
|
|
|
pageSize: 4,
|
|
|
portals: [],
|
|
|
- schedules: [
|
|
|
- { time: '10:00-12:00', content: '研发项目"产品启动会"' },
|
|
|
- { time: '10:00-12:00', content: '**工单' },
|
|
|
- { time: '10:00-12:00', content: '**工单' }
|
|
|
- ],
|
|
|
calendarShowMore: false,
|
|
|
isDelFlag: false,
|
|
|
- commonDialogFlag: false
|
|
|
+ commonDialogFlag: false,
|
|
|
+ myProjectList: {},
|
|
|
+ myWorkOrderList: {},
|
|
|
+ myTaskList: {}
|
|
|
};
|
|
|
},
|
|
|
computed: {
|
|
|
+ ...mapGetters(['user']),
|
|
|
currentNotifications() {
|
|
|
const notifications = this.notifications[this.activeTab] || [];
|
|
|
- const start = (this.currentPage - 1) * this.pageSize;
|
|
|
- const end = start + this.pageSize;
|
|
|
- return notifications.slice(0, end);
|
|
|
+ return notifications;
|
|
|
}
|
|
|
},
|
|
|
created() {
|
|
|
this.calendarRange = this.getWeekRange();
|
|
|
this.getPortalsList();
|
|
|
this.getCommonFunctionsList();
|
|
|
+ this.getMyProjectTotal();
|
|
|
+ this.getMyWorkOrderTotal();
|
|
|
+ this.getMyTaskTotal();
|
|
|
+ this.getMessageList();
|
|
|
},
|
|
|
methods: {
|
|
|
+ handleTo(key) {
|
|
|
+ switch(key) {
|
|
|
+ case '测试项目':
|
|
|
+ case '研发项目':
|
|
|
+ case '实施项目':
|
|
|
+ case '开发项目':
|
|
|
+ this.handelRouterTo('/page-pro/project-initiation')
|
|
|
+ break;
|
|
|
+ case '运维工单':
|
|
|
+ this.handelRouterTo('/page-eam/maintenance/patrol')
|
|
|
+ break;
|
|
|
+ case '质检工单':
|
|
|
+ this.handelRouterTo('/page-qms/inspectionWork')
|
|
|
+ break;
|
|
|
+ case '生产工单':
|
|
|
+ this.handelRouterTo('/page-mes/produceOrder')
|
|
|
+ break;
|
|
|
+ case '盘点工单':
|
|
|
+ this.handelRouterTo('/page-wms/warehouseManagement/stocktaking/work')
|
|
|
+ break;
|
|
|
+ case '盘点任务':
|
|
|
+ this.handelRouterTo('')
|
|
|
+ break;
|
|
|
+ case '生产任务':
|
|
|
+ this.handelRouterTo('/page-mes/rw')
|
|
|
+ break;
|
|
|
+ case '质检任务':
|
|
|
+ this.handelRouterTo('/page-qms/inspectionProjectTask')
|
|
|
+ break;
|
|
|
+ case '项目任务':
|
|
|
+ this.handelRouterTo('/page-pro/task/myTaskList')
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ async getMessageList() {
|
|
|
+ let list = [];
|
|
|
+ if(this.activeTab === 'notice') {
|
|
|
+ list = []
|
|
|
+ } else if(this.activeTab === 'industry') {
|
|
|
+ list = []
|
|
|
+ } else if(this.activeTab === 'system') {
|
|
|
+ const res = await notifyMessagePageAPI({
|
|
|
+ pageNum: 1,
|
|
|
+ size: 5,
|
|
|
+ userId: this.user.info.userId
|
|
|
+ });
|
|
|
+ list = (res.list || []).map((item) => {
|
|
|
+ return {
|
|
|
+ title: item.templateName,
|
|
|
+ content: item.templateContent,
|
|
|
+ createUser: '创建人:' + item.userName,
|
|
|
+ department: item.department,
|
|
|
+ createTime: item.createTime
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ this.notifications = list;
|
|
|
+ console.log('notifications~~~', this.notifications);
|
|
|
+ },
|
|
|
+ async getMyProjectTotal() {
|
|
|
+ this.myProjectList = await getMyProjectTotal({});
|
|
|
+ },
|
|
|
+ async getMyWorkOrderTotal() {
|
|
|
+ this.myWorkOrderList = await getMyWorkOrderTotal({});
|
|
|
+ },
|
|
|
+ async getMyTaskTotal() {
|
|
|
+ this.myTaskList = await getMyTaskTotal({});
|
|
|
+ },
|
|
|
handleAdd() {
|
|
|
+ if(this.commonFunctions.length > 10) return this.$message.warning('最多只能添加10个常用功能');
|
|
|
this.commonDialogFlag = true;
|
|
|
this.$nextTick(() => {
|
|
|
this.$refs.commonDialogRef.init();
|
|
|
@@ -439,6 +384,7 @@ export default {
|
|
|
if (this.isDelFlag) return this.handleCommonListDel(item, index);
|
|
|
|
|
|
let urlPath = item.topUrl + item.url;
|
|
|
+ console.log('urlPath~~~', urlPath);
|
|
|
this.handelRouterTo(urlPath);
|
|
|
},
|
|
|
async handleCommonListDel(item, index) {
|
|
|
@@ -448,6 +394,14 @@ export default {
|
|
|
handelRouterTo(path) {
|
|
|
window.history.pushState(null, '', path);
|
|
|
},
|
|
|
+ getIconPath(pic) {
|
|
|
+ if (pic) {
|
|
|
+ // 如果后端返回的是静态路径字符串,需要通过 require() 处理
|
|
|
+ return require(`@/assets/home/commonIcon/${pic}`);
|
|
|
+ }
|
|
|
+ // 如果没有 pic 字段,使用默认图标
|
|
|
+ return require('@/assets/home/commonIcon/icon_0.svg');
|
|
|
+ },
|
|
|
async getCommonFunctionsList() {
|
|
|
this.commonFunctions = await userResourceListAPI();
|
|
|
console.log('commonFunctions~~~', this.commonFunctions);
|
|
|
@@ -476,11 +430,23 @@ export default {
|
|
|
},
|
|
|
handleTabClick() {
|
|
|
// 切换标签页时重置页码
|
|
|
- this.currentPage = 1;
|
|
|
+ // this.currentPage = 1;
|
|
|
+ this.getMessageList();
|
|
|
},
|
|
|
loadMoreNotifications() {
|
|
|
// 加载更多通知(增加页码)
|
|
|
- this.currentPage++;
|
|
|
+ // this.currentPage++;
|
|
|
+ switch(this.activeTab) {
|
|
|
+ case 'notice':
|
|
|
+ this.handelRouterTo('/notice');
|
|
|
+ break;
|
|
|
+ case 'industry':
|
|
|
+ this.handelRouterTo('/industry');
|
|
|
+ break;
|
|
|
+ case 'system':
|
|
|
+ this.handelRouterTo('/page-wt/message');
|
|
|
+ break;
|
|
|
+ }
|
|
|
},
|
|
|
// 获取当天所在周的范围,周一开头
|
|
|
getWeekRange() {
|
|
|
@@ -540,8 +506,41 @@ export default {
|
|
|
box-sizing: border-box;
|
|
|
display: flex;
|
|
|
flex-direction: column;
|
|
|
- height: calc(100vh - 96px);
|
|
|
+ // height: calc(100vh - 96px);
|
|
|
.card-content {
|
|
|
+ &.portal-content {
|
|
|
+ max-height: 180px;
|
|
|
+ overflow-y: auto;
|
|
|
+ overflow-x: hidden;
|
|
|
+ padding-right: 8px;
|
|
|
+ flex-shrink: 0;
|
|
|
+ min-height: 0;
|
|
|
+
|
|
|
+ .portal {
|
|
|
+ max-height: 100%;
|
|
|
+ overflow-y: auto;
|
|
|
+ overflow-x: hidden;
|
|
|
+ }
|
|
|
+
|
|
|
+ &::-webkit-scrollbar {
|
|
|
+ width: 6px;
|
|
|
+ }
|
|
|
+
|
|
|
+ &::-webkit-scrollbar-track {
|
|
|
+ background: #f1f1f1;
|
|
|
+ border-radius: 3px;
|
|
|
+ }
|
|
|
+
|
|
|
+ &::-webkit-scrollbar-thumb {
|
|
|
+ background: #c1c1c1;
|
|
|
+ border-radius: 3px;
|
|
|
+ }
|
|
|
+
|
|
|
+ &::-webkit-scrollbar-thumb:hover {
|
|
|
+ background: #a8a8a8;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
.common-function {
|
|
|
display: flex;
|
|
|
flex-wrap: wrap;
|
|
|
@@ -552,19 +551,33 @@ export default {
|
|
|
flex-direction: column;
|
|
|
justify-content: center;
|
|
|
align-items: center;
|
|
|
- width: 50px;
|
|
|
- height: 50px;
|
|
|
- margin: 5px;
|
|
|
+ margin: 0 20px;
|
|
|
border-radius: 5px;
|
|
|
- background-color: #f0f2f5;
|
|
|
cursor: pointer;
|
|
|
transition: all 0.3s ease-in-out;
|
|
|
- &:hover {
|
|
|
- background-color: #e4e7ed;
|
|
|
+ .common-function-item-icon {
|
|
|
+ width: 56px;
|
|
|
+ height: 56px;
|
|
|
+ box-shadow: 0px 1px 2px 1px #eae7e7;
|
|
|
+ background: #f8fafc;
|
|
|
+ border-radius: 17px;
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ align-items: center;
|
|
|
+ img {
|
|
|
+ width: 32px;
|
|
|
+ height: 32px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .common-function-item-name {
|
|
|
+ font-size: 16px;
|
|
|
+ font-weight: 400;
|
|
|
+ color: #7a7a7a;
|
|
|
+ margin-top: 10px;
|
|
|
}
|
|
|
}
|
|
|
.div-del {
|
|
|
- background: #cccccc !important;
|
|
|
+ // background: #cccccc !important;
|
|
|
position: relative;
|
|
|
}
|
|
|
|
|
|
@@ -580,7 +593,7 @@ export default {
|
|
|
|
|
|
.overview-container {
|
|
|
.overview {
|
|
|
- padding: 20px;
|
|
|
+ padding: 16px;
|
|
|
box-sizing: border-box;
|
|
|
border-radius: 17px;
|
|
|
box-shadow: -1px 1px 0px 1px #ececec, 1px -1px 0px 1px #ececec;
|
|
|
@@ -590,8 +603,8 @@ export default {
|
|
|
justify-content: flex-start;
|
|
|
align-items: center;
|
|
|
.overview-top-img {
|
|
|
- width: 70px;
|
|
|
- height: 70px;
|
|
|
+ width: 66px;
|
|
|
+ height: 66px;
|
|
|
border-radius: 50%;
|
|
|
margin-right: 10px;
|
|
|
img {
|
|
|
@@ -605,20 +618,21 @@ export default {
|
|
|
justify-content: center;
|
|
|
align-items: flex-start;
|
|
|
.overview-top-content-name {
|
|
|
- font-size: 20px;
|
|
|
+ font-size: 18px;
|
|
|
font-weight: 500;
|
|
|
color: #525252;;
|
|
|
}
|
|
|
.overview-top-content-count {
|
|
|
- font-size: 35px;
|
|
|
+ font-size: 28px;
|
|
|
font-weight: 500;
|
|
|
color: #2D80EE;
|
|
|
line-height: 42px;
|
|
|
+ margin-top: 8px;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
.el-divider {
|
|
|
- margin: 20px 0;
|
|
|
+ margin: 12px 0;
|
|
|
}
|
|
|
.overview-bottom {
|
|
|
display: grid;
|
|
|
@@ -628,14 +642,15 @@ export default {
|
|
|
display: flex;
|
|
|
justify-content: flex-start;
|
|
|
align-items: center;
|
|
|
+ cursor: pointer;
|
|
|
.overview-bottom-item-name {
|
|
|
- font-size: 20px;
|
|
|
+ font-size: 16px;
|
|
|
font-weight: 400;
|
|
|
color: #7a7a7a;
|
|
|
margin-right: 30px;
|
|
|
}
|
|
|
.overview-bottom-item-count {
|
|
|
- font-size: 20px;
|
|
|
+ font-size: 16px;
|
|
|
font-weight: 400;
|
|
|
color: #303133;
|
|
|
}
|
|
|
@@ -646,7 +661,7 @@ export default {
|
|
|
|
|
|
.portal {
|
|
|
.portal-item {
|
|
|
- margin-bottom: 20px;
|
|
|
+ margin-bottom: 12px;
|
|
|
.portal-item-content {
|
|
|
display: flex;
|
|
|
justify-content: flex-start;
|
|
|
@@ -749,7 +764,18 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
.mt-20 {
|
|
|
- margin-top: 20px;
|
|
|
+ margin-top: 16px;
|
|
|
+}
|
|
|
+
|
|
|
+.box-col {
|
|
|
+ height: 100%;
|
|
|
+}
|
|
|
+
|
|
|
+.box-card {
|
|
|
+ height: 100%;
|
|
|
+ ::v-deep .el-card__body {
|
|
|
+ padding: 12px;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/* 通知公告样式 */
|
|
|
@@ -757,6 +783,10 @@ export default {
|
|
|
margin-top: 16px;
|
|
|
}
|
|
|
|
|
|
+.no-notification {
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
.notification-item {
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
@@ -768,9 +798,9 @@ export default {
|
|
|
}
|
|
|
|
|
|
.notification-dot {
|
|
|
- width: 8px;
|
|
|
- height: 8px;
|
|
|
- background-color: #1890ff;
|
|
|
+ width: 15px;
|
|
|
+ height: 15px;
|
|
|
+ background-color: #a6ccff;;
|
|
|
border-radius: 50%;
|
|
|
margin-right: 12px;
|
|
|
margin-top: 5px;
|
|
|
@@ -796,7 +826,8 @@ export default {
|
|
|
white-space: nowrap;
|
|
|
overflow: hidden;
|
|
|
text-overflow: ellipsis;
|
|
|
- flex-shrink: 0;
|
|
|
+ flex-shrink: 1;
|
|
|
+ max-width: 200px;
|
|
|
}
|
|
|
|
|
|
.notification-info {
|