dggzichahu/application/admin/view/file_new/lists.html

361 lines
11 KiB
HTML
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{layout name="layout2" /}
<style>
html,
body {
width: 100%;
height: 100%;
}
.container {
display: flex;
width: 100%;
height: 100%;
}
.left {
width: 15%;
height: 100%;
}
.left button {
width: 90px;
height: 30px;
font-size: 12px;
margin-top: 5px;
margin-left: 34px;
}
.right {
width: 85%;
height: 100%;
}
.nav {
width: 100%;
height: 10%;
box-sizing: border-box;
padding: 5px;
}
.main {
width: 100%;
height: 80%;
}
.footer {
position: relative;
width: 100%;
height: 10%;
}
.footer button {
position: absolute;
right: 5px;
bottom: 5px;
}
.file-video-li {
width: 130px;
height: 130px;
float: left;
box-sizing: border-box;
margin-right: 10px;
margin-top: 10px;
text-align: center;
}
.file-video-li video {
width: 100%;
height: 100%;
}
.li-click {
border: 2px solid #1E9FFF;
}
#page {
margin-top: 20px;
clear: both;
}
/* 清除浮动让父元素也具居高度 */
#file-container::after {
content: "";
display: block;
clear: both;
}
</style>
<div class="container">
<div class="left">
<button class="layui-btn layui-btn-sm layui-btn-primary" id="all">全部</button>
<div id="menu"></div>
</div>
<div class="right">
<div class="nav layui-btn-group">
<button class="layui-btn layui-btn-sm layui-btn" id="addCate">添加分类</button>
<button class="layui-btn layui-btn-sm layui-btn-normal" id="upload">{$title}</button>
<button class="layui-btn layui-btn-sm layui-btn-danger" id="delSelected">删除选中</button>
</div>
<div class="main">
<div id="file-container">
<script id="file-list" type="text/html">
<ul>
{{# layui.each(d, function(index, item){ }}
<li class="file-video-li" id="{{item.id}}" data-uri="{{item.uri}}">
<video src="{{item.uri}}"></video>
<span>{{item.name}}</span>
</li>
{{# }); }}
</ul>
{{# if(d.length === 0){ }}
<div class="empty">
<p>没有数据请去上传</p>
</div>
{{# } }}
</script>
<div id="lists-view"></div>
</div>
<div id="page"></div>
</div>
<div class="footer">
<button class="layui-btn layui-btn-sm layui-btn-normal" id="useSelected">使用选中项</button>
</div>
</div>
</div>
<script>
layui.use(['tree', 'jquery', 'table', 'upload', 'laypage'], function() {
var $ = layui.jquery;
var tree = layui.tree;
var table = layui.table;
var upload = layui.upload;
var laypage = layui.laypage;
var laytpl = layui.laytpl;
var menu = '{$menu|raw}';
var cate_id = 0;
var page_no = 1;
var page_size = 10;
// 渲染树形分类
tree.render({
id: 'menu',
elem: '#menu',
data: JSON.parse(menu),
edit: true,
text: {
defaultNodeName: '',
none: ''
},
operate: function(obj) {
var type = obj.type; // 操作类型 edit/del
var data = obj.data;
if(type === 'update') { // 编辑
editCate(data);
}else if(type === 'del') {
delCate(data);
}
},
click: function(obj) {
cate_id = obj.data.id;
uploadIns.reload({
data : {
cate_id: cate_id
}
});
getList(cate_id, page_no, page_size);
},
onlyIconControl: true
});
// 编辑分类名称
function editCate(data) {
layer.open({
type: 2,
title: '编辑分类',
content: '{:url("file_new/editCate")}?type={$type}&id='+data.id,
area: ['90%', '90%']
});
}
// 删除分类
function delCate(data) {
$.ajax({
type: 'POST',
url: '{:url("file_new/delCate")}',
data: data,
dataType: 'json',
error: function() {
layer.msg('请求出错');
location.reload();
},
success: function(res) {
if(res.code == 1) {
layer.msg(res.msg);
}else{
layer.msg(res.msg);
}
location.reload();
}
});
}
// 添加分类
$('#addCate').click(function() {
layer.open({
type: 2,
title: '添加分类',
content: '{:url("file_new/addCate")}?type={$type}',
area: ['90%', '90%']
});
});
$('#all').click(function() {
cate_id = 0;
getList(cate_id,page_no,page_size);
});
switch('{$type}') {
case 'video':
var accept = 'video';
break;
}
// 上传
var uploadIns = upload.render({
elem: '#upload' //绑定元素
,url: '{:url("file_new/videoNew")}' //上传接口
,data: {
cate_id: cate_id
}
,accept: accept
,done: function(res){
if(res.code == 1) {
layer.msg(res.msg);
location.reload();
}
}
,error: function(){
//请求异常回调
}
});
getList(cate_id, page_no, page_size);
// 获取列表
function getList(cate_id, page_no, page_size)
{
$.ajax({
type: 'get',
url: '{:url("file_new/pageLists")}?page_no='+page_no+'&page_size='+page_size+'&type={$type}&cate_id='+cate_id,
dataType: 'json',
error: function() {
layer.msg('请求出错');
},
success: function(res) {
if(res.code == 1) {
// 重新渲染列表
renderList(res.data.lists);
// 分页组件
laypage.render({
elem: 'page' //注意,这里的 page 是 ID不用加 # 号
,count: res.data.count //数据总数,从服务端得到
,curr: res.data.page_no
,limit: res.data.page_size
,limits: [10, 20, 30, 40, 50]
,layout: ['count', 'prev', 'page', 'next','limit']
,jump: function(obj, first) {
//首次不执行
if(!first){
getList(cate_id, obj.curr, obj.limit);
}
}
});
}
}
});
}
// 重新渲染列表
function renderList(data) {
var getTpl = document.getElementById("file-list").innerHTML;
var listsView = document.getElementById('lists-view');
laytpl(getTpl).render(data, function(html){
listsView.innerHTML = html;
});
// 点击添加样式
$('.file-video-li').click(function() {
var pos = $(this).attr('class').indexOf('li-click');
if(pos > 0) {
$(this).removeClass('li-click');
}else{
$(this).addClass('li-click');
}
});
// 双击播放视频
$('.file-video-li').dblclick(function() {
var video = $(this).find('video');
var uri = video.attr('src');
layer.open({
type: 2,
title: '查看视频',
content: '{:url("file_new/showVideo")}?uri='+uri,
area: ['90%', '90%']
});
});
}
// 删除所选
$('#delSelected').click(function() {
var selected = $('.li-click');
if(selected.length == 0) {
layer.msg('请先选择要删除的文件');
return false;
}
layer.confirm('确定删除所选文件吗?', {icon: 3, title:'提示'}, function(index){
// 提取id
var ids = [];
for(let item of selected) {
ids.push($(item).attr('id'));
}
$.ajax({
type: 'POST',
url: '{:url("file_new/delFile")}',
data: {
ids: ids
},
dataType: 'json',
error: function() {
layer.msg('请求出错');
location.reload();
},
success: function(res) {
if(res.code == 1) {
layer.msg(res.msg);
}else{
layer.msg(res.msg);
}
location.reload();
}
});
layer.close(index);
});
});
// 使用选中
$('#useSelected').click(function() {
var selected = $('.li-click');
if(selected.length == 0) {
layer.msg('请先选择文件');
return false;
}
if(selected.length != 1) {
layer.msg('只能选择一个视频');
return false;
}
// 提取uri
var uris = [];
for(let item of selected) {
uris.push($(item).attr('data-uri'));
}
//当你在iframe页面关闭自身时
var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
parent.layer.close(index); //再执行关闭
// 调用父窗口方法
parent.window.videoCallback(uris);
});
});
</script>