提交 927964ea 编写于 作者: D devil_gong

商品分类扩展到三级,新增首页推荐图片

上级 5e5ad64d
......@@ -484,7 +484,7 @@ class CommonController extends Controller
// 存储图片
$temp_all = [
'tmp_name' => $_FILES[$images_name]['tmp_name'][$i],
'type' => $_FILES[$images_name]['type'][$i]
'type' => $_FILES[$images_name]['type'][$i],
];
$original = $images_obj->GetOriginal($temp_all, $root_path.$img_path.'original'.$date);
if(!empty($original))
......@@ -507,6 +507,65 @@ class CommonController extends Controller
return ['status'=>true, 'data'=>$result];
}
/**
* 商品图片集合处理
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2018-08-07
* @desc description
* @param [array] $data [字段列表]
*/
protected function GetGoodsImagesParams($data)
{
$result = [];
if(!empty($data))
{
// 定义图片目录
$root_path = ROOT_PATH;
$img_path = 'Public'.DS.'Upload'.DS.'goods_images'.DS;
$date = DS.date('Y').DS.date('m').DS.date('d').DS;
// 图像类库
$images_obj = \Library\Images::Instance(['is_new_name'=>false]);
foreach($data as $field)
{
$file = $_FILES[$field];
// 文件上传校验
$error = FileUploadError($field);
if($error !== true)
{
return ['status'=>false, 'msg'=>$error];
}
// 存储图片
$temp_all = [
'tmp_name' => $file['tmp_name'],
'type' => $file['type'],
];
$original = $images_obj->GetOriginal($temp_all, $root_path.$img_path.'original'.$date);
if(!empty($original))
{
// 根据原图再次生成小图
$compr = $images_obj->GetBinaryCompress($root_path.$img_path.'original'.$date.$original, $root_path.$img_path.'compr'.$date, 600);
$small = $images_obj->GetBinaryCompress($root_path.$img_path.'original'.$date.$original, $root_path.$img_path.'small'.$date, 100, 100);
if(!empty($compr))
{
$result[$field] = DS.$img_path.'compr'.$date.$small;
} else {
// 如果图片格式有误,则删除原图片
$this->ImagesDelete($img_path.'original'.$date.$original);
}
}
}
}
return ['status'=>true, 'data'=>$result];
}
/**
* 图片删除
* @author Devil
......
......@@ -177,13 +177,22 @@ class GoodsController extends CommonController
$this->assign('region_province_list', M('Region')->where(['pid'=>0, 'is_enable'=>1])->select());
// 商品分类
$field = 'id,name,icon';
$category = M('GoodsCategory')->field($field)->where(['is_enable'=>1, 'pid'=>0])->order('sort asc')->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)
{
$v['items'] = M('GoodsCategory')->field($field)->where(['is_enable'=>1, 'pid'=>$v['id']])->order('sort asc')->select();
$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('category_list', $category);
......@@ -270,6 +279,14 @@ class GoodsController extends CommonController
$this->ajaxReturn($content_app['msg'], -1);
}
// 集合主图片
$images_field = ['file_home_recommended_images'];
$images = $this->GetGoodsImagesParams($images_field);
if($images['status'] === false)
{
$this->ajaxReturn($images['msg'], -1);
}
// 基础数据
$data = [
'title' => I('title'),
......@@ -289,6 +306,7 @@ class GoodsController extends CommonController
'images' => isset($photo['data'][0]) ? $photo['data'][0] : '',
'photo_count' => count($photo['data']),
'is_home_recommended' => intval(I('is_home_recommended')),
'home_recommended_images' => empty($images['data']['file_home_recommended_images']) ? '' : $images['data']['file_home_recommended_images'],
];
// 添加/编辑
......
......@@ -90,5 +90,10 @@ return array(
'goods_so_keyword_tips' => '标题/型号',
'goods_category_level_two' => '二级',
'goods_category_level_three' => '三级',
'goods_home_recommended_images_text'=> '首页推荐图片',
'goods_home_recommended_images_tips'=> '留空则取相册第一张图',
);
?>
\ No newline at end of file
......@@ -27,7 +27,7 @@
<i class="am-icon-trash-o am-icon-sm original-images-url-delete" data-input-tag="input.original-icon-images-url" data-image-tag="#form-img-icon" data-tips-tag="#form-icon-tips" data-file-tag="input.file_icon-tag"></i>
<input type="file" name="file_icon" multiple data-validation-message="{{:L('common_select_images_tips')}}" accept="image/gif,image/jpeg,image/jpg,image/png" class="js-choice-one images-file-event file_icon-tag" data-choice-one-to=".original-icon-images-url" data-tips-tag="#form-icon-tips" data-image-tag="#form-img-icon" />
<div id="form-icon-tips" class="m-t-5"></div>
<img src="<if condition="!empty($data['images_url'])">{{$image_host}}{{$data.images_url}}<else />{{$image_host}}/Public/Admin/Default/Images/default-images.png</if>" id="form-img-icon" class="block m-t-5 am-img-thumbnail am-radius" width="50" height="50" data-default="<if condition="!empty($data['images_url'])">{{$image_host}}{{$data.images_url}}<else />{{$image_host}}/Public/Admin/Default/Images/default-images.png</if>" />
<img src="{{$image_host}}/Public/Admin/Default/Images/default-images.png" id="form-img-icon" class="block m-t-5 am-img-thumbnail am-radius" width="50" height="50" data-default="{{$image_host}}/Public/Admin/Default/Images/default-images.png" />
</div>
<div class="am-form-group">
<label>{{:L('common_name_text')}}</label>
......
......@@ -68,7 +68,10 @@
<optgroup label="{{$v.name}}">
<if condition="!empty($category_list)">
<foreach name="v.items" item="vs">
<option value="{{$vs.id}}" <if condition="!empty($data['category_ids']) and in_array($vs['id'], $data['category_ids'])">selected</if>>{{$vs.name}}</option>
<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>
......@@ -116,6 +119,16 @@
<label>{{:L('goods_buy_max_number_text')}}<span class="fs-12 fw-100 cr-999">({{:L('goods_buy_max_number_tips')}})</span></label>
<input type="number" name="buy_max_number" placeholder="{{:L('goods_buy_max_number_text')}}" min="0" max="100000000" data-validation-message="{{:L('goods_buy_max_number_format')}}" class="am-radius" <if condition="!empty($data['buy_max_number'])"> value="{{$data.buy_max_number}}"</if> />
</div>
<div class="am-form-group am-form-file">
<label class="block">{{:L('goods_home_recommended_images_text')}}<span class="fs-12 fw-100 cr-999">({{:L('goods_home_recommended_images_tips')}})</span></label>
<button type="button" class="am-btn am-btn-default am-btn-sm am-radius">
<i class="am-icon-cloud-upload"></i> {{:L('common_select_images_text')}}</button>
<input type="text" name="home_recommended_images" class="am-radius js-choice-one original-images-url original-home_recommended_images-images-url" data-choice-one-to='input[name="file_home_recommended_images"]' <notempty name="data"> value="{{$data.home_recommended_images}}"</notempty>" data-validation-message="{{:L('common_select_images_tips')}}" readonly="readonly" />
<i class="am-icon-trash-o am-icon-sm original-images-url-delete" data-input-tag="input.original-home_recommended_images-images-url" data-image-tag="#form-img-home_recommended_images" data-tips-tag="#form-home_recommended_images-tips" data-file-tag="input.file_home_recommended_images-tag"></i>
<input type="file" name="file_home_recommended_images" multiple data-validation-message="{{:L('common_select_images_tips')}}" accept="image/gif,image/jpeg,image/jpg,image/png" class="js-choice-one images-file-event file_home_recommended_images-tag" data-choice-one-to=".original-home_recommended_images-images-url" data-tips-tag="#form-home_recommended_images-tips" data-image-tag="#form-img-home_recommended_images" />
<div id="form-home_recommended_images-tips" class="m-t-5"></div>
<img src="<if condition="!empty($data['home_recommended_images'])">{{$image_host}}{{$data.home_recommended_images}}<else />{{$image_host}}/Public/Admin/Default/Images/default-images.png</if>" id="form-img-home_recommended_images" class="block m-t-5 am-img-thumbnail am-radius" width="150" height="150" data-default="<if condition="!empty($data['home_recommended_images'])">{{$image_host}}{{$data.home_recommended_images}}<else />{{$image_host}}/Public/Admin/Default/Images/default-images.png</if>" data-del-default="{{$image_host}}/Public/Admin/Default/Images/default-images.png" />
</div>
<div class="am-form-group">
<label class="block">{{:L('goods_is_deduction_inventory_text')}}<span class="fs-12 fw-100 cr-999">({{:L('goods_is_deduction_inventory_tips')}})</span></label>
<input name="is_deduction_inventory" value="1" type="checkbox" data-off-text="{{:L('common_operation_off_is_text')}}" data-on-text="{{:L('common_operation_on_is_text')}}" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch <if condition="!empty($data) and $data['is_deduction_inventory'] eq 1">checked="true"</if> />
......
......@@ -27,7 +27,7 @@
<i class="am-icon-trash-o am-icon-sm original-images-url-delete" data-input-tag="input.original-icon-images-url" data-image-tag="#form-img-icon" data-tips-tag="#form-icon-tips" data-file-tag="input.file_icon-tag"></i>
<input type="file" name="file_icon" multiple data-validation-message="{{:L('common_select_images_tips')}}" accept="image/gif,image/jpeg,image/jpg,image/png" class="js-choice-one images-file-event file_icon-tag" data-choice-one-to=".original-icon-images-url" data-tips-tag="#form-icon-tips" data-image-tag="#form-img-icon" />
<div id="form-icon-tips" class="m-t-5"></div>
<img src="<if condition="!empty($data['images_url'])">{{$image_host}}{{$data.images_url}}<else />{{$image_host}}/Public/Admin/Default/Images/default-images.png</if>" id="form-img-icon" class="block m-t-5 am-img-thumbnail am-radius" width="50" height="50" data-default="<if condition="!empty($data['images_url'])">{{$image_host}}{{$data.images_url}}<else />{{$image_host}}/Public/Admin/Default/Images/default-images.png</if>" />
<img src="{{$image_host}}/Public/Admin/Default/Images/default-images.png" id="form-img-icon" class="block m-t-5 am-img-thumbnail am-radius" width="50" height="50" data-default="{{$image_host}}/Public/Admin/Default/Images/default-images.png" />
</div>
<div class="am-form-group am-form-file">
<label class="block">{{:L('goods_category_big_images_text')}}</label>
......@@ -37,7 +37,7 @@
<i class="am-icon-trash-o am-icon-sm original-images-url-delete" data-input-tag=".original-big-images-url" data-image-tag="#form-img-big_images" data-tips-tag="#form-big_images-tips" data-file-tag="input.file_big_images-tag"></i>
<input type="file" name="file_big_images" multiple data-validation-message="{{:L('common_select_images_tips')}}" accept="image/gif,image/jpeg,image/jpg,image/png" class="js-choice-one images-file-event file_big_images-tag" data-choice-one-to=".original-big-images-url" data-tips-tag="#form-big_images-tips" data-image-tag="#form-img-big_images" />
<div id="form-big_images-tips" class="m-t-5"></div>
<img src="<if condition="!empty($data['big_images'])">{{$image_host}}{{$data.big_images}}<else />{{$image_host}}/Public/Admin/Default/Images/default-images.png</if>" id="form-img-big_images" class="block m-t-5 am-img-thumbnail am-radius" width="50" height="50" data-default="<if condition="!empty($data['big_images'])">{{$image_host}}{{$data.big_images}}<else />{{$image_host}}/Public/Admin/Default/Images/default-images.png</if>" />
<img src="{{$image_host}}/Public/Admin/Default/Images/default-images.png" id="form-img-big_images" class="block m-t-5 am-img-thumbnail am-radius" width="50" height="50" data-default="{{$image_host}}/Public/Admin/Default/Images/default-images.png" />
</div>
<div class="am-form-group">
<label>{{:L('goods_category_bg_color')}}</label>
......
......@@ -1091,8 +1091,10 @@ $(function()
// 图片组合input清除按钮
$(document).on('click', '.original-images-url-delete', function()
{
var images = $($(this).data('image-tag')).data('del-default') || $($(this).data('image-tag')).attr('data-default');
$($(this).data('input-tag')).val('');
$($(this).data('image-tag')).attr('src', $($(this).data('image-tag')).data('default'));
$($(this).data('image-tag')).attr('src', images);
$($(this).data('image-tag')).attr('data-default', images);
$($(this).data('tips-tag')).html('');
var $file_tag = $($(this).data('file-tag'));
if($file_tag.val().length > 0)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册