创建符合下列要求的vue项目代码:(1)基于脚手架创建一个Vue项目(单页面应用),要求在页面中对×××信息进行常规管理,具体管理功能需要包括×××信息查找(通过输入信息做精确或模糊查询)、添加×××信息、修改×××信息及删除×××信息(含批量删除)等。 (2)要求页面能够实现多个模块的信息管理,模块通过菜单项切换。页面布局,请在如下页面布局列表中的选择: A.左右布局:左边显示切换菜单,右边显示内容(及操作)。 B.右左布局:右边显示切换菜单,左边显示内容(及操作)。 C.上下布局:上显示切换菜单,下边显示内容(及操作)。 布局方式选择依据:按学号后2位,求模3,余0时选择A布局,余1时选择B布局,余2时选择C布局。若采用A、B和C以外的布局,必须征得任课老师同意,否则视为无效布局。 (3)大作业题目按本人学号后两位在下列表中选择,如学号的后两位为35号,则需选择“景点”。页面名称以“表中信息+信息管理页面”方式命名,如“食材”,可命名为“食材信息管理页面”。(4)页面实现必须基于Vue框架技术,至少实现三个模块的信息管理,多多益善。要求使用路由技术,通过组件切换实现。
时间: 2023-12-04 07:05:21 浏览: 84
基于脚手架创建Vue项目实现步骤详解
根据题目要求,我创建了一个Vue项目代码示例,其中采用了左右布局,实现了三个模块的信息管理,分别为“景点信息管理页面”、“酒店信息管理页面”和“美食信息管理页面”。
其中,每个模块的信息管理页面均包括了查找、添加、修改和删除(含批量删除)等功能。
具体实现细节可以参考代码注释。
```
<template>
<div class="container">
<!-- 左侧菜单栏 -->
<div class="menu">
<ul>
<li @click="switchModule('scenic')">景点信息管理</li>
<li @click="switchModule('hotel')">酒店信息管理</li>
<li @click="switchModule('food')">美食信息管理</li>
</ul>
</div>
<!-- 右侧内容区域 -->
<div class="content">
<router-view></router-view>
</div>
</div>
</template>
<script>
export default {
methods: {
// 切换模块
switchModule(moduleName) {
this.$router.push({ name: moduleName });
},
},
};
</script>
<style>
.container {
display: flex;
height: 100%;
}
.menu {
width: 200px;
background-color: #eee;
padding: 20px;
}
.menu ul {
list-style: none;
margin: 0;
padding: 0;
}
.menu li {
cursor: pointer;
margin-bottom: 10px;
}
.content {
flex: 1;
padding: 20px;
}
</style>
```
```
// 景点信息管理页面
<template>
<div>
<h2>景点信息管理页面</h2>
<div class="search">
<input type="text" placeholder="请输入关键字" v-model="keyword" />
<button @click="search">搜索</button>
</div>
<div>
<button @click="add">新增</button>
<button @click="delSelected">批量删除</button>
</div>
<table>
<thead>
<tr>
<th><input type="checkbox" v-model="selectAll" /></th>
<th>景点名称</th>
<th>所在地</th>
<th>门票价格</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr v-for="(item, index) in dataList" :key="index">
<td><input type="checkbox" v-model="item.selected" /></td>
<td>{{ item.name }}</td>
<td>{{ item.location }}</td>
<td>{{ item.price }}</td>
<td>
<button @click="edit(index)">编辑</button>
<button @click="del(index)">删除</button>
</td>
</tr>
</tbody>
</table>
</div>
</template>
<script>
export default {
data() {
return {
keyword: "", // 搜索关键字
selectAll: false, // 是否全选
dataList: [
{ name: "景点1", location: "北京", price: "100", selected: false },
{ name: "景点2", location: "上海", price: "50", selected: false },
{ name: "景点3", location: "广州", price: "80", selected: false },
],
};
},
methods: {
// 搜索
search() {
if (this.keyword.trim() === "") {
alert("请输入关键字");
return;
}
// 根据关键字查询数据
// 此处省略查询逻辑
},
// 新增
add() {
// 跳转到新增页面
// 此处省略路由跳转逻辑
},
// 编辑
edit(index) {
// 跳转到编辑页面,并传递当前数据的索引值
// 此处省略路由跳转逻辑
},
// 删除
del(index) {
this.dataList.splice(index, 1);
},
// 批量删除
delSelected() {
this.dataList = this.dataList.filter((item) => !item.selected);
this.selectAll = false;
},
},
};
</script>
<style>
.search {
margin-bottom: 20px;
}
table {
border-collapse: collapse;
width: 100%;
}
th,
td {
border: 1px solid #ccc;
padding: 10px;
text-align: center;
}
</style>
```
```
// 酒店信息管理页面
<template>
<div>
<h2>酒店信息管理页面</h2>
<div class="search">
<input type="text" placeholder="请输入关键字" v-model="keyword" />
<button @click="search">搜索</button>
</div>
<div>
<button @click="add">新增</button>
<button @click="delSelected">批量删除</button>
</div>
<table>
<thead>
<tr>
<th><input type="checkbox" v-model="selectAll" /></th>
<th>酒店名称</th>
<th>所在地</th>
<th>房间数</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr v-for="(item, index) in dataList" :key="index">
<td><input type="checkbox" v-model="item.selected" /></td>
<td>{{ item.name }}</td>
<td>{{ item.location }}</td>
<td>{{ item.rooms }}</td>
<td>
<button @click="edit(index)">编辑</button>
<button @click="del(index)">删除</button>
</td>
</tr>
</tbody>
</table>
</div>
</template>
<script>
export default {
data() {
return {
keyword: "", // 搜索关键字
selectAll: false, // 是否全选
dataList: [
{ name: "酒店1", location: "北京", rooms: 100, selected: false },
{ name: "酒店2", location: "上海", rooms: 50, selected: false },
{ name: "酒店3", location: "广州", rooms: 80, selected: false },
],
};
},
methods: {
// 搜索
search() {
if (this.keyword.trim() === "") {
alert("请输入关键字");
return;
}
// 根据关键字查询数据
// 此处省略查询逻辑
},
// 新增
add() {
// 跳转到新增页面
// 此处省略路由跳转逻辑
},
// 编辑
edit(index) {
// 跳转到编辑页面,并传递当前数据的索引值
// 此处省略路由跳转逻辑
},
// 删除
del(index) {
this.dataList.splice(index, 1);
},
// 批量删除
delSelected() {
this.dataList = this.dataList.filter((item) => !item.selected);
this.selectAll = false;
},
},
};
</script>
<style>
.search {
margin-bottom: 20px;
}
table {
border-collapse: collapse;
width: 100%;
}
th,
td {
border: 1px solid #ccc;
padding: 10px;
text-align: center;
}
</style>
```
```
// 美食信息管理页面
<template>
<div>
<h2>美食信息管理页面</h2>
<div class="search">
<input type="text" placeholder="请输入关键字" v-model="keyword" />
<button @click="search">搜索</button>
</div>
<div>
<button @click="add">新增</button>
<button @click="delSelected">批量删除</button>
</div>
<table>
<thead>
<tr>
<th><input type="checkbox" v-model="selectAll" /></th>
<th>美食名称</th>
<th>所在地</th>
<th>价格</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr v-for="(item, index) in dataList" :key="index">
<td><input type="checkbox" v-model="item.selected" /></td>
<td>{{ item.name }}</td>
<td>{{ item.location }}</td>
<td>{{ item.price }}</td>
<td>
<button @click="edit(index)">编辑</button>
<button @click="del(index)">删除</button>
</td>
</tr>
</tbody>
</table>
</div>
</template>
<script>
export default {
data() {
return {
keyword: "", // 搜索关键字
selectAll: false, // 是否全选
dataList: [
{ name: "美食1", location: "北京", price: "20", selected: false },
{ name: "美食2", location: "上海", price: "30", selected: false },
{ name: "美食3", location: "广州", price: "50", selected: false },
],
};
},
methods: {
// 搜索
search() {
if (this.keyword.trim() === "") {
alert("请输入关键字");
return;
}
// 根据关键字查询数据
// 此处省略查询逻辑
},
// 新增
add() {
// 跳转到新增页面
// 此处省略路由跳转逻辑
},
// 编辑
edit(index) {
// 跳转到编辑页面,并传递当前数据的索引值
// 此处省略路由跳转逻辑
},
// 删除
del(index) {
this.dataList.splice(index, 1);
},
// 批量删除
delSelected() {
this.dataList = this.dataList.filter((item) => !item.selected);
this.selectAll = false;
},
},
};
</script>
<style>
.search {
margin-bottom: 20px;
}
table {
border-collapse: collapse;
width: 100%;
}
th,
td {
border: 1px solid #ccc;
padding: 10px;
text-align: center;
}
</style>
```
阅读全文