adminNav.vue 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. <template>
  2. <el-container>
  3. <el-header class="admin-nav-header admin-nav-between">
  4. <el-input v-model="admin_query" placeholder="请输入内容" clearable size="small" @change="$emit('querySelect', admin_query)">
  5. <i slot="prefix" class="el-input__icon el-icon-search" />
  6. </el-input>
  7. <div class="admin-nav-div">
  8. <i class="el-icon-circle-plus-outline admin-nav-icon" @click="$emit('createDialog', '新建')" />
  9. </div>
  10. </el-header>
  11. <el-main style="padding: 10px; max-height: calc(100vh - 129px); overflow-y: auto;">
  12. <div v-for="(item, index) in admin_navList" :key="index" class="admin-nav-between admin-nav-col">
  13. <div class="admin-nav-start admin-nav-cursor">
  14. <svg-icon :icon-class="index === adminColor ? 'admin-model1' : 'admin_model'" />
  15. <el-tooltip v-if="item.name.length >= 9" class="item" effect="dark" :content="item.name" placement="top">
  16. <div class="admin-nav-name admin-nav-cursor" :class="{'admin-name-color': index === adminColor}" @click="$emit('clickName', item), adminColor = index"> {{ item.name }} </div>
  17. </el-tooltip>
  18. <div v-else class="admin-nav-name admin-nav-cursor" :class="{'admin-name-color': index === adminColor}" @click="$emit('clickName', item), adminColor = index"> {{ item.name }} </div>
  19. </div>
  20. <i v-if="type === 1" class="el-icon-close admin-nav-cursor" @click="deleteModel = true, deleteId = item" />
  21. <i v-else-if="item.type === 2" class="el-icon-close admin-nav-cursor" @click="deleteModel = true, deleteId = item" />
  22. </div>
  23. </el-main>
  24. <el-dialog title="移除确认" :visible.sync="deleteModel" class="demo-dialog" width="30%">
  25. <div class="blueStripe" />
  26. <div align="center">是否要移除 {{ deleteId.name }} ? </div>
  27. <span slot="footer" class="dialog-footer">
  28. <el-button @click="deleteModel = false">取 消</el-button>
  29. <el-button type="primary" @click="$emit('delete', deleteId), deleteModel = false">确 定</el-button>
  30. </span>
  31. </el-dialog>
  32. </el-container>
  33. </template>
  34. <script>
  35. export default {
  36. props: {
  37. datas: { type: Array, required: true },
  38. type: { type: Number, default: 1 }
  39. },
  40. data() {
  41. return {
  42. adminColor: '',
  43. deleteModel: false, // 删除dialog
  44. deleteId: {},
  45. admin_query: '', // checkList模版查询
  46. admin_navList: []
  47. }
  48. },
  49. watch: {
  50. datas: {
  51. handler(newV) {
  52. this.admin_navList = newV
  53. },
  54. deep: true
  55. }
  56. }
  57. }
  58. </script>
  59. <style lang="scss" scoped>
  60. .admin-nav-header {
  61. padding: 15px 10px;
  62. }
  63. .admin-nav-icon {
  64. border-radius: 4px;
  65. margin-left: 10px;
  66. line-height: 34px;
  67. font-size: 20px;
  68. cursor: pointer;
  69. color: #888;
  70. }
  71. .admin-nav-icon:hover {
  72. color: #409eff;
  73. }
  74. .admin-nav-between {
  75. display: flex;
  76. justify-content: space-between;
  77. }
  78. .admin-nav-start {
  79. display: flex;
  80. justify-content: flex-start;
  81. }
  82. .admin-nav-col {
  83. line-height: 15px;
  84. margin-bottom: 20px;
  85. }
  86. .admin-nav-div {
  87. line-height: 30px;
  88. }
  89. .admin-nav-cursor:hover {
  90. cursor: pointer;
  91. color: #409eff;
  92. }
  93. .admin-name-color {
  94. color: #409eff;
  95. }
  96. .admin-nav-name {
  97. width: 149px;
  98. font-size: 14px;
  99. font-family: Microsoft Sans Serif;
  100. font-weight: 400;
  101. padding-left: 10px;
  102. overflow: hidden;
  103. text-overflow:ellipsis;
  104. white-space: nowrap;
  105. }
  106. .demo-dialog {
  107. /deep/ .el-dialog__title {
  108. line-height: 24px;
  109. font-size: 16px;
  110. color: #303133;
  111. padding-left: 10px;
  112. }
  113. }
  114. .blueStripe {
  115. width:4px;
  116. height:17px;
  117. background:#409EFF;
  118. border-radius:1px;
  119. position: absolute;
  120. top: 23px;
  121. left: 20px;
  122. }
  123. </style>