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

Vue项目实战-新能源汽车可视化(一)(持续更新中)

一.项目代码

1.App.vue

<template><!-- 模板--><div id="wrapper"><div style="width: 100%"><el-tabs v-model="activeName" id="tabs"> <!-- 标签栏里包含了三个标签面板,分别是研发与维修、车辆销售、车队管理--><el-tab-pane label="研发与维修" name="first"><div class = "title"><img src ="./assets/images/logo.png" class="img" /><p class="leftline" ><img src="./assets/images/leftLine.png"></p><p class="rightline"><img src="./assets/images/rightLine.png"></p></div><ul class="menu"><li v-for="(item,index) in yanfa" @click="goto(item.url,index,item)" :class="{'active':item.show===true,'list':true}"><router-link v-bind:to="item.url">{{item.name}}</router-link></li></ul><router-view></router-view></el-tab-pane><el-tab-pane label="车辆销售" name="second"><div class = "title"><img src ="./assets/images/logo.png" class="img" /><p class="leftline" ><img src="./assets/images/leftLine.png"></p><p class="rightline"><img src="./assets/images/rightLine.png"></p></div><ul class="menu"><li class="list active"><router-link to="/Salesdata">销售数据</router-link></li><li class="list"><router-link to="/Salesdetails">销售明细</router-link></li><li class="list"><router-link to="/Saleslists">销售列表</router-link></li></ul><router-view></router-view></el-tab-pane><el-tab-pane label="车队管理" name="third"><div class = "title"><img src ="./assets/images/logo.png" class="img" /><p class="leftline" ><img src="./assets/images/leftLine.png"></p><p class="rightline"><img src="./assets/images/rightLine.png"></p></div><ul class="menu"><li class="list active"><router-link to="/Vehiclemonitoring">车辆监控</router-link></li><li class="list"><router-link to="/Fleetdata">车队数据</router-link></li><li class="list"><router-link to="/VehicleProfile">车辆概况</router-link></li></ul><router-view></router-view></el-tab-pane></el-tabs></div></div>
</template><script> //脚本import './assets/Style/table.css'
import router from './router'
export default {data() {return {activeName: 'first' ,// 默认选中的标签面板 yanfa: [{name: "数据大屏",url: 'DataScreen',show: true},{name: "统计分析",url: 'DataStatistics',show: false},{name: "单车监控",url: 'RealTimeMonitoring',show: false},{name: "车辆管理",url: 'VehicleManagement',show: false},{name: "用户管理",url: 'UserManagement',show: false}]}}, //数据定义结束//定义函数methods:{//如果当前项被点击,则把当前项的show设置为true,否则为falsegoto (name,i,item) {item.show = !item.show;for(var j=0;j<this.yanfa.length;j++){if(j!==i){this.yanfa[j].show = false}}}}}
</script><style> /*样式*/
/* 设置html和body的行高为继承 */
html, body {line-height: inherit;
}/* 设置html、body和#wrapper的背景图片、尺寸和定位 */
html, body, #wrapper {background-image: url('assets/true.png'); /* 背景图片 */width: 100%; /* 宽度100% */height: 100%; /* 高度100% */position: fixed; /* 固定定位 */background-repeat: no-repeat; /* 背景不重复 */background-size: cover; /* 背景覆盖整个容器 */-webkit-background-size: cover; /* 兼容Webkit浏览器 */-o-background-size: cover; /* 兼容Opera浏览器 */background-position: center 0; /* 背景图片位置 */overflow-y: auto; /* 垂直方向允许滚动 */
}/* 设置.title的样式 */
.title {width: 100%; /* 宽度100% */height: 55px; /* 高度55px */background: url("./assets/images/headerBox.png") no-repeat; /* 背景图片不重复 */background-size: 100%; /* 背景图片大小 */text-align: center; /* 文本居中 */position: relative; /* 相对定位 */
}/* 设置图片宽度 */
.img {width: 24%; /* 宽度24% */
}/* 设置左线条样式 */
.leftline {position: absolute; /* 绝对定位 */top: 10px; /* 距顶部10px */width: 24%; /* 宽度24% */left: calc(50% - 600px); /* 计算左侧位置 */
}/* 设置右线条样式 */
.rightline {position: absolute; /* 绝对定位 */top: 10px; /* 距顶部10px */width: 24%; /* 宽度24% */right: calc(50% - 600px); /* 计算右侧位置 */z-index: 103; /* 层级 */
}/* 设置菜单列表样式 */
ul.menu {padding: 0; /* 内边距0 */list-style: none; /* 无列表样式 */width: 1.7%; /* 宽度1.7% */position: fixed; /* 固定定位 */height: 2%; /* 高度2% */top: 16%; /* 距顶部16% */font-family: 'Century Gothic'; /* 字体 */box-shadow: 0px 0px 25px #00000070; /* 阴影 */clear: both; /* 清除浮动 */display: table; /* 表格布局 */
}/* 设置菜单列表项样式 */
ul.menu .list {display: table-cell; /* 表格单元格 */width: 2em; /* 宽度2em */height: 7em; /* 高度7em */text-align: center; /* 文本居中 */vertical-align: middle; /* 垂直居中 */float: left; /* 左浮动 */background: #1c48a5; /* 背景颜色 */clear: both; /* 清除浮动 */margin-top: 2px; /* 上边距2px */border-bottom: 1px solid #1c48a5; /* 底部边框 */
}/* 设置菜单列表项链接样式 */
ul.menu .list a {text-decoration: none; /* 无下划线 */-webkit-writing-mode: vertical-r; /* Webkit垂直书写模式 */writing-mode: vertical-rl; /* 垂直书写模式 */font-size: 1em; /* 字体大小 */height: 7em; /* 高度7em */color: #fff; /* 文本颜色 */line-height: 1.2em; /* 行高 */word-spacing: 1.5em; /* 单词间距 */letter-spacing: 0.3em; /* 字母间距 */word-break: break-all; /* 允许单词内断行 */cursor: pointer; /* 鼠标指针样式 */
}/* 设置菜单列表项激活状态样式 */
ul.menu .active {background-color: #0d78cc; /* 背景颜色 */color: #09fbd2; /* 文本颜色 */
}/* 设置图标样式 */
.icon {width: 1%; /* 宽度1% */height: 8%; /* 高度8% */position: fixed; /* 固定定位 */top: 46%; /* 距顶部*/
}
</style>

2.main.js

// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import 'element-ui/lib/theme-chalk/index.css'
import Vue from 'vue'
import App from './App'
import element from 'element-ui' 
import router from './router'
import  VueRouter from 'vue-router'
Vue.use(VueRouter)  //使用vue-router
Vue.use(element)
import axios from 'axios'
Vue.prototype.axios = axios;Vue.config.productionTip = false
/* eslint-disable no-new */
new Vue({el: '#app',  //为vue组件提供挂载元素。挂载元素的名字叫做“app”,即首页里的名字叫做app的那个divrouter,components: { App },   //组件的名字叫做App.vuetemplate: '<App/>'   //App.vue组件中的模版内容会替换挂载元素中的内容
})

3.index.js

import Vue from 'vue'
import Router from 'vue-router'
//import HelloWorld from '@/components/HelloWorld'Vue.use(Router)import DataScreen from '@/components/DataScreen'
import DataStatistics from '@/components/DataStatistics'
import RealTimeMonitoring from '@/components/RealTimeMonitoring'
import UserManagement from '@/components/UserManagement'
import VehicleManagement from '@/components/VehicleManagement'
import Salesdata from '@/components/Salesdata'
import Salesdetails from '@/components/Salesdetails'
import Saleslists from '@/components/Saleslists'
import Vehiclemonitoring from '@/components/VehicleMonitoring'
import Fleetdata from '@/components/Fleetdata'
import VehicleProfile from '@/components/VehicleProfile'// export default new Router({
//   routes: [
//     {
//       path: '/',
//       name: 'HelloWorld',
//       component: HelloWorld
//     }
//   ]
// })
export default new Router({routes: [{ path: '/', name:DataScreen, component:DataScreen},{ path: '/Datascreen',name:DataScreen, component: DataScreen },{ path: '/Datastatistics',name:DataStatistics, component: DataStatistics },{ path: '/Realtimemonitoring',name:RealTimeMonitoring, component: RealTimeMonitoring },{ path: '/Usermanagement',name:UserManagement, component: UserManagement },{ path: '/Vehiclemanagement',name:VehicleManagement, component: VehicleManagement },{ path: '/Salesdata', name:Salesdata, component: Salesdata },{ path: '/Salesdetails', name:Salesdetails, component: Salesdetails },{ path: '/Saleslists', name:Saleslists, component: Saleslists },{ path: '/Vehiclemonitoring', name:Vehiclemonitoring, component: Vehiclemonitoring },{ path: '/Fleetdata', name:Fleetdata, component: Fleetdata },{ path: '/VehicleProfile', name:VehicleProfile, component: VehicleProfile }]
})

4.VehicleManagement.vue

<template><div id="app-content">    <div class="containerBox"><div style="padding: 38px 0 30px 20px;" class="ba"><div class="searchInputBox"><div class="inputItem pr"><p class="searchName">车载终端编号</p><br><el-input size="small" v-model="basicInput" class="searchDate.CarVIN"></el-input></div><div class="inputItem pr">  <!-- 选择框 按钮--><p class="searchName">车牌号</p><br><el-input size="small" v-model="basicInput" class="searchDate.CarNumber"></el-input></div><div class="inputItem pr"><p class="searchName">车辆状态</p><br><el-select  size="small" placeholder="请选择" v-model="basicInput" class="searchDate.Status"><el-option  value="all" label="全部"></el-option><el-option  value="true" label="启用"></el-option><el-option  value="false" label="禁用"></el-option></el-select></div><div class="inputItem buttonItem"><el-button type="primary" class="basicBtn basicBlueBtn">查询</el-button></div></div></div> <div class="vehicleInfo"><el-button size="small" @click="dialogFormVisible=true">新增车辆</el-button> <el-dialog id="Dialog" title="新增车辆" :visible.sync="dialogFormVisible" :modal="false" width="70%"> <el-form :model="form" class="Form" :rules="rules"><el-col :span="8"><div class="grid-content"><el-form-item label="车载终端编号" :label-width="formLabelWidth" prop="CarVIN"><el-input v-model="form.CarVIN" autocomplete="off"></el-input></el-form-item><el-form-item label="所属车队" :label-width="formLabelWidth" prop="Carline"><el-select v-model="form.Carline" placeholder="请选择所属车队"><el-option label="车队1" value="che1"></el-option><el-option label="车队2" value="che2"></el-option></el-select></el-form-item> <el-form-item label="车辆状态" :label-width="formLabelWidth" prop="Status"><el-select v-model="form.Status" placeholder="请选择车辆状态"><el-option label="启用" value="true"></el-option><el-option label="禁用" value="false"></el-option></el-select></el-form-item> <el-form-item label="车辆型号" :label-width="formLabelWidth" prop="vehicleType"><el-input v-model="form.vehicleType" autocomplete="off"></el-input></el-form-item><el-form-item label="电机品牌" :label-width="formLabelWidth" prop="motorBrand"><el-input v-model="form.motorBrand" autocomplete="off"></el-input></el-form-item><el-form-item label="电池型号" :label-width="formLabelWidth" prop="batteryType"><el-input v-model="form.batteryType" autocomplete="off"></el-input></el-form-item><el-form-item label="整车控制器序列号" :label-width="formLabelWidth" prop="veConNo"> <el-input v-model="form.veConNo" autocomplete="off"></el-input></el-form-item><el-form-item label="储能系统" :label-width="formLabelWidth" prop="energyStorage"><el-input v-model="form.energyStorage" autocomplete="off"></el-input></el-form-item></div></el-col><el-col :span="8" ><div class="grid-content"><el-form-item label="车牌号" :label-width="formLabelWidth" prop="CarNumber"><el-input v-model="form.CarNumber" autocomplete="off"></el-input></el-form-item><el-form-item label="当前里程数(km)" :label-width="formLabelWidth" prop="CurrKm"><el-input v-model="form.CurrKm" autocomplete="off"></el-input></el-form-item><el-form-item label="SIM卡ICCID编号" :label-width="formLabelWidth" prop="SIMIccid"><el-input v-model="form.SIMIccid" autocomplete="off"></el-input></el-form-item><el-form-item label="发动机品牌" :label-width="formLabelWidth" prop="engineBrand"><el-input v-model="form.engineBrand" autocomplete="off"></el-input></el-form-item><el-form-item label="电机型号" :label-width="formLabelWidth" prop="motorType"><el-input v-model="form.motorType" autocomplete="off"></el-input></el-form-item><el-form-item label="整车控制器品牌" :label-width="formLabelWidth" prop="veConBrand"><el-input v-model="form.veConBrand" autocomplete="off"></el-input></el-form-item><el-form-item label="整车控制器软件版本" :label-width="formLabelWidth" prop="veConsoftVersion"><el-input v-model="form.veConsoftVersion" autocomplete="off"></el-input></el-form-item><el-form-item label="车辆序列号" :label-width="formLabelWidth" prop="vehicleNo"><el-input v-model="form.vehicleNo" autocomplete="off"></el-input></el-form-item></div></el-col><el-col :span="8"><div class="grid-content"><el-form-item label="所属公司" :label-width="formLabelWidth" prop="Company"><el-select v-model="form.Company" placeholder="请选择所属公司"><el-option label="海格车企1" value="hai1"></el-option><el-option label="海格车企2" value="hai2"></el-option></el-select></el-form-item>  <el-form-item label="出厂日期" :label-width="formLabelWidth" prop="OutComData"><el-date-picker v-model="form.OutComData" type="date" placeholder="选择日期"></el-date-picker></el-form-item> <el-form-item label="车辆品牌" :label-width="formLabelWidth" prop="vehicleBrand"><el-input v-model="form.vehicleBrand" autocomplete="off"></el-input></el-form-item>  <el-form-item label="发动机型号" :label-width="formLabelWidth" prop="engineType"><el-input v-model="form.engineType" autocomplete="off"></el-input></el-form-item><el-form-item label="电池品牌" :label-width="formLabelWidth" prop="batteryBrand"><el-input v-model="form.batteryBrand" autocomplete="off"></el-input></el-form-item><el-form-item label="整车控制器型号" :label-width="formLabelWidth" prop="veConType"><el-input v-model="form.veConType" autocomplete="off"></el-input></el-form-item><el-form-item label="整车控制器硬件版本" :label-width="formLabelWidth" prop="veConHardVersion"><el-input v-model="form.veConHardVersion" autocomplete="off"></el-input></el-form-item><el-form-item label="备注" :label-width="formLabelWidth" prop="remark"><el-input v-model="form.remark" autocomplete="off"></el-input></el-form-item></div></el-col></el-form><div slot="footer" class="dialog-footer"><el-button @click="dialogFormVisible = false">取 消</el-button><el-button type="primary" @click="dialogFormVisible = false">确 定</el-button></div></el-dialog></div> <div class="ba"><div class="tabItem"><div class="tabItemConent" id="tabItemConent"><el-table id="tableBox" :data="tableData.slice((currentPage-1)*pageSize,currentPage*pageSize)":header-cell-style="{background:'#0d2458',border:'none' }" :row-style="{background:'#193777'}" :cell-style="{border:'none'}"><el-table-column prop="index" label="序号" align="center"></el-table-column><el-table-column prop="CarVIN" label="车载终端编号"  align="center" width="220" ></el-table-column><el-table-column prop="CarNumber" label="车牌号"  align="center"></el-table-column><el-table-column prop="Company" label="运营公司"  align="center"></el-table-column><el-table-column prop="Carline" label="车队"  align="center"></el-table-column><el-table-column prop="OutComData" label="出厂日期"  align="center"></el-table-column><el-table-column prop="RegData" label="注册日期"  align="center"></el-table-column><el-table-column prop="CurrKm" label="当前里程数"  align="center"></el-table-column><el-table-column prop="BadCount" label="故障次数"  align="center"></el-table-column><el-table-column prop="Status" label="状态"  align="center"></el-table-column><el-table-column prop="caozuo" label="操作" align="center"><template slot-scope="scope"><span size="mini">编辑</span><span aria-setsize="mini" type="danger">删除</span></template></el-table-column></el-table></div><!-- 分页 --><div class="block"><el-pagination id="pag"backgroundlayout="prev,pager,next,total,sizes,jumper":total="tableData.length":current-page="currentPage":page-size="pageSize":page-sizes="[5,10,50,100]"@current-change="handleCurrentChange"@size-change="handleSizeChange"></el-pagination></div><div class="block"></div></div></div></div></div>
</template><script>export default {data() {return {pagename: "车辆管理页面", // 页面标题searchDate:{             // 搜索条件CarVIN: '',       //车载终端编号CarNumber: '',Status: '',},tableData: [], // 车辆列表数据currentPage: "1", // 当前页码pageSize: "5", // 每页显示的条目数量dialogFormVisible: false,  //弹窗是否显示form: {   //定义车辆详细信息CarVIN:'',//车载终端编号CarNumber:'',//车牌号Company:'',//运营公司Carline:'',//车队CurrKm:'',//当前里程数OutComData:'',//出厂日期Status:'',//状态SIMIccid:'' , //SIM卡ICCID编号vehicleBrand:'' , //车辆品牌vehicleType:'', //车辆型号engineBrand:'',  //发动机品牌engineType:'',  //发动机型号            motorBrand:'',//电机品牌            motorType:'',// 电机型号            batteryBrand:'',// 电池品牌            batteryType:'',// 电池型号            veConBrand:'',// 整车控制器品牌            veConType:'',// 整车控制器型号            veConNo:'',// 整车控制器序列号            veConsoftVersion:'',// 整车控制器软件版本            veConHardVersion:'',// 整车控制器硬件版本            energyStorage:'',// 储能系统            vehicleNo:'',// 车辆序列号            remark:'',// 备注},formLabelWidth: '160px',rules:{   //定义规则,用于表单验证CarVIN:[{ required: true, message: '请输入车载终端编号', trigger: 'blur' },// { min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' }],CarNumber:[{ required: true, message: '请输入车牌号', trigger: 'blur' }],Company:[{ required: true, message: '请输入运营公司', trigger: 'blur' }],Carline:[{ required: true, message: '请选择车队', trigger: 'change' }],CurrKm:[{ required: true, message: '请输入当前里程数', trigger: 'blur' }],OutComData:[{ required: true, message: '请选择出厂日期', trigger: 'change' }],Status:[{ required: true, message: '请选择状态', trigger: 'change' }]}}},/*
在 Vue 应用中,我们有时需要在页面加载完成后再执行某些操作,比如获取数据、执行动画等等。Vue 提供了一些生命周期钩子函数来帮助我们实现这些需求。mounted 钩子函数是在组件挂载完成后调用的钩子函数。
我们可以在 mounted 钩子函数中执行一些 DOM 操作或者请求数据等操作。
*/
//定义钩子函数mounted,使用axios从carlist.json文件中获取车辆信息,存放到tableData中mounted() {// 使用axios从carlist.json文件中获取车辆信息,存放到tableData中this.axios('static/json/carlist.json').then(res => {this.tableData=res.data.carlist}).catch(err => {console.log(err)})},methods: {// 当前页发生改变时,执行该函数handleCurrentChange(currentPage){this.currentPage=currentPage;},// 每页条数发生改变时,执行该函数handleSizeChange(pageSize){this.pageSize=pageSize;}}
}
</script><style scoped>
</style>

5.UserManagement.vue

<template><div id="app-content">    <div class="containerBox"><div style="padding: 38px 0 30px 20px;" class="ba"><div class="searchInputBox"><div class="inputItem pr"><p class="searchName">用户名</p><br><el-input size="small" v-model="searchData.UserName" class="basicInput"></el-input></div><div class="inputItem pr">  <!-- 选择框 按钮--><p class="searchName">真实姓名</p><br><el-input size="small" v-model="searchData.RealName" class="basicInput"></el-input></div><div class="inputItem pr">  <p class="searchName">手机号</p><br><el-input size="small" v-model="searchData.Telephone" class="basicInput"></el-input></div><div class="inputItem pr"><p class="searchName">公司</p><br><el-select  size="small" placeholder="请选择" v-model="searchData.Company" class="basicInput"><el-option  value="all" label="True"></el-option><el-option  value="true" label="启用"></el-option></el-select></div><div class="inputItem pr"><p class="searchName">状态</p><br><el-select  size="small" placeholder="良好" v-model="searchData.State" class="basicInput"><el-option  value="all" label="True"></el-option><el-option  value="true" label="启用"></el-option></el-select></div><div class="inputItem pr"><p class="searchName">部门</p><br><el-select  size="small" placeholder="请选择" v-model="searchData.Dept" class="basicInput"><el-option  value="all" label="True"></el-option><el-option  value="true" label="启用"></el-option></el-select></div><div class="inputItem buttonItem"><el-button type="primary" class="basicBtn basicBlueBtn">查询</el-button></div></div></div> <div class="vehicleInfo"><el-button size="small" @click="dialogFormVisible=true">新增用户</el-button> <el-dialog id="Dialog" title="新增用户" :visible.sync="dialogFormVisible" :modal="false" width="45%"> <el-form :model="form" class="Form" :rules="rules" label-width="20%"> <!--表单 -->><el-form-item label="用户名" :label-width="formLabelWidth" prop="Username"><el-input v-model="form.UserName" placeholder="请输入用户名" autocomplete="off"></el-input></el-form-item><el-form-item label="密码" :label-width="formLabelWidth" prop="Password"><el-input v-model="form.Password" placeholder="请输入密码" autocomplete="off"></el-input></el-form-item><el-form-item label="请确认密码" :label-width="formLabelWidth" prop="Repassword"><el-input v-model="form.Repassword" placeholder="请确认密码" autocomplete="off"></el-input></el-form-item><el-form-item label="手机号码" :label-width="formLabelWidth" prop="Telephone"><el-input v-model="form.Telephone"placeholder="请输入手机号码" autocomplete="off"></el-input></el-form-item><el-form-item label="真实姓名" :label-width="formLabelWidth" prop="RealName"><el-input v-model="form.RealName" autocomplete="off"></el-input></el-form-item><el-form-item label="关联公司" :label-width="formLabelWidth" prop="Company"><el-select v-model="form.Company" placeholder="请选择关联公司"><el-option label="车队1" value="che1"></el-option><el-option label="车队2" value="che2"></el-option></el-select></el-form-item> <el-form-item label="关联部门" :label-width="formLabelWidth" prop="Dept"><el-select v-model="form.Dept" placeholder="请选择关联部门司"><el-option label="车队1" value="che1"></el-option><el-option label="车队2" value="che2"></el-option></el-select></el-form-item> </el-form><div slot="footer" class="dialog-footer"><el-button @click="dialogFormVisible = false">取 消</el-button><el-button type="primary" @click="dialogFormVisible = false">确 定</el-button></div></el-dialog></div> <div class="ba"><div class="tabItem"><div class="tabItemConent" id="tabItemConent"><el-table id="tableBox" :data="tableData.slice((currentPage-1)*pageSize,currentPage*pageSize)":header-cell-style="{background:'#0d2458',border:'none' }" :row-style="{background:'#193777'}" :cell-style="{border:'none'}"><el-table-column prop="index" label="序号" align="center"></el-table-column><el-table-column prop="RealName" label="真实姓名"  align="center" width="220" ></el-table-column><el-table-column prop="UserName" label="用户名"  align="center"></el-table-column><el-table-column prop="Telephone" label="手机号码"  align="center"></el-table-column><el-table-column prop="Dept" label="部门"  align="center"></el-table-column><el-table-column prop="Company" label="运营公司"  align="center"></el-table-column><el-table-column prop="CarEnterprises" label="车企"  align="center"></el-table-column><el-table-column prop="Status" label="状态"  align="center"></el-table-column><el-table-column prop="CreateTime" label="创建时间"  align="center"></el-table-column><el-table-column prop="caozuo" label="操作" align="center"><template slot-scope="scope"><span size="mini">编辑 </span><span aria-setsize="mini" type="danger">删除</span></template></el-table-column></el-table></div><!-- 分页 --><div class="block"><el-pagination id="pag"backgroundlayout="prev,pager,next,total,sizes,jumper":total="tableData.length":current-page="currentPage":page-size="pageSize":page-sizes="[5,10,50,100]"@current-change="handleCurrentChange"@size-change="handleSizeChange"></el-pagination></div><div class="block"></div></div></div></div></div></template><script>export default {data() {return {pagename: "用户管理", // 页面标题searchData:{         //查询数据UserName:"", //用户姓名RealName:"", //真实姓名Telephone:"", //电话Company:"", //公司名称State:"", //状态Dept:"", //部门},tableData: [], // 车辆列表数据currentPage: "1", // 当前页码pageSize: "5", // 每页显示的条目数量dialogFormVisible: false,  //弹窗是否显示form:{UserName:"",Password:"",RePassword:"",Telephone:"",RealName:"",Company:"",Dept:""},rules:{    //定义规则,用于表单验证UserName:[{ required: true, message: "请输入用户名", trigger: "blur"},{ pattern: /^[a-zA-Z0-9]{6,16}$/, message:'用户名格式错误', trigger: "blur"}],Password:[{ required: true, message: "请输入密码",trigger: "blur"},{ pattern: /[a-zA-Z\d+]{6,16}/, message:'密码格式错误',trigger:'blur'}],RePassword:[{ required: true, message: "请输入确认密码", trigger: "blur"},],Telephone:[{ required: true, message: "请输入电话号码", trigger: "blur"},{ pattern: /^1[3|4|5|7|8][0-9]{9}$/, message: "电话号码格式错误", trigger: "blur"}],RealName:[{ required: true, message: "请输入真实姓名", trigger: "blur"},{ pattern: /^[A-Za-z0-9\u4e00-\u9fa5]{1,16}$/, message: "真实姓名格式错误", trigger: "blur"}],Company:[{ required: true, message: '请选择关联运营公司', trigger: 'change' },],Dept:[{ required: true, message: '请选择关联部门', trigger: 'change' },]}}},/*在 Vue 应用中,我们有时需要在页面加载完成后再执行某些操作,比如获取数据、执行动画等等。Vue 提供了一些生命周期钩子函数来帮助我们实现这些需求。mounted 钩子函数是在组件挂载完成后调用的钩子函数。我们可以在 mounted 钩子函数中执行一些 DOM 操作或者请求数据等操作。*///定义钩子函数mounted,使用axios从carlist.json文件中获取车辆信息,存放到tableData中mounted() {// 使用axios从carlist.json文件中获取车辆信息,存放到tableData中this.axios('static/json/userlist.json').then(res => {this.tableData=res.data.userlist}).catch(err => {console.log(err)})},methods: {// 当前页发生改变时,执行该函数handleCurrentChange(currentPage){this.currentPage=currentPage;},// 每页条数发生改变时,执行该函数handleSizeChange(pageSize){this.pageSize=pageSize;}}}</script><style scoped></style>

二.项目运行截图

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

相关文章:

Vue项目实战-新能源汽车可视化(一)(持续更新中)

一.项目代码 1.App.vue <template><!-- 模板--><div id"wrapper"><div style"width: 100%"><el-tabs v-model"activeName" id"tabs"> <!-- 标签栏里包含了三个标签面板&#xff0c;分别是研发与维…...

百度SEO前10关键词排名波动跟用户行为反馈有很大关系

大家好&#xff0c;我是林汉文&#xff08;谷歌SEO专家&#xff09;&#xff0c;在百度SEO优化中&#xff0c;网站的排名并非一成不变&#xff0c;尤其是前10名的位置&#xff0c;更是动态变化。很多站长可能会发现&#xff0c;有时明明内容质量不错&#xff0c;外链也稳定&…...

基于微信小程序的电影交流平台

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…...

Java实现 itext PDF文件打印水印(文字和图片水印)

itext PDF文件打印水印 前言&#xff1a;公司有个需求&#xff0c;打印的合同模板要加上水印&#xff0c;但是由于itext版本问题&#xff0c;网上千篇一律的方法基本都没办法有效使用&#xff0c;然后自己琢磨下&#xff0c;记录下实现水印的功能的笔记。多页上都加上水印&…...

面经之一:Synchronized与ReentrantLock区别

Synchronized与ReentrantLock是Java中用于实现线程同步的两种主要机制&#xff0c;它们各有特点和适用场景。以下是它们的主要区别&#xff1a; 实现方式&#xff1a; Synchronized&#xff1a;是Java语言内置的关键字&#xff0c;通过JVM层面的监视器&#xff08;Monitor&…...

论文速读:面向单阶段跨域检测的域自适应YOLO(ACML2021)

原文标题&#xff1a;Domain Adaptive YOLO for One-Stage Cross-Domain Detection 中文标题&#xff1a;面向单阶段跨域检测的域自适应YOLO 1、Abstract 域转移是目标检测器在实际应用中推广的主要挑战。两级检测器的域自适应新兴技术有助于解决这个问题。然而&#xff0c;两…...

React中在map遍历中,给虚拟标签(<></>)加key

有时我们可能会需要在遍历时使用虚拟标签包裹内容&#xff0c;而不使用实际标签 &#xff0c;这种时候会有一个问题&#xff0c;就是虚拟标签无法加key&#xff0c;这样控制台会一直有警告。 {[1,2,3,4].map(v><><div></div><div></div><…...

大数据生态守护:Hadoop的深度保护策略

PART 1 从Hadoop运行原理透视数据保护需求 1、Hadoop的定义与范畴 Hadoop&#xff0c;狭义而言&#xff0c;是一个专为大数据设计的分布式存储与计算平台&#xff0c;其核心组件包括HDFS&#xff08;Hadoop分布式文件系统&#xff09;、MapReduce&#xff08;分布式计算框架&a…...

代码欣赏之:此题易错在 a+b 非要写成 a-fabs(b).因为这样就成了浮点值了,得不到准确数

代码欣赏之&#xff1a;此题易错在 ab 非要写成 a-fabs(b).因为这样就成了浮点值了&#xff0c;得不到准确数 7-23 小孩子才做选择&#xff0c;大人全都要 #include<stdio.h> #include<math.h> int main() {int a,b;scanf("%d %d",&a,&b);if(a&…...

ECharts饼图-环形图,附视频讲解与代码下载

引言&#xff1a; 在数据可视化的世界里&#xff0c;ECharts凭借其丰富的图表类型和强大的配置能力&#xff0c;成为了众多开发者的首选。今天&#xff0c;我将带大家一起实现一个饼图图表&#xff0c;通过该图表我们可以直观地展示和分析数据。此外&#xff0c;我还将提供详…...

arcgis js 怎么加载geoserver发布的wms服务

arcgis js api加载wms服务&#xff0c;官方的参考样例&#xff1a; WMSLayer | Sample Code | ArcGIS Maps SDK for JavaScript 4.30 | Esri Developer 按照官方样例加载比较奇怪&#xff0c;我们平常习惯用url或者json的方式加载&#xff0c;稍微改一下就行&#xff0c;如下…...

前端_006_Vue2

文章目录 vue常用属性生命周期模版语法自定义组件全局注册 单文件组件路由 本文全部参考Vue2 简介&#xff1a;Vue是一个数据响应式&#xff0c;MVVM模型的JS框架 官网&#xff1a;https://v2.cn.vuejs.org/v2/guide/ API&#xff1a;https://v2.cn.vuejs.org/v2/api/#method…...

论多端数据互通网游的架构评估

摘要 在2023年&#xff0c;笔者参与了一款多端数据互通网络游戏的架构评估工作&#xff0c;并担任评估团队的核心成员。该游戏支持PC、移动设备和游戏机等多种终端&#xff0c;实现了数据的实时互通。本文通过该项目的评估实践&#xff0c;探讨了多端数据互通网游架构评估的关…...

网页HTML编写练习:华语榜中榜

网页效果 HTML代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice…...

C++ 编程基础:深入理解 `pair`(键值对) 和 `unordered_map`(无序映射)

C 编程基础&#xff1a;深入理解 pair&#xff08;键值对&#xff09; 和 unordered_map&#xff08;无序映射&#xff09; 在 C 标准库中&#xff0c;pair&#xff08;键值对&#xff09;和 unordered_map&#xff08;无序映射&#xff09;是两种常用的数据结构&#xff0c;它…...

高德动态地图

1.搭建页面结构 <div class"dataAllBorder02" style"position: relative; overflow: hidden;"><div class"map_title_box" style"height: 6%"><div class"map_title_innerbox"><div class"map_t…...

springboot集成camunda学习与使用

springboot集成camunda学习与使用.md 0、前言一、Spring Boot 集成camunda流程引擎1.新建全新的springboot工程2.添加pom.xml依赖3.启动Spring Boot工程4.切换成mysql数据库5.设计并部署一个BPMN流程6.camunda流程引擎测试6.1 通过camunda web控制台测试6.2 通过camunda rest接…...

微服务架构学习笔记

#1024程序员节|征文# 微服务架构作为现代软件开发中的热门技术架构&#xff0c;因其灵活性和可扩展性&#xff0c;逐渐成为许多企业系统设计的首选。以下是关于微服务的一些学习笔记&#xff0c;涵盖微服务的核心概念、优缺点、设计原则以及常用工具等方面。 1. 微服务是什么&…...

代码优化之简化if臃肿的判断条件

简化if判断条件 方法1&#xff1a; #include <iostream> #include <vector> #include <functional>// 封装参数的结构体 struct ConditionParams {int facenum;double zoomRatio;int iso;double facelv;int face_w;double qualityScore;int xx;int yy; };//…...

【OpenAI】第六节(语音生成与语音识别技术)从 ChatGPT 到 Whisper 的全方位指南

前言 在人工智能的浪潮中&#xff0c;语音识别技术正逐渐成为我们日常生活中不可或缺的一部分。随着 OpenAI 的 Whisper 模型的推出&#xff0c;语音转文本的过程变得前所未有的简单和高效。无论是从 YouTube 视频中提取信息&#xff0c;还是将播客内容转化为文本&#xff0c;…...

Docker 下备份恢复oracle

1.docker导出容器镜像 ##docker save -o 导出后的镜像名称.tar 容器名称|镜像id docker save -o oracle_11g.tar 3fa112fd3642 2.下载镜像上传镜像略 3.加载镜像 ##docker load -i <archive_file> docker load -i oracle11g11201.tar 4.添加版本号…...

oneplus3t-android_framework

0.确认oneplus6 root正常 oneplus6 root材料 oneplus6手机恢复出厂设置 &#xff0c; 或者 线刷 enchilada_22_K.52_210716_repack--HOS-10.0.11.zip &#xff1a; https://gitee.com/OnePlus6-brick-enchilada_22_K_52_210716_repack-HOS-10_0_11-zip OnePlus6Hydrogen_22…...

偷懒总结篇|贪心算法|动态规划|单调栈|图论

由于这周来不及了&#xff0c;先过一遍后面的思路&#xff0c;具体实现等下周再开始详细写。 贪心算法 这个图非常好 122.买卖股票的最佳时机 II(妙&#xff0c;拆分利润) 把利润分解为每天为单位的维度&#xff0c;需要收集每天的正利润就可以&#xff0c;收集正利润的区间…...

C语言初阶七:C语言操作符详解(1)

#1024程序员节|征文# 这篇文章是对之前文章中操作符的补充&#xff0c;可以看之前的文章&#xff1a;C语言初阶&#xff1a;六.算数操作_如何用编程表示除法-CSDN博客 C语言操作符是用于执行各种运算和操作的符号。包括算术操作符&#xff08;如、-、*、/、%&#xff09;&#…...

GO excelize 读取excel进行时间类型转换(自动转换)

GO excelize 读取excel进行时间类型转换&#xff08;自动转换&#xff09; 需求分析 需求&#xff1a;如何自动识别excel中的时间类型数据并转化成对应的 "Y-m-d H:i:s"类型数据。 分析&#xff1a;excelize在读取excel时&#xff0c;GetRows() 返回的都是字符串类…...

【算法与数据结构】二分查找思想

#1024程序员节&#xff5c;征文# 正文&#xff1a; 二分查找&#xff08;binary search&#xff09;是一种基于分治策略的高效搜索算法。它利用数据的有序性&#xff0c;每轮缩小一半搜索范围&#xff0c;直至找到目标元素或搜索区间为空为止&#xff0c;其实有时候数据没有序…...

PHP PDO:安全、灵活的数据持久层解决方案

PHP PDO&#xff1a;安全、灵活的数据持久层解决方案 PHP PDO&#xff08;PHP Data Objects&#xff09;是一个轻量级的、具有兼容接口的数据持久层抽象层。它提供了一个统一的API来访问多种数据库系统&#xff0c;如MySQL、PostgreSQL、SQLite、Oracle等。PDO扩展在PHP 5.1.0…...

九、Linux实战案例:项目部署全流程深度解析

Linux实战案例&#xff1a;项目部署全流程深度解析 在当今信息技术领域&#xff0c;Linux服务器凭借其卓越的稳定性、安全性以及强大的性能表现&#xff0c;被广泛应用于各类项目部署场景之中。本文将全面深入地介绍如何将一个项目成功部署至Linux服务器的完整流程&#xff0c…...

GIS常见前端开发框架

#1024程序员节&#xff5c;征文# 伴随GIS的发展&#xff0c;陆续出现了众多开源地图框架&#xff0c;这些地图框架与众多行业应用融合&#xff0c;极大地拓展了GIS的生命力&#xff0c;这里介绍几个常见的GIS前端开发框架&#xff0c;排名不分先后。 1.Leaflet https://leafl…...

Java | Leetcode Java题解之第506题相对名次

题目&#xff1a; 题解&#xff1a; class Solution {public String[] findRelativeRanks(int[] score) {int n score.length;String[] desc {"Gold Medal", "Silver Medal", "Bronze Medal"};int[][] arr new int[n][2];for (int i 0; i &…...

深圳做网站的好公司/搜索引擎优化大致包含哪些内容或环节

我们将Oracle数据同步到sqlserver时&#xff0c;是先得在sqlserver端建表的。 复杂的字段我们不同步&#xff0c;就仅仅考虑以下四种数据类型。Oracle到SQLServer做的映射&#xff1a;int -> intnumber -> decimal(18,6)number(p,s) -> decimal(p,s)date -> dateti…...

wordpress 表情插件/合肥seo

数据库系统(Database system) 数据库管理系统(DBMS,Database Management System)数据库(Database)数据库管理系统(DBMS)可分为两类&#xff1a;一类为基于共享文件系统的DBMS,另一类为基于客户机-服务器的DBMS。前者包括Microsoft Access 和FileMaker等&#xff0c;用于桌面用途…...

绵竹网站制作/网站注册账号

当今并不存在“特指”的物联网&#xff1a;市场是被具体的使用场景所驱动。企业若想在短期内扩大市场份额&#xff0c;就需针对正确的应用案例聚焦其所提供的物联网产品。BCG列出了十个物联网应用案例&#xff0c;预计到2020年&#xff0c;这些技术将会在B2B市场上迅速成熟并被…...

wordpress 插件定制/抖音关键词挖掘工具

关于opencv上的一些概念上的问题声明&#xff1a;写这篇blog主要是怕自己忘了hhhhh 一. using namespace std的作用 这个问题其实遗留了蛮久的&#xff0c;在学C的时候就在想这方面的问题&#xff0c;略过去了也就没有深究&#xff0c;然后昨天在看《opencv 4》的时候&#x…...

做seo需要会网站开发吗/2022百度seo优化工具

解决这个问题需要执行 git config --global url.“https://”.insteadOf git://注意这里的global是全局的意思是可以不加 这个好像是强制使用https 然后npm i 或者npm install就好了 注意在install时不要用cnpm...

淄博桓台网站建设方案/全球网络营销公司排行榜

2006年是双核的普及年&#xff0c;双核处理器出货量开始超过单核处理器出货量&#xff1b;2006年的11月份Intel开始供货4核&#xff1b;AMD今年也将发布4核&#xff0c;并计划今年下半年发布8核&#xff1b; 按照Intel一个文档所说:"假定22纳米处理时帧上有一枚13毫米大…...