目录
后端代码
实体类
package com.woniu.community.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Repair {
private int id;
private int comId;
private String comDate;
private int ownerId;
private int status;
private int clr;
private String remarks;
private String name;
private String userName;
}
Mapper层
package com.woniu.community.mapper;
import com.woniu.community.entity.Complaint;
import com.woniu.community.entity.Repair;
import java.util.List;
public interface RepairMapper {
List<Repair>selectAll(String name, String status, int start, int size );
int count(String name,String status);
int insertRepair(Repair repair);
int deleteRepair(int id);
int updateRepair(Repair repair);
Repair selectById(int id);
}
mappers sql语句
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.woniu.community.mapper.RepairMapper">
<resultMap id="repairResult" type="Repair">
<result column="id" property="id"></result>
<result column="com_id" property="comId"></result>
<result column="com_date" property="comDate"></result>
<result column="owner_id" property="ownerId"></result>
<result column="status" property="status"></result>
<result column="clr" property="clr"></result>
<result column="remarks" property="remarks"></result>
<result column="name" property="name"></result>
<result column="username" property="userName"></result>
</resultMap>
<select id="selectAll" resultMap="repairResult">
select repair.*,repairtype.name,owner.username from repair
left join repairtype on repair.com_id=repairtype.id
left join owner on repair.owner_id=owner.id
<where>
<if test="name!=null and name !='null' and name!=''">
and repairtype.name =#{name}
</if>
<if test="status!=null and status!='' and status!='null'">
and repair.status = #{status}
</if>
</where>
limit #{start},#{size}
</select>
<select id="count" resultType="int">
select count(repair.id) from repair
left join repairtype on repair.com_id=repairtype.id
left join owner on repair.owner_id=owner.id
<where>
<if test="name!=null and name !='null' and name!=''">
and repairtype.name =#{name}
</if>
<if test="status!=null and status!='' and status!='null'">
and repair.status = #{status}
</if>
</where>
</select>
<insert id="insertRepair">
insert into repair (com_id,remarks,owner_id,com_date,status,clr) values (#{comId},#{remarks},#{ownerId},#{comDate},#{status},#{clr})
</insert>
<delete id="deleteRepair">
delete from repair where id=#{id}
</delete>
<update id="updateRepair">
update repair set com_id=#{comId},remarks=#{remarks},owner_id=#{ownerId},com_date=#{comDate},status=#{status},clr=#{clr}
where id=#{id}
</update>
<select id="selectById" resultMap="repairResult">
select * from repair where id=#{id}
</select>
</mapper>
Service层
接口
package com.woniu.community.service;
import com.woniu.community.entity.Repair;
import com.woniu.community.utils.HttpResult;
public interface IRepairService {
HttpResult selectAll(String name, String status, int pageIndex, int pageSize );
HttpResult insertRepair(Repair repair);
HttpResult deleteRepair(int id);
HttpResult updateRepair(Repair repair);
HttpResult selectById(int id);
}
实现类
package com.woniu.community.service.Impl;
import com.woniu.community.entity.Repair;
import com.woniu.community.mapper.RepairMapper;
import com.woniu.community.service.IRecordsService;
import com.woniu.community.service.IRepairService;
import com.woniu.community.utils.HttpResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class RepairServiceImpl implements IRepairService {
@Autowired(required = false)
private RepairMapper repairMapper;
@Override
public HttpResult selectAll(String name, String status, int pageIndex, int pageSize) {
List<Repair> repairs = repairMapper.selectAll(name, status, (pageIndex-1)*pageSize, pageSize);
int count = repairMapper.count(name, status);
HttpResult result = null;
if (repairs != null && repairs.size() > 0) {
result = new HttpResult(repairs, count, 200, null);
} else {
result = new HttpResult(null, 0, 500, "没有更多数据");
}
return result;
}
@Override
public HttpResult insertRepair(Repair repair) {
int count = repairMapper.insertRepair(repair);
HttpResult result = null;
if (count > 0 ) {
result = new HttpResult(null, 0, 200, "新增成功");
} else {
result = new HttpResult(null, 0, 500, "新增失败");
}
return result;
}
@Override
public HttpResult deleteRepair(int id) {
int count = repairMapper.deleteRepair(id);
HttpResult result = null;
if (count > 0 ) {
result = new HttpResult(null, 0, 200, "删除成功");
} else {
result = new HttpResult(null, 0, 500, "删除失败");
}
return result;
}
@Override
public HttpResult updateRepair(Repair repair) {
int count = repairMapper.updateRepair(repair);
HttpResult result = null;
if (count > 0 ) {
result = new HttpResult(null, 0, 200, "修改成功");
} else {
result = new HttpResult(null, 0, 500, "修改失败");
}
return result;
}
@Override
public HttpResult selectById(int id) {
Repair repair = repairMapper.selectById(id);
HttpResult result = null;
if (repair != null ) {
result = new HttpResult(repair, 0, 200, null);
} else {
result = new HttpResult(null, 0, 500, "没有更多数据");
}
return result;
}
}
Controller层
package com.woniu.community.controller;
import com.woniu.community.entity.Repair;
import com.woniu.community.service.IRepairService;
import com.woniu.community.utils.HttpResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/repair")
@CrossOrigin(origins = "*")
public class RepairController {
@Autowired
private IRepairService repairService;
@RequestMapping("/list")
public HttpResult selectAll(String name, String status, int pageIndex, int pageSize) {
return repairService.selectAll(name, status, pageIndex, pageSize);
}
@PostMapping("/add")
HttpResult insertRepair(@RequestBody Repair repair) {
return repairService.insertRepair(repair);
}
@RequestMapping("/delete")
HttpResult deleteRepair(int id) {
return repairService.deleteRepair(id);
}
@PostMapping("/update")
HttpResult updateRepair(@RequestBody Repair repair) {
return repairService.updateRepair(repair);
}
@RequestMapping("/info")
HttpResult selectById(int id) {
return repairService.selectById(id);
}
}
前端部分
列表显示
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link href="assets/bootstrap-3.3.7-dist/css/bootstrap.min.css" rel="stylesheet">
<link href="assets/css/right.css" rel="stylesheet">
<script src="assets/jquery-3.5.1.min.js"></script>
<script src="assets/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>
<script src="assets/vue.min-v2.5.16.js"></script>
<script src="assets/vue-router.min-2.7.0.js"></script>
<script src="assets/axios.min.js"></script>
</head>
<body>
<div id="app" class="container">
<div class="row">
<div class="col-md-2" style="height: 50px; line-height: 50px;">
<label>维修类型:</label>
</div>
<div class="col-md-2" style="height: 50px; line-height: 50px;">
<select class="form-control" v-model="name">
<option></option>
<option value="公共部位维修">公共部位维修</option>
<option value="共用设施设备">共用设施设备 </option>
<option value="电梯">电梯</option>
<option value="自用部位维修">自用部位维修</option>
<option value="门窗维修">门窗维修</option>
<option value="电话维修">电话维修</option>
<option value="电路维修">电路维修</option>
</select>
</div>
<div class="col-md-2" style="height: 50px; line-height: 50px;">
<label>处理状态:</label>
</div>
<div class="col-md-3" style="height: 50px; line-height: 50px;">
<select class="form-control" v-model="status">
<option></option>
<option value="0">待处理</option>
<option value="1">已处理</option>
</select>
</div>
<div class="col-md-1 " style="height: 50px; line-height: 50px;">
<button class="btn btn-default" @click="doQuery" >搜索</button>
</div>
</div>
<div class="row">
<div class="col-md-12" style="height: 50px; line-height: 50px;">
<button class="btn btn-default" @click="doAdd">添加</button>
</div>
</div>
<div class="row">
<div class="col-md-12">
<table class="table table-striped">
<caption>维修信息管理</caption>
<thead>
<tr >
<th>报修类型</th>
<th>报修内容</th>
<th>报修人</th>
<th>报修时间</th>
<th>处理状态</th>
<th>处理人</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr v-for="r in repairList">
<td>{{r.name}}</td>
<td>{{r.remarks}}</td>
<td>{{r.userName}}</td>
<td>{{r.comDate}}</td>
<td>{{r.status|statusFilter}}</td>
<td>{{r.clr}}</td>
<td>
<button v-if="r.status==0" class="btn btn-info"@click="doUpdate(r.id)" >报修处理</button>
<button class="btn btn-danger" @click="doDelete(r.id)">删除</button>
</td>
</tr>
</tbody>
</table>
<ul class="pagination" v-for="p in pageNum">
<li v-if="p==pageIndex" class="active"><a @click="doGo(p)">{{p}}</a></li>
<li v-else="p==pageIndex" @click="doGo(p)"><a>{{p}}</a></li>
</ul>
</div>
</div>
</div>
<script>
new Vue({
el: '#app',
data: {
repairList:null,
status:'',
name:'',//门牌号
pageIndex: 1,//当前页数
pageSize: 10,//每页显示的条数
pageTotle: 0,//总条数
pageNum: 0,//页数(分页器)
},
filters:{//自定义过滤器
statusFilter:function(value){//格式化性别字符串
switch (value) {//0为关闭,1为开启,
case 0:
return '待处理';
case 1:
return '已处理';
default:
return'故障';
}
}
},
methods: {
requestRepairList(url){
axios.get(url).then(response=>{
console.log(response.data);
this.repairList = response.data.data;
this.pageTotle = response.data.pageTotle;
this.pageNum = Math.ceil(this.pageTotle / this.pageSize);
});
},
doGo(p){
this.pageIndex = p;
var url = " http://localhost:8080/repair/list?pageIndex=" + p + "&pageSize=" + this.pageSize;
this.requestRepairList(url);
},
doQuery(){
var url = " http://localhost:8080/repair/list?pageIndex=" + this.pageIndex + "&pageSize=" + this.pageSize+"&name="+this.name+"&status="+this.status;
this.requestRepairList(url);
},
doDelete(id){
//通过axios发送请求
axios.get("http://localhost:8080/repair/delete?id=" + id).then(response => {
if (response.data.code == 200) {
var url = " http://localhost:8080/repair/list?pageIndex=" + this.pageIndex + "&pageSize=" + this.pageSize;
this.requestRepairList(url);
} else {
alert(response.data.msg);
}
});
},
doAdd(){
window.parent.main_right.location.href = "repair_add_update.html";
},
doUpdate(id){
window.parent.main_right.location.href="repair_add_update.html?id="+id;
},
},
created: function () {
var url="http://localhost:8080/repair/list?pageIndex="+this.pageIndex+"&pageSize="+this.pageSize;
this.requestRepairList(url);
}
});
</script>
</body>
</html>
增加和修改
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link href="assets/bootstrap-3.3.7-dist/css/bootstrap.min.css" rel="stylesheet">
<link href="assets/css/right.css" rel="stylesheet">
<script src="assets/jquery-3.5.1.min.js"></script>
<script src="assets/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>
<script src="assets/vue.min-v2.5.16.js"></script>
<script src="assets/vue-router.min-2.7.0.js"></script>
<script src="assets/axios.min.js"></script>
<script src="assets/date_picker.js"></script>
</head>
<body>
<div id="app" class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="row">
<div class="col-md-12"
style="text-align: center; font-weight: bold; font-size: 18px; height: 80px; line-height: 80px;">
{{title}}
</div>
</div>
<div class="row">
<div class="col-md-6 col-md-offset-3" style="height: 80px;">
<label>报修类型</label>
<select v-model="comId">
<option value="1">公共部位维修</option>
<option value="2">共用设施设备 </option>
<option value="3">电梯</option>
<option value="4">自用部位维修</option>
<option value="5">门窗维修</option>
<option value="6">电话维修</option>
<option value="7">电路维修</option>
</select>
</div>
</div>
<div class="row">
<div class="col-md-6 col-md-offset-3" style="height: 80px;">
<label>报修内容</label>
<input type="text" class="form-control" v-model="remarks">
</div>
</div>
<div class="row">
<div class="col-md-6 col-md-offset-3" style="height: 80px;">
<label>报修人</label>
<select v-model="ownerId">
<option v-for="o in ownerList" :value="o.id">{{o.userName}}</option>
</select>
</div>
</div>
<div class="row">
<div class="col-md-6 col-md-offset-3" style="height: 80px;">
<label>报修时间</label>
<input type="date" class="form-control" v-model="comDate">
</div>
</div>
<div class="row">
<div class="col-md-6 col-md-offset-3">
<label style="margin-right:15px;">处理状态</label>
<label class="radio-inline">
<input type="radio" name="status" v-model="status" value="0"/>未处理
</label>
<label class="radio-inline">
<input type="radio" name="status" v-model="status" value="1"/>已处理
</label>
</div>
</div>
<div class="row">
<div class="col-md-6 col-md-offset-3" style="height: 80px;">
<label>处理人</label>
<input type="text" class="form-control" v-model="clr">
</div>
</div>
<div class="row">
<div class="col-md-6 col-md-offset-3" style="height: 80px;">
<button class="btn btn-primary" @click="doSave">保存</button>
<button class="btn btn-default" @click="doCancel">取消</button>
</div>
</div>
</div>
</div>
</div>
<script>
new Vue({
el: '#app',
data: {
title: "dddd",
repairId:null,
ownerId:null,
comId:null,
remarks: null,//车牌号绑定//房东绑定
comDate:null,//费用类型
status: null,//缴费状态
clr:null,
ownerList: null,//投诉人下选列表
},
methods: {
//保存
doSave() {
if (this.repairId == null) {//添加
//通过axios发送请求
axios.post("http://localhost:8080/repair/add", {
comId: this.comId,
remarks: this.remarks,
comDate: this.comDate,
status: this.status,
ownerId:this.ownerId,
clr:this. clr,
}).then(response => {
if (response.data.code == 200) {//成功
window.parent.main_right.location.href = "repair_list.html";
} else {//失败
alert(response.data.msg);
}
})
} else {//修改
//通过axios发送请求
axios.post("http://localhost:8080/repair/update", {
id: this.repairId,
comId: this.comId,
remarks: this.remarks,
comDate: this.comDate,
status: this.status,
ownerId:this.ownerId,
clr:this. clr,
}).then(response => {
if (response.data.code == 200) {//成功
window.parent.main_right.location.href = "repair_list.html";
} else {//失败
alert(response.data.msg);
}
})
}
},
//取消按钮
doCancel() {
//返回上一个页面
history.go(-1);
},
//请求房东列表
requestOwnerList() {
//通过axios发送请求
axios.get("http://localhost:8080/owner/list?pageIndex=1&pageSize=10000").then(response => {
console.log(response.data);
this.ownerList = response.data.data;
});
},
//请求车位缴费列表信息
requesetRepair() {
axios.get("http://localhost:8080/repair/info?id=" + this.repairId).then(response => {
console.log(response.data);
this.comId = response.data.data.comId;
this.remarks = response.data.data.remarks;
this.comDate = response.data.data.comDate;
this.status = response.data.data.status;
this.ownerId=response.data.data.ownerId;
this.clr=response.data.data.clr;
});
}
},
created: function () {
this.requestOwnerList();
var url = window.location.href;
if (url.indexOf("id") != -1) {
this.repairId = url.substring(url.indexOf("=") + 1);
}
console.log("页面跳转传递的id:" + this.repairId);
if (this.repairId == null) {//说明添加
this.title = '添加维修信息';
} else {//说明修改
this.title = '修改维修信息';
this.requesetRepair();
}
}
});
</script>
</body>
</html>
效果图
这个就是这个项目的所有功能和代码部分了,需要源码的可以在资源中自行下载