lb #39

Merged
g7hoo merged 16 commits from lb into test 2023-10-11 10:33:08 +08:00
4 changed files with 163 additions and 20 deletions
Showing only changes of commit ab8e9cb2a5 - Show all commits

View File

@ -215,50 +215,45 @@
// return new Date(y,m,d,h,M,0,0).getTime() // return new Date(y,m,d,h,M,0,0).getTime()
//} //}
data: [ data: [
{ {
// 01:00 ~ 05:00
name: '运行', name: '运行',
value: [0, 1695747600000, 1695762000000, 0], value: [0, 1696730000000, 1696734040450, 0],
itemStyle: { itemStyle: {
normal: { normal: {
color: types[0].color, color: types[0].color,
}, },
}, },
}, },
{ {
// 5:00 ~ 8:00
name: '故障', name: '故障',
value: [0, 1695762000000, 1695772800000, 0], value: [0, 1696737040000, 1696754040450, 0],
itemStyle: { itemStyle: {
normal: { normal: {
color: types[1].color, color: types[1].color,
}, },
}, },
}, },
{ {
// 8:00 ~ 8:39
name: '计划停机', name: '计划停机',
value: [0, 1695772800000, 1695775140000, 0], value: [0, 1696755000000, 1696759000000, 0],
itemStyle: { itemStyle: {
normal: { normal: {
color: types[2].color, color: types[2].color,
}, },
}, },
}, },
{ {
// 08:39 ~ 18:00
name: '运行', name: '运行',
value: [0, 1695775140000, 1695808800000, 0], value: [0, 1696759000000, 1696769000000, 0],
itemStyle: { itemStyle: {
normal: { normal: {
color: types[0].color, color: types[0].color,
}, },
}, },
}, },
{ {
// 18:00 ~ 23:30
name: '计划停机', name: '计划停机',
value: [0, 1695808800000, 1695828600000, 0], value: [0, 1696769400000, 1696779000000, 0],
itemStyle: { itemStyle: {
normal: { normal: {
color: types[2].color, color: types[2].color,

View File

@ -11,7 +11,7 @@
<NavMenu @action="handleAction" :menu="menu" /> <NavMenu @action="handleAction" :menu="menu" />
</section> </section>
<section id="main-panel"> <section id="main-panel">
<section id="left-panel"> <section id="left-panel" v-drag="'right'">
<h2>组件</h2> <h2>组件</h2>
<div id="components"></div> <div id="components"></div>
</section> </section>
@ -25,10 +25,10 @@
</template> </template>
<script> <script>
import vDrag from './drag'
import { hiprint, defaultElementTypeProvider } from "vue-plugin-hiprint"; import { hiprint, defaultElementTypeProvider } from "vue-plugin-hiprint";
hiprint.init({ hiprint.init({
providers: [defaultElementTypeProvider()], providers: [defaultElementTypeProvider()],
}); });
const NavSelector = { const NavSelector = {
@ -101,6 +101,7 @@ export default {
name: 'PrintDesignPage', name: 'PrintDesignPage',
components: { NavMenu }, components: { NavMenu },
props: {}, props: {},
directives: { drag: vDrag },
data() { data() {
return { return {
hiprintTemplate: null, hiprintTemplate: null,
@ -123,7 +124,7 @@ export default {
}, },
methods: { methods: {
loadDesigner() { loadDesigner() {
$("#edit-panel").empty(); $("#edit-panel").empty();
this.hiprintTemplate = new hiprint.PrintTemplate({ this.hiprintTemplate = new hiprint.PrintTemplate({
settingContainer: "#settings", settingContainer: "#settings",
}); });
@ -143,6 +144,15 @@ export default {
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
::-webkit-scrollbar {
width: 0;
}
::-webkit-scrollbar-button {
// background: red;
}
.print-design { .print-design {
height: 100vh; height: 100vh;
display: flex; display: flex;
@ -178,7 +188,7 @@ export default {
overflow: auto; overflow: auto;
grid-area: left; grid-area: left;
background: #fff; background: #fff;
h2 { h2 {
margin: 0; margin: 0;
font-weight: 400; font-weight: 400;
@ -196,6 +206,7 @@ export default {
background: #fff; background: #fff;
border-left: 1px solid #ccc; border-left: 1px solid #ccc;
border-right: 1px solid #ccc; border-right: 1px solid #ccc;
} }
#right-panel { #right-panel {

41
src/views/print/drag.css Normal file
View File

@ -0,0 +1,41 @@
.v-drag-border-left {
border-left: 1px solid #ccc;
}
.v-drag-border-left > div.pseudo-border {
position: absolute;
top: 0;
right: -2px;
width: 4px;
height: 100%;
background: transparent;
z-index: 1;
transition: all linear 0.3s;
cursor: col-resize;
}
.v-drag-border-left > div.pseudo-border:hover {
background: #ccc;
}
.v-drag-border-right {
/* border-right: 1px solid #ccc; */
position: relative;
transition: width linear 0.3s;
}
.v-drag-border-right > div.pseudo-border {
position: absolute;
top: 0;
right: -2px;
width: 4px;
height: 100%;
background: transparent;
z-index: 1;
transition: all linear 0.3s;
cursor: col-resize;
}
.v-drag-border-right > div.pseudo-border:hover {
background: #ccc;
}

96
src/views/print/drag.js Normal file
View File

@ -0,0 +1,96 @@
import './drag.css';
export default {
bind(el, { name, value }, vnode) {
switch (name) {
case 'drag': {
if (['left', 'right', 'top', 'bottom'].indexOf(value) == -1) return;
// 创建边框子元素
const border = document.createElement('div');
border.classList.add("pseudo-border");
el.appendChild(border);
// 添加拖拽样式
addDragStyle(el, value);
// 添加拖拽事件
addDragEvent(el, border);
break;
}
}
},
// inserted()
// update()
// componentUpdated()
// unbind()
}
function addDragEvent(el, border, direction) {
// border.setAttribute('draggable', true)
const onMouseMove = function (e) {
console.log('move', e);
}
const onMouseUp = function (e) {
console.log('up')
border.removeEventListener('mousemove', onMouseMove);
}
border.addEventListener('mousedown', function (e) {
console.log('down');
document.body.removeEventListener('mouseup', onMouseUp)
document.body.addEventListener('mouseup', onMouseUp)
border.addEventListener('mousemove', onMouseMove);
});
// TODO: 有点bug
// el.addEventListener('mousedown', function (e) {
// console.log('mousedown', e);
// const { clientX, clientY } = e;
// const { left, top, width, height } = el.getBoundingClientRect();
// const { offsetLeft, offsetTop } = el;
// const startX = clientX;
// const startY = clientY;
// const startLeft = left;
// const startTop = top;
// const startWidth = width;
// const startHeight = height;
// const startOffsetLeft = offsetLeft;
// const startOffsetTop = offsetTop;
// const move = function (e) {
// console.log('mousemove', e);
// const { clientX, clientY } = e;
// const offsetX = clientX - startX;
// const offsetY = clientY - startY;
// switch (direction) {
// case 'left': {
// el.style.left = startLeft + offsetX + 'px';
// el.style.width = startWidth - offsetX + 'px';
// break;
// }
// case 'right': {
// el.style.width = startWidth + offsetX + 'px';
// break;
// }
// case 'top': {
// el.style.top = startTop + offsetY + 'px';
// el.style.height = startHeight - offsetY + 'px';
// break;
// }
// case 'bottom': {
// el.style.height = startHeight + offsetY + 'px';
// break;
// }
// }
// }
// const up = function (e) {
// console.log('mouseup', e);
// document.removeEventListener('mousemove', move);
// document.removeEventListener('mouseup', up);
// }
// document.addEventListener('mousemove', move);
// document.addEventListener('mouseup', up);
// });
}
function addDragStyle(el, direction) {
el.classList.add('v-drag-border-' + direction)
}