李帅

制作临境模板基本完成,可使用

...@@ -87,38 +87,48 @@ class VideoTempController extends AdminController ...@@ -87,38 +87,48 @@ class VideoTempController extends AdminController
87 $form->showFooter(); 87 $form->showFooter();
88 // 设置字段宽度 88 // 设置字段宽度
89 $form->width(8, 3); 89 $form->width(8, 3);
90 - $form->column(12, function (Form\BlockForm $form) {
91 - $form->text('title');
92 - $form->radio('type')->options(['视频', '图文音频'])->default(0);
93 - $form->radio('bg_type')
94 - ->options([1=>'视频', 2=>'图片'])
95 - ->when(1,function (Form\BlockForm $form){
96 - $form->file('bg_url')
97 - ->accept('mp4')
98 - ->autoUpload()
99 - ->uniqueName()
100 - ->addElementClass('bg_url');
101 - })
102 - ->when(2,function (Form\BlockForm $form){
103 - $form->multipleImage('bg_url')
104 - ->limit(5)
105 - ->uniqueName()
106 - ->addElementClass('multi_bg_url');
107 - })
108 - ->default(1);
109 - $form->radio('bg_music')
110 - ->options(['无', '有'])
111 - ->when(1,function (Form\BlockForm $form){
112 - $form->text('bgm_url');
113 - })
114 - ->default(0);
115 - $form->number('top');
116 - $form->number('left');
117 - $form->number('font_size');
118 - $form->number('sn');
119 - $form->radio('state')->options(['不显示', '显示'])->default(0);
120 90
121 - }); 91 + $form->text('title');
92 + $form->radio('type')->addElementClass('type')
93 + ->options([1=>'图文音频',2=>'视频'])->default(1);
94 + $form->radio('bg_type')
95 + ->options([1=>'视频', 2=>'图片'])
96 + ->when(1,function (Form\BlockForm $form){
97 + $form->file('bg_url')
98 + ->accept('mp4')
99 + ->autoUpload()
100 + ->uniqueName()
101 + ->addElementClass('bg_video_url');
102 + })
103 + ->when(2,function (Form\BlockForm $form){
104 + $form->multipleImage('bg_url')
105 + ->limit(5)
106 + ->uniqueName()
107 + ->addElementClass('bg_img_url');
108 + })
109 + ->default(1);
110 + $form->radio('bg_music')
111 + ->options(['无', '有'])
112 + ->when(1,function (Form\BlockForm $form){
113 + $form->file('bgm_url')
114 + ->accept('mp3,aac,wav')
115 + ->autoUpload()
116 + ->uniqueName()
117 + ->addElementClass('bgm_url');
118 + })
119 + ->default(0);
120 + $form->number('top');
121 + $form->number('left');
122 + $form->number('font_size');
123 + $form->color('text_color')->addElementClass('text_color');
124 + $form->color('text_bg_color')->addElementClass('text_bg_color');
125 + $form->number('opacity')->min(0)->max(100)
126 + ->addElementClass('opacity')->default(90)
127 + ->help('范围为0-100,100表示不透明,0表示完全透明');
128 +
129 + $form->number('sn');
130 + $form->radio('state')->options(['不显示', '显示'])->default(0);
131 +
122 }); 132 });
123 133
124 $form->block(4, function (Form\BlockForm $form) { 134 $form->block(4, function (Form\BlockForm $form) {
......
...@@ -21,6 +21,11 @@ class CreateVideoTempTable extends Migration ...@@ -21,6 +21,11 @@ class CreateVideoTempTable extends Migration
21 $table->string('bg_url')->nullable()->comment('背景动画化地址'); 21 $table->string('bg_url')->nullable()->comment('背景动画化地址');
22 $table->unsignedTinyInteger('bg_music')->comment('0=没有,1=有'); 22 $table->unsignedTinyInteger('bg_music')->comment('0=没有,1=有');
23 $table->string('bgm_url')->nullable()->comment('背景音乐地址'); 23 $table->string('bgm_url')->nullable()->comment('背景音乐地址');
24 +
25 + $table->string('text_color')->nullable()->comment('文字颜色');
26 + $table->string('text_bg_color')->nullable()->comment('文字背景色');
27 + $table->double('opacity')->nullable()->comment('透明度');
28 +
24 $table->unsignedTinyInteger('sn')->default('99')->comment('序号'); 29 $table->unsignedTinyInteger('sn')->default('99')->comment('序号');
25 $table->unsignedSmallInteger('top')->default('0')->comment('距离容器上边距'); 30 $table->unsignedSmallInteger('top')->default('0')->comment('距离容器上边距');
26 $table->unsignedSmallInteger('left')->default('0')->comment('距离容器左边距'); 31 $table->unsignedSmallInteger('left')->default('0')->comment('距离容器左边距');
......
...@@ -16,6 +16,9 @@ return [ ...@@ -16,6 +16,9 @@ return [
16 'top' => '距离容器上边距', 16 'top' => '距离容器上边距',
17 'left' => '距离容器左边距', 17 'left' => '距离容器左边距',
18 'font_size' => '字号', 18 'font_size' => '字号',
19 + 'text_color' => '文字颜色',
20 + 'text_bg_color' => '文字背景色',
21 + 'opacity' => '透明度',
19 ], 22 ],
20 'options' => [ 23 'options' => [
21 ], 24 ],
......
...@@ -5,12 +5,12 @@ ...@@ -5,12 +5,12 @@
5 border-radius: 40px; 5 border-radius: 40px;
6 margin-right: 24px; 6 margin-right: 24px;
7 padding: 37px 20px; 7 padding: 37px 20px;
8 - min-height: 679px; 8 + min-height: 779px;
9 } 9 }
10 10
11 .phone-content { 11 .phone-content {
12 border: 1px solid rgb(220, 223, 230); 12 border: 1px solid rgb(220, 223, 230);
13 - height: 605px; 13 + height: 705px;
14 overflow: hidden; 14 overflow: hidden;
15 position: relative; 15 position: relative;
16 background: rgb(245, 245, 245); 16 background: rgb(245, 245, 245);
...@@ -54,12 +54,20 @@ ...@@ -54,12 +54,20 @@
54 font-size: 12px; 54 font-size: 12px;
55 margin: 0; 55 margin: 0;
56 } 56 }
57 +
58 + .bg-box {
59 + height: 625px;
60 + }
57 </style> 61 </style>
58 <div class="box-card"> 62 <div class="box-card">
59 <div class="phone-content"> 63 <div class="phone-content">
60 <div class="text">模板</div> 64 <div class="text">模板</div>
61 <img src="{{asset('storage/image/mobile-head.png')}}" alt="" width="338" height="80"> 65 <img src="{{asset('storage/image/mobile-head.png')}}" alt="" width="338" height="80">
62 - 66 + <div class="bg-box">
67 + <img width="338" height="625" class="bg_img" style="display: none">
68 + <video width="338" height="625" id="bg_video" style="display: none"></video>
69 + <audio id="bg_audio" ></audio>
70 + </div>
63 <div class="poem-block"> 71 <div class="poem-block">
64 <p class="poem-title">题破山寺后禅院</p> 72 <p class="poem-title">题破山寺后禅院</p>
65 <p class="poem-author">-- 常建</p> 73 <p class="poem-author">-- 常建</p>
...@@ -74,22 +82,45 @@ ...@@ -74,22 +82,45 @@
74 <button type="button" class="btn btn-primary sync"><i class="feather icon-repeat"></i> 同步基本设置</button> 82 <button type="button" class="btn btn-primary sync"><i class="feather icon-repeat"></i> 同步基本设置</button>
75 <script> 83 <script>
76 Dcat.ready(function () { 84 Dcat.ready(function () {
77 - $(document).off('click', '.sync').on('click', '.sync', function () { 85 + var asset = "{{asset('/storage/')}}";
78 86
87 + $(document).off('click', '.sync').on('click', '.sync', function () {
79 let ori_top = 80; 88 let ori_top = 80;
80 let top = parseInt($('.field_top').val()) + ori_top; 89 let top = parseInt($('.field_top').val()) + ori_top;
81 let left = $('.field_left').val(); 90 let left = $('.field_left').val();
82 let font = $('.field_font_size').val(); 91 let font = $('.field_font_size').val();
83 let content_size = 12 + parseInt(font); 92 let content_size = 12 + parseInt(font);
84 let title_size = 14 + parseInt(font); 93 let title_size = 14 + parseInt(font);
94 + let text_color = $('.text_color').val() || 'whitesmoke';
95 + let text_bg_color = $('.text_bg_color').val() || '#5c6bc6';
96 + let opacity = parseInt($('.opacity').val()) / 100;
97 +
98 + $('.poem-block').css('top', top + 'px').css('left', left + 'px')
99 + .css('background-color', text_bg_color).css('opacity', opacity);
100 + $('.poem-title').css('font-size', title_size + 'px').css('color', text_color);
101 + $('.poem-content').css('font-size', content_size + 'px').css('color', text_color);
102 +
103 +
104 + let bg_img_url = $('.bg_img_url').find("input[type='hidden'][name='bg_url']").val();
105 + if (bg_img_url !== '') {
106 + $('.bg_img').attr('src', asset + '/' + bg_img_url).css('display', 'block');
107 + }
85 108
86 - $('.poem-block').css('top', top + 'px').css('left', left + 'px'); 109 + let bg_video_url = $('.bg_video_url').find("input[type='hidden'][name='bg_url']").val();
87 - $('.poem-title').css('font-size', title_size + 'px'); 110 + if (bg_video_url !== ''){
88 - $('.poem-content').css('font-size', content_size + 'px'); 111 + $('#bg_video').attr('src', asset + '/' + bg_video_url).css('display', 'block');
112 + let bg_video = document.getElementById('bg_video');
113 + bg_video.autoplay = true;
114 + bg_video.loop = true;
115 + }
89 116
90 - console.log(top) 117 + let bgm_url = $('.bgm_url').find("input[type='hidden'][name='bgm_url']").val();
91 - console.log(left) 118 + if (bgm_url !== ''){
92 - console.log(font) 119 + $('#bg_audio').attr('src', asset + '/' + bgm_url);
120 + let bg_audio = document.getElementById('bg_audio');
121 + bg_audio.autoplay = true;
122 + bg_audio.loop = true;
123 + }
93 }) 124 })
94 125
95 }) 126 })
......