vue+ElementUI使用笔记
1,使用表单验证:
//定义验证规则
window.varifyUtil = {
//验证数字
validateNumber: function(rule, value, callback){
if (!isGreaterZero(value)) {
return callback(new Error("请输入数字类型"));
}
callback();
},
//验证身份证号
validateIdcard: function(rule, value, callback){//身份证验证
var reg = /^(\d{})(\d{})(\d{})(\d{})(\d{})([-]|X)$/
if (value && !reg.test(value)) {
return callback(new Error('身份证号码格式有误'));
}
callback();
},
validateIdcardRequired: function(rule, value, callback){//身份证验证
var reg = /^(\d{})(\d{})(\d{})(\d{})(\d{})([-]|X)$/
if (!value || !reg.test(value)) {
return callback(new Error('身份证号码格式有误'));
}
callback();
},
//验证手机
validateMobile: function(rule, value, callback){
var reg = /^\d{}$/
if (value && !reg.test(value)) {
return callback(new Error('电话号码格式有误'));
}
callback()
},
//验证手机
validateMobileRequired: function(rule, value, callback){
var reg = /^\d{}$/
if (!reg.test(value)) {
return callback(new Error('电话号码格式有误'));
}
callback()
},
//验证电话号码
validateTel: function(rule, value, callback){
var reg = /^[\d\+\*-]+$/
if (value && !reg.test(value)) {
return callback(new Error('电话号码格式有误'));
}
callback()
},
//验证电话号码
validateTelRequired: function(rule, value, callback){
var reg = /^[\d\+\*-]+$/
if (!reg.test(value)) {
return callback(new Error('电话号码格式有误'));
}
callback()
},
//验证邮箱
validateEmail: function(rule, value, callback){
var reg = /^[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?$/
if (value && !reg.test(value)) {
return callback(new Error('Email地址格式有误'));
}
callback()
},
//验证密码
validatePwd: function(rule, value, callback){
var reg = /^(\w){,}$/ //'[A-Za-z0-9_]'
if(!value){
return callback(new Error('请输入密码'));
}else if (!reg.test(value)) {
return callback(new Error('密码由字母、数字、下划线组成,长度为6~16个字符'));
}
callback()
},
validateBankNo: function(rule, value, callback){
var reg = /^\d{,}$/
if(value && !reg.test(value)) {
return callback(new Error('银行卡号格式有误'))
}
callback();
}
}
定义验证规则
<!--from表单:-->
<el-dialog title="补全机构信息" :visible.sync="dialogEnterpriseVisible">
<el-form :model="enterpriseForm" :rules="enterpriseFormRules" ref="enterpriseForm">
<el-form-item label="机构类型:" prop="func_type">
<el-select v-model="enterpriseForm.func_type" placeholder="机构类型">
<el-option v-for="ft in functypes" :key="ft.name" :value="ft.name" :value="ft.name"></el-option>
</el-select>
</el-form-item>
<el-form-item label="机构名称:" prop="name">
<el-input v-model="enterpriseForm.name" placeholder="机构名称"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogEnterpriseVisible = false">取 消</el-button>
<el-button type="primary" @click="AddEnterprise">继续</el-button>
</div>
</el-dialog> <!--数据:-->
functypes:[],
enterpriseForm:{
func_type:'',
name:''
},
enterpriseFormRules:{
func_type:[{required: true, message: '请选择机构类型', trigger: 'change'}],
name:[{required: true, message: '请输入机构名称', trigger: 'blur'}]
}, <!--方法:-->
AddEnterprise:function(){
var vm = this
vm.$refs['enterpriseForm'].validate(function (valid) {
if(valid){ }else{ }
})
}
单独对一个input验证: vm.$refs['user'].validateField("name")
vm.$refs['user'].validateField("mobile",function(msg){
if(msg!=null&&msg!="")return
else
{
alert("asdasd")
} })
①文本验证 {required: true, message: '请输入项目名称', trigger: 'blur'}
②下拉框验证 {required: true, message: '请选择项目类型', trigger: 'change'}
③自定义验证
{ required: true, validator: validateRegion, trigger: 'change' } function validateRegion(rule, value, callback) {
if (!VM.selectedProvince || !VM.selectedCity || !VM.selectedArea) {
return callback(new Error('请选择省市区'));
}
callback();
};
④长度验证 {min: 1, max: 50, message: '长度在 1 到 50 个字符', trigger: 'blur'}
⑤日期选择验证 { type: 'date', required: true, message: '请选择时间', trigger: 'change' }
⑥金额验证(可有小数点):
function validatorApplyAmountRequired(rule, value, callback) {
if (value == '' || value == null) {
return callback(new Error("输入不能为空"));
}
if (!isGreaterZeroNumber(value)) {
return callback(new Error("请输入格式有误"));
}
callback();
}; //验证V是否是大于0
function isGreaterZeroNumber(v) {
if (isNaN(v) || !v) {
return false;
}
if (v <) {
return false;
}
return true;
}
⑦值下拉框验证:
[{required: true,type:"number",message: '请选择项目', trigger: 'change'}]
2,返回上一级
handleBack: function(obj){
window.location.href = document.referrer;
//window.history.go(-1) 不刷新
}
3,调用子iframe里面的方法
<!-- page content begin -->
<div class="main" id="main">
<iframe id="mainFrame" name="mainFrame" src="" width="100%" height="100%" frameborder=0 style="background-color: transparent;"></iframe>
</div>
<!-- page content end --> //调用子页面flushSubData方法
try{
$(window.parent.document).contents().find("#mainFrame")[0].contentWindow.flushSubData();
}catch(err){}
3,input效果
<el-input class="input-m" type="number" min="" v-model.trim="formProject.months">
<template slot="append">
月
</template>
</el-input>
4,使用Echarts
①快速使用Echarts
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<!-- 引入 ECharts 文件 -->
<script src="echarts.min.js"></script>
</head>
</html>
引入jse
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>ECharts</title>
<!-- 引入 echarts.js -->
<script src="echarts.min.js"></script>
</head>
<body>
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div id="main" style="width: 600px;height:400px;"></div>
<script type="text/javascript">
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main')); // 指定图表的配置项和数据
var option = {
title: {
text: 'ECharts 入门示例'
},
tooltip: {},
legend: {
data:['销量']
},
xAxis: {
data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
},
yAxis: {},
series: [{
name: '销量',
type: 'bar',
data: [, , , , , ]
}]
}; // 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
</script>
</body>
</html>
绘制一个简单的图表
②使用主题
下载主题:http://echarts.baidu.com/download-theme.html
<script src="echarts.js"></script>
<!-- 引入 vintage 主题 -->
<script src="theme/vintage.js"></script>
<script>
// 第二个参数可以指定前面引入的主题
var chart = echarts.init(document.getElementById('main'), 'vintage');
chart.setOption({
...
});
</script>
实例
③vue使用Echarts案例
<!DOCTYPE html>
<html> <head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta content="瓯云" name="description">
<meta content="瓯云" name="author">
<link href="/favicon.ico" rel="icon" type="image/x-icon" />
<title>劳动力分析</title>
<link rel="stylesheet" href="../../lib/elementui/elementui-1.4.1.css">
<link rel="stylesheet" href="../../css/common.css?v=20171219001" />
<link rel="stylesheet" href="../../css/console.css?v=20171219001" />
<script src="../../lib/jquery-1.9.1.min.js"></script>
<script language="javascript" src="../../lib/jquery.base64.js"></script>
<script src="../../lib/jquery.cookie.js"></script>
<script src="../../lib/elementui/vue-2.4.2.js"></script>
<script src="../../lib/elementui/elementui-1.4.1.js"></script>
<script src="../../lib/echarts/echarts-3.6.2.min.js"></script>
<script src="../../lib/echarts/macarons.js"></script>
<script src="../../lib/JSLINQ.js"></script>
<script src="../../js/console.js?v=20171219001"></script>
<script src="../../js/utils.js?v=20171219001"></script> </head> <body class="frame-body"> <div class="wrap" id="oyunVue" v-loading.fullscreen.lock="loading" element-loading-text="">
<!-- 导航条 -->
<div class="breadcrumb clearfix"><h2>劳动力分析</h2></div>
<!-- 搜索条件 start -->
<div class="clearfix">
<el-form :model="searchForm" :inline="true" class="demo-form-inline">
<el-form-item>
<el-select v-model="searchForm.org_name" clearable placeholder="请选择">
<el-option
v-for="item in groupData"
:key="item.ent_name"
:label="item.ent_name"
:value="item.ent_name">
</el-option>
</el-select>
</el-form-item> <el-form-item>
<el-button :loading="searchLoading" type="primary" icon="search" @click="fnSearch">搜索</el-button>
</el-form-item>
</el-form>
</div> <el-tabs v-model="activeName">
<el-tab-pane label="工种分布表" name="first">
<div id="worktype" style="width: 800px;height:400px;margin-left: 100px;margin-top: 20px"></div>
</el-tab-pane>
<el-tab-pane label="籍贯分布表" name="second">
<div id="native" style="width: 800px;height:400px;margin-left: 100px;margin-top: 20px"></div>
</el-tab-pane>
<el-tab-pane label="年龄段分布表" name="third">
<div id="age" style="width: 800px;height:400px;margin-left: 100px;margin-top: 20px"></div>
</el-tab-pane>
</el-tabs> </div>
<script>
var vueOptions = {
data: {
activeName: 'first',
getGroupDataApi:"ProjectEnterprise/GetList",
groupData:[],
searchForm: {
prj_id: '',
org_name: '',
},
worktypeData:[],
worktypeChart:{},
nativeChart:{}
},
mounted: function() {
this.pageAuth(747981802455041)
this.projectAuth()
this.getgroups()
this.fnSearch()
this.worktypeChart = echarts.init(document.getElementById('worktype'),"macarons");
this.nativeChart = echarts.init(document.getElementById('native'),"macarons");
this.ageChart = echarts.init(document.getElementById('age'),"macarons"); },
methods: {
//查询班组
getgroups:function(){
var vm=this
var option={
data:{
pageindex:1,
pagesize:9999,
parameter:{
prj_id:getCurrentProjectId()
}
},
route:vm.getGroupDataApi,
success:function(res){
vm.groupData=res.data
}
}
$.ajaxExt(option)
},
fnSearch:function(){
this.getgroups()
this.fnGetWorktype()
this.fnNative()
this.fnAge()
},
fnAge:function(){
var vm=this
vm.searchForm.prj_id=getCurrentProjectId()
var option={
data:{
parameter:vm.searchForm
},
route:'UsrEmployee/GetEmployeeAgeStatistics',
success:function(res)
{
if(res.ret!=0||res.data==''||res.data==null||res.data.length<=0)
{
vm.ageChart.setOption(vm.fnAgeChart("年龄段分布统计",[],[]))
return;
} var fullnames= JSLINQ(res.data).Select(x=>x.fullname).ToArray();
var data= JSLINQ(res.data).Select(x=>x.age).ToArray();
// var data= new Array()
// for(var i=0;i<res.data.length;i++)
// {
// data.push({value:res.data[i].age,name:res.data[i].fullname})
// } vm.ageChart.setOption(vm.fnAgeChart("年龄段分布统计",fullnames,data))
}
}
$.ajaxExt(option)
},
fnNative:function(){
var vm=this
vm.searchForm.prj_id=getCurrentProjectId()
var option={
data:{
parameter:vm.searchForm
},
route:'UsrEmployee/GetEmployeeNativeStatistics',
success:function(res)
{
if(res.ret!=0||res.data==''||res.data==null||res.data.length<=0){
vm.nativeChart.setOption(vm.fnPieChart("籍贯分布统计",[],[]))
return;
} var natives= JSLINQ(res.data).Select(x=>x.native).ToArray();
var data= new Array()
for(var i=0;i<res.data.length;i++)
{
data.push({value:res.data[i].count,name:res.data[i].native})
} vm.nativeChart.setOption(vm.fnPieChart("籍贯分布统计",natives,data))
}
}
$.ajaxExt(option)
},
fnGetWorktype:function(){
var vm=this
vm.searchForm.prj_id=getCurrentProjectId()
var option={
data:{
parameter:vm.searchForm
},
route:'UsrEmployee/GetEmployeeWorktypeStatistics',
success:function(res)
{
if(res.ret!=0||res.data==''||res.data==null||res.data.length<=0)
{
vm.worktypeChart.setOption(vm.fnPieChart("工种分布统计",[],[]))
return;
} var worktypes= JSLINQ(res.data).Select(x=>x.worktype).ToArray();
var data= new Array()
for(var i=0;i<res.data.length;i++)
{
data.push({value:res.data[i].icount,name:res.data[i].worktype})
} vm.worktypeChart.setOption(vm.fnPieChart("工种分布统计",worktypes,data))
}
}
$.ajaxExt(option)
},
fnPieChart:function(title,names,datas){
var option = {
title : {
text: title,
x:'center'
},
tooltip : {
trigger: 'item',
formatter: "{a} <br/>{b} : {c} ({d}%)"
},
legend: {
orient : 'vertical',
x : 'left',
data:names
},
calculable : true,
series : [
{
name:'访问来源',
type:'pie',
radius : '55%',
center: ['50%', '60%'],
data:datas
}
]
};
return option;
},
fnAgeChart:function(title,names,datas)
{
var option = {
title : {
text: title,
},
tooltip : {
trigger: 'axis'
},
legend: {
data:['年龄']
},
calculable : true,
xAxis : [
{
type : 'category',
boundaryGap : false,
data : names
}
],
yAxis : [
{
type : 'value',
axisLabel : {
formatter: '{value}岁'
}
}
],
series : [
{
name:'年龄',
type:'line',
data:datas,
markPoint : {
data : [
{type : 'max', name: '最大值'},
{type : 'min', name: '最小值'}
]
},
markLine : {
data : [
{type : 'average', name: '平均值'}
]
}
}
]
};
return option;
}
}
}
var VM = createVue(vueOptions);
$(function(){
$('#advancedSearch').on('keypress',function(e){
if(e.keyCode == '13') {
VM.fnSearch();
return false;
}
})
}) function flushSubData(){
VM.fnSearch()
VM.projectAuth()
} </script>
</body> </html>
案例
④设置x、y轴字体颜色
xAxis : [
{
type : 'category',
data : ['木工', '水泥工', '瓦工', '钢筋工', '油漆工', '塔吊工', '后勤人员'],
axisTick: {
alignWithLabel: true
},
axisLabel: {
show: true,
textStyle: {
color: '#fff'
}
} }
],
yAxis : [
{
type : 'value',
splitLine: {
show: false
},
axisLabel : {
formatter: '{value}',
textStyle: {
color: '#fff'
}
}
}
],
demo
5,JSLINQ使用
官网:https://archive.codeplex.com/?p=jslinq
包/案例下载:https://pan.baidu.com/s/14QZvQ7gcEmhxoFV1fT-Mvw
①引入js
<script src="../../lib/JSLINQ.js"></script>
②简单使用
var natives= JSLINQ(res.data).Select(x=>x.native).ToArray();
vue+ElementUI使用笔记的更多相关文章
- Vue.js学习笔记(2)vue-router
vue中vue-router的使用:
- Vue.js 组件笔记
Vue 组件总结笔记 一. 创建组件 1. 使用组件三部曲 ( 创建, 注册, 使用 ) 2. 全局组件:Vue.component('tag', {}); 3. 局部组件: components 属 ...
- spring boot + vue + element-ui全栈开发入门——开篇
最近经常看到很多java程序员朋友还在使用Spring 3.x,Spring MVC(struts),JSP.jQuery等这样传统技术.其实,我并不认为这些传统技术不好,而我想表达的是,技术的新旧程 ...
- spring boot + vue + element-ui全栈开发入门——基于Electron桌面应用开发
前言 Electron是由Github开发,用HTML,CSS和JavaScript来构建跨平台桌面应用程序的一个开源库. Electron通过将Chromium和Node.js合并到同一个运行时环 ...
- vue.js 学习笔记3——TypeScript
目录 vue.js 学习笔记3--TypeScript 工具 基础类型 数组 元组 枚举 字面量 接口 类类型 类类型要素 函数 函数参数 this对象和类型 重载 迭代器 Symbol.iterat ...
- vue+element-ui之tree树形控件有关子节点和父节点之间的各种选中关系详解
做后端管理系统,永远是最蛋疼.最复杂也最欠揍的事情,也永远是前端开发人员最苦逼.最无奈也最尿性的时刻.蛋疼的是需求变幻无穷,如同二师兄的三十六般变化:复杂的是开发难度寸步难行,如同蜀道难,难于上青天: ...
- vue+element-ui实现表格checkbox单选
公司平台利用vue+elementui搭建前端页面,因为本人第一次使用vue也遇到了不少坑,因为我要实现的效果如下图所示 实现这种单选框,只能选择一个,但element-ui展示的是多选框,check ...
- 递归函数 Vue ElementUI
对树形菜单的递归操作,首先应该对树形菜单数据进行整理,优化成自己需要的类型 比如Vue + ElementUI的动态侧边栏数据 export function routerRoleToPretty ( ...
- spring boot + vue + element-ui全栈开发入门
今天想弄弄element-ui 然后就在网上找了个例子 感觉还是可以用的 第一步是完成了 果断 拿过来 放到我这里这 下面直接是连接 点进去 就可以用啊 本想着不用vue 直接导入连接 ...
随机推荐
- JXL导出Excel(只支持xls版本)——(一)
注意: 导出的后缀是xls可以直接打开,如果导出的后缀是xlsx打开报错,需要手动将名字改为xls才可以打开.也就是JXL不可以导出xlsx的excel. Jar包
- Gaussian discriminant analysis 高斯判别分析
高斯判别分析(附Matlab实现) 生成学习算法 高斯判别分析(Gaussian Discriminant analysis,GDA),与之前的线性回归和Logistic回归从方法上讲有很大的不同,G ...
- AD域相关的属性和C#操作AD域
“常规”标签 姓 Sn 名 Givename 英文缩写 Initials 显示名称 displayName 描述 Description 办公室 physicalDeliveryOfficeNam ...
- RNN(2) ------ “《A Critical Review of Recurrent Neural Networks for Sequence Learning》RNN综述性论文讲解”(转载)
原文链接:http://blog.csdn.net/xizero00/article/details/51225065 一.论文所解决的问题 现有的关于RNN这一类网络的综述太少了,并且论文之间的符号 ...
- 用secureCRT操作ubuntu终端
用secureCRT操作ubuntu终端 ubuntu下先安装ssh windows下win+R再输入ubuntu的ip地址 ubuntu 检测端口号的命令 netstat -antp 下载到 ...
- 802.11 af 要点
(1)TVWS工作在 VHF/UHF 频段,欧洲为 470-790MHZ, 美国为 54-698MHZ. (2)GDB(Geolocation Database):地理位置数据库,与其他802.11协 ...
- makefile 字符串处理函数
截取自<跟我一起写Makefile> (1) $(subst <from>, <to>, <text>) 名称: 字符串替换函数 subst 功能: ...
- PHP中的一些常用函数
<?php //===============================时间日期=============================== //y返回年最后两位,Y年四位数,m月份数字 ...
- jmeter打开其他设备转过来的历史脚本出现报错
报错大概如下 missing class com.thoughtworks.xstream.converters.ConversionException Debugging information 还 ...
- python 全栈开发,Day123(图灵机器人,web录音实现自动化交互问答)
昨日内容回顾 . 百度ai开放平台 . AipSpeech技术,语言合成,语言识别 . Nlp技术,短文本相似度 . 实现一个简单的问答机器人 . 语言识别 ffmpeg (目前所有音乐,视频领域,这 ...