Commit 9a5afa21 authored by wangtao's avatar wangtao

增加课程列表,上传接口

parent 69a75c6f
...@@ -48,11 +48,10 @@ class Article extends AdminBase ...@@ -48,11 +48,10 @@ class Article extends AdminBase
if (isset($post['cate_id']) && !empty($post['cate_id'])) { if (isset($post['cate_id']) && !empty($post['cate_id'])) {
$map[] = ['cate_id', '=', $post['cate_id']]; $map[] = ['cate_id', '=', $post['cate_id']];
} }
$list = $this->article->where($map)->append(['cate_name', 'adminname'])->paginate($post['limit']); $list = $this->article->where($map)->append(['cate_name', 'adminname', 'thumbpath'])->paginate($post['limit']);
return $this->returnMsg($list); return $this->returnMsg($list);
} }
$category = ArticleCategoryModel::field('*,pid as parentid')->order('sort desc')->select()->toArray(); $category = ArticleCategoryModel::field('*,pid as parentid')->where('is_del', 0)->order('sort desc')->select()->toArray();
$this->assign('category', json_encode($category)); $this->assign('category', json_encode($category));
$this->assign('limit', $limit); $this->assign('limit', $limit);
return $this->fetch('', '', false); return $this->fetch('', '', false);
...@@ -79,7 +78,7 @@ class Article extends AdminBase ...@@ -79,7 +78,7 @@ class Article extends AdminBase
} }
try { try {
$post['admin_id'] = session(VT_MANAGER)['userid']; $post['admin_id'] = $this->manUser['userid'];
$post['createtime'] = time(); $post['createtime'] = time();
$post['updatetime'] = time(); $post['updatetime'] = time();
if ($post['id'] > 0) { if ($post['id'] > 0) {
...@@ -94,11 +93,9 @@ class Article extends AdminBase ...@@ -94,11 +93,9 @@ class Article extends AdminBase
return $this->returnMsg($e->getMessage(), 0); return $this->returnMsg($e->getMessage(), 0);
} }
return $this->returnMsg($msg, 1); return $this->returnMsg($msg, 1);
} }
$data = $this->article->find($post['id']); $data = $this->article->find($post['id']);
$catemodel = new ArticleCategoryModel(); $catemodel = new ArticleCategoryModel();
$categorydata = $catemodel->catetree(isset($data['cate_id']) ? $data['cate_id'] : 0); $categorydata = $catemodel->catetree(isset($data['cate_id']) ? $data['cate_id'] : 0);
......
...@@ -15,6 +15,7 @@ use app\model\ArticleCategoryModel; ...@@ -15,6 +15,7 @@ use app\model\ArticleCategoryModel;
use think\App; use think\App;
use think\facade\Db; use think\facade\Db;
use think\facade\Validate; use think\facade\Validate;
use think\facade\Env;
/** /**
* 后台主控制器 * 后台主控制器
...@@ -34,6 +35,7 @@ class ArticleCategory extends AdminBase ...@@ -34,6 +35,7 @@ class ArticleCategory extends AdminBase
public function index(string $do = '') public function index(string $do = '')
{ {
if ($do == 'json') { if ($do == 'json') {
$list = $this->articlecategory->list(); $list = $this->articlecategory->list();
return $this->returnMsg('', 0, $list); return $this->returnMsg('', 0, $list);
...@@ -55,8 +57,6 @@ class ArticleCategory extends AdminBase ...@@ -55,8 +57,6 @@ class ArticleCategory extends AdminBase
$post = input(); $post = input();
if ($this->request->isPost()) { if ($this->request->isPost()) {
$validate = Validate::rule([ $validate = Validate::rule([
'title' => 'require' 'title' => 'require'
])->message([ ])->message([
......
...@@ -40,9 +40,9 @@ class Index extends AdminBase ...@@ -40,9 +40,9 @@ class Index extends AdminBase
*/ */
public function main() public function main()
{ {
if($this->request->isPost()){
if($this->request->isPost()){
return $this->returnMsg('登录成功!',1); return $this->returnMsg('登录成功!',1);
} }
...@@ -51,7 +51,7 @@ class Index extends AdminBase ...@@ -51,7 +51,7 @@ class Index extends AdminBase
$data['name'] = 'headimgwt'; $data['name'] = 'headimgwt';
$this->assign('data',$data); $this->assign('data',$data);
$data2['type'] = 'imagewt'; $data2['type'] = 'imageswt';
$data2['name'] = 'headimgwt2'; $data2['name'] = 'headimgwt2';
$data2['value'] = ''; $data2['value'] = '';
$this->assign('data2',$data2); $this->assign('data2',$data2);
......
<?php
/**
* ===========================================================================
* Veitool 快捷开发框架系统
* Author: Niaho 26843818@qq.com
* Copyright (c)2019-2025 www.veitool.com All rights reserved.
* Licensed: 这不是一个自由软件,不允许对程序代码以任何形式任何目的的再发行
* ---------------------------------------------------------------------------
*/
namespace app\admin\controller\course;
use app\admin\controller\AdminBase;
use app\model\CourseCategory as CourseCate;
use think\App;
use think\facade\Db;
use think\facade\Validate;
use think\facade\Env;
/**
* 后台主控制器
*/
class CourseCategory extends AdminBase
{
protected $coursecategory;
public function __construct(App $app)
{
parent::__construct($app);
$this->coursecategory = new CourseCate();
}
//分类列表
public function index(string $do = '')
{
if ($do == 'json') {
$list = $this->coursecategory->where('is_del', 0)->append(['thumbpath'])->select()->toArray();
return $this->returnMsg($list);
}
return $this->fetch('', '', false);
}
//快速编辑
public function editup()
{
$post = input();
$this->coursecategory->update([$post['af'] => $post['av']], [['id', '=', $post['id']]]);
return $this->returnMsg('修改成功');
}
//编辑新增分类
public function edit()
{
$post = input();
if ($this->request->isPost()) {
$validate = Validate::rule([
'title' => 'require'
])->message([
'title.require' => '分类名称不能为空',
]);
if(!$validate->check($post)) {
return $this->returnMsg($validate->getError(), 0);
}
try {
if ($post['id'] > 0) {
$msg = '更新成功';
$this->coursecategory->update($post, ['id' => $post['id']]);
} else {
unset($post['id']);
$post['createtime'] = time();
$msg = '添加成功';
$this->coursecategory->save($post);
}
} catch (\Exception $e) {
return $this->returnMsg($e->getMessage(), 0);
}
return $this->returnMsg($msg, 1);
}
$data = Db::name('course_category')->where('id',$post['id'])->find();
$categorydata = $this->coursecategory->catetree(isset($data['pid']) ? $data['pid'] : 0);
$this->assign('categorydata', $categorydata);
$this->assign('data', $data);
return $this->fetch('', '', false);
}
public function del()
{
$post = input();
$ids = is_array($post['id']) ? implode(',', $post['id']) : $post['id'];
if ($this->coursecategory->where("id IN(" . $ids . ")")->update(['is_del' => 1])) {
return $this->returnMsg("删除成功", 1);
} else {
return $this->returnMsg("删除失败");
}
}
}
\ No newline at end of file
<?php
/**
* ===========================================================================
* Veitool 快捷开发框架系统
* Author: Niaho 26843818@qq.com
* Copyright (c)2019-2025 www.veitool.com All rights reserved.
* Licensed: 这不是一个自由软件,不允许对程序代码以任何形式任何目的的再发行
* ---------------------------------------------------------------------------
*/
namespace app\admin\controller\course;
use app\admin\controller\AdminBase;
use app\model\ShCourse AS ShCourseModel;
use think\App;
use think\facade\Db;
use app\model\CourseCategory as CourseCategoryModel;
/**
* 后台主控制器
*/
class course extends AdminBase
{
protected $course;
public function __construct(App $app)
{
parent::__construct($app);
$this->course = new ShCourseModel();
}
// 课程列表
public function index(string $do = '')
{
$limit = 10;
if ($do == 'json') {
$post = input();
$post['limit'] = isset($post['limit']) ? $post['limit'] : $limit;
$map[] = ['is_del', '=', 0];
$map[] = ['status', '>', 0];
if (isset($post['kw']) && !empty($post['kw'])) {
$map[] = ['title', 'like', '%' . $post['kw'] . '%'];
}
if (isset($post['cate_id']) && !empty($post['cate_id'])) {
$map[] = ['cate_id', '=', $post['cate_id']];
}
$list = $this->course->where($map)->append(['thumbpath','cate_name','teacher_name','status_text','tag_title','user_info'])->order('createtime desc')->paginate($post['limit']);
return $this->returnMsg($list);
}
$category = CourseCategoryModel::field('*,pid as parentid')->where('is_del', 0)->order('sort desc')->select()->toArray();
$this->assign('category', json_encode($category));
$this->assign('limit', $limit);
return $this->fetch('', '', false);
}
//快速编辑
public function editup()
{
$post = input();
$this->course->update([$post['af'] => $post['av']], [['id', '=', $post['id']]]);
return $this->returnMsg('修改成功');
}
public function del()
{
$post = input();
$ids = is_array($post['id']) ? implode(',', $post['id']) : $post['id'];
if ($this->course->where("id IN(" . $ids . ")")->update(['is_del' => 1])) {
return $this->returnMsg("删除成功", 1);
} else {
return $this->returnMsg("删除失败");
}
}
}
\ No newline at end of file
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
namespace app\admin\controller\system; namespace app\admin\controller\system;
use app\admin\controller\AdminBase; use app\admin\controller\AdminBase;
use app\BaseController;
use app\model\system\SystemUploadFile as UploadFile; use app\model\system\SystemUploadFile as UploadFile;
use app\model\system\SystemUploadGroup as UploadGroup; use app\model\system\SystemUploadGroup as UploadGroup;
use veitool\storage\Driver as StorageDriver; use veitool\storage\Driver as StorageDriver;
...@@ -17,14 +18,14 @@ use veitool\storage\Driver as StorageDriver; ...@@ -17,14 +18,14 @@ use veitool\storage\Driver as StorageDriver;
/** /**
* 上传管理 * 上传管理
*/ */
class Upload extends AdminBase class Upload extends BaseController
{ {
/** /**
* 配置信息 * 配置信息
* @var array * @var array
*/ */
private $config; private $config;
protected $manUser;
/** /**
* 初始化配置信息 * 初始化配置信息
* @var array * @var array
...@@ -63,6 +64,7 @@ class Upload extends AdminBase ...@@ -63,6 +64,7 @@ class Upload extends AdminBase
*/ */
private function init() private function init()
{ {
$this->manUser = session(VT_MANAGER);
$this->CF = array_merge($this->CF, vconfig()); $this->CF = array_merge($this->CF, vconfig());
$this->config = array( $this->config = array(
'default'=>$this->CF['upload_engine'], 'default'=>$this->CF['upload_engine'],
...@@ -108,6 +110,7 @@ class Upload extends AdminBase ...@@ -108,6 +110,7 @@ class Upload extends AdminBase
*/ */
public function upfile(string $file = 'file', int $groupid = 0, string $action = '', string $thum = '') public function upfile(string $file = 'file', int $groupid = 0, string $action = '', string $thum = '')
{ {
$action = $action ? $action : input('action');
if(!$action) return $this->returnMsg('参数错误'); if(!$action) return $this->returnMsg('参数错误');
$this->init(); $this->init();
$engine = $this->config['default']; $engine = $this->config['default'];
...@@ -137,7 +140,7 @@ class Upload extends AdminBase ...@@ -137,7 +140,7 @@ class Upload extends AdminBase
$data['groupid'] = intval($groupid)>=0 ? intval($groupid) : 0; $data['groupid'] = intval($groupid)>=0 ? intval($groupid) : 0;
$data['fileext'] = $fileInfo['ext']; $data['fileext'] = $fileInfo['ext'];
$data['addtime'] = time(); $data['addtime'] = time();
$data['username'] = $this->manUser['username']; $data['username'] = isset($this->manUser['username']) ? $this->manUser['username'] : 'webapi';
$data['fileid'] = UploadFile::insertGetId($data); $data['fileid'] = UploadFile::insertGetId($data);
//压缩容量 //压缩容量
if($data['filesize']>300 && $engine == 'local'){ if($data['filesize']>300 && $engine == 'local'){
...@@ -164,6 +167,7 @@ class Upload extends AdminBase ...@@ -164,6 +167,7 @@ class Upload extends AdminBase
*/ */
public function ueditor(string $file = 'file', int $groupid = 0, string $action = '') public function ueditor(string $file = 'file', int $groupid = 0, string $action = '')
{ {
$action = $action ? $action : input('action');
if(!$action) return $this->returnMsg('参数错误'); if(!$action) return $this->returnMsg('参数错误');
if($action == 'config'){ //百度编辑器获取配置 if($action == 'config'){ //百度编辑器获取配置
$this->CF = array_merge($this->CF, vconfig()); $this->CF = array_merge($this->CF, vconfig());
...@@ -293,7 +297,7 @@ class Upload extends AdminBase ...@@ -293,7 +297,7 @@ class Upload extends AdminBase
$data['groupid'] = intval($groupid)>=0 ? intval($groupid) : 0; $data['groupid'] = intval($groupid)>=0 ? intval($groupid) : 0;
$data['fileext'] = $fileInfo['ext']; $data['fileext'] = $fileInfo['ext'];
$data['addtime'] = time(); $data['addtime'] = time();
$data['username'] = $this->manUser['username']; $data['username'] =isset($this->manUser['username']) ? $this->manUser['username'] : 'webapi';
$data['fileid'] = UploadFile::insertGetId($data); $data['fileid'] = UploadFile::insertGetId($data);
//百度编辑器返回数据 //百度编辑器返回数据
$UE['original'] = ''; $UE['original'] = '';
......
<?php <?php
namespace app\admin\validate; namespace app\admin\validate;
use think\Validate; use think\Validate;
use app\model;
use app\api\validate\BaseValidate; use app\api\validate\BaseValidate;
class ArticleValidate extends BaseValidate class ArticleValidate extends BaseValidate
{ {
protected $rule = [ protected $rule = [
'title' => 'require', 'title' => 'require',
'cate_id' => 'require', 'cate_id' => 'require|checkarticle',
'thumb'=>'require', 'thumb' => 'require',
]; ];
protected $message = [ protected $message = [
'title.require' => '文章标题不能为空', 'title.require' => '文章标题不能为空',
'cate_id.require' => '请选择分类', 'cate_id.require' => '请选择分类',
'thumb.require' => '请上传图片', 'cate_id.checkarticle' => '此分类是单页只能添加一篇文章',
'thumb.require' => '请上传图片',
]; ];
function checkarticle($value,$rule,$data)
{
$type = (new model\ArticleCategoryModel())::where('id', $value)->value('type');
if ($type == 'page' && empty($data['id'])) {
$count = (new model\ArticleModel())->where('cate_id',$value)->where('is_del',0)->count();
if ($count > 0) {
return false;
}
}
return true;
}
} }
\ No newline at end of file
...@@ -61,7 +61,8 @@ ...@@ -61,7 +61,8 @@
var str = [{ var str = [{
"name": "thumb", "name": "thumb",
"title": "上传图片", "title": "上传图片",
"value": "{$data.thumb|default=''}", "value": "{$data.thumb|default=''|get_upload_file}",
"pathid": "{$data.thumb|default=''}",
"type": "imagewt" "type": "imagewt"
}]; }];
layui.buildItems.build({ layui.buildItems.build({
......
...@@ -84,10 +84,11 @@ ...@@ -84,10 +84,11 @@
organObj = obj.data; organObj = obj.data;
$('#article-groupid').val(obj.data.id); $('#article-groupid').val(obj.data.id);
table.reloadData('article',{where:{cate_id:obj.data.id},page:{curr:1}}); table.reloadData('article',{where:{cate_id:obj.data.id},page:{curr:1}});
} }
}); });
var item = $('#articlecategoryTree .layui-tree-entry:first'); // var item = $('#articlecategoryTree .layui-tree-entry:first');
load ? item.find('.layui-tree-main>.layui-tree-txt').trigger('click') : item.addClass('organ-tree-click'); // load ? item.find('.layui-tree-main>.layui-tree-txt').trigger('click') : item.addClass('organ-tree-click');
} }
/*初始渲染*/ /*初始渲染*/
...@@ -98,11 +99,12 @@ ...@@ -98,11 +99,12 @@
elem: '#article', elem: '#article',
page: true, page: true,
limit:{$limit}, limit:{$limit},
height: 'full-341',
url: app_root+"index?&do=json", url: app_root+"index?&do=json",
cols: [[ cols: [[
{type:'checkbox',fixed:'left'}, {type:'checkbox',fixed:'left'},
{field:'id',width:50,unresize:true,align:'center',title:'ID',sort:!0}, {field:'id',width:50,unresize:true,align:'center',title:'ID',sort:!0},
{field:'thumb',width:80,height:80,align:'center',title:'缩略图',templet:'<div class="files_itemw"><img src="{{d.thumb}}" lay-event="article-event-image" /></div>'}, {field:'thumb',width:80,height:80,align:'center',title:'缩略图',templet:'<div class="files_itemw"><img src="{{d.thumbpath}}" lay-event="article-event-image" /></div>'},
{field:'title',align:'center',title:'标题',edit:'text'}, {field:'title',align:'center',title:'标题',edit:'text'},
{field:'cate_name',width:120,align:'center',title:'类别'}, {field:'cate_name',width:120,align:'center',title:'类别'},
{field:'createtime',width:120,align:'center',title:'发布时间'}, {field:'createtime',width:120,align:'center',title:'发布时间'},
...@@ -155,12 +157,10 @@ ...@@ -155,12 +157,10 @@
});/**/ });/**/
$('#article-add').on('click',function(){articleOpen();});/**/ $('#article-add').on('click',function(){articleOpen();});/**/
/*弹出窗*/ /*弹出窗*/
function articleOpen(id=''){ function articleOpen(id='',type=''){
var title = "添加文章";
if(id > 0){ if(id > 0){
var title = '编辑文章'; title = '编辑文章';
}else{
var title = '添加文章';
} }
layer.open({ layer.open({
type: 2, type: 2,
...@@ -168,7 +168,7 @@ ...@@ -168,7 +168,7 @@
title: title, title: title,
btn: ['确定', '关闭'], btn: ['确定', '关闭'],
fixed: false, //不固定 fixed: false, //不固定
content: '/admin/article/edit?id='+id, content: '/admin/article/edit?id='+id+'&type='+type,
yes: function(index, layero){ yes: function(index, layero){
var data = window["layui-layer-iframe" + index].callbackdata(); var data = window["layui-layer-iframe" + index].callbackdata();
$.ajax({ $.ajax({
......
...@@ -55,7 +55,8 @@ ...@@ -55,7 +55,8 @@
var str = [{ var str = [{
"name": "thumb", "name": "thumb",
"title": "上传图片", "title": "上传图片",
"value": "{$data.thumb|default=''}", "value": "{$data.thumb|default=''|get_upload_file}",
"pathid": "{$data.thumb|default=''}",
"type": "imagewt" "type": "imagewt"
}]; }];
layui.buildItems.build({ layui.buildItems.build({
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
<div class="layui-card"> <div class="layui-card">
<div class="layui-card-header"> <div class="layui-card-header">
<form class="layui-form render"> <form class="layui-form render">
<input type="hidden" name="groupid" id="articlecategory-groupid" value=""/>
<div class="layui-form-item"> <div class="layui-form-item">
<div class="layui-inline"> <div class="layui-inline">
<div class="layui-btn-group"> <div class="layui-btn-group">
...@@ -45,7 +45,7 @@ ...@@ -45,7 +45,7 @@
cols: [[ cols: [[
{field:'id',width:50,unresize:true,align:'center',title:'ID'}, {field:'id',width:50,unresize:true,align:'center',title:'ID'},
{field:'thumb',width:80,height:80,align:'center',title:'缩略图',templet:'<div class="files_itemw"><img src="{{d.thumb}}" lay-event="article-event-image" /></div>'}, {field:'thumb',width:80,height:80,align:'center',title:'缩略图',templet:'<div class="files_itemw"><img src="{{d.thumbpath}}" lay-event="article-event-image" /></div>'},
{field:'title',align:'left',title:'分类',}, {field:'title',align:'left',title:'分类',},
{field:'typetxt',width:100,align:'center',title:'类型'}, {field:'typetxt',width:100,align:'center',title:'类型'},
{field:'sort',width:100,align:'center',title:'排序',edit:'text'}, {field:'sort',width:100,align:'center',title:'排序',edit:'text'},
......
<div class="layui-fluid">
<style>
#coursecategoryTreeBar{padding:10px 15px;border:1px solid #e6e6e6;background-color:#f2f2f2}
#coursecategoryTree{border:1px solid #e6e6e6;border-top:none;padding:10px 5px;overflow:auto;height:-webkit-calc(100vh - 260px);height:-moz-calc(100vh - 260px);height:calc(100vh - 260px)}
.layui-tree-entry .layui-tree-txt{padding:0 5px;border:1px transparent solid;text-decoration:none!important}
.layui-tree-entry.organ-tree-click .layui-tree-txt{background-color:#fff3e0;border:1px #ffe6b0 solid}
.files_itemw{width:30px;height:30px;line-height:30px;cursor:pointer;padding:1px;background:#fff;display:-webkit-box;-moz-box-align:center;-webkit-box-align:center;-moz-box-pack:center;-webkit-box-pack:center;}
.files_itemw img{max-width:28px;max-height:28px;border:0}
</style>
<div class="layui-row layui-col-space15">
<div class="layui-col-md2">
<div class="layui-card">
<div class="layui-card-body" style="padding:10px;">
<!-- 树工具栏 -->
<!-- 左树 -->
<div id="coursecategoryTree"></div>
</div>
</div>
</div>
<div class="layui-col-md10">
<div class="layui-card">
<div class="layui-card-header">
<form class="layui-form render">
<input type="hidden" name="groupid" id="course-groupid" value=""/>
<div class="layui-form-item">
<div class="layui-inline" style="width:250px;"><input type="text" name="kw" placeholder="课程关键词" autocomplete="off" class="layui-input" lay-affix="clear"/></div>
<div class="layui-inline">
<div class="layui-btn-group">
<button class="layui-btn" lay-submit lay-filter="search-course"><i class="layui-icon layui-icon-search"></i> 搜索</button>
<a class="layui-btn" lay-submit lay-filter="search-course-all" onclick="$('#course-groupid').val('')"><i class="layui-icon layui-icon-light"></i>全部</a>
<a class="layui-btn" id="course-del"><i class="layui-icon layui-icon-delete"></i> 删除</a>
</div>
</div>
</div>
</form>
</div>
<div class="layui-card-body">
<!-- <div class="layui-card-box">-->
<!-- <div class="layui-btn-group">-->
<!-- <a class="layui-btn" id="course-add" ><i class="layui-icon layui-icon-add-circle"></i> 添加</a>-->
<!-- <a class="layui-btn" id="course-del"><i class="layui-icon layui-icon-delete"></i> 删除</a>-->
<!-- </div>-->
<!-- </div>-->
<div class="layui-card-body">
<table lay-filter="course" id="course"></table>
</div>
</div>
</div>
</div>
</div>
</div>
<script type="text/html" id="toolDemo">
<div class="layui-clear-space">
<a class="layui-btn layui-btn-xs" lay-event="edit">详情</a>
<a class="layui-btn layui-btn-xs" lay-event="edit1">审核</a>
<a class="layui-btn layui-btn-xs" lay-event="more">
更多
<i class="layui-icon layui-icon-down"></i>
</a>
</div>
</script>
<!--JS部分-->
<script>
layui.use(['vinfo', 'buildItems','dropdown'], function(){
var map_root = layui.cache.maps;
var app_root = map_root + 'course.course/';
var layer = layui.layer,table=layui.table,form=layui.form,admin=layui.admin;
var dropdown = layui.dropdown;
organData = admin.util.toTree({$category|raw});
doTree(organData,'');
function doTree(data,load){
layui.tree.render({
id: 'organTree',
elem: '#coursecategoryTree',
data: data,
onlyIconControl: true,
click: function(obj){
$('#coursecategoryTree').find('.organ-tree-click').removeClass('organ-tree-click');
$(obj.elem).children('.layui-tree-entry').addClass('organ-tree-click');
organObj = obj.data;
$('#course-groupid').val(obj.data.id);
table.reloadData('course',{where:{cate_id:obj.data.id},page:{curr:1}});
}
});
// var item = $('#coursecategoryTree .layui-tree-entry:first');
// load ? item.find('.layui-tree-main>.layui-tree-txt').trigger('click') : item.addClass('organ-tree-click');
}
/*初始渲染*/
/*==============左树结构END==============*/
/*渲染数据*/
table.render({
elem: '#course',
page: true,
limit:{$limit},
height: 'full-341',
url: app_root+"index?&do=json",
cols: [[
{type:'checkbox',fixed:'left'},
{field:'id',width:50,unresize:true,align:'center',title:'ID',sort:!0},
{field:'thumb',width:80,height:80,align:'center',title:'课程图片',templet:'<div class="files_itemw"><img src="{{d.thumbpath}}" lay-event="course-event-image" /></div>'},
{field:'title',width:300,align:'center',title:'课程名称'},
{field:'title',width:150,align:'center',title:'发布者',templet:'<div>{{d.user_info.username}}</div>'},
{field:'cate_name',width:120,align:'center',title:'类别'},
{field:'createtime',width:120,align:'center',title:'发布时间'},
{field:"status_text",width:80,align:'center',title:"上架状态"},
{field:"status_text",width:80,align:'center',title:"状态"},
{field:"teacher_name",width:100,align:'center',title:"讲师"},
{field:'tag_title',width:100,align:'center',title:'标签'},
{fixed:'right',width:150,align:'center', templet: '#toolDemo',title:'操作'}
]],
done: function(){ admin.vShow($('[lay-table-id="course"]'));
}
});
/*快编监听*/
table.on('edit(course)',function(obj){
admin.req(app_root+"editup",{id:obj.data.id,av:obj.value,af:obj.field},function(res){
layer.msg(res.msg,{shade:[0.4,'#000'],time:500});
},'post',{headersToken:true});
});/**/
/*工具条监听*/
table.on('tool(course)', function(obj){
var data = obj.data;
var id = data.id;
if(obj.event === 'edit'){
courseOpen(data.id);
}else if(obj.event === 'del'){
del(id);
}else if(obj.event === 'course-event-image'){
var src = $(this).attr('src'), alt = $(this).attr('alt');
layer.photos({photos:{data:[{alt:alt,src:src}],start:'0'},anim:5,shade:[0.4,'#000']});
}else if(obj.event === 'more'){
// 更多 - 下拉菜单
dropdown.render({
elem: this, // 触发事件的 DOM 对象
show: true, // 外部事件触发即显示
data: [{
title: '查看课时',
id: 'keshi'
},{
title: '查看章节',
id: 'zhangjie'
},{
title: '查看作业',
id: 'zuoye'
},{
title: '删除',
id: 'del'
}],
click: function(menudata){
if(menudata.id === 'detail'){
layer.msg('查看操作,当前行 ID:'+ data.id);
} else if(menudata.id === 'del'){
del(id);
}
},
id: 'dropdown-table-tool',
align: 'right', // 右对齐弹出
style: 'box-shadow: 1px 1px 10px rgb(0 0 0 / 12%);' // 设置额外样式
});
}
});/**/
/*删除*/
function del(ids){
layer.confirm('确定要删除所选课程吗?', function(){
admin.req(app_root+"del",{id:ids},function(res){
layer.msg(res.msg,{shade:[0.4,'#000'],time:1500},function(){
if(res.code==1) table.reloadData('course');
});
},'post',{headersToken:true});
});
}/**/
/*顶部删除按钮*/
$('#course-del').on('click', function(){
var checkRows = table.checkStatus('course').data;
if(checkRows.length === 0){return layer.msg('请选择需删除的文章');}
var ids = checkRows.map(function(d){return d.id;});
console.log(ids);
del(ids);
});/**/
$('#course-add').on('click',function(){courseOpen();});/**/
/*弹出窗*/
function courseOpen(id='',type=''){
var title = "添加文章";
if(id > 0){
title = '编辑文章';
}
layer.open({
type: 2,
area: ['900px', '900px'],
title: title,
btn: ['确定', '关闭'],
fixed: false, //不固定
content: '/admin/course/edit?id='+id+'&type='+type,
yes: function(index, layero){
var data = window["layui-layer-iframe" + index].callbackdata();
$.ajax({
method: "post",
url: layui.cache.maps+'/course/edit',
data: data,
dataType: "json",
success: function (res){
if(res.code===1) {
layer.msg(res.msg,{icon:1,shade:[0.4,'#000'],time:1500},function (){
layer.close(index);
table.reloadData('course');
});
}else{
layer.msg(res.msg,{icon:2,shade:[0.4,'#000'],time:1500},function (){
});
}
// layer.closeAll();
}
});
},
});
}/**/
});
</script>
\ No newline at end of file
{extend name="base/header" /}
{block name="body"}
<div style="margin: 0px 10px">
<form class="layui-form " style="margin-top: 20px;" id="fjfrom">
<div class="layui-form-item">
<label class="layui-form-label"> 上级分类 </label>
<div class="layui-input-block">
<select name="pid">
<option value="">请选择分类</option>
{:$categorydata}
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">分类名称</label>
<div class="layui-input-block">
<input type="text" name="title" placeholder="请输入分类名称" autocomplete="off" class="layui-input" value="{$data.title|default=''}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">分类图片</label>
<div class="layui-input-block" id="thumbup">
</div>
</div>
<input type="hidden" name="id" value="{$data.id|default=0}">
</form>
</div>
{/block}
{block name="script"}
<script type="text/javascript">
layui.use(['buildItems', 'form', 'laydate', 'util'], function () {
var form = layui.form;
/*解析顶部分组选项*/
var str = [{
"name": "thumb",
"title": "上传图片",
"value": "{$data.thumb|default=''|get_upload_file}",
"pathid": "{$data.thumb|default=''}",
"type": "imagewt"
}];
layui.buildItems.build({
fjbid:'fjfrom',
bid: 'thumbup',
url: '',
map: layui.cache.maps + 'system.upload/',
gid: 1,
data: str
});
layui.buildItems.init();
form.render();
});
var callbackdata = function () {
var data = $(".layui-form").serialize();
return data;
};
</script>
{/block}
\ No newline at end of file
<div class="layui-fluid">
<style>
.files_itemw1{width:30px;height:30px;line-height:30px;cursor:pointer;padding:1px;background:#fff;display:-webkit-box;-moz-box-align:center;-webkit-box-align:center;-moz-box-pack:center;-webkit-box-pack:center;}
.files_itemw1 img{max-width:28px;max-height:28px;border:0}
</style>
<div class="layui-card">
<div class="layui-card-header">
<form class="layui-form render">
<div class="layui-form-item">
<div class="layui-inline">
<div class="layui-btn-group">
<a class="layui-btn" id="coursecategory-sz" data="1"><i class="layui-icon">&#xe624;</i>展开</a>
<a class="layui-btn" id="coursecategory-add" ><i class="layui-icon layui-icon-add-circle"></i> 添加</a>
</div>
</div>
</div>
</form>
</div>
<div class="layui-card-body">
<div class="layui-card-body">
<table lay-filter="coursecategory" id="coursecategory"></table>
</div>
</div>
</div>
</div>
<!--JS部分-->
<script>
layui.use(['trTable','vinfo', 'buildItems'], function(){
var map_root = layui.cache.maps;
var app_root = map_root + 'course.course_category/';
var layer = layui.layer,table=layui.table,form=layui.form,admin=layui.admin,treeTable = layui.trTable;
/*渲染数据*/
var coursecateTb = treeTable.render({
elem: '#coursecategory',
checkdd: false,
url: app_root+"index?&do=json",
tree: {
iconIndex: 1,
isPidData: true,
idName: 'id',
pidName: 'pid',
arrowType: 'arrow2',
getIcon: 'v-tree-icon-style2'
},
cols: [[
{field:'id',width:50,align:'center',title:'ID'},
{field:'title',align:'left',title:'分类',edit:'text'},
{field:'thumb',width:50,align:'center',title:'缩略图',templet:'<div><div class="files_itemw1"><img src="{{d.thumbpath}}" lay-event="article-event-image" /></div></div>'},
{field:'sort',width:50,align:'center',title:'排序',edit:'text'},
{fixed:'right',width:130,align:'center',toolbar:'<div><a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a><a class="layui-btn layui-btn-xs layui-btn-danger" lay-event="del">删除</a></div>',title:'操作'}
]],
done: function(){ admin.vShow($('[lay-table-id="coursecategory"]')); }
});
/*展开或折叠*/
$('#coursecategory-sz').click(function(){
var ob = $(this),i,t;
if(ob.attr('data')==1){
coursecateTb.expandAll();
i=0;t='<i class="layui-icon">&#xe67e;</i>折叠';
}else{
coursecateTb.foldAll();
i=1;t='<i class="layui-icon">&#xe624;</i>展开';
}
ob.attr('data',i).html(t);
});/**/
/*快编监听*/
treeTable.on('edit(coursecategory)',function(obj){
admin.req(app_root+"editup",{id:obj.data.id,av:obj.value,af:obj.field},function(res){
layer.msg(res.msg,{shade:[0.4,'#000'],time:500});
},'post',{headersToken:true});
});/**/
/*工具条监听*/
treeTable.on('tool(coursecategory)', function(obj){
var data = obj.data;
var id = data.id;
if(obj.event === 'edit'){
coursecategoryOpen(data.id);
}else if(obj.event === 'del'){
del(id);
}else if(obj.event === 'article-event-image'){
var src = $(this).attr('src'), alt = $(this).attr('alt');
layer.photos({photos:{data:[{alt:alt,src:src}],start:'0'},anim:5,shade:[0.4,'#000']});
}
});/**/
/*删除*/
function del(ids){
layer.confirm('确定要删除所选吗?', function(){
admin.req(app_root+"del",{id:ids},function(res){
layer.msg(res.msg,{shade:[0.4,'#000'],time:1500},function(){
if(res.code==1) coursecateTb.refresh();
});
},'post',{headersToken:true});
});
}/**/
$('#coursecategory-add').on('click',function(){coursecategoryOpen();});/**/
/*弹出窗*/
function coursecategoryOpen(id=''){
if(id > 0){
var title = '编辑分类';
}else{
var title = '添加分类';
}
layer.open({
type: 2,
area: ['900px', '900px'],
title: title,
btn: ['确定', '关闭'],
fixed: false, //不固定
content: app_root+'edit?id='+id,
yes: function(index, layero){
var data = window["layui-layer-iframe" + index].callbackdata();
$.ajax({
method: "post",
url: app_root+'/edit',
data: data,
dataType: "json",
success: function (res){
if(res.code===1) {
layer.msg(res.msg,{icon:1,shade:[0.4,'#000'],time:1500},function (){
layer.close(index);
coursecateTb.refresh();
});
}else{
layer.msg(res.msg,{icon:2,shade:[0.4,'#000'],time:1500},function (){
});
}
// layer.closeAll();
}
});
},
});
}/**/
});
</script>
\ No newline at end of file
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
<title>11{:vconfig('sys_title','后台管理')} - {:vconfig('site_title','Veitool快捷开发框架系统')}</title> <title>{:vconfig('sys_title','后台管理')} - {:vconfig('site_title','重庆市凡骄网络科技有限公司')}</title>
<meta charset="utf-8"/> <meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
...@@ -42,7 +42,7 @@ ...@@ -42,7 +42,7 @@
<!-- 主体部分 --> <!-- 主体部分 -->
<div class="layui-body"></div> <div class="layui-body"></div>
<!-- 底部 --> <!-- 底部 -->
<div class="layui-footer layui-text">copyright © 20251 <a href="https://www.veitool.com" target="_blank">veitool.com</a> all rights reserved.<span class="pull-right">Version {:VT_VERSION}</span></div> <div class="layui-footer layui-text">技术支持:重庆市凡骄网络科技有限公司<span class="pull-right">Version {:VT_VERSION}</span></div>
</div> </div>
<!-- 加载动画 --> <!-- 加载动画 -->
<div class="page-loading"><div class="v-loader"><div></div></div></div> <div class="page-loading"><div class="v-loader"><div></div></div></div>
......
...@@ -102,6 +102,7 @@ ...@@ -102,6 +102,7 @@
"name": "{$data.name}", "name": "{$data.name}",
"title": "上传图片", "title": "上传图片",
"value": "/static/file/upload/image/20250422/68073d795d609.png", "value": "/static/file/upload/image/20250422/68073d795d609.png",
"pathid":11,
"type": "{$data.type}" "type": "{$data.type}"
}]; }];
layui.buildItems.build({ layui.buildItems.build({
...@@ -125,7 +126,7 @@ ...@@ -125,7 +126,7 @@
gid: 1, gid: 1,
data:str data:str
}); });
layui.buildItems.init();
// //
// var str = [{ // var str = [{
// "name": "{$data3.name}", // "name": "{$data3.name}",
...@@ -142,20 +143,21 @@ ...@@ -142,20 +143,21 @@
// }); // });
// //
// //
// var str = [{ var str = [{
// "name": "{$data4.name}", "name": "{$data4.name}",
// "title": "文件上传", "title": "文件上传",
// "value": "{$data4.value}", "value": "{$data4.value}",
// "type": "{$data4.type}" "type": "{$data4.type}"
// }]; }];
// layui.buildItems.build({ layui.buildItems.build({
// bid: 'imgboxheadimg4', bid: 'imgboxheadimg4',
// url: '', fjbid:'fjfrom',
// map: layui.cache.maps + 'system.upload/', url: '',
// gid: 1, map: layui.cache.maps + 'system.upload/',
// data:str gid: 1,
// }); data:str
});
layui.buildItems.init();
form=layui.form; form=layui.form;
form.render(); form.render();
// 指定开关事件 // 指定开关事件
......
<!doctype html> <!doctype html>
<html> <html>
<head> <head>
<title>管理员登录 - {:vconfig('site_title','VEITOOL快捷开发框架')}</title> <title>管理员登录 - {:vconfig('site_title','重庆市凡骄网络科技有限公司')}</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no"/> <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no"/>
<link rel="shortcut icon" href="{PUBLIC__PATH}/favicon.ico"/> <link rel="shortcut icon" href="{PUBLIC__PATH}/favicon.ico"/>
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
*/ */
// 版本信息 // 版本信息
define('VT_VERSION', '2.2.4'); define('VT_VERSION', '2.2.10');
// 后台管理员 session 标识 // 后台管理员 session 标识
define('VT_MANAGER', 'V_MANAGER'); define('VT_MANAGER', 'V_MANAGER');
// 前台会员 session 标识 // 前台会员 session 标识
...@@ -31,6 +31,13 @@ define('ADDON_PATH', ROOT_PATH . 'addons' . VT_DS); ...@@ -31,6 +31,13 @@ define('ADDON_PATH', ROOT_PATH . 'addons' . VT_DS);
// 临时目录 // 临时目录
define('RUNTIME_PATH', ROOT_PATH . 'runtime' . VT_DS); define('RUNTIME_PATH', ROOT_PATH . 'runtime' . VT_DS);
//获取图片地址
function get_upload_file($fileid='')
{
return \think\facade\Db::name('system_upload_file')->where('fileid',$fileid)->value('fileurl');
}
/** /**
* md5判断 * md5判断
* @param string $w 字符 * @param string $w 字符
......
...@@ -38,7 +38,7 @@ class ArticleCategoryModel extends Model ...@@ -38,7 +38,7 @@ class ArticleCategoryModel extends Model
public function list(){ public function list(){
$map[] = ['is_del', '=', 0]; $map[] = ['is_del', '=', 0];
$category = $this->order('sort desc')->where($map)->select()->append(['typetxt'])->toArray(); $category = $this->order('sort desc')->where($map)->select()->append(['typetxt','thumbpath'])->toArray();
$tree = new Tree(); $tree = new Tree();
$tree->icon = ['&nbsp;&nbsp;│ ', '&nbsp;&nbsp;├─ ', '&nbsp;&nbsp;└─ ']; $tree->icon = ['&nbsp;&nbsp;│ ', '&nbsp;&nbsp;├─ ', '&nbsp;&nbsp;└─ '];
$tree->nbsp = '&nbsp;&nbsp;'; $tree->nbsp = '&nbsp;&nbsp;';
...@@ -52,4 +52,8 @@ class ArticleCategoryModel extends Model ...@@ -52,4 +52,8 @@ class ArticleCategoryModel extends Model
return $data['type'] == 'page' ? '单页' : '文章'; return $data['type'] == 'page' ? '单页' : '文章';
} }
public function getThumbpathAttr($value, $data)
{
return get_upload_file($data['thumb']);
}
} }
\ No newline at end of file
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
* Licensed: 这不是一个自由软件,不允许对程序代码以任何形式任何目的的再发行 * Licensed: 这不是一个自由软件,不允许对程序代码以任何形式任何目的的再发行
* --------------------------------------------------------------------------- * ---------------------------------------------------------------------------
*/ */
namespace app\model; namespace app\model;
use think\facade\Db; use think\facade\Db;
...@@ -20,19 +21,29 @@ class ArticleModel extends Model ...@@ -20,19 +21,29 @@ class ArticleModel extends Model
protected $name = 'article'; protected $name = 'article';
public function getCateNameAttr($value,$data){
return Db::name('article_category')->where('id',$data['cate_id'])->value('title'); public function getCateNameAttr($value, $data)
{
return Db::name('article_category')->where('id', $data['cate_id'])->value('title');
} }
public function getCreatetimeAttr($value,$data){
return date('Y-m-d H:i:s',$data['createtime']); public function getCreatetimeAttr($value, $data)
{
return date('Y-m-d H:i:s', $data['createtime']);
} }
//获取发布者 //获取发布者
public function getAdminnameAttr($value,$data){ public function getAdminnameAttr($value, $data)
{
return Db::name('system_manager')->where('userid', $data['admin_id'])->value('username');
}
return Db::name('system_manager')->where('userid',$data['admin_id'])->value('username'); public function getThumbpathAttr($value, $data)
{
return get_upload_file($data['thumb']);
} }
} }
\ No newline at end of file
<?php
/**
* ===========================================================================
* Veitool 快捷开发框架系统
* Author: Niaho 26843818@qq.com
* Copyright (c)2019-2025 www.veitool.com All rights reserved.
* Licensed: 这不是一个自由软件,不允许对程序代码以任何形式任何目的的再发行
* ---------------------------------------------------------------------------
*/
namespace app\model;
use think\facade\Db;
use think\Model;
/**
* 模型公用类
*/
class Course extends Model
{
}
\ No newline at end of file
<?php
/**
* ===========================================================================
* Veitool 快捷开发框架系统
* Author: Niaho 26843818@qq.com
* Copyright (c)2019-2025 www.veitool.com All rights reserved.
* Licensed: 这不是一个自由软件,不允许对程序代码以任何形式任何目的的再发行
* ---------------------------------------------------------------------------
*/
namespace app\model;
use think\facade\Db;
use think\Model;
use tool\Tree;
/**
* 模型公用类
*/
class CourseCategory extends Model
{
public function catetree($cate_id = 0)
{
$map[] = ['is_del', '=', 0];
$category = $this->where($map)->order('sort desc')->select()->toArray();
$tree = new Tree();
$tree->icon = ['&nbsp;&nbsp;│ ', '&nbsp;&nbsp;├─ ', '&nbsp;&nbsp;└─ '];
$tree->nbsp = '&nbsp;&nbsp;';
$str = "<option value=@id @selected @disabled>@spacer @title</option>";
$tree->init($category);
$categorydata = $tree->getTree(0, $str, $cate_id);
return $categorydata;
}
public function getThumbpathAttr($value, $data)
{
return get_upload_file($data['thumb']);
}
}
\ No newline at end of file
<?php
/**
* ===========================================================================
* Veitool 快捷开发框架系统
* Author: Niaho 26843818@qq.com
* Copyright (c)2019-2025 www.veitool.com All rights reserved.
* Licensed: 这不是一个自由软件,不允许对程序代码以任何形式任何目的的再发行
* ---------------------------------------------------------------------------
*/
namespace app\model;
use think\facade\Db;
use think\Model;
/**
* 模型公用类
*/
class CourseTag extends Model
{
}
\ No newline at end of file
<?php
/**
* ===========================================================================
* Veitool 快捷开发框架系统
* Author: Niaho 26843818@qq.com
* Copyright (c)2019-2025 www.veitool.com All rights reserved.
* Licensed: 这不是一个自由软件,不允许对程序代码以任何形式任何目的的再发行
* ---------------------------------------------------------------------------
*/
namespace app\model;
use think\facade\Db;
use think\Model;
/**
* 模型公用类
*/
class CourseTeacher extends Model
{
}
\ No newline at end of file
<?php
/**
* ===========================================================================
* Veitool 快捷开发框架系统
* Author: Niaho 26843818@qq.com
* Copyright (c)2019-2025 www.veitool.com All rights reserved.
* Licensed: 这不是一个自由软件,不允许对程序代码以任何形式任何目的的再发行
* ---------------------------------------------------------------------------
*/
namespace app\model;
use app\model\project\User;
use think\facade\Db;
use think\Model;
/**
* 模型公用类
*/
class ShCourse extends Model
{
public function getCreatetimeAttr($value)
{
return date('Y-m-d H:i:s',$value);
}
public function getThumbpathAttr($value, $data)
{
return get_upload_file($data['thumb']);
}
public function getCateNameAttr($value, $data)
{
return CourseCategory::where('id', $data['cate_id'])->value('title');
}
public function getDetailthumbpathAttr($value, $data)
{
return get_upload_file($data['detailthumb']);
}
public function getTeacherNameAttr($value, $data)
{
return CourseTeacher::where('id', $data['teacher_id'])->value('nickname');
}
public function getTagTitleAttr($value, $data)
{
return implode(',',CourseTag::where('id', $data['tag_ids'])->column('title'));
}
public function getStatusTextAttr($value, $data)
{
switch ($data['status']) {
case 1:
$statustxt = '待审核';
break;
case 2:
$statustxt = '审核失败';
break;
case 3:
$statustxt = '审核成功';
break;
default:
$statustxt = '待提交';
}
return $statustxt;
}
public function getUserInfoAttr($value, $data)
{
return User::where('id', $data['user_id'])->field('id,username,mobile')->find();
}
}
\ No newline at end of file
...@@ -97,7 +97,7 @@ layui.define(['tagsInput','fileLibrary','cascader'], function(e){ ...@@ -97,7 +97,7 @@ layui.define(['tagsInput','fileLibrary','cascader'], function(e){
//上传单图 //上传单图
c.imagewt = '<div id="image-show-{{ d.name }}" data-type="image" data-verify="{{ d.verify || \'\' }}" data-reqtext="{{ d.reqtext || \'\' }}">{{# if (d.value) { }}' + c.imagewt = '<div id="image-show-{{ d.name }}" data-type="image" data-verify="{{ d.verify || \'\' }}" data-reqtext="{{ d.reqtext || \'\' }}">{{# if (d.value) { }}' +
'<div class="image_item"><img src="{{ d.value }}"/><input type="hidden" name="{{ d.name }}" value="{{ d.value }}"/>'+ '<div class="image_item"><img src="{{ d.value }}"/><input type="hidden" name="{{ d.name }}" value="{{ d.pathid }}"/>'+
'<i class="layui-icon layui-icon-edit item-edit"></i><i class="layui-icon layui-icon-close item-delete"></i></div>{{# }else{ }}<input type="hidden" name="{{ d.name }}" lay-verify="{{ d.verify || \'\' }}" lay-reqtext="{{ d.reqtext || \'\' }}"/>{{# } }}</div>'+ '<i class="layui-icon layui-icon-edit item-edit"></i><i class="layui-icon layui-icon-close item-delete"></i></div>{{# }else{ }}<input type="hidden" name="{{ d.name }}" lay-verify="{{ d.verify || \'\' }}" lay-reqtext="{{ d.reqtext || \'\' }}"/>{{# } }}</div>'+
'<div class="image_item layui-upload-drag" style="background:#efefef;" id="up-image-btn-{{ d.name }}" data-type="image" data-name="{{ d.name }}" data-thum="{{ d.thum || 0 }}"><i class="layui-icon">&#xe67c;</i><br/>上传图片</div>'+ '<div class="image_item layui-upload-drag" style="background:#efefef;" id="up-image-btn-{{ d.name }}" data-type="image" data-name="{{ d.name }}" data-thum="{{ d.thum || 0 }}"><i class="layui-icon">&#xe67c;</i><br/>上传图片</div>'+
'</div>'; '</div>';
...@@ -307,6 +307,7 @@ layui.define(['tagsInput','fileLibrary','cascader'], function(e){ ...@@ -307,6 +307,7 @@ layui.define(['tagsInput','fileLibrary','cascader'], function(e){
}); });
}, },
regUpFile: function(){ regUpFile: function(){
$hw.find("[id^='upfile-btn-']").each(function(){ $hw.find("[id^='upfile-btn-']").each(function(){
var id = '#'+ $(this).attr('id'),type = $(this).data('type') || 'file'; var id = '#'+ $(this).attr('id'),type = $(this).data('type') || 'file';
var name = id.split('-')[2]; var name = id.split('-')[2];
...@@ -429,7 +430,7 @@ layui.define(['tagsInput','fileLibrary','cascader'], function(e){ ...@@ -429,7 +430,7 @@ layui.define(['tagsInput','fileLibrary','cascader'], function(e){
regUpload: function(){ regUpload: function(){
$hw.find("[id^='up-image-btn-']").on('click', function(){ $hw.find("[id^='up-image-btn-']").on('click', function(){
console.log($hw);
var $this = $(this); var $this = $(this);
var type = $this.data('type'); var type = $this.data('type');
var name = $this.data('name'); var name = $this.data('name');
...@@ -438,16 +439,18 @@ layui.define(['tagsInput','fileLibrary','cascader'], function(e){ ...@@ -438,16 +439,18 @@ layui.define(['tagsInput','fileLibrary','cascader'], function(e){
if(res.length == 0) return; if(res.length == 0) return;
var $pbox = $hw.find("#image-show-" + name); var $pbox = $hw.find("#image-show-" + name);
// var $pbox = $(this).find("#image-show-" + name); // var $pbox = $(this).find("#image-show-" + name);
console.log(res[0]);
if(type=='image'){ if(type=='image'){
$pbox.html('<div class="image_item"><img src="'+ res[0].file_path +'" /><input type="hidden" name="'+ name +'" value="'+ res[0].file_path +'"><i class="layui-icon layui-icon-edit item-edit"></i><i class="layui-icon layui-icon-close item-delete"></i></div>'); // $pbox.html('<div class="image_item"><img src="'+ res[0].file_path +'" /><input type="hidden" name="'+ name +'" value="'+ res[0].file_path +'"><i class="layui-icon layui-icon-edit item-edit"></i><i class="layui-icon layui-icon-close item-delete"></i></div>');
$pbox.html('<div class="image_item"><img src="'+ res[0].file_path +'" /><input type="hidden" name="'+ name +'" value="'+ res[0].file_id +'"><i class="layui-icon layui-icon-edit item-edit"></i><i class="layui-icon layui-icon-close item-delete"></i></div>');
// $htmls = '<div class="image_item"><img src="'+ res[0].file_path +'" /><input type="hidden" name="'+ name +'" value="'+ res[0].file_path +'"><i class="layui-icon layui-icon-edit item-edit"></i><i class="layui-icon layui-icon-close item-delete"></i></div>' // $htmls = '<div class="image_item"><img src="'+ res[0].file_path +'" /><input type="hidden" name="'+ name +'" value="'+ res[0].file_path +'"><i class="layui-icon layui-icon-edit item-edit"></i><i class="layui-icon layui-icon-close item-delete"></i></div>'
// $("#image-show-" + name).html($htmls); // $("#image-show-" + name).html($htmls);
}else{ }else{
if($pbox.children('input').length>0) $pbox.html(''); if($pbox.children('input').length>0) $pbox.html('');
for(var i in res){ for(var i in res){
var v = res[i]; var v = res[i];
$pbox.append('<div class="image_item"><img src="'+ v.file_path +'" /><input type="hidden" name="'+ name +'[]" value="'+ v.file_path +'"><i class="layui-icon layui-icon-edit item-edit"></i><i class="layui-icon layui-icon-close item-delete"></i></div>'); $pbox.append('<div class="image_item"><img src="'+ v.file_path +'" /><input type="hidden" name="'+ name +'[]" value="'+ v.file_id +'"><i class="layui-icon layui-icon-edit item-edit"></i><i class="layui-icon layui-icon-close item-delete"></i></div>');
} }
......
...@@ -20,10 +20,10 @@ ...@@ -20,10 +20,10 @@
<div class="more-theme-item" data-theme="theme-pink"><img src="/static/admin/img/theme-pink.png"/></div> <div class="more-theme-item" data-theme="theme-pink"><img src="/static/admin/img/theme-pink.png"/></div>
</div> </div>
<!-- 导航 --> <!-- 导航 -->
<div class="more-menu-list"> <!--<div class="more-menu-list">-->
<a class="more-menu-item" href="https://www.veitool.com/" target="_blank"><i class="layui-icon layui-icon-auz" style="font-size:18px;"></i> Veitool官方</a>
<a class="more-menu-item" href="https://layui.dev/" target="_blank"><i class="layui-icon layui-icon-read" style="font-size:18px;"></i> Layui文档</a> <!-- <a class="more-menu-item" href="https://layui.dev/" target="_blank"><i class="layui-icon layui-icon-read" style="font-size:18px;"></i> Layui文档</a>-->
</div> <!--</div>-->
<!-- 控制开关 --> <!-- 控制开关 -->
<div class="layui-form" style="margin:25px 0;" lay-filter="more-set-form"> <div class="layui-form" style="margin:25px 0;" lay-filter="more-set-form">
<div class="layui-form-item"> <div class="layui-form-item">
...@@ -67,7 +67,7 @@ layui.use(function(){ ...@@ -67,7 +67,7 @@ layui.use(function(){
admin.putTempData('indexTabs', undefined); admin.putTempData('indexTabs', undefined);
location.reload(); location.reload();
}); });
$('#setMoreTab').prop('checked', layui.cache.bins.pageTabs); $('#setMoreTab').prop('checked', layui.cache.bins.pageTabs);
form.render('radio', 'more-set-form'); form.render('radio', 'more-set-form');
form.render('checkbox', 'more-set-form'); form.render('checkbox', 'more-set-form');
}); });
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment