Commit 6bd5ee16546596d6584047d80964fed7fa2f3ee2

Authored by Zhang Zhuo
1 parent 76d17fa3

更新多功能组件 -张卓

src/components/funAreaSelect/funAreaSelect.js
@@ -2,47 +2,117 @@ import React, { Component } from "react" @@ -2,47 +2,117 @@ import React, { Component } from "react"
2 import AreaSelect from "../areaSelete/areaSelete" 2 import AreaSelect from "../areaSelete/areaSelete"
3 import "./funAreaSelect.css" 3 import "./funAreaSelect.css"
4 export default class FlvCom extends Component { 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 \ No newline at end of file 119 \ No newline at end of file
src/index.js
@@ -8,27 +8,27 @@ class App extends Component { @@ -8,27 +8,27 @@ class App extends Component {
8 this.state = { 8 this.state = {
9 imgUrl: "C:/imagelib/imgalarm/2020/12/21/192.168.166.155/192.168.166.155_00_20201221181716755_ALARM_210_9891_HEL_SNAP.jpg", 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 serviceData: [[431, 55], [479, 55], [481, 107], [435, 107]], 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 serviceData2: [] 32 serviceData2: []
33 } 33 }
34 } 34 }
@@ -49,12 +49,12 @@ class App extends Component { @@ -49,12 +49,12 @@ class App extends Component {
49 }}> 49 }}>
50 <button onClick={() => this.clickIt()}>切换</button> 50 <button onClick={() => this.clickIt()}>切换</button>
51 <div style={{ width: "81.2%", height: "80%" }}> 51 <div style={{ width: "81.2%", height: "80%" }}>
52 - {/* <FunAreaSelect></FunAreaSelect> */}  
53 - { 52 + <FunAreaSelect></FunAreaSelect>
  53 + {/* {
54 arr.map(item=>{ 54 arr.map(item=>{
55 return <AreaSelete key={item.id} title={item.title} serviceData={item.serviceData} change={(val) => this.change(val)}></AreaSelete> 55 return <AreaSelete key={item.id} title={item.title} serviceData={item.serviceData} change={(val) => this.change(val)}></AreaSelete>
56 }) 56 })
57 - } 57 + } */}
58 {/* <AreaSelete ref={(inst) => { this.myRef = inst } } serviceData={serviceData2} change={(val)=>this.change(val)}></AreaSelete> */} 58 {/* <AreaSelete ref={(inst) => { this.myRef = inst } } serviceData={serviceData2} change={(val)=>this.change(val)}></AreaSelete> */}
59 </div> 59 </div>
60 {/* <ImgCom httpImg="http://112.125.25.140:8083/syboxms/getImgDataByPath" imgUrl={imgUrl}></ImgCom> */} 60 {/* <ImgCom httpImg="http://112.125.25.140:8083/syboxms/getImgDataByPath" imgUrl={imgUrl}></ImgCom> */}