Browse Source

编辑发布

dev
xuhuajiao 5 years ago
parent
commit
972f4b5212
  1. 8
      src/utils/index.js
  2. 19
      src/views/ThemeGallery/index.vue
  3. 20
      src/views/components/MaterialCompontentList.vue
  4. 116
      src/views/immediateRelease/index.vue
  5. 16
      src/views/materialContent/materialList/index.vue
  6. 48
      src/views/publishContent/urgentMessage/index.vue

8
src/utils/index.js

@ -383,6 +383,7 @@ export function downloadFile(obj, name, suffix) {
document.body.removeChild(link) document.body.removeChild(link)
} }
// 获取当天的日期
export function getNowFormatDate() { export function getNowFormatDate() {
var date = new Date() var date = new Date()
var seperator1 = '-' var seperator1 = '-'
@ -463,3 +464,10 @@ export function setWeekly(str) {
return str.split(',').map(i => a[i]).join('/') return str.split(',').map(i => a[i]).join('/')
} }
} }
// 根据url获取文件格式
export function getFileFormat(str) {
if (str) {
return str.substring(str.lastIndexOf('.') + 1, str.length)
}
}

19
src/views/ThemeGallery/index.vue

@ -41,7 +41,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="所属机构" prop="is_all_name"> <el-form-item label="所属机构" prop="is_all_name">
<el-select v-model="classifyForm.is_all_name" style="width: 360px;" @change="selectorganization" value-key="name">
<el-select v-model="classifyForm.is_all_name" style="width: 360px;" value-key="name" @change="selectorganization">
<el-option v-for="item in options" :key="item.key" :label="item.name" :value="item" /> <el-option v-for="item in options" :key="item.key" :label="item.name" :value="item" />
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -57,7 +57,7 @@
</template> </template>
<script> <script>
import { reqHeaderList, reqAddOrEdit } from "@/api/theme/theme.js";
import { reqHeaderList, reqAddOrEdit } from '@/api/theme/theme.js'
import ThemeGalleryList from '../components/ThemeGalleryList.vue' import ThemeGalleryList from '../components/ThemeGalleryList.vue'
export default { export default {
name: 'ThemeGallery', name: 'ThemeGallery',
@ -83,7 +83,7 @@ export default {
is_all_name: '', is_all_name: '',
is_all: false, is_all: false,
id: '', id: '',
orga_ids: ["133221333123111"],
orga_ids: ['133221333123111'],
selectName: null, selectName: null,
direction: null, direction: null,
selectNameList: [] selectNameList: []
@ -117,8 +117,7 @@ export default {
// 导航栏的lsit // 导航栏的lsit
tabItem: [], tabItem: [],
activeIndex: 0,
activeIndex: 0
} }
}, },
@ -131,7 +130,6 @@ export default {
reqHeaderList(orga_id).then(res => { reqHeaderList(orga_id).then(res => {
if (res.code == 200) { if (res.code == 200) {
this.tabItem = res.data this.tabItem = res.data
} }
}) })
}, },
@ -175,7 +173,6 @@ export default {
} else { } else {
this.classifyForm.is_all_name == '武汉图书馆' this.classifyForm.is_all_name == '武汉图书馆'
} }
} else { } else {
this.layerTitle = '新增' this.layerTitle = '新增'
this.isAddEdit = 0 this.isAddEdit = 0
@ -183,13 +180,11 @@ export default {
this.classifyForm.class_name = '' this.classifyForm.class_name = ''
this.classifyForm.is_all_name = '' this.classifyForm.is_all_name = ''
} }
}, },
// 上传 // 上传
upload() { upload() {
// 通知子组件发请求 // 通知子组件发请求
this.$refs.ThemeGalleryList.saveMaterial() this.$refs.ThemeGalleryList.saveMaterial()
}, },
selectName(vId) { selectName(vId) {
this.classifyForm.id = vId.id this.classifyForm.id = vId.id
@ -208,7 +203,7 @@ export default {
class_name: this.classifyForm.class_name, class_name: this.classifyForm.class_name,
is_all: this.classifyForm.is_all, is_all: this.classifyForm.is_all,
id: this.classifyForm.id, id: this.classifyForm.id,
orga_ids: ["133221333123111"],
orga_ids: ['133221333123111']
} }
reqAddOrEdit(params).then(res => { reqAddOrEdit(params).then(res => {
if (res.code == 200) { if (res.code == 200) {
@ -218,8 +213,6 @@ export default {
}) })
this.addDialogVisible = false this.addDialogVisible = false
this.getHeaderList() this.getHeaderList()
} }
}) })
} else { } else {
@ -243,7 +236,7 @@ export default {
tabItemClick(tab, event) { tabItemClick(tab, event) {
console.log(this.themeItemActive) console.log(this.themeItemActive)
console.log(tab, event) console.log(tab, event)
},
}
} }
} }

20
src/views/components/MaterialCompontentList.vue

@ -15,9 +15,9 @@
</div> </div>
<div v-for="(item, index) in materialList" :key="'list-'+index" :class="['material_item', 'item_cont', { 'item_multi': selectedListId.includes(item.material_id) }]"> <div v-for="(item, index) in materialList" :key="'list-'+index" :class="['material_item', 'item_cont', { 'item_multi': selectedListId.includes(item.material_id) }]">
<img v-if="item.img_path || item.material_type == 1" :src="item.img_path" :onerror="defaultImg" alt /> <img v-if="item.img_path || item.material_type == 1" :src="item.img_path" :onerror="defaultImg" alt />
<div v-if="item.material_type == 2" class="radio_img"></div>
<div v-if="!item.img_path && item.material_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">{{ item.deposit_url | getFileFormat }}</span>
<span v-if="item.material_type !== '0'" class="item_time">{{ item.duration | getSeconds }}</span> <span v-if="item.material_type !== '0'" class="item_time">{{ item.duration | getSeconds }}</span>
</div> </div>
<div class="file_name">{{ item.material_name }}</div> <div class="file_name">{{ item.material_name }}</div>
@ -28,13 +28,16 @@
<script> <script>
import { getMaterialList } from '@/api/material/material' import { getMaterialList } from '@/api/material/material'
import { getSeconds } from '@/utils/index.js'
import { getSeconds, getFileFormat } from '@/utils/index.js'
export default { export default {
name: 'MaterialList', name: 'MaterialList',
components: {}, components: {},
filters: { filters: {
getSeconds(s) { getSeconds(s) {
return getSeconds(s) return getSeconds(s)
},
getFileFormat(str) {
return getFileFormat(str)
} }
}, },
props: { props: {
@ -56,7 +59,6 @@ export default {
materialList: [], // 素材库list materialList: [], // 素材库list
materialType: null, materialType: null,
materialTypeNot: null, materialTypeNot: null,
materialPostfix: [], // 文件后缀格式
selectedMaterial: [], // 素材选中 selectedMaterial: [], // 素材选中
selectedListId: [], // 素材选中的material_id selectedListId: [], // 素材选中的material_id
selectinFolderid: [], // 素材选中的和文件关联表id -- in_folder_id selectinFolderid: [], // 素材选中的和文件关联表id -- in_folder_id
@ -80,6 +82,7 @@ export default {
} }
}, },
activeItemIndex(val) { activeItemIndex(val) {
console.log(val)
if (val == 0) { if (val == 0) {
this.materialType = null this.materialType = null
this.materialTypeNot = 2 this.materialTypeNot = 2
@ -90,6 +93,7 @@ export default {
} }
}, },
mounted() { mounted() {
this.materialTypeNot = 2
this.getMaterialList() this.getMaterialList()
}, },
methods: { methods: {
@ -131,16 +135,8 @@ export default {
} }
this.materialFolders = res.data.materialFolders this.materialFolders = res.data.materialFolders
this.materialList = res.data.pageThemeVO this.materialList = res.data.pageThemeVO
// 创建文件夹获取data // 创建文件夹获取data
this.thisFoldId = res.data.thisFoldId this.thisFoldId = res.data.thisFoldId
// 素材类型格式处理
this.materialList.forEach((item, key) => {
this.materialPostfix[key] = item.deposit_url.substring(
item.deposit_url.lastIndexOf('.') + 1,
item.deposit_url.length
)
})
} else { } else {
this.$message({ this.$message({
message: res.msg, message: res.msg,

116
src/views/immediateRelease/index.vue

@ -77,7 +77,7 @@
<img v-if="(item.img_path|| item.imgPath) || (item.material_type == 1 || item.type == 1)" :src="(item.img_path||item.imgPath)" :onerror="defaultImg" alt /> <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 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">{{ (item.deposit_url || item.depositUrl) | getFileFormat }}</span>
<span v-if="item.material_type != '0' || item.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 || item.name }}</div> <div class="file_name">{{ item.material_name || item.name }}</div>
@ -122,8 +122,8 @@
<el-button round class="delt_btn" @click="clearDevice()">清空</el-button> <el-button round class="delt_btn" @click="clearDevice()">清空</el-button>
</el-col> </el-col>
</el-row> </el-row>
<el-tag v-for="tag in deviceTags" :key="tag.device_id" closable :disable-transitions="true" :hit="false" color="#cbe3ff" @close="deltTags(tag)">
{{ tag.device_name }}
<el-tag v-for="tag in deviceTags" :key="(tag.device_id || tag.deviceId)" closable :disable-transitions="true" :hit="false" color="#cbe3ff" @close="deltTags(tag)">
{{ tag.device_name || tag.deviceName }}
</el-tag> </el-tag>
</div> </div>
</el-col> </el-col>
@ -168,18 +168,20 @@
</div> </div>
<div v-for="(item, index) in selectedEditData" :key="index" class="edit_material"> <div v-for="(item, index) in selectedEditData" :key="index" class="edit_material">
<div class="edit_img"> <div class="edit_img">
<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>
<!-- <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> -->
<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>
<span class="">{{ index+1 }}</span> <span class="">{{ index+1 }}</span>
</div> </div>
<div class="edit_cont"> <div class="edit_cont">
<div class="edit_cont_base"> <div class="edit_cont_base">
<p>{{ item.material_name }}</p>
<span>{{ materialPostfix[index] }}</span>
<span>{{ item.file_size | formatBytes }}</span>
<p>{{ item.material_name || item.name }}</p>
<span>{{ (item.deposit_url || item.depositUrl) | getFileFormat }}</span>
<span>{{ (item.file_size||item.fileSize) | formatBytes }}</span>
</div> </div>
<!-- <div v-if="item.material_type == 0" class="edit_cont_set"> --> <!-- <div v-if="item.material_type == 0" class="edit_cont_set"> -->
<el-form v-if="item.material_type == 0" :ref="setMaterialForm" :model="setMaterialForm.form" class="edit_cont_set" size="small">
<el-form v-if="item.material_type == 0 || item.type == 0" :ref="setMaterialForm" :model="setMaterialForm.form" class="edit_cont_set" size="small">
<div class="set_time"> <div class="set_time">
<span>展示时长</span> <span>展示时长</span>
<el-form-item :prop="'form.'+index+'.showTime'" style="width: 100px"> <el-form-item :prop="'form.'+index+'.showTime'" style="width: 100px">
@ -262,7 +264,7 @@ import MaterialList from '../components/MaterialCompontentList.vue'
import { getMaterialByType, FetchFindMaterialById } 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, FetchGetReleaseDetailsById } from '@/api/release/release.js' import { FetchSaveRelease, FetchGetReleaseDetailsById } from '@/api/release/release.js'
import { getSeconds, formatBytes, parseTime } from '@/utils/index.js'
import { getSeconds, formatBytes, parseTime, getFileFormat } from '@/utils/index.js'
export default { export default {
name: 'ImmediateRelease', name: 'ImmediateRelease',
components: { components: {
@ -276,13 +278,15 @@ export default {
}, },
formatBytes(bytes, decimals) { formatBytes(bytes, decimals) {
return formatBytes(bytes, decimals) return formatBytes(bytes, decimals)
},
getFileFormat(str) {
return getFileFormat(str)
} }
}, },
data() { data() {
return { return {
orga_id: '133221333123111', orga_id: '133221333123111',
selectedMaterial: [], // 从其他页面选择带过来的素材 selectedMaterial: [], // 从其他页面选择带过来的素材
materialPostfix: [],
publishType: 0, // 判断是定时发布还是即时发布页面 publishType: 0, // 判断是定时发布还是即时发布页面
themeType: null, themeType: null,
page: 1, page: 1,
@ -309,17 +313,6 @@ export default {
release_deviceDTOs: [], // {"device_id": "设备id"} release_deviceDTOs: [], // {"device_id": "设备id"}
release_end: '', // “发布结束时间 yyyy-MM-dd HH:mm:ss” release_end: '', // “发布结束时间 yyyy-MM-dd HH:mm:ss”
release_id: null, // 发布id 为null则为新增 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_materialDTOs: [],
release_start: null, // 发布开始时间 yyyy-MM-dd HH:mm:ss release_start: null, // 发布开始时间 yyyy-MM-dd HH:mm:ss
release_type: '' // 发布类型 release_type: '' // 发布类型
@ -397,7 +390,10 @@ export default {
} }
], ],
activeIndex: 0, activeIndex: 0,
activeItemIndex: 0
activeItemIndex: 0,
release_id: null,
releaseInfo: null,
isEditMaterial: []
} }
}, },
computed: { computed: {
@ -411,15 +407,6 @@ export default {
created() { created() {
this.selectedMaterial = [] this.selectedMaterial = []
this.selectedMaterial = JSON.parse(localStorage.getItem('selectedMaterial')) this.selectedMaterial = JSON.parse(localStorage.getItem('selectedMaterial'))
// 素材类型格式处理
if (this.selectedMaterial) {
this.selectedMaterial.forEach((item, key) => {
this.materialPostfix[key] = item.deposit_url.substring(
item.deposit_url.lastIndexOf('.') + 1,
item.deposit_url.length
)
})
}
}, },
mounted() { mounted() {
if (this.$route.path === '/release') { if (this.$route.path === '/release') {
@ -437,22 +424,23 @@ export default {
methods: { methods: {
editRelease() { editRelease() {
const release_id = JSON.parse(localStorage.getItem('releaseId')) const release_id = JSON.parse(localStorage.getItem('releaseId'))
this.release_id = release_id
const params = { const params = {
release_id: release_id release_id: release_id
} }
FetchGetReleaseDetailsById(params).then(res => { FetchGetReleaseDetailsById(params).then(res => {
if (res.code == 200) { if (res.code == 200) {
console.log(res.data)
const releaseInfo = res.data.release const releaseInfo = res.data.release
this.releaseInfo = releaseInfo
this.form.orga_id = releaseInfo.orgaId this.form.orga_id = releaseInfo.orgaId
this.form.relaase_name = releaseInfo.relaaseName this.form.relaase_name = releaseInfo.relaaseName
this.form.release_cycle = releaseInfo.releaseCycle this.form.release_cycle = releaseInfo.releaseCycle
if (this.form.release_cycle == 2) { if (this.form.release_cycle == 2) {
if (releaseInfo.releaseWeekly) {
this.selectWeekly = releaseInfo.releaseWeekly.split(',') this.selectWeekly = releaseInfo.releaseWeekly.split(',')
} }
}
this.form.is_topping = releaseInfo.isTopping this.form.is_topping = releaseInfo.isTopping
this.form.release_device = releaseInfo.releaseDevice
if (releaseInfo.releaseType == 1) { if (releaseInfo.releaseType == 1) {
const arr = [] const arr = []
arr.push(parseTime(releaseInfo.releaseStart)) arr.push(parseTime(releaseInfo.releaseStart))
@ -461,13 +449,12 @@ export default {
} else { } else {
this.form.release_start = parseTime(releaseInfo.releaseStart) this.form.release_start = parseTime(releaseInfo.releaseStart)
} }
if (releaseInfo.actualEnd) {
this.form.actual_end = releaseInfo.actualEnd
}
this.form.bgm_main = releaseInfo.bgmMain this.form.bgm_main = releaseInfo.bgmMain
this.form.release_deviceDTOs = res.data.release_devices this.form.release_deviceDTOs = res.data.release_devices
// 获取素材list // 获取素材list
const materialIds = [] const materialIds = []
this.isEditMaterial = res.data.release_materials
res.data.release_materials.map((item) => { res.data.release_materials.map((item) => {
materialIds.push(item.materialId) materialIds.push(item.materialId)
}) })
@ -476,10 +463,12 @@ export default {
} }
FetchFindMaterialById(params).then(res => { FetchFindMaterialById(params).then(res => {
if (res.code == 200) { if (res.code == 200) {
console.log(res.data)
this.selectedMaterial = res.data this.selectedMaterial = res.data
} }
}) })
// 设备list
this.form.release_device = releaseInfo.releaseDevice
this.deviceTags = res.data.release_devices
} else { } else {
this.$message.error(res.msg) this.$message.error(res.msg)
} }
@ -492,8 +481,16 @@ export default {
this.form.orga_id = this.orga_id this.form.orga_id = this.orga_id
// 发布类型 // 发布类型
this.form.release_type = this.publishType this.form.release_type = this.publishType
// 先判断编辑还是新增
this.form.actual_end = this.publishType == 0 ? null : ''
// 实际结束时间
if (this.release_id) {
if (this.releaseInfo.actualEnd) {
this.form.actual_end = this.releaseInfo.actualEnd
}
this.form.release_id = this.release_id
} else {
this.form.actual_end = null
this.form.release_id = null
}
// 设备选择判断 // 设备选择判断
if (this.form.release_device) { if (this.form.release_device) {
if (this.form.release_device == 1) { if (this.form.release_device == 1) {
@ -505,7 +502,7 @@ export default {
} }
this.form.release_deviceDTOs = this.deviceTags.map(item => { this.form.release_deviceDTOs = this.deviceTags.map(item => {
const json = {} const json = {}
json.device_id = item.device_id
json.device_id = item.device_id || item.deviceId
return json return json
}) })
} }
@ -528,7 +525,7 @@ export default {
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 = {}
if (item.material_type == 0) {
if (item.material_type == 0 || item.type == 0) {
json.duration = (item.showTime || item.showAnimationName || item.showAnimation) ? item.showTime : 15 json.duration = (item.showTime || item.showAnimationName || item.showAnimation) ? item.showTime : 15
json.effect = (item.showTime || item.showAnimationName || item.showAnimation) ? item.showAnimation : 0 json.effect = (item.showTime || item.showAnimationName || item.showAnimation) ? item.showAnimation : 0
json.bgm_path = (item.showAudioName || item.showAudioUrl) ? item.showAudioUrl : null json.bgm_path = (item.showAudioName || item.showAudioUrl) ? item.showAudioUrl : null
@ -537,17 +534,21 @@ export default {
json.effect = 0 json.effect = 0
json.bgm_path = null json.bgm_path = null
} }
json.material_id = item.material_id
json.material_name = item.material_name
json.img_path = item.img_path
json.file_size = item.file_size
json.material_id = item.material_id || item.id
json.material_name = item.material_name || item.name
json.img_path = item.img_path || item.imgPath
json.file_size = item.file_size || item.fileSize
if (this.release_id) {
json.rm_id = this.isEditMaterial[index].id
} else {
json.rm_id = null json.rm_id = null
}
json.ranking = index + 1 json.ranking = index + 1
return json return json
}) })
// 判断最外层是否有bgm // 判断最外层是否有bgm
const isBgm = this.selectedMaterial.find(item => { const isBgm = this.selectedMaterial.find(item => {
return item.material_type == 2
return item.material_type == 2 || item.type == 2
}) })
if (isBgm) { if (isBgm) {
this.form.bgm_main = isBgm.deposit_url this.form.bgm_main = isBgm.deposit_url
@ -599,7 +600,7 @@ export default {
this.deviceTags.push(tag) this.deviceTags.push(tag)
} else { } else {
const result = this.deviceTags.find((item) => { const result = this.deviceTags.find((item) => {
return item == tag
return (item.device_id || item.deviceId) == tag.device_id
}) })
if (!result) { if (!result) {
this.deviceTags.push(tag) this.deviceTags.push(tag)
@ -629,13 +630,6 @@ export default {
getMaterialByType(params).then(res => { getMaterialByType(params).then(res => {
if (res.code == 200) { if (res.code == 200) {
this.audioListData = res.data.content this.audioListData = res.data.content
// 素材类型格式处理
this.audioListData.forEach((item, key) => {
this.materialPostfix[key] = item.deposit_url.substring(
item.deposit_url.lastIndexOf('.') + 1,
item.deposit_url.length
)
})
} else { } else {
this.$message({ this.$message({
message: res.msg, message: res.msg,
@ -712,7 +706,7 @@ export default {
if (!this.isMainBgm) { if (!this.isMainBgm) {
this.audioListData[index].material_type = 2 this.audioListData[index].material_type = 2
const resultIndex = this.selectedMaterial.findIndex((item, key) => { const resultIndex = this.selectedMaterial.findIndex((item, key) => {
return item.material_type == 2
return item.material_type == 2 || item.type == 2
}) })
if (resultIndex == -1) { if (resultIndex == -1) {
this.selectedMaterial.push(this.audioListData[index]) this.selectedMaterial.push(this.audioListData[index])
@ -751,7 +745,6 @@ export default {
// 子菜单-tab // 子菜单-tab
tabItem(index) { tabItem(index) {
this.activeItemIndex = index this.activeItemIndex = index
console.log(this.activeItemIndex)
}, },
// 多选btn // 多选btn
multiSelectBtn(type) { multiSelectBtn(type) {
@ -777,13 +770,6 @@ export default {
this.selectContVisible = false this.selectContVisible = false
this.selectedMaterial = [] this.selectedMaterial = []
this.selectedMaterial = this.$refs.MaterialList.selectedMaterial this.selectedMaterial = this.$refs.MaterialList.selectedMaterial
// 素材类型格式处理
this.selectedMaterial.forEach((item, key) => {
this.materialPostfix[key] = item.deposit_url.substring(
item.deposit_url.lastIndexOf('.') + 1,
item.deposit_url.length
)
})
localStorage.setItem('selectedMaterial', JSON.stringify(this.selectedMaterial)) localStorage.setItem('selectedMaterial', JSON.stringify(this.selectedMaterial))
this.mulitText = '多选' this.mulitText = '多选'
}, },

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

@ -29,7 +29,7 @@
<img v-if="item.img_path || item.material_type == 1" :src="item.img_path" :onerror="defaultImg" alt /> <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-if="!item.img_path && item.material_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">{{ item.deposit_url | getFileFormat }}</span>
<span v-if="item.material_type !== '0'" class="item_time">{{ item.duration | getSeconds }}</span> <span v-if="item.material_type !== '0'" class="item_time">{{ item.duration | getSeconds }}</span>
</div> </div>
<div class="file_name">{{ item.material_name }}</div> <div class="file_name">{{ item.material_name }}</div>
@ -103,13 +103,16 @@
import { getMaterialList, saveMaterialFolder, deleteMaterialFolder, saveMaterial, deleteMyMaterial, moveMyMaterial } from '@/api/material/material' import { getMaterialList, saveMaterialFolder, deleteMaterialFolder, saveMaterial, deleteMyMaterial, moveMyMaterial } from '@/api/material/material'
import Upload from '../../components/upload' import Upload from '../../components/upload'
import UploadCover from '../../components/upload_cover' import UploadCover from '../../components/upload_cover'
import { getSeconds } from '@/utils/index.js'
import { getSeconds, getFileFormat } from '@/utils/index.js'
export default { export default {
name: 'Material', name: 'Material',
components: { Upload, UploadCover }, components: { Upload, UploadCover },
filters: { filters: {
getSeconds(s) { getSeconds(s) {
return getSeconds(s) return getSeconds(s)
},
getFileFormat(s) {
return getFileFormat(s)
} }
}, },
props: { props: {
@ -140,7 +143,6 @@ export default {
formatType: null, // 上传素材类型 0 img 1 video 2 audio formatType: null, // 上传素材类型 0 img 1 video 2 audio
materialId: null, // 编辑时需要参数 id materialId: null, // 编辑时需要参数 id
materialImgPath: '', // 素材封面 materialImgPath: '', // 素材封面
materialPostfix: [], // 文件后缀格式
materialDuration: 0, // 时长 materialDuration: 0, // 时长
materialName: '', // 素材名称 materialName: '', // 素材名称
uploadFileUrl: null, // 素材保存路径 uploadFileUrl: null, // 素材保存路径
@ -216,14 +218,6 @@ export default {
this.materialList = res.data.pageThemeVO this.materialList = res.data.pageThemeVO
// 创建文件夹获取data // 创建文件夹获取data
this.thisFoldId = res.data.thisFoldId this.thisFoldId = res.data.thisFoldId
// 素材类型格式处理
this.materialList.forEach((item, key) => {
this.materialPostfix[key] = item.deposit_url.substring(
item.deposit_url.lastIndexOf('.') + 1,
item.deposit_url.length
)
// item.material_name = item.material_name.split('.')[0]
})
}) })
}, },
// 新建 / 编辑 文件夹 // 新建 / 编辑 文件夹

48
src/views/publishContent/urgentMessage/index.vue

@ -42,41 +42,65 @@
<div class="publish_layer"> <div class="publish_layer">
<el-dialog :title="form.notice_id==null? '紧急发布':'编辑'" :close-on-click-modal="false" :show-close="false" :visible.sync="messageVisible" width="872px"> <el-dialog :title="form.notice_id==null? '紧急发布':'编辑'" :close-on-click-modal="false" :show-close="false" :visible.sync="messageVisible" width="872px">
<el-form ref="form" :model="form" size="small" label-width="100px"> <el-form ref="form" :model="form" size="small" label-width="100px">
<el-form-item label="文本颜色" prop="context_color" :rules="[
<el-form-item
label="文本颜色"
prop="context_color"
:rules="[
{ required: true, message: '请选择文本颜色', trigger: '' }, { required: true, message: '请选择文本颜色', trigger: '' },
]">
]"
>
<colorPicker v-model="form.context_color" class="txt_color" @change="headleChangeColor" /> <colorPicker v-model="form.context_color" class="txt_color" @change="headleChangeColor" />
<el-input v-show="false" v-model="form.context_color" /> <el-input v-show="false" v-model="form.context_color" />
</el-form-item> </el-form-item>
<el-form-item label="文本内容" prop="context" :rules="[
<el-form-item
label="文本内容"
prop="context"
:rules="[
{ required: true, message: '请输入文本内容', trigger: 'blur' }, { required: true, message: '请输入文本内容', trigger: 'blur' },
]">
]"
>
<el-input v-model="form.context" type="textarea" rows="6" style="width: 674px" /> <el-input v-model="form.context" type="textarea" rows="6" style="width: 674px" />
</el-form-item> </el-form-item>
<el-form-item label="文本大小" prop="context_size_name" :rules="[
<el-form-item
label="文本大小"
prop="context_size_name"
:rules="[
{ required: true, message: '请选择文本大小', trigger: 'change' }, { required: true, message: '请选择文本大小', trigger: 'change' },
]">
]"
>
<el-select v-model="form.context_size_name" size="small" class="filter-item" @change="selectSize"> <el-select v-model="form.context_size_name" size="small" class="filter-item" @change="selectSize">
<el-option v-for="item in sizeData" :key="item.key" :label="item.name" :value="item" /> <el-option v-for="item in sizeData" :key="item.key" :label="item.name" :value="item" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="文本位置" prop="context_position_name" :rules="[
<el-form-item
label="文本位置"
prop="context_position_name"
:rules="[
{ required: true, message: '请选择文本位置', trigger: 'change' }, { required: true, message: '请选择文本位置', trigger: 'change' },
]">
]"
>
<el-select v-model="form.context_position_name" size="small" value-key="name" class="filter-item" @change="selectPosition"> <el-select v-model="form.context_position_name" size="small" value-key="name" class="filter-item" @change="selectPosition">
<el-option v-for="item in positionData" :key="item.key" :label="item.name" :value="item" /> <el-option v-for="item in positionData" :key="item.key" :label="item.name" :value="item" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="滚动速度" prop="context_speed_name" :rules="[
<el-form-item
label="滚动速度"
prop="context_speed_name"
:rules="[
{ required: true, message: '请选择滚动速度', trigger: 'change' }, { required: true, message: '请选择滚动速度', trigger: 'change' },
]">
]"
>
<el-select v-model="form.context_speed_name" size="small" class="filter-item" @change="selectSpeed"> <el-select v-model="form.context_speed_name" size="small" class="filter-item" @change="selectSpeed">
<el-option v-for="item in speedData" :key="item.key" :label="item.name" :value="item" /> <el-option v-for="item in speedData" :key="item.key" :label="item.name" :value="item" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="选择设备" prop="notice_device" :rules="[
<el-form-item
label="选择设备"
prop="notice_device"
:rules="[
{ required: true, message: '请选择设备', trigger: 'change' }, { required: true, message: '请选择设备', trigger: 'change' },
]">
]"
>
<el-radio-group v-model="form.notice_device" @change="clearCheckbox()"> <el-radio-group v-model="form.notice_device" @change="clearCheckbox()">
<el-radio :label="1" value="all">所有设备</el-radio> <el-radio :label="1" value="all">所有设备</el-radio>
<el-radio :label="2" value="other">部分设备<i v-if="form.notice_device === 2" class="radio_tip" @click="addDeviceTag()">添加</i></el-radio> <el-radio :label="2" value="other">部分设备<i v-if="form.notice_device === 2" class="radio_tip" @click="addDeviceTag()">添加</i></el-radio>

Loading…
Cancel
Save