qiushang il y a 1 an
Parent
commit
0073329e2a

+ 3 - 3
src/renderer/assets/css/home.scss

@@ -253,12 +253,12 @@ div,p{
   justify-content: space-between;
   width: 100%;
   padding: 10px;
-  height: calc(100% - 141px);
+  height: calc(100% - 182px);
 }
 
 .img-footer-area{
-	border: 1px solid #eee;
-	padding: 18px 20px;
+	border-top: 1px solid #eee;
+	padding: 10px 20px;
 	background: #fff; 
 	
 	.footer-line-between{

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

@@ -78,7 +78,7 @@
 				</div>
 				<div class="font-12" style="padding: 20px; margin-bottom: 10px;">
 					<div style="text-align: center; margin-bottom: 10px;">
-						<p style="font-size: 16px;font-weight: 600;color: #f73131;">非VIP图片/音频限制大小为300KB,视频/文档限制大小为2MB</p>
+						<p style="font-size: 16px;font-weight: 600;color: #f73131;">非VIP上传的文件只能处理前两页</p>
 						<p style="font-size: 14px; font-weight: 600; margin-top: 15px;">开通会员即享以下权益</p>
 					</div>
 					<el-row :gutter="20" class="micon-list">

+ 260 - 29
src/renderer/components/home.vue

@@ -8,7 +8,7 @@
 						<img src="../assets/image/icon.png" class="soft-icon" />
 						<span style="letter-spacing: 2px;">{{productName}}</span>
 					</p>
-					<el-menu default-active="1" class="xy-menu" active-text-color="#409EFF" background-color="#333744" text-color="#fff" style="margin-top: 10px;">
+					<el-menu :default-active="menuIndex" class="xy-menu" active-text-color="#409EFF" background-color="#333744" text-color="#fff" style="margin-top: 10px;">
 						<el-menu-item index="1" @click="setMenuIndex(1)">
 							<img src="../assets/image/n-huo.png" class="menu-img"/>
 							<span slot="title">常用转换</span>
@@ -187,14 +187,13 @@
 									</el-col>
 								</el-row>
 							</div>
-
 						</template>
 
 						<template v-else>
 							<el-row type="flex" class="row-bg">
 								<el-col :span="1" style="text-align: right;">
 									<el-button style="margin-top: 8px;" type="primary" size="mini"
-										icon="el-icon-s-home" circle @click="activeName=''"></el-button>
+										icon="el-icon-s-home" circle @click="activeName='';menuIndex='1'"></el-button>
 								</el-col>
 								<el-col :span="23" style="padding: 0 15px;">
 									<el-tabs v-model="activeName" v-if="activeName.split('-')[0] == '2'">
@@ -275,21 +274,34 @@
 
 							<div class="soft-content" v-else>
 								<div class="content-left">
-									<p class="title">
-										<i class="el-icon-notebook-2"></i>
-										文件列表
-										<span style="color: #F22C40;">{{ loadingTips }}</span>
-									</p>
 									<div class="table-scroll" @dragover.prevent @drop="handleDrop">
-										<vxe-table
-											show-overflow
-											class="img-table"
-											max-height="100%"
-											empty-text="没有更多数据了!"
-											:row-config="{isHover: true}"
-											:edit-config="{trigger: 'click', mode: 'cell'}"
-											:data="this[listStr + 'List']"
-											:scroll-y="{enabled: true}">
+										
+										<vxe-table v-show="['1-1','1-2','1-3','1-4','1-5','1-6','3-6','3-7'].indexOf(activeName) > -1"
+										 show-overflow class="img-table" max-height="100%" empty-text="没有更多数据了!" :row-config="{isHover: true}"
+										:edit-config="{trigger: 'click', mode: 'cell'}" :data="this[listStr + 'List']" :scroll-y="{enabled: true}">
+											<vxe-column field="name" title="文件名"></vxe-column>
+											<vxe-column field="size" title="大小" width="120"></vxe-column>
+											<vxe-column field="totalPages" title="总页数" width="100"></vxe-column>
+											<vxe-column field="progress" title="页码" width="180">
+												<template #default="{ row, rowIndex }">
+													<el-button size="small" type="warning" @click="selectPageNum(rowIndex)" v-if="!row.selectPages || row.selectPages.length == 0">全部页码</el-button>
+													<el-button size="small" type="warning" @click="selectPageNum(rowIndex)" v-else>{{row.selectPages.join(',')}}</el-button>
+												</template>
+											</vxe-column>
+											<vxe-column field="progress" title="进度" width="180">
+												<template #default="{ row }">
+													<el-progress :text-inside="true" :stroke-width="20" :percentage="row.percent"></el-progress>
+												</template>
+											</vxe-column>
+											<vxe-column title="操作" width="80">
+												<template #default="{ row, rowIndex }">
+													<i class="el-icon-delete cur-pointer" @click="delFile(rowIndex)"></i>
+												</template>
+											</vxe-column>
+										</vxe-table>
+										
+										<vxe-table v-show="['1-1','1-2','1-3','1-4','1-5','1-6','3-6','3-7'].indexOf(activeName) == -1" show-overflow class="img-table" max-height="100%" empty-text="没有更多数据了!" :row-config="{isHover: true}"
+										:edit-config="{trigger: 'click', mode: 'cell'}" :data="this[listStr + 'List']" :scroll-y="{enabled: true}">
 											<vxe-column field="name" title="文件名"></vxe-column>
 											<vxe-column field="size" title="大小" width="120"></vxe-column>
 											<vxe-column field="progress" title="进度" width="180">
@@ -307,6 +319,207 @@
 									</div>
 								</div>
 							</div>
+							<!-- 底部设置区域 -->
+							<div class="img-footer-area" v-if="this[listStr + 'List'].length > 0">
+								<div class="footer-line-between">
+									<!-- 1格式转化 -->
+									<div class="handle-item" v-if="menuIndex == '1' || menuIndex == '2'">
+										<label class="handle-label">输出格式:</label>
+										<el-select v-model="handleData.format" style="width:80px;" size="small">
+											<el-option v-for="(item, key) in outputVedio" :key="key" :value="item" :label="item"></el-option>
+										</el-select>
+										
+										<label class="handle-label">视频清晰度:</label>
+										<el-select v-model="handleData.type" style="width:100px" size="small" @change="selectVideoType">
+											<el-option :value="1" label="画质区分"></el-option>
+											<el-option :value="2" label="码率区分"></el-option>
+										</el-select>
+										
+										<template v-if="handleData.type == 2">
+											<label class="handle-label">视频码率:</label>
+											<el-select v-model="handleData.quality" style="width:100px;" size="small">
+												<el-option value="1" label="同源视频"></el-option>
+												<el-option value="1m" label="1Mbit/s"></el-option>
+												<el-option value="1.5m" label="1.5Mbit/s"></el-option>
+												<el-option value="2m" label="2Mbit/s"></el-option>
+												<el-option value="3m" label="3Mbit/s"></el-option>
+												<el-option value="4m" label="4Mbit/s"></el-option>
+												<el-option value="5m" label="5Mbit/s"></el-option>
+												<el-option value="8m" label="8Mbit/s"></el-option>
+												<el-option value="10m" label="10Mbit/s"></el-option>
+											</el-select>
+										</template>
+										<template v-else>
+											<label class="handle-label">视频画质:</label>
+											<el-select v-model="handleData.quality" style="width:80px" size="small">
+												<el-option value="1" label="原画"></el-option>
+												<el-option value="2" label="高清"></el-option>
+												<el-option value="3" label="流畅"></el-option>
+											</el-select>
+										</template>
+										
+										<label class="handle-label">视频分辨率:</label>
+										<el-select v-model="handleData.fenbianlv" style="width:120px;" size="small" @change="changeFenbianlv">
+											<el-option :value="-1" label="同原视频"></el-option>
+											<el-option :value="1" label="3840*2160"></el-option>
+											<el-option :value="2" label="1280*720"></el-option>
+											<el-option :value="3" label="720*576"></el-option>
+											<el-option :value="4" label="640*480"></el-option>
+											<el-option :value="5" label="自定义"></el-option>
+											<el-option :value="6" label="自定义(16:9)"></el-option>
+											<el-option :value="7" label="自定义(4:3)"></el-option>
+										</el-select>
+										
+										<template v-if="[5, 6, 7].includes(handleData.fenbianlv)">
+											<label class="handle-label">宽:</label>
+											<el-input-number size="small" v-model="handleData.width" style="width: 100px;" controls-position="right" @change="changeWidth" :min="1"></el-input-number>
+											
+											<label class="handle-label">高:</label>
+											<el-input-number size="small" v-model="handleData.height" style="width: 100px;" controls-position="right" @change="changeHeight" :min="1"></el-input-number>
+										</template>
+										
+									</div>
+									
+									<!-- 3视频转gif -->
+									<div class="handle-item" v-if="menuIndex == '3'">
+										<label class="handle-label">视频分辨率:</label>
+										<el-select v-model="handleData.fenbianlv" style="width:100px;" size="small" @change="changeFenbianlv">
+											<el-option :value="-1" label="同原视频"></el-option>
+											<el-option :value="1" label="3840*2160"></el-option>
+											<el-option :value="2" label="1280*720"></el-option>
+											<el-option :value="3" label="720*576"></el-option>
+											<el-option :value="4" label="640*480"></el-option>
+											<el-option :value="5" label="自定义"></el-option>
+											<el-option :value="6" label="自定义(16:9)"></el-option>
+											<el-option :value="7" label="自定义(4:3)"></el-option>
+										</el-select>
+										<template v-if="[5, 6, 7].includes(handleData.fenbianlv)">
+											<label class="handle-label">宽:</label>
+											<el-input-number size="small" v-model="handleData.width" style="width: 100px;" controls-position="right" @change="changeWidth" :min="1"></el-input-number>
+											
+											<label class="handle-label">高:</label>
+											<el-input-number size="small" v-model="handleData.height" style="width: 100px;" controls-position="right" @change="changeHeight" :min="1"></el-input-number>
+										</template>
+										
+										
+										<label class="handle-label">开始时间:</label>
+										第 <el-input-number size="small" v-model="handleData.start" style="width: 90px;" controls-position="right" :min="0"></el-input-number> 秒
+							
+										<label class="handle-label">结束时间:</label>
+										<el-select v-model="handleData.isVideoDuration" size="small" style="width:120px">
+											<el-option :value="1" label="同原视频"></el-option>
+											<el-option :value="2" label="自定义时间"></el-option>
+										</el-select>
+										<template v-if="handleData.isVideoDuration != 1">
+											<label class="handle-label"> </label>
+											第 <el-input-number size="small" v-model="handleData.limit" style="width: 90px;" controls-position="right" :min="1"></el-input-number> 秒
+										</template>
+									</div>
+									
+									<!-- 4视频转音频 -->
+									<div class="handle-item" v-if="menuIndex == '4'">
+										<label class="handle-label">音频格式:</label>
+										<el-select v-model="handleData.auto_format" style="width:100px;" size="small">
+											<el-option v-for="(item,key) in outputAudio" :key="key" :value="item" :label="item"></el-option>
+										</el-select>
+									</div>
+									
+									<!-- 5视频压缩 -->
+									<div class="handle-item" v-if="menuIndex == '5'">
+										<label class="handle-label">视频分辨率:</label>
+										<el-select v-model="handleData.fenbianlv" style="width:100px;" size="small" @change="changeFenbianlv">
+											<el-option :value="-1" label="同原视频"></el-option>
+											<el-option :value="1" label="3840*2160"></el-option>
+											<el-option :value="2" label="1280*720"></el-option>
+											<el-option :value="3" label="720*576"></el-option>
+											<el-option :value="4" label="640*480"></el-option>
+											<el-option :value="5" label="自定义"></el-option>
+											<el-option :value="6" label="自定义(16:9)"></el-option>
+											<el-option :value="7" label="自定义(4:3)"></el-option>
+										</el-select>
+										<template v-if="[5, 6, 7].includes(handleData.fenbianlv)">
+											<label class="handle-label">宽:</label>
+											<el-input-number size="small" v-model="handleData.width" style="width: 100px;" controls-position="right" @change="changeWidth" :min="1"></el-input-number>
+											
+											<label class="handle-label">高:</label>
+											<el-input-number size="small" v-model="handleData.height" style="width: 100px;" controls-position="right" @change="changeHeight" :min="1"></el-input-number>
+										</template>
+										
+										<label class="handle-label">视频码率:</label>
+										<el-select v-model="handleData.videoQuality" style="width:100px;" size="small">
+											<el-option value="-1" label="同原视频"></el-option>
+											<el-option value="0.9" label="90%"></el-option>
+											<el-option value="0.8" label="80%"></el-option>
+											<el-option value="0.7" label="70%"></el-option>
+											<el-option value="0.6" label="60%"></el-option>
+											<el-option value="0.5" label="50%"></el-option>
+											<el-option value="0.4" label="40%"></el-option>
+											<el-option value="0.3" label="30%"></el-option>
+											<el-option value="0.2" label="20%"></el-option>
+											<el-option value="0.1" label="10%"></el-option>
+										</el-select>
+										
+										<label class="handle-label">音频码率:</label>
+										<el-select v-model="handleData.audioQuality" style="width:100px;" size="small">
+											<el-option value="-1" label="同原视频"></el-option>
+											<el-option value="64" label="64"></el-option>
+											<el-option value="96" label="96"></el-option>
+											<el-option value="128" label="128(标准)"></el-option>
+											<el-option value="160" label="160"></el-option>
+											<el-option value="192" label="192(较高)"></el-option>
+											<el-option value="256" label="256"></el-option>
+										</el-select>
+									</div>
+									
+									<!-- 6音频消音 -->
+									<div class="handle-item remove" v-if="menuIndex == '6'">
+										<label class="handle-label">去除声音:</label>
+										<el-checkbox v-model="handleData.audioRemove" disabled></el-checkbox>
+										<el-input-number size="small" disabled style="opacity: 0;"></el-input-number>
+									</div>
+									
+									<!-- 7视频变速 -->
+									<div class="handle-item" style="padding: 4px 0;" v-if="menuIndex == '7'">
+										<label class="handle-label">选择设置:</label>
+										<el-radio-group v-model="handleData.reverseSet" size="mini">
+											<el-radio-button :label="1" >变速</el-radio-button>
+											<el-radio-button :label="2" >倒放</el-radio-button>
+										</el-radio-group>
+										<template v-if="handleData.reverseSet == 1">
+											<label class="handle-label">播放速度:</label>
+											<el-slider class="info-input" v-model="handleData.speed" :min="0.5" :max="2.0" :step="0.05" style="margin-right: 10px;"></el-slider> {{handleData.speed}}倍
+										</template>
+										<template v-else>
+											<label class="handle-label">视频倒放:</label>
+											<el-checkbox v-model="handleData.reverse"></el-checkbox>
+											<label class="handle-label">声音倒放:</label>
+											<el-checkbox v-model="handleData.areverse"></el-checkbox>
+											
+											<span style="margin-left: 20px;color: #F56C6C;font-size: 12px;">倒放视频会消耗大量的CPU资源和时间,请控制视频时长不超过5分钟</span>
+										</template>
+									</div>
+									
+									<!-- 8音量调整 -->
+									<div class="handle-item" v-if="menuIndex == '8'" style="margin-bottom: 5px;">
+										<label class="handle-label">音量调整:</label>
+										<el-slider class="info-input" v-model="handleData.volume" :min="0.5" :max="2.0" :step="0.05" style="margin-right: 10px;"></el-slider> {{handleData.volume}}倍
+									</div>
+								</div>
+								
+								<div style="display: flex; justify-content: space-between; margin-top: 5px;">
+									<div>
+										<label class="handle-label">保存目录:</label>
+										<el-input :title="handleData.newPath" ref="upload-input" @focus="pickPath" placeholder="请选择输出目录" size="small" v-model="handleData.newPath" readonly style="width:240px;" 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="padding-left: 5px; cursor: pointer; font-size: 22px; vertical-align: middle;" @click="openFolder()"></i>
+										</el-popover>
+									</div>
+									
+									<el-button type="danger" style="margin-left: 20px;" @click="exportFile()" :loading="exportLoading">开始处理</el-button>
+								</div>
+							</div>
+							
+							
 						</template>
 						
 						<!-- 合并进度 -->
@@ -331,12 +544,12 @@
 						<el-dialog title="非会员提示" :visible.sync="tipsModal" width="400px">
 							<div class="member-model">
 								<div class="tips-flex">
-									<Icon class="md-bulb" type="md-bulb" size="60" color="#BD2C00"/>
+									<i class="el-icon-s-opportunity"></i>
 									<p class="m-title">{{tipsDesc}}</p>
 								</div>
 								<div class="member-btn">
-									<Button v-if="isPwd" style="margin:0 10px;" @click="exportFile(true)">继续转换</Button>
-									<Button type="error" @click="openVip()">开通会员</Button>
+									<el-button size="small" round v-if="isPwd" @click="exportFile(true)">继续转换</el-button>
+									<el-button size="small" round type="primary" @click="openVip()">开通会员</el-button>
 								</div>
 							</div>
 						</el-dialog>
@@ -345,16 +558,17 @@
 						<el-dialog title="选择页码" :visible.sync="pagesModal" width="400px">
 							<div class="member-model">
 								<div class="tips-flex">
-									<Select v-if="fileList.length > 0 && selectIndex >= 0" v-model="fileList[selectIndex].selectPages" multiple>
-										<Option v-for="(item, key) in fileList[selectIndex].totalPages" :value="item" :key="key">{{ item }}</Option>
-									</Select>
+									<el-select v-if="fileList.length > 0 && selectIndex >= 0" v-model="fileList[selectIndex].selectPages" multiple placeholder="请选择">
+									    <el-option v-for="(item, key) in fileList[selectIndex].totalPages" :key="key" :label="item" :value="item">
+									    </el-option>
+									</el-select>
 								</div>
 								<div class="tips-flex" style="margin-top: 20px;">
-									<Checkbox v-model="selectAll">同步成所有PDF的页码选择</Checkbox>
+									<el-checkbox v-model="selectAll">同步成所有PDF的页码选择</el-checkbox>
 								</div>
 								<div class="member-btn">
-									<Button style="margin:0 10px;" @click="pagesModal = false; selectPages = -1;">取消</Button>
-									<Button type="primary" @click="pageSure()">确定</Button>
+									<el-button size="small" round @click="pagesModal = false; selectPages = -1;">取消</el-button>
+									<el-button size="small" round type="primary" @click="pageSure()">确定</el-button>
 								</div>
 							</div>
 						</el-dialog>
@@ -396,6 +610,7 @@
 		},
 		data() {
 			return {
+				menuIndex: '1',
 				productName: pjson.softInfo.softName,
 				imgUrl: this.$api.imgUrl,
 				imgSrc: '',
@@ -482,8 +697,6 @@
 			}
 			this.handleData.newPath = this.downloadDir;
 
-			this.defaultFont = 'c:\\windows\\fonts\\simkai.ttf';
-
 			// 打开浏览器
 			const {
 				shell
@@ -536,6 +749,7 @@
 			},
 			changeMenu(name) {
 				this.activeName = name;
+				this.menuIndex = (Number(name.split('-')[0]) + 1).toString();
 			},
 			// 选择目录
 			pickPath() {
@@ -839,7 +1053,6 @@
 						break;
 				}
 				if(fileList.length > 0){
-					console.log(fileList, authority, flag)
 					if (!authority && !flag) { // 非会员点击转换弹出提示框
 						this.tipsModal = true;
 						this.isPwd = true;
@@ -1631,4 +1844,22 @@
 	.el-menu-item.is-active{
 		font-weight: 600;
 	}
+	
+	.tips-flex{
+		display: flex;
+		flex-wrap: nowrap;
+		justify-content: space-around;
+		align-items: center;
+		
+		.el-icon-s-opportunity{
+			font-size: 50px;
+			color: #f73131;
+			margin-right: 10px;
+		}
+		
+		.m-title{
+			flex: 1;
+			color: #f73131;
+		}
+	}
 </style>