Browse Source

小程序板块优化

master
xuhuajiao 1 month ago
parent
commit
ac4ccf3457
  1. 2
      public/static/config.js
  2. 5
      src/views/digitalScreen/index.vue
  3. 3
      src/views/digitalScreen/module/advSetting.vue
  4. 1
      src/views/digitalScreen/module/areaSetting.vue
  5. 1
      src/views/digitalScreen/module/previewSetting.vue
  6. 14
      src/views/digitalScreen/module/wecharQrCode.vue
  7. 17
      src/views/weChatMiniProgram/baseSetting.vue
  8. 196
      src/views/weChatMiniProgram/bookrecommend.vue

2
public/static/config.js

@ -1,7 +1,7 @@
window.g = {
AXIOS_TIMEOUT: 10000,
//ApiUrl: 'http://192.168.3.220:12010', // 江夏配置服务器地址,
ApiUrl: 'http://192.168.99.72:14000', // 配置服务器地址,
ApiUrl: 'http://192.168.99.63:14000', // 配置服务器地址,
// ParentPage: { // 后续看需求配置
// CrossDomainProxyUrl: '/Home/CrossDomainProxy',
// BtnsApi: '/api/services/app/Authorization/GetBtns',

5
src/views/digitalScreen/index.vue

@ -566,7 +566,7 @@ export default {
//
if (code === 'wechar_qr_code') {
this.wecharQrCodeUrl = context
this.wecharQrCodeUrl = this.baseApi + '/api/fileRelevant/getImg?imgType=1&imgId=' + context
}
if (code === 'map_data') {
@ -906,6 +906,7 @@ export default {
saveEdit(formName, field) {
let code = field
let context
const libcode = this.user.fonds.fondsNo
let remarks = ''
//
@ -954,7 +955,7 @@ export default {
}
// 3.
const submitParam = { code, context, remarks }
const submitParam = { code, context, libcode, remarks }
// 4.
FetchEditScreenSetting(submitParam)

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

@ -161,7 +161,8 @@ export default {
const param = {
'code': field,
'context': value,
'remarks': null
'remarks': null,
'libcode': this.user.fonds.fondsNo
}
FetchEditScreenSetting(param)
.then((res) => {

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

@ -361,6 +361,7 @@ export default {
const param = {
'code': field,
'context': value,
'libcode': this.user.fonds.fondsNo,
'remarks': null
}
FetchEditScreenSetting(param)

1
src/views/digitalScreen/module/previewSetting.vue

@ -130,6 +130,7 @@ export default {
const param = {
'code': 'preview_url',
'context': this.form.preview_url,
'libcode': this.user.fonds.fondsNo,
'remarks': null
}
FetchEditScreenSetting(param)

14
src/views/digitalScreen/module/wecharQrCode.vue

@ -30,7 +30,7 @@
</div>
</div>
</div>
<div class="config-remarks">二维码用于总览屏媒体屏在任意分屏编辑均可生效</div>
<div v-if="!isMiniProgram" class="config-remarks">二维码用于总览屏媒体屏在任意分屏编辑均可生效</div>
</div>
</template>
@ -46,6 +46,10 @@ export default {
qrCodeUrl: {
type: String,
default: null
},
isMiniProgram: {
type: Boolean,
default: false
}
},
data() {
@ -58,7 +62,7 @@ export default {
}
},
computed: {
...mapGetters(['baseApi']),
...mapGetters(['baseApi', 'user']),
currentQrCodeUrl() {
if (this.localQrCodeUrl) {
return this.localQrCodeUrl
@ -89,7 +93,8 @@ export default {
methods: {
handleCover(value) {
if (value) {
const imgUrl = this.baseApi + '/api/fileRelevant/getImg?imgType=1&imgId=' + value
// const imgUrl = this.baseApi + '/api/fileRelevant/getImg?imgType=1&imgId=' + value
const imgUrl = value
this.submitCover(imgUrl)
} else {
this.localQrCodeUrl = null
@ -102,7 +107,8 @@ export default {
const param = {
'code': 'wechar_qr_code',
'context': imgUrl,
'remarks': null
'remarks': null,
'libcode': this.user.fonds.fondsNo
}
FetchEditScreenSetting(param)
.then(() => {

17
src/views/weChatMiniProgram/baseSetting.vue

@ -212,6 +212,7 @@
</div>
<!-- <div class="config-remarks">双击输入框可进行编辑</div> -->
</div>
<wecharQrCode ref="wecharQrCodeRef" :is-mini-program="true" :qr-code-url="wecharQrCodeUrl" @triggerInit="initScreenSetting" @ready="onWechatQrCodeReady" />
</div>
</div>
</div>
@ -220,13 +221,16 @@
<script>
import { FetchInitScreenSetting, FetchEditScreenSetting } from '@/api/digitalScreen/index'
import { mapGetters } from 'vuex'
import wecharQrCode from '../digitalScreen/module/wecharQrCode'
export default {
name: 'WeChatMiniProgram',
components: {
wecharQrCode
},
data() {
return {
wecharQrCodeUrl: null,
openForm: {
open_lib_http: null,
open_lib_appId: null,
@ -307,11 +311,18 @@ export default {
if (code === 'op_user') {
this.adminForm.op_user = context
}
//
if (code === 'wechar_qr_code') {
this.wecharQrCodeUrl = this.baseApi + '/api/fileRelevant/getImg?imgType=1&imgId=' + context
}
})
}).catch(() => {
})
},
onWechatQrCodeReady() {
this.$refs.wecharQrCodeRef.reloadImage()
},
//
handleDblClick(formName, field) {
this.originalValues[formName][field] = this[formName][field]
@ -424,8 +435,4 @@ export default {
border-radius: 4px;
width: 100%;
}
.config-item{
padding: 10px 0 !important;
}
</style>

196
src/views/weChatMiniProgram/bookrecommend.vue

@ -1,43 +1,173 @@
<template>
<div class="app-container row-container">
<div class="head-container" style="justify-content: flex-start; padding-bottom: 20px;">
<el-button size="mini" type="primary" @click.stop="uploadBook">
<i class="iconfont icon-shangchuan" />图书上传
</el-button>
<el-button :loading="deleteLoading" size="mini" :disabled="!hasSelectedItems" @click="batchDelete">
<i class="iconfont icon-shanchu" />批量删除
</el-button>
</div>
<div class="content-area">
<div class="area-config">
<bookRecommend ref="bookRecommendRef" @ready="initScreenBookRecommend" />
</div>
<el-table
ref="table"
height="calc(100vh - 232px)"
:data="bookList"
@selection-change="handleSelectionChange"
@row-dblclick="handleRowDbClick"
>
<el-table-column type="selection" align="center" width="55" />
<el-table-column prop="icon" label="封面" align="center" width="100">
<template slot-scope="scope">
<img
style="height:60px;display:block;margin:0 auto;"
:src="scope.row.imgPath ? `${baseApi}/api/fileRelevant/getImg?imgType=2&imgId=${scope.row.imgPath}` : require('@/assets/images/screen/book.png')"
alt="封面"
>
</template>
</el-table-column>
<el-table-column label="题名" prop="name" width="300" :show-overflow-tooltip="true" />
<el-table-column label="著者" prop="author" />
<el-table-column label="出版社" prop="publisher" />
<el-table-column label="ISBN" prop="isbn" />
<el-table-column label="分类号" prop="classNo" />
<el-table-column label="出版年份" prop="publisherdate" />
<el-table-column label="上传时间" prop="create_time" width="160">
<template slot-scope="scope">
<div>{{ scope.row.create_time | parseTime }}</div>
</template>
</el-table-column>
</el-table>
</div>
<!-- 图书详情弹窗 -->
<el-dialog
title="图书详情"
:visible.sync="detailVisible"
width="800px"
append-to-body
:close-on-click-modal="false"
@close="closeDetail"
>
<div v-if="detailData" class="detail-box">
<div class="detail-item">
<span>书名</span><p>{{ detailData.name }}</p>
</div>
<div class="detail-item">
<span>作者</span><p>{{ detailData.author || '-' }}</p>
</div>
<div class="detail-item">
<span>出版社</span><p>{{ detailData.publisher || '-' }}</p>
</div>
<div class="detail-item">
<span>ISBN</span><p>{{ detailData.isbn || '-' }}</p>
</div>
<div class="detail-item">
<span>分类号</span><p>{{ detailData.classNo || '-' }}</p>
</div>
<div class="detail-item">
<span>出版日期</span><p>{{ detailData.publisherdate || '-' }}</p>
</div>
<div class="detail-item">
<span>图书介绍</span><p>{{ detailData.explain || '-' }}</p>
</div>
<div class="detail-item">
<span>上传时间</span><p>{{ detailData.create_time | parseTime }}</p>
</div>
<div class="detail-img">
<img :src="detailData.imgPath ? `${baseApi}/api/fileRelevant/getImg?imgType=2&imgId=${detailData.imgPath}` : require('@/assets/images/screen/book.png')" alt="图书封面">
</div>
</div>
</el-dialog>
<addBookDialog ref="addBookRef" @refresh="updateBookItem" />
</div>
</template>
<script>
import { mapGetters } from 'vuex'
import bookRecommend from '../digitalScreen/module/bookRecommend'
import { FetchInitScreenBookRecommend, FetchDeleteScreenBookRecommend } from '@/api/digitalScreen/index'
import addBookDialog from '../digitalScreen/module/addBookDialog'
export default {
name: 'BookRecommend',
components: {
bookRecommend
},
components: { addBookDialog },
data() {
return {
deleteLoading: false,
bookList: [],
selectedItems: [],
detailVisible: false,
detailData: null
}
},
computed: {
...mapGetters([
'baseApi',
'user'
])
},
created() {
...mapGetters(['baseApi', 'user']),
hasSelectedItems() {
return this.selectedItems.length > 0
}
},
mounted() {
this.initScreenBookRecommend()
},
methods: {
//
handleSelectionChange(val) {
this.selectedItems = val
},
//
handleRowDbClick(row) {
this.detailData = row
this.detailVisible = true
},
//
closeDetail() {
this.detailVisible = false
this.detailData = null
},
initScreenBookRecommend() {
this.$refs.bookRecommendRef.initScreenBookRecommend()
if (this.$refs.bookRecommendRef) {
this.$refs.bookRecommendRef.updateBookSwiper()
}
const param = { libcode: this.user.fonds.fondsNo }
FetchInitScreenBookRecommend(param).then(res => {
this.bookList = res
}).catch(err => console.log(err))
},
uploadBook() {
this.$refs.addBookRef.addBookDialogVisible = true
},
updateBookItem() {
this.initScreenBookRecommend()
},
//
batchDelete() {
const count = this.selectedItems.length
if (count === 0) return this.$message.warning('请选择图书')
this.deleteLoading = true
this.$confirm(`确定删除所选得图书?`, '提示', { type: 'warning' }).then(() => {
const ids = this.selectedItems.map(item => item.id)
FetchDeleteScreenBookRecommend(ids).then(res => {
if (res.code !== 500) {
this.$message.success(`删除成功 ${count}`)
this.initScreenBookRecommend()
this.$refs.table.clearSelection()
} else {
this.$message.error('删除失败')
}
this.deleteLoading = false
}).catch(() => {
this.$message.error('删除异常')
this.deleteLoading = false
})
}).catch(() => {
this.deleteLoading = false
})
}
}
}
@ -46,9 +176,37 @@ export default {
<style scoped lang="scss">
@import "~@/assets/styles/digitalScreen.scss";
.content-area {
height: 734px;
border-radius: 4px;
width: 100%;
}
.detail-box {
padding: 10px;
.detail-item {
display: flex;
justify-content: flex-start;
align-items: flex-start;
font-size: 14px;
line-height: 28px;
color: #333;
span {
display: block;
width:100px;
text-align: right;
font-weight: bold;
color: #333;
margin-right: 10px;
}
p{
flex: 1;
}
}
.detail-img {
text-align: center;
margin-top: 15px;
img {
height: 180px;
}
}
}
</style>
Loading…
Cancel
Save