|
|
@ -3,7 +3,7 @@ |
|
|
|
<el-form ref="form" :model="form" size="small"> |
|
|
|
<!-- 创建标题 --> |
|
|
|
<el-row class="in_release_item" type="flex" justify="space-between"> |
|
|
|
<el-col :span="3" class="item_title">创建{{ publishType === 0 ? "即时发布" : "定时发布" }}</el-col> |
|
|
|
<el-col :span="3" class="item_title">创建{{ publishType == 0 ? "即时发布" : "定时发布" }}</el-col> |
|
|
|
<el-col :span="18"> |
|
|
|
<div class="input_wrap"> |
|
|
|
<span class="input_label">名称</span> |
|
|
@ -27,30 +27,23 @@ |
|
|
|
</el-form-item> |
|
|
|
<el-form-item v-if="publishType == 1" label="设置周期" prop="release_cycle" :rules="[ |
|
|
|
{ required: true, message: '请设置周期:', trigger: 'change' }, |
|
|
|
]" :class="['set_weekly',{'no_margin': form.release_cycle === '每周'}]" label-width="100px"> |
|
|
|
]" :class="['set_weekly',{'no_margin': form.release_cycle == 2}]" label-width="100px"> |
|
|
|
<el-radio-group v-model="form.release_cycle" @change="clearCheckbox()"> |
|
|
|
<el-radio label="每天" value="everyday" /> |
|
|
|
<el-radio label="每周" value="weekly" /> |
|
|
|
<el-radio :label="1">每天</el-radio> |
|
|
|
<el-radio :label="2">每周</el-radio> |
|
|
|
</el-radio-group> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item v-if="form.release_cycle === '每周'" :class="{'weekly_margin': form.release_cycle === '每周'}" prop="release_weekly" :rules="[ |
|
|
|
{ required: true, message: '请选择每周开机时间', trigger: 'change' }, |
|
|
|
<el-form-item v-if="form.release_cycle == 2" :class="{'weekly_margin': form.release_cycle == 2}" prop="release_weekly" :rules="[ |
|
|
|
{ required: true, message: '请选择周期时间', trigger: 'change' }, |
|
|
|
]"> |
|
|
|
<el-checkbox-group v-model="form.release_weekly"> |
|
|
|
<el-checkbox label="周一" name="release_weekly" /> |
|
|
|
<el-checkbox label="周二" name="release_weekly" /> |
|
|
|
<el-checkbox label="周三" name="release_weekly" /> |
|
|
|
<el-checkbox label="周四" name="release_weekly" /> |
|
|
|
<el-checkbox label="周五" name="release_weekly" /> |
|
|
|
<el-checkbox label="周六" name="release_weekly" /> |
|
|
|
<el-checkbox label="周日" name="release_weekly" /> |
|
|
|
<el-checkbox-group v-model="selectWeekly"> |
|
|
|
<el-checkbox v-for="item in weeklyList" :key="item.id" :label="item.id" :value="item.id" name="type">{{ item.name }}</el-checkbox> |
|
|
|
</el-checkbox-group> |
|
|
|
</el-form-item> |
|
|
|
<!-- :rules="[ |
|
|
|
{ required: true, message: '请选择是否置顶', trigger: 'change' } |
|
|
|
]" --> |
|
|
|
<el-form-item label="是否置顶" prop="is_topping" label-width="100px"> |
|
|
|
<!-- <el-radio v-model="form.is_topping" label="1">置顶</el-radio> --> |
|
|
|
<el-checkbox v-model="form.is_topping">置顶</el-checkbox> |
|
|
|
</el-form-item> |
|
|
|
</el-col> |
|
|
@ -62,7 +55,7 @@ |
|
|
|
<div class="step_select"> |
|
|
|
<div>已选内容: 0</div> |
|
|
|
<div>内容总时长:0.00s</div> |
|
|
|
<div>添加BGM:<el-button class="step_select_audio" type="primary" round @click="selectAudioCont">选择文件</el-button> |
|
|
|
<div>添加BGM:<el-button class="step_select_audio" type="primary" round @click="selectAudioCont(0,-1)">选择文件</el-button> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="step_select_list"> |
|
|
@ -174,7 +167,7 @@ |
|
|
|
<div class="set_time"> |
|
|
|
<span>展示时长</span> |
|
|
|
<el-form-item :prop="'form.'+index+'.showTime'" style="width: 100px"> |
|
|
|
<el-input v-model="item.showTime" type="text" style="width: 66px" /> |
|
|
|
<el-input v-model="item.showTime" type="text" placeholder="15" style="width: 66px" /> |
|
|
|
</el-form-item> |
|
|
|
<em>秒</em> |
|
|
|
</div> |
|
|
@ -188,9 +181,9 @@ |
|
|
|
</div> |
|
|
|
<div class="set_time set_audio"> |
|
|
|
<span>音频:</span> |
|
|
|
<p class="audio_name">{{ showAudioName }}</p> |
|
|
|
<p class="audio_name">{{ item.showAudioName }}</p> |
|
|
|
<!-- 主题库音频文件不可选择 --> |
|
|
|
<el-button type="primary" round @click="selectAudioCont">选择文件</el-button> |
|
|
|
<el-button type="primary" round @click="selectAudioCont(1,index)">选择文件</el-button> |
|
|
|
</div> |
|
|
|
</el-form> |
|
|
|
<!-- </div> --> |
|
|
@ -214,7 +207,7 @@ |
|
|
|
<li>音频<span>{{ audioListData.length }}</span></li> |
|
|
|
</ul> |
|
|
|
<div class="material_list"> |
|
|
|
<div v-for="(item, index) in audioListData" :key="index" :class="['material_item', 'item_cont',{ 'item_multi': audioChecked == index }]"> |
|
|
|
<div v-for="(item, index) in audioListData" :key="index" :class="['material_item', 'item_cont',{ 'item_multi': audioChecked == index }]" @click="audioCheckedHandle(index)"> |
|
|
|
<img v-if="item.img_path" :src="item.img_path" alt /> |
|
|
|
<div v-else class="radio_img"></div> |
|
|
|
<div class="item_format"> |
|
|
@ -222,13 +215,13 @@ |
|
|
|
<span class="item_time">{{ item.duration | getSeconds }}</span> |
|
|
|
</div> |
|
|
|
<div class="file_name">{{ item.material_name }}</div> |
|
|
|
<span v-if="isMultiSelected" class="checked_btn" @click="audioCheckedHandle(index)"></span> |
|
|
|
<span v-if="audioChecked == index" class="checked_btn"></span> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="upload_list_right"> |
|
|
|
<!-- <div class="upload_list_right"> |
|
|
|
<div class="mulit_btn" @click="multiSelectBtn('audio')">{{ mulitText }}</div> |
|
|
|
</div> |
|
|
|
</div> --> |
|
|
|
<div slot="footer" class="dialog-footer"> |
|
|
|
<el-button type="primary" round @click="audioCheckedSubmit">确 定</el-button> |
|
|
|
<el-button round @click="cancelContSelect('audio')">取 消</el-button> |
|
|
@ -252,6 +245,7 @@ import ThemeGalleryList from '../components/ThemeGalleryList.vue' |
|
|
|
import MaterialList from '../components/MaterialCompontentList.vue' |
|
|
|
import { getMaterialByType } from '@/api/material/material' |
|
|
|
import { ReqDeviceList } from '@/api/device/deviceList.js' |
|
|
|
import { saveRelease } from '@/api/release/release.js' |
|
|
|
import { getSeconds, formatBytes } from '@/utils/index.js' |
|
|
|
export default { |
|
|
|
name: 'ImmediateRelease', |
|
|
@ -277,26 +271,17 @@ export default { |
|
|
|
themeType: null, |
|
|
|
page: 1, |
|
|
|
pageSize: 10, |
|
|
|
audioListData: [], // |
|
|
|
|
|
|
|
audioListData: [], // 音频list |
|
|
|
isMainBgm: null, //是最外层的bgm还是里面的 |
|
|
|
selectDeviceVisible: false, // 设备list - layer |
|
|
|
deviceAllTags: [], // 设备list |
|
|
|
deviceTags: [], // 已选择设备list |
|
|
|
selectContVisible: false, // 选择内容素材/主题 - layer |
|
|
|
selectAudioVisible: false, // 音频list-layer |
|
|
|
audioChecked: null, // 音频已选中的 |
|
|
|
|
|
|
|
mulitText: '多选', |
|
|
|
isMultiSelected: false, |
|
|
|
|
|
|
|
form: { |
|
|
|
name: '', |
|
|
|
date: null, |
|
|
|
isTop: null, |
|
|
|
deviceSelect: '', |
|
|
|
timePeriod: null, |
|
|
|
onweek: [], |
|
|
|
|
|
|
|
actual_end: '', // “实际结束时间 yyyy-MM-dd HH:mm:ss”, |
|
|
|
is_topping: false, // 是否置顶, |
|
|
|
orga_id: '', // "机构id" |
|
|
@ -326,16 +311,9 @@ export default { |
|
|
|
contentIds: [], |
|
|
|
listEditVisible: false, // 可编辑list素材-layer |
|
|
|
selectedEditData: [], // 可编辑list内容 - 选择的item |
|
|
|
showAudioName: '', |
|
|
|
showAudioUrl: '', |
|
|
|
// formListData: [] |
|
|
|
thisEditIndex: null, // 当前音乐选择的index |
|
|
|
setMaterialForm: [], |
|
|
|
// setMaterialForm: { |
|
|
|
// showTime: 15, |
|
|
|
// showAnimation: 0, |
|
|
|
// showAnimationName: '' |
|
|
|
// }, |
|
|
|
animationData: [ |
|
|
|
animationData: [ // 图片素材切换动态 - 编辑动画 |
|
|
|
{ |
|
|
|
key: '0', |
|
|
|
name: '无动画' |
|
|
@ -349,6 +327,37 @@ export default { |
|
|
|
name: '动画2' |
|
|
|
} |
|
|
|
], |
|
|
|
selectWeekly: [], |
|
|
|
weeklyList: [ |
|
|
|
{ |
|
|
|
id: '1', |
|
|
|
name: '周一' |
|
|
|
}, |
|
|
|
{ |
|
|
|
id: '2', |
|
|
|
name: '周二' |
|
|
|
}, |
|
|
|
{ |
|
|
|
id: '3', |
|
|
|
name: '周三' |
|
|
|
}, |
|
|
|
{ |
|
|
|
id: '4', |
|
|
|
name: '周四' |
|
|
|
}, |
|
|
|
{ |
|
|
|
id: '5', |
|
|
|
name: '周五' |
|
|
|
}, |
|
|
|
{ |
|
|
|
id: '6', |
|
|
|
name: '周六' |
|
|
|
}, |
|
|
|
{ |
|
|
|
id: '7', |
|
|
|
name: '周七' |
|
|
|
} |
|
|
|
], |
|
|
|
materialTabItem: [ // 素材库 - tab切换title |
|
|
|
{ |
|
|
|
key: 1, |
|
|
@ -378,7 +387,7 @@ export default { |
|
|
|
}, |
|
|
|
computed: { |
|
|
|
changePlaceholder () { |
|
|
|
return this.publishType === 0 ? '即时发布 2022-01-01' : '定时发布 2022-01-01' |
|
|
|
return this.publishType == 0 ? '即时发布 2022-01-01' : '定时发布 2022-01-01' |
|
|
|
}, |
|
|
|
defaultImg () { |
|
|
|
return 'this.src="' + require('@/assets/images/menu_bg_02.png') + '"' |
|
|
@ -386,7 +395,6 @@ export default { |
|
|
|
}, |
|
|
|
created () { |
|
|
|
this.selectedMaterial = JSON.parse(localStorage.getItem('selectedMaterial')) |
|
|
|
console.log(this.selectedMaterial) |
|
|
|
// 素材类型格式处理 |
|
|
|
this.selectedMaterial.forEach((item, key) => { |
|
|
|
this.materialPostfix[key] = item.deposit_url.substring( |
|
|
@ -396,23 +404,20 @@ export default { |
|
|
|
}) |
|
|
|
}, |
|
|
|
mounted () { |
|
|
|
console.log(this.$route.query.tag) |
|
|
|
if (this.$route.path === '/release') { |
|
|
|
this.materialTabItem.pop() |
|
|
|
} |
|
|
|
if (this.$route.query.tag) { |
|
|
|
this.publishType = this.$route.query.tag |
|
|
|
} |
|
|
|
// 设备list |
|
|
|
this.ReqDeviceList() |
|
|
|
}, |
|
|
|
methods: { |
|
|
|
// 发布提交 |
|
|
|
releaseSubmit () { |
|
|
|
console.log(this.form) |
|
|
|
console.log(this.form.relaase_name) |
|
|
|
console.log(this.form.release_start) |
|
|
|
console.log(this.form.is_topping) |
|
|
|
console.log(this.form.release_device) |
|
|
|
this.form.orga_id = this.orga_id |
|
|
|
if (this.form.release_device == 1) { |
|
|
|
this.form.release_deviceDTOs = [] |
|
|
|
} else { |
|
|
@ -426,24 +431,32 @@ export default { |
|
|
|
return json |
|
|
|
}) |
|
|
|
} |
|
|
|
console.log(this.form.release_deviceDTOs) |
|
|
|
this.form.release_type = this.publishType |
|
|
|
console.log(this.form.release_type) |
|
|
|
this.form.release_end = this.publishType ? '' : this.form.release_start |
|
|
|
console.log(this.form.release_end) |
|
|
|
console.log('-----------------------------') |
|
|
|
console.log(this.selectedMaterial) |
|
|
|
console.log('-----------------------------') |
|
|
|
// 先判断编辑还是新增 |
|
|
|
this.form.actual_end = this.publishType == 0 ? null : '' |
|
|
|
if (this.publishType == 0) { |
|
|
|
this.form.release_cycle = 0 |
|
|
|
this.form.release_weekly = null |
|
|
|
this.form.release_end = this.form.release_start |
|
|
|
} |
|
|
|
if (this.form.release_cycle == 2) { |
|
|
|
this.form.release_weekly = this.selectWeekly.join(',') |
|
|
|
} |
|
|
|
if (this.form.release_start instanceof Array) { |
|
|
|
const arrDate = this.form.release_start |
|
|
|
this.form.release_start = arrDate[0] |
|
|
|
this.form.release_end = arrDate[1] |
|
|
|
} |
|
|
|
console.log("看这里这里") |
|
|
|
console.log(this.selectedEditData) |
|
|
|
console.log(this.selectedMaterial) |
|
|
|
console.log("看这里这里") |
|
|
|
this.form.release_materialDTOs = this.selectedMaterial.map(item => { |
|
|
|
this.form.release_materialDTOs = this.selectedMaterial.map((item, index) => { |
|
|
|
const json = {} |
|
|
|
if (item.material_type == 0 && (item.showTime || item.showAnimationName || item.showAnimation)) { |
|
|
|
json.duration = item.showTime |
|
|
|
json.effect = item.showAnimation |
|
|
|
json.bgm_path = '' |
|
|
|
if (item.material_type == 0) { |
|
|
|
json.duration = (item.showTime || item.showAnimationName || item.showAnimation) ? item.showTime : 15 |
|
|
|
json.effect = (item.showTime || item.showAnimationName || item.showAnimation) ? item.showAnimation : 0 |
|
|
|
json.bgm_path = (item.showAudioName || item.showAudioUrl) ? item.showAudioUrl : null |
|
|
|
} else { |
|
|
|
json.duration = 0 |
|
|
|
json.effect = 0 |
|
|
@ -454,14 +467,25 @@ export default { |
|
|
|
json.img_path = item.img_path |
|
|
|
json.file_size = item.file_size |
|
|
|
json.rm_id = null |
|
|
|
json.ranking = index + 1 |
|
|
|
return json |
|
|
|
}) |
|
|
|
console.log(this.form.release_materialDTOs) |
|
|
|
console.log("看这里release_materialDTOs") |
|
|
|
const isBgm = this.selectedMaterial.find(item => { |
|
|
|
return item.material_type == 2 |
|
|
|
}) |
|
|
|
console.log(this.form.bgm_main) |
|
|
|
if (isBgm) { |
|
|
|
this.form.bgm_main = isBgm.deposit_url |
|
|
|
} else { |
|
|
|
this.form.bgm_main = null |
|
|
|
} |
|
|
|
saveRelease(this.form).then(res => { |
|
|
|
if (res.code == 200) { |
|
|
|
this.$message.success('发布成功!') |
|
|
|
// this.selectedMaterial = [] |
|
|
|
} else { |
|
|
|
this.$message.error(res.msg) |
|
|
|
} |
|
|
|
}) |
|
|
|
}, |
|
|
|
// 获取设备列表 |
|
|
|
ReqDeviceList () { |
|
|
@ -475,8 +499,6 @@ export default { |
|
|
|
ReqDeviceList(params).then(res => { |
|
|
|
if (res.code == 200) { |
|
|
|
this.deviceAllTags = res.data.content |
|
|
|
// this.total = res.data.totalElements |
|
|
|
// this.queryInfo.size = res.data.size |
|
|
|
} else { |
|
|
|
return this.$message.error('获取设备列表失败!') |
|
|
|
} |
|
|
@ -557,13 +579,12 @@ export default { |
|
|
|
this.contentIds.push(id) |
|
|
|
this.selectedEditData.push(item) |
|
|
|
} |
|
|
|
|
|
|
|
}, |
|
|
|
// 编辑-已选择的 |
|
|
|
selectEdit () { |
|
|
|
this.listEditVisible = true |
|
|
|
let form = { |
|
|
|
showTime: 15, |
|
|
|
showTime: '15', |
|
|
|
showAnimation: '', |
|
|
|
showAnimationName: '' |
|
|
|
} |
|
|
@ -578,12 +599,16 @@ export default { |
|
|
|
// console.log(this.selectedMaterial) |
|
|
|
}, |
|
|
|
// 选择音频 |
|
|
|
selectAudioCont () { |
|
|
|
selectAudioCont (type, index) { |
|
|
|
this.audioChecked = -1 |
|
|
|
this.thisEditIndex = index |
|
|
|
this.isMultiSelected = false |
|
|
|
this.mulitText = '选择' |
|
|
|
this.selectAudioVisible = true |
|
|
|
// 根据类型获取素材 - audio - 2 |
|
|
|
this.themeType = 2 |
|
|
|
this.getMaterialByType() |
|
|
|
this.isMainBgm = type == 0 ? 0 : 1 |
|
|
|
}, |
|
|
|
// 音频选中-单选 |
|
|
|
audioCheckedHandle (index) { |
|
|
@ -593,22 +618,30 @@ export default { |
|
|
|
this.audioChecked = -1 |
|
|
|
} |
|
|
|
}, |
|
|
|
// 音频选中 - 提交 |
|
|
|
audioCheckedSubmit () { |
|
|
|
this.selectAudioVisible = false |
|
|
|
if (this.audioChecked != -1) { |
|
|
|
const index = this.audioChecked |
|
|
|
this.showAudioName = this.audioListData[index].material_name |
|
|
|
this.showAudioUrl = this.audioListData[index].deposit_url |
|
|
|
if (!this.isMainBgm) { |
|
|
|
this.selectedMaterial.find((item, key) => { |
|
|
|
if (item.material_type == 2) { |
|
|
|
this.selectedMaterial.splice(key, 1) |
|
|
|
this.audioListData[index].material_type = 2 |
|
|
|
this.selectedMaterial.push(this.audioListData[index]) |
|
|
|
} |
|
|
|
}) |
|
|
|
} else { |
|
|
|
this.selectedEditData[this.thisEditIndex].showAudioName = this.audioListData[index].material_name |
|
|
|
this.selectedEditData[this.thisEditIndex].showAudioUrl = this.audioListData[index].deposit_url |
|
|
|
} |
|
|
|
} else { |
|
|
|
this.showAudioName = '' |
|
|
|
this.showAudioUrl = '' |
|
|
|
this.selectedEditData[this.thisEditIndex].showAudioName = '' |
|
|
|
this.selectedEditData[this.thisEditIndex].showAudioUrl = '' |
|
|
|
} |
|
|
|
}, |
|
|
|
// 动画切换 |
|
|
|
selectAnimation (event, item) { |
|
|
|
console.log(event) |
|
|
|
console.log(item) |
|
|
|
console.log(event.key + ".." + event.name) |
|
|
|
item.showAnimationName = event.name |
|
|
|
item.showAnimation = event.key |
|
|
|
}, |
|
|
@ -656,18 +689,16 @@ export default { |
|
|
|
}, |
|
|
|
// 时间设置-切换到每天时 |
|
|
|
clearCheckbox () { |
|
|
|
if (this.form.timePeriod === '每天') { |
|
|
|
this.form.onweek = [] |
|
|
|
if (this.form.release_cycle == 2) { |
|
|
|
this.selectWeekly = [] |
|
|
|
this.form.release_weekly = [] |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
// 素材选择 - 取消按钮 |
|
|
|
cancelContSelect (type) { |
|
|
|
this.isMultiSelected = false |
|
|
|
if (type == 'audio') { |
|
|
|
this.selectAudioVisible = false |
|
|
|
this.mulitText = '选择' |
|
|
|
this.audioChecked = -1 |
|
|
|
} else { |
|
|
|
this.selectContVisible = false |
|
|
|
this.mulitText = '多选' |
|
|
@ -910,8 +941,8 @@ export default { |
|
|
|
display: flex; |
|
|
|
font-size: 12px; |
|
|
|
color: #666; |
|
|
|
height: 26px; |
|
|
|
line-height: 26px; |
|
|
|
height: 30px; |
|
|
|
line-height: 30px; |
|
|
|
.set_time { |
|
|
|
display: flex; |
|
|
|
margin-right: 30px; |
|
|
|