横向思维导图前端样式


追溯记录图路上 代码如下 index.vue在这里插入图片描述

<template><div style="margin-left: 5%;margin-top: 6%">
<el-form style="margin-top: -5%; "  :inline="true"><el-form-item label="药品名称"><el-select v-model="drugs_code" placeholder="请选择" filterable clearable @change="changedrugs" ><el-optionv-for="item in drugsList":key="item.drugs_code":label="item.drugs_name +'|' + item.drugs_code  + '|' + item.short_name" :value="item.drugs_code"></el-option></el-select>
</el-form-item><el-form-item label="批号"><el-select v-model="batch_no" placeholder="请选择" filterable clearable  :disabled="isshow"><el-optionv-for="item in batchList":key="item.batch_no":label="item.batch_no" :value="item.batch_no"></el-option></el-select></el-form-item><!-- <el-form-item label="时间"><el-date-picker v-model="dateRange" size="small" style="width: 240px" value-format="yyyy-MM-dd HH:mm:ss"type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker></el-form-item> --><el-form-item > <el-button type="warning" @click="search"> 搜索</el-button></el-form-item>
</el-form><right-treev-if="list && list.length":list="list":showfields="showFields"></right-tree></div>
</template>
<script>
import RightTree from './RightTree'
import { formatDates, convertDateRange } from '@/api/house/recordinfo'
import { getTableZNMJG, postTableZNMJG } from '@/api/table/tableCommon'
export default {components:{RightTree,},data(){return{dateRange: [],isshow:true,drugs_code:'',drugs_name:'',batch_no:'',list: [],drugsList:[],batchList:[],showFields: [{name: '规格:',key: 'name',},{name: '批号:',key: 'serviceId',},],}},created(){this.getDrugs()},mounted() {const today = new Date()const startOfDay = new Date(today)startOfDay.setHours(0, 0, 0) // 设置为当天的 00:00:00const endOfDay = new Date(today)endOfDay.setHours(23, 59, 59) // 设置为当天的 23:59:59this.dateRange = formatDates([startOfDay, endOfDay])},methods:{search(){let _this = this;let parm = {};parm.drugs_code = this.drugs_code;parm.drugs_name = '';parm.batch_no = this.batch_no;parm.expire_date = '';postTableZNMJG('/AccountBook/Traceability',parm).then(function (res) {if (res.code == 200) {_this.list = res.data;}}).catch(function (e) {_this.list=[];});},changedrugs(){let _this = this;let parm = {};this.batch_no = '';parm.drugs_code=  this.drugs_codepostTableZNMJG('/AccountBook/Batch_noInfo' , parm).then(function (res) {if (res.code == 200) {_this.batchList = res.data;_this.isshow = false;}}).catch(function (e) {_this.batchList=[];});},getDrugs(){let _this = this;let parm = {};parm.drugs_enable = 1;parm.is_bottle = 1;postTableZNMJG('/AccountBook/DrugsWhole',parm).then(function (res) {if (res.code == 200) {_this.drugsList = res.data;}}).catch(function (e) {_this.drugsList=[];});}},}
</script>

RightTree.vue

<template><div class="TreeRight" v-if="showTree"><div class="childs"><div class="child" v-for="(item, index) in list" :key="item.id + '-child-' + index"><div class="child-item" :style="{ marginRight: item.children && item.children.length > 1 ? '20px' : '' }"><div class="childname" :id="item"><div v-if="item.id != '1'" class="content-box" :ref="item.id" :id="item.id"><el-button type="primary" round style="margin-left: 30%"> {{ item.dept_name }}</el-button><!-- <span style="color:blue">  {{}} </span> --><br /><div v-if="item.id == '1'"><span style="color: rgb(134, 143, 152); font-size: 12px">{{ tem.drusg_name }} </span><br /><span style="color: rgb(134, 143, 152); font-size: 12px">规格:{{ item.drugs_specs }}</span><br /><span style="color: rgb(134, 143, 152); font-size: 12px">批号:{{ item.batch_no }}</span></div><div style="display: flex" v-else><span style="margin-left: 8%; color: rgb(134, 143, 152); font-size: 14px">存入:<el-button type="text" @click="details(item.id, item.drugs_code, '入库' ,item.batch_no)"> {{ item.replish_Qty }}</el-button></span><span style="margin-left: 5%; color: rgb(134, 143, 152); font-size: 14px">取出:<el-button type="text" @click="details(item.id, item.drugs_code, '出库' ,  item.batch_no)"> {{ item.pick_Qty }}</el-button></span><span style="margin-left: 5%; color: rgb(134, 143, 152); font-size: 14px">库存:<el-button type="text" @click="details" disabled> {{ item.stock_Qty }}</el-button></span></div><!-- <pv-for="(itemshow,index3) in showfields":key="'itemshow'+index3">{{itemshow.name}}{{item[itemshow.key]}}</p> --></div><div v-else class="content-boxOne" :ref="item.id" :id="item.id"><el-button type="primary" round style="margin-left: 30%"> {{ item.dept_name }}</el-button><!-- <span style="color:blue">  {{}} </span> --><br /><div v-if="item.id == '1'"><br /><span style="margin-left: 8%; color: rgb(134, 143, 152); font-size: 12px; font-weight: bold">{{ item.drusg_name }} </span><br /><br /><span style="margin-left: 8%; color: rgb(134, 143, 152); font-size: 12px">规格:{{ item.drugs_specs }}</span><br /><span style="margin-left: 8%; color: rgb(134, 143, 152); font-size: 12px">批号:{{ item.batch_no }}</span><br /><span style="margin-left: 8%; color: rgb(134, 143, 152); font-size: 12px">存入:<el-button type="text" @click="details(item.id, item.drugs_code, '入库' ,item.batch_no)" > {{ item.replish_Qty }}</el-button></span><span style="margin-left: 5%; color: rgb(134, 143, 152); font-size: 12px">取出:<el-button type="text"  @click="details(item.id, item.drugs_code, '出库' ,item.batch_no)" > {{ item.pick_Qty }}</el-button></span><span style="margin-left: 5%; color: rgb(134, 143, 152); font-size: 12px">库存:<el-button type="text"> {{ item.stock_Qty }}</el-button></span></div><div style="display: flex" v-else><span style="color: rgb(134, 143, 152); font-size: 14px">存入:<el-button type="text"> {{ item.replish_Qty }}</el-button></span><span style="color: rgb(134, 143, 152); font-size: 14px">取出:<el-button type="text"> {{ item.pick_Qty }}</el-button></span><span style="color: rgb(134, 143, 152); font-size: 14px">库存:<el-button type="text" disabled> {{ item.stock_Qty }}</el-button></span></div><!-- <pv-for="(itemshow,index3) in showfields":key="'itemshow'+index3">{{itemshow.name}}{{item[itemshow.key]}}</p> --></div><div style="width: 30px"></div><div class="position-top" v-if="isFirst(item.id) && domready" :style="position_top(item.id, 'top')"></div><div class="position-top" v-if="isLast(item.id)" :style="position_top(item.id, 'bottom')"></div></div><div style="width: 160px"></div></div><!-- 递归组件展示子节点 --><div class="child-children" v-if="item.children && item.children.length"><RightTree :list="item.children" :showfields="showfields" /></div></div></div><el-dialog title="明细" :visible.sync="dialogVisible" width="90%"><el-table:data="tableList"><el-table-column type="index" width="50" label="" prop=""/> <el-table-column  width="" prop="sy_type" label="类型"/>  <el-table-column  width="" prop="real_qty" label="数量"/><!-- <el-table-column  width="" prop="out_qty" label="出库"/>  --><!-- <el-table-column  width="" prop="bussniess_type" label="bussniess_type"/>  --><el-table-column  width="" prop="dept_name" label="科室名称"/> <el-table-column  width="" prop="drugs_code" label="药品编号"/> <el-table-column  width="" prop="drugs_name" label="药品名称"/> <!-- <el-table-column  width="" prop="stock_qty" label="库存"/>  --><el-table-column  width="" prop="stock_totalqty" label="总库存"/> <!-- <el-table-column  width="" label="total_stock" prop="total_stock"/>  --><!-- <el-table-column  width="" prop="bill_qty" label="单据数量"/>  --><!-- <el-table-column  width="" prop="need_qty" label="需取数量"/>  --><!-- <el-table-column  width="" prop="real_qty" label="数量"/>  --><el-table-column  width="" prop="bill_no" label="单号"/> <!-- <el-table-column  width="" label="serial_no" prop="serial_no"/>  --><!-- <el-table-column  width="" label="patient_id" prop="patient_id"/>  --><!-- <el-table-column  width="" prop="patient_name" label="患者姓名"/>  --><!-- <el-table-column  width="" prop="patient_dept_no" label="患者科室号"/>  --><!-- <el-table-column  width="" prop="patient_dept_name" label="患者科室"/>  --><!-- <el-table-column  width="" prop="patient_sex" label="patient_sex"/>  --><!-- <el-table-column  width="" prop="patient_age" label="patient_age"/>  --><!-- <el-table-column  width="" prop="patient_bedno" label="patient_bedno"/>  --><el-table-column  width="" prop="batch_no" label="批号"/> <!-- <template slot-scope="scope"><el-table-column  v-if="scope.row.sy_type == '入库'"  width="" prop="produce_name" label="供应商"/><el-table-column v-if="scope.row.sy_type == '入库'"  width="" prop="produce_date" label="生产日期"/> </template> --><el-table-column  width="" prop="expire_date" label="效期"/> <el-table-column  width="" prop="create_by" label="入库/出库人"/> <el-table-column  width="" prop="last_update_by" label="复核人"/> <el-table-column  width="" prop="drugs_specs" label="规格"/> <!-- <el-table-column  width="" prop="dosage" label=""/>  --><!-- <el-table-column  width="" prop="dose_mode" label="dose_mode"/>  --><!-- <el-table-column  width="" prop="exec_rate" label="exec_rate"/>  --><!-- <el-table-column  width="" prop="produce_date" label="produce_date"/>  --><!-- <el-table-column  width="" prop="bill_type" label="bill_type"/>  --><!-- <el-table-column  width="" prop="qty_h" label="qty_h"/>  --><!-- <el-table-column  width="" prop="qty_l" label="qty_l"/>  --><!-- <el-table-column  width="" prop="dept_no" label="dept_no"/>  --><!-- <el-table-column  width="" prop="batch_no_qty" label="batch_no_qty"/>  --><!-- <el-table-column  width="" prop="mPerson" label="mPerson"/>  --><!-- <el-table-column  prop="package_unit" label="package_unit"/>  --><!-- <el-table-column   prop="package_ratio" label="package_ratio"/>  --><!-- <el-table-column   prop="return_qty" label="return_qty"/>  --><!-- <el-table-column  prop="drugs_flag" label="drugs_flag"/>  --><el-table-column   prop="create_date" label="入库/出库时间"/> <!-- <el-table-column  width="" prop="last_update_date" label="复"/>  --></el-table></el-dialog></div></template><script>
import LeaderLine from 'leader-line-vue'import { getTableByKey, getTable, getTableZNMJG, postTableZNMJG } from '@/api/table/tableCommon'
export default {name: 'RightTree',components: {},data() {return {tableData: {keyName: 'zhuisumap',Data: {},},xxdrugsBatch: '',xxdrugsSpecs: '',xxdrugsName: '',api_url: '',domready: false,dialogVisible: false,lines: [],tableList: [],}},created() {// this.loadTable()},props: {list: {type: Array,default: () => [],},showfields: {type: Array,default: () => [],},},mounted() {this.$nextTick(() => {this.domready = truethis.drawArrowLine()})},computed: {/*** 是否展示树计算属性*/showTree() {return this.list && this.list.length},},beforeDestroy() {/*** 离开页面时销毁所有line*/if (this.lines && this.lines.length) {this.lines.forEach((line) => {line.remove()})}},methods: {loadTable() {getTableByKey(this.tableData.keyName).then((response) => {this.tableData.Data = response.datathis.tableData.Data.columns.forEach((item) => {//    this.getDictsTable(item.dictName)})}).catch((err) => {this.$message.warning('数据表格框架尚未维护,请联系实施人员进行维护')})},// getDictsTable(dictName) {//   if (dictName != null) {//     this.getDicts(dictName).then((response) => {//       this.tableData.Data.columns.forEach((item) => {//         if (item.isDict == 'Y' && item.dictName == dictName) {//           item.rangeKey = response.data//         }//       })//     })//   }// },details(id, drugs_code, type ,batch_no) {let _this = thislet parm = {page: 1,limit: 10,dept_no: id,drugs_code: drugs_code,batch_no : batch_no,sy_type: type,start_time: '2022-01-01',end_time: '2025-01-01',}postTableZNMJG('/AccountBook/TraceabilityShifts', parm).then(function (res) {if (res.code == 200) {_this.tableList = res.data_this.dialogVisible = true}}).catch(function (e) {_this.tableList = []})},/*** 递归绘制箭头*/drawArrowLine() {this.drawLeaderLine(this.list)},/*** 根据上下级关系绘制线条*/drawLeaderLine(list) {list.forEach((element) => {let start = document.getElementById(element.id)if (element.children && element.children.length) {element.children.forEach((child) => {let line = LeaderLine.setLine(start, document.getElementById(child.id))line.color = 'rgba(30, 130, 250, 0.5)'line.path = 'grid'line.size = 3line.setOptions({dash: { animation: true },})this.lines.push(line)})this.drawLeaderLine(element.children)}})},position_top(id, position) {let dom = document.getElementById(id)let heightif (dom) {height = dom.clientHeight}let rtif (position === 'top') {rt = {height: height / 2 - 2 + 'px',top: 0,}}if (position === 'bottom') {rt = {height: height / 2 + 1 + 'px',bottom: 0,}}return rt},isFirst(id) {return this.list.length > 1 && this.list.map((x) => x.id).indexOf(id) === 0},isLast(id) {return this.list.length > 1 && this.list.map((x) => x.id).indexOf(id) === this.list.length - 1},},
}
</script><style lang="scss" scoped>
.TreeRight {p {margin: 0;font-size: 13px;}display: flex;.father {width: 70px;background-color: rgb(127, 92, 223);padding: 100px 10px;}.childs {.child {display: flex;background-color: #fff;.child-item {display: flex;align-items: center;margin: 10px 0;.childname {.content-box {text-align: left;border: 1px solid #777676;padding: 10px;height: 80px;border-radius: 100px;width: 1000%;box-shadow: 0 2px 4px 0 rgba(99, 98, 98, 0.7);}.content-boxOne {text-align: left;border: 1px solid #808080;background-color: rgb(241, 241, 241);padding: 10px;height: 300px;border-radius: 70px;width: 1000%;box-shadow: 0 2px 4px 0 rgba(107, 106, 106, 0.7);}//cursor: pointer;height: 100%;display: flex;align-items: center;width: 220px;text-align: center;justify-content: center;position: relative;padding: 10px 0;.position-arrow {position: absolute;left: -22px;}.position-top {position: absolute;width: 3px;background-color: #fff;left: -23px;height: 10px;}}.childarrow {height: 100%;display: flex;align-items: center;}}}.child-children {display: flex;flex-direction: column;justify-content: center;}}
}
</style>

ition-arrow {
position: absolute;
left: -22px;
}
.position-top {
position: absolute;
width: 3px;
background-color: #fff;
left: -23px;
height: 10px;
}
}
.childarrow {
height: 100%;
display: flex;
align-items: center;
}
}
}
.child-children {
display: flex;
flex-direction: column;
justify-content: center;
}
}
}


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/60157.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

清华大学提出Mini-Omni2:开源多模态模型,功能与GPT-4o媲美!

&#x1f310; 在人工智能领域&#xff0c;多模态模型的发展正如火如荼。今天&#xff0c;我们要介绍的是由清华大学提出的Mini-Omni2&#xff0c;这是一个开源的多模态语言模型&#xff0c;它在功能上与GPT-4o相媲美&#xff0c;能够理解和生成视觉、听觉和文本内容&#xff0…

HarmonyOS入门 : 获取网络数据,并渲染到界面上

1. 环境搭建 开发HarmonyOS需要安装DevEco Studio&#xff0c;下载地址 : https://developer.huawei.com/consumer/cn/deveco-studio/ 2. 如何入门 入门HarmonyOS我们可以从一个实际的小例子入手&#xff0c;比如获取网络数据&#xff0c;并将其渲染到界面上。 本文就是基于…

msvcr100.dll丢失怎么解决?高效靠谱的六种解决方法分享

在我们使用电脑的时候&#xff0c;有一种叫动态链接库&#xff08;DLL&#xff09;的文件特别重要。比如&#xff0c;msvcr100.dll是Microsoft Visual C 2010 Redistributable包里的一部分&#xff0c;很多应用程序在运行的时候都需要用到它。但是&#xff0c;有些用户在使用的…

【C++练习】二进制到十进制的转换器

题目&#xff1a;二进制到十进制的转换器 描述 编写一个程序&#xff0c;将用户输入的8位二进制数转换成对应的十进制数并输出。如果用户输入的二进制数不是8位&#xff0c;则程序应提示用户输入无效&#xff0c;并终止运行。 要求 程序应首先提示用户输入一个8位二进制数。…

【SpringBoot】19 文件/图片下载(MySQL + Thymeleaf)

Git仓库 https://gitee.com/Lin_DH/system 介绍 从 MySQL 中&#xff0c;下载保存的 blob 格式的文件。 代码实现 第一步&#xff1a;配置文件 application.yml spring:jackson:date-format: yyyy-MM-dd HH:mm:sstime-zone: GMT8datasource:driver-class-name: com.mysql.…

C++——异常

异常是在程序执行的过程中发生了某种错误&#xff0c;异常的处理机制允许我们讲发生的异常抛出给程序的另外一部分&#xff0c;对这个错误进行处理。这个机制让问题检测的环节和问题处理的环节分离。检测环节只需要负责检测即可&#xff0c;无需关系解决的细节问题。在C语言中处…

Linux相关概念和易错知识点(19)(HDD、Block group)

目录 1.HDD &#xff08;1&#xff09;HDD存储描述 &#xff08;2&#xff09;HDD结构图 &#xff08;3&#xff09;磁盘管理的分治思想 &#xff08;4&#xff09;硬盘中文件系统的整体划分图 2.Block group &#xff08;1&#xff09;文件管理 ①文件属性的存储 ②in…

WWDC24(Xcode 16)中全新的 Swift Testing 使用进阶

概述 WWDC 24 祭出的全新单元测试系统着实让苹果开发者们眼前一亮。“原来测试还可以这么爽&#xff01;&#xff1f;”&#xff0c;日渐逼近蟋蟀发型的某位码农如是说。 Swift Testing 在简洁性以及灵活性全面超越老大哥 XCTest 的同时&#xff0c;也让秃头码农们真正见识到了…

k8s-service、endpoints、pod之间是怎么进行网络互通的

k8s-service、endpoints、pod之间是怎么进行网络互通的 1、service2、endpoints3、service、endpoints、pod通信图4、不同服务pod内部间访问 1、service 在K8S中&#xff0c;Service是一种抽象&#xff0c;定义了一组Pod的逻辑集合和访问这些Pod的策略。首先&#xff0c;我们需…

命令行工具PowerShell使用体验

命令行工具PowerShell使用 PowerShell是微软开发的一种面向对象的命令行Shell和脚本语言环境&#xff0c;它允许用户通过命令行的方式管理操作系统。相较于传统CMD&#xff0c;PowerShell增加了面向对象的程序设计框架&#xff0c;拥有更强大的功能和扩展性。使用PowerShell可…

企业IT架构转型之道:阿里巴巴中台战略思想与架构实战感想

文章目录 第一章&#xff1a;数据库水平扩展第二章&#xff1a;中台战略第三章&#xff1a;阿里分布式服务架构HSF&#xff08;high speed Framework&#xff09;、早期Dubbo第四章&#xff1a;共享服务中心建设原则第五章&#xff1a;数据拆分实现数据库能力线性扩展第六章&am…

【优选算法篇】微位至简,数之恢宏——解构 C++ 位运算中的理与美

文章目录 C 位运算详解&#xff1a;基础题解与思维分析前言第一章&#xff1a;位运算基础应用1.1 判断字符是否唯一&#xff08;easy&#xff09;解法&#xff08;位图的思想&#xff09;C 代码实现易错点提示时间复杂度和空间复杂度 1.2 丢失的数字&#xff08;easy&#xff0…

在 WPF 中,绑定机制是如何工作的?WPF数据绑定机制解析

在WPF&#xff08;Windows Presentation Foundation&#xff09;中&#xff0c;数据绑定机制是其核心功能之一&#xff0c;广泛用于连接应用程序的UI&#xff08;用户界面&#xff09;和应用程序的业务逻辑层。数据绑定允许你将UI元素与数据源&#xff08;如对象、集合或其他数…

基于 STM32 的天气时钟项目中添加天气数据的网络获取功能

基于 STM32 的天气时钟项目中添加天气数据的网络获取功能&#xff0c;您需要确保您的开发环境具备网络连接能力。这里以 ESP8266 Wi-Fi 模块为例&#xff0c;详细说明如何实现网络获取天气数据的功能。 1. 硬件连接 连接 ESP8266 模块 请参考以下连接方式&#xff0c;将 ESP82…

晓宇电视 1.9 | 电视直播软件,几千频道,高清秒播

晓宇电视是一款电视直播软件&#xff0c;提供数千个高清频道&#xff0c;支持秒播。最大的特色是没有广告&#xff0c;且不需要用户手动更新源地址。安装后即可使用&#xff0c;频道节目丰富&#xff0c;包括影视剧轮播专区&#xff0c;用户可以轻松观看喜爱的电影和电视剧。软…

双指针算法的妙用:提高代码效率的秘密(2)

双指针算法的妙用&#xff1a;提高代码效率的秘密&#xff08;2&#xff09; 前言&#xff1a; 小编在前几日讲述了有关双指针算法两道题目的讲解&#xff0c;今天小编继续进行有关双指针算法习题的讲解&#xff0c;老规矩&#xff0c;今天还是两道题目的讲解&#xff0c;希望…

MySQL:客户端工具创建数据库

MySQL 是一个开源的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;用于存储、管理和检索数据。MySQL是基于SQL语言的&#xff0c;它具有高效、可靠、易用的特点。 客户端工具 这个mysqld.exe就在计算机安装的数据可服务&#xff0c;启动之后&#xff0c;mys…

使用python向钉钉群聊发送消息

使用python向钉钉群聊发送消息 一、在钉钉群中新建机器人二、使用代码发送消息 一、在钉钉群中新建机器人 在群设置中添加机器人 选择自定义 勾选对应的安全设置 完成后会展示webhook&#xff0c;将地址复制出来&#xff0c;并记录&#xff0c;后面会用到 二、使用代码发送消…

【芯智雲城】Sigmastar星宸科技图传编/解码方案

一、图传技术简介 图传是指将图像或媒体内容从一个设备传输到另外一个设备的技术&#xff0c;传输的媒介可以是无线电波、光纤、以太网等。图传系统主要由图像采集设备、传输设备和接收设备组成&#xff0c;图像采集设备负责采集实时图像&#xff0c;传输设备将采集到的图像转…

sql专题 之 常用命令

文章目录 查询基础语法查询全表查询选择查询&#xff1a;常量和运算&#xff1a; 条件查询where运算符&#xff1a;、 !、<、>空值&#xff1a;null模糊查询&#xff1a;like逻辑运算&#xff1a;and or not 去重&#xff1a;distinct排序&#xff1a;order by截断和偏移…