作者 sgj

add goods admin

... ... @@ -59,9 +59,49 @@ class ShopController extends AdminBaseController
public function goodAdd(){
if (request()->isAjax()){
$data=input();
dump($data);
if (!empty( $data['post']['content'])){
$data['post']['content']=saveContent($data['post']['content']);
}
$img=input('photo_urls/a');
if (!empty($img)){
$data['post']['pic']=json_encode($img,true);
}
$data['post']['add_time']=time();
$result=$this->GoodsModel->insert($data['post']);
if ($result==1){
$this->success('添加成功!');
}
}
return $this->fetch();
}
public function goodedit(){
if (request()->isAjax()){
$map['id']=input('id');
$data=input();
if (!empty( $data['post']['content'])){
$data['post']['content']=saveContent($data['post']['content']);
}
$img=input('photo_urls/a');
if (!empty($img)){
$data['post']['pic']=json_encode($img,true);
}
$result=$this->GoodsModel->where($map)->Update($data['post']);
if ($result==1){
$this->success('修改成功!');
}else{
$this->error('修改失败!');
}
}else{
$id=input('id');
$good=$this->GoodsModel->where('id',$id)->find();
$good['pic']=json_decode($good['pic'],true);
$this->assign('good',$good);
return $this->fetch();
}
}
}
\ No newline at end of file
... ...
... ... @@ -18,4 +18,6 @@ class GoodsModel extends Model
return $goods;
}
}
\ No newline at end of file
... ...
<include file="public@header"/>
<style type="text/css">
.pic-list li {
margin-bottom: 5px;
}
</style>
<script type="text/html" id="photos-item-tpl">
<li id="saved-image{id}">
<input id="photo-{id}" type="hidden" name="photo_urls[]" value="{filepath}">
<input class="form-control" id="photo-{id}-name" type="text" name="photo_names[]" value="{name}"
style="width: 200px;" title="图片名称">
<img id="photo-{id}-preview" src="{url}" style="height:36px;width: 36px;"
onclick="imagePreviewDialog(this.src);">
<a href="javascript:uploadOneImage('图片上传','#photo-{id}');">替换</a>
<a href="javascript:(function(){$('#saved-image{id}').remove();})();">移除</a>
</li>
</script>
<script type="text/html" id="files-item-tpl">
<li id="saved-file{id}">
<input id="file-{id}" type="hidden" name="file_urls[]" value="{filepath}">
<input class="form-control" id="file-{id}-name" type="text" name="file_names[]" value="{name}"
style="width: 200px;" title="文件名称">
<a id="file-{id}-preview" href="{preview_url}" target="_blank">下载</a>
<a href="javascript:uploadOne('图片上传','#file-{id}','file');">替换</a>
<a href="javascript:(function(){$('#saved-file{id}').remove();})();">移除</a>
</li>
</script>
</head>
<body>
<div class="wrap js-check-wrap">
<ul class="nav nav-tabs">
<li><a href="{:url('index')}">商品管理</a></li>
<li class="active"><a href="">编辑商品</a></li>
</ul>
<form action="{:url('goodEdit')}" method="post" class="form-horizontal js-ajax-form margin-top-20">
<div class="row">
<div class="col-md-9">
<table class="table table-bordered">
<input name="id" type="hidden" value="{$good.id}">
<tr>
<th>商品名称<span class="form-required">*</span></th>
<td>
<input class="form-control" type="text" name="post[name]"
id="title" required value="{$good.name}" placeholder="请输入标题"/>
</td>
</tr>
<tr>
<th>简介</th>
<td>
<textarea class="form-control" name="post[describe]" style="height: 50px;"
placeholder="请填写摘要">{$good.describe}</textarea>
</td>
</tr>
<tr>
<th>消耗积分数</th>
<td>
<input type="number" class="form-control" name="post[fee]" style="height: 50px;"
value="{$good.fee}">
</td>
</tr>
<tr>
<th>内容</th>
<td>
<script type="text/plain" id="content" name="post[content]">{:getContent($good.content)}</script>
</td>
</tr>
<tr>
<th>相册</th>
<td>
<ul id="photos" class="pic-list list-unstyled form-inline">
<notempty name="good.pic">
<foreach name="good.pic" item="vo">
<php>$img_url=cmf_get_image_preview_url($vo);</php>
<li id="saved-image{$key}">
<input id="photo-{$key}" type="hidden" name="photo_urls[]"
value="{$vo}">
<img id="photo-{$key}-preview"
src="{:cmf_get_image_preview_url($vo)}"
style="height:36px;width: 36px;"
onclick="parent.imagePreviewDialog(this.src);">
<a href="javascript:uploadOneImage('图片上传','#photo-{$key}');">替换</a>
<a href="javascript:(function(){$('#saved-image{$key}').remove();})();">移除</a>
</li>
</foreach>
</notempty>
</ul>
<a href="javascript:uploadMultiImage('图片上传','#photos','photos-item-tpl');"
class="btn btn-sm btn-default">选择图片</a>
</td>
</tr>
</table>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-primary js-ajax-submit">{:lang('EDIT')}</button>
<a class="btn btn-default" href="{:url('AdminArticle/index')}">{:lang('BACK')}</a>
</div>
</div>
</div>
<div class="col-md-3">
<table class="table table-bordered">
<tr>
<th>缩略图</th>
</tr>
<tr>
<td>
<div style="text-align: center;">
<input type="hidden" name="post[thumbnail]" id="thumbnail"
value="{$good.thumbnail|default=''}">
<a href="javascript:uploadOneImage('图片上传','#thumbnail');">
<if condition="empty($good.thumbnail)">
<img src="__TMPL__/public/assets/images/default-thumbnail.png"
id="thumbnail-preview"
width="135" style="cursor: pointer"/>
<else/>
<img src="{:cmf_get_image_preview_url($good.thumbnail)}"
id="thumbnail-preview"
width="135" style="cursor: pointer"/>
</if>
</a>
<input type="button" class="btn btn-sm btn-cancel-thumbnail" value="取消图片">
</div>
</td>
</tr>
</table>
</div>
</div>
</form>
</div>
<script type="text/javascript" src="__STATIC__/js/admin.js"></script>
<script type="text/javascript">
//编辑器路径定义
var editorURL = GV.WEB_ROOT;
</script>
<script type="text/javascript" src="__STATIC__/js/ueditor/ueditor.config.js"></script>
<script type="text/javascript" src="__STATIC__/js/ueditor/ueditor.all.min.js"></script>
<script type="text/javascript">
$(function () {
editorcontent = new baidu.editor.ui.Editor();
editorcontent.render('content');
try {
editorcontent.sync();
} catch (err) {
}
$('.btn-cancel-thumbnail').click(function () {
$('#thumbnail-preview').attr('src', '__TMPL__/public/assets/images/default-thumbnail.png');
$('#thumbnail').val('');
});
});
function doSelectUsers() {
var selectedUsersId = $('#js-users-id-input').val();
openIframeLayer("{:url('Common/selectUsers')}?ids=" + selectedUsersId, '请选择分类', {
area: ['1200px', '800px'],
btn: ['确定', '取消'],
yes: function (index, layero) {
//do something
var iframeWin = window[layero.find('iframe')[0]['name']];
var selectedUsers = iframeWin.confirm();
if (selectedUsers.selectedUsersId.length == 0) {
layer.msg('请选择分类');
return;
}
$('#js-users-id-input').val(selectedUsers.selectedUsersId.join(','));
$('#js-users-name-input').val(selectedUsers.selectedUsersName.join(' '));
//console.log(layer.getFrameIndex(index));
layer.close(index); //如果设定了yes回调,需进行手工关闭
}
});
}
function doSelectCategory() {
console.log('打开页面');
var selectedCategoriesId = $('#js-categories-id-input').val();
openIframeLayer("{:url('AdminCategory/select')}?ids=" + selectedCategoriesId, '请选择分类', {
area: ['700px', '400px'],
btn: ['确定', '取消'],
yes: function (index, layero) {
//do something
var iframeWin = window[layero.find('iframe')[0]['name']];
var selectedCategories = iframeWin.confirm();
if (selectedCategories.selectedCategoriesId.length == 0) {
layer.msg('请选择分类');
return;
}
$('#js-categories-id-input').val(selectedCategories.selectedCategoriesId.join(','));
$('#js-categories-name-input').val(selectedCategories.selectedCategoriesName.join(' '));
//console.log(layer.getFrameIndex(index));
layer.close(index); //如果设定了yes回调,需进行手工关闭
}
});
}
</script>
</body>
</html>
\ No newline at end of file
... ...
... ... @@ -29,8 +29,8 @@
<body>
<div class="wrap js-check-wrap">
<ul class="nav nav-tabs">
<li><a href="{:url('AdminArticle/index')}">商品管理</a></li>
<li class="active"><a href="{:url('AdminArticle/add')}">添加商品</a></li>
<li><a href="{:url('index')}">商品管理</a></li>
<li class="active"><a href="">添加商品</a></li>
</ul>
<form action="{:url('goodadd')}" method="post" class="form-horizontal js-ajax-form margin-top-20">
<div class="row">
... ... @@ -44,8 +44,6 @@
id="title" required value="" placeholder="请输入标题"/>
</td>
</tr>
<tr>
<th>简介</th>
<td>
... ... @@ -56,8 +54,8 @@
<tr>
<th>消耗积分数</th>
<td>
<textarea class="form-control" name="post[fee]" style="height: 50px;"
placeholder="请填写摘要"></textarea>
<input type="number" class="form-control" name="post[fee]" style="height: 50px;"
placeholder="1"></textarea>
</td>
</tr>
<tr>
... ... @@ -74,15 +72,6 @@
class="btn btn-default btn-sm">选择图片</a>
</td>
</tr>
<tr>
<th>附件</th>
<td>
<ul id="files" class="pic-list list-unstyled form-inline">
</ul>
<a href="javascript:uploadMultiFile('附件上传','#files','files-item-tpl');"
class="btn btn-sm btn-default">选择文件</a>
</td>
</tr>
</table>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
... ... @@ -99,7 +88,7 @@
<tr>
<td>
<div style="text-align: center;">
<input type="hidden" name="post[more][thumbnail]" id="thumbnail" value="">
<input type="hidden" name="post[thumbnail]" id="thumbnail" value="">
<a href="javascript:uploadOneImage('图片上传','#thumbnail');">
<img src="__TMPL__/public/assets/images/default-thumbnail.png"
id="thumbnail-preview"
... ... @@ -109,39 +98,8 @@
</div>
</td>
</tr>
<tr>
<th><b>发布时间</b></th>
</tr>
<tr>
<td>
<input class="form-control js-bootstrap-datetime" type="text" name="post[published_time]"
value="{:date('Y-m-d H:i:s',time())}">
</td>
</tr>
<tr>
<th><b>状态</b></th>
</tr>
<tr>
<td>
<div class="checkbox">
<label><input type="checkbox" name="post[post_status]" value="1" checked>发布</label>
</div>
</td>
</tr>
<tr>
<td>
<div class="checkbox">
<label><input type="checkbox" name="post[is_top]" value="1">置顶</label>
</div>
</td>
</tr>
<tr>
<td>
<div class="checkbox">
<label><input type="checkbox" name="post[recommended]" value="1">推荐</label>
</div>
</td>
</tr>
</table>
</div>
... ...
... ... @@ -25,7 +25,7 @@
<td>{$vo.id}</td>
<td>{$vo.name}</td>
<td><a href="{:url('office',['id'=>$vo.id])}"></a></td>
<td><a class="js-ajax-delete" href="{:url('jobDel',['id'=>$vo.id])}">删除</a></td>
<td><a class="js-ajax-delete" href="{:url('goodDel',['id'=>$vo.id])}">删除</a><br/><a href="{:url('goodEdit',['id'=>$vo.id])}">查看</a></td>
</tr>
</foreach>
</tbody>
... ...
... ... @@ -195,6 +195,14 @@ function cmf_get_user_avatar_url($avatar)
}
function saveContent($info){
return cmf_replace_content_file_url(htmlspecialchars_decode($info),true);
}
function getContent($info){
return cmf_replace_content_file_url(htmlspecialchars_decode($info));
}
/**
* CMF密码加密方法
* @param string $pw 要加密的原始密码
... ...