记录一些记不住的问题

142 阅读1分钟

- 点击折现图

this.chart.setOption(option);
      let self = this;
      this.chart.getZr().on("click", function (e) {
        let pointInPixel = [e.offsetX, e.offsetY];
        let pointInGrid = self.chart.convertFromPixel(
          { seriesIndex: 0 },
          pointInPixel
        );
        let xIndex = pointInGrid[0];
        console.log(xIndex);
      });

- vscode自动格式化代码(eslint,stylelint)

"editor.codeActionsOnSave": {
    "source.fixAll.eslint": "explicit",
    "source.fixAll.stylelint": "explicit"
  },
  "eslint.format.enable": true,
  "files.autoSave": "onFocusChange",
  "stylelint.config": null,

- 前端请求视频流

import { sendStream } from 'h3'
import fs from "fs";

export default defineEventHandler(async event => {
  try {
    const filePath = "public/video/publicize.mp4"
    const stat = fs.statSync(filePath);
    const fileSize = stat.size;
    
    let range = event.node.req.headers.range;
    
    if(!range){
      const file = fs.createReadStream(filePath,{start: 0,end:fileSize-1 });
      event.node.res.statusCode = 206
      return sendStream(event, file);
    }
    const parts = range!.replace(/bytes=/, "").split("-");
   
    const start = parseInt(parts[0], 10);
    const endBytes = parts[1] ? parseInt(parts[1],10) : null;

    const end = endBytes ? endBytes : Math.min(start + 999999, fileSize - 1);

    const chunkSize = (end - start) + 1;
    const file = fs.createReadStream(filePath,{ start, end });

    event.node.res.setHeader("Access-Control-Allow-Headers", "Range");
    event.node.res.setHeader('Content-Type', 'video/mp4'); 
    event.node.res.setHeader("Content-Range", `bytes ${start}-${end}/${fileSize}`)
    event.node.res.setHeader("Content-Length",chunkSize)
    event.node.res.setHeader("Accept-Ranges", "bytes")
  
    event.node.res.statusCode = 206
    return sendStream(event, file);
  
  } catch (e) {
    return {
      code: 500,
      message: '服务异常'
    };
  }
});

- Element合并单元格

<el-table :span-method="(e) => objectSpanMethod(e)"></el-table>
//合并操作
mergeHandle(list, alias) {
      for (const item of list) {
        item._count = 0;
      }
      for (let i = list.length - 1; i >= 0; i--) {
        if (i > 0 && list[i][alias] === list[i - 1][alias]) {
          list[i - 1]._count = list[i]._count + 1;
        } else {
          list[i]._count += 1;
          list[i].merge = true;
        }
      }
    }
    //table合并回调
    objectSpanMethod({ row, column, columnIndex, rowIndex }) {
      if (columnIndex === 0 || columnIndex === 4) {
        if (row.merge === true) {
          return {
            rowspan: row._count,
            colspan: 1,
          };
        } else {
          return {
            rowspan: 0,
            colspan: 0,
          };
        }
      }
    }
    //实际调用
    this.mergeHandle(res.data, "projectId");

chrom浏览器设置自动播放:右键点击 Chrome 快捷方式:在桌面或任务栏找到 Chrome 图标,右键点击。 选择“属性”:从菜单中选择“属性”。 修改目标字段: 在“快捷方式”选项卡中找到“目标”字段。 在现有路径末尾添加 --autoplay-policy=no-user-gesture-required,注意前面加一个空格。 例如:"C:\Program Files\Google\Chrome\Application\chrome.exe" --autoplay-policy=no-user-gesture-required 保存更改:点击“应用”或“确定”保存。 重新启动 Chrome:通过快捷方式启动 Chrome,参数生效。