数据接口错误异常
来源:8-5 实现审批业务逻辑-2
warren_au
2020-11-16 19:25:33
[Intervention] Slow network is detected. See https://www.chromestatus.com/feature/5636954674692096 for more details. Fallback font will be used while loading: http://127.0.0.1:8080/resources/layui/font/iconfont.woff2?v=256
forward/audit:117 请假单数据 {"LAY_INDEX":1,"start_time":1585411200000,"reason":"事故,小腿骨折,明天做手术","create_time":1585367349000,"department_id":2,"employee_id":4,"department_name":"研发部","form_id":31,"end_time":1585929600000,"name":"宋彩妮","form_type":3,"state":"processing","LAY_TABLE_INDEX":0}
forward/audit:117 请假单数据 {"LAY_INDEX":2,"start_time":1585411200000,"reason":"没啥原因,单纯想休息几天","create_time":1585367435000,"department_id":2,"employee_id":3,"department_name":"研发部","form_id":32,"end_time":1585929600000,"name":"王美美","form_type":1,"state":"processing","LAY_TABLE_INDEX":1}
2notice/list?page=1&limit=10:1 Failed to load resource: the server responded with a status of 404 ()
数据接口请求异常:error
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>请假审批</title>
<link rel="stylesheet" href="/resources/layui/css/layui.css">
<style>
.form-item{
padding: 10px;
}
.form-item-value{
padding: 10px;
}
</style>
</head>
<body>
<div class="layui-row">
<blockquote class="layui-elem-quote">
<h1>请假审批</h1>
</blockquote>
<!--待审批列表-->
<table id="grdFormList" lay-filter="grdFormList"></table>
</div>
<!--请假详情对话框-->
<div id="divDialog" style="display: none;padding: 10px">
<form class="layui-form">
<div class="layui-form-item">
<div class="layui-row">
<div class="layui-col-xs2 form-item">部门</div>
<div class="layui-col-xs4 form-item-value" id="dname"></div>
<div class="layui-col-xs2 form-item">姓名</div>
<div class="layui-col-xs4 form-item-value" id="name"></div>
</div>
<div class="layui-row">
<div class="layui-col-xs2 form-item">起始时间</div>
<div class="layui-col-xs4 form-item-value" id="startTime"></div>
<div class="layui-col-xs2 form-item">结束时间</div>
<div class="layui-col-xs4 form-item-value" id="endTime"></div>
</div>
<div class="layui-row">
<div class="layui-col-xs2 form-item">请假原因</div>
<div class="layui-col-xs10 form-item-value" id="reason"></div>
</div>
<!--表单Id-->
<input type="hidden" name="formId" id="formId">
<!--审批结果-->
<select name="result" lay-verfity="required">
<option value="approved">同意</option>
<option value="refused">驳回</option>
</select>
</div>
<div class="layui-form-item">
<!--审批意见-->
<input type="text" name="reason" placeholder="请输入审批意见"
autocomplete="off" class="layui-input"/>
</div>
<div class="layui-form-item">
<button class="layui-btn layui-btn-fluid " lay-submit lay-filter="audit">确认提交</button>
</div>
</form>
</div>
<script src="/resources/layui/layui.all.js"></script>
<script src="/resources/sweetalert2.all.min.js"></script>
<script>
var $ = layui.$;
//将毫秒数转换为"yyyy-MM-dd HH时"字符串格式
function formatDate(time){
var newDate = new Date(time);
return newDate.getFullYear() + "-" +
(newDate.getMonth() + 1) + "-" + newDate.getDate()
+ " " + newDate.getHours() + "时";
}
// 将table渲染为数据表格
layui.table.render({
elem : "#grdFormList" , //选择器
id : "grdFormList" , //id
url : "/leave/list" , //ajax请求url
page : false , //是否分页 true-是 false-否
cols :[[ //列描述
{title : "" , width:70 , style : "height:60px" , type:"numbers"}, // numbers代表序号列
{field : "create_time" , title : "申请时间" , width : 150 , templet: function (d) {
//templet代表对数据进行加工后再显示
return formatDate(d.create_time)
}},
{field : "form_type" , title : "类型" , width : 100 , templet: function(d){
switch (d.form_type) {
case 1:
return "事假";
case 2:
return "病假";
case 3:
return "工伤假";
case 4:
return "婚假";
case 5:
return "产假";
case 6:
return "丧假";
}
}},
{field : "department_name" , title : "部门" , width : 100},
{field : "name" , title : "员工" , width : 100},
{field : "start_time" , title : "起始时间" , width : 150, templet: function (d) {
return formatDate(d.start_time)
}},
{field : "end_time" , title : "结束时间" , width : 150 , templet: function (d) {
return formatDate(d.end_time)
}},
{field : "reason" , title : "请假原因" , width : 350 },
{title : "" , width:150 ,type:"space" , templet : function(d){
var strRec = JSON.stringify(d);
console.info("请假单数据", strRec);
//将请假单数据存放至data-laf属性中
return "<button class='layui-btn layui-btn-danger layui-btn-sm btn-audit' data-laf=" + strRec + " >审批</button>";
}}
]]
})
// 绑定每一行的审批按钮
$(document).on("click" , ".btn-audit" , function(){
//初始化表单
$("#divDialog form")[0].reset();
$("#divDialog form form-item-value").text("");
//获取当前点击按钮的请假单数据,回填至显示项
var laf = $(this).data("laf");
$("#dname").text(laf.department_name);
$("#name").text(laf.name);
$("#startTime").text(formatDate(laf.start_time));
$("#endTime").text(formatDate(laf.end_time));
$("#reason").text(laf.reason);
$("#formId").val(laf.form_id);
//弹出layui对话框
layui.layer.open({
type : "1" , //页面层
title : "请假审批" , //标题
content : $("#divDialog") , //指定对话框容器对象
area : ["500px" , "400px"] , //尺寸
end : function(){ //销毁后触发事件
$("#divDialog").hide();
}
})
})
/**
* 提交审批数据
*/
layui.form.on("submit(audit)" , function(data){
$.ajax({
url : "/leave/audit", //审核URL
data : data.field ,
type : "post" ,
dataType:"json",
success: function (json) {
//关闭所有layui对话框
layui.layer.closeAll();
//显示处理结果
if(json.code == "0"){
swal({
type: 'success',
html: "<h2>请假已审批完毕</h2>",
confirmButtonText: "确定"
}).then(function (result) {
window.location.href="/forward/notice";
});
}else{
swal({
type: 'warning',
html: "<h2>" + json.message + "</h2>",
confirmButtonText: "确定"
});
}
}
})
return false;
})
</script>
</body>
</html>
package com.wjb.oa.controller;
import com.alibaba.fastjson.JSON;
import com.sun.org.slf4j.internal.Logger;
import com.sun.org.slf4j.internal.LoggerFactory;
import com.wjb.oa.entity.LeaveForm;
import com.wjb.oa.entity.User;
import com.wjb.oa.service.LeaveFormService;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@WebServlet(name = "LeaveFormServlet",urlPatterns = "/leave/*")
public class LeaveFormServlet extends HttpServlet {
private LeaveFormService leaveFormService=new LeaveFormService();
private Logger logger = LoggerFactory.getLogger(LoginServlet.class);
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
String uri = request.getRequestURI();
String methodName = uri.substring(uri.lastIndexOf("/")+1);
if (methodName.equals("create")) {
create(request,response);
}else if (methodName.equals("list")) {
getLeaveFormList(request,response);
}else if (methodName.equals("audit")) {
audit(request,response);
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}
private void create(HttpServletRequest request, HttpServletResponse response) throws IOException {
HttpSession session= request.getSession();
User user = (User)session.getAttribute("login_user");
String formType = request.getParameter("formType");
String strStartTime = request.getParameter("startTime");
String strEndTime = request.getParameter("endTime");
String reason = request.getParameter("reason");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH");
Map result = new HashMap<>();
try {
LeaveForm form = new LeaveForm();
form.setEmployeeId(user.getEmployeeId());
form.setStartTime(sdf.parse(strStartTime));
form.setEndTime(sdf.parse(strEndTime));
form.setFormType(Integer.parseInt(formType));
form.setReason(reason);
form.setCreateTime(new Date());
leaveFormService.createLeaveForm(form);
result.put("code", "0");
result.put("message", "success");
} catch (Exception e) {
logger.error("请假申请异常",e);
result.put("code", e.getClass().getSimpleName());
result.put("message", e.getMessage());
}
String json = JSON.toJSONString(result);
response.getWriter().println(json);
}
private void getLeaveFormList(HttpServletRequest request, HttpServletResponse response) throws IOException {
User login_user = (User)request.getSession().getAttribute("login_user");
List<Map> formList = leaveFormService.getLeaveFormList("process", login_user.getEmployeeId());
Map result = new HashMap<>();
result.put("code", "0");
result.put("msg", "");
result.put("count", formList.size());
result.put("data", formList);
String json = JSON.toJSONString(result);
response.getWriter().println(json);
}
private void audit(HttpServletRequest request, HttpServletResponse response) throws IOException {
String formId = request.getParameter("formId");
String result = request.getParameter("result");
String reason = request.getParameter("reason");
User user = (User)request.getSession().getAttribute("login_user");
Map mpResult = new HashMap();
try {
leaveFormService.audit(Long.parseLong(formId), user.getEmployeeId(), result, reason);
mpResult.put("code", "0");
mpResult.put("message", "success");
}catch(Exception e){
logger.error("请假单审核失败",e);
mpResult.put("code", e.getClass().getSimpleName());
mpResult.put("message", e.getMessage());
}
String json = JSON.toJSONString(mpResult);
response.getWriter().println(json);
}
}
1回答
同学你好,报错提示是404错误,路径找不到。在notice/list前多了一个2,如:

建议同学查看对应的请求url前是否多写了一个2。
祝:学习愉快~
相似问题