Admin.vue 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. <!--管理界面-->
  2. <template>
  3. <div class="containers">
  4. <div class="leftblank">
  5. <img class="avator" src="../assets/images/avatar.jpg" alt="头像">
  6. <div class="userinfo">
  7. <p>{{user.username}}</p>
  8. <el-link type="primary" @click="logout" :underline="false">退出</el-link>
  9. </div>
  10. </div>
  11. <div class="maincontent">
  12. <div class="title">
  13. <p>分布式视频管理系统</p>
  14. </div>
  15. <div class="screenmanage">
  16. <div class="pre_planmanage">
  17. <h2>预案管理</h2>
  18. <el-button type="primary" size="small">添加信号源</el-button>
  19. <el-button type="primary" size="small">设置背景</el-button>
  20. <el-button type="primary" size="small">新建预案</el-button>
  21. <el-button type="primary" size="small">加载预案</el-button>
  22. <el-button type="primary" size="small">跑马灯</el-button>
  23. <el-button type="primary" size="small">播放器测试</el-button>
  24. <el-button type="primary" size="small">send</el-button>
  25. <el-button type="primary" size="small">dummy</el-button>
  26. <el-button type="primary" size="small">clear device</el-button>
  27. <el-button type="primary" size="small">rebuild DB</el-button>
  28. </div>
  29. <div class="bigscreen_control">
  30. <div class="split_screen">
  31. </div>
  32. <div class="control_btns">
  33. <!--分屏按钮-->
  34. <div class="split_btns">
  35. <el-button type="success">自由屏</el-button>
  36. <el-button type="success">四分屏</el-button>
  37. <el-button type="success">九分屏</el-button>
  38. <el-button type="success">十六分屏</el-button>
  39. <el-button type="success">清屏</el-button>
  40. </div>
  41. <!--其他按钮-->
  42. <div class="other_btns">
  43. </div>
  44. </div>
  45. </div>
  46. <div class="signal_source">
  47. <div class="signal_title">
  48. <h2>信号源列表</h2>
  49. </div>
  50. <div class="signal_body">
  51. <div class="signal_item" v-for="(item,index) in deviceList" :key="index" v-drag>
  52. <div class="signal_item_bg">
  53. <div class="signal_item_bg_body">
  54. <div class="signal_item_bg_body_space"></div>
  55. <div class="signal_item_bg_body_font">{{item.name}}</div>
  56. </div>
  57. </div>
  58. </div>
  59. </div>
  60. </div>
  61. </div>
  62. <div class="footmenu">
  63. </div>
  64. </div>
  65. <div class="rightblank">
  66. </div>
  67. </div>
  68. </template>
  69. <script>
  70. import '../assets/less/admin.less'
  71. import storageUtils from "../../utils/storageUtils"
  72. import {mapState} from 'vuex'
  73. export default {
  74. data() {
  75. return {
  76. user:storageUtils.getUser()
  77. }
  78. },
  79. methods: {
  80. // 退出登录
  81. logout() {
  82. this.$router.replace('/login')
  83. this.$store.dispatch('resetUser')
  84. },
  85. },
  86. computed: {
  87. ...mapState(['deviceList'])
  88. },
  89. // 注册局部指令
  90. directives: {
  91. drag: {
  92. // 指令的定义
  93. inserted: function (el) {
  94. el.onmousedown = function (e) {
  95. //获取鼠标点击处分别与div左边和上边的距离:鼠标位置-div位置
  96. let divx = e.clientX - el.offsetLeft
  97. let divy = e.clientY - el.offsetTop
  98. //包含在onmousedown里,表示点击后才移动,为防止鼠标移出div,使用document.onmousemove
  99. document.onmousemove = function (e) {
  100. //获取移动后div的位置:鼠标位置-divx/divy
  101. let l = e.clientX - divx
  102. let t = e.clientY - divy
  103. el.style.left = l + 'px'
  104. el.style.top = t + 'px'
  105. console.log(el)
  106. }
  107. document.onmouseup = function (e) {
  108. document.onmousemove = null
  109. document.onmouseup = null
  110. console.log(e)
  111. }
  112. }
  113. }
  114. }
  115. }
  116. }
  117. </script>
  118. <style>
  119. .leftblank {
  120. display: flex;
  121. }
  122. .avator {
  123. width: 50px;
  124. height: 50px;
  125. border-radius: 50%;
  126. padding:15px;
  127. cursor: pointer;
  128. }
  129. .userinfo {
  130. padding-left:4px;
  131. }
  132. .userinfo p {
  133. color:#fff;
  134. margin-bottom:10px;
  135. }
  136. </style>