Browse Source

素材库-1

dev
xuhuajiao 3 years ago
parent
commit
42aec0b99a
  1. 184
      src/views/immediateRelease/index.vue
  2. 1
      src/views/materialContent/materialList/index.vue

184
src/views/immediateRelease/index.vue

@ -8,7 +8,7 @@
<div class="input_wrap">
<span class="input_label">名称</span>
<el-input
v-model="form.name"
v-model="form.relaase_name"
:placeholder="changePlaceholder"
class="input_name"
/>
@ -19,6 +19,7 @@
round
class="release_btn"
type="primary"
@click="releaseSubmit"
>发布</el-button>
<el-button round type="primary">关闭</el-button>
</el-col>
@ -29,21 +30,23 @@
<el-col class="step_form">
<el-form-item
label="发布时间"
prop="date"
prop="release_start"
:rules="[
{ required: true, message: '请选择发布时间', trigger: 'change' }
]"
label-width="100px"
>
<el-date-picker
v-if="publishType === 0"
v-model="form.date"
v-if="publishType == 0"
v-model="form.release_start"
value-format="yyyy-MM-dd HH:mm:ss"
type="date"
placeholder="选择日期"
/>
<el-date-picker
v-else
v-model="form.date"
v-model="form.release_start"
value-format="yyyy-MM-dd HH:mm:ss"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
@ -51,36 +54,36 @@
/>
</el-form-item>
<el-form-item
v-if="publishType === 1"
v-if="publishType == 1"
label="设置周期"
prop="timePeriod"
prop="release_cycle"
:rules="[
{ required: true, message: '请设置周期:', trigger: 'change' },
]"
:class="['set_weekly',{'no_margin': form.timePeriod === '每周'}]"
:class="['set_weekly',{'no_margin': form.release_cycle === '每周'}]"
label-width="100px"
>
<el-radio-group v-model="form.timePeriod" @change="clearCheckbox()">
<el-radio-group v-model="form.release_cycle" @change="clearCheckbox()">
<el-radio label="每天" value="everyday" />
<el-radio label="每周" value="weekly" />
</el-radio-group>
</el-form-item>
<el-form-item
v-if="form.timePeriod === '每周'"
:class="{'weekly_margin': form.timePeriod === '每周'}"
prop="onweek"
v-if="form.release_cycle === '每周'"
:class="{'weekly_margin': form.release_cycle === '每周'}"
prop="release_weekly"
:rules="[
{ required: true, message: '请选择每周开机时间', trigger: 'change' },
]"
>
<el-checkbox-group v-model="form.onweek">
<el-checkbox label="周一" name="onweek" />
<el-checkbox label="周二" name="onweek" />
<el-checkbox label="周三" name="onweek" />
<el-checkbox label="周四" name="onweek" />
<el-checkbox label="周五" name="onweek" />
<el-checkbox label="周六" name="onweek" />
<el-checkbox label="周日" name="onweek" />
<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>
</el-form-item>
<!-- :rules="[
@ -88,10 +91,11 @@
]" -->
<el-form-item
label="是否置顶"
prop="isTop"
prop="is_topping"
label-width="100px"
>
<el-radio v-model="form.isTop" label="1">置顶</el-radio>
<!-- <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>
</el-row>
@ -107,25 +111,26 @@
<div class="step_select_list">
<div class="step_upload" @click="selectContVisible = true"></div>
<draggable
v-model="listSelectedData"
v-model="materialSelected"
class="drag_list"
@end="dragEnd"
>
<div
v-for="(item, index) in listSelectedData"
:key="index"
v-for="(item, index) in materialSelected"
:key="'list-'+index"
:class="['material_item', 'item_cont']"
@click="selectedItem(item.id,item)"
@click="selectedItem(item.material_id,item)"
>
<img v-if="item.coverImg" :src="item.coverImg" alt />
<div v-if="item.type == 'audio'" class="radio_img"></div>
<img v-if="item.img_path || item.material_type == 1" :src="item.img_path" :onerror="defaultImg" alt />
<div v-if="!item.img_path && item.material_type == 2" class="radio_img"></div>
<div class="item_format">
<span class="item_type">{{ item.type }}</span>
<span v-if="item.type !== 'JPG'" class="item_time">03:00</span>
<span class="item_type">{{ 1 }}</span>
<span v-if="item.material_type != '0'" class="item_time">{{ item.duration | getSeconds }}</span>
</div>
<div class="file_name">{{ item.name }}</div>
<div v-if="contentIds.includes(item.id)" class="select_handle">
<div class="select_delt" @click.stop="selectDelt(item.id,index)">
<div class="file_name">{{ item.material_name }}</div>
<!-- <span v-if="isMultiSelected" class="checked_btn" @click="selectedItem(item)"></span> -->
<div v-if="contentIds.includes(item.material_id)" class="select_handle">
<div class="select_delt" @click.stop="selectDelt(item.material_id,index)">
<svg class="font-icon icon1" aria-hidden="true">
<use xlink:href="#icon-guanbi2" />
</svg>
@ -147,18 +152,18 @@
<el-col class="step_form">
<el-form-item
label=""
prop="deviceSelect"
prop="release_device"
:rules="[
{ required: true, message: '请选择设备', trigger: 'change' },
]"
>
<el-radio-group v-model="form.deviceSelect">
<el-radio-group v-model="form.release_device">
<el-radio label="all" value="all">所有设备</el-radio>
<el-radio label="other" value="other">部分设备<i v-if="form.deviceSelect === 'other'" class="radio_tip" @click="addDeviceTag()">添加</i></el-radio>
</el-radio-group>
</el-form-item>
<div v-if="form.deviceSelect === 'all'" class="select_all_tip">所有设备都将被发送</div>
<div v-if="deviceTags.length > 0 && form.deviceSelect === 'other'" class="select_other">
<div v-if="form.release_device === 'all'" class="select_all_tip">所有设备都将被发送</div>
<div v-if="deviceTags.length > 0 && form.release_device === 'other'" class="select_other">
<el-row>
<el-col :span="10" class="other_tip">以下设备都将被发送<span>总计{{ deviceTags.length }}个设备</span></el-col>
<el-col :span="4">
@ -213,7 +218,7 @@
<div v-if="item.type == 'audio'" class="radio_img"></div>
<div class="item_format">
<span class="item_type">{{ item.type }}</span>
<span v-if="item.type !== 'JPG'" class="item_time">03:00</span>
<!-- <span v-if="item.material_type != '0'" class="item_time">{{ item.duration | getSeconds }}</span> -->
</div>
<div class="file_name">{{ item.name }}</div>
<span v-if="isMultiSelected" class="checked_btn" @click="selectedListItem(item.id, item.type)"></span>
@ -234,7 +239,7 @@
<div class="mulit_btn" @click="multiSelectBtn">{{ mulitText }}</div>
</div>
<div slot="footer" class="dialog-footer">
<el-button type="primary" round @click="submitForm('form')"> </el-button>
<el-button type="primary" round> </el-button>
<el-button round @click="cancelContSelect"> </el-button>
</div>
</el-dialog>
@ -255,17 +260,17 @@
class="edit_material"
>
<div class="edit_img">
<img v-if="item.coverImg" :src="item.coverImg" alt />
<div v-if="item.type == 'audio'" class="radio_img"></div>
<img v-if="item.img_path || item.material_type == 1" :src="item.img_path" :onerror="defaultImg" alt />
<div v-if="!item.img_path && item.material_type == 2" class="radio_img"></div>
<span class="">{{ index+1 }}</span>
</div>
<div class="edit_cont">
<div class="edit_cont_base">
<p>{{ item.name }}</p>
<span>{{ item.type }}</span>
<p>{{ item.material_name }}</p>
<span>{{ item.material_type }}</span>
<span>{{ item.size }}</span>
</div>
<div v-if="item.type === 'JPG'" class="edit_cont_set">
<div v-if="item.material_type == 0" class="edit_cont_set">
<div class="set_time">
<span>展示时长</span>
<el-input v-model="time" type="text" style="width: 66px" />
@ -286,7 +291,7 @@
<el-button type="primary" round @click="selectAudioCont">选择文件</el-button>
</div>
</div>
<div v-else class="edit_cont_other">内容时长{{ item.time }}</div>
<div v-else class="edit_cont_other">内容时长{{ item.duration | getSeconds }}</div>
</div>
</div>
<div slot="footer" class="dialog-footer">
@ -363,15 +368,22 @@
<script>
import draggable from 'vuedraggable'
import ThemeGalleryList from '../components/ThemeGalleryList.vue'
import { getSeconds } from '@/utils/index.js'
export default {
name: 'ImmediateRelease',
components: {
draggable,
ThemeGalleryList
},
filters: {
getSeconds(s) {
return getSeconds(s)
}
},
data() {
return {
publishType: 0,
materialSelected: [], //
publishType: 0, //
time: 15,
audio_name: 'audio.mp3',
animation: null,
@ -392,7 +404,32 @@ export default {
isTop: null,
deviceSelect: '',
timePeriod: null,
onweek: []
onweek: [],
actual_end: '', // yyyy-MM-dd HH:mm:ss,
is_topping: false, // ,
orga_id: '', // "id"
relaase_name: '', //
release_cycle: '', // 0. 1. 2.
release_weekly: '', //
release_device: '', // 1. 2.
release_deviceDTOs: [], // {"device_id": "id"}
release_end: '', // yyyy-MM-dd HH:mm:ss
release_id: null, // id null
// {
// "duration": (s),
// "effect": ,
// "material_id": "id",
// "material_name": "",
// "img_path","",
// "bgm_path":"",
// "file_size":"",
// "ranking": ,
// "rm_id": "id null"
// }
release_materialDTOs: [],
release_start: '', // yyyy-MM-dd HH:mm:ss
release_type: '' //
},
listData: [
{
@ -428,40 +465,6 @@ export default {
time: '01:20'
}
],
listSelectedData: [
{
id: '1',
name: '1',
type: 'JPG',
size: '12kb',
coverImg: require('@/assets/images/background.jpg'),
time: ''
},
{
id: '2',
name: '2',
type: 'JPG',
size: '12kb',
coverImg: require('@/assets/images/background.jpg'),
time: ''
},
{
id: '3',
name: '4',
type: 'VEDIO',
size: '12kb',
coverImg: require('@/assets/images/background.jpg'),
time: '03:00'
},
{
id: '4',
name: '4',
type: 'audio',
size: '12kb',
coverImg: '',
time: '01:20'
}
],
contentIds: [],
uploadContentIds: [],
selectedData: [], // - item
@ -492,8 +495,15 @@ export default {
computed: {
changePlaceholder() {
return this.publishType === 0 ? '即时发布 2022-01-01' : '定时发布 2022-01-01'
},
defaultImg() {
return 'this.src="' + require('@/assets/images/menu_bg_02.png') + '"'
}
},
created() {
this.materialSelected = JSON.parse(localStorage.getItem('selectedMaterial'))
console.log(this.materialSelected)
},
mounted() {
console.log(this.$route.query.tag)
if (this.$route.path === '/release') {
@ -502,11 +512,17 @@ export default {
if (this.$route.query.tag) {
this.publishType = this.$route.query.tag
}
console.log(this.$router.options.routes)
console.log(this.$route.path)
},
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_materialDTOs)
},
selectEdit() {
this.listEditVisible = true
// console.log(this.selectedData)

1
src/views/materialContent/materialList/index.vue

@ -168,7 +168,6 @@ export default {
mkdirVisible: false, // layer
folderChecked: -1, //
materialList: [], // list
isPropMultiSelected: this.isMultiSelected,
isEditMaterial: false, //
formatType: null, // 0 img 1 video 2 audio
materialId: null, // id

Loading…
Cancel
Save