Browse Source

数字大屏

master
xuhuajiao 4 weeks ago
parent
commit
ef631818b4
  1. 51
      src/api/digitalScreen/index.js
  2. 1
      src/assets/styles/digitalScreen.scss
  3. 6
      src/views/components/upload.vue
  4. 15
      src/views/digitalScreen/index.vue
  5. 217
      src/views/digitalScreen/module/advSetting.vue
  6. 5
      src/views/digitalScreen/module/areaSetting.vue
  7. 269
      src/views/digitalScreen/module/mediaSetting.vue
  8. 2
      src/views/system/menu/index.vue
  9. 2
      src/views/system/role/index.vue

51
src/api/digitalScreen/index.js

@ -77,6 +77,50 @@ export function FetchInitScreenNotice(params) {
})
}
// 编辑智慧大屏公告
export function FetchEditScreenNotice(parameter) {
return request({
url: 'api/screenSetting/editScreenNotice',
method: 'post',
data: parameter
})
}
// 删除智慧大屏公告
export function FetchDeleteScreenNotice(parameter) {
return request({
url: 'api/screenSetting/deleteScreenNotice',
method: 'post',
data: parameter
})
}
// 智慧大屏欢迎屏宣传图片列表
export function FetchInitScreenWelcomePromotion(params) {
return request({
url: 'api/screenSetting/initScreenWelcomePromotion' + '?' + qs.stringify(params, { indices: false }),
method: 'get'
})
}
// 编辑智慧大屏欢迎屏宣传图片
export function FetchEditScreenWelcomePromotion(parameter) {
return request({
url: 'api/screenSetting/editScreenWelcomePromotion',
method: 'post',
data: parameter
})
}
// 删除智慧大屏欢迎屏宣传图片
export function FetchDeleteScreenWelcomePromotion(parameter) {
return request({
url: 'api/screenSetting/deleteScreenWelcomePromotion',
method: 'post',
data: parameter
})
}
export default {
FetchInitScreenSetting,
FetchEditScreenSetting,
@ -86,5 +130,10 @@ export default {
FetchInitScreenBranch,
FetchEditScreenBranch,
FetchDeleteScreenBranch,
FetchInitScreenNotice
FetchInitScreenNotice,
FetchEditScreenNotice,
FetchDeleteScreenNotice,
FetchInitScreenWelcomePromotion,
FetchEditScreenWelcomePromotion,
FetchDeleteScreenWelcomePromotion
}

1
src/assets/styles/digitalScreen.scss

@ -212,6 +212,7 @@
border-radius: 4px;
transition: all 0.2s;
margin: 0 5px;
background-color: #c0c4cc;
// &:hover {
// border-color: #0348F3; // hover时高亮边框
// box-shadow: 0 2px 8px rgba(3, 72, 243, 0.1);

6
src/views/components/upload.vue

@ -9,11 +9,15 @@
<el-button size="small" type="primary"><i class="iconfont icon-shangchuan" />上传</el-button>
</div>
</el-form-item>
<div v-else class="upload-img-input">
<input ref="fileInput" type="file" @change="changeFile($event)">
<div class="upload-libImg"><i class="iconfont icon-shangchuan2" /><span>点击上传</span></div>
</div>
<div v-if="uploadType === 'welcome-promotion'" class="upload-btn" style="margin-left: 0; ">
<input id="upFile" type="file" name="upFile" @change="changeFile($event)">
<el-button size="mini" type="primary"><i class="iconfont icon-shangchuan" />图片上传</el-button>
</div>
</div>
</template>

15
src/views/digitalScreen/index.vue

@ -255,7 +255,7 @@
<bookRecommend v-if="currentScreenItem.id === 1" ref="bookRecommendRef" @ready="initScreenBookRecommend" />
<areaSetting v-if="currentScreenItem.id === 2" ref="areaSettingRef" :map-data="mapData" @triggerInit="initScreenSetting" @ready="initScreenBranch" />
<mediaSetting v-if="currentScreenItem.id === 4" ref="mediaSettingRef" @ready="initScreenNotice" />
<advSetting v-if="currentScreenItem.id === 5" ref="advSettingRef" :welcome-play="welcomePlay" @triggerInit="initScreenSetting" />
<advSetting v-if="currentScreenItem.id === 5" ref="advSettingRef" :welcome-play="welcomePlay" @triggerInit="initScreenSetting" @ready="initScreenWelcomePromotion" />
</div>
</div>
</div>
@ -396,20 +396,27 @@ export default {
this.$nextTick(() => {
this.initScreenSetting()
this.draggableScreen()
if (this.$refs.bookRecommendRef) {
this.$refs.bookRecommendRef.updateBookSwiper()
}
})
},
methods: {
initScreenWelcomePromotion() {
this.$refs.advSettingRef.initScreenWelcomePromotion()
if (this.$refs.advSettingRef) {
this.$refs.advSettingRef.updateSwiper()
}
},
initScreenNotice() {
this.$refs.mediaSettingRef.initScreenNotice()
this.$refs.mediaSettingRef.initScreenVideo()
},
initScreenBranch() {
this.$refs.areaSettingRef.initScreenBranch()
},
initScreenBookRecommend() {
this.$refs.bookRecommendRef.initScreenBookRecommend()
if (this.$refs.bookRecommendRef) {
this.$refs.bookRecommendRef.updateBookSwiper()
}
},
onWechatQrCodeReady() {
this.$refs.wecharQrCodeRef.reloadImage()

217
src/views/digitalScreen/module/advSetting.vue

@ -27,14 +27,14 @@
class="book-swiper"
>
<swiper-slide
v-for="(book, index) in advImgList"
:key="book.id"
v-for="(imgItem, index) in advImgList"
:key="imgItem.id"
class="book-list-item"
:class="{ 'book-list-item--selected': book.selected }"
:class="{ 'book-list-item--selected': imgItem.selected }"
>
<div style="cursor: default;" @click.stop="toggleBookSelect(index)">
<img :src="book.url || require('@/assets/images/cover-bg.png')" alt="图书封面">
<div v-if="book.selected" class="select-style">
<img :src="imgItem.imgPath || require('@/assets/images/cover-bg.png')" alt="图书封面">
<div v-if="imgItem.selected" class="select-style">
<div class="select-mask" />
<i class="iconfont icon-wancheng" />
</div>
@ -52,11 +52,8 @@
</div>
</div>
<div style="margin-left: 20px;">
<div class="upload-btn">
<input id="upFile" type="file" name="upFile" @change="changeFile($event)">
<el-button size="mini" type="primary"><i class="iconfont icon-shangchuan" />图片上传</el-button>
</div>
<el-button size="mini" :disabled="!hasSelectedItems" style="margin-top: 10px;" @click="batchDelete">
<UploadCover upload-type="welcome-promotion" @childCover="handleCover" />
<el-button :loading="deleteLoading" size="mini" :disabled="!hasSelectedItems" style="margin-top: 10px;" @click="batchDelete">
<i class="iconfont icon-shanchu" />
批量删除
</el-button>
@ -67,18 +64,18 @@
</template>
<script>
import { FetchEditScreenSetting } from '@/api/digitalScreen/index'
import { FetchEditScreenSetting, FetchInitScreenWelcomePromotion, FetchEditScreenWelcomePromotion, FetchDeleteScreenWelcomePromotion } from '@/api/digitalScreen/index'
import { swiper, swiperSlide } from 'vue-awesome-swiper'
import 'swiper/dist/css/swiper.css'
import UploadCover from '@/views/components/upload.vue'
import { mapGetters } from 'vuex'
import { getCurrentTime } from '@/utils/index'
// import { upload } from '@/utils/upload'
export default {
name: 'AdvSetting',
components: {
swiper,
swiperSlide
swiperSlide,
UploadCover
},
props: {
welcomePlay: {
@ -88,6 +85,7 @@ export default {
},
data() {
return {
deleteLoading: false,
advForm: {
welcome_play: null
},
@ -99,13 +97,7 @@ export default {
originalValues: {
advForm: {}
},
advImgList: [
{ id: 1, url: require('@/assets/images/screen/screen5.png'), selected: false },
{ id: 2, url: require('@/assets/images/screen/screen4.png'), selected: true },
{ id: 3, url: require('@/assets/images/screen/screen4.png'), selected: false },
{ id: 4, url: require('@/assets/images/screen/screen4.png'), selected: false },
{ id: 5, url: require('@/assets/images/screen/screen4.png'), selected: false }
],
advImgList: [],
swiperOptions: {
slidesPerView: 'auto', //
freeMode: true, //
@ -115,22 +107,13 @@ export default {
this.update()
}
}
},
file: null, // change
fileNames: '', // - name
formatType: '', // - type
postfix: '', // -
fileSize: '', // -
filePath: '', // - path
px: '', // -
nowDate: '', //
fileJsonString: null,
imageUrl: null
}
}
},
computed: {
...mapGetters([
'baseApi'
'baseApi',
'user'
]),
hasSelectedItems() {
return this.advImgList.some(book => book.selected)
@ -148,9 +131,9 @@ export default {
this.advForm.welcome_play = this.welcomePlay
},
mounted() {
this.$emit('ready')
},
methods: {
handleDblClick(formName, field) {
this.originalValues[formName][field] = this[formName][field]
this.editStatus[formName][field] = true
@ -192,7 +175,52 @@ export default {
this.$message.error('图片切换时长更新失败')
})
},
initScreenWelcomePromotion() {
const params = {
'libcode': this.user.fonds.fondsNo
}
FetchInitScreenWelcomePromotion(params).then((res) => {
console.log('res', res.content)
if (res.content.length !== 0) {
const newRes = res.content.map(item => ({
...item,
selected: false
}))
this.advImgList = newRes
} else {
this.advImgList = []
}
}).catch(err => {
console.log(err)
})
},
handleCover(value) {
if (value) {
const imgUrl = this.baseApi + '/api/fileRelevant/getImg?imgType=2&imgId=' + value
this.handleComfired(imgUrl)
} else {
this.advImgList = []
}
},
handleComfired(value) {
const param = {
'imgPath': value,
'libcode': this.user.fonds.fondsNo
}
FetchEditScreenWelcomePromotion(param).then((res) => {
console.log('res', res)
if (res) {
this.$message({ message: '添加宣传图片成功', type: 'success', offset: 8 })
// res.selected = false
// this.advImgList.unshift(res)
this.initScreenWelcomePromotion()
} else {
this.$message({ message: res.message, type: 'error', offset: 8 })
}
}).catch(err => {
console.log(err)
})
},
updateSwiper() {
if (this.$refs.adImgSwiper && this.$refs.adImgSwiper.swiper) {
const swiper = this.$refs.adImgSwiper.swiper
@ -203,121 +231,38 @@ export default {
toggleBookSelect(index) {
this.advImgList[index].selected = !this.advImgList[index].selected
},
deleteBook(index) {
this.$confirm('确定要删除这本图书吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
dangerouslyUseHTMLString: true
}).then(() => {
this.advImgList.splice(index, 1)
this.$nextTick(() => {
this.updateSwiper()
})
this.$message.success('删除成功!')
}).catch(() => {
//
})
},
batchDelete() {
const selectedCount = this.advImgList.filter(book => book.selected).length
if (selectedCount === 0) return
this.deleteLoading = true
this.$confirm(`确定要删除选中的 ${selectedCount} 张宣传图片吗?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.advImgList = this.advImgList.filter(book => !book.selected)
const ids = []
const selectedImgs = this.advImgList.filter(book => book.selected)
selectedImgs.forEach(book => {
ids.push(book.id)
})
FetchDeleteScreenWelcomePromotion(ids).then((res) => {
console.log('res', res)
if (res.code !== 500) {
this.$message({ message: `已成功删除 ${selectedCount} 张宣传图片`, type: 'success', offset: 8 })
this.$nextTick(() => {
this.updateSwiper()
})
this.$message.success(`已成功删除 ${selectedCount} 张宣传图片`)
})
},
//
async changeFile(e) {
const file = e.target.files[0]
if (file && file.type.startsWith('image/')) {
this.file = e.target.files[0]
this.fileSize = this.file.size
// this.formatType = this.file.type.substring(0, this.file.type.indexOf('/'))
this.fileNames = this.file.name
const fileBase64 = await this.getBase64(this.file)
const res = await this.getImgPx(fileBase64)
this.imageUrl = fileBase64
this.px = res.width + 'px*' + res.height + 'px'
// if (this.uploadType === 'book') {
// //
// upload(this.baseApi + '/api/fileRelevant/uploadBookImg', this.file).then(res => {
// console.log(res)
// if (res.data.code === 200) {
// this.filePath = res.data.data
// this.$emit('childCover', res.data.data)
// // this.uploadSave()
// }
// })
// } else {
// //
// upload(this.baseApi + '/api/fileRelevant/uploadOtherImg', this.file).then(res => {
// console.log(res)
// if (res.data.code === 200) {
// this.filePath = res.data.data
// this.$emit('childCover', res.data.data)
// // this.uploadSave()
// }
// })
// }
this.initScreenWelcomePromotion()
} else {
this.$message({ message: '只可上传图片', type: 'error', offset: 8 })
this.imageUrl = null
}
},
// -
uploadSave() {
this.nowDate = getCurrentTime()
const json = {
'file_name': this.fileNames,
'file_size': this.fileSize,
'file_type': this.postfix,
'file_path': this.filePath,
'sequence': null,
'file_dpi': this.px,
'file_thumbnail': '',
'create_time': this.nowDate,
'id': null,
'is_quote': null,
'last_modified': this.file.lastModified
}
const arrayUpload = []
arrayUpload.push(json)
// this.$emit('childCover', this.fileNames)
this.fileJsonString = JSON.stringify(arrayUpload)
console.log(this.fileJsonString)
},
// base64
getBase64(file) {
const reader = new FileReader()
reader.readAsDataURL(file)
return new Promise((resolve) => {
reader.onload = () => {
resolve(reader.result)
this.$message({ message: '删除失败', type: 'error', offset: 8 })
}
this.deleteLoading = false
}).catch(err => {
console.log(err)
this.deleteLoading = false
})
},
//
getImgPx(img) {
const image = new Image()
image.src = img
return new Promise((resolve) => {
image.onload = () => {
const width = image.width
const height = image.height
resolve({ width, height })
}
}).catch(() => {
this.deleteLoading = false
})
}
}

5
src/views/digitalScreen/module/areaSetting.vue

@ -115,7 +115,7 @@
</div>
</el-dialog>
<el-dialog class="auto-dialog" :close-on-click-modal="false" :modal-append-to-body="false" append-to-body :before-close="handleClose" :visible.sync="libDialogVisible" title="新增分管">
<el-dialog class="auto-dialog" :close-on-click-modal="false" :modal-append-to-body="false" append-to-body :before-close="handleClose" :visible.sync="libDialogVisible" :title="formTitle">
<div class="setting-dialog">
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="small" label-width="90px">
<div style="width: 696px;">
@ -205,6 +205,7 @@ export default {
},
data() {
return {
formTitle: '新增分馆',
btnLoading: false,
deleteLoading: false,
areaForm: {
@ -356,6 +357,7 @@ export default {
initForm(type, branchData) {
if (type === 'add') {
this.formTitle = '新增分馆'
if (this.form.branchType === '1') {
this.form.name = this.user.fonds.fondsName
this.form.libcode = this.user.fonds.fondsNo
@ -364,6 +366,7 @@ export default {
this.form.libcode = ''
}
} else {
this.formTitle = '编辑分馆'
this.form = branchData
this.form.branchType = branchData.branchType === 1 || branchData.branchType === '1' ? '1' : '2'
this.libImgList = branchData.promotions

269
src/views/digitalScreen/module/mediaSetting.vue

@ -7,22 +7,25 @@
<p>通知列表</p>
<el-card class="box-card" style="padding: 20px;">
<el-table
ref="table"
:data="tableData"
style="width: 100%"
max-height="360"
@selection-change="selectionChangeHandler"
@row-click="clickRowHandler"
>
<el-table-column type="selection" align="center" width="55" />
<el-table-column prop="name" label="标题" width="200" />
<el-table-column prop="title" label="标题" width="200" />
<el-table-column prop="startTime" label="开始时间" width="200" />
<el-table-column prop="endTime" label="结束时间" width="200" />
<el-table-column fixed="right" label="操作" width="100">
<template>
<!-- slot-scope="scope" -->
<el-button style="padding: 5px 6px !important;"><i class="iconfont icon-bianji" />编辑</el-button>
<template slot-scope="scope">
<el-button style="padding: 5px 6px !important;" @click="initForm('notice','edit',scope.row)"><i class="iconfont icon-bianji" />编辑</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
v-if="tableData.length !== 0"
style="margin: 34px 0 10px 0 !important;"
:current-page="page.page"
:total="page.total"
@ -35,11 +38,11 @@
</el-card>
<!-- @click="toDelete(crud.selections)" -->
<div style="display: flex; flex-direction: column; justify-content: flex-start; margin-left: 15px;">
<el-button size="mini" @click="noticeDialogVisible=true">
<el-button size="mini" @click="initForm('notice','add')">
<i class="iconfont icon-xinzeng" />
新增
</el-button>
<el-button size="mini" style="margin-left: 0; margin-top: 14px;">
<el-button :loading="deleteLoading" :disabled="selections.length === 0" size="mini" style="margin-left: 0; margin-top: 14px;" @click="toDelete('notice',selections)">
<i class="iconfont icon-shanchu" />
删除
</el-button>
@ -55,22 +58,25 @@
<p>视频列表</p>
<el-card class="box-card" style="padding: 20px;">
<el-table
ref="videoTable"
:data="videoTableData"
style="width: 100%"
max-height="360"
@selection-change="selectionVideoChangeHandler"
@row-click="clickVideoRowHandler"
>
<el-table-column type="selection" align="center" width="55" />
<el-table-column prop="name" label="标题" width="200" />
<el-table-column prop="startTime" label="开始时间" width="200" />
<el-table-column prop="endTime" label="结束时间" width="200" />
<el-table-column fixed="right" label="操作" width="100">
<template>
<!-- slot-scope="scope" -->
<el-button style="padding: 5px 6px !important;"><i class="iconfont icon-bianji" />编辑</el-button>
<template slot-scope="scope">
<el-button style="padding: 5px 6px !important;" @click="initForm('video','edit',scope.row)"><i class="iconfont icon-bianji" />编辑</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
v-if="videoTableData.length !== 0"
style="margin: 34px 0 10px 0 !important;"
:current-page="videoPage.page"
:total="videoPage.total"
@ -81,13 +87,12 @@
@current-change="handleVideoCurrentPage"
/>
</el-card>
<!-- @click="toDelete(crud.selections)" -->
<div style="display: flex; flex-direction: column; justify-content: flex-start; margin-left: 15px;">
<el-button size="mini" @click="videoDialogVisible=true">
<el-button size="mini" @click="initForm('video','add')">
<i class="iconfont icon-xinzeng" />
新增
</el-button>
<el-button size="mini" style="margin-left: 0; margin-top: 14px;">
<el-button :loading="deleteVideoLoading" :disabled="videoSelections.length === 0" size="mini" style="margin-left: 0; margin-top: 14px;" @click="toDelete('video',videoSelections)">
<i class="iconfont icon-shanchu" />
删除
</el-button>
@ -96,7 +101,7 @@
</div>
</div>
<el-dialog class="auto-dialog" :close-on-click-modal="false" :modal-append-to-body="false" append-to-body :before-close="handleClose" :visible.sync="noticeDialogVisible" title="新增通知">
<el-dialog class="auto-dialog" :close-on-click-modal="false" :modal-append-to-body="false" append-to-body :before-close="handleClose" :visible.sync="noticeDialogVisible" :title="noticeTitle">
<div class="setting-dialog">
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="small" label-width="90px">
<div>
@ -109,7 +114,13 @@
v-model="form.startTime"
type="datetime"
placeholder="选择日期时间"
default-time="12:00:00"
format="yyyy-MM-dd HH:mm:ss"
value-format="yyyy-MM-dd HH:mm:ss"
:picker-options="{
disabledDate: (time) =>{
return time.getTime() < Date.now() - 8.64e7
}
}"
/>
</el-form-item>
<el-form-item label="结束时间" prop="endTime">
@ -117,12 +128,15 @@
v-model="form.endTime"
type="datetime"
placeholder="选择日期时间"
default-time="12:00:00"
:picker-options="endPickerOptions"
format="yyyy-MM-dd HH:mm:ss"
value-format="yyyy-MM-dd HH:mm:ss"
default-time="['23:59:59']"
/>
</el-form-item>
<div>
<el-form-item label="通知内容" prop="remarks">
<el-input v-model="form.remarks" type="textarea" rows="5" placeholder="请输入" style="width: 586px;" />
<el-form-item label="通知内容" prop="context">
<el-input v-model="form.context" type="textarea" rows="5" placeholder="请输入" style="width: 586px;" />
</el-form-item>
</div>
</el-form>
@ -133,7 +147,7 @@
</div>
</el-dialog>
<el-dialog class="auto-dialog" :close-on-click-modal="false" :modal-append-to-body="false" append-to-body :before-close="handleClose" :visible.sync="videoDialogVisible" title="新增宣传视频">
<el-dialog class="auto-dialog" :close-on-click-modal="false" :modal-append-to-body="false" append-to-body :before-close="handleClose" :visible.sync="videoDialogVisible" :title="videoTitle">
<div class="setting-dialog">
<el-form ref="videoForm" :inline="true" :model="videoForm" :rules="rules" size="small" label-width="90px">
<div>
@ -146,7 +160,8 @@
v-model="videoForm.startTime"
type="datetime"
placeholder="选择日期时间"
default-time="12:00:00"
format="yyyy-MM-dd HH:mm:ss"
value-format="yyyy-MM-dd HH:mm:ss"
/>
</el-form-item>
<el-form-item label="结束时间" prop="endTime">
@ -154,7 +169,9 @@
v-model="videoForm.endTime"
type="datetime"
placeholder="选择日期时间"
default-time="12:00:00"
format="yyyy-MM-dd HH:mm:ss"
value-format="yyyy-MM-dd HH:mm:ss"
default-time="['23:59:59']"
/>
</el-form-item>
<div>
@ -179,7 +196,7 @@
</template>
<script>
import { FetchInitScreenNotice } from '@/api/digitalScreen/index'
import { FetchInitScreenNotice, FetchEditScreenNotice, FetchDeleteScreenNotice } from '@/api/digitalScreen/index'
import { mapGetters } from 'vuex'
export default {
@ -188,10 +205,11 @@ export default {
data() {
return {
btnLoading: false,
tableData: [
{ name: 'XXXX通知', startTime: '2025-05-01 10:05:00', endTime: '2025-05-01 10:05:00' },
{ name: 'XXXX通知', startTime: '2025-05-01 10:05:00', endTime: '2025-05-01 10:05:00' }
],
deleteLoading: false,
formType: '',
noticeTitle: '新增通知',
tableData: [],
selections: [],
page: {
page: 0,
size: 10,
@ -202,12 +220,12 @@ export default {
title: '',
startTime: '',
endTime: '',
remarks: ''
context: ''
},
videoTableData: [
{ name: 'XXXX宣传视频', startTime: '2025-05-01 10:05:00', endTime: '2025-05-01 10:05:00' },
{ name: 'XXXX宣传视频', startTime: '2025-05-01 10:05:00', endTime: '2025-05-01 10:05:00' }
],
videoTitle: '新增宣传视频',
deleteVideoLoading: false,
videoSelections: [],
videoTableData: [],
videoDialogVisible: false,
videoForm: {
title: '',
@ -225,11 +243,33 @@ export default {
{ required: true, message: '标题不可为空', trigger: 'blur' }
],
startTime: [
{ required: true, message: '请选择开始时间', trigger: 'change' }
{ required: true, message: '请选择', trigger: 'change' }
],
endTime: [
{ required: true, message: '请选择结束时间', trigger: 'change' }
{
required: true,
validator: (rule, value, callback) => {
if (!value) {
callback(new Error('请选择结束时间'))
} else if (this.form.startTime > value) {
callback(new Error('开始时间不得大于结束时间'))
} else {
callback()
}
},
trigger: 'change'
}
]
},
endPickerOptions: {
disabledDate: (time) => {
const startTime = new Date(this.form.startTime).getTime()
if (startTime) {
return (time.getTime()) <= startTime - 8.64e7
} else {
return time.getTime() < Date.now() - 8.64e7
}
}
}
}
},
@ -264,16 +304,153 @@ export default {
console.log(err)
})
},
initScreenVideo() {
const params = {
'libcode': this.user.fonds.fondsNo,
'page': this.videoPage.page,
'size': this.videoPage.size
}
FetchInitScreenNotice(params).then((res) => {
console.log('videoTableData', res.content)
if (res.content.length !== 0) {
this.videoTableData = res.content
this.videoPage.total = res.totalElements
} else {
this.videoTableData = []
this.videoPage.total = 0
}
}).catch(err => {
console.log(err)
})
},
initForm(tableType, type, data) {
this.formType = type
if (tableType === 'notice') {
if (type === 'add') {
this.noticeTitle = '新增通知'
} else {
this.noticeTitle = '编辑通知'
this.form = data
}
this.noticeDialogVisible = true
} else {
if (type === 'add') {
this.videoTitle = '新增宣传视频'
} else {
this.videoTitle = '编辑宣传视频'
this.videoForm = data
}
this.videoDialogVisible = true
}
},
handleClose() {
this.noticeDialogVisible = false
this.videoDialogVisible = false
if (this.$refs.form) {
this.$refs.form.resetFields()
this.$refs.form.clearValidate()
}
this.form = { title: '', startTime: '', endTime: '', context: '' }
if (this.$refs.videoForm) {
this.$refs.videoForm.resetFields()
this.$refs.videoForm.clearValidate()
}
this.videoForm = { title: '', startTime: '', endTime: '', videoUrl: '' }
this.btnLoading = false
},
handleComfired(form) {
this.$refs[form].validate((valid) => {
if (valid) {
console.log(form)
this.btnLoading = true
if (form === 'form') {
this.form.libcode = this.user.fonds.fondsNo
console.log(this.form)
FetchEditScreenNotice(this.form).then((res) => {
if (res.code !== 500) {
this.$message({ message: this.formType === 'add' ? '新增通知成功' : '编辑通知成功', type: 'success', offset: 8 })
this.initScreenNotice()
} else {
this.$message({ message: '操作失败', type: 'error', offset: 8 })
}
this.handleClose()
}).catch(err => {
console.log(err)
this.handleClose()
})
} else {
console.log('宣传视频表单提交')
}
} else {
console.log('error submit!!')
this.btnLoading = false
return false
}
})
},
toDelete(type, selections) {
if (type === 'notice') {
this.deleteLoading = true
} else {
this.deleteVideoLoading = true
}
this.$confirm(`确定要删除所选的数据吗?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
const ids = []
selections.forEach(book => {
ids.push(book.id)
})
console.log('ids', ids)
if (type === 'notice') {
FetchDeleteScreenNotice(ids).then((res) => {
console.log('res', res)
if (res.code !== 500) {
this.$message({ message: '删除成功', type: 'success', offset: 8 })
this.initScreenNotice()
} else {
this.$message({ message: '删除失败', type: 'error', offset: 8 })
}
this.deleteLoading = false
}).catch(err => {
console.log(err)
this.deleteLoading = false
})
} else {
console.log('视频列表删除')
}
}).catch(() => {
if (type === 'notice') {
this.deleteLoading = true
} else {
this.deleteVideoLoading = true
}
})
},
selectionChangeHandler(val) {
this.selections = val
},
clickRowHandler(row) {
this.$refs.table.clearSelection()
this.$refs.table.toggleRowSelection(row)
},
selectionVideoChangeHandler(val) {
this.videoSelections = val
},
clickVideoRowHandler(row) {
this.$refs.videoTable.clearSelection()
this.$refs.videoTable.toggleRowSelection(row)
},
handleSizeChange(size) {
this.page.size = size
this.page.page = 1
this.page.page = 0
this.initScreenNotice()
},
handleCurrentPage(val) {
this.page.page = val
this.initScreenNotice()
},
handleVideoSizeChange(size) {
this.videoPage.size = size
@ -281,32 +458,6 @@ export default {
},
handleVideoCurrentPage(val) {
this.videoPage.page = val
},
handleComfired(form) {
this.$refs[form].validate((valid) => {
if (valid) {
this.addBookDialogVisible = false
// const ids = []
// this.selectBookData.forEach(val => {
// ids.push(val.id)
// })
// const params = {
// 'gridId': this.selectGridVal.id,
// 'ids': ids
// }
// console.log('params', params)
// FetchManualShelving(params).then(() => {
// this.$message({ message: '', type: 'success', offset: 8 })
// this.handleCloseDialog()
// }).catch(err => {
// console.log(err)
// this.addBookDialogVisible = false
// })
} else {
console.log('error submit!!')
return false
}
})
}
}
}

2
src/views/system/menu/index.vue

@ -150,7 +150,7 @@
</el-table-column>
<el-table-column prop="createTime" label="创建日期" width="200px">
<template slot-scope="scope">
<div>{{ formatDateTimePadded(scope.row.createTime) }}</div>
<div>{{ scope.row.createTime | parseTime }}</div>
</template>
</el-table-column>
</el-table>

2
src/views/system/role/index.vue

@ -53,7 +53,7 @@
</el-table-column>
<el-table-column :show-overflow-tooltip="true" prop="createTime" label="创建日期">
<template slot-scope="scope">
<div>{{ formatDateTimePadded(scope.row.createTime) }}</div>
<div>{{ scope.row.createTime | parseTime }}</div>
</template>
</el-table-column>
</el-table>

Loading…
Cancel
Save