Electron-Vue 方法库

Legendary -
Electron-Vue 方法库
文件路径/src/utils/Tools.js所需依赖
yarn add xlsx@0.17.3 # 解析处理 Excel 表格专用
挂载为全局方法/src/main.js
import Vue from 'vue'
import App from './App.vue'
import Tools from './utils/Tools'

// 全局方法挂载
Vue.prototype.$Tools = new Tools()
文件概述
import xlsx from 'xlsx'
const { dialog, getCurrentWindow } = require('electron').remote

export default class Tools {
    constructor() {}
    // 具体方法写在此处...
}
具体方法获取输入值的具体数据类型
/**
 * 获取输入值的具体数据类型
 * @param {*} variable
 */
getType(variable) {
  return Object.prototype.toString.call(variable).split(' ')[1].replace(']', '')
}
获取文件路径
/**
 * 获取文件路径
 * @param {string} file_type  文件选择类型的整体描述
 * @param {array} extensions  选中文件的具体扩展名组成数组
 */
getFilePath(file_type = 'All Files', extensions = ['*']) {
  return new Promise(async (resolve, reject) => {
    const { canceled, filePaths } = await dialog.showOpenDialog(getCurrentWindow(), {
      title: '请选择一个目录',
      properties: ['openFile', 'dontAddToRecent'],
      buttonLabel: '选择此文件', // 确认按钮的 label
      filters: [{ name: file_type, extensions }],
    })
    canceled ? reject('用户已取消对文件的选择操作') : resolve(filePaths[0])
  })
}
获取文件路径
getDirPath() {
  return new Promise(async (resolve, reject) => {
    const { canceled, filePaths } = await dialog.showOpenDialog(getCurrentWindow(), {
      title: '请选择一个目录',
      properties: ['openDirectory', 'dontAddToRecent'],
      buttonLabel: '选择此文件夹', // 确认按钮的 label
    })
    canceled ? reject('用户已取消对文件夹的选择操作') : resolve(filePaths[0])
  })
}
获取文件保存的位置
/**
 * 获取文件保存的位置
 * @param {string} file_type  文件选择类型的整体描述
 * @param {array} extensions  选中文件的具体扩展名组成数组
 */
getFileSavePath(file_type = 'All Files', extensions = ['*']) {
  return new Promise(async (resolve, reject) => {
    const { canceled, filePath } = await dialog.showSaveDialog(getCurrentWindow(), {
      title: '请选择文件的保存位置',
      properties: ['dontAddToRecent'],
      buttonLabel: '保存在此位置', // 确认按钮的 label
      filters: [{ name: file_type, extensions }],
    })
    canceled ? reject('用户已取消对文件的保存操作') : resolve(filePath)
  })
}
Excel 表格文件导出
/**
 * 表格文件导出(支持导出多表)
 * @param {string} file_path  表格导出路径
 * @param {array} sheet_list  二维数组 [[表数据, 表名]]
 */
exportExcel(file_path, sheet_list = []) {
  const WORKBOOK = xlsx.utils.book_new() // 新建一个空白工作簿
  for (const sheet_item of sheet_list) {
    const TEMP_SHEET = xlsx.utils.json_to_sheet(sheet_item[0])
    xlsx.utils.book_append_sheet(WORKBOOK, TEMP_SHEET, sheet_item[1])
  }
  xlsx.writeFile(WORKBOOK, file_path)
}
Excel 表格文件导入
/**
 * 表格文件导入(excel 表第一行必须是表头 | 支持读取多表)
 * @param {string} file_path  表格导入路径
 */
importExcel(file_path) {
  const { SheetNames, Sheets } = xlsx.readFile(file_path)
  const TEMP_TABLE_LIST = []
  for (const SheetName of SheetNames) {
    const TEMP_LIST = { SheetName }
    TEMP_LIST.sheet = xlsx.utils.sheet_to_json(Sheets[SheetName])
    TEMP_TABLE_LIST.push(TEMP_LIST)
  }
  return TEMP_TABLE_LIST
}
根据角度计算弧度
/**
 * 根据角度计算弧度
 * @param {number} angle 待转换的角度
 * @param {number} fix_num 保留的小数点位数
 * @returns
 */
angleToArc(angle, fix_num = 4) {
  return Number(((angle * Math.PI) / 180).toFixed(fix_num))
}
根据弧度计算角度
/**
 * 根据弧度计算角度
 * @param {*} arc 待转换的弧度
 * @param {*} fix_num 保留的小数点位数
 * @returns
 */
arcToAngle(arc, fix_num = 4) {
  return Number(((arc * 180) / Math.PI).toFixed(fix_num))
}
特别申明:本文内容来源网络,版权归原作者所有,如有侵权请立即与我们联系(cy198701067573@163.com),我们将及时处理。

Tags 标签

vue.jsnode.jselectron-vueelectronjavascript

扩展阅读

加个好友,技术交流

1628738909466805.jpg