Browse Source

图书/区域删除

master
xuhuajiao 4 weeks ago
parent
commit
ce1b970290
  1. 31
      src/api/digitalScreen/index.js
  2. 5
      src/views/digitalScreen/index.vue
  3. 6
      src/views/digitalScreen/module/addBookDialog.vue
  4. 61
      src/views/digitalScreen/module/areaSetting.vue
  5. 85
      src/views/digitalScreen/module/bookRecommend.vue
  6. 32
      src/views/digitalScreen/module/mediaSetting.vue

31
src/api/digitalScreen/index.js

@ -34,6 +34,15 @@ export function FetchEditScreenBookRecommend(parameter) {
}) })
} }
// 删除智慧大屏图书推荐
export function FetchDeleteScreenBookRecommend(parameter) {
return request({
url: 'api/screenSetting/deleteScreenBookRecommend',
method: 'post',
data: parameter
})
}
// 智慧大屏分馆列表 // 智慧大屏分馆列表
export function FetchInitScreenBranch(params) { export function FetchInitScreenBranch(params) {
return request({ return request({
@ -51,11 +60,31 @@ export function FetchEditScreenBranch(parameter) {
}) })
} }
// 删除智慧大屏分馆
export function FetchDeleteScreenBranch(parameter) {
return request({
url: 'api/screenSetting/deleteScreenBranch',
method: 'post',
data: parameter
})
}
// 智慧大公告列表
export function FetchInitScreenNotice(params) {
return request({
url: 'api/screenSetting/initScreenNotice' + '?' + qs.stringify(params, { indices: false }),
method: 'get'
})
}
export default { export default {
FetchInitScreenSetting, FetchInitScreenSetting,
FetchEditScreenSetting, FetchEditScreenSetting,
FetchInitScreenBookRecommend, FetchInitScreenBookRecommend,
FetchEditScreenBookRecommend, FetchEditScreenBookRecommend,
FetchDeleteScreenBookRecommend,
FetchInitScreenBranch, FetchInitScreenBranch,
FetchEditScreenBranch
FetchEditScreenBranch,
FetchDeleteScreenBranch,
FetchInitScreenNotice
} }

5
src/views/digitalScreen/index.vue

@ -254,7 +254,7 @@
<wecharQrCode v-if="currentScreenItem.id === 1 || currentScreenItem.id === 4" ref="wecharQrCodeRef" :qr-code-url="wecharQrCodeUrl" @triggerInit="initScreenSetting" @ready="onWechatQrCodeReady" /> <wecharQrCode v-if="currentScreenItem.id === 1 || currentScreenItem.id === 4" ref="wecharQrCodeRef" :qr-code-url="wecharQrCodeUrl" @triggerInit="initScreenSetting" @ready="onWechatQrCodeReady" />
<bookRecommend v-if="currentScreenItem.id === 1" ref="bookRecommendRef" @ready="initScreenBookRecommend" /> <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" /> <areaSetting v-if="currentScreenItem.id === 2" ref="areaSettingRef" :map-data="mapData" @triggerInit="initScreenSetting" @ready="initScreenBranch" />
<mediaSetting v-if="currentScreenItem.id === 4" ref="mediaSettingRef" />
<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" />
</div> </div>
</div> </div>
@ -402,6 +402,9 @@ export default {
}) })
}, },
methods: { methods: {
initScreenNotice() {
this.$refs.mediaSettingRef.initScreenNotice()
},
initScreenBranch() { initScreenBranch() {
this.$refs.areaSettingRef.initScreenBranch() this.$refs.areaSettingRef.initScreenBranch()
}, },

6
src/views/digitalScreen/module/addBookDialog.vue

@ -104,14 +104,14 @@ export default {
this.$refs.uploadCoverRefs.fileNames = '' this.$refs.uploadCoverRefs.fileNames = ''
this.form.imgPath = null this.form.imgPath = null
this.bookCover = null this.bookCover = null
this.btnLoading = false
}, },
handleComfired() { handleComfired() {
this.$refs.form.validate((valid) => { this.$refs.form.validate((valid) => {
if (valid) { if (valid) {
this.addBookDialogVisible = false
this.btnLoading = true
this.form.libcode = this.user.fonds.fondsNo this.form.libcode = this.user.fonds.fondsNo
FetchEditScreenBookRecommend(this.form).then((res) => { FetchEditScreenBookRecommend(this.form).then((res) => {
console.log('res', res)
if (res) { if (res) {
this.$message({ message: '推荐图书新增成功', type: 'success', offset: 8 }) this.$message({ message: '推荐图书新增成功', type: 'success', offset: 8 })
this.$emit('refresh') this.$emit('refresh')
@ -121,7 +121,7 @@ export default {
this.handleClose() this.handleClose()
}).catch(err => { }).catch(err => {
console.log(err) console.log(err)
this.addBookDialogVisible = false
this.handleClose()
}) })
} else { } else {
console.log('error submit!!') console.log('error submit!!')

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

@ -34,9 +34,12 @@
<p>总分馆列表</p> <p>总分馆列表</p>
<el-card class="box-card" style="padding: 20px;"> <el-card class="box-card" style="padding: 20px;">
<el-table <el-table
ref="table"
:data="tableData" :data="tableData"
style="width: 100%" style="width: 100%"
max-height="360" max-height="360"
@selection-change="selectionChangeHandler"
@row-click="clickRowHandler"
> >
<el-table-column type="selection" align="center" width="55" /> <el-table-column type="selection" align="center" width="55" />
<el-table-column prop="name" label="名称" width="150" /> <el-table-column prop="name" label="名称" width="150" />
@ -74,13 +77,12 @@
@current-change="handleCurrentPage" @current-change="handleCurrentPage"
/> />
</el-card> </el-card>
<!-- @click="toDelete(crud.selections)" -->
<div style="display: flex; flex-direction: column; justify-content: flex-start; margin-left: 15px;"> <div style="display: flex; flex-direction: column; justify-content: flex-start; margin-left: 15px;">
<el-button size="mini" @click="initForm('add')"> <el-button size="mini" @click="initForm('add')">
<i class="iconfont icon-xinzeng" /> <i class="iconfont icon-xinzeng" />
新增 新增
</el-button> </el-button>
<el-button size="mini" style="margin-left: 0; margin-top: 14px;">
<el-button :loading="deleteLoading" size="mini" style="margin-left: 0; margin-top: 14px;" :disabled="selections.length === 0" @click="toDelete(selections)">
<i class="iconfont icon-shanchu" /> <i class="iconfont icon-shanchu" />
删除 删除
</el-button> </el-button>
@ -188,7 +190,7 @@
</template> </template>
<script> <script>
import { FetchEditScreenSetting, FetchInitScreenBranch, FetchEditScreenBranch } from '@/api/digitalScreen/index'
import { FetchEditScreenSetting, FetchInitScreenBranch, FetchEditScreenBranch, FetchDeleteScreenBranch } from '@/api/digitalScreen/index'
import UploadCover from '@/views/components/upload.vue' import UploadCover from '@/views/components/upload.vue'
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
@ -204,6 +206,7 @@ export default {
data() { data() {
return { return {
btnLoading: false, btnLoading: false,
deleteLoading: false,
areaForm: { areaForm: {
map_data: null map_data: null
}, },
@ -236,8 +239,10 @@ export default {
address: '', address: '',
mapX: '', mapX: '',
mapY: '', mapY: '',
explains: ''
explains: '',
tcId: ''
}, },
selections: [],
rules: { rules: {
name: [ name: [
{ required: true, message: '名称不可为空', trigger: 'blur' } { required: true, message: '名称不可为空', trigger: 'blur' }
@ -359,11 +364,9 @@ export default {
this.form.libcode = '' this.form.libcode = ''
} }
} else { } else {
console.log('branchData', branchData)
this.form = branchData this.form = branchData
this.form.branchType = branchData.branchType === 1 || branchData.branchType === '1' ? '1' : '2' this.form.branchType = branchData.branchType === 1 || branchData.branchType === '1' ? '1' : '2'
this.libImgList = branchData.promotions this.libImgList = branchData.promotions
console.log(this.form)
} }
this.libDialogVisible = true this.libDialogVisible = true
}, },
@ -376,12 +379,51 @@ export default {
this.form.libcode = '' this.form.libcode = ''
} }
}, },
selectionChangeHandler(val) {
this.selections = val
},
clickRowHandler(row) {
this.$refs.table.clearSelection()
this.$refs.table.toggleRowSelection(row)
},
toDelete(selections) {
this.deleteLoading = true
this.$confirm(`确定要删除所选的数据吗?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
const ids = []
selections.forEach(book => {
ids.push(book.id)
})
console.log('ids', ids)
FetchDeleteScreenBranch(ids).then((res) => {
console.log('res', res)
if (res.code !== 500) {
this.$message({ message: '删除成功', type: 'success', offset: 8 })
this.initScreenBranch()
} else {
this.$message({ message: '删除失败', type: 'error', offset: 8 })
}
this.deleteLoading = false
}).catch(err => {
console.log(err)
this.deleteLoading = false
})
}).catch(() => {
this.deleteLoading = false
})
},
handleDelete(index) { handleDelete(index) {
this.libImgList.splice(index, 1) this.libImgList.splice(index, 1)
}, },
handleComfired() { handleComfired() {
this.$refs.form.validate((valid) => { this.$refs.form.validate((valid) => {
if (valid) { if (valid) {
this.btnLoading = true
if (this.libImgList.length !== 0) { if (this.libImgList.length !== 0) {
this.form.promotions = this.libImgList this.form.promotions = this.libImgList
} }
@ -400,7 +442,7 @@ export default {
this.handleClose() this.handleClose()
}).catch(err => { }).catch(err => {
console.log(err) console.log(err)
this.addBookDialogVisible = false
this.handleClose()
}) })
} else { } else {
console.log('error submit!!') console.log('error submit!!')
@ -414,13 +456,14 @@ export default {
this.$refs['form'].resetFields() this.$refs['form'].resetFields()
this.$refs['form'].clearValidate() this.$refs['form'].clearValidate()
this.form = { this.form = {
name: '', branchType: '1', libcode: '', occupationArea: '', address: '', mapX: '', mapY: '', explains: ''
name: '', branchType: '1', libcode: '', tcId: '', occupationArea: '', address: '', mapX: '', mapY: '', explains: ''
} }
this.libImgList = [] this.libImgList = []
this.btnLoading = false
}, },
handleSizeChange(size) { handleSizeChange(size) {
this.page.size = size this.page.size = size
this.page.page = 1
this.page.page = 0
this.initScreenBranch() this.initScreenBranch()
}, },
handleCurrentPage(val) { handleCurrentPage(val) {

85
src/views/digitalScreen/module/bookRecommend.vue

@ -21,7 +21,7 @@
<i v-if="book.selected" class="iconfont icon-wancheng" /> <i v-if="book.selected" class="iconfont icon-wancheng" />
<i v-else class="iconfont icon-weixuan" /> <i v-else class="iconfont icon-weixuan" />
</div> </div>
<div class="book-delete" @click.stop="deleteBook(index)">
<div class="book-delete" @click.stop="deleteBook(book)">
<i class="iconfont icon-shanchu" /> <i class="iconfont icon-shanchu" />
</div> </div>
</div> </div>
@ -32,7 +32,7 @@
</div> </div>
<div style="display: flex; flex-direction: column; justify-content: flex-start;"> <div style="display: flex; flex-direction: column; justify-content: flex-start;">
<el-button size="mini" type="primary" @click.stop="uploadBook"><i class="iconfont icon-shangchuan" />图书上传</el-button> <el-button size="mini" type="primary" @click.stop="uploadBook"><i class="iconfont icon-shangchuan" />图书上传</el-button>
<el-button size="mini" style="margin-left: 0 !important; margin-top: 10px;" :disabled="!hasSelectedItems" @click="batchDelete">
<el-button :loading="deleteLoading" size="mini" style="margin-left: 0 !important; margin-top: 10px;" :disabled="!hasSelectedItems" @click="batchDelete">
<i class="iconfont icon-shanchu" /> <i class="iconfont icon-shanchu" />
批量删除 批量删除
</el-button> </el-button>
@ -42,7 +42,7 @@
</template> </template>
<script> <script>
import { FetchInitScreenBookRecommend } from '@/api/digitalScreen/index'
import { FetchInitScreenBookRecommend, FetchDeleteScreenBookRecommend } from '@/api/digitalScreen/index'
import { swiper, swiperSlide } from 'vue-awesome-swiper' import { swiper, swiperSlide } from 'vue-awesome-swiper'
import 'swiper/dist/css/swiper.css' import 'swiper/dist/css/swiper.css'
import addBookDialog from './addBookDialog' import addBookDialog from './addBookDialog'
@ -59,23 +59,8 @@ export default {
}, },
data() { data() {
return { return {
bookList: [
// { id: 1, url: require('@/assets/images/screen/book.jpg'), selected: false },
// { id: 2, url: require('@/assets/images/screen/book.jpg'), selected: true },
// { id: 3, url: require('@/assets/images/screen/book.jpg'), selected: false },
// { id: 4, url: require('@/assets/images/screen/book.jpg'), selected: false },
// { id: 5, url: require('@/assets/images/screen/book.jpg'), selected: false },
// { id: 6, url: require('@/assets/images/screen/book.jpg'), selected: false },
// { id: 7, url: require('@/assets/images/screen/book.jpg'), selected: false },
// { id: 8, url: require('@/assets/images/screen/book.jpg'), selected: false },
// { id: 9, url: require('@/assets/images/screen/book.jpg'), selected: false },
// { id: 10, url: require('@/assets/images/screen/book.jpg'), selected: false },
// { id: 11, url: require('@/assets/images/screen/book.jpg'), selected: false },
// { id: 12, url: require('@/assets/images/screen/book.jpg'), selected: false },
// { id: 13, url: require('@/assets/images/screen/book.jpg'), selected: false },
// { id: 14, url: require('@/assets/images/screen/book.jpg'), selected: false },
// { id: 15, url: require('@/assets/images/screen/book.jpg'), selected: false }
],
deleteLoading: false,
bookList: [],
swiperOptions: { swiperOptions: {
slidesPerView: 'auto', // slidesPerView: 'auto', //
freeMode: true, // freeMode: true, //
@ -122,7 +107,6 @@ export default {
...item, ...item,
selected: false selected: false
})) }))
this.bookList = newRes this.bookList = newRes
}).catch(err => { }).catch(err => {
console.log(err) console.log(err)
@ -145,12 +129,8 @@ export default {
uploadBook() { uploadBook() {
this.$refs.addBookRef.addBookDialogVisible = true this.$refs.addBookRef.addBookDialogVisible = true
}, },
updateBookItem(data) {
this.bookList.unshift({
...data,
selected: false
})
updateBookItem() {
this.initScreenBookRecommend()
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.bookSwiper.swiper.update() this.$refs.bookSwiper.swiper.update()
this.$refs.bookSwiper.swiper.slideTo(0, 300) this.$refs.bookSwiper.swiper.slideTo(0, 300)
@ -159,31 +139,62 @@ export default {
batchDelete() { batchDelete() {
const selectedCount = this.bookList.filter(book => book.selected).length const selectedCount = this.bookList.filter(book => book.selected).length
if (selectedCount === 0) return if (selectedCount === 0) return
this.deleteLoading = true
this.$confirm(`确定要删除选中的 ${selectedCount} 本图书吗?`, '提示', { this.$confirm(`确定要删除选中的 ${selectedCount} 本图书吗?`, '提示', {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
this.bookList = this.bookList.filter(book => !book.selected)
this.$nextTick(() => {
this.$refs.bookSwiper.swiper.update()
const ids = []
const selectedBooks = this.bookList.filter(book => book.selected)
selectedBooks.forEach(book => {
ids.push(book.id)
}) })
this.$message.success(`已成功删除 ${selectedCount} 本图书`)
FetchDeleteScreenBookRecommend(ids).then((res) => {
console.log('res', res)
if (res.code !== 500) {
this.$message({ message: `已成功删除 ${selectedCount} 本图书`, type: 'success', offset: 8 })
this.$nextTick(() => {
this.$refs.bookSwiper.swiper.update()
})
this.initScreenBookRecommend()
} else {
this.$message({ message: '删除失败', type: 'error', offset: 8 })
}
this.deleteLoading = false
}).catch(err => {
console.log(err)
this.deleteLoading = false
})
// this.bookList = this.bookList.filter(book => !book.selected)
// this.$message.success(` ${selectedCount} `)
}).catch(() => {
this.deleteLoading = false
}) })
}, },
deleteBook(index) {
deleteBook(data) {
this.$confirm('确定要删除这本图书吗?', '提示', { this.$confirm('确定要删除这本图书吗?', '提示', {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning', type: 'warning',
dangerouslyUseHTMLString: true dangerouslyUseHTMLString: true
}).then(() => { }).then(() => {
this.bookList.splice(index, 1)
this.$nextTick(() => {
this.$refs.bookSwiper.swiper.update()
const ids = []
ids.push(data.id)
FetchDeleteScreenBookRecommend(ids).then((res) => {
console.log('res', res)
if (res.code !== 500) {
this.$message({ message: '删除成功', type: 'success', offset: 8 })
this.$nextTick(() => {
this.$refs.bookSwiper.swiper.update()
})
this.initScreenBookRecommend()
} else {
this.$message({ message: '删除失败', type: 'error', offset: 8 })
}
}).catch(err => {
console.log(err)
}) })
this.$message.success('删除成功!')
}).catch(() => { }).catch(() => {
// //
}) })

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

@ -179,6 +179,7 @@
</template> </template>
<script> <script>
import { FetchInitScreenNotice } from '@/api/digitalScreen/index'
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
export default { export default {
@ -192,7 +193,7 @@ export default {
{ 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' }
], ],
page: { page: {
page: 1,
page: 0,
size: 10, size: 10,
total: 0 total: 0
}, },
@ -215,7 +216,7 @@ export default {
videoUrl: '' videoUrl: ''
}, },
videoPage: { videoPage: {
page: 1,
page: 0,
size: 10, size: 10,
total: 0 total: 0
}, },
@ -234,12 +235,35 @@ export default {
}, },
computed: { computed: {
...mapGetters([ ...mapGetters([
'baseApi'
'baseApi',
'user'
]) ])
}, },
created() { created() {
}, },
mounted() {
this.$emit('ready')
},
methods: { methods: {
initScreenNotice() {
const params = {
'libcode': this.user.fonds.fondsNo,
'page': this.page.page,
'size': this.page.size
}
FetchInitScreenNotice(params).then((res) => {
console.log('initScreenNotice', res.content)
if (res.content.length !== 0) {
this.tableData = res.content
this.page.total = res.totalElements
} else {
this.tableData = []
this.page.total = 0
}
}).catch(err => {
console.log(err)
})
},
handleClose() { handleClose() {
this.noticeDialogVisible = false this.noticeDialogVisible = false
this.videoDialogVisible = false this.videoDialogVisible = false
@ -253,7 +277,7 @@ export default {
}, },
handleVideoSizeChange(size) { handleVideoSizeChange(size) {
this.videoPage.size = size this.videoPage.size = size
this.videoPage.page = 1
this.videoPage.page = 0
}, },
handleVideoCurrentPage(val) { handleVideoCurrentPage(val) {
this.videoPage.page = val this.videoPage.page = val

Loading…
Cancel
Save