新增表情icon、更多细节优化

feat/task1-c-wallet
gongfuxiang 2023-01-06 15:56:17 +08:00
parent 67d4bfa8e4
commit 31dd0bac2e
48 changed files with 276 additions and 119 deletions

View File

@ -27,6 +27,8 @@ use app\service\PluginsUpgradeService;
*/
class Pluginsadmin extends Base
{
private $view_type;
/**
* 构造方法
* @author Devil

View File

@ -43,6 +43,7 @@ class Answer
'status_field' => 'is_show',
'is_search' => 1,
'is_delete' => 1,
'is_middle' => 0,
'delete_url' => MyUrl('admin/answer/delete'),
'delete_key' => 'ids',
],

View File

@ -41,6 +41,7 @@ class AppCenterNav
'status_field' => 'is_enable',
'is_search' => 1,
'is_delete' => 1,
'is_middle' => 0,
'delete_url' => MyUrl('admin/appcenternav/delete'),
'delete_key' => 'ids',
],

View File

@ -41,6 +41,7 @@ class AppHomeNav
'status_field' => 'is_enable',
'is_search' => 1,
'is_delete' => 1,
'is_middle' => 0,
'delete_url' => MyUrl('admin/apphomenav/delete'),
'delete_key' => 'ids',
],

View File

@ -43,6 +43,7 @@ class Article
'status_field' => 'is_enable',
'is_search' => 1,
'is_delete' => 1,
'is_middle' => 0,
'delete_url' => MyUrl('admin/article/delete'),
'delete_key' => 'ids',
'detail_title' => '基础信息',

View File

@ -41,6 +41,7 @@ class CustomView
'status_field' => 'is_enable',
'is_search' => 1,
'is_delete' => 1,
'is_middle' => 0,
'delete_url' => MyUrl('admin/customview/delete'),
'delete_key' => 'ids',
'detail_title' => '基础信息',

View File

@ -58,6 +58,20 @@ class GoodsComments
'align' => 'center',
'width' => 80,
],
[
'label' => '用户信息',
'view_type' => 'module',
'view_key' => 'lib/module/user',
'grid_size' => 'sm',
'is_sort' => 1,
'search_config' => [
'form_type' => 'input',
'form_name' => 'user_id',
'where_type_custom' => 'in',
'where_value_custom' => 'WhereValueUserInfo',
'placeholder' => '请输入用户名/昵称/手机/邮箱',
],
],
[
'label' => '基础信息',
'view_type' => 'module',
@ -73,20 +87,6 @@ class GoodsComments
'placeholder' => '请输入商品名称/型号',
],
],
[
'label' => '用户信息',
'view_type' => 'module',
'view_key' => 'lib/module/user',
'grid_size' => 'sm',
'is_sort' => 1,
'search_config' => [
'form_type' => 'input',
'form_name' => 'user_id',
'where_type_custom' => 'in',
'where_value_custom' => 'WhereValueUserInfo',
'placeholder' => '请输入用户名/昵称/手机/邮箱',
],
],
[
'label' => '业务类型',
'view_type' => 'field',

View File

@ -41,6 +41,7 @@ class IntegralLog
'base' => [
'key_field' => 'id',
'is_search' => 1,
'is_middle' => 0,
],
// 表单配置
'form' => [

View File

@ -44,6 +44,7 @@ class Message
'key_field' => 'id',
'is_search' => 1,
'is_delete' => 1,
'is_middle' => 0,
'delete_url' => MyUrl('admin/message/delete'),
'delete_key' => 'ids',
],

View File

@ -42,6 +42,7 @@ class RefundLog
'base' => [
'key_field' => 'id',
'is_search' => 1,
'is_middle' => 0,
],
// 表单配置
'form' => [

View File

@ -14,10 +14,10 @@
{{if !empty($data['user'])}}
<img src="{{$data.user.avatar}}" alt="{{$data.user.user_name_view}}" class="am-img-thumbnail am-radius am-align-left am-margin-right-xs am-margin-bottom-0" width="35" height="35" />
<ul class="user-base">
<li>名称:{{if empty($data['user']['username'])}}<span class="cr-ccc">未填写</span>{{else /}}{{$data.user.username}}{{/if}}</li>
<li>昵称:{{if empty($data['user']['nickname'])}}<span class="cr-ccc">未填写</span>{{else /}}{{$data.user.nickname}}{{/if}}</li>
<li>手机:{{if empty($data['user']['mobile'])}}<span class="cr-ccc">未填写</span>{{else /}}{{$data.user.mobile}}{{/if}}</li>
<li>邮箱:{{if empty($data['user']['email'])}}<span class="cr-ccc">未填写</span>{{else /}}{{$data.user.email}}{{/if}}</li>
<li>名称:{{if empty($data['user']['username'])}}<span class="am-text-grey">未填写</span>{{else /}}{{$data.user.username}}{{/if}}</li>
<li>昵称:{{if empty($data['user']['nickname'])}}<span class="am-text-grey">未填写</span>{{else /}}{{$data.user.nickname}}{{/if}}</li>
<li>手机:{{if empty($data['user']['mobile'])}}<span class="am-text-grey">未填写</span>{{else /}}{{$data.user.mobile}}{{/if}}</li>
<li>邮箱:{{if empty($data['user']['email'])}}<span class="am-text-grey">未填写</span>{{else /}}{{$data.user.email}}{{/if}}</li>
</ul>
{{else /}}
用户信息异常

View File

@ -29,10 +29,10 @@
{{if !empty($data['user'])}}
<img src="{{$data.user.avatar}}" alt="{{$data.user.user_name_view}}" class="am-img-thumbnail am-radius am-align-left am-margin-right-xs am-margin-bottom-0" width="35" height="35" />
<ul class="user-base">
<li>名称:{{if empty($data['user']['username'])}}<span class="cr-ccc">未填写</span>{{else /}}{{$data.user.username}}{{/if}}</li>
<li>昵称:{{if empty($data['user']['nickname'])}}<span class="cr-ccc">未填写</span>{{else /}}{{$data.user.nickname}}{{/if}}</li>
<li>手机:{{if empty($data['user']['mobile'])}}<span class="cr-ccc">未填写</span>{{else /}}{{$data.user.mobile}}{{/if}}</li>
<li>邮箱:{{if empty($data['user']['email'])}}<span class="cr-ccc">未填写</span>{{else /}}{{$data.user.email}}{{/if}}</li>
<li>名称:{{if empty($data['user']['username'])}}<span class="am-text-grey">未填写</span>{{else /}}{{$data.user.username}}{{/if}}</li>
<li>昵称:{{if empty($data['user']['nickname'])}}<span class="am-text-grey">未填写</span>{{else /}}{{$data.user.nickname}}{{/if}}</li>
<li>手机:{{if empty($data['user']['mobile'])}}<span class="am-text-grey">未填写</span>{{else /}}{{$data.user.mobile}}{{/if}}</li>
<li>邮箱:{{if empty($data['user']['email'])}}<span class="am-text-grey">未填写</span>{{else /}}{{$data.user.email}}{{/if}}</li>
</ul>
{{else /}}
用户信息异常

View File

@ -1,14 +1,23 @@
<!-- 用户信息 -->
{{if !empty($module_data)}}
{{if !empty($module_data['user'])}}
<img src="{{$module_data.user.avatar}}" alt="{{$module_data.user.user_name_view}}" class="am-img-thumbnail am-radius am-align-left am-margin-right-xs am-margin-bottom-0" width="35" height="35" />
<ul class="user-base">
<li>名称:{{if empty($module_data['user']['username'])}}<span class="cr-ccc"></span>{{else /}}{{$module_data.user.username}}{{/if}}</li>
<li>昵称:{{if empty($module_data['user']['nickname'])}}<span class="cr-ccc"></span>{{else /}}{{$module_data.user.nickname}}{{/if}}</li>
<li>手机:{{if empty($module_data['user']['mobile'])}}<span class="cr-ccc"></span>{{else /}}{{$module_data.user.mobile}}{{/if}}</li>
<li>邮箱:{{if empty($module_data['user']['email'])}}<span class="cr-ccc"></span>{{else /}}{{$module_data.user.email}}{{/if}}</li>
</ul>
{{else /}}
用户信息异常
{{/if}}
{{if !empty($module_data) and !empty($module_data['user'])}}
<img src="{{$module_data.user.avatar}}" alt="{{$module_data.user.user_name_view}}" class="am-img-thumbnail am-radius am-align-left am-margin-right-xs am-margin-bottom-0" width="35" height="35" />
<ul class="user-base">
<li class="am-text-truncate">{{$module_data.user.user_name_view}}</li>
<li>
{{if !empty($module_data['user']['username'])}}
<a href="javascript:;" class="am-icon-user am-text-grey am-margin-right-sm" data-am-popover="{content: '账号:{{$module_data.user.username}}{{if !empty($module_data['user']['nickname'])}}<br />昵称:{{$module_data.user.nickname}}{{/if}}', trigger: 'hover focus', theme: 'sm'}"></a>
{{/if}}
{{if !empty($module_data['user']['number_code'])}}
<a href="javascript:;" class="am-icon-qrcode am-text-grey am-margin-right-sm" data-am-popover="{content: '{{$module_data.user.number_code}}', trigger: 'hover focus', theme: 'sm'}"></a>
{{/if}}
{{if !empty($module_data['user']['mobile'])}}
<a href="javascript:;" class="am-icon-phone-square am-text-grey am-margin-right-sm" data-am-popover="{content: '{{$module_data.user.mobile}}', trigger: 'hover focus', theme: 'sm'}"></a>
{{/if}}
{{if !empty($module_data['user']['email'])}}
<a href="javascript:;" class="am-icon-envelope am-text-grey am-margin-right-sm" data-am-popover="{content: '{{$module_data.user.email}}', trigger: 'hover focus', theme: 'sm'}"></a>
{{/if}}
{{if !empty($module_data['user']['gender_text'])}}
<a href="javascript:;" class="am-icon-child am-text-grey" data-am-popover="{content: '{{$module_data.user.gender_text}}', trigger: 'hover focus', theme: 'sm'}"></a>
{{/if}}
</li>
</ul>
{{/if}}

View File

@ -60,12 +60,8 @@
{{if !empty($module_data.order_data.items.model)}}
<span class="am-badge am-badge-default-plain am-radius">{{$module_data.order_data.items.model}}</span>
{{/if}}
{{if !empty($module_data.order_data.items.spec)}}
<ul class="goods-spec am-margin-top-xs">
{{foreach $module_data.order_data.items.spec as $spec}}
<li>{{$spec.type}}{{$spec.value}}</li>
{{/foreach}}
</ul>
{{if !empty($module_data['order_data']['items']['spec_text'])}}
<div class="am-margin-top-xs am-nowrap-initial">{{$module_data.order_data.items.spec_text}}</div>
{{/if}}
</div>
</div>

View File

@ -2,9 +2,20 @@
{{if !empty($module_data) and !empty($module_data['referrer_info'])}}
<img src="{{$module_data.referrer_info.avatar}}" alt="{{$module_data.referrer_info.user_name_view}}" class="am-img-thumbnail am-radius am-align-left am-margin-right-xs am-margin-bottom-0" width="35" height="35" />
<ul class="user-base">
<li>名称:{{if empty($module_data['referrer_info']['username'])}}<span class="cr-ccc"></span>{{else /}}{{$module_data.referrer_info.username}}{{/if}}</li>
<li>昵称:{{if empty($module_data['referrer_info']['nickname'])}}<span class="cr-ccc"></span>{{else /}}{{$module_data.referrer_info.nickname}}{{/if}}</li>
<li>手机:{{if empty($module_data['referrer_info']['mobile'])}}<span class="cr-ccc"></span>{{else /}}{{$module_data.referrer_info.mobile}}{{/if}}</li>
<li>邮箱:{{if empty($module_data['referrer_info']['email'])}}<span class="cr-ccc"></span>{{else /}}{{$module_data.referrer_info.email}}{{/if}}</li>
<li class="am-text-truncate">{{$module_data.referrer_info.user_name_view}}</li>
<li>
{{if !empty($module_data['referrer_info']['username'])}}
<a href="javascript:;" class="am-icon-user am-text-grey am-margin-right-sm" data-am-popover="{content: '账号:{{$module_data.referrer_info.username}}{{if !empty($module_data['referrer_info']['nickname'])}}<br />昵称:{{$module_data.referrer_info.nickname}}{{/if}}', trigger: 'hover focus', theme: 'sm'}"></a>
{{/if}}
{{if !empty($module_data['referrer_info']['mobile'])}}
<a href="javascript:;" class="am-icon-phone-square am-text-grey am-margin-right-sm" data-am-popover="{content: '{{$module_data.referrer_info.mobile}}', trigger: 'hover focus', theme: 'sm'}"></a>
{{/if}}
{{if !empty($module_data['referrer_info']['email'])}}
<a href="javascript:;" class="am-icon-envelope am-text-grey am-margin-right-sm" data-am-popover="{content: '{{$module_data.referrer_info.email}}', trigger: 'hover focus', theme: 'sm'}"></a>
{{/if}}
{{if !empty($module_data['referrer_info']['gender_text'])}}
<a href="javascript:;" class="am-icon-child am-text-grey" data-am-popover="{content: '{{$module_data.referrer_info.gender_text}}', trigger: 'hover focus', theme: 'sm'}"></a>
{{/if}}
</li>
</ul>
{{/if}}

View File

@ -13,10 +13,10 @@
<div class="am-alert am-alert-secondary am-nbfc am-margin-top-0">
<img src="{{$data.user.avatar}}" alt="{{$data.user.user_name_view}}" class="am-img-thumbnail am-radius am-align-left am-margin-right-xs am-margin-bottom-0" width="75" height="75" />
<ul class="user-base">
<li>名称:{{if empty($data['user']['username'])}}<span class="cr-ccc"></span>{{else /}}{{$data.user.username}}{{/if}}</li>
<li>昵称:{{if empty($data['user']['nickname'])}}<span class="cr-ccc"></span>{{else /}}{{$data.user.nickname}}{{/if}}</li>
<li>手机:{{if empty($data['user']['mobile'])}}<span class="cr-ccc"></span>{{else /}}{{$data.user.mobile}}{{/if}}</li>
<li>邮箱:{{if empty($data['user']['email'])}}<span class="cr-ccc"></span>{{else /}}{{$data.user.email}}{{/if}}</li>
<li>名称:{{if empty($data['user']['username'])}}<span class="am-text-grey"></span>{{else /}}{{$data.user.username}}{{/if}}</li>
<li>昵称:{{if empty($data['user']['nickname'])}}<span class="am-text-grey"></span>{{else /}}{{$data.user.nickname}}{{/if}}</li>
<li>手机:{{if empty($data['user']['mobile'])}}<span class="am-text-grey"></span>{{else /}}{{$data.user.mobile}}{{/if}}</li>
<li>邮箱:{{if empty($data['user']['email'])}}<span class="am-text-grey"></span>{{else /}}{{$data.user.email}}{{/if}}</li>
</ul>
</div>
{{/if}}

View File

@ -640,7 +640,7 @@ function GetUrlHost($url)
{
// 地址解析
$arr = parse_url(strtolower($url));
$host = (count($arr) == 1) ? $arr['path'] : (empty($arr['host']) ? '' : $arr['host']);
$host = (count($arr) == 1) ? (isset($arr['path']) ? $arr['path'] : '') : (empty($arr['host']) ? '' : $arr['host']);
if(empty($host))
{
return $url;
@ -662,7 +662,7 @@ function GetUrlHost($url)
}
// 判断是否是双后缀
$preg = '/[\w].+\.(com|net|org|gov|ac|bj|sh|tj|cq|he|sn|sx|nm|ln|jl|hl|js|zj|ah|fj|jx|sd|ha|hb|hn|gd|gx|hi|sc|gz|yn|gs|qh|nx|xj|tw|hk|mo|xz|edu|ge|dev|co)\.(cn|nz)$/';
$preg = '/[\w].+\.(com|net|org|gov|ac|bj|sh|tj|cq|he|sn|sx|nm|ln|jl|hl|js|zj|ah|fj|jx|sd|ha|hb|hn|gd|gx|hi|sc|gz|yn|gs|qh|nx|xj|tw|hk|mo|xz|edu|ge|dev|co)\.(cn|nz|mm)$/';
if(($n > 2) && preg_match($preg, $host))
{
// 双后缀取后3位
@ -2109,35 +2109,47 @@ function ScienceNumToString($num)
}
/**
* [GetClientIP 客户端ip地址]
* 客户端ip地址
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2017-02-09T12:53:13+0800
* @param [boolean] $long [是否将ip转成整数]
* @return [string|int] [ip地址|ip地址整数]
* @param [boolean] $long [是否将ip转成整数]
* @return [string|int] [ip地址|ip地址整数]
* @param [boolean] $is_single[是否仅获取一个ip]
*/
function GetClientIP($long = false)
function GetClientIP($long = false, $is_single = true)
{
$onlineip = '';
$ip = '';
if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown'))
{
$onlineip = getenv('HTTP_CLIENT_IP');
$ip = getenv('HTTP_CLIENT_IP');
} elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown'))
{
$onlineip = getenv('HTTP_X_FORWARDED_FOR');
$ip = getenv('HTTP_X_FORWARDED_FOR');
} elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown'))
{
$onlineip = getenv('REMOTE_ADDR');
$ip = getenv('REMOTE_ADDR');
} elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown'))
{
$onlineip = $_SERVER['REMOTE_ADDR'];
}
if($long)
{
$onlineip = sprintf("%u", ip2long($onlineip));
$ip = $_SERVER['REMOTE_ADDR'];
}
return $onlineip;
// 整数或单ip
if($long || $is_single)
{
// 单ip
if($is_single && stripos($ip, ',') !== false)
{
$temp = explode(',', $ip);
$ip = $temp[0];
}
// 转整数
if($long)
{
$ip = sprintf("%u", ip2long($ip));
}
}
return $ip;
}
/**
@ -2893,7 +2905,7 @@ function Authcode($string, $operation = 'DECODE', $key = '', $expiry = 0)
}
/**
* [ParamsChecked 参数校验方法]
* 参数校验方法
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0

View File

@ -64,13 +64,13 @@
<button type="button" class="am-close am-fr mobile-address-close-submit">&times;</button>
</h3>
{{if !empty($user_address_list)}}
<button class="am-btn am-btn-primary am-btn-xs address-submit-save" type="button" data-url="{{:MyUrl('index/useraddress/saveinfo')}}">使用新地址</button>
<button class="am-btn am-btn-primary am-btn-xs am-radius address-submit-save" type="button" data-url="{{:MyUrl('index/useraddress/saveinfo')}}">使用新地址</button>
{{/if}}
</div>
{{if !empty($user_address_list)}}
<ul class="address-list">
{{foreach $user_address_list as $address}}
<li class="{{if (isset($params['address_id']) and $params['address_id'] eq $address['id']) or (!isset($params['address_id']) and isset($address['is_default']) and $address['is_default'] eq 1) or (count($user_address_list) eq 1)}}address-default{{/if}}" id="data-list-{{$address.id}}" data-value="{{$address.id}}">
<li class="am-radius {{if (isset($params['address_id']) and $params['address_id'] eq $address['id']) or (!isset($params['address_id']) and isset($address['is_default']) and $address['is_default'] eq 1) or (count($user_address_list) eq 1)}}address-default{{/if}}" id="data-list-{{$address.id}}" data-value="{{$address.id}}">
<div class="address-left">
<div class="user-base">
{{if !empty($address.alias)}}
@ -327,7 +327,7 @@
{{/php}}
<!-- 分组导航内部结束钩子-结束 -->
</div>
<div class="am-panel-bd">
<div class="am-panel-bd am-radius">
<!-- 分组商品顶部钩子-开始 -->
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true}}
<div class="plugins-tag">
@ -477,7 +477,7 @@
<!-- 扩展展示数据 -->
{{if !empty($v['order_base']['extension_data'])}}
<ul class="buy-extension-data am-padding-xs am-margin-bottom-sm">
<ul class="buy-extension-data am-padding-xs am-margin-bottom-sm am-radius">
{{foreach $v['order_base']['extension_data'] as $ext}}
<li>
<span class="extension-items-name">{{$ext.name}}</span>
@ -565,7 +565,7 @@
<!-- 留言 -->
<div class="buy-message am-margin-top-sm">
<div class="order-extra">
<div class="order-extra am-radius">
<label>买家留言</label>
<input type="text" class="memo-input" title="选填,对本次交易的说明(建议填写已经和卖家达成一致的说明)" placeholder="选填,建议填写和卖家达成一致的说明" />
</div>
@ -604,7 +604,7 @@
<!-- 基础信息 -->
<div class="order-nav">
<div class="pay-confirm">
<div class="box">
<div class="box am-radius">
<div class="base-real-pay">
<em>实付款 :</em>
<span class="price">
@ -668,7 +668,7 @@
{{/if}}
<!-- 订单确认页面提交订单表单内部钩子-结束 -->
<div class="go-btn-wrap">
<button type="submit" class="btn-go btn-loading-example" title="点击此按钮,提交订单" data-am-loading="{loadingText:'处理中...'}">提交订单</button>
<button type="submit" class="btn-go am-radius btn-loading-example" title="点击此按钮,提交订单" data-am-loading="{loadingText:'处理中...'}">提交订单</button>
</div>
</form>
</div>

View File

@ -377,9 +377,9 @@
<div class="cart-title number">数量</div>
<dd>
<div class="am-input-group am-input-group-sm number-tag">
<button class="am-input-group-label" id="min" type="button">-</button>
<button class="am-input-group-label am-radius" id="min" type="button">-</button>
<input type="number" class="am-form-field" value="{{$goods.buy_min_number}}" id="text_box" min="{{$goods.buy_min_number}}" max="{{if empty($goods['buy_max_number'])}}{{$goods.inventory}}{{else /}}{{$goods.buy_max_number}}{{/if}}" data-original-max="{{$goods.inventory}}" data-ajax-url="{{:MyUrl('index/goods/stock')}}" />
<button class="am-input-group-label" id="add" type="button">+</button>
<button class="am-input-group-label am-radius" id="add" type="button">+</button>
</div>
<span class="tb-hidden stock-tips"><span>库存</span><span class="stock" data-original-stock="{{$goods.inventory}}" data-min-limit="{{$goods.buy_min_number}}" data-max-limit="{{$goods.buy_max_number}}" data-unit="{{$goods.inventory_unit}}">{{$goods.inventory}}</span><span>{{$goods.inventory_unit}}</span></span>
</dd>
@ -400,8 +400,8 @@
{{/if}}
<div class="btn-op">
<span class="btn am-btn am-btn-default confirm login-event" data-type="cart">确认</span>
<span class="btn close am-btn am-btn-danger cancel">取消</span>
<span class="am-radius btn am-btn am-btn-default confirm login-event" data-type="cart">确认</span>
<span class="am-radius btn close am-btn am-btn-danger cancel">取消</span>
</div>
</div>
<div class="theme-signin-right">
@ -500,7 +500,7 @@
{{switch $v.type}}
{{case show}}
<a href="{{if empty($v['value'])}}javascript:;{{else /}}tel:{{$v.value}}{{/if}}"
class="buy-btn {{if !empty($v['class'])}}{{$v.class}}{{/if}}"
class="am-radius buy-btn {{if !empty($v['class'])}}{{$v.class}}{{/if}}"
{{if !empty($v['title'])}}title="{{$v.title}}"{{/if}}
data-type="{{$v.type}}"
data-value="{{if isset($v['value'])}}{{$v.value}}{{/if}}">
@ -512,7 +512,7 @@
{{/case}}
{{default /}}
<button type="button"
class="buy-btn {{$v.type}}-submit {{if !empty($v['color']) and $v['color'] eq 'second'}}buy-btn-second {{/if}} {{if !empty($v['class'])}}{{$v.class}} {{/if}}"
class="am-radius buy-btn {{$v.type}}-submit {{if !empty($v['color']) and $v['color'] eq 'second'}}buy-btn-second {{/if}} {{if !empty($v['class'])}}{{$v.class}} {{/if}}"
{{if !empty($v['title'])}}title="{{$v.title}}"{{/if}}
data-type="{{$v.type}}"
data-value="{{if isset($v['value'])}}{{$v.value}}{{/if}}">

View File

@ -0,0 +1,23 @@
{{if !empty($module_data) and !empty($module_data['user'])}}
<img src="{{$module_data.user.avatar}}" alt="{{$module_data.user.user_name_view}}" class="am-img-thumbnail am-radius am-align-left am-margin-right-xs am-margin-bottom-0" width="35" height="35" />
<ul class="user-base">
<li class="am-text-truncate">{{$module_data.user.user_name_view}}</li>
<li>
{{if !empty($module_data['user']['username'])}}
<a href="javascript:;" class="am-icon-user am-text-grey am-margin-right-sm" data-am-popover="{content: '账号:{{$module_data.user.username}}{{if !empty($module_data['user']['nickname'])}}<br />昵称:{{$module_data.user.nickname}}{{/if}}', trigger: 'hover focus', theme: 'sm'}"></a>
{{/if}}
{{if !empty($module_data['user']['number_code'])}}
<a href="javascript:;" class="am-icon-qrcode am-text-grey am-margin-right-sm" data-am-popover="{content: '{{$module_data.user.number_code}}', trigger: 'hover focus', theme: 'sm'}"></a>
{{/if}}
{{if !empty($module_data['user']['mobile'])}}
<a href="javascript:;" class="am-icon-phone-square am-text-grey am-margin-right-sm" data-am-popover="{content: '{{$module_data.user.mobile}}', trigger: 'hover focus', theme: 'sm'}"></a>
{{/if}}
{{if !empty($module_data['user']['email'])}}
<a href="javascript:;" class="am-icon-envelope am-text-grey am-margin-right-sm" data-am-popover="{content: '{{$module_data.user.email}}', trigger: 'hover focus', theme: 'sm'}"></a>
{{/if}}
{{if !empty($module_data['user']['gender_text'])}}
<a href="javascript:;" class="am-icon-child am-text-grey" data-am-popover="{content: '{{$module_data.user.gender_text}}', trigger: 'hover focus', theme: 'sm'}"></a>
{{/if}}
</li>
</ul>
{{/if}}

View File

@ -101,12 +101,8 @@
</a>
<div class="am-nbfc">
<a href="{{$item.goods_url}}" target="_blank" class="am-nowrap-initial">{{$item.title}}</a>
{{if !empty($item.spec)}}
<ul class="goods-spec am-margin-top-xs">
{{foreach $item.spec as $spec}}
<li>{{$spec.type}}{{$spec.value}}</li>
{{/foreach}}
</ul>
{{if !empty($item['spec_text'])}}
<div class="am-margin-top-xs am-nowrap-initial">{{$item.spec_text}}</div>
{{/if}}
</div>
</div>

View File

@ -57,12 +57,8 @@
</a>
<div class="am-nbfc">
<a href="{{$module_data.order_data.items.goods_url}}" target="_blank" class="am-nowrap-initial">{{$module_data.order_data.items.title}}</a>
{{if !empty($module_data.order_data.items.spec)}}
<ul class="goods-spec am-margin-top-xs">
{{foreach $module_data.order_data.items.spec as $spec}}
<li>{{$spec.type}}{{$spec.value}}</li>
{{/foreach}}
</ul>
{{if !empty($module_data['order_data']['items']['spec_text'])}}
<div class="am-margin-top-xs am-nowrap-initial">{{$module_data.order_data.items.spec_text}}</div>
{{/if}}
</div>
</div>

View File

@ -43,7 +43,7 @@
{{/if}}
<!-- 搜索框 -->
<form action="{{:MyUrl('index/search/index')}}" method="POST">
<form action="{{:MyUrl('index/search/index')}}" method="POST" class="am-radius am-nbfc">
<div class="search-group">
<input id="search-input" name="wd" type="text" placeholder="其实搜索很简单^_^ !" value="{{if !empty($params['wd'])}}{{$params.wd}}{{/if}}" autocomplete="off" />
<button type="submit" id="ai-topsearch" class="submit am-btn">

View File

@ -2,7 +2,7 @@
<ul class="am-avg-sm-2 am-avg-md-3 am-avg-lg-5 am-margin-top-sm search-list">
{{foreach $data_list as $v}}
<li>
<div class="items am-padding-bottom-xs">
<div class="items am-padding-bottom-xs am-radius">
<a href="{{$v.goods_url}}" target="_blank" class="am-block">
<!-- 搜索页面商品信息顶部钩子 -->
{{if isset($shopxo_is_develop) and $shopxo_is_develop eq true}}

View File

@ -53,7 +53,7 @@
<strong class="map-result-count am-text-danger">{{$data_total}}</strong>
<span>条数据</span>
</p>
<button class="am-btn am-btn-primary am-icon-filter map-offcanvas-submit" data-am-offcanvas="{target: '#search-map'}"></button>
<button class="am-btn am-btn-primary am-btn-xs am-radius am-icon-filter map-offcanvas-submit" data-am-offcanvas="{target: '#search-map'}"></button>
</div>
<!-- 搜索条件顶部钩子 -->

View File

@ -28,7 +28,7 @@
<a href="{{:MyUrl('index/user/logininfo')}}" class="am-btn am-btn-secondary am-btn-xs am-radius">立即登录</a>
{{/if}}
</div>
<div class="user-form-container">
<div class="user-form-container am-radius">
<!-- form start -->
<form class="am-form form-validation am-padding-bottom-sm" method="post" action="{{:MyUrl('index/user/forgetpwd')}}" request-type="ajax-url" request-value="{{:MyUrl('index/user/logininfo')}}">
<div class="am-form-group am-form-group-refreshing business-form-block">

View File

@ -18,7 +18,6 @@
<!-- content -->
<div class="am-container user-main user-center">
<!-- user menu start -->
{{include file="public/user_menu" /}}
<!-- user menu end -->

View File

@ -43,7 +43,7 @@
{{/foreach}}
{{/if}}
</div>
<div class="user-form-container">
<div class="user-form-container am-radius">
{{if count($home_user_login_type) gt 0}}
{{include file="user/login_content" /}}
{{else /}}

View File

@ -51,7 +51,7 @@
{{/if}}
</div>
<div class="register-content">
<div class="register-content am-radius">
{{if !empty($home_user_reg_type)}}
<div data-am-widget="tabs" class="am-tabs am-tabs-d2" data-am-tabs="{noSwipe: 1}">
<ul class="am-tabs-nav am-cf">

View File

@ -428,7 +428,7 @@ class FormHandleModule
// 附件字段
$is_handle_annex_field = isset($form_data['is_handle_annex_field']) && $form_data['is_handle_annex_field'] == 1;
$handle_annex_fields = empty($form_data['handle_annex_fields']) ? ['icon', 'images'] : (is_array($form_data['handle_annex_fields']) ? $form_data['handle_annex_fields'] : explode(',', $form_data['handle_annex_fields']));
$handle_annex_fields = empty($form_data['handle_annex_fields']) ? ['icon', 'images', 'images_url', 'video', 'video_url'] : (is_array($form_data['handle_annex_fields']) ? $form_data['handle_annex_fields'] : explode(',', $form_data['handle_annex_fields']));
// 数据处理
if(!empty($data_merge) || $is_handle_time_field || $is_fixed_name_field || $is_handle_annex_field)

View File

@ -40,7 +40,7 @@ class PluginsService
{
// 从缓存获取数据、数据不存在则从数据库读取
$data = ($is_cache === true) ? self::PluginsCacheData($plugins) : [];
if(empty($data) || !$is_cache)
if(empty($data) || !$is_cache || MyEnv('app_debug'))
{
// 获取数据
$ret = self::PluginsField($plugins, 'data');

View File

@ -2798,7 +2798,7 @@ class UserService
}
if(!empty($user_ids))
{
$data = Db::name('User')->where(['id'=>$user_ids])->column('id,number_code,system_type,username,nickname,mobile,email,avatar,province,city,county', 'id');
$data = Db::name('User')->where(['id'=>$user_ids])->column('id,number_code,system_type,username,nickname,mobile,email,avatar,province,city,county,gender', 'id');
}
// 数据处理

View File

@ -66,7 +66,7 @@ if(empty($_SERVER['HTTP_HOST']))
$main_domain = '';
} else {
// 判断是否是双后缀
$preg = '/[\w].+\.(com|net|org|gov|edu|ac|bj|sh|tj|cq|he|sn|sx|nm|ln|jl|hl|js|zj|ah|fj|jx|sd|ha|hb|hn|gd|gx|hi|sc|gz|yn)\.cn$/';
$preg = '/[\w].+\.(com|net|org|gov|ac|bj|sh|tj|cq|he|sn|sx|nm|ln|jl|hl|js|zj|ah|fj|jx|sd|ha|hb|hn|gd|gx|hi|sc|gz|yn|gs|qh|nx|xj|tw|hk|mo|xz|edu|ge|dev|co)\.(cn|nz|mm)$/';
if($len > 2 && preg_match($preg, $main_domain))
{
// 双后缀取后3位

View File

@ -40,7 +40,10 @@ $(function()
var $this = $(this);
$.AMUI.progress.start();
$this.button('loading');
if($(this).hasClass('search-submit'))
{
$this.button('loading');
}
$('.goods-list-container ul.am-gallery').html('<div class="table-no"><i class="am-icon-spinner am-icon-pulse"></i> '+($('.goods-list-container').data('loading-msg'))+'</div>');
$.ajax({
url: RequestUrlHandle(url),

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -109,7 +109,7 @@ html input[disabled] { cursor: default !important; color: #b1b1b1 !important; ba
.am-form-success .chosen-choices, .am-form-success .chosen-single {
border: 1px solid #5eb95e !important;
}
form.am-form .am-form-group-label-tips, form.am-form .am-form-group-label-tips-must {
form.am-form .am-form-group-label-tips, form.am-form .am-form-group-label-tips-must, form.am-form .am-form-group-label-tips-either {
font-size: 12px;
font-weight: 400;
margin-left: 10px;
@ -120,6 +120,9 @@ form.am-form .am-form-group-label-tips {
form.am-form .am-form-group-label-tips-must {
color: #f00;
}
form.am-form .am-form-group-label-tips-either {
color: #ff9800;
}
.am-form-group:hover>label {
color: #333 !important;
}
@ -583,6 +586,23 @@ form.am-form .am-form-group.am-form-icon {
}
}
/**
*
*/
.am-offcanvas-popup .am-offcanvas-bar {
max-width: 90%;
box-shadow: 0 0 10px rgb(0 0 0 / 10%);
}
.am-offcanvas-popup .am-offcanvas-bar:after {
background: none;
}
.am-offcanvas-popup .am-offcanvas-bar {
background: #fff;
}
.am-offcanvas-popup .am-offcanvas-content {
color: #666;
}
/**
* iframe
*/
@ -1142,6 +1162,15 @@ button.colorpicker-submit img {
max-height: 34px;
height: auto;
}
.am-table-scrollable-horizontal ul.user-base {
padding-top: 2px;
}
.am-table-scrollable-horizontal ul.user-base li {
line-height: 12px;
}
.am-table-scrollable-horizontal ul.user-base li:first-child {
margin-bottom: 7px;
}
/**
* -

View File

@ -758,7 +758,7 @@ function TreeItemHtmlHandle(item, pid, level, is_delete_all)
}
if((item.icon || null) != null)
{
html += '<a href="'+item.icon+'" target="_blank"><img src="'+item.icon+'" width="20" height="20" class="am-vertical-align-middle am-margin-right-xs" /></a>';
html += '<a href="'+item.icon+'" target="_blank" class="three-item-icon"><img src="'+item.icon+'" width="20" height="20" class="am-vertical-align-middle am-margin-right-xs am-radius" /></a>';
}
html += '<span>'+(item.name_alias || item.name)+'</span>';
html += '</span>';
@ -831,6 +831,19 @@ function TreeFormSaveBackHandle(e)
// 名称更新
$obj.find('td>span>span').text(json.name_alias || json.name);
// 图标
if((json.icon || null) != null)
{
if($obj.find('.three-item-icon').length == 0)
{
$obj.find('td>.name').prepend('<a href="'+json.icon+'" target="_blank" class="three-item-icon"><img src="'+json.icon+'" width="20" height="20" class="am-vertical-align-middle am-margin-right-xs am-radius" /></a>');
} else {
$obj.find('.three-item-icon img').attr('src', json.icon);
}
} else {
$obj.find('.three-item-icon').remove();
}
// 状态处理
if(json.is_enable != json_old.is_enable)
{
@ -1011,7 +1024,7 @@ function ModalLoad(url, title, class_tag, full = 0, full_max = 0, full_max_size
// 调用弹窗组件
AMUI.dialog.popup({
title: title || '',
content: '<iframe src="'+RequestUrlHandle(url)+'" width="100%" height="100%"></iframe>',
content: '<iframe src="'+RequestUrlHandle(url)+'" width="100%" height="100%" class="am-block"></iframe>',
class: ent
});
}
@ -3990,6 +4003,37 @@ $(function()
ModalLoad(url, title, class_tag, full, full_max, full_max_size);
});
// 加载 loading modal 弹层
$(document).on('click', '.submit-modal', function()
{
var url = $(this).data('url') || null;
if(url == null)
{
Prompt(window['lang_operate_params_error'] || 'url未配置');
return false;
}
// 宽高
var config = {};
var width = parseInt($(this).data('width') || 0);
if(width > 0)
{
config['width'] = width;
}
var height = parseInt($(this).data('height') || 0);
if(height > 0)
{
config['height'] = height;
}
// 调用类库方法
AMUI.dialog.alert({
isClose: true,
config: config,
url: url,
});
});
// 地图弹窗
$(document).on('click', '.submit-map-popup', function()
{

View File

@ -21,8 +21,7 @@ dialog.alert = function(options) {
options.isClose = options.isClose || false;
options.isBtn = options.isBtn || false;
options.config = options.config || {};
options.onConfirm = options.onConfirm || function() {
};
options.onConfirm = options.onConfirm || function() {};
var html = [];
html.push('<div class="am-modal am-modal-alert '+options.class+'" tabindex="-1">');
html.push('<div class="am-modal-dialog am-radius am-nbfc">');
@ -39,7 +38,13 @@ dialog.alert = function(options) {
}
html.push('</div>');
}
html.push('<div class="am-modal-bd">' + options.content + '</div>');
// 是否url模式
if((options.url || null) != null)
{
html.push('<iframe src="'+options.url+'" class="am-block" style="width:100%;height:calc(100% - 20px);"></iframe>');
} else {
html.push('<div class="am-modal-bd">' + options.content + '</div>');
}
if(options.isBtn)
{
html.push('<div class="am-modal-footer"><span class="am-modal-btn">'+options.confirmText+'</span></div>');
@ -66,10 +71,8 @@ dialog.confirm = function(options) {
options.content = options.content || '提示内容';
options.cancelText = options.cancelText || '取消';
options.confirmText = options.confirmText || '确定';
options.onConfirm = options.onConfirm || function() {
};
options.onCancel = options.onCancel || function() {
};
options.onConfirm = options.onConfirm || function() {};
options.onCancel = options.onCancel || function() {};
var html = [];
html.push('<div class="am-modal am-modal-confirm" tabindex="-1">');
@ -171,8 +174,7 @@ dialog.popup = function(options) {
options.title = options.title || null;
options.content = options.content || '正文';
options.class = options.class || '';
options.onClose = options.onClose || function() {
};
options.onClose = options.onClose || function() {};
var html = [];
@ -204,6 +206,35 @@ dialog.popup = function(options) {
});
};
dialog.offcanvas = function(options) {
options = options || {};
options.content = options.content || '正文';
options.class = options.class || '';
options.onClose = options.onClose || function() {};
options.width = ((options.width || 0) == 0) ? '' : 'width:'+options.width+'px;';
var html = [];
html.push('<div class="am-offcanvas am-offcanvas-popup '+options.class+'">');
html.push('<div class="am-offcanvas-bar am-offcanvas-bar-flip" style="'+options.width+'">');
// 是否url模式
if((options.url || null) != null)
{
html.push('<iframe src="'+options.url+'" class="am-block" style="width:100%;height:100%;"></iframe>');
} else {
html.push('<div class="am-offcanvas-content">' + options.content + '</div>');
}
html.push('</div>');
html.push('</div>');
return $(html.join('')).appendTo('body').offCanvas().on('closed.offcanvas.amui', function() {
var $this = $(this);
setTimeout(function()
{
$this.remove();
}, 1000);
options.onClose();
});
};
module.exports = UI.dialog = dialog;
}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})

View File

@ -8430,7 +8430,6 @@ img.am-thumbnail,
background: #0e90d2;
color: #fff;
border: 1px solid #0c7cb5;
border-radius: 0;
}
.am-alert a {
color: #fff;
@ -9091,7 +9090,6 @@ TODO:
padding: 15px 10px;
text-align: center;
border-bottom: 1px solid rgba(0,0,0,.03);
border-radius: 2px 2px 0 0;
}
.am-modal-bd + .am-modal-bd {
margin-top: 5px;

View File

@ -121,7 +121,7 @@ input.add,input.min{width:15px}
/*分类*/
.goods-category-s {display:block;position: absolute;z-index: 1021;}
.goods-category-s .all-goods, .goods-category-title .all-goods {font-size: 16px;}
.goods-category-title{background:#d2364c;color:#fff ;height: 40px;line-height: 44px;display:block;position: absolute;width:150px ;text-align: center;top:0px;cursor: pointer;}
.goods-category-title{background:#d2364c;color:#fff ;height: 40px;line-height: 44px;display:block;position: absolute;width:150px ;text-align: center;top:0px;cursor: pointer;border-top-left-radius: 2px;border-top-right-radius: 2px;}
.goods-category-s .category-content{ position:relative; width: 150px; float: left;background:#fff; top: 45px;}
.goods-category-s .category-content .all-goods { display: block; padding: 0; border-radius: 5px 5px 0 0; font-weight: 600; line-height: 36px;width:150px;height: 36px; padding: 0; border-radius: 5px 5px 0 0; color: #fff; text-align: center; font: 16px/36px "Microsoft YaHei";}
.goods-category-s .category-content .all-goods em{ font: 12px/36px "Microsoft YaHei"; }

View File

@ -91,7 +91,7 @@ input{font-size:12px;font-size:100%;outline:none;line-height:normal;color:#444;}
/*操作*/
.btn-op{overflow: hidden;padding:10px 30%; position: static;}
.theme-signin .btn {width:auto; font-size:12px ;padding:5px 15px ;border-radius:0;}
.theme-signin .btn {width:auto; font-size:12px ;padding:5px 15px;}
.btn.close {display:block;float: left;position: static;}
i.buy-event{display: inline-block;}
.btn.confirm { float: right; }