完善商城快讯商品
This commit is contained in:
parent
aef6d02190
commit
e2fa865ac6
@ -99,6 +99,7 @@ class MallNews extends AdminBase
|
||||
return view();
|
||||
}
|
||||
|
||||
// 快讯商品列表
|
||||
public function shop()
|
||||
{
|
||||
if ($this->request->isAjax()) {
|
||||
@ -109,6 +110,7 @@ class MallNews extends AdminBase
|
||||
return view('');
|
||||
}
|
||||
|
||||
// 添加快讯商品
|
||||
public function add_shop()
|
||||
{
|
||||
if ($this->request->isAjax()) {
|
||||
@ -123,4 +125,37 @@ class MallNews extends AdminBase
|
||||
'max_upload_file' => MallNewsLogic::$MAX_UPLOAD_FILE,
|
||||
]);
|
||||
}
|
||||
|
||||
// 修改快讯商品
|
||||
public function audit_shop()
|
||||
{
|
||||
if ($this->request->isAjax()) {
|
||||
$post = $this->request->post();
|
||||
$result = MallNewsLogic::edit_shop($post);
|
||||
if ($result['code'] == 1) {
|
||||
return JsonServer::success('修改成功');
|
||||
}
|
||||
return JsonServer::error($result['msg']);
|
||||
}
|
||||
|
||||
$id = $this->request->get('id');
|
||||
return view('', [
|
||||
'detail' => MallNewsLogic::shop_detail($id),
|
||||
'max_upload_file' => MallNewsLogic::$MAX_UPLOAD_FILE,
|
||||
]);
|
||||
}
|
||||
|
||||
// 删除快讯商品
|
||||
public function del_shop()
|
||||
{
|
||||
if ($this->request->isAjax()) {
|
||||
$post = $this->request->post();
|
||||
$result = MallNewsLogic::del_shop($post['id']);
|
||||
if ($result) {
|
||||
return JsonServer::success('删除成功');
|
||||
}
|
||||
|
||||
return JsonServer::error('删除失败');
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -186,11 +186,11 @@ class MallNewsLogic extends Logic
|
||||
// 快讯商品列表
|
||||
public static function shop_list($get)
|
||||
{
|
||||
$where[] = ['delete_time', '=', 0];
|
||||
$where[] = ['mns.delete_time', '=', 0];
|
||||
$model = new MallNewsShop();
|
||||
$lists = $model->alias('mns')
|
||||
->join('goods g', 'mns.shop_id = g.id')
|
||||
->field('mns.id, g.id, g.name, g.image')
|
||||
->field('mns.id, g.id as gid, g.name, g.image')
|
||||
->where($where)
|
||||
->order('mns.create_time desc')
|
||||
->paginate([
|
||||
@ -203,6 +203,24 @@ class MallNewsLogic extends Logic
|
||||
return ['count' => $lists['total'], 'lists' => $lists['data']];
|
||||
}
|
||||
|
||||
// 获取快讯商品详情
|
||||
public static function shop_detail($id)
|
||||
{
|
||||
$result = MallNewsShop::with('files')->where(['id' => $id, 'delete_time' => 0])->find();
|
||||
if (isset($result['files'])) {
|
||||
foreach ($result['files'] as &$v) {
|
||||
if ($result['type'] == 0) {
|
||||
$v['src'] = UrlServer::getFileUrl('uploads/images/' . $v['src']);
|
||||
} else {
|
||||
$v['src'] = Config::get('aliyunoss.domain') . self::$FILE_VIDEO_PATH . '/'. $v['src'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$result['shop'] = Db::name('goods')->where('id', $result['shop_id'])->find();
|
||||
return $result;
|
||||
}
|
||||
|
||||
// 创建快讯商品
|
||||
public static function create_shop($post)
|
||||
{
|
||||
@ -222,6 +240,44 @@ class MallNewsLogic extends Logic
|
||||
return ['code' => 1, 'msg' => '添加成功'];
|
||||
}
|
||||
|
||||
// 修改表单信息
|
||||
public static function edit_shop($post)
|
||||
{
|
||||
$arr['shop_id'] = $post['shop_id'];
|
||||
$arr['content'] = $post['content'];
|
||||
$arr['update_time'] = time();
|
||||
|
||||
MallNewsShop::where('id', $post['id'])->update($arr);
|
||||
|
||||
if (isset($post['mall_news_images'])) {
|
||||
MallNewsFile::where('mall_news_shop_id', $post['id'])->delete();
|
||||
|
||||
foreach ($post['mall_news_images'] as &$v) {
|
||||
MallNewsFile::create([
|
||||
'mall_news_shop_id' => $post['id'],
|
||||
'src' => basename($v)
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
return ['code' => 1, 'msg' => '修改成功'];
|
||||
}
|
||||
|
||||
// 删除文章
|
||||
public static function del_shop($id)
|
||||
{
|
||||
$result = MallNewsShop::where([
|
||||
'id' => $id
|
||||
])->update([
|
||||
'delete_time' => time(),
|
||||
]);
|
||||
|
||||
if ($result) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private static function checkForm(&$form)
|
||||
{
|
||||
if (empty($form)) {
|
||||
|
||||
225
app/admin/view/mall_news/audit_shop.html
Executable file
225
app/admin/view/mall_news/audit_shop.html
Executable file
@ -0,0 +1,225 @@
|
||||
{layout name="layout2" /}
|
||||
<style>
|
||||
.layui-form {padding: 20px 30px;background-color: #ffffff;}
|
||||
.layui-form-item .layui-form-label { width: 95px; }
|
||||
.layui-form-item .layui-input-inline { width: 240px; }
|
||||
.layui-form-item .map-container{ width: 600px; height: 400px; margin-left: 100px; margin-top: 20px; }
|
||||
#video-block {position: relative; width: 700px;height: 300px}
|
||||
.del-video-btn {
|
||||
visibility: hidden;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
position: absolute;
|
||||
z-index: 100;
|
||||
top: -11px;
|
||||
right: -9px;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
cursor: pointer;
|
||||
font-size: 14px;
|
||||
color: #FFFFFF;
|
||||
border-radius: 50%;
|
||||
background: hsla(0, 0%, 60%, .6)
|
||||
}
|
||||
.select-goods {margin-left: 10px}
|
||||
</style>
|
||||
|
||||
<div class="layui-card layui-form">
|
||||
<div class="layui-card-body">
|
||||
<input type="hidden" value="{$detail.id}" name="id">
|
||||
|
||||
<div id="mall-image" class="layui-form-item">
|
||||
<label class="layui-form-label">图片:</label>
|
||||
<div class="layui-input-block" id="goodsImageContainer">
|
||||
<div class="like-upload-image">
|
||||
<div class="upload-image-elem"><a class="add-upload-image" id="mallNewImage"> + 添加图片</a></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">商品:</label>
|
||||
<div class="layui-input-inline" style="display: flex">
|
||||
<div id="shop_name">{$detail.shop ? $detail.shop['name'] : ''}</div>
|
||||
<input type="hidden" id="shop_id" name="shop_id" style="margin-right: 10px;" value="{$detail.shop_id}">
|
||||
<a class="layui-btn layui-btn-normal select-goods">选择商品</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label for="content" class="layui-form-label">文章详情:</label>
|
||||
<div class="layui-input-block">
|
||||
<textarea name="content" id="content" lay-verify="content">{$detail.content}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item layui-hide">
|
||||
<input type="button" lay-submit lay-filter="addSubmit" id="addSubmit" value="确认">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<script src="__PUBLIC__/static/common/js/area.js"></script>
|
||||
<script>
|
||||
var detail= {$detail|raw|default=''};
|
||||
|
||||
layui.config({
|
||||
base: "/static/lib/"
|
||||
}).extend({
|
||||
likeedit: "likeedit/likeedit",
|
||||
likeArea: "likeArea/likeArea",
|
||||
txMap: "likeMap/txMap"
|
||||
}).use(["form", "laydate", "likeArea", "txMap", 'likeedit', 'upload', 'element'], function(){
|
||||
var $ = layui.$;
|
||||
var form = layui.form;
|
||||
var laydate = layui.laydate;
|
||||
var likeedit = layui.likeedit;
|
||||
var likeupload = layui.upload;
|
||||
|
||||
//------------------------------------------富文本编辑器 begin --------------------------------
|
||||
var content = likeedit.build("content", {
|
||||
uploadImage: {
|
||||
url: '{:url("file/lists")}?type=10'
|
||||
}
|
||||
});
|
||||
|
||||
form.verify({
|
||||
content: function() {
|
||||
likeedit.sync(content)
|
||||
}
|
||||
});
|
||||
//------------------------------------------富文本编辑器 end --------------------------------
|
||||
|
||||
//文章图片
|
||||
if(detail['files']){
|
||||
var html = '';
|
||||
for(j = 0; j < detail['files'].length; j++) {
|
||||
html = html +
|
||||
'<div class="upload-image-div">' +
|
||||
'<img src="' + detail['files'][j].src + '" alt="img" />' +
|
||||
'<input type="hidden" name="mall_news_images[]" value="' + detail['files'][j].src + '">' +
|
||||
'<div class="del-upload-btn">x</div>' +
|
||||
'</div>';
|
||||
}
|
||||
html = html + '<div class="upload-image-elem"><a class="add-upload-image" id="mallNewImage"> + 添加图片</a></div>';
|
||||
$('#goodsImageContainer').html(html);
|
||||
}
|
||||
|
||||
// 视频上传
|
||||
if (detail['files'] && detail['type'] === 1) {
|
||||
$("#upload-video-block").hide()
|
||||
$("#video-block").show()
|
||||
$("#mallVideo").attr('src', detail['files'][0]['src'])
|
||||
$("input[name='video_file']").val(detail['files'][0]['src'])
|
||||
}
|
||||
|
||||
// 切换文章类型
|
||||
form.on('radio(type)', function(data){
|
||||
if(data.value == 0){
|
||||
$("#mall-image").show()
|
||||
$("#mall-video").hide()
|
||||
} else {
|
||||
$("#mall-image").hide()
|
||||
$("#mall-video").show()
|
||||
}
|
||||
});
|
||||
|
||||
laydate.render({type:"datetime", elem:"#expire_time", trigger:"click",min:0});
|
||||
|
||||
like.delUpload();
|
||||
$(document).on("click", "#mallNewImage", function () {
|
||||
like.imageUpload({
|
||||
limit: {$max_upload_file},
|
||||
field: "mall_news_images[]",
|
||||
that: $(this)
|
||||
});
|
||||
});
|
||||
|
||||
// 视频上传
|
||||
likeupload
|
||||
var uploadInst = likeupload.render({
|
||||
elem: '.add-upload-video' //绑定元素
|
||||
,url: "{:url('MallNews/uploadVideo')}" //上传接口
|
||||
,accept: 'video'
|
||||
,exts: "mp4"
|
||||
,before: function(obj){ //obj参数包含的信息,跟 choose回调完全一致,可参见上文。
|
||||
console.log(222)
|
||||
layer.load(); //上传loading
|
||||
}
|
||||
,done: function(res, index, upload){
|
||||
if (res.code === 1) {
|
||||
console.log(res)
|
||||
$("#upload-video-block").hide()
|
||||
$("#video-block").show()
|
||||
$("#mallVideo").attr('src', res.data.file)
|
||||
$("#mall_news_images").val(res.data.file)
|
||||
$("input[name='video_file']").val(res.data.file)
|
||||
} else {
|
||||
layer.msg('上传错误');
|
||||
return false;
|
||||
}
|
||||
layer.closeAll('loading'); //关闭loading
|
||||
}
|
||||
,error: function(index, upload){
|
||||
layer.closeAll('loading'); //关闭loading
|
||||
}
|
||||
});
|
||||
|
||||
// 删除视频
|
||||
$(document).on("click", ".del-video-btn", function (e) {
|
||||
layer.confirm("是否删除该视频?", function(index) {
|
||||
const videoFile = $("#mallVideo").attr('src')
|
||||
like.ajax({
|
||||
url: '{:url("mallNews/delVideo")}',
|
||||
data: {videoFile},
|
||||
type: "post",
|
||||
success: function (res) {}
|
||||
});
|
||||
|
||||
$("#upload-video-block").show()
|
||||
$("#video-block").hide()
|
||||
$("#mallVideo").attr('src', '')
|
||||
layer.close(index);
|
||||
})
|
||||
});
|
||||
|
||||
// 选择商品
|
||||
$(document).on('click','.select-goods',function () {
|
||||
layer.open({
|
||||
type: 2
|
||||
,title: '选择商品'
|
||||
,content: '{:url("mallNews/goods")}'
|
||||
,area: ['90%', '90%']
|
||||
,btn: ['确认', '取消']
|
||||
,yes: function(index, layero){
|
||||
var data = window["layui-layer-iframe" + index].callbackdata();
|
||||
$('#shop_name').html(data[0].name)
|
||||
$('#shop_id').val(data[0].id)
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
form.verify({
|
||||
title: function (value, item) {
|
||||
if (!value) {
|
||||
switchTab($(item).attr("switch-tab"));
|
||||
return "请填写标题";
|
||||
}
|
||||
},
|
||||
desc: function (value, item) {
|
||||
if (!value) {
|
||||
switchTab($(item).attr("switch-tab"));
|
||||
return "请填写文章概述";
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
function switchTab(number) {
|
||||
$('.layui-tab-card .layui-tab-title li').removeClass('layui-this');
|
||||
$('.layui-tab-content .layui-tab-item').removeClass('layui-show');
|
||||
$('.layui-tab-card .layui-tab-title li').eq(number).addClass('layui-this');
|
||||
$('.layui-tab-content .layui-tab-item').eq(number).addClass('layui-show');
|
||||
}
|
||||
})
|
||||
</script>
|
||||
@ -128,7 +128,7 @@
|
||||
layer.open({
|
||||
type: 2
|
||||
, title: '编辑'
|
||||
, content: '{:url("mallNews/audit")}?id=' + obj.data.id
|
||||
, content: '{:url("mallNews/audit_shop")}?id=' + obj.data.id
|
||||
, area: ['90%', '90%']
|
||||
,btn: ['确定', '取消']
|
||||
, yes: function (index, layero) {
|
||||
@ -138,7 +138,7 @@
|
||||
iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
|
||||
var field = data.field;
|
||||
like.ajax({
|
||||
url: '{:url("mallNews/audit")}',
|
||||
url: '{:url("mallNews/audit_shop")}',
|
||||
data: field,
|
||||
type: "post",
|
||||
success: function (res) {
|
||||
@ -156,9 +156,9 @@
|
||||
},
|
||||
// 删除
|
||||
del: function (obj) {
|
||||
layer.confirm('确定要删除该文章吗?', function (index) {
|
||||
layer.confirm('确定要删除该快讯商品吗?', function (index) {
|
||||
like.ajax({
|
||||
url: '{:url("mallNews/del")}',
|
||||
url: '{:url("mallNews/del_shop")}',
|
||||
data: {id: obj.data.id},
|
||||
type: "post",
|
||||
success: function (res) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user