select.html 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. {include file="/shopro/common/script" /}
  2. <style>
  3. .page-select .page-select-main {
  4. --el-main-padding: 0;
  5. }
  6. .page-select .el-aside {
  7. --el-aside-width: 140px;
  8. border-right: 1px solid var(--sa-border);
  9. padding: 20px;
  10. }
  11. .page-select .top {
  12. height: 100%;
  13. }
  14. .page-select .group .name {
  15. margin: 0 0 12px 12px;
  16. }
  17. .page-select .group .link {
  18. margin-bottom: 12px;
  19. }
  20. .page-select .group .link .item {
  21. padding: 0 16px;
  22. height: 32px;
  23. display: flex;
  24. align-items: center;
  25. justify-content: center;
  26. border: 1px solid var(--sa-border);
  27. border-radius: 4px;
  28. margin: 0 12px 12px 0;
  29. font-size: 14px;
  30. font-weight: 400;
  31. color: var(--sa-font);
  32. cursor: pointer;
  33. }
  34. .page-select .group .link .item:hover {
  35. color: var(--el-color-primary);
  36. background: var(--t-bg-hover);
  37. }
  38. .page-select .group .link .item.item-active {
  39. color: var(--el-color-primary);
  40. background: var(--t-bg-active);
  41. }
  42. .page-select .left .group {
  43. height: 32px;
  44. line-height: 32px;
  45. border-radius: 4px;
  46. font-size: 14px;
  47. font-weight: 400;
  48. color: var(--sa-subtitle);
  49. margin-bottom: 4px;
  50. cursor: pointer;
  51. }
  52. .page-select .left .group:hover {
  53. color: var(--el-color-primary);
  54. background: var(--t-bg-hover);
  55. }
  56. .page-select .left .group.is-active {
  57. color: var(--el-color-primary);
  58. background: var(--t-bg-active);
  59. }
  60. .page-select .right .name {
  61. line-height: 16px;
  62. font-size: 14px;
  63. font-weight: 600;
  64. color: var(--sa-subtitle);
  65. margin: 0 0 12px 0;
  66. }
  67. .page-select .right-group .link {
  68. border-bottom: 1px dashed var(--sa-border);
  69. }
  70. </style>
  71. <div id="select" class="page-select" v-cloak>
  72. <el-container class="panel-block">
  73. <el-main class="page-select-main">
  74. <el-container class="top">
  75. <el-aside>
  76. <el-scrollbar class="left" height="100%">
  77. <div class="group" :class="state.currentIndex == i ? 'is-active' : ''"
  78. v-for="(g, i) in state.data" :key="g" @click.stop="onChangeIndex(i)">
  79. <div class="name">{{ g.group }}</div>
  80. </div>
  81. </el-scrollbar>
  82. </el-aside>
  83. <el-main>
  84. <el-scrollbar class="right" ref="rightScrollRef" height="100%" @scroll="onRightScroll">
  85. <div class="group right-group" :ref="(el) => setRightRef(el, g, i)" v-for="(g, i) in state.data"
  86. :key="g">
  87. <div class="name">{{ g.group }}</div>
  88. <div class="link sa-flex sa-flex-wrap">
  89. <template v-for="l in g.children" :key="l">
  90. <el-popover popper-class="sa-popper" trigger="hover" :content="l.path">
  91. <template #reference>
  92. <div class="item" :class="state.selected.id == l.id ? 'item-active' : ''"
  93. @click="onSelect(l)">
  94. {{ l.name }}
  95. </div>
  96. </template>
  97. </el-popover>
  98. </template>
  99. </div>
  100. </div>
  101. </el-scrollbar>
  102. </el-main>
  103. </el-container>
  104. </el-main>
  105. <el-footer class="sa-footer--submit sa-flex sa-row-right">
  106. <el-button type="primary" @click="onConfirm">确定</el-button>
  107. </el-footer>
  108. </el-container>
  109. </div>