一个简单的Vue组件,封装了常见的ADB工具类操作,并结合ElementUI实现可视化操作界面,代码中含有中文注释

30 篇文章 3 订阅
7 篇文章 2 订阅

一个简单的Vue组件,封装了常见的ADB工具类操作,并结合ElementUI实现可视化操作界面。代码中含有中文注释:

<template>
  <div class="adb-tools">
    <el-row :gutter="20">
      <el-col :span="8">
        <h3>设备列表</h3>
        <el-select v-model="selectedDevice" placeholder="请选择设备" filterable>
          <el-option v-for="device in devices" :key="device.serial" :label="device.name" :value="device.serial"></el-option>
        </el-select>
        <el-button @click="refreshDevices">刷新设备</el-button>
      </el-col>
      <el-col :span="16">
        <h3>文件传输</h3>
        <el-upload
          ref="adbUpload"
          :action="'/api/upload?serial=' + selectedDevice"
          :on-success="handleUploadSuccess"
          :before-remove="beforeUploadRemove"
          list-type="text"
          :file-list="uploadFiles">
          <el-button slot="trigger">选择文件</el-button>
        </el-upload>
        <el-table :data="fileList" style="margin-top: 10px;">
          <el-table-column label="文件名" prop="name"></el-table-column>
          <el-table-column label="大小(字节)" prop="size"></el-table-column>
          <el-table-column label="操作">
            <template #default="{ row }">
              <a :href="row.path" target="_blank">下载</a>
              <el-divider direction="vertical"></el-divider>
              <el-link @click.prevent="deleteFile(row.path)">删除</el-link>
            </template>
          </el-table-column>
        </el-table>
      </el-col>
    </el-row>
  </div>
</template>

<script>
import axios from 'axios'

export default {
  data() {
    return {
      devices: [],
      selectedDevice: null,
      fileList: [],
      uploadFiles: []
    }
  },
  mounted() {
    // 初始化设备列表
    this.refreshDevices()
  },
  methods: {
    refreshDevices() {
      // 刷新设备列表
      axios.get('/api/devices').then(res => {
        this.devices = res.data.devices
        if (this.devices.length > 0) {
          this.selectedDevice = this.devices[0].serial
        }
      })
    },
    handleUploadSuccess(response, file, fileList) {
      // 文件上传成功后更新文件列表
      let fileInfo = response.fileInfo
      this.fileList.push(fileInfo)
    },
    beforeUploadRemove(file, fileList) {
      // 删除上传文件前的处理逻辑
      this.deleteFile(file.path, false)
      return true
    },
    deleteFile(path, refreshList = true) {
      // 删除指定路径下的文件
      axios.post('/api/delete', { serial: this.selectedDevice, path }).then(res => {
        if (res.data.success && refreshList) {
          this.refreshFileList()
        }
      })
    },
    refreshFileList() {
      // 刷新当前选中设备的文件列表
      axios.get(`/api/list?serial=${this.selectedDevice}`).then(res => {
        this.fileList = res.data.fileList
      })
    }
  }
}
</script>

<style scoped>

.adb-tools {
  margin: 20px;
}

</style>

这个组件实现了ADB工具常见的文件传输操作,包括设备列表展示、设备切换、文件上传、文件下载和文件删除等功能。其中,通过封装 axios 库来发送异步请求,以获取设备列表、上传/下载/删除文件等操作的结果。同时,服务器端也需要相应的接口支持。在组件中,需要调用以下API:

  • /api/devices:获取已连接设备列表;
  • /api/upload:向指定设备上传文件;
  • /api/delete:从指定设备中删除文件;
  • /api/list:获取指定设备中所有文件的列表。

在使用该组件之前,需要先在服务端运行相应的ADB命令,启动ADB服务,确保可以正常连接到相关设备。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
当我们在Python爬虫需要处理较为复杂的操作流程时,我们可以通过可视化界面把各部分操作内容进行封装,生成一个完整的系统,从而提高操作的效率和可维护性。 Python有很多可视化界面的库,比如Tkinter、PyQt、wxPython等,这里我们以Tkinter为例,介绍如何实现一个简单的爬虫系统。 首先,我们需要设计一个简单的爬虫系统界面,包括输入URL、选择爬取方式、选择数据解析方式、爬取结果显示等功能。然后,我们可以通过Python的Tkinter库来实现这个界面,具体代码如下: ``` import tkinter as tk class SpiderSystem: def __init__(self): self.window = tk.Tk() self.window.title("Spider System") self.url_label = tk.Label(self.window, text="URL:") self.url_label.grid(row=0, column=0) self.url_entry = tk.Entry(self.window) self.url_entry.grid(row=0, column=1) self.method_label = tk.Label(self.window, text="Method:") self.method_label.grid(row=1, column=0) self.method_var = tk.StringVar(value="GET") self.method_option = tk.OptionMenu(self.window, self.method_var, "GET", "POST") self.method_option.grid(row=1, column=1) self.parse_label = tk.Label(self.window, text="Parse:") self.parse_label.grid(row=2, column=0) self.parse_var = tk.StringVar(value="HTML") self.parse_option = tk.OptionMenu(self.window, self.parse_var, "HTML", "JSON") self.parse_option.grid(row=2, column=1) self.submit_button = tk.Button(self.window, text="Submit", command=self.submit) self.submit_button.grid(row=3, column=0) self.result_text = tk.Text(self.window) self.result_text.grid(row=4, column=0, columnspan=2) def submit(self): url = self.url_entry.get() method = self.method_var.get() parse = self.parse_var.get() # TODO: 根据url、method、parse进行爬取和解析,并将结果显示在result_text # ... def run(self): self.window.mainloop() if __name__ == "__main__": spider = SpiderSystem() spider.run() ``` 在这个示例代码,我们通过Tkinter库实现一个简单的爬虫系统界面,包括输入URL、选择爬取方式、选择数据解析方式、爬取结果显示等功能。其,submit方法实现了根据url、method、parse进行爬取和解析,并将结果显示在result_text的功能。 当我们需要实现更加复杂的爬虫系统时,可以在这个基础上进行扩展和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

《代码爱好者》

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值