This commit is contained in:
devil_gong
2018-10-09 18:24:44 +08:00
parent 52c735f89e
commit e24671b319
31 changed files with 979 additions and 533 deletions

View File

@ -17,6 +17,10 @@
<label>{{$data.home_sms_user_forget_pwd.name}}<span class="fs-12 fw-100 cr-999">{{$data.home_sms_user_forget_pwd.describe}}</span></label>
<input type="text" name="{{$data.home_sms_user_forget_pwd.only_tag}}" placeholder="{{$data.home_sms_user_forget_pwd.name}}" data-validation-message="{{$data.home_sms_user_forget_pwd.error_tips}}" class="am-radius" <present name="data"> value="{{$data.home_sms_user_forget_pwd.value}}"</present> />
</div>
<div class="am-form-group">
<label>{{$data.home_sms_user_mobile_binding.name}}<span class="fs-12 fw-100 cr-999">{{$data.home_sms_user_mobile_binding.describe}}</span></label>
<input type="text" name="{{$data.home_sms_user_mobile_binding.only_tag}}" placeholder="{{$data.home_sms_user_mobile_binding.name}}" data-validation-message="{{$data.home_sms_user_mobile_binding.error_tips}}" class="am-radius" <present name="data"> value="{{$data.home_sms_user_mobile_binding.value}}"</present> />
</div>
<div class="am-form-group">
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm w100" data-am-loading="{loadingText:'{{:L('common_form_loading_tips')}}'}">{{:L('common_operation_save')}}</button>
</div>

View File

@ -180,9 +180,6 @@ class CommonController extends Controller
// 用户中心菜单
$this->assign('user_left_menu', L('user_left_menu'));
// 用户顶部菜单
$this->assign('user_nav_menu', L('user_nav_menu'));
// 商品大分类
$this->assign('goods_category_list', GoodsService::GoodsCategory());

View File

@ -86,9 +86,6 @@ class OrderController extends CommonController
// 参数
$this->assign('params', $params);
// 数据列表
$this->assign('list', $list);
$this->display('Index');
}

View File

@ -231,10 +231,10 @@ class SafetyController extends CommonController
$code = GetNumberCode(6);
if($type == 'sms')
{
$obj = new \My\Sms($verify_param);
$state = $obj->SendText($accounts, MyC('home_sms_user_mobile_binding'), $code);
$obj = new \Library\Sms($verify_param);
$state = $obj->SendCode($accounts, $code, MyC('home_sms_user_mobile_binding'));
} else {
$obj = new \My\Email($verify_param);
$obj = new \Library\Email($verify_param);
$email_param = array(
'email' => $accounts,
'content' => MyC('home_email_user_email_binding'),
@ -313,9 +313,9 @@ class SafetyController extends CommonController
);
if($type == 'sms')
{
$obj = new \My\Sms($verify_param);
$obj = new \Library\Sms($verify_param);
} else {
$obj = new \My\Email($verify_param);
$obj = new \Library\Email($verify_param);
}
// 是否已过期
if(!$obj->CheckExpire())
@ -370,9 +370,9 @@ class SafetyController extends CommonController
);
if($type == 'sms')
{
$obj = new \My\Sms($verify_param);
$obj = new \Library\Sms($verify_param);
} else {
$obj = new \My\Email($verify_param);
$obj = new \Library\Email($verify_param);
}
// 是否已过期
if(!$obj->CheckExpire())

View File

@ -0,0 +1,76 @@
<?php
namespace Home\Controller;
use Service\GoodsService;
/**
* 用户收藏
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-01T21:51:08+0800
*/
class UserFavorController extends CommonController
{
/**
* [_initialize 前置操作-继承公共前置方法]
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-03T12:39:08+0800
*/
public function _initialize()
{
// 调用父类前置方法
parent::_initialize();
}
/**
* 商品收藏
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2018-10-09
* @desc description
*/
public function Goods()
{
// 参数
$params = array_merge($_POST, $_GET);
$params['user'] = $this->user;
// 分页
$number = 10;
// 条件
$where = GoodsService::HomeFavorGoodsListWhere($params);
// 获取总数
$total = GoodsService::FavorGoodsTotal($where);
// 分页
$page_params = array(
'number' => $number,
'total' => $total,
'where' => $params,
'url' => U('Home/UserFavor/Goods'),
);
$page = new \Library\Page($page_params);
$this->assign('page_html', $page->GetPageHtml());
// 获取列表
$data_params = array(
'limit_start' => $page->GetPageStarNumber(),
'limit_number' => $number,
'where' => $where,
);
$data = GoodsService::FavorGoodsList($data_params);
$this->assign('data_list', $data['data']);
// 参数
$this->assign('params', $params);
$this->display('Goods');
}
}
?>

View File

@ -20,7 +20,7 @@ return array(
array(
'name' => '我的交易',
'is_show' => 1,
'icon' => 'am-icon-mortar-board',
'icon' => 'am-icon-cube',
'item' => array(
array(
'control' => 'Order',
@ -31,6 +31,20 @@ return array(
)
)
),
array(
'name' => '我的收藏',
'is_show' => 1,
'icon' => 'am-icon-heart',
'item' => array(
array(
'control' => 'UserFavor',
'action' => 'Goods',
'name' => '商品收藏',
'is_show' => 1,
'icon' => 'am-icon-shopping-basket',
)
)
),
array(
'name' => '会员信息',
'is_show' => 1,
@ -60,56 +74,5 @@ return array(
)
),
),
// 用户中心未显示的菜单active选中映射小写
'user_left_menu_hidden_active' => array(
'studentpolyinfo' => 'studentindex',
'studentscoreinfo' => 'studentindex',
'personalsaveinfo' => 'Personalindex',
'safetyloginpwdinfo' => 'safetyindex',
'safetymobileinfo' => 'safetyindex',
'safetynewmobileinfo' => 'safetyindex',
'safetyemailinfo' => 'safetyindex',
'safetynewemailinfo' => 'safetyindex',
),
// 用户顶部导航
'user_nav_menu' => array(
array(
'control' => 'Bubble',
'action' => 'Index',
'name' => '冒泡',
'is_show' => 1,
'icon' => 'am-icon-slideshare',
),
array(
'control' => 'Personal',
'action' => 'Index',
'name' => '资料',
'is_show' => 1,
'icon' => 'am-icon-gear',
),
array(
'control' => 'Student',
'action' => 'Index',
'name' => '学生',
'is_show' => 1,
'icon' => 'am-icon-mortar-board',
),
array(
'control' => 'Safety',
'action' => 'Index',
'name' => '设置',
'is_show' => 1,
'icon' => 'am-icon-user-secret',
),
array(
'control' => 'User',
'action' => 'Logout',
'name' => '退出',
'is_show' => 1,
'icon' => 'am-icon-power-off',
),
),
);
?>

View File

@ -11,10 +11,6 @@ return array(
'personal_save_nav_title_text' => '个人资料',
'personal_nickname_text' => '昵称',
'personal_nickname_format' => '昵称 2~16 个字符之间',
'personal_signature_text' => '个人签名',
'personal_signature_format' => '个人签名 0~168个字符之间',
'personal_describe_text' => '个人描述',
'personal_describe_format' => '个人描述 0~255个字符之间',
'personal_birthday_text' => '生日',
'personal_birthday_format' => '生日格式有误',
@ -25,8 +21,6 @@ return array(
'birthday_text' => array('name' => '生日'),
'mobile_security' => array('name' => '手机号码', 'tips' => '<a href="'.U('Home/Safety/MobileInfo').'">修改</a>'),
'email_security' => array('name' => '电子邮箱', 'tips' => '<a href="'.U('Home/Safety/EmailInfo').'">修改</a>'),
'signature' => array('name' => '个人签名'),
'describe' => array('name' => '个人描述'),
'add_time_text' => array('name' => '注册时间'),
'upd_time_text' => array('name' => '最后更新时间'),
),

View File

@ -18,62 +18,8 @@ class PersonalModel extends CommonModel
// 数据自动校验
protected $_validate = array(
// 添加/编辑
array('nickname', 'CheckNickName', '{%personal_nickname_format}', 1, 'callback', 3),
array('nickname', '2,16', '{%personal_nickname_format}', 1, 'length', 3),
array('gender', array(0,1,2), '{%common_gender_tips}', 1, 'in', 3),
array('birthday', 'CheckBirthday', '{%student_birthday_format}', 1, 'callback', 3),
array('signature', 'CheckSignature', '{%personal_signature_format}', 1, 'callback', 3),
array('describe', 'CheckDescribe', '{%personal_describe_format}', 1, 'callback', 3),
);
/**
* [CheckNickName 昵称校验]
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-13T19:29:30+0800
*/
public function CheckNickName()
{
$len = Utf8Strlen(I('nickname'));
return ($len >= 2 && $len <= 16);
}
/**
* [CheckBirthday 生日校验]
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-13T15:12:32+0800
*/
public function CheckBirthday()
{
return (preg_match('/'.L('common_regex_birthday').'/', I('birthday')) == 1) ? true : false;
}
/**
* [CheckSignature 个人签名校验]
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-13T19:29:30+0800
*/
public function CheckSignature()
{
$len = Utf8Strlen(I('signature'));
return ($len <= 168);
}
/**
* [CheckDescribe 个人描述校验]
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-13T19:29:30+0800
*/
public function CheckDescribe()
{
$len = Utf8Strlen(I('describe'));
return ($len <= 255);
}
}
?>

View File

@ -15,237 +15,237 @@
<!-- content -->
<div class="am-container user-main">
<!-- user menu start -->
<include file="Public/UserMenu" />
<!-- user menu end -->
<!-- user menu start -->
<include file="Public/UserMenu" />
<!-- user menu end -->
<!-- content start -->
<div class="user-content">
<div class="user-content-body">
<form class="am-form form-validation" method="post" action="{{:U('Home/Order/Index')}}" request-type="form">
<div class="thin">
<div class="am-input-group am-input-group-sm am-fl so">
<input type="text" name="keywords" class="am-radius" placeholder="账单号或关键字" value="<notempty name="params.keywords">{{$params.keywords}}</notempty>" />
<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>
<!-- content start -->
<div class="user-content">
<div class="user-content-body">
<form class="am-form form-validation" method="post" action="{{:U('Home/Order/Index')}}" request-type="form">
<div class="thin">
<div class="am-input-group am-input-group-sm am-fl so">
<input type="text" name="keywords" class="am-radius" placeholder="账单号或关键字" value="<notempty name="params.keywords">{{$params.keywords}}</notempty>" />
<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">
更多筛选条件
<input type="checkbox" name="is_more" value="1" class="none am-field-valid" <if condition="isset($params['is_more'])">checked</if> />
<i class="am-icon-angle-up"></i>
</label>
</div>
<label class="am-fl thin_sub">
更多筛选条件
<input type="checkbox" name="is_more" value="1" class="none am-field-valid" <if condition="isset($params['is_more'])">checked</if> />
<i class="am-icon-angle-up"></i>
</label>
</div>
<table class="so-list <if condition="!isset($params['is_more'])">none</if>">
<tbody><tr>
<td class="time">
<span>时间:</span>
<span class="am-form-group">
<input type="text" name="time_start" class="am-form-field am-input-sm am-radius Wdate" placeholder="起始时间" value="<notempty name="params.time_start">{{$params.time_start}}</notempty>" data-validation-message="日期格式有误" onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'yyyy-MM-dd'})" autocomplete="off" /><i class="am-icon-calendar"></i>
</span>
<em class="text-grey">~</em>
<span class="am-form-group">
<input type="text" name="time_end" class="am-form-field am-input-sm am-radius Wdate" placeholder="结束时间" value="<notempty name="params.time_end">{{$params.time_end}}</notempty>" pattern="^[0-9]{4}-[0-9]{2}-[0-9]{2}$" data-validation-message="日期格式有误" onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'yyyy-MM-dd'})" autocomplete="off" /><i class="am-icon-calendar"></i>
</span>
</td>
<td class="price">
<span>价格:</span>
<span class="am-form-group">
<input type="text" name="price_start" class="am-form-field am-input-sm am-radius" placeholder="最小价格" pattern="^([0-9]{1}\d{0,6})(\.\d{1,2})?$" data-validation-message="价格0~9之间的数字" value="<notempty name="params.price_start">{{$params.price_start}}</notempty>" />
</span>
<em class="text-grey">~</em>
<span class="am-form-group">
<input type="text" name="price_end" class="am-form-field am-input-sm am-radius" placeholder="最大价格" pattern="^([0-9]{1}\d{0,6})(\.\d{1,2})?$" data-validation-message="价格0~9之间的数字" value="<notempty name="params.price_end">{{$params.price_end}}</notempty>" />
</span>
</td>
</tr>
<tr>
<td>
<span>支付:</span>
<select name="payment_id" class="chosen-select" data-placeholder="支付方式...">
<option value="-1">支付方式...</option>
<notempty name="payment_list">
<foreach name="payment_list" item="payment">
<option value="{{$payment.id}}" <if condition="isset($params['payment_id']) and $params['payment_id'] eq $payment['id']">selected</if>>{{$payment.name}}</option>
</foreach>
</notempty>
</select>
</td>
<td>
<span>付款:</span>
<select name="pay_status" class="chosen-select" data-placeholder="付款状态...">
<option value="-1">付款状态...</option>
<notempty name="common_order_pay_status">
<foreach name="common_order_pay_status" item="pay">
<option value="{{$pay.id}}" <if condition="isset($params['pay_status']) and $params['pay_status'] eq $pay['id']">selected</if>>{{$pay.name}}</option>
</foreach>
</notempty>
</select>
</td>
</tr>
<tr>
<td>
<span>状态:</span>
<select name="status" class="chosen-select" data-placeholder="订单状态...">
<option value="-1">订单状态...</option>
<notempty name="common_order_user_status">
<foreach name="common_order_user_status" item="status">
<option value="{{$status.id}}" <if condition="isset($params['status']) and $params['status'] eq $status['id']">selected</if>>{{$status.name}}</option>
</foreach>
</notempty>
</select>
</td>
</tr>
<tr>
<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="{{:U('Home/Order/Index')}}" class="am-btn am-btn-warning am-radius am-btn-sm reset-submit">清除条件</a>
</td>
</tr>
</tbody></table>
</form>
<!-- 订单抬头 -->
<div class="am-alert am-alert-secondary meila-radius">
<table class="content-title">
<tbody><tr>
<th class="row-content">商品</th>
<th class="row-price am-hide-sm-only">单价</th>
<th class="row-number am-hide-sm-only">数量</th>
<th class="row-total-price am-hide-sm-only">合计</th>
<th class="row-status">状态</th>
<th class="row-operate">操作</th>
</tr>
</tbody></table>
</div>
<!-- 订单列表 -->
<notempty name="data_list">
<foreach name="data_list" item="order">
<table id="data-list-{{$order.id}}" class="data-list <if condition="$order['status'] LT 4">data-ongoing</if>">
<tr class="content-hd">
<td colspan="6">
<span class="am-icon-calendar-check-o"> {{:date('Y-m-d', $order['add_time'])}}</span>
<span class="am-icon-bookmark-o"> {{$order.order_no}}</span>
<table class="so-list <if condition="!isset($params['is_more'])">none</if>">
<tbody><tr>
<td class="time">
<span>时间:</span>
<span class="am-form-group">
<input type="text" name="time_start" class="am-form-field am-input-sm am-radius Wdate" placeholder="起始时间" value="<notempty name="params.time_start">{{$params.time_start}}</notempty>" data-validation-message="日期格式有误" onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'yyyy-MM-dd'})" autocomplete="off" /><i class="am-icon-calendar"></i>
</span>
<em class="text-grey">~</em>
<span class="am-form-group">
<input type="text" name="time_end" class="am-form-field am-input-sm am-radius Wdate" placeholder="结束时间" value="<notempty name="params.time_end">{{$params.time_end}}</notempty>" pattern="^[0-9]{4}-[0-9]{2}-[0-9]{2}$" data-validation-message="日期格式有误" onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'yyyy-MM-dd'})" autocomplete="off" /><i class="am-icon-calendar"></i>
</span>
</td>
<td class="price">
<span>价格:</span>
<span class="am-form-group">
<input type="text" name="price_start" class="am-form-field am-input-sm am-radius" placeholder="最小价格" pattern="^([0-9]{1}\d{0,6})(\.\d{1,2})?$" data-validation-message="价格0~9之间的数字" value="<notempty name="params.price_start">{{$params.price_start}}</notempty>" />
</span>
<em class="text-grey">~</em>
<span class="am-form-group">
<input type="text" name="price_end" class="am-form-field am-input-sm am-radius" placeholder="最大价格" pattern="^([0-9]{1}\d{0,6})(\.\d{1,2})?$" data-validation-message="价格0~9之间的数字" value="<notempty name="params.price_end">{{$params.price_end}}</notempty>" />
</span>
</td>
</tr>
<foreach name="order.items" key="keys" item="goods">
<tr>
<td class="base row-content">
<div class="goods-detail">
<a href="{{$goods.goods_url}}" target="_blank">
<img src="{{$goods.images}}">
</a>
<div class="goods-base">
<a href="{{$goods.goods_url}}" target="_blank" class="goods-title">{{$goods.title}}</a>
<notempty name="goods.attribute">
<ul class="goods-attr">
<foreach name="goods.attribute" item="attr">
<li>{{$attr.attr_type_name}}{{$attr.attr_name}}</li>
</foreach>
</ul>
</notempty>
</div>
</div>
<div class="wap-base am-show-sm-only">
<if condition="$goods['original_price'] gt 0">
<span class="original-price">¥{{$goods.original_price}}</span>
</if>
<strong class="line-price">¥{{$goods.price}}</strong>
<span class="wap-number">x{{$goods.buy_number}}</span>
</div>
</td>
<td class="row-price am-hide-sm-only">
<if condition="$goods['original_price'] gt 0">
<p class="original-price">¥{{$goods.original_price}}</p>
</if>
<p class="line-price">¥{{$goods.price}}</p>
</td>
<td class="row-number am-hide-sm-only">
x{{$goods.buy_number}}
</td>
<if condition="$keys eq 0">
<td class="row-total-price am-hide-sm-only" rowspan="{{$order.items_count}}">
<strong class="total-price-content">¥{{$order.total_price}}</strong>
</td>
<td class="row-status" rowspan="{{$order.items_count}}">
{{$order.status_name}}
<div class="base-operate">
<a class="block" href="{{:U('Home/Order/Detail', ['id'=>$order['id']])}}" target="_blank">订单详情</a>
</div>
</td>
<td class="row-operate" rowspan="{{$order.items_count}}">
<!-- 0待确认, 1已确认/待支付, 2已支付/待发货, 3已发货/待收货, 4已完成, 5已取消, 6已关闭 -->
<if condition="in_array($order['status'], [0,1])">
<button type="button" class="am-btn am-btn-danger am-btn-xs am-radius am-btn-block submit-ajax submit-cancel" data-url="{{:U('Home/Order/Cancel')}}" data-id="{{$order.id}}" data-view="reload">取消</button>
</if>
<if condition="in_array($order['status'], [1])">
<button class="am-btn am-btn-primary am-btn-xs am-radius am-btn-block submit-pay" data-id="{{$order.id}}" data-payment-id="{{$order.payment_id}}" data-am-modal="{target: '#order-pay-popup'}">支付</button>
</if>
<if condition="in_array($order['status'], [3])">
<button type="button" class="am-btn am-btn-secondary am-btn-xs am-radius am-btn-block submit-ajax submit-confirm" data-url="{{:U('Home/Order/Collect')}}" data-id="{{$order.id}}" data-view="reload" data-msg="请仔细确认已收到货物、确认继续吗?">收货</button>
</if>
<if condition="in_array($order['status'], [4]) and $order['user_is_comments'] eq 0">
<a href="{{:U('Home/Order/Comments', ['id'=>$order['id']])}}" target="_blank" class="am-btn am-btn-primary am-btn-xs am-radius am-btn-block">评价</a>
</if>
<if condition="in_array($order['status'], [4,5,6])">
<button type="button" class="am-btn am-btn-danger am-btn-xs am-radius am-btn-block submit-delete" data-url="{{:U('Home/Order/Delete')}}" data-id="{{$order.id}}" data-view="reload">删除</button>
</if>
</td>
</if>
</tr>
</foreach>
</table>
</foreach>
<!-- 分页 -->
{{$page_html}}
</notempty>
<empty name="data_list">
<div class="table-no"><i class="am-icon-warning"></i> {{:L('common_not_data_tips')}}</div>
</empty>
<!-- 支付弹窗 -->
<div class="am-popup am-radius" id="order-pay-popup">
<div class="am-popup-inner">
<div class="am-popup-hd">
<h4 class="am-popup-title">支付</h4>
<span data-am-modal-close class="am-close">&times;</span>
</div>
<div class="am-popup-bd">
<form class="am-form pay-form" method="post" action="{{:U('Home/Order/Pay')}}">
<!-- 支付方式 -->
<div class="business-item">
<h3>选择支付</h3>
<notempty name="buy_payment_list">
<ul class="payment-list" data-type="payment">
<foreach name="buy_payment_list" item="payment">
<li class="payment-items-{{$payment.id}}" data-value="{{$payment.id}}">
<notempty name="payment.logo">
<img src="{{$payment.logo}}" />
</notempty>
<span>{{$payment.name}}</span>
<i class="icon-active"></i>
</li>
<tr>
<td>
<span>支付:</span>
<select name="payment_id" class="chosen-select" data-placeholder="支付方式...">
<option value="-1">支付方式...</option>
<notempty name="payment_list">
<foreach name="payment_list" item="payment">
<option value="{{$payment.id}}" <if condition="isset($params['payment_id']) and $params['payment_id'] eq $payment['id']">selected</if>>{{$payment.name}}</option>
</foreach>
</ul>
</notempty>
<empty name="buy_payment_list">
<div class="table-no"><i class="am-icon-warning"></i> {{:L('order_payment_not_data_tips')}}</div>
</empty>
</div>
<div class="am-form-group">
<input type="hidden" name="id" value="0" />
<input type="hidden" name="payment_id" value="0" />
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm am-btn-block" data-am-loading="{loadingText:'{{:L('common_form_loading_tips')}}'}">确认支付</button>
</div>
</form>
</notempty>
</select>
</td>
<td>
<span>付款:</span>
<select name="pay_status" class="chosen-select" data-placeholder="付款状态...">
<option value="-1">付款状态...</option>
<notempty name="common_order_pay_status">
<foreach name="common_order_pay_status" item="pay">
<option value="{{$pay.id}}" <if condition="isset($params['pay_status']) and $params['pay_status'] eq $pay['id']">selected</if>>{{$pay.name}}</option>
</foreach>
</notempty>
</select>
</td>
</tr>
<tr>
<td>
<span>状态:</span>
<select name="status" class="chosen-select" data-placeholder="订单状态...">
<option value="-1">订单状态...</option>
<notempty name="common_order_user_status">
<foreach name="common_order_user_status" item="status">
<option value="{{$status.id}}" <if condition="isset($params['status']) and $params['status'] eq $status['id']">selected</if>>{{$status.name}}</option>
</foreach>
</notempty>
</select>
</td>
</tr>
<tr>
<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="{{:U('Home/Order/Index')}}" class="am-btn am-btn-warning am-radius am-btn-sm reset-submit">清除条件</a>
</td>
</tr>
</tbody></table>
</form>
<!-- 订单抬头 -->
<div class="am-alert am-alert-secondary meila-radius">
<table class="content-title">
<tbody><tr>
<th class="row-content">商品</th>
<th class="row-price am-hide-sm-only">单价</th>
<th class="row-number am-hide-sm-only">数量</th>
<th class="row-total-price am-hide-sm-only">合计</th>
<th class="row-status">状态</th>
<th class="row-operate">操作</th>
</tr>
</tbody></table>
</div>
<!-- 订单列表 -->
<notempty name="data_list">
<foreach name="data_list" item="order">
<table id="data-list-{{$order.id}}" class="data-list <if condition="$order['status'] LT 4">data-ongoing</if>">
<tr class="content-hd">
<td colspan="6">
<span class="am-icon-calendar-check-o"> {{:date('Y-m-d', $order['add_time'])}}</span>
<span class="am-icon-bookmark-o"> {{$order.order_no}}</span>
</td>
</tr>
<foreach name="order.items" key="keys" item="goods">
<tr>
<td class="base row-content">
<div class="goods-detail">
<a href="{{$goods.goods_url}}" target="_blank">
<img src="{{$goods.images}}">
</a>
<div class="goods-base">
<a href="{{$goods.goods_url}}" target="_blank" class="goods-title">{{$goods.title}}</a>
<notempty name="goods.attribute">
<ul class="goods-attr">
<foreach name="goods.attribute" item="attr">
<li>{{$attr.attr_type_name}}{{$attr.attr_name}}</li>
</foreach>
</ul>
</notempty>
</div>
</div>
<div class="wap-base am-show-sm-only">
<if condition="$goods['original_price'] gt 0">
<span class="original-price">¥{{$goods.original_price}}</span>
</if>
<strong class="line-price">¥{{$goods.price}}</strong>
<span class="wap-number">x{{$goods.buy_number}}</span>
</div>
</td>
<td class="row-price am-hide-sm-only">
<if condition="$goods['original_price'] gt 0">
<p class="original-price">¥{{$goods.original_price}}</p>
</if>
<p class="line-price">¥{{$goods.price}}</p>
</td>
<td class="row-number am-hide-sm-only">
x{{$goods.buy_number}}
</td>
<if condition="$keys eq 0">
<td class="row-total-price am-hide-sm-only" rowspan="{{$order.items_count}}">
<strong class="total-price-content">¥{{$order.total_price}}</strong>
</td>
<td class="row-status" rowspan="{{$order.items_count}}">
{{$order.status_name}}
<div class="base-operate">
<a class="block" href="{{:U('Home/Order/Detail', ['id'=>$order['id']])}}" target="_blank">订单详情</a>
</div>
</td>
<td class="row-operate" rowspan="{{$order.items_count}}">
<!-- 0待确认, 1已确认/待支付, 2已支付/待发货, 3已发货/待收货, 4已完成, 5已取消, 6已关闭 -->
<if condition="in_array($order['status'], [0,1])">
<button type="button" class="am-btn am-btn-danger am-btn-xs am-radius am-btn-block submit-ajax submit-cancel" data-url="{{:U('Home/Order/Cancel')}}" data-id="{{$order.id}}" data-view="reload">取消</button>
</if>
<if condition="in_array($order['status'], [1])">
<button class="am-btn am-btn-primary am-btn-xs am-radius am-btn-block submit-pay" data-id="{{$order.id}}" data-payment-id="{{$order.payment_id}}" data-am-modal="{target: '#order-pay-popup'}">支付</button>
</if>
<if condition="in_array($order['status'], [3])">
<button type="button" class="am-btn am-btn-secondary am-btn-xs am-radius am-btn-block submit-ajax submit-confirm" data-url="{{:U('Home/Order/Collect')}}" data-id="{{$order.id}}" data-view="reload" data-msg="请仔细确认已收到货物、确认继续吗?">收货</button>
</if>
<if condition="in_array($order['status'], [4]) and $order['user_is_comments'] eq 0">
<a href="{{:U('Home/Order/Comments', ['id'=>$order['id']])}}" target="_blank" class="am-btn am-btn-primary am-btn-xs am-radius am-btn-block">评价</a>
</if>
<if condition="in_array($order['status'], [4,5,6])">
<button type="button" class="am-btn am-btn-danger am-btn-xs am-radius am-btn-block submit-delete" data-url="{{:U('Home/Order/Delete')}}" data-id="{{$order.id}}" data-view="reload">删除</button>
</if>
</td>
</if>
</tr>
</foreach>
</table>
</foreach>
<!-- 分页 -->
{{$page_html}}
</notempty>
<empty name="data_list">
<div class="table-no"><i class="am-icon-warning"></i> {{:L('common_not_data_tips')}}</div>
</empty>
<!-- 支付弹窗 -->
<div class="am-popup am-radius" id="order-pay-popup">
<div class="am-popup-inner">
<div class="am-popup-hd">
<h4 class="am-popup-title">支付</h4>
<span data-am-modal-close class="am-close">&times;</span>
</div>
<div class="am-popup-bd">
<form class="am-form pay-form" method="post" action="{{:U('Home/Order/Pay')}}">
<!-- 支付方式 -->
<div class="business-item">
<h3>选择支付</h3>
<notempty name="buy_payment_list">
<ul class="payment-list" data-type="payment">
<foreach name="buy_payment_list" item="payment">
<li class="payment-items-{{$payment.id}}" data-value="{{$payment.id}}">
<notempty name="payment.logo">
<img src="{{$payment.logo}}" />
</notempty>
<span>{{$payment.name}}</span>
<i class="icon-active"></i>
</li>
</foreach>
</ul>
</notempty>
<empty name="buy_payment_list">
<div class="table-no"><i class="am-icon-warning"></i> {{:L('order_payment_not_data_tips')}}</div>
</empty>
</div>
<div class="am-form-group">
<input type="hidden" name="id" value="0" />
<input type="hidden" name="payment_id" value="0" />
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm am-btn-block" data-am-loading="{loadingText:'{{:L('common_form_loading_tips')}}'}">确认支付</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- content end -->
<!-- content end -->
</div>
<!-- footer start -->

View File

@ -1,20 +1,30 @@
<include file="Public/Header" />
<!-- header nav start -->
<!-- header top nav -->
<include file="Public/HeaderTopNav" />
<!-- search -->
<include file="Public/NavSearch" />
<!-- header nav -->
<include file="Public/HeaderNav" />
<!-- header nav end -->
<div class="am-cf user-main" <if condition="!empty($max_width_style)">style="{{$max_width_style}}"</if>>
<!-- user menu start -->
<include file="Public/UserMenu" />
<!-- user menu end -->
<!-- goods category -->
<include file="Public/GoodsCategory" />
<!-- content start -->
<div class="user-content">
<div class="user-content-body p-10">
<!-- content -->
<div class="am-container user-main">
<!-- user menu start -->
<include file="Public/UserMenu" />
<!-- user menu end -->
<!-- content start -->
<div class="user-content">
<div class="user-content-body">
<legend>
<span class="fs-16">{{:L('personal_save_nav_title_text')}}</span>
<a href="{{:U('Home/Personal/SaveInfo')}}" class="fr fs-14 m-t-5"> {{:L('common_operation_edit')}}</a>
<span class="legend-title">{{:L('personal_save_nav_title_text')}}</span>
<a href="{{:U('Home/Personal/SaveInfo')}}" class="am-fr"> {{:L('common_operation_edit')}}</a>
</legend>
<dl class="dl-content">
<foreach name="personal_show_list" key="k" item="v">
@ -22,12 +32,12 @@
<dt>{{$v.name}}</dt>
<dd>
<if condition="empty($user[$k])">
<span class="cr-999">{{:L('common_on_fill_in_the_text')}}</span>
<span class="items-value-empty">{{:L('common_on_fill_in_the_text')}}</span>
<else />
{{$user[$k]}}
</if>
<if condition="isset($v['tips'])">
<span class="m-l-30">{{$v.tips}}</span>
<span class="span-edit">{{$v.tips}}</span>
</if>
</dd>
</if>
@ -35,13 +45,9 @@
</dl>
</div>
</div>
<!-- content end -->
<!-- content end -->
</div>
<!-- layuot common module start -->
<include file="Public/CommonModule" />
<!-- layuot common module end -->
<!-- footer start -->
<include file="Public/Footer" />
<!-- footer end -->

View File

@ -1,22 +1,32 @@
<include file="Public/Header" />
<!-- header nav start -->
<!-- header top nav -->
<include file="Public/HeaderTopNav" />
<!-- search -->
<include file="Public/NavSearch" />
<!-- header nav -->
<include file="Public/HeaderNav" />
<!-- header nav end -->
<div class="am-cf user-main" <if condition="!empty($max_width_style)">style="{{$max_width_style}}"</if>>
<!-- user menu start -->
<include file="Public/UserMenu" />
<!-- user menu end -->
<!-- goods category -->
<include file="Public/GoodsCategory" />
<!-- content start -->
<div class="user-content">
<div class="user-content-body p-10">
<!-- content -->
<div class="am-container user-main">
<!-- user menu start -->
<include file="Public/UserMenu" />
<!-- user menu end -->
<!-- content start -->
<div class="user-content">
<div class="user-content-body">
<!-- form start -->
<form class="am-form form-validation view-save" action="{{:U('Home/Personal/Save')}}" method="POST" request-type="ajax-url" request-value="{{:U('Home/Personal/Index')}}">
<legend>
<span class="fs-16">{{:L('personal_save_nav_title_text')}}</span>
<a href="{{:U('Home/Personal/Index')}}" class="fr fs-14 m-t-5 am-icon-mail-reply"> {{:L('common_operation_back')}}</a>
<span class="legend-title">{{:L('personal_save_nav_title_text')}}</span>
<a href="{{:U('Home/Personal/Index')}}" class="am-fr am-icon-mail-reply"> {{:L('common_operation_back')}}</a>
</legend>
<div class="am-form-group">
<label>{{:L('personal_nickname_text')}}</label>
@ -25,15 +35,7 @@
<include file="Lib/Gender" />
<div class="am-form-group">
<label>{{:L('personal_birthday_text')}}</label>
<input type="text" name="birthday" class="am-radius" placeholder="{{:L('personal_birthday_text')}}" pattern="{{:L('common_regex_birthday')}}" data-validation-message="{{:L('personal_birthday_format')}}" <notempty name="data"> value="{{$data.birthday_text}}" </notempty> data-am-datepicker="{format: 'yyyy-mm-dd', viewMode: 'years'}" readonly required />
</div>
<div class="am-form-group">
<label>{{:L('personal_signature_text')}}</label>
<textarea rows="3" maxlength="168" name="signature" class="am-radius" placeholder="{{:L('personal_signature_text')}}" data-validation-message="{{:L('personal_signature_format')}}"><present name="data">{{$data.signature}}</present></textarea>
</div>
<div class="am-form-group">
<label>{{:L('personal_describe_text')}}</label>
<textarea rows="5" maxlength="255" name="describe" class="am-radius" placeholder="{{:L('personal_describe_text')}}" data-validation-message="{{:L('personal_describe_format')}}"><present name="data">{{$data.describe}}</present></textarea>
<input type="text" name="birthday" class="am-form-field am-input-sm am-radius Wdate" placeholder="{{:L('personal_birthday_text')}}" data-validation-message="{{:L('personal_birthday_format')}}" <notempty name="data"> value="{{$data.birthday_text}}" onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'yyyy-MM-dd'})"</notempty> autocomplete="off" required />
</div>
<div class="am-form-group">
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm w100" data-am-loading="{loadingText:'{{:L('common_form_loading_tips')}}'}">{{:L('common_operation_save')}}</button>
@ -42,13 +44,9 @@
<!-- form end -->
</div>
</div>
<!-- content end -->
<!-- content end -->
</div>
<!-- layuot common module start -->
<include file="Public/CommonModule" />
<!-- layuot common module end -->
<!-- footer start -->
<include file="Public/Footer" />
<!-- footer end -->

View File

@ -1,18 +0,0 @@
<div class="site-oneself" <if condition="!empty($max_width_style)">style="{{$max_width_style}}"</if>>
<!-- link start -->
<if condition="!empty($link['layout'])">
<div class="layout-100">
<div class="my-link o-h">
<legend>{{:L('common_view_link_name')}}</legend>
<if condition="!empty($link['data'])">
<ul>
<foreach name="link.data" item="v">
<li><a href="{{$v.url}}" <if condition="$v['is_new_window_open'] eq 1">target="_blank"</if> title="{{$v.describe}}">{{$v.name}}</a></li>
</foreach>
</ul>
</if>
</div>
</div>
</if>
<!-- link end -->
</div>

View File

@ -13,7 +13,7 @@
<div class="search-bar pr">
<form action="{{:U('Home/Search/Index')}}" method="POST">
<input id="search-input" name="keywords" type="text" placeholder="{{:L('common_so_tips')}}" value="<if condition="!empty($params['keywords'])">{{$params.keywords}}</if>" />
<input id="search-input" name="keywords" type="text" placeholder="{{:L('common_so_tips')}}" value="<if condition="!empty($params['keywords'])">{{$params.keywords}}</if>" autocomplete="off" />
<input id="ai-topsearch" class="submit am-btn" placeholder="{{:L('common_so_tips')}}" index="1" type="submit" value="{{:L('common_so_text')}}" />
</form>
</div>

View File

@ -4,7 +4,7 @@
<foreach name="user_left_menu" key="k" item="v">
<if condition="$v['is_show'] eq 1">
<if condition="empty($v['item'])">
<li <if condition="(strtolower(CONTROLLER_NAME.ACTION_NAME) eq strtolower($v['control'].$v['action'])) or (isset(L('user_left_menu_hidden_active')[strtolower(CONTROLLER_NAME.ACTION_NAME)]) and strtolower(L('user_left_menu_hidden_active')[strtolower(CONTROLLER_NAME.ACTION_NAME)]) eq strtolower($v['control'].$v['action']))">class="am-active"</if>>
<li data-value="user-left-menu-{{:strtolower($v['control'].'-'.$v['action'])}}" class="user-left-menu-{{:strtolower($v['control'].'-'.$v['action'])}} <if condition="strtolower(CONTROLLER_NAME.ACTION_NAME) eq strtolower($v['control'].$v['action']) and strtolower($v['control'].$v['action']) eq 'userindex'">am-active</if>" >
<a href="{{:U('Home/'.$v['control'].'/'.$v['action'])}}"><if condition="!empty($v['icon'])"><i class="{{$v.icon}}"></i></if> {{$v.name}}</a>
</li>
<else />
@ -13,7 +13,7 @@
<ul class="am-list am-collapse user-sidebar-sub am-in" id="collapse-nav-{{$k}}">
<foreach name="v.item" item="vs">
<if condition="$vs['is_show'] eq 1">
<li <if condition="(strtolower(CONTROLLER_NAME.ACTION_NAME) eq strtolower($vs['control'].$vs['action'])) or (isset(L('user_left_menu_hidden_active')[strtolower(CONTROLLER_NAME.ACTION_NAME)]) and strtolower(L('user_left_menu_hidden_active')[strtolower(CONTROLLER_NAME.ACTION_NAME)]) eq strtolower($vs['control'].$vs['action']))">class="am-active"</if>>
<li data-value="user-left-menu-{{:strtolower($vs['control'].'-'.$vs['action'])}}" class="user-left-menu-{{:strtolower($vs['control'].'-'.$vs['action'])}}">
<a href="{{:U('Home/'.$vs['control'].'/'.$vs['action'])}}" class="am-cf"><if condition="!empty($vs['icon'])"><i class="{{$vs.icon}}"></i></if> {{$vs.name}}</a>
</li>
</if>

View File

@ -1,22 +1,32 @@
<include file="Public/Header" />
<!-- header nav start -->
<!-- header top nav -->
<include file="Public/HeaderTopNav" />
<!-- search -->
<include file="Public/NavSearch" />
<!-- header nav -->
<include file="Public/HeaderNav" />
<!-- header nav end -->
<div class="am-cf user-main" <if condition="!empty($max_width_style)">style="{{$max_width_style}}"</if>>
<!-- user menu start -->
<include file="Public/UserMenu" />
<!-- user menu end -->
<!-- goods category -->
<include file="Public/GoodsCategory" />
<!-- content start -->
<div class="user-content">
<div class="user-content-body p-10">
<!-- content -->
<div class="am-container user-main">
<!-- user menu start -->
<include file="Public/UserMenu" />
<!-- user menu end -->
<!-- content start -->
<div class="user-content">
<div class="user-content-body">
<!-- form start -->
<form class="am-form form-validation view-save" action="{{:U('Home/Safety/VerifyCheck')}}" method="POST" request-type="ajax-url" request-value="{{:U('Home/Safety/NewEmailInfo')}}">
<legend>
<span class="fs-16">{{:L('safety_original_email_nav_title')}}</span>
<a href="{{:U('Home/Safety/Index')}}" class="fr fs-14 m-t-5 am-icon-mail-reply"> {{:L('common_operation_back')}}</a>
<span class="legend-title">{{:L('safety_original_email_nav_title')}}</span>
<a href="{{:U('Home/Safety/Index')}}" class="am-fr am-icon-mail-reply"> {{:L('common_operation_back')}}</a>
</legend>
<div class="am-form-group">
<label>{{:L('common_email_name')}}</label>
@ -42,15 +52,15 @@
<div class="am-modal-hd">
<a href="javascript:;" class="am-close am-close-spin" data-am-modal-close>&times;</a>
</div>
<div class="am-modal-bd o-h">
<div class="o-h m-t-15">
<div class="am-modal-bd">
<div class="base">
<input type="text" placeholder="{{:L('common_img_verify_text')}}" maxlength="6" id="verify-img-value" data-validation-message="{{:L('common_img_verify_tips')}}" class="am-form-field am-radius" />
<div class="fl">
<div class="am-fl">
<img src="{{:U('Home/Safety/VerifyEntry')}}" class="am-radius c-p" id="verify-img" onClick='this.src="{{:U('Home/Safety/VerifyEntry')}}"' />
<a href="javascript:;" class="fs-12 c-p" onClick="document.getElementById('verify-img').src='{{:U('Home/Safety/VerifyEntry')}}'">{{:L('common_img_verify_submit_text')}}</a>
<a href="javascript:;" class="verify-tips" onClick="document.getElementById('verify-img').src='{{:U('Home/Safety/VerifyEntry')}}'">{{:L('common_img_verify_submit_text')}}</a>
</div>
</div>
<button type="button" class="am-btn am-btn-secondary am-radius am-btn-sm block m-t-20 btn-loading-example verify-submit-win" data-am-loading="{spinner:'circle-o-notch', loadingText:'{{:L('common_send_tips')}}'}" data-win="1">{{:L('common_operation_confirm')}}</button>
<button type="button" class="am-btn am-btn-secondary am-radius am-btn-sm block btn-loading-example verify-submit-win" data-am-loading="{spinner:'circle-o-notch', loadingText:'{{:L('common_send_tips')}}'}" data-win="1">{{:L('common_operation_confirm')}}</button>
</div>
</div>
</div>
@ -60,10 +70,6 @@
<!-- content end -->
</div>
<!-- layuot common module start -->
<include file="Public/CommonModule" />
<!-- layuot common module end -->
<!-- footer start -->
<include file="Public/Footer" />
<!-- footer end -->

View File

@ -1,17 +1,27 @@
<include file="Public/Header" />
<!-- header nav start -->
<!-- header top nav -->
<include file="Public/HeaderTopNav" />
<!-- search -->
<include file="Public/NavSearch" />
<!-- header nav -->
<include file="Public/HeaderNav" />
<!-- header nav end -->
<div class="am-cf user-main" <if condition="!empty($max_width_style)">style="{{$max_width_style}}"</if>>
<!-- user menu start -->
<include file="Public/UserMenu" />
<!-- user menu end -->
<!-- goods category -->
<include file="Public/GoodsCategory" />
<!-- content start -->
<div class="user-content">
<div class="user-content-body p-10">
<!-- content -->
<div class="am-container user-main">
<!-- user menu start -->
<include file="Public/UserMenu" />
<!-- user menu end -->
<!-- content start -->
<div class="user-content">
<div class="user-content-body">
<foreach name="safety_panel_list" item="v">
<section class="am-panel am-panel-default am-radius am-panel-<if condition="empty($data[$v['type']]) and empty($v['msg'])">danger<else />default</if>">
<header class="am-panel-hd">

View File

@ -1,22 +1,32 @@
<include file="Public/Header" />
<!-- header nav start -->
<!-- header top nav -->
<include file="Public/HeaderTopNav" />
<!-- search -->
<include file="Public/NavSearch" />
<!-- header nav -->
<include file="Public/HeaderNav" />
<!-- header nav end -->
<div class="am-cf user-main" <if condition="!empty($max_width_style)">style="{{$max_width_style}}"</if>>
<!-- user menu start -->
<include file="Public/UserMenu" />
<!-- user menu end -->
<!-- goods category -->
<include file="Public/GoodsCategory" />
<!-- content start -->
<div class="user-content">
<div class="user-content-body p-10">
<!-- content -->
<div class="am-container user-main">
<!-- user menu start -->
<include file="Public/UserMenu" />
<!-- user menu end -->
<!-- content start -->
<div class="user-content">
<div class="user-content-body">
<!-- form start -->
<form class="am-form form-validation view-save" action="{{:U('Home/Safety/LoginPwdUpdate')}}" method="POST" request-type="ajax-url" request-value="{{:U('Home/Safety/Index')}}">
<legend>
<span class="fs-16">{{:L('safety_loginpwd_nav_title_text')}}</span>
<a href="{{:U('Home/Safety/Index')}}" class="fr fs-14 m-t-5 am-icon-mail-reply"> {{:L('common_operation_back')}}</a>
<span class="legend-title">{{:L('safety_loginpwd_nav_title_text')}}</span>
<a href="{{:U('Home/Safety/Index')}}" class="am-fr am-icon-mail-reply"> {{:L('common_operation_back')}}</a>
</legend>
<div class="am-form-group">
<label>{{:L('safety_my_loginpwd_text')}}</label>
@ -40,10 +50,6 @@
<!-- content end -->
</div>
<!-- layuot common module start -->
<include file="Public/CommonModule" />
<!-- layuot common module end -->
<!-- footer start -->
<include file="Public/Footer" />
<!-- footer end -->

View File

@ -1,22 +1,32 @@
<include file="Public/Header" />
<!-- header nav start -->
<!-- header top nav -->
<include file="Public/HeaderTopNav" />
<!-- search -->
<include file="Public/NavSearch" />
<!-- header nav -->
<include file="Public/HeaderNav" />
<!-- header nav end -->
<div class="am-cf user-main" <if condition="!empty($max_width_style)">style="{{$max_width_style}}"</if>>
<!-- user menu start -->
<include file="Public/UserMenu" />
<!-- user menu end -->
<!-- goods category -->
<include file="Public/GoodsCategory" />
<!-- content start -->
<div class="user-content">
<div class="user-content-body p-10">
<!-- content -->
<div class="am-container user-main">
<!-- user menu start -->
<include file="Public/UserMenu" />
<!-- user menu end -->
<!-- content start -->
<div class="user-content">
<div class="user-content-body">
<!-- form start -->
<form class="am-form form-validation view-save" action="{{:U('Home/Safety/VerifyCheck')}}" method="POST" request-type="ajax-url" request-value="{{:U('Home/Safety/NewMobileInfo')}}">
<legend>
<span class="fs-16">{{:L('safety_original_mobile_nav_title')}}</span>
<a href="{{:U('Home/Safety/Index')}}" class="fr fs-14 m-t-5 am-icon-mail-reply"> {{:L('common_operation_back')}}</a>
<span class="legend-title">{{:L('safety_original_mobile_nav_title')}}</span>
<a href="{{:U('Home/Safety/Index')}}" class="am-fr am-icon-mail-reply"> {{:L('common_operation_back')}}</a>
</legend>
<div class="am-form-group">
<label>{{:L('common_mobile_name')}}</label>
@ -42,12 +52,12 @@
<div class="am-modal-hd">
<a href="javascript:;" class="am-close am-close-spin" data-am-modal-close>&times;</a>
</div>
<div class="am-modal-bd o-h">
<div class="o-h m-t-15">
<div class="am-modal-bd">
<div class="base">
<input type="text" placeholder="{{:L('common_img_verify_text')}}" maxlength="6" id="verify-img-value" data-validation-message="{{:L('common_img_verify_tips')}}" class="am-form-field am-radius" />
<div class="fl">
<div class="am-fl">
<img src="{{:U('Home/Safety/VerifyEntry')}}" class="am-radius c-p" id="verify-img" onClick='this.src="{{:U('Home/Safety/VerifyEntry')}}"' />
<a href="javascript:;" class="fs-12 c-p" onClick="document.getElementById('verify-img').src='{{:U('Home/Safety/VerifyEntry')}}'">{{:L('common_img_verify_submit_text')}}</a>
<a href="javascript:;" class="verify-tips" onClick="document.getElementById('verify-img').src='{{:U('Home/Safety/VerifyEntry')}}'">{{:L('common_img_verify_submit_text')}}</a>
</div>
</div>
<button type="button" class="am-btn am-btn-secondary am-radius am-btn-sm block m-t-20 btn-loading-example verify-submit-win" data-am-loading="{spinner:'circle-o-notch', loadingText:'{{:L('common_send_tips')}}'}" data-win="1">{{:L('common_operation_confirm')}}</button>
@ -56,14 +66,11 @@
</div>
<!-- verify win end -->
</div>
</div>
<!-- content end -->
</div>
<!-- content end -->
</div>
<!-- layuot common module start -->
<include file="Public/CommonModule" />
<!-- layuot common module end -->
<!-- footer start -->
<include file="Public/Footer" />
<!-- footer end -->
<!-- footer end -->

View File

@ -1,22 +1,32 @@
<include file="Public/Header" />
<!-- header nav start -->
<!-- header top nav -->
<include file="Public/HeaderTopNav" />
<!-- search -->
<include file="Public/NavSearch" />
<!-- header nav -->
<include file="Public/HeaderNav" />
<!-- header nav end -->
<div class="am-cf user-main" <if condition="!empty($max_width_style)">style="{{$max_width_style}}"</if>>
<!-- user menu start -->
<include file="Public/UserMenu" />
<!-- user menu end -->
<!-- goods category -->
<include file="Public/GoodsCategory" />
<!-- content start -->
<div class="user-content">
<div class="user-content-body p-10">
<!-- content -->
<div class="am-container user-main">
<!-- user menu start -->
<include file="Public/UserMenu" />
<!-- user menu end -->
<!-- content start -->
<div class="user-content">
<div class="user-content-body">
<!-- form start -->
<form class="am-form form-validation view-save" action="{{:U('Home/Safety/AccountsUpdate')}}" method="POST" request-type="ajax-url" request-value="{{:U('Home/Safety/Index')}}">
<legend>
<span class="fs-16">{{:L('safety_new_email_nav_title')}}</span>
<a href="{{:U('Home/Safety/Index')}}" class="fr fs-14 m-t-5 am-icon-mail-reply"> {{:L('common_operation_back')}}</a>
<span class="legend-title">{{:L('safety_new_email_nav_title')}}</span>
<a href="{{:U('Home/Safety/Index')}}" class="am-fr am-icon-mail-reply"> {{:L('common_operation_back')}}</a>
</legend>
<div class="am-form-group">
<label>{{:L('common_email_name')}}</label>
@ -42,15 +52,15 @@
<div class="am-modal-hd">
<a href="javascript:;" class="am-close am-close-spin" data-am-modal-close>&times;</a>
</div>
<div class="am-modal-bd o-h">
<div class="o-h m-t-15">
<div class="am-modal-bd">
<div class="base">
<input type="text" placeholder="{{:L('common_img_verify_text')}}" maxlength="6" id="verify-img-value" data-validation-message="{{:L('common_img_verify_tips')}}" class="am-form-field am-radius" />
<div class="fl">
<div class="am-fl">
<img src="{{:U('Home/Safety/VerifyEntry')}}" class="am-radius c-p" id="verify-img" onClick='this.src="{{:U('Home/Safety/VerifyEntry')}}"' />
<a href="javascript:;" class="fs-12 c-p" onClick="document.getElementById('verify-img').src='{{:U('Home/Safety/VerifyEntry')}}'">{{:L('common_img_verify_submit_text')}}</a>
<a href="javascript:;" class="verify-tips" onClick="document.getElementById('verify-img').src='{{:U('Home/Safety/VerifyEntry')}}'">{{:L('common_img_verify_submit_text')}}</a>
</div>
</div>
<button type="button" class="am-btn am-btn-secondary am-radius am-btn-sm block m-t-20 btn-loading-example verify-submit-win-new" data-am-loading="{spinner:'circle-o-notch', loadingText:'{{:L('common_send_tips')}}'}" data-win="1">{{:L('common_operation_confirm')}}</button>
<button type="button" class="am-btn am-btn-secondary am-radius am-btn-sm block btn-loading-example verify-submit-win-new" data-am-loading="{spinner:'circle-o-notch', loadingText:'{{:L('common_send_tips')}}'}" data-win="1">{{:L('common_operation_confirm')}}</button>
</div>
</div>
</div>
@ -60,10 +70,6 @@
<!-- content end -->
</div>
<!-- layuot common module start -->
<include file="Public/CommonModule" />
<!-- layuot common module end -->
<!-- footer start -->
<include file="Public/Footer" />
<!-- footer end -->

View File

@ -1,22 +1,32 @@
<include file="Public/Header" />
<!-- header nav start -->
<!-- header top nav -->
<include file="Public/HeaderTopNav" />
<!-- search -->
<include file="Public/NavSearch" />
<!-- header nav -->
<include file="Public/HeaderNav" />
<!-- header nav end -->
<div class="am-cf user-main" <if condition="!empty($max_width_style)">style="{{$max_width_style}}"</if>>
<!-- user menu start -->
<include file="Public/UserMenu" />
<!-- user menu end -->
<!-- goods category -->
<include file="Public/GoodsCategory" />
<!-- content start -->
<div class="user-content">
<div class="user-content-body p-10">
<!-- content -->
<div class="am-container user-main">
<!-- user menu start -->
<include file="Public/UserMenu" />
<!-- user menu end -->
<!-- content start -->
<div class="user-content">
<div class="user-content-body">
<!-- form start -->
<form class="am-form form-validation view-save" action="{{:U('Home/Safety/AccountsUpdate')}}" method="POST" request-type="ajax-url" request-value="{{:U('Home/Safety/Index')}}">
<legend>
<span class="fs-16">{{:L('safety_new_mobile_nav_title')}}</span>
<a href="{{:U('Home/Safety/Index')}}" class="fr fs-14 m-t-5 am-icon-mail-reply"> {{:L('common_operation_back')}}</a>
<span class="legend-title">{{:L('safety_new_mobile_nav_title')}}</span>
<a href="{{:U('Home/Safety/Index')}}" class="am-fr am-icon-mail-reply"> {{:L('common_operation_back')}}</a>
</legend>
<div class="am-form-group">
<label>{{:L('common_mobile_name')}}</label>
@ -42,12 +52,12 @@
<div class="am-modal-hd">
<a href="javascript:;" class="am-close am-close-spin" data-am-modal-close>&times;</a>
</div>
<div class="am-modal-bd o-h">
<div class="o-h m-t-15">
<div class="am-modal-bd">
<div class="base">
<input type="text" placeholder="{{:L('common_img_verify_text')}}" maxlength="6" id="verify-img-value" data-validation-message="{{:L('common_img_verify_tips')}}" class="am-form-field am-radius" />
<div class="fl">
<div class="am-fl">
<img src="{{:U('Home/Safety/VerifyEntry')}}" class="am-radius c-p" id="verify-img" onClick='this.src="{{:U('Home/Safety/VerifyEntry')}}"' />
<a href="javascript:;" class="fs-12 c-p" onClick="document.getElementById('verify-img').src='{{:U('Home/Safety/VerifyEntry')}}'">{{:L('common_img_verify_submit_text')}}</a>
<a href="javascript:;" class="verify-tips" onClick="document.getElementById('verify-img').src='{{:U('Home/Safety/VerifyEntry')}}'">{{:L('common_img_verify_submit_text')}}</a>
</div>
</div>
<button type="button" class="am-btn am-btn-secondary am-radius am-btn-sm block m-t-20 btn-loading-example verify-submit-win-new" data-am-loading="{spinner:'circle-o-notch', loadingText:'{{:L('common_send_tips')}}'}" data-win="1">{{:L('common_operation_confirm')}}</button>
@ -60,10 +70,6 @@
<!-- content end -->
</div>
<!-- layuot common module start -->
<include file="Public/CommonModule" />
<!-- layuot common module end -->
<!-- footer start -->
<include file="Public/Footer" />
<!-- footer end -->

19
service/Application/Home/View/Default/User/Index.html Executable file → Normal file
View File

@ -14,17 +14,18 @@
<!-- content -->
<div class="am-container user-main">
<!-- user menu start -->
<include file="Public/UserMenu" />
<!-- user menu end -->
<!-- content start -->
<div class="user-content">
<div class="user-content-body">
ShopXO
<!-- user menu start -->
<include file="Public/UserMenu" />
<!-- user menu end -->
<!-- content start -->
<div class="user-content">
<div class="user-content-body">
ShopXO
</div>
</div>
</div>
<!-- content end -->
<!-- content end -->
</div>
<!-- footer start -->

View File

@ -0,0 +1,33 @@
<include file="Public/Header" />
<!-- header top nav -->
<include file="Public/HeaderTopNav" />
<!-- search -->
<include file="Public/NavSearch" />
<!-- header nav -->
<include file="Public/HeaderNav" />
<!-- goods category -->
<include file="Public/GoodsCategory" />
<!-- content -->
<div class="am-container user-main">
<!-- user menu start -->
<include file="Public/UserMenu" />
<!-- user menu end -->
<!-- content start -->
<div class="user-content">
<div class="user-content-body">
goods
</div>
</div>
<!-- content end -->
</div>
<!-- footer start -->
<include file="Public/Footer" />
<!-- footer end -->

File diff suppressed because one or more lines are too long

View File

@ -404,5 +404,143 @@ class GoodsService
{
return (int) M('OrderComments')->where(['goods_id'=>intval($goods_id)])->count();
}
/**
* 前端商品收藏列表条件
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2018-09-29
* @desc description
* @param [array] $params [输入参数]
*/
public static function HomeFavorGoodsListWhere($params = [])
{
$where = [
'g.is_delete_time' => 0,
];
// 用户id
if(!empty($params['user']))
{
$where['f.user_id'] = $params['user']['id'];
}
if(!empty($params['keywords']))
{
$where['g.title'] = array('like', '%'.I('keywords').'%');
}
return $where;
}
/**
* 商品收藏总数
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2018-09-29
* @desc description
* @param [array] $where [条件]
*/
public static function FavorGoodsTotal($where = [])
{
return (int) M('GoodsFavor')->where($where)->count();
}
/**
* 商品收藏列表
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2018-09-29
* @desc description
* @param [array] $params [输入参数]
*/
public static function FavorGoodsList($params = [])
{
// 请求参数
$p = [
[
'checked_type' => 'empty',
'key_name' => 'where',
'error_msg' => '条件不能为空',
],
[
'checked_type' => 'is_array',
'key_name' => 'where',
'error_msg' => '条件格式有误',
],
[
'checked_type' => 'isset',
'key_name' => 'limit_start',
'error_msg' => '分页起始值有误',
],
[
'checked_type' => 'isset',
'key_name' => 'limit_number',
'error_msg' => '分页数量不能为空',
],
];
$ret = params_checked($params, $p);
if($ret !== true)
{
return DataReturn($ret, -1);
}
$limit_start = max(0, intval($params['limit_start']));
$limit_number = max(1, intval($params['limit_number']));
$order_by = empty($params['$order_by']) ? 'id desc' : I('order_by', '', '', $params);
// 获取订单
$data = M('GoodsFavor')->where($params['where'])->limit($limit_start, $limit_number)->order($order_by)->select();
if(!empty($data))
{
$detail_m = M('OrderDetail');
$detail_field = 'id,goods_id,title,images,original_price,price,attribute,buy_number';
$images_host = C('IMAGE_HOST');
$order_status_list = L('common_order_user_status');
$order_pay_status = L('common_order_pay_status');
foreach($data as &$v)
{
// 订单基础
$total_price = 0;
$v['payment_name'] = '';
// 状态
$v['status_name'] = $order_status_list[$v['status']]['name'];
// 支付状态
$v['pay_status_name'] = $order_pay_status[$v['pay_status']]['name'];
// 快递公司
$v['express_name'] = ResourcesService::ExpressName(['express_id'=>$v['express_id']]);
// 收件人地址
$v['receive_province_name'] = ResourcesService::RegionName(['region_id'=>$v['receive_province']]);
$v['receive_city_name'] = ResourcesService::RegionName(['region_id'=>$v['receive_city']]);
$v['receive_county_name'] = ResourcesService::RegionName(['region_id'=>$v['receive_county']]);
// 订单详情
$items = $detail_m->where(['order_id'=>$v['id']])->field($detail_field)->select();
if(!empty($items))
{
foreach($items as &$vs)
{
$vs['images'] = empty($vs['images']) ? null : $images_host.$vs['images'];
$vs['attribute'] = empty($vs['attribute']) ? null : json_decode($vs['attribute'], true);
$vs['goods_url'] = HomeUrl('Goods', 'Index', ['id'=>$vs['goods_id']]);
$vs['total_price'] = $vs['buy_number']*$vs['price'];
$total_price += $vs['total_price'];
}
}
$v['items'] = $items;
$v['items_count'] = count($items);
$v['total_price'] = $total_price;
}
}
return DataReturn('处理成功', 0, $data);
}
}
?>

View File

@ -333,5 +333,6 @@ class UserService
return DataReturn(L('common_operation_set_error'), -100);
}
}
}
?>

View File

@ -0,0 +1,17 @@
.user-content-body legend {
padding-bottom: 0.2rem;
margin-bottom: 1rem;
border-bottom: 1px solid #e5e5e5;
}
.user-content-body .legend-title {
font-size: 16px;
}
.user-content-body a {
color: #e7747f;
}
.user-content-body .items-value-empty {
color: #999;
}
.user-content-body .span-edit {
margin-left: 15px;
}

View File

@ -0,0 +1,25 @@
/**
* 列表
*/
.user-content-body .am-panel-bd { overflow: hidden; }
/**
* 详情页面
*/
.user-content-body .verify-submit-win, .user-content-body .verify-submit-win-new { margin-top: 20px; display: block; }
.user-content-body .reg-switch-tips { font-weight: 100; font-size: 12px; color: #f87689; margin-left: 20px; }
.user-content-body #verify-win .am-modal-bd { margin-top: 10px; }
.user-content-body #verify-win .am-modal-bd .base { overflow: hidden; }
.user-content-body #verify-win .am-modal-bd .base .verify-tips { font-size: 12px; }
.user-content-body legend {
padding-bottom: 0.2rem;
margin-bottom: 1rem;
border-bottom: 1px solid #e5e5e5;
}
.user-content-body .legend-title {
font-size: 16px;
}
.user-content-body a {
color: #e7747f;
}

View File

@ -1,9 +1,11 @@
form.form-validation, .reg-switch-view { margin: 30px 0 60px 0; }
.reg-switch-view .am-btn { width: 49%; line-height: 100px; font-size: 16px; }
.verify-submit-win { margin-top: 20px; display: block; }
.reg-switch-tips { font-weight: 100; font-size: 12px; color: #f87689; margin-left: 20px; }
#verify-win .am-modal-bd { margin-top: 10px; }
#verify-win .am-modal-bd .base { overflow: hidden; }
#verify-win .am-modal-bd .base .verify-tips { font-size: 12px; }
.reg-switch-view .am-btn { width: 49%; line-height: 100px; font-size: 16px; }
/**
* PC

View File

@ -2,8 +2,32 @@ console.log("%c\u5b89\u5168\u8b66\u544a\uff01","font-size:50px;color:red;-webkit
console.log("%c\u6b64\u6d4f\u89c8\u5668\u529f\u80fd\u4e13\u4f9b\u5f00\u53d1\u8005\u4f7f\u7528\u3002\u8bf7\u4e0d\u8981\u5728\u6b64\u7c98\u8d34\u6267\u884c\u4efb\u4f55\u5185\u5bb9\uff0c\u8fd9\u53ef\u80fd\u4f1a\u5bfc\u81f4\u60a8\u7684\u8d26\u6237\u53d7\u5230\u653b\u51fb\uff0c\u7ed9\u60a8\u5e26\u6765\u635f\u5931 \uff01","font-size: 20px;color:#333");
console.log("\u6280\u672f\u652f\u6301\uff1a\u0068\u0074\u0074\u0070\u003a\u002f\u002f\u0073\u0068\u006f\u0070\u0078\u006f\u002e\u006e\u0065\u0074\u002f");
var store = $.AMUI.store;
if(!store.enabled)
{
alert('Local storage is not supported by your browser. Please disable "Private Mode", or upgrade to a modern browser.');
} else {
// 选择缓存key
var store_user_menu_key = 'store-user-menu-active-key';
}
$(function()
{
// 选中处理
if(store.enabled)
{
// 用户菜单选中
if($('.user-sidebar-list li.am-active').length == 0)
{
var user_menu_value = store.get(store_user_menu_key);
if(user_menu_value !== undefined)
{
$('.user-sidebar-list li').removeClass('am-active')
$('.user-sidebar-list').find('.'+user_menu_value).addClass('am-active');
}
}
}
//鼠标悬停信息
$("#wrap .item").mouseenter(function(){
$(this).children(".mp_tooltip").animate({left:-92,queue:true});
@ -102,8 +126,15 @@ $(function()
// 用户中心菜单
$('.user-item-parent').on('click', function()
{
console.log(1)
$(this).find('.am-icon-angle-down').toggleClass('more-icon-rotate');
});
$('.user-sidebar-list li').on('click', function()
{
var value = $(this).data('value') || null;
if(value != null)
{
store.set(store_user_menu_key, value);
}
});
});

View File

@ -0,0 +1,194 @@
$(function()
{
$verify_win = $('#verify-win');
// 原帐号验证码发送
$('.verify-submit, .verify-submit-win').on('click', function()
{
var $this = $(this);
var $verify = $('#verify-img-value');
var verify = '';
// 是否需要先校验图片验证码
if($this.data('verify') == 1)
{
// 开启图片验证码窗口
$verify_win.modal('open');
$verify.focus();
return false;
}
// 验证码窗口操作按钮则更新按钮对象
var is_win = $(this).data('win');
if(is_win == 1)
{
$this = $('.verify-submit');
// 验证码参数处理
verify = $verify.val().replace(/\s+/g, '');
if(verify.length < 6)
{
Prompt($verify.data('validation-message'));
$verify.focus();
return false;
}
}
// 验证码时间间隔
var time_count = parseInt($this.data('time'));
// 按钮交互
$this.button('loading');
if(is_win == 1)
{
$('.verify-submit-win').button('loading');
}
// 发送验证码
$.ajax({
url:$('.verify-submit').data('url'),
type:'POST',
data:{"verify":verify, "type":$('form input[name="type"]').val()},
dataType:'json',
success:function(result)
{
if(result.code == 0)
{
var intervalid = setInterval(function()
{
if(time_count == 0)
{
$this.button('reset');
if(is_win == 1)
{
$('.verify-submit-win').button('reset');
}
$this.text($this.data('text'));
$verify.val('');
clearInterval(intervalid);
} else {
var send_msg = $this.data('send-text').replace(/{time}/, time_count--);
$this.text(send_msg);
}
}, 1000);
$verify_win.modal('close');
} else {
$this.button('reset');
if(is_win == 1)
{
$('.verify-submit-win').button('reset');
}
Prompt(result.msg);
}
},
error:function()
{
$this.button('reset');
if(is_win == 1)
{
$('.verify-submit-win').button('reset');
}
Prompt('网络错误');
}
});
});
// 新帐号验证码获取
$('.verify-submit-new, .verify-submit-win-new').on('click', function()
{
var $this = $(this);
var $accounts = $('#accounts');
var $verify = $('#verify-img-value');
var verify = '';
if($accounts.hasClass('am-field-valid'))
{
// 是否需要先校验图片验证码
if($this.data('verify') == 1)
{
// 开启图片验证码窗口
$verify_win.modal('open');
$verify.focus();
return false;
}
// 验证码窗口操作按钮则更新按钮对象
var is_win = $(this).data('win');
if(is_win == 1)
{
$this = $('.verify-submit-new');
// 验证码参数处理
verify = $verify.val().replace(/\s+/g, '');
if(verify.length < 6)
{
Prompt($verify.data('validation-message'));
$verify.focus();
return false;
}
}
// 验证码时间间隔
var time_count = parseInt($this.data('time'));
// 按钮交互
$this.button('loading');
if(is_win == 1)
{
$('.verify-submit-win-new').button('loading');
}
// 发送验证码
$.ajax({
url:$('.verify-submit-new').data('url'),
type:'POST',
data:{"accounts":$accounts.val(), "verify":verify, "type":$('form input[name="type"]').val()},
dataType:'json',
success:function(result)
{
if(result.code == 0)
{
var intervalid = setInterval(function()
{
if(time_count == 0)
{
$this.button('reset');
if(is_win == 1)
{
$('.verify-submit-win-new').button('reset');
}
$this.text($this.data('text'));
$verify.val('');
clearInterval(intervalid);
} else {
var send_msg = $this.data('send-text').replace(/{time}/, time_count--);
$this.text(send_msg);
}
}, 1000);
$verify_win.modal('close');
} else {
$this.button('reset');
if(is_win == 1)
{
$('.verify-submit-win-new').button('reset');
}
Prompt(result.msg);
}
},
error:function()
{
$this.button('reset');
if(is_win == 1)
{
$('.verify-submit-win-new').button('reset');
}
Prompt('网络错误');
}
});
} else {
$verify_win.modal('close');
$accounts.focus();
}
});
});

File diff suppressed because one or more lines are too long