<script lang="ts" setup> 
 | 
// 左侧组件 
 | 
// import tools from '@/fabric-editor/components/tools.vue'; 
 | 
import systemTemplateDataParamSetting from '@/fabric-editor/components/systemTemplateDataParamSetting.vue'; 
 | 
  
 | 
const state = reactive({ 
 | 
  menuActive: 1, 
 | 
  toolsBarShow: true, 
 | 
}); 
 | 
// 左侧菜单渲染 
 | 
const menuActive = ref('systemTemplateDataParamSetting'); 
 | 
const leftBarComponent = { 
 | 
  systemTemplateDataParamSetting, 
 | 
}; 
 | 
  
 | 
const leftBar = reactive([ 
 | 
  { 
 | 
    //系统模板参数 
 | 
    key: 'systemTemplateDataParamSetting', 
 | 
    name: computed(() => '系统模板参数'), 
 | 
    icon: 'md-images', 
 | 
  }, 
 | 
]); 
 | 
// 隐藏工具条 
 | 
const hideToolsBar = () => { 
 | 
  state.toolsBarShow = !state.toolsBarShow; 
 | 
}; 
 | 
// 展示工具条 
 | 
const showToolsBar = (val: any) => { 
 | 
  menuActive.value = val; 
 | 
  state.toolsBarShow = true; 
 | 
}; 
 | 
  
 | 
// onMounted(() => { 
 | 
//   // 有ID时,打开作品面板 
 | 
//   const route = useRoute(); 
 | 
//   if (route?.query?.id) { 
 | 
//     menuActive.value = 'myMaterial'; 
 | 
//   } 
 | 
// }); 
 | 
</script> 
 | 
  
 | 
<template> 
 | 
  <div :class="`left-bar ${state.toolsBarShow && 'show-tools-bar'}`"> 
 | 
    <div class="content" v-show="state.toolsBarShow"> 
 | 
      <div class="left-panel"> 
 | 
        <KeepAlive> 
 | 
          <component :is="leftBarComponent[menuActive]"></component> 
 | 
        </KeepAlive> 
 | 
      </div> 
 | 
    </div> 
 | 
    <!-- 关闭按钮 --> 
 | 
    <div 
 | 
      :class="`close-btn left-btn ${state.toolsBarShow && 'left-btn-open'}`" 
 | 
      @click="hideToolsBar" 
 | 
    ></div> 
 | 
  </div> 
 | 
</template> 
 | 
  
 | 
<style lang="scss" scoped> 
 | 
// 左侧容器 
 | 
  
 | 
.left-bar { 
 | 
  position: relative; 
 | 
  display: flex; 
 | 
  width: 65px; 
 | 
  height: 100%; 
 | 
  background: #ffffff; 
 | 
  
 | 
  &.show-tools-bar { 
 | 
    width: 240px; 
 | 
  } 
 | 
} 
 | 
  
 | 
.ivu-menu-vertical .menu-item { 
 | 
  padding: 10px 2px; 
 | 
  font-size: 12px; 
 | 
  text-align: center; 
 | 
  box-sizing: border-box; 
 | 
  
 | 
  & > i { 
 | 
    margin: 0; 
 | 
  } 
 | 
} 
 | 
  
 | 
.ivu-menu-light.ivu-menu-vertical .ivu-menu-item-active:not(.ivu-menu-submenu) { 
 | 
  background: none; 
 | 
} 
 | 
  
 | 
.content { 
 | 
  overflow-y: auto; 
 | 
  padding: 0 10px; 
 | 
  width: 120px; 
 | 
  height: 100%; 
 | 
  flex: 1; 
 | 
} 
 | 
  
 | 
// 关闭按钮 
 | 
  
 | 
.close-btn { 
 | 
  position: absolute; 
 | 
  top: 50%; 
 | 
  right: -20px; 
 | 
  z-index: 1; 
 | 
  margin-top: -10px; 
 | 
  width: 20px; 
 | 
  height: 64px; 
 | 
  background-position: 50%; 
 | 
  background-repeat: no-repeat; 
 | 
  background-size: cover; 
 | 
  cursor: pointer; 
 | 
  background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAACACAMAAABOb9vcAAAAhFBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAADHx8cODg50dHTx8fF2dnZ1dXWWlpZHR0c4ODhQpkZ5AAAAIXRSTlMA9t+/upkRAnPq5NXDfDEsKQjMeGlRThkMsquljTwzIWhBHpjgAAABJElEQVRYw+3YyW7CQBCEYbxig8ELGJyQkJRJyPb+75dj3zy/lD7kMH3+ZEuzSFO1mlZwhjOE2uwhVHJYMygNVwilhz2EUvNaMigledUFoE1anKYAtA9nVRuANpviOQBt0t2ZQSnZ9QxK6Qih9LSGUHkJobYlhGp6CPW4hlAVhckLhMop1InCjEK1FBYU1hSqo/BI4YXCjMIthTWFijDCCB3g7fuO4O1t/rkvQXPz/LUIzX0oAM0tQHOfCkBzC9DcuwLQXACao9Dv1yb9lsek2xaaxMcMH1x6Ff79dY0wwgj/DGv3p2tG4cX9wd55h4rCO/hk3uEs9w6QlXPIbXrfIJ6XrmVBOtJCA1YkXqVLkh1aUgyNk1fV1BxLxzpsuNLKzrME/AWr0ywwvyj83AAAAABJRU5ErkJggg=='); 
 | 
  
 | 
  &.left-btn { 
 | 
    background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAACACAYAAAB5sSvuAAAAAXNSR0IArs4c6QAAAFBlWElmTU0AKgAAAAgAAgESAAMAAAABAAEAAIdpAAQAAAABAAAAJgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAKKADAAQAAAABAAAAgAAAAAAobJzlAAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgoZXuEHAAADf0lEQVR4Ae2cvYsTQRjGE7FQkICFB1pZRyzEJkUKmzOpBEHwX9DCQkmChf4JahewsLpWFOQUzwMRPEgEy0PLpPADvEISDrVyfZ6cK0tIZrI7u7MPMi+8mb35uPnlmXczyeXmrURRdKyibAB8Dz8pywg42if4OUnIGd7Bww8Ut+GHpEATgPEll/y8DGRMtaB8hrryl30B2HzVW1Rcgx8vQ9UqaVac+Cf67cC34C+q1erHFcc5dUsDOD/RGBWv4M/hrwG8jzJ3cwFMwlDdd/BN+BZgd5ONLtd5Ac4zfEYFld0ALMMisxUFmAQa44dHdMB+TTasdM2bxJNxI7gDP7ISWNzJE1xymhF+uBzPbyvL2NZOA+oJIO/BrfP7iEGTSNtovIrY/L6sU9mA5PoAby6DtEq87JnlWF/H7+K+v/DmUQDkc23CNxbFpAogIa/Ab/IiaQoxmOThlnkG8TiKK5UUJNNR+MMYjqUaIJnWEYuXeEFTBCTXv1hUi0HCxXYWsbirqiAhb/BBWcE9KLimDEgB68pLTMAL6oBNdcBT6oBr6oAn1O9i2a2Od/DM1Jc4KBivVOYyLHFm6f4ODAoGBV0VcB0fYjAo6KqA6/gQg0FBVwVcx4cYDAq6KuA6/v+Mwel0Wmm325XhcOgqkH08/h6cyiaTSdRoNPhvBFGtVosGg0Gq8Wk7V9IO6Pf7MzgC+oBMDcgn1Ov1vEFmAvQJmRmQkN1ut3AlnQB9QDoDErLT6RSmZC6ARULmBlgUpPxWl5uCRcVhLoBFwTFsnAGLfi10AiwazklBX/txJgV9wWVSUP7tlvwbVspOyFarVfi7ac4Vvquzfyoy95DfiwOgeQHtrUFBu0bmHkFBsz721qCgXSNzj6CgWR97a1DQrpG5R1DQrI+9NSho18jcIyho1sfauqeuoDzgN3UFv6gD7qh/cK8rA84OGygv8VO+CCkrKH3g5Q1P41BB1SV+QDia4hJvQ72LB3h6gPIH/+5CvVGsntoSPwYQzxr/VgRkJoF1wP1KwvFa4SaRPgDNI+RLT2dTwTJfB+9j/jaWden5dgIe5oNnG2O+WwCb7bXWuflliSfLlAjCh4JULHMqjaIAc0tGkhdgnM6FyXI2EV+5pXNxAeTSMSHOSzg3+H2UuVsaQKq0A/eaUmiVb9yZlOk6vJSkTCZA2bRWsonBpFOrySan+wNoJmOM0LyBGwAAAABJRU5ErkJggg=='); 
 | 
  } 
 | 
  
 | 
  &.left-btn-open { 
 | 
    background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAACACAMAAABOb9vcAAAAhFBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AAADHx8cODg50dHTx8fF2dnZ1dXWWlpZHR0c4ODhQpkZ5AAAAIXRSTlMA9t+/upkRAnPq5NXDfDEsKQjMeGlRThkMsquljTwzIWhBHpjgAAABJElEQVRYw+3YyW7CQBCEYbxig8ELGJyQkJRJyPb+75dj3zy/lD7kMH3+ZEuzSFO1mlZwhjOE2uwhVHJYMygNVwilhz2EUvNaMigledUFoE1anKYAtA9nVRuANpviOQBt0t2ZQSnZ9QxK6Qih9LSGUHkJobYlhGp6CPW4hlAVhckLhMop1InCjEK1FBYU1hSqo/BI4YXCjMIthTWFijDCCB3g7fuO4O1t/rkvQXPz/LUIzX0oAM0tQHOfCkBzC9DcuwLQXACao9Dv1yb9lsek2xaaxMcMH1x6Ff79dY0wwgj/DGv3p2tG4cX9wd55h4rCO/hk3uEs9w6QlXPIbXrfIJ6XrmVBOtJCA1YkXqVLkh1aUgyNk1fV1BxLxzpsuNLKzrME/AWr0ywwvyj83AAAAABJRU5ErkJggg=='); 
 | 
    transform: rotateY(360deg); 
 | 
  } 
 | 
} 
 | 
</style> 
 |