This commit is contained in:
@fawn-nine
2023-09-18 09:14:33 +08:00
parent afdb0520db
commit 5e7968faf0
5 changed files with 133 additions and 86 deletions

View File

@@ -86,16 +86,16 @@
</el-checkbox-group> </el-checkbox-group>
</el-form-item> </el-form-item>
<el-row> <el-row>
<el-col :span="12"> <!-- <el-col :span="12">
<el-form-item label="原价" prop="price"> <el-form-item label="原价" prop="price">
<el-input v-model="dataForm.price" placeholder="价格"></el-input> <el-input v-model="dataForm.price" placeholder="价格"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col> -->
<el-col :span="12"> <!-- <el-col :span="12">
<el-form-item label="优惠价格" prop="salePrice"> <el-form-item label="优惠价格" prop="salePrice">
<el-input v-model="dataForm.salePrice" placeholder="优惠价格"></el-input> <el-input v-model="dataForm.salePrice" placeholder="优惠价格"></el-input>
</el-form-item> </el-form-item> -->
</el-col> <!-- </el-col> -->
<el-col :span="12"> <el-col :span="12">
<el-form-item label="是否可听" > <el-form-item label="是否可听" >
<!-- <el-input v-model="dataForm.salePrice" placeholder="优惠价格"></el-input> --> <!-- <el-input v-model="dataForm.salePrice" placeholder="优惠价格"></el-input> -->
@@ -127,21 +127,21 @@
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="免费章节数" prop="freeChapterCount"> <el-form-item label="免费章节数" prop="freeChapterCount" label-width="250">
<el-input-number v-model="dataForm.freeChapterCount" :min="0" :max="10" label="免费章节数"></el-input-number> <el-input-number v-model="dataForm.freeChapterCount" :min="0" :max="10" label="免费章节数"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="置顶" prop="istop"> <!-- <el-form-item label="置顶" prop="istop">
<el-radio-group v-model="dataForm.istop"> <el-radio-group v-model="dataForm.istop">
<el-radio :label="1"></el-radio> <el-radio :label="1"></el-radio>
<el-radio :label="0"></el-radio> <el-radio :label="0"></el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item> -->
<el-form-item label="秒杀" prop="istop"> <!-- <el-form-item label="秒杀" prop="istop">
<el-radio-group v-model="dataForm.isSale"> <el-radio-group v-model="dataForm.isSale">
<el-radio :label="1"></el-radio> <el-radio :label="1"></el-radio>
<el-radio :label="0"></el-radio> <el-radio :label="0"></el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item> -->
<!-- <el-form-item label="出版商名称" prop="publisherId"> <!-- <el-form-item label="出版商名称" prop="publisherId">
<el-input v-model="dataForm.publisherId" placeholder="出版商名称"></el-input> <el-input v-model="dataForm.publisherId" placeholder="出版商名称"></el-input>
</el-form-item> --> </el-form-item> -->
@@ -225,12 +225,12 @@ export default {
title: '', title: '',
content: '', content: '',
type:[], type:[],
price: '', // price: '',
salePrice:'', salePrice:'',
istop: '', // istop: '',
isVip:0, isVip:0,
freeChapterCount:0, freeChapterCount:0,
isSale: '', // isSale: '',
publisherId: [], publisherId: [],
images: '', images: '',
pid: '', pid: '',
@@ -323,11 +323,11 @@ export default {
this.dataForm.title = data.book.title this.dataForm.title = data.book.title
this.dataForm.content = data.book.content this.dataForm.content = data.book.content
// this.dataForm.type = data.book.type // this.dataForm.type = data.book.type
this.dataForm.price = data.book.price // this.dataForm.price = data.book.price
this.dataForm.salePrice = data.book.salePrice // this.dataForm.salePrice = data.book.salePrice
this.dataForm.istop = data.book.istop // this.dataForm.istop = data.book.istop
this.dataForm.isVip = data.book.isVip this.dataForm.isVip = data.book.isVip
this.dataForm.isSale = data.book.isSale // this.dataForm.isSale = data.book.isSale
this.dataForm.freeChapterCount = data.book.freeChapterCount this.dataForm.freeChapterCount = data.book.freeChapterCount
this.dataForm.splits = data.book.splits this.dataForm.splits = data.book.splits
// this.dataForm.publisherId = data.book.publisherId // this.dataForm.publisherId = data.book.publisherId
@@ -384,11 +384,11 @@ export default {
'title': this.dataForm.title, 'title': this.dataForm.title,
'content': this.dataForm.content, 'content': this.dataForm.content,
'type': this.dataForm.type.join(','), 'type': this.dataForm.type.join(','),
'price': this.dataForm.price, // 'price': this.dataForm.price,
'salePrice': this.dataForm.salePrice, // 'salePrice': this.dataForm.salePrice,
'istop': this.dataForm.istop, // 'istop': this.dataForm.istop,
'isVip': this.dataForm.isVip, 'isVip': this.dataForm.isVip,
'isSale': this.dataForm.isSale, // 'isSale': this.dataForm.isSale,
'freeChapterCount': this.dataForm.freeChapterCount, 'freeChapterCount': this.dataForm.freeChapterCount,
'publisherId': this.dataForm.publisherId.join(','), 'publisherId': this.dataForm.publisherId.join(','),
'images': this.dataForm.images, 'images': this.dataForm.images,

View File

@@ -13,19 +13,13 @@
<el-form-item> <el-form-item>
<el-button @click="getDataList()">查询</el-button> <el-button @click="getDataList()">查询</el-button>
<el-button v-if="isAuth('book:book:save')" type="primary" @click="addOrUpdateHandle()">新增</el-button> <el-button v-if="isAuth('book:book:save')" type="primary" @click="addOrUpdateHandle()">新增</el-button>
<el-button v-if="isAuth('book:book:delete')" type="danger" @click="deleteHandle()" <!-- <el-button v-if="isAuth('book:book:delete')" type="danger" @click="deleteHandle()"
:disabled="dataListSelections.length <= 0">批量删除</el-button> :disabled="dataListSelections.length <= 0">批量删除</el-button> -->
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-table :data="dataList" border v-loading="dataListLoading" @selection-change="selectionChangeHandle" <el-table :data="dataList" border v-loading="dataListLoading"
style="width: 100%;"> style="width: 100%;">
<el-table-column type="selection" header-align="center" align="center" width="50">
</el-table-column>
<el-table-column label="序号" width="70" align="center">
<template slot-scope="scope">
{{ (pageIndex - 1) * pageSize + scope.$index + 1 }}
</template>
</el-table-column>
<el-table-column min-width="155px <el-table-column min-width="155px
" prop="state" header-align="center" align="center" label="状态"> " prop="state" header-align="center" align="center" label="状态">
<template slot-scope="scope"> <template slot-scope="scope">
@@ -44,8 +38,8 @@
<img v-if="scope.row.images != ''" :src="scope.row.images" width="70" height="100" class="tableImg" /> <img v-if="scope.row.images != ''" :src="scope.row.images" width="70" height="100" class="tableImg" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="description" header-align="center" align="center" :show-overflow-tooltip="true" label="简介"> <!-- <el-table-column prop="description" header-align="center" align="center" :show-overflow-tooltip="true" label="简介">
</el-table-column> </el-table-column> -->
<!-- <el-table-column <!-- <el-table-column
prop="title" prop="title"
header-align="center" header-align="center"
@@ -58,18 +52,18 @@
align="center" align="center"
label="内容"> label="内容">
</el-table-column> --> </el-table-column> -->
<el-table-column prop="type" header-align="center" align="center" label="类型"> <!-- <el-table-column prop="type" header-align="center" align="center" label="类型">
</el-table-column> </el-table-column>
<el-table-column prop="price" header-align="center" align="center" label="价格"> <el-table-column prop="price" header-align="center" align="center" label="价格">
</el-table-column> </el-table-column> -->
<!-- <el-table-column <!-- <el-table-column
prop="istop" prop="istop"
header-align="center" header-align="center"
align="center" align="center"
label="置顶"> label="置顶">
</el-table-column> --> </el-table-column> -->
<el-table-column prop="publisherName" header-align="center" align="center" label="出版商名称"> <!-- <el-table-column prop="publisherName" header-align="center" align="center" label="出版商名称">
</el-table-column> </el-table-column> -->
<el-table-column prop="chapterStatus" header-align="center" align="center" label="章节拆分"> <el-table-column prop="chapterStatus" header-align="center" align="center" label="章节拆分">
<template slot-scope="scope"> <template slot-scope="scope">
<span v-if="scope.row.chapterStatus == '成功'" style="color:blue">{{scope.row.chapterStatus}}</span> <span v-if="scope.row.chapterStatus == '成功'" style="color:blue">{{scope.row.chapterStatus}}</span>
@@ -131,11 +125,11 @@
<el-button type="text" size="small">打卡管理</el-button> <el-button type="text" size="small">打卡管理</el-button>
</router-link> </router-link>
<router-link :to="{path: 'book-bookchapter' , query:{ id : scope.row.id , pageIndex} }"> <router-link :to="{path: 'book-bookchapter' , query:{ id : scope.row.id , pageIndex} }">
<el-button v-if="scope.row.chapterStatus == '成功'" type="text" size="small">章节列表</el-button> <el-button type="text" size="small">章节列表</el-button>
</router-link> </router-link>
<el-button v-if="scope.row.chapterStatus == '未处理' || scope.row.chapterStatus == '失败'" type="text" size="small" @click="chapterHandle(scope.row.id,scope.row)">章节拆分</el-button> <!-- <el-button v-if="scope.row.chapterStatus == '未处理' || scope.row.chapterStatus == '失败'" type="text" size="small" @click="chapterHandle(scope.row.id,scope.row)">章节拆分</el-button> -->
<!-- <el-button v-if="scope.row.chapterStatus == '成功' && (scope.row.contentStatus == '未处理' || scope.row.contentStatus == '失败') " type="text" size="small" @click="contentHandle(scope.row.id)">单句拆分</el-button> --> <!-- <el-button v-if="scope.row.chapterStatus == '成功' && (scope.row.contentStatus == '未处理' || scope.row.contentStatus == '失败') " type="text" size="small" @click="contentHandle(scope.row.id)">单句拆分</el-button> -->
<el-button v-if="scope.row.contentStatus == '成功' && (scope.row.voicesStatus == '未处理' || scope.row.voicesStatus == '失败') " type="text" size="small" @click="voicesHandle(scope.row.id)">音频处理</el-button> <!-- <el-button v-if="scope.row.contentStatus == '成功' && (scope.row.voicesStatus == '未处理' || scope.row.voicesStatus == '失败') " type="text" size="small" @click="voicesHandle(scope.row.id)">音频处理</el-button> -->
<el-button type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">修改</el-button> <el-button type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">修改</el-button>
<el-button type="text" size="small" @click="deleteHandle(scope.row.id)">删除</el-button> <el-button type="text" size="small" @click="deleteHandle(scope.row.id)">删除</el-button>
</template> </template>

View File

@@ -2,7 +2,7 @@
<el-dialog <el-dialog
:title="!dataForm.id ? '新增' : '修改'" :title="!dataForm.id ? '新增' : '修改'"
:close-on-click-modal="false" :close-on-click-modal="false"
:visible.sync="visible"> :visible.sync="visible" @close="closeDia">
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmit()" label-width="80px"> <el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmit()" label-width="80px">
<!-- <el-form-item label="图书id" prop="bookId"> <!-- <el-form-item label="图书id" prop="bookId">
<el-input v-model="dataForm.bookId" placeholder="图书id"></el-input> <el-input v-model="dataForm.bookId" placeholder="图书id"></el-input>
@@ -16,20 +16,27 @@
<!-- <el-form-item label="章节音频" prop="voice"> <!-- <el-form-item label="章节音频" prop="voice">
<el-input v-model="dataForm.chapter" placeholder="章节"></el-input> <el-input v-model="dataForm.chapter" placeholder="章节"></el-input>
</el-form-item> --> </el-form-item> -->
<el-form-item label="音频文件上传" prop="voices"> <el-form-item label="音频文件上传" prop="voices" v-loading="loading" element-loading-text="正在保存到服务器,请勿离开..." element-loading-spinner="el-icon-loading"
<el-upload class="upload-demo" :action= "baseUrl + '/oss/fileoss'" :on-preview="handlePreview" element-loading-background="rgba(255, 255, 255, 0.8)">
:on-remove="handleRemove" :on-success="handleVoicesSuccess" multiple :limit="3" :file-list="fileListVoices" <!-- <el-upload class="upload-demomp4" :action= "baseUrl + '/oss/fileoss'" :on-preview="handlePreview"
:on-progress="onUpload" :on-remove="handleRemove" :on-success="handleVoicesSuccess" multiple :limit="1" :file-list="fileListVoices"
:on-progress="onUpload" accept=".mp3"
> >
<el-button size="small" type="primary">点击上传</el-button> <el-button size="small" type="primary">点击上传</el-button>
</el-upload> -->
<el-upload :limit="1" class="el-uploadvideo "
:class="{ uoloadSty: dataForm.showBtnDealImg, disUoloadSty: dataForm.noneBtnImg }"
:action= "baseUrl + '/oss/fileoss'"
:file-list="fileListVoices" :on-success="handleVoicesSuccess" accept=".mp3" :on-remove="handleRemove"
:show-file-list="true"
:on-progress="onUpload">
<!-- <i class="el-icon-plus"></i> -->
<el-button slot="trigger" size="small" type="primary">上传文件</el-button>
</el-upload> </el-upload>
<!-- 进度条 --> <!-- <el-progress v-show="progressFlag" :percentage="progressPercent"></el-progress> -->
<el-progress <!-- 进度条 -->
:percentage="progressPercent" :text-inside="true" <!-- <el-progress v-show="progressFlag" :percentage="progressPercent"></el-progress> -->
:stroke-width="24" status="success"> <!-- <audio controls="controls" hidden src="./static/audio/tsy.wav" ref="audio"></audio> -->
</el-progress>
<audio controls="controls" hidden src="./static/audio/tsy.wav" ref="audio"></audio>
<audio id="resource" :src="dataForm.voices" controls v-show='true'></audio> <audio id="resource" :src="dataForm.voices" controls v-show='true'></audio>
</el-form-item> </el-form-item>
<el-form-item label="内容" prop="content"> <el-form-item label="内容" prop="content">
@@ -53,7 +60,7 @@
</el-form> </el-form>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button @click="visible = false">取消</el-button> <el-button @click="visible = false">取消</el-button>
<el-button type="primary" @click="dataFormSubmit()">确定</el-button> <el-button type="primary" @click="dataFormSubmit()" :disabled="loading">确定</el-button>
</span> </span>
</el-dialog> </el-dialog>
</template> </template>
@@ -63,8 +70,10 @@ import global from '../../common/common.vue' //引入共用组间
export default { export default {
data () { data () {
return { return {
baseUrl:global.baseUrl, baseUrl: global.baseUrl,
progressFlag:false,
visible: false, visible: false,
loading:false,
dataForm: { dataForm: {
id: 0, id: 0,
number:null, number:null,
@@ -110,7 +119,12 @@ import global from '../../common/common.vue' //引入共用组间
} }
} }
}, },
methods: { methods: {
closeDia() {
this.$refs.dataForm.resetFields()
this.loading = false
this.fileListVoices = []
},
init (id) { init (id) {
this.dataForm.id = id || 0 this.dataForm.id = id || 0
this.visible = true this.visible = true
@@ -128,46 +142,62 @@ import global from '../../common/common.vue' //引入共用组间
this.dataForm.bookId = data.bookChapter.id this.dataForm.bookId = data.bookChapter.id
this.dataForm.chapter = data.bookChapter.chapter this.dataForm.chapter = data.bookChapter.chapter
this.dataForm.content = data.bookChapter.content this.dataForm.content = data.bookChapter.content
this.dataForm.voices = data.bookChapter.voices if (data.bookChapter.voices != '') {
this.fileListVoices.push({
name:data.bookChapter.chapter,
url: data.bookChapter.voices
})
this.dataForm.voices = data.bookChapter.voices
}
this.dataForm.createTime = data.bookChapter.createTime this.dataForm.createTime = data.bookChapter.createTime
this.dataForm.updateTime = data.bookChapter.updateTime this.dataForm.updateTime = data.bookChapter.updateTime
this.dataForm.sort = data.bookChapter.sort this.dataForm.sort = data.bookChapter.sort
this.dataForm.delFlag = data.bookChapter.delFlag, this.dataForm.delFlag = data.bookChapter.delFlag,
this.dataForm.number = data.bookChapter.number this.dataForm.number = data.bookChapter.number
} }
}) })
} }
}) })
}, },
handleRemove(file) { handleRemove(file) {
this.dataForm.voices = ''; this.dataForm.voices = '';
this.fileListVoices = []
}, },
// 上传时进度条 // 上传时进度条
onUpload(event, file, fileList) { //三个参数看情况使用 onUpload(event, file, fileList) { //三个参数看情况使用
console.log(event,file,fileList) // console.log(event, file, fileList)
this.loading = true this.progressFlag = true; // 显示进度条
//使用定时器来制作进度条
setTimeout(() => { //progressPercent 进度条数字
//progressPercent 进度条数字 this.progressPercent = parseInt(event.percent); // 动态获取文件上传进度
this.progressPercent = Math.floor(event.percent) if (this.progressPercent >= 100) {
//这里之所以到72%就结束定时器,下面具体解释 this.progressPercent = 99
// console.log(this.progressPercent,'event.percent') this.loading = true
// if (Math.floor(this.progressPercent) == 100) { //console.log(this.loading,'上传进度')
// clearInterval(this.timer) // setTimeout( () => {this.progressFlag = false}, 1000) // 一秒后关闭进度条
// // 这里必须使用this.timer = null否则清除定时器无效 }
// this.timer = null
// }
},1000)
}, },
handleVoicesSuccess(res, file) { handleVoicesSuccess(res, file) {
if (res.msg == "success") { if (res.msg == "success") {
//console.log(res,'res') //console.log(res,'res')
this.dataForm.voices = res.url; this.progressFlag = false; // 显示进度条
this.loading = false
console.log(this.loading,'上传成功')
this.dataForm.voices = res.url;
this.fileListVoices.push({
name: file.name,
url: res.url
})
this.progressPercent = 100
this.$message.success("上传成功"); this.$message.success("上传成功");
} else { } else {
this.$message.error("上传失败"); this.$message.error("上传失败");
this.loading = false
} }
}, },
handlePreview(file) { handlePreview(file) {
@@ -216,3 +246,23 @@ import global from '../../common/common.vue' //引入共用组间
} }
} }
</script> </script>
<style lang="less" scoped>
/deep/ .el-uploadvideo .el-upload-list li{height: auto !important;}
// .disUoloadSty {
// .el-upload--picture-card {
// display: none;
// /* 上传按钮隐藏 */
// }
// }
// .el-form-item {
// /deep/ .el-form-item__label {
// font-size: 12px;
// }
// }
.el-uploadvideo{
.el-progress {
display: none !important;
}
}
</style>

View File

@@ -6,25 +6,25 @@
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button @click="getDataList()">查询</el-button> <el-button @click="getDataList()">查询</el-button>
<el-button v-if="isAuth('book:bookchapter:save')" type="primary" @click="addOrUpdateHandle()">新增</el-button> <el-button v-if="isAuth('book:bookchapter:save')" type="primary" @click="addOrUpdateHandle()">新增章节</el-button>
<el-button v-if="isAuth('book:bookchapter:delete')" type="danger" @click="deleteHandle()" :disabled="dataListSelections.length <= 0">批量删除</el-button> <!-- <el-button v-if="isAuth('book:bookchapter:delete')" type="danger" @click="deleteHandle()" :disabled="dataListSelections.length <= 0">批量删除</el-button> -->
<router-link :to="{path: 'book-book' , query:{ upPageIndex } }"> <!-- <router-link :to="{path: 'book-book' , query:{ upPageIndex } }">
<el-button type="primary">返回上一级</el-button> <el-button type="primary">返回上一级</el-button>
</router-link> </router-link> -->
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-table <el-table
:data="dataList" :data="dataList"
border border
v-loading="dataListLoading" v-loading="dataListLoading"
@selection-change="selectionChangeHandle"
style="width: 100%;"> style="width: 100%;">
<el-table-column <!-- <el-table-column
type="selection" type="selection"
header-align="center" header-align="center"
align="center" align="center"
width="50"> width="50">
</el-table-column> </el-table-column> -->
<!-- <el-table-column label="序号" width="70" align="center"> <!-- <el-table-column label="序号" width="70" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
{{ (pageIndex - 1) * pageSize + scope.$index + 1 }} {{ (pageIndex - 1) * pageSize + scope.$index + 1 }}

View File

@@ -43,7 +43,8 @@
</el-form-item> --> </el-form-item> -->
<el-form-item label="视频" > <el-form-item label="视频" >
<el-upload :limit="1" class="el-uploadvideo " <el-upload :limit="1" class="el-uploadvideo " v-loading="loading" element-loading-text="正在保存到服务器,请勿离开..." element-loading-spinner="el-icon-loading"
element-loading-background="rgba(255, 255, 255, 0.8)"
:class="{ uoloadSty: dataForm.showBtnDealImg, disUoloadSty: dataForm.noneBtnImg }" :class="{ uoloadSty: dataForm.showBtnDealImg, disUoloadSty: dataForm.noneBtnImg }"
:action="baseUrl + '/oss/fileoss'" :action="baseUrl + '/oss/fileoss'"
:file-list="videoList" :on-success="videohandlePicSuccess" accept=".mp4" :on-remove="videohandleRemove" :file-list="videoList" :on-success="videohandlePicSuccess" accept=".mp4" :on-remove="videohandleRemove"
@@ -73,7 +74,7 @@
</el-form> </el-form>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button @click="handlereset">取消</el-button> <el-button @click="handlereset">取消</el-button>
<el-button type="primary" @click="dataFormSubmit()">确定</el-button> <el-button type="primary" @click="dataFormSubmit()" :disabled="loading">确定</el-button>
</span> </span>
</el-dialog> </el-dialog>
</template> </template>
@@ -90,7 +91,8 @@
export default { export default {
data() { data() {
return { return {
loading: false,
progressFlag: false, progressFlag: false,
loadProgress: 0, loadProgress: 0,
baseUrl: global.baseUrl, baseUrl: global.baseUrl,
@@ -351,6 +353,7 @@
console.log('this.loadProgress',this.loadProgress) console.log('this.loadProgress',this.loadProgress)
if (this.loadProgress >= 100) { if (this.loadProgress >= 100) {
this.loadProgress = 99 this.loadProgress = 99
this.loading = true
// setTimeout( () => {this.progressFlag = false}, 1000) // 一秒后关闭进度条 // setTimeout( () => {this.progressFlag = false}, 1000) // 一秒后关闭进度条
} }
}, },
@@ -365,8 +368,8 @@
}) })
this.dataForm.video = res.url this.dataForm.video = res.url
// console.log(this.dataForm.productImages,'productImages') // console.log(this.dataForm.productImages,'productImages')
this.loadProgress = 100 this.loadProgress = 100
setTimeout( () => {this.progressFlag = false;this.$message.success("上传成功");}, 1000) // 一秒后关闭进度条 setTimeout(() => { this.progressFlag = false; this.loading = false; this.$message.success("上传成功");}, 1000) // 一秒后关闭进度条
} else { } else {
this.$message.error("上传失败"); this.$message.error("上传失败");
} }