qiushang 1 år sedan
förälder
incheckning
5c9daf7550
7 ändrade filer med 109 tillägg och 150 borttagningar
  1. 4 4
      nsis/test.nsi
  2. 2 3
      package.json
  3. 1 1
      src/index.ejs
  4. 0 40
      src/main/electronApi.js
  5. 1 1
      src/renderer/components/header.vue
  6. 56 18
      src/renderer/components/home.vue
  7. 45 83
      yarn.lock

+ 4 - 4
nsis/test.nsi

@@ -1,16 +1,16 @@
 # ====================== 自定义宏 产品信息==============================
 !define PRODUCT_MID        		    "4qgNl8jfYlLV"
-!define PRODUCT_VERSION        		"2.0.1.0"
-!define PRODUCT_NAME           		"星优文件理器"
+!define PRODUCT_VERSION        		"2.0.2.0"
+!define PRODUCT_NAME           		"星优文件名管理器"
 !define INSTALL_OUTPUT_NAME    		"XYRename_XY.exe" 
 !define EXE_NAME               		"XYRename.exe"
 !define PRODUCT_PATHNAME           	"XYRename"     #安装卸载项用到的KEY,注册表
 !define INSTALL_APPEND_PATH         "XYRename"     #安装路径追加的名称 
-!define APP_DOWNLOAD_URL    		"https://xy.xingyousoft.com/soft/XYRename/lastest2.0.1.0.7z"
+!define APP_DOWNLOAD_URL    		"https://xy.xingyousoft.com/soft/XYRename/lastest2.0.2.0.7z"
 !define PRODUCT_PUBLISHER      	    "苏州星优办公软件有限公司"
 !define PRODUCT_LEGAL          	    "苏州星优办公软件有限公司"
 !define STATISTICS_url              "https://www.xingyousoft.com/api/index/user_log"   # 统计网址
-!define UNINSTALL_url               "https://xy.xingyousoft.com/soft/XYRename/uninstallWeb/?v=2.0.1.0"   # 接卸优惠网址
+!define UNINSTALL_url               "https://xy.xingyousoft.com/soft/XYRename/uninstallWeb/?v=2.0.2.0"   # 接卸优惠网址
 
 # ====================== 自定义宏 安装信息==============================
 !define INSTALL_7Z_NAME 	   		"app.7z"

+ 2 - 3
package.json

@@ -1,6 +1,6 @@
 {
   "name": "XYRename",
-  "version": "2.0.1.0",
+  "version": "2.0.2.0",
   "author": "苏州星优办公软件有限公司",
   "description": "An electron-vue project",
   "license": "rename",
@@ -9,7 +9,7 @@
     "description": "这里是软件描述文档",
     "downloadName": "XYRename",
     "softMid": "4qgNl8jfYlLV",
-    "softName": "星优文件理器",
+    "softName": "星优文件名管理器",
     "copyright": "苏州星优办公软件有限公司",
     "popupAdvId": "24",
     "linkId": "20",
@@ -39,7 +39,6 @@
     "element-ui": "^2.15.14",
     "node-xlsx": "^0.24.0",
     "officegen": "^0.6.5",
-    "regedit": "^5.0.0",
     "request": "^2.88.2",
     "vue": "^2.5.2",
     "vue-electron": "^1.0.6",

+ 1 - 1
src/index.ejs

@@ -2,7 +2,7 @@
 <html>
   <head>
     <meta charset="utf-8">
-    <title>星优音频转换器</title>
+    <title>星优文件名管理器</title>
     <% if (htmlWebpackPlugin.options.nodeModules) { %>
       <!-- Add `node_modules/` to global paths so `require` works properly in development -->
       <script>

+ 0 - 40
src/main/electronApi.js

@@ -5,7 +5,6 @@ const path = require("path");
 const fs = require("fs");
 const os = require("os");
 
-const regedit = require('regedit');
 const child_process = require("child_process");
 const { app, dialog, shell, Menu, net, ipcMain  } = require("electron");
 
@@ -30,42 +29,6 @@ function getAllExe(dir) {
     });
 }
 
-function statistics(token) {
-    let key1 = 'HKLM\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment';
-    let key2 = 'HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion';
-    let key3 = 'HKLM\\SOFTWARE\\Microsoft\\Cryptography';
-    let mac = '';
-    let os_platform = '';
-    let os_arch = '';
-
-    if (process.env.NODE_ENV == 'development') {
-    } else {
-		const vbsDirectory = path.join(path.dirname(app.getPath('exe')), './resources/app.asar.unpacked/bin/vbs');
-		regedit.setExternalVBSLocation(vbsDirectory);
-    }
-	
-	try{
-		regedit.list([key1, key2, key3], function (err, result) {
-		    os_arch = result[key1]['values']['PROCESSOR_ARCHITECTURE']['value'] || '';
-			os_platform = result[key2]['values']['ProductName']['value'] || '';
-            
-		    if(os_arch == 'x86'){ // 
-				regedit.arch.list32([key1, key2, key3], function (err, result) {
-				    mac = result[key3]['values']['MachineGuid']['value'] + '_' + result[key2]['values']['ProductId']['value'] || '';
-					userlog(mac, os_platform, os_arch, token)
-				})
-			}else{
-				regedit.arch.list64([key1, key2, key3], function (err, result) {
-				    mac = result[key3]['values']['MachineGuid']['value'] + '_' + result[key2]['values']['ProductId']['value'] || '';
-					userlog(mac, os_platform, os_arch, token)
-				})
-			}
-		})
-	}catch(e){
-		//TODO handle the exception
-	}
-}
-
 function userlog(mac, os_platform, os_arch, token){
 	let params = {
 	    type: 3,
@@ -91,9 +54,6 @@ function userlog(mac, os_platform, os_arch, token){
 }
 
 let api = {
-	getStatistics(token){
-		statistics(token);
-	},
 	getAppPath(){
 		return new Promise((resolve, reject) => {
 			resolve(app.getPath('exe'))

+ 1 - 1
src/renderer/components/header.vue

@@ -156,7 +156,7 @@
 	import fs from 'fs';
 	import os from 'os';
 	import path from 'path';
-	const regedit = require('regedit');
+
     export default {
         name: "headerTop",
 		data(){

+ 56 - 18
src/renderer/components/home.vue

@@ -95,8 +95,12 @@
 						</el-button-group>
 						
 						<div style="width: 366px; display: flex; justify-content: space-between;align-items: flex-end;">
+							<el-button size="mini" @click="sort()">打印</el-button>
+							<el-button size="mini" @click="setChange()">刷新</el-button>
+							<el-button size="mini" @click="sortAsc()">升序</el-button>
+							<el-button size="mini" @click="sortDesc()">降序</el-button>
 							<el-popover v-if="(menuIndex == '1' && fileList.length > 0) || (menuIndex == '2' && dirList.length > 0)" placement="bottom" popper-class="popper-open" trigger="hover" content="命名撤回一次">
-								<el-button slot="reference" type="info" size="mini" @click="back()" :disabled="backFileList.length == 0">撤回</el-button>
+								<el-button slot="reference" type="info" size="mini" @click="back()" :disabled="(menuIndex == '1' && backFileList.length == 0) || (menuIndex == '2' && backDirList.length == 0)" >撤回</el-button>
 							</el-popover>
 							<div v-else></div>
 							<el-button type="danger" style="margin-left: 20px;" @click="exportFile()" >开始处理</el-button>
@@ -129,12 +133,12 @@
 							
 							<div v-else class="table-scroll" @dragover.prevent @drop="handleDrop">
 								<!-- 1、文件重命名 @sort-change="sortChange" sortMethod: customSortMethod-->
-								<vxe-table
-									v-show="['1','5'].indexOf(menuIndex) > -1"
+								<vxe-table ref="xTable"
+									v-show="['1','5'].indexOf(menuIndex) > -1" :sort-config="{sortMethod: customSortMethod}"
 									show-overflow class="img-table" max-height="100%" empty-text="没有更多数据了!" :loading="tabLoading"
 									:loading-config="{icon: 'vxe-icon-indicator roll', text: '文件加载中...'}" :row-config="{isHover: true}"
 									:edit-config="{trigger: 'click', mode: 'cell'}" :data="fileList" :scroll-y="{enabled: true}">
-									<vxe-column field="name" :title="'原文件名'+'(' + fileList.length + ')'"></vxe-column>
+									<vxe-column field="name" :title="'原文件名'+'(' + fileList.length + ')'" sortable></vxe-column>
 									<vxe-column field="newName" title="新文件名" :edit-render="{}" v-if="menuIndex == '1'">
 										<template #edit="{ row, rowIndex }">
 											<div style="display: flex; justify-content: space-between;">
@@ -187,7 +191,6 @@
 									<vxe-column field="newName" title="新文件夹名" :edit-render="{}" v-if="menuIndex == '2'">
 										<template #edit="{ row }">
 											<vxe-input v-model="row.newName" type="text" placeholder="请输入新文件夹名"></vxe-input>
-											<!-- <vxe-input type="datetime" placeholder="请选择日期" transfer></vxe-input> -->
 										</template>
 									</vxe-column>
 									<vxe-column field="path" title="文件位置" width="200"></vxe-column>
@@ -378,7 +381,7 @@
 								<template v-if="foundData.foundType != 'folder'">
 									<div class="handle-item">
 										<label class="handle-label">上传模板:</label>
-										<el-input :title="foundData.sourceFileName" ref="upload-file" @focus="importExample" placeholder="选择文件" size="small" v-model="foundData.sourceFileName" readonly style="width:150px;" prefix-icon="el-icon-folder"></el-input>
+										<el-input :title="foundData.sourceFileName" ref="upload-example" @focus="importExample" placeholder="选择文件" size="small" v-model="foundData.sourceFileName" readonly style="width:150px;" prefix-icon="el-icon-folder"></el-input>
 									</div>
 									
 									<div class="eq-tips">不上传模板,默认创建文件内容为空</div>
@@ -449,7 +452,7 @@
 								
 								<div class="handle-item" >
 									<label class="handle-label">创建位置:</label>
-									<el-input :title="foundData.newPath" ref="upload-input" @focus="pickPath('foundData')" placeholder="请选择创建位置" size="small" v-model="foundData.newPath" readonly style="width:150px; font-size: 12px;" prefix-icon="el-icon-folder"></el-input>
+									<el-input :title="foundData.newPath" ref="upload-create" @focus="pickPath('foundData', 'upload-create')" placeholder="请选择创建位置" size="small" v-model="foundData.newPath" readonly style="width:150px; font-size: 12px;" prefix-icon="el-icon-folder"></el-input>
 									<el-popover placement="bottom" popper-class="popper-open" trigger="hover" content="打开创建目录">
 									    <i class="el-icon-folder-opened" slot="reference" style="width: 18px;cursor: pointer; font-size: 22px; vertical-align: middle;" @click="openFolder('foundData')"></i>
 									</el-popover>
@@ -498,8 +501,8 @@
 								</div>
 								<div class="handle-item" >
 									<label class="handle-label">导出目录:</label>
-									<el-input :title="extractData.newPath" ref="upload-input" @focus="pickPath('extractData')" placeholder="请选择输出目录" size="small" v-model="extractData.newPath" readonly style="width:150px; font-size: 12px;" prefix-icon="el-icon-folder"></el-input>
-									<el-popover placement="bottom" popper-class="popper-open" trigger="hover" content="打开保存目录">
+									<el-input :title="extractData.newPath" ref="upload-extract" @focus="pickPath('extractData', 'upload-extract')" placeholder="请选择导出目录" size="small" v-model="extractData.newPath" readonly style="width:150px; font-size: 12px;" prefix-icon="el-icon-folder"></el-input>
+									<el-popover placement="bottom" popper-class="popper-open" trigger="hover" content="打开导出目录">
 									    <i class="el-icon-folder-opened" slot="reference" style="width: 18px;cursor: pointer; font-size: 22px; vertical-align: middle;" @click="openFolder('extractData')"></i>
 									</el-popover>
 								</div>
@@ -905,9 +908,30 @@ export default {
 	    });
 	},
 	methods: {
+		// 测试排序
+		sort(){
+			console.log(this.fileList);
+		},
+		sortAsc(){
+			const collator = new Intl.Collator('zh-Hans-CN', { sensitivity: 'case', numeric: false });
+			// this.fileList.sort(collator.compare);
+			this.fileList.sort((a, b) => {
+				console.log(a.name, '--->', b.name, a.name.localeCompare(b.name));
+				return a.name.localeCompare(b.name)
+			})
+			
+			// this.fileList.sort((a, b) => {
+			// 	return collator.compare(a.name, b.name)
+			// })
+		},
+		sortDesc(){
+			this.fileList.sort((a, b) => {
+				return b.name.localeCompare(a.name)
+			});
+		},
 		// 选择导出目录 1、提取和文件生成
-		pickPath(str) {
-			this.$refs['upload-input'].blur();
+		pickPath(str, input) {
+			this.$refs[input].blur();
 			electronApi.call('pickDir', []).then((path) => {
 				if (path) {
 					this[str].newPath = path;
@@ -1233,7 +1257,7 @@ export default {
 		},
 		// 批量创建导入模板
 		async importExample(){
-			this.$refs['upload-file'].blur();
+			this.$refs['upload-example'].blur();
 			let str = '';
 			switch(this.foundData.foundType){
 				case 'docx': // word
@@ -2020,14 +2044,28 @@ export default {
 			}else{
 				list = data;
 			}
-			return data;
+			return list;
 			// this.setChange();
 			
 		},
 		// 排序 { column, field, order, sortBy, sortList, $event }
-		sortChange({ column, field, order, sortBy, sortList, $event }){
-			const collator = new Intl.Collator('zh-Hans-CN', { sensitivity: 'case', numeric: true });
-			this.fileList.sort(collator.compare);
+		sortChange({ column, field, order, sortBy, sortList }){
+			//console.log({ column, field, order, sortBy, sortList });
+			// 这里可以获取排序的字段和顺序
+			// 使用 Array.prototype.sort 进行排序
+			this.fileList.sort((a, b) => {
+				if (order === 'asc') {
+					return a[field] > b[field] ? 1 : -1;
+				} else if (order === 'desc') {
+					return a[field] < b[field] ? 1 : -1;
+				}
+				return 0;
+			});
+			
+			this.$forceUpdate();
+			
+			//const collator = new Intl.Collator('zh-Hans-CN', { sensitivity: 'case', numeric: true });
+			//this.fileList.sort(collator.compare);
 
 			// let a = [{name: '1'},{name: '2'},{name: '11'},{name: '100'},{name: 'a'},{name: '啊'},{name: '张韶涵 - 欧若拉 (Live).mp3'}];
 			
@@ -2041,8 +2079,8 @@ export default {
 			// 	});
 			// }
 			
-			console.log(field, order, this.fileList);
-			this.setChange();
+			//console.log(field, order, this.fileList);
+			//this.setChange();
 		},
 	    // 操作文件
 	    handleFile() {

+ 45 - 83
yarn.lock

@@ -13,34 +13,34 @@
   integrity sha512-ns8vKbKhIQm338AeWo/YdDSWil3pldwCMoyR2npoM2qDAzF8Vuko8BtDxpNt/wE15SXOh5K5WbjSLR4kTOAHLA==
 
 "@babel/helper-module-imports@^7.0.0":
-  version "7.24.3"
-  resolved "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz#6ac476e6d168c7c23ff3ba3cf4f7841d46ac8128"
-  integrity sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==
+  version "7.24.6"
+  resolved "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.24.6.tgz#65e54ffceed6a268dc4ce11f0433b82cfff57852"
+  integrity sha512-a26dmxFJBF62rRO9mmpgrfTLsAuyHk4e1hKTUkD/fcMfynt8gvEKwQPQDVxWhca8dHoDck+55DFt42zV0QMw5g==
   dependencies:
-    "@babel/types" "^7.24.0"
+    "@babel/types" "^7.24.6"
 
-"@babel/helper-string-parser@^7.24.1":
-  version "7.24.1"
-  resolved "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz#f99c36d3593db9540705d0739a1f10b5e20c696e"
-  integrity sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==
+"@babel/helper-string-parser@^7.24.6":
+  version "7.24.6"
+  resolved "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.24.6.tgz#28583c28b15f2a3339cfafafeaad42f9a0e828df"
+  integrity sha512-WdJjwMEkmBicq5T9fm/cHND3+UlFa2Yj8ALLgmoSQAJZysYbBjw+azChSGPN4DSPLXOcooGRvDwZWMcF/mLO2Q==
 
-"@babel/helper-validator-identifier@^7.24.5":
-  version "7.24.5"
-  resolved "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz#918b1a7fa23056603506370089bd990d8720db62"
-  integrity sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==
+"@babel/helper-validator-identifier@^7.24.6":
+  version "7.24.6"
+  resolved "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.6.tgz#08bb6612b11bdec78f3feed3db196da682454a5e"
+  integrity sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw==
 
 "@babel/parser@^7.23.5":
-  version "7.24.5"
-  resolved "https://registry.npmmirror.com/@babel/parser/-/parser-7.24.5.tgz#4a4d5ab4315579e5398a82dcf636ca80c3392790"
-  integrity sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==
+  version "7.24.6"
+  resolved "https://registry.npmmirror.com/@babel/parser/-/parser-7.24.6.tgz#5e030f440c3c6c78d195528c3b688b101a365328"
+  integrity sha512-eNZXdfU35nJC2h24RznROuOpO94h6x8sg9ju0tT9biNtLZ2vuP8SduLqqV+/8+cebSLV9SJEAN5Z3zQbJG/M+Q==
 
-"@babel/types@^7.24.0":
-  version "7.24.5"
-  resolved "https://registry.npmmirror.com/@babel/types/-/types-7.24.5.tgz#7661930afc638a5383eb0c4aee59b74f38db84d7"
-  integrity sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==
+"@babel/types@^7.24.6":
+  version "7.24.6"
+  resolved "https://registry.npmmirror.com/@babel/types/-/types-7.24.6.tgz#ba4e1f59870c10dc2fa95a274ac4feec23b21912"
+  integrity sha512-WaMsgi6Q8zMgMth93GvWPXkhAIEobfsIkLTacoVZoK1J0CevIPGYY2Vo5YvJGqyHqXM6P4ppOYGsIRU8MM9pFQ==
   dependencies:
-    "@babel/helper-string-parser" "^7.24.1"
-    "@babel/helper-validator-identifier" "^7.24.5"
+    "@babel/helper-string-parser" "^7.24.6"
+    "@babel/helper-validator-identifier" "^7.24.6"
     to-fast-properties "^2.0.0"
 
 "@develar/schema-utils@~2.6.5":
@@ -2280,14 +2280,14 @@ caniuse-api@^1.5.2:
     lodash.uniq "^4.5.0"
 
 caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639:
-  version "1.0.30001621"
-  resolved "https://registry.npmmirror.com/caniuse-db/-/caniuse-db-1.0.30001621.tgz#d4b267bd565edee04ff1dd16ba9ef17962df68b9"
-  integrity sha512-2iwAHB4j4OVlWcivkHnc1ycKl/FXZd0x+NdNhX7PpZciZp77nxDSloromhwBZJQgprZK9Yad+1Y+e2VUq2YILg==
+  version "1.0.30001623"
+  resolved "https://registry.npmmirror.com/caniuse-db/-/caniuse-db-1.0.30001623.tgz#7276b02c232c1dbb0944f96d58fa4706e0f8ed9d"
+  integrity sha512-H6bd8jJ2M3NOJc6gavEzqREfWaeBXHBvT8l042UyvesUU44lRYkzVQVTy7Q87N/0BvLcyzfZ5QZP7O9WITAJnw==
 
 caniuse-lite@^1.0.30000844:
-  version "1.0.30001621"
-  resolved "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001621.tgz#4adcb443c8b9c8303e04498318f987616b8fea2e"
-  integrity sha512-+NLXZiviFFKX0fk8Piwv3PfLPGtRqJeq2TiNoUff/qB5KJgwecJTvCXDpmlyP/eCI/GUEmp/h/y5j0yckiiZrA==
+  version "1.0.30001623"
+  resolved "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001623.tgz#e982099dcb229bb6ab35f5aebe2f8d79ccf6e8a8"
+  integrity sha512-X/XhAVKlpIxWPpgRTnlgZssJrF0m6YtRA0QDWgsBNT12uZM6LPRydR7ip405Y3t1LamD8cP2TZFEDZFBf5ApcA==
 
 caseless@~0.12.0:
   version "0.12.0"
@@ -3418,10 +3418,10 @@ dom-serializer@^1.0.1:
     domhandler "^4.2.0"
     entities "^2.0.0"
 
-dom-zindex@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.npmmirror.com/dom-zindex/-/dom-zindex-1.0.2.tgz#2fb836c006d8d09af5663f84d50221a917592058"
-  integrity sha512-QceDZxPlvzhpg6e8szxNiKPUt5Y9SfFTe3nZy8og3JoPQPlAlzBzHa/lhDkhgeG3cjbKyQcuoic+wymF0o0d1Q==
+dom-zindex@^1.0.4:
+  version "1.0.4"
+  resolved "https://registry.npmmirror.com/dom-zindex/-/dom-zindex-1.0.4.tgz#c5a21153dc85962c8d4831ea42db898cc536eb26"
+  integrity sha512-PNk7u71TJ1C9Lwjjp5nNuQcVWuECFMmr9kZAwi2UbgWUM7jXdTCe4O4x5bhLUa07jpcZUVA5Du3ho7/FXzS9Ng==
 
 domain-browser@^1.1.1:
   version "1.2.0"
@@ -3662,9 +3662,9 @@ electron-store@^2.0.0:
     conf "^2.0.0"
 
 electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.47:
-  version "1.4.779"
-  resolved "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.779.tgz#bb6f08b93092a564421adcadcc4b92c5055c7a77"
-  integrity sha512-oaTiIcszNfySXVJzKcjxd2YjPxziAd+GmXyb2HbidCeFo6Z88ygOT7EimlrEQhM2U08VhSrbKhLOXP0kKUCZ6g==
+  version "1.4.783"
+  resolved "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.783.tgz#933887165b8b6025a81663d2d97cf4b85cde27b2"
+  integrity sha512-bT0jEz/Xz1fahQpbZ1D7LgmPYZ3iHVY39NcWWro1+hA2IvjiPeaXtfSqrQ+nXjApMvQRE2ASt1itSLRrebHMRQ==
 
 electron@6.0.0:
   version "6.0.0"
@@ -5096,11 +5096,6 @@ ieee754@^1.1.13, ieee754@^1.1.4:
   resolved "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
   integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
 
-if-async@^3.7.4:
-  version "3.7.4"
-  resolved "https://registry.npmmirror.com/if-async/-/if-async-3.7.4.tgz#55868deb0093d3c67bf7166e745353fb9bcb21a2"
-  integrity sha512-BFEH2mZyeF6KZKaKLVPZ0wMjIiWOdjvZ7zbx8ENec0qfZhJwKFbX/4jKM5LTKyJEc/GOqUKiiJ2IFKT9yWrZqA==
-
 iferr@^0.1.5:
   version "0.1.5"
   resolved "https://registry.npmmirror.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501"
@@ -7852,16 +7847,6 @@ read-pkg@^2.0.0:
     string_decoder "~1.1.1"
     util-deprecate "~1.0.1"
 
-"readable-stream@>=1.0.33-1 <1.1.0-0":
-  version "1.0.34"
-  resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c"
-  integrity sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==
-  dependencies:
-    core-util-is "~1.0.0"
-    inherits "~2.0.1"
-    isarray "0.0.1"
-    string_decoder "~0.10.x"
-
 readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0, readable-stream@~3.6.0:
   version "3.6.2"
   resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967"
@@ -7938,16 +7923,6 @@ reduce-function-call@^1.0.1:
   dependencies:
     balanced-match "^1.0.0"
 
-regedit@^5.0.0:
-  version "5.1.3"
-  resolved "https://registry.npmmirror.com/regedit/-/regedit-5.1.3.tgz#c113cdb873eb37a6c49ede7ff4af892c624ee764"
-  integrity sha512-sHsmh8FuioHve3lMmN6gNHdKmgGRxMGzgJ/qfzRQgsPx+Zv8kdlQ0y04JAg/6MqQC/7NRBZ1G5Qiccs1Q9tNtg==
-  dependencies:
-    debug "^4.1.0"
-    if-async "^3.7.4"
-    stream-slicer "0.0.6"
-    through2 "^0.6.3"
-
 regenerate@^1.2.1:
   version "1.4.2"
   resolved "https://registry.npmmirror.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a"
@@ -8262,9 +8237,9 @@ sass-loader@^7.3.1:
     semver "^6.3.0"
 
 sax@^1.2.4:
-  version "1.3.0"
-  resolved "https://registry.npmmirror.com/sax/-/sax-1.3.0.tgz#a5dbe77db3be05c9d1ee7785dbd3ea9de51593d0"
-  integrity sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==
+  version "1.4.0"
+  resolved "https://registry.npmmirror.com/sax/-/sax-1.4.0.tgz#829d8c11eb6a8728d3b86cdeea4fc3893342b5e7"
+  integrity sha512-G3nn4N8SRaR9NsCqEUHfTlfTM/Fgza1yfb8JP2CEmzYuHtHWza5Uf+g7nuUQq96prwu0GiGyPgDw752+j4fzQQ==
 
 sax@~1.2.1:
   version "1.2.4"
@@ -8673,9 +8648,9 @@ spdx-expression-parse@^3.0.0:
     spdx-license-ids "^3.0.0"
 
 spdx-license-ids@^3.0.0:
-  version "3.0.17"
-  resolved "https://registry.npmmirror.com/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz#887da8aa73218e51a1d917502d79863161a93f9c"
-  integrity sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==
+  version "3.0.18"
+  resolved "https://registry.npmmirror.com/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz#22aa922dcf2f2885a6494a261f2d8b75345d0326"
+  integrity sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==
 
 spdy-transport@^3.0.0:
   version "3.0.0"
@@ -8808,11 +8783,6 @@ stream-shift@^1.0.0:
   resolved "https://registry.npmmirror.com/stream-shift/-/stream-shift-1.0.3.tgz#85b8fab4d71010fc3ba8772e8046cc49b8a3864b"
   integrity sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==
 
-stream-slicer@0.0.6:
-  version "0.0.6"
-  resolved "https://registry.npmmirror.com/stream-slicer/-/stream-slicer-0.0.6.tgz#f86b2ac5c2440b7a0a87b71f33665c0788046138"
-  integrity sha512-QsY0LbweYE5L+e+iBQgtkM5WUIf7+kCMA/m2VULv8rEEDDnlDPsPvOHH4nli6uaZOKQEt64u65h0l/eeZo7lCw==
-
 strict-uri-encode@^1.0.0:
   version "1.1.0"
   resolved "https://registry.npmmirror.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"
@@ -9083,14 +9053,6 @@ throttleit@0.0.2:
   resolved "https://registry.npmmirror.com/throttleit/-/throttleit-0.0.2.tgz#cfedf88e60c00dd9697b61fdd2a8343a9b680eaf"
   integrity sha512-HtlTFeyYs1elDM2txiIGsdXHaq8kffVaZH/QEBRbo95zQqzlsBx5ELKhkPOZVad9OK9oxzwx6UrQN8Vfh/+yag==
 
-through2@^0.6.3:
-  version "0.6.5"
-  resolved "https://registry.npmmirror.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48"
-  integrity sha512-RkK/CCESdTKQZHdmKICijdKKsCRVHs5KsLZ6pACAmF/1GPUQhonHSXWNERctxEp7RmvjdNbZTL5z9V7nSCXKcg==
-  dependencies:
-    readable-stream ">=1.0.33-1 <1.1.0-0"
-    xtend ">=4.0.0 <4.1.0-0"
-
 through2@^2.0.0:
   version "2.0.5"
   resolved "https://registry.npmmirror.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd"
@@ -9710,11 +9672,11 @@ vuex@^3.0.1:
   integrity sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw==
 
 vxe-table@^3.7.9:
-  version "3.8.6"
-  resolved "https://registry.npmmirror.com/vxe-table/-/vxe-table-3.8.6.tgz#6e053216400c7004f2809518ffa5a89b2b02f64a"
-  integrity sha512-Dv4tCnUOvKGfqbu0bLqXQSCCqP7MuN+w136kdUsAxuwh0QzFmCxKoZm0bkaq5b+O0pmHXJMIvwu6d0WlW7Jvmg==
+  version "3.8.7"
+  resolved "https://registry.npmmirror.com/vxe-table/-/vxe-table-3.8.7.tgz#7f87aeadca6dfb76eee4c83fc3117ea46f96c8dc"
+  integrity sha512-ju6jDA2VNMv7UXAU2K0DlHDE8as3qnIJ/W5KNRvojUhO/kN7F6WBr7coHQY0njFX2043g4frT7o9ql/orTVhyg==
   dependencies:
-    dom-zindex "^1.0.2"
+    dom-zindex "^1.0.4"
     xe-utils "^3.5.26"
 
 watchpack-chokidar2@^2.0.1:
@@ -10042,7 +10004,7 @@ xmlbuilder@>=11.0.1, xmlbuilder@^15.1.1:
   resolved "https://registry.npmmirror.com/xmlbuilder/-/xmlbuilder-15.1.1.tgz#9dcdce49eea66d8d10b42cae94a79c3c8d0c2ec5"
   integrity sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==
 
-"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@~4.0.1:
+xtend@^4.0.0, xtend@~4.0.1:
   version "4.0.2"
   resolved "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
   integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==