element-plus框架+vue3+echart——后台页面

一、图表样式

图表组件:echarts

https://echarts.apache.org/examples/zh/index.html

element-plus框架:

https://www.cwgj.xyz/zh-CN/

1、折线图

栅格 一共24。 12代表占一半50%, 当页面缩小到一定程度 占整个屏幕的100%。
id="money_echarts"重要,关系到图表生成放置的位置。
该折线图带有日期筛选。
value-format="YYYY-MM-DD"返回时间的格式
:disabled-date="state.disabledDate"时间限制,比如不能选择今天之后的日期。
日期说明:https://www.cwgj.xyz/zh-CN/component/date-picker.html

在这里插入图片描述

.bigChart {width: 100%;padding: 15px;background-color: #ffffff;margin-bottom: 20px;border-radius: 15px;.titleBox {display: flex;justify-content: space-between;align-items: center;.title {font-weight: bold;font-size: 16px;color: #1D2129;}.timeBox {display: flex;align-items: center;font-size: 14px;color: #4E5969;}}.broken_order {height: 300px;margin-top: 20px;}}
<el-col :xs="24" :lg="12"><!-- 折线图--><el-row :gutter="24" style="margin: 0;"><div class="bigChart"><div class="titleBox"><div class="title">签单金额统计</div><div class="timeBox">日期:<el-date-picker v-model="state.moneyTime" type="daterange" range-separator="-"start-placeholder="开始时间" end-placeholder="结束时间" size="small"@change="chooseMoneyTime" value-format="YYYY-MM-DD":unlink-panels="true" :disabled-date="state.disabledDate"></el-date-picker></div></div><div id="money_echarts" class="broken_order"></div></div></el-row>
</el-col>
define(['jquery', 'bootstrap', 'backend', 'addtabs', 'table', 'echarts', 'echarts-theme', 'template'], function ($, undefined, Backend, Datatable, Table, Echarts, undefined, Template) {var Controller = {index: function () {const {ref, reactive, onMounted} = Vueconst {ElMessage} = ElementPlusconst index = {setup() {const state = reactive({money_start_time: '0',//开始时间money_end_time: '0',//结束时间disabledDate(time) {return time.getTime() > Date.now()}})onMounted(() => {getContractMoneyStatistics()//折线图接口})//时间筛选function chooseMoneyTime(val) {if(val){state.money_start_time = val[0]state.money_end_time = val[1]}else{state.money_start_time = ''state.money_end_time = ''}getContractMoneyStatistics()//刷新折线图}// 折线图接口function getContractMoneyStatistics() {$.ajax(`Consoledata/contractMoneyStatistics`, {type: 'POST',data: {'start_time': state.money_start_time,'end_time': state.money_end_time,},success: function (res) {ContractMoneyStatistics(res.data) //签单金额统计折线图}})}// 折线图表function ContractMoneyStatistics(res) {var myChart = Echarts.init(document.getElementById('money_echarts'), 'walden');//自适应兼容window.addEventListener('resize', function () {myChart.resize();})// 指定图表的配置项和数据var option = {tooltip: {trigger: 'axis',backgroundColor: '#6a7985', //背景颜色borderWidth: '0', //边框为0textStyle: {color: '#fff', //字体颜色},axisPointer: {type: 'cross',label: {backgroundColor: '#6a7985',},},},legend: {data: ['订单金额', '订单数'],zlevel: 1,},grid: {left: '2%',right: '3%',bottom: '2%',top: '18%',containLabel: true, // 包含刻度文字在内},xAxis: [{type: 'category',boundaryGap: true, //坐标轴两端空白策略splitLine: {show: false,lineStyle: {type: 'dashed'}},axisTick: {show: false, //隐藏X轴刻度},data: res.days,},],yAxis: [{name: '',type: 'value',axisLabel: {color: '#666',},//name的样式设计nameTextStyle: {color: '#333',// align: 'left',// left:'2%'},splitLine: {show: true,lineStyle: {type: 'dashed'}},axisLine: {show: false, //隐藏Y轴线},axisTick: {show: false, //隐藏Y轴刻度},},{name: '',type: 'value',axisLabel: {color: '#666',},//name的样式设计nameTextStyle: {color: '#333',align: 'left',},splitLine: {show: true,lineStyle: {type: 'dashed'}},axisLine: {show: false, //隐藏Y轴线},axisTick: {show: false, //隐藏Y轴刻度},},],series: [{name: '合同总金额',type: 'line',areaStyle: {color: '#3DB2FF',},emphasis: {focus: 'series',},data: res.money,yAxisIndex: 0,areaStyle: {color: new Echarts.graphic.LinearGradient(0, 0, 0, 1, [{offset: 0,color: 'rgba(33,204,255,0.2)' // 渐变起始颜色}, {offset: 1,color: 'rgba(2,193,214,0)' // 渐变结束颜色}])}},],};// 使用刚指定的配置项和数据显示图表。myChart.setOption(option);}//方法暴露出去return {state,chooseMoneyTime,}}}createApp('index', index);}};return Controller;
})

2、饼状图

在这里插入图片描述

 .chartBox {margin-bottom: 15px;background: #FFFFFF;border-radius: 15px;padding: 15px;.title {font-weight: bold;font-size: 16px;color: #1D2129;}.card_right {height: 350px;padding: 20px 0 0;}
}
<el-col :xs="24" :lg="12"><div class="chartBox"><div class="title">客户等级数量统计</div><div id="businessNumber_echarts" class="card_right"></div></div>
</el-col>
 //饼状图
function CustomerLevel(res) {var myChart = Echarts.init(document.getElementById('businessNumber_echarts'), 'walden');window.addEventListener('resize', function () {myChart.resize();})var option = {title: {text: '总数',subtext: res.num + '个',left: 'center',top: '0',// 调整标题与图表顶部的距离},tooltip: {trigger: 'item'},legend: {orient: 'vertical',//图例竖直排列left: 'right',//图例位置在右上角},grid: {top: 150,//图表距离容器上侧的距离containLabel: true//是否包含坐标轴的刻度标签},series: [{name: '数量',type: 'pie',radius: '50%',//调整图表的大小center: ['50%', '60%'],//调整图表的位置data: [],emphasis: {itemStyle: {shadowBlur: 10,shadowOffsetX: 0,shadowColor: 'rgba(0, 0, 0, 0.5)'}}}]};// 替换数据let numDate = res.level_list.map(item => ({value: item.num, // 将num属性重命名为valuename: item.name // 保留name属性}))option.series[0].data = numDateoption && myChart.setOption(option);
}

二、其他

1、修改input框禁用状态的样式

    input:disabled {-webkit-text-fill-color: #000000; /* 设置文本填充颜色为黑色 */-webkit-opacity: 1; /* 设置透明度为1,‌确保元素完全可见 */padding: 0 !important;}.el-input.is-disabled .el-input__wrapper {background-color: #ffffff !important; /* 设置背景颜色为白色 */}.el-input.is-disabled .el-input__inner {-webkit-text-fill-color: #606266 !important;}

2、联系电话:只能输入数字

  <el-col :span="6"><el-form-item label="联系电话" class="mConentClass"><el-input v-model="item.mobile" style="width: 100%" :disabled="item.is_edit" type="tel"oninput="value=value.replace(/[^\d]/g,'')"></el-input></el-form-item></el-col>

3、性别选择

多个参数,自定义参数和回调参数

<el-col :span="6"><el-form-item label="性别" class="mConentClass"><el-select v-model="item.sex_text" placeholder="请选择性别":disabled="item.is_edit" @change="chooseSex(item,$event)"><el-option :label="itemSex.name" :value="itemSex.id"v-for="(itemSex,indexSex) in  state.sexList":key="indexSex"></el-option></el-select></el-form-item>
</el-col>

不要忘记把方法暴露出去

function chooseSex(item, e) {console.log("性别", item, e);item.sex = e
}

4、金额的字段限制

只能输入数字,支持小数点输入。

<el-col :span="3"><el-form-item label="金额(元)" class="mConentClass"><el-input v-model="item.money" :disabled="item.is_edit"oninput="value=value.replace(/[^0-9.]/g, '').replace(/(\..*)\./g, '$1').replace(/^0+/, '')"></el-input></el-form-item>
</el-col>

5、查看下载附件

activity.files是地址

 <el-link type="primary" :href="activity.files" target="_blank"> 查看附件</el-link>

6、暂无记录样式

<el-col v-if="state.list.length==0" style="width: 100%;"><div style="width: 100%;display: flex;justify-content: center;"><el-empty description="暂无记录" :image-size="100"></el-empty></div>
</el-col>

7、弹框

<el-dialog v-model="state.followPopup" title="添加" width="650" :before-close="closeFollowPopup" :close-on-click-modal="false" :center="true">
<el-form :inline="true" label-position="top" label-width="auto" class="mBaseInfoPar"><el-row><el-col><el-form-item label="附件" class="mConentClass"></el-form-item></el-col></el-row></el-form><template #footer><div class="dialog-footer"><el-button @click="submitFollow">提交</el-button></div></template>
</el-dialog>

8、上传文件

 <el-upload ref="uploadRef" class="upload-demo" :action="state.uploadUrl" :auto-upload="true"accept=".xlsx,.xls,.pdf,.doc,.docx,.ppt" @success="uploadSuccess"><el-button type="primary">点击上传</el-button>
</el-upload>
setup() {const uploadRef = ref()const state = reactive({uploadUrl: "/GIY5GPUbtIv0qrQgoLT.php/ajax/upload",url: '',//文件上传地址})function submitFollow() {$.ajax(`facrm/customer/Contacts/addRrecordLog`, {type: 'POST',data: {'customer_id': state.id,'content': state.content,'record_type': state.record_type,'next_time': state.next_time,'url': state.url,},success: function (res) {if (res.code == 1) {ElMessage.success(res.msg)state.followPopup = falsestate.content = ''state.record_type = ''state.next_time = ''state.url = ''uploadRef.value.clearFiles()//清除上传文件列表getGenJinData()//刷新记录} else {}}})}// 追踪记录上传文件function uploadSuccess(e) {console.log(e)state.url = e.data.url}
}

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

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

相关文章

拉刀基础知识——拉刀的种类

如前面所说&#xff1a;近期要围绕拉削和拉刀这个话题&#xff0c;分享一些相关的内容&#xff0c;从最基础的知识开始&#xff0c;为此还专门买了本旧书——《拉刀设计》入门学习。废话不多说&#xff0c;直接开始。 拉刀最早由冲头演变而来&#xff0c;用于加工方孔&#xf…

C:关于static 和 extern 关键字的介绍-学习笔记

目录 1、作用域与生命周期 1.1 作用域 1.2 生命周期 1.3 变量的作用域和生命周期之间的关系 2、static 和 extern 2.1 static 修饰局部变量&#xff1a; 2.2 static 修饰全局变量&#xff08;包含extern的作用&#xff09;&#xff1a; 2.3 static修饰函数&#xff1a…

由浅入深的了解进程(5)--环境变量

环境变量 前言环境变量1、更多的环境变量及添加和删除2、整体理解环境变量系统 3、内建命令 前言 在上一篇文章中简单的介绍了环境变量&#xff0c;但是没有讲述的比较全面了&#xff0c;所以现在再写一篇来介绍环境变量。 环境变量 在上一篇文章中&#xff0c;我们已经简单…

机械学习—零基础学习日志(高数18——无穷小与无穷大)

零基础为了学人工智能&#xff0c;真的开始复习高数 学习速度加快&#xff01; 无穷小定义 这里可以记住&#xff0c;无穷小有一个特殊&#xff0c;那就是零。 零是最高阶的无穷小&#xff0c;且零是唯一一个常数无穷小。 张宇老师还是使用了超实数概念来讲解无穷小。其实是…

Mecanim Animation System

动画系统简介 Unity 有一个非常丰富而又复杂的动画系统&#xff0c;官方称其为Mecanim。该系统具有以下功能&#xff1a; 支持从外部导入动画剪辑&#xff0c;如&#xff1a;fbx、mb | ma&#xff08;Autodesk maya 原件&#xff09;、.max&#xff08;3ds Max原件&#xff09…

Final Shell for Mac 虚拟机连接工具【简单易操作,轻松上手】【开发所需连接工具】

Mac分享吧 文章目录 效果一、下载软件二、安装软件三、运行测试安装完成&#xff01;&#xff01;&#xff01; 效果 一、下载软件 下载软件 链接&#xff1a;http://www.macfxb.cn 二、安装软件 三、运行测试 安装完成&#xff01;&#xff01;&#xff01;

Redis学习[6] ——Redis缓存设计

八、Redis缓存设计 8.1 为什么Redis用作缓存&#xff1f; 一般来说&#xff0c;数据库的数据都是落在磁盘上的&#xff0c;会导致读写速度很慢。如果用户的请求量非常大&#xff0c;数据库很容易崩溃。由于Redis的数据保存在内存中&#xff0c;读写速度很快&#xff0c;所以R…

React(四):DOCX文件在线预览

效果 注意 ⚠️注意&#xff1a;部分文件预览存在问题 依赖 $ yarn add docx-preview $ yarn add jszip源码 import ./index.scss; import {useRef} from react; import type {UploadRequestOption} from rc-upload/lib/interface; import {Upload, Button, message} from an…

【时时三省】(C语言基础)一维数组

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ——csdn时时三省 数组 数组就是一组数 数组的官方定义是一组相同类型元素的集合 一堆数组的创建和初始化 求组的创建 数组是一组相同类型元素的集合。数组的创建当时是: type&#xff3f;t arr&#x…

【过题记录】8.4(robocom补题,网络流)

今天robocom国赛&#xff0c;因为一个bool函数忘记return 1而裂开(错失21分) 以此为戒 贪心消消乐 其实就是一个求最大子矩阵和的板子题 利用最大子段和的思想 枚举矩阵中的上下界 压成一维后利用最大子段和 O ( n ) O(n) O(n)处理 复杂度 O ( n 3 ∗ k ) O(n^3*k) O(n3∗k) k为…

nginx: [error] open() “/run/nginx.pid“ failed (2: No such file or directory)

今天 准备访问下Nginx服务&#xff0c;但是 启动时出现如下报错&#xff1a;&#xff08;80端口被占用&#xff0c;没有找到nginx.pid文件&#xff09; 解决思路&#xff1a; 1、 查看下排查下nginx服务 #确认下nginx状态 ps -ef|grep nginx systemctl status nginx#查看端口…

[CTF]-PWN:格式化字符串漏洞题综合解析

printf型格式化字符串漏洞&#xff1a; 任意地址写&#xff1a; 32位&#xff1a; 例题&#xff08;inndy_echo&#xff09;&#xff1a; 有格式化字符串漏洞&#xff0c;可以修改printf的got表内地址为system&#xff0c;传参getshell 解法一&#xff1a; 在32位中可以使…

vscode的json文件解析

vscode的json文件解析 0.参考链接1.什么是JSON2.JSON语法2.0数据类型2.1对象2.2数组2.3嵌套 3.vscode包含的JSON文件介绍4.vscode包含的JSON文件解析4.1 task.json4.2 launch.json4.3 settings.json4.4 c_cpp_properties.json4.5 package.json&#xff08;详细的看参考链接&…

Python设计模式 - 抽象工厂模式

定义 抽象工厂模式是一种创建型设计模式&#xff0c;它提供了一种创建一系列相关或相互依赖对象的接口&#xff0c;而无需指定它们具体的类。 产品等级结构与产品族 为了更好地理解抽象工厂模式&#xff0c;先引入两个概念&#xff1a; 产品等级结构&#xff1a;就是产品的…

试用AWS全新神器:Amazon Bedrock的「Open Artifacts」版Claude.ai Artifacts

Claude.ai的Artifacts真是太方便了。 GitHub上的AWS Samples仓库中有一个仿制Artifacts的应用程序。 Open Artifacts for Amazon Bedrock https://github.com/aws-samples/open_artifacts_for_bedrockhttps://github.com/aws-samples/open_artifacts_for_bedrock本文将介绍「…

【C++】数组案例 五只小猪称体重

题目&#xff1a;给出五只小猪体重&#xff0c;找出最大的体重的值并打印 思路&#xff1a;利用数组写入五只小猪的体重&#xff0c;让每一个元素都赋值给一个整型变量并每赋值一次就于下一个数组中的元素比&#xff0c;若是大就继续赋值给这个变量&#xff0c;若是小则不赋值…

H81002S 1.7mm网络变压器:BMS汽车蓝牙接收器中的超薄共模电感科技

华强盛导读&#xff1a;在当今这个日新月异的汽车科技领域&#xff0c;每一处细节都蕴含着创新与突破。作为电动汽车心脏的电池管理系统&#xff08;BMS&#xff09;&#xff0c;其高效稳定的运行不仅关乎续航与安全&#xff0c;更是智能化驾驶体验的基石。而在这背后&#xff…

win7安装mysql-installer-community-8.0.11.0

1、安装Microsoft Visual C 2019 Redistributable Package (x64) 官网下载地址&#xff1a;https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?viewmsvc-160#latest-microsoft-visual-c-redistributable-version 通过百度网盘分享的文件&#xff1…

Ubuntu安装nvidia-docker并使用的正确方式

Ubuntu安装docker: ubuntu(24.04)以及WSL2安装docker的详细教程_unbantu安装docker-CSDN博客文章浏览阅读646次,点赞5次,收藏3次。默认情况下,只有root用户和docker组的用户才能运行Docker命令。我们可以将当前用户添加到docker组,以避免每次使用Docker时都需要使用sudo。…

DAP-Seq:解锁转录因子结合位点的新钥匙

引言&#xff1a; 在基因组学的浩瀚宇宙中&#xff0c;转录因子如同掌管基因表达的神秘钥匙。它们与DNA上的特定序列结合&#xff0c;调控着生命活动的每一个节拍。然而&#xff0c;传统的研究方法在探索这些结合位点时面临诸多挑战。今天&#xff0c;我们将一起了解一种创新技…