From ddb48bfe7d5faa430e793eb5fc03ac67d0c192e6 Mon Sep 17 00:00:00 2001 From: xuhuajiao <13476289682@163.com> Date: Tue, 29 Mar 2022 15:41:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=91=E5=B8=83=E5=88=97=E8=A1=A8-=E7=BC=96?= =?UTF-8?q?=E8=BE=91=E5=8F=91=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/material/material.js | 9 + src/api/release/release.js | 53 +++-- src/utils/index.js | 32 +++ .../components/MaterialCompontentList.vue | 24 +-- src/views/immediateRelease/index.vue | 187 ++++++++++++------ src/views/materialContent/index.vue | 10 +- .../materialContent/materialList/index.vue | 69 ++++--- src/views/publishContent/index.vue | 37 ++-- .../publishContent/publishList/index.vue | 148 +++++++++----- 9 files changed, 378 insertions(+), 191 deletions(-) diff --git a/src/api/material/material.js b/src/api/material/material.js index 9f2348f..ba43d87 100644 --- a/src/api/material/material.js +++ b/src/api/material/material.js @@ -62,3 +62,12 @@ export function getMaterialByType(parameter) { params: parameter }) } + +// 根据素材id获取素材 - 素材库 +export function FetchFindMaterialById(parameter) { + return request({ + url: 'api/material/findMaterialById', + method: 'post', + data: parameter + }) +} diff --git a/src/api/release/release.js b/src/api/release/release.js index 9c4247d..dc6262b 100644 --- a/src/api/release/release.js +++ b/src/api/release/release.js @@ -1,28 +1,55 @@ -import request from "@/utils/request"; +import request from '@/utils/request' // 编辑 - 发布信息 export function FetchSaveRelease(parameter) { return request({ - url: "api/release/saveRelease", - method: "post", - data: parameter, - }); + url: 'api/release/saveRelease', + method: 'post', + data: parameter + }) } // list - 发布 export function FetchGetReleaseList(parameter) { return request({ - url: "api/release/getReleaseList", - method: "get", - params: parameter, - }); + url: 'api/release/getReleaseList', + method: 'get', + params: parameter + }) } // 根据id查询发布详细信息 export function FetchGetReleaseDetailsById(parameter) { return request({ - url: "api/release/getReleaseDetailsById", - method: "get", - params: parameter, - }); + url: 'api/release/getReleaseDetailsById', + method: 'get', + params: parameter + }) +} + +// 改变发布状态 +export function FetchUpdateReleaseState(parameter) { + return request({ + url: 'api/release/updateReleaseState', + method: 'post', + data: parameter + }) +} + +// 删除发布信息 +export function FetchDeleteRelease(parameter) { + return request({ + url: 'api/release/deleteRelease', + method: 'post', + data: parameter + }) +} + +// 发布是否置顶 +export function FetchToppingRelease(parameter) { + return request({ + url: 'api/release/toppingRelease', + method: 'post', + data: parameter + }) } diff --git a/src/utils/index.js b/src/utils/index.js index 9074ae7..5bb196a 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -383,6 +383,22 @@ export function downloadFile(obj, name, suffix) { document.body.removeChild(link) } +export function getNowFormatDate() { + var date = new Date() + var seperator1 = '-' + var year = date.getFullYear() + var month = date.getMonth() + 1 + var strDate = date.getDate() + if (month >= 1 && month <= 9) { + month = '0' + month + } + if (strDate >= 0 && strDate <= 9) { + strDate = '0' + strDate + } + var currentdate = year + seperator1 + month + seperator1 + strDate + return currentdate +} + // 秒数转时分秒格式 h:m:s export function getSeconds(s) { if (s != null) { @@ -431,3 +447,19 @@ export function formatBytes(bytes, decimals) { var i = Math.floor(Math.log(bytes) / Math.log(k)) return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i] } + +// 将数字转成一,二 +export function setWeekly(str) { + const a = { + 1: '一', + 2: '二', + 3: '三', + 4: '四', + 5: '五', + 6: '六', + 7: '七' + } + if (str) { + return str.split(',').map(i => a[i]).join('/') + } +} diff --git a/src/views/components/MaterialCompontentList.vue b/src/views/components/MaterialCompontentList.vue index 428e901..3070711 100644 --- a/src/views/components/MaterialCompontentList.vue +++ b/src/views/components/MaterialCompontentList.vue @@ -33,7 +33,7 @@ export default { name: 'MaterialList', components: {}, filters: { - getSeconds (s) { + getSeconds(s) { return getSeconds(s) } }, @@ -47,7 +47,7 @@ export default { required: true } }, - data () { + data() { return { orga_id: '133221333123111', // 机构ID rootFolderId: null, // 根目录文件夹ID @@ -66,20 +66,20 @@ export default { } }, computed: { - changePlaceholder () { + changePlaceholder() { return this.publishType === 0 ? '即时发布 2022-01-01' : '定时发布 2022-01-01' }, - defaultImg () { + defaultImg() { return 'this.src="' + require('@/assets/images/menu_bg_02.png') + '"' } }, watch: { - isMultiSelected (newName, oldName) { + isMultiSelected(newName, oldName) { if (newName === false) { this.selectedListId = [] } }, - activeItemIndex (val) { + activeItemIndex(val) { if (val == 0) { this.materialType = null this.materialTypeNot = 2 @@ -89,12 +89,12 @@ export default { this.getMaterialList() } }, - mounted () { + mounted() { this.getMaterialList() }, methods: { // 获取素材库list - getMaterialList () { + getMaterialList() { this.materialFolders = [] this.materialList = [] let params @@ -149,14 +149,14 @@ export default { } }) }, - returnFolder () { + returnFolder() { this.isReturn = false this.isToFolder = false this.rootFolderId = localStorage.getItem('rootFolderId') this.getMaterialList() }, // 文件夹双击操作 - floderDbClick (item, index) { + floderDbClick(item, index) { this.isToFolder = true this.currentFolderId = item.id localStorage.setItem('currentFolderId', this.currentFolderId) @@ -164,8 +164,8 @@ export default { this.selectedListId = [] }, // 素材 - 多选 - checkedItem (item) { - let id = item.material_id + checkedItem(item) { + const id = item.material_id const inFolderId = item.in_folder_id const type = item.material_type const arr = this.selectedListId diff --git a/src/views/immediateRelease/index.vue b/src/views/immediateRelease/index.vue index 1063c12..4873351 100644 --- a/src/views/immediateRelease/index.vue +++ b/src/views/immediateRelease/index.vue @@ -21,15 +21,27 @@ 第一步:设置时间 - + ]" + label-width="100px" + > - + ]" + :class="['set_weekly',{'no_margin': form.release_cycle == 2}]" + label-width="100px" + > 每天 每周 @@ -61,16 +73,16 @@
-
- -
+
+ +
{{ materialPostfix[index] }} - {{ item.duration | getSeconds }} + {{ item.duration | getSeconds }}
-
{{ item.material_name }}
-
-
+
{{ item.material_name || item.name }}
+
+
@@ -90,12 +102,16 @@ 第三步:选择设备 - + ]" + > - 所有设备 - 部分设备添加 + 所有设备 + 部分设备添加
所有设备都将被发送
@@ -127,7 +143,7 @@
- +
@@ -243,10 +259,10 @@ import draggable from 'vuedraggable' import ThemeGalleryList from '../components/ThemeGalleryList.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 { 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 { name: 'ImmediateRelease', components: { @@ -255,14 +271,14 @@ export default { MaterialList }, filters: { - getSeconds (s) { + getSeconds(s) { return getSeconds(s) }, - formatBytes (bytes, decimals) { + formatBytes(bytes, decimals) { return formatBytes(bytes, decimals) } }, - data () { + data() { return { orga_id: '133221333123111', selectedMaterial: [], // 从其他页面选择带过来的素材 @@ -272,7 +288,7 @@ export default { page: 1, pageSize: 10, audioListData: [], // 音频list - isMainBgm: null, //是最外层的bgm还是里面的 + isMainBgm: null, // 是最外层的bgm还是里面的 selectDeviceVisible: false, // 设备list - layer deviceAllTags: [], // 设备list deviceTags: [], // 已选择设备list @@ -305,7 +321,7 @@ export default { // "rm_id": "关联id 新增则为null" // } release_materialDTOs: [], - release_start: '', // 发布开始时间 yyyy-MM-dd HH:mm:ss + release_start: null, // 发布开始时间 yyyy-MM-dd HH:mm:ss release_type: '' // 发布类型 }, contentIds: [], @@ -381,18 +397,18 @@ export default { } ], activeIndex: 0, - activeItemIndex: 0, + activeItemIndex: 0 } }, computed: { - changePlaceholder () { + changePlaceholder() { return this.publishType == 0 ? '即时发布 2022-01-01' : '定时发布 2022-01-01' }, - defaultImg () { + defaultImg() { return 'this.src="' + require('@/assets/images/menu_bg_02.png') + '"' } }, - created () { + created() { this.selectedMaterial = [] this.selectedMaterial = JSON.parse(localStorage.getItem('selectedMaterial')) // 素材类型格式处理 @@ -405,7 +421,7 @@ export default { }) } }, - mounted () { + mounted() { if (this.$route.path === '/release') { this.materialTabItem.pop() } @@ -414,15 +430,71 @@ export default { } // 设备list this.ReqDeviceList() + if (localStorage.getItem('releaseId')) { + this.editRelease() + } }, 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) => { if (valid) { this.form.orga_id = this.orga_id + // 发布类型 + this.form.release_type = this.publishType // 先判断编辑还是新增 this.form.actual_end = this.publishType == 0 ? null : '' + // 设备选择判断 if (this.form.release_device) { if (this.form.release_device == 1) { this.form.release_deviceDTOs = [] @@ -438,8 +510,7 @@ export default { }) } } - this.form.release_type = this.publishType - + // 根据发布类型 - 周期-时间 if (this.publishType == 0) { this.form.release_cycle = 0 this.form.release_weekly = null @@ -453,6 +524,7 @@ export default { this.form.release_start = arrDate[0] this.form.release_end = arrDate[1] } + // 判断是否有localstorage有相应的list数据 if (this.selectedMaterial) { this.form.release_materialDTOs = this.selectedMaterial.map((item, index) => { const json = {} @@ -482,6 +554,7 @@ export default { } else { this.form.bgm_main = null } + // 保存提交 FetchSaveRelease(this.form).then(res => { if (res.code == 200) { this.$message.success('发布成功!') @@ -494,13 +567,13 @@ export default { this.$message.error('请选择发布内容!') } } else { - console.log('error submit!!'); - return false; + console.log('error submit!!') + return false } - }); + }) }, // 获取设备列表 - ReqDeviceList () { + ReqDeviceList() { const params = { device_id: '', device_name: '', @@ -517,11 +590,11 @@ export default { }) }, // 设备list - show - addDeviceTag () { + addDeviceTag() { this.selectDeviceVisible = true }, // 设备选中list - tagHandle (tag) { + tagHandle(tag) { if (this.deviceTags.length == 0) { this.deviceTags.push(tag) } else { @@ -536,15 +609,15 @@ export default { } }, // 删除已选择的设备 - deltTags (tag) { + deltTags(tag) { this.deviceTags.splice(this.deviceTags.indexOf(tag), 1) }, // 清空已选择的设备 - clearDevice () { + clearDevice() { this.deviceTags = [] }, // 根据素材类型获取素材 - getMaterialByType () { + getMaterialByType() { const params = { 'theme_name': '', 'theme_type': this.themeType, @@ -572,7 +645,7 @@ export default { }) }, // 删除选择的素材 - selectDelt (id, i) { + selectDelt(id, i) { const index = this.contentIds.indexOf(id) this.contentIds.splice(index, 1) this.selectedEditData.splice(index, 1) @@ -580,7 +653,7 @@ export default { localStorage.setItem('selectedMaterial', JSON.stringify(this.selectedMaterial)) }, // 选中可编辑的 - clickMaterialItem (id, item) { + clickMaterialItem(id, item) { const arr = this.contentIds if (arr.includes(id)) { const index = arr.indexOf(id) @@ -594,9 +667,9 @@ export default { } }, // 编辑-已选择的 - selectEdit () { + selectEdit() { this.listEditVisible = true - let form = { + const form = { showTime: '15', showAnimation: '', showAnimationName: '' @@ -607,12 +680,12 @@ export default { } }) }, - dragEnd () { + dragEnd() { // console.log(this.selectedEditData) // console.log(this.selectedMaterial) }, // 选择音频 - selectAudioCont (type, index) { + selectAudioCont(type, index) { this.audioChecked = -1 this.thisEditIndex = index this.isMultiSelected = false @@ -624,7 +697,7 @@ export default { this.isMainBgm = type == 0 ? 0 : 1 }, // 音频选中-单选 - audioCheckedHandle (index) { + audioCheckedHandle(index) { if (index != this.audioChecked) { this.audioChecked = index } else { @@ -632,7 +705,7 @@ export default { } }, // 音频选中 - 提交 - audioCheckedSubmit () { + audioCheckedSubmit() { this.selectAudioVisible = false if (this.audioChecked != -1) { const index = this.audioChecked @@ -657,37 +730,37 @@ export default { } }, // 时间设置-切换到每天时 - clearCheckbox () { + clearCheckbox() { if (this.form.release_cycle == 2) { this.selectWeekly = [] this.form.release_weekly = [] } }, // 动画切换 - selectAnimation (event, item) { + selectAnimation(event, item) { item.showAnimationName = event.name item.showAnimation = event.key }, // 选择内容-素材库/主题库 tab - tabAll (index) { + tabAll(index) { this.activeIndex = index this.activeItemIndex = 0 this.isMultiSelected = false this.mulitText = '多选' }, // 子菜单-tab - tabItem (index) { + tabItem(index) { this.activeItemIndex = index console.log(this.activeItemIndex) }, // 多选btn - multiSelectBtn (type) { + multiSelectBtn(type) { this.isMultiSelected = !this.isMultiSelected if (this.isMultiSelected) { this.mulitText = '取消' // 已选择的内容中-list是否包含,包含即选中状态 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) }) } else { @@ -700,7 +773,7 @@ export default { } }, // 素材选择 - 确认按钮 - uploadSelected () { + uploadSelected() { this.selectContVisible = false this.selectedMaterial = [] this.selectedMaterial = this.$refs.MaterialList.selectedMaterial @@ -715,7 +788,7 @@ export default { this.mulitText = '多选' }, // 素材选择 - 取消按钮 - cancelContSelect (type) { + cancelContSelect(type) { this.isMultiSelected = false if (type == 'audio') { this.selectAudioVisible = false diff --git a/src/views/materialContent/index.vue b/src/views/materialContent/index.vue index 81af03e..ffc60ef 100644 --- a/src/views/materialContent/index.vue +++ b/src/views/materialContent/index.vue @@ -39,7 +39,7 @@ import MaterialList from './materialList/index' export default { name: 'MaterialContent', components: { MaterialList }, - data () { + data() { return { activeIndex: 0, isMultiSelected: false, @@ -47,18 +47,18 @@ export default { } }, methods: { - handleClick (tab) { + handleClick(tab) { console.log(tab.index) }, - handleUpload () { + handleUpload() { this.$refs.MaterialList.UploadList() }, - multiSelectBtn () { + multiSelectBtn() { this.isMultiSelected = !this.isMultiSelected this.mulitText = this.isMultiSelected ? '取消' : '多选' }, // 有选择中的文件夹时,同时存在素材多选操作时,素材多选操作取消 - changedMultiSelected () { + changedMultiSelected() { if (this.isMultiSelected) { this.isMultiSelected = false this.mulitText = '多选' diff --git a/src/views/materialContent/materialList/index.vue b/src/views/materialContent/materialList/index.vue index c6fedd6..2c01d79 100644 --- a/src/views/materialContent/materialList/index.vue +++ b/src/views/materialContent/materialList/index.vue @@ -28,7 +28,7 @@
-
+
{{ materialPostfix[index] }} {{ item.duration | getSeconds }} @@ -42,9 +42,13 @@
- + ]" + > @@ -97,7 +101,7 @@