This commit is contained in:
devil_gong 2018-10-10 11:08:07 +08:00
parent 146ab10590
commit 533bb855c0
28 changed files with 253 additions and 92 deletions

View File

@ -54,7 +54,25 @@ class NavigationController extends CommonController
$this->assign('article_category_list', M('ArticleCategory')->field(array('id', 'name'))->where(array('is_enable'=>1))->select());
// 商品分类
$this->assign('goods_category_list', M('GoodsCategory')->field(array('id', 'name'))->where(array('is_enable'=>1))->select());
$field = 'id,name';
$m = M('GoodsCategory');
$category = $m->field($field)->where(['is_enable'=>1, 'pid'=>0])->order('sort asc')->select();
if(!empty($category))
{
foreach($category as &$v)
{
$two = $m->field($field)->where(['is_enable'=>1, 'pid'=>$v['id']])->order('sort asc')->select();
if(!empty($two))
{
foreach($two as &$vs)
{
$vs['items'] = $m->field($field)->where(['is_enable'=>1, 'pid'=>$vs['id']])->order('sort asc')->select();
}
}
$v['items'] = $two;
}
}
$this->assign('goods_category_list', $category);
// 自定义页面
$this->assign('customview_list', M('CustomView')->field(array('id', 'title'))->where(array('is_enable'=>1))->select());

View File

@ -12,7 +12,7 @@ return array(
'navigation_add_name' => '导航添加',
'navigation_edit_name' => '导航编辑',
'navigation_custom_operation_add' => '自定义',
'navigation_article_category_operation_add' => '文分类',
'navigation_article_category_operation_add' => '文分类',
'navigation_customview_operation_add' => '自定义',
'navigation_goods_category_operation_add' => '商品分类',
'navigation_article_category_name_format' => '默认文章分类名称',
@ -43,5 +43,8 @@ return array(
// tab nav
'navigation_nav_header_name' => '中间导航',
'navigation_nav_footer_name' => '底部导航',
'goods_category_level_two' => '二级',
'goods_category_level_three' => '三级',
);
?>

View File

@ -28,7 +28,7 @@
<form class="am-form form-validation" action="{{:U('Admin/Navigation/Save')}}" method="POST" request-type="ajax-reload" request-value="">
<div class="am-form-group">
<label>{{:L('navigation_level_text')}}</label>
<select class="am-radius c-p" name="pid" data-validation-message="{{:L('navigation_level_format')}}">
<select class="am-radius c-p chosen-select" name="pid" data-validation-message="{{:L('navigation_level_format')}}">
<option value="0">{{:L('common_select_level_one_choice')}}</option>
<foreach name="nav_header_pid_list" item="v">
<option value="{{$v.id}}">{{$v.name}}</option>
@ -83,7 +83,7 @@
</div>
<div class="am-form-group">
<label>{{:L('navigation_article_category_id_text')}}</label>
<select class="am-radius c-p chosen-select" name="value" data-validation-message="{{:L('navigation_article_category_id_format')}}" required>
<select class="am-radius c-p chosen-select" name="value" data-placeholder="{{:L('common_please_select_choose')}}" data-validation-message="{{:L('navigation_article_category_id_format')}}" required>
<option value="">{{:L('common_please_select_choose')}}</option>
<foreach name="article_category_list" item="v">
<option value="{{$v.id}}">{{$v.name}}</option>
@ -135,7 +135,7 @@
</div>
<div class="am-form-group">
<label>{{:L('navigation_customview_id_text')}}</label>
<select class="am-radius c-p chosen-select" name="value" data-validation-message="{{:L('navigation_customview_id_format')}}" required>
<select class="am-radius c-p chosen-select" name="value" data-placeholder="{{:L('common_please_select_choose')}}" data-validation-message="{{:L('navigation_customview_id_format')}}" required>
<option value="">{{:L('common_please_select_choose')}}</option>
<foreach name="customview_list" item="v">
<option value="{{$v.id}}">{{$v.title}}</option>
@ -186,10 +186,19 @@
</div>
<div class="am-form-group">
<label>{{:L('navigation_goods_category_id_text')}}</label>
<select class="am-radius c-p chosen-select" name="value" data-validation-message="{{:L('navigation_goods_category_id_format')}}" required>
<select class="am-radius c-p chosen-select" name="value" data-placeholder="{{:L('common_please_select_choose')}}" data-validation-message="{{:L('navigation_goods_category_id_format')}}" required>
<option value="">{{:L('common_please_select_choose')}}</option>
<foreach name="goods_category_list" item="v">
<option value="{{$v.id}}">{{$v.name}}</option>
<optgroup label="{{$v.name}}">
<if condition="!empty($v['items'])">
<foreach name="v.items" item="vs">
<option style="padding-left: 30px;" value="{{$vs.id}}" <if condition="!empty($data['category_ids']) and in_array($vs['id'], $data['category_ids'])">selected</if>>{{:L('goods_category_level_two')}}-{{$vs.name}}</option>
<foreach name="vs.items" item="vss">
<option style="padding-left: 60px;" value="{{$vss.id}}" <if condition="!empty($data['category_ids']) and in_array($vss['id'], $data['category_ids'])">selected</if>>{{:L('goods_category_level_three')}}-{{$vss.name}}</option>
</foreach>
</foreach>
</if>
</optgroup>
</foreach>
</select>
</div>

View File

@ -24,6 +24,9 @@ class UserFavorController extends CommonController
{
// 调用父类前置方法
parent::_initialize();
// 是否登录
$this->Is_Login();
}
/**
@ -72,5 +75,23 @@ class UserFavorController extends CommonController
$this->assign('params', $params);
$this->display('Goods');
}
/**
* 商品收藏取消
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2018-09-13
* @desc description
*/
public function Cancel()
{
// 开始处理
$params = $_POST;
$params['goods_id'] = isset($params['id']) ? $params['id'] : 0;
$params['user'] = $this->user;
$ret = GoodsService::GoodsFavor($params);
$this->ajaxReturn($ret['msg'], $ret['code'], $ret['data']);
}
}
?>

0
service/Application/Home/Lang/zh-cn/order.php Normal file → Executable file
View File

View File

View File

View File

@ -37,72 +37,74 @@
</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>
<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>
<!-- 订单抬头 -->

View File

@ -1,8 +1,8 @@
<!-- 顶部导航条 start -->
<div class="header-top">
<div class="am-container header">
<ul class="message-l">
<div class="topMessage">
<ul class="top-nav-left">
<div class="top-nav-items">
<div class="menu-hd">
<if condition="empty($user)">
<span>您好,欢迎来到 {{:MyC('home_site_name')}}</span>
@ -19,13 +19,13 @@
</div>
</div>
</ul>
<ul class="message-r">
<div class="topMessage home">
<ul class="top-nav-right">
<div class="top-nav-items home">
<div class="menu-hd">
<a href="{{:__MY_URL__}}" target="_top" class="h">商城首页</a>
</div>
</div>
<div class="topMessage my-shangcheng">
<div class="top-nav-items my-shangcheng">
<div class="menu-hd MyShangcheng <if condition="empty($user)">login-event</if>">
<a href="<if condition="empty($user)">javascript:;<else />{{:U('Home/User/Index')}}</if>" target="_top">
<i class="am-icon-user am-icon-fw"></i>
@ -33,7 +33,7 @@
</a>
</div>
</div>
<div class="topMessage mini-cart">
<div class="top-nav-items mini-cart">
<div class="menu-hd <if condition="empty($user)">login-event</if>">
<a id="mc-menu-hd" href="<if condition="empty($user)">javascript:;<else />{{:U('Home/Cart/Index')}}</if>" target="_top">
<i class="am-icon-shopping-cart am-icon-fw"></i>
@ -42,12 +42,20 @@
</a>
</div>
</div>
<div class="topMessage favorite">
<div class="menu-hd <if condition="empty($user)">login-event</if>">
<a href="<if condition="empty($user)">javascript:;<else />{{:U('Home/Favor/Index')}}</if>" target="_top">
<div class="top-nav-items favorite">
<div class="am-dropdown menu-hd <if condition="empty($user)">login-event</if>" data-am-dropdown>
<a class="am-dropdown-toggle" href="javascript:;" target="_top" data-am-dropdown-toggle>
<i class="am-icon-heart am-icon-fw"></i>
<span>收藏夹</span>
<i class="am-icon-caret-down"></i>
</a>
<notempty name="user">
<ul class="am-dropdown-content">
<li>
<a href="<if condition="empty($user)">javascript:;<else />{{:U('Home/UserFavor/Goods')}}</if>">商品收藏</a>
</li>
</ul>
</notempty>
</div>
</div>
</ul>

View File

@ -5,7 +5,7 @@
<img src="{{$image_host}}{{:MyC('home_site_logo_wap')}}" alt="{{:MyC('home_seo_site_title')}}" />
</a>
</div>
<div class="logoBig">
<div class="logo-big">
<a href="{{:__MY_URL__}}">
<img src="{{$image_host}}{{:MyC('home_site_logo')}}" alt="{{:MyC('home_seo_site_title')}}" />
</a>

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

View File

@ -22,7 +22,68 @@
<!-- content start -->
<div class="user-content">
<div class="user-content-body">
goods
<form class="am-form form-validation" method="post" action="{{:U('Home/UserFavor/Goods')}}" 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>
</div>
</form>
<!-- 商品列表 -->
<div class="data-list">
<table class="am-table">
<thead>
<tr>
<th class="base">商品信息</th>
<th class="price">价格</th>
<th class="operate">操作</th>
</tr>
</thead>
<tbody>
<notempty name="data_list">
<foreach name="data_list" item="goods">
<tr id="data-list-{{$goods.goods_id}}">
<td>
<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>
</div>
</div>
</td>
<td>
<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>
<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/UserFavor/Cancel')}}" data-id="{{$goods.goods_id}}" data-view="reload">取消</button>
</td>
</tr>
</foreach>
</notempty>
<empty name="data_list">
<tr>
<td colspan="3">
<div class="table-no"><i class="am-icon-warning"></i> {{:L('common_not_data_tips')}}</div>
</td>
</tr>
</empty>
</tbody>
</table>
</div>
<!-- 分页 -->
<notempty name="data_list">
{{$page_html}}
</notempty>
</div>
</div>
<!-- content end -->

View File

View File

View File

@ -502,6 +502,7 @@ class GoodsService
{
$v['images_old'] = $v['images'];
$v['images'] = empty($v['images']) ? null : $images_host.$v['images'];
$v['goods_url'] = HomeUrl('Goods', 'Index', ['id'=>$v['goods_id']]);
}
}
return DataReturn('处理成功', 0, $data);

View File

@ -75,7 +75,7 @@ color: #555555;background:none;border-color:transparent;cursor: default;}
/*浮动框*/
.nav-search{top:0;left:0;width:100%;z-index:1060; margin:0px auto;background:#fff; padding-top: 5px; position: relative;}
.nav-search .logo{height:36px;width:95px; margin: 0 auto; display: -webkit-inline-box;}
.logoBig{display:none;}
.logo-big{display:none;}
.logo img{width:100%}
/*搜索框*/
@ -121,14 +121,14 @@ color: #F5F5F2;font-size: 14px;cursor:pointer;border-radius:0px 0px ;}
.nav-search{background: none;}
.header { display:block;height: 30px;}
.message-l{ float:left;}
.message-l .topMessage, .message-r .topMessage { padding: 0px 6px; height: 30px;line-height: 30px; }
.message-r {float: right;}
.message-r .topMessage {float: left;}
.top-nav-left{ float:left;}
.top-nav-left .top-nav-items, .top-nav-right .top-nav-items { padding: 0px 8px; height: 30px; line-height: 30px; }
.top-nav-right {float: right;}
.top-nav-right .top-nav-items {float: left;}
.nav-search .logo{display:none;}
.nav-search .logoBig{ display:block;float:left;height:40px;width:135px; margin:0px auto; margin-left:5px; margin-right: 5px;}
.nav-search .logoBig img{width:100%;}
.nav-search .logo-big{ display:block;float:left;height:40px;width:135px; margin:0px auto; margin-left:5px; margin-right: 5px;}
.nav-search .logo-big img{width:100%;}
.search-bar {height: 40px; width: calc(100% - 146px);}
#ai-topsearch {height: 36px;}
.search-bar input {width: 80%;height:36px;}
@ -156,7 +156,7 @@ color: #F5F5F2;font-size: 14px;cursor:pointer;border-radius:0px 0px ;}
.mui-mbar-tabs{ display:block;}
.nav-search{padding-left:0px; max-width:1000px; margin:0px auto;padding: 20px 0;}
.nav-search .logo{display:none;}
.nav-search .logoBig { display: -webkit-inline-box; float:left;height:60px; width:230px; margin:0px;}
.nav-search .logo-big { display: -webkit-inline-box; float:left;height:60px; width:230px; margin:0px;}
.search-bar{height:50px; margin:auto;display: -webkit-inline-box;width: calc(60%);padding-left: 8%;}
#ai-topsearch {height: 47px;}
.shopMain{margin:0px 0px 0px 5px;}

0
service/Public/Home/Default/Css/Order.Comments.css Normal file → Executable file
View File

0
service/Public/Home/Default/Css/Order.Detail.css Normal file → Executable file
View File

0
service/Public/Home/Default/Css/Order.css Normal file → Executable file
View File

0
service/Public/Home/Default/Css/Personal.css Normal file → Executable file
View File

0
service/Public/Home/Default/Css/Safety.css Normal file → Executable file
View File

View File

@ -0,0 +1,38 @@
/**
* 搜索
*/
.thin { overflow: hidden; }
/**
* 商品列表
*/
.data-list { margin-top: 10px; }
.goods-detail img { width: 80px; height: 80px; }
.goods-detail { position: relative; }
.goods-title { display: block; max-height: 36px; overflow: hidden; text-overflow: ellipsis; }
.goods-title:hover { text-decoration: underline; }
.goods-base { position: absolute; top: 0; left: 85px; }
.original-price, .line-price { font-family: Verdana,Tahoma,arial; }
.original-price { color: #9c9c9c; text-decoration: line-through; }
.line-price { color: #3c3c3c; font-weight: 700; }
.am-table { margin-bottom: 10px; }
.am-table > tbody > tr > td { border-top: 1px solid #F5F5F5; }
.am-table > thead > tr > th { border-bottom: 1px solid #f7f7f7; }
@media only screen and (min-width:640px) {
.data-list tr .base { width: 50%; }
.data-list tr .price { width: 20%; }
.data-list tr .operate { width: 10%; }
/**
* 搜索
*/
.thin .so { width:66%; }
}
@media only screen and (max-width:640px) {
.data-list tr .base { width: 65%; }
.data-list tr .price { width: 15%; }
.data-list tr .operate { width: 20%; }
.goods-detail img { width: 50px; height: 50px; }
.goods-base { left: 55px; }
}

0
service/Public/Home/Default/Js/Order.js Normal file → Executable file
View File

0
service/Public/Home/Default/Js/Safety.js Normal file → Executable file
View File

0
service/payment_order_alipay_notify.php Normal file → Executable file
View File

0
service/payment_order_alipay_respond.php Normal file → Executable file
View File

0
service/payment_order_cashpayment_respond.php Normal file → Executable file
View File

0
service/payment_order_deliverypayment_respond.php Normal file → Executable file
View File