Commit 6bd5ee16546596d6584047d80964fed7fa2f3ee2

Authored by Zhang Zhuo
1 parent 76d17fa3

更新多功能组件 -张卓

src/components/funAreaSelect/funAreaSelect.js
... ... @@ -2,47 +2,117 @@ import React, { Component } from "react"
2 2 import AreaSelect from "../areaSelete/areaSelete"
3 3 import "./funAreaSelect.css"
4 4 export default class FlvCom extends Component {
5   - constructor(props){
6   - super(props);
7   - this.state = {
8   - serviceData:[],
9   - }
10   - }
11   - static getDerivedStateFromProps(props){
12   -
13   - return null;
  5 + constructor(props) {
  6 + super(props);
  7 + this.state = {
  8 + serviceData: [],
  9 + mode:"polygon",//polygon react
14 10 }
15   - componentDidUpdate(){
16   -
  11 + }
  12 + static getDerivedStateFromProps(props) {
  13 +
  14 + return null;
  15 + }
  16 + componentDidUpdate() {
  17 +
  18 + }
  19 + componentDidMount() {
  20 + let {mode} = this.state;
  21 + if(mode==="react"){
  22 + this.setReact()
  23 + }else{
  24 + this.setPolygon()
17 25 }
18   - componentDidMount(){
19   - // var canvasEl = document.getElementById(this.myRef.state.id)
20   - // canvasEl.onclick = (e)=>{
21   - // var left = e.layerX;
22   - // var top = e.layerY;
23   - // let {serviceData} = this.state;
24   - // serviceData.push([left,top])
25   - // this.setState({
26   - // serviceData
27   - // },()=>{
28   - // this.myRef.draw()
29   - // })
30   - // }
31   - // canvasEl.oncontextmenu = (e)=>{
32   - // console.log(e.button)
33   - // e.preventDefault()
34   - // }
  26 + }
  27 + setReact() {//设置矩形
  28 + this.count = -1;//用来判断是否生成了一个框
  29 + var canvasEl = document.getElementById(this.myRef.state.id)//获取canvas的id 这id是动态的所以要用ref进行获取
  30 + var mousemoveFc = (e) => {
  31 + var serviceData = JSON.parse(JSON.stringify(this.state.serviceData));
  32 + var left1 = e.layerX;
  33 + var top1 = e.layerY;
  34 + if (this.count === 0) {//如果是第一次画就正常
  35 + serviceData[1][1] = top1;
  36 + serviceData[2] = [left1, top1];
  37 + serviceData[3][0] = left1;
  38 + } else {//不是第一次,也就是有框了这时候你直接就可以拖拽
  39 + if (this.myRef.selectedIndex||this.myRef.selectedIndex===0) {
  40 + serviceData[this.myRef.selectedIndex] = [left1, top1]
  41 + switch (this.myRef.selectedIndex) {
  42 + case 0:
  43 + serviceData[1][0] = left1;
  44 + serviceData[3][1] = top1;
  45 + break;
  46 + case 1:
  47 + serviceData[0][0] = left1;
  48 + serviceData[2][1] = top1;
  49 + break;
  50 + case 2:
  51 + serviceData[1][1] = top1;
  52 + serviceData[3][0] = left1;
  53 + break;
  54 + case 3:
  55 + serviceData[0][1] = top1;
  56 + serviceData[2][0] = left1;
  57 + break;
  58 + }
  59 + }
  60 + }
  61 + this.setState({
  62 + serviceData
  63 + }, () => {
  64 + this.myRef.draw()
  65 + })
35 66 }
36   - change(){
37   -
  67 + canvasEl.addEventListener("mousedown", (e) => {
  68 + var left = e.layerX;
  69 + var top = e.layerY;
  70 + var arr = [left, top]
  71 + this.count++;//这个参数每次点击就加加这样就可以判断上面是否画图了
  72 + if (this.state.serviceData.length === 0) {//刚按下的时候进行初始化
  73 + let serviceData = [[...arr], [...arr], [...arr], [...arr]]
  74 + this.setState({
  75 + serviceData
  76 + }, () => {
  77 + this.myRef.draw();
  78 + })
  79 + }
  80 + canvasEl.addEventListener("mousemove", mousemoveFc)
  81 + })
  82 + canvasEl.addEventListener("mouseup", (e) => {
  83 + canvasEl.removeEventListener("mousemove", mousemoveFc)
  84 + })
  85 +
  86 + }
  87 + setPolygon() {//设置多边形
  88 + var canvasEl = document.getElementById(this.myRef.state.id)//获取canvas的id 这id是动态的所以要用ref进行获取
  89 + canvasEl.onclick = (e) => {
  90 + var left = e.layerX;
  91 + var top = e.layerY;
  92 + let { serviceData } = this.state;
  93 + serviceData.push([left, top])
  94 + this.setState({
  95 + serviceData
  96 + }, () => {
  97 + this.myRef.draw()
  98 + })
38 99 }
39   - render() {
40   - let {serviceData} = this.state;
41   - return (
42   - <div className="funAreaSelectCss">
43   - <AreaSelect serviceData={serviceData} change={(val)=>this.change(val)}></AreaSelect>
44   -
45   - </div>
46   - )
  100 + canvasEl.oncontextmenu = (e) => {
  101 + e.preventDefault()
  102 + if (e.button === 2) {
  103 + canvasEl.onclick = null
  104 + }
47 105 }
  106 + }
  107 + change() {
  108 +
  109 + }
  110 + render() {
  111 + let { serviceData } = this.state;
  112 + return (
  113 + <div className="funAreaSelectCss">
  114 + <AreaSelect ref={(inst) => { this.myRef = inst }} serviceData={serviceData} change={(val) => this.change(val)}></AreaSelect>
  115 + </div>
  116 + )
  117 + }
48 118 }
49 119 \ No newline at end of file
... ...
src/index.js
... ... @@ -8,27 +8,27 @@ class App extends Component {
8 8 this.state = {
9 9 imgUrl: "C:/imagelib/imgalarm/2020/12/21/192.168.166.155/192.168.166.155_00_20201221181716755_ALARM_210_9891_HEL_SNAP.jpg",
10 10 serviceData: [[431, 55], [479, 55], [481, 107], [435, 107]],
11   - arr: [
12   - {
13   - id: "1", title: "点位1", serviceData: [
14   - ["95.16", "13.60"],
15   - ["126.40", "13.37"],
16   - ["127.37", "28.82"],
17   - ["95.65", "28.59"]]
18   - },
19   - { id: "2", title: "点位2", serviceData:[
20   - ["210.34", "12.68"],
21   - ["233.76", "12.68"],
22   - ["234.74", "24.67"],
23   - ["212.29", "24.67"]
24   - ] },
25   - { id: "3", title: "点位3", serviceData:[
26   - ["256.21", "29.51"],
27   - ["283.05", "29.51"],
28   - ["282.08", "41.50"],
29   - ["257.19", "41.50"]
30   - ] },
31   - ],
  11 + // arr: [
  12 + // {
  13 + // id: "1", title: "点位1", serviceData: [
  14 + // ["95.16", "13.60"],
  15 + // ["126.40", "13.37"],
  16 + // ["127.37", "28.82"],
  17 + // ["95.65", "28.59"]]
  18 + // },
  19 + // { id: "2", title: "点位2", serviceData:[
  20 + // ["210.34", "12.68"],
  21 + // ["233.76", "12.68"],
  22 + // ["234.74", "24.67"],
  23 + // ["212.29", "24.67"]
  24 + // ] },
  25 + // { id: "3", title: "点位3", serviceData:[
  26 + // ["256.21", "29.51"],
  27 + // ["283.05", "29.51"],
  28 + // ["282.08", "41.50"],
  29 + // ["257.19", "41.50"]
  30 + // ] },
  31 + // ],
32 32 serviceData2: []
33 33 }
34 34 }
... ... @@ -49,12 +49,12 @@ class App extends Component {
49 49 }}>
50 50 <button onClick={() => this.clickIt()}>切换</button>
51 51 <div style={{ width: "81.2%", height: "80%" }}>
52   - {/* <FunAreaSelect></FunAreaSelect> */}
53   - {
  52 + <FunAreaSelect></FunAreaSelect>
  53 + {/* {
54 54 arr.map(item=>{
55 55 return <AreaSelete key={item.id} title={item.title} serviceData={item.serviceData} change={(val) => this.change(val)}></AreaSelete>
56 56 })
57   - }
  57 + } */}
58 58 {/* <AreaSelete ref={(inst) => { this.myRef = inst } } serviceData={serviceData2} change={(val)=>this.change(val)}></AreaSelete> */}
59 59 </div>
60 60 {/* <ImgCom httpImg="http://112.125.25.140:8083/syboxms/getImgDataByPath" imgUrl={imgUrl}></ImgCom> */}
... ...