修改用户信息
This commit is contained in:
parent
19ae57b71e
commit
f7d39aa28d
|
|
@ -42,7 +42,6 @@ class Goods extends Base
|
|||
View::assign('count', $data['count']);
|
||||
View::assign('page', $data['page']);
|
||||
return View::fetch("Goods/goods");
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@ class User extends Base
|
|||
$value['pid_info'] = $pid_info;
|
||||
#关联user_account
|
||||
$user_account = UserAccount::where(['user_id' => $value['id']])->field('last_login_ip1,last_login_ip,ip_adcode,ip_province,ip_city')->find();
|
||||
// SELECT sum(goodslist_money) FROM xinglanmh_shequt_test.order_list where user_id=4490 and status=0 and goodslist_type=1
|
||||
// SELECT sum(goodslist_money) FROM order_list where user_id=4490 and status=0
|
||||
$user_hegui = OrderList::where('user_id', '=', $value['id'])->where('status', '=', 0)->sum('goodslist_money');
|
||||
//SELECT SUM(order_zhe_total) FROM `order` where `status`=1 and user_id=6153
|
||||
$user_all_total = Order::where('user_id', '=', $value['id'])->where('status', '=', 1)->sum('order_zhe_total');
|
||||
|
|
@ -80,6 +80,8 @@ class User extends Base
|
|||
$user_goodslist_money = OrderList::where('user_id', '=', $value['id'])->where('status', '=', 1)->sum('goodslist_money');
|
||||
// SELECT sum(goodslist_money) FROM `order_list` where `status`=2 and user_id=6153 # 发货价值
|
||||
$user_goodslist_money2 = OrderList::where('user_id', '=', $value['id'])->where('status', '=', 2)->sum('goodslist_money');
|
||||
//SELECT sum(goodslist_money) FROM order_list where user_id=4490 # 总出货价值
|
||||
$user_goodslist_money3 = OrderList::where('user_id', '=', $value['id'])->sum('goodslist_money');
|
||||
$last_login_ip = 0;
|
||||
if ($user_account) {
|
||||
if ($user_account['last_login_ip']) {
|
||||
|
|
@ -92,8 +94,8 @@ class User extends Base
|
|||
}
|
||||
|
||||
}
|
||||
if(empty($value['mobile'])){
|
||||
$value['mobile'] ='未绑定';
|
||||
if (empty($value['mobile'])) {
|
||||
$value['mobile'] = '未绑定';
|
||||
}
|
||||
$value['user_hegui'] = $user_hegui;
|
||||
$value['user_all_total'] = $user_all_total;
|
||||
|
|
@ -102,6 +104,7 @@ class User extends Base
|
|||
$value['user_use_integral'] = $user_use_integral;
|
||||
$value['user_goodslist_money'] = $user_goodslist_money;
|
||||
$value['user_goodslist_money2'] = $user_goodslist_money2;
|
||||
$value['user_goodslist_money3'] = $user_goodslist_money3;
|
||||
$value['last_login_ip'] = $last_login_ip;
|
||||
$value['ip_adcode'] = $user_account['ip_adcode'];
|
||||
$value['ip_province'] = $user_account['ip_province'];
|
||||
|
|
@ -121,6 +124,8 @@ class User extends Base
|
|||
'data' => $list
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 资金变动
|
||||
|
|
@ -794,4 +799,189 @@ class User extends Base
|
|||
View::assign('count', $count);
|
||||
return View::fetch("User/user_invite");
|
||||
}
|
||||
|
||||
/**
|
||||
* //用户列表页面表格操作一列增加查询用户盒柜,传入用户的id,点击显示一个弹出层,弹出层中有一个表格,这个弹出层有有查询条件(奖品状态(下拉框),奖品名称(输入框),盒子名称(输入框)),下面的sql语句是查询盒柜列表
|
||||
* goodslist_title 奖品名称,goodslist_money 回收价格,goodslist_price 售价,shang_id 奖品等级,order_id 订单id,order_num 订单编号,goods_id 盒子id,good_title 盒子名称,status奖品状态 0盒柜中 1回收 2选择发货
|
||||
*SELECT goodslist_title,goodslist_money, goodslist_price,goodslist_imgurl,shang_id,addtime,order_id,(select order_num from `order` where id=order_list.order_id) order_num,goods_id,(select title from goods where id=order_list.goods_id ) good_title,`status` FROM order_list where user_id=6153 order by`status`
|
||||
* 获取用户盒柜列表
|
||||
*/
|
||||
public function user_box_list()
|
||||
{
|
||||
$param = $this->request->param();
|
||||
$user_id = isset($param['user_id']) ? intval($param['user_id']) : 0;
|
||||
|
||||
if(empty($user_id)) {
|
||||
return json(['code' => 1, 'msg' => '参数错误', 'count' => 0, 'data' => []]);
|
||||
}
|
||||
|
||||
$where = [['user_id', '=', $user_id]];
|
||||
|
||||
// 添加筛选条件
|
||||
if(!empty($param['status'])) {
|
||||
$where[] = ['status', '=', $param['status']];
|
||||
}
|
||||
|
||||
if(!empty($param['goodslist_title'])) {
|
||||
$where[] = ['goodslist_title', 'like', "%{$param['goodslist_title']}%"];
|
||||
}
|
||||
|
||||
if(!empty($param['good_title'])) {
|
||||
// 通过goods表查询包含该名称的盒子ID
|
||||
$goods_ids = Db::name('goods')->where('title', 'like', "%{$param['good_title']}%")->column('id');
|
||||
if(!empty($goods_ids)) {
|
||||
$where[] = ['goods_id', 'in', $goods_ids];
|
||||
} else {
|
||||
// 如果没有找到匹配的盒子,返回空结果
|
||||
return json(['code' => 0, 'msg' => '未找到匹配的盒子', 'count' => 0, 'data' => []]);
|
||||
}
|
||||
}
|
||||
|
||||
// 添加获取时间查询条件
|
||||
if(!empty($param['addtime'])) {
|
||||
$times = explode(' - ', $param['addtime']);
|
||||
$where[] = ['addtime', 'between', [strtotime($times[0]), strtotime($times[1])]];
|
||||
}
|
||||
|
||||
// 构建查询 - 添加了shang_title字段和发货状态字段
|
||||
$query = Db::name('order_list')
|
||||
->where($where)
|
||||
->field('goodslist_title, goodslist_money, goodslist_price, goodslist_imgurl, shang_id, addtime, order_id, goods_id, status, fh_status, fh_remarks');
|
||||
|
||||
// 获取总数
|
||||
$count = $query->count();
|
||||
|
||||
// 分页查询
|
||||
$page = isset($param['page']) ? intval($param['page']) : 1;
|
||||
$limit = isset($param['limit']) ? intval($param['limit']) : 20;
|
||||
|
||||
$list = $query->page($page, $limit)
|
||||
->order('status, addtime desc')
|
||||
->select()
|
||||
->toArray();
|
||||
|
||||
// 处理订单编号、盒子名称和奖品类型
|
||||
foreach($list as &$item) {
|
||||
// 获取订单编号
|
||||
$order = Db::name('order')->where('id', $item['order_id'])->value('order_num');
|
||||
$item['order_num'] = $order ?: '无订单号';
|
||||
|
||||
// 获取盒子名称
|
||||
$good = Db::name('goods')->where('id', $item['goods_id'])->value('title');
|
||||
$item['good_title'] = $good ?: '未知盒子';
|
||||
|
||||
// 获取奖品类型名称
|
||||
$shang = Db::name('shang')->where('id', $item['shang_id'])->value('title');
|
||||
$item['shang_title'] = $shang ?: '未知类型';
|
||||
|
||||
// 处理发货状态,确保数据存在
|
||||
if ($item['status'] == 2) {
|
||||
$item['fh_status'] = isset($item['fh_status']) ? intval($item['fh_status']) : 0;
|
||||
} else {
|
||||
$item['fh_status'] = null;
|
||||
$item['fh_remarks'] = null;
|
||||
}
|
||||
}
|
||||
|
||||
return json([
|
||||
'code' => 0,
|
||||
'msg' => '',
|
||||
'count' => $count,
|
||||
'data' => $list
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户盒柜页面
|
||||
*/
|
||||
public function user_box()
|
||||
{
|
||||
$user_id = request()->param('id', 0);
|
||||
$nickname = request()->param('nickname', '');
|
||||
|
||||
// 验证参数
|
||||
if (empty($user_id)) {
|
||||
$this->renderError('参数错误');
|
||||
}
|
||||
|
||||
// 传递用户ID和昵称到模板
|
||||
View::assign('user_id', $user_id);
|
||||
View::assign('nickname', $nickname);
|
||||
|
||||
return View::fetch('User/user_box');
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户订单页面
|
||||
*/
|
||||
public function user_order()
|
||||
{
|
||||
$user_id = request()->param('id', 0);
|
||||
$nickname = request()->param('nickname', '');
|
||||
|
||||
// 验证参数
|
||||
if (empty($user_id)) {
|
||||
$this->renderError('参数错误');
|
||||
}
|
||||
|
||||
// 传递用户ID和昵称到模板
|
||||
View::assign('user_id', $user_id);
|
||||
View::assign('nickname', $nickname);
|
||||
|
||||
return View::fetch('User/user_order');
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户订单列表
|
||||
*/
|
||||
public function user_order_list()
|
||||
{
|
||||
$param = $this->request->param();
|
||||
$user_id = isset($param['user_id']) ? intval($param['user_id']) : 0;
|
||||
|
||||
if(empty($user_id)) {
|
||||
return json(['code' => 1, 'msg' => '参数错误', 'count' => 0, 'data' => []]);
|
||||
}
|
||||
|
||||
$where = [['user_id', '=', $user_id]];
|
||||
|
||||
// 添加筛选条件
|
||||
if(isset($param['status']) && $param['status'] !== '') {
|
||||
$where[] = ['status', '=', $param['status']];
|
||||
}
|
||||
|
||||
if(!empty($param['goods_title'])) {
|
||||
$where[] = ['goods_title', 'like', "%{$param['goods_title']}%"];
|
||||
}
|
||||
|
||||
// 添加支付时间查询条件
|
||||
if(!empty($param['pay_time'])) {
|
||||
$times = explode(' - ', $param['pay_time']);
|
||||
$where[] = ['pay_time', 'between', [strtotime($times[0]), strtotime($times[1])]];
|
||||
}
|
||||
|
||||
// 构建查询
|
||||
$query = Db::name('order')
|
||||
->where($where)
|
||||
->field('id, order_num, order_total, order_zhe_total, price, use_money, use_integral, use_score, goods_id, goods_title, num, goods_price, addtime, pay_time, status');
|
||||
|
||||
// 获取总数
|
||||
$count = $query->count();
|
||||
|
||||
// 分页查询
|
||||
$page = isset($param['page']) ? intval($param['page']) : 1;
|
||||
$limit = isset($param['limit']) ? intval($param['limit']) : 20;
|
||||
|
||||
$list = $query->page($page, $limit)
|
||||
->order('id desc')
|
||||
->select()
|
||||
->toArray();
|
||||
|
||||
return json([
|
||||
'code' => 0,
|
||||
'msg' => '',
|
||||
'count' => $count,
|
||||
'data' => $list
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -292,3 +292,7 @@ Route::rule('user_statistics', 'Statistics/UserStatistics', 'GET');
|
|||
|
||||
|
||||
Route::rule('user_list', 'User/list', 'GET');
|
||||
Route::rule('user_box', 'User/user_box', 'GET');
|
||||
Route::rule('user_box_list', 'User/user_box_list', 'GET');
|
||||
Route::rule('user_order', 'User/user_order', 'GET');
|
||||
Route::rule('user_order_list', 'User/user_order_list', 'GET');
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
<!-- 侧边菜单 -->
|
||||
<div class="layui-side layui-side-menu">
|
||||
<div class="layui-side layui-side-menu" >
|
||||
<div class="layui-side-scroll">
|
||||
<div class="layui-logo" lay-href="home/console.html">
|
||||
<span>{$config.title}</span>
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
<div class="layui-fluid">
|
||||
<div class="layui-card">
|
||||
<!-- 搜索表单 -->
|
||||
<div class="layui-form layui-card-header layuiadmin-card-header-auto">
|
||||
<div class="layui-form layui-card-header layuiadmin-card-header-auto" id="searchForm">
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<div class="layui-input-inline">
|
||||
|
|
@ -77,7 +77,7 @@
|
|||
<div class="user-info">
|
||||
<p class="user-id">UID:{{d.pid_info.id + 1260}}</p>
|
||||
<p class="user-detail">{{d.pid_info.nickname}}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{# } else { }}
|
||||
-
|
||||
|
|
@ -90,16 +90,17 @@
|
|||
<a class="layui-btn layui-btn-default layui-btn-xs" lay-event="give">赠送优惠券</a>
|
||||
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="detail">查看下级</a>
|
||||
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="ipDetail">查看ip登录列表</a>
|
||||
|
||||
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="viewBox">查看盒柜</a>
|
||||
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="viewOrder">查看订单</a>
|
||||
{{# if(d.ip_adcode == 1){ }}
|
||||
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="ipConvert">ip转换</a>
|
||||
{{# } }}
|
||||
|
||||
<div style="margin-top: 8px;">
|
||||
|
||||
<div>
|
||||
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="clearMobile">清空手机号</a>
|
||||
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="clearWechat">重置微信登录</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<!-- 添加充值按钮模板 -->
|
||||
|
|
@ -159,14 +160,26 @@
|
|||
|
||||
<!-- 修改合并列模板 -->
|
||||
<script type="text/html" id="combinedTpl">
|
||||
<div class="combined-values">
|
||||
<div>盒柜价值:{{(Number(d.user_hegui) * 100).toFixed(2)}}</div>
|
||||
<div class="user-extra-info">
|
||||
<div>总消费:{{Number(d.user_all_total).toFixed(2)}}</div>
|
||||
<div>总出货价值:{{Number(d.user_goodslist_money3).toFixed(2)}}</div>
|
||||
<div>盒柜价值:{{(Number(d.user_hegui)).toFixed(2)}}</div>
|
||||
<div>微信消费:{{Number(d.user_weixin_total).toFixed(2)}}</div>
|
||||
<div>余额消费:{{Number(d.user_use_money).toFixed(2)}}</div>
|
||||
<div>吧唧币消费:{{Number(d.user_use_integral).toFixed(2)}}</div>
|
||||
<div>货币消费:{{Number(d.user_use_integral).toFixed(2)}}</div>
|
||||
<div>回收货币:{{Number(d.user_goodslist_money).toFixed(2)}}</div>
|
||||
<div>发货价值:{{Number(d.user_goodslist_money2).toFixed(2)}}</div>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<!-- 添加新的用户附加信息模板 -->
|
||||
<script type="text/html" id="userExtraInfoTpl">
|
||||
<div class="user-extra-info">
|
||||
<div>注册时间:{{d.addtime ? timestampToDatetime(d.addtime) : '-'}}</div>
|
||||
<div>登录时间:{{d.last_login_time ? timestampToDatetime(d.last_login_time) : '空'}}</div>
|
||||
<div>IP:{{d.last_login_ip || '-'}}</div>
|
||||
<div>IP地址:{{d.ip_province || '-'}}</div>
|
||||
<div>IP邮编:{{d.ip_adcode || '-'}}</div>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
|
|
@ -175,6 +188,19 @@
|
|||
var table;
|
||||
var form;
|
||||
var laydate;
|
||||
|
||||
// 时间戳转日期时间格式 - 移到全局作用域
|
||||
function timestampToDatetime(timestamp) {
|
||||
var date = new Date(timestamp * 1000);
|
||||
var year = date.getFullYear();
|
||||
var month = ('0' + (date.getMonth() + 1)).slice(-2);
|
||||
var day = ('0' + date.getDate()).slice(-2);
|
||||
var hours = ('0' + date.getHours()).slice(-2);
|
||||
var minutes = ('0' + date.getMinutes()).slice(-2);
|
||||
var seconds = ('0' + date.getSeconds()).slice(-2);
|
||||
return year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds;
|
||||
}
|
||||
|
||||
layui.use(['table', 'form', 'laydate'], function () {
|
||||
table = layui.table;
|
||||
form = layui.form;
|
||||
|
|
@ -186,6 +212,7 @@
|
|||
, type: 'datetime'
|
||||
, range: true
|
||||
});
|
||||
console.log('full-' + Math.floor($('#searchForm').height() + 80));
|
||||
|
||||
// 表格实例
|
||||
table.render({
|
||||
|
|
@ -193,32 +220,16 @@
|
|||
, url: '{:url("/admin/user_list")}'
|
||||
, cellMinWidth: 80 // 设置最小列宽
|
||||
, lineStyle: 'height: 80px;' // 设置行高
|
||||
, height: 'full-150'
|
||||
, height: 'full-' + Math.floor($('#searchForm').height() + 100)
|
||||
, cols: [[
|
||||
{ field: 'userInfo', title: '用户信息', templet: '#userInfoTpl', width: 200 }
|
||||
, { field: 'pid_info', title: '推荐人', templet: '#pidInfoTpl', width: 200 }
|
||||
, { field: 'money', title: '余额', templet: '#moneyTpl', width: 120 }
|
||||
, { field: 'integral', title: '吧唧币', templet: '#integralTpl', width: 120 }
|
||||
, { field: 'integral', title: '货币', templet: '#integralTpl', width: 120 }
|
||||
, { field: 'score', title: '积分', templet: '#scoreTpl', width: 120 }
|
||||
, { field: 'combined', title: '货币信息', templet: '#combinedTpl', width: 200 }
|
||||
, {
|
||||
field: 'status', title: '用户状态', templet: '#statusTpl', width: 200
|
||||
}
|
||||
, {
|
||||
field: 'addtime', title: '注册时间', width: 160, templet: function (d) {
|
||||
var date = new Date(d.addtime * 1000);
|
||||
var year = date.getFullYear();
|
||||
var month = ('0' + (date.getMonth() + 1)).slice(-2);
|
||||
var day = ('0' + date.getDate()).slice(-2);
|
||||
var hours = ('0' + date.getHours()).slice(-2);
|
||||
var minutes = ('0' + date.getMinutes()).slice(-2);
|
||||
var seconds = ('0' + date.getSeconds()).slice(-2);
|
||||
return year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds;
|
||||
}
|
||||
}
|
||||
, { field: 'last_login_ip', title: 'IP', width: 150 }
|
||||
, { field: 'ip_province', title: 'IP地址', width: 160 }
|
||||
, { field: 'ip_adcode', title: 'IP邮编', width: 100 }
|
||||
, { field: 'status', title: '用户状态', templet: '#statusTpl', width: 200 }
|
||||
, { field: 'extraInfo', title: '用户信息', templet: '#userExtraInfoTpl', width: 220 }
|
||||
, { title: '操作', toolbar: '#operationTpl', width: 300, fixed: 'right' }
|
||||
]]
|
||||
, page: true
|
||||
|
|
@ -292,6 +303,24 @@
|
|||
case 'rechargeScore':
|
||||
recharge(data.id, data.nickname, 3, '积分');
|
||||
break;
|
||||
case 'viewBox':
|
||||
layer.open({
|
||||
type: 2,
|
||||
title: data.nickname + ' 的盒柜',
|
||||
content: '/admin/user_box?id=' + data.id + '&nickname=' + encodeURIComponent(data.nickname),
|
||||
area: ['95%', '90%'],
|
||||
maxmin: true
|
||||
});
|
||||
break;
|
||||
case 'viewOrder':
|
||||
layer.open({
|
||||
type: 2,
|
||||
title: data.nickname + ' 的订单列表',
|
||||
content: '/admin/user_order?id=' + data.id + '&nickname=' + encodeURIComponent(data.nickname),
|
||||
area: ['95%', '90%'],
|
||||
maxmin: true
|
||||
});
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
|
|
@ -554,6 +583,7 @@
|
|||
padding: 0px 0;
|
||||
|
||||
}
|
||||
|
||||
.layui-table thead th {
|
||||
height: 30px !important;
|
||||
}
|
||||
|
|
@ -565,6 +595,18 @@
|
|||
.layui-table-col-special {
|
||||
height: 30px !important;
|
||||
}
|
||||
|
||||
/* 添加用户附加信息样式 */
|
||||
.user-extra-info {
|
||||
font-size: 12px;
|
||||
color: rgba(0, 0, 0, 0.65);
|
||||
line-height: 1.8;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.user-extra-info div {
|
||||
margin-bottom: 3px;
|
||||
}
|
||||
</style>
|
||||
</body>
|
||||
|
||||
|
|
|
|||
228
app/admin/view/User/user_box.html
Normal file
228
app/admin/view/User/user_box.html
Normal file
|
|
@ -0,0 +1,228 @@
|
|||
{include file="Public:header2"/}
|
||||
|
||||
<body>
|
||||
<div class="layui-fluid">
|
||||
<div class="layui-card">
|
||||
<!-- 搜索表单 -->
|
||||
<div class="layui-form layui-card-header layuiadmin-card-header-auto">
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">奖品状态</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="status" lay-filter="status">
|
||||
<option value="">全部状态</option>
|
||||
<option value="0">盒柜中</option>
|
||||
<option value="1">已回收</option>
|
||||
<option value="2">选择发货</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">奖品名称</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="goodslist_title" autocomplete="off" class="layui-input"
|
||||
placeholder="奖品名称">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">盒子名称</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="good_title" autocomplete="off" class="layui-input"
|
||||
placeholder="盒子名称">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">获取时间</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" id="addtime" name="addtime" autocomplete="off" class="layui-input"
|
||||
placeholder="获取时间范围">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<button class="layui-btn" lay-submit lay-filter="boxSearch">
|
||||
搜索
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 数据表格 -->
|
||||
<div class="layui-card-body">
|
||||
<table id="user-box-table" lay-filter="user-box-table"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 定义复制按钮模板 -->
|
||||
<script type="text/html" id="copyOrderNumTpl">
|
||||
<a class="layui-btn layui-btn-xs" lay-event="copyOrderNum">复制订单号</a>
|
||||
</script>
|
||||
|
||||
<!-- 定义发货状态模板 -->
|
||||
<script type="text/html" id="fhStatusTpl">
|
||||
{{# if(d.status == 2) { }}
|
||||
{{# if(d.fh_status == 1) { }}
|
||||
<span class="layui-badge layui-bg-green">已发货</span>
|
||||
{{# } else if(d.fh_status == 2) { }}
|
||||
<span class="layui-badge layui-bg-red">未发货</span>
|
||||
{{# } else { }}
|
||||
<span class="layui-badge layui-bg-gray">待处理</span>
|
||||
{{# } }}
|
||||
{{# } else { }}
|
||||
-
|
||||
{{# } }}
|
||||
</script>
|
||||
|
||||
<!-- 定义发货备注模板 -->
|
||||
<script type="text/html" id="fhRemarksTpl">
|
||||
{{# if(d.status == 2 && d.fh_remarks) { }}
|
||||
<div class="layui-elip" title="{{d.fh_remarks}}">{{d.fh_remarks}}</div>
|
||||
{{# } else { }}
|
||||
-
|
||||
{{# } }}
|
||||
</script>
|
||||
|
||||
{include file="Public:footer"/}
|
||||
<script>
|
||||
layui.use(['table', 'form', 'laydate'], function () {
|
||||
var table = layui.table;
|
||||
var form = layui.form;
|
||||
var laydate = layui.laydate;
|
||||
|
||||
// 初始化日期范围选择器
|
||||
laydate.render({
|
||||
elem: '#addtime',
|
||||
type: 'datetime',
|
||||
range: true
|
||||
});
|
||||
|
||||
// 获取URL参数
|
||||
var user_id = '{$user_id}';
|
||||
var nickname = '{$nickname}';
|
||||
|
||||
// 设置页面标题
|
||||
document.title = nickname + ' 的盒柜';
|
||||
|
||||
// 初始化盒柜表格
|
||||
var boxTable = table.render({
|
||||
elem: '#user-box-table',
|
||||
url: '{:url("/admin/user_box_list")}',
|
||||
where: { user_id: user_id },
|
||||
height: 'full-140',
|
||||
cols: [[
|
||||
{ field: 'good_title', title: '盒子名称', width: 140 },
|
||||
{ field: 'goodslist_title', title: '奖品名称', width: 200 },
|
||||
{ field: 'shang_title', title: '奖品类型', width: 120 },
|
||||
{ field: 'goodslist_money', title: '回收价格', width: 100 },
|
||||
{ field: 'goodslist_price', title: '售价', width: 100 },
|
||||
{ field: 'order_num', title: '订单编号', width: 240 },
|
||||
{
|
||||
field: 'status', title: '状态', width: 100, templet: function (d) {
|
||||
var statusText = '';
|
||||
switch (parseInt(d.status)) {
|
||||
case 0: statusText = '<span class="layui-badge layui-bg-blue">盒柜中</span>'; break;
|
||||
case 1: statusText = '<span class="layui-badge layui-bg-orange">已回收</span>'; break;
|
||||
case 2: statusText = '<span class="layui-badge layui-bg-green">选择发货</span>'; break;
|
||||
default: statusText = '<span class="layui-badge layui-bg-gray">未知</span>';
|
||||
}
|
||||
return statusText;
|
||||
}
|
||||
},
|
||||
{ field: 'fh_status', title: '发货状态', width: 80, templet: '#fhStatusTpl' },
|
||||
{ field: 'fh_remarks', title: '发货备注', width: 120, templet: '#fhRemarksTpl' },
|
||||
{
|
||||
field: 'addtime', title: '获得时间', width: 160, templet: function (d) {
|
||||
return timestampToDatetime(d.addtime);
|
||||
}
|
||||
},
|
||||
{ title: '操作', toolbar: '#copyOrderNumTpl', width: 120 }
|
||||
]],
|
||||
page: true,
|
||||
limit: 50,
|
||||
text: {
|
||||
none: '暂无盒柜数据'
|
||||
}
|
||||
});
|
||||
|
||||
// 监听搜索按钮
|
||||
form.on('submit(boxSearch)', function (data) {
|
||||
boxTable.reload({
|
||||
where: {
|
||||
user_id: user_id,
|
||||
status: data.field.status,
|
||||
goodslist_title: data.field.goodslist_title,
|
||||
good_title: data.field.good_title,
|
||||
addtime: data.field.addtime
|
||||
},
|
||||
page: { curr: 1 }
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
// 监听表格工具条事件
|
||||
table.on('tool(user-box-table)', function (obj) {
|
||||
var data = obj.data;
|
||||
if (obj.event === 'copyOrderNum') {
|
||||
copyToClipboard(data.order_num);
|
||||
}
|
||||
});
|
||||
|
||||
// 复制到剪贴板函数
|
||||
function copyToClipboard(text) {
|
||||
// 创建临时文本区域
|
||||
var textarea = document.createElement('textarea');
|
||||
textarea.value = text;
|
||||
document.body.appendChild(textarea);
|
||||
textarea.select();
|
||||
|
||||
try {
|
||||
// 执行复制命令
|
||||
document.execCommand('copy');
|
||||
layer.msg('订单编号复制成功: ' + text, {icon: 1});
|
||||
} catch (err) {
|
||||
layer.msg('复制失败,请手动复制', {icon: 2});
|
||||
}
|
||||
|
||||
// 移除临时文本区域
|
||||
document.body.removeChild(textarea);
|
||||
}
|
||||
|
||||
// 时间戳转日期时间格式
|
||||
function timestampToDatetime(timestamp) {
|
||||
var date = new Date(timestamp * 1000);
|
||||
var year = date.getFullYear();
|
||||
var month = ('0' + (date.getMonth() + 1)).slice(-2);
|
||||
var day = ('0' + date.getDate()).slice(-2);
|
||||
var hours = ('0' + date.getHours()).slice(-2);
|
||||
var minutes = ('0' + date.getMinutes()).slice(-2);
|
||||
var seconds = ('0' + date.getSeconds()).slice(-2);
|
||||
return year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds;
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.layui-form-label {
|
||||
width: 90px;
|
||||
}
|
||||
|
||||
.layui-table thead th {
|
||||
background-color: #f8f8f8;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.layui-table-page {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* 添加发货备注的样式 */
|
||||
.layui-elip {
|
||||
max-width: 150px;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
</style>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
185
app/admin/view/User/user_order.html
Normal file
185
app/admin/view/User/user_order.html
Normal file
|
|
@ -0,0 +1,185 @@
|
|||
{include file="Public:header2"/}
|
||||
|
||||
<body>
|
||||
<div class="layui-fluid">
|
||||
<div class="layui-card">
|
||||
<!-- 搜索表单 -->
|
||||
<div class="layui-form layui-card-header layuiadmin-card-header-auto" id="searchForm">
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">订单状态</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="status">
|
||||
<option value="">全部</option>
|
||||
<option value="0">未支付</option>
|
||||
<option value="1">已支付</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">盒子标题</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="goods_title" placeholder="请输入盒子标题" autocomplete="off"
|
||||
class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">支付时间</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" id="pay_time" name="pay_time" class="layui-input" placeholder="支付时间范围">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<button class="layui-btn layuiadmin-btn-useradmin" data-type="search">
|
||||
<i class="layui-icon layui-icon-search layuiadmin-button-btn"></i> 搜索
|
||||
</button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 数据表格 -->
|
||||
<div class="layui-card-body">
|
||||
<table id="user-order-table" lay-filter="user-order-table"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 订单状态模板 -->
|
||||
<script type="text/html" id="statusTpl">
|
||||
{{# if(d.status == 0) { }}
|
||||
<span class="layui-badge layui-bg-gray">未支付</span>
|
||||
{{# } else if(d.status == 1) { }}
|
||||
<span class="layui-badge layui-bg-green">已支付</span>
|
||||
{{# } else { }}
|
||||
<span class="layui-badge layui-bg-black">未知状态</span>
|
||||
{{# } }}
|
||||
</script>
|
||||
|
||||
<!-- 时间格式化模板 -->
|
||||
<script type="text/html" id="timeTpl">
|
||||
{{# if(d.addtime) { }}
|
||||
{{ timestampToDatetime(d.addtime) }}
|
||||
{{# } else { }}
|
||||
-
|
||||
{{# } }}
|
||||
</script>
|
||||
|
||||
<script type="text/html" id="payTimeTpl">
|
||||
{{# if(d.pay_time) { }}
|
||||
{{ timestampToDatetime(d.pay_time) }}
|
||||
{{# } else { }}
|
||||
-
|
||||
{{# } }}
|
||||
</script>
|
||||
|
||||
{include file="Public:footer"/}
|
||||
<script>
|
||||
// 时间戳转日期时间格式
|
||||
function timestampToDatetime(timestamp) {
|
||||
var date = new Date(timestamp * 1000);
|
||||
var year = date.getFullYear();
|
||||
var month = ('0' + (date.getMonth() + 1)).slice(-2);
|
||||
var day = ('0' + date.getDate()).slice(-2);
|
||||
var hours = ('0' + date.getHours()).slice(-2);
|
||||
var minutes = ('0' + date.getMinutes()).slice(-2);
|
||||
var seconds = ('0' + date.getSeconds()).slice(-2);
|
||||
return year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds;
|
||||
}
|
||||
|
||||
layui.use(['table', 'form', 'laydate'], function () {
|
||||
var table = layui.table;
|
||||
var form = layui.form;
|
||||
var laydate = layui.laydate;
|
||||
var userId = '{$user_id}'; // 从控制器传过来的用户ID
|
||||
var nickname = '{$nickname}'; // 从控制器传过来的用户昵称
|
||||
|
||||
// 渲染日期时间范围选择器
|
||||
laydate.render({
|
||||
elem: '#pay_time',
|
||||
type: 'datetime',
|
||||
range: true
|
||||
});
|
||||
|
||||
// 表格实例
|
||||
table.render({
|
||||
elem: '#user-order-table',
|
||||
url: '{:url("/admin/user_order_list")}?user_id=' + userId,
|
||||
cellMinWidth: 80,
|
||||
height: 'full-' + Math.floor($('#searchForm').height() + 100),
|
||||
cols: [[
|
||||
{ field: 'id', title: 'ID', width: 80, sort: true, hide: false },
|
||||
{ field: 'order_num', title: '订单编号', width: 240 },
|
||||
{ field: 'goods_title', title: '盒子标题', width: 200 },
|
||||
{ field: 'num', title: '箱数', width: 80 },
|
||||
{ field: 'goods_price', title: '单价', width: 100 },
|
||||
{ field: 'order_total', title: '订单金额', width: 100 },
|
||||
{ field: 'order_zhe_total', title: '实际支付金额', width: 120 },
|
||||
{ field: 'price', title: '微信支付', width: 100 },
|
||||
{ field: 'use_money', title: '余额支付', width: 100 },
|
||||
{ field: 'use_integral', title: '货币支付', width: 100 },
|
||||
{ field: 'use_score', title: '积分支付', width: 100 },
|
||||
{ field: 'status', title: '订单状态', width: 100, templet: '#statusTpl' },
|
||||
{ field: 'addtime', title: '发起时间', width: 160, templet: '#timeTpl', sort: true },
|
||||
{ field: 'pay_time', title: '支付时间', width: 160, templet: '#payTimeTpl', sort: true }
|
||||
]],
|
||||
page: true,
|
||||
limit: 20,
|
||||
text: {
|
||||
none: '该用户暂无订单记录'
|
||||
}
|
||||
});
|
||||
|
||||
// 搜索和重置表单
|
||||
var active = {
|
||||
search: function () {
|
||||
var status = $('select[name="status"]').val();
|
||||
var goods_title = $('input[name="goods_title"]').val();
|
||||
var pay_time = $('input[name="pay_time"]').val();
|
||||
|
||||
table.reload('user-order-table', {
|
||||
where: {
|
||||
status: status,
|
||||
goods_title: goods_title,
|
||||
pay_time: pay_time
|
||||
},
|
||||
page: {
|
||||
curr: 1
|
||||
}
|
||||
});
|
||||
},
|
||||
reset: function () {
|
||||
$('#searchForm')[0].reset();
|
||||
form.render('select');
|
||||
table.reload('user-order-table', {
|
||||
where: {
|
||||
status: '',
|
||||
goods_title: '',
|
||||
pay_time: ''
|
||||
},
|
||||
page: {
|
||||
curr: 1
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
$('.layui-btn').on('click', function () {
|
||||
var type = $(this).data('type');
|
||||
active[type] ? active[type].call(this) : '';
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.layui-form-label {
|
||||
width: 80px;
|
||||
}
|
||||
|
||||
.layui-input-inline {
|
||||
width: 180px;
|
||||
}
|
||||
</style>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
Loading…
Reference in New Issue
Block a user