Compare commits

..

No commits in common. 'main' and 'lihaobo' have entirely different histories.

@ -13,65 +13,34 @@ import java.io.InputStream;
import java.util.Properties;
/**
*@Author zup
*@Date: 2024/12/15
* @Author: -
* @Date: 2019/12/15 23:44
*/
public class AppFileUtils {
/**
*
*
*/
public static String UPLOAD_PATH;
public static String UPLOAD_PATH="src/main/resources/static/upload/";
static {
try (InputStream stream = AppFileUtils.class.getClassLoader().getResourceAsStream("file.properties")) {
Properties properties = new Properties();
if (stream != null) {
properties.load(stream);
}
// 从配置文件中获取路径
String property = properties.getProperty("filepath");
// 如果配置了路径,使用配置的路径,否则使用默认路径
if (property != null && !property.isEmpty()) {
UPLOAD_PATH = property;
} else {
String userHome = System.getProperty("user.home");
// 设置上传路径为当前操作系统用户的 Documents 文件夹下的 WebFile 文件夹
String defaultPath = userHome + File.separator + "Documents" + File.separator + "WebFile";
// 创建了 File 对象
File uploadDir = new File(defaultPath);
// 将路径赋值给静态变量 UPLOAD_PATH
UPLOAD_PATH = uploadDir.getAbsolutePath();
}
File dir = new File(UPLOAD_PATH);
System.out.println(dir.getAbsolutePath());
// 如果目录不存在,则创建
if (!dir.exists()) {
if (!dir.mkdirs()) {
throw new RuntimeException("无法创建上传路径:" + dir.getAbsolutePath());
}
}
// 检查上传路径是否可读写
if (!dir.canRead() || !dir.canWrite()) {
throw new RuntimeException("上传路径不可读写:" + dir.getAbsolutePath());
}
//通过反射的方式,读取配置文件的存储地址
InputStream stream = AppFileUtils.class.getClassLoader().getResourceAsStream("file.properties");
Properties properties = new Properties();
try {
properties.load(stream);
} catch (IOException e) {
// 处理配置文件加载时的异常
e.printStackTrace();
throw new RuntimeException("加载文件上传的保存路径配置失败!", e);
}
String property = properties.getProperty("filepath");
if(property != null && !property.isEmpty()) {
UPLOAD_PATH = property;
}
}
/**
*
* @param oldName
*
* @param oldName
* @return 32
*/
public static String createNewFileName(String oldName) {
@ -81,77 +50,60 @@ public class AppFileUtils {
return IdUtil.simpleUUID().toUpperCase() + stuff;
}
// /**
// * 文件下载
// * @param path
// * @return
// */
// public static ResponseEntity<Object> createResponseEntity(String path) {
// //1,构造文件对象
// File file=new File(UPLOAD_PATH, path);
// if(file.exists()) {
// //将下载的文件封装byte[]
// byte[] bytes = null;
// try {
// bytes = FileUtil.readBytes(file);
// } catch (Exception e) {
// e.printStackTrace();
// }
// //创建封装响应头信息的对象
// HttpHeaders header = new HttpHeaders();
// //封装响应内容类型(APPLICATION_OCTET_STREAM 响应的内容不限定)
// header.setContentType(MediaType.APPLICATION_OCTET_STREAM);
// //创建ResponseEntity对象
// ResponseEntity<Object> entity= new ResponseEntity<Object>(bytes, header, HttpStatus.CREATED);
// return entity;
// }
// return null;
// }
/**
*
* @param path
* @return
*/
public static ResponseEntity<Object> createResponseEntity(String path) {
//1,构造文件对象
File file=new File(UPLOAD_PATH, path);
if(file.exists()) {
//将下载的文件封装byte[]
byte[] bytes = null;
try {
bytes = FileUtil.readBytes(file);
} catch (Exception e) {
e.printStackTrace();
}
//创建封装响应头信息的对象
HttpHeaders header = new HttpHeaders();
//封装响应内容类型(APPLICATION_OCTET_STREAM 响应的内容不限定)
header.setContentType(MediaType.APPLICATION_OCTET_STREAM);
//创建ResponseEntity对象
ResponseEntity<Object> entity= new ResponseEntity<Object>(bytes, header, HttpStatus.CREATED);
return entity;
}
return null;
}
/**
* _temp
* _temp
* @param nameImg
* @return String
* @return
*/
public static String renameFile(String nameImg) {
File file = new File(UPLOAD_PATH, nameImg);
String newNameImg = nameImg.replace("_temp", "");
String replace = nameImg.replace("_temp","");
if (file.exists()){
File newFile = new File(UPLOAD_PATH, newNameImg);
boolean success = file.renameTo(newFile);
if (!success) {
throw new RuntimeException("重命名文件失败:" + file.getAbsolutePath() + " -> "
+ newFile.getAbsolutePath());
}
file.renameTo(new File(UPLOAD_PATH,replace));
}
return newNameImg;
return replace;
}
/**
*
* @param oldPath
*
* @param oldPath
*/
public static boolean removeFileByPath(String oldPath) {
// 图片的路径是默认用户头像则不执行删除操作
if (oldPath != null && oldPath.endsWith(Constast.DEFAULT_IMG_USER)) {
return true;
} else {
assert oldPath != null;
File file = new File(UPLOAD_PATH, oldPath);
// 文件存在则删除
public static void removeFileByPath(String oldPath) {
//图片的路径不是默认图片的路径
if (!oldPath.endsWith(Constast.DEFAULT_IMG_GOODS) && !oldPath.endsWith(Constast.DEFAULT_IMG_USER)){
File file = new File(UPLOAD_PATH,oldPath);
if (file.exists()) {
if (file.delete()) {
return true;
} else {
throw new RuntimeException("文件删除失败: " + file.getAbsolutePath());
}
} else {
// 文件不存在
return false;
file.delete();
}
}
}
}
}

@ -2,12 +2,9 @@ package com.yeqifu.sys.controller;
import cn.hutool.core.date.DateUtil;
import com.yeqifu.sys.common.AppFileUtils;
import com.yeqifu.sys.common.Constast;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.http.HttpStatus;
@ -22,8 +19,8 @@ import java.util.HashMap;
import java.util.Map;
/**
*@Author zup
*@Date: 2024/12/16
* @Author: -
* @Date: 2019/12/15 23:46
*/
@RestController
@RequestMapping("file")
@ -31,77 +28,45 @@ public class FileController {
/**
*
* @param mf
* @return
* @param mf
* @return
*/
@RequestMapping("uploadImage")
public Map<String, Object> uploadImage(MultipartFile mf) {
Map<String, Object> map = new HashMap<>();
// 检查 MultipartFile 是否为空
if (mf == null || mf.isEmpty()) {
map.put("error", "上传文件为空");
return map;
}
// 得到文件名原始名
// 1. 得到文件名
String oldName = mf.getOriginalFilename();
// 检查文件名是否为空
if (oldName == null || oldName.trim().isEmpty()) {
map.put("error", "文件名为空");
return map;
// 2. 根据旧的文件名生成新的文件名
String newName = AppFileUtils.createNewFileName(oldName);
// 3. 得到当前日期的字符串
String dirName = DateUtil.format(new Date(), "yyyy-MM-dd");
// 4. 构造文件夹
File dirFile = new File(AppFileUtils.UPLOAD_PATH, dirName);
// 5. 判断当前文件夹是否存在
if (!dirFile.exists()) {
// 如果不存在则创建新文件夹
dirFile.mkdirs();
}
// 6. 构造文件对象
File file = new File(dirFile, newName + "_temp");
// 7. 把 mf 里面的图片信息写入 file
try {
// 根据旧的文件名生成新的文件名
String newName = AppFileUtils.createNewFileName(oldName);
// 得到当前日期的字符串
String dirName = DateUtil.format(new Date(), "yyyy-MM-dd");
// 构造文件夹路径
File dirFile = new File(AppFileUtils.UPLOAD_PATH, dirName);
// 判断当前文件夹是否存在
if (!dirFile.exists()) {
// 如果不存在则创建新文件夹
if (!dirFile.mkdirs()) {
map.put("error", "无法创建上传路径:" + dirFile.getAbsolutePath());
return map;
}
}
// 构造文件对象
File file = new File(dirFile, newName + "_temp");
// 把 mf 里面的图片信息写入 file
mf.transferTo(file);
map.put("path", dirName + "/" + newName + "_temp");
} catch (IOException e) {
e.printStackTrace();
map.put("error", "文件上传失败:" + e.getMessage());
} catch (RuntimeException e) {
} catch (IllegalStateException | IOException e) {
e.printStackTrace();
map.put("error", "上传过程发生运行时异常:" + e.getMessage());
}
Map<String, Object> map = new HashMap<>();
map.put("path", dirName + "/" + newName + "_temp");
return map;
}
/**
*
* @param path
* @return
* return
*/
@RequestMapping("showImageByPath")
public ResponseEntity<byte[]> downloadImage(@RequestParam String path) {
// 如果是默认图片,直接返回
if (path.equals(Constast.DEFAULT_IMG_USER) || path.equals(Constast.DEFAULT_IMG_GOODS)) {
return getDefaultImage(path);
}
public ResponseEntity<byte[]> downloadImage(String path) {
// 规范路径,防止路径穿越
Path normalizedPath = Paths.get(AppFileUtils.UPLOAD_PATH, path).normalize();
@ -109,6 +74,7 @@ public class FileController {
if (!normalizedPath.startsWith(AppFileUtils.UPLOAD_PATH)) {
return ResponseEntity.status(HttpStatus.FORBIDDEN).build(); // 如果路径越界返回403 Forbidden
}
// 检查文件是否存在
File file = normalizedPath.toFile();
if (!file.exists() || !file.isFile()) {
@ -137,21 +103,4 @@ public class FileController {
}
}
/**
*
*/
private ResponseEntity<byte[]> getDefaultImage(String path) {
// 返回一个 302 重定向响应,重定向到默认图片的 URL
if (path.equals(Constast.DEFAULT_IMG_USER)) {
return ResponseEntity.status(HttpStatus.FOUND)
.header(HttpHeaders.LOCATION, Constast.DEFAULT_IMG_USER) // 图片的 URL 路径
.build();
} else if (path.equals(Constast.DEFAULT_IMG_GOODS)) {
return ResponseEntity.status(HttpStatus.FOUND)
.header(HttpHeaders.LOCATION, Constast.DEFAULT_IMG_GOODS) // 图片的 URL 路径
.build();
}
return ResponseEntity.status(HttpStatus.NOT_FOUND).build();
}
}

@ -22,7 +22,6 @@ import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.Date;
import java.util.Objects;
/**
*
@ -37,46 +36,43 @@ public class LoginController {
private ILoginfoService loginfoService;
@RequestMapping("login")
public ResultObj login(UserVo userVo, String code, HttpSession session) {
public ResultObj login(UserVo userVo,String code,HttpSession session){
// 从 session 中获取验证码
//获得存储在session中的验证码
String sessionCode = (String) session.getAttribute("code");
if (!Objects.equals(sessionCode, code)) {
return ResultObj.LOGIN_ERROR_CODE; // 验证码错误
}
// 验证码使用后清除
session.removeAttribute("code");
Subject subject = SecurityUtils.getSubject();
AuthenticationToken token = new UsernamePasswordToken(userVo.getLoginname(), userVo.getPwd());
try {
// 用户认证
subject.login(token);
ActiverUser activerUser = (ActiverUser) subject.getPrincipal();
// 存储用户信息到 session
WebUtils.getSession().setAttribute("user", activerUser.getUser());
if (code!=null&&sessionCode.equals(code)){
Subject subject = SecurityUtils.getSubject();
AuthenticationToken token = new UsernamePasswordToken(userVo.getLoginname(),userVo.getPwd());
try {
//对用户进行认证登陆
subject.login(token);
//通过subject获取以认证活动的user
ActiverUser activerUser = (ActiverUser) subject.getPrincipal();
//将user存储到session中
WebUtils.getSession().setAttribute("user",activerUser.getUser());
//记录登陆日志
Loginfo entity = new Loginfo();
entity.setLoginname(activerUser.getUser().getName()+"-"+activerUser.getUser().getLoginname());
entity.setLoginip(WebUtils.getRequest().getRemoteAddr());
entity.setLogintime(new Date());
loginfoService.save(entity);
// 记录登录日志
Loginfo entity = new Loginfo();
entity.setLoginname(activerUser.getUser().getName() + "-" + activerUser.getUser().getLoginname());
entity.setLoginip(WebUtils.getRequest().getRemoteAddr());
entity.setLogintime(new Date());
loginfoService.save(entity);
return ResultObj.LOGIN_SUCCESS;
} catch (AuthenticationException e) { // 其他认证错误
e.printStackTrace();
return ResultObj.LOGIN_ERROR_PASS;
return ResultObj.LOGIN_SUCCESS;
} catch (AuthenticationException e) {
e.printStackTrace();
return ResultObj.LOGIN_ERROR_PASS;
}
}else {
return ResultObj.LOGIN_ERROR_CODE;
}
}
}
/**
*
* @param response
* @param session
* @throws IOException
*/
@RequestMapping("getCode")
public void getCode(HttpServletResponse response, HttpSession session) throws IOException{

@ -1,5 +1,6 @@
package com.yeqifu.sys.controller;
import cn.hutool.core.util.IdUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@ -16,16 +17,12 @@ import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.crypto.hash.Md5Hash;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.core.Authentication;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
* <p>
@ -234,7 +231,7 @@ public class UserController {
// Ensure that the user trying to reset is an admin
if (!currentUser.isAdmin()) {
return new DataGridView(403, "权限不足,无法重置其他用户密码");
return new DataGridView("403", "权限不足,无法重置其他用户密码");
}
// Reset password logic
@ -244,8 +241,9 @@ public class UserController {
// Save the updated user
userService.updateById(targetUser);
return new DataGridView(200, "用户密码重置成功");
return new DataGridView("200", "用户密码重置成功");
}
}
/**
* id
@ -345,45 +343,30 @@ public class UserController {
* @return
*/
@RequestMapping("updateUserInfo")
public ResultObj updateUserInfo(UserVo userVo) {
public ResultObj updateUserInfo(UserVo userVo){
try {
if (userVo.getImgpath().endsWith("_temp")) {
// 获取当前用户的旧图片路径
String oldPath = userService.getById(userVo.getId()).getImgpath();
// 删除原先的图片
boolean fileDeleted = AppFileUtils.removeFileByPath(oldPath);
// 文件不存在删除失败,设为默认头像
if (!fileDeleted) {
//用户头像不是默认图片
if (!(userVo.getImgpath()!=null&&userVo.getImgpath().equals(Constast.DEFAULT_IMG_GOODS))){
if (userVo.getImgpath().endsWith("_temp")){
String newName = AppFileUtils.renameFile(userVo.getImgpath());
userVo.setImgpath(newName);
//删除原先的图片
String oldPath = userService.getById(userVo.getId()).getImgpath();
AppFileUtils.removeFileByPath(oldPath);
//获取存储在session中的user并重新设置user中的图片地址
User user = (User) WebUtils.getSession().getAttribute("user");
user.setImgpath(Constast.DEFAULT_IMG_USER);
return ResultObj.UPDATE_ERROR_SetDefaultImg;
user.setImgpath(newName);
//重新设置user
WebUtils.getSession().setAttribute("user",user);
}
// 重命名文件
String newName = AppFileUtils.renameFile(userVo.getImgpath());
userVo.setImgpath(newName);
// 获取存储在session中的user并重新设置user中的头像路径
User user = (User) WebUtils.getSession().getAttribute("user");
user.setImgpath(newName);
// 重新设置user到session中
WebUtils.getSession().setAttribute("user", user);
}
// 更新用户信息
userService.updateById(userVo);
return ResultObj.UPDATE_SUCCESS;
} catch (Exception e) {
e.printStackTrace();
return ResultObj.UPDATE_ERROR;
}
}
}

File diff suppressed because one or more lines are too long

@ -233,45 +233,41 @@
var tableIns;
layui.use(['jquery', 'form', 'layer', 'table','upload'], function () {
var $ = layui.jquery; // 引入jQuery模块
var form = layui.form; // 引入表单模块
var layer = layui.layer; // 引入弹出层模块
var table = layui.table; // 引入表格模块
var upload = layui.upload; // 引入文件上传模块
var $ = layui.jquery;
var form = layui.form;
var layer = layui.layer;
var table = layui.table;
var upload = layui.upload;
//初始化表格 加载数据
tableIns = table.render({
elem: "#goodsTable", // 绑定元素ID
title: "商品数据表格", // 表格标题
url: "/goods/loadAllGoods", // 数据接口
toolbar: "#goodsToolBar", // 工具栏模板选择器
page: true, // 开启分页
height: "full-180", // 设置表格高度
cols: [[ // 定义表头
{field: 'id', title: 'ID', align: 'center', width: '50'},
{field: 'goodsname', title: '', align: 'center', width: '150'},
{field: 'providername', title: '', align: 'center', width: '150'},
{field: 'produceplace', title: '', align: 'center', width: '150'},
{field: 'description', title: '', align: 'center', width: '150'},
{field: 'price', title: '', align: 'center', width: '90'},
{field: 'number', title: '', align: 'center', width: '90'},
{field: 'dangernum', title: '', align: 'center', width: '100'},
{
field: 'goodsimg', title: '', align: 'center', width: '150', templet: function (d) {
return '<img width=40 height=40 src=/file/showImageByPath?path=' + d.goodsimg + ' />';
}
},
{field: 'size', title: '', align: 'center', width: '120'},
{field: 'goodspackage', title: '', align: 'center', width: '120'},
{field: 'productcode', title: '', align: 'center', width: '130'},
{field: 'promitcode', title: '', align: 'center', width: '130'},
{
field: 'available', title: '', align: 'center', width: '100', templet: function (d) {
return d.available == 1 ? '<font color="blue"></font>' : '<font color="red"></font>';
}
},
{fixed: 'right', title: '', toolbar: '#goodsRowBar', align: 'center', width: '180'}
]],
elem: "#goodsTable",
title: "商品数据表格",
url: "/goods/loadAllGoods",
toolbar: "#goodsToolBar",
page: true,
height: "full-180",
cols: [ [
{field: 'id', title: 'ID', align: 'center',width:'50'},
{field: 'goodsname', title: '', align: 'center',width:'150'},
{field: 'providername', title: '', align: 'center',width:'150'},
{field: 'produceplace', title: '', align: 'center',width:'150'},
{field: 'description', title: '', align: 'center',width:'150'},
{field: 'price', title: '', align: 'center',width:'90'},
{field: 'number', title: '', align: 'center',width:'90'},
{field: 'dangernum', title: '', align: 'center',width:'100'},
{field: 'goodsimg', title: '', align: 'center',width:'150', templet:function(d){
return '<img width=40 height=40 src=/file/showImageByPath?path='+d.goodsimg+ ' />';
}},
{field: 'size', title: '', align: 'center',width:'120'},
{field: 'goodspackage', title: '', align: 'center',width:'120'},
{field: 'productcode', title: '', align: 'center',width:'130'},
{field: 'promitcode', title: '', align: 'center',width:'130'},
{field: 'available', title: '', align: 'center',width:'100',templet:function (d) {
return d.available==1?'<font color="blue"></font>':'<font color="red"></font>';
}},
{fixed: 'right', title: '', toolbar: '#goodsRowBar', align: 'center',width:'180'}
] ],
done: function (data, curr, count) {
//不是第一页时如果当前返回的数据为0那么就返回上一页
if (data.data.length == 0 && curr != 1) {
@ -285,160 +281,163 @@
});
//初始化查询条件的下拉列表
$.get("/provider/loadAllProviderForSelect", function (res) {
var data = res.data; // 获取返回的数据
var dom = $("#select_providerid"); // 获取下拉列表的DOM元素
var html = '<option value="0"></option>'; // 初始化下拉列表的HTML内容
$.each(data, function (index, item) {
html += '<option value="' + item.id + '">' + item.providername + '</option>'; // 动态添加选项
$.get("/provider/loadAllProviderForSelect",function (res) {
var data = res.data;
var dom = $("#select_providerid");
var html = '<option value="0"></option>';
$.each(data,function (index, item) {
html += '<option value="'+item.id+'">'+item.providername+'</option>';
})
dom.html(html); // 将生成的HTML内容添加到下拉列表中
form.render("select"); // 重新渲染下拉列表
dom.html(html);
//重新渲染下拉列表
form.render("select");
});
//监控模糊查询按钮事件
form.on("submit(doSearch)", function (data) {
tableIns.reload({
where: data.field, // 设置查询条件
where: data.field,
page: {
curr: 1 // 重置到第一页
curr: 1
}
});
return false; // 阻止表单默认提交行为
return false;
});
// 监控工具条事件
//监控工具条事件
table.on("toolbar(goodsTable)", function (obj) {
switch (obj.event) {
case 'add': // 添加按钮事件
case 'add':
openAddLayer();
break;
case 'deleteBatch': // 批量删除按钮事件
case 'deleteBatch':
batchDeleteGoods();
break;
}
};
});
//监控行工具条事件
table.on("tool(goodsTable)", function (obj) {
var data = obj.data; // 获取当前行数据
//获取当前行数据
var data = obj.data;
switch (obj.event) {
case 'delete': // 删除按钮事件
case 'delete':
deleteGoods(data);
break;
case 'update': // 更新按钮事件
case 'update':
updateGoods(data);
break;
}
};
});
//文件上传
upload.render({
elem: '.thumbBox', // 绑定上传元素
url: '/file/uploadFile', // 上传接口地址
acceptMime: 'image/*', // 接受的文件类型
field: 'mf', // 上传字段名
method: "post", // 请求方式
done: function (res, index, upload) {
var path = res.path;
$('.thumbImg').attr('src', '/file/showImageByPath?path=' + path);
$('.thumbBox').css("background", "#fff");
elem: '.thumbBox',
url: '/file/uploadFile',
acceptMime:'image/*',
field:'mf',
method : "post",
done: function(res, index, upload){
var path=res.path;
$('.thumbImg').attr('src','/file/showImageByPath?path='+path);
$('.thumbBox').css("background","#fff");
//给隐藏域赋值
$("#goodsimg").val(path);
}
});
var mainIndex; // 用于存储弹出层的索引
var url; // 用于存储请求的URL地址
var mainIndex;
var url;
// 打开添加弹出层
//打开添加弹出层
function openAddLayer() {
mainIndex = layer.open({
type: 1, // 弹出层类型为页面层
content: $("#addOrUpdateDiv"), // 弹出层内容为id为addOrUpdateDiv的元素
area: ['700px', '500px'], // 设置弹出层大小
title: '', // 设置弹出层标题
success: function () {
$("#dataFrm")[0].reset(); // 重置表单
url = "/goods/addGoods"; // 设置提交表单的URL
$.get("/provider/loadAllProviderForSelect", function (res) {
var data = res.data; // 获取供应商数据
var dom = $("#providerid"); // 获取供应商下拉列表元素
var html = '<option value="0"></option>'; // 初始化下拉列表选项
$.each(data, function (index, item) {
html += '<option value="' + item.id + '">' + item.providername + '</option>'; // 动态生成下拉列表选项
type:1,
content:$("#addOrUpdateDiv"),
area:['700px','500px'],
title:'',
success:function () {
$("#dataFrm")[0].reset();
url="/goods/addGoods";
$.get("/provider/loadAllProviderForSelect",function(res){
var data=res.data;
var dom=$("#providerid");
var html='<option value="0"></option>'
$.each(data,function(index,item){
html+='<option value="'+item.id+'">'+item.providername+'</option>'
});
dom.html(html); // 将生成的选项添加到下拉列表中
form.render("select"); // 重新渲染下拉列表
dom.html(html);
form.render("select");
});
// 设置默认图片
$(".thumbImg").attr("src", '/file/showImageByPath?path=images/noDefaultImage.jpg');
$("#goodsimg").val('/images/noDefaultImage.jpg'); // 设置默认图片路径到隐藏域
//设置默认为无图片
$(".thumbImg").attr("src",'/file/showImageByPath?path=images/noDefaultImage.jpg');
$("#goodsimg").val('/images/noDefaultImage.jpg');
}
});
}
// 打开修改的弹出层
//打开修改的弹出层
function updateGoods(data) {
mainIndex = layer.open({
type: 1, // 弹出层类型为页面层
content: $("#addOrUpdateDiv"), // 弹出层内容为id为addOrUpdateDiv的元素
area: ['700px', '500px'], // 设置弹出层大小
title: '', // 设置弹出层标题
success: function () {
$("#dataFrm")[0].reset(); // 重置表单
form.val("dataFrm", data); // 填充表单数据
$(".thumbImg").attr("src", '/file/showImageByPath?path=' + data.goodsimg); // 显示商品图片
$.get("/provider/loadAllProviderForSelect", function (res) {
var redata = res.data; // 获取供应商数据
var dom = $("#providerid"); // 获取供应商下拉列表元素
var html = '<option value="0"></option>'; // 初始化下拉列表选项
$.each(redata, function (index, item) {
if (data.providerid === item.id) {
html += '<option value="' + item.id + '" selected>' + item.providername + '</option>'; // 选中当前供应商
} else {
html += '<option value="' + item.id + '">' + item.providername + '</option>'; // 其他供应商选项
type:1,
content:$("#addOrUpdateDiv"),
area:['700px','500px'],
title:'',
success:function () {
//清空原有的数据
$("#dataFrm")[0].reset();
//装载新的数据
form.val("dataFrm",data);
//图片进行回显
$(".thumbImg").attr("src",'/file/showImageByPath?path='+data.goodsimg);
//下拉列表的回显
$.get("/provider/loadAllProviderForSelect",function(res){
var redata=res.data;
var dom=$("#providerid");
var html='<option value="0"></option>'
$.each(redata,function(index,item){
if (data.providerid===item.id){
html+='<option value="'+item.id+'" selected>'+item.providername+'</option>'
}else {
html+='<option value="'+item.id+'">'+item.providername+'</option>'
}
});
dom.html(html); // 将生成的选项添加到下拉列表中
form.render("select"); // 重新渲染下拉列表
dom.html(html);
form.render("select");
});
url = "/goods/updateGoods"; // 设置提交表单的URL
url="/goods/updateGoods";
}
});
}
// 表单提交事件处理函数
form.on("submit(doSubmit)", function (data) {
$.post(url, data.field, function (res) {
if (res.code == 200) {
tableIns.reload(); // 刷新表格数据
form.on("submit(doSubmit)",function (data) {
$.post(url,data.field,function (res) {
if (res.code==200){
tableIns.reload();
}
layer.msg(res.msg); // 显示操作结果消息
layer.close(mainIndex); // 关闭弹出层
layer.msg(res.msg);
layer.close(mainIndex);
});
return false; // 阻止表单默认提交行为
return false;
});
// 删除商品函数
//删除
function deleteGoods(data) {
layer.confirm('' + data.goodsname + '退退', {
icon: 3,
title: ''
}, function (index) {
$.post("/goods/deleteGoods", {id: data.id, goodsimg: data.goodsimg}, function (res) {
layer.confirm('' + data.goodsname + '退退', {icon: 3, title: ''}, function (index) {
$.post("/goods/deleteGoods", {id: data.id,goodsimg:data.goodsimg},function (res) {
if (res.code == 200) {
tableIns.reload({where: ""}); // 刷新表格数据
tableIns.reload({
where:"",
});
}
layer.msg(res.msg); // 显示操作结果消息
layer.msg(res.msg);
});
layer.close(index); // 关闭确认对话框
layer.close(index);
});
}
})
});
</script>

@ -240,263 +240,286 @@
<script type="text/javascript">
//提升数据表格的作用域因为底下还有一个reloadTable方法
var tableIns; // 定义表格实例变量,用于后续操作表格
var tableIns;
layui.use(['jquery', 'form', 'layer', 'table', 'laydate'], function () {
var $ = layui.jquery; // 引入jQuery模块
var form = layui.form; // 引入表单模块
var layer = layui.layer; // 引入弹出层模块
var table = layui.table; // 引入表格模块
var laydate = layui.laydate; // 引入日期选择器模块
var $ = layui.jquery;
var form = layui.form;
var layer = layui.layer;
var table = layui.table;
var laydate = layui.laydate;
// 初始化时间选择器
//初始化时间选择器
laydate.render({
elem: '#startTime', // 绑定元素ID为startTime的DOM元素
type: 'datetime' // 设置类型为日期时间选择器
elem: '#startTime',
type: 'datetime'
});
laydate.render({
elem: '#endTime', // 绑定元素ID为endTime的DOM元素
type: 'datetime' // 设置类型为日期时间选择器
});
elem: '#endTime',
type: 'datetime'
})
// 初始化表格并加载数据
//初始化表格 加载数据
tableIns = table.render({
elem: "#inportTable", // 绑定表格容器的ID
title: "进货数据表格", // 表格标题
url: "/inport/loadAllInport", // 数据接口地址
toolbar: "#inportToolBar", // 工具栏模板的选择器或DOM
page: true, // 开启分页
height: "full-180", // 设置表格高度,减去头部和底部的高度
cols: [[ // 表头配置项
{field: 'id', title: 'ID', align: 'center', width: '50'}, // ID列配置
{field: 'providername', title: '', align: 'center', width: '100'}, // 供应商列配置
{field: 'goodsname', title: '', align: 'center', width: '150'}, // 商品名称列配置
{field: 'paytype', title: '', align: 'center', width: '90'}, // 支付类型列配置
{field: 'inporttime', title: '', align: 'center', width: '170'}, // 进货时间列配置
{field: 'operateperson', title: '', align: 'center', width: '130'}, // 操作员列配置
{field: 'number', title: '', align: 'center', width: '100'}, // 进货数量列配置
{field: 'size', title: '', align: 'center', width: '100'}, // 商品规格列配置
{field: 'inportprice', title: '', align: 'center', width: '120'}, // 进货价格列配置
{field: 'remark', title: '', align: 'center', width: '120'}, // 备注列配置
{fixed: 'right', title: '', toolbar: '#inportRowBar', align: 'center', width: '260'} // 操作列配置
]],
elem: "#inportTable",
title: "进货数据表格",
url: "/inport/loadAllInport",
toolbar: "#inportToolBar",
page: true,
height: "full-180",
cols: [ [
{field: 'id', title: 'ID', align: 'center',width:'50'},
{field: 'providername', title: '', align: 'center',width:'100'},
{field: 'goodsname', title: '', align: 'center',width:'150'},
{field: 'paytype', title: '', align: 'center',width:'90'},
{field: 'inporttime', title: '', align: 'center',width:'170'},
{field: 'operateperson', title: '', align: 'center',width:'130'},
{field: 'number', title: '', align: 'center',width:'100'},
{field: 'size', title: '', align: 'center',width:'100'},
{field: 'inportprice', title: '', align: 'center',width:'120'},
{field: 'remark', title: '', align: 'center',width:'120'},
{fixed: 'right', title: '', toolbar: '#inportRowBar', align: 'center',width:'260'}
] ],
done: function (data, curr, count) {
// 当不是第一页且当前页没有数据时,自动跳转到上一页
//不是第一页时如果当前返回的数据为0那么就返回上一页
if (data.data.length == 0 && curr != 1) {
tableIns.reload({
page: {
curr: curr - 1 // 设置当前页为上一页
curr: curr - 1
}
});
})
}
}
});
// 监听模糊查询按钮事件
//监控模糊查询按钮事件
form.on("submit(doSearch)", function (data) {
tableIns.reload({
where: data.field, // 将表单数据作为查询条件
where: data.field,
page: {
curr: 1 // 重置到第一页
curr: 1
}
});
return false; // 阻止表单默认提交行为
return false;
});
// 监听工具条事件
//监控工具条事件
table.on("toolbar(inportTable)", function (obj) {
switch (obj.event) {
case 'add': // 如果点击了添加按钮
openAddLayer(); // 调用打开添加层的函数
case 'add':
openAddLayer();
break;
case 'deleteBatch': // 如果点击了批量删除按钮
batchDeleteInport(); // 调用批量删除的函数
case 'deleteBatch':
batchDeleteInport();
break;
};
});
//监控行工具条事件
table.on("tool(inportTable)", function (obj) {
var data = obj.data; // 获取当前行的数据
//获取当前行数据
var data = obj.data;
switch (obj.event) {
case 'delete': // 如果点击了删除按钮
deleteInport(data); // 调用删除函数,传入当前行数据
case 'delete':
deleteInport(data);
break;
case 'update': // 如果点击了编辑按钮
updateInport(data); // 调用更新函数,传入当前行数据
case 'update':
updateInport(data);
break;
case 'back': // 如果点击了返回按钮
backInport(data); // 调用返回函数,传入当前行数据
case 'back':
backInport(data);
break;
}
};
});
// 初始化供应商名称的下拉列表
$.get("/provider/loadAllProviderForSelect", function (res) {
//初始化供应商名称的下拉列表
$.get("/provider/loadAllProviderForSelect",function (res) {
var data = res.data;
var dom = $("#select_providerid");
var html = '<option value="0"></option>';
$.each(data, function (index, item) {
html += '<option value="' + item.id + '">' + item.providername + '</option>';
});
$.each(data,function (index, item) {
html += '<option value="'+item.id+'">'+item.providername+'</option>';
})
dom.html(html);
// 重新渲染下拉列表
//重新渲染下拉列表
form.render("select");
});
// 初始化商品名称的下拉列表
$.get("/goods/loadAllGoodsForSelect", function (res) {
//初始化商品名称的下拉列表
$.get("/goods/loadAllGoodsForSelect",function (res) {
var data = res.data;
var dom = $("#select_goodsid");
var html = '<option value="0"></option>';
$.each(data, function (index, item) {
html += '<option value="' + item.id + '">' + item.goodsname + '-[' + item.size + ']-' + '[' + item.providername + ']' + '</option>';
$.each(data,function (index, item) {
html += '<option value="'+item.id+'">'+item.goodsname+'-['+item.size+']-'+'['+item.providername+']'+'</option>';
});
dom.html(html);
// 重新渲染下拉列表
//重新渲染下拉列表
form.render("select");
});
var mainIndex;
var url;
// 打开添加弹出层
//打开添加弹出层
function openAddLayer() {
mainIndex = layer.open({
type: 1,
content: $("#addOrUpdateDiv"),
area: ['700px', '500px'],
title: '',
success: function () {
$("#dataFrm")[0].reset(); // 清空表单数据
initProviderSelect(); // 初始化供应商的下拉列表
$(".mydiv").hide(); // 隐藏特定元素
url = "/inport/addInport"; // 设置提交URL为添加进货
type:1,
content:$("#addOrUpdateDiv"),
area:['700px','500px'],
title:'',
success:function () {
$("#dataFrm")[0].reset();
//初始化供应商的下拉列表
initProviderSelect();
//使该div隐藏
$(".mydiv").hide();
url="/inport/addInport";
}
});
}
// 打开修改的弹出层
//打开修改的弹出层
function updateInport(data) {
mainIndex = layer.open({
type: 1,
content: $("#addOrUpdateDiv"),
area: ['700px', '500px'],
title: '',
success: function () {
$("#dataFrm")[0].reset(); // 清空表单数据
form.val("dataFrm", data); // 填充表单数据
initProviderSelect(data.providerid); // 初始化并选中供应商
initGoodsSelect(data.providerid, data.goodsid); // 初始化并选中商品
$(".mydiv").show(); // 显示特定元素
url = "/inport/updateInport"; // 设置提交URL为修改进货
type:1,
content:$("#addOrUpdateDiv"),
area:['700px','500px'],
title:'',
success:function () {
//清空原有的数据
$("#dataFrm")[0].reset();
//装载新的数据
form.val("dataFrm",data);
//供应商进行反选
initProviderSelect(data.providerid);
//商品进行反选
initGoodsSelect(data.providerid,data.goodsid);
//禁用供应商和商品的下拉列表
$(".mydiv").show();
url="/inport/updateInport";
}
});
}
// 初始化添加和修改页面的下拉列表
//初始化添加和修改页面的下拉列表
function initProviderSelect(providerid) {
//重置商品的下拉列表
var dom = $("#goodsid");
dom.html(""); // 重置商品的下拉列表
$.get("/provider/loadAllProviderForSelect", function (res) {
dom.html("");
$.get("/provider/loadAllProviderForSelect",function (res) {
var data = res.data;
var dom = $("#providerid");
var html = '<option value="0"></option>';
$.each(data, function (index, item) {
html += '<option value="' + item.id + '">' + item.providername + '</option>';
$.each(data,function (index, item) {
html += '<option value="'+item.id+'">'+item.providername+'</option>';
});
dom.html(html);
if (providerid != undefined) {
dom.val(providerid); // 如果提供了供应商ID则进行反选
//如果providerid有值就进行反选
if (providerid!=undefined){
dom.val(providerid);
}
form.render("select"); // 重新渲染下拉列表
//重新渲染下拉列表
form.render("select");
});
};
// 监听供应商的下拉列表的事件
form.on('select(providerid)', function (data) {
var providerid = data.value;
initGoodsSelect(providerid); // 根据选中的供应商ID加载对应的商品列表
//监听供应商的下拉列表的事件
form.on('select(providerid)',function (data) {
var providerid = data.value;
initGoodsSelect(providerid);
});
// 加载商品的下拉列表
//加载商品的下拉列表
function initGoodsSelect(providerid, goodsid) {
$.get("/goods/loadGoodsByProviderId", { providerid: providerid }, function (res) {
$.get("/goods/loadGoodsByProviderId",{providerid:providerid},function (res) {
var data = res.data;
var dom = $("#goodsid");
var html = '<option value="0"></option>';
$.each(data, function (index, item) {
html += '<option value="' + item.id + '">' + item.goodsname + '-[' + item.size + ']-' + '[' + item.providername + ']' + '</option>';
$.each(data,function (index, item) {
html += '<option value="'+item.id+'">'+item.goodsname+'-['+item.size+']-'+'['+item.providername+']'+'</option>';
});
dom.html(html);
if (goodsid != undefined) {
dom.val(goodsid); // 如果提供了商品ID则进行反选
//如果goodsid有值就进行反选
if (goodsid!=undefined){
dom.val(goodsid);
}
form.render("select"); // 重新渲染下拉列表
//重新渲染下拉列表
form.render("select");
});
}
// 提交表单事件处理
form.on("submit(doSubmit)", function (data) {
$.post(url, data.field, function (res) {
if (res.code == 200) {
tableIns.reload(); // 重新加载表格数据
form.on("submit(doSubmit)",function (data) {
$.post(url,data.field,function (res) {
if (res.code==200){
tableIns.reload();
}
layer.msg(res.msg); // 显示操作结果消息
layer.close(mainIndex); // 关闭弹出层
layer.msg(res.msg);
layer.close(mainIndex);
});
return false; // 阻止表单默认提交行为
return false;
});
// 删除进货信息
//删除
function deleteInport(data) {
layer.confirm('', { icon: 3, title: '' }, function (index) {
$.post("/inport/deleteInport", { id: data.id }, function (res) {
layer.confirm('', {icon: 3, title: ''}, function (index) {
$.post("/inport/deleteInport", {id: data.id},function (res) {
if (res.code == 200) {
tableIns.reload({ where: "" }); // 重新加载表格数据
tableIns.reload({
where:"",
});
}
layer.msg(res.msg); // 显示操作结果消息
layer.msg(res.msg);
});
layer.close(index); // 关闭确认对话框
layer.close(index);
});
}
// 打开退货的弹出层
//打开退货的弹出层
function backInport(data) {
mainIndex = layer.open({
type: 1,
content: $("#backGoodsDiv"),
area: ['600px', '400px'],
title: '退',
success: function () {
$("#dataFrmBack")[0].reset(); // 清空表单数据
form.val("dataFrmBack", { id: data.id, currentNumber: data.number }); // 填充表单数据进货ID和当前数量
type:1,
content:$("#backGoodsDiv"),
area:['600px','400px'],
title:'退',
success:function () {
//清空原有的数据
$("#dataFrmBack")[0].reset();
//装载新的数据 获得进货的ID以及当前进货单的进货数量
form.val("dataFrmBack",{id:data.id,currentNumber:data.number});
}
});
}
// 自定义验证规则:退货数量必须在有效范围内
//自定义验证规则
form.verify({
checkNumber: function (value) {
var currentNumber = $("#currentNumber").val(); // 获取当前进货单的数量
if (parseInt(value) > currentNumber || parseInt(value) < 1) {
return '退0-' + currentNumber + ''; // 返回错误信息
}
}
checkNumber: function (value) {
var currentNumber = $("#currentNumber").val();
//value为退货的数量 currentNumber为当前进货单的数量
if (parseInt(value)>currentNumber||parseInt(value)<1){
return '退0-'+currentNumber+'';
}
}
});
// 提交退货表单事件处理
form.on("submit(doBackSubmit)", function (data) {
$.post("/outport/addOutport", data.field, function (res) {
if (res.code == 200) {
tableIns.reload(); // 重新加载表格数据
layer.close(mainIndex); // 关闭弹出层
//退货提交
form.on("submit(doBackSubmit)",function (data) {
$.post("/outport/addOutport",data.field,function (res) {
if (res.code==200){
//重新加载表格数据
tableIns.reload();
//关闭退货弹出层
layer.close(mainIndex);
}
layer.msg(res.msg); // 显示操作结果消息
layer.msg(res.msg);
});
return false; // 阻止表单默认提交行为
return false;
})
});

@ -125,123 +125,123 @@
<script type="text/javascript">
//提升数据表格的作用域因为底下还有一个reloadTable方法
// 定义全局变量 tableIns用于存储表格实例
var tableIns;
// 使用 layui 模块
layui.use(['jquery', 'form', 'layer', 'table', 'laydate'], function () {
// 获取 layui 模块的实例
var $ = layui.jquery;
var form = layui.form;
var layer = layui.layer;
var table = layui.table;
var laydate = layui.laydate;
// 初始化时间选择器,设置开始时间和结束时间的日期时间选择器
//初始化时间选择器
laydate.render({
elem: '#startTime', // 绑定元素
type: 'datetime' // 类型为日期时间
elem: '#startTime',
type: 'datetime'
});
laydate.render({
elem: '#endTime', // 绑定元素
type: 'datetime' // 类型为日期时间
});
elem: '#endTime',
type: 'datetime'
})
// 初始化表格并加载数据
//初始化表格 加载数据
tableIns = table.render({
elem: "#outportTable", // 绑定元素
title: "进货数据表格", // 表格标题
url: "/outport/loadAllOutport", // 数据接口
toolbar: true, // 显示工具栏
page: true, // 开启分页
height: "full-180", // 表格高度
cols: [ [ // 列配置
{field: 'id', title: 'ID', align: 'center'}, // ID 列
{field: 'providername', title: '', align: 'center', width:'130'}, // 供应商列
{field: 'goodsname', title: '', align: 'center', width:'150'}, // 商品名称列
{field: 'paytype', title: '', align: 'center', width:'90'}, // 支付类型列
{field: 'outputtime', title: '退', align: 'center', width:'170'}, // 退货时间列
{field: 'operateperson', title: '', align: 'center', width:'130'}, // 操作员列
{field: 'number', title: '退', align: 'center', width:'100'}, // 退货数量列
{field: 'outportprice', title: '退', align: 'center', width:'120'}, // 退货价格列
{field: 'remark', title: '', align: 'center', width:'130'}, // 备注列
{field: 'size', title: '', align: 'center', width:'100'}, // 商品规格列
{fixed: 'right', title: '', toolbar: '#outportRowBar', align: 'center', width:'130'} // 操作列
elem: "#outportTable",
title: "进货数据表格",
url: "/outport/loadAllOutport",
toolbar: true,
page: true,
height: "full-180",
cols: [ [
{field: 'id', title: 'ID', align: 'center'},
{field: 'providername', title: '', align: 'center',width:'130'},
{field: 'goodsname', title: '', align: 'center',width:'150'},
{field: 'paytype', title: '', align: 'center',width:'90'},
{field: 'outputtime', title: '退', align: 'center',width:'170'},
{field: 'operateperson', title: '', align: 'center',width:'130'},
{field: 'number', title: '退', align: 'center',width:'100'},
{field: 'outportprice', title: '退', align: 'center',width:'120'},
{field: 'remark', title: '', align: 'center',width:'130'},
{field: 'size', title: '', align: 'center',width:'100'},
{fixed: 'right', title: '', toolbar: '#outportRowBar', align: 'center',width:'130'}
] ],
done: function (data, curr, count) {
// 如果当前页不是第一页且返回的数据为空,则自动跳转到上一页
//不是第一页时如果当前返回的数据为0那么就返回上一页
if (data.data.length == 0 && curr != 1) {
tableIns.reload({
page: {
curr: curr - 1 // 跳转到上一页
curr: curr - 1
}
});
})
}
}
});
// 监听模糊查询按钮事件
//监控模糊查询按钮事件
form.on("submit(doSearch)", function (data) {
// 重新加载表格数据,并重置到第一页
tableIns.reload({
where: data.field, // 提交的表单数据作为查询条件
where: data.field,
page: {
curr: 1 // 重置到第一页
curr: 1
}
});
return false; // 阻止表单默认提交行为
return false;
});
// 监听行工具条事件
//监控行工具条事件
table.on("tool(outportTable)", function (obj) {
// 获取当前行数据
//获取当前行数据
var data = obj.data;
switch (obj.event) {
case 'delete': // 如果点击的是删除按钮
deleteOutport(data); // 调用删除函数
case 'delete':
deleteOutport(data);
break;
};
});
// 初始化供应商名称的下拉列表
//初始化供应商名称的下拉列表
$.get("/provider/loadAllProviderForSelect",function (res) {
var data = res.data; // 获取返回的数据
var dom = $("#select_providerid"); // 获取下拉列表的DOM元素
var html = '<option value="0"></option>'; // 初始化选项内容
var data = res.data;
var dom = $("#select_providerid");
var html = '<option value="0"></option>';
$.each(data,function (index, item) {
html += '<option value="'+item.id+'">'+item.providername+'</option>'; // 添加选项
});
dom.html(html); // 将选项添加到下拉列表中
form.render("select"); // 重新渲染下拉列表
html += '<option value="'+item.id+'">'+item.providername+'</option>';
})
dom.html(html);
//重新渲染下拉列表
form.render("select");
});
// 初始化商品名称的下拉列表
//初始化商品名称的下拉列表
$.get("/goods/loadAllGoodsForSelect",function (res) {
var data = res.data; // 获取返回的数据
var dom = $("#select_goodsid"); // 获取下拉列表的DOM元素
var html = '<option value="0"></option>'; // 初始化选项内容
var data = res.data;
var dom = $("#select_goodsid");
var html = '<option value="0"></option>';
$.each(data,function (index, item) {
html += '<option value="'+item.id+'">'+item.goodsname+'-['+item.size+']-'+'['+item.providername+']'+'</option>'; // 添加选项
html += '<option value="'+item.id+'">'+item.goodsname+'-['+item.size+']-'+'['+item.providername+']'+'</option>';
});
dom.html(html); // 将选项添加到下拉列表中
form.render("select"); // 重新渲染下拉列表
dom.html(html);
//重新渲染下拉列表
form.render("select");
});
// 删除退货信息函数
//删除退货信息
function deleteOutport(data) {
layer.confirm('退', {icon: 3, title: ''}, function (index) {
// 发送删除请求
$.post("/outport/deleteOutport", {id: data.id},function (res) {
if (res.code == 200) { // 如果删除成功
tableIns.reload({where:""}); // 重新加载表格数据
if (res.code == 200) {
tableIns.reload({
where:"",
});
}
layer.msg(res.msg); // 显示操作结果消息
layer.msg(res.msg);
});
layer.close(index); // 关闭确认框
layer.close(index);
});
}
});
});
</script>

@ -176,7 +176,7 @@
<script type="text/javascript">
//提升数据表格的作用域因为底下还有一个reloadTable方法
var tableIns; // 定义表格实例变量
var tableIns;
layui.use(['jquery', 'form', 'layer', 'table'], function () {
var $ = layui.jquery;
@ -184,34 +184,34 @@
var layer = layui.layer;
var table = layui.table;
// 初始化表格,加载数据
//初始化表格 加载数据
tableIns = table.render({
elem: "#providerTable", // 绑定元素
title: "供应商数据表格", // 表格标题
url: "/provider/loadAllProvider", // 数据接口
toolbar: "#providerToolBar", // 工具栏模板选择器
page: true, // 开启分页
height: "full-180", // 设置表格高度
cols: [ [ // 表头
{type:'checkbox',fixed:'left'}, // 复选框列
{field: 'id', title: 'ID', align: 'center',width:'50'}, // ID列
{field: 'providername', title: '', align: 'center',width:'100'}, // 供应商名称列
{field: 'address', title: '', align: 'center',width:'150'}, // 供应商地址列
{field: 'telephone', title: '', align: 'center',width:'140'}, // 供应商电话列
{field: 'zip', title: '', align: 'center',width:'90'}, // 邮编列
{field: 'connectionperson', title: '', align: 'center',width:'130'}, // 联系人列
{field: 'phone', title: '', align: 'center',width:'130'}, // 联系人电话列
{field: 'bank', title: '', align: 'center',width:'100'}, // 开户银行列
{field: 'account', title: '', align: 'center',width:'160'}, // 银行账号列
{field: 'email', title: '', align: 'center',width:'200'}, // 邮箱列
{field: 'fax', title: '', align: 'center',width:'100'}, // 传真列
elem: "#providerTable",
title: "供应商数据表格",
url: "/provider/loadAllProvider",
toolbar: "#providerToolBar",
page: true,
height: "full-180",
cols: [ [
{type:'checkbox',fixed:'left'},
{field: 'id', title: 'ID', align: 'center',width:'50'},
{field: 'providername', title: '', align: 'center',width:'100'},
{field: 'address', title: '', align: 'center',width:'150'},
{field: 'telephone', title: '', align: 'center',width:'140'},
{field: 'zip', title: '', align: 'center',width:'90'},
{field: 'connectionperson', title: '', align: 'center',width:'130'},
{field: 'phone', title: '', align: 'center',width:'130'},
{field: 'bank', title: '', align: 'center',width:'100'},
{field: 'account', title: '', align: 'center',width:'160'},
{field: 'email', title: '', align: 'center',width:'200'},
{field: 'fax', title: '', align: 'center',width:'100'},
{field: 'available', title: '', align: 'center',width:'100',templet:function (d) {
return d.available==1?'<font color="blue"></font>':'<font color="red"></font>';
}}, // 是否可用列,使用模板函数显示颜色
{fixed: 'right', title: '', toolbar: '#providerRowBar', align: 'center',width:'180'} // 操作列,固定在右侧
return d.available==1?'<font color="blue"></font>':'<font color="red"></font>';
}},
{fixed: 'right', title: '', toolbar: '#providerRowBar', align: 'center',width:'180'}
] ],
done: function (data, curr, count) {
// 如果当前页不是第一页且返回的数据为空,则跳转到上一页
//不是第一页时如果当前返回的数据为0那么就返回上一页
if (data.data.length == 0 && curr != 1) {
tableIns.reload({
page: {
@ -222,102 +222,109 @@
}
});
// 监听模糊查询按钮事件
//监控模糊查询按钮事件
form.on("submit(doSearch)", function (data) {
tableIns.reload({
where: data.field, // 提交的表单数据作为查询条件
where: data.field,
page: {
curr: 1 // 重置到第一页
curr: 1
}
});
return false; // 阻止表单默认提交行为
return false;
});
// 监听工具条事件
//监控工具条事件
table.on("toolbar(providerTable)", function (obj) {
switch (obj.event) {
case 'add':
openAddLayer(); // 添加操作
openAddLayer();
break;
case 'deleteBatch':
batchDeleteProvider(); // 批量删除操作
batchDeleteProvider();
break;
};
});
// 监听行工具条事件
//监控行工具条事件
table.on("tool(providerTable)", function (obj) {
var data = obj.data; // 获取当前行数据
//获取当前行数据
var data = obj.data;
switch (obj.event) {
case 'delete':
deleteProvider(data); // 删除操作
deleteProvider(data);
break;
case 'update':
updateProvider(data); // 更新操作
updateProvider(data);
break;
};
});
var mainIndex; // 弹出层索引
var url; // 请求URL
var mainIndex;
var url;
// 打开添加弹出层
//打开添加弹出层
function openAddLayer() {
mainIndex = layer.open({
type:1, // 页面层类型
content:$("#addOrUpdateDiv"), // 内容区域选择器
area:['700px','500px'], // 弹出层大小
title:'', // 弹出层标题
type:1,
content:$("#addOrUpdateDiv"),
area:['700px','500px'],
title:'',
success:function () {
$("#dataFrm")[0].reset(); // 重置表单
url="/provider/addProvider"; // 设置请求URL为添加供应商接口
$("#dataFrm")[0].reset();
url="/provider/addProvider";
}
});
}
// 打开修改弹出层
//打开修改弹出层
function updateProvider(data) {
mainIndex = layer.open({
type:1, // 页面层类型
content:$("#addOrUpdateDiv"), // 内容区域选择器
area:['700px','500px'], // 弹出层大小
title:'', // 弹出层标题
type:1,
content:$("#addOrUpdateDiv"),
area:['700px','500px'],
title:'',
success:function () {
$("#dataFrm")[0].reset(); // 重置表单
form.val("dataFrm",data); // 填充表单数据
url="/provider/updateProvider"; // 设置请求URL为更新供应商接口
//清空原有的数据
$("#dataFrm")[0].reset();
//装载新的数据
form.val("dataFrm",data);
url="/provider/updateProvider";
}
});
}
// 监听表单提交事件
form.on("submit(doSubmit)",function (data) {
$.post(url,data.field,function (res) {
if (res.code==200){
tableIns.reload(); // 重新加载表格数据
tableIns.reload();
}
layer.msg(res.msg); // 显示响应消息
layer.close(mainIndex); // 关闭弹出层
layer.msg(res.msg);
layer.close(mainIndex);
});
return false; // 阻止表单默认提交行为
return false;
});
// 删除供应商操作
//删除
function deleteProvider(data) {
layer.confirm('' + data.providername + '退退', {icon: 3, title: ''}, function (index) {
$.post("/provider/deleteProvider", {id: data.id},function (res) {
if (res.code == 200) {
tableIns.reload({where:""}); // 重新加载表格数据,清空查询条件
tableIns.reload({
where:"",
});
}
layer.msg(res.msg); // 显示响应消息
layer.msg(res.msg);
});
layer.close(index); // 关闭确认对话框
layer.close(index);
});
}
});
});
</script>
</body>

@ -240,7 +240,7 @@
<script type="text/javascript">
//提升数据表格的作用域因为底下还有一个reloadTable方法
var tableIns; // 定义表格实例变量
var tableIns;
layui.use(['jquery', 'form', 'layer', 'table', 'laydate'], function () {
var $ = layui.jquery;
@ -249,7 +249,7 @@
var table = layui.table;
var laydate = layui.laydate;
// 初始化时间选择器
//初始化时间选择器
laydate.render({
elem: '#startTime',
type: 'datetime'
@ -257,9 +257,9 @@
laydate.render({
elem: '#endTime',
type: 'datetime'
});
})
// 初始化表格并加载数据
//初始化表格 加载数据
tableIns = table.render({
elem: "#salesTable",
title: "销售数据表格",
@ -267,32 +267,32 @@
toolbar: "#salesToolBar",
page: true,
height: "full-180",
cols: [[
{field: 'id', title: 'ID', align: 'center', width: '50'},
{field: 'customername', title: '', align: 'center', width: '100'},
{field: 'goodsname', title: '', align: 'center', width: '150'},
{field: 'paytype', title: '', align: 'center', width: '90'},
{field: 'salestime', title: '', align: 'center', width: '170'},
{field: 'operateperson', title: '', align: 'center', width: '130'},
{field: 'number', title: '', align: 'center', width: '100'},
{field: 'size', title: '', align: 'center', width: '100'},
{field: 'saleprice', title: '', align: 'center', width: '120'},
{field: 'remark', title: '', align: 'center', width: '120'},
{fixed: 'right', title: '', toolbar: '#salesRowBar', align: 'center', width: '260'}
]],
cols: [ [
{field: 'id', title: 'ID', align: 'center',width:'50'},
{field: 'customername', title: '', align: 'center',width:'100'},
{field: 'goodsname', title: '', align: 'center',width:'150'},
{field: 'paytype', title: '', align: 'center',width:'90'},
{field: 'salestime', title: '', align: 'center',width:'170'},
{field: 'operateperson', title: '', align: 'center',width:'130'},
{field: 'number', title: '', align: 'center',width:'100'},
{field: 'size', title: '', align: 'center',width:'100'},
{field: 'saleprice', title: '', align: 'center',width:'120'},
{field: 'remark', title: '', align: 'center',width:'120'},
{fixed: 'right', title: '', toolbar: '#salesRowBar', align: 'center',width:'260'}
] ],
done: function (data, curr, count) {
// 如果不是第一页且当前返回的数据为空,则返回上一页
//不是第一页时如果当前返回的数据为0那么就返回上一页
if (data.data.length == 0 && curr != 1) {
tableIns.reload({
page: {
curr: curr - 1
}
});
})
}
}
});
// 监控模糊查询按钮事件
//监控模糊查询按钮事件
form.on("submit(doSearch)", function (data) {
tableIns.reload({
where: data.field,
@ -300,222 +300,240 @@
curr: 1
}
});
return false; // 阻止表单提交
return false;
});
// 监控工具条事件
//监控工具条事件
table.on("toolbar(salesTable)", function (obj) {
switch (obj.event) {
case 'add':
openAddLayer(); // 打开添加弹出层
openAddLayer();
break;
}
;
};
});
// 监控行工具条事件
//监控行工具条事件
table.on("tool(salesTable)", function (obj) {
var data = obj.data; // 获取当前行数据
//获取当前行数据
var data = obj.data;
switch (obj.event) {
case 'delete':
deleteSales(data); // 删除销售记录
deleteSales(data);
break;
case 'update':
updateSales(data); // 打开修改弹出层
updateSales(data);
break;
case 'back':
backSales(data); // 回滚销售记录
backSales(data);
break;
}
;
};
});
// 初始化客户名称的下拉列表
$.get("/customer/loadAllCustomerForSelect", function (res) {
//初始化客户名称的下拉列表
$.get("/customer/loadAllCustomerForSelect",function (res) {
var data = res.data;
var dom = $("#select_customerid");
var html = '<option value="0"></option>';
$.each(data, function (index, item) {
html += '<option value="' + item.id + '">' + item.customername + '</option>';
});
$.each(data,function (index, item) {
html += '<option value="'+item.id+'">'+item.customername+'</option>';
})
dom.html(html);
form.render("select"); // 重新渲染下拉列表
//重新渲染下拉列表
form.render("select");
});
// 初始化商品名称的下拉列表
$.get("/goods/loadAllGoodsForSelect", function (res) {
//初始化商品名称的下拉列表
$.get("/goods/loadAllGoodsForSelect",function (res) {
var data = res.data;
var dom = $("#select_goodsid");
var html = '<option value="0"></option>';
$.each(data, function (index, item) {
html += '<option value="' + item.id + '">' + item.goodsname + '-[' + item.size + ']-' + '[' + item.providername + ']' + '</option>';
$.each(data,function (index, item) {
html += '<option value="'+item.id+'">'+item.goodsname+'-['+item.size+']-'+'['+item.providername+']'+'</option>';
});
dom.html(html);
form.render("select"); // 重新渲染下拉列表
//重新渲染下拉列表
form.render("select");
});
var mainIndex; // 主窗口索引
var url; // URL地址变量
var mainIndex;
var url;
// 打开添加弹出层函数
//打开添加弹出层
function openAddLayer() {
mainIndex = layer.open({
type: 1,
content: $("#addOrUpdateDiv"),
area: ['700px', '500px'],
title: '',
success: function () {
$("#dataFrm")[0].reset(); // 重置表单数据
initCustomerSelect(); // 初始化客户名称下拉列表
$(".mydiv").hide(); // 隐藏特定元素
url = "/sales/addSales"; // 设置URL地址为添加销售接口
type:1,
content:$("#addOrUpdateDiv"),
area:['700px','500px'],
title:'',
success:function () {
$("#dataFrm")[0].reset();
//初始化客户名称的下拉列表
initCustomerSelect();
//使该div隐藏
$(".mydiv").hide();
url="/sales/addSales";
}
});
}
// 打开修改弹出层函数
//打开修改弹出层
function updateSales(data) {
mainIndex = layer.open({
type: 1,
content: $("#addOrUpdateDiv"),
area: ['700px', '500px'],
title: '',
success: function () {
$("#dataFrm")[0].reset(); // 清空原有数据
form.val("dataFrm", data); // 装载新的数据到表单中
initCustomerSelect(data.customerid); // 初始化客户名称下拉列表并选中当前客户
$.get("/goods/loadAllGoodsForSelect", function (res) {
var redata = res.data;
var dom = $("#goodsid");
var html = '<option value="0"></option>';
$.each(redata, function (index, item) {
if (data.goodsid === item.id) {
html += '<option value="' + item.id + '" selected>' + item.goodsname + '</option>';
} else {
html += '<option value="' + item.id + '">' + item.goodsname + '</option>';
type:1,
content:$("#addOrUpdateDiv"),
area:['700px','500px'],
title:'',
success:function () {
//清空原有的数据
$("#dataFrm")[0].reset();
//装载新的数据
form.val("dataFrm",data);
//客户进行反选
initCustomerSelect(data.customerid);
//商品下拉列表的回显
$.get("/goods/loadAllGoodsForSelect",function(res){
var redata=res.data;
var dom=$("#goodsid");
var html='<option value="0"></option>'
$.each(redata,function(index,item){
if (data.goodsid===item.id){
html+='<option value="'+item.id+'" selected>'+item.goodsname+'</option>'
}else {
html+='<option value="'+item.id+'">'+item.goodsname+'</option>'
}
});
dom.html(html); // 更新商品下拉列表选项
form.render("select"); // 重新渲染下拉列表
dom.html(html);
form.render("select");
});
$(".mydiv").show(); // 显示特定元素
url = "/sales/updateSales"; // 设置URL地址为更新销售接口
//禁用供应商和商品的下拉列表
$(".mydiv").show();
url="/sales/updateSales";
}
});
}
// 初始化添加和修改页面的下拉列表
//初始化添加和修改页面的下拉列表
function initCustomerSelect(customerid) {
// 重置客户的下拉列表
var dom = $("#customerid");
//重置商品的下拉列表
var dom = $("#goodsid");
dom.html("");
$.get("/customer/loadAllCustomerForSelect", function (res) {
$.get("/customer/loadAllCustomerForSelect",function (res) {
var data = res.data;
var dom = $("#customerid");
var html = '<option value="0"></option>';
$.each(data, function (index, item) {
html += '<option value="' + item.id + '">' + item.customername + '</option>';
$.each(data,function (index, item) {
html += '<option value="'+item.id+'">'+item.customername+'</option>';
});
dom.html(html);
// 如果 customerid 有值就进行反选
if (customerid != undefined) {
//如果customerid有值就进行反选
if (customerid!=undefined){
dom.val(customerid);
}
// 重新渲染下拉列表
//重新渲染下拉列表
form.render("select");
});
};
// 监听客户的下拉列表的事件
form.on('select(customerid)', function (data) {
var customerid = data.value;
initGoodsSelect(customerid);
//监听客户的下拉列表的事件
form.on('select(customerid)',function (data) {
var customerid = data.value;
initGoodsSelect(customerid);
});
// 加载商品的下拉列表
//加载商品的下拉列表
function initGoodsSelect(goodsid) {
$.get("/goods/loadAllGoodsForSelect", function (res) {
$.get("/goods/loadAllGoodsForSelect",function (res) {
var data = res.data;
var dom = $("#goodsid");
var html = '<option value="0"></option>';
$.each(data, function (index, item) {
html += '<option value="' + item.id + '">' + item.goodsname + '-[' + item.size + ']-' + '[' + item.providername + ']' + '</option>';
$.each(data,function (index, item) {
html += '<option value="'+item.id+'">'+item.goodsname+'-['+item.size+']-'+'['+item.providername+']'+'</option>';
});
dom.html(html);
// 如果 goodsid 有值就进行反选
if (goodsid != undefined) {
//如果goodsid有值就进行反选
if (goodsid!=undefined){
dom.val(goodsid);
}
// 重新渲染下拉列表
//重新渲染下拉列表
form.render("select");
});
}
// 提交表单事件
form.on("submit(doSubmit)", function (data) {
$.post(url, data.field, function (res) {
if (res.code == 200) {
tableIns.reload(); // 重新加载表格数据
form.on("submit(doSubmit)",function (data) {
$.post(url,data.field,function (res) {
if (res.code==200){
tableIns.reload();
}
layer.msg(res.msg); // 显示操作结果消息
layer.close(mainIndex); // 关闭当前弹出层
layer.msg(res.msg);
layer.close(mainIndex);
});
return false; // 阻止表单默认提交行为
return false;
});
// 删除销售信息
//删除
function deleteSales(data) {
layer.confirm('', {icon: 3, title: ''}, function (index) {
$.post("/sales/deleteSales", {id: data.id}, function (res) {
$.post("/sales/deleteSales", {id: data.id},function (res) {
if (res.code == 200) {
tableIns.reload({where: "",}); // 重新加载表格数据
tableIns.reload({
where:"",
});
}
layer.msg(res.msg); // 显示操作结果消息
layer.msg(res.msg);
});
layer.close(index); // 关闭确认框
layer.close(index);
});
}
// 打开退货的弹出层
//打开退货的弹出层
function backSales(data) {
mainIndex = layer.open({
type: 1,
content: $("#backGoodsDiv"),
area: ['600px', '400px'],
title: '退',
success: function () {
$("#dataFrmBack")[0].reset(); // 清空原有的数据
// 装载新的数据获得销售的ID以及当前销售单的销售数量
form.val("dataFrmBack", {id: data.id, currentNumber: data.number});
type:1,
content:$("#backGoodsDiv"),
area:['600px','400px'],
title:'退',
success:function () {
//清空原有的数据
$("#dataFrmBack")[0].reset();
//装载新的数据 获得销售的ID以及当前销售单的销售数量
form.val("dataFrmBack",{id:data.id,currentNumber:data.number});
}
});
}
// 自定义验证规则
//自定义验证规则
form.verify({
checkNumber: function (value) {
var currentNumber = $("#currentNumber").val();
// value为退货的数量currentNumber为当前销售单的数量
if (parseInt(value) > currentNumber || parseInt(value) < 1) {
return '退0-' + currentNumber + '';
}
}
checkNumber: function (value) {
var currentNumber = $("#currentNumber").val();
//value为退货的数量 currentNumber为当前销售单的数量
if (parseInt(value)>currentNumber||parseInt(value)<1){
return '退0-'+currentNumber+'';
}
}
});
// 退货提交事件
form.on("submit(doBackSubmit)", function (data) {
$.post("/salesback/addSalesback", data.field, function (res) {
if (res.code == 200) {
tableIns.reload(); // 重新加载表格数据
layer.close(mainIndex); // 关闭退货弹出层
//退货提交
form.on("submit(doBackSubmit)",function (data) {
$.post("/salesback/addSalesback",data.field,function (res) {
if (res.code==200){
//重新加载表格数据
tableIns.reload();
//关闭退货弹出层
layer.close(mainIndex);
}
layer.msg(res.msg); // 显示操作结果消息
layer.msg(res.msg);
});
return false; // 阻止表单默认提交行为
return false;
})
});
});
</script>
</body>

@ -125,118 +125,123 @@
<script type="text/javascript">
//提升数据表格的作用域因为底下还有一个reloadTable方法
var tableIns; // 定义表格实例变量
var tableIns;
layui.use(['jquery', 'form', 'layer', 'table', 'laydate'], function () {
var $ = layui.jquery; // 引入jQuery模块
var form = layui.form; // 引入表单模块
var layer = layui.layer; // 引入弹出层模块
var table = layui.table; // 引入表格模块
var laydate = layui.laydate; // 引入日期选择器模块
var $ = layui.jquery;
var form = layui.form;
var layer = layui.layer;
var table = layui.table;
var laydate = layui.laydate;
// 初始化时间选择器,用于选择开始时间和结束时间
//初始化时间选择器
laydate.render({
elem: '#startTime', // 绑定元素ID为startTime
type: 'datetime' // 设置类型为日期时间选择
elem: '#startTime',
type: 'datetime'
});
laydate.render({
elem: '#endTime', // 绑定元素ID为endTime
type: 'datetime' // 设置类型为日期时间选择
});
elem: '#endTime',
type: 'datetime'
})
// 初始化表格并加载数据
//初始化表格 加载数据
tableIns = table.render({
elem: "#salesbackTable", // 绑定的HTML容器ID
title: "进货数据表格", // 表格标题
url: "/salesback/loadAllSalesback", // 数据接口地址
toolbar: true, // 开启工具栏
page: true, // 开启分页
height: "full-180", // 设置表格高度
cols: [[ // 定义表头
elem: "#salesbackTable",
title: "进货数据表格",
url: "/salesback/loadAllSalesback",
toolbar: true,
page: true,
height: "full-180",
cols: [ [
{field: 'id', title: 'ID', align: 'center'},
{field: 'customername', title: '', align: 'center', width: '130'},
{field: 'goodsname', title: '', align: 'center', width: '150'},
{field: 'paytype', title: '', align: 'center', width: '90'},
{field: 'salesbacktime', title: '退', align: 'center', width: '170'},
{field: 'operateperson', title: '', align: 'center', width: '130'},
{field: 'number', title: '退', align: 'center', width: '100'},
{field: 'salebackprice', title: '退', align: 'center', width: '120'},
{field: 'remark', title: '', align: 'center', width: '130'},
{field: 'size', title: '', align: 'center', width: '100'},
{fixed: 'right', title: '', toolbar: '#salesbackRowBar', align: 'center', width: '130'}
]],
{field: 'customername', title: '', align: 'center',width:'130'},
{field: 'goodsname', title: '', align: 'center',width:'150'},
{field: 'paytype', title: '', align: 'center',width:'90'},
{field: 'salesbacktime', title: '退', align: 'center',width:'170'},
{field: 'operateperson', title: '', align: 'center',width:'130'},
{field: 'number', title: '退', align: 'center',width:'100'},
{field: 'salebackprice', title: '退', align: 'center',width:'120'},
{field: 'remark', title: '', align: 'center',width:'130'},
{field: 'size', title: '', align: 'center',width:'100'},
{fixed: 'right', title: '', toolbar: '#salesbackRowBar', align: 'center',width:'130'}
] ],
done: function (data, curr, count) {
// 如果当前页不是第一页且返回的数据为空,则自动跳转到上一页
//不是第一页时如果当前返回的数据为0那么就返回上一页
if (data.data.length == 0 && curr != 1) {
tableIns.reload({
page: {
curr: curr - 1 // 设置当前页为上一页
curr: curr - 1
}
});
})
}
}
});
// 监听模糊查询按钮事件
//监控模糊查询按钮事件
form.on("submit(doSearch)", function (data) {
tableIns.reload({
where: data.field, // 将表单数据作为查询条件
where: data.field,
page: {
curr: 1 // 重置到第一页
curr: 1
}
});
return false; // 阻止表单默认提交行为
return false;
});
// 监听行工具条事件
//监控行工具条事件
table.on("tool(salesbackTable)", function (obj) {
var data = obj.data; // 获取当前行数据
//获取当前行数据
var data = obj.data;
switch (obj.event) {
case 'delete': // 如果点击的是删除按钮
deleteSalesback(data); // 调用删除函数
case 'delete':
deleteSalesback(data);
break;
};
});
// 初始化客户名称的下拉列表
$.get("/customer/loadAllCustomerForSelect", function (res) {
var data = res.data; // 获取返回的客户数据
var dom = $("#select_customerid"); // 获取下拉列表DOM元素
var html = '<option value="0"></option>'; // 初始化下拉列表选项
$.each(data, function (index, item) {
html += '<option value="' + item.id + '">' + item.customername + '</option>'; // 添加每个客户的选项
});
dom.html(html); // 将生成的HTML添加到下拉列表中
form.render("select"); // 重新渲染下拉列表
//初始化客户名称的下拉列表
$.get("/customer/loadAllCustomerForSelect",function (res) {
var data = res.data;
var dom = $("#select_customerid");
var html = '<option value="0"></option>';
$.each(data,function (index, item) {
html += '<option value="'+item.id+'">'+item.customername+'</option>';
})
dom.html(html);
//重新渲染下拉列表
form.render("select");
});
// 初始化商品名称的下拉列表
$.get("/goods/loadAllGoodsForSelect", function (res) {
var data = res.data; // 获取返回的商品数据
var dom = $("#select_goodsid"); // 获取下拉列表DOM元素
var html = '<option value="0"></option>'; // 初始化下拉列表选项
$.each(data, function (index, item) {
html += '<option value="' + item.id + '">' + item.goodsname + '-[' + item.size + ']-' + '[' + item.providername + ']' + '</option>'; // 添加每个商品的选项
//初始化商品名称的下拉列表
$.get("/goods/loadAllGoodsForSelect",function (res) {
var data = res.data;
var dom = $("#select_goodsid");
var html = '<option value="0"></option>';
$.each(data,function (index, item) {
html += '<option value="'+item.id+'">'+item.goodsname+'-['+item.size+']-'+'['+item.providername+']'+'</option>';
});
dom.html(html); // 将生成的HTML添加到下拉列表中
form.render("select"); // 重新渲染下拉列表
dom.html(html);
//重新渲染下拉列表
form.render("select");
});
// 删除退货信息函数
//删除退货信息
function deleteSalesback(data) {
layer.confirm('退', {icon: 3, title: ''}, function (index) {
$.post("/salesback/deleteSalesback", {id: data.id}, function (res) {
$.post("/salesback/deleteSalesback", {id: data.id},function (res) {
if (res.code == 200) {
tableIns.reload({where: ""}); // 重新加载表格数据
tableIns.reload({
where:"",
});
}
layer.msg(res.msg); // 显示操作结果消息
layer.msg(res.msg);
});
layer.close(index); // 关闭确认框
layer.close(index);
});
}
});
});
</script>

@ -45,83 +45,90 @@
<script type="text/javascript">
layui.use(['jquery', 'form', 'layer', 'table'], function () {
var $ = layui.jquery; // 引入jQuery模块
var form = layui.form; // 引入表单模块
var layer = layui.layer; // 引入弹出层模块
var table = layui.table; // 引入表格模块
var $ = layui.jquery;
var form = layui.form;
var layer = layui.layer;
var table = layui.table;
// 初始化表格,加载数据
//初始化表格 加载数据
var tableIns = table.render({
elem: "#cacheTable", // 绑定元素ID
title: "缓存数据表格", // 表格标题
url: "/cache/loadAllCache", // 数据接口
toolbar: "#cacheToolBar", // 工具栏模板选择器
page: true, // 开启分页
cols: [ [ // 表头
{field: 'key', title: '键', align: 'center', width:'100'}, // 定义列:字段名、标题、对齐方式、宽度
{field: 'value', title: '值', align: 'center', width:'1100'}, // 定义列:字段名、标题、对齐方式、宽度
{fixed: 'right', title: '', toolbar: '#cacheRowBar', align: 'center', width:'100'} // 定义操作列
elem: "#cacheTable",
title: "缓存数据表格",
url: "/cache/loadAllCache",
toolbar: "#cacheToolBar",
page: true,
cols: [ [
{field: 'key', title: '键', align: 'center',width:'100'},
{field: 'value', title: '值', align: 'center',width:'1100'},
{fixed: 'right', title: '', toolbar: '#cacheRowBar', align: 'center',width:'100'}
] ]
});
// 监听工具条事件
//监控工具条事件
table.on("toolbar(cacheTable)", function (obj) {
switch (obj.event) {
case 'removeAllCache': // 如果点击了清空所有缓存按钮
removeAllCache(); // 调用清空所有缓存函数
break;
case 'syncCache': // 如果点击了同步缓存按钮
syncCache(); // 调用同步缓存函数
break;
case 'removeAllCache':
removeAllCache();
break;
case 'syncCache':
syncCache();
break;
};
});
// 监听行工具条事件
//监控行工具条事件
table.on("tool(cacheTable)",function (obj) {
var data = obj.data; // 获取当前行的数据
//获取当前行数据
var data = obj.data;
switch (obj.event){
case 'delete': // 如果点击了删除按钮
deleteCache(data); // 调用删除缓存函数,传入当前行数据
break;
case 'delete':
deleteCache(data);
break;
};
});
// 清除所有缓存的函数
//清除所有缓存
function removeAllCache() {
layer.confirm('',{icon: 3,title:''},function (index) {
$.post("/cache/removeAllCache",function (res) { // 发送POST请求到服务器端执行清空操作
if (res.code==200){ // 如果返回码为200表示成功
tableIns.reload(); // 重新加载表格数据
$.post("/cache/removeAllCache",function (res) {
if (res.code==200){
tableIns.reload();
}
layer.msg(res.msg); // 显示操作结果消息
layer.msg(res.msg);
});
});
}
// 同步缓存的函数
//同步缓存
function syncCache() {
layer.confirm('',{icon: 3,title:''},function (index) {
$.post("/cache/syncCache",function (res) { // 发送POST请求到服务器端执行同步操作
if (res.code==200){ // 如果返回码为200表示成功
tableIns.reload(); // 重新加载表格数据
$.post("/cache/syncCache",function (res) {
if (res.code==200){
tableIns.reload();
}
layer.msg(res.msg); // 显示操作结果消息
layer.msg(res.msg);
});
});
}
// 删除指定缓存的函数
//删除
function deleteCache(data) {
layer.confirm(''+data.key+'',{icon: 3,title:''},function (index) {
$.post("/cache/deleteCache",{key:data.key},function (res) { // 发送POST请求到服务器端执行删除操作传递要删除的缓存键值
if (res.code==200){ // 如果返回码为200表示成功
tableIns.reload({where:""}); // 重新加载表格数据,不附加任何条件
$.post("/cache/deleteCache",{key:data.key},function (res) {
if (res.code==200){
tableIns.reload({
where:"",
});
}
layer.msg(res.msg); // 显示操作结果消息
layer.msg(res.msg);
});
layer.close(index); // 关闭确认框
layer.close(index);
});
}
});
</script>

@ -24,34 +24,30 @@
<script type="text/javascript" src="/resources/layui/layui.js"></script>
<script type="text/javascript" src="/resources/layui_ext/dtree/dtree.js"></script>
<script type="text/javascript">
// 定义全局变量 deptTree用于存储树的实例
var deptTree;
// 使用 layui.extend 方法扩展模块路径
layui.extend({
dtree: '/resources/layui_ext/dtree/dtree' // {/} 代表采用自有路径,即不跟随 base 路径
}).use(['dtree', 'layer', 'jquery'], function() {
// 引入 dtree、layer 和 jQuery 模块
dtree: '/resources/layui_ext/dtree/dtree' // {/}的意思即代表采用自有路径,即不跟随 base 路径
}).use(['dtree','layer','jquery'], function(){
var dtree = layui.dtree;
var layer = layui.layer;
var $ = layui.jquery;
// 初始化树结构
// 初始化树
deptTree = dtree.render({
elem: "#deptTree", // 绑定树的容器元素
dataStyle: "layuiStyle", // 使用 layui 风格的数据格式
dataFormat: "list", // 配置数据的风格为 list
response: { message: "msg", statusCode: 0 }, // 修改 response 中返回数据的定义
url: "/dept/loadDeptManagerLeftTreeJson" // 使用 URL 加载数据(可与 data 加载同时存在)
elem: "#deptTree",
dataStyle: "layuiStyle", //使用layui风格的数据格式
dataFormat: "list", //配置data的风格为list
response:{message:"msg",statusCode:0}, //修改response中返回数据的定义
url: "/dept/loadDeptManagerLeftTreeJson" // 使用url加载可与data加载同时存在)
});
// 绑定节点点击事件
dtree.on("node('deptTree')", function(obj) {
// 将树节点的 id 传到父窗口的 right 对象的 reloadTable 方法中
// 绑定节点点击
dtree.on("node('deptTree')" ,function(obj){
//layer.msg(JSON.stringify(obj.param));
//将树节点的id传到reloadTable方法中
window.parent.right.reloadTable(obj.param.nodeId);
});
});
</script>
</body>
</html>

@ -156,203 +156,219 @@
<script type="text/javascript">
//提升数据表格的作用域因为底下还有一个reloadTable方法
var tableIns; // 定义全局变量,用于存储表格实例
var tableIns;
layui.extend({
dtree: '/resources/layui_ext/dtree/dtree' // 扩展模块路径
}).use(['jquery', 'form', 'layer', 'laydate', 'table', 'layedit', 'dtree'], function () {
dtree: '/resources/layui_ext/dtree/dtree'
}).use(['jquery', 'form', 'layer', 'laydate', 'table', 'layedit','dtree'], function () {
var $ = layui.jquery;
var form = layui.form;
var layer = layui.layer;
var table = layui.table;
var dtree = layui.dtree;
// 初始化表格并加载数据
//初始化表格 加载数据
tableIns = table.render({
elem: "#deptTable", // 绑定表格容器元素
title: "部门数据表格", // 表格标题
url: "/dept/loadAllDept", // 数据接口地址
toolbar: "#deptToolBar", // 工具栏模板选择器
page: true, // 开启分页
height: "full-180", // 设置表格高度
cols: [[ // 定义表头
{field: 'id', title: 'ID', align: 'center', width: '50'},
{field: 'pid', title: 'ID', align: 'center', width: '100'},
{field: 'name', title: '', align: 'center', width: '150'},
{field: 'remark', title: '', align: 'center', width: '150'},
{field: 'address', title: '', align: 'center', width: '100'},
{field: 'available', title: '', align: 'center', width: '100', templet: function (d) {
return d.available == 1 ? '<font color="blue"></font>' : '<font color="red"></font>';
}},
{field: 'open', title: '', align: 'center', width: '100', templet: function (d) {
return d.open == 1 ? '<font color="blue"></font>' : '<font color="red"></font>';
}},
{field: 'ordernum', title: '', align: 'center', width: '80'},
{field: 'createtime', title: '', align: 'center', width: '160'},
{fixed: 'right', title: '', toolbar: '#deptRowBar', align: 'center', width: '180'}
]],
elem: "#deptTable",
title: "部门数据表格",
url: "/dept/loadAllDept",
toolbar: "#deptToolBar",
page: true,
height: "full-180",
cols: [ [
{field: 'id', title: 'ID', align: 'center',width:'50'},
{field: 'pid', title: 'ID', align: 'center',width:'100'},
{field: 'name', title: '', align: 'center',width:'150'},
{field: 'remark', title: '', align: 'center',width:'150'},
{field: 'address', title: '', align: 'center',width:'100'},
{field: 'available', title: '', align: 'center',width:'100',templet:function (d) {
return d.available==1?'<font color="blue"></font>':'<font color="red"></font>';
}},
{field: 'open', title: '', align: 'center',width:'100',templet:function (d) {
return d.open==1?'<font color="blue"></font>':'<font color="red"></font>';
}},
{field: 'ordernum', title: '', align: 'center',width:'80'},
{field: 'createtime', title: '', align: 'center',width:'160'},
{fixed: 'right', title: '', toolbar: '#deptRowBar', align: 'center',width:'180'}
] ],
done: function (data, curr, count) {
// 如果不是第一页且当前页没有数据,则返回上一页
//不是第一页时如果当前返回的数据为0那么就返回上一页
if (data.data.length == 0 && curr != 1) {
tableIns.reload({
page: {
curr: curr - 1
}
});
})
}
}
});
// 监听模糊查询按钮事件
//监控模糊查询按钮事件
form.on("submit(doSearch)", function (data) {
tableIns.reload({
where: data.field, // 提交的表单数据作为查询条件
where: data.field,
page: {
curr: 1 // 重置到第一页
curr: 1
}
});
return false; // 阻止表单默认提交行为
return false;
});
// 监听工具条事件
//监控工具条事件
table.on("toolbar(deptTable)", function (obj) {
switch (obj.event) {
case 'add': // 添加事件
case 'add':
openAddLayer();
break;
};
});
// 监听行工具条事件
//监控行工具条事件
table.on("tool(deptTable)", function (obj) {
var data = obj.data; // 获取当前行数据
//获取当前行数据
var data = obj.data;
switch (obj.event) {
case 'delete': // 删除事件
case 'delete':
deleteDept(data);
break;
case 'update': // 更新事件
case 'update':
updateDept(data);
break;
};
});
var mainIndex; // 弹出层索引
var url; // 请求URL
var mainIndex;
var url;
// 打开添加弹出层
//打开添加弹出层
function openAddLayer() {
mainIndex = layer.open({
type: 1, // 页面层类型
content: $("#addOrUpdateDiv"), // 内容区域选择器
area: ['800px', '500px'], // 弹出层尺寸
title: '', // 弹出层标题
success: function () {
$("#dataFrm")[0].reset(); // 重置表单
$("#pid").val(""); // 清空父节点值
url = "/dept/addDept"; // 设置请求URL为添加接口
$.get("/dept/loadDeptMaxOrderNum", function (res) {
$("#ordernum").val(res.value); // 初始化排序码
type:1,
content:$("#addOrUpdateDiv"),
area:['800px','500px'],
title:'',
success:function () {
$("#dataFrm")[0].reset();
//设置下拉树中父节点的值为空
$("#pid").val("");
url="/dept/addDept";
//初始化排序码
$.get("/dept/loadDeptMaxOrderNum",function (res) {
$("#ordernum").val(res.value);
});
selectTree.selectVal(""); // 清空下拉树的值
//设置下拉树的value值为空
selectTree.selectVal("");
}
});
}
// 打开修改弹出层
//打开修改弹出层
function updateDept(data) {
mainIndex = layer.open({
type: 1, // 页面层类型
content: $("#addOrUpdateDiv"), // 内容区域选择器
area: ['800px', '500px'], // 弹出层尺寸
title: '', // 弹出层标题
success: function () {
$("#dataFrm")[0].reset(); // 重置表单
$("#parentDept").removeClass("disabled"); // 启用父节点选择框
form.val("dataFrm", data); // 填充表单数据
if (data.pid != 0) { // 如果存在父节点,初始化下拉树
dtree.dataInit("deptTree", data.pid);
} else {
$("#parentDept").addClass("disabled"); // 禁用父节点选择框
type:1,
content:$("#addOrUpdateDiv"),
area:['800px','500px'],
title:'',
success:function () {
//清空原有的数据
$("#dataFrm")[0].reset();
$("#parentDept").removeClass("disabled");
//装载新的数据
form.val("dataFrm",data);
//选中之前的父级部门 nodeId=data.pid
if (data.pid!=0){
dtree.dataInit("deptTree",data.pid);
}else {
$("#parentDept").addClass("disabled");
}
dtree.selectVal("deptTree"); // 选中下拉树中的值
url = "/dept/updateDept"; // 设置请求URL为更新接口
dtree.selectVal("deptTree");
url="/dept/updateDept";
}
});
}
// 监听提交按钮事件
form.on("submit(doSubmit)", function (data) {
$.post(url, data.field, function (res) {
if (res.code == 200) { // 如果响应成功
tableIns.reload(); // 重新加载表格数据
selectTree.reload(); // 重新加载下拉树数据
window.parent.left.deptTree.reload(); // 重新加载左侧部门树数据
form.on("submit(doSubmit)",function (data) {
$.post(url,data.field,function (res) {
if (res.code==200){
tableIns.reload();
//重新加载添加弹出层的下拉树
selectTree.reload();
//重新加载左边的部门树
window.parent.left.deptTree.reload();
}
layer.msg(res.msg); // 显示响应消息
layer.close(mainIndex); // 关闭弹出层
layer.msg(res.msg);
layer.close(mainIndex);
});
return false; // 阻止表单默认提交行为
return false;
});
// 删除部门函数
/*$("#doSubmit").click(function () {
var data = $("#dataFrm").serialize();
$.post(url,data,function (res) {
if (res.code==200){
tableIns.reload();
//重新加载添加弹出层的下拉树
selectTree.reload();
//重新加载左边的部门树
window.parent.left.deptTree.reload();
}
layer.msg(res.msg);
layer.close(mainIndex);
});
});*/
//删除
function deleteDept(data) {
// 发送请求检查当前部门是否有子部门
$.post("/dept/checkDeptHasChildrenNode", {id: data.id}, function (result) {
// 如果存在子部门,则提示用户不能直接删除
if (result.value){
layer.msg("当前部门节点有子部门,请选择删除子部门!");
} else {
// 如果没有子部门,弹出确认框询问用户是否确定删除
$.post("/dept/checkDeptHasChildrenNode", {id: data.id}, function (resoult) {
if (resoult.value){
layer.msg("当前部门节点有子部门,请选择删除子部门!")
}else {
layer.confirm('' + data.name + '', {icon: 3, title: ''}, function (index) {
// 发送删除请求
$.post("/dept/deleteDept", {id: data.id}, function (res) {
// 如果删除成功,刷新表格和树形结构
$.post("/dept/deleteDept", {id: data.id},function (res) {
if (res.code == 200) {
tableIns.reload({
where:"",
});
// 刷新下拉树
//刷新下拉树
selectTree.reload();
// 刷新左边的部门树
//刷新左边的部门树
window.parent.left.deptTree.reload();
}
// 显示操作结果消息
layer.msg(res.msg);
});
// 关闭确认框
layer.close(index);
});
}
});
}
// 初始化下拉树
//初始化下拉树
var selectTree = dtree.renderSelect({
elem: "#deptTree", // 绑定元素
width: "100%", // 设置树的宽度为100%
dataStyle: "layuiStyle", // 使用layui风格的数据格式
dataFormat: "list", // 配置数据的风格为列表形式
response:{message:"msg",statusCode:0}, // 修改响应中返回数据的定义
url: "/dept/loadDeptManagerLeftTreeJson" // 使用URL加载数据可以与data同时存在)
elem: "#deptTree",
width: "100%", // 可以在这里指定树的宽度来填满div
dataStyle: "layuiStyle", //使用layui风格的数据格式
dataFormat: "list", //配置data的风格为list
response:{message:"msg",statusCode:0}, //修改response中返回数据的定义
url: "/dept/loadDeptManagerLeftTreeJson" // 使用url加载可与data加载同时存在)
});
// 监听树节点点击事件
dtree.on("node(deptTree)", function (obj) {
$("#pid").val(obj.param.nodeId); // 将选中的节点ID赋值给隐藏域
console.log(obj.param.nodeId); // 打印节点ID到控制台
});
//监听点击的方法
dtree.on("node(deptTree)",function (obj) {
$("#pid").val(obj.param.nodeId);
console.log(obj.param.nodeId);
})
});
// 给其它页面刷新当前页面数据表格的方法
//给其它页面刷新当前页面数据表格的方法
function reloadTable(id) {
tableIns.reload({
where:{
id:id // 根据ID过滤数据
id:id
},
page:{
curr:1 // 重置分页到第一页
curr:1
}
});
}

@ -56,129 +56,114 @@
<script type="text/javascript">
//获取当前登陆人
// 获取当前登录用户的用户名并存储在变量currentUserName中
var currentUserName = '[[${session.user.name}]]';
var currentUserName='[[${session.user.name}]]';
// 初始化一个空字符串用于存储格式化后的日期时间
//获取系统时间
var newDate = '';
// 调用函数getLangDate()来获取系统时间
getLangDate();
// 定义一个函数dateFilter用于在数值小于10时在前面补0
function dateFilter(date) {
if (date < 10) { return "0" + date; }
return date;
//值小于10时在前面补0
function dateFilter(date){
if(date < 10){return "0"+date;}
return date;
}
// 定义一个函数getLangDate用于获取当前系统时间并格式化输出
function getLangDate() {
var dateObj = new Date(); // 创建一个表示当前系统时间的Date对象
var year = dateObj.getFullYear(); // 获取当前年份
var month = dateObj.getMonth() + 1; // 获取当前月份注意月份从0开始所以需要+1
var date = dateObj.getDate(); // 获取当前日期
var day = dateObj.getDay(); // 获取当前星期值
var weeks = ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"];
var week = weeks[day]; // 根据星期值获取对应的星期字符串
var hour = dateObj.getHours(); // 获取当前小时
var minute = dateObj.getMinutes(); // 获取当前分钟
var second = dateObj.getSeconds(); // 获取当前秒数
var timeValue = "" + ((hour >= 12) ? (hour >= 18) ? " 晚上" : " 下午" : " 上午"); // 根据小时判断是上午、下午还是晚上
// 格式化日期和时间并赋值给newDate变量
newDate = dateFilter(year) + "年" + dateFilter(month) + "月" + dateFilter(date) + "日 " + " " + dateFilter(hour) + ":" + dateFilter(minute) + ":" + dateFilter(second);
// 将格式化后的日期时间显示在页面上
document.getElementById("nowTime").innerHTML = "亲爱的," + currentUserName + " " + timeValue + "好! 欢迎使用 仓库管理系统。当前时间为: " + newDate + " " + week;
// 每隔1秒调用一次getLangDate()函数,实现实时更新时间
setTimeout("getLangDate()", 1000);
function getLangDate(){
var dateObj = new Date(); //表示当前系统时间的Date对象
var year = dateObj.getFullYear(); //当前系统时间的完整年份值
var month = dateObj.getMonth()+1; //当前系统时间的月份值
var date = dateObj.getDate(); //当前系统时间的月份中的日
var day = dateObj.getDay(); //当前系统时间中的星期值
var weeks = ["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];
var week = weeks[day]; //根据星期值,从数组中获取对应的星期字符串
var hour = dateObj.getHours(); //当前系统时间的小时值
var minute = dateObj.getMinutes(); //当前系统时间的分钟值
var second = dateObj.getSeconds(); //当前系统时间的秒钟值
var timeValue = "" +((hour >= 12) ? (hour >= 18) ? " 晚上" : " 下午" : " 上午" ); //当前时间属于上午、晚上还是下午
newDate = dateFilter(year)+"年"+dateFilter(month)+"月"+dateFilter(date)+"日 "+" "+dateFilter(hour)+":"+dateFilter(minute)+":"+dateFilter(second);
document.getElementById("nowTime").innerHTML = "亲爱的,"+currentUserName+" "+timeValue+"好! 欢迎使用 仓库管理系统。当前时间为: "+newDate+" "+week;
setTimeout("getLangDate()",1000);
}
// 使用layui框架加载模块
layui.use(['form', 'element', 'layer', 'jquery'], function () {
var form = layui.form,
layer = parent.layer === undefined ? layui.layer : top.layer,
element = layui.element;
$ = layui.jquery;
// 设置上次登录时间(此处应该从接口获取,实际使用中请自行更换)
$(".loginTime").html(newDate.split("日")[0] + "日</br>" + newDate.split("日")[1]);
// 为面板中的链接添加鼠标悬停动画效果
$(".panel a").hover(function () {
$(this).find(".layui-anim").addClass("layui-anim-scaleSpring");
}, function () {
$(this).find(".layui-anim").removeClass("layui-anim-scaleSpring");
});
// 点击面板中的链接时调用parent.addTab()方法添加标签页
$(".panel a").click(function () {
parent.addTab($(this));
});
// 最新文章列表(此部分代码被注释掉了,可以根据需要启用)
/*$.get("/resources/json/newsList.json", function (data) {
var hotNewsHtml = '';
for (var i = 0; i < 5; i++) {
hotNewsHtml += '<tr>'
+ '<td align="left"><a href=";"> ' + data.data[i].newsName + '</a></td>'
+ '<td>' + data.data[i].newsTime.substring(0, 10) + '</td>'
+ '</tr>';
}
$(".hot_news").html(hotNewsHtml);
$(".userAll span").text(data.length);
});*/
// 加载公告信息并显示在页面上
$.get("/notice/loadAllNotice?page=1&limit=5", function (data) {
layui.use(['form','element','layer','jquery'],function(){
var form = layui.form,
layer = parent.layer === undefined ? layui.layer : top.layer,
element = layui.element;
$ = layui.jquery;
//上次登录时间【此处应该从接口获取,实际使用中请自行更换】
$(".loginTime").html(newDate.split("日")[0]+"日</br>"+newDate.split("日")[1]);
//icon动画
$(".panel a").hover(function(){
$(this).find(".layui-anim").addClass("layui-anim-scaleSpring");
},function(){
$(this).find(".layui-anim").removeClass("layui-anim-scaleSpring");
})
$(".panel a").click(function(){
parent.addTab($(this));
})
//最新文章列表
/*$.get("/resources/json/newsList.json",function(data){
var hotNewsHtml = '';
for(var i=0;i<5;i++){
hotNewsHtml += '<tr>'
+'<td align="left"><a href="javascript:;"> '+data.data[i].newsName+'</a></td>'
+'<td>'+data.data[i].newsTime.substring(0,10)+'</td>'
+'</tr>';
}
$(".hot_news").html(hotNewsHtml);
$(".userAll span").text(data.length);
})*/
$.get("/notice/loadAllNotice?page=1&limit=5",function(data){
var hotNewsHtml = '';
if (data.count > 0) {
if (data.count <= 5) {
for (var i = 0; i < data.count; i++) {
hotNewsHtml += '<tr onclick="viewNews(' + data.data[i].id + ')">'
+ '<td align="left"><a href=";"> ' + data.data[i].title + '</a></td>'
+ '<td>' + data.data[i].createtime.substring(0, 10) + '</td>'
+ '</tr>';
if(data.count>0){
if(data.count<=5){
for(var i=0;i<data.count;i++){
hotNewsHtml += '<tr ondblclick="viewNews('+data.data[i].id+')">'
+'<td align="left"><a href="javascript:;"> '+data.data[i].title+'</a></td>'
+'<td>'+data.data[i].createtime.substring(0,10)+'</td>'
+'</tr>';
}
} else {
for (var i = 0; i < 5; i++) {
hotNewsHtml += '<tr onclick="viewNews(' + data.data[i].id + ')">'
+ '<td align="left"><a href=";"> ' + data.data[i].title + '</a></td>'
+ '<td>' + data.data[i].createtime.substring(0, 10) + '</td>'
+ '</tr>';
}
if (data.count>5){
for(var i=0;i<5;i++){
hotNewsHtml += '<tr ondblclick="viewNews('+data.data[i].id+')">'
+'<td align="left"><a href="javascript:;"> '+data.data[i].title+'</a></td>'
+'<td>'+data.data[i].createtime.substring(0,10)+'</td>'
+'</tr>';
}
}
} else {
hotNewsHtml += '<h3 style="text-align: center"></h3>';
}else {
hotNewsHtml+='<h3 style="text-align: center"></h3>';
}
$(".hot_news").html(hotNewsHtml);
$(".userAll span").text(data.length);
});
// 加载预警商品信息并显示在页面上
$.get("/goods/loadAllWarningGoods?page=1&limit=5", function (data) {
var warningGoodsHtml = '';
if (data.count > 0) {
if (data.count <= 5) {
for (var i = 0; i < data.count; i++) {
warningGoodsHtml += '<tr>' + '<td>' + data.data[i].goodsname + '</td>' + '<td style="width: 100px;">' + data.data[i].number + '</td>' + '</tr>';
$.get("/goods/loadAllWarningGoods?page=1&limit=5",function (data) {
var warningGoodsHtml='';
if(data.count>0){
if(data.count<=5){
for(var i=0;i<data.count;i++){
warningGoodsHtml += '<tr>'+'<td>'+data.data[i].goodsname+'</td>'+'<td style="width: 100px;">'+data.data[i].number+'</td>'+'</tr>';
}
}
} else {
warningGoodsHtml += '<h3 style="text-align: center"></h3>';
}else {
warningGoodsHtml+='<h3 style="text-align: center"></h3>';
}
$(".warningGoods").html(warningGoodsHtml);
$(".userAll span").text(data.length);
});
});
// 定义一个函数viewNews用于查看公告详情
function viewNews(id) {
$.get("/notice/loadNoticeById", { id: id }, function (news) {
function viewNews(id){
$.get("/notice/loadNoticeById",{id:id},function(news){
layer.open({
type: 1,
title: '',
content: $("#desk_viewNewsDiv"),
area: ['800px', '550px'],
success: function (index) {
type:1,
title:'',
content:$("#desk_viewNewsDiv"),
area:['800px','550px'],
success:function(index){
$("#view_title").html(news.data.title);
$("#view_opername").html(news.data.opername);
$("#view_createtime").html(news.data.createtime);
@ -188,7 +173,6 @@
});
}
</script>
</body>
</html>

@ -101,127 +101,159 @@
<script type="text/javascript" src="/resources/js/cache.js"></script>
<script type="text/javascript">
var $, tab, dataStr, layer;
layui.config({
base: "/resources/js/"
}).extend({
"bodyTab": "bodyTab"
})
layui.use(['bodyTab', 'form', 'element', 'layer', 'jquery'], function () {
var form = layui.form,
element = layui.element;
var $,tab,dataStr,layer;
layui.config({
base : "/resources/js/"
}).extend({
"bodyTab" : "bodyTab"
})
layui.use(['bodyTab','form','element','layer','jquery'],function(){
var form = layui.form,
element = layui.element;
$ = layui.$;
layer = parent.layer === undefined ? layui.layer : top.layer;
layer = parent.layer === undefined ? layui.layer : top.layer;
tab = layui.bodyTab({
openTabNum: "50", // 最大可打开窗口数量
url: "/menu/loadIndexLeftMenuJson" // 获取菜单json地址
openTabNum : "50", //最大可打开窗口数量
url : "/menu/loadIndexLeftMenuJson" //获取菜单json地址
});
// 通过顶部菜单获取左侧二三级菜单,注:此处只做演示之用,实际开发中通过接口传参的方式获取导航数据
function getData(json) {
$.getJSON(tab.tabConfig.url, function (data) {
//通过顶部菜单获取左侧二三级菜单 注:此处只做演示之用,实际开发中通过接口传参的方式获取导航数据
function getData(json){
$.getJSON(tab.tabConfig.url,function(data){
dataStr = data.data;
// 重新渲染左侧菜单
//重新渲染左侧菜单
tab.render();
})
})
}
//页面加载时判断左侧菜单是否显示
//通过顶部菜单获取左侧菜单
$(".topLevelMenus li,.mobileTopLevelMenus dd").click(function(){
if($(this).parents(".mobileTopLevelMenus").length != "0"){
$(".topLevelMenus li").eq($(this).index()).addClass("layui-this").siblings().removeClass("layui-this");
}else{
$(".mobileTopLevelMenus dd").eq($(this).index()).addClass("layui-this").siblings().removeClass("layui-this");
}
$(".layui-layout-admin").removeClass("showMenu");
$("body").addClass("site-mobile");
getData($(this).data("menu"));
//渲染顶部窗口
tab.tabMove();
})
// 页面加载时判断左侧菜单是否显示
// 通过顶部菜单获取左侧菜单
$(".topLevelMenus li,.mobileTopLevelMenus dd").click(function () {
if ($(this).parents(".mobileTopLevelMenus").length != "0") {
$(".topLevelMenus li").eq($(this).index()).addClass("layui-this").siblings().removeClass("layui-this");
} else {
$(".mobileTopLevelMenus dd").eq($(this).index()).addClass("layui-this").siblings().removeClass("layui-this");
}
$(".layui-layout-admin").removeClass("showMenu");
$("body").addClass("site-mobile");
getData($(this).data("menu"));
// 渲染顶部窗口
tab.tabMove();
})
//隐藏左侧导航
$(".hideMenu").click(function(){
if($(".topLevelMenus li.layui-this a").data("url")){
layer.msg("此栏目状态下左侧菜单不可展开"); //主要为了避免左侧显示的内容与顶部菜单不匹配
return false;
}
$(".layui-layout-admin").toggleClass("showMenu");
//渲染顶部窗口
tab.tabMove();
})
// 隐藏左侧导航
$(".hideMenu").click(function () {
if ($(".topLevelMenus li.layui-this a").data("url")) {
layer.msg("此栏目状态下左侧菜单不可展开"); // 主要为了避免左侧显示的内容与顶部菜单不匹配
return false;
}
$(".layui-layout-admin").toggleClass("showMenu");
// 渲染顶部窗口
tab.tabMove();
})
//通过顶部菜单获取左侧二三级菜单 注:此处只做演示之用,实际开发中通过接口传参的方式获取导航数据
getData("contentManagement");
// 通过顶部菜单获取左侧二三级菜单,注:此处只做演示之用,实际开发中通过接口传参的方式获取导航数据
getData("contentManagement");
//手机设备的简单适配
$('.site-tree-mobile').on('click', function(){
$('body').addClass('site-mobile');
});
$('.site-mobile-shade').on('click', function(){
$('body').removeClass('site-mobile');
});
// 手机设备的简单适配
$('.site-tree-mobile').on('click', function () {
$('body').addClass('site-mobile');
});
$('.site-mobile-shade').on('click', function () {
$('body').removeClass('site-mobile');
});
// 添加新窗口
$("body").on("click",".layui-nav .layui-nav-item a:not('.mobileTopLevelMenus .layui-nav-item a')",function(){
//如果不存在子级
if($(this).siblings().length == 0){
addTab($(this));
$('body').removeClass('site-mobile'); //移动端点击菜单关闭菜单层
}
$(this).parent("li").siblings().removeClass("layui-nav-itemed");
})
// 添加新窗口
$("body").on("click", ".layui-nav .layui-nav-item a:not('.mobileTopLevelMenus .layui-nav-item a')", function () {
// 如果不存在子级
if ($(this).siblings().length == 0) {
addTab($(this));
$('body').removeClass('site-mobile'); // 移动端点击菜单关闭菜单层
}
$(this).parent("li").siblings().removeClass("layui-nav-itemed");
})
//清除缓存
$(".clearCache").click(function(){
window.sessionStorage.clear();
window.localStorage.clear();
var index = layer.msg('',{icon: 16,time:false,shade:0.8});
setTimeout(function(){
layer.close(index);
layer.msg("缓存清除成功!");
},1000);
})
// 清除缓存
$(".clearCache").click(function () {
window.sessionStorage.clear();
layer.msg('', { icon: 16, time: false, shade: 0.8 });
setTimeout(function () {
layer.closeAll();
layer.msg("缓存清除成功!");
}, 1000);
})
//刷新后还原打开的窗口
if(cacheStr == "true") {
if (window.sessionStorage.getItem("menu") != null) {
menu = JSON.parse(window.sessionStorage.getItem("menu"));
curmenu = window.sessionStorage.getItem("curmenu");
var openTitle = '';
for (var i = 0; i < menu.length; i++) {
openTitle = '';
if (menu[i].icon) {
if (menu[i].icon.split("-")[0] == 'icon') {
openTitle += '<i class="seraph ' + menu[i].icon + '"></i>';
} else {
openTitle += '<i class="layui-icon">' + menu[i].icon + '</i>';
}
}
openTitle += '<cite>' + menu[i].title + '</cite>';
openTitle += '<i class="layui-icon layui-unselect layui-tab-close" data-id="' + menu[i].layId + '">&#x1006;</i>';
element.tabAdd("bodyTab", {
title: openTitle,
content: "<iframe src='" + menu[i].href + "' data-id='" + menu[i].layId + "'></frame>",
id: menu[i].layId
})
//定位到刷新前的窗口
if (curmenu != "undefined") {
if (curmenu == '' || curmenu == "null") { //定位到后台首页
element.tabChange("bodyTab", '');
} else if (JSON.parse(curmenu).title == menu[i].title) { //定位到刷新前的页面
element.tabChange("bodyTab", menu[i].layId);
}
} else {
element.tabChange("bodyTab", menu[menu.length - 1].layId);
}
}
//渲染顶部窗口
tab.tabMove();
}
}else{
window.sessionStorage.removeItem("menu");
window.sessionStorage.removeItem("curmenu");
}
})
// 刷新后还原打开的窗口
if (window.sessionStorage.getItem("menu")) {
menu = JSON.parse(window.sessionStorage.getItem("menu"));
for (var i = 0; i < menu.length; i++) {
openTitle = '';
if (menu[i].icon) {
if (menu[i].icon.split("-")[0] == 'icon') {
openTitle += '<i class="seraph ' + menu[i].icon + '"></i>';
} else {
openTitle += '<i class="layui-icon">' + menu[i].icon + '</i>';
}
}
openTitle += '<cite>' + menu[i].title + '</cite>';
openTitle += '<i class="layui-icon layui-unselect layui-tab-close" data-id="' + menu[i].layId + '">&#x1006;</i>';
element.tabAdd("bodyTab", {
title: openTitle,
content: "<iframe data-id='" + menu[i].layId + "'></frame>",
id: menu[i].layId
})
// 定位到刷新前的窗口
if (curmenu != "undefined") {
if (curmenu == '' || curmenu == "null") { // 定位到后台首页
element.tabChange("bodyTab", '');
} else if (JSON.parse(curmenu).title == menu[i].title) { // 定位到刷新前的页面
element.tabChange("bodyTab", menu[i].layId);
}
} else {
element.tabChange("bodyTab", menu[menu.length - 1].layId);
}
}
// 渲染顶部窗口
tab.tabMove();
} else {
window.sessionStorage.setItem("menu", JSON.stringify(menu));
// 默认加载欢迎页
tab.welcomePage();
}
//打开新窗口
function addTab(_this){
tab.tabAdd(_this);
}
//捐赠弹窗
function donation(){
layer.tab({
area : ['260px', '367px'],
tab : [{
title : "微信",
content : "<div style='padding:30px;overflow:hidden;background:#d2d0d0;'><img src='images/wechat.jpg'></div>"
},{
title : "支付宝",
content : "<div style='padding:30px;overflow:hidden;background:#d2d0d0;'><img src='images/alipay.jpg'></div>"
}]
})
}
//图片管理弹窗
function showImg(){
$.getJSON('json/images.json', function(json){
var res = json;
layer.photos({
photos: res,
anim: 5
});
});
}
</script>
</body>
</html>

@ -42,56 +42,51 @@
<script type="text/javascript" src="/resources/js/cache.js"></script>
<script type="text/javascript">
// 使用layui模块包括form、layer和jquery
layui.use(['form','layer','jquery'],function(){
var form = layui.form, // 获取form模块
layer = parent.layer === undefined ? layui.layer : top.layer, // 获取layer模块优先从父窗口获取否则从顶层窗口获取
$ = layui.jquery; // 获取jQuery模块
layui.use(['form','layer','jquery'],function(){
var form = layui.form,
layer = parent.layer === undefined ? layui.layer : top.layer
$ = layui.jquery;
// 监听登录表单的提交事件
form.on("submit(login)",function(data){
var btn = $(this); // 获取当前点击的按钮元素
// 设置登录按钮为不可点击状态,并显示“登录中...”文本
btn.text("登录中...").attr("disabled","disabled").addClass("layui-disabled");
// 发送POST请求到服务器进行登录验证
$.post("/login/login", data.field, function(rs){
// 恢复登录按钮的可点击状态
btn.text("登录").attr("disabled",false).removeClass("layui-disabled");
// 显示服务器返回的消息
layer.msg(rs.msg);
if(rs.code != 200){
// 如果登录失败,重新加载验证码图片
layer.msg(rs.msg);
$.get("/login/getCode",function (code) {
$("#img").attr("src","/login/getCode");
});
} else {
// 如果登录成功,跳转到系统首页
layer.msg(rs.msg);
location.href="/sys/index";
}
});
return false; // 阻止表单默认提交行为
});
// 表单输入效果处理
$(".loginBody .input-item").click(function(e){
e.stopPropagation(); // 阻止事件冒泡
$(this).addClass("layui-input-focus").find(".layui-input").focus(); // 添加焦点样式并聚焦输入框
});
$(".loginBody .layui-form-item .layui-input").focus(function(){
$(this).parent().addClass("layui-input-focus"); // 输入框获得焦点时,添加焦点样式
});
$(".loginBody .layui-form-item .layui-input").blur(function(){
$(this).parent().removeClass("layui-input-focus"); // 输入框失去焦点时,移除焦点样式
if($(this).val() != ''){
$(this).parent().addClass("layui-input-active"); // 输入框有值时,添加激活样式
} else {
$(this).parent().removeClass("layui-input-active"); // 输入框无值时,移除激活样式
}
});
});
//登录按钮
form.on("submit(login)",function(data){
var btn = $(this);
//设置登录按钮 为不可点击
btn.text("登录中...").attr("disabled","disabled").addClass("layui-disabled");
$.post("/login/login",data.field,function(rs){
//设置登录按钮 恢复可点击 在前端防止 重复点击
btn.text("登录").attr("disabled",false).removeClass("layui-disabled");
layer.msg(rs.msg);
if(rs.code != 200){
layer.msg(rs.msg);
$.get("/login/getCode",function (code) {
$("#img").attr("src","/login/getCode");
})
}else{
//跳转到templates/system/index/index.html页面
layer.msg(rs.msg);
location.href="/sys/index";
}
});
return false;
})
//表单输入效果
$(".loginBody .input-item").click(function(e){
e.stopPropagation();
$(this).addClass("layui-input-focus").find(".layui-input").focus();
})
$(".loginBody .layui-form-item .layui-input").focus(function(){
$(this).parent().addClass("layui-input-focus");
})
$(".loginBody .layui-form-item .layui-input").blur(function(){
$(this).parent().removeClass("layui-input-focus");
if($(this).val() != ''){
$(this).parent().addClass("layui-input-active");
}else{
$(this).parent().removeClass("layui-input-active");
}
})
})
</script>
</body>

@ -85,123 +85,131 @@
<script type="text/javascript">
layui.use(['jquery', 'form', 'layer', 'laydate', 'table'], function () {
var $ = layui.jquery; // 引入jQuery模块
var form = layui.form; // 引入表单模块
var layer = layui.layer; // 引入弹出层模块
var laydate = layui.laydate; // 引入日期选择器模块
var table = layui.table; // 引入表格模块
// 初始化时间选择器,用于选择开始时间和结束时间
var $ = layui.jquery;
var form = layui.form;
var layer = layui.layer;
var laydate = layui.laydate;
var table = layui.table;
//初始化时间选择器
laydate.render({
elem: "#startTime", // 绑定元素ID为startTime的DOM元素
type: "datetime" // 设置类型为日期时间选择器
elem: "#startTime",
type: "datetime"
});
laydate.render({
elem: "#endTime", // 绑定元素ID为endTime的DOM元素
type: "datetime" // 设置类型为日期时间选择器
elem: "#endTime",
type: "datetime"
});
// 初始化表格
//初始化表格
var tableIns = table.render({
elem: "#loginfoTable", // 绑定表格元素ID为loginfoTable的DOM元素
title: "日志数据表格", // 表格标题
url: "/loginfo/loadAllLoginfo", // 数据接口地址
toolbar: "#loginfoToolBar", // 工具栏模板的选择器
page: true, // 开启分页
height: "full-190", // 设置表格高度,减去头部和底部的高度
cols: [[ // 定义表头
{type: 'checkbox', fixed: 'left'}, // 添加复选框列,固定在左侧
{field: 'id', title: 'ID', align: 'center'}, // ID列居中显示
{field: 'loginname', title: '', align: 'center'}, // 登录用户名列,居中显示
{field: 'loginip', title: 'IP', align: 'center'}, // 登录IP列居中显示
{field: 'logintime', title: '', align: 'center'}, // 登录时间列,居中显示
{fixed: 'right', title: '', toolbar: '#loginfoRowBar', align: 'center'} // 操作列,固定在右侧,使用行工具条模板
]],
elem: "#loginfoTable",
title: "日志数据表格",
url: "/loginfo/loadAllLoginfo",
toolbar: "#loginfoToolBar",
page: true,
height: "full-190",
cols: [ [
{type: 'checkbox', fixed: 'left'},
{field: 'id', title: 'ID', align: 'center'},
{field: 'loginname', title: '', align: 'center'},
{field: 'loginip', title: 'IP', align: 'center'},
{field: 'logintime', title: '', align: 'center'},
{fixed: 'right', title: '', toolbar: '#loginfoRowBar', align: 'center'}
] ],
done:function (data, curr, count) {
// 如果不是第一页且当前页没有数据时,自动跳转到上一页
if(data.data.length==0 && curr!=1){
//不是第一页时如果当前返回的数据为0那么就返回上一页
if(data.data.length==0&&curr!=1){
tableIns.reload({
page:{
curr:curr-1 // 设置当前页为上一页
curr:curr-1
}
})
}
}
});
// 监听模糊查询按钮事件
//监控模糊查询按钮事件
form.on("submit(doSearch)", function (data) {
tableIns.reload({
where: data.field, // 将表单数据作为查询条件
where: data.field,
page: {
curr: 1 // 重置到第一页
curr: 1
}
});
return false; // 阻止表单默认提交行为
return false;
});
// 监听工具条事件
//监控工具条事件
table.on("toolbar(loginfoTable)", function (obj) {
switch (obj.event) {
case 'batchDelete': // 如果点击批量删除按钮
batchDelete(); // 调用批量删除函数
break;
case 'batchDelete':
batchDelete();
break;
};
});
// 监听行工具条事件
//监控行工具条事件
table.on("tool(loginfoTable)",function (obj) {
var data = obj.data; // 获取当前行的数据
//获取当前行数据
var data = obj.data;
switch (obj.event){
case 'delete': // 如果点击删除按钮
deleteInfo(data); // 调用删除函数,传入当前行数据
break;
case 'delete':
deleteInfo(data);
break;
};
});
// 删除单条记录的函数
//删除
function deleteInfo(data) {
layer.confirm('',{icon: 3,title:''},function (index) {
$.post("/loginfo/deleteLoginfo",{id:data.id},function (res) {
if (res.code==200){
tableIns.reload({where:""}); // 重新加载表格数据
tableIns.reload({
where:"",
});
}
layer.msg(res.msg); // 显示操作结果消息
layer.msg(res.msg);
});
layer.close(index); // 关闭确认框
layer.close(index);
});
}
// 批量删除记录的函数
//批量删除
function batchDelete() {
var checkStatus = table.checkStatus('loginfoTable'); // 获取选中行的状态
var dataLength = checkStatus.data.length; // 获取选中行的数量
//得到选中行
var checkStatus = table.checkStatus('loginfoTable');
var dataLength = checkStatus.data.length;
if (dataLength>0){
layer.confirm('',{icon: 3,title: ''},function (index) {
var data = checkStatus.data; // 获取选中行的数据
var ids = ""; // 初始化ID字符串
//获取选中行数据
var data = checkStatus.data;
var ids = "";
$.each(data,function (index, item) {
if (index==0){
ids+="ids="+item.id; // 拼接第一个ID参数
ids+="ids="+item.id;
}else {
ids+="&ids="+item.id; // 拼接后续ID参数
ids+="&ids="+item.id;
}
});
$.post("/loginfo/batchDeleteLoginfo",ids,function (res) {
if (res.code==200){
tableIns.reload({where:""}); // 重新加载表格数据
//重新刷新表格
tableIns.reload({
where:"",
});
}
layer.msg(res.msg); // 显示操作结果消息
layer.msg(res.msg);
});
layer.close(index); // 关闭确认框
layer.close(index);
});
}else {
layer.msg("请选中操作行"); // 如果没有选中任何行,则提示用户
layer.msg("请选中操作行")
}
}
});
});
</script>
</body>

@ -24,34 +24,30 @@
<script type="text/javascript" src="/resources/layui/layui.js"></script>
<script type="text/javascript" src="/resources/layui_ext/dtree/dtree.js"></script>
<script type="text/javascript">
// 定义全局变量menuTree用于存储树的实例
var menuTree;
// 使用layui.extend扩展模块路径
layui.extend({
dtree: '/resources/layui_ext/dtree/dtree' // {/}的意思即代表采用自有路径,即不跟随 base 路径
}).use(['dtree','layer','jquery'], function(){
// 引入dtree、layer和jquery模块
var dtree = layui.dtree;
var layer = layui.layer;
var $ = layui.jquery;
// 初始化树
menuTree = dtree.render({
elem: "#menuTree", // 绑定树的容器元素ID
dataStyle: "layuiStyle", // 使用layui风格的数据格式
dataFormat: "list", // 配置data的风格为list
response:{message:"msg",statusCode:0}, // 修改response中返回数据的定义
elem: "#menuTree",
dataStyle: "layuiStyle", //使用layui风格的数据格式
dataFormat: "list", //配置data的风格为list
response:{message:"msg",statusCode:0}, //修改response中返回数据的定义
url: "/menu/loadMenuManagerLeftTreeJson" // 使用url加载可与data加载同时存在
});
// 绑定节点点击事件
// 绑定节点点击
dtree.on("node('menuTree')" ,function(obj){
// 将树节点的id传到reloadTable方法中
//layer.msg(JSON.stringify(obj.param));
//将树节点的id传到reloadTable方法中
window.parent.right.reloadTable(obj.param.nodeId);
});
});
</script>
</body>
</html>

@ -141,10 +141,9 @@
<script type="text/javascript">
// 定义全局变量tableIns用于存储表格的实例
//提升数据表格的作用域因为底下还有一个reloadTable方法
var tableIns;
// 使用layui.extend扩展模块路径
layui.extend({
dtree: '/resources/layui_ext/dtree/dtree'
}).use(['jquery', 'form', 'layer', 'laydate', 'table', 'layedit','dtree'], function () {
@ -154,34 +153,34 @@
var table = layui.table;
var dtree = layui.dtree;
// 初始化表格并加载数据
//初始化表格 加载数据
tableIns = table.render({
elem: "#menuTable", // 绑定表格的容器元素ID
title: "菜单数据表格", // 表格标题
url: "/menu/loadAllMenu", // 数据接口地址
toolbar: "#menuToolBar", // 工具栏模板选择器
page: true, // 开启分页
height: "full-130", // 设置表格高度
cols: [ [ // 定义表头
elem: "#menuTable",
title: "菜单数据表格",
url: "/menu/loadAllMenu",
toolbar: "#menuToolBar",
page: true,
height: "full-130",
cols: [ [
{field: 'id', title: 'ID', align: 'center',width:'80'},
{field: 'pid', title: 'ID', align: 'center',width:'100'},
{field: 'title', title: '', align: 'center',width:'150'},
{field: 'href', title: '', align: 'center',width:'200'},
{field: 'icon', title: '', align: 'center',width:'90',templet:function (d) {
return '<font class="layui-icon">'+d.icon+'</font>';
}},
return '<font class="layui-icon">'+d.icon+'</font>';
}},
{field: 'available', title: '', align: 'center',width:'100',templet:function (d) {
return d.available==1?'<font color="blue"></font>':'<font color="red"></font>';
}},
return d.available==1?'<font color="blue"></font>':'<font color="red"></font>';
}},
{field: 'open', title: '', align: 'center',width:'100',templet:function (d) {
return d.open==1?'<font color="blue"></font>':'<font color="red"></font>';
}},
return d.open==1?'<font color="blue"></font>':'<font color="red"></font>';
}},
{field: 'ordernum', title: '', align: 'center',width:'80'},
{field: 'target', title: 'TARGET', align: 'center',width:'80',hide:true},
{fixed: 'right', title: '', toolbar: '#menuRowBar', align: 'center',width:'180'}
] ],
done: function (data, curr, count) {
// 如果不是第一页且当前页没有数据,则返回上一页
//不是第一页时如果当前返回的数据为0那么就返回上一页
if (data.data.length == 0 && curr != 1) {
tableIns.reload({
page: {
@ -189,64 +188,93 @@
}
})
}
/*//当是第一页时如果当前返回的数据为0并且当前为第一页 给一个空的查询条件并给curr赋初值为1
if (data.data.length==0 && curr==1){
tableIns.reload({
where: "",
page:{
curr:1
}
})
}*/
}
});
// 监听模糊查询按钮事件
//监控模糊查询按钮事件
form.on("submit(doSearch)", function (data) {
tableIns.reload({
where: data.field, // 设置查询条件
where: data.field,
page: {
curr: 1 // 重置到第一页
curr: 1
}
});
return false; // 阻止表单默认提交行为
return false;
});
// 监听工具条事件
//监控工具条事件
table.on("toolbar(menuTable)", function (obj) {
switch (obj.event) {
case 'add':
openAddLayer(); // 打开添加弹出层
openAddLayer();
break;
};
});
//监控行工具条事件
table.on("tool(menuTable)", function (obj) {
//获取当前行数据
var data = obj.data;
switch (obj.event) {
case 'delete':
deleteMenu(data);
break;
case 'update':
updateMenu(data);
break;
};
});
var mainIndex; // 弹出层索引
var url; // 请求URL
var mainIndex;
var url;
// 打开添加弹出层
//打开添加弹出层
function openAddLayer() {
mainIndex = layer.open({
type:1, // 页面层类型
content:$("#addOrUpdateDiv"), // 内容区域选择器
area:['800px','450px'], // 宽高设置
title:'', // 标题
type:1,
content:$("#addOrUpdateDiv"),
area:['800px','450px'],
title:'',
success:function () {
$("#dataFrm")[0].reset(); // 清空表单数据
$("#pid").val(""); // 清空父节点值
url="/menu/addMenu"; // 设置请求URL为添加菜单接口
$("#dataFrm")[0].reset();
//设置下拉树中父节点的值为空
$("#pid").val("");
url="/menu/addMenu";
//初始化排序码
$.get("/menu/loadMenuMaxOrderNum",function (res) {
$("#ordernum").val(res.value); // 初始化排序码
$("#ordernum").val(res.value);
});
selectTree.selectVal(""); // 清空下拉树选中值
//设置下拉树的value值为空
selectTree.selectVal("");
}
});
}
// 打开修改弹出层
//打开修改弹出层
function updateMenu(data) {
mainIndex = layer.open({
type:1, // 页面层类型
content:$("#addOrUpdateDiv"), // 内容区域选择器
area:['800px','450px'], // 宽高设置
title:'', // 标题
type:1,
content:$("#addOrUpdateDiv"),
area:['800px','450px'],
title:'',
success:function () {
$("#dataFrm")[0].reset(); // 清空表单数据
form.val("dataFrm",data); // 填充表单数据
dtree.dataInit("menuTree",data.pid); // 初始化下拉树父节点值
dtree.selectVal("menuTree"); // 选中下拉树节点
url="/menu/updateMenu"; // 设置请求URL为更新菜单接口
//清空原有的数据
$("#dataFrm")[0].reset();
//装载新的数据
form.val("dataFrm",data);
//选中之前的父级菜单 nodeId=data.pid
dtree.dataInit("menuTree",data.pid);
dtree.selectVal("menuTree");
url="/menu/updateMenu";
}
});
}
@ -254,75 +282,85 @@
form.on("submit(doSubmit)",function (data) {
$.post(url,data.field,function (res) {
if (res.code==200){
tableIns.reload(); // 重新加载表格数据
selectTree.reload(); // 重新加载下拉树数据
window.parent.left.menuTree.reload(); // 重新加载左侧菜单树数据
tableIns.reload();
//重新加载添加弹出层的下拉树
selectTree.reload();
//重新加载左边的菜单树
window.parent.left.menuTree.reload();
}
layer.msg(res.msg); // 显示响应消息
layer.close(mainIndex); // 关闭弹出层
layer.msg(res.msg);
layer.close(mainIndex);
});
return false; // 阻止表单默认提交行为
return false;
});
// 删除菜单项的函数
/*$("#doSubmit").click(function () {
var data = $("#dataFrm").serialize();
$.post(url,data,function (res) {
if (res.code==200){
tableIns.reload();
//重新加载添加弹出层的下拉树
selectTree.reload();
//重新加载左边的菜单树
window.parent.left.menuTree.reload();
}
layer.msg(res.msg);
layer.close(mainIndex);
});
});*/
//删除
function deleteMenu(data) {
// 发送请求检查当前菜单节点是否有子节点
$.post("/menu/checkMenuHasChildrenNode", {id: data.id}, function (result) {
// 如果存在子节点,则提示用户不能直接删除
if (result.value){
layer.msg("当前菜单节点有子菜单,请选择删除子菜单!");
} else {
// 如果没有子节点,弹出确认框询问用户是否确定删除
$.post("/menu/checkMenuHasChildrenNode", {id: data.id}, function (resoult) {
if (resoult.value){
layer.msg("当前菜单节点有子菜单,请选择删除子菜单!")
}else {
layer.confirm('' + data.title + '', {icon: 3, title: ''}, function (index) {
// 发送删除请求
$.post("/menu/deleteMenu", {id: data.id}, function (res) {
// 如果删除成功,重新加载表格和树形结构
$.post("/menu/deleteMenu", {id: data.id},function (res) {
if (res.code == 200) {
tableIns.reload({
where:"",
});
// 刷新下拉树
//刷新下拉树
selectTree.reload();
// 刷新左边的菜单树
//刷新左边的菜单树
window.parent.left.menuTree.reload();
}
// 显示操作结果消息
layer.msg(res.msg);
});
// 关闭确认框
layer.close(index);
});
}
});
}
// 初始化下拉树组件
//初始化下拉树
var selectTree = dtree.renderSelect({
elem: "#menuTree", // 绑定的元素ID
width: "100%", // 设置树的宽度为100%以填满容器
dataStyle: "layuiStyle", // 使用layui风格的数据格式
dataFormat: "list", // 配置数据的风格为列表形式
response:{message:"msg",statusCode:0}, // 修改响应中返回数据的定义
url: "/menu/loadMenuManagerLeftTreeJson" // 通过URL加载数据可以与data同时存在)
elem: "#menuTree",
width: "100%", // 可以在这里指定树的宽度来填满div
dataStyle: "layuiStyle", //使用layui风格的数据格式
dataFormat: "list", //配置data的风格为list
response:{message:"msg",statusCode:0}, //修改response中返回数据的定义
url: "/menu/loadMenuManagerLeftTreeJson" // 使用url加载可与data加载同时存在)
});
// 监听树节点点击事件
dtree.on("node(menuTree)", function (obj) {
$("#pid").val(obj.param.nodeId); // 将选中的节点ID赋值给隐藏域
console.log(obj.param.nodeId); // 在控制台打印节点ID
});
//监听点击的方法
dtree.on("node(menuTree)",function (obj) {
$("#pid").val(obj.param.nodeId);
console.log(obj.param.nodeId);
})
});
// 给其它页面刷新当前页面数据表格的方法
//给其它页面刷新当前页面数据表格的方法
function reloadTable(id) {
tableIns.reload({
where:{
id:id // 根据提供的ID过滤数据
id:id
},
page:{
curr:1 // 重置到第一页
curr:1
}
});
}

@ -131,14 +131,13 @@
<script type="text/javascript">
layui.use(['jquery', 'form', 'layer', 'laydate', 'table','layedit'], function () {
var $ = layui.jquery; // 引入jQuery模块
var form = layui.form; // 引入表单模块
var layer = layui.layer; // 引入弹出层模块
var laydate = layui.laydate; // 引入日期选择器模块
var table = layui.table; // 引入表格模块
var layedit = layui.layedit; // 引入富文本编辑器模块
// 初始化时间选择器,用于选择公告的开始和结束时间
var $ = layui.jquery;
var form = layui.form;
var layer = layui.layer;
var laydate = layui.laydate;
var table = layui.table;
var layedit = layui.layedit;
//初始化时间选择器
laydate.render({
elem: "#startTime",
type: "datetime"
@ -148,24 +147,24 @@
type: "datetime"
});
// 初始化表格并加载数据
//初始化表格 加载数据
var tableIns = table.render({
elem: "#noticeTable", // 绑定元素
title: "公告数据表格", // 表格标题
url: "/notice/loadAllNotice", // 数据接口
toolbar: "#noticeToolBar", // 工具栏模板的选择器
page: true, // 开启分页
height: "full-190", // 设置表格高度
cols: [ [ // 定义表头
{type: 'checkbox', fixed: 'left'}, // 复选框列
{field: 'id', title: 'ID', align: 'center'}, // ID列
{field: 'title', title: '', align: 'center'}, // 公告标题列
{field: 'opername', title: '', align: 'center'}, // 操作人列
{field: 'createtime', title: '', align: 'center'}, // 创建时间列
{fixed: 'right', title: '', toolbar: '#noticeRowBar', align: 'center'} // 操作列
elem: "#noticeTable",
title: "公告数据表格",
url: "/notice/loadAllNotice",
toolbar: "#noticeToolBar",
page: true,
height: "full-190",
cols: [ [
{type: 'checkbox', fixed: 'left'},
{field: 'id', title: 'ID', align: 'center'},
{field: 'title', title: '', align: 'center'},
{field: 'opername', title: '', align: 'center'},
{field: 'createtime', title: '', align: 'center'},
{fixed: 'right', title: '', toolbar: '#noticeRowBar', align: 'center'}
] ],
done:function (data, curr, count) { // 表格渲染完成后的回调函数
if(data.data.length==0&&curr!=1){ // 如果当前页没有数据且不是第一页,则返回上一页
done:function (data, curr, count) {
if(data.data.length==0&&curr!=1){ //不是第一页时如果当前返回的数据为0那么就返回上一页
tableIns.reload({
page:{
curr:curr-1
@ -175,153 +174,167 @@
}
});
// 初始化富文本编辑
//初始化富文本编译
var editIndex = layedit.build('content');
// 监听模糊查询按钮事件
//监控模糊查询按钮事件
form.on("submit(doSearch)", function (data) {
tableIns.reload({
where: data.field, // 将表单数据作为查询条件
where: data.field,
page: {
curr: 1 // 重置到第一页
curr: 1
}
});
return false; // 阻止表单默认提交行为
return false;
});
// 监听工具条事件
//监控工具条事件
table.on("toolbar(noticeTable)", function (obj) {
switch (obj.event) {
case 'batchDelete': // 批量删除事件
case 'batchDelete':
batchDelete();
break;
case 'add': // 添加事件
case 'add':
openAddLayer();
break;
};
});
// 监听行工具条事件
//监控行工具条事件
table.on("tool(noticeTable)",function (obj) {
var data = obj.data; // 获取当前行数据
//获取当前行数据
var data = obj.data;
switch (obj.event){
case 'delete': // 删除事件
case 'delete':
deleteInfo(data);
break;
case 'update': // 修改事件
case 'update':
updateNotice(data);
break;
case 'show': // 查看事件
case 'show':
showNotice(data);
break;
};
});
var mainIndex; // 弹出层的索引
var url; // 请求的URL地址
var mainIndex;
var url;
// 打开添加公告的弹出层
//打开添加的弹出层
function openAddLayer() {
mainIndex = layer.open({
type:1, // 页面层类型
content:$("#addOrUpdateDiv"), // 内容区域选择器
area:['800px','550px'], // 弹出层大小
title:'', // 弹出层标题
success:function () { // 成功打开后的回调函数
$("#dataFrm")[0].reset(); // 重置表单
layedit.setContent(editIndex,""); // 清空富文本编辑器内容
url="/notice/addNotice"; // 设置请求URL为添加公告的接口
type:1,
content:$("#addOrUpdateDiv"),
area:['800px','550px'],
title:'',
success:function () {
$("#dataFrm")[0].reset();
//重置富文本编译器的内容为空
layedit.setContent(editIndex,"");
url="/notice/addNotice";
}
});
};
// 打开修改公告的弹出层
//打开修改的弹出层
function updateNotice(data) {
//console.log(data);
mainIndex = layer.open({
type:1, // 页面层类型
content:$("#addOrUpdateDiv"), // 内容区域选择器
area:['800px','550px'], // 弹出层大小
title:'', // 弹出层标题
success:function () { // 成功打开后的回调函数
$("#dataFrm")[0].reset(); // 重置表单
form.val("dataFrm",data); // 填充表单数据
layedit.setContent(editIndex,data.content); // 设置富文本编辑器内容
url="/notice/updateNotice"; // 设置请求URL为修改公告的接口
type:1,
content:$("#addOrUpdateDiv"),
area:['800px','550px'],
title:'',
success:function () {
$("#dataFrm")[0].reset();
//装载新的数据
form.val("dataFrm",data);
layedit.setContent(editIndex,data.content);
url="/notice/updateNotice";
}
});
};
// 提交表单数据
$("#doSubmit").click(function () {
layedit.sync(editIndex); // 同步富文本编辑器内容到textarea中
var data = $("#dataFrm").serialize(); // 序列化表单数据
$.post(url,data,function (res) { // 发送POST请求
if (res.code==200){ // 如果操作成功
tableIns.reload(); // 重新加载表格数据
//alert(url);
//同步富文本和textarea里面的内容
layedit.sync(editIndex);
var data = $("#dataFrm").serialize();
$.post(url,data,function (res) {
if (res.code==200){
tableIns.reload();
}
layer.msg(res.msg); // 显示操作结果消息
layer.close(mainIndex); // 关闭弹出层
//提示操作是否成功,且关闭弹出层
layer.msg(res.msg);
layer.close(mainIndex);
});
});
// 打开查看公告的弹出层
//打开查看的弹出层
function showNotice(data) {
mainIndex = layer.open({
type:1, // 页面层类型
content:$("#showNoticeDiv"), // 内容区域选择器
area:['800px','550px'], // 弹出层大小
title:'', // 弹出层标题
success:function () { // 成功打开后的回调函数
$("#notice_title").html(data.title); // 显示公告标题
$("#notice_opername").html(data.opername); // 显示操作人姓名
$("#notice_createtime").html(data.createtime); // 显示创建时间
$("#notice_content").html(data.content); // 显示公告内容
type:1,
content:$("#showNoticeDiv"),
area:['800px','550px'],
title:'',
success:function () {
$("#notice_title").html(data.title);
$("#notice_opername").html(data.opername);
$("#notice_createtime").html(data.createtime);
$("#notice_content").html(data.content);
}
});
}
// 删除公告信息
//删除
function deleteInfo(data) {
layer.confirm(''+data.title+'',{icon: 3,title:''},function (index) { // 确认删除对话框
$.post("/notice/deleteNotice",{id:data.id},function (res) { // 发送删除请求
if (res.code==200){ // 如果删除成功
tableIns.reload({where:""}); // 重新加载表格数据,重置查询条件
layer.confirm(''+data.title+'',{icon: 3,title:''},function (index) {
$.post("/notice/deleteNotice",{id:data.id},function (res) {
if (res.code==200){
tableIns.reload({
//删除成功加载表格时,要重置查询条件
where:"",
});
}
layer.msg(res.msg); // 显示操作结果消息
layer.msg(res.msg);
});
layer.close(index); // 关闭确认对话框
layer.close(index);
});
}
// 批量删除公告信息
//批量删除
function batchDelete() {
var checkStatus = table.checkStatus('noticeTable'); // 获取选中行状态
var dataLength = checkStatus.data.length; // 获取选中行数量
if(dataLength>0){ // 如果选中了至少一行
layer.confirm('',{icon: 3,title:''},function (index) { // 确认删除对话框
var data = checkStatus.data; // 获取选中行数据
var ids = ""; // 初始化ID字符串
for (var i=0;i<dataLength;i++){ // 遍历选中行数据
if (i==0){ // 如果是第一行数据
ids="ids="+data[i].id; // 拼接第一个ID参数
}else { // 如果不是第一行数据
ids=ids+"&ids="+data[i].id; // 拼接后续ID参数
//得到选中行
var checkStatus = table.checkStatus('noticeTable');
var dataLength = checkStatus.data.length;
if (dataLength>0){
layer.confirm('',{icon: 3,title: ''},function (index) {
//获取选中行数据
var data = checkStatus.data;
var ids = "";
$.each(data,function (index, item) {
if (index==0){
ids+="ids="+item.id;
}else {
ids+="&ids="+item.id;
}
}
$.post("/notice/batchDeleteNotice",ids,function (res) { // 发送批量删除请求
if (res.code==200){ // 如果批量删除成功
tableIns.reload({where:""}); // 重新加载表格数据,重置查询条件
});
$.post("/notice/batchDeleteNotice",ids,function (res) {
if (res.code==200){
//重新刷新表格
tableIns.reload({
where:"",
});
}
layer.msg(res.msg); // 显示操作结果消息
layer.msg(res.msg);
});
layer.close(index); // 关闭确认对话框
layer.close(index);
});
}else{ // 如果没有选中任何行
layer.msg("请选中操作行"); // 显示提示消息
}else {
layer.msg("请选中操作行")
}
}
});
});
</script>

@ -24,34 +24,30 @@
<script type="text/javascript" src="/resources/layui/layui.js"></script>
<script type="text/javascript" src="/resources/layui_ext/dtree/dtree.js"></script>
<script type="text/javascript">
// 定义全局变量menuTree用于存储树的实例
var menuTree;
// 使用layui.extend扩展模块路径
layui.extend({
dtree: '/resources/layui_ext/dtree/dtree' // {/}的意思即代表采用自有路径,即不跟随 base 路径
}).use(['dtree','layer','jquery'], function(){
// 引入dtree、layer和jquery模块
var dtree = layui.dtree;
var layer = layui.layer;
var $ = layui.jquery;
// 初始化树
menuTree = dtree.render({
elem: "#menuTree", // 绑定树的容器元素ID
dataStyle: "layuiStyle", // 使用layui风格的数据格式
dataFormat: "list", // 配置data的风格为list
response:{message:"msg",statusCode:0}, // 修改response中返回数据的定义
elem: "#menuTree",
dataStyle: "layuiStyle", //使用layui风格的数据格式
dataFormat: "list", //配置data的风格为list
response:{message:"msg",statusCode:0}, //修改response中返回数据的定义
url: "/permission/loadPermissionManagerLeftTreeJson" // 使用url加载可与data加载同时存在
});
// 绑定节点点击事件
// 绑定节点点击
dtree.on("node('menuTree')" ,function(obj){
// 将树节点的id传到reloadTable方法中
//layer.msg(JSON.stringify(obj.param));
//将树节点的id传到reloadTable方法中
window.parent.right.reloadTable(obj.param.nodeId);
});
});
</script>
</body>
</html>

@ -135,10 +135,10 @@
<script type="text/javascript">
//提升数据表格的作用域因为底下还有一个reloadTable方法
var tableIns; // 定义全局变量tableIns用于存储表格实例
var tableIns;
layui.extend({
dtree: '/resources/layui_ext/dtree/dtree' // 扩展模块路径
dtree: '/resources/layui_ext/dtree/dtree'
}).use(['jquery', 'form', 'layer', 'laydate', 'table', 'layedit','dtree'], function () {
var $ = layui.jquery;
var form = layui.form;
@ -146,30 +146,30 @@
var table = layui.table;
var dtree = layui.dtree;
// 初始化表格并加载数据
//初始化表格 加载数据
tableIns = table.render({
elem: "#permissionTable", // 绑定表格的容器元素ID
title: "权限数据表格", // 表格标题
url: "/permission/loadAllPermission", // 数据接口地址
toolbar: "#permissionToolBar", // 工具栏模板选择器
page: true, // 开启分页
height: "full-130", // 设置表格高度
cols: [ [ // 列配置
elem: "#permissionTable",
title: "权限数据表格",
url: "/permission/loadAllPermission",
toolbar: "#permissionToolBar",
page: true,
height: "full-130",
cols: [ [
{field: 'id', title: 'ID', align: 'center',width:'80'},
{field: 'pid', title: 'ID', align: 'center',width:'100'},
{field: 'title', title: '', align: 'center',width:'150'},
{field: 'percode', title: '', align: 'center',width:'230'},
{field: 'available', title: '', align: 'center',width:'100',templet:function (d) {
return d.available==1?'<font color="blue"></font>':'<font color="red"></font>';
}},
return d.available==1?'<font color="blue"></font>':'<font color="red"></font>';
}},
{field: 'open', title: '', align: 'center',width:'100',templet:function (d) {
return d.open==1?'<font color="blue"></font>':'<font color="red"></font>';
}},
return d.open==1?'<font color="blue"></font>':'<font color="red"></font>';
}},
{field: 'ordernum', title: '', align: 'center',width:'100'},
{fixed: 'right', title: '', toolbar: '#permissionRowBar', align: 'center',width:'220'}
] ],
done: function (data, curr, count) {
// 如果不是第一页且当前返回的数据为空,则返回上一页
//不是第一页时如果当前返回的数据为0那么就返回上一页
if (data.data.length == 0 && curr != 1) {
tableIns.reload({
page: {
@ -180,129 +180,143 @@
}
});
// 监控模糊查询按钮事件
//监控模糊查询按钮事件
form.on("submit(doSearch)", function (data) {
tableIns.reload({
where: data.field, // 提交表单中的搜索条件
where: data.field,
page: {
curr: 1 // 重置到第一页
curr: 1
}
});
return false; // 阻止表单默认提交行为
return false;
});
// 监控工具条事件
//监控工具条事件
table.on("toolbar(permissionTable)", function (obj) {
switch (obj.event) {
case 'add':
openAddLayer(); // 打开添加弹出层
openAddLayer();
break;
};
});
// 监控行工具条事件
//监控行工具条事件
table.on("tool(permissionTable)", function (obj) {
var data = obj.data; // 获取当前行数据
//获取当前行数据
var data = obj.data;
switch (obj.event) {
case 'delete':
deletePermission(data); // 删除权限
deletePermission(data);
break;
case 'update':
updatePermission(data); // 更新权限
updatePermission(data);
break;
};
});
var mainIndex; // 弹出层索引
var url; // URL变量
var mainIndex;
var url;
// 打开添加弹出层
//打开添加弹出层
function openAddLayer() {
mainIndex = layer.open({
type:1, // 页面层类型
content:$("#addOrUpdateDiv"), // 内容区域选择器
area:['670px','400px'], // 宽高设置
title:'', // 标题
type:1,
content:$("#addOrUpdateDiv"),
area:['670px','400px'],
title:'',
success:function () {
$("#dataFrm")[0].reset(); // 清空表单数据
$("#pid").val(""); // 设置下拉树中父节点的值为空
url="/permission/addPermission"; // 设置提交URL为添加权限接口
$("#dataFrm")[0].reset();
//设置下拉树中父节点的值为空
$("#pid").val("");
url="/permission/addPermission";
//初始化排序码
$.get("/permission/loadPermissionMaxOrderNum",function (res) {
$("#ordernum").val(res.value); // 初始化排序码
$("#ordernum").val(res.value);
});
selectTree.selectVal(""); // 设置下拉树的value值为空
//设置下拉树的value值为空
selectTree.selectVal("");
}
});
}
// 打开修改的弹出层
//打开修改的弹出层
function updatePermission(data) {
mainIndex = layer.open({
type:1, // 页面层类型
content:$("#addOrUpdateDiv"), // 内容区域选择器
area:['670px','400px'], // 宽高设置
title:'', // 标题
type:1,
content:$("#addOrUpdateDiv"),
area:['670px','400px'],
title:'',
success:function () {
$("#dataFrm")[0].reset(); // 清空表单数据
form.val("dataFrm",data); // 装载新的数据到表单中
dtree.dataInit("permissionTree",data.pid); // 选中之前的父级权限 nodeId=data.pid
dtree.selectVal("permissionTree"); // 选中下拉树的值
url="/permission/updatePermission"; // 设置提交URL为更新权限接口
//清空原有的数据
$("#dataFrm")[0].reset();
//装载新的数据
form.val("dataFrm",data);
//选中之前的父级权限 nodeId=data.pid
dtree.dataInit("permissionTree",data.pid);
dtree.selectVal("permissionTree");
url="/permission/updatePermission";
}
});
}
// 提交表单事件监听
form.on("submit(doSubmit)",function (data) {
$.post(url,data.field,function (res) {
if (res.code==200){
tableIns.reload(); // 重新加载表格数据
tableIns.reload();
}
layer.msg(res.msg); // 显示响应消息
layer.close(mainIndex); // 关闭弹出层
layer.msg(res.msg);
layer.close(mainIndex);
});
return false; // 阻止表单默认提交行为
return false;
});
// 删除权限方法
//删除
function deletePermission(data) {
layer.confirm('' + data.title + '', {icon: 3, title: ''}, function (index) {
$.post("/permission/deletePermission", {id: data.id},function (res) {
if (res.code == 200) {
tableIns.reload({where:""}); // 重新加载表格数据
tableIns.reload({
where:"",
});
}
layer.msg(res.msg); // 显示响应消息
layer.msg(res.msg);
});
layer.close(index); // 关闭确认框
layer.close(index);
});
}
// 初始化下拉树
//初始化下拉树
var selectTree = dtree.renderSelect({
elem: "#permissionTree", // 绑定下拉树的容器元素ID
elem: "#permissionTree",
width: "100%", // 可以在这里指定树的宽度来填满div
dataStyle: "layuiStyle", // 使用layui风格的数据格式
dataFormat: "list", // 配置data的风格为list
response:{message:"msg",statusCode:0}, // 修改response中返回数据的定义
dataStyle: "layuiStyle", //使用layui风格的数据格式
dataFormat: "list", //配置data的风格为list
response:{message:"msg",statusCode:0}, //修改response中返回数据的定义
url: "/permission/loadPermissionManagerLeftTreeJson" // 使用url加载可与data加载同时存在
});
// 监听点击的方法
//监听点击的方法
dtree.on("node(permissionTree)",function (obj) {
$("#pid").val(obj.param.nodeId); // 将选中的节点ID赋值给隐藏域pid
console.log(obj.param.nodeId); // 打印选中的节点ID到控制台
$("#pid").val(obj.param.nodeId);
console.log(obj.param.nodeId);
})
});
// 给其它页面刷新当前页面数据表格的方法
//给其它页面刷新当前页面数据表格的方法
function reloadTable(id) {
tableIns.reload({
where:{id:id}, // 根据ID过滤数据
page:{curr:1} // 重置到第一页
where:{
id:id
},
page:{
curr:1
}
});
}
</script>
</body>

@ -140,194 +140,203 @@
<script type="text/javascript" src="/resources/layui/layui.js"></script>
<script type="text/javascript">
// 引入layui的扩展模块并加载所需的组件
layui.extend({
dtree: '/resources/layui_ext/dtree/dtree' // 引入dtree模块
}).use(['jquery', 'form', 'layer', 'laydate', 'table', 'dtree'], function () {
var $ = layui.jquery; // 获取jQuery对象
var form = layui.form; // 获取表单模块
var layer = layui.layer; // 获取弹出层模块
var laydate = layui.laydate; // 获取日期选择器模块
var table = layui.table; // 获取表格模块
var dtree = layui.dtree; // 获取树形结构模块
// 初始化时间选择器
dtree: '/resources/layui_ext/dtree/dtree'
}).use(['jquery', 'form', 'layer', 'laydate', 'table','dtree'], function () {
var $ = layui.jquery;
var form = layui.form;
var layer = layui.layer;
var laydate = layui.laydate;
var table = layui.table;
var dtree = layui.dtree;
//初始化时间选择器
laydate.render({
elem: "#startTime", // 绑定元素ID
type: "datetime" // 设置类型为日期时间
elem: "#startTime",
type: "datetime"
});
laydate.render({
elem: "#endTime", // 绑定元素ID
type: "datetime" // 设置类型为日期时间
elem: "#endTime",
type: "datetime"
});
// 初始化表格
//初始化表格
var tableIns = table.render({
elem: "#roleTable", // 绑定元素ID
title: "角色数据表格", // 表格标题
url: "/role/loadAllRole", // 数据接口地址
toolbar: "#roleToolBar", // 工具栏模板选择器
page: true, // 开启分页
height: "full-190", // 设置表格高度
cols: [[ // 定义表头
{field: 'id', title: 'ID', align: 'center'}, // ID列
{field: 'name', title: '', align: 'center'}, // 角色名称列
{field: 'remark', title: '', align: 'center'}, // 角色备注列
{field: 'available', title: '', align: 'center', templet: function (d) {
return d.available == 1 ? '<font color="blue"></font>' : '<font color="red"></font>';
}}, // 是否可用列
{field: 'createtime', title: '', align: 'center'}, // 创建时间列
{fixed: 'right', title: '', toolbar: '#roleRowBar', align: 'center', width: 280} // 操作列
]],
done: function (data, curr, count) {
// 如果不是第一页且当前返回的数据为空,则返回上一页
if (data.data.length == 0 && curr != 1) {
elem: "#roleTable",
title: "角色数据表格",
url: "/role/loadAllRole",
toolbar: "#roleToolBar",
page: true,
height: "full-190",
cols: [ [
{field: 'id', title: 'ID', align: 'center'},
{field: 'name', title: '', align: 'center'},
{field: 'remark', title: '', align: 'center'},
{field: 'available', title: '', align: 'center',templet:function (d) {
return d.available==1?'<font color="blue"></font>':'<font color="red"></font>';
}},
{field: 'createtime', title: '', align: 'center'},
{fixed: 'right', title: '', toolbar: '#roleRowBar', align: 'center',width:280}
] ],
done:function (data, curr, count) {
//不是第一页时如果当前返回的数据为0那么就返回上一页
if(data.data.length==0&&curr!=1){
tableIns.reload({
page: {
curr: curr - 1
page:{
curr:curr-1
}
})
}
}
});
// 点击重置按钮时,重置表单的值
//点击重置按钮时,重置表单的值
$("#resetRole").click(function () {
$("#searchFrm")[0].reset(); // 重置表单
$("#searchFrm")[0].reset();
});
// 监控模糊查询按钮事件
//监控模糊查询按钮事件
form.on("submit(doSearch)", function (data) {
var params = $("#searchFrm").serialize(); // 序列化表单数据
var params = $("#searchFrm").serialize();
tableIns.reload({
url: "/role/loadAllRole?" + params, // 拼接URL参数
// where: data.field,
url:"/role/loadAllRole?"+params,
page: {
curr: 1 // 从第一页开始显示
curr: 1
}
});
return false; // 阻止表单默认提交行为
return false;
});
// 监控工具条事件
//监控工具条事件
table.on("toolbar(roleTable)", function (obj) {
switch (obj.event) {
case 'add':
openAddLayer(); // 打开添加弹出层
break;
openAddLayer();
break;
};
});
// 监控行工具条事件
table.on("tool(roleTable)", function (obj) {
var data = obj.data; // 获取当前行数据
switch (obj.event) {
//监控行工具条事件
table.on("tool(roleTable)",function (obj) {
//获取当前行数据
var data = obj.data;
switch (obj.event){
case 'update':
updateRole(data); // 打开修改弹出层
updateRole(data);
break;
case 'delete':
deleteRole(data); // 删除角色
break;
deleteRole(data);
break;
case 'selectPermission':
selectPermission(data); // 分配权限
break;
selectPermission(data);
break;
};
});
var mainIndex; // 弹出层索引
var url; // URL变量
var mainIndex;
var url;
// 打开添加弹出层
//打开添加弹出层
function openAddLayer() {
mainIndex = layer.open({
type: 1, // 页面层类型
content: $("#addOrUpdateDiv"), // 内容区域选择器
area: ['800px', '350px'], // 宽高设置
title: '', // 标题
success: function () {
$("#dataFrm")[0].reset(); // 清空表单数据
url = "/role/addRole"; // 设置提交URL
type:1,
content:$("#addOrUpdateDiv"),
area:['800px','350px'],
title:'',
success:function () {
$("#dataFrm")[0].reset();
url="/role/addRole";
}
});
}
// 打开修改弹出层
//打开修改弹出层
function updateRole(data) {
mainIndex = layer.open({
type: 1, // 页面层类型
content: $("#addOrUpdateDiv"), // 内容区域选择器
area: ['800px', '350px'], // 宽高设置
title: '', // 标题
success: function () {
$("#dataFrm")[0].reset(); // 清空表单数据
form.val("dataFrm", data); // 装载新的数据到表单中
url = "/role/updateRole"; // 设置提交URL
type:1,
content:$("#addOrUpdateDiv"),
area:['800px','350px'],
title:'',
success:function () {
//清空原有的数据
$("#dataFrm")[0].reset();
//装载新的数据
form.val("dataFrm",data);
url="/role/updateRole";
}
});
}
// 提交按钮事件
form.on("submit(doSubmit)", function (data) {
$.post(url, data.field, function (res) {
if (res.code == 200) {
tableIns.reload(); // 重新加载表格数据
//提交按钮事件
form.on("submit(doSubmit)",function (data) {
$.post(url,data.field,function (res) {
if (res.code==200){
tableIns.reload();
}
layer.msg(res.msg); // 显示响应消息
layer.close(mainIndex); // 关闭弹出层
layer.msg(res.msg);
layer.close(mainIndex);
});
return false; // 阻止表单默认提交行为
return false;
});
// 删除角色函数
//删除
function deleteRole(data) {
layer.confirm('' + data.name + '', {icon: 3, title: ''}, function (index) {
$.post("/role/deleteRole", {id: data.id}, function (res) {
if (res.code == 200) {
tableIns.reload({where: ""}); // 重新加载表格数据
layer.confirm(''+data.name+'',{icon: 3,title:''},function (index) {
$.post("/role/deleteRole",{id:data.id},function (res) {
if (res.code==200){
tableIns.reload({
where:"",
});
}
layer.msg(res.msg); // 显示响应消息
layer.msg(res.msg);
});
layer.close(index); // 关闭确认框
layer.close(index);
});
}
// 打开分配权限弹出层函数
//打开分配权限弹出层
function selectPermission(data) {
mainIndex = layer.open({
type: 1, // 页面层类型
content: $("#selectRolePermissionDiv"), // 内容区域选择器
area: ['400px', '580px'], // 宽高设置
title: '' + data.name + '', // 标题
btn: ['<span class="layui-icon">&#xe658;</span>', ''], // 按钮配置
btnAlign: 'c', // 按钮对齐方式
yes: function (index, layero) {
var permissionData = dtree.getCheckbarNodesParam("permissionTree"); // 获取选中的节点数据
var params = "rid=" + data.id; // 初始化参数字符串
console.log(params); // 打印参数字符串到控制台(调试用)
$.each(permissionData, function (index, item) {
params += "&nodeId=" + item.nodeId; // 拼接节点ID到参数字符串中
type:1,
content:$("#selectRolePermissionDiv"),
area:['400px','580px'],
title:''+data.name+'',
btn: ['<span class=layui-icon>&#xe605;</span>','<span class=layui-icon>&#x1006;</span>'],
btnAlign:'c',
yes: function(index, layero){
var permissionData = dtree.getCheckbarNodesParam("permissionTree");
var params = "rid="+data.id;
console.log(params);
$.each(permissionData,function (index, item) {
params+="&ids="+item.nodeId;
});
$.post("/role/saveRolePermission", params, function (res) {
layer.msg(res.msg); // 显示响应消息
$.post("/role/saveRolePermission",params,function (res) {
layer.msg(res.msg);
});
layer.close(mainIndex); // 关闭弹出层
layer.close(mainIndex);
},
btn2: function (index, layero) {
// 关闭弹出层(取消按钮)
btn2: function(index, layero){
//关闭弹出层
},
success: function () {
success:function () {
//根据角色ID请求权限和菜单tree的json数据
dtree.render({
elem: "#permissionTree", // 树形结构绑定的元素选择器
url: "/role/initPermissionByRoleId?roleId=" + data.id, // 根据角色ID请求权限数据接口地址
dataformat: "layuiStyle", // 使用layUI风格的数据格式
checkbarType: "all", // 全选复选框类型
response: {message: "msg", statusCode: 0}, // 修改response中返回数据的定义
checkbarNodes: [], // 默认选中的节点数组(此处为空)
elem:"#permissionTree",
url:"/role/initPermissionByRoleId?roleId="+data.id,
//使用layUI风格的数据格式
dataStyle:"layuiStyle",
//配置data的风格为list
dataFormat:"list",
//修改response中返回数据的定义
response:{message:"msg",statusCode:0},
checkbar:true,
checkbarType:"all"
});
}
});
}
});
});
</script>

@ -52,42 +52,31 @@
<script type="text/javascript" src="/resources/page/user/user.js"></script>
<script type="text/javascript">
// 使用layui模块包括jquery、form和layer
layui.use(['jquery', 'form', 'layer'], function () {
// 获取layui的jquery模块
layui.use(['jquery','form','layer'],function () {
var $ = layui.jquery;
// 获取layui的form模块
var form = layui.form;
// 获取layui的layer模块
var layer = layui.layer;
// 监听表单提交事件当触发changePwd时执行回调函数
form.on("submit(changePwd)", function () {
// 获取用户名输入框的值
var name = $("#name").val();
// 获取旧密码输入框的值
var oldPassword = $("#oldPassword").val();
// 获取新密码第一个输入框的值
var newPwdOne = $("#newPwdOne").val();
// 获取新密码第二个输入框的值
var newPwdTwo = $("#newPwdTwo").val();
// 弹出确认对话框,询问用户是否确定修改密码
layer.confirm('' + name + '', {icon: 3, title: ''}, function (index) {
// 发送POST请求到服务器尝试修改密码
$.post('/user/changePassword', {oldPassword: oldPassword, newPwdOne: newPwdOne, newPwdTwo: newPwdTwo}, function (res) {
// 显示服务器返回的消息
form.on("submit(changePwd)",function () {
var name = $("#name").val();
var oldPassword = $("#oldPassword").val();
var newPwdOne = $("#newPwdOne").val();
var newPwdTwo = $("#newPwdTwo").val();
layer.confirm('' + name + '', {icon: 3, title: ''}, function (index) {
$.post('/user/changePassword',{oldPassword:oldPassword,newPwdOne:newPwdOne,newPwdTwo:newPwdTwo},function (res) {
layer.msg(res.msg);
});
// 关闭确认对话框
layer.close(index);
});
// 阻止表单默认提交行为
return false;
});
return false;
});
});
});
</script>
</body>

@ -126,62 +126,63 @@
<script type="text/javascript">
layui.use(['jquery', 'upload', 'form'], function () {
layui.use(['jquery','upload','form'],function () {
var $ = layui.jquery;
var upload = layui.upload;
var form = layui.form;
// 获取当前用户的登录
//获得当前用户的登陆
var loginname = $("#loginname");
$.get('/user/getNowUser', function (res) {
// 设置表单中的值
$.get('/user/getNowUser',function (res) {
var name = $("#name");
name.val(res.name); // 设置用户名
name.val(res.name);
var id = $(".id");
id.val(res.id); // 设置用户ID
id.val(res.id);
var loginname = $("#loginname");
loginname.val(res.loginname); // 设置登录名
loginname.val(res.loginname);
var remark = $("#remark");
remark.val(res.remark); // 设置备注信息
remark.val(res.remark);
var address = $("#address");
address.val(res.address); // 设置地址
address.val(res.address);
// 显示用户头像
var imgpath = res.imgpath;
$('#userFace').attr('src', '/file/showImageByPath?path=' + imgpath);
$('#userFace').attr('src','/file/showImageByPath?path='+imgpath);
});
// 上传头像功能
//上传头像
upload.render({
elem: '.userFaceBtn', // 绑定元素
url: '/file/uploadImage', // 上传接口
acceptMime: 'image/*', // 允许上传的文件类型
field: 'mf', // 文件字段名
method: "post", // 请求方式
done: function (res, index, upload) {
var path = res.path; // 获取返回的图片路径
$('#userFace').attr('src', '/file/showImageByPath?path=' + path); // 更新页面上的头像图片
$('.userFace').css("background", "#fff"); // 修改背景颜色
$("#imgpath").val(path); // 给隐藏域赋值,用于提交表单时携带图片路径
elem: '.userFaceBtn',
url: '/file/uploadImage',
acceptMime:'image/*',
field:'mf',
method : "post",
done: function(res, index, upload){
var path=res.path;
$('#userFace').attr('src','/file/showImageByPath?path='+path);
$('.userFace').css("background","#fff");
//给隐藏域赋值
$("#imgpath").val(path);
}
});
// 提交个人资料表单
form.on("submit(changeUser)", function (data) {
var index = layer.msg('', { icon: 16, time: false, shade: 0.8 }); // 显示加载提示
//提交个人资料
form.on("submit(changeUser)",function(data){
var index = layer.msg('',{icon: 16,time:false,shade:0.8});
$.post("/user/updateUserInfo", data.field, function (res) {
layer.msg(res.msg); // 显示服务器返回的消息
layer.msg(res.msg);
});
setTimeout(function () {
layer.close(index); // 关闭加载提示
layer.msg("提交成功!"); // 显示提交成功消息
}, 2000);
return false; // 阻止表单跳转。如果需要表单跳转,去掉这段即可。
});
setTimeout(function(){
layer.close(index);
layer.msg("提交成功!");
},2000);
return false; //阻止表单跳转。如果需要表单跳转,去掉这段即可。
})
});
</script>
</body>

@ -222,10 +222,10 @@
<script type="text/javascript">
//提升数据表格的作用域因为底下还有一个reloadTable方法
var tableIns; // 定义表格实例变量
var tableIns;
layui.extend({
dtree: '/resources/layui_ext/dtree/dtree' // 扩展模块引入dtree树形组件
dtree: '/resources/layui_ext/dtree/dtree'
}).use(['jquery', 'form', 'layer', 'laydate', 'table', 'layedit', 'dtree','laydate'], function () {
var $ = layui.jquery;
var form = layui.form;
@ -234,13 +234,13 @@
var dtree = layui.dtree;
var laydate = layui.laydate;
// 初始化时间选择器
//初始化时间选择器
laydate.render({
elem: "#hiredate",
type: "datetime"
});
// 初始化表格并加载数据
//初始化表格 加载数据
tableIns = table.render({
elem: "#userTable",
title: "部门数据表格",
@ -248,7 +248,7 @@
toolbar: "#userToolBar",
page: true,
height: "full-180",
cols: [[
cols: [ [
{field: 'id', title: 'ID', align: 'center', width: '50'},
{field: 'name', title: '', align: 'center', width: '130'},
{field: 'loginname', title: '', align: 'center', width: '130'},
@ -257,26 +257,24 @@
{field: 'remark', title: '', align: 'center', width: '120'},
{field: 'address', title: '', align: 'center', width: '100'},
{field: 'hiredate', title: '', align: 'center', width: '160'},
{field: 'imgpath', title: '', align: 'center', width: '160', templet:function(d){
return '<img width=40 height=40 src=/file/showImageByPath?path='+d.imgpath+ ' />';
}},
{
field: 'imgpath', title: '', align: 'center', width: '160', templet: function (d) {
return '<img width=40 height=40 src=/file/showImageByPath?path=' + d.imgpath + ' />';
}
},
{
field: 'sex', title: '', align: 'center', width: '100', templet: function (d) {
return d.sex == 1 ? '<font color="blue"></font>' : '<font color="red"></font>';
}
field: 'sex', title: '', align: 'center', width: '100', templet: function (d) {
return d.sex == 1 ? '<font color="blue"></font>' : '<font color="red"></font>';
}
},
{
field: 'available', title: '', align: 'center', width: '100', templet: function (d) {
return d.available == 1 ? '<font color="blue"></font>' : '<font color="red"></font>';
}
return d.available == 1 ? '<font color="blue"></font>' : '<font color="red"></font>';
}
},
{field: 'ordernum', title: '', align: 'center', width: '80'},
{fixed: 'right', title: '', toolbar: '#userRowBar', align: 'center', width: '330'}
]],
] ],
done: function (data, curr, count) {
// 如果不是第一页且当前返回的数据为空,则返回上一页
//不是第一页时如果当前返回的数据为0那么就返回上一页
if (data.data.length == 0 && curr != 1) {
tableIns.reload({
page: {
@ -287,7 +285,7 @@
}
});
// 监控模糊查询按钮事件
//监控模糊查询按钮事件
form.on("submit(doSearch)", function (data) {
tableIns.reload({
where: data.field,
@ -298,40 +296,41 @@
return false;
});
// 监控工具条事件
//监控工具条事件
table.on("toolbar(userTable)", function (obj) {
switch (obj.event) {
case 'add':
openAddLayer(); // 打开添加弹出层
openAddLayer();
break;
}
;
});
// 监控行工具条事件
//监控行工具条事件
table.on("tool(userTable)", function (obj) {
var data = obj.data; // 获取当前行数据
//获取当前行数据
var data = obj.data;
switch (obj.event) {
case 'delete':
deleteUser(data); // 删除用户
deleteUser(data);
break;
case 'update':
updateUser(data); // 更新用户信息
updateUser(data);
break;
case 'resetPwd':
resetPwd(data); // 重置密码
resetPwd(data);
break;
case 'selectRole':
selectRole(data); // 选择角色
selectRole(data);
break;
}
;
});
var mainIndex; // 主窗口索引
var url; // URL变量用于存储提交的URL地址
var mainIndex;
var url;
// 打开添加弹出层函数
//打开添加弹出层
function openAddLayer() {
mainIndex = layer.open({
type: 1,
@ -339,20 +338,23 @@
area: ['800px', '550px'],
title: '',
success: function () {
$("#dataFrm")[0].reset(); // 清空表单数据
$("#deptid").val(""); // 设置下拉树中父节点的值为空
url = "/user/addUser"; // 设置提交的URL地址为添加用户地址
$.get("/user/loadUserMaxOrderNum", function (res) { // 初始化排序码
$("#dataFrm")[0].reset();
//设置下拉树中父节点的值为空
$("#deptid").val("");
url = "/user/addUser";
//初始化排序码
$.get("/user/loadUserMaxOrderNum", function (res) {
$("#ordernum").val(res.value);
});
var html = "<option value='0'>请选择直属领导</option>"; // 重新渲染直属领导的下拉列表
//重新渲染直属领导的下拉列表
var html = "<option value='0'>请选择直属领导</option>";
$("#mgr").html(html);
form.render("select"); // 重新渲染表单元素
form.render("select");
}
});
}
// 打开修改弹出层函数
//打开修改弹出层
function updateUser(data) {
mainIndex = layer.open({
type: 1,
@ -360,196 +362,212 @@
area: ['800px', '550px'],
title: '',
success: function () {
$("#dataFrm")[0].reset(); // 清空原有的数据
$("#deptid").val(""); // 清空部门ID输入框
form.val("dataFrm", data); // 装载新的数据到表单中
dtree.dataInit("deptTree", data.deptid); // 选中之前的所属部门 nodeId=data.deptid
dtree.selectVal("deptTree"); // 选中部门树的值
var leaderid = data.mgr; // 选中领导部门首先拿到领导的id,如何再去数据库中查询出领导的信息,取出领导的部门
$.get("/user/loadUserById", {id: leaderid}, function (res) {
var d = res.data; // 查询领导的部门ID如何重新加载领导部门的下拉列表
dtree.dataInit("leaderdeptTree", d.deptid); // 重新加载领导部门树的数据
dtree.selectVal("leaderdeptTree"); // 选中领导部门树的值
$.get("/user/loadUsersByDeptId", {deptid: d.deptid}, function (res) { // 根据部门ID查询当前部门下面的所有领导列表
var users = res.data; // 获取用户列表数据
var dom_mgr = $("#mgr"); // 获取直属领导下拉列表DOM对象
var html = "<option value=''>请选择直属领导</option>"; // 构建下拉列表选项HTML字符串
$.each(users, function (index, item) { // 遍历用户列表,生成下拉列表选项
html += "<option value='" + item.id + "'>" + item.name + "</option>";
//清空原有的数据
$("#dataFrm")[0].reset();
$("#deptid").val("");
//装载新的数据
form.val("dataFrm", data);
//选中之前的所属部门 nodeId=data.deptid
dtree.dataInit("deptTree", data.deptid);
dtree.selectVal("deptTree");
//选中领导部门首先拿到领导的id,如何再去数据库中查询出领导的信息,取出领导的部门
var leaderid = data.mgr;
$.get("/user/loadUserById",{id:leaderid},function (res) {
var d = res.data;
//查询领导的部门ID如何重新加载领导部门的下拉列表
dtree.dataInit("leaderdeptTree",d.deptid);
dtree.selectVal("leaderdeptTree");
//根据部门ID查询当前部门下面的领导列表
$.get("/user/loadUsersByDeptId",{deptid:d.deptid},function (res) {
var users = res.data;
var dom_mgr=$("#mgr");
var html = "<option value=''>请选择直属领导</option>";
$.each(users,function (index, item) {
html+="<option value='"+item.id+"'>"+item.name+"</option>";
});
dom_mgr.html(html); // 将生成的HTML字符串添加到直属领导下拉列表中
dom_mgr.val(leaderid); // 选中一个选项(即当前用户的直属领导)
form.render("select"); // 重新渲染表单元素
});
dom_mgr.html(html);
//选中一个
dom_mgr.val(leaderid);
//重新渲染
form.render("select");
})
});
url = "/user/modifyUser"; // 设置提交的URL地址为修改用户地址
url = "/user/updateUser";
}
});
}
// 提交表单事件处理函数
form.on("submit(doSubmit)", function (data) {
$.post(url, data.field, function (res) { // 发送POST请求到服务器端进行数据提交
if (res.code == 200) { // 如果响应状态码为200表示成功
tableIns.reload(); // 重新加载表格数据
$.post(url, data.field, function (res) {
if (res.code == 200) {
tableIns.reload();
}
layer.msg(res.msg); // 显示响应消息提示框
layer.close(mainIndex); // 关闭当前弹窗
layer.msg(res.msg);
layer.close(mainIndex);
});
return false; // 阻止表单默认提交行为
return false;
});
// 删除用户函数
//删除
function deleteUser(data) {
// 弹出确认框,询问用户是否确定要删除该用户
layer.confirm('' + data.name + '', {icon: 3, title: ''}, function (index) {
// 查询该用户是否是其他用户的直属领导,如果是,提示删除失败
//查询该用户是否是其他用户的直属领导,如果是,提示删除失败
$.get("/user/queryMgrByUserId", {userId: data.id}, function (res) {
if (res.code == -1) {
layer.msg(res.msg); // 如果用户是其他用户的直属领导,显示错误消息
} else {
// 发送POST请求到服务器端进行用户删除操作
$.post("/user/deleteUser/" + data.id, function (res) {
if (res.code==-1){
layer.msg(res.msg);
}else {
$.post("/user/deleteUser/"+data.id, function (res) {
if (res.code == 200) {
tableIns.reload({where: ""}); // 重新加载表格数据
tableIns.reload({
where:"",
});
}
layer.msg(res.msg); // 显示响应消息提示框
layer.msg(res.msg);
});
layer.close(index); // 关闭当前弹窗
layer.close(index);
}
});
});
}
// 重置密码函数
//重置密码
function resetPwd(data) {
// 弹出确认框,询问用户是否确定要重置该用户的密码
layer.confirm('' + data.name + '', {
icon: 3,
title: ''
}, function (index) {
// 发送POST请求到服务器端进行密码重置操作
$.post("/user/resetPwd/" + data.id, function (res) {
layer.msg(res.msg); // 显示响应消息提示框
layer.confirm('' + data.name + '', {icon: 3, title: ''}, function (index) {
$.post("/user/resetPwd/"+data.id, function (res) {
layer.msg(res.msg);
});
layer.close(index); // 关闭当前弹窗
layer.close(index);
});
}
// 初始化查询条件的下拉树
//初始化查询条件的下拉树
var selectTree = dtree.renderSelect({
elem: "#search_deptTree",
width: "100%", // 可以在这里指定树的宽度来填满div
dataStyle: "layuiStyle", // 使用layui风格的数据格式
dataFormat: "list", // 配置data的风格为list
response: {message: "msg", statusCode: 0}, // 修改response中返回数据的定义
dataStyle: "layuiStyle", //使用layui风格的数据格式
dataFormat: "list", //配置data的风格为list
response: {message: "msg", statusCode: 0}, //修改response中返回数据的定义
url: "/dept/loadDeptManagerLeftTreeJson" // 使用url加载可与data加载同时存在
});
// 监听点击的方法
//监听点击的方法
dtree.on("node(search_deptTree)", function (obj) {
$("#search_deptid").val(obj.param.nodeId); // 将选中的节点ID赋值给隐藏域
console.log(obj.param.nodeId); // 打印选中的节点ID
$("#search_deptid").val(obj.param.nodeId);
console.log(obj.param.nodeId);
});
// 初始化添加弹出层所属部门的下拉列表
//初始化添加弹出层所属部门的下拉列表
var deptTree = dtree.renderSelect({
elem: "#deptTree",
width: "100%", // 可以在这里指定树的宽度来填满div
dataStyle: "layuiStyle", // 使用layui风格的数据格式
dataFormat: "list", // 配置data的风格为list
response: {message: "msg", statusCode: 0}, // 修改response中返回数据的定义
dataStyle: "layuiStyle", //使用layui风格的数据格式
dataFormat: "list", //配置data的风格为list
response: {message: "msg", statusCode: 0}, //修改response中返回数据的定义
url: "/dept/loadDeptManagerLeftTreeJson" // 使用url加载可与data加载同时存在
});
// 监听所属部门点击方法
//监听所属部门点击方法
dtree.on("node(deptTree)", function (obj) {
$("#deptid").val(obj.param.nodeId); // 将选中的节点ID赋值给隐藏域
console.log(obj.param.nodeId); // 打印选中的节点ID
//将该部门的id赋值给隐藏域
$("#deptid").val(obj.param.nodeId);
console.log(obj.param.nodeId);
});
// 初始化添加弹出层领导部门的下拉列表
//初始化添加弹出层领导部门的下拉列表
var leaderdeptTree = dtree.renderSelect({
elem: "#leaderdeptTree",
width: "100%", // 可以在这里指定树的宽度来填满div
dataStyle: "layuiStyle", // 使用layui风格的数据格式
dataFormat: "list", // 配置data的风格为list
response: {message: "msg", statusCode: 0}, // 修改response中返回数据的定义
dataStyle: "layuiStyle", //使用layui风格的数据格式
dataFormat: "list", //配置data的风格为list
response: {message: "msg", statusCode: 0}, //修改response中返回数据的定义
url: "/dept/loadDeptManagerLeftTreeJson" // 使用url加载可与data加载同时存在
});
// 监听点击的方法
//监听点击的方法
dtree.on("node(leaderdeptTree)", function (obj) {
var deptId = obj.param.nodeId; // 获取选中的节点ID
// 根据部门ID查询当前部门下面的领导列表
$.get("/user/loadUsersByDeptId", {deptId: deptId}, function (res) {
var users = res.data; // 获取领导列表数据
var dom_mgr = $("#mgr"); // 获取直属领导选择框的DOM对象
var html = "<option value=''>请选择直属领导</option>"; // 初始化选项HTML字符串
$.each(users, function (index, item) {
html += "<option value='" + item.id + "'>" + item.name + "</option>"; // 拼接每个领导的选项HTML字符串
var deptId = obj.param.nodeId;
//根据部门ID查询当前部门下面的领导列表
$.get("/user/loadUsersByDeptId",{deptId:deptId},function (res) {
var users = res.data;
var dom_mgr=$("#mgr");
var html = "<option value=''>请选择直属领导</option>";
$.each(users,function (index, item) {
html+="<option value='"+item.id+"'>"+item.name+"</option>";
});
dom_mgr.html(html); // 将拼接好的选项HTML字符串添加到直属领导选择框中
form.render("select"); // 重新渲染直属领导选择框
});
dom_mgr.html(html);
//重新渲染
form.render("select");
})
});
// 监听用户名失去焦点事件
$("#username").on("blur", function () {
var username = $(this).val(); // 获取输入的用户名
// 将中文用户名转换为拼音并设置到登录名输入框中
$.get("/user/changeChineseToPinyin", {username: username}, function (res) {
$("#loginname").val(res.value); // 设置转换后的拼音到登录名输入框中
});
//监听用户名失去焦点事件
$("#username").on("blur",function () {
var username = $(this).val();
$.get("/user/changeChineseToPinyin",{username:username},function (res) {
$("#loginname").val(res.value);
})
});
// 打开分配角色的弹出层
//打开分配角色的弹出层
function selectRole(data) {
mainIndex = layer.open({
type: 1,
content: $("#selectUserRoleDiv"),
area: ['650px', '400px'],
title: '给' + data.name + '',
btn: ['<span class=layui-icon>&#xe605;</span>', '<span class=layui-icon>&#x1006;</span>'],
btnAlign: 'c',
yes: function (index, layero) {
var checkStatus = table.checkStatus('roleTable'); // 获取角色表格的选择状态
var params = "uid=" + data.id; // 初始化参数字符串包含用户ID
$.each(checkStatus.data, function (index, item) {
params += "&ids=" + item.id; // 拼接选中的角色ID到参数字符串中
});
// 发送POST请求到服务器端进行角色分配操作
$.post("/user/saveUserRole", params, function (res) {
layer.msg(res.msg); // 显示响应消息提示框
layer.close(mainIndex); // 关闭当前弹窗
type:1,
content:$("#selectUserRoleDiv"),
area:['650px','400px'],
title:'给'+data.name+'',
btn: ['<span class=layui-icon>&#xe605;</span>','<span class=layui-icon>&#x1006;</span>'],
btnAlign:'c',
yes: function(index, layero){
var checkStatus = table.checkStatus('roleTable');
var params = "uid="+data.id;
$.each(checkStatus.data,function (index, item) {
params+="&ids="+item.id;
});
$.post("/user/saveUserRole",params,function (res) {
layer.msg(res.msg);
layer.close(mainIndex);
})
},
btn2: function (index, layero) {
// 关闭弹出层,无需额外操作
btn2: function(index, layero){
//关闭弹出层
},
success: function () {
initRoleTable(data); // 初始化角色列表表格
success:function () {
initRoleTable(data);
}
});
}
var roleTableIns; // 定义角色列表表格实例变量
// 初始化角色列表表格
var roleTableIns;
//初始化角色列表
function initRoleTable(data) {
console.log(data); // 打印传入的数据对象
console.log(data);
roleTableIns = table.render({
elem: '#roleTable', // 绑定表格元素
url: '/user/initRoleByUserId', // 设置表格数据源URL
where: {id: data.id}, // 将用户ID作为参数传递到后台
cols: [[ // 定义表格列配置
{type: 'checkbox', align: 'center'}, // 复选框列,居中对齐
{field: 'id', title: 'ID', align: 'center'}, // ID列居中对齐
{field: 'name', title: '', align: 'center'}, // 角色名称列,居中对齐
{field: 'remark', title: '', align: 'center'} // 角色备注列,居中对齐
]]
elem:'#roleTable',
url:'/user/initRoleByUserId',
//将用户id传到后台去
where:{
id:data.id
},
cols:[ [
{type:'checkbox',align:'center'},
{field:'id',title:'ID',align:'center'},
{field:'name',title:'',align:'center'},
{field:'remark',title:'',align:'center'}
] ]
});
}
});
</script>

@ -113,6 +113,10 @@ INSERT INTO `bus_inport` VALUES (4, '银联', '2018-05-07 00:00:00', '张三', 1
INSERT INTO `bus_inport` VALUES (5, '银联', '2018-05-07 00:00:00', '张三', 100, '', 1, 3, 1);
INSERT INTO `bus_inport` VALUES (6, '银联', '2018-05-07 00:00:00', '张三', 100, '1231', 2.5, 1, 2);
INSERT INTO `bus_inport` VALUES (8, '支付宝', '2018-05-07 00:00:00', '张三', 100, '', 1, 3, 1);
INSERT INTO `bus_inport` VALUES (10, '支付宝', '2018-08-07 17:17:57', '超级管理员', 100, 'sadfasfdsa', 1.5, 3, 1);
INSERT INTO `bus_inport` VALUES (11, '支付宝', '2018-09-17 16:12:25', '超级管理员', 21, '21', 21, 1, 3);
INSERT INTO `bus_inport` VALUES (12, '微信', '2018-12-25 16:48:24', '超级管理员', 100, '123213213', 12321321, 3, 1);
-- ----------------------------
-- Table structure for bus_outport
-- ----------------------------
@ -267,6 +271,273 @@ INSERT INTO `sys_loginfo` VALUES (18, '落亦--luoyi', '127.0.0.1', '2019-11-25
INSERT INTO `sys_loginfo` VALUES (19, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-26 08:32:41');
INSERT INTO `sys_loginfo` VALUES (20, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-26 09:18:06');
INSERT INTO `sys_loginfo` VALUES (21, '超级管理员-system', '0:0:0:0:0:0:0:1', '2019-11-26 09:59:19');
INSERT INTO `sys_loginfo` VALUES (22, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-26 10:48:05');
INSERT INTO `sys_loginfo` VALUES (23, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-26 15:15:03');
INSERT INTO `sys_loginfo` VALUES (24, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-26 15:42:02');
INSERT INTO `sys_loginfo` VALUES (25, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-26 16:56:54');
INSERT INTO `sys_loginfo` VALUES (26, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-26 18:07:44');
INSERT INTO `sys_loginfo` VALUES (27, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-26 18:08:08');
INSERT INTO `sys_loginfo` VALUES (28, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-26 19:23:12');
INSERT INTO `sys_loginfo` VALUES (29, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-26 20:46:57');
INSERT INTO `sys_loginfo` VALUES (30, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-26 21:17:48');
INSERT INTO `sys_loginfo` VALUES (31, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-26 21:21:16');
INSERT INTO `sys_loginfo` VALUES (32, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-27 20:13:56');
INSERT INTO `sys_loginfo` VALUES (33, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-27 20:29:17');
INSERT INTO `sys_loginfo` VALUES (34, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-27 20:30:38');
INSERT INTO `sys_loginfo` VALUES (35, '落亦--luoyi', '127.0.0.1', '2019-11-27 20:32:36');
INSERT INTO `sys_loginfo` VALUES (36, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-27 20:33:47');
INSERT INTO `sys_loginfo` VALUES (37, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-28 08:52:02');
INSERT INTO `sys_loginfo` VALUES (38, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-28 09:09:14');
INSERT INTO `sys_loginfo` VALUES (39, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-28 09:09:23');
INSERT INTO `sys_loginfo` VALUES (40, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-28 09:10:00');
INSERT INTO `sys_loginfo` VALUES (41, '落亦--luoyi', '127.0.0.1', '2019-11-28 09:10:53');
INSERT INTO `sys_loginfo` VALUES (42, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-28 09:17:06');
INSERT INTO `sys_loginfo` VALUES (43, '落亦--luoyi', '127.0.0.1', '2019-11-28 09:18:25');
INSERT INTO `sys_loginfo` VALUES (44, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-28 09:19:19');
INSERT INTO `sys_loginfo` VALUES (45, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-28 09:43:12');
INSERT INTO `sys_loginfo` VALUES (46, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-28 09:55:00');
INSERT INTO `sys_loginfo` VALUES (47, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-28 09:56:54');
INSERT INTO `sys_loginfo` VALUES (48, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-28 09:59:18');
INSERT INTO `sys_loginfo` VALUES (49, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-28 10:28:42');
INSERT INTO `sys_loginfo` VALUES (50, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-28 10:35:39');
INSERT INTO `sys_loginfo` VALUES (51, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-28 14:46:07');
INSERT INTO `sys_loginfo` VALUES (52, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-28 14:56:34');
INSERT INTO `sys_loginfo` VALUES (53, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-28 14:57:11');
INSERT INTO `sys_loginfo` VALUES (54, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-28 20:37:00');
INSERT INTO `sys_loginfo` VALUES (55, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-28 21:29:07');
INSERT INTO `sys_loginfo` VALUES (56, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-28 21:35:40');
INSERT INTO `sys_loginfo` VALUES (57, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-28 21:38:15');
INSERT INTO `sys_loginfo` VALUES (58, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-28 21:39:56');
INSERT INTO `sys_loginfo` VALUES (59, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-29 08:34:49');
INSERT INTO `sys_loginfo` VALUES (60, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-29 09:15:39');
INSERT INTO `sys_loginfo` VALUES (61, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-29 09:24:44');
INSERT INTO `sys_loginfo` VALUES (62, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-29 09:29:50');
INSERT INTO `sys_loginfo` VALUES (63, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-29 10:13:31');
INSERT INTO `sys_loginfo` VALUES (64, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-29 10:45:24');
INSERT INTO `sys_loginfo` VALUES (65, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-29 10:51:44');
INSERT INTO `sys_loginfo` VALUES (66, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-29 11:07:38');
INSERT INTO `sys_loginfo` VALUES (67, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-29 21:52:58');
INSERT INTO `sys_loginfo` VALUES (68, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-29 22:00:53');
INSERT INTO `sys_loginfo` VALUES (69, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-29 22:13:18');
INSERT INTO `sys_loginfo` VALUES (70, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-29 22:23:34');
INSERT INTO `sys_loginfo` VALUES (71, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-29 22:28:58');
INSERT INTO `sys_loginfo` VALUES (72, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-29 22:30:01');
INSERT INTO `sys_loginfo` VALUES (73, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-29 22:37:01');
INSERT INTO `sys_loginfo` VALUES (74, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-29 22:37:47');
INSERT INTO `sys_loginfo` VALUES (75, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-29 22:45:21');
INSERT INTO `sys_loginfo` VALUES (76, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-29 23:05:59');
INSERT INTO `sys_loginfo` VALUES (77, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-29 23:14:08');
INSERT INTO `sys_loginfo` VALUES (78, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-29 23:19:56');
INSERT INTO `sys_loginfo` VALUES (79, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-29 23:29:39');
INSERT INTO `sys_loginfo` VALUES (80, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-30 11:24:06');
INSERT INTO `sys_loginfo` VALUES (81, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-30 11:40:39');
INSERT INTO `sys_loginfo` VALUES (82, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-30 11:42:36');
INSERT INTO `sys_loginfo` VALUES (83, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-30 11:47:08');
INSERT INTO `sys_loginfo` VALUES (84, '落亦--luoyi', '127.0.0.1', '2019-11-30 11:59:23');
INSERT INTO `sys_loginfo` VALUES (85, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-30 12:03:46');
INSERT INTO `sys_loginfo` VALUES (86, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-30 12:18:12');
INSERT INTO `sys_loginfo` VALUES (87, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-30 12:58:59');
INSERT INTO `sys_loginfo` VALUES (88, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-11-30 18:29:39');
INSERT INTO `sys_loginfo` VALUES (89, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-01 09:37:38');
INSERT INTO `sys_loginfo` VALUES (90, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-01 11:46:14');
INSERT INTO `sys_loginfo` VALUES (91, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-02 10:39:07');
INSERT INTO `sys_loginfo` VALUES (92, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-02 10:42:01');
INSERT INTO `sys_loginfo` VALUES (93, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-02 10:44:22');
INSERT INTO `sys_loginfo` VALUES (94, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-02 10:49:58');
INSERT INTO `sys_loginfo` VALUES (95, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-02 18:40:27');
INSERT INTO `sys_loginfo` VALUES (96, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-02 18:41:44');
INSERT INTO `sys_loginfo` VALUES (97, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-02 18:51:51');
INSERT INTO `sys_loginfo` VALUES (98, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-02 19:44:13');
INSERT INTO `sys_loginfo` VALUES (99, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-03 08:40:06');
INSERT INTO `sys_loginfo` VALUES (100, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-03 09:17:34');
INSERT INTO `sys_loginfo` VALUES (101, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-03 09:49:33');
INSERT INTO `sys_loginfo` VALUES (102, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-03 09:49:54');
INSERT INTO `sys_loginfo` VALUES (103, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-03 10:46:23');
INSERT INTO `sys_loginfo` VALUES (104, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-03 10:52:24');
INSERT INTO `sys_loginfo` VALUES (105, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-03 11:12:01');
INSERT INTO `sys_loginfo` VALUES (106, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-03 13:52:12');
INSERT INTO `sys_loginfo` VALUES (107, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-03 14:04:33');
INSERT INTO `sys_loginfo` VALUES (108, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-03 14:09:36');
INSERT INTO `sys_loginfo` VALUES (109, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-03 14:12:28');
INSERT INTO `sys_loginfo` VALUES (110, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-03 14:13:55');
INSERT INTO `sys_loginfo` VALUES (111, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-03 14:20:36');
INSERT INTO `sys_loginfo` VALUES (112, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-03 14:21:06');
INSERT INTO `sys_loginfo` VALUES (113, '苏北旦-subeidan', '0:0:0:0:0:0:0:1', '2019-12-03 14:27:37');
INSERT INTO `sys_loginfo` VALUES (114, '旦素一-dansuyi', '0:0:0:0:0:0:0:1', '2019-12-03 14:27:54');
INSERT INTO `sys_loginfo` VALUES (115, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-03 15:04:21');
INSERT INTO `sys_loginfo` VALUES (116, '李九-lijiu', '0:0:0:0:0:0:0:1', '2019-12-03 15:47:02');
INSERT INTO `sys_loginfo` VALUES (117, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-03 15:47:25');
INSERT INTO `sys_loginfo` VALUES (118, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-04 08:36:54');
INSERT INTO `sys_loginfo` VALUES (119, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-04 09:18:26');
INSERT INTO `sys_loginfo` VALUES (120, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-04 09:40:35');
INSERT INTO `sys_loginfo` VALUES (121, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-04 10:14:43');
INSERT INTO `sys_loginfo` VALUES (122, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-04 10:27:12');
INSERT INTO `sys_loginfo` VALUES (123, '李约素-liyuesu', '0:0:0:0:0:0:0:1', '2019-12-04 10:28:12');
INSERT INTO `sys_loginfo` VALUES (124, '李四-lisi', '0:0:0:0:0:0:0:1', '2019-12-04 10:28:20');
INSERT INTO `sys_loginfo` VALUES (125, '赵六-zhaoliu', '0:0:0:0:0:0:0:1', '2019-12-04 10:28:28');
INSERT INTO `sys_loginfo` VALUES (126, '王五-wangwu', '0:0:0:0:0:0:0:1', '2019-12-04 10:28:40');
INSERT INTO `sys_loginfo` VALUES (127, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-04 10:28:51');
INSERT INTO `sys_loginfo` VALUES (128, '苏北旦-subeidan', '0:0:0:0:0:0:0:1', '2019-12-04 10:30:00');
INSERT INTO `sys_loginfo` VALUES (129, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-04 10:30:16');
INSERT INTO `sys_loginfo` VALUES (130, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-04 11:13:42');
INSERT INTO `sys_loginfo` VALUES (131, '李四-lisi', '0:0:0:0:0:0:0:1', '2019-12-04 11:15:22');
INSERT INTO `sys_loginfo` VALUES (132, '李四-lisi', '0:0:0:0:0:0:0:1', '2019-12-04 11:16:03');
INSERT INTO `sys_loginfo` VALUES (133, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-05 10:27:27');
INSERT INTO `sys_loginfo` VALUES (134, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-05 10:32:11');
INSERT INTO `sys_loginfo` VALUES (135, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-05 10:39:49');
INSERT INTO `sys_loginfo` VALUES (136, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-05 10:43:26');
INSERT INTO `sys_loginfo` VALUES (137, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-05 10:44:41');
INSERT INTO `sys_loginfo` VALUES (138, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-05 15:35:56');
INSERT INTO `sys_loginfo` VALUES (139, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-05 15:53:28');
INSERT INTO `sys_loginfo` VALUES (140, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-05 16:02:42');
INSERT INTO `sys_loginfo` VALUES (141, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-05 16:50:28');
INSERT INTO `sys_loginfo` VALUES (142, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-05 17:20:01');
INSERT INTO `sys_loginfo` VALUES (143, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-05 17:22:13');
INSERT INTO `sys_loginfo` VALUES (144, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-05 17:23:19');
INSERT INTO `sys_loginfo` VALUES (145, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-05 17:23:51');
INSERT INTO `sys_loginfo` VALUES (146, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-05 17:38:39');
INSERT INTO `sys_loginfo` VALUES (147, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-05 20:38:28');
INSERT INTO `sys_loginfo` VALUES (148, '李四-lisi', '0:0:0:0:0:0:0:1', '2019-12-05 21:05:55');
INSERT INTO `sys_loginfo` VALUES (149, '李四-lisi', '0:0:0:0:0:0:0:1', '2019-12-05 21:06:49');
INSERT INTO `sys_loginfo` VALUES (150, '李四-lisi', '0:0:0:0:0:0:0:1', '2019-12-05 21:07:39');
INSERT INTO `sys_loginfo` VALUES (151, '李四-lisi', '0:0:0:0:0:0:0:1', '2019-12-05 21:10:07');
INSERT INTO `sys_loginfo` VALUES (152, '苏北旦-subeidan', '0:0:0:0:0:0:0:1', '2019-12-05 21:11:47');
INSERT INTO `sys_loginfo` VALUES (153, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-05 21:11:58');
INSERT INTO `sys_loginfo` VALUES (154, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-05 22:54:31');
INSERT INTO `sys_loginfo` VALUES (155, '苏北旦-subeidan', '0:0:0:0:0:0:0:1', '2019-12-05 22:55:00');
INSERT INTO `sys_loginfo` VALUES (156, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-05 22:57:38');
INSERT INTO `sys_loginfo` VALUES (157, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-05 22:59:18');
INSERT INTO `sys_loginfo` VALUES (158, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-05 22:59:38');
INSERT INTO `sys_loginfo` VALUES (159, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-06 08:36:42');
INSERT INTO `sys_loginfo` VALUES (160, '苏北旦-subeidan', '0:0:0:0:0:0:0:1', '2019-12-06 08:42:18');
INSERT INTO `sys_loginfo` VALUES (161, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-06 08:42:46');
INSERT INTO `sys_loginfo` VALUES (162, '李四-lisi', '0:0:0:0:0:0:0:1', '2019-12-06 08:45:31');
INSERT INTO `sys_loginfo` VALUES (163, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-06 08:47:03');
INSERT INTO `sys_loginfo` VALUES (164, '李四-lisi', '0:0:0:0:0:0:0:1', '2019-12-06 08:47:41');
INSERT INTO `sys_loginfo` VALUES (165, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-06 08:48:00');
INSERT INTO `sys_loginfo` VALUES (166, '王五-wangwu', '0:0:0:0:0:0:0:1', '2019-12-06 08:48:52');
INSERT INTO `sys_loginfo` VALUES (167, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-06 08:49:12');
INSERT INTO `sys_loginfo` VALUES (168, '上单-shangdan', '0:0:0:0:0:0:0:1', '2019-12-06 08:51:36');
INSERT INTO `sys_loginfo` VALUES (169, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-06 08:51:52');
INSERT INTO `sys_loginfo` VALUES (170, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-06 08:53:36');
INSERT INTO `sys_loginfo` VALUES (171, '上单-shangdan', '0:0:0:0:0:0:0:1', '2019-12-06 08:55:07');
INSERT INTO `sys_loginfo` VALUES (172, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-06 09:31:52');
INSERT INTO `sys_loginfo` VALUES (173, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-06 22:30:06');
INSERT INTO `sys_loginfo` VALUES (174, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-06 23:00:14');
INSERT INTO `sys_loginfo` VALUES (175, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-06 23:19:13');
INSERT INTO `sys_loginfo` VALUES (176, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-06 23:22:29');
INSERT INTO `sys_loginfo` VALUES (177, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-06 23:24:33');
INSERT INTO `sys_loginfo` VALUES (178, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-06 23:26:13');
INSERT INTO `sys_loginfo` VALUES (179, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2019-12-06 23:32:24');
INSERT INTO `sys_loginfo` VALUES (180, '超级管理员-system', '0:0:0:0:0:0:0:1', '2019-12-09 16:14:07');
INSERT INTO `sys_loginfo` VALUES (181, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-01-21 03:02:00');
INSERT INTO `sys_loginfo` VALUES (182, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-01-21 03:13:25');
INSERT INTO `sys_loginfo` VALUES (183, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-01-21 03:17:40');
INSERT INTO `sys_loginfo` VALUES (184, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-01-21 03:23:43');
INSERT INTO `sys_loginfo` VALUES (185, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-01-21 03:28:21');
INSERT INTO `sys_loginfo` VALUES (186, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-02-06 02:28:24');
INSERT INTO `sys_loginfo` VALUES (187, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-02-06 03:02:00');
INSERT INTO `sys_loginfo` VALUES (188, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-02-07 07:54:49');
INSERT INTO `sys_loginfo` VALUES (189, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-02-08 06:23:55');
INSERT INTO `sys_loginfo` VALUES (190, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-02-09 07:45:00');
INSERT INTO `sys_loginfo` VALUES (191, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-02-12 03:01:19');
INSERT INTO `sys_loginfo` VALUES (192, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-02-12 04:08:23');
INSERT INTO `sys_loginfo` VALUES (193, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-02-12 04:16:36');
INSERT INTO `sys_loginfo` VALUES (194, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-02-12 04:20:26');
INSERT INTO `sys_loginfo` VALUES (195, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-02-12 04:23:37');
INSERT INTO `sys_loginfo` VALUES (196, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-02-12 04:25:52');
INSERT INTO `sys_loginfo` VALUES (197, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-02-12 04:34:37');
INSERT INTO `sys_loginfo` VALUES (198, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-02-12 04:36:25');
INSERT INTO `sys_loginfo` VALUES (199, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-02-12 04:39:03');
INSERT INTO `sys_loginfo` VALUES (200, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-02-12 04:42:08');
INSERT INTO `sys_loginfo` VALUES (201, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-02-12 04:43:07');
INSERT INTO `sys_loginfo` VALUES (202, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-02-12 04:44:12');
INSERT INTO `sys_loginfo` VALUES (203, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-02-12 04:44:54');
INSERT INTO `sys_loginfo` VALUES (204, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-02-14 06:09:37');
INSERT INTO `sys_loginfo` VALUES (205, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-02-14 06:11:53');
INSERT INTO `sys_loginfo` VALUES (206, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-02-14 06:13:10');
INSERT INTO `sys_loginfo` VALUES (207, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-02-14 06:14:13');
INSERT INTO `sys_loginfo` VALUES (208, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-02-14 06:19:38');
INSERT INTO `sys_loginfo` VALUES (209, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-02-14 06:22:05');
INSERT INTO `sys_loginfo` VALUES (210, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-02-14 06:26:19');
INSERT INTO `sys_loginfo` VALUES (211, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-02-14 06:30:35');
INSERT INTO `sys_loginfo` VALUES (212, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-02-14 07:16:07');
INSERT INTO `sys_loginfo` VALUES (213, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-02-14 07:30:52');
INSERT INTO `sys_loginfo` VALUES (214, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-02-14 08:05:43');
INSERT INTO `sys_loginfo` VALUES (215, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-02-14 08:23:39');
INSERT INTO `sys_loginfo` VALUES (216, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-02-14 08:58:01');
INSERT INTO `sys_loginfo` VALUES (217, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-02-14 09:06:30');
INSERT INTO `sys_loginfo` VALUES (218, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-02-14 09:52:11');
INSERT INTO `sys_loginfo` VALUES (219, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-02-24 07:33:16');
INSERT INTO `sys_loginfo` VALUES (220, '李月素-liyuesu', '0:0:0:0:0:0:0:1', '2020-02-24 07:39:04');
INSERT INTO `sys_loginfo` VALUES (221, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-02-24 07:40:26');
INSERT INTO `sys_loginfo` VALUES (222, '李月素-liyuesu', '0:0:0:0:0:0:0:1', '2020-02-24 07:47:07');
INSERT INTO `sys_loginfo` VALUES (223, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-02-24 07:47:40');
INSERT INTO `sys_loginfo` VALUES (224, '落亦--luoyi', '127.0.0.1', '2020-02-24 07:55:53');
INSERT INTO `sys_loginfo` VALUES (225, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-02-24 08:09:22');
INSERT INTO `sys_loginfo` VALUES (226, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-02-24 08:53:10');
INSERT INTO `sys_loginfo` VALUES (227, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-02-24 08:57:15');
INSERT INTO `sys_loginfo` VALUES (228, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-02-24 09:04:42');
INSERT INTO `sys_loginfo` VALUES (229, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-02-24 09:24:06');
INSERT INTO `sys_loginfo` VALUES (230, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-02-24 09:26:52');
INSERT INTO `sys_loginfo` VALUES (231, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-02-24 09:32:45');
INSERT INTO `sys_loginfo` VALUES (232, '落亦--luoyi', '127.0.0.1', '2020-02-24 09:35:36');
INSERT INTO `sys_loginfo` VALUES (233, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-02-24 09:38:13');
INSERT INTO `sys_loginfo` VALUES (234, '李月素-liyuesu', '0:0:0:0:0:0:0:1', '2020-02-24 09:42:05');
INSERT INTO `sys_loginfo` VALUES (235, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-02-24 09:42:47');
INSERT INTO `sys_loginfo` VALUES (236, '李月素-liyuesu', '0:0:0:0:0:0:0:1', '2020-02-24 09:43:05');
INSERT INTO `sys_loginfo` VALUES (237, '李月素-liyuesu', '0:0:0:0:0:0:0:1', '2020-02-24 09:43:42');
INSERT INTO `sys_loginfo` VALUES (238, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-02-24 09:44:05');
INSERT INTO `sys_loginfo` VALUES (239, '李四-lisi', '0:0:0:0:0:0:0:1', '2020-02-24 09:44:47');
INSERT INTO `sys_loginfo` VALUES (240, '李四-lisi', '0:0:0:0:0:0:0:1', '2020-02-24 09:45:14');
INSERT INTO `sys_loginfo` VALUES (241, '王五-wangwu', '0:0:0:0:0:0:0:1', '2020-02-24 09:45:35');
INSERT INTO `sys_loginfo` VALUES (242, '赵六-zhaoliu', '0:0:0:0:0:0:0:1', '2020-02-24 09:45:55');
INSERT INTO `sys_loginfo` VALUES (243, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-02-24 09:46:32');
INSERT INTO `sys_loginfo` VALUES (244, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-03-01 09:46:24');
INSERT INTO `sys_loginfo` VALUES (245, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-03-06 02:28:15');
INSERT INTO `sys_loginfo` VALUES (246, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-03-06 02:42:09');
INSERT INTO `sys_loginfo` VALUES (247, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-03-06 03:02:07');
INSERT INTO `sys_loginfo` VALUES (248, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-03-06 03:06:11');
INSERT INTO `sys_loginfo` VALUES (249, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-03-06 03:12:35');
INSERT INTO `sys_loginfo` VALUES (250, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-03-06 03:28:54');
INSERT INTO `sys_loginfo` VALUES (251, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-03-06 03:53:25');
INSERT INTO `sys_loginfo` VALUES (252, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-03-06 12:58:05');
INSERT INTO `sys_loginfo` VALUES (253, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-03-07 03:11:53');
INSERT INTO `sys_loginfo` VALUES (254, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-03-07 03:50:55');
INSERT INTO `sys_loginfo` VALUES (255, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-03-07 04:13:39');
INSERT INTO `sys_loginfo` VALUES (256, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-03-07 04:16:53');
INSERT INTO `sys_loginfo` VALUES (257, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-03-07 04:23:31');
INSERT INTO `sys_loginfo` VALUES (258, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-03-07 04:25:49');
INSERT INTO `sys_loginfo` VALUES (259, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-03-07 04:34:00');
INSERT INTO `sys_loginfo` VALUES (260, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-03-07 07:24:46');
INSERT INTO `sys_loginfo` VALUES (261, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-03-07 07:44:40');
INSERT INTO `sys_loginfo` VALUES (262, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-03-07 07:50:38');
INSERT INTO `sys_loginfo` VALUES (263, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-03-07 07:52:28');
INSERT INTO `sys_loginfo` VALUES (264, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-03-07 07:59:44');
INSERT INTO `sys_loginfo` VALUES (265, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-03-07 08:10:44');
INSERT INTO `sys_loginfo` VALUES (266, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-03-07 08:13:23');
INSERT INTO `sys_loginfo` VALUES (267, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-03-08 03:37:14');
INSERT INTO `sys_loginfo` VALUES (268, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-03-08 03:39:03');
INSERT INTO `sys_loginfo` VALUES (269, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-03-08 03:41:25');
INSERT INTO `sys_loginfo` VALUES (270, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-03-08 03:43:31');
INSERT INTO `sys_loginfo` VALUES (271, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-03-08 03:56:23');
INSERT INTO `sys_loginfo` VALUES (272, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-03-08 04:17:22');
INSERT INTO `sys_loginfo` VALUES (273, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-03-08 04:29:46');
INSERT INTO `sys_loginfo` VALUES (274, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-03-08 09:53:15');
INSERT INTO `sys_loginfo` VALUES (275, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-03-08 10:07:53');
INSERT INTO `sys_loginfo` VALUES (276, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-03-08 10:30:36');
INSERT INTO `sys_loginfo` VALUES (277, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-03-08 10:32:45');
INSERT INTO `sys_loginfo` VALUES (278, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-03-08 10:36:43');
INSERT INTO `sys_loginfo` VALUES (279, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-03-08 10:50:53');
INSERT INTO `sys_loginfo` VALUES (280, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-03-08 10:52:45');
INSERT INTO `sys_loginfo` VALUES (281, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-03-08 10:53:31');
INSERT INTO `sys_loginfo` VALUES (282, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-03-08 10:54:57');
INSERT INTO `sys_loginfo` VALUES (283, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-03-08 10:55:39');
INSERT INTO `sys_loginfo` VALUES (284, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-03-08 10:57:06');
INSERT INTO `sys_loginfo` VALUES (285, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-03-08 11:00:54');
INSERT INTO `sys_loginfo` VALUES (286, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-03-08 11:04:41');
INSERT INTO `sys_loginfo` VALUES (287, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-03-08 11:08:39');
INSERT INTO `sys_loginfo` VALUES (288, '落亦--luoyi', '0:0:0:0:0:0:0:1', '2020-03-09 08:36:06');
-- ----------------------------
-- Table structure for sys_notice
@ -564,18 +835,19 @@ CREATE TABLE `sys_user` (
-- ----------------------------
-- Records of sys_user
-- ----------------------------
INSERT INTO `sys_user`
VALUES (1, '超级管理员', 'system', '532ac00e86893901af5f0be6b704dbc7', '系统深处的男人', 1, '超级管理员', 1,
'2018-06-25 11:06:34', NULL, 1, 1, 0, '/resources/images/face.jpg', '04A93C74C8294AA09A8B974FD1F4ECBB');
INSERT INTO `sys_user`
VALUES (2, '落亦-', 'luoyi', '532ac00e86893901af5f0be6b704dbc7', '九江', 1, '超级管理员', 1, '2019-11-23 20:52:16',
NULL, 1, 2, 0, '/resources/images/face.jpg', '04A93C74C8294AA09A8B974FD1F4ECBB');
INSERT INTO `sys_user`
VALUES (3, '李月素', 'liyuesu', '532ac00e86893901af5f0be6b704dbc7', '九江', 1, '', 2, '2020-02-12 12:22:23', 5, 1, 3,
1, '/resources/images/face.jpg', '04A93C74C8294AA09A8B974FD1F4ECBB');
INSERT INTO `sys_user`
VALUES (4, '李四', 'lisi', '532ac00e86893901af5f0be6b704dbc7', '九江', 1, '普通用户', 3, '2020-02-09 15:46:55', 3, 1, 4,
1, '/resources/images/face.jpg', '04A93C74C8294AA09A8B974FD1F4ECBB');
INSERT INTO `sys_user` VALUES (1, '超级管理员', 'system', '532ac00e86893901af5f0be6b704dbc7', '系统深处的男人', 1, '超级管理员', 1, '2018-06-25 11:06:34', NULL, 1, 1, 0, '2020-02-24/8258FCECC0D64A1DB3B457E7D51D6AB5.jpg', '04A93C74C8294AA09A8B974FD1F4ECBB');
INSERT INTO `sys_user` VALUES (2, '落亦-', 'luoyi', '532ac00e86893901af5f0be6b704dbc7', '九江', 1, '超级管理员', 1, '2019-11-23 20:52:16', NULL, 1, 2, 0, '2020-03-08/0F8C9E01C1DF4A60BB0E2747F67D03BF.jpg', '04A93C74C8294AA09A8B974FD1F4ECBB');
INSERT INTO `sys_user` VALUES (3, '李月素', 'liyuesu', '532ac00e86893901af5f0be6b704dbc7', '九江', 1, '', 2, '2020-02-12 12:22:23', 5, 1, 3, 1, '2020-02-24/BF25CC186DA14E89BDA0FB061404E527.jpg', '04A93C74C8294AA09A8B974FD1F4ECBB');
INSERT INTO `sys_user` VALUES (4, '李四', 'lisi', '532ac00e86893901af5f0be6b704dbc7', '九江', 1, '普通用户', 3, '2020-02-09 15:46:55', 3, 1, 4, 1, '2020-02-24/795D8302F654489C8FA3E06F0DA8C141.jpg', '04A93C74C8294AA09A8B974FD1F4ECBB');
INSERT INTO `sys_user` VALUES (5, '王五', 'wangwu', '532ac00e86893901af5f0be6b704dbc7', '上海', 1, '普通用户', 5, '2019-12-02 18:57:42', 4, 1, 5, 1, '2020-02-24/014938189D454F95BAEB3AC439CD6703.jpg', '04A93C74C8294AA09A8B974FD1F4ECBB');
INSERT INTO `sys_user` VALUES (6, '赵六', 'zhaoliu', '532ac00e86893901af5f0be6b704dbc7', '广州', 1, '普通用户', 5, '2019-12-02 18:59:05', 5, 1, 6, 1, '2020-02-24/25E8E9C743844A5185BCE55D52CF7141.jpg', '04A93C74C8294AA09A8B974FD1F4ECBB');
INSERT INTO `sys_user` VALUES (7, '陈七', 'chengqi', '532ac00e86893901af5f0be6b704dbc7', '深圳', 1, '普遍用户', 4, '2019-12-03 09:52:18', 3, 1, 7, 1, '2020-02-24/8258FCECC0D64A1DB3B457E7D51D6AB5.jpg', '04A93C74C8294AA09A8B974FD1F4ECBB');
INSERT INTO `sys_user` VALUES (10, '苏北旦', 'subeidan', 'b661f48dc70d448773be54874198788c', '猎户座旋臂', 0, '将军', 3, '2019-12-03 00:00:00', 3, 1, 9, 1, '2020-02-24/8258FCECC0D64A1DB3B457E7D51D6AB5.jpg', '950289EBDBA24C7789E392E1D0254635');
INSERT INTO `sys_user` VALUES (11, '斯嘉丽约翰逊', 'sijialiyuehanxun', 'f8408d1ccc3f83e4f035de3896569b76', '美国', 0, '演员', 7, '2019-12-03 14:23:35', 10, 1, 10, 1, '2020-02-24/8258FCECC0D64A1DB3B457E7D51D6AB5.jpg', '85DB5F84987146559A75B4B0DCB7DE4F');
INSERT INTO `sys_user` VALUES (12, '托尼', 'tuoni', '1403e113a2936d4509e9c13b8849f4b5', '美国', 1, '钢铁侠', 7, '2019-12-03 00:00:00', 11, 1, 11, 1, '2020-02-24/8258FCECC0D64A1DB3B457E7D51D6AB5.jpg', '571059AF59E64A7D92FECB93FA1B0AEF');
INSERT INTO `sys_user` VALUES (13, '贾维斯', 'jiaweisi', '98f28b861888f4274cb423345dce4bcc', '美国', 1, '人工智能', 3, '2019-12-03 00:00:00', 12, 1, 12, 1, '2020-02-24/8258FCECC0D64A1DB3B457E7D51D6AB5.jpg', '7258E2D93A3F429085B34BBD8E345CE7');
INSERT INTO `sys_user` VALUES (14, '李九', 'lijiu', '9356d33c67f21e23b448d6198e414f77', '九江', 1, '测试', 4, '2020-03-05 16:00:00', 10, 1, 13, 1, '/images/defaultusertitle.jpg', 'D3FBF5E33F4D42FDACE85178FE84E95A');
INSERT INTO `sys_user` VALUES (17, '张十', 'zhangshi', 'e99ddd2f81f17319e7a767573c674975', '南昌', 1, '测试', 4, '2020-03-06 03:30:12', 11, 1, 14, 1, '/images/defaultUserTitle.jpg', '5C6E7D2E2D8C4A8CB9DD4A9DF64DDB57');
-- ----------------------------
-- Table structure for sys_user_role

Loading…
Cancel
Save