|
|
@@ -1,57 +1,59 @@
|
|
|
<template>
|
|
|
<div class="chartsBox">
|
|
|
- <ChartsContent
|
|
|
- :addChartType="addChartType"
|
|
|
- :config="config"
|
|
|
- ></ChartsContent>
|
|
|
+ <!-- 主内容区 -->
|
|
|
+ <ChartsContent :addChartType="addChartType" :config="config" />
|
|
|
|
|
|
- <!-- 抽屉 1:属性 -->
|
|
|
- <div class="drawer drawerText">
|
|
|
- <svg-icon
|
|
|
- @click="() => (drawer = !drawer)"
|
|
|
- v-show="!drawer"
|
|
|
+ <!-- 抽屉1 -->
|
|
|
+ <div class="drawer-box">
|
|
|
+ <!-- 控制按钮 -->
|
|
|
+ <!-- <svg-icon
|
|
|
+ class="drawer-btn"
|
|
|
+ @click="toggleDrawer(1)"
|
|
|
icon-class="text"
|
|
|
+ v-show="!drawer1"
|
|
|
style="width: 30px; height: 30px"
|
|
|
- />
|
|
|
- <el-drawer
|
|
|
- :with-header="false"
|
|
|
- :visible.sync="drawer"
|
|
|
- direction="rtl"
|
|
|
- size="270"
|
|
|
- :append-to-body="false"
|
|
|
- :modal="false"
|
|
|
- :wrapper-closable="false"
|
|
|
- :close-on-click-modal="false"
|
|
|
- :close-on-press-escape="false"
|
|
|
- :show-close="false"
|
|
|
- custom-class="drawer-attr"
|
|
|
- >
|
|
|
- <i class="el-icon-s-unfold" @click="() => (drawer = !drawer)"></i>
|
|
|
- <ChartsAttributes @addChart="addChart" :addChartType="addChartType" />
|
|
|
- </el-drawer>
|
|
|
+ /> -->
|
|
|
+ <div class="drawer-text" @click="toggleDrawer(1)" v-show="!drawer1">
|
|
|
+ <i class="el-icon-s-unfold"></i>
|
|
|
+ 可视化  筛选器
|
|
|
+ </div>
|
|
|
+ <!-- 抽屉面板 -->
|
|
|
+ <transition name="drawer-slide">
|
|
|
+ <div class="drawer-panel" v-show="drawer1">
|
|
|
+ <div class="titleBox" @click="toggleDrawer(1)">
|
|
|
+ <button class="drawer-btn" type="text">可视化图表</button>
|
|
|
+ <i class="el-icon-s-fold"></i>
|
|
|
+ </div>
|
|
|
+ <ChartsAttributes @addChart="addChart" :addChartType="addChartType" />
|
|
|
+ </div>
|
|
|
+ </transition>
|
|
|
</div>
|
|
|
|
|
|
- <!-- 抽屉 2:数据 -->
|
|
|
- <div class="drawer drawerStyle">
|
|
|
- <svg-icon
|
|
|
- @click="() => (drawer1 = !drawer1)"
|
|
|
- v-show="!drawer1"
|
|
|
+ <!-- 抽屉2 -->
|
|
|
+ <div class="drawer-box">
|
|
|
+ <!-- 控制按钮 -->
|
|
|
+ <!-- <svg-icon
|
|
|
+ class="drawer-btn"
|
|
|
+ @click="toggleDrawer(2)"
|
|
|
+ v-show="!drawer2"
|
|
|
icon-class="styleChart1"
|
|
|
style="width: 30px; height: 30px"
|
|
|
- />
|
|
|
- <el-drawer
|
|
|
- :with-header="false"
|
|
|
- :visible.sync="drawer1"
|
|
|
- direction="rtl"
|
|
|
- size="300"
|
|
|
- :modal="false"
|
|
|
- :append-to-body="false"
|
|
|
- :show-close="false"
|
|
|
- custom-class="drawer-data"
|
|
|
- >
|
|
|
- <i class="el-icon-s-unfold" @click="() => (drawer1 = !drawer1)"></i>
|
|
|
- <ChartsData :addChartType="addChartType" />
|
|
|
- </el-drawer>
|
|
|
+ /> -->
|
|
|
+ <div class="drawer-text" @click="toggleDrawer(2)" v-show="!drawer2">
|
|
|
+ <i class="el-icon-s-unfold"></i>
|
|
|
+ 字段
|
|
|
+ </div>
|
|
|
+ <!-- 抽屉面板 -->
|
|
|
+ <transition name="drawer-slide">
|
|
|
+ <div class="drawer-panel" v-show="drawer2">
|
|
|
+ <div class="titleBox" @click="toggleDrawer(2)">
|
|
|
+ <button class="drawer-btn" type="text">数据字段</button>
|
|
|
+ <i class="el-icon-s-fold"></i>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <ChartsData :addChartType="addChartType" />
|
|
|
+ </div>
|
|
|
+ </transition>
|
|
|
</div>
|
|
|
</div>
|
|
|
</template>
|
|
|
@@ -70,15 +72,19 @@ export default {
|
|
|
data() {
|
|
|
return {
|
|
|
addChartType: "",
|
|
|
- options: "",
|
|
|
config: "",
|
|
|
- configType: "",
|
|
|
- drawer: false,
|
|
|
- drawer1: false,
|
|
|
- direction: "rtl", // 从右往左推
|
|
|
+ drawer1: true,
|
|
|
+ drawer2: true,
|
|
|
};
|
|
|
},
|
|
|
methods: {
|
|
|
+ toggleDrawer(index) {
|
|
|
+ if (index === 1) {
|
|
|
+ this.drawer1 = !this.drawer1;
|
|
|
+ } else if (index === 2) {
|
|
|
+ this.drawer2 = !this.drawer2;
|
|
|
+ }
|
|
|
+ },
|
|
|
addChart(type) {
|
|
|
if (this.addChartType === type) {
|
|
|
this.addChartType = "";
|
|
|
@@ -96,18 +102,71 @@ export default {
|
|
|
<style scoped lang="scss">
|
|
|
.chartsBox {
|
|
|
width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ display: flex;
|
|
|
+ gap: 5px; /* 控制抽屉之间的间距 */
|
|
|
+ align-items: flex-start;
|
|
|
+ background-color: #fff;
|
|
|
+}
|
|
|
+
|
|
|
+/* 每组按钮 + 抽屉的容器 */
|
|
|
+.drawer-box {
|
|
|
display: flex;
|
|
|
+ align-items: flex-start;
|
|
|
+ gap: 0px;
|
|
|
height: 100%;
|
|
|
- position: relative;
|
|
|
+ overflow: scroll;
|
|
|
+ .drawer-text {
|
|
|
+ background-color: #eef1f3;
|
|
|
+ writing-mode: vertical-rl; /* 从上到下,从右到左 */
|
|
|
+ text-orientation: upright; /* 保证文字不倒置 */
|
|
|
+ height: 100%;
|
|
|
+ // display: inline-block; /* 必须加,否则transform无效 */
|
|
|
+ // transform: rotate(90deg);
|
|
|
+ // transform-origin: left top; /* 设置旋转基准点,可根据需求调整 */
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
-/* 第一个抽屉(属性设置)靠最右 */
|
|
|
-.drawer-attr {
|
|
|
- right: 0 !important;
|
|
|
+/* 控制按钮 */
|
|
|
+.drawer-btn {
|
|
|
+ // padding: 6px 12px;
|
|
|
+ // background: #409eff;
|
|
|
+ color: #000;
|
|
|
+ border: none;
|
|
|
+ border-radius: 4px;
|
|
|
+ cursor: pointer;
|
|
|
+ transition: 0.2s;
|
|
|
+}
|
|
|
+.drawer-btn:hover {
|
|
|
+ background: #eef1f3;
|
|
|
}
|
|
|
|
|
|
-/* 第二个抽屉(数据设置)往左推 270px */
|
|
|
-.drawer-data {
|
|
|
- right: 270px !important;
|
|
|
+/* 抽屉内容区 */
|
|
|
+.drawer-panel {
|
|
|
+ width: 270px;
|
|
|
+ background: #fff;
|
|
|
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
|
|
|
+ border-radius: 6px;
|
|
|
+ border: 1px #eef1f3 solid;
|
|
|
+ // padding: 10px;
|
|
|
+ height: 100%;
|
|
|
+ transition: all 0.3s ease;
|
|
|
+ .titleBox {
|
|
|
+ display: flex;
|
|
|
+ padding: 10px;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+/* 抽屉动画 */
|
|
|
+.drawer-slide-enter-active,
|
|
|
+.drawer-slide-leave-active {
|
|
|
+ transition: all 0.3s ease;
|
|
|
+}
|
|
|
+.drawer-slide-enter,
|
|
|
+.drawer-slide-leave-to {
|
|
|
+ opacity: 0;
|
|
|
+ transform: translateX(10px);
|
|
|
}
|
|
|
</style>
|