李帅

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

...@@ -87,9 +87,10 @@ class VideoTempController extends AdminController ...@@ -87,9 +87,10 @@ 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) { 90 +
91 $form->text('title'); 91 $form->text('title');
92 - $form->radio('type')->options(['视频', '图文音频'])->default(0); 92 + $form->radio('type')->addElementClass('type')
93 + ->options([1=>'图文音频',2=>'视频'])->default(1);
93 $form->radio('bg_type') 94 $form->radio('bg_type')
94 ->options([1=>'视频', 2=>'图片']) 95 ->options([1=>'视频', 2=>'图片'])
95 ->when(1,function (Form\BlockForm $form){ 96 ->when(1,function (Form\BlockForm $form){
...@@ -97,29 +98,38 @@ class VideoTempController extends AdminController ...@@ -97,29 +98,38 @@ class VideoTempController extends AdminController
97 ->accept('mp4') 98 ->accept('mp4')
98 ->autoUpload() 99 ->autoUpload()
99 ->uniqueName() 100 ->uniqueName()
100 - ->addElementClass('bg_url'); 101 + ->addElementClass('bg_video_url');
101 }) 102 })
102 ->when(2,function (Form\BlockForm $form){ 103 ->when(2,function (Form\BlockForm $form){
103 $form->multipleImage('bg_url') 104 $form->multipleImage('bg_url')
104 ->limit(5) 105 ->limit(5)
105 ->uniqueName() 106 ->uniqueName()
106 - ->addElementClass('multi_bg_url'); 107 + ->addElementClass('bg_img_url');
107 }) 108 })
108 ->default(1); 109 ->default(1);
109 $form->radio('bg_music') 110 $form->radio('bg_music')
110 ->options(['无', '有']) 111 ->options(['无', '有'])
111 ->when(1,function (Form\BlockForm $form){ 112 ->when(1,function (Form\BlockForm $form){
112 - $form->text('bgm_url'); 113 + $form->file('bgm_url')
114 + ->accept('mp3,aac,wav')
115 + ->autoUpload()
116 + ->uniqueName()
117 + ->addElementClass('bgm_url');
113 }) 118 })
114 ->default(0); 119 ->default(0);
115 $form->number('top'); 120 $form->number('top');
116 $form->number('left'); 121 $form->number('left');
117 $form->number('font_size'); 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 +
118 $form->number('sn'); 129 $form->number('sn');
119 $form->radio('state')->options(['不显示', '显示'])->default(0); 130 $form->radio('state')->options(['不显示', '显示'])->default(0);
120 131
121 }); 132 });
122 - });
123 133
124 $form->block(4, function (Form\BlockForm $form) { 134 $form->block(4, function (Form\BlockForm $form) {
125 $form->html(view('admin.form.phone')); 135 $form->html(view('admin.form.phone'));
......
...@@ -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;
85 97
86 - $('.poem-block').css('top', top + 'px').css('left', left + 'px'); 98 + $('.poem-block').css('top', top + 'px').css('left', left + 'px')
87 - $('.poem-title').css('font-size', title_size + 'px'); 99 + .css('background-color', text_bg_color).css('opacity', opacity);
88 - $('.poem-content').css('font-size', content_size + 'px'); 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);
89 102
90 - console.log(top) 103 +
91 - console.log(left) 104 + let bg_img_url = $('.bg_img_url').find("input[type='hidden'][name='bg_url']").val();
92 - console.log(font) 105 + if (bg_img_url !== '') {
106 + $('.bg_img').attr('src', asset + '/' + bg_img_url).css('display', 'block');
107 + }
108 +
109 + let bg_video_url = $('.bg_video_url').find("input[type='hidden'][name='bg_url']").val();
110 + if (bg_video_url !== ''){
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 + }
116 +
117 + let bgm_url = $('.bgm_url').find("input[type='hidden'][name='bgm_url']").val();
118 + if (bgm_url !== ''){
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 })
......