From ae5d5108c1004f8cabc170984daf6d444d855287 Mon Sep 17 00:00:00 2001 From: zhc077 <565291854> Date: Sat, 22 Apr 2023 10:05:47 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E6=96=87=E6=9C=AC=E8=BD=AC=E8=AF=AD?= =?UTF-8?q?=E9=9F=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ant-design-vue-jeecg/package.json | 13 +- ant-design-vue-jeecg/src/App.vue | 173 +++++++++-- .../src/views/message/ZySpeechMessageList.vue | 272 ++++++++++++++++ .../message/modules/ZySpeechMessageForm.vue | 114 +++++++ .../message/modules/ZySpeechMessageModal.vue | 60 ++++ .../ZySpeechMessageModal__Style#Drawer.vue | 84 +++++ .../src/views/speak/Speak-tts.vue | 32 ++ .../src/views/system/UserAnnouncementList.vue | 293 ++++++++++-------- .../controller/ZySpeechMessageController.java | 156 ++++++++++ .../message/entity/ZySpeechMessage.java | 92 ++++++ .../message/mapper/ZySpeechMessageMapper.java | 15 + .../service/IZySpeechMessageService.java | 15 + .../impl/ZySpeechMessageServiceImpl.java | 18 ++ 13 files changed, 1179 insertions(+), 158 deletions(-) create mode 100644 ant-design-vue-jeecg/src/views/message/ZySpeechMessageList.vue create mode 100644 ant-design-vue-jeecg/src/views/message/modules/ZySpeechMessageForm.vue create mode 100644 ant-design-vue-jeecg/src/views/message/modules/ZySpeechMessageModal.vue create mode 100644 ant-design-vue-jeecg/src/views/message/modules/ZySpeechMessageModal__Style#Drawer.vue create mode 100644 ant-design-vue-jeecg/src/views/speak/Speak-tts.vue create mode 100644 jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/controller/ZySpeechMessageController.java create mode 100644 jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/entity/ZySpeechMessage.java create mode 100644 jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/mapper/ZySpeechMessageMapper.java create mode 100644 jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/service/IZySpeechMessageService.java create mode 100644 jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/service/impl/ZySpeechMessageServiceImpl.java diff --git a/ant-design-vue-jeecg/package.json b/ant-design-vue-jeecg/package.json index 730bfbbc..60a0548b 100644 --- a/ant-design-vue-jeecg/package.json +++ b/ant-design-vue-jeecg/package.json @@ -28,14 +28,17 @@ "echarts": "^5.3.0", "element-ui": "^2.15.6", "enquire.js": "^2.1.6", + "html2canvas": "~1.0.0-rc.4", "jquery": "^3.6.0", "js-cookie": "^2.2.0", + "jspdf": "^2.5.1", "lodash.get": "^4.4.2", "lodash.pick": "^4.4.0", "md5": "^2.2.1", "nprogress": "^0.2.0", "qiankun": "^2.5.1", "qs": "^6.10.3", + "speak-tts": "^2.0.8", "tinymce": "5.4.1", "viser-vue": "^2.4.8", "vue": "^2.6.10", @@ -53,9 +56,7 @@ "vxe-table": "2.9.13", "vxe-table-plugin-antd": "1.8.10", "xe-utils": "2.4.8", - "xss": "^1.0.13", - "html2canvas": "~1.0.0-rc.4", - "jspdf": "^2.5.1" + "xss": "^1.0.13" }, "devDependencies": { "@babel/polyfill": "^7.2.5", @@ -68,11 +69,11 @@ "eslint": "^5.16.0", "eslint-plugin-vue": "^5.1.0", "html-webpack-plugin": "^4.2.0", + "html2canvas": "~1.0.0-rc.4", + "jspdf": "^2.5.1", "less": "^3.9.0", "less-loader": "^4.1.0", - "vue-template-compiler": "^2.6.10", - "html2canvas": "~1.0.0-rc.4", - "jspdf": "^2.5.1" + "vue-template-compiler": "^2.6.10" }, "eslintConfig": { "root": true, diff --git a/ant-design-vue-jeecg/src/App.vue b/ant-design-vue-jeecg/src/App.vue index 9f4f7a8f..b0122c15 100644 --- a/ant-design-vue-jeecg/src/App.vue +++ b/ant-design-vue-jeecg/src/App.vue @@ -6,39 +6,162 @@ \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/message/ZySpeechMessageList.vue b/ant-design-vue-jeecg/src/views/message/ZySpeechMessageList.vue new file mode 100644 index 00000000..24f0a725 --- /dev/null +++ b/ant-design-vue-jeecg/src/views/message/ZySpeechMessageList.vue @@ -0,0 +1,272 @@ + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/message/modules/ZySpeechMessageForm.vue b/ant-design-vue-jeecg/src/views/message/modules/ZySpeechMessageForm.vue new file mode 100644 index 00000000..7572a4e7 --- /dev/null +++ b/ant-design-vue-jeecg/src/views/message/modules/ZySpeechMessageForm.vue @@ -0,0 +1,114 @@ + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/message/modules/ZySpeechMessageModal.vue b/ant-design-vue-jeecg/src/views/message/modules/ZySpeechMessageModal.vue new file mode 100644 index 00000000..c5dea8b9 --- /dev/null +++ b/ant-design-vue-jeecg/src/views/message/modules/ZySpeechMessageModal.vue @@ -0,0 +1,60 @@ + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/message/modules/ZySpeechMessageModal__Style#Drawer.vue b/ant-design-vue-jeecg/src/views/message/modules/ZySpeechMessageModal__Style#Drawer.vue new file mode 100644 index 00000000..da843833 --- /dev/null +++ b/ant-design-vue-jeecg/src/views/message/modules/ZySpeechMessageModal__Style#Drawer.vue @@ -0,0 +1,84 @@ + + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/speak/Speak-tts.vue b/ant-design-vue-jeecg/src/views/speak/Speak-tts.vue new file mode 100644 index 00000000..ab19d2d8 --- /dev/null +++ b/ant-design-vue-jeecg/src/views/speak/Speak-tts.vue @@ -0,0 +1,32 @@ + + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/system/UserAnnouncementList.vue b/ant-design-vue-jeecg/src/views/system/UserAnnouncementList.vue index 749e4fe3..2027d6ee 100644 --- a/ant-design-vue-jeecg/src/views/system/UserAnnouncementList.vue +++ b/ant-design-vue-jeecg/src/views/system/UserAnnouncementList.vue @@ -16,7 +16,7 @@ - + 查询 重置 @@ -51,142 +51,181 @@ \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/controller/ZySpeechMessageController.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/controller/ZySpeechMessageController.java new file mode 100644 index 00000000..d17a8d94 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/controller/ZySpeechMessageController.java @@ -0,0 +1,156 @@ +package org.jeecg.modules.message.controller; + + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.jeecg.common.system.base.controller.JeecgController; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.modules.message.entity.ZySpeechMessage; +import org.jeecg.modules.message.service.IZySpeechMessageService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.Arrays; + +/** + * @Description: 生产消息播报 + * @Author: jeecg-boot + * @Date: 2023-04-21 + * @Version: V1.0 + */ +@Api(tags = "生产消息播报") +@RestController +@RequestMapping("/org.jeecg.modules.message/zySpeechMessage") +@Slf4j +public class ZySpeechMessageController extends JeecgController { + @Autowired + private IZySpeechMessageService zySpeechMessageService; + + /** + * 分页列表查询 + * + * @param zySpeechMessage + * @param pageNo + * @param pageSize + * @param req + * @return + */ + @AutoLog(value = "生产消息播报-分页列表查询") + @ApiOperation(value = "生产消息播报-分页列表查询", notes = "生产消息播报-分页列表查询") + @GetMapping(value = "/list") + public Result queryPageList(ZySpeechMessage zySpeechMessage, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(zySpeechMessage, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = zySpeechMessageService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param zySpeechMessage + * @return + */ + @AutoLog(value = "生产消息播报-添加") + @ApiOperation(value = "生产消息播报-添加", notes = "生产消息播报-添加") + @PostMapping(value = "/add") + public Result add(@RequestBody ZySpeechMessage zySpeechMessage) { + zySpeechMessageService.save(zySpeechMessage); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param zySpeechMessage + * @return + */ + @AutoLog(value = "生产消息播报-编辑") + @ApiOperation(value = "生产消息播报-编辑", notes = "生产消息播报-编辑") + @PutMapping(value = "/edit") + public Result edit(@RequestBody ZySpeechMessage zySpeechMessage) { + zySpeechMessageService.updateById(zySpeechMessage); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "生产消息播报-通过id删除") + @ApiOperation(value = "生产消息播报-通过id删除", notes = "生产消息播报-通过id删除") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name = "id", required = true) String id) { + zySpeechMessageService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "生产消息播报-批量删除") + @ApiOperation(value = "生产消息播报-批量删除", notes = "生产消息播报-批量删除") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name = "ids", required = true) String ids) { + this.zySpeechMessageService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + @AutoLog(value = "生产消息播报-通过id查询") + @ApiOperation(value = "生产消息播报-通过id查询", notes = "生产消息播报-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name = "id", required = true) String id) { + ZySpeechMessage zySpeechMessage = zySpeechMessageService.getById(id); + if (zySpeechMessage == null) { + return Result.error("未找到对应数据"); + } + return Result.OK(zySpeechMessage); + } + + /** + * 导出excel + * + * @param request + * @param zySpeechMessage + */ + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, ZySpeechMessage zySpeechMessage) { + return super.exportXls(request, zySpeechMessage, ZySpeechMessage.class, "生产消息播报"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, ZySpeechMessage.class); + } + +} diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/entity/ZySpeechMessage.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/entity/ZySpeechMessage.java new file mode 100644 index 00000000..1ac07612 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/entity/ZySpeechMessage.java @@ -0,0 +1,92 @@ +package org.jeecg.modules.message.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecg.common.aspect.annotation.Dict; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.util.Date; + +/** + * @Description: 生产消息播报 + * @Author: jeecg-boot + * @Date: 2023-04-21 + * @Version: V1.0 + */ +@Data +@TableName("zy_speech_message") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "zy_speech_message对象", description = "生产消息播报") +public class ZySpeechMessage implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "主键") + private String id; + /** + * 创建人 + */ + @ApiModelProperty(value = "创建人") + private String createBy; + /** + * 创建日期 + */ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "创建日期") + private Date createTime; + /** + * 更新人 + */ + @ApiModelProperty(value = "更新人") + private String updateBy; + /** + * 更新日期 + */ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "更新日期") + private Date updateTime; + /** + * 订单商品id + */ + @Excel(name = "订单商品id", width = 15) + @ApiModelProperty(value = "订单商品id") + private String ordergoodsId; + /** + * 工单id + */ + @Excel(name = "工单id", width = 15) + @ApiModelProperty(value = "工单id") + private String workorderId; + /** + * 生产计划工序id + */ + @Excel(name = "生产计划工序id", width = 15) + @ApiModelProperty(value = "生产计划工序id") + private String zyplanprocessId; + /** + * 播报状态 + */ + @Excel(name = "播报状态", width = 15) + @ApiModelProperty(value = "是否加急") + @Dict(dicCode = "sfjj") + private String status; + + @Excel(name = "消息", width = 15) + @ApiModelProperty(value = "消息") + private String message; +} diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/mapper/ZySpeechMessageMapper.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/mapper/ZySpeechMessageMapper.java new file mode 100644 index 00000000..fbd00072 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/mapper/ZySpeechMessageMapper.java @@ -0,0 +1,15 @@ +package org.jeecg.modules.message.mapper; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.jeecg.modules.message.entity.ZySpeechMessage; + +/** + * @Description: 生产消息播报 + * @Author: jeecg-boot + * @Date: 2023-04-21 + * @Version: V1.0 + */ +public interface ZySpeechMessageMapper extends BaseMapper { + +} diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/service/IZySpeechMessageService.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/service/IZySpeechMessageService.java new file mode 100644 index 00000000..465be749 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/service/IZySpeechMessageService.java @@ -0,0 +1,15 @@ +package org.jeecg.modules.message.service; + + +import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.modules.message.entity.ZySpeechMessage; + +/** + * @Description: 生产消息播报 + * @Author: jeecg-boot + * @Date: 2023-04-21 + * @Version: V1.0 + */ +public interface IZySpeechMessageService extends IService { + +} diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/service/impl/ZySpeechMessageServiceImpl.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/service/impl/ZySpeechMessageServiceImpl.java new file mode 100644 index 00000000..e6557ddc --- /dev/null +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/message/service/impl/ZySpeechMessageServiceImpl.java @@ -0,0 +1,18 @@ +package org.jeecg.modules.message.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.jeecg.modules.message.entity.ZySpeechMessage; +import org.jeecg.modules.message.mapper.ZySpeechMessageMapper; +import org.jeecg.modules.message.service.IZySpeechMessageService; +import org.springframework.stereotype.Service; + +/** + * @Description: 生产消息播报 + * @Author: jeecg-boot + * @Date: 2023-04-21 + * @Version: V1.0 + */ +@Service +public class ZySpeechMessageServiceImpl extends ServiceImpl implements IZySpeechMessageService { + +} From 73b406814ae9fcfe68c10920e0a5373673d66c33 Mon Sep 17 00:00:00 2001 From: zhc077 <565291854> Date: Sat, 22 Apr 2023 14:07:47 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E6=96=87=E5=AD=97=E8=BD=AC=E8=AF=AD?= =?UTF-8?q?=E9=9F=B3=204.22?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ant-design-vue-jeecg/src/App.vue | 64 +++++----- .../src/views/message/Speak-TTS.vue | 119 ++++++++++++++++++ .../src/views/message/ZySpeechMessageList.vue | 19 ++- .../src/views/system/UserAnnouncementList.vue | 37 +++++- 4 files changed, 205 insertions(+), 34 deletions(-) create mode 100644 ant-design-vue-jeecg/src/views/message/Speak-TTS.vue diff --git a/ant-design-vue-jeecg/src/App.vue b/ant-design-vue-jeecg/src/App.vue index b0122c15..64c2753d 100644 --- a/ant-design-vue-jeecg/src/App.vue +++ b/ant-design-vue-jeecg/src/App.vue @@ -21,7 +21,7 @@ export default { // 定时器ID timer: null, // 定时器周期 - millisec: 30000, + millisec: 10000, url: { list: "/org.jeecg.modules.message/zySpeechMessage/list", edit: "/org.jeecg.modules.message/zySpeechMessage/edit", @@ -64,34 +64,42 @@ export default { } else { console.log("sorry,this browser,not supported TTS!!!") } - // this.speech.setLanguage('zh-CN'); this.speech.init({ 'volume': 1, - // 'lang': 'en-GB', 'lang': 'zh-CN', 'rate': 1, 'pitch': 1, - 'voice':'Google UK English Male', 'splitSentences': true, - }).then((data) => { - console.log('语音播报初始化完成...,配置参数:',data) + }).then((conf) => { + console.log('语音播报初始化完成...,Speech配置参数:', conf) }).catch(e => { console.error("An error occured while init : ", e) }) }, //语音播报 MySpeak(obj) { - console.log("MySpeak()接受到的消息:" + JSON.stringify(obj)) - this.speech.speak({text: obj['message']}).then(() => { - // console.log("MySpeak()播报完成...") - }) - console.log("MySpeak()播报完成...") - // this.updateMessageStatus(obj['id']); - }, - - speak() { - this.speech.speak({text: "欢迎关注小编"}).then(() => { - console.log("播报完成") + let mess = obj['message']; + console.log("----------speak()接受到的消息-----------【" + mess + "】"); + this.speech.speak({ + text: mess, + listeners: { + //开始播放 + onstart: () => { + console.log("Start utterance") + }, + //判断播放是否完毕 + onend: () => { + // console.log("End utterance"); + console.log("------------delete----------【" + mess + "】消息播报完成,删除该消息") + this.updateMessageStatus(obj['id']); + }, + //恢复播放 + onresume: () => { + console.log("Resume utterance") + }, + }, + }).then(() => { + // console.log("消息" + obj['id'] + "播报完成") }) }, @@ -101,15 +109,11 @@ export default { } getAction(this.url.list, parma).then((res) => { if (res.success) { - console.log("文字转语音消息列表>:" + JSON.stringify(res.result.records)); + console.log("------------getMessageList----------文字转语音消息列表>>>:" + JSON.stringify(res.result.records)); this.dataSource = res.result.records; this.dataSource.forEach(obj => { if (obj['status'] === '0') { - // this.speak(); this.MySpeak(obj); - // console.log("MySpeak()播报开始..."); - // this.speech.speak(obj['message']).then(() => { - // this.speak(); } }) } else { @@ -122,15 +126,18 @@ export default { }, updateMessageStatus(id) { - console.log("删除已播报消息:" + id); + // console.log("删除已播报消息:" + id); let parma = { "id": id, "status": '1', } putAction(this.url.edit, parma).then((res) => { if (res.success) { - this.dataSource.pop().id; - console.log(id + ">>>>>>>()之后:" + JSON.stringify(this.dataSource)) + for (let i = 0; i < this.dataSource.length; i++) { + if (this.dataSource[i].id === id) { + this.dataSource.splice(i, 1); + } + } } else { this.$message.warning(res.message) } @@ -142,14 +149,13 @@ export default { console.log("timer初始化完成:" + new Date().toLocaleString()) //上次播报列表播报完后,再获取新数据 this.timer = setInterval(() => { - // debugger + console.log("---未播报消息数量:", this.dataSource.length) if (this.dataSource.length === 0) { - console.log("timer is exec,the current time:" + new Date().toLocaleString()) + console.log("--------timer is exec,the current time:" + new Date().toLocaleString()) this.getMessageList(); } else { - console.log("hole down") + console.log("-------上次消息列表未处理完---HOLD DOWN") } - }, this.millisec) }, diff --git a/ant-design-vue-jeecg/src/views/message/Speak-TTS.vue b/ant-design-vue-jeecg/src/views/message/Speak-TTS.vue new file mode 100644 index 00000000..d2bd4c63 --- /dev/null +++ b/ant-design-vue-jeecg/src/views/message/Speak-TTS.vue @@ -0,0 +1,119 @@ + + + \ No newline at end of file diff --git a/ant-design-vue-jeecg/src/views/message/ZySpeechMessageList.vue b/ant-design-vue-jeecg/src/views/message/ZySpeechMessageList.vue index 24f0a725..d39fce8e 100644 --- a/ant-design-vue-jeecg/src/views/message/ZySpeechMessageList.vue +++ b/ant-design-vue-jeecg/src/views/message/ZySpeechMessageList.vue @@ -218,8 +218,23 @@ export default { //语音播报 MySpeak(message) { console.log("MySpeak()接受到的消息:" + message) - this.speech.speak({text: message}).then(() => { - // alert("MySpeak()播报完成..."); + this.speech.speak({ + text: message, + listeners: { + //开始播放 + onstart: () => { + console.log("Start utterance") + }, + //判断播放是否完毕 + onend: () => { + console.log("End utterance"); + }, + //恢复播放 + onresume: () => { + console.log("Resume utterance") + }, + }, + }).then(() => { console.log("MySpeak()播报完成...") }) }, diff --git a/ant-design-vue-jeecg/src/views/system/UserAnnouncementList.vue b/ant-design-vue-jeecg/src/views/system/UserAnnouncementList.vue index 2027d6ee..5419e7bf 100644 --- a/ant-design-vue-jeecg/src/views/system/UserAnnouncementList.vue +++ b/ant-design-vue-jeecg/src/views/system/UserAnnouncementList.vue @@ -193,11 +193,42 @@ export default { //语音播报 MySpeak() { - this.speech.speak({text: "测试javascript语音合成"}).then(() => { + this.speech.speak({ + text: "测试javascript语音合成", + listeners: { + //开始播放 + onstart: () => { + console.log("Start utterance") + }, + //判断播放是否完毕 + onend: () => { + console.log("End utterance"); + }, + //恢复播放 + onresume: () => { + console.log("Resume utterance") + }, + }, + }).then(() => { // alert("MySpeak()播报完成..."); - console.log("MySpeak()播报完成...") + console.log("MySpeak()---------------播报完成...") }) - } + }, + + //暂停 + paused() { + this.speech.pause(); + }, + //从暂停处继续播放 + goahead() { + this.speech.resume(); + console.log("继续播放-----------------------------") + }, + + //离开页面取消语音 + // destroyed() { + // this.speech.cancel(); + // }, } } From cb03926e0f953597f27713c62260673835e07834 Mon Sep 17 00:00:00 2001 From: zhc077 <565291854> Date: Sat, 22 Apr 2023 17:50:08 +0800 Subject: [PATCH 3/8] =?UTF-8?q?=E6=96=87=E5=AD=97=E8=BD=AC=E8=AF=AD?= =?UTF-8?q?=E9=9F=B3=204.22?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ant-design-vue-jeecg/src/App.vue | 250 +++++++++--------- .../src/views/message/ZySpeechMessageList.vue | 134 +++++++--- .../controller/ZySpeechMessageController.java | 5 +- 3 files changed, 218 insertions(+), 171 deletions(-) diff --git a/ant-design-vue-jeecg/src/App.vue b/ant-design-vue-jeecg/src/App.vue index 64c2753d..b4961c17 100644 --- a/ant-design-vue-jeecg/src/App.vue +++ b/ant-design-vue-jeecg/src/App.vue @@ -14,24 +14,22 @@ import {getAction, putAction} from "@api/manage"; export default { data() { return { - speech: null, locale: zhCN, - // 本次定时获取到到语言播报消息列表id - messageIds: [], - // 定时器ID - timer: null, - // 定时器周期 - millisec: 10000, - url: { - list: "/org.jeecg.modules.message/zySpeechMessage/list", - edit: "/org.jeecg.modules.message/zySpeechMessage/edit", - }, - /* 数据源 */ - dataSource: [], + + // speech: null, + // // 定时器ID + // timer: null, + // // 定时器周期 + // millisec: 3000, + // url: { + // list: "/org.jeecg.modules.message/zySpeechMessage/list", + // edit: "/org.jeecg.modules.message/zySpeechMessage/edit", + // }, + // // 本次定时获取到到语言播报消息列表id + // messageList: [], } }, created() { - console.log(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> App is init") let that = this enquireScreen(deviceType => { // tablet @@ -51,119 +49,119 @@ export default { }) }, - mounted() { - this.speechInit(); - this.openTimer() - }, - - methods: { - speechInit() { - this.speech = new Speech(); - if (this.speech.hasBrowserSupport()) { // returns a boolean - console.log("this browser,supported TTS") - } else { - console.log("sorry,this browser,not supported TTS!!!") - } - this.speech.init({ - 'volume': 1, - 'lang': 'zh-CN', - 'rate': 1, - 'pitch': 1, - 'splitSentences': true, - }).then((conf) => { - console.log('语音播报初始化完成...,Speech配置参数:', conf) - }).catch(e => { - console.error("An error occured while init : ", e) - }) - }, - //语音播报 - MySpeak(obj) { - let mess = obj['message']; - console.log("----------speak()接受到的消息-----------【" + mess + "】"); - this.speech.speak({ - text: mess, - listeners: { - //开始播放 - onstart: () => { - console.log("Start utterance") - }, - //判断播放是否完毕 - onend: () => { - // console.log("End utterance"); - console.log("------------delete----------【" + mess + "】消息播报完成,删除该消息") - this.updateMessageStatus(obj['id']); - }, - //恢复播放 - onresume: () => { - console.log("Resume utterance") - }, - }, - }).then(() => { - // console.log("消息" + obj['id'] + "播报完成") - }) - }, - - getMessageList() { - let parma = { - "status": '0', - } - getAction(this.url.list, parma).then((res) => { - if (res.success) { - console.log("------------getMessageList----------文字转语音消息列表>>>:" + JSON.stringify(res.result.records)); - this.dataSource = res.result.records; - this.dataSource.forEach(obj => { - if (obj['status'] === '0') { - this.MySpeak(obj); - } - }) - } else { - this.$message.warning(res.message) - } - }).finally(() => { - // this.loading = false - // this.loadData(); - }) - }, - - updateMessageStatus(id) { - // console.log("删除已播报消息:" + id); - let parma = { - "id": id, - "status": '1', - } - putAction(this.url.edit, parma).then((res) => { - if (res.success) { - for (let i = 0; i < this.dataSource.length; i++) { - if (this.dataSource[i].id === id) { - this.dataSource.splice(i, 1); - } - } - } else { - this.$message.warning(res.message) - } - }) - }, - - openTimer() { - this.closeTimer() - console.log("timer初始化完成:" + new Date().toLocaleString()) - //上次播报列表播报完后,再获取新数据 - this.timer = setInterval(() => { - console.log("---未播报消息数量:", this.dataSource.length) - if (this.dataSource.length === 0) { - console.log("--------timer is exec,the current time:" + new Date().toLocaleString()) - this.getMessageList(); - } else { - console.log("-------上次消息列表未处理完---HOLD DOWN") - } - }, this.millisec) - }, + // mounted() { + // this.speechInit(); + // this.openTimer() + // }, - /** 关闭定时器 */ - closeTimer() { - if (this.timer) clearInterval(this.timer) - }, - } + // methods: { + // speechInit() { + // this.speech = new Speech(); + // if (this.speech.hasBrowserSupport()) { // returns a boolean + // console.log("this browser,supported TTS") + // } else { + // console.log("sorry,this browser,not supported TTS!!!") + // } + // this.speech.init({ + // 'volume': 1, + // 'lang': 'zh-CN', + // 'rate': 1, + // 'pitch': 1, + // 'splitSentences': true, + // }).then((conf) => { + // console.log('语音播报初始化完成...,Speech配置参数:', conf) + // }).catch(e => { + // console.error("An error occured while init : ", e) + // }) + // }, + // //语音播报 + // MySpeak(obj) { + // let mess = obj['message']; + // console.log("----------speak()接受到的消息-----------【" + mess + "】"); + // this.speech.speak({ + // text: mess, + // listeners: { + // //开始播放 + // onstart: () => { + // console.log("Start utterance") + // }, + // //判断播放是否完毕 + // onend: () => { + // // console.log("End utterance"); + // console.log("------------delete----------【" + mess + "】消息播报完成,删除该消息") + // this.updateMessageStatus(obj['id']); + // }, + // //恢复播放 + // onresume: () => { + // console.log("Resume utterance") + // }, + // }, + // }).then(() => { + // // console.log("消息" + obj['id'] + "播报完成") + // }) + // }, + // + // getMessageList() { + // let parma = { + // "status": '0', + // } + // getAction(this.url.list, parma).then((res) => { + // if (res.success) { + // console.log("------------getMessageList----------文字转语音消息列表>>>:" + JSON.stringify(res.result.records)); + // this.messageList = res.result.records; + // this.messageList.forEach(obj => { + // if (obj['status'] === '0') { + // this.MySpeak(obj); + // } + // }) + // } else { + // this.$message.warning(res.message) + // } + // }).finally(() => { + // // this.loading = false + // // this.loadData(); + // }) + // }, + // + // updateMessageStatus(id) { + // // console.log("删除已播报消息:" + id); + // let parma = { + // "id": id, + // "status": '1', + // } + // putAction(this.url.edit, parma).then((res) => { + // if (res.success) { + // for (let i = 0; i < this.messageList.length; i++) { + // if (this.messageList[i].id === id) { + // this.messageList.splice(i, 1); + // } + // } + // } else { + // this.$message.warning(res.message) + // } + // }) + // }, + // + // openTimer() { + // this.closeTimer() + // console.log(">>>timer初始化完成【" + new Date().toLocaleString() + "】,---执行周期: " + this.millisec+" 毫秒") + // //上次播报列表播报完后,再获取新数据 + // this.timer = setInterval(() => { + // console.log("---未播报消息数量:", this.messageList.length) + // if (this.messageList.length === 0) { + // console.log("--------timer is exec,the current time:" + new Date().toLocaleString()) + // this.getMessageList(); + // } else { + // console.log("-------上次消息列表未处理完---HOLD DOWN") + // } + // }, this.millisec) + // }, + // + // /** 关闭定时器 */ + // closeTimer() { + // if (this.timer) clearInterval(this.timer) + // }, + // } }