TaoLer/app/admin/view/user/user/index.html
2024-04-01 10:20:25 +08:00

490 lines
13 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>用户管理</title>
<link rel="stylesheet" href="/static/component/pear/css/pear.css" />
</head>
<body class="pear-container">
<div class="layui-card">
<div class="layui-card-body">
<form class="layui-form" action="">
<div class="layui-form-item">
<div class="layui-form-item layui-inline">
<label class="layui-form-label">ID</label>
<div class="layui-input-block">
<input type="text" name="id" placeholder="请输入ID号" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item layui-inline">
<label class="layui-form-label">用户</label>
<div class="layui-input-inline">
<input type="text" name="name" placeholder="用户名" class="layui-input">
</div>
</div>
<div class="layui-form-item layui-inline">
<label class="layui-form-label">性别</label>
<div class="layui-input-block">
<select name="sex">
<option value="">不限</option>
<option value="0"></option>
<option value="1"></option>
</select>
</div>
</div>
<div class="layui-form-item layui-inline">
<label class="layui-form-label">邮箱</label>
<div class="layui-input-inline">
<input type="text" name="email" placeholder="邮箱" class="layui-input">
</div>
</div>
<div class="layui-form-item layui-inline">
<label class="layui-form-label">状态</label>
<div class="layui-input-block">
<select name="status">
<option value="">选择状态</option>
<option value="1">正常</option>
<option value="-1">禁止</option>
<option value="0">待审</option>
</select>
</div>
</div>
<div class="layui-form-item layui-inline">
<button class="pear-btn pear-btn-md pear-btn-primary" lay-submit lay-filter="user-query">
<i class="layui-icon layui-icon-search"></i>
查询
</button>
<button type="reset" class="pear-btn pear-btn-md">
<i class="layui-icon layui-icon-refresh"></i>
重置
</button>
</div>
</div>
</form>
</div>
</div>
<div class="layui-card">
<div class="layui-card-body">
<table id="user-table" lay-filter="user-table"></table>
</div>
</div>
<script type="text/html" id="user-toolbar">
<button class="pear-btn pear-btn-primary pear-btn-md" lay-event="add">
<i class="layui-icon layui-icon-add-1"></i>
新增
</button>
<button class="pear-btn pear-btn-danger pear-btn-md" lay-event="batchRemove">
<i class="layui-icon layui-icon-delete"></i>
删除
</button>
</script>
<script type="text/html" id="imgTpl">
<a href="{:url('user.user/goUserHome')}?id={{ d.id }}" target="_blank"><img src= {{=d.avatar}} style="width: 100px; height: 100px; border-radius: 6px;" /></a>
</script>
<script type="text/html" id="userInfoTpl">
<ul>
<li>ID: {{d.id}} 用户名{{d.username }}</li>
<li>性别{{#if (d.sex == 0) { }} <span></span> {{# }else if(d.sex == 1){ }} <span></span> {{# } }} {{d.nickname}}</li>
<li>电话{{d.phone}}</li>
<li>邮箱{{d.email}}</li>
</ul>
</script>
<script type="text/html" id="user-bar">
<button class="pear-btn pear-btn-primary pear-btn-sm" lay-event="edit"><i class="layui-icon layui-icon-edit"></i></button>
<button class="pear-btn pear-btn-danger pear-btn-sm" lay-event="remove"><i class="layui-icon layui-icon-delete"></i></button>
</script>
<script type="text/html" id="user-enable">
<input type="checkbox" name="enable" value="{{d.id}}" lay-skin="switch" lay-text="启用|禁用" lay-filter="user-enable" {{ d.check== 1 ? 'checked' : '' }} />
</script>
<script type="text/html" id="buttonAuth">
{{# if(d.id == '1'){ }}
<input type="checkbox" name="auth" lay-skin="primary" checked disabled >
{{# } else { }}
{if condition="checkRuleButton('user.user/auth')"}<input type="checkbox" name="auth" lay-skin="primary" lay-filter="auth" {{# if(d.auth ==1){ }}checked value="0"{{# } else { }}value="1"{{# } }} id="{{d.id}}" >{else}<button class="layui-btn layui-btn-xs layui-btn-disabled">无权限</button>{/if}
{{# } }}
</script>
<script type="text/html" id="userLoginTpl">
<url>
<li>ip{{d.ip}}</li>
<li>归属地{{d.city}}</li>
<li>{{d.logintime}}</li>
</url>
</script>
<script type="text/html" id="user-createTime">
{{layui.util.toDateString(d.createTime, 'yyyy-MM-dd')}}
</script>
<script type="text/html" id="TPL-dropdpwn-vip">
<button class="layui-btn layui-btn-primary dropdpwn-demo">
<span>{{= d.vip}}</span>
<i class="layui-icon layui-icon-down layui-font-12"></i>
</button>
</script>
<script src="/static/component/layui/layui.js"></script>
<script src="/static/component/pear/pear.js"></script>
<script>
layui.use(['table', 'form', 'jquery','common'], function() {
let table = layui.table;
let form = layui.form;
let $ = layui.jquery;
let common = layui.common;
var dropdown = layui.dropdown;
let MODULE_PATH = "operate/";
let cols = [
[ {
type: 'checkbox'
},
{
title: '头像',
field: 'avatar',
align: 'center',
width: 150,
templet: '#imgTpl'
},
{
title: '用户',
field: 'username',
minWidth: 200,
templet: '#userInfoTpl'
},
{
title: '登录',
field: 'ip',
minWidth: 180,
templet: '#userLoginTpl'
},
{
title: '积分/金币',
field: 'point',
align: 'center',
width: 120,
edit: 'text'
},
{
title: '会员等级/L',
field: 'vip',
align: 'center',
width:180,
unresize: true,
align: 'center',
templet: '#TPL-dropdpwn-vip'
},
{
title: '状态',
field: 'check',
align: 'center',
width: 95,
templet: '#user-enable'
},
{
title: '超级管理',
field: 'auth',
align: 'center',
templet: '#buttonAuth'
},
{
title: '注册',
field: 'jointime',
align: 'center'
},
{
title: '操作',
toolbar: '#user-bar',
align: 'center',
width: 130
}
]
]
table.render({
elem: '#user-table',
url: "{:url('user.user/list')}",
page: true,
cols: cols,
skin: 'line',
toolbar: '#user-toolbar',
lineStyle: 'height: 160px;', // 定义表格的多行样式
defaultToolbar: [{
title: '刷新',
layEvent: 'refresh',
icon: 'layui-icon-refresh',
}, 'filter', 'print', 'exports'],
limit: 10,
done: function(res, curr, count){
var options = this;
// 获取当前行数据
table.getRowData = function(elem){
var index = $(elem).closest('tr').data('index');
return table.cache[options.id][index] || {};
};
// dropdown 方式的下拉选择
dropdown.render({
elem: '.dropdpwn-demo',
// trigger: 'hover',
// 此处的 data 值,可根据 done 返回的 res 遍历来赋值
data: res.viplist,
click: function(obj){
var data = table.getRowData(this.elem); // 获取当前行数据(如 id 等字段,以作为数据修改的索引)
this.elem.find('span').html(obj.title);
// 更新数据中对应的字段
data.vip = obj.title;
console.log(data)
$.ajax({
type: "post",
url: "{:url('user.user/editVipLevel')}",
data: data,
dataType: 'json',
success: (res) => {
if(res.code === 0) {
layer.msg(res.msg, {icon: 1});
} else {
layer.msg(res.msg, {icon: 2});
return false;
}
}
})
// 显示 - 仅用于演示
//layer.msg('选中值: '+ obj.title +'<br>当前行数据:'+ JSON.stringify(data));
}
});
}
});
table.on('tool(user-table)', function(obj) {
if (obj.event === 'remove') {
window.remove(obj);
} else if (obj.event === 'edit') {
window.edit(obj);
}
});
table.on('toolbar(user-table)', function(obj) {
if (obj.event === 'add') {
window.add();
} else if (obj.event === 'refresh') {
window.refresh();
} else if (obj.event === 'batchRemove') {
window.batchRemove(obj);
}
});
// 单元格编辑后的事件
table.on('edit(user-table)', function(obj){
//var field = obj.field; // 得到修改的字段
var value = obj.value // 得到修改后的值
//var oldValue = obj.oldValue // 得到修改前的值 -- v2.8.0 新增
var data = obj.data // 得到所在行所有键值
//var col = obj.getCol(); // 得到当前列的表头配置属性 -- v2.8.0 新增
// 值的校验
if(value.replace(/\s/g, '') === ''){
layer.tips('值不能为空', this, {tips: 1});
return obj.reedit(); // 重新编辑 -- v2.8.0 新增
}
// 只能为数值型
if(isNaN(value)) {
layer.tips('只能为数值', this, {tips: 1});
return obj.reedit();
}
// 编辑后续操作,如提交更新请求,以完成真实的数据更新
$.ajax({
type: "post",
url: "{:url('user.user/editPoint')}",
data: data,
dataType: 'json',
success: (res) => {
if(res.code === 0) {
layer.msg(res.msg, {icon: 1});
} else {
layer.msg(res.msg, {icon: 2});
return false;
}
}
})
// …
});
form.on('submit(user-query)', function(data) {
table.reload('user-table', {
where: data.field
})
return false;
});
form.on('switch(user-enable)', function(obj) {
layer.tips(this.value + ' ' + this.name + '' + obj.elem.checked, obj.othis);
var status = obj.elem.checked ? 1 : -1;
//执行用户审核
$.ajax({
type:'post',
url:"{:url('user.user/check')}",
data:{"id":this.value,"status":status},
dataType:'json',
success:function(res){
if(res.code == 0){
layer.msg(res.msg,{
icon:res.icon,
time:2000
}
//,function(){location.reload();}
);
} else {
layer.open({
title:'审核失败',
content:res.msg,
icon:5,
adim:6
})
}
}
});
return false;
});
//超级管理auth控制
form.on('checkbox(auth)', function(data){
var data = data.elem;
var auth = data.checked ? 1 : 0;
$.ajax({
type:'post',
url:"{:url('user.user/auth')}",
data:{"id":data.id,"auth":auth},
dataType:'json',
success:function(data){
if(data.code === 0){
layer.msg(data.msg,{
icon:6,
time:2000
}
//,function(){location.reload();}
);
} else {
layer.open({
title:'修改失败',
content:data.msg,
icon:5,
adim:6
})
}
}
});
return false;
});
window.add = function() {
layer.open({
type: 2,
title: '新增',
shade: 0.1,
area: [common.isModile()?'100%':'500px', common.isModile()?'100%':'450px'],
content: 'add.html'
});
}
window.edit = function(obj) {
layer.open({
type: 2,
title: '修改',
shade: 0.1,
area: ['500px', '450px'],
content: 'edit.html?id=' + obj.data.id
});
}
window.remove = function(obj) {
layer.confirm('确定要删除该用户', {
icon: 3,
title: '提示'
}, function(index) {
layer.close(index);
let loading = layer.load();
$.ajax({
url: "{:url('user.user/delete')}?id=" + obj.data['id'],
dataType: 'json',
type: 'delete',
success: function(result) {
layer.close(loading);
if (result.code === 0) {
layer.msg(result.msg, {
icon: 1,
time: 1000
}, function() {
obj.del();
});
} else {
layer.msg(result.msg, {
icon: 2,
time: 1000
});
}
}
})
});
}
window.batchRemove = function(obj) {
var checkIds = common.checkField(obj,'id');
console.log(checkIds)
if (checkIds === "") {
layer.msg("未选中数据", {
icon: 3,
time: 1000
});
return false;
}
layer.confirm('确定要删除这些用户', {
icon: 3,
title: '提示'
}, function(index) {
layer.close(index);
let loading = layer.load();
$.ajax({
url: "{:url('user.user/delete')}",
dataType: 'json',
type: 'delete',
data:{"id":checkIds},
success: function(result) {
layer.close(loading);
if (result.success) {
layer.msg(result.msg, {
icon: 1,
time: 1000
}, function() {
table.reload('user-table');
});
} else {
layer.msg(result.msg, {
icon: 2,
time: 1000
});
}
}
})
});
}
window.refresh = function(param) {
table.reload('user-table');
}
})
</script>
</body>
</html>