Hbulid代码
景点列表
<el-button @click=“fg(1)” size=“mini”>海滨风光
<el-button @click=“fg(2)” size=“mini”>名山胜水
<el-button @click=“fg(3)” size=“mini”>人文景观
<el-button @click=“fg(4)” size=“mini”>都市田园
<el-button @click=“fg(5)” size=“mini”>其他
<el-button @click=“fg(0)” size=“mini”>全部
按风格:
<el-button @click=“dj(‘AAAAA’)” size=“mini”>5A
<el-button @click=“dj(‘AAAA’)” size=“mini”>4A
<el-button @click=“dj(‘AAA’)” size=“mini”>3A
<el-button @click=“dj(‘AA’)” size=“mini”>2A
<el-button @click=“dj(‘A’)” size=“mini”>1A
<el-button @click=“dj(’’)” size=“mini”>全部
<div class="diqu">按地区:
<el-button @click="dq(230)" size="mini">山西</el-button>
<el-button @click="dq(2425)" size="mini">三亚</el-button>
<el-button @click="dq(372)" size="mini">内蒙古</el-button>
<el-button @click="dq(2978)" size="mini">西藏</el-button>
<el-button @click="dq(3063)" size="mini">陕西</el-button>
<el-button @click="dq(0)" size="mini">全部</el-button>
</div>
</el-header>
<el-main>
<el-row align="middle">
<el-col :span="6" v-for="scenic in tableData">
<el-card :body-style="{ padding: '0px' }">
<el-upload class="avatar-uploader" action="http://localhost:91/upload" :show-file-list="false" :on-success="handleAvatarSuccess">
<img v-if="scenic.pic" :src="scenic.pic" class="avatar">
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
<div style="padding: 14px;">
<span>{{scenic.name}}</span> <span style="color: red;">{{scenic.level}}</span><br />
<span>{{scenic.tname}}</span><br />
<span>{{scenic.pname}}{{scenic.cname}}{{scenic.dname}}</span><br />
<span>门票:{{scenic.ticket}}元/人</span><br />
<div class="bottom clearfix">
<el-button type="primary" size="mini" icon="el-icon-detail" @click="openDetilDialog(scenic)">详情</el-button>
<el-button type="info" size="mini" icon="el-icon-edit-outline" @click="openEditDialog(scenic)">修改</el-button>
<el-button type="danger" size="mini" icon="el-icon-remove" @click="removeScenic(scenic.id)">删除</el-button>
</div>
</div>
</el-card>
</el-col>
</el-row>
<!-- <el-row>
<el-col :span="24">
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage4"
:page-sizes="[100, 200, 300, 400]"
:page-size="100"
layout="total, sizes, prev, pager, next, jumper"
:total="400">
</el-pagination>
</el-col>
</el-row> -->
<!--行-->
<el-row>
<el-col :span="3">
<el-button type="success" icon="el-icon-circle-plus-outline" @click="openInsertScenicDialog">添加景点</el-button>
</el-col>
<el-col :span="3">
<el-button type="danger" icon="el-icon-remove-outline" @click="removeScenics">批量删除</el-button>
</el-col>
<!--24 6 12 6-->
<el-col :span="18">
<el-pagination @current-change="handlecurrentChange" @size-change="handlesizeChange" layout="sizes,prev,pager,next,jumper,->,total"
:page-sizes="pageSizes" :total="total" :current-page="current" :page-size="pageSize" background></el-pagination>
</el-col>
</el-row>
</el-main>
</el-container>
<!-- <el-table :data="tableData" @selection-change="handleSelectionChange">
<el-table-column type="selection"></el-table-column>
<el-table-column prop="id" label="景点编号"></el-table-column>
<el-table-column prop="name" label="景点名称"></el-table-column>
<el-table-column prop="level" label="景点级别"></el-table-column>
<el-table-column prop="tname" label="景点类型"></el-table-column>
<el-table-column prop="ticket" label="门票"></el-table-column>
<el-table-column prop="pname" label="省"></el-table-column>
<el-table-column prop="cname" label="市"></el-table-column>
<el-table-column prop="dname" label="县"></el-table-column>
<el-table-column label="景点图片">
<template slot-scope="scope">
<el-avatar shape="square" :size="100" :src="scope.row.pic"></el-avatar>
</template>
</el-table-column>
<el-table-column prop="introduction" label="景点描述"></el-table-column>
<el-table-column label="操作">
<template slot-scope="scope">
<el-button type="primary" size="mini" icon="el-icon-detail" @click="openDetilDialog(scope.row)">详情</el-button>
<el-button type="info" size="mini" icon="el-icon-edit-outline" @click="openEditDialog(scope.row)">修改</el-button>
<el-button type="danger" size="mini" icon="el-icon-remove" @click="removeScenic(scope.row.id)">删除</el-button>
</template>
</el-table-column>
</el-table>
<el-row>
<el-col :span="24">
<el-pagination @current-change="handlecurrentChange" @size-change="handlesizeChange" layout="sizes,prev,pager,next,jumper,->,total"
:page-sizes="pageSizes" :total="total" :current-page="current" :page-size="pageSize" background></el-pagination>
</el-col>
</el-row> -->
<!-- 添加页面 -->
<el-dialog :visible.sync="insertDialogVisiable" title="添加景点" width="60%" center>
<el-form :model="insertScenicForm" label-width="100px">
<el-form-item label="景点名称">
<el-input v-model="insertScenicForm.name" placeholder="请输入景点名称"></el-input>
</el-form-item>
<el-form-item label="景区等级">
<el-select v-model="insertScenicForm.level" placeholder="请选择景区等级" clearable>
<el-option label="A" value="A"></el-option>
<el-option label="AA" value="AA"></el-option>
<el-option label="AAA" value="AAA"></el-option>
<el-option label="AAAA" value="AAAA"></el-option>
<el-option label="AAAAA" value="AAAAA"></el-option>
</el-select>
</el-form-item>
<el-form-item label="景区风格">
<el-select v-model="insertScenicForm.type" placeholder="请输入景点风格">
<el-option label="海滨风光" value="1"></el-option>
<el-option label="名山胜水" value="2"></el-option>
<el-option label="人文景观" value="3"></el-option>
<el-option label="都市田园" value="4"></el-option>
<el-option label="其他" value="5"></el-option>
</el-select>
</el-form-item>
<el-form-item label="所属地区">
<el-cascader :options="options" :props="props" @change="handleChange" clearable></el-cascader>
</el-form-item>
<el-form-item label="门票">
<el-input v-model="insertScenicForm.ticket" placeholder="请输入门票价格"></el-input>
</el-form-item>
<el-form-item label="景区图片">
<el-upload class="avatar-uploader" action="http://localhost:91/upload" :show-file-list="false" :on-success="handleAvatarSuccess">
<img v-if="imageUrl" :src="imageUrl" class="avatar">
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</el-form-item>
<el-form-item label="景区介绍">
<el-input type="textarea" v-model="insertScenicForm.introduction" placeholder="请输入景区介绍"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="insertClient">添加</el-button>
<el-button>重置</el-button>
</el-form-item>
</el-form>
</el-dialog>
<!-- 详情页面 -->
<el-dialog :visible.sync="detailDialogVisiable" title="景点详情" width="60%" center>
<el-row>
<el-col :span="4">景区名称</el-col>
<el-col :span="20">{{detailScenicForm.name}}</el-col>
</el-row>
<el-row>
<el-col :span="4">景区等级</el-col>
<el-col :span="20">{{detailScenicForm.level}}</el-col>
</el-row>
<el-row>
<el-col :span="4">景区风格</el-col>
<el-col :span="20">{{detailScenicForm.tname}}</el-col>
</el-row>
<el-row>
<el-col :span="4">所属地区</el-col>
<el-col :span="20">{{detailScenicForm.pname}}{{detailScenicForm.cname}}{{detailScenicForm.dname}}</el-col>
</el-row>
<el-row>
<el-col :span="4">门票</el-col>
<el-col :span="20">{{detailScenicForm.ticket}}</el-col>
</el-row>
<el-row>
<el-col :span="4">景区图片</el-col>
<el-col :span="20">
<el-upload class="avatar-uploader" action="http://localhost:91/upload" :show-file-list="false" :on-success="handleAvatarSuccess">
<img v-if="imageUrl" :src="imageUrl" class="avatar">
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</el-col>
</el-row>
<el-row>
<el-col :span="4">景区介绍</el-col>
<el-col :span="20">{{detailScenicForm.introduction}}</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-button type="primary" size="mini" @click="detailDialogVisiable=false">返回</el-button>
</el-col>
</el-row>
</el-dialog>
<!-- 修改页面 -->
<el-dialog :visible.sync="editDialogVisiable" title="更新景点" width="60%" center>
<el-form :model="editScenicForm" label-width="100px">
<el-form-item label="景点名称">
<el-input v-model="editScenicForm.name" placeholder="请输入景点名称"></el-input>
</el-form-item>
<el-form-item label="景区等级">
<el-select v-model="editScenicForm.level" placeholder="请选择景区等级" clearable>
<el-option label="A" value="A"></el-option>
<el-option label="AA" value="AA"></el-option>
<el-option label="AAA" value="AAA"></el-option>
<el-option label="AAAA" value="AAAA"></el-option>
<el-option label="AAAAA" value="AAAAA"></el-option>
</el-select>
</el-form-item>
<el-form-item label="景区风格">
<el-select v-model="editScenicForm.tname" placeholder="请输入景点风格">
<el-option label="海滨风光" value="1"></el-option>
<el-option label="名山胜水" value="2"></el-option>
<el-option label="人文景观" value="3"></el-option>
<el-option label="都市田园" value="4"></el-option>
<el-option label="其他" value="5"></el-option>
</el-select>
</el-form-item>
<el-form-item label="所属地区">
<el-cascader v-model="values" :options="options" :props="props" @change="handleChange" clearable></el-cascader>
</el-form-item>
<el-form-item label="门票">
<el-input v-model="editScenicForm.ticket" placeholder="请输入门票价格"></el-input>
</el-form-item>
<el-form-item label="景区图片">
<el-upload class="avatar-uploader" action="http://localhost:91/upload" :show-file-list="false" :on-success="handleAvatarSuccess">
<img v-if="imageUrl" :src="imageUrl" class="avatar">
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</el-form-item>
<el-form-item label="景区介绍">
<el-input type="textarea" v-model="editScenicForm.introduction" placeholder="请输入景区介绍"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="editClient">更新</el-button>
<el-button>重置</el-button>
</el-form-item>
</el-form>
</el-dialog>
</div>
idea代码
@RestController
@RequestMapping("/scenic")
public class ScenicController {
@Autowired
private IScenicService iScenicService;
@RequestMapping("/list")
public ResultApi list(Page page , ScenicVo vo){
return ResultApi.success(iScenicService.selectPageVo(page,vo));
}
@RequestMapping("/insert")
public ResultApi insert(@RequestBody Scenic scenic){
return ResultApi.success(iScenicService.save(scenic));
}
@RequestMapping("/update")
public ResultApi update(@RequestBody Scenic scenic){
return ResultApi.success(iScenicService.updateById(scenic));
}
@RequestMapping("/delete")
public ResultApi delete(Integer ids[]){
try {
System.out.println(ids+"*******");
iScenicService.removeByIds(Arrays.asList(ids));
System.out.println(ids);
return ResultApi.success(true);
}catch (Exception e){
e.printStackTrace();
}
return ResultApi.error(false);
}
}
图片上传controller
//返回的都是json类型 等效于@Controller @ResponseBody
@RestController
public class UploadController {
@RequestMapping("/upload")
private ResultApi upload(MultipartFile file){
if(!file.isEmpty()){
//原始文件名称
String originalFilename = file.getOriginalFilename();
//文件名的唯一性
String fileName = UUID.randomUUID()+"_"+originalFilename;
//设置上传的路劲
File destFile = new File("D:/pic/", fileName);
//判断目录是否存在
if(!destFile.getParentFile().exists()){
//则创建目录
destFile.getParentFile().mkdir();
}
//保存文件
try{
file.transferTo(destFile);
return ResultApi.success("http://localhost:91/img/"+fileName);
}catch (IOException e){
e.printStackTrace();
}
}
return ResultApi.error(null);
}
}
递归获取三级联动数据
@RestController
@RequestMapping("/district")
public class DistrictController {
@Autowired
private IDistrictService iDistrictService;
@RequestMapping("/findAll")
public List<DistrictVo> findAll(){
return iDistrictService.findAll();
}
}
三级联动需要的实体类
@Data
public class DistrictVo implements Serializable {
private static final long serialVersionUID=1L;
//记录省市县的id
private Integer id;
//映射省市县的名称
private String name;
private List<DistrictVo> list;
}
主表需要的实体类
@Data
public class ScenicVo extends Scenic {
private String pname;
private String cname;
private String dname;
private String tname;
private Integer sorted;
private Integer provinceId;
private String levelId;
private Integer typeId;
}
三级联动sql Mapper
主表sql Mapper