feat: 文件详细和重命名添加快捷键
This commit is contained in:
parent
44be6150e5
commit
b26f9ec544
@ -294,6 +294,9 @@
|
|||||||
<label class="menuitem">
|
<label class="menuitem">
|
||||||
<svg-icon :icon-class="item.iconClass" />
|
<svg-icon :icon-class="item.iconClass" />
|
||||||
<span class="menuitem text">{{ item.label }}</span>
|
<span class="menuitem text">{{ item.label }}</span>
|
||||||
|
<span v-if="item.shortcut" style="position: absolute;right: 10px;">
|
||||||
|
<kbd>{{ item.shortcut }}</kbd>
|
||||||
|
</span>
|
||||||
</label>
|
</label>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
@ -905,10 +908,11 @@ export default {
|
|||||||
{ iconClass: 'menu-favorite', label: '收藏', operation: 'favorite' },
|
{ iconClass: 'menu-favorite', label: '收藏', operation: 'favorite' },
|
||||||
{
|
{
|
||||||
iconClass: 'menu-details',
|
iconClass: 'menu-details',
|
||||||
label: '详细信息',
|
label: '详情',
|
||||||
|
shortcut: "space",
|
||||||
operation: 'details',
|
operation: 'details',
|
||||||
},
|
},
|
||||||
{ iconClass: 'menu-rename', label: '重命名', operation: 'rename' },
|
{ iconClass: 'menu-rename', label: '重命名', operation: 'rename', shortcut: 'F2' },
|
||||||
{ iconClass: 'menu-copy', label: '移动或复制', operation: 'copy' },
|
{ iconClass: 'menu-copy', label: '移动或复制', operation: 'copy' },
|
||||||
{ iconClass: 'menu-download', label: '下载', operation: 'download' },
|
{ iconClass: 'menu-download', label: '下载', operation: 'download' },
|
||||||
{ iconClass: 'menu-remove', label: '删除', operation: 'remove' },
|
{ iconClass: 'menu-remove', label: '删除', operation: 'remove' },
|
||||||
@ -1057,6 +1061,7 @@ export default {
|
|||||||
audioPreviewRow: {},
|
audioPreviewRow: {},
|
||||||
audioPreviewVisible: false,
|
audioPreviewVisible: false,
|
||||||
drawer: false,
|
drawer: false,
|
||||||
|
drawerShowTime: 0, // drawer显示的时间
|
||||||
rowStyleExecuting: false,
|
rowStyleExecuting: false,
|
||||||
selectRowData: [],
|
selectRowData: [],
|
||||||
selectOrgin: -1, // 选择起点(主要用于按住shift键多选)
|
selectOrgin: -1, // 选择起点(主要用于按住shift键多选)
|
||||||
@ -1078,11 +1083,11 @@ export default {
|
|||||||
draging: 0, // 是否正在拖拽中,0:没有拖拽,1:拖拽中,
|
draging: 0, // 是否正在拖拽中,0:没有拖拽,1:拖拽中,
|
||||||
getFileListed: false,
|
getFileListed: false,
|
||||||
onCreateFilename: '',
|
onCreateFilename: '',
|
||||||
deleteConfirmVisible: false,
|
deleteConfirmVisible: false, // 删除确认弹窗
|
||||||
permanentDelete: false,
|
permanentDelete: false, // 是否永久删除
|
||||||
permanentDeleteDisable: false,
|
permanentDeleteDisable: false, // 是否禁用永久删除选项
|
||||||
selectDeleteFile: [],
|
selectDeleteFile: [], // 选中的删除文件
|
||||||
deleteLoading: false,
|
deleteLoading: false, // 删除loading
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
@ -1331,12 +1336,35 @@ export default {
|
|||||||
},
|
},
|
||||||
keydown(event) {
|
keydown(event) {
|
||||||
const isMac = navigator.platform.startsWith('Mac')
|
const isMac = navigator.platform.startsWith('Mac')
|
||||||
const { key, c, keyCode, ctrlKey, metaKey } = event
|
const { keyCode, ctrlKey, metaKey } = event
|
||||||
this.isCmd = (isMac && metaKey) || (!isMac && ctrlKey)
|
this.isCmd = (isMac && metaKey) || (!isMac && ctrlKey)
|
||||||
|
console.log(keyCode)
|
||||||
// shift
|
// shift
|
||||||
if (event.keyCode === 16 && event.shiftKey) {
|
if (event.keyCode === 16 && event.shiftKey) {
|
||||||
this.selectPin = true
|
this.selectPin = true
|
||||||
}
|
}
|
||||||
|
// space
|
||||||
|
if (keyCode === 32) {
|
||||||
|
if (this.inputting || this.editingIndex !== -1) {
|
||||||
|
event.target.select()
|
||||||
|
} else {
|
||||||
|
if (this.selectRowData.length > 0 && !this.drawer) {
|
||||||
|
this.drawer = true
|
||||||
|
this.drawerShowTime = Date.now()
|
||||||
|
}
|
||||||
|
event.preventDefault()
|
||||||
|
event.stopPropagation()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// F2
|
||||||
|
if (keyCode === 113) {
|
||||||
|
if (this.selectRowData.length > 0 && !this.drawer) {
|
||||||
|
this.renameFileName = this.rowContextData.name
|
||||||
|
this.editingIndex = this.rowContextData.index
|
||||||
|
}
|
||||||
|
event.preventDefault()
|
||||||
|
event.stopPropagation()
|
||||||
|
}
|
||||||
// ctrl + A / cmd + A
|
// ctrl + A / cmd + A
|
||||||
if (this.isCmd && keyCode === 65) {
|
if (this.isCmd && keyCode === 65) {
|
||||||
if (this.inputting || this.editingIndex !== -1) {
|
if (this.inputting || this.editingIndex !== -1) {
|
||||||
@ -1360,6 +1388,12 @@ export default {
|
|||||||
if (keyCode === 16) {
|
if (keyCode === 16) {
|
||||||
this.selectPin = false
|
this.selectPin = false
|
||||||
}
|
}
|
||||||
|
// space
|
||||||
|
if (keyCode === 32) {
|
||||||
|
if (this.drawer && Date.now() - this.drawerShowTime >= 500) {
|
||||||
|
this.drawer = false
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
onmessage(msg) {
|
onmessage(msg) {
|
||||||
let fileDoc = msg.body
|
let fileDoc = msg.body
|
||||||
|
|||||||
@ -1,7 +1,10 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<!--文件详细信息-->
|
<!--文件详细信息-->
|
||||||
<el-drawer :title="rowContextData.name" :visible.sync="visible">
|
<!-- <el-drawer :title="rowContextData.name" :visible.sync="visible">-->
|
||||||
|
<!-- -->
|
||||||
|
<!-- </el-drawer>-->
|
||||||
|
<el-dialog :visible.sync="visible" width="420px">
|
||||||
<div class="drawer-icon">
|
<div class="drawer-icon">
|
||||||
<icon-file
|
<icon-file
|
||||||
class="drawer-icon-font"
|
class="drawer-icon-font"
|
||||||
@ -18,52 +21,56 @@
|
|||||||
<span v-show="syncPercent < 100">正在同步文件基本信息: {{ syncPercent }}%</span>
|
<span v-show="syncPercent < 100">正在同步文件基本信息: {{ syncPercent }}%</span>
|
||||||
<span v-show="indexingPercent > 0 && indexingPercent < 100">正在为文件内容创建索引: </span><span v-show="indexingPercent > 0 && indexingPercent < 100">{{ indexingPercent }}%</span>
|
<span v-show="indexingPercent > 0 && indexingPercent < 100">正在为文件内容创建索引: </span><span v-show="indexingPercent > 0 && indexingPercent < 100">{{ indexingPercent }}%</span>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="名称:">
|
|
||||||
<span>{{ rowContextData.name }}</span>
|
<el-scrollbar wrap-class="scrollbar-wrapper" class="details-form-list">
|
||||||
</el-form-item>
|
<el-form-item label="名称:">
|
||||||
<el-form-item label="类型:" class="details-name">
|
<span>{{ rowContextData.name }}</span>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="类型:">
|
||||||
<span>{{
|
<span>{{
|
||||||
rowContextData.isFolder ? '文件夹' : rowContextData.contentType
|
rowContextData.isFolder ? '文件夹' : rowContextData.contentType
|
||||||
}}</span>
|
}}</span>
|
||||||
</el-form-item>
|
|
||||||
<div v-if="rowContextData.music">
|
|
||||||
<el-form-item label="🎵 歌手:">
|
|
||||||
<span>{{ rowContextData.music.singer }}</span>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="🎵 专辑:">
|
<div v-if="rowContextData.music">
|
||||||
<span>{{ '《' + rowContextData.music.album + '》' }}</span>
|
<el-form-item label="🎵 歌手:">
|
||||||
|
<span>{{ rowContextData.music.singer }}</span>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="🎵 专辑:">
|
||||||
|
<span>{{ '《' + rowContextData.music.album + '》' }}</span>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="🎵 歌名:">
|
||||||
|
<span>{{ '《' + rowContextData.music.songName + '》' }}</span>
|
||||||
|
</el-form-item>
|
||||||
|
</div>
|
||||||
|
<el-form-item
|
||||||
|
v-show="rowContextData.w && rowContextData.h"
|
||||||
|
label="尺寸:"
|
||||||
|
class="details-resolution"
|
||||||
|
>
|
||||||
|
<span>{{ rowContextData.w + ' x ' + rowContextData.h }}</span>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="🎵 歌名:">
|
<el-form-item label="大小:">
|
||||||
<span>{{ '《' + rowContextData.music.songName + '》' }}</span>
|
<span> {{ formatSize(rowContextData.size) }}</span>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</div>
|
<el-form-item label="位置:" class="details-position">
|
||||||
<el-form-item
|
<a :href="'/?path=' + rowContextData.path + '&highlight=' + rowContextData.name">{{ rowContextData.path }}</a>
|
||||||
v-show="rowContextData.w && rowContextData.h"
|
</el-form-item>
|
||||||
label="尺寸:"
|
<el-form-item label="创建时间:">
|
||||||
class="details-resolution"
|
<span>{{ rowContextData.uploadDate }}</span>
|
||||||
>
|
</el-form-item>
|
||||||
<span>{{ rowContextData.w + ' x ' + rowContextData.h }}</span>
|
<el-form-item label="修改时间:">
|
||||||
</el-form-item>
|
<span>{{ rowContextData.updateDate }}</span>
|
||||||
<el-form-item label="大小:">
|
</el-form-item>
|
||||||
<span> {{ formatSize(rowContextData.size) }}</span>
|
<el-form-item v-if="rowContextData.exif" label="">
|
||||||
</el-form-item>
|
<span style="white-space: break-spaces;">{{ formatExif(rowContextData.exif) }}</span>
|
||||||
<el-form-item label="位置:" class="details-position">
|
</el-form-item>
|
||||||
<a :href="'/?path=' + rowContextData.path + '&highlight=' + rowContextData.name">{{ rowContextData.path }}</a>
|
<el-form-item v-if="rowContextData.video" label="">
|
||||||
</el-form-item>
|
<span style="white-space: break-spaces;">{{ formatVideo(rowContextData.video) }}</span>
|
||||||
<el-form-item label="创建时间:">
|
</el-form-item>
|
||||||
<span>{{ rowContextData.uploadDate }}</span>
|
</el-scrollbar>
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="修改时间:">
|
|
||||||
<span>{{ rowContextData.updateDate }}</span>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item v-if="rowContextData.exif" label="">
|
|
||||||
<span style="white-space: break-spaces;">{{ formatExif(rowContextData.exif) }}</span>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item v-if="rowContextData.video" label="">
|
|
||||||
<span style="white-space: break-spaces;">{{ formatVideo(rowContextData.video) }}</span>
|
|
||||||
</el-form-item>
|
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-drawer>
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -187,7 +194,11 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.details-form {
|
.details-form {
|
||||||
margin: 20px 10px 0 20px;
|
padding: 20px 0;
|
||||||
|
|
||||||
|
>>> .el-scrollbar__view {
|
||||||
|
max-height: 50vh;
|
||||||
|
}
|
||||||
|
|
||||||
>>> .el-form-item__content {
|
>>> .el-form-item__content {
|
||||||
white-space: normal;
|
white-space: normal;
|
||||||
@ -205,6 +216,7 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
>>> .details-scan {
|
>>> .details-scan {
|
||||||
|
margin-bottom: 10px;
|
||||||
.el-button--mini, .el-button--mini.is-round {
|
.el-button--mini, .el-button--mini.is-round {
|
||||||
padding: 5px 15px;
|
padding: 5px 15px;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -228,8 +228,7 @@ input {
|
|||||||
}
|
}
|
||||||
kbd {
|
kbd {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
margin: 6px 2px;
|
padding: 5px 5px;
|
||||||
padding: 8px 8px;
|
|
||||||
font: 14px var(--fontStack-monospace, ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace);
|
font: 14px var(--fontStack-monospace, ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace);
|
||||||
line-height: 10px;
|
line-height: 10px;
|
||||||
color: #1f2328;
|
color: #1f2328;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user