123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562 |
- {extend name="public/layout" /} {block name="title"}视频添加{/block} {block name="head"} {include file="public/head"}
- <style>
- #douyin {
- display: none;
- }
- video {
- width: 144px;
- height: 253px;
- margin: 30px 0px;
- }
- html {
- background: #fff;
- }
- @media screen and (max-width: 450px) {
- .layui-form-item {
- position: relative;
- }
- .layui-form-item .layui-input-inline {
- padding-right: 40px !important;
- }
- .adding {
- position: absolute;
- right: 10px;
- top: 0;
- }
- }
- .layui-btn-primary {
- color: #249EFB;
- border: 1px solid #249EFB;
- }
- .layui-btn-primary:hover {
- background-color: #E3F7FF;
- color: #249EFB;
- }
- .layui-border-btn,
- .layui-border-btn:hover {
- border: 1px solid #249EFB;
- background-color: #fff;
- color: #249EFB;
- }
- .colorRed {
- color: red;
- }
- #upload-drag{height: 150px;width:250px;}
- .layui-upload-drag {
- width: 128px;
- height: 90px;
- }
- .imageDiv{position: absolute;top:0;left:0;width:100%;height: 100%;background: rgba(230,230,230,.5);display: none;}
- .imageDiv i{display: block;width:18px;height: 18px;position: absolute;top:0;left:0;bottom:0;right: 0;margin:auto;}
-
- </style>
- {/block} {block name="body"}
- <body>
- <form class="layui-form" lay-filter="layuiadmin-app-form-list" id="layuiadmin-app-form-list"
- style="padding: 20px 30px 0 0;">
- <div class="layui-form-item">
- <label class="layui-form-label"><span class="colorRed">*</span>标题</label>
- <div class="layui-input-inline" style="width:70%;">
- <input type="text" name="title" lay-verify="required" placeholder="请输入标题" autocomplete="off"
- class="layui-input">
- </div>
- </div>
- <div class="layui-form-item">
- <label class="layui-form-label"><span class="colorRed">*</span>分类</label>
- <div class="layui-input-inline">
- <select name="type" lay-filter="type" id="type" lay-verify="required" lay-search>
- <option value="">请选择分类</option>
- {volist name="type" id="t"}
- <option value="{$t.id}">{$t.name}</option>
- {/volist}
- </select>
- </div>
- <i class="layui-icon layui-icon-add-circle adding" style="font-size: 32px" id="addType"></i>
- </div>
- <div class="layui-form-item">
- <label class="layui-form-label">标签</label>
- <div class="layui-input-inline">
- <select name="label" id="label" lay-filter="type2">
- <option value="">请选择标签</option>
- </select>
- </div>
- <i class="layui-icon layui-icon-add-circle adding" style="font-size: 32px" id="addLabel"></i>
- </div>
- <div class="layui-form-item layui-hide">
- <label class="layui-form-label"><span class="colorRed">*</span>视频</label>
- <div class="layui-input-inline" style="width: 290px;">
- <!-- <input type="radio" name="myradio" value="local_name" /> 上传文件名字保持本地文件名字-->
- <input type="radio" name="myradio" value="random_name" checked=true /> 上传文件名字是随机文件名, 后缀保留
- </div>
- </div>
- <div class="layui-form-item">
- <label class="layui-form-label">视频封面图</label>
- <div class="layui-input-inline isimgupload" style="position: relative;">
- <div class="" id="upload-drag">
- <div class="layui-upload-drag">
- <i class="layui-icon"></i>
- <p>上传图片</p>
- </div>
- </div>
- <div class="imageDiv"><i class="layui-icon layui-icon-delete" prop="del"></i></div>
- </div>
- </div>
- <div class="layui-form-item">
- <label class="layui-form-label">分享封面</label>
- <div class="layui-input-inline isimgupload" style="position: relative;">
- <div class="" id="upload-share-drag">
- <div class="layui-upload-drag">
- <i class="layui-icon"></i>
- <p>上传图片</p>
- </div>
- </div>
- <div class="imageDiv"><i class="layui-icon layui-icon-delete" prop="del"></i></div>
- </div>
- </div>
- <div class="layui-form-item">
- <label class="layui-form-label"></label>
- <div><i style="color: red;margin-right:5px;">*</i>上传分享封面图宽高比例5:4,图片大小不超过1M</div>
- </div>
- <div class="layui-form-item">
- <label class="layui-form-label"><span class="colorRed">*</span>视频</label>
- <div class="layui-input-inline" style="width: 290px;display: block;" id="container">
- <a class="layui-btn btn layui-border-btn" id="selectfiles" href="javascript:void(0);">选择视频</a>
- <a class="layui-btn btn layui-border-btn" id="postfiles" href="javascript:void(0);">开始上传</a>
- <div id="ossfile"></div>
- <div id="symbshowed"></div>
- <!--报错信息返回展示-->
- <pre id="console"></pre>
- <input type="hidden" value="" id="fileuri">
- <!--上传到OSS哪个文件下,在这里定义-->
- <input type="hidden" value="Video" id="category_name">
- </div>
- </div>
- <div class="layui-form-item videolimit">
- <label class="layui-form-label"></label>
- <div><i style="color:red;margin-right:5px;">*</i><span id="limitVA">上传视频大小不超过280M</span></div>
- </div>
- <div class="layui-form-item">
- <label class="layui-form-label"><i style="color:red;">*</i> 视频格式:</label>
- <div class="layui-input-block lh45 mdl20" style="max-width: 300px !important;">
- <input type="radio" id="1" class="radio_input" lay-filter="video_type"
- name="video_type" value="0" title="全屏" checked>
- <input type="radio" id="2" class="radio_input" lay-filter="video_type"
- name="video_type" value="1" title="横屏">
- </div>
- </div>
- <div class="layui-form-item">
- <label class="layui-form-label"><span class="colorRed">*</span>视频描述</label>
- <div class="layui-input-block" style="width: 70%;">
- <textarea name="description" style="width: 100%; height: 100px;" autocomplete="off" class="layui-textarea"></textarea>
- <div class="layui-form-mid layui-word-aux" id="dy">
- <a href="javascript:;" style="color: red;text-decoration-line: underline;">点击抓取抖音视频</a>
- </div>
- </div>
- </div>
- <div class="layui-form-item" id="douyin">
- <label class="layui-form-label">抖音地址</label>
- <div class="layui-input-inline">
- <input type="text" id="douyinurl" placeholder="请粘贴抖音分享地址" autocomplete="off" class="layui-input">
- </div>
- <div class="layui-input-inline">
- <a class="layui-btn layui-btn-primary" id="catch">抓取</a>
- </div>
- </div>
- <div class="layui-form-item">
- <label class="layui-form-label">继续添加</label>
- <div class="layui-input-block">
- <input type="checkbox" name="adding" title="" lay-skin="primary" {if condition="$adding eq 1"
- }checked{/if}>
- </div>
- </div>
- <div class="layui-form-item ">
- <label class="layui-form-label"></label>
- <input type="button" class="layui-btn btn layui-btn-primary" lay-submit
- lay-filter="layuiadmin-app-form-submit" id="layuiadmin-app-form-submit" value="确认添加">
- </div>
- <div class="layui-form-item">
- <!-- <input type="button" lay-submit lay-filter="layuiadmin-app-form-submit" id="layuiadmin-app-form-submit" value="确认添加"> -->
- <!-- <input type="button" lay-submit lay-filter="layuiadmin-app-form-edit" id="layuiadmin-app-form-edit" value="确认编辑"> -->
- </div>
- <input type="hidden" name="douyin_url" value="">
- </form>
- </body>
- {/block}
- {block name="js"}
- <script type="text/javascript" src="__STATIC__/js/plupload/js/plupload.full.min.js"></script>
- <script type="text/javascript" src="__STATIC__/js/plupload/ossupload.js"></script>
- <script src="https://gosspublic.alicdn.com/aliyun-oss-sdk-6.3.1.min.js" async></script>
- <script>
- layui.config({
- base: '__LAYUI__/',
- urlbase: '/sys'
- }).extend({
- index: 'lib/index' //主入口模块
- }).use(['index', 'form', 'element', 'upload'], function () {
- var form = layui.form,
- upload = layui.upload,
- element = layui.element,
- $ = layui.jquery;
- var objdata = {};
- form.on('submit(layuiadmin-app-form-submit)', function (data) {
- if ($(data.elem).hasClass('layui-btn-disabled')) return false;
- $(data.elem).addClass('layui-btn-disabled');
- var index = parent.layer.getFrameIndex(window.name);
- var formData = new FormData(data.form);
- var bodyjson = JSON.parse(localStorage.getItem('videodata'));
- formData.append('video_url', $('#fileuri').val());
- if(bodyjson.cover){
- formData.append('cover', bodyjson.cover);
- }console.log(bodyjson);
- if(bodyjson.cover_share_img){
- formData.append('cover_share_img', bodyjson.cover_share_img);
- }
- formData.delete('file');
- var load = layer.load(1, { shade: [0.8, '#000'] })
- $.ajax({
- url: '{:url("video/addSave")}',
- data: formData,
- type: 'post',
- dataType: 'json',
- processData: false,
- contentType: false,
- success: function (res) {
- if (res.code == 0) {
- objdata = {};
- localStorage.setItem('videodata', '');
- layer.msg('添加成功', {
- icon: 1,
- time: 1000
- }, function () {
- var adding = $("input[name='adding']").is(":checked");
- if (adding) {
- // window.location.reload();
- location.href = "{:url('video/add')}?adding=1";
- } else {
- var index = parent.layer.getFrameIndex(window.name);
- parent.layer.close(index);
- parent.layui.table.reload('layui-table-video');
- }
- });
- } else {
- layer.close(load);
- layer.msg(res.msg);
- }
- $(data.elem).removeClass('layui-btn-disabled');
- }
- });
- });
- //下拉框关联
- var typeData = JSON.parse('{$label|raw}');
- form.on('select(type)', function (data) {
- var typeJson = typeData[data.value];
- var typeLabel = $('#label');
- typeLabel.empty().append('<option value="">请选择标签</option>');
- for (r in typeJson) {
- typeLabel.append('<option value=' + r + '>' + typeJson[r] + '</option>');
- }
- form.render();
- cache();
- });
- form.on('select(type2)', function (data) {
- cache();
- })
- $('#dy').click(function () {
- var display = $('#douyin').css('display');
- if (display == 'none') {
- $('#douyin').show();
- } else {
- $('#douyin').hide();
- }
- });
-
- $('.isimgupload').hover(function(){
- if($(this).find('#upload-drag').length>0 && $("#upload-drag:has(img.fmimages)").length>0){
- $(this).find('.imageDiv').show();
- }
- if($(this).find('#upload-share-drag').length>0 && $("#upload-share-drag:has(img.fmimages)").length>0){
- $(this).find('.imageDiv').show();
- }
- },function(){
- $(this).find('.imageDiv').hide();
- })
-
-
- if (localStorage.getItem('videodata')) {
- var bodyjson = JSON.parse(localStorage.getItem('videodata'));
- if (bodyjson) {
- $('input[name="title"]').val(bodyjson.title);
- if (bodyjson.type) {
- set_select('type', bodyjson.type);
- }
- var typeJson = typeData[bodyjson.type];
- var typeLabel = $('#label');
- typeLabel.empty().append('<option value="">请选择标签</option>');
- for (r in typeJson) {
- typeLabel.append('<option value=' + r + '>' + typeJson[r] + '</option>');
- }
- if (bodyjson.label) {
- set_select('label', bodyjson.label);
- }
- objdata['cover'] = bodyjson.cover;
- if (bodyjson.cover) {
- $('#upload-drag').html('<img class="fmimages" src="' + bodyjson.cover + '" style="width:100%;height:100%">');
- }
- $('.layui-textarea').text(bodyjson.description);
- if (bodyjson.video_url) {
- $('#fileuri').val(bodyjson.video_url);
- $('#symbshowed').html('<video controls src="https://o.nczyzs.com/' + bodyjson.video_url + '" name="media"><source src="https://o.nczyzs.com/' + bodyjson.video_url + '" type="video/mp4"></video>')
- }
- form.render();
- }
- }
- $('#postfiles').click(function () {
- $('#fileuri').val('');
- var timess = setInterval(function () {
- if ($('#ossfile').find('.progress-bar').attr('aria-valuenow') == 100) {
- setTimeout(function () {
- objdata['video_url'] = $('#fileuri').val();
- cache();
- }, 1000)
- clearInterval(timess);
- }
- }, 100)
- })
- function set_select(id, value) {
- let obj = $("#" + id);
- let names = '';
- for (var i = 0; i < obj.find('option').length; i++) {
- if (obj.find('option').eq(i).val() == value) {
- obj.find("option").eq(i).attr("selected", true);
- names = obj.find('option').eq(i).html();
- }
- }
- setTimeout(function () {
- obj.parent().find(".layui-select-title").find("input").val(names);
- }, 500)
- }
- $('input,textarea').off('input').on('input', function (obj) {
- cache();
- })
- function cache() {
- setTimeout(function () {
- var formarray = $("form").serializeArray();
- for (var i in formarray) {
- objdata[formarray[i]['name']] = formarray[i]['value']
- }
- objdata['video_url'] = $('#fileuri').val();
- var datas = JSON.stringify(objdata);
- localStorage.setItem('videodata', datas);
- }, 500)
- }
- //抖音抓取
- $("#catch").click(function () {
- var load = layer.load(1, { shade: [0.8, '#FFFFFF'] })
- var url = $('#douyinurl').val();
- $.ajax({
- url: "{:url('video/catch')}",
- data: {
- link: url
- },
- success: function (res) {
- layer.close(load);
- if (res.code == 0) {
- var form_div = $('#layuiadmin-app-form-list');
- form_div.find('input[name=title]').val(res.data.title);
- form_div.find('textarea').text(res.data.desc);
- $('#symbshowed').html('<video controls="" name="media"><source src="' +
- res
- .data.video + '" type="video/mp4"></video>');
- form_div.find('input[name=douyin_url]').val(res.data.video);
- $('#symbshowed').show();
- } else {
- layer.msg(res.msg);
- }
- }
- });
- });
- var loadIndex = null;
- //拖拽上传
- upload.render({
- elem: '#upload-drag',
- url: '/upload/',
- accept: 'image',
- exts: 'png|jpg|jpeg',
- auto: false,
- field: 'file',
- size: 3 * 1024,
- choose: function (obj) {
- loadIndex = layer.load(1, { shade: [0.8, '#000'] });
- obj.preview(function (index, file, result) {
- ossuploadimg(file).then(f => {
- layer.close(loadIndex);
- let fileCover = `https://o.nczyzs.com/${f}`;
- objdata['cover'] = fileCover;
- $('#upload-drag').html('<img class="fmimages" src="' + result + '" style="height: 100%;width:100%;">');
- cache();
- })
- });
- },
- });
- //拖拽上传
- upload.render({
- elem: '#upload-share-drag',
- url: '/upload/',
- accept: 'image',
- exts: 'png|jpg|jpeg',
- auto: false,
- field: 'file',
- size: 3 * 1024,
- choose: function (obj) {
- loadIndex = layer.load(1, { shade: [0.8, '#000'] });
- obj.preview(function (index, file, result) {
- ossuploadimg(file).then(f => {
- layer.close(loadIndex);
- let fileCover = `https://o.nczyzs.com/${f}`;
- objdata['cover_share_img'] = fileCover;
- $('#upload-share-drag').html('<img class="fmimages" src="' + result + '" style="height: 100%;width:100%;">');
- cache();
- })
- });
- },
- });
- function ossuploadimg(file) {
- return new Promise((resolve,reject) => {
- var client = new OSS({
- region: "oss-cn-hangzhou",
- accessKeyId: "LTAI5tHjWupJSCAycy2yVbQZ",
- accessKeySecret: "eNFicm77Cfq3u7ZnQyw1urFmFNpf3w",
- bucket: "zyzswzh",
- secure: true
- });
- var date = new Date().getTime();
- var objectName = 'Video/' + date + "/" + Date.now() + ".jpeg";
- client.put(objectName, file).then(function (result) {
- resolve(result.name);
- }).catch(function (error) {
- reject(error)
- });
- })
- }
- $('.imageDiv').on('click', function(e) {
- var that = this;
- layer.confirm('确定删除该图片么?',{title: ['信息', 'color:#333333;background-color:#D8E6F1;'],}, function(index) {
- var imgDiv = $('#upload-drag').find('img');
- imgDiv.remove();
- objdata['cover'] = '';
- $('#upload-drag').html('<div class="layui-upload-drag"><i class="layui-icon"></i><p>上传图片</p></div>');
- layer.close(index);
- cache();
- });
- });
-
- //添加分类
- $('#addType').click(function () {
- layer.prompt({
- title: ['添加分类', 'color:#333333;background-color:#D8E6F1;'],
- }, function (value, index, elem) {
- var value = $.trim(value);
- if (value == '') {
- layer.msg('请输入分类名称', { anim: 6 });
- return false;
- }
- if (value.length > 6) {
- layer.msg('分类名称超长', { anim: 6 });
- return false;
- }
- $.post('{:url("video/addtype")}', {
- value: value
- }, function (res) {
- if (res.code == 0) {
- $('#type').append("<option selected value='" + res.data.id + "'>" + res.data.value + "</option>")
- form.render();
- layer.msg(res.msg, {
- anim: 0
- }, function () {
- layer.close(index); //再执行关闭
- });
- } else {
- layer.msg(res.msg, {
- anim: 6
- });
- }
- });
- });
- });
- //添加分类下的标签
- $('#addLabel').click(function () {
- var checktTypeId = $('#type').val();
- if (checktTypeId == '') {
- layer.msg('请先选择归属分类', { anim: 6 });
- return false;
- }
- layer.prompt({
- title: ['添加标签', 'color:#333333;background-color:#D8E6F1;'],
- }, function (value, index, elem) {
- var value = $.trim(value);
- if (value == '') {
- layer.msg('请输入标签名称', { anim: 6 });
- return false;
- }
- if (value.length > 6) {
- layer.msg('标签名称超长', { anim: 6 });
- return false;
- }
- $.post('{:url("video/addtype")}', {
- value: value, id: checktTypeId
- }, function (res) {
- if (res.code == 0) {
- $('#label').append("<option selected value='" + res.data.id + "'>" + res.data.value + "</option>")
- form.render();
- layer.msg(res.msg, {
- anim: 0
- }, function () {
- layer.close(index); //再执行关闭
- });
- } else {
- layer.msg(res.msg, {
- anim: 6
- });
- }
- });
- });
- });
- });
- </script>
- {/block}
|