| | |
| | | <template> |
| | | <div id="test"> |
| | | <div class="timeQuery" id="timeQuery"> |
| | | <el-row > |
| | | <el-col :span="24"> |
| | | <div class="timeQuery-background" @mousemove="hoveEvent"></div> |
| | | <div class="timeQuery-pointer"> |
| | | <el-tooltip class="item" effect="dark" content="Top Center 提示文字" value="true" manual="true" hide-after="0" placement="top"> |
| | | <div class="timeQuery-pointer-content"></div> |
| | | </el-tooltip> |
| | | <div class="timeQuery-background" ></div> |
| | | <div class="timeQuery-pointer"> |
| | | <div class="timeQuery-pointer-content" id="timeQueryPointer"> |
| | | <div class="timeQuery-pointer-handle" @mousedown.left="mousedownHandler" ></div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="timeQuery-data" > |
| | | <div class="timeQuery-data" > |
| | | |
| | | <div class="timeQuery-data-cell" v-for="item of recordData" :style="'width:' + getDataWidth(item) + '%; left:' + getDataLeft(item) + '%'" ></div> |
| | | <!-- <div class="timeQuery-data-cell" style="width: 30%; left: 20%" @click="timeChoose"></div>--> |
| | | <!-- <div class="timeQuery-data-cell" style="width: 60%; left: 20%" @click="timeChoose"></div>--> |
| | | <div class="timeQuery-data-cell" v-for="item of recordData" :style="'width:' + getDataWidth(item) + '%; left:' + getDataLeft(item) + '%'" ></div> |
| | | <!-- <div class="timeQuery-data-cell" style="width: 30%; left: 20%" @click="timeChoose"></div>--> |
| | | <!-- <div class="timeQuery-data-cell" style="width: 60%; left: 20%" @click="timeChoose"></div>--> |
| | | </div> |
| | | |
| | | <div class="timeQuery-label" > |
| | | <div class="timeQuery-label-cell" style="left: 0%"> |
| | | <div class="timeQuery-label-cell-label">0</div> |
| | | </div> |
| | | |
| | | <div class="timeQuery-label" > |
| | | <div class="timeQuery-label-cell" style="left: 0%"> |
| | | <div class="timeQuery-label-cell-label">0</div> |
| | | </div> |
| | | <div v-for="index of timeNode" class="timeQuery-label-cell" :style="'left:' + (100.0/timeNode*index).toFixed(4) + '%'"> |
| | | <div class="timeQuery-label-cell-label">{{24/timeNode * index}}</div> |
| | | </div> |
| | | <ul> |
| | | <li v-for="item of allDataList" >{{!!item.name?item.name:item.dname}}</li> |
| | | </ul> |
| | | <div v-for="index of timeNode" class="timeQuery-label-cell" :style="'left:' + (100.0/timeNode*index).toFixed(4) + '%'"> |
| | | <div class="timeQuery-label-cell-label">{{24/timeNode * index}}</div> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | </div> |
| | | |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | name: "test", |
| | | data() { |
| | | return { |
| | | allDataList:[], |
| | | mouseDown: false, |
| | | timeNode: 24, |
| | | recordData:[ |
| | | { |
| | |
| | | }; |
| | | }, |
| | | mounted() { |
| | | var list1 = [{ |
| | | key: Math.random()*10, |
| | | name: "人1" |
| | | },{ |
| | | key: Math.random()*10, |
| | | name: "人2" |
| | | },{ |
| | | key: Math.random()*10, |
| | | name: "人3" |
| | | }] |
| | | var list2 = [{ |
| | | key: Math.random()*10, |
| | | dname: "部门1" |
| | | },{ |
| | | key: Math.random()*10, |
| | | dname: "部门2" |
| | | },{ |
| | | key: Math.random()*10, |
| | | dname: "部门3" |
| | | }] |
| | | |
| | | var allData = list1.concat(list2) |
| | | allData.sort((a, b)=>{ |
| | | return a.key-b.key; |
| | | }) |
| | | this.allDataList = allData; |
| | | for (let i = 1; i <= 24; i++) { |
| | | console.log("<div class=\"timeQuery-label-cell\" style=\"left: " + (100.0/24*i).toFixed(4) + "%\"></div>") |
| | | } |
| | | document.body.addEventListener("mouseup", this.mouseupHandler, false) |
| | | document.body.addEventListener("mousemove", this.mousemoveHandler, false) |
| | | }, |
| | | methods:{ |
| | | getTimeNode(){ |
| | |
| | | }else if (width/20 > 6) { |
| | | return 6 |
| | | } |
| | | }, |
| | | hoveEvent(event){ |
| | | console.log(2222222) |
| | | console.log(event) |
| | | }, |
| | | timeChoose(event){ |
| | | console.log(event) |
| | |
| | | console.log(differenceTime) |
| | | console.log(result) |
| | | return parseFloat(differenceTime/(24*60*60*10)); |
| | | }, |
| | | mousedownHandler(event){ |
| | | this.mouseDown = true |
| | | }, |
| | | mousemoveHandler(event){ |
| | | if (this.mouseDown){ |
| | | document.getElementById("timeQueryPointer").style.left = (event.clientX - 20)+ "px" |
| | | } |
| | | }, |
| | | mouseupHandler(event){ |
| | | this.mouseDown = false |
| | | } |
| | | } |
| | | } |
| | |
| | | z-index: 11; |
| | | -webkit-box-shadow: #9d9d9d 0px 0px 10px inset; |
| | | margin-top: 3px; |
| | | top: 100%; |
| | | } |
| | | .timeQuery-label{ |
| | | height: 16px; |
| | |
| | | } |
| | | .timeQuery-pointer-content{ |
| | | width: 0px; |
| | | height: 16px; |
| | | height: 70px; |
| | | position: absolute; |
| | | border-right: 3px solid #f60303; |
| | | border-right: 2px solid #f60303; |
| | | z-index: 14; |
| | | top: -30px; |
| | | } |
| | | .timeQuery-pointer-handle { |
| | | width: 0; |
| | | height: 0; |
| | | border-top: 12px solid transparent; |
| | | border-right: 12px solid transparent; |
| | | border-bottom: 20px solid #ff0909; |
| | | border-left: 12px solid transparent; |
| | | cursor: no-drop; |
| | | position: absolute; |
| | | left: -11px; |
| | | top: 50px; |
| | | } |
| | | /*.timeQuery-cell:after{*/ |
| | | /* content: "";*/ |