mirror of
https://github.com/viarotel-org/escrcpy.git
synced 2024-11-23 23:21:02 +01:00
feat: 🚀 Add timing task entrance
This commit is contained in:
parent
1bd37c24a6
commit
8393c854b3
@ -1,4 +1,2 @@
|
|||||||
#!/usr/bin/env sh
|
|
||||||
. "$(dirname -- "$0")/_/husky.sh"
|
|
||||||
|
|
||||||
find "electron/resources/extra" -type f -exec git update-index --chmod=+x {} +
|
find "electron/resources/extra" -type f -exec git update-index --chmod=+x {} +
|
3
components.d.ts
vendored
3
components.d.ts
vendored
@ -9,6 +9,7 @@ declare module 'vue' {
|
|||||||
export interface GlobalComponents {
|
export interface GlobalComponents {
|
||||||
ElAutocomplete: typeof import('element-plus/es')['ElAutocomplete']
|
ElAutocomplete: typeof import('element-plus/es')['ElAutocomplete']
|
||||||
ElButton: typeof import('element-plus/es')['ElButton']
|
ElButton: typeof import('element-plus/es')['ElButton']
|
||||||
|
ElButtonGroup: typeof import('element-plus/es')['ElButtonGroup']
|
||||||
ElCol: typeof import('element-plus/es')['ElCol']
|
ElCol: typeof import('element-plus/es')['ElCol']
|
||||||
ElCollapse: typeof import('element-plus/es')['ElCollapse']
|
ElCollapse: typeof import('element-plus/es')['ElCollapse']
|
||||||
ElCollapseItem: typeof import('element-plus/es')['ElCollapseItem']
|
ElCollapseItem: typeof import('element-plus/es')['ElCollapseItem']
|
||||||
@ -25,6 +26,8 @@ declare module 'vue' {
|
|||||||
ElLink: typeof import('element-plus/es')['ElLink']
|
ElLink: typeof import('element-plus/es')['ElLink']
|
||||||
ElOption: typeof import('element-plus/es')['ElOption']
|
ElOption: typeof import('element-plus/es')['ElOption']
|
||||||
ElPopover: typeof import('element-plus/es')['ElPopover']
|
ElPopover: typeof import('element-plus/es')['ElPopover']
|
||||||
|
ElRadio: typeof import('element-plus/es')['ElRadio']
|
||||||
|
ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
|
||||||
ElRow: typeof import('element-plus/es')['ElRow']
|
ElRow: typeof import('element-plus/es')['ElRow']
|
||||||
ElSelect: typeof import('element-plus/es')['ElSelect']
|
ElSelect: typeof import('element-plus/es')['ElSelect']
|
||||||
ElSwitch: typeof import('element-plus/es')['ElSwitch']
|
ElSwitch: typeof import('element-plus/es')['ElSwitch']
|
||||||
|
@ -0,0 +1,18 @@
|
|||||||
|
<template>
|
||||||
|
<div class="" @click="handleClick(devices)">
|
||||||
|
<slot v-bind="{ loading }" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
const props = defineProps({
|
||||||
|
devices: {
|
||||||
|
type: Array,
|
||||||
|
default: () => [],
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
const loading = ref(false)
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style></style>
|
@ -43,6 +43,7 @@ import Application from './Application/index.vue'
|
|||||||
import Screenshot from './Screenshot/index.vue'
|
import Screenshot from './Screenshot/index.vue'
|
||||||
import FileManage from './FileManage/index.vue'
|
import FileManage from './FileManage/index.vue'
|
||||||
import Shell from './Shell/index.vue'
|
import Shell from './Shell/index.vue'
|
||||||
|
import Tasks from './Tasks/index.vue'
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
devices: {
|
devices: {
|
||||||
@ -72,6 +73,11 @@ const actionModel = [
|
|||||||
svgIcon: 'command',
|
svgIcon: 'command',
|
||||||
component: Shell,
|
component: Shell,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
label: 'device.control.task.name',
|
||||||
|
elIcon: 'Clock',
|
||||||
|
component: Tasks,
|
||||||
|
},
|
||||||
]
|
]
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -0,0 +1,97 @@
|
|||||||
|
<template>
|
||||||
|
<el-dialog
|
||||||
|
v-model="visible"
|
||||||
|
title="定时任务"
|
||||||
|
width="60%"
|
||||||
|
class="el-dialog-beautify"
|
||||||
|
append-to-body
|
||||||
|
@closed="onClosed"
|
||||||
|
>
|
||||||
|
<ele-form-row :model="model" label-width="120px" class="!pr-[120px] !pt-4">
|
||||||
|
<ele-form-item-col label="任务类型" :span="24">
|
||||||
|
<el-select v-model="model.taskType" placeholder="请选择任务类型">
|
||||||
|
<el-option
|
||||||
|
v-for="item in taskModel"
|
||||||
|
:key="item.value"
|
||||||
|
:label="$t(item.label)"
|
||||||
|
:value="item.value"
|
||||||
|
>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</ele-form-item-col>
|
||||||
|
<ele-form-item-col label="定时器类型" :span="24">
|
||||||
|
<el-radio-group v-model="model.timerType">
|
||||||
|
<el-radio
|
||||||
|
v-for="(item, index) of timerModel"
|
||||||
|
:key="index"
|
||||||
|
:value="item.value"
|
||||||
|
>
|
||||||
|
{{ item.label }}
|
||||||
|
</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</ele-form-item-col>
|
||||||
|
</ele-form-row>
|
||||||
|
<template #footer>
|
||||||
|
<el-button @click="close">
|
||||||
|
取消
|
||||||
|
</el-button>
|
||||||
|
<el-button type="primary" @click="submit">
|
||||||
|
确定
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
const visible = ref(false)
|
||||||
|
|
||||||
|
const model = ref({
|
||||||
|
taskType: '',
|
||||||
|
timerType: 'timeout',
|
||||||
|
})
|
||||||
|
|
||||||
|
const taskModel = [
|
||||||
|
{
|
||||||
|
label: 'device.control.install',
|
||||||
|
value: 'install',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'device.control.capture',
|
||||||
|
value: 'screenshot',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'device.control.shell.name',
|
||||||
|
value: 'shell',
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
const timerModel = [
|
||||||
|
{
|
||||||
|
label: '单次',
|
||||||
|
value: 'timeout',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '周期',
|
||||||
|
value: 'interval',
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
function open() {
|
||||||
|
visible.value = true
|
||||||
|
}
|
||||||
|
|
||||||
|
function close() {
|
||||||
|
visible.value = false
|
||||||
|
}
|
||||||
|
|
||||||
|
function submit() {}
|
||||||
|
|
||||||
|
function onClosed() {}
|
||||||
|
|
||||||
|
defineExpose({
|
||||||
|
open,
|
||||||
|
close,
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style></style>
|
28
src/components/Device/components/ControlBar/Tasks/index.vue
Normal file
28
src/components/Device/components/ControlBar/Tasks/index.vue
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
<template>
|
||||||
|
<div class="" @click="handleClick(device)">
|
||||||
|
<slot v-bind="{ loading }" />
|
||||||
|
|
||||||
|
<TaskDialog ref="taskDialogRef" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import TaskDialog from './components/TaskDialog/index.vue'
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
device: {
|
||||||
|
type: Array,
|
||||||
|
default: () => [],
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
const loading = ref(false)
|
||||||
|
|
||||||
|
const taskDialogRef = ref(null)
|
||||||
|
|
||||||
|
function handleClick(device) {
|
||||||
|
taskDialogRef.value.open(device)
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style></style>
|
@ -73,6 +73,7 @@ import Rotation from './Rotation/index.vue'
|
|||||||
import Volume from './Volume/index.vue'
|
import Volume from './Volume/index.vue'
|
||||||
import FileManage from './FileManage/index.vue'
|
import FileManage from './FileManage/index.vue'
|
||||||
import Shell from './Shell/index.vue'
|
import Shell from './Shell/index.vue'
|
||||||
|
import Tasks from './Tasks/index.vue'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
@ -84,6 +85,7 @@ export default {
|
|||||||
Volume,
|
Volume,
|
||||||
FileManage,
|
FileManage,
|
||||||
Shell,
|
Shell,
|
||||||
|
Tasks,
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
device: {
|
device: {
|
||||||
@ -157,6 +159,11 @@ export default {
|
|||||||
component: 'Shell',
|
component: 'Shell',
|
||||||
tips: 'device.control.shell.tips',
|
tips: 'device.control.shell.tips',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
label: 'device.control.task.name',
|
||||||
|
elIcon: 'Clock',
|
||||||
|
component: 'Tasks',
|
||||||
|
},
|
||||||
{
|
{
|
||||||
label: 'device.control.gnirehtet',
|
label: 'device.control.gnirehtet',
|
||||||
elIcon: 'Link',
|
elIcon: 'Link',
|
||||||
|
@ -113,6 +113,7 @@
|
|||||||
"device.control.shell.push.success": "Push script success",
|
"device.control.shell.push.success": "Push script success",
|
||||||
"device.control.shell.enter": "Please enter the Enter key to confirm the execution of the script",
|
"device.control.shell.enter": "Please enter the Enter key to confirm the execution of the script",
|
||||||
"device.control.shell.success": "Script execution successfully",
|
"device.control.shell.success": "Script execution successfully",
|
||||||
|
"device.control.task.name": "Timing Task",
|
||||||
"device.control.capture": "Screenshot",
|
"device.control.capture": "Screenshot",
|
||||||
"device.control.capture.progress": "Capturing screenshot for {deviceName}...",
|
"device.control.capture.progress": "Capturing screenshot for {deviceName}...",
|
||||||
"device.control.capture.success.message": "Open screenshot location?",
|
"device.control.capture.success.message": "Open screenshot location?",
|
||||||
|
@ -113,6 +113,7 @@
|
|||||||
"device.control.shell.push.success": "推送脚本成功",
|
"device.control.shell.push.success": "推送脚本成功",
|
||||||
"device.control.shell.enter": "请输入回车键确认执行该脚本",
|
"device.control.shell.enter": "请输入回车键确认执行该脚本",
|
||||||
"device.control.shell.success": "脚本执行成功",
|
"device.control.shell.success": "脚本执行成功",
|
||||||
|
"device.control.task.name": "定时任务",
|
||||||
"device.control.capture": "截取屏幕",
|
"device.control.capture": "截取屏幕",
|
||||||
"device.control.capture.progress": "正在截取 {deviceName} 的屏幕快照...",
|
"device.control.capture.progress": "正在截取 {deviceName} 的屏幕快照...",
|
||||||
"device.control.capture.success.message": "是否前往截屏位置进行查看?",
|
"device.control.capture.success.message": "是否前往截屏位置进行查看?",
|
||||||
|
@ -113,6 +113,7 @@
|
|||||||
"device.control.shell.push.success": "推送腳本成功",
|
"device.control.shell.push.success": "推送腳本成功",
|
||||||
"device.control.shell.enter": "請輸入回車鍵確認執行該腳本",
|
"device.control.shell.enter": "請輸入回車鍵確認執行該腳本",
|
||||||
"device.control.shell.success": "腳本執行成功",
|
"device.control.shell.success": "腳本執行成功",
|
||||||
|
"device.control.task.name": "定時任務",
|
||||||
"device.control.capture": "擷取螢幕",
|
"device.control.capture": "擷取螢幕",
|
||||||
"device.control.capture.progress": "正在擷取 {deviceName} 的螢幕快照...",
|
"device.control.capture.progress": "正在擷取 {deviceName} 的螢幕快照...",
|
||||||
"device.control.capture.success.message": "是否前往截圖位置進行檢視?",
|
"device.control.capture.success.message": "是否前往截圖位置進行檢視?",
|
||||||
|
21
src/plugins/element-plus/components/EleFormItemCol/index.vue
Normal file
21
src/plugins/element-plus/components/EleFormItemCol/index.vue
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
<template>
|
||||||
|
<el-col v-bind="{ ...$props }">
|
||||||
|
<el-form-item v-bind="{ ...$attrs }">
|
||||||
|
<slot />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { ElCol } from 'element-plus'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'ElFormItemCol',
|
||||||
|
inheritAttrs: false,
|
||||||
|
props: {
|
||||||
|
...ElCol.props,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style></style>
|
21
src/plugins/element-plus/components/EleFormRow/index.vue
Normal file
21
src/plugins/element-plus/components/EleFormRow/index.vue
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
<template>
|
||||||
|
<el-form v-bind="{ ...$props }">
|
||||||
|
<el-row v-bind="{ ...$attrs, size: $props.size }">
|
||||||
|
<slot />
|
||||||
|
</el-row>
|
||||||
|
</el-form>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { ElForm } from 'element-plus'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'ElFormRow',
|
||||||
|
inheritAttrs: false,
|
||||||
|
props: {
|
||||||
|
...ElForm.props,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style></style>
|
@ -11,6 +11,8 @@ import * as ElementPlusIcons from '@element-plus/icons-vue'
|
|||||||
import { ElLoading, ElMessage, ElMessageBox } from 'element-plus'
|
import { ElLoading, ElMessage, ElMessageBox } from 'element-plus'
|
||||||
|
|
||||||
import EleIconLoading from './components/EleIconLoading/index.vue'
|
import EleIconLoading from './components/EleIconLoading/index.vue'
|
||||||
|
import EleFormRow from './components/EleFormRow/index.vue'
|
||||||
|
import EleFormItemCol from './components/EleFormItemCol/index.vue'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
install(app) {
|
install(app) {
|
||||||
@ -29,5 +31,8 @@ export default {
|
|||||||
app.use(ElMessage)
|
app.use(ElMessage)
|
||||||
app.use(ElMessageBox)
|
app.use(ElMessageBox)
|
||||||
app.use(ElLoading)
|
app.use(ElLoading)
|
||||||
|
|
||||||
|
app.component('EleFormRow', EleFormRow)
|
||||||
|
app.component('EleFormItemCol', EleFormItemCol)
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user