|
@@ -8,7 +8,7 @@
|
|
|
<el-main ref="el-main" style="background-color: #fafafa;">
|
|
|
<template>
|
|
|
<div class="content-top">
|
|
|
- <el-radio-group v-model="pinyinType" size="small">
|
|
|
+ <el-radio-group v-model="pinyinType" size="small" @input="radioChange">
|
|
|
<el-radio-button :label="1">文字注音</el-radio-button>
|
|
|
<el-radio-button :label="2">文件批量注音</el-radio-button>
|
|
|
</el-radio-group>
|
|
@@ -28,7 +28,7 @@
|
|
|
<div style="padding: 15px 20px 0 20px; height: calc(100% - 150px);">
|
|
|
<el-row :gutter="20" style="height: 100%;" v-if="pinyinType == 1">
|
|
|
<el-col :span="12" style="height: 100%;">
|
|
|
- <el-input style="height: 100%; font-size: 20px;" type="textarea" placeholder="请输入需要注音的文字内容" v-model="txt1" @input="inputChange"></el-input>
|
|
|
+ <el-input style="height: 100%; font-size: 20px;" maxlength="100000" :show-word-limit="true" type="textarea" placeholder="请输入需要注音的文字内容" v-model="txt1" @input="inputChange"></el-input>
|
|
|
</el-col>
|
|
|
<el-col :span="12" style="height: 100%;">
|
|
|
<div class="outarea" v-html="txtHtml" v-if="pinBuild == 1"></div>
|
|
@@ -37,7 +37,7 @@
|
|
|
</el-row>
|
|
|
|
|
|
<div v-if="pinyinType == 2 && fileList.length == 0" class="upload-area">
|
|
|
- <div class="file-area" @click="pickFile()" id="drag-compress">
|
|
|
+ <div class="file-area" @click="pickFile()" id="drag-table">
|
|
|
<img src="../assets/image/upload.png" style="width: 220px;"/>
|
|
|
<p style="font-size: 16px;">点击添加TXT文件或拖拽TXT文件到此</p>
|
|
|
</div>
|
|
@@ -49,7 +49,7 @@
|
|
|
文件列表
|
|
|
<span style="color: #F22C40;">{{ loadingTips }}</span>
|
|
|
</p>
|
|
|
- <div class="table-scroll" id="drag-compress">
|
|
|
+ <div class="table-scroll" id="drag-table">
|
|
|
<vxe-table
|
|
|
show-overflow
|
|
|
class="img-table"
|
|
@@ -213,11 +213,10 @@
|
|
|
loadingTips: '',
|
|
|
tempPath: '',
|
|
|
procMap: {},
|
|
|
- execLimit: 3,
|
|
|
+ execLimit: 2,
|
|
|
|
|
|
exportLoading: false,
|
|
|
|
|
|
-
|
|
|
txt1: '',
|
|
|
txtHtml: '',
|
|
|
pinSetting: {
|
|
@@ -259,14 +258,19 @@
|
|
|
});
|
|
|
});
|
|
|
|
|
|
- // 加载拖拽监听事件
|
|
|
- this.initDrop();
|
|
|
},
|
|
|
methods: {
|
|
|
+ radioChange(e){
|
|
|
+ if(e == 2){
|
|
|
+ setTimeout(() => {
|
|
|
+ // 加载拖拽监听事件
|
|
|
+ this.initDrop();
|
|
|
+ }, 500)
|
|
|
+ }
|
|
|
+ },
|
|
|
// 加载拖拽监听事件
|
|
|
initDrop() {
|
|
|
- const dragWrapper = document.getElementById("drag-compress");
|
|
|
- const dragWrapper2 = document.getElementById("drag-table");
|
|
|
+ const dragWrapper = document.getElementById("drag-table");
|
|
|
let domArr = [dragWrapper];
|
|
|
domArr.map(item => {
|
|
|
//添加拖拽事件监听器
|
|
@@ -424,11 +428,12 @@
|
|
|
// htmls = htmls.replace(/<rt class/g, '<span class');
|
|
|
// htmls = htmls.replace(/<\/rt>/g, '</span>');
|
|
|
|
|
|
- htmls = htmls.replace(/py-non-chinese-item"> <\/span>/g, 'py-non-chinese-item"> </span>');
|
|
|
- htmls = htmls.replace(/py-non-chinese-item">\n<\/span>/g, 'py-non-chinese-item">\n</span><br>');
|
|
|
- htmls = htmls.replace(/<\/span><span class="py-result-item">/g, '</span>'+this.pinSetting.separator+'<span class="py-result-item">');
|
|
|
- // htmls = htmls.replace(/rp/g, 'span');
|
|
|
- // htmls = htmls.replace(/rt/g, 'span');
|
|
|
+ let regex1 = new RegExp('py-non-chinese-item"> </span>', "g");
|
|
|
+ let regex2 = new RegExp('py-non-chinese-item">\n</span>', "g");
|
|
|
+ let regex3 = new RegExp('</span><span class="py-result-item">', "g");
|
|
|
+ htmls = htmls.replace(regex1, 'py-non-chinese-item"> </span>');
|
|
|
+ htmls = htmls.replace(regex2, 'py-non-chinese-item">\n</span><br>');
|
|
|
+ htmls = htmls.replace(regex3, '</span>'+this.pinSetting.separator+'<span class="py-result-item">');
|
|
|
this.txtHtml = htmls;
|
|
|
}else{
|
|
|
this.txtHtml = pinyin(val, this.pinSetting);
|
|
@@ -450,7 +455,6 @@
|
|
|
this.handleData.newPath = this.downloadDir + separator + pjson.softInfo.softName;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
if(this.pinyinType == 1){ // 文字注音
|
|
|
if(this.txt1.length <= 0){
|
|
|
this.$message({message: '请输入需要注音的文字', type: 'warning'});
|
|
@@ -467,6 +471,7 @@
|
|
|
buffer = htmlContent;
|
|
|
}
|
|
|
let filePath = this.handleData.newPath + "\\" + "注音文档" + this.$utils.formatFileTime() + '.' + this.exportFormat;
|
|
|
+
|
|
|
fs.writeFile(filePath, buffer, (err) => {
|
|
|
if (err){
|
|
|
this.loading = false;
|
|
@@ -477,8 +482,8 @@
|
|
|
this.$message({message: "注音完成!", type: 'success'});
|
|
|
electronApi.call('showItemInfolder', [filePath]);
|
|
|
}, 1000)
|
|
|
-
|
|
|
});
|
|
|
+
|
|
|
}else{ // 文件批量注音
|
|
|
if(this.fileList.length <= 0){
|
|
|
this.$message({message: '请选择需要注音的TXT文档', type: 'warning'});
|
|
@@ -570,26 +575,33 @@
|
|
|
}else if(item.percent < 99){
|
|
|
item.percent += 1;
|
|
|
}
|
|
|
+ this.fileList.splice(index, 1, item);
|
|
|
}, 600);
|
|
|
|
|
|
- fs.readFile(path, 'utf8', async (err, data) => {
|
|
|
+ fs.readFile(path, 'utf8', async(err, data) => {
|
|
|
if (err) {
|
|
|
console.error(err);
|
|
|
this.$notify.error({
|
|
|
title: '错误',
|
|
|
message: "出现错误,请重试!" + filePath
|
|
|
});
|
|
|
+ clearInterval(this.fileList[index].setInt);
|
|
|
reject(false);
|
|
|
return;
|
|
|
}
|
|
|
+ let startTime = new Date().getTime();
|
|
|
+ console.log("文件内字符长度", data.length);
|
|
|
|
|
|
let outContent = '';
|
|
|
this.pinSetting.separator = this.separator == '' ? ' ' : this.separator;
|
|
|
if(this.pinBuild == 1){ // 上下结构
|
|
|
let htmls = html(data, {toneType : this.pinSetting.toneType, wrapNonChinese: true});
|
|
|
- htmls = htmls.replace(/py-non-chinese-item"> <\/span>/g, 'py-non-chinese-item"> </span>');
|
|
|
- htmls = htmls.replace(/py-non-chinese-item">\n<\/span>/g, 'py-non-chinese-item">\n</span><br>');
|
|
|
- htmls = htmls.replace(/<\/span><span class="py-result-item">/g, '</span>'+this.pinSetting.separator+'<span class="py-result-item">');
|
|
|
+ let regex1 = new RegExp('py-non-chinese-item"> </span>', "g");
|
|
|
+ let regex2 = new RegExp('py-non-chinese-item">\n</span>', "g");
|
|
|
+ let regex3 = new RegExp('</span><span class="py-result-item">', "g");
|
|
|
+ htmls = htmls.replace(regex1, 'py-non-chinese-item"> </span>')
|
|
|
+ .replace(regex2, 'py-non-chinese-item">\n</span><br>')
|
|
|
+ .replace(regex3, '</span>'+this.pinSetting.separator+'<span class="py-result-item">');
|
|
|
outContent = htmls;
|
|
|
}else{
|
|
|
outContent = pinyin(data, this.pinSetting);
|
|
@@ -602,6 +614,8 @@
|
|
|
}else{
|
|
|
buffer = outContent;
|
|
|
}
|
|
|
+ console.log('--out内容长度---',outContent.length,'--buffer的长度---',buffer.length);
|
|
|
+
|
|
|
let filePath = newPath;
|
|
|
fs.writeFile(filePath, buffer, (err) => {
|
|
|
if (err){
|
|
@@ -610,14 +624,31 @@
|
|
|
title: '错误',
|
|
|
message: "出现错误,请重试!" + filePath
|
|
|
});
|
|
|
+ clearInterval(this.fileList[index].setInt);
|
|
|
reject(false);
|
|
|
throw err;
|
|
|
}
|
|
|
item.percent = 100;
|
|
|
+ let endTime = new Date().getTime();
|
|
|
+ console.log('耗时:', endTime - startTime);
|
|
|
+ clearInterval(this.fileList[index].setInt);
|
|
|
});
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
+ // let writerStream = fs.createWriteStream(filePath);
|
|
|
+ // writerStream.write(buffer, 'utf8');
|
|
|
+ // writerStream.on('finish', () => {
|
|
|
+ // item.percent = 100;
|
|
|
+ // let endTime = new Date().getTime();
|
|
|
+ // clearInterval(this.fileList[index].setInt);
|
|
|
+ // console.log('耗时:', endTime - startTime);
|
|
|
+ // console.log('All writes are now complete.');
|
|
|
+ // });
|
|
|
+ // writerStream.on('error', (err) => {
|
|
|
+ // console.error('An error occurred:', err);
|
|
|
+ // });
|
|
|
+ // writerStream.end();
|
|
|
});
|
|
|
-
|
|
|
resolve(true);
|
|
|
});
|
|
|
},
|