<template> <div class="content"> <div class="main"> <!-- 待办 头部 --> <a-layout-header class="todoBox"> <div class="left fl clearfix"> <!-- 待办 --> <span v-if="isshow == '1'"> <img src="@assets/todo.png" alt="?????" /> <div class="info" style="color:white; top:3%; left:26%;"> <span>我的待办</span> <a-badge class="numTips" style="backgroundColor:#f94f46;"> {{ todoList.length }} </a-badge> </div> </span> <!-- 无 待办 --> <span v-if="isshow == '2'"> <img src="@assets/nothing.png" alt="?????" /> <div class="info" style="top:2%; left:33%;"> <span style="color:white;">暂无待办</span> <a-badge class="numTips" style="color:#ffcf2d;backgroundColor:#ffcf2d;"> {{ todoList.length }} </a-badge> </div> </span> </div> <!-- 右边 --> <a href="#" @click.stop.prevent="todo()" class="more right fr clearfix"> <a-icon type="more" class="moreIcon" /> <a-divider type="vertical" /> <span>更多</span> </a> </a-layout-header> <!-- OA工作台 --> <a-card title="OA工作台" :bordered="false" style="width: 100%; background:#F7E0D4;"> <div class="oa"> <a href="#" class="oaItem" v-for="(item, index) in activeKeyAll" :key="index.id" @click.prevent="aClick(item)" > <span> <img :src="item.iconAddress" /> </span> <p>{{ item.name }}</p> </a> </div> </a-card> <!-- 数据渲染 表单 --> <a-modal v-model="lcModal.visible" :title="lcModal.Title" :footer="null" :maskClosable="false"> <component :disabled="lcModal.disabled" v-if="lcModal.visible" :is="lcModal.formComponent" :processData="lcModal.processData" :isNew="lcModal.isNew" @afterSubmit="afterSub" @close="(lcModal.visible = false), (lcModal.disabled = false)" > </component> </a-modal> </div> <!-- 底部 --> <a-layout-footer class="footer"> 上海萃颠信息科技有限公司出品 </a-layout-footer> </div> </template> <script> // 组件中使用映射,所以需要导入 import { mapActions } from 'vuex' import Vue from 'vue' import { ACCESS_TOKEN, ENCRYPTED_STRING, USER_INFO } from '@/store/mutation-types' import api from '@/api' import { JeecgListMixin } from '@/mixins/JeecgListMixin' import { activitiMixin } from '@/views/activiti/mixins/activitiMixin' import JSelectUserByDep from '@/components/jeecgbiz/JSelectUserByDep' export default { name: 'Login', components: {}, data() { return { todoList: [], activeKeyAll: [], url: { todoList: '/actTask/todoList', doneList: '/actTask/doneList' }, //按钮弹框 lcModal: { title: '', visible: false, disabled: false, formComponent: null, isNew: false }, isshow: '0' } }, // 页面打开时,默认已登录 created() { Vue.ls.remove(ACCESS_TOKEN) // 进入页面自动登录 this.autoLogin() .then(res => { this.getDataList() // 待办、已办 列表 }) .then(res => { this.getActiveKeyAll() // OA 4个按钮 }) }, methods: { // init() { // this.getDataList() // }, // 映射store/user.js 中 actions的方法 ...mapActions(['Login']), // 自动登录 async autoLogin() { var that = this let loginParams = {} loginParams.username = 'fenghf' loginParams.password = 'fenghf`123456' loginParams.slidered = true // 默认滑块 // console.log('打印出登录参数', loginParams) // 异步操作 await that .Login(loginParams) .then(res => { console.log('Login拿到token | 登录上啦!') }) .catch(err => { console.log(err) }) }, // 点击全部 跳转页面 todo() { this.$router.push({ path: '/user/todo' }) console.log(this.$router) }, // 待办 num getDataList() { this.postFormAction(this.url.todoList, {}).then(res => { if (res.success) { this.todoList = res.result || [] console.log('login 待办num:', this.todoList.length) if (this.todoList && this.todoList.length > 0) { this.isshow = '1' } else { this.isshow = '2' } } }) // 已办列表 // this.postFormAction(this.url.doneList, this.searchForm).then(res => { // this.loading = false // if (res.success) { // this.doneList = res.result || [] // console.log('已渲染到已办数目', this.doneList.length) // } else { // this.$message.error(res.message) // } // }) }, // 获取 OA 按钮 getActiveKeyAll() { this.postFormAction('/activiti_process/listData', { status: 1, roles: true }).then(res => { this.activeKeyAll = [] if (res.success) { var result = res.result || [] if (result.length > 0) { this.activeKeyAll = result // this.activeKeyAll.push.apply(this.activeKeyAll,result); // console.log(this.activeKeyAll) console.log('OA 4个按钮被渲染') } } }) }, //OA图标点击事件 aClick(v) { //点击的该项按钮 console.log(v) // this.$refs.modal.add("1") if (!v.routeName) { this.$message.warning('该流程信息未配置表单,请联系开发人员!') return } if (v.routeName.indexOf('外部表单') != -1) { alert('调用其他项目页面') } else if (v.routeName.indexOf('自定义') != -1) { this.lcModal.disabled = false let com = { component: () => import(`@/views/activiti/form/demoForm2`) } this.lcModal.formComponent = com.component this.lcModal.title = '发起流程:' + v.name this.lcModal.isNew = true this.lcModal.processData = v this.lcModal.visible = true } else { this.lcModal.disabled = false this.lcModal.formComponent = this.getFormComponent(v.routeName).component this.lcModal.title = '发起流程:' + v.name this.lcModal.isNew = true this.lcModal.processData = v this.lcModal.visible = true } console.log('发起', v) // this.getDataList() }, //提交后 afterSub(formData) { this.lcModal.visible = false } } } </script> <style src="@assets/less/overwrite.less" lang="less" scoped></style> <style lang="less" scoped> /deep/.ant-card-head-title { padding: 0; } /deep/.ant-card-body { padding: 0 24px; } /deep/.ant-layout-header { line-height: 0; } /deep/.ant-card-head-title { font-size: 18px; } .content { width: 100%; height: 100%; background-color: rgba(#f7e0d4); .main { //头部 蓝盒子 .todoBox { padding: 18px; height: 180px; width: 100%; background-color: #347b98; box-shadow: 0 4px 8px 1px rgba(0, 0, 0, 0.1), 0 6px 20px 1px rgba(0, 0, 0, 0.19); margin-bottom: 30px; border-bottom-right-radius: 18px; border-bottom-left-radius: 18px; // 待办小黑板 .left { height: 100%; width: 190px; //黑板内信息 .info { position: absolute; span { font-weight: 700; position: relative; letter-spacing: 1px; font-size: 16px; } } // 待办 数量 .numTips { position: absolute; top: -10px; left: 0px; padding: 3px 8px; text-align: center; line-height: 20px; border-radius: 50%; color: white !important; font-size: 16px; } } // 按钮 .right { line-height: 30px; margin: 30px 8px 0 0; padding: 12px 24px; background-color: #f7e0d4; border-radius: 10px; letter-spacing: 1px; box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.2); .moreIcon { margin: 0; padding: 0; font-size: 16px; color: #1489b8; margin-top: 10%; } // 文字 span { font-size: 16px; color: #092834; font-weight: 700; } } } // OA 工作台 .oa { display: flex; flex-flow: row wrap; justify-content: space-between; text-align: center; padding: 40px; //四个按钮 .oaItem { width: calc((100% - 70px) / 2); color: #092834; border-radius: 10px; margin-bottom: 70px; box-shadow: 0 6px 20px 0 rgba(0, 0, 0, 0.1), 0 6px 20px 0 rgba(0, 0, 0, 0.1); // 图 span { display: block; width: 60px; height: 60px; margin: auto; margin-top: 20px; } // 文字 p { margin-top: 10px; color: #092834; } } } } } </style>