前端消息,积分列表优化
|
|
@ -259,7 +259,9 @@ class Common extends Controller
|
|||
if(!empty($data))
|
||||
{
|
||||
// 调用表格处理
|
||||
$ret = (new FormHandleModule())->Run($data['module'], $data['action'], $this->data_request);
|
||||
$params = $this->data_request;
|
||||
$params['system_admin'] = $this->admin;
|
||||
$ret = (new FormHandleModule())->Run($data['module'], $data['action'], $params);
|
||||
if($ret['code'] == 0)
|
||||
{
|
||||
$this->form_table = $ret['data']['table'];
|
||||
|
|
|
|||
|
|
@ -81,10 +81,11 @@ class IntegralLog extends Common
|
|||
|
||||
/**
|
||||
* 详情
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @datetime 2019-08-05T08:21:54+0800
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2020-06-29
|
||||
* @desc description
|
||||
*/
|
||||
public function Detail()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -23,7 +23,9 @@ use think\Db;
|
|||
class Message
|
||||
{
|
||||
// 基础条件
|
||||
public $condition_base = [];
|
||||
public $condition_base = [
|
||||
['is_delete_time', '=', 0],
|
||||
];
|
||||
|
||||
/**
|
||||
* 入口
|
||||
|
|
|
|||
|
|
@ -3,11 +3,11 @@
|
|||
<!-- content start -->
|
||||
<div class="account-pages">
|
||||
<div class="wrapper-page">
|
||||
<div class="text-center">
|
||||
<span class="logo fw-70">ShopXO</span>
|
||||
<div class="am-text-center">
|
||||
<span class="logo">ShopXO</span>
|
||||
</div>
|
||||
<div class="m-t-40 card-box admin-login">
|
||||
<div class="panel-body">
|
||||
<div class="am-margin-top-lg admin-login">
|
||||
<div class="am-padding-sm">
|
||||
<form class="am-form form-validation" action="{{:MyUrl('admin/admin/login')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/index/index')}}">
|
||||
<div class="am-g">
|
||||
<div class="am-form-group am-form-group-refreshing">
|
||||
|
|
@ -20,7 +20,7 @@
|
|||
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm am-btn-block" data-am-loading="{loadingText:'登录中...'}">登录</button>
|
||||
</div>
|
||||
|
||||
<div class="am-form-group am-form-group-refreshing">
|
||||
<div class="am-form-group am-form-group-refreshing am-text-left am-margin-bottom-0">
|
||||
<a href="javascript:;" class="text-muted" data-am-popover="{theme: 'danger sm', content: '请联系管理员重置密码', trigger: 'hover focus'}">忘记密码?</a>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -31,6 +31,13 @@
|
|||
</div>
|
||||
<!-- content end -->
|
||||
|
||||
<!-- 随机背景图片 -->
|
||||
<div class="bg-slides">
|
||||
{{for start="1" end="11"}}
|
||||
<div class="bg-slides-item" style="background-image:url('{{$attachment_host}}/static/admin/default/images/login/{{$i}}.jpg');{{if $i neq 1}}display:none;{{/if}}"></div>
|
||||
{{/for}}
|
||||
</div>
|
||||
|
||||
<!-- 插件扩展数据 start -->
|
||||
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true}}
|
||||
<div class="plugins-tag">
|
||||
|
|
|
|||
|
|
@ -458,7 +458,7 @@
|
|||
}
|
||||
}
|
||||
{{/php}}
|
||||
|
||||
|
||||
<!-- footer start -->
|
||||
{{include file="public/footer" /}}
|
||||
<!-- footer end -->
|
||||
|
|
@ -295,6 +295,12 @@ class Common extends Controller
|
|||
$this->assign('controller_name', $controller_name);
|
||||
$this->assign('action_name', $action_name);
|
||||
|
||||
// 分页信息
|
||||
$this->page = max(1, isset($this->data_request['page']) ? intval($this->data_request['page']) : 1);
|
||||
$this->page_size = MyC('admin_page_number', 10, true);
|
||||
$this->assign('page', $this->page);
|
||||
$this->assign('page_size', $this->page_size);
|
||||
|
||||
// 控制器静态文件状态css,js
|
||||
$module_css = $module_name.DS.$default_theme.DS.'css'.DS.$controller_name;
|
||||
$module_css .= file_exists(ROOT_PATH.'static'.DS.$module_css.'.'.$action_name.'.css') ? '.'.$action_name.'.css' : '.css';
|
||||
|
|
@ -387,7 +393,9 @@ class Common extends Controller
|
|||
if(!empty($data))
|
||||
{
|
||||
// 调用表格处理
|
||||
$ret = (new FormHandleModule())->Run($data['module'], $data['action'], $this->data_request);
|
||||
$params = $this->data_request;
|
||||
$params['system_user'] = $this->user;
|
||||
$ret = (new FormHandleModule())->Run($data['module'], $data['action'], $params);
|
||||
if($ret['code'] == 0)
|
||||
{
|
||||
$this->form_table = $ret['data']['table'];
|
||||
|
|
|
|||
|
|
@ -48,58 +48,68 @@ class Message extends Common
|
|||
*/
|
||||
public function Index()
|
||||
{
|
||||
// 参数
|
||||
$params = input();
|
||||
$params['user'] = $this->user;
|
||||
|
||||
// 消息更新未已读
|
||||
MessageService::MessageRead($params);
|
||||
// 总数
|
||||
$total = MessageService::MessageTotal($this->form_where);
|
||||
|
||||
// 分页
|
||||
$number = 10;
|
||||
|
||||
// 条件
|
||||
$where = MessageService::MessageListWhere($params);
|
||||
|
||||
// 获取总数
|
||||
$total = MessageService::MessageTotal($where);
|
||||
|
||||
// 分页
|
||||
$page_params = array(
|
||||
'number' => $number,
|
||||
'total' => $total,
|
||||
'where' => $params,
|
||||
'page' => isset($params['page']) ? intval($params['page']) : 1,
|
||||
'url' => MyUrl('index/message/index'),
|
||||
);
|
||||
$page_params = [
|
||||
'number' => $this->page_size,
|
||||
'total' => $total,
|
||||
'where' => $this->data_request,
|
||||
'page' => $this->page,
|
||||
'url' => MyUrl('index/message/index'),
|
||||
];
|
||||
$page = new \base\Page($page_params);
|
||||
$this->assign('page_html', $page->GetPageHtml());
|
||||
|
||||
// 获取列表
|
||||
$data_params = array(
|
||||
'm' => $page->GetPageStarNumber(),
|
||||
'n' => $number,
|
||||
'where' => $where,
|
||||
);
|
||||
$data = MessageService::MessageList($data_params);
|
||||
$this->assign('data_list', $data['data']);
|
||||
|
||||
// 业务类型
|
||||
$this->assign('common_business_type_list', lang('common_business_type_list'));
|
||||
|
||||
// 消息类型
|
||||
$this->assign('common_message_type_list', lang('common_message_type_list'));
|
||||
|
||||
// 是否已读
|
||||
$this->assign('common_is_read_list', lang('common_is_read_list'));
|
||||
$data_params = [
|
||||
'where' => $this->form_where,
|
||||
'm' => $page->GetPageStarNumber(),
|
||||
'n' => $this->page_size,
|
||||
];
|
||||
$ret = MessageService::MessageList($data_params);
|
||||
|
||||
// 浏览器名称
|
||||
$this->assign('home_seo_site_title', SeoService::BrowserSeoTitle('我的消息', 1));
|
||||
|
||||
// 参数
|
||||
$this->assign('params', $params);
|
||||
// 基础参数赋值
|
||||
$this->assign('params', $this->data_request);
|
||||
$this->assign('page_html', $page->GetPageHtml());
|
||||
$this->assign('data_list', $ret['data']);
|
||||
return $this->fetch();
|
||||
}
|
||||
|
||||
/**
|
||||
* 详情
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2020-06-29
|
||||
* @desc description
|
||||
*/
|
||||
public function Detail()
|
||||
{
|
||||
if(!empty($this->data_request['id']))
|
||||
{
|
||||
// 条件
|
||||
$where = [
|
||||
['id', '=', intval($this->data_request['id'])],
|
||||
];
|
||||
|
||||
// 获取列表
|
||||
$data_params = [
|
||||
'm' => 0,
|
||||
'n' => 1,
|
||||
'where' => $where,
|
||||
];
|
||||
$ret = MessageService::MessageList($data_params);
|
||||
$data = (empty($ret['data']) || empty($ret['data'][0])) ? [] : $ret['data'][0];
|
||||
$this->assign('data', $data);
|
||||
}
|
||||
|
||||
$this->assign('is_header', 0);
|
||||
$this->assign('is_footer', 0);
|
||||
return $this->fetch();
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
@ -48,49 +48,68 @@ class UserIntegral extends Common
|
|||
*/
|
||||
public function Index()
|
||||
{
|
||||
// 参数
|
||||
$params = input();
|
||||
$params['user'] = $this->user;
|
||||
// 总数
|
||||
$total = IntegralService::IntegralLogTotal($this->form_where);
|
||||
|
||||
// 分页
|
||||
$number = 10;
|
||||
|
||||
// 条件
|
||||
$where = IntegralService::UserIntegralLogListWhere($params);
|
||||
|
||||
// 获取总数
|
||||
$total = IntegralService::IntegralLogTotal($where);
|
||||
|
||||
// 分页
|
||||
$page_params = array(
|
||||
'number' => $number,
|
||||
'total' => $total,
|
||||
'where' => $params,
|
||||
'page' => isset($params['page']) ? intval($params['page']) : 1,
|
||||
'url' => MyUrl('index/userintegral/index'),
|
||||
);
|
||||
$page_params = [
|
||||
'number' => $this->page_size,
|
||||
'total' => $total,
|
||||
'where' => $this->data_request,
|
||||
'page' => $this->page,
|
||||
'url' => MyUrl('admin/userintegral/index'),
|
||||
];
|
||||
$page = new \base\Page($page_params);
|
||||
$this->assign('page_html', $page->GetPageHtml());
|
||||
|
||||
// 获取列表
|
||||
$data_params = array(
|
||||
'm' => $page->GetPageStarNumber(),
|
||||
'n' => $number,
|
||||
'where' => $where,
|
||||
);
|
||||
$data = IntegralService::IntegralLogList($data_params);
|
||||
$this->assign('data_list', $data['data']);
|
||||
|
||||
// 操作类型
|
||||
$this->assign('common_integral_log_type_list', lang('common_integral_log_type_list'));
|
||||
$data_params = [
|
||||
'where' => $this->form_where,
|
||||
'm' => $page->GetPageStarNumber(),
|
||||
'n' => $this->page_size,
|
||||
];
|
||||
$ret = IntegralService::IntegralLogList($data_params);
|
||||
|
||||
// 浏览器名称
|
||||
$this->assign('home_seo_site_title', SeoService::BrowserSeoTitle('我的积分', 1));
|
||||
|
||||
// 参数
|
||||
$this->assign('params', $params);
|
||||
// 基础参数赋值
|
||||
$this->assign('params', $this->data_request);
|
||||
$this->assign('page_html', $page->GetPageHtml());
|
||||
$this->assign('data_list', $ret['data']);
|
||||
return $this->fetch();
|
||||
}
|
||||
|
||||
/**
|
||||
* 详情
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2020-06-29
|
||||
* @desc description
|
||||
*/
|
||||
public function Detail()
|
||||
{
|
||||
if(!empty($this->data_request['id']))
|
||||
{
|
||||
// 条件
|
||||
$where = [
|
||||
['id', '=', intval($this->data_request['id'])],
|
||||
];
|
||||
|
||||
// 获取列表
|
||||
$data_params = [
|
||||
'm' => 0,
|
||||
'n' => 1,
|
||||
'where' => $where,
|
||||
];
|
||||
$ret = IntegralService::IntegralLogList($data_params);
|
||||
$data = (empty($ret['data']) || empty($ret['data'][0])) ? [] : $ret['data'][0];
|
||||
$this->assign('data', $data);
|
||||
}
|
||||
|
||||
$this->assign('is_header', 0);
|
||||
$this->assign('is_footer', 0);
|
||||
return $this->fetch();
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
@ -0,0 +1,148 @@
|
|||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | ShopXO 国内领先企业级B2C免费开源电商系统
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2011~2019 http://shopxo.net All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: Devil
|
||||
// +----------------------------------------------------------------------
|
||||
namespace app\index\form;
|
||||
|
||||
use think\Db;
|
||||
|
||||
/**
|
||||
* 用户消息动态表格
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2020-06-29
|
||||
* @desc description
|
||||
*/
|
||||
class Message
|
||||
{
|
||||
// 基础条件
|
||||
public $condition_base = [
|
||||
['user_is_delete_time', '=', 0],
|
||||
];
|
||||
|
||||
/**
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2020-06-29
|
||||
* @desc description
|
||||
* @param [array] $params [输入参数]
|
||||
*/
|
||||
public function __construct($params = [])
|
||||
{
|
||||
// 用户信息
|
||||
if(!empty($params['system_user']))
|
||||
{
|
||||
$this->condition_base[] = ['user_id', '=', $params['system_user']['id']];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 入口
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2020-06-29
|
||||
* @desc description
|
||||
* @param [array] $params [输入参数]
|
||||
*/
|
||||
public function Run($params = [])
|
||||
{
|
||||
return [
|
||||
// 基础配置
|
||||
'base' => [
|
||||
'key_field' => 'id',
|
||||
'is_search' => 1,
|
||||
'search_url' => MyUrl('index/message/index'),
|
||||
],
|
||||
// 表单配置
|
||||
'form' => [
|
||||
[
|
||||
'label' => '消息类型',
|
||||
'view_type' => 'field',
|
||||
'view_key' => 'type_text',
|
||||
'search_config' => [
|
||||
'form_type' => 'select',
|
||||
'form_name' => 'type',
|
||||
'where_type' => 'in',
|
||||
'data' => lang('common_message_type_list'),
|
||||
'data_key' => 'id',
|
||||
'data_name' => 'name',
|
||||
'is_multiple' => 1,
|
||||
],
|
||||
],
|
||||
[
|
||||
'label' => '业务类型',
|
||||
'view_type' => 'field',
|
||||
'view_key' => 'business_type_text',
|
||||
'search_config' => [
|
||||
'form_type' => 'select',
|
||||
'form_name' => 'business_type',
|
||||
'where_type' => 'in',
|
||||
'data' => lang('common_business_type_list'),
|
||||
'data_key' => 'id',
|
||||
'data_name' => 'name',
|
||||
'is_multiple' => 1,
|
||||
],
|
||||
],
|
||||
[
|
||||
'label' => '标题',
|
||||
'view_type' => 'field',
|
||||
'view_key' => 'title',
|
||||
'search_config' => [
|
||||
'form_type' => 'input',
|
||||
'where_type' => 'like',
|
||||
],
|
||||
],
|
||||
[
|
||||
'label' => '详情',
|
||||
'view_type' => 'field',
|
||||
'view_key' => 'detail',
|
||||
'grid_size' => 'lg',
|
||||
'search_config' => [
|
||||
'form_type' => 'input',
|
||||
'where_type' => 'like',
|
||||
],
|
||||
],
|
||||
[
|
||||
'label' => '状态',
|
||||
'view_type' => 'field',
|
||||
'view_key' => 'is_read_text',
|
||||
'search_config' => [
|
||||
'form_type' => 'select',
|
||||
'form_name' => 'is_read',
|
||||
'where_type' => 'in',
|
||||
'data' => lang('common_is_read_list'),
|
||||
'data_key' => 'id',
|
||||
'data_name' => 'name',
|
||||
'is_multiple' => 1,
|
||||
],
|
||||
],
|
||||
[
|
||||
'label' => '时间',
|
||||
'view_type' => 'field',
|
||||
'view_key' => 'add_time_time',
|
||||
'search_config' => [
|
||||
'form_type' => 'datetime',
|
||||
'form_name' => 'add_time',
|
||||
],
|
||||
],
|
||||
[
|
||||
'label' => '操作',
|
||||
'view_type' => 'operate',
|
||||
'view_key' => 'message/module/operate',
|
||||
'align' => 'center',
|
||||
'fixed' => 'right',
|
||||
],
|
||||
],
|
||||
];
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
@ -0,0 +1,133 @@
|
|||
<?php
|
||||
// +----------------------------------------------------------------------
|
||||
// | ShopXO 国内领先企业级B2C免费开源电商系统
|
||||
// +----------------------------------------------------------------------
|
||||
// | Copyright (c) 2011~2019 http://shopxo.net All rights reserved.
|
||||
// +----------------------------------------------------------------------
|
||||
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
|
||||
// +----------------------------------------------------------------------
|
||||
// | Author: Devil
|
||||
// +----------------------------------------------------------------------
|
||||
namespace app\index\form;
|
||||
|
||||
use think\Db;
|
||||
|
||||
/**
|
||||
* 用户积分动态表格
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2020-06-28
|
||||
* @desc description
|
||||
*/
|
||||
class Userintegral
|
||||
{
|
||||
// 基础条件
|
||||
public $condition_base = [];
|
||||
|
||||
/**
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2020-06-29
|
||||
* @desc description
|
||||
* @param [array] $params [输入参数]
|
||||
*/
|
||||
public function __construct($params = [])
|
||||
{
|
||||
// 用户信息
|
||||
if(!empty($params['system_user']))
|
||||
{
|
||||
$this->condition_base[] = ['user_id', '=', $params['system_user']['id']];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 入口
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2020-06-28
|
||||
* @desc description
|
||||
* @param [array] $params [输入参数]
|
||||
*/
|
||||
public function Run($params = [])
|
||||
{
|
||||
return [
|
||||
// 基础配置
|
||||
'base' => [
|
||||
'key_field' => 'id',
|
||||
'is_search' => 1,
|
||||
'search_url' => MyUrl('index/userintegral/index'),
|
||||
],
|
||||
// 表单配置
|
||||
'form' => [
|
||||
[
|
||||
'label' => '操作类型',
|
||||
'view_type' => 'field',
|
||||
'view_key' => 'type_text',
|
||||
'search_config' => [
|
||||
'form_type' => 'select',
|
||||
'form_name' => 'type',
|
||||
'where_type' => 'in',
|
||||
'data' => lang('common_integral_log_type_list'),
|
||||
'data_key' => 'id',
|
||||
'data_name' => 'name',
|
||||
'is_multiple' => 1,
|
||||
],
|
||||
],
|
||||
[
|
||||
'label' => '操作积分',
|
||||
'view_type' => 'field',
|
||||
'view_key' => 'operation_integral',
|
||||
'search_config' => [
|
||||
'form_type' => 'section',
|
||||
],
|
||||
],
|
||||
[
|
||||
'label' => '原始积分',
|
||||
'view_type' => 'field',
|
||||
'view_key' => 'original_integral',
|
||||
'search_config' => [
|
||||
'form_type' => 'section',
|
||||
],
|
||||
],
|
||||
[
|
||||
'label' => '最新积分',
|
||||
'view_type' => 'field',
|
||||
'view_key' => 'new_integral',
|
||||
'search_config' => [
|
||||
'form_type' => 'section',
|
||||
],
|
||||
],
|
||||
[
|
||||
'label' => '描述',
|
||||
'view_type' => 'field',
|
||||
'view_key' => 'msg',
|
||||
'grid_size' => 'sm',
|
||||
'search_config' => [
|
||||
'form_type' => 'input',
|
||||
'where_type' => 'like',
|
||||
],
|
||||
],
|
||||
[
|
||||
'label' => '时间',
|
||||
'view_type' => 'field',
|
||||
'view_key' => 'add_time_time',
|
||||
'search_config' => [
|
||||
'form_type' => 'datetime',
|
||||
'form_name' => 'add_time',
|
||||
],
|
||||
],
|
||||
[
|
||||
'label' => '操作',
|
||||
'view_type' => 'operate',
|
||||
'view_key' => 'userintegral/module/operate',
|
||||
'align' => 'center',
|
||||
'fixed' => 'right',
|
||||
],
|
||||
],
|
||||
];
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
<!-- 继承公共的 form -->
|
||||
{{extend name="public/module/detail" /}}
|
||||
|
|
@ -1,170 +1,2 @@
|
|||
{{include file="public/header" /}}
|
||||
|
||||
<!-- header top nav -->
|
||||
{{include file="public/header_top_nav" /}}
|
||||
|
||||
<!-- search -->
|
||||
{{include file="public/nav_search" /}}
|
||||
|
||||
<!-- header nav -->
|
||||
{{include file="public/header_nav" /}}
|
||||
|
||||
<!-- goods category -->
|
||||
{{include file="public/goods_category" /}}
|
||||
|
||||
<!-- content -->
|
||||
<div class="am-container user-main">
|
||||
|
||||
<!-- user menu start -->
|
||||
{{include file="public/user_menu" /}}
|
||||
<!-- user menu end -->
|
||||
|
||||
<!-- content start -->
|
||||
<div class="user-content">
|
||||
<div class="user-content-body">
|
||||
<form class="am-form form-validation form-search" method="post" action="{{:MyUrl('index/message/index')}}" request-type="form">
|
||||
<div class="thin">
|
||||
<div class="am-input-group am-input-group-sm am-fl so">
|
||||
<input type="text" autocomplete="off" name="keywords" class="am-radius" placeholder="其实搜索很简单 ^_^!" value="{{if !empty($params.keywords)}}{{$params.keywords}}{{/if}}" />
|
||||
<span class="am-input-group-btn">
|
||||
<button class="am-btn am-btn-default am-radius" type="submit" data-am-loading="{spinner:'circle-o-notch', loadingText:'搜索中...'}">搜索</button>
|
||||
</span>
|
||||
</div>
|
||||
<label class="am-fl thin_sub more-submit">
|
||||
更多筛选条件
|
||||
{{if isset($params['is_more']) and $params['is_more'] eq 1}}
|
||||
<input type="checkbox" name="is_more" value="1" id="is_more" checked />
|
||||
<i class="am-icon-angle-up"></i>
|
||||
{{else /}}
|
||||
<input type="checkbox" name="is_more" value="1" id="is_more" />
|
||||
<i class="am-icon-angle-down"></i>
|
||||
{{/if}}
|
||||
</label>
|
||||
</div>
|
||||
<table class="so-list more-where {{if !isset($params['is_more'])}}none{{/if}}">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<span>类型:</span>
|
||||
<select name="type" class="chosen-select" data-placeholder="消息类型...">
|
||||
<option value="-1">消息类型...</option>
|
||||
{{if !empty($common_message_type_list)}}
|
||||
{{foreach $common_message_type_list as $v}}
|
||||
<option value="{{$v.id}}" {{if isset($params['type']) and $params['type'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
|
||||
{{/foreach}}
|
||||
{{/if}}
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
<span>业务:</span>
|
||||
<select name="business_type" class="chosen-select" data-placeholder="业务类型...">
|
||||
<option value="-1">业务类型...</option>
|
||||
{{if !empty($common_business_type_list)}}
|
||||
{{foreach $common_business_type_list as $v}}
|
||||
<option value="{{$v.id}}" {{if isset($params['business_type']) and $params['business_type'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
|
||||
{{/foreach}}
|
||||
{{/if}}
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<span>状态:</span>
|
||||
<select name="is_read" class="chosen-select" data-placeholder="消息状态...">
|
||||
<option value="-1">消息状态...</option>
|
||||
{{if !empty($common_is_read_list)}}
|
||||
{{foreach $common_is_read_list as $v}}
|
||||
<option value="{{$v.id}}" {{if isset($params['is_read']) and $params['is_read'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
|
||||
{{/foreach}}
|
||||
{{/if}}
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
<button type="submit" class="am-btn am-btn-primary am-radius am-btn-xs btn-loading-example" data-am-loading="{spinner:'circle-o-notch', loadingText:'搜索中...'}">搜索</button>
|
||||
<a href="{{:MyUrl('index/message/index')}}" class="am-btn am-btn-warning am-radius am-btn-sm reset-submit">清除条件</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
|
||||
<!-- 列表 -->
|
||||
<div class="data-list am-margin-top-sm">
|
||||
<table class="am-table am-table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="am-hide-sm-only">标题</th>
|
||||
<th class="am-hide-sm-only">类型</th>
|
||||
<th class="am-hide-sm-only">业务</th>
|
||||
<th>详情</th>
|
||||
<th class="am-hide-sm-only">状态</th>
|
||||
<th class="am-hide-md-down">时间</th>
|
||||
<th>更多</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{if !empty($data_list)}}
|
||||
{{foreach $data_list as $v}}
|
||||
<tr>
|
||||
<td class="am-hide-sm-only">{{$v.title}}</td>
|
||||
<td class="am-hide-sm-only">{{$v.type_text}}</td>
|
||||
<td class="am-hide-sm-only">{{$v.business_type_text}}</td>
|
||||
<td>{{$v.detail}}</td>
|
||||
<td class="am-hide-sm-only">{{$v.is_read_text}}</td>
|
||||
<td class="am-hide-md-down">{{$v.add_time_time}}</td>
|
||||
<td>
|
||||
<span class="am-icon-caret-down c-p" data-am-modal="{target: '#my-popup{{$v.id}}'}"> 查看更多</span>
|
||||
<div class="am-popup am-radius" id="my-popup{{$v.id}}">
|
||||
<div class="am-popup-inner">
|
||||
<div class="am-popup-hd">
|
||||
<h4 class="am-popup-title">详情内容</h4>
|
||||
<span data-am-modal-close
|
||||
class="am-close">×</span>
|
||||
</div>
|
||||
<div class="am-popup-bd">
|
||||
<dl class="dl-content">
|
||||
<dt>标题</dt>
|
||||
<dd>{{$v.title}}</dd>
|
||||
|
||||
<dt>类型</dt>
|
||||
<dd>{{$v.type_text}}</dd>
|
||||
|
||||
<dt>业务</dt>
|
||||
<dd>{{$v.business_type_text}}</dd>
|
||||
|
||||
<dt>详情</dt>
|
||||
<dd>{{$v.detail}}</dd>
|
||||
|
||||
<dt>状态</dt>
|
||||
<dd>{{$v.is_read_text}}</dd>
|
||||
|
||||
<dt>时间</dt>
|
||||
<dd>{{$v.add_time_time}}</dd>
|
||||
</dl>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
{{/foreach}}
|
||||
{{/if}}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{{if empty($data_list)}}
|
||||
<div class="table-no"><i class="am-icon-warning"></i> 没有相关数据</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
|
||||
<!-- 分页 -->
|
||||
{{if !empty($data_list)}}
|
||||
{{$page_html|raw}}
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
<!-- content end -->
|
||||
</div>
|
||||
|
||||
<!-- footer start -->
|
||||
{{include file="public/footer" /}}
|
||||
<!-- footer end -->
|
||||
<!-- 继承公共的 form -->
|
||||
{{extend name="public/module/form" /}}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
<!-- 操作栏 -->
|
||||
<button type="button" class="am-btn am-btn-default am-btn-xs am-radius am-btn-block submit-popup" data-url="{{:MyUrl('index/message/detail', ['id'=>$module_data['id']])}}">
|
||||
<i class="am-icon-eye"></i>
|
||||
<span>详情</span>
|
||||
</button>
|
||||
|
|
@ -0,0 +1,164 @@
|
|||
{{include file="public/header" /}}
|
||||
|
||||
<!-- content top hook -->
|
||||
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true and (!isset($is_footer) or $is_footer eq 1)}}
|
||||
<div class="plugins-tag">
|
||||
<span>{{$hook_name_detail_top}}</span>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{php}}
|
||||
$hook_data = Hook::listen($hook_name_detail_top, ['hook_name'=>$hook_name_detail_top, 'is_backend'=>true]);
|
||||
if(!empty($hook_data) && is_array($hook_data))
|
||||
{
|
||||
foreach($hook_data as $hook)
|
||||
{
|
||||
if(is_string($hook) || is_int($hook))
|
||||
{
|
||||
echo htmlspecialchars_decode($hook);
|
||||
}
|
||||
}
|
||||
}
|
||||
{{/php}}
|
||||
|
||||
<!-- content start -->
|
||||
<div class="am-padding-sm">
|
||||
<!-- content inside top hook -->
|
||||
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true and (!isset($is_footer) or $is_footer eq 1)}}
|
||||
<div class="plugins-tag">
|
||||
<span>{{$hook_name_detail_inside_top}}</span>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{php}}
|
||||
$hook_data = Hook::listen($hook_name_detail_inside_top, ['hook_name'=>$hook_name_detail_inside_top, 'is_backend'=>true]);
|
||||
if(!empty($hook_data) && is_array($hook_data))
|
||||
{
|
||||
foreach($hook_data as $hook)
|
||||
{
|
||||
if(is_string($hook) || is_int($hook))
|
||||
{
|
||||
echo htmlspecialchars_decode($hook);
|
||||
}
|
||||
}
|
||||
}
|
||||
{{/php}}
|
||||
|
||||
<!-- data -->
|
||||
{{if !empty($data)}}
|
||||
{{block name="detail_data"}}
|
||||
{{if !empty($form_table) and !empty($form_table['form']) and is_array($form_table['form'])}}
|
||||
{{if !empty($form_table['base']) and !empty($form_table['base']['detail_title'])}}
|
||||
<div class="am-panel am-panel-default">
|
||||
<div class="am-panel-hd">{{$form_table.base.detail_title}}</div>
|
||||
<div class="am-panel-bd">
|
||||
{{/if}}
|
||||
<dl class="dl-content">
|
||||
{{foreach $form_table.form as $t}}
|
||||
{{if isset($t['label']) and isset($t['view_type']) and in_array($t['view_type'], ['field', 'module', 'status']) and (!isset($t['is_detail']) or $t['is_detail'] eq 1)}}
|
||||
<dt><strong>{{$t.label}}</strong></dt>
|
||||
<dd>
|
||||
{{switch $t.view_type}}
|
||||
{{case field}}
|
||||
<!-- 如果字段为数组则处理多个字段拼接数据 -->
|
||||
{{if is_array($t['view_key'])}}
|
||||
{{foreach $t['view_key'] as $fk=>$fv}}
|
||||
{{if isset($data[$fv])}}
|
||||
{{$data[$fv]}}
|
||||
<!-- 多个字段拼接数据的的拼接字符 -->
|
||||
{{if isset($t['view_key_join']) and $fk lt count($t['view_key'])-1}}
|
||||
{{$t.view_key_join|raw}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/foreach}}
|
||||
{{else /}}
|
||||
<!-- 非数组则直接取值 -->
|
||||
{{if isset($data[$t['view_key']])}}
|
||||
<!-- 是否指定数据转换 -->
|
||||
{{if !empty($t['view_data']) and is_array($t['view_data']) and isset($t['view_data'][$data[$t['view_key']]])}}
|
||||
{{$t['view_data'][$data[$t['view_key']]]}}
|
||||
|
||||
<!-- 直接展示数据 -->
|
||||
{{else /}}
|
||||
{{$data[$t['view_key']]|raw}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/case}}
|
||||
{{case module}}
|
||||
<!-- 从模块加载自定义模块数据 -->
|
||||
{{:ModuleInclude($t['view_key'], $data, ['form_request_type'=>'detail'])}}
|
||||
{{/case}}
|
||||
{{case status}}
|
||||
<!-- 数据状态操作按钮组件 -->
|
||||
{{if !empty($t['key_field']) and !empty($t['post_url'])}}
|
||||
<a href="javascript:;"
|
||||
class="am-icon-btn am-icon-check submit-state {{if $data[$t['view_key']] eq 1}}am-success{{else /}}am-default{{/if}}"
|
||||
data-url="{{$t.post_url}}"
|
||||
data-id="{{if isset($data[$t['key_field']])}}{{$data[$t['key_field']]}}{{/if}}"
|
||||
data-state="{{$data[$t['view_key']]}}"
|
||||
data-field="{{$t.view_key}}"
|
||||
data-is-update-status="{{if isset($t['is_form_su'])}}{{$t.is_form_su}}{{else /}}0{{/if}}"
|
||||
></a>
|
||||
{{/if}}
|
||||
{{/case}}
|
||||
{{/switch}}
|
||||
</dd>
|
||||
{{/if}}
|
||||
{{/foreach}}
|
||||
</dl>
|
||||
{{if !empty($form_table['base']) and !empty($form_table['base']['detail_title'])}}
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/block}}
|
||||
{{else /}}
|
||||
{{block name="detail_not_data"}}
|
||||
<div class="table-no"><i class="am-icon-warning"></i> 没有相关数据</div>
|
||||
{{/block}}
|
||||
{{/if}}
|
||||
|
||||
<!-- content inside top hook -->
|
||||
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true and (!isset($is_footer) or $is_footer eq 1)}}
|
||||
<div class="plugins-tag">
|
||||
<span>{{$hook_name_detail_inside_bottom}}</span>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{php}}
|
||||
$hook_data = Hook::listen($hook_name_detail_inside_bottom, ['hook_name'=>$hook_name_detail_inside_bottom, 'is_backend'=>true]);
|
||||
if(!empty($hook_data) && is_array($hook_data))
|
||||
{
|
||||
foreach($hook_data as $hook)
|
||||
{
|
||||
if(is_string($hook) || is_int($hook))
|
||||
{
|
||||
echo htmlspecialchars_decode($hook);
|
||||
}
|
||||
}
|
||||
}
|
||||
{{/php}}
|
||||
</div>
|
||||
<!-- content end -->
|
||||
|
||||
<!-- content bottom hook -->
|
||||
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true and (!isset($is_footer) or $is_footer eq 1)}}
|
||||
<div class="plugins-tag">
|
||||
<span>{{$hook_name_detail_bottom}}</span>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{php}}
|
||||
$hook_data = Hook::listen($hook_name_detail_bottom, ['hook_name'=>$hook_name_detail_bottom, 'is_backend'=>true]);
|
||||
if(!empty($hook_data) && is_array($hook_data))
|
||||
{
|
||||
foreach($hook_data as $hook)
|
||||
{
|
||||
if(is_string($hook) || is_int($hook))
|
||||
{
|
||||
echo htmlspecialchars_decode($hook);
|
||||
}
|
||||
}
|
||||
}
|
||||
{{/php}}
|
||||
|
||||
<!-- footer start -->
|
||||
{{include file="public/footer" /}}
|
||||
<!-- footer end -->
|
||||
|
|
@ -0,0 +1,488 @@
|
|||
{{include file="public/header" /}}
|
||||
|
||||
<!-- header top nav -->
|
||||
{{include file="public/header_top_nav" /}}
|
||||
|
||||
<!-- search -->
|
||||
{{include file="public/nav_search" /}}
|
||||
|
||||
<!-- header nav -->
|
||||
{{include file="public/header_nav" /}}
|
||||
|
||||
<!-- goods category -->
|
||||
{{include file="public/goods_category" /}}
|
||||
|
||||
<!-- content -->
|
||||
<div class="am-container user-main">
|
||||
|
||||
<!-- user menu start -->
|
||||
{{include file="public/user_menu" /}}
|
||||
<!-- user menu end -->
|
||||
|
||||
<!-- content start -->
|
||||
<div class="user-content">
|
||||
<div class="user-content-body">
|
||||
<!-- content top hook -->
|
||||
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true and (!isset($is_footer) or $is_footer eq 1)}}
|
||||
<div class="plugins-tag">
|
||||
<span>{{$hook_name_content_top}}</span>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{php}}
|
||||
$hook_data = Hook::listen($hook_name_content_top, ['hook_name'=>$hook_name_content_top, 'is_backend'=>true]);
|
||||
if(!empty($hook_data) && is_array($hook_data))
|
||||
{
|
||||
foreach($hook_data as $hook)
|
||||
{
|
||||
if(is_string($hook) || is_int($hook))
|
||||
{
|
||||
echo htmlspecialchars_decode($hook);
|
||||
}
|
||||
}
|
||||
}
|
||||
{{/php}}
|
||||
|
||||
<!-- content start -->
|
||||
<div class="form-table-content">
|
||||
<!-- content inside top hook -->
|
||||
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true and (!isset($is_footer) or $is_footer eq 1)}}
|
||||
<div class="plugins-tag">
|
||||
<span>{{$hook_name_content_inside_top}}</span>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{php}}
|
||||
$hook_data = Hook::listen($hook_name_content_inside_top, ['hook_name'=>$hook_name_content_inside_top, 'is_backend'=>true]);
|
||||
if(!empty($hook_data) && is_array($hook_data))
|
||||
{
|
||||
foreach($hook_data as $hook)
|
||||
{
|
||||
if(is_string($hook) || is_int($hook))
|
||||
{
|
||||
echo htmlspecialchars_decode($hook);
|
||||
}
|
||||
}
|
||||
}
|
||||
{{/php}}
|
||||
|
||||
<!-- form -->
|
||||
{{if !empty($form_table) and !empty($form_table['base']) and !empty($form_table['form']) and is_array($form_table['base']) and is_array($form_table['form'])}}
|
||||
<form class="form-validation-search" method="post" action="{{if isset($form_table['base']['is_search']) and $form_table['base']['is_search'] eq 1 and !empty($form_table['base']['search_url'])}}{{$form_table.base.search_url}}{{/if}}" request-type="jump" request-value="{{if isset($form_table['base']['is_search']) and $form_table['base']['is_search'] eq 1 and !empty($form_table['base']['search_url'])}}{{$form_table.base.search_url}}{{/if}}">
|
||||
<!-- nav start -->
|
||||
<div class="am-g form-table-navigation">
|
||||
{{block name="form_navigation"}}{{/block}}
|
||||
</div>
|
||||
<!-- nav end -->
|
||||
|
||||
<!-- top operate start -->
|
||||
<div class="am-g form-table-operate-top">
|
||||
{{block name="form_operate_top"}}
|
||||
<!-- 公共操作 -->
|
||||
<!-- 是否开启删除操作 -->
|
||||
{{if isset($form_table['base']['is_delete']) and $form_table['base']['is_delete'] eq 1}}
|
||||
<button
|
||||
type="button"
|
||||
class="am-btn am-btn-danger am-radius am-btn-xs am-icon-trash-o form-table-operate-top-delete-submit"
|
||||
data-url="{{if isset($form_table['base']['delete_url'])}}{{$form_table.base.delete_url}}{{/if}}"
|
||||
data-form="{{if isset($form_table['base']['delete_form'])}}{{$form_table.base.delete_form}}{{/if}}"
|
||||
data-key="{{if isset($form_table['base']['delete_key'])}}{{$form_table.base.delete_key}}{{/if}}"
|
||||
data-confirm-title="{{if isset($form_table['base']['confirm_title'])}}{{$form_table.base.confirm_title}}{{/if}}"
|
||||
data-confirm-msg="{{if isset($form_table['base']['confirm_msg'])}}{{$form_table.base.confirm_msg}}{{/if}}"
|
||||
data-timeout="{{if isset($form_table['base']['timeout'])}}{{$form_table.base.timeout}}{{/if}}"
|
||||
> 删除</button>
|
||||
{{/if}}
|
||||
|
||||
<!-- 钩子 -->
|
||||
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true and (!isset($is_footer) or $is_footer eq 1)}}
|
||||
<div class="plugins-tag">
|
||||
<span>plugins_view_admin_goods_top_operate</span>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{php}}
|
||||
$hook_name = 'plugins_view_admin_goods_top_operate';
|
||||
$hook_data = Hook::listen($hook_name, ['hook_name'=>$hook_name, 'is_backend'=>true]);
|
||||
if(!empty($hook_data) && is_array($hook_data))
|
||||
{
|
||||
foreach($hook_data as $hook)
|
||||
{
|
||||
if(is_string($hook) || is_int($hook))
|
||||
{
|
||||
echo htmlspecialchars_decode($hook);
|
||||
}
|
||||
}
|
||||
}
|
||||
{{/php}}
|
||||
|
||||
<!-- 是否开启搜索操作 公共搜索操作放在最后面 -->
|
||||
{{if isset($form_table['base']['is_search']) and $form_table['base']['is_search'] eq 1}}
|
||||
<a href="{{if isset($form_table['base']['search_url'])}}{{$form_table.base.search_url}}{{/if}}" class="am-btn am-btn-warning am-radius am-btn-sm am-icon-filter"> 重置</a>
|
||||
<button type="submit" class="am-btn am-btn-primary am-radius am-btn-xs btn-loading-example am-icon-search" data-am-loading="{loadingText:' 搜索中...'}"> 搜索</button>
|
||||
{{/if}}
|
||||
{{/block}}
|
||||
</div>
|
||||
<!-- top operate end -->
|
||||
|
||||
<!-- list start -->
|
||||
<div class="am-scrollable-horizontal am-table-scrollable-horizontal am-margin-top-sm">
|
||||
<table class="am-table am-table-striped am-table-hover am-table-bordered am-text-nowrap form-table-data-list">
|
||||
<thead>
|
||||
<tr>
|
||||
{{foreach $form_table['form'] as $t}}
|
||||
{{if !isset($t['is_list']) or $t['is_list'] eq 1}}
|
||||
<!-- 1. 上下居中 -->
|
||||
<!-- 2. 格子大小 -->
|
||||
<!-- 3. 内容位置居(左|中|右) -->
|
||||
<!-- 4. 格子是否固定(left|right 左|右) -->
|
||||
<th class="
|
||||
{{if !isset($t['is_middle']) or $t['is_middle'] eq 1}}am-text-middle {{/if}}
|
||||
{{if !empty($t['grid_size'])}}am-grid-{{$t.grid_size}} {{/if}}
|
||||
{{if !empty($t['align'])}}am-text-{{$t.align}} {{/if}}
|
||||
{{if !empty($t['fixed'])}}am-grid-fixed-{{$t.fixed}} {{/if}}
|
||||
{{if !empty($t['view_type']) and $t['view_type'] eq 'operate'}}am-operate-grid {{/if}}
|
||||
"
|
||||
style="
|
||||
{{if !empty($t['width'])}}
|
||||
min-width: {{$t.width}}px;
|
||||
{{/if}}
|
||||
"
|
||||
>
|
||||
{{switch $t.view_type}}
|
||||
{{case checkbox}}
|
||||
<button type="button" class="am-btn am-btn-secondary am-radius am-btn-xs form-table-operate-checkbox-submit" data-value="{{if isset($t['is_checked']) and $t['is_checked'] eq 1}}1{{else /}}0{{/if}}" data-checked-text="{{$t.checked_text}}" data-not-checked-text="{{$t.not_checked_text}}" {{if empty($data_list)}}disabled{{/if}}>{{if isset($t['is_checked']) and $t['is_checked'] eq 1}}{{$t.checked_text}}{{else /}}{{$t.not_checked_text}}{{/if}}</button>
|
||||
{{/case}}
|
||||
{{default /}}
|
||||
{{if isset($t['label'])}}{{$t.label}}{{/if}}
|
||||
{{/switch}}
|
||||
</th>
|
||||
{{/if}}
|
||||
{{/foreach}}
|
||||
</tr>
|
||||
|
||||
<!-- search -->
|
||||
{{if isset($form_table['base']['is_search']) and $form_table['base']['is_search'] eq 1}}
|
||||
<tr class="form-table-search">
|
||||
{{foreach $form_table['form'] as $k=>$t}}
|
||||
{{if !isset($t['is_list']) or $t['is_list'] eq 1}}
|
||||
<td class="
|
||||
{{if !isset($t['is_middle']) or $t['is_middle'] eq 1}}am-text-middle {{/if}}
|
||||
{{if !empty($t['grid_size'])}}am-grid-{{$t.grid_size}} {{/if}}
|
||||
{{if !empty($t['align'])}}am-text-{{$t.align}} {{/if}}
|
||||
{{if !empty($t['fixed'])}}am-grid-fixed-{{$t.fixed}} {{/if}}
|
||||
{{if !empty($t['view_type']) and $t['view_type'] eq 'operate'}}am-operate-grid {{/if}}
|
||||
"
|
||||
style="
|
||||
{{if !empty($t['width'])}}
|
||||
min-width: {{$t.width}}px;
|
||||
{{/if}}
|
||||
"
|
||||
>
|
||||
{{if !empty($t['search_config']) and !empty($t['search_config']['form_type']) and !empty($t['search_config']['form_name'])}}
|
||||
{{switch $t.search_config.form_type}}
|
||||
{{case input}}
|
||||
<!-- 输入 -->
|
||||
<input type="text" class="am-form-field am-radius" autocomplete="off" name="{{$t.form_key}}" value="{{if !empty($form_params) and isset($form_params[$t['form_key']])}}{{$form_params[$t['form_key']]}}{{/if}}" placeholder="{{if isset($t['search_config']['placeholder'])}}{{$t.search_config.placeholder}}{{/if}}" />
|
||||
{{/case}}
|
||||
{{case select}}
|
||||
<!-- 选择 -->
|
||||
<select name="{{$t.form_key}}" class="chosen-select am-text-left" data-placeholder="{{if isset($t['search_config']['placeholder'])}}{{$t.search_config.placeholder}}{{/if}}" {{if isset($t['search_config']['is_multiple']) and $t['search_config']['is_multiple'] eq 1}}multiple{{/if}}>
|
||||
{{if isset($t['search_config']['is_seat_select']) and $t['search_config']['is_seat_select'] eq 1 and (!isset($t['search_config']['is_multiple']) or $t['search_config']['is_multiple'] neq 1)}}
|
||||
<option value="{{if isset($t['search_config']['seat_select_value'])}}{{$t.search_config.seat_select_value}}{{/if}}">
|
||||
{{if empty($t['search_config']['seat_select_text'])}}{{if empty($t['search_config']['placeholder'])}}请选择{{if !empty($t['label'])}}{{$t.label}}{{/if}}{{else /}}{{$t.search_config.placeholder}}{{/if}}{{else /}}{{$t.search_config.seat_select_text}}{{/if}}
|
||||
</option>
|
||||
{{/if}}
|
||||
{{if !empty($t['search_config']['data']) and is_array($t['search_config']['data'])}}
|
||||
{{foreach $t['search_config']['data'] as $v}}
|
||||
<option value="{{if isset($t['search_config']['data_key']) and isset($v[$t['search_config']['data_key']])}}{{$v[$t['search_config']['data_key']]}}{{/if}}" {{if !empty($form_params) and isset($form_params[$t['form_key']]) and is_array($form_params[$t['form_key']]) and isset($t['search_config']['data_key']) and in_array($v[$t['search_config']['data_key']], $form_params[$t['form_key']])}}selected{{/if}}>
|
||||
{{if isset($t['search_config']['data_name']) and isset($v[$t['search_config']['data_name']])}}
|
||||
{{$v[$t['search_config']['data_name']]}}
|
||||
{{/if}}
|
||||
</option>
|
||||
{{/foreach}}
|
||||
{{/if}}
|
||||
</select>
|
||||
{{/case}}
|
||||
{{case section}}
|
||||
<!-- 区间 -->
|
||||
<div class="form-table-search-section">
|
||||
<input type="number" class="am-form-field am-radius am-inline-block" autocomplete="off" name="{{$t.form_key}}_min" value="{{if !empty($form_params) and isset($form_params[$t['form_key'].'_min'])}}{{$form_params[$t['form_key'].'_min']}}{{/if}}" {{if isset($t['search_config']['is_point']) and $t['search_config']['is_point'] eq 1}}step="0.01"{{/if}} min="0" placeholder="{{if isset($t['search_config']['placeholder_min'])}}{{$t.search_config.placeholder_min}}{{/if}}" />
|
||||
<span>-</span>
|
||||
<input type="number" class="am-form-field am-radius am-inline-block" autocomplete="off" name="{{$t.form_key}}_max" value="{{if !empty($form_params) and isset($form_params[$t['form_key'].'_max'])}}{{$form_params[$t['form_key'].'_max']}}{{/if}}" {{if isset($t['search_config']['is_point']) and $t['search_config']['is_point'] eq 1}}step="0.01"{{/if}} min="0" placeholder="{{if isset($t['search_config']['placeholder_max'])}}{{$t.search_config.placeholder_max}}{{/if}}" />
|
||||
</div>
|
||||
{{/case}}
|
||||
{{case datetime}}
|
||||
<div class="form-table-search-section form-table-search-time">
|
||||
<input type="text" autocomplete="off" class="am-form-field am-input-sm am-radius am-inline-block Wdate" id="form-table-search-time-start-{{$t.form_key}}" name="{{$t.form_key}}_start" value="{{if !empty($form_params) and isset($form_params[$t['form_key'].'_start'])}}{{$form_params[$t['form_key'].'_start']}}{{/if}}" placeholder="{{if isset($t['search_config']['placeholder_start'])}}{{$t.search_config.placeholder_start}}{{/if}}" value="" onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'yyyy-MM-dd H:mm:ss',maxDate:'#F{$dp.$D(\'form-table-search-time-end-{{$t.form_key}}\');}'})" autocomplete="off" />
|
||||
<span>-</span>
|
||||
<input type="text" autocomplete="off" class="am-form-field am-input-sm am-radius am-inline-block Wdate" id="form-table-search-time-end-{{$t.form_key}}" name="{{$t.form_key}}_end" value="{{if !empty($form_params) and isset($form_params[$t['form_key'].'_end'])}}{{$form_params[$t['form_key'].'_end']}}{{/if}}" placeholder="{{if isset($t['search_config']['placeholder_end'])}}{{$t.search_config.placeholder_end}}{{/if}}" value="" onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'yyyy-MM-dd H:mm:ss',minDate:'#F{$dp.$D(\'form-table-search-time-start-{{$t.form_key}}\');}'})" autocomplete="off" />
|
||||
</div>
|
||||
{{/case}}
|
||||
{{case date}}
|
||||
<div class="form-table-search-section form-table-search-time">
|
||||
<input type="text" autocomplete="off" class="am-form-field am-input-sm am-radius am-inline-block Wdate" id="form-table-search-time-start-{{$t.form_key}}" name="{{$t.form_key}}_start" value="{{if !empty($form_params) and isset($form_params[$t['form_key'].'_start'])}}{{$form_params[$t['form_key'].'_start']}}{{/if}}" placeholder="{{if isset($t['search_config']['placeholder_start'])}}{{$t.search_config.placeholder_start}}{{/if}}" value="" onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'yyyy-MM-dd',maxDate:'#F{$dp.$D(\'form-table-search-time-end-{{$t.form_key}}\',{d:-1});}'})" autocomplete="off" />
|
||||
<span>-</span>
|
||||
<input type="text" autocomplete="off" class="am-form-field am-input-sm am-radius am-inline-block Wdate" id="form-table-search-time-end-{{$t.form_key}}" name="{{$t.form_key}}_end" value="{{if !empty($form_params) and isset($form_params[$t['form_key'].'_end'])}}{{$form_params[$t['form_key'].'_end']}}{{/if}}" placeholder="{{if isset($t['search_config']['placeholder_end'])}}{{$t.search_config.placeholder_end}}{{/if}}" value="" onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'yyyy-MM-dd',minDate:'#F{$dp.$D(\'form-table-search-time-start-{{$t.form_key}}\',{d:+1});}'})" autocomplete="off" />
|
||||
</div>
|
||||
{{/case}}
|
||||
{{case module}}
|
||||
<!-- 从模块加载自定义模块数据 -->
|
||||
{{if !empty($t['search_config']['template'])}}
|
||||
{{if isset($t['search_config']['data'])}}
|
||||
{{:ModuleInclude($t['search_config']['template'], ['data'=>$t['search_config']['data'], 'form_name_key'=>$t['form_key'], 'params'=>isset($form_params) ? $form_params : []])}}
|
||||
{{else /}}
|
||||
{{:ModuleInclude($t['search_config']['template'], ['data'=>[], 'form_name_key'=>$t['form_key'], 'params'=>isset($form_params) ? $form_params : []])}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/case}}
|
||||
{{/switch}}
|
||||
{{/if}}
|
||||
</td>
|
||||
{{/if}}
|
||||
{{/foreach}}
|
||||
</tr>
|
||||
{{/if}}
|
||||
</thead>
|
||||
<tbody>
|
||||
{{if !empty($data_list) and !empty($form_table['base']['key_field'])}}
|
||||
<!-- 处理数据数量小于默认数量 -->
|
||||
{{for start="0" end="count($data_list)"}}
|
||||
<!-- 1. tr 主键id名称 -->
|
||||
<!-- 2. 是否黄色选中class -->
|
||||
<tr
|
||||
{{if isset($data_list[$i][$form_table['base']['key_field']])}}
|
||||
id="data-list-{{$data_list[$i][$form_table['base']['key_field']]}}"
|
||||
{{/if}}
|
||||
{{if !empty($form_table['base']['status_field']) and isset($data_list[$i][$form_table['base']['status_field']]) and $data_list[$i][$form_table['base']['status_field']] eq 0}}
|
||||
class="am-active"
|
||||
{{/if}}
|
||||
>
|
||||
{{foreach $form_table['form'] as $t}}
|
||||
{{if !isset($t['is_list']) or $t['is_list'] eq 1}}
|
||||
<!-- 1. 上下居中 -->
|
||||
<!-- 2. 格子大小 -->
|
||||
<!-- 3. 内容位置居(左|中|右) -->
|
||||
<!-- 4. 格子是否固定(left|right 左|右) -->
|
||||
<!-- 5. 是否操作列 -->
|
||||
<td class="am-nowrap-initial
|
||||
{{if !isset($t['is_middle']) or $t['is_middle'] eq 1}}am-text-middle {{/if}}
|
||||
{{if !empty($t['grid_size'])}}am-grid-{{$t.grid_size}} {{/if}}
|
||||
{{if !empty($t['align'])}}am-text-{{$t.align}} {{/if}}
|
||||
{{if !empty($t['fixed'])}}am-grid-fixed-{{$t.fixed}} {{/if}}
|
||||
{{if !empty($t['view_type']) and $t['view_type'] eq 'operate'}}am-operate-grid {{/if}}
|
||||
"
|
||||
style="
|
||||
{{if !empty($t['width'])}}
|
||||
min-width: {{$t.width}}px;
|
||||
{{/if}}
|
||||
"
|
||||
>
|
||||
{{if isset($data_list[$i]) and !empty($t['view_type']) and !empty($t['view_key'])}}
|
||||
<!-- 数据匹配 -->
|
||||
{{switch $t.view_type}}
|
||||
{{case field}}
|
||||
<!-- 前后固定拼接的值 前面 -->
|
||||
{{if isset($t['view_join_first'])}}
|
||||
<span>{{$t.view_join_first}}</span>
|
||||
{{/if}}
|
||||
|
||||
<!-- 如果字段为数组则处理多个字段拼接数据 -->
|
||||
{{if is_array($t['view_key'])}}
|
||||
{{foreach $t['view_key'] as $fk=>$fv}}
|
||||
{{if isset($data_list[$i][$fv])}}
|
||||
{{$data_list[$i][$fv]}}
|
||||
<!-- 多个字段拼接数据的的拼接字符 -->
|
||||
{{if isset($t['view_key_join']) and $fk lt count($t['view_key'])-1}}
|
||||
{{$t.view_key_join|raw}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/foreach}}
|
||||
{{else /}}
|
||||
<!-- 非数组则直接取值 -->
|
||||
{{if isset($data_list[$i][$t['view_key']])}}
|
||||
<!-- 是否指定数据转换 -->
|
||||
{{if !empty($t['view_data']) and is_array($t['view_data']) and isset($t['view_data'][$data_list[$i][$t['view_key']]])}}
|
||||
{{$t['view_data'][$data_list[$i][$t['view_key']]]}}
|
||||
|
||||
<!-- 直接展示数据 -->
|
||||
{{else /}}
|
||||
{{$data_list[$i][$t['view_key']]|raw}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
<!-- 前后固定拼接的值 后面 -->
|
||||
{{if isset($t['view_join_last'])}}
|
||||
<span>{{$t.view_join_last}}</span>
|
||||
{{/if}}
|
||||
{{/case}}
|
||||
{{case module}}
|
||||
<!-- 从模块加载自定义模块数据 -->
|
||||
{{:ModuleInclude($t['view_key'], $data_list[$i], isset($params) ? $params : [])}}
|
||||
{{/case}}
|
||||
{{case status}}
|
||||
<!-- 数据状态操作按钮组件 -->
|
||||
{{if !empty($t['key_field']) and !empty($t['post_url'])}}
|
||||
<a href="javascript:;"
|
||||
class="am-icon-btn am-icon-check submit-state {{if $data_list[$i][$t['view_key']] eq 1}}am-success{{else /}}am-default{{/if}}"
|
||||
data-url="{{$t.post_url}}"
|
||||
data-id="{{if isset($data_list[$i][$t['key_field']])}}{{$data_list[$i][$t['key_field']]}}{{/if}}"
|
||||
data-state="{{$data_list[$i][$t['view_key']]}}"
|
||||
data-field="{{$t.view_key}}"
|
||||
data-is-update-status="{{if isset($t['is_form_su'])}}{{$t.is_form_su}}{{else /}}0{{/if}}"
|
||||
></a>
|
||||
{{/if}}
|
||||
{{/case}}
|
||||
{{case operate}}
|
||||
<!-- 是否操作列 -->
|
||||
<!-- 模块数据 -->
|
||||
{{:ModuleInclude($t['view_key'], $data_list[$i])}}
|
||||
|
||||
<!-- 列表操作钩子 -->
|
||||
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true and (!isset($is_footer) or $is_footer eq 1)}}
|
||||
<div class="plugins-tag">
|
||||
<span>{{$hook_name_form_list_operate}}</span>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{php}}
|
||||
$hook_data = Hook::listen($hook_name_form_list_operate, [
|
||||
'hook_name' => $hook_name_form_list_operate,
|
||||
'is_backend' => true,
|
||||
'id' => isset($data_list[$i][$form_table['base']['key_field']]) ? $data_list[$i][$form_table['base']['key_field']] : 0,
|
||||
'data' => $data_list[$i],
|
||||
]);
|
||||
if(!empty($hook_data) && is_array($hook_data))
|
||||
{
|
||||
foreach($hook_data as $hook)
|
||||
{
|
||||
if(is_string($hook) || is_int($hook))
|
||||
{
|
||||
echo htmlspecialchars_decode($hook);
|
||||
}
|
||||
}
|
||||
}
|
||||
{{/php}}
|
||||
{{/case}}
|
||||
{{case checkbox}}
|
||||
{{if isset($data_list[$i][$form_table['base']['key_field']])}}
|
||||
<!-- 是否配置指定数据不显示控件 -->
|
||||
{{if empty($t['not_show_data']) or empty($t['not_show_key']) or !in_array($data_list[$i][$form_table['base']['key_field']], $t['not_show_data'])}}
|
||||
<div class="form-table-operate-checkbox">
|
||||
<label class="am-checkbox am-secondary am-checkbox-inline">
|
||||
<input type="checkbox" name="{{$t.view_key}}" value="{{$data_list[$i][$form_table['base']['key_field']]}}" {{if isset($t['is_checked']) and $t['is_checked'] eq 1}}checked{{/if}} data-am-ucheck />
|
||||
</label>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/case}}
|
||||
{{case radio}}
|
||||
{{if isset($data_list[$i][$form_table['base']['key_field']])}}
|
||||
<div class="form-table-operate-radio">
|
||||
<label class="am-radio am-secondary am-radio-inline">
|
||||
<input type="radio" name="{{$t.view_key}}" value="{{$data_list[$i][$form_table['base']['key_field']]}}" {{if isset($t['is_checked']) and $t['is_checked'] eq 1}}checked{{/if}} data-am-ucheck />
|
||||
</label>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/case}}
|
||||
{{/switch}}
|
||||
{{/if}}
|
||||
</td>
|
||||
{{/if}}
|
||||
{{/foreach}}
|
||||
</tr>
|
||||
{{/for}}
|
||||
{{/if}}
|
||||
</tbody>
|
||||
</table>
|
||||
{{if empty($data_list)}}
|
||||
<div class="table-no"><i class="am-icon-warning"></i> 没有相关数据</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
<!-- list end -->
|
||||
|
||||
<!-- bottom operate start -->
|
||||
<div class="am-g am-margin-top-sm form-table-operate-bottom">
|
||||
{{block name="form_operate_bottom"}}
|
||||
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true and (!isset($is_footer) or $is_footer eq 1)}}
|
||||
<div class="plugins-tag">
|
||||
<span>{{$hook_name_form_bottom_operate}}</span>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{php}}
|
||||
$hook_data = Hook::listen($hook_name_form_bottom_operate, ['hook_name'=>$hook_name_form_bottom_operate, 'is_backend'=>true]);
|
||||
if(!empty($hook_data) && is_array($hook_data))
|
||||
{
|
||||
foreach($hook_data as $hook)
|
||||
{
|
||||
if(is_string($hook) || is_int($hook))
|
||||
{
|
||||
echo htmlspecialchars_decode($hook);
|
||||
}
|
||||
}
|
||||
}
|
||||
{{/php}}
|
||||
{{/block}}
|
||||
</div>
|
||||
<!-- bottom operate end -->
|
||||
</form>
|
||||
{{else /}}
|
||||
<div class="table-no"><i class="am-icon-warning"></i> {{if empty($form_error)}}动态表格配置有误{{else /}}{{$form_error}}{{/if}}</div>
|
||||
{{/if}}
|
||||
|
||||
<!-- page start -->
|
||||
{{block name="form_page"}}
|
||||
{{if !empty($data_list) and isset($page_html)}}
|
||||
{{$page_html|raw}}
|
||||
{{/if}}
|
||||
{{/block}}
|
||||
<!-- page end -->
|
||||
|
||||
<!-- extend start -->
|
||||
{{block name="form_extend"}}{{/block}}
|
||||
<!-- extend end -->
|
||||
|
||||
<!-- content inside top hook -->
|
||||
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true and (!isset($is_footer) or $is_footer eq 1)}}
|
||||
<div class="plugins-tag">
|
||||
<span>{{$hook_name_content_inside_bottom}}</span>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{php}}
|
||||
$hook_data = Hook::listen($hook_name_content_inside_bottom, ['hook_name'=>$hook_name_content_inside_bottom, 'is_backend'=>true]);
|
||||
if(!empty($hook_data) && is_array($hook_data))
|
||||
{
|
||||
foreach($hook_data as $hook)
|
||||
{
|
||||
if(is_string($hook) || is_int($hook))
|
||||
{
|
||||
echo htmlspecialchars_decode($hook);
|
||||
}
|
||||
}
|
||||
}
|
||||
{{/php}}
|
||||
</div>
|
||||
<!-- content end -->
|
||||
|
||||
<!-- content bottom hook -->
|
||||
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true and (!isset($is_footer) or $is_footer eq 1)}}
|
||||
<div class="plugins-tag">
|
||||
<span>{{$hook_name_content_bottom}}</span>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{php}}
|
||||
$hook_data = Hook::listen($hook_name_content_bottom, ['hook_name'=>$hook_name_content_bottom, 'is_backend'=>true]);
|
||||
if(!empty($hook_data) && is_array($hook_data))
|
||||
{
|
||||
foreach($hook_data as $hook)
|
||||
{
|
||||
if(is_string($hook) || is_int($hook))
|
||||
{
|
||||
echo htmlspecialchars_decode($hook);
|
||||
}
|
||||
}
|
||||
}
|
||||
{{/php}}
|
||||
</div>
|
||||
</div>
|
||||
<!-- content end -->
|
||||
</div>
|
||||
|
||||
<!-- footer start -->
|
||||
{{include file="public/footer" /}}
|
||||
<!-- footer end -->
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
<!-- 继承公共的 form -->
|
||||
{{extend name="public/module/detail" /}}
|
||||
|
|
@ -1,156 +1,20 @@
|
|||
{{include file="public/header" /}}
|
||||
<!-- 继承公共的 form -->
|
||||
{{extend name="public/module/form" /}}
|
||||
|
||||
<!-- header top nav -->
|
||||
{{include file="public/header_top_nav" /}}
|
||||
|
||||
<!-- search -->
|
||||
{{include file="public/nav_search" /}}
|
||||
|
||||
<!-- header nav -->
|
||||
{{include file="public/header_nav" /}}
|
||||
|
||||
<!-- goods category -->
|
||||
{{include file="public/goods_category" /}}
|
||||
|
||||
<!-- content -->
|
||||
<div class="am-container user-main">
|
||||
|
||||
<!-- user menu start -->
|
||||
{{include file="public/user_menu" /}}
|
||||
<!-- user menu end -->
|
||||
|
||||
<!-- content start -->
|
||||
<div class="user-content">
|
||||
<div class="user-content-body">
|
||||
<div class="am-alert am-alert-secondary" data-am-alert>
|
||||
<div class="available">
|
||||
<span>正常可用</span>
|
||||
<span class="panel-value">{{$user.integral}}</span>
|
||||
<em>积分</em>
|
||||
<span class="panel-tips">可以正常使用的积分</span>
|
||||
</div>
|
||||
<div class="locking">
|
||||
<span>当前锁定</span>
|
||||
<span class="panel-value">{{$user.locking_integral}}</span>
|
||||
<em>积分</em>
|
||||
<span class="panel-tips">一般积分交易中,交易并未完成、锁定相应的积分</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<form class="am-form form-validation form-search" method="post" action="{{:MyUrl('index/userintegral/index')}}" request-type="form">
|
||||
<div class="thin">
|
||||
<div class="am-input-group am-input-group-sm am-fl so">
|
||||
<input type="text" autocomplete="off" name="keywords" class="am-radius" placeholder="其实搜索很简单 ^_^!" value="{{if !empty($params.keywords)}}{{$params.keywords}}{{/if}}" />
|
||||
<span class="am-input-group-btn">
|
||||
<button class="am-btn am-btn-default am-radius" type="submit" data-am-loading="{spinner:'circle-o-notch', loadingText:'搜索中...'}">搜索</button>
|
||||
</span>
|
||||
</div>
|
||||
<label class="am-fl thin_sub more-submit">
|
||||
更多筛选条件
|
||||
{{if isset($params['is_more']) and $params['is_more'] eq 1}}
|
||||
<input type="checkbox" name="is_more" value="1" id="is_more" checked />
|
||||
<i class="am-icon-angle-up"></i>
|
||||
{{else /}}
|
||||
<input type="checkbox" name="is_more" value="1" id="is_more" />
|
||||
<i class="am-icon-angle-down"></i>
|
||||
{{/if}}
|
||||
</label>
|
||||
</div>
|
||||
<table class="so-list more-where {{if !isset($params['is_more'])}}none{{/if}}">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
<span>类型:</span>
|
||||
<select name="type" class="chosen-select" data-placeholder="操作类型...">
|
||||
<option value="-1">操作类型...</option>
|
||||
{{if !empty($common_integral_log_type_list)}}
|
||||
{{foreach $common_integral_log_type_list as $v}}
|
||||
<option value="{{$v.id}}" {{if isset($params['type']) and $params['type'] eq $v['id']}}selected{{/if}}>{{$v.name}}</option>
|
||||
{{/foreach}}
|
||||
{{/if}}
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
<button type="submit" class="am-btn am-btn-primary am-radius am-btn-xs btn-loading-example" data-am-loading="{spinner:'circle-o-notch', loadingText:'搜索中...'}">搜索</button>
|
||||
<a href="{{:MyUrl('index/userintegral/index')}}" class="am-btn am-btn-warning am-radius am-btn-sm reset-submit">清除条件</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</form>
|
||||
|
||||
<!-- 列表 -->
|
||||
<div class="data-list am-margin-top-sm">
|
||||
<table class="am-table am-table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>操作类型</th>
|
||||
<th class="am-hide-sm-only">描述</th>
|
||||
<th>原始积分</th>
|
||||
<th>最新积分</th>
|
||||
<th class="am-hide-md-down">时间</th>
|
||||
<th>更多</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{if !empty($data_list)}}
|
||||
{{foreach $data_list as $v}}
|
||||
<tr>
|
||||
<td>{{$v.type_text}}</td>
|
||||
<td class="am-hide-sm-only">{{$v.msg}}</td>
|
||||
<td>{{$v.original_integral}}</td>
|
||||
<td>{{$v.new_integral}}</td>
|
||||
<td class="am-hide-md-down">{{$v.add_time_time}}</td>
|
||||
<td>
|
||||
<span class="am-icon-caret-down c-p" data-am-modal="{target: '#my-popup{{$v.id}}'}"> 查看更多</span>
|
||||
<div class="am-popup am-radius" id="my-popup{{$v.id}}">
|
||||
<div class="am-popup-inner">
|
||||
<div class="am-popup-hd">
|
||||
<h4 class="am-popup-title">详情内容</h4>
|
||||
<span data-am-modal-close
|
||||
class="am-close">×</span>
|
||||
</div>
|
||||
<div class="am-popup-bd">
|
||||
<dl class="dl-content">
|
||||
<dt>操作类型</dt>
|
||||
<dd>{{$v.type_text}}</dd>
|
||||
|
||||
<dt>描述</dt>
|
||||
<dd>{{$v.msg}}</dd>
|
||||
|
||||
<dt>原始积分</dt>
|
||||
<dd>{{$v.original_integral}}</dd>
|
||||
|
||||
<dt>最新积分</dt>
|
||||
<dd>{{$v.new_integral}}</dd>
|
||||
|
||||
<dt>时间</dt>
|
||||
<dd>{{$v.add_time_time}}</dd>
|
||||
</dl>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
{{/foreach}}
|
||||
{{/if}}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{{if empty($data_list)}}
|
||||
<div class="table-no"><i class="am-icon-warning"></i> 没有相关数据</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
|
||||
<!-- 分页 -->
|
||||
{{if !empty($data_list)}}
|
||||
{{$page_html|raw}}
|
||||
{{/if}}
|
||||
<!-- 顶部导航内容 -->
|
||||
{{block name="form_navigation"}}
|
||||
<div class="am-alert am-alert-secondary" data-am-alert>
|
||||
<div class="available">
|
||||
<span>正常可用</span>
|
||||
<span class="panel-value">{{$user.integral}}</span>
|
||||
<em>积分</em>
|
||||
<span class="panel-tips">可以正常使用的积分</span>
|
||||
</div>
|
||||
<div class="locking">
|
||||
<span>当前锁定</span>
|
||||
<span class="panel-value">{{$user.locking_integral}}</span>
|
||||
<em>积分</em>
|
||||
<span class="panel-tips">一般积分交易中,交易并未完成、锁定相应的积分</span>
|
||||
</div>
|
||||
</div>
|
||||
<!-- content end -->
|
||||
</div>
|
||||
|
||||
<!-- footer start -->
|
||||
{{include file="public/footer" /}}
|
||||
<!-- footer end -->
|
||||
{{/block}}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
<!-- 操作栏 -->
|
||||
<button type="button" class="am-btn am-btn-default am-btn-xs am-radius am-btn-block submit-popup" data-url="{{:MyUrl('index/userintegral/detail', ['id'=>$module_data['id']])}}">
|
||||
<i class="am-icon-eye"></i>
|
||||
<span>详情</span>
|
||||
</button>
|
||||
|
|
@ -57,7 +57,7 @@ class FormHandleModule
|
|||
}
|
||||
|
||||
// 指定方法检测
|
||||
$this->module_obj = new $module();
|
||||
$this->module_obj = new $module($this->out_params);
|
||||
if(!method_exists($this->module_obj, $action))
|
||||
{
|
||||
// 默认方法检测
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
1. 所有条件、列表、新增、编辑、删除 新增钩子(公共 form 表单封装)
|
||||
2. 积分支持按照订单商品总额比例发放,发生售后收回积分
|
||||
3. 微信小程序好物推荐和直播组件支持配置组件版本号
|
||||
4. 后台管理登录页面新增随机背景
|
||||
|
||||
web端
|
||||
|
||||
|
|
|
|||
|
|
@ -1,17 +0,0 @@
|
|||
{
|
||||
"appid": "16634987",
|
||||
"developType": "normal",
|
||||
"host": "baiduboxapp",
|
||||
"preview": {
|
||||
"packageId": 347753
|
||||
},
|
||||
"setting": {
|
||||
"urlCheck": false
|
||||
},
|
||||
"swan": {
|
||||
"baiduboxapp": {
|
||||
"extensionJsVersion": "1.5.3",
|
||||
"swanJsVersion": "3.105.9"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,49 +0,0 @@
|
|||
{
|
||||
"projectid": "1109990622_test",
|
||||
"setting": {
|
||||
"urlCheck": false,
|
||||
"es6": true,
|
||||
"postcss": true,
|
||||
"minified": true,
|
||||
"newFeature": true,
|
||||
"autoAudits": false,
|
||||
"remoteDebugLogEnable": false,
|
||||
"uploadWithSourceMap": true,
|
||||
"nodeModules": true,
|
||||
"uglifyFileName": true
|
||||
},
|
||||
"compileType": "miniprogram",
|
||||
"createTime": 1572536544924,
|
||||
"accessTime": 1572536544924,
|
||||
"packOptions": {
|
||||
"ignore": []
|
||||
},
|
||||
"debugOptions": {
|
||||
"hidedInDevtools": []
|
||||
},
|
||||
"qqappid": "1109990622",
|
||||
"projectname": "test",
|
||||
"scripts": {
|
||||
"beforeCompile": "",
|
||||
"beforePreview": "",
|
||||
"beforeUpload": ""
|
||||
},
|
||||
"condition": {
|
||||
"search": {
|
||||
"current": -1,
|
||||
"list": []
|
||||
},
|
||||
"conversation": {
|
||||
"current": -1,
|
||||
"list": []
|
||||
},
|
||||
"game": {
|
||||
"currentL": -1,
|
||||
"list": []
|
||||
},
|
||||
"miniprogram": {
|
||||
"current": -1,
|
||||
"list": []
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
{
|
||||
"setting": {
|
||||
"urlCheck": false,
|
||||
"es6": true,
|
||||
"postcss": true,
|
||||
"minified": true,
|
||||
"newFeature": true
|
||||
},
|
||||
"appid": "tt65341389fa1e87f3",
|
||||
"projectname": "gongfuxiang的小程序"
|
||||
}
|
||||
|
|
@ -1,53 +0,0 @@
|
|||
{
|
||||
"description": "项目配置文件",
|
||||
"packOptions": {
|
||||
"ignore": []
|
||||
},
|
||||
"setting": {
|
||||
"urlCheck": false,
|
||||
"es6": true,
|
||||
"postcss": true,
|
||||
"minified": true,
|
||||
"newFeature": true,
|
||||
"autoAudits": false
|
||||
},
|
||||
"compileType": "miniprogram",
|
||||
"libVersion": "2.4.3",
|
||||
"appid": "wx0a2012ebad94beff",
|
||||
"projectname": "shopxo",
|
||||
"debugOptions": {
|
||||
"hidedInDevtools": []
|
||||
},
|
||||
"scripts": {},
|
||||
"simulatorType": "wechat",
|
||||
"simulatorPluginLibVersion": {},
|
||||
"condition": {
|
||||
"search": {
|
||||
"current": -1,
|
||||
"list": []
|
||||
},
|
||||
"conversation": {
|
||||
"current": -1,
|
||||
"list": []
|
||||
},
|
||||
"plugin": {
|
||||
"current": -1,
|
||||
"list": []
|
||||
},
|
||||
"game": {
|
||||
"list": []
|
||||
},
|
||||
"miniprogram": {
|
||||
"current": 0,
|
||||
"list": [
|
||||
{
|
||||
"id": 0,
|
||||
"name": "goods详情",
|
||||
"pathName": "pages/goods-detail/goods-detail",
|
||||
"query": "goods_id=7&referrer=100",
|
||||
"scene": 1001
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -187,9 +187,6 @@ a:focus {outline:0;text-decoration:none;}
|
|||
/* ============= Extras============= *//* Table type box */
|
||||
.table-box {display:table;height:100%;width:100%;}
|
||||
.table-box .table-detail {display:table-cell;vertical-align:middle;}
|
||||
/* Card Box */
|
||||
.card-box {padding:20px;box-shadow:0 0px 8px 0 rgba(0,0,0,0.06),0 1px 0px 0 rgba(0,0,0,0.02);-webkit-border-radius:5px;border-radius:5px;-moz-border-radius:5px;background-clip:padding-box;margin-bottom:20px;background-color:#ffffff;}
|
||||
.card-box .card-drop {color:#98a6ad;font-size:20px;line-height:1px;padding:0px 5px;display:inline-block;}
|
||||
/* Grid page */
|
||||
.grid-structure .grid-container {background-color:#f4f8fb;margin-bottom:10px;padding:10px 20px;}
|
||||
/* Demo only */
|
||||
|
|
|
|||
|
After Width: | Height: | Size: 699 KiB |
|
After Width: | Height: | Size: 190 KiB |
|
After Width: | Height: | Size: 195 KiB |
|
After Width: | Height: | Size: 187 KiB |
|
After Width: | Height: | Size: 677 KiB |
|
After Width: | Height: | Size: 199 KiB |
|
After Width: | Height: | Size: 200 KiB |
|
After Width: | Height: | Size: 370 KiB |
|
After Width: | Height: | Size: 157 KiB |
|
After Width: | Height: | Size: 188 KiB |
|
|
@ -0,0 +1,23 @@
|
|||
$(function()
|
||||
{
|
||||
// 登录页面背景切换
|
||||
var count = $('.bg-slides-item').length;
|
||||
if(count > 0)
|
||||
{
|
||||
var temp_old = 0;
|
||||
var temp_new = 1;
|
||||
var fade_time = 1000;
|
||||
var interval_time = 6000;
|
||||
setInterval(function()
|
||||
{
|
||||
$('.bg-slides-item').eq(temp_old).fadeOut(fade_time);
|
||||
$('.bg-slides-item').eq(temp_new).fadeIn(fade_time);
|
||||
temp_old = temp_new;
|
||||
temp_new++;
|
||||
if(temp_new > count-1)
|
||||
{
|
||||
temp_new = 0;
|
||||
}
|
||||
}, interval_time);
|
||||
}
|
||||
});
|
||||
|
|
@ -1628,8 +1628,7 @@ function TableContainerInit()
|
|||
if(right == undefined)
|
||||
{
|
||||
var left = $(this).offset().left;
|
||||
var width = $(this).width();
|
||||
var right = parent_width-left-width-parent_left-4;
|
||||
right = parent_width-left-width+parent_left;
|
||||
if(right < 0)
|
||||
{
|
||||
right = 0;
|
||||
|
|
|
|||
|
|
@ -22,8 +22,8 @@ button { outline: none; }
|
|||
|
||||
*, body, .am-btn { font-size: 12px; }
|
||||
|
||||
.am-form select, .am-form textarea, .am-form input[type="text"], .am-form input[type="password"], .am-form input[type="datetime"], .am-form input[type="datetime-local"], .am-form input[type="date"], .am-form input[type="month"], .am-form input[type="time"], .am-form input[type="week"], .am-form input[type="number"], .am-form input[type="email"], .am-form input[type="url"], .am-form input[type="search"], .am-form input[type="tel"], .am-form input[type="color"], .am-form-field {
|
||||
font-size: 12px;
|
||||
.am-form select,.am-form textarea,.am-form input[type="text"],.am-form input[type="password"],.am-form input[type="datetime"],.am-form input[type="datetime-local"],.am-form input[type="date"],.am-form input[type="month"],.am-form input[type="time"],.am-form input[type="week"],.am-form input[type="number"],.am-form input[type="email"],.am-form input[type="url"],.am-form input[type="search"],.am-form input[type="tel"],.am-form input[type="color"],.am-form-field {
|
||||
font-size: 12px !important;
|
||||
}
|
||||
.am-input-group-sm > .am-input-group-btn > .am-btn,
|
||||
.am-input-group-sm > .am-form-field,
|
||||
|
|
@ -793,7 +793,7 @@ img.common-user-icon {
|
|||
/**
|
||||
* 用户中心左侧菜单
|
||||
*/
|
||||
.user-menu {position:fixed;z-index:10;bottom:70px;right:10px;}
|
||||
.user-menu {position:fixed;z-index:1020;bottom:70px;right:10px; -webkit-box-shadow: 0 0 15px rgba(0, 0, 0, 0.5); -moz-box-shadow: 0 0 15px rgba(0, 0, 0, 0.5); box-shadow: 0 0 15px rgba(0, 0, 0, 0.5);}
|
||||
.user-sidebar {width:145px;min-height:100%;float:left;}
|
||||
.user-sidebar .am-active {z-index:1600;}
|
||||
.user-sidebar .am-active a, .user-sidebar-list li a:hover {background:#fff1f5; text-decoration: none; color: #d2364c; }
|
||||
|
|
|
|||