修改商城快讯
This commit is contained in:
parent
cc66900147
commit
cd2a856345
@ -15,7 +15,7 @@ class MallNews extends AdminBase
|
||||
{
|
||||
if ($this->request->isAjax()) {
|
||||
$get = $this->request->get();
|
||||
$lists = LiveGoodsLogic::lists($get);
|
||||
$lists = MallNewsLogic::lists($get);
|
||||
return JsonServer::success('', $lists);
|
||||
}
|
||||
return view('', [
|
||||
@ -25,12 +25,38 @@ class MallNews extends AdminBase
|
||||
|
||||
public function add()
|
||||
{
|
||||
return view('');
|
||||
if ($this->request->isAjax()) {
|
||||
$post = $this->request->post();
|
||||
$result = MallNewsLogic::create($post);
|
||||
if ($result['code'] == 1) {
|
||||
return JsonServer::success('添加成功');
|
||||
}
|
||||
return JsonServer::error($result['msg']);
|
||||
}
|
||||
|
||||
return view('', [
|
||||
'max_upload_size' => MallNewsLogic::$MAX_UPLOAD_SIZE . 'Mb',
|
||||
'max_upload_file' => MallNewsLogic::$MAX_UPLOAD_FILE,
|
||||
]);
|
||||
}
|
||||
|
||||
public function edit()
|
||||
public function audit()
|
||||
{
|
||||
|
||||
if ($this->request->isAjax()) {
|
||||
$post = $this->request->post();
|
||||
$result = MallNewsLogic::audit($post);
|
||||
if ($result['code'] == 1) {
|
||||
return JsonServer::success('添加成功');
|
||||
}
|
||||
return JsonServer::error($result['msg']);
|
||||
}
|
||||
|
||||
$id = $this->request->get('id');
|
||||
return view('', [
|
||||
'detail' => MallNewsLogic::detail($id),
|
||||
'max_upload_size' => MallNewsLogic::$MAX_UPLOAD_SIZE . 'Mb',
|
||||
'max_upload_file' => MallNewsLogic::$MAX_UPLOAD_FILE,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -44,4 +70,13 @@ class MallNews extends AdminBase
|
||||
}
|
||||
return JsonServer::error('', $result['msg']);
|
||||
}
|
||||
|
||||
public function delVideo()
|
||||
{
|
||||
if ($this->request->isAjax()) {
|
||||
$file = $this->request->post('videoFile');
|
||||
MallNewsLogic::delVideo($file);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@ -3,38 +3,143 @@
|
||||
namespace app\admin\logic;
|
||||
|
||||
use app\common\basics\Logic;
|
||||
use app\common\model\MallNews;
|
||||
use app\common\model\MallNewsFile;
|
||||
use app\common\server\ConfigServer;
|
||||
use app\common\server\storage\Driver as StorageDriver;
|
||||
use think\facade\Config;
|
||||
|
||||
class MallNewsLogic extends Logic
|
||||
{
|
||||
private static $MAX_UPLOAD_SIZE = 50 * 1024 * 1024;
|
||||
private static $FILE_PATH = 'mall_news/video';
|
||||
public static $MAX_UPLOAD_SIZE = 50;
|
||||
public static $MAX_UPLOAD_FILE = 6;
|
||||
private static $FILE_VIDEO_PATH = 'mall_news/video';
|
||||
|
||||
public static function uploadVideo()
|
||||
private static function config()
|
||||
{
|
||||
$file = request()->file('file');
|
||||
if ($file->getSize() > self::$MAX_UPLOAD_SIZE) {
|
||||
return ['code' => -1, 'msg' => '视频最大上传为50M'];
|
||||
}
|
||||
|
||||
$config = [
|
||||
return [
|
||||
'default' => ConfigServer::get('storage', 'default', 'local'),
|
||||
'engine' => ConfigServer::get('storage_engine') ?? ['local'=>[]]
|
||||
];
|
||||
}
|
||||
|
||||
$StorageDriver = new StorageDriver($config);
|
||||
public static function lists($get)
|
||||
{
|
||||
$where = [];
|
||||
|
||||
if (!empty($get['title']) and $get['title']) {
|
||||
$where[] = ['title', 'like', '%' . $get['title'] . '%'];
|
||||
}
|
||||
|
||||
$model = new MallNews();
|
||||
$lists = $model->field(true)
|
||||
->where($where)
|
||||
->order('sort desc, create_time desc')
|
||||
->paginate([
|
||||
'page' => $get['page'],
|
||||
'list_rows' => $get['limit'],
|
||||
'var_page' => 'page'
|
||||
])
|
||||
->toArray();
|
||||
|
||||
return ['count' => $lists['total'], 'lists' => $lists['data']];
|
||||
}
|
||||
|
||||
// 获取详情
|
||||
public static function detail($id)
|
||||
{
|
||||
return MallNews::where([
|
||||
'id' => $id,
|
||||
'delete_time' => 0
|
||||
])->alias('mn')->join('mall_news_file mnf', 'mn.id = mnf.mall_news_id')->find()->toArray();
|
||||
}
|
||||
|
||||
// 添加表单信息
|
||||
public static function create($form)
|
||||
{
|
||||
if (empty($form)) {
|
||||
return ['code' => -1, 'msg' => '表单内容为空'];
|
||||
}
|
||||
|
||||
$file = [];
|
||||
unset($form['file']);
|
||||
|
||||
if (!is_numeric($form['sort'])) {
|
||||
return ['code' => -1, 'msg' => '请输入整数'];
|
||||
}
|
||||
|
||||
if ($form['type'] == 0 && isset($form['mall_news_images'])) {
|
||||
// 文章类型
|
||||
$file = $form['mall_news_images'];
|
||||
|
||||
if (count($form['mall_news_images']) > 6) {
|
||||
return ['code' => -1, 'msg' => '上传图片数量超过限制'];
|
||||
}
|
||||
|
||||
unset($form['mall_news_images']);
|
||||
unset($form['video_file']);
|
||||
} else if ($form['type'] == 1 && !empty($form['video_file'])) {
|
||||
// 视频类型
|
||||
$file = $form['video_file'];
|
||||
|
||||
if (!$form['video_file']) {
|
||||
return ['code' => -1, 'msg' => '请上传视频'];
|
||||
}
|
||||
|
||||
unset($form['mall_news_images']);
|
||||
unset($form['video_file']);
|
||||
}
|
||||
|
||||
$form['create_time'] = time();
|
||||
$id = MallNews::insertGetId($form);
|
||||
if (is_array($file)) {
|
||||
foreach ($file as &$v) {
|
||||
MallNewsFile::create([
|
||||
'mall_news_id' => $id,
|
||||
'src' => basename($v)
|
||||
]);
|
||||
}
|
||||
} else {
|
||||
MallNewsFile::create([
|
||||
'mall_news_id' => $id,
|
||||
'src' => basename($file)
|
||||
]);
|
||||
}
|
||||
|
||||
return ['code' => 1, 'msg' => '添加成功'];
|
||||
}
|
||||
|
||||
// 上传视频
|
||||
public static function uploadVideo()
|
||||
{
|
||||
$file = request()->file('file');
|
||||
if ($file->getSize() > self::$MAX_UPLOAD_SIZE * 1024 * 1024) {
|
||||
return ['code' => -1, 'msg' => '视频最大上传为' . self::$MAX_UPLOAD_SIZE . 'Mb'];
|
||||
}
|
||||
|
||||
$StorageDriver = new StorageDriver(self::config());
|
||||
$StorageDriver->setUploadFile('file');
|
||||
if (!$StorageDriver->upload(self::$FILE_PATH)) {
|
||||
if (!$StorageDriver->upload(self::$FILE_VIDEO_PATH)) {
|
||||
return ['code' => -1, 'msg' => '上传错误'];
|
||||
}
|
||||
|
||||
$fileName = $StorageDriver->getFileName();
|
||||
if ($fileName) {
|
||||
return ['code' => 1, 'msg' => '', 'data' => array('file' => Config::get('aliyunoss.domain') . self::$FILE_PATH . '/'. $fileName)];
|
||||
return ['code' => 1, 'msg' => '', 'data' => array('file' => Config::get('aliyunoss.domain') . self::$FILE_VIDEO_PATH . '/'. $fileName)];
|
||||
}
|
||||
|
||||
return ['code' => -1, 'msg' => '上传失败'];
|
||||
}
|
||||
|
||||
// 删除视频
|
||||
public static function delVideo($file)
|
||||
{
|
||||
if (!$file) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$file = self::$FILE_VIDEO_PATH . '/' . basename($file);
|
||||
$StorageDriver = new StorageDriver(self::config());
|
||||
$StorageDriver->delete($file);
|
||||
}
|
||||
}
|
||||
@ -5,10 +5,27 @@
|
||||
.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)
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="layui-card layui-form">
|
||||
<div class="layui-tab-item layui-show">
|
||||
<div class="layui-card-body">
|
||||
<div class="layui-form-item">
|
||||
<label for="title" class="layui-form-label"><span style="color:red;">*</span>标题:</label>
|
||||
<div class="layui-input-inline">
|
||||
@ -18,18 +35,18 @@
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span style="color:red;">*</span>文章类型:</label>
|
||||
<label class="layui-form-label">文章类型:</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="radio" name="type" value="0" title="文章" checked lay-filter="article">
|
||||
<input type="radio" name="type" value="1" title="视频" lay-filter="video">
|
||||
<input type="radio" lay-filter="type" name="type" value="0" title="文章" checked>
|
||||
<input type="radio" lay-filter="type" name="type" value="1" title="视频">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="mall-image" class="layui-form-item">
|
||||
<label class="layui-form-label"><span style="color:red;">*</span>图片:</label>
|
||||
<label class="layui-form-label">图片:</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="like-upload-image" switch-tab="0" lay-verType="tips" lay-verify="logo">
|
||||
<div class="upload-image-elem"><a class="add-upload-image"> + 添加图片</a></div>
|
||||
<div class="like-upload-image">
|
||||
<div class="upload-image-elem"><a class="add-upload-image" id="mallNewImage"> + 添加图片</a></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -37,26 +54,31 @@
|
||||
<div id="mall-video" class="layui-form-item" style="display: none">
|
||||
<label class="layui-form-label"><span style="color:red;">*</span>视频:</label>
|
||||
<div id="upload-video-block" class="layui-input-block">
|
||||
<div class="like-upload-image" switch-tab="0" lay-verType="tips" lay-verify="logo">
|
||||
<div class="like-upload-image">
|
||||
<div class="upload-image-elem"><a class="add-upload-video"> + 上传视频</a></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="video-block" style="display: none">
|
||||
<div class="del-upload-btn" style="visibility: inherit">x</div>
|
||||
<video src="https://zjeloong.oss-cn-hangzhou.aliyuncs.com/mall_news/video/20240720172404a4dc53630.mp4" controls></video>
|
||||
<div class="del-video-btn" style="visibility: inherit">x</div>
|
||||
<video id="mallVideo" controls></video>
|
||||
<input type="hidden" name="video_file" >
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"></label>
|
||||
<span style="color: #a3a3a3;font-size: 9px">视频上传格式为mp4,上传文件大小限制为:{$max_upload_size}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label for="shop_name" class="layui-form-label"><span style="color:red;">*</span>商品名称:</label>
|
||||
<label for="shop_name" class="layui-form-label">商品名称:</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="shop_name" id="shop_name" lay-verType="tips" lay-verify="shop_name"
|
||||
switch-tab="0" autocomplete="off" class="layui-input">
|
||||
<input type="text" name="shop_name" id="shop_name" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span style="color:red;">*</span>是否置顶:</label>
|
||||
<label class="layui-form-label">是否置顶:</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="radio" name="is_top" value="0" title="否" checked>
|
||||
<input type="radio" name="is_top" value="1" title="是">
|
||||
@ -64,15 +86,14 @@
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label for="order" class="layui-form-label"><span style="color:red;">*</span>排序:</label>
|
||||
<label for="sort" class="layui-form-label">排序:</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="order" id="order" lay-verType="tips" lay-verify="title"
|
||||
switch-tab="0" autocomplete="off" class="layui-input">
|
||||
<input type="text" name="sort" id="sort" autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span style="color:red;">*</span>文章详情:</label>
|
||||
<label for="content" class="layui-form-label">文章详情:</label>
|
||||
<div class="layui-input-block">
|
||||
<textarea name="content" id="content" lay-verify="content"></textarea>
|
||||
</div>
|
||||
@ -89,7 +110,7 @@
|
||||
layui.config({
|
||||
base: "/static/lib/"
|
||||
}).extend({
|
||||
likeedit: 'likeedit/likeedit',
|
||||
likeedit: "likeedit/likeedit",
|
||||
likeArea: "likeArea/likeArea",
|
||||
txMap: "likeMap/txMap"
|
||||
}).use(["form", "laydate", "likeArea", "txMap", 'likeedit', 'upload', 'element'], function(){
|
||||
@ -98,17 +119,27 @@
|
||||
var laydate = layui.laydate;
|
||||
var likeedit = layui.likeedit;
|
||||
var likeupload = layui.upload;
|
||||
var element = layui.element;
|
||||
|
||||
form.on('radio(article)', function(data){
|
||||
if(data.value =='0'){
|
||||
$("#mall-image").show()
|
||||
$("#mall-video").hide()
|
||||
//------------------------------------------富文本编辑器 begin --------------------------------
|
||||
var content = likeedit.build("content", {
|
||||
uploadImage: {
|
||||
url: '{:url("file/lists")}?type=10'
|
||||
}
|
||||
});
|
||||
|
||||
form.on('radio(video)', function(data){
|
||||
if(data.value =='1'){
|
||||
form.verify({
|
||||
content: function() {
|
||||
likeedit.sync(content)
|
||||
}
|
||||
});
|
||||
//------------------------------------------富文本编辑器 end --------------------------------
|
||||
|
||||
|
||||
form.on('radio(type)', function(data){
|
||||
if(data.value == 0){
|
||||
$("#mall-image").show()
|
||||
$("#mall-video").hide()
|
||||
} else {
|
||||
$("#mall-image").hide()
|
||||
$("#mall-video").show()
|
||||
}
|
||||
@ -117,10 +148,10 @@
|
||||
laydate.render({type:"datetime", elem:"#expire_time", trigger:"click",min:0});
|
||||
|
||||
like.delUpload();
|
||||
$(document).on("click", ".add-upload-image", function () {
|
||||
$(document).on("click", "#mallNewImage", function () {
|
||||
like.imageUpload({
|
||||
limit: 1,
|
||||
field: "logo",
|
||||
limit: {$max_upload_file},
|
||||
field: "mall_news_images[]",
|
||||
that: $(this)
|
||||
});
|
||||
});
|
||||
@ -130,14 +161,20 @@
|
||||
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;
|
||||
@ -145,94 +182,34 @@
|
||||
layer.closeAll('loading'); //关闭loading
|
||||
}
|
||||
,error: function(index, upload){
|
||||
layer.msg('上传错误');
|
||||
layer.closeAll('loading'); //关闭loading
|
||||
}
|
||||
});
|
||||
|
||||
//------------------------------------------富文本编辑器 begin --------------------------------
|
||||
likeedit.set({
|
||||
uploadImage: {
|
||||
url: '{:url("file/lists")}?type=10',
|
||||
type: 'post'
|
||||
}
|
||||
});
|
||||
// 删除视频
|
||||
$(document).on("click", ".del-video-btn", function (e) {
|
||||
const videoFile = $("#mallVideo").attr('src')
|
||||
like.ajax({
|
||||
url: '{:url("mallNews/delVideo")}',
|
||||
data: {videoFile},
|
||||
type: "post",
|
||||
success: function (res) {}
|
||||
});
|
||||
|
||||
var likeedit_index = likeedit.build('content');
|
||||
form.verify({
|
||||
content: function () {
|
||||
likeedit.sync(likeedit_index)
|
||||
}
|
||||
$("#upload-video-block").show()
|
||||
$("#video-block").hide()
|
||||
$("#mallVideo").attr('src', '')
|
||||
});
|
||||
//------------------------------------------富文本编辑器 end --------------------------------
|
||||
|
||||
|
||||
form.verify({
|
||||
name: function (value, item) {
|
||||
title: function (value, item) {
|
||||
if (!value) {
|
||||
switchTab($(item).attr("switch-tab"));
|
||||
return "请填写商家名称";
|
||||
}
|
||||
},
|
||||
cid: function (value, item) {
|
||||
if (!value) {
|
||||
switchTab($(item).attr("switch-tab"));
|
||||
return "请选择主营类目";
|
||||
}
|
||||
},
|
||||
nickname: function (value, item) {
|
||||
if (!value) {
|
||||
switchTab($(item).attr("switch-tab"));
|
||||
return "请填写联系人";
|
||||
}
|
||||
},
|
||||
mobile: function (value, item) {
|
||||
if (!value) {
|
||||
switchTab($(item).attr("switch-tab"));
|
||||
return "请填写联系手机号";
|
||||
}
|
||||
},
|
||||
logo: function (value, item) {
|
||||
if (!value) {
|
||||
if ($(item).find(".upload-image-div").length <= 0) {
|
||||
switchTab($(item).attr("switch-tab"))
|
||||
return "请上传商家logo";
|
||||
}
|
||||
}
|
||||
},
|
||||
expire_time: function (value, item) {
|
||||
if (!value) {
|
||||
switchTab($(item).attr("switch-tab"));
|
||||
return "请选择到期时间";
|
||||
}
|
||||
},
|
||||
trade_service_fee: function (value, item) {
|
||||
if (!value && parseInt(value) !== 0) {
|
||||
switchTab($(item).attr("switch-tab"));
|
||||
return "请填写交易服务费";
|
||||
}
|
||||
},
|
||||
account: function (value, item) {
|
||||
if (!value) {
|
||||
switchTab($(item).attr("switch-tab"));
|
||||
return "请填写商家账号";
|
||||
}
|
||||
},
|
||||
password: function (value, item) {
|
||||
if (!value) {
|
||||
switchTab($(item).attr("switch-tab"));
|
||||
return "请填写商家登录密码";
|
||||
}
|
||||
},
|
||||
pwd: function (value, item) {
|
||||
if (!value) {
|
||||
switchTab($(item).attr("switch-tab"));
|
||||
return "请填确认商家登录密码";
|
||||
return "请填写标题";
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
function switchTab(number) {
|
||||
$('.layui-tab-card .layui-tab-title li').removeClass('layui-this');
|
||||
$('.layui-tab-content .layui-tab-item').removeClass('layui-show');
|
||||
|
||||
220
app/admin/view/mall_news/audit.html
Normal file
220
app/admin/view/mall_news/audit.html
Normal file
@ -0,0 +1,220 @@
|
||||
{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)
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="layui-card layui-form">
|
||||
<div class="layui-card-body">
|
||||
<div class="layui-form-item">
|
||||
<label for="title" class="layui-form-label"><span style="color:red;">*</span>标题:</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="title" id="title" lay-verType="tips" lay-verify="title"
|
||||
switch-tab="0" autocomplete="off" class="layui-input" value="{$detail.title}">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">文章类型:</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="radio" lay-filter="type" name="type" value="0" title="文章" {if condition = "$detail.type eq 0"} checked {/if}>
|
||||
<input type="radio" lay-filter="type" name="type" value="1" title="视频" {if condition = "$detail.type eq 1"} checked {/if}>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="mall-image" class="layui-form-item">
|
||||
<label class="layui-form-label">图片:</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="like-upload-image">
|
||||
<div class="upload-image-elem"><a class="add-upload-image" id="mallNewImage"> + 添加图片</a></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="mall-video" class="layui-form-item" style="display: none">
|
||||
<label class="layui-form-label"><span style="color:red;">*</span>视频:</label>
|
||||
<div id="upload-video-block" class="layui-input-block">
|
||||
<div class="like-upload-image">
|
||||
<div class="upload-image-elem"><a class="add-upload-video"> + 上传视频</a></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="video-block" style="display: none">
|
||||
<div class="del-video-btn" style="visibility: inherit">x</div>
|
||||
<video id="mallVideo" controls></video>
|
||||
<input type="hidden" name="video_file">
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"></label>
|
||||
<span style="color: #a3a3a3;font-size: 9px">视频上传格式为mp4,上传文件大小限制为:{$max_upload_size}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label for="shop_name" class="layui-form-label">商品名称:</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="shop_name" id="shop_name" autocomplete="off" class="layui-input" value="{$detail.shop_name}">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">是否置顶:</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="radio" name="is_top" value="0" title="否" {if condition = "$detail.is_top eq 0"} checked {/if}>
|
||||
<input type="radio" name="is_top" value="1" title="是" {if condition = "$detail.is_top eq 1"} checked {/if}>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label for="sort" class="layui-form-label">排序:</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="sort" id="sort" autocomplete="off" class="layui-input" value="{$detail.sort}">
|
||||
</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>
|
||||
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 --------------------------------
|
||||
|
||||
|
||||
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) {
|
||||
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', '')
|
||||
});
|
||||
|
||||
form.verify({
|
||||
title: 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>
|
||||
@ -12,8 +12,7 @@
|
||||
<div class="layui-colla-item">
|
||||
<h2 class="layui-colla-title like-layui-colla-title">操作提示</h2>
|
||||
<div class="layui-colla-content layui-show">
|
||||
<p>* 商家提交直播商品后,平台审核后,将交由微信再次进行审核;</p>
|
||||
<p>* 直播商品每天最多可添加500次,删除商品每天最多可删除1000次。</p>
|
||||
<p>* 可通过关键词搜索历史文章;</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -24,26 +23,22 @@
|
||||
<div class="layui-form-item">
|
||||
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">商家名称:</label>
|
||||
<label class="layui-form-label">文章标题:</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="shop_id" id="shop_id">
|
||||
<option value="">全部</option>
|
||||
{foreach $shop as $val}
|
||||
<option value="{$val.id}">{$val.name}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
<input type="text" id="title" name="title" placeholder="请输入文章标题"
|
||||
autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-inline">
|
||||
<label for="goods_name" class="layui-form-label">商品名称:</label>
|
||||
<div class="layui-inline" style="margin-right:0;">
|
||||
<div class="layui-input-inline" >
|
||||
<input type="text" id="goods_name" name="goods_name" placeholder="请输入商品名称"
|
||||
autocomplete="off" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <div class="layui-inline">-->
|
||||
<!-- <label for="goods_name" class="layui-form-label">商品名称:</label>-->
|
||||
<!-- <div class="layui-inline" style="margin-right:0;">-->
|
||||
<!-- <div class="layui-input-inline" >-->
|
||||
<!-- <input type="text" id="goods_name" name="goods_name" placeholder="请输入商品名称"-->
|
||||
<!-- autocomplete="off" class="layui-input">-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
|
||||
<div class="layui-inline">
|
||||
<a class="layui-btn layui-btn-sm layui-btn-normal" lay-submit lay-filter="search">搜索</a>
|
||||
@ -59,44 +54,27 @@
|
||||
<button type="button" id="add-mail-news" class="layui-btn layui-btn-normal layui-btn-sm layEvent">添加</button>
|
||||
<table id="like-table-lists" lay-filter="like-table-lists"></table>
|
||||
<script type="text/html" id="operation">
|
||||
{{# if(d.sys_audit_status < 1 ){ }}
|
||||
<a class="layui-btn layui-btn-normal layui-btn-sm" lay-event="audit">审核</a>
|
||||
{{# } }}
|
||||
<a class="layui-btn layui-btn-primary layui-btn-sm" lay-event="detail">详情</a>
|
||||
{{# if(d.sys_audit_status > 1 ){ }}
|
||||
<a class="layui-btn layui-btn-normal layui-btn-sm" lay-event="audit">编辑</a>
|
||||
<a class="layui-btn layui-btn-danger layui-btn-sm" lay-event="del">删除</a>
|
||||
{{# } }}
|
||||
</script>
|
||||
<!-- 商品信息 -->
|
||||
<script type="text/html" id="table-goods">
|
||||
<div class="goods-content">
|
||||
<div style="text-align: left;">
|
||||
<img src="{{ d.cover_img }}" style="height:80px;width: 80px" class="image-show">
|
||||
<div class="layui-input-inline ">
|
||||
<span class="">{{ d.name }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 文章标题 -->
|
||||
<script type="text/html" id="news-type">
|
||||
<div >
|
||||
{{# if(d.type == 0 ){ }}
|
||||
文章
|
||||
{{# } else { }}
|
||||
视频
|
||||
{{# } }}
|
||||
</div>
|
||||
</script>
|
||||
<!-- 商品价格 -->
|
||||
<script type="text/html" id="table-price">
|
||||
<div class="price-content">
|
||||
<span>{{ d.price_text }}</span>
|
||||
</div>
|
||||
</script>
|
||||
<!-- 审核状态 -->
|
||||
<script type="text/html" id="table-audit">
|
||||
<div class="audit-content">
|
||||
<span>{{ d.audit_status_text }}</span>
|
||||
<span>{{ d.audit_remark }}</span>
|
||||
</div>
|
||||
</script>
|
||||
<!-- 商家状态 -->
|
||||
<script type="text/html" id="table-shop">
|
||||
<img src="{{d.shop.logo}}" alt="图标" style="width:60px;height:60px;margin-right:5px;">
|
||||
<div class="layui-inline" style="text-align:left;">
|
||||
<p>商家名称:{{d.shop.name}}</p>
|
||||
<p>商家类型:{{d.shop.type_desc}}</p>
|
||||
<!-- 是否置顶 -->
|
||||
<script type="text/html" id="news-top">
|
||||
<div >
|
||||
{{# if(d.is_top == 0 ){ }}
|
||||
否
|
||||
{{# } else { }}
|
||||
是
|
||||
{{# } }}
|
||||
</div>
|
||||
</script>
|
||||
</div>
|
||||
@ -124,7 +102,6 @@
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
form.on("submit(clear-search)", function(){
|
||||
$("#goods_name").val("");
|
||||
$("#shop_id").val("");
|
||||
@ -144,23 +121,16 @@
|
||||
});
|
||||
|
||||
function getList() {
|
||||
like.tableLists("#like-table-lists", '{:url("live.LiveGoods/lists")}?status=' + status, [
|
||||
like.tableLists("#like-table-lists", '{:url("mallNews/lists")}', [
|
||||
{field: 'goodsId', width: 80, title: 'ID', sort: true, hide: true}
|
||||
,{field:"storeInfo", title:"商家信息", templet:"#table-shop", width:250}
|
||||
, {field: 'goods_info', title: '商品信息', width: 300, templet:'#table-goods'}
|
||||
, {field: 'price', title: '商品价格', width: 200, align: 'center',templet: '#table-price'}
|
||||
, {field: 'url', title: '商品链接', width: 320, align: 'center'}
|
||||
, {field: 'audit_status', title: '状态', width: 200, align: 'center', templet:'#table-audit'}
|
||||
, {fixed: 'right', title: '操作', width: 150, align: 'center', toolbar: '#operation'}
|
||||
, {field: 'title', title: '标题', width: 300}
|
||||
, {field: 'type', title: '文章类型', width: 200, align: 'center',templet: '#news-type'}
|
||||
, {field: 'shop_name', title: '商品名称', width: 320, align: 'center'}
|
||||
, {field: 'is_top', title: '是否置顶', width: 320, align: 'center', templet: '#news-top'}
|
||||
, {fixed: 'right', title: '操作', width: 400, align: 'center', toolbar: '#operation'}
|
||||
]);
|
||||
}
|
||||
|
||||
//图片放大
|
||||
$(document).on('click', '.image-show', function () {
|
||||
var src = $(this).attr('src');
|
||||
like.showImg(src, 400);
|
||||
});
|
||||
|
||||
//添加快讯
|
||||
$(document).on('click', '#add-mail-news', function () {
|
||||
layer.open({
|
||||
@ -168,15 +138,15 @@
|
||||
, title: '添加快讯'
|
||||
, content: '{:url("MallNews/add")}'
|
||||
, area: ['90%', '90%']
|
||||
,btn: ['确定', '取消']
|
||||
, yes: function (index, layero) {
|
||||
var iframeWindow = window['layui-layer-iframe' + index]
|
||||
, submitID = 'addSubmit'
|
||||
, submit = layero.find('iframe').contents().find('#' + submitID);
|
||||
iframeWindow.layui.form.on('submit(' + submitID + ')', function (data) {
|
||||
var field = data.field;
|
||||
console.log(field);
|
||||
like.ajax({
|
||||
url: '{:url("live.LiveGoods/audit")}',
|
||||
url: '{:url("mallNews/add")}',
|
||||
data: field,
|
||||
type: "post",
|
||||
success: function (res) {
|
||||
@ -195,14 +165,12 @@
|
||||
|
||||
//事件
|
||||
var active = {
|
||||
add: function() {
|
||||
console.log(123)
|
||||
},
|
||||
audit: function (obj) {
|
||||
console.log(obj)
|
||||
layer.open({
|
||||
type: 2
|
||||
, title: '审核'
|
||||
, content: '{:url("live.LiveGoods/audit")}?id=' + obj.data.id
|
||||
, title: '编辑'
|
||||
, content: '{:url("mallNews/audit")}?id=' + obj.data.id
|
||||
, area: ['90%', '90%']
|
||||
, yes: function (index, layero) {
|
||||
var iframeWindow = window['layui-layer-iframe' + index]
|
||||
|
||||
10
app/common/model/MallNews.php
Normal file
10
app/common/model/MallNews.php
Normal file
@ -0,0 +1,10 @@
|
||||
<?php
|
||||
|
||||
namespace app\common\model;
|
||||
|
||||
use app\common\basics\Models;
|
||||
|
||||
class MallNews extends Models
|
||||
{
|
||||
protected $table = 'ls_mall_news';
|
||||
}
|
||||
10
app/common/model/MallNewsFile.php
Normal file
10
app/common/model/MallNewsFile.php
Normal file
@ -0,0 +1,10 @@
|
||||
<?php
|
||||
|
||||
namespace app\common\model;
|
||||
|
||||
use app\common\basics\Models;
|
||||
|
||||
class MallNewsFile extends Models
|
||||
{
|
||||
protected $table = 'ls_mall_news_file';
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user