当前位置: 首页 > news >正文

Vue进阶之Vue无代码可视化项目(七)

Vue无代码可视化项目

  • 右侧栏配置——配置面板
    • components/RightPanel.vue
    • views/LayoutView.vue
    • 装import-sort插件
      • package.json
      • .eslintrc.cjs
      • pnpm i安装
      • 修复import问题
    • 进一步的:components/RightPanel.vue
      • 初始化
      • 其次
    • editor.ts
    • 进一步的:views/LayoutView.vue

右侧栏配置——配置面板

右侧栏配置主要是表单相关的内容,表单处理是开发中用的特别多的场景;今天从架构师的视角来看下这个表单怎么设计,动态表单、复杂表单、表单联动。

  • src
    • components
    • RightPanel.vue

components/RightPanel.vue

先将左侧栏复制一份粘到右侧栏上

<script setup lang="ts">
import {Lightning, Share } from '@icon-park/vue-next'
import { ref } from 'vue';import {SmoothDndContainer} from '@/components/SmoothDnd/SmoothDndContainer'
import {SmoothDndDraggable} from '@/components/SmoothDnd/SmoothDndDraggable'type Mode = 'outline'|'blocks'|null
const mode = ref<Mode>(null)const toggleMode = (newMode:Mode) => {if(newMode === mode.value){mode.value = null}else{mode.value = newMode}
}
</script><template><div class="left-panel-wrapper"><div class="left-panel-left"><div class="btn" :class="{active:mode==='outline'}" @click="()=>toggleMode('outline')"><Lightning /></div><div class="btn" :class="{active:mode==='blocks'}" @click="()=>toggleMode('blocks')"><Share /></div></div><!-- 接入动画 --><transition name="app-left-panel-drawer"><div class="left-panel-content" v-show="mode">{{mode}}<!-- 面板中使用SmoothDnd --><SmoothDndContainer class="block-group" behaviour="copy"tag="div"  group-name="blocks" @drag-start="(e,v)=>console.log(e,v)" @drag-leave="(e,v)=>console.log(e,v)"@drop="(e)=>console.log('drop',e)":get-child-payload="(index:number)=>index+1"><SmoothDndDraggable v-for="i in 10" :key="i"><div class="block-item">{{i}}</div></SmoothDndDraggable></SmoothDndContainer></div></transition></div>
</template><style scoped>
.left-panel-wrapper {display: flex;height: 100%;background-color: #f5f5f5;border: 1px solid #e8e8e8;
}
.left-panel-left{display: flex;padding:0 10px;flex-direction: column;align-items: center;width: 50px;height: 100%;background-color: #e8e8e8;
}
.btn{width: 32px;height: 32px;display: flex;justify-content: center;align-items: center;cursor: pointer;border-radius: 6px;margin-top:20px;/* &:hover{background-color: #f5f5f5;} */
}
.btn:hover{background-color: #f5f5f5;
}
/* 被激活时候的特定样式 */
.btn.active{background-color: rgb(0,196,83);color: #fff;
}
.left-panel-content{flex: 1;width: 280px;height: 100%;background-color: #f5f5f5;overflow: hidden;
}/* 下面我们会解释这些 class 是做什么的 */
.app-left-panel-drawer-enter-active,
.app-left-panel-drawer-leave-active {transition: width 0.1s cubic-bezier(0.3, 0.1, 0.3, 1);
}.app-left-panel-drawer-enter-from,
.app-left-panel-drawer-leave-to {width: 0;
}.app-left-panel-drawer-content {width: calc(var(--panel-width) - 60px);height: 100%;padding: 16px;
}.block-item{width: 40px;height: 40px;background-color: #fff;border: 1px solid #e8e8e8;margin-bottom: 8px;display: flex;justify-content: center;align-items: center;font-size: 14px;transition:background-color 0.3s

相关文章:

  • 口袋奇兵游戏攻略:云手机辅助战锤入侵策略指南!
  • 防御综合实验作业2
  • Web开发:<br>标签的作用
  • 裸金属服务器
  • Java:Bean实体对象和Map互相转换
  • 内容长度不同的div如何自动对齐展示
  • C/C++蓝屏整人代码
  • npm install时报错 reason: certificate has expired
  • PCB(印制电路板)制造涉及的常规设备
  • 阿里云DSW实例中安装并运行Neo4J
  • 万界星空科技MES系统生产计划管理的功能
  • JAVASE-医疗管理系统项目总结
  • 【力扣】最小栈
  • 【Unity C#基础】浅谈List底层逻辑
  • npm相关指令
  • 【知识碎片】第三方登录弹窗效果
  • java8 Stream Pipelines 浅析
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • MySQL用户中的%到底包不包括localhost?
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • python docx文档转html页面
  • rabbitmq延迟消息示例
  • Redis中的lru算法实现
  • 多线程 start 和 run 方法到底有什么区别?
  • 如何选择开源的机器学习框架?
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 要让cordova项目适配iphoneX + ios11.4,总共要几步?三步
  • 转载:[译] 内容加速黑科技趣谈
  • 7行Python代码的人脸识别
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • #C++ 智能指针 std::unique_ptr 、std::shared_ptr 和 std::weak_ptr
  • #php的pecl工具#
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示
  • (C++二叉树05) 合并二叉树 二叉搜索树中的搜索 验证二叉搜索树
  • (二)换源+apt-get基础配置+搜狗拼音
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (力扣)循环队列的实现与详解(C语言)
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (转)Mysql的优化设置
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .NET Core 中的路径问题
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • .net用HTML开发怎么调试,如何使用ASP.NET MVC在调试中查看控制器生成的html?
  • /var/lib/dpkg/lock 锁定问题
  • :class的用法及应用
  • @TableId注解详细介绍 mybaits 实体类主键注解
  • [000-01-022].第03节:RabbitMQ环境搭建
  • [2016.7 day.5] T2
  • [ABC294Ex] K-Coloring
  • [acwing周赛复盘] 第 94 场周赛20230311