Web第八次作业

1、明确课程设计的小组题目,并认领功能模块

我们组课程设计的题目是: 仓库管理系统    ,我认领的功能模块是:     职工管理     

2.新建数据表

3、前端页面 worker.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="./js/vue.js"></script>
    <script src="./js/axios-0.18.0.js"></script>
    <link rel="stylesheet" href="element-ui/index.css">
    <script src="./element-ui/index.js"></script>
</head>
<body>
<h1 style="text-align: center">职工信息表</h1>
<div id="app">
    <el-table
            :data="tableData.filter(data => !search || data.name.toLowerCase().includes(search.toLowerCase()))"
            style="width: 80%;margin: auto " >
        <el-table-column
                label="id"
                prop="id">
        </el-table-column>
        <el-table-column
                label="姓名"
                prop="name">
        </el-table-column>
        <el-table-column
                label="性别"
                prop="gender">
        </el-table-column>
        <el-table-column
                label="职位"
                prop="job">
        </el-table-column>
        <el-table-column
                label="年龄"
                prop="age">
        </el-table-column>
        <el-table-column
                align="right">
            <template slot="header" slot-scope="scope">
                <el-input
                        v-model="search"
                        size="mini"
                        placeholder="输入关键字搜索"/>
            </template>
            <template slot-scope="scope">
                <el-button
                        size="mini"
                        @click="handleEdit(scope.$index, scope.row)">Edit</el-button>
                <el-button
                        size="mini"
                        type="danger"
                        @click="handleDelete(scope.$index, scope.row)">Delete</el-button>
            </template>
        </el-table-column>
    </el-table>
    <p align="center">

    <el-pagination
            layout="sizes, prev, pager, next"
            @size-change="handleSizeChange"
            @current-change="handleCurrentChange"
            :current-page.sync="currentPage"
            :page-sizes="[5, 10, 15]"
            :page-size="5"
            :total="total">
    </el-pagination>
</div>

<script>
    new Vue({
        el: "#app",
        data() {
            return {
                tableData: [],
                search: '',
                currentPage: 1,// 当前页码
                pageSize: 5,
                total: 50
            }
        },
        methods: {
            handleEdit(index, row) {
                console.log(index, row);
            },
            handleDelete(index, row) {
                console.log(index, row);
            },
            handleSizeChange(val) {
                this.pageSize = val;
                this.find();
            },
            handleCurrentChange(val) {
                this.currentPage = val;
                this.find();
            },
            find() {
                axios(`/page/${this.pageSize}/${this.currentPage}`).then(r => {
                    if (r.data.code == 1) {
                        this.tableData = r.data.data.rows;
                        this.total = r.data.data.total;
                    }
                }).catch(error => {
                    console.error(error);
                })
            }
        },
        created(){
            this.find();
        }
    })
</script>
</body>
</html>

4、实体类Worker.java

package com.itheima.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Worker {
    private Integer id;
    public String name;
    private String gender;
    private String job;
    private Short age;
}

5、mapper 层

package com.itheima.mapper;

import com.itheima.pojo.Worker;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper
public interface WorkerMapper {
        @Select("select * from mybatis.worker")
        public List<Worker> Select();
}

6、service层

package com.itheima.service;

import com.itheima.pojo.PageBean;
import com.itheima.pojo.Worker;

import java.util.List;

public interface WorkerService {
    public List<Worker> SelectService();
    public PageBean page(Integer pageNumber, Integer pageSize);
}
package com.itheima.service.impl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.itheima.mapper.WorkerMapper;
import com.itheima.pojo.PageBean;
import com.itheima.pojo.Worker;
import com.itheima.service.WorkerService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class WorkerServicelmpl  implements WorkerService {
    @Autowired
    WorkerMapper woekerMapper;
    @Override
    public List<Worker> SelectService(){
        return woekerMapper.Select();
    }
    @Override
    public PageBean page(Integer pageNumber, Integer pageSize) {
        PageHelper.startPage(pageNumber, pageSize);
        List<Worker> wor=woekerMapper.Select();
        PageInfo<Worker> p = new PageInfo<>(wor);
        PageBean pageBean = new PageBean(p.getTotal(),p.getPages(),p.getPageNum(),p.getPageSize(),p.getList());
        return pageBean;
    }
}

7、controller层

package com.itheima.controller;

import com.itheima.pojo.PageBean;
import com.itheima.pojo.Result;
import com.itheima.service.WorkerService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class WorkerController {
    @Autowired
    WorkerService workerService;
    @RequestMapping("/find")
    public Result Select(){
        return Result.success(workerService.SelectService());
    }
    @RequestMapping("/page/{PageSize}/{PageNumber}")
    public Result page(@PathVariable Integer PageSize, @PathVariable Integer PageNumber){
        PageBean page=workerService.page(PageNumber,PageSize);
        return Result.success(page);
    }
}

8、效果

9、增加 删除 修改

①删除

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="./js/vue.js"></script>
    <script src="./js/axios-0.18.0.js"></script>
    <link rel="stylesheet" href="element-ui/index.css">
    <script src="./element-ui/index.js"></script>
</head>
<body>
<h1 style="text-align: center">职工信息表</h1>
<div id="app">
    <el-table
            :data="tableData.filter(data => !search || data.name.toLowerCase().includes(search.toLowerCase()))"
            style="width: 80%;margin: auto " >
        <el-table-column
                label="id"
                prop="id">
        </el-table-column>
        <el-table-column
                label="姓名"
                prop="name">
        </el-table-column>
        <el-table-column
                label="性别"
                prop="gender">
        </el-table-column>
        <el-table-column
                label="职位"
                prop="job">
        </el-table-column>
        <el-table-column
                label="年龄"
                prop="age">
        </el-table-column>
        <el-table-column
                align="right">
            <template slot="header" slot-scope="scope">
                <el-input
                        v-model="search"
                        size="mini"
                        placeholder="输入关键字搜索"/>
            </template>
            <template slot-scope="scope">
                <el-button
                        size="mini"
                        @click="handleEdit(scope.$index, scope.row)">
                    <a :href="'worker-update.html?id='+scope.row.id">Edit</a>
                </el-button>
                <el-button
                        size="mini"
                        type="danger"
                        @click="handleDelete(scope.$index, scope.row)"
                        @click="deletee(scope.row.id)">Delete</el-button>
            </template>
        </el-table-column>
    </el-table>
    <p align="center">

    <el-pagination
            layout="sizes, prev, pager, next"
            @size-change="handleSizeChange"
            @current-change="handleCurrentChange"
            :current-page.sync="currentPage"
            :page-sizes="[5, 10, 15]"
            :page-size="5"
            :total="total">
    </el-pagination>
</div>

<script>
    new Vue({
        el: "#app",
        data() {
            return {
                tableData: [],
                search: '',
                currentPage: 1,// 当前页码
                pageSize: 5,
                total: 50
            }
        },
        methods: {
            handleEdit(index, row) {
                console.log(index, row);
            },
            handleDelete(index, row) {
                console.log(index, row);
            },
            handleSizeChange(val) {
                this.pageSize = val;
                this.find();
            },
            handleCurrentChange(val) {
                this.currentPage = val;
                this.find();
            },
            find() {
                axios(`/page/${this.pageSize}/${this.currentPage}`).then(r => {
                    if (r.data.code == 1) {
                        this.tableData = r.data.data.rows;
                        this.total = r.data.data.total;
                    }
                }).catch(error => {
                    console.error(error);
                })
            },
            deletee:function (id){
                var this_=this;
                if(window.confirm("您确定要删除这条数据吗?")){
                    axios.post('/WorkerDelete?id='+id).then(function(response){
                        alert("删除成功!")
                        this_.find();
                    })
                        .catch(function(error){
                            console.error("删除失败",error);
                        })
                }
            }
        },
        created(){
            this.find();
        }
    })
</script>
</body>
</html>

②修改

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="./js/vue.js"></script>
    <script src="./js/axios-0.18.0.js"></script>
    <link rel="stylesheet" href="element-ui/index.css">
    <script src="./element-ui/index.js"></script>
</head>
<body>
<div id="app" style=" display: flex;
            justify-content: center;
            align-items: center">
    <table>
        <tr>
            <td>ID</td>
            <td>
                <input type="text" v-model="this.id">
            </td>
        </tr>
        <tr>
            <td>
                姓名:
            </td>
            <td>
                <input type="text" v-model="worker.name">
            </td>
        </tr>
        <tr>
            <td>
                性别:
            </td>
            <td>
                <input type="radio" name="gender" v-model="worker.gender" value="1">男
                <input type="radio" name="gender" v-model="worker.gender" value="2">女
            </td>
        </tr>
        <tr>
            <td>
                职位:
            </td>
            <td>
                <input type="text" v-model="worker.job">
            </td>
        </tr>
        <tr>
            <td>
                年龄:
            </td>
            <td>
                <input type="text" v-model="worker.age">
            </td>
        </tr>
        <tr>
            <td>
                <input type="button" @click="updateworker" value="修改">
            </td>
        </tr>
    </table>

</div>
</body>
<script>
    new Vue({
        el:"#app",
        data:{
            worker:{},
            id:''
        },
        methods:{
            selectpart:function (){
                axios.get(`/WorkerSelectpart/${this.id}`).then(r=>{
                    if(r.data.code==1){
                        if (Array.isArray(r.data.data) && r.data.data.length > 0) {
                            this.worker = r.data.data[0];
                        } else {
                            this.worker = {};
                        }
                    }
                    else{
                        console.log(r.data.message);
                    }
                }).catch(er=>{
                    console.error(er);
                })
            },
            updateworker:function (){
                axios({ method: 'put',
                    url: '/WorkerUpdate',
                    data: JSON.stringify(this.worker),
                    headers: {
                        'Content-Type': 'application/json'
                    } }).then(r=>{
                    if(r.data.code==1){
                        location.href='worker.html';
                    }
                    else{
                        alert(r.data.message);
                    }
                }).catch(e=>{
                    console.error(e);

                })
            }
        },
        created(){
            this.id=location.href.split("?id=")[1]
            this.selectpart();
        }
    })
</script>
</html>

③ 增加

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <script src="./js/vue.js"></script>
  <script src="./js/axios-0.18.0.js"></script>
  <link rel="stylesheet" href="element-ui/index.css">
  <script src="./element-ui/index.js"></script>
</head>
<body>
<div id="app" style=" display: flex;
            justify-content: center;
            align-items: center">
  <table>
    <tr>
      <td>ID</td>
      <td>
        <input type="text" v-model="worker.id">
      </td>
    </tr>
    <tr>
      <td>
        姓名:
      </td>
      <td>
        <input type="text" v-model="worker.name">
      </td>
    </tr>
    <tr>
      <td>
        性别:
      </td>
      <td>
        <input type="radio" name="gender" v-model="worker.gender" value="1">男
        <input type="radio" name="gender" v-model="worker.gender" value="2">女
      </td>
    </tr>
    <tr>
      <td>
        职位:
      </td>
      <td>
        <input type="text" v-model="worker.dynasty">
      </td>
    </tr>
    <tr>
      <td>
        年龄:
      </td>
      <td>
        <input type="text" v-model="worker.title">
      </td>
    </tr>
    <tr>
      <td>
        <input type="button" @click="addworker" value="新增">
      </td>
    </tr>
  </table>
</div>
</body>
<script>
  new Vue({
    el:"#app",
    data:{
      worker:{
        "id":"",
        "name":"",
        "gender":"",
        "job":"",
        "age":""
      }
    },
    methods:{
      addworker:function (){
        axios.post('/WorkerInsert',this.worker).then(r=>{
          if(r.data.code==1){
            location.href='worker.html';
          }
          else{
            alert(r.data.message);
          }
        }).catch(error=>{
          console.error(error);
        })
      }
    }
  })
</script>
</html>

④后端系列代码 

@Mapper
public interface WorkerMapper {
        @Select("select * from mybatis.worker")
        public List<Worker> Select();
        @Insert("insert into worker values(#{id},#{name},#{gender},#{job},#{age})")
        public boolean insert(Worker worker);
        @Select("select * from mybatis.worker where id=#{id}")
        public List<Worker> selectpart(short id);
        @Update("update mybatis.worker set name=#{name},gender=#{gender},job=#{job},age=#{age} where id=#{id}")
        public boolean update(Worker worker);
        @Delete("delete from mybatis.worker where id=#{id}")
        public boolean delete(short id);
}
public interface WorkerService {
    public List<Worker> SelectService();
    public PageBean page(Integer pageNumber, Integer pageSize);
    public boolean Winsert(Worker worker);
    public List<Worker> Wselectpart(short id);
    public boolean Wupdate(Worker worker);
    public boolean Wdelete(short id);
}
@Service
public class WorkerServicelmpl  implements WorkerService {
    @Autowired
    WorkerMapper workerMapper;
    @Override
    public List<Worker> SelectService(){
        return workerMapper.Select();
    }
    @Override
    public PageBean page(Integer pageNumber, Integer pageSize) {
        PageHelper.startPage(pageNumber, pageSize);
        List<Worker> wor=workerMapper.Select();
        PageInfo<Worker> p = new PageInfo<>(wor);
        PageBean pageBean = new PageBean(p.getTotal(),p.getPages(),p.getPageNum(),p.getPageSize(),p.getList());
        return pageBean;
    }
    @Override
    public boolean Winsert(Worker worker) {
        boolean result = workerMapper.insert(worker);
        return result;
    }

    @Override
    public boolean Wupdate(Worker worker) {
        return workerMapper.update(worker);
    }

    @Override
    public boolean Wdelete(short id) {
        return workerMapper.delete(id);
    }

    @Override
    public List<Worker> Wselectpart(short id) {
        return workerMapper.selectpart(id);
    }
}
@RestController
public class WorkerController {
    @Autowired
    WorkerService workerService;
    @RequestMapping("/find")
    public Result Select(){
        return Result.success(workerService.SelectService());
    }
    @RequestMapping("/page/{PageSize}/{PageNumber}")
    public Result page(@PathVariable Integer PageSize, @PathVariable Integer PageNumber){
        PageBean page=workerService.page(PageNumber,PageSize);
        return Result.success(page);
    }

    @RequestMapping("/WorkerInsert")
    public Result insert(@RequestBody Worker worker){
        boolean result =workerService.Winsert(worker);
        if(result) {
            return Result.success();
        } else {
            return Result.error();
        }
    }

    @RequestMapping("/WorkerUpdate")
    public Result update(@RequestBody Worker worker){
        boolean r=workerService.Wupdate(worker);
        if(r){
            return Result.success();
        }
        else {
            return Result.error();
        }
    }
    @RequestMapping("/WorkerDelete")
    public Result delete( short id){
        boolean r=workerService.Wdelete(id);
        if(r){
            return Result.success();
        }
        else{
            return Result.error();
        }
    }

    @RequestMapping("/workerSelectpart/{id}")
    public Result selectpart(@PathVariable short id){
        return Result.success(workerService.Wselectpart(id));
    }

}

 ⑤效果

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值