路由+增删改查(vue)
程序员文章站
2022-05-08 11:30:14
...
路由+增删改查(vue)
直接上代码,什么都有 哈哈哈,自己复制代码看效果,哈哈不晓得要描述什么。。。。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>路由+增删改查</title>
<style type="text/css">
html,
body,
#app {
margin: 0;
padding: 0px;
height: 100%;
}
.header {
height: 50px;
background-color: #545c64;
line-height: 50px;
text-align: center;
font-size: 24px;
color: #fff;
}
.footer {
height: 40px;
line-height: 40px;
background-color: #888;
position: absolute;
bottom: 0;
width: 100%;
text-align: center;
color: #fff;
}
.main {
display: flex;
position: absolute;
top: 50px;
bottom: 40px;
width: 100%;
}
.content {
flex: 1;
text-align: center;
height: 100%;
}
.left {
flex: 0 0 20%;
background-color: #545c64;
}
.left a {
color: white;
text-decoration: none;
}
.right {
margin: 5px;
}
.btns {
width: 100%;
height: 35px;
line-height: 35px;
background-color: #f5f5f5;
text-align: left;
padding-left: 10px;
box-sizing: border-box;
}
button {
height: 30px;
background-color: #ecf5ff;
border: 1px solid lightskyblue;
font-size: 12px;
padding: 0 20px;
}
.main-content {
margin-top: 10px;
}
ul {
margin: 0;
padding: 0;
list-style: none;
}
ul li {
height: 45px;
line-height: 45px;
background-color: #a0a0a0;
color: #fff;
cursor: pointer;
border-bottom: 1px solid #fff;
}
table {
width: 100%;
border-collapse: collapse;
}
td,
th {
border: 1px solid #eee;
line-height: 35px;
font-size: 12px;
}
th {
background-color: #ddd;
}
</style>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="https://cdn.bootcss.com/vue-router/3.1.1/vue-router.min.js"></script>
</head>
<body>
<!-- 要被 vue 实例所控制的区域 -->
<div id="app">
<!-- 路由占位符 -->
<router-view></router-view>
</div>
<script>
// 定义 APP 根组件
const App = {
template: `<div>
<!-- 头部区域 -->
<header class="header">哈哈哈管理系统</header>
<!-- 中间主体区域 -->
<div class="main">
<!-- 左侧菜单栏 -->
<div class="content left">
<ul>
<li><router-link to="/users">哈哈哈用户管理</router-link></li>
<li><router-link to="/rights">哈哈哈歌曲管理</router-link></li>
<li><router-link to="/goods">哈哈哈商品管理</router-link></li>
<li><router-link to="/orders">哈哈哈订单管理</router-link></li>
<li><router-link to="/settings">哈哈哈系统设置</router-link></li>
</ul>
</div>
<!-- 右侧内容区域 -->
<div class="content right"><div class="main-content">
<router-view />
</div></div>
</div>
<!-- 尾部区域 -->
<footer class="footer">版权信息</footer>
</div>`
}
// 用户管理组件
const Users = {
data() {
return {
userlist: [
{ id: 1, name: '张张', age: 10 },
{ id: 2, name: '颖颖', age: 20 },
{ id: 3, name: '盈盈', age: 30 },
{ id: 4, name: '莹莹', age: 40 }
]
}
},
methods: {
goDetail(id) {
console.log(id)
this.$router.push('/userinfo/' + id)
}
},
template: `<div>
<h3>盈盈用户管理区域</h3>
<table>
<thead>
<tr><th>编号</th><th>姓名</th><th>年龄</th><th>操作</th></tr>
</thead>
<tbody>
<tr v-for="item in userlist" :key="item.id">
<td>{{item.id}}</td>
<td>{{item.name}}</td>
<td>{{item.age}}</td>
<td>
<a href="javascript:;" @click="goDetail(item.id)">详情</a>
</td>
</tr>
</tbody>
</table>
</div>`
}
// 用户管理详情页面
const UserInfo = {
props: ['id'],
template: `<div>
<h5>我是用户详情页得内容 暂无具体内容 只接收传过来得id --- 英英Id为:{{id}}</h5>
<button @click="goback()">后退</button>
</div>`,
methods: {
goback() {
// 实现后退功能
this.$router.go(-1)
}
}
}
// 歌曲管理
const Rights = {
data(){
return {
id:"",
name:"",
flag: false,
books: [],
isSubmit:false,
}
},
template: `<div>
<div class="grid">
<div>
<h1>歌名管理</h1>
<div class="book">
<div>
<label for="id">
编号:
</label>
<input type="text" v-model="id" :disabled="flag">
<label for="name">
歌名:
</label>
<input type="text" v-model="name">
<button @click='handle' :disabled = "isSubmit">提交</button>
</div>
</div>
</div>
<div class="total">
<span>歌曲总数:</span>
<span>{{total}}</span>
</div>
<table>
<thead>
<tr>
<th>编号</th>
<th>名称</th>
<th>时间</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr :key='item.id' v-for='item in books'>
<td>{{item.id}}</td>
<td>{{item.name}}</td>
<td>{{item.user}}</td>
<td>
<a href="" @click.prevent = "edit(item.id)">修改</a>
<span>|</span>
<a href="" @click.prevent = "del(item.id)">删除</a>
</td>
</tr>
</tbody>
</table>
</div>
</div>`,
methods:{
handle(){
if(this.flag){
this.books.some((item)=>{
if(item.id == this.id){
item.name = this.name
return true
}
})
this.flag = false
}else{
var book = {}
book.id = this.id
book.name = this.name
this.books.push(book)
this.id = ""
this.name = ""
}
console.log(this.books)
},
edit(id){
this.flag = true
console.log("id",id)
var book = this.books.filter(function(item){
return id==item.id
})
this.id = book[0].id
this.name = book[0].name
},
del(id){
this.books = this.books.filter(function(item){
return id!==item.id
})
},
},
computed:{
total(){
return this.books.length
}
},
watch:{
name(val){
var flag = this.books.some(function(item){
return item.name == val
})
if(flag){
this.isSubmit = true
}else{
this.isSubmit = false
}
}
},
mounted(){
var data = [
{
id: 1,
name: '笑场',
user: "薛之谦"
},{
id: 2,
name: '有幸',
user: "薛之谦"
},{
id: 3,
name: '这么久没见',
user: "赵宴请"
},{
id: 4,
name: '方圆几里',
user: "薛之谦"
}]
this.books = data
}
}
// 商品管理
const Goods = {
template: `<div>
<h3>当当当 我是商品管理区域 11111</h3>
</div>`
}
// 订单管理
const Orders = {
template: `<div>
<h3>当当当 我是订单管理区域 2222</h3>
</div>`
}
// 系统设置
const Settings = {
template: `<div>
<h3>当当当 我是系统设置区域 3333</h3>
</div>`
}
// 创建路由对象
const router = new VueRouter({
routes: [
{
path: '/',
component: App,
redirect: '/users',
children: [
{ path: '/users', component: Users },
{ path: '/userinfo/:id', component: UserInfo, props: true },
{ path: '/rights', component: Rights },
{ path: '/goods', component: Goods },
{ path: '/orders', component: Orders },
{ path: '/settings', component: Settings }
]
}
]
})
const vm = new Vue({
el: '#app',
router
})
</script>
</body>
</html>
运行效果图
不描述了,没啥好描述的,搞着好玩而已!!!!!。。。。。。
没有了 ,搞着好玩 哈哈哈 !!!!
上一篇: Python之Tornado 异步socketTCP 通信
下一篇: 从不旷课