index.vue 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. <template>
  2. <div class="app-container">
  3. <div class="head-tips">
  4. <el-card class="card">
  5. <div class="card-text" @click="">
  6. <div class="card-left"><i class="el-icon-s-order"></i></div>
  7. <div class="card-right">
  8. <div class="card-text-title">待进行会议</div>
  9. <div class="card-text-val">3</div>
  10. </div>
  11. </div>
  12. </el-card>
  13. <el-card class="card">
  14. <div class="card-text" @click="">
  15. <div class="card-left"><i class="el-icon-s-order"></i></div>
  16. <div class="card-right">
  17. <div class="card-text-title">待确认会议</div>
  18. <div class="card-text-val">3</div>
  19. </div>
  20. </div>
  21. </el-card>
  22. <el-card class="card">
  23. <div class="card-text" @click="newTaskOpen=!newTaskOpen">
  24. <div class="card-left"><i class="el-icon-s-order"></i></div>
  25. <div class="card-right">
  26. <div class="card-text-title">新任务</div>
  27. <div class="card-text-val">{{ newTaskNum }}</div>
  28. </div>
  29. </div>
  30. </el-card>
  31. <el-card class="card" v-hasPermi="['task:task:audit']">
  32. <div class="card-text" @click="auditTaskOpen=!auditTaskOpen">
  33. <div class="card-left"><i class="el-icon-s-order"></i></div>
  34. <div class="card-right">
  35. <div class="card-text-title">待审核任务</div>
  36. <div class="card-text-val">{{ auditTaskNum }}</div>
  37. </div>
  38. </div>
  39. </el-card>
  40. <el-card class="card">
  41. <div class="card-text" @click="">
  42. <div class="card-left"><i class="el-icon-s-order"></i></div>
  43. <div class="card-right">
  44. <div class="card-text-title">实施待办</div>
  45. <div class="card-text-val">3</div>
  46. </div>
  47. </div>
  48. </el-card>
  49. <el-card class="card">
  50. <div class="card-text" @click="">
  51. <div class="card-left"><i class="el-icon-s-order"></i></div>
  52. <div class="card-right">
  53. <div class="card-text-title">运维提醒</div>
  54. <div class="card-text-val">3</div>
  55. </div>
  56. </div>
  57. </el-card>
  58. </div>
  59. <el-dialog title="新任务" :visible.sync="newTaskOpen" append-to-body :close-on-click-modal="false">
  60. <el-table :data="newTasks" size="mini">
  61. <el-table-column label="任务名称" prop="taskName" min-width="150" :show-overflow-tooltip="true"/>
  62. <el-table-column label="执行(负责)人" prop="executorName"/>
  63. <el-table-column label="任务起止时间" width="170">
  64. <template slot-scope="scope">
  65. <span>{{ scope.row.beginDate + ' 至 ' + scope.row.endDate }}</span>
  66. </template>
  67. </el-table-column>
  68. </el-table>
  69. </el-dialog>
  70. <el-dialog title="待审核任务" :visible.sync="auditTaskOpen" append-to-body :close-on-click-modal="false">
  71. <el-table :data="auditTasks" size="mini">
  72. <el-table-column label="任务名称" prop="taskName" min-width="150" :show-overflow-tooltip="true"/>
  73. <el-table-column label="执行(负责)人" prop="executorName"/>
  74. <el-table-column label="任务起止时间" width="170">
  75. <template slot-scope="scope">
  76. <span>{{ scope.row.beginDate + ' 至 ' + scope.row.endDate }}</span>
  77. </template>
  78. </el-table-column>
  79. </el-table>
  80. </el-dialog>
  81. <!-- <meeting-detail :detail-form="meetingForm" @getTodoMeetingList="getTodoMeetingList"></meeting-detail>-->
  82. </div>
  83. </template>
  84. <script>
  85. import {mapGetters} from 'vuex'
  86. import Pagination from '@/components/Page/Pagination'
  87. import {toDoTaskList} from "@/api/task/task";
  88. // import {completeTask, getPersonalTaskList} from '@/api/meeting/enforce'
  89. // import {confirmMeetings, getTodoMeetings} from '@/api/meeting/meeting'
  90. export default {
  91. name: 'Dashboard',
  92. components: {},
  93. computed: {
  94. ...mapGetters([
  95. 'name'
  96. ]),
  97. newTaskNum() {
  98. return this.newTasks.length
  99. },
  100. auditTaskNum() {
  101. return this.auditTasks.length
  102. }
  103. },
  104. data() {
  105. return {
  106. newTasks: [],
  107. auditTasks: [],
  108. newTaskOpen: false,
  109. auditTaskOpen: false,
  110. }
  111. },
  112. mounted() {
  113. this.getTodoTask();
  114. },
  115. methods: {
  116. getTodoTask() {
  117. toDoTaskList().then(res => {
  118. this.newTasks = res.data.newTasks
  119. this.auditTasks = res.data.auditTasks
  120. })
  121. },
  122. getTodoMeetingList() {
  123. getTodoMeetings().then(res => {
  124. this.todoMeetings = res.data
  125. })
  126. },
  127. confirmMeeting(row) {
  128. if (row.meetingType === 1) {
  129. let params = {
  130. meetingId: row.id,
  131. weeks: row.weeks
  132. }
  133. this.$router.push({path: '/meeting/weeklyRecords', query: params});
  134. return
  135. }
  136. this.meetingForm = row
  137. },
  138. }
  139. }
  140. </script>
  141. <style lang="scss" scoped>
  142. .dashboard {
  143. &-container {
  144. margin: 30px;
  145. }
  146. &-text {
  147. font-size: 30px;
  148. line-height: 46px;
  149. }
  150. }
  151. .head-tips {
  152. display: flex;
  153. flex-wrap: wrap;
  154. }
  155. .card {
  156. width: 200px;
  157. height: 100px;
  158. //background-color: #3F71A4;
  159. margin: 10px;
  160. display: flex;
  161. .card-text {
  162. display: flex;
  163. justify-content: space-between;
  164. align-items: center;
  165. .card-left {
  166. font-size: 60px;
  167. text-align: left;
  168. color: #f7b51c;
  169. }
  170. .card-right {
  171. margin-left: 20px;
  172. text-align: center;
  173. }
  174. .card-text-title {
  175. font-size: 13px;
  176. margin-bottom: 10px;
  177. }
  178. .card-text-val {
  179. font-size: 28px;
  180. color: #9da0a3;
  181. }
  182. }
  183. }
  184. .el-form-item--mini.el-form-item, .el-form-item--small.el-form-item {
  185. margin-bottom: 10px;
  186. }
  187. </style>