diff --git a/src/assets/mp3/tip.mp3 b/src/assets/mp3/tip.mp3 new file mode 100644 index 0000000..9684c72 Binary files /dev/null and b/src/assets/mp3/tip.mp3 differ diff --git a/src/utils/speechReminder.js b/src/utils/speechReminder.js new file mode 100644 index 0000000..961d269 --- /dev/null +++ b/src/utils/speechReminder.js @@ -0,0 +1,20 @@ +export function speak(text, options = {}) { + // 检查浏览器是否支持 speech synthesis + if ('speechSynthesis' in window) { + const utterance = new SpeechSynthesisUtterance(); + + // 设置传递过来的文本 + utterance.text = text; + + // 可选参数:语言、音量、语速、音调等 + utterance.lang = options.lang || 'zh-CN'; // 默认语言为中文 + utterance.volume = options.volume || 1; // 音量,默认值为1(范围0到1) + utterance.rate = options.rate || 1.5; // 语速,默认值为1(范围0.1到10) + utterance.pitch = options.pitch || 1; // 音调,默认值为1(范围0到2) + + // 开始朗读 + window.speechSynthesis.speak(utterance); + } else { + console.log('您的浏览器不支持语音合成'); + } + } \ No newline at end of file diff --git a/src/views/bl/shipinquan/shipinquan.vue b/src/views/bl/shipinquan/shipinquan.vue index 1186acc..ce6f975 100644 --- a/src/views/bl/shipinquan/shipinquan.vue +++ b/src/views/bl/shipinquan/shipinquan.vue @@ -3,10 +3,7 @@
状态: - + @@ -15,184 +12,119 @@
姓名: - +
- 查询 +
+ 置顶: + + + + +    +
+ 查询 - 重置 + 重置 - + - + - + - + - + - + + - + + - + - + - + + + +
- +
头像: -
- + "> +
姓名: - +
- 内容: - + 内容: +
@@ -204,13 +136,7 @@
审批意见: - +
+ + + + + + + + + + + + + + + + +
+ + + + + + 发 布 + + +
+
@@ -243,6 +202,7 @@ export default { id: "", name: "", status: "", + isTop:"", artificerImg: "", artificerName: "", content: "", @@ -252,10 +212,134 @@ export default { dialogApproveFormVisible: false, videoUrl: "", dialogVideoFormVisible: false, - videoPlayer: null + videoPlayer: null, + plDialogVisible:false,//评论管理开关 + plTableData: [],//评论管理列表数据 + plContent:'',//评论内容,只在评论管理弹窗中使用 + pl_shipinquanId:'',//当前操作的视频的id }; }, methods: { + //发布评论 + releasePl(){ + this.$http({ + url: this.$http.adornUrl("/app/shipinquan/addContent"), + method: "post", + params: { + createBy: null, + content: this.plContent, + shipinquanId: this.pl_shipinquanId, + } + }).then(({ data }) => { + if (data.code == 0) { + this.handlePl({ id: this.pl_shipinquanId }) + } else { + this.$message({ + message: data.msg, + type: "warning", + duration: 1500, + onClose: () => { + }, + }); + } + }).catch(() => { + this.$message({ + message: data.msg, + type: "warning", + duration: 1500, + onClose: () => { + }, + }); + }); + }, + //关闭评论管理 + changePlDialog(sign){ + this.plDialogVisible = sign + if(!sign){ + //刷新列表 + this.handleSelect(); + } + }, + //删除评论 + deletePl(row){ + this.$http({ + url: this.$http.adornUrl("/bl/shipinquanPinglun/delete"), + method: "post", + params: { + id: row.id, + shipinquanId:this.pl_shipinquanId + } + }).then(({ data }) => { + this.handlePl({ id: this.pl_shipinquanId }) + }).catch(() => { + this.$message({ + message: data.msg, + type: "warning", + duration: 1500, + onClose: () => { + }, + }); + }); + }, + //打开评论 + handlePl(row) { + this.plContent = '' + this.pl_shipinquanId = '' + this.$http({ + url: this.$http.adornUrl("/app/shipinquan/contentlist"), + method: "get", + params: { + page: 1, + limit: 310, + shipinquanId: row.id + } + }).then(({ data }) => { + if(data.code == 0) this.plTableData = data.data.records + this.pl_shipinquanId = row.id + this.changePlDialog(true) + }).catch(() => { + + }); + }, + //设置点赞数 + setDzs(row) { + this.$prompt('当前为:' + row.dzs, '设置点赞数', { + confirmButtonText: '确定', + cancelButtonText: '取消', + inputPattern: /^(0|[1-9]\d*)$/, + inputErrorMessage: '请输入正整数' + }).then(({ value }) => { + this.$http({ + url: this.$http.adornUrl("bl/shipinquan/modify"), + method: "post", + params: this.$http.adornParams({ + id: row.id, + dzs: value, + }), + }).then(({ data }) => { + if (data.code == 0) { + this.$message({ + message: "设置成功", + type: "success", + duration: 1500, + onClose: () => { + this.handleSelect(); + }, + }); + } else { + this.$message({ + message: data.msg, + type: "warning", + duration: 1500, + onClose: () => { + }, + }); + } + }); + }).catch(() => { + + }); + }, // 获取列表数据 handleSelect() { this.tableDataLoading = true; @@ -266,12 +350,12 @@ export default { page: this.page, limit: this.limit, artificerName: this.name, - status: this.status + status: this.status, + isTop:this.isTop }), }).then(({data}) => { if (data.code == 0) { this.tableData = data.data; - console.log(this.tableData); } else { this.$notify({ title: "提示", @@ -287,6 +371,7 @@ export default { handleClear() { this.name = ""; this.status = ""; + this.isTop = ""; this.page = 1; this.handleSelect(); }, @@ -400,6 +485,72 @@ export default { } }); }, + //取消置顶 isTop true/false + handleToTop(row,isTop){ + if (isTop) { + this.$prompt('请输入置顶排序,值越大排名越靠前:', '置顶设置', { + confirmButtonText: '确定', + cancelButtonText: '取消', + inputPattern: /^(0|[1-9]\d*)$/, + inputErrorMessage: '请输入正整数' + }).then(({ value }) => { + this.$http({ + url: this.$http.adornUrl("bl/shipinquan/modify"), + method: "post", + params: this.$http.adornParams({ + id: row.id, + topSort: value, + }), + }).then(({ data }) => { + if (data.code == 0) { + this.$message({ + message: "置顶成功", + type: "success", + onClose: () => { + this.handleSelect(); + }, + }); + } else { + this.$message({ + message: data.msg, + type: "warning", + onClose: () => { + }, + }); + } + }); + }).catch(() => { + + }); + } else { + //取消置顶操作 + this.$http({ + url: this.$http.adornUrl("bl/shipinquan/modify"), + method: "post", + params: this.$http.adornParams({ + id: row.id, + topSort: 0, + }), + }).then(({ data }) => { + if (data.code == 0) { + this.$message({ + message: "取消置顶成功", + type: "success", + onClose: () => { + this.handleSelect(); + }, + }); + } else { + this.$message({ + message: data.msg, + type: "warning", + onClose: () => { + }, + }); + } + }); + } + }, //取消授权 handleCancelApply(row){ let id = row.id; diff --git a/src/views/main-navbar.vue b/src/views/main-navbar.vue index b751c3e..74fc777 100644 --- a/src/views/main-navbar.vue +++ b/src/views/main-navbar.vue @@ -8,6 +8,9 @@ +
+ 播放 +
+ + + + + + + + + + + +
+ 取 消 + 确 定 +
+
+
+
@@ -1244,6 +1266,9 @@ import { serverPaths } from '@/utils/enumData' export default { data() { return { + hyType:null,//会员类型 【0】月度-30天 【1】季度-90天 【2】年度-365天 + optionUser:null,//当前操作会员的用户 + hyDialogVisible:false,//会员配置弹窗 uploadUrl: serverPaths.uploadUrl, uploadWatermarkUrl: serverPaths.uploadWatermarkUrl, openValue: 1, @@ -1353,6 +1378,16 @@ import { serverPaths } from '@/utils/enumData' } ], isAuthentication:'', + hylxOptions:[{ + value: 0, + label: '月会员' + }, { + value: 1, + label: '季会员' + }, { + value: 2, + label: '年会员' + }], } }, methods: { @@ -2031,15 +2066,31 @@ import { serverPaths } from '@/utils/enumData' }) }, + // 会员类型确认窗口显隐 + changehyDialog(row,sign){ + if(!sign){ + this.hyDialogVisible = sign + } else{ + this.optionUser = row + this.hyDialogVisible = sign + } + }, // 设置会员 updateVip(row){ - + if(this.hyType!=0 && this.hyType!=1 && this.hyType!=2){ + this.$message({ + message: '未设置会员类型', + type: 'warning', + duration: 1500, + }) + return + } this.$http({ url: this.$http.adornUrl('user/giveUserVip'), method: 'post', params: this.$http.adornParams({ 'userId':row.userId, - 'day':30 + 'type':this.hyType }) }).then(({ data @@ -2050,6 +2101,7 @@ import { serverPaths } from '@/utils/enumData' type: 'success', duration: 1500, onClose: () => { + this.hyDialogVisible = false this.dataSelect() } }) @@ -2059,6 +2111,7 @@ import { serverPaths } from '@/utils/enumData' type: 'warning', duration: 1500, onClose: () => { + this.hyDialogVisible = false this.dataSelect() } }) diff --git a/src/views/vueMchat/vueMchat.vue b/src/views/vueMchat/vueMchat.vue index 436acb2..5587c49 100644 --- a/src/views/vueMchat/vueMchat.vue +++ b/src/views/vueMchat/vueMchat.vue @@ -37,7 +37,7 @@
- {{ item.messageTime.substring(11, 16) }} + {{ item.messageTime.substring(0, 16) }}