qiushang hai 1 ano
pai
achega
7536f1dc89
Modificáronse 3 ficheiros con 262 adicións e 369 borrados
  1. 1 5
      package.json
  2. 54 23
      src/renderer/components/home.vue
  3. 207 341
      yarn.lock

+ 1 - 5
package.json

@@ -38,11 +38,7 @@
 		"axios": "^0.18.0",
 		"element-ui": "^2.15.14",
 		"html-docx-js": "^0.3.1",
-		"html-to-pdfmake": "^2.5.6",
-		"jsdom": "21.0.0",
-		"pdfkit": "^0.15.0",
-		"pdfmake": "^0.2.10",
-		"pinyin-pro": "^3.20.0",
+		"pinyin-pro": "^3.19.7",
 		"regedit": "^5.0.0",
 		"request": "^2.88.2",
 		"vue": "^2.5.2",

+ 54 - 23
src/renderer/components/home.vue

@@ -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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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);
 				});
 			},

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 207 - 341
yarn.lock


Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio