Browse Source

发布1

dev
xuhuajiao 3 years ago
parent
commit
e39168e800
  1. 28
      src/assets/styles/adminIndex.scss
  2. 199
      src/views/immediateRelease/index.vue
  3. 2
      src/views/materialContent/index.vue

28
src/assets/styles/adminIndex.scss

@ -3,8 +3,7 @@
/**修改全局的滚动条*/
/**滚动条的宽度*/
::-webkit-scrollbar {
width: 8px;
width: 8px;
}
//滚动条的滑块
::-webkit-scrollbar-thumb {
@ -362,6 +361,7 @@
padding: 0 24px;
margin: 18px 16px 0 0;
font-size: 14px;
cursor: pointer;
// color: #3a8aeb;
::v-deep .el-icon-close {
font-size: 16px;
@ -393,7 +393,7 @@
.theme_img {
display: flex;
flex-wrap: wrap;
.theme_item{
.theme_item {
position: relative;
width: 160px;
height: 284px;
@ -427,12 +427,14 @@
.cont_upload_btn {
background: linear-gradient(to right, #fc8c6f, #fa544e) !important;
}
.mkdir_btn,.return_btn {
.mkdir_btn,
.return_btn {
margin-left: 0;
margin-top: 16px;
}
.return_btn{
span,a{
.return_btn {
span,
a {
display: block;
height: 34px;
line-height: 34px;
@ -452,7 +454,7 @@
width: 104px;
height: 89px;
}
img{
img {
width: 100%;
height: 148px;
}
@ -493,7 +495,7 @@
font-size: 12px;
line-height: 18px;
border-radius: 9px;
&.item_time{
&.item_time {
width: auto;
padding: 0 5px;
}
@ -511,11 +513,11 @@
-webkit-line-clamp: 1;
overflow: hidden;
text-overflow: ellipsis;
-moz-user-select:none;/*火狐*/
-webkit-user-select:none;/*webkit浏览器*/
-ms-user-select:none;/*IE10*/
-khtml-user-select:none;/*早期浏览器*/
user-select:none;
-moz-user-select: none; /*火狐*/
-webkit-user-select: none; /*webkit浏览器*/
-ms-user-select: none; /*IE10*/
-khtml-user-select: none; /*早期浏览器*/
user-select: none;
}
// 首页-主题库-按钮
.home_publish_btn {

199
src/views/immediateRelease/index.vue

@ -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: [ // - tabtitle
{
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;

2
src/views/materialContent/index.vue

@ -1,7 +1,7 @@
<template>
<div class="app-container">
<div class="content_warp">
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tabs v-model="activeIndex" @tab-click="handleClick">
<el-tab-pane label="全部" name="first" />
<el-tab-pane name="second">
<span slot="label">

Loading…
Cancel
Save