|
@ -21,15 +21,27 @@ |
|
|
<el-row class="in_release_item"> |
|
|
<el-row class="in_release_item"> |
|
|
<el-col class="step_1">第一步:设置时间</el-col> |
|
|
<el-col class="step_1">第一步:设置时间</el-col> |
|
|
<el-col class="step_form"> |
|
|
<el-col class="step_form"> |
|
|
<el-form-item label="发布时间" prop="release_start" :rules="[ |
|
|
|
|
|
|
|
|
<el-form-item |
|
|
|
|
|
label="发布时间" |
|
|
|
|
|
prop="release_start" |
|
|
|
|
|
:rules="[ |
|
|
{ required: true, message: '请选择发布时间', trigger: 'change' } |
|
|
{ required: true, message: '请选择发布时间', trigger: 'change' } |
|
|
]" label-width="100px"> |
|
|
|
|
|
|
|
|
]" |
|
|
|
|
|
label-width="100px" |
|
|
|
|
|
> |
|
|
<el-date-picker v-if="publishType == 0" v-model="form.release_start" value-format="yyyy-MM-dd HH:mm:ss" type="date" placeholder="选择日期" /> |
|
|
<el-date-picker 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.release_start" value-format="yyyy-MM-dd HH:mm:ss" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" /> |
|
|
<el-date-picker v-else v-model="form.release_start" value-format="yyyy-MM-dd HH:mm:ss" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" /> |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
<el-form-item v-if="publishType == 1" label="设置周期" prop="release_cycle" :rules="[ |
|
|
|
|
|
|
|
|
<el-form-item |
|
|
|
|
|
v-if="publishType == 1" |
|
|
|
|
|
label="设置周期" |
|
|
|
|
|
prop="release_cycle" |
|
|
|
|
|
:rules="[ |
|
|
{ required: true, message: '请设置周期', trigger: 'change' }, |
|
|
{ required: true, message: '请设置周期', trigger: 'change' }, |
|
|
]" :class="['set_weekly',{'no_margin': form.release_cycle == 2}]" 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-group v-model="form.release_cycle" @change="clearCheckbox()"> |
|
|
<el-radio :label="1">每天</el-radio> |
|
|
<el-radio :label="1">每天</el-radio> |
|
|
<el-radio :label="2">每周</el-radio> |
|
|
<el-radio :label="2">每周</el-radio> |
|
@ -61,16 +73,16 @@ |
|
|
<div class="step_select_list"> |
|
|
<div class="step_select_list"> |
|
|
<div class="step_upload" @click="selectContVisible = true"></div> |
|
|
<div class="step_upload" @click="selectContVisible = true"></div> |
|
|
<draggable v-model="selectedMaterial" class="drag_list" @end="dragEnd"> |
|
|
<draggable v-model="selectedMaterial" class="drag_list" @end="dragEnd"> |
|
|
<div v-for="(item, index) in selectedMaterial" :key="'list-'+index" :class="['material_item', 'item_cont']" @click="clickMaterialItem(item.material_id,item)"> |
|
|
|
|
|
<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 v-for="(item, index) in selectedMaterial" :key="'list-'+index" :class="['material_item', 'item_cont']" @click="clickMaterialItem((item.material_id||item.id),item)"> |
|
|
|
|
|
<img v-if="(item.img_path|| item.imgPath) || (item.material_type == 1 || item.type == 1)" :src="(item.img_path||item.imgPath)" :onerror="defaultImg" alt /> |
|
|
|
|
|
<div v-if="(!item.img_path|| !item.imgPath) && (item.material_type == 2|| item.type == 2)" class="radio_img"></div> |
|
|
<div class="item_format"> |
|
|
<div class="item_format"> |
|
|
<span class="item_type">{{ materialPostfix[index] }}</span> |
|
|
<span class="item_type">{{ materialPostfix[index] }}</span> |
|
|
<span v-if="item.material_type != '0'" class="item_time">{{ item.duration | getSeconds }}</span> |
|
|
|
|
|
|
|
|
<span v-if="item.material_type != '0' || item.type != '0'" class="item_time">{{ item.duration | getSeconds }}</span> |
|
|
</div> |
|
|
</div> |
|
|
<div class="file_name">{{ item.material_name }}</div> |
|
|
|
|
|
<div v-if="contentIds.includes(item.material_id)" class="select_handle"> |
|
|
|
|
|
<div class="select_delt" @click.stop="selectDelt(item.material_id,index)"> |
|
|
|
|
|
|
|
|
<div class="file_name">{{ item.material_name || item.name }}</div> |
|
|
|
|
|
<div v-if="contentIds.includes((item.material_id||item.id))" class="select_handle"> |
|
|
|
|
|
<div class="select_delt" @click.stop="selectDelt((item.material_id||item.id),index)"> |
|
|
<svg class="font-icon icon1" aria-hidden="true"> |
|
|
<svg class="font-icon icon1" aria-hidden="true"> |
|
|
<use xlink:href="#icon-guanbi2" /> |
|
|
<use xlink:href="#icon-guanbi2" /> |
|
|
</svg> |
|
|
</svg> |
|
@ -90,12 +102,16 @@ |
|
|
<el-row class="in_release_item"> |
|
|
<el-row class="in_release_item"> |
|
|
<el-col class="step_1">第三步:选择设备</el-col> |
|
|
<el-col class="step_1">第三步:选择设备</el-col> |
|
|
<el-col class="step_form"> |
|
|
<el-col class="step_form"> |
|
|
<el-form-item label="" prop="release_device" :rules="[ |
|
|
|
|
|
|
|
|
<el-form-item |
|
|
|
|
|
label="" |
|
|
|
|
|
prop="release_device" |
|
|
|
|
|
:rules="[ |
|
|
{ required: true, message: '请选择设备', trigger: 'change' }, |
|
|
{ required: true, message: '请选择设备', trigger: 'change' }, |
|
|
]"> |
|
|
|
|
|
|
|
|
]" |
|
|
|
|
|
> |
|
|
<el-radio-group v-model="form.release_device" @change="clearDevice()"> |
|
|
<el-radio-group v-model="form.release_device" @change="clearDevice()"> |
|
|
<el-radio label="1">所有设备</el-radio> |
|
|
|
|
|
<el-radio label="2">部分设备<i v-if="form.release_device == 2" class="radio_tip" @click="addDeviceTag()">添加</i></el-radio> |
|
|
|
|
|
|
|
|
<el-radio :label="1">所有设备</el-radio> |
|
|
|
|
|
<el-radio :label="2">部分设备<i v-if="form.release_device == 2" class="radio_tip" @click="addDeviceTag()">添加</i></el-radio> |
|
|
</el-radio-group> |
|
|
</el-radio-group> |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
<div v-if="form.release_device == 1" class="select_all_tip">所有设备都将被发送</div> |
|
|
<div v-if="form.release_device == 1" class="select_all_tip">所有设备都将被发送</div> |
|
@ -127,7 +143,7 @@ |
|
|
</li> |
|
|
</li> |
|
|
</ul> |
|
|
</ul> |
|
|
<div class="material_list" style="min-height: 260px"> |
|
|
<div class="material_list" style="min-height: 260px"> |
|
|
<MaterialList ref="MaterialList" :is-multi-selected="isMultiSelected" :mulit-text="mulitText" :activeItemIndex="activeItemIndex" /> |
|
|
|
|
|
|
|
|
<MaterialList ref="MaterialList" :is-multi-selected="isMultiSelected" :mulit-text="mulitText" :active-item-index="activeItemIndex" /> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
<!-- 主题库 --> |
|
|
<!-- 主题库 --> |
|
@ -243,10 +259,10 @@ |
|
|
import draggable from 'vuedraggable' |
|
|
import draggable from 'vuedraggable' |
|
|
import ThemeGalleryList from '../components/ThemeGalleryList.vue' |
|
|
import ThemeGalleryList from '../components/ThemeGalleryList.vue' |
|
|
import MaterialList from '../components/MaterialCompontentList.vue' |
|
|
import MaterialList from '../components/MaterialCompontentList.vue' |
|
|
import { getMaterialByType } from '@/api/material/material' |
|
|
|
|
|
|
|
|
import { getMaterialByType, FetchFindMaterialById } from '@/api/material/material' |
|
|
import { ReqDeviceList } from '@/api/device/deviceList.js' |
|
|
import { ReqDeviceList } from '@/api/device/deviceList.js' |
|
|
import { FetchSaveRelease } from '@/api/release/release.js' |
|
|
|
|
|
import { getSeconds, formatBytes } from '@/utils/index.js' |
|
|
|
|
|
|
|
|
import { FetchSaveRelease, FetchGetReleaseDetailsById } from '@/api/release/release.js' |
|
|
|
|
|
import { getSeconds, formatBytes, parseTime } from '@/utils/index.js' |
|
|
export default { |
|
|
export default { |
|
|
name: 'ImmediateRelease', |
|
|
name: 'ImmediateRelease', |
|
|
components: { |
|
|
components: { |
|
@ -305,7 +321,7 @@ export default { |
|
|
// "rm_id": "关联id 新增则为null" |
|
|
// "rm_id": "关联id 新增则为null" |
|
|
// } |
|
|
// } |
|
|
release_materialDTOs: [], |
|
|
release_materialDTOs: [], |
|
|
release_start: '', // 发布开始时间 yyyy-MM-dd HH:mm:ss |
|
|
|
|
|
|
|
|
release_start: null, // 发布开始时间 yyyy-MM-dd HH:mm:ss |
|
|
release_type: '' // 发布类型 |
|
|
release_type: '' // 发布类型 |
|
|
}, |
|
|
}, |
|
|
contentIds: [], |
|
|
contentIds: [], |
|
@ -381,7 +397,7 @@ export default { |
|
|
} |
|
|
} |
|
|
], |
|
|
], |
|
|
activeIndex: 0, |
|
|
activeIndex: 0, |
|
|
activeItemIndex: 0, |
|
|
|
|
|
|
|
|
activeItemIndex: 0 |
|
|
} |
|
|
} |
|
|
}, |
|
|
}, |
|
|
computed: { |
|
|
computed: { |
|
@ -414,15 +430,71 @@ export default { |
|
|
} |
|
|
} |
|
|
// 设备list |
|
|
// 设备list |
|
|
this.ReqDeviceList() |
|
|
this.ReqDeviceList() |
|
|
|
|
|
if (localStorage.getItem('releaseId')) { |
|
|
|
|
|
this.editRelease() |
|
|
|
|
|
} |
|
|
}, |
|
|
}, |
|
|
methods: { |
|
|
methods: { |
|
|
|
|
|
editRelease() { |
|
|
|
|
|
const release_id = JSON.parse(localStorage.getItem('releaseId')) |
|
|
|
|
|
const params = { |
|
|
|
|
|
release_id: release_id |
|
|
|
|
|
} |
|
|
|
|
|
FetchGetReleaseDetailsById(params).then(res => { |
|
|
|
|
|
if (res.code == 200) { |
|
|
|
|
|
console.log(res.data) |
|
|
|
|
|
const releaseInfo = res.data.release |
|
|
|
|
|
this.form.orga_id = releaseInfo.orgaId |
|
|
|
|
|
this.form.relaase_name = releaseInfo.relaaseName |
|
|
|
|
|
this.form.release_cycle = releaseInfo.releaseCycle |
|
|
|
|
|
if (this.form.release_cycle == 2) { |
|
|
|
|
|
this.selectWeekly = releaseInfo.releaseWeekly.split(',') |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
this.form.is_topping = releaseInfo.isTopping |
|
|
|
|
|
this.form.release_device = releaseInfo.releaseDevice |
|
|
|
|
|
if (releaseInfo.releaseType == 1) { |
|
|
|
|
|
const arr = [] |
|
|
|
|
|
arr.push(parseTime(releaseInfo.releaseStart)) |
|
|
|
|
|
arr.push(parseTime(releaseInfo.releaseEnd)) |
|
|
|
|
|
this.form.release_start = arr |
|
|
|
|
|
} else { |
|
|
|
|
|
this.form.release_start = parseTime(releaseInfo.releaseStart) |
|
|
|
|
|
} |
|
|
|
|
|
if (releaseInfo.actualEnd) { |
|
|
|
|
|
this.form.actual_end = releaseInfo.actualEnd |
|
|
|
|
|
} |
|
|
|
|
|
this.form.bgm_main = releaseInfo.bgmMain |
|
|
|
|
|
this.form.release_deviceDTOs = res.data.release_devices |
|
|
|
|
|
// 获取素材list |
|
|
|
|
|
const materialIds = [] |
|
|
|
|
|
res.data.release_materials.map((item) => { |
|
|
|
|
|
materialIds.push(item.materialId) |
|
|
|
|
|
}) |
|
|
|
|
|
const params = { |
|
|
|
|
|
ids: materialIds |
|
|
|
|
|
} |
|
|
|
|
|
FetchFindMaterialById(params).then(res => { |
|
|
|
|
|
if (res.code == 200) { |
|
|
|
|
|
console.log(res.data) |
|
|
|
|
|
this.selectedMaterial = res.data |
|
|
|
|
|
} |
|
|
|
|
|
}) |
|
|
|
|
|
} else { |
|
|
|
|
|
this.$message.error(res.msg) |
|
|
|
|
|
} |
|
|
|
|
|
}) |
|
|
|
|
|
}, |
|
|
// 发布提交 |
|
|
// 发布提交 |
|
|
releaseSubmit(formName) { |
|
|
releaseSubmit(formName) { |
|
|
this.$refs[formName].validate((valid) => { |
|
|
this.$refs[formName].validate((valid) => { |
|
|
if (valid) { |
|
|
if (valid) { |
|
|
this.form.orga_id = this.orga_id |
|
|
this.form.orga_id = this.orga_id |
|
|
|
|
|
// 发布类型 |
|
|
|
|
|
this.form.release_type = this.publishType |
|
|
// 先判断编辑还是新增 |
|
|
// 先判断编辑还是新增 |
|
|
this.form.actual_end = this.publishType == 0 ? null : '' |
|
|
this.form.actual_end = this.publishType == 0 ? null : '' |
|
|
|
|
|
// 设备选择判断 |
|
|
if (this.form.release_device) { |
|
|
if (this.form.release_device) { |
|
|
if (this.form.release_device == 1) { |
|
|
if (this.form.release_device == 1) { |
|
|
this.form.release_deviceDTOs = [] |
|
|
this.form.release_deviceDTOs = [] |
|
@ -438,8 +510,7 @@ export default { |
|
|
}) |
|
|
}) |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
this.form.release_type = this.publishType |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 根据发布类型 - 周期-时间 |
|
|
if (this.publishType == 0) { |
|
|
if (this.publishType == 0) { |
|
|
this.form.release_cycle = 0 |
|
|
this.form.release_cycle = 0 |
|
|
this.form.release_weekly = null |
|
|
this.form.release_weekly = null |
|
@ -453,6 +524,7 @@ export default { |
|
|
this.form.release_start = arrDate[0] |
|
|
this.form.release_start = arrDate[0] |
|
|
this.form.release_end = arrDate[1] |
|
|
this.form.release_end = arrDate[1] |
|
|
} |
|
|
} |
|
|
|
|
|
// 判断是否有localstorage有相应的list数据 |
|
|
if (this.selectedMaterial) { |
|
|
if (this.selectedMaterial) { |
|
|
this.form.release_materialDTOs = this.selectedMaterial.map((item, index) => { |
|
|
this.form.release_materialDTOs = this.selectedMaterial.map((item, index) => { |
|
|
const json = {} |
|
|
const json = {} |
|
@ -482,6 +554,7 @@ export default { |
|
|
} else { |
|
|
} else { |
|
|
this.form.bgm_main = null |
|
|
this.form.bgm_main = null |
|
|
} |
|
|
} |
|
|
|
|
|
// 保存提交 |
|
|
FetchSaveRelease(this.form).then(res => { |
|
|
FetchSaveRelease(this.form).then(res => { |
|
|
if (res.code == 200) { |
|
|
if (res.code == 200) { |
|
|
this.$message.success('发布成功!') |
|
|
this.$message.success('发布成功!') |
|
@ -494,10 +567,10 @@ export default { |
|
|
this.$message.error('请选择发布内容!') |
|
|
this.$message.error('请选择发布内容!') |
|
|
} |
|
|
} |
|
|
} else { |
|
|
} else { |
|
|
console.log('error submit!!'); |
|
|
|
|
|
return false; |
|
|
|
|
|
|
|
|
console.log('error submit!!') |
|
|
|
|
|
return false |
|
|
} |
|
|
} |
|
|
}); |
|
|
|
|
|
|
|
|
}) |
|
|
}, |
|
|
}, |
|
|
// 获取设备列表 |
|
|
// 获取设备列表 |
|
|
ReqDeviceList() { |
|
|
ReqDeviceList() { |
|
@ -596,7 +669,7 @@ export default { |
|
|
// 编辑-已选择的 |
|
|
// 编辑-已选择的 |
|
|
selectEdit() { |
|
|
selectEdit() { |
|
|
this.listEditVisible = true |
|
|
this.listEditVisible = true |
|
|
let form = { |
|
|
|
|
|
|
|
|
const form = { |
|
|
showTime: '15', |
|
|
showTime: '15', |
|
|
showAnimation: '', |
|
|
showAnimation: '', |
|
|
showAnimationName: '' |
|
|
showAnimationName: '' |
|
@ -687,7 +760,7 @@ export default { |
|
|
this.mulitText = '取消' |
|
|
this.mulitText = '取消' |
|
|
// 已选择的内容中-list是否包含,包含即选中状态 |
|
|
// 已选择的内容中-list是否包含,包含即选中状态 |
|
|
this.selectedMaterial.forEach(item => { |
|
|
this.selectedMaterial.forEach(item => { |
|
|
this.$refs.MaterialList.selectedListId.push(item.material_id) |
|
|
|
|
|
|
|
|
this.$refs.MaterialList.selectedListId.push(item.material_id || item.id) |
|
|
this.$refs.MaterialList.selectedMaterial.push(item) |
|
|
this.$refs.MaterialList.selectedMaterial.push(item) |
|
|
}) |
|
|
}) |
|
|
} else { |
|
|
} else { |
|
|