From 8ada78923491d271fda16d1b366f8e0d09d14489 Mon Sep 17 00:00:00 2001 From: yuan Date: Fri, 11 Jun 2021 17:34:49 +0800 Subject: [PATCH 01/30] baseurl --- src/utils/baseUrl.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/utils/baseUrl.js b/src/utils/baseUrl.js index 648fd20ce..11702c286 100644 --- a/src/utils/baseUrl.js +++ b/src/utils/baseUrl.js @@ -2,11 +2,11 @@ export function getBaseUrl() { let BASE_API; if (process.env.NODE_ENV === 'development') { // BASE_API = 'https://joylink.club/jlcloud'; - // BASE_API = 'https://test.joylink.club/jlcloud'; + BASE_API = 'https://test.joylink.club/jlcloud'; // BASE_API = 'http://192.168.8.107:9000'; // 袁琪 // BASE_API = 'http://192.168.3.83:9000'; // 旭强 有线 // BASE_API = 'http://192.168.8.114:9000'; // 旭强 无线 - BASE_API = 'http://192.168.3.120:9000'; // 张赛 + // BASE_API = 'http://192.168.3.120:9000'; // 张赛 // BASE_API = 'http://192.168.8.140:9000'; // 杜康 // BASE_API = 'http://b29z135112.zicp.vip'; // BASE_API = 'http://2925963m2a.zicp.vip'; // 杜康 From 6b7827bd91422e8132640c264879d1be3ae34351 Mon Sep 17 00:00:00 2001 From: joylink_cuiweidong <364937672@qq.com> Date: Fri, 11 Jun 2021 18:17:48 +0800 Subject: [PATCH 02/30] =?UTF-8?q?zc=20=E4=BB=A3=E7=A0=81=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/jmapNew/mouseController.js | 28 ++--- src/views/newMap/newDesignUser/demonList.vue | 2 +- .../newMapdraft/mapoperate/config/list.vue | 18 +++ .../newMap/newMapdraft/mapoperate/index.vue | 10 +- .../newMapdraft/mapoperate/zcControl.vue | 113 ++++++------------ 5 files changed, 80 insertions(+), 91 deletions(-) diff --git a/src/jmapNew/mouseController.js b/src/jmapNew/mouseController.js index 2ca7e4804..007fea5ca 100644 --- a/src/jmapNew/mouseController.js +++ b/src/jmapNew/mouseController.js @@ -97,23 +97,23 @@ class MouseController extends Eventful { } mousemove(e) { - if (this._dragging) { - const oldX = this._x; - const oldY = this._y; + if (this._dragging) { + const oldX = this._x; + const oldY = this._y; - const dx = e.offsetX - oldX; - const dy = e.offsetY - oldY; + const dx = e.offsetX - oldX; + const dy = e.offsetY - oldY; - this._x = e.offsetX; - this._y = e.offsetY; + this._x = e.offsetX; + this._y = e.offsetY; - if (e.which == 1) { - this._preventDefaultMouseMove && eventTool.stop(e.event); - this.trigger(this.events.__Pan, { dx, dy, oldX, oldY, newX: this._x, newY: this._y }); - } else if (e.which === 3 && this._zoomOnMouseWheel && this._previewOrMapDraw) { - this.handleMouseMoveRight({x: e.offsetX, y: e.offsetY}); - } - } + if (e.which == 1) { + this._preventDefaultMouseMove && eventTool.stop(e.event); + this.trigger(this.events.__Pan, { dx, dy, oldX, oldY, newX: this._x, newY: this._y }); + } else if (e.which === 3 && this._zoomOnMouseWheel && this._previewOrMapDraw) { + this.handleMouseMoveRight({x: e.offsetX, y: e.offsetY}); + } + } } mouseup(e) { diff --git a/src/views/newMap/newDesignUser/demonList.vue b/src/views/newMap/newDesignUser/demonList.vue index fe2232f8a..a094adb5d 100644 --- a/src/views/newMap/newDesignUser/demonList.vue +++ b/src/views/newMap/newDesignUser/demonList.vue @@ -109,7 +109,7 @@ export default { lineCode: elem.lineCode }, { - id: '1', + id: '2', name: '系统配置绘图', type: 'mapSystem', mapId: elem.id, diff --git a/src/views/newMap/newMapdraft/mapoperate/config/list.vue b/src/views/newMap/newMapdraft/mapoperate/config/list.vue index 48f18b520..e35051b57 100644 --- a/src/views/newMap/newMapdraft/mapoperate/config/list.vue +++ b/src/views/newMap/newMapdraft/mapoperate/config/list.vue @@ -294,6 +294,24 @@ + diff --git a/src/views/newMap/newMapdraft/mapoperate/index.vue b/src/views/newMap/newMapdraft/mapoperate/index.vue index b64de62cd..1664d54cd 100644 --- a/src/views/newMap/newMapdraft/mapoperate/index.vue +++ b/src/views/newMap/newMapdraft/mapoperate/index.vue @@ -196,11 +196,19 @@ export default { } else if (controlLampTypeList.includes(type)) { this.enabledTab = 'ControlLamp'; } else { - this.enabledTab = type; + if (this.$refs['ZcControl'] && this.$refs['ZcControl'][0].field == 'checkZcSection') { + this.enabledTab = 'ZcControl'; + } else { + this.enabledTab = type; + } } }, deviceSelect(type) { + // if (this.$refs['ZcControl'].field != 'checkZcSection') { this.selectDevice = type; + // } else { + // this.selectDevice = 'ZcControl'; + // } }, saveMapEvent() { this.$emit('saveMapEvent'); diff --git a/src/views/newMap/newMapdraft/mapoperate/zcControl.vue b/src/views/newMap/newMapdraft/mapoperate/zcControl.vue index 0bf3f5b50..d21549558 100644 --- a/src/views/newMap/newMapdraft/mapoperate/zcControl.vue +++ b/src/views/newMap/newMapdraft/mapoperate/zcControl.vue @@ -1,5 +1,5 @@ - + + +
From a0861633f2c49a04c1cf32e29653dfc3ea3778e9 Mon Sep 17 00:00:00 2001 From: joylink_cuiweidong <364937672@qq.com> Date: Tue, 15 Jun 2021 15:33:50 +0800 Subject: [PATCH 04/30] =?UTF-8?q?zc=20=E6=B7=BB=E5=8A=A0=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E7=9A=84=E5=8C=BA=E6=AE=B5=E5=88=97=E8=A1=A8=EF=BC=88=E8=AE=A1?= =?UTF-8?q?=E8=BD=B4=E5=8C=BA=E6=AE=B5=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/jmapNew/mouseController.js | 25 +++++++- .../newMapdraft/mapoperate/config/list.vue | 12 +++- .../newMapdraft/mapoperate/zcControl.vue | 60 ++++++++++++++++--- 3 files changed, 82 insertions(+), 15 deletions(-) diff --git a/src/jmapNew/mouseController.js b/src/jmapNew/mouseController.js index 007fea5ca..360f9286f 100644 --- a/src/jmapNew/mouseController.js +++ b/src/jmapNew/mouseController.js @@ -112,6 +112,7 @@ class MouseController extends Eventful { this.trigger(this.events.__Pan, { dx, dy, oldX, oldY, newX: this._x, newY: this._y }); } else if (e.which === 3 && this._zoomOnMouseWheel && this._previewOrMapDraw) { this.handleMouseMoveRight({x: e.offsetX, y: e.offsetY}); + this.isMoveRight = true; } } } @@ -121,10 +122,23 @@ class MouseController extends Eventful { this._dragging = false; } if (this._zoomOnMouseWheel && this.$jmap.mapDevice['check_box'] && this._previewOrMapDraw ) { + console.log(this.isMoveRight, 'mouseup'); this.eventTarget = this.$jmap.mapDevice['check_box'].instance; this.handleBoundingRect(this.eventTarget); - var em = this.checkEvent(e); + let em; + if (!this.isMoveRight) { + em = this.checkEvent(e); + } else { + em = { + clientX:e.offsetX, + clientY:e.offsetY, + eventTarget:this.eventTarget, + deviceCode:'check_box', + deviceType:'CheckBox' + }; + } this.trigger(this.events.Selected, em); + } } @@ -157,8 +171,13 @@ class MouseController extends Eventful { } contextmenu(e) { - var em = this.checkEvent(e); - this.trigger(this.events.Contextmenu, em); + // 判断是否正在右键拖选 若不是则弹出右键菜单 + if (!this.isMoveRight) { + var em = this.checkEvent(e); + this.trigger(this.events.Contextmenu, em); + } else { + this.isMoveRight = false; + } } moveEvent(e) { diff --git a/src/views/newMap/newMapdraft/mapoperate/config/list.vue b/src/views/newMap/newMapdraft/mapoperate/config/list.vue index e35051b57..f49ad6a5c 100644 --- a/src/views/newMap/newMapdraft/mapoperate/config/list.vue +++ b/src/views/newMap/newMapdraft/mapoperate/config/list.vue @@ -304,10 +304,16 @@ :type="item.buttonShowType ? 'danger' : 'primary'" @click="item.hover(item.buttonType)" >激活选择 + 清空
-
-
{{ item.getName(nor) }}
-
+
+
+
{{ item.getName(nor) }}
+
+
diff --git a/src/views/newMap/newMapdraft/mapoperate/zcControl.vue b/src/views/newMap/newMapdraft/mapoperate/zcControl.vue index d21549558..0f5c7a72f 100644 --- a/src/views/newMap/newMapdraft/mapoperate/zcControl.vue +++ b/src/views/newMap/newMapdraft/mapoperate/zcControl.vue @@ -53,6 +53,7 @@ export default { editModel: { code: '', name: '', + managedSectionList:[], // visible: '', // concentrateStationList:[], position: { @@ -95,7 +96,8 @@ export default { }, computed: { ...mapGetters('map', [ - 'zcList' + 'zcList', + 'seclectDeviceList' ]), isButtonType() { return this.field == 'checkZcSection'; @@ -117,7 +119,8 @@ export default { { prop: 'position', label: this.$t('map.stateSignalsPlotCoordinates'), type: 'coordinate', width: '140px', children: [ { prop: 'position.x', firstLevel: 'position', secondLevel: 'x', label: 'x:', type: 'number', labelWidth: '20px' }, { prop: 'position.y', firstLevel: 'position', secondLevel: 'y', label: 'y:', type: 'number', labelWidth: '20px' } - ] } + ] }, + { prop:'managedSectionList', label:'管理区段列表: ', type: 'checkBoxDevice', getName:this.getName, mouseenter:this.mouseenter, mouseleave:this.mouseleave, buttonShowType:this.isButtonType, hover:this.hover, buttonType:'checkZcSection', clear:this.clear} // { prop:'concentrateStationList', label:this.$t('map.concentrateStationList'), type: 'multiSelect', optionLabel: 'name', optionValue: 'code', options: this.concertrateStation, deviceChange: this.changeConcentrateStation } ] } @@ -136,9 +139,7 @@ export default { { prop: 'position', label: this.$t('map.stateSignalsPlotCoordinates'), type: 'coordinate', width: '140px', children: [ { prop: 'position.x', firstLevel: 'position', secondLevel: 'x', label: 'x:', type: 'number', labelWidth: '20px' }, { prop: 'position.y', firstLevel: 'position', secondLevel: 'y', label: 'y:', type: 'number', labelWidth: '20px' } - ] }, - - { prop:'sectionList', label:'关联区段: ', type: 'checkBoxDevice', getName:this.getName, mouseenter:this.mouseenter, mouseleave:this.mouseleave, buttonShowType:this.isButtonType, hover:this.hover, buttonType:'checkZcSection'} + ] } // // { prop:'concentrateStationList', label:this.$t('map.concentrateStationList'), type: 'multiSelect', optionLabel: 'name', optionValue: 'code', options: this.concertrateStation, deviceChange: this.changeConcentrateStation } ] @@ -159,15 +160,28 @@ export default { this.deviceSelect(this.$store.getters['map/getDeviceByCode'](code)); }, deviceSelect(selected) { - // debugger; // 待调整 - this.$refs.dataform && this.$refs.dataform.resetFields(); - this.$refs.make && this.$refs.make.resetFields(); - if (selected && selected._type.toUpperCase() === 'ZcControl'.toUpperCase()) { + // this.$refs.make && this.$refs.make.resetFields(); + if (selected && selected._type.toUpperCase() === 'CheckBox'.toUpperCase()) { + this.activeName = 'first'; + this.seclectDeviceList.forEach(item => { + if (item._type == 'Section' && (item.type == '01' || item.type == '04') && !this.editModel.managedSectionList.includes(selected.code)) { + this.editModel.managedSectionList.push(item.code); + } + }); + } else if (selected && selected._type.toUpperCase() === 'Section'.toUpperCase()) { + if (selected._type == 'Section' && (selected.type == '01' || selected.type == '04') && !this.editModel.managedSectionList.includes(selected.code)) { + this.editModel.managedSectionList.push(selected.code); + } + } else if (selected && selected._type.toUpperCase() === 'ZcControl'.toUpperCase()) { + this.$refs.dataform && this.$refs.dataform.resetFields(); this.activeName = 'first'; this.editModel = deepAssign(this.editModel, selected); } }, + clear() { + this.editModel.managedSectionList = []; + }, create() { const uid = getUID('ZcControl', this.zcList); const models = []; @@ -263,3 +277,31 @@ export default { color: #3E44BE; } + From da1b23404d814e46985c2c5e8fbce5d86d9b48d8 Mon Sep 17 00:00:00 2001 From: yuan Date: Tue, 15 Jun 2021 17:24:26 +0800 Subject: [PATCH 05/30] =?UTF-8?q?=E8=AE=A1=E8=BD=B4=E5=A4=8D=E4=BD=8D?= =?UTF-8?q?=E6=9A=82=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/simulation.js | 15 +++ src/assets/ibp_images/blue_button_pressed.png | Bin 0 -> 5204 bytes .../ibp_images/blue_button_pressed_on.png | Bin 0 -> 4818 bytes src/assets/ibp_images/gray_button_pressed.png | Bin 0 -> 5339 bytes .../ibp_images/gray_button_pressed_on.png | Bin 0 -> 4833 bytes .../ibp_images/green_button_pressed.png | Bin 0 -> 5097 bytes .../ibp_images/green_button_pressed_on.png | Bin 0 -> 4873 bytes src/assets/ibp_images/red_button_pressed.png | Bin 0 -> 5156 bytes .../ibp_images/red_button_pressed_on.png | Bin 0 -> 4837 bytes .../ibp_images/yellow_button_pressed.png | Bin 0 -> 5395 bytes .../ibp_images/yellow_button_pressed_on.png | Bin 0 -> 5033 bytes src/ibp/mouseController.js | 8 +- src/ibp/shape/button.js | 101 +++++++++--------- src/views/ibp/ibpsystem/index.vue | 51 ++++----- 14 files changed, 95 insertions(+), 80 deletions(-) create mode 100644 src/assets/ibp_images/blue_button_pressed.png create mode 100644 src/assets/ibp_images/blue_button_pressed_on.png create mode 100644 src/assets/ibp_images/gray_button_pressed.png create mode 100644 src/assets/ibp_images/gray_button_pressed_on.png create mode 100644 src/assets/ibp_images/green_button_pressed.png create mode 100644 src/assets/ibp_images/green_button_pressed_on.png create mode 100644 src/assets/ibp_images/red_button_pressed.png create mode 100644 src/assets/ibp_images/red_button_pressed_on.png create mode 100644 src/assets/ibp_images/yellow_button_pressed.png create mode 100644 src/assets/ibp_images/yellow_button_pressed_on.png diff --git a/src/api/simulation.js b/src/api/simulation.js index 6c629e360..93a8061a5 100644 --- a/src/api/simulation.js +++ b/src/api/simulation.js @@ -228,6 +228,21 @@ export function handlerIbpEvent(group, button, stationCode, buttonCode) { }); } +/** 处理ibp盘事件(按下) */ + +export function handleIbpPress(group, stationCode, buttonCode) { + return request({ + url: `/simulation/${group}/ibp/press/${stationCode}/${buttonCode}` + }) +} +/** 处理ibp盘事件(松开) */ + +export function handleIbpRelease(group, stationCode, buttonCode) { + return request({ + url: `/simulation/${group}/ibp/release/${stationCode}/${buttonCode}` + }) +} + /** 预览脚本仿真(新版)*/ export function scriptDraftRecordNotifyNew(scriptId) { return request({ diff --git a/src/assets/ibp_images/blue_button_pressed.png b/src/assets/ibp_images/blue_button_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..d3d347d66f548d1933d9a4e739366b429e96fc7f GIT binary patch literal 5204 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 NIj(YH71;*F{14v#ZCC&R literal 0 HcmV?d00001 diff --git a/src/assets/ibp_images/blue_button_pressed_on.png b/src/assets/ibp_images/blue_button_pressed_on.png new file mode 100644 index 0000000000000000000000000000000000000000..abc7c26e77c630851c4b2f44bfbe4c859d911b9d GIT binary patch literal 4818 zcmcIoc|26>{~tn#2scu<#)M0mnKSzmWg84}Z5NSrX3m*0m>JECEGd$;5?Kl*EhI#4 z(qgTokmXWo(Y>w~rKCk0h2K%?+xPpu_x}3h_nX)2oadbLe4h8`^Lc-k=Xp(vtBbw5 zs=g`;g;Hlb*t#R59dfxU%Om&YOT!b(bkw&4+S4D(^++bLS=D>V`$O7}cwh@CCKo%HpiZkFGY6Axf9HJz! zN0f^vH!7IRfH138qRk_i2!Iflf#?Wfh)Bweu)uu6Wg^ehpYa&TGyz-THCz;XeAh^8@c1S*+Kr<Xz0fN7UL2}0bja-m_8kWb1XE*=hn zg|J8_MPvzIWkUnSGO;vJ{5Q~Fr~gd>Lanp&R~>(8i%|Ggg;d7ch`2FB$X`lJJtIS5 zygMuvhe^0FYa?Rj(rIr(nKlv_l!+ytVsXfqK)HS~8BHYO0JO<;YydiejuYYt0D(9Y zD>|M)XQFv@B9BZW(WnGdG}^>lAcDlEBEQ4*6#LZtsq6iF@!l!5=NFvMl@#1bKhP$Lk6d>9`p;$zTX31`}f zL&Oq9F=8F*+wW`}8&`>#CkR0%r0(|CXg14+N?=f_SR#(_$y{e=CR-$xfg&!U4f@lDNM*y)@28V;CLu3#O(vZ}qlK~EoLEr*Z_%nHkH9t!PNa=zh-=a=i1tExB z0ukWBL=qMt@#t6ziA+MkXhbZ71H%Lo1+kb$o-UAoY5sy@h4?2$azi>(fYu;?<|#z5 z@~@31Q6M^*!l7e97;zlpkZD*34D+xYE=(ptbP5TeaLw`4wTD1_F6+O=q5v?B41zG0 z03dWShzJ&)N`bLlB9+4>agc$_`Ccp}EMyW5!J=^h$N6LX)#fdA)sed-`g2f=jwB4?QPfH!>Q9Q~Qxu$3KYM8XknZEz zPjzqUCW#xEb(`*n#d{lD#pLcUg*IMXVvJ?1p2;ZgOqVgQSa+b8F4!XSPCo{*`tGIW%r>WmZP+iFNf%b91x) z=+Tbw{>_g@7M|-*L^)VKORAr!ALCg4b~l^tE`M9e4P~UsT=jBX^`LPVqg6pJKK9xw zd3Hv1uQxtmaZkg<+dkdKNW$VYgR?7A-*yJ=vOCi7JZ5~Tcu1ytaM7YgbXsAPWzZ``S|k6^Tw$yVsRRjl1vl-aonryM8kOL za-$+o>Pkl#T99_xZ$)2bc~5G1QnA-ZXyw8^+gL60DB8wbW3xGHSS` zd@ur(V z826nzYGw(lj6)Z77_M3v`33oR>phPe7+EW68avo#tk!4om)N`>Z4PSisWJbFfZn@9 zTPph5STw>TXOi<>_W8bj`_{$9#nH4Q(1~lV)+A#Jp}Ztzj9YN|=Az+&BR?EWR#kL2 zRn)6r)?w<(PQDT3>$}XVJDa$}VR!tYWgc!@=W5E^9+E$<;-unOdD4BB8K`8scgI6> zuaeNwhmvMq&;v=e`K?uSIz8PpSaCfsS7p7kie)(kWB6us^~{ zvbzsXb_{m_<@d|Wd%~^_x$%;L4d;A2AB}=~n0wccyBz6{^bWq{!mApKu5ifMoH{#` zFaaLK@vgR>t?HR4->ivMZ<~KoK}jytdUdknQg@{s$k7rg-l|G)9;BpWvR@bu$*;FE zRA|xM|8BHqySr-a?O{kSad3Ed_acFI4|T!gojqg9xRP@?Q_>MPrRPwgO{GB&JL6TU zY$4O9uvl|Jx|)LNu{p~I4yz52XJtBS=N=ZIEnK{P?2ZtFc$JP997j7*J=$U&>sG!T97bD7q9S&Z`m}X+o0dYqwiwF! zLS3?SO#_2@&GJvOvVO@m$Xuh>($a!ic$cW0oakXePFQ<@C0Bct<8zI4!RQR2eZEjJ ze^7C&p)ZQ>Xra~Wl3&a=wD&9qTGd6a#HBwNv^*}nV1)(GD@v9;sVTI0aLSa;?2S?AVtT}xmnxIDM*r9+H0+s>`BCGn8BC|!|LCNaa zEH}{MoKu?vrbyrBrOf)aHICz;UXpx#9;bJB@72;k7O9si!xm9pdP1lxm`we|3+;K@ zc1P25-IAEkAC)z&42G_|8V}|coHe%Fej@so>vTGt-0rA< z&9ddZL)Ec1y(~(Wmi30Z$D}GjdC~dHeC^kr_VFhNmX>6_dOhTkuc*HL@!f7PdwEe{v4`m3!IS+m~D4g8HiW_?rG&TkGd2SJF;mX%(OI)S;y*8SHpiSK*S2^J@#Mn8pM2{CKP3DDr>gH%elk)qqS+%W%}BlkCzKfQnC#@r&= z{g;m)JScqrA@xT}J;f%|^HsFrS>O!-AT3NclL1_8uD>Ud+fb7I*w$I2Q*JarJ3CH7j4=(!uoN-f{Yp) zTEk}Fc|5eF?X7gtWN_VhT1);@@wuM8)GqT0tjW*V7uuSBd*5HK7_Q4P|1fLwrku%r zC)Z)_HOt?t&x$>r)H~!yTkEG311M_>J&gmzF>kJPZxcUxWh9N%j%iRaLZv!9`hDrH z#rx7K`c6da8KRzUthH~%_Td8+^+genQcdMvSFCOr**Mi*>;JfoKDHH|KIpgTnQvdf z-CK9WHY%MXR=FSV*moUFTe3`fdtB_m^(1lpLXV&man&kXOA0b7w`6a;nj$(>bS+om zVexN00XtUs?wgExvB15iXkf!=)SyT2rZf9qlCJmYI=+(&F!_CU^dZ@j>1lSUkySo? z`)yH6u~YRUUR`%#!J$13t~DC(t%p|rNh*|mNF5j68=8Ib+0hSb)vptJHlP0jaTkrx z7n*iXM329VxOpZ#zlndW2%j}FOT=P_kFCg27rB&FC;2?>thsvjP&8(JgU9Iuxx!In z^>s^>3q=dpiZw4~w*@^M2z*yiV?VVXR`Yx{lGne<)a@K664)|cTh5;vhLiYMR)I3J z-$gQO?ayrYH_vqa0;UA7hTp-jElbk+7r)r0nV#BSll1!8zRH?i8HLHdrw{CX*4S}u z;$^^V!JDdimlDgtNr}&oed>dac^Q_zFFU=a{HNY^*&IJO&h{1J<|V8wDYIELRh(uV z9nez0-~H*TMX6^Fm~XlG{@uWv##2?RmRQ|gc<4=U*!|YdYyGyVbBaIwaUnbF?!?Rc zSGr;*>gY>-r#kVsbeF~Qn(Izg+z(D%=Tee?s;{pPX%&ZW|8A;RIQ*fZ_l^tBfBRFD z9~Un^UGZu~&zahh%h;ls^3iz_~ gUfp(TF)*po)}+v%#?sm{{jU?7DL0hHgtqQRu1hD0V;eTEQ_sz=OfolrP;P=QP%Ag25zpm^Su&d$Zpt zG&T!KrL)~Yq>#mdq+u{^Jt2om^8)#BH_)Bwqk|YLEJeVXbRC2p!3=H2F#tW7#{OJz zpTD^c&EJbgrX%!p;o3q91i%9MRJf4k?Zcx8br4^0DbRRn8ijy=5#f93Aa*S&gxi~0 z!VTD55Kcs*0U8>Og=>+K7$P1|B5A_0Xe=6q)02WI@6Db57{M&_qv~lSSinZbH zZ@Qo_9fSv;&!M1D0)YT2z#-XOcNB(9CZo_;6c!6W5&+N7hffs(KD@2p5ez{djmzZl znQR~U5+c=&?aS9eK$d=WfyMa&>%;p-6GRwFNadg~Nc56RUj*s2A95UDuJ;$^bQ%iu z23epFp9jfee#mk>*nBq6gZ&rKKbHTb0HW5+?1zq@+QMS}P{HFH9fsWaM#xX4c{Y9= z5M>SW*uGpEXml7dbL)~f9Et%Kr1IHZ8#defd!Q`8n+(Tdk!ZO3Qf$y93<=3XV$c}u zw^)%-7!n1}AYmDJ98Qaf*$#)R+cACUYyofkAD}@)Dj(EAKo}SRO$0Cm8w`em##0D* z4K#^@Mt>DGW7C-ozn_U>a1;#oPohwA(W!ju|0+zUQ5bA4iwaT0WKrEg6vxLM0slcb z#enV2=0b`g>u`UZH!(1<xRyzK^Xrvk4z(@$s~{p;0Pccz>)B702Pm809YcHMAO0$$Y>H|_LoedSa6w8=~BJ_ zh`MAI9YVyA$W$s0M+XQX0SjQscsf8LlIVaN24sLFGy^hBYpFo~tNA<1F33L~lpDNn z1*lJT|2Fbw>i*nl9Dz>46WmAu6{HaWx*J{#AcG(SfLzDp=p+ITO`vI`mTC`z_*&L~ ziA6wzT6iiI1Tbh479e9GEE16b0yHeqjRuj4CDPpfDHe%9z~i(aEG;)Q^dRCvfUJeX z0t}iP4I%>z;%Vf6iUrbXG&Iy|06LmM1u%37i%Q4P0E`w6M*~5SL?<%-F&2ZWrA4HY zpdi!G01=Cam?MF10D!bZuS4`X}oiUB>q%`8O0Ih^LS;j6Q`8u zK872Dvqc$Pd-W7Y?L}t3LtR@-|Le`l*J7G^#zHJLfcOd5Nihv_V~oK~ zIvSS!I<6YHWE3f4KsGa^_Xul8jsXHDU#k;A`==&_+Q#Bbp(=Dd4!g5Vg ze2e*V<$OnE>Dm&&Ydtd#9qFBzxEsq|T$nEzGmvDct%xdjSY`3yNY)X~qJVT6 zh)Z3VoA|f7%cqH(CIcyAqBa$}kE*Yy8Eo3II(SO^rVFBawI|2&^(nt(e&=eS%sVAt zsv_#;xobNvNxvt?R#Z&fO`|@}iJcx8^Uaa&xqI=KYx1=xqLJsU>%LsZfzurVOl8Bf zJm1{mf)_9L#b7Ga+P4<;znya_A`rrbwOD^Y4rFEa>k% z!x`6%jn7oP9`CJkdS$Xw*?R~WRRdr7jyijd%yxQ7hz6e@NQ>0N=6>$GRCQ|M!In`c z;imYf_8C*bS}Z2A%~R)q>u&I^|&aaDR%nrq{aA=Q)zP;u@KXyxIn*k*I((N)Ih{D92+R($XAN6g(v(nCR;c zXQUsr%Iizk_%_XOONn)>aFsZH)}G8r*Q~P9r}(lJDXgu{cG=#=V@E1 z^sBV^BYU zG1^B?_Y(r#_M>JNDC)t#-CfokYi+$I!}MP(cd_mqNTWi1&<^Rb)sYi6irglyIOTu9 zw^r38t?}(^sDfWl_?|DA0D~@76uj-449t0M;c!bD(-%`T^y^7`v3)y7(iI)VH8zLK zoE!*}zq>QX+s0~^ytOs+&a(-RqYtf3o_6*$swD(mT=&K) zH#J30P^RiKt+pbluKQ=`km~=I*qz)>9@mY>y3-$CC;Ku-*!lx z+>yMI;p88zE(~k*M1;O>G3*UetvH@Uzc1yZw_hbW)SD1tt($zWdX*@6Rb4)S?ICtb z?f(7}nGd6ih5Ir-G+HV8y&oJLOpeqoNR6+|h1sc!!pp)>7%bBtJ!zuIyJX(-ITF^_ z_t~4HsURt)9E8+TFcZxQjO09Qno|+E?kkg>d0t$mxjMJe^FyPZi?7p0ea>_aytVeR z^^+IS;iMCA*q5_!Mf6Fy$D>opAfmEWX01d}8^*HUL#%4p7(uiZX;*M++Fw(!D+2gE zG}E~xbs*g~ElZ_XE+qr6m{^#3P*YB;Vd3_QwjSS?!rlj;^jr3D_Z^t?&q~|C>A(~v zmAlB7S?`_2@v!=mu!78ho=;6#UVG>IrM1kqR?i#RwrGjRsg%p>e(Db1W|83S)Ox)= zN1bId*KZo_-PRH?mN<9fmT?fn%(M0W{IJVnA*=0DME>sAx3zOv?puz2iqxvvQp}60 z+EXR1q^+GV7%NqpA6T_}^vQdf@sw3XlDis@4#&VoF>Z4DZTQl~N6Q!Ak8hiB*w)^n zRd`RLdK2S$r-bqS?3wE7;z+%j-iDr@nVCtugu}z?hh9j~_CmN-Ri(`MH+AVH`OMyi zhJeyy!Puuk`yK1X`mU+V!0XHT6AQ)5w`gD9vbp43%2}Bj#-ty9WeN4Z*1+8QI7!)S zr|R#G^z<||G>o@h`c*mn@B`TZfKN%2c|X0273oIC-35PTe^k&G^Vwoid?C-jIi)y}+4)Q)w_>a#`jgsZX2DC{bryDh=H}LMXDd@yhptlr zIEhp6U7IXM_pUt@H-1M@dA6_DCPM9F4>LUXXfwrz%^cu+)c7-Lk2*YxG#t>+^Ioan z+Pm4k@j7+{7^Kd32P#CaC)N3Org#_2skJ%}iJ0H0?3e6}_RmAGlcS~D2P}t^B5-2Q z%Ngt!affe?Wz-a{&TEmqBLlK4SuYeHN_P$aX?bmvxj5X)n1#O%sxOk21({j7F;bDYp@<4Cr1 z>&*=&b}@5|-((Hj4~5J&3S%zT{BjL)r)~Ylqz8FjC4IEQGIphSY}tG6jXoLcq(vkOrITWN-kDSxV-y<)$$L|B3%vdR}$^*-p$B+uI&dB94x4k5^GtB2U+@6Mw-V?ejM)qFs zGONA!?5Zt;u{&t(wv}07IK$=<J1=^7 z19XQ$PvM_-P4ISx9Sa6YK zP%UOjhs)N6TS}g-3k)`m`F!=*)SzC%{HI6txA6zgwPVDSKag+4IyXB{Vtu&P9klSp z*^yU^3+%9F3}L3y5HmO=O6dZ^Sqgvch3CIIlt59Nur1QDs{DG zYA6&+-PMKZiJYC0<)Na8{F>cN^F~gp0vA6K3N^1*z7*2U=INkND%M;tU$L*-4-AMO zVF9xFEZ8DCLV!r4P*%3l0uTy=#b_2B!sS_GhN`Y%&|J1P#)s^Na}zkipV!qIe&kz3;D34DjqX`5H9D1cZHaHrdW)We5$KeSxv7%w| zGzOYOBXCGWB9($SL8DjtaCvOLRAll6G|U9Wur&t3zyml6fG2z5@eCY^K_;2uXbc?g zqo^C7&E>>=O%zXHka2$zMUsmRioyR^m<=&Fd|?ELP{WM?Ltw0c7lJ{5CY<5O59bRJ z#fWvpFZW#?9X*764mTWmAo5)0fOd6qq~Pfk3P7;HPn+xJ#&G3{#2^oXU76MxghmT4 zm(74^AejK-@BmCCQ2_#tL<3lK91%b^*#s5`Pb3mPx{JKes7T$qms=0Xl#oGgskUo39&9 zB(o7iSu_BIAu@odr2=#q<^U`RCJ_;%i8wN3g_YMH0`ak|{}zjkgQ+CMQ~-~o5db;? z!J<*fFaQxKEQrWLP7v!`u@JgQL@I(sW#Nz?3JC`2R3ZW3KrDztV-sK!ME_PSm<>TV zq}2dy90vsOYy=Br;~@Y~B@!VRhG}dH=bN!OAeBl1X#kN7;Q$H&Ng0p^vj8#&$rlpB zAqD=DuW9B!h5`G}@tW=+3>U6EelasluY)5$bB>;F8VnGUH$!U-B<}(+8#A-b{YrL! zQy$H{FAaqe(0{1;kJ?3ij#vr`VfzrI68?+b2m5z!iomFUcJkXw_@nh-bMi0U>VNCx z4AoF5$P0myX^q9m-JZ^nkAcSi-yE2J_QeeRB#sPL`Q_({j@*3yCV+Vev=Ev2m)umf zQ7E<5u1tHc=*)r42BEG~>F(d}751J;fde`%3A#FOuVGYP`^CHnt|M#QSS*|s_+7tl zKW)yE&2~$*74PV~POkIL81gG49fAXFJ4@lQ?xbW=VNcKfJfbD>tT%8a@@0K*Z(%~R z63UJ_??a`oq3gw=361!KcB5b0Zbh2sRFB94l-1)}FTJYbj6UOEt9$qRwyB%*Z3F%M zBHwil9N&%_+_-6Mr#vbNh5MrT#3?bi&P>yhK=SS0Csc=P;F=Rml$ zBuT?_waHG6Gllx6JzG5QBAT|2z0z8cSlIe*5;10cd^~5(;d}d0ZN@m`7rs?v#kIj+ zhs%#S=C#XsTHi@vT_J8^(%n?a)zjsMXN{B=s;ULA-$K2zq@^2=)@q?GIo`N>1bs+P zy`{l%4V1NxsqF|@iZ}SxSOsN-G_o+;A1E9t99-@e`9#uo(Dp<0)Q3rp_^MkyNo{Ry z{(Xpc+5rP4ZzI*@MWv=Xo6EYN`%Pg3k4p3!z8@I$I;1zW{#e-tW%PDu?Ky$j+U6BE zm??Kw{RHh{`dqlNI?1wEy?Hb_z;3UML-lg%@K~6{Xnak1ROen{>3h3w(}rU~df{`y zij1P{rQSRC()_~Oev==IQjoY=*V7{FjRtXZb#!zvn$Tw5xcF0j71HtQn&x}QINi`q zM)Xn%^L70my(G~{f9TTMy>W$_w>Oz;I;1`~JRR+pn-f`TXSe1^f%2}IQe#cL* z+ZlzOt<)^%J7?~~KgQfUSU+H>sl0Ek_f8C2YhT^u#JfEpTH66lpT)LXnsyU+xhf;+ zWjDtz`8uy^+tdb0x$@N2pt`Avfr_YV^#&fP2pY{TYT$)2_Il-KlVX!jkS`UsT+}Q` z4VC2bylZ05`FA!sJTq;5*g2Pwut3$*sQaE`h_@A~uKpBnYN&WyaoIq1#^R{Kba$2N z*3tX!_hVLzm5JcyOjT4WNA|95bo6{cj!LHUq2K%#iuC-I8tu-;h`z*#ciI}Gz1=$@}?lqD@CTn?Sb z)g9+`??eZ4_IM6At%((cE|cU{WmNfyd{IwavQZf&O!$K5Q3XsWd4Epb=5UXA!%#AR ziG-A(v#GGaS=(r_T3w3pVmg|mZ_Qaj+u?IB^@b7M$lr0Tq?l|*6sjzm@3261P(W*F zxTk7UOz9=Ade^%j<+1M2R_B$gU3Nsj{*ao0&_8Rjn_{34<5!3$pA(hOj$EN~d=JKa zQ5Np3idmSRIkQNu#G@^qG7OviHyC|!-ViowLzOXB+B@uw~m zBgut}R{6H{&b5CV7-|DKygCl+_qqHpBld)-8JJtXri$Xu&a(M{QxWmoIr)LmzG zdbP*wpGnJ?w0PkzQTLouKcGg??@MlqLWvSY0d#_ z##5sEvH{xqOHof8KYMh?s zszAv%@mDHJ^~NY|RAjB(c_DrGY@II6hq+#*lm!I4qP}D4?Te3k>CVaw@X~Zj+Xysm z>6Y%sH=j)zyxPw{A={`am8RyTH8eDMs;LyJoaz;4+?vZ@)hE4vO`qL3d3ya&d2Whj zX-cq@sSSI#xrg78+1fwXE%UC_=sICWE6w0G*ge|g-^vT_a5`GEw+3@1cJ1EP&cw~u4W}4gsjM6ytQxYw*7PVV?P~P_P%+YPla;i#BvZsVUsPI9oF_Jeg~2 zIBR0Pf-tMHzkxM6?{-f@^MjX%8!Lt5R~zZy@2$BUo|HRu6KB3;-qLEiYv?x4pX0s3#oLW<2v)wHxA;O@lUeyNTg?EqboYw~?=|}`9Gk;4(0iWTz*ZCV_hx#q2tFP7p6=mvw7dXV>$0qwPK>nvrA!NVZU#A zx8d2PRY6(@YicJuBreF7bm%#dllfv+)JSg&_UikNm&oKm2JZZf$P4Nx7o8k`52lRF+sJaQ3;%hfi1+OIy`BuD$S3WgGc9_0|H@2B|LT}7DaHnEza_Xa<| zE5cWI&D^DV)(4H)7+Sp_*8It8&kmzIq461Fhx!t7Dya)6Jd)(W2HfUO3!-!gb4nr-ro{uG~YM-xlF%Fy>?Ujhzb$1zJior*EXN{MgCT2XD zyfyMOV^UGg`8>{yoSKpx2Qh~=8pDicMh+!O3JFP}15r*z(ikEg zWZM#{9E(U%DwTvtsf2v&vjq-b>H{%tlz{sY_e8dpt%47 zfhgMAP#wYR2JmoDkOj}{YEqoR%ltqacM$}l^!w}~b8MZ`atK7hnCs*wcB5^iumk}J z23x=c5Fr79pfvsb106~4c~o% zcgC>oVsRh^i3|=7Mg(IK0--MwO(v6(C=3#VfrA!sQ7B)`2!ZoOD}NwR0TD~c4HR<) zeCRA9gDD6S8^b`R-$Doo{0Yk!eU}Lo3>m@*M4}O>*^s^(vROav0)vG9U!AjANWdQm z0Qh1NXp8=78@OE{7KpYB{sQ{v>wj|qN=u{t^zo-$0s?-z5Q(jJf?<3Yp&D5(ByZcrpN2@!xmqtKY| zxgsIaBnp&6!f}5frg_9a5UZtji#V*6g+Mn zibO%7zM0YlY%VACzfG|eEQ*51|C=dTTx^Dz@xL0gSrm>y7{CCf;RY~#0c0TG7Y6+) zIK@)nFA#!`L3Y?*pW9kmItT?Eu0QxfX!O1ub0nR4lNN@%li-F^aEHn0KiA~XNn`PB5)RJ<0|!`mIGc$h!pQ)@fiqbE4$CHi%<(KE&!obNG5Q{{>18^3Gz+_>W;DyEfr&uIB9)~4@SVSfYJP~jJoJ<5Y;jox2 z0*Q?Qa4hma#RAwY7N|WL&PH(WT3 zZ~|twWJmxLj^{8rXdI{^0r*v~ugZN(1M=_l^>qcI*l=g_7y4c4t-y|-nnS-X8WaX= zb}=-Dv1V5RfDQZpnENNy{g3MC`~2YT00{awJ^#(SNWc*XGlYP-FW3qHhpP|rufh~D zcK&^k|Ez_-vH$NN|6{fK{|)lH)U53czApgo)=1cF*k3E;TcVNwSp#3+{jvxCFb6l* z+2PL}9lZJZO#tvgXd$@c6IoY-AdrQQwp4SckWD{&S%$xHh;g_{4 z@4sr=6HK~w!*YfmcK?vKfAmUrgX4sf9u-mXF#SvZXwCZLkomF;b)@^x#mg{FIeC<; z=PzH_6*f`3)Z1wHL=u|{fj|{x%^g(rqUFx?f5?0?RmU_rx^aQ+hPgI!GW9kxiw)$c zkd{n2S(pKLajhX4Z0{eFvj+kJqu=0;q zdVS;L@Cwg8pPr|hPQ8!HJax)O7z`^7&RACPkON^17ZEpxQfR>4oY$F-mQ{KtbVI*$h*n7T`RvU_HF{2jvJNFzD( z^l8N!GokPqVTx`ejb@q{PQ6)STJIua=-4OhbF8~4l{pdx8tF!O8m$ zjJ+Ry)#7_Eqm704iT7!}%Z zHt+V+g4DHUfSXf2&u#F$weo@WY365cE~_=NKq$*S)P&2+&OP8qAg_&F78QHhzar?m z&gBfFdTDOTfvhg}k@VK%_fj`!7`YdBY^9_>O7Y^J^evLo@3`IhG+A}r50&N@5Z-}I zP;NT7bY`skbzkBh>lO3nO4wBKwS)O5WLZmBv+nl>+GD6u{XS}ymf?L0JRP0i_pRkq zRg#m^^%RXGdt41sHkHwS!DO>*d<$6ecGMl zqHRS@4QY23>@FdKWYg*#8!MAeMJsx(SbLhT5gFQ_+n>AOLe|<%#qwgVIesNX|N}mCWV|&yE$|9$X*$CSEAf>WLjSh|xb_b@%d}xl87C>roe^FFJSO%KF&#YHA4_ zMW-B;WOZh_pGK0i-EE~Ye!Wf1UNwg~7IKFlCqGiXdY~DXmLzAB1X;F;XR>gA+%B^M z-L#sswZhRCCIZ*>hN2xrYxjfG^Z;(hX= z{fl*z_C9J|oxEG})Yae`tWraFl>$t6=~eY5@Y^XbT~77b40-5Z-XK+H+RJ!^dS%8tFNHSY>SyyNriog8xIklHg{p;6#iem&y7kd&ILtBnysIx2 z*1D`I?W#;EqOs^VS*72yOXPDiR2HkEw97;1-_(2ElCKp<^S*zgb^rA^zan?>`Xj#P z54Jo`-qmra%_qHmFO~f8fnK87nFG!uSXimP`~G|P8$5E%bE0GC^6+tm4GYX<7hS7b z11!$Um$t2qElz$J=BY9~GBVQE;9MWgJ_PM;s`uVN^3;ozJTLvrJ z7+RKFH+a&Hcj(hHleOxGA4z;`P>a>_D%<3&6s@!ij|ELPcxO~;rMA1Z-ezYEUQWDz ze0AXwTvB9~sI2qYEo${j1?BdaOCE#{S9IJeX${QPb#1)*`1$qKK?z&pEy`VvWuFIi ztMywJAG5u)-2$d(E?7{Tvt#~i$J7K>#YIVTW%mbnOWMv;xfMm>@;sNVXH-@d!#y_S z!tz4M(EKxipiqMr?SL+kKTYMWR4aMyQL2z)2ICHPYKlx;ts9i&<4b=>tXf-WXtc4& zB{|069{w=?Xr`UPz`(%P_Kl;26gz`8%9~8Sbk`ZIqD2j_YZItomeF(_({8!TwL&aT zy;#lh&(4a3#CJBL&K;6lBWFNeSqiq|C7Tb({oWt)FsGMUVW7#^uPs)tI(f;PqSt%Tif&|NlwaU+STO06 z=UEx{=&nr7AEJ)7Ayat;RJzjRMCCo7Cy3MbiaWysGPiN0l2n`31C5L_>yjkOV4`~B zW*uXr5Y)wO{;34P&483L6U?Px(-XQCAD`*T?&C;4_4OS+TDwEI;!;bD@Stb5%(b&3 zN%$382aF+IOZ%>};YfGHm0i7FQ{`P=GuM6kTO+cs98T>TSD91|amF`|rRo|YX-DtWw2jLk(_88x{F6;V* zZtvn$6Kdqa3zAo-i=NonE@icd+X5!uBHstvzU%3u=pfoAmR5a?x}e$At?n^&sdMtq zor7+hE23((4ZPm)x*`z6eiLu^dY^eVEo<-=p`4n#cZE-W?YrFI_su3p2f}^I4SI7r zo@MY0HZQ+E%E9t$y4UV7had^O>Hdd^lAig7iS|t|{Y^5p?sp)4A;9bCz6*hy7yi#YKx$W8!(mAWvBuqZCRyLXGZ;AMP zHG)3zrr7U=7s|K=)4IEC&+xgbkS4F!SzY?Em--$}tT|(s<_Q;b{QzLm1Q>k^C#wWBHNJE`%QCE$7Bkwj#KGkb@RRWfE zv=oc#TeX=7jrPn8z1sM2C?nqCuf z5_fhPH)m=J$7^cN*3?9eO->ycxtOP>a`526%!n_a>g#QJ0fO>resnrKwV|b@WqDIY zM)T;#0ax$vpr{B_C@g!hvON5A`^`f!r$(mF$yHs?9K-NchClx%yxQk1B^bK~D+h0R zvSj|lHz5&UralQP8p(4eG*qr~20xeP^wzD2FfulV=lExYTq!mf)kKtkywlSzkx243 zXKwoP=$UV|U)Svh<$O9c2k_nCZHDv|M?NrdUU87&5#Y3iL@H(rLGb=t- X8wRc-6w+t^jI*`cM7?O?v+sWZ20%{D literal 0 HcmV?d00001 diff --git a/src/assets/ibp_images/green_button_pressed_on.png b/src/assets/ibp_images/green_button_pressed_on.png new file mode 100644 index 0000000000000000000000000000000000000000..f36b14f9c44d5b400881bc631b698f330b0bb803 GIT binary patch literal 4873 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 Ry6``qqpd5Y*m}o-{{ca0VgmpG literal 0 HcmV?d00001 diff --git a/src/assets/ibp_images/red_button_pressed_on.png b/src/assets/ibp_images/red_button_pressed_on.png new file mode 100644 index 0000000000000000000000000000000000000000..6540bb3f43d40b92a0d48634f1237eee055d8ffb GIT binary patch literal 4837 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 Ar2qf` literal 0 HcmV?d00001 diff --git a/src/assets/ibp_images/yellow_button_pressed.png b/src/assets/ibp_images/yellow_button_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..316b43b0db103bbb04b314a3575263aaa44abbd1 GIT binary patch literal 5395 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 literal 0 HcmV?d00001 diff --git a/src/assets/ibp_images/yellow_button_pressed_on.png b/src/assets/ibp_images/yellow_button_pressed_on.png new file mode 100644 index 0000000000000000000000000000000000000000..72003538ee8e88e57f07e7b1cb036adeae622d1b GIT binary patch literal 5033 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 this.boundingRect.x1 && y <= this.boundingRect.y2 && y >= this.boundingRect.y1)) { - this.targetView.eventTarget.close(); + this.targetView.eventTarget.release(); } } if (!this._moveOnMouseMove || !this._dragging || !this.isAllowDragging) { diff --git a/src/ibp/shape/button.js b/src/ibp/shape/button.js index 1db7ad955..c5ea9c4d8 100644 --- a/src/ibp/shape/button.js +++ b/src/ibp/shape/button.js @@ -2,33 +2,55 @@ import Group from 'zrender/src/container/Group'; import Image from 'zrender/src/graphic/Image'; import redButtonPic from '@/assets/ibp_images/red_button.png'; import redButtonPicOn from '@/assets/ibp_images/red_button_on.png'; +import redButtonPicPressed from '@/assets/ibp_images/red_button_pressed.png'; +import redButtonPicPressedOn from '@/assets/ibp_images/red_button_pressed_on.png'; import greenButtonPicOn from '@/assets/ibp_images/green_button_on.png'; import greenButtonPic from '@/assets/ibp_images/green_button.png'; +import greenButtonPicPressedOn from '@/assets/ibp_images/green_button_pressed_on.png'; +import greenButtonPicPressed from '@/assets/ibp_images/green_button_pressed.png'; import blueButtonPic from '@/assets/ibp_images/blue_button.png'; import blueButtonPicOn from '@/assets/ibp_images/blue_button_on.png'; +import blueButtonPicPressed from '@/assets/ibp_images/blue_button_pressed.png'; +import blueButtonPicPressedOn from '@/assets/ibp_images/blue_button_pressed_on.png'; import yellowButtonPic from '@/assets/ibp_images/yellow_button.png'; import yellowButtonPicOn from '@/assets/ibp_images/yellow_button_on.png'; +import yellowButtonPicPressed from '@/assets/ibp_images/yellow_button_pressed.png'; +import yellowButtonPicPressedOn from '@/assets/ibp_images/yellow_button_pressed_on.png'; import grayButtonPic from '@/assets/ibp_images/gray_button.png'; import grayButtonPicOn from '@/assets/ibp_images/gray_button_on.png'; +import grayButtonPicPressed from '@/assets/ibp_images/gray_button_pressed.png'; +import grayButtonPicPressedOn from '@/assets/ibp_images/gray_button_pressed_on.png'; +// on/off 代表是否亮灯 +// pressed 代表是否按下 const colors = new Map([ - ['red_on', [redButtonPicOn]], - ['red_off', [redButtonPic]], - ['green_on', [greenButtonPicOn]], - ['green_off', [greenButtonPic]], - ['blue_on', [blueButtonPicOn]], - ['blue_off', [blueButtonPic]], - ['yellow_on', [yellowButtonPicOn]], - ['yellow_off', [yellowButtonPic]], - ['gray_on', [grayButtonPicOn]], - ['gray_off', [grayButtonPic]] + ['red_on', redButtonPicOn], + ['red_off', redButtonPic], + ['red_pressed_on', redButtonPicPressedOn], + ['red_pressed_off', redButtonPicPressed], + ['green_on', greenButtonPicOn], + ['green_off', greenButtonPic], + ['green_pressed_on', greenButtonPicPressedOn], + ['green_pressed_off', greenButtonPicPressed], + ['blue_on', blueButtonPicOn], + ['blue_off', blueButtonPic], + ['blue_pressed_on', blueButtonPicPressedOn], + ['blue_pressed_off', blueButtonPicPressed], + ['yellow_on', yellowButtonPicOn], + ['yellow_off', yellowButtonPic], + ['yellow_pressed_on', yellowButtonPicPressedOn], + ['yellow_pressed_off', yellowButtonPicPressed], + ['gray_on', grayButtonPicOn], + ['gray_off', grayButtonPic], + ['gray_pressed_on', grayButtonPicPressedOn], + ['gray_pressed_off', grayButtonPicPressed], ]); export default class button extends Group { constructor(device) { super(); this._type = device.model._type; this._code = device.model.code; - this.model = device.model; + this.model = {...device.model, pressed: false}; this.zlevel = device.model.zlevel; this.z = device.model.z; this.create(); @@ -64,8 +86,8 @@ export default class button extends Group { } getImagePic() { - const color = colors.get(`${this.model.color}_${this.model.status}`); - return color[0]; + const color = colors.get(`${this.model.color}${this.model.pressed ? '_pressed' : ''}_${this.model.status}`); + return color; } // 设置按钮状态 @@ -86,50 +108,27 @@ export default class button extends Group { } } - // onmousedown() { - // console.log('按下'); - // this.mouse = true; - // this.model.status = 'on'; - // } - // onmousemove(e) { - // if (this.mouse) { - // console.log(e, '元素移动'); - // } - // } - // onmouseup() { - // if (this.mouse) { - // console.log('抬起'); - // this.model.status = 'off'; - // this.mouse = false; - // } - // } - - onclick() { - // if (!this.model.draggable) { - // switch (this.model.status) { - // case 'off': { - // this.open(); - // this.model.status='on'; - // break; - // } - // case 'on': { - // this.close(); - // this.model.status='off'; - // break; - // } - // } - // } - } // 关闭 close() { - const color = colors.get(`${this.model.color}_off`); - this.imageBg.setStyle({image: color[0]}); + this.model.status = 'off'; + this.imageBg.setStyle({image: this.getImagePic()}); } // 开放 open() { - const color = colors.get(`${this.model.color}_on`); - this.imageBg.setStyle({image: color[0]}); + this.model.status = 'on'; + this.imageBg.setStyle({image: this.getImagePic()}); } + // 按下 + press() { + this.model.pressed = true; + this.imageBg.setStyle({image: this.getImagePic()}); + } + // 松开 + release() { + this.model.pressed = false; + this.imageBg.setStyle({image: this.getImagePic()}); + } + setModel(dx, dy) { this.model.point.x += dx; this.model.point.y += dy; diff --git a/src/views/ibp/ibpsystem/index.vue b/src/views/ibp/ibpsystem/index.vue index 559a82a78..c025b1368 100644 --- a/src/views/ibp/ibpsystem/index.vue +++ b/src/views/ibp/ibpsystem/index.vue @@ -19,7 +19,7 @@ import IbpPan from '@/ibp/ibpPan'; import { parser } from '@/ibp/utils/parser'; import { mapGetters } from 'vuex'; import { exitFullscreen } from '@/utils/screen'; -import { handlerIbpEvent } from '@/api/simulation'; +import { handlerIbpEvent, handleIbpPress, handleIbpRelease } from '@/api/simulation'; import { IbpOperation } from '@/scripts/ConstDic'; import { creatSubscribe, clearSubscribe, displayTopic} from '@/utils/stomp'; import { getToken } from '@/utils/auth'; @@ -28,7 +28,7 @@ import { getSimulationInfoNew, getIbpInitialState } from '@/api/simulation'; import BuzzerAudio from '@/assets/buzzer.mp3'; import { getStationList } from '@/api/runplan'; -let ctrlKeyPressed = false; +const pressedKeys = new Set(); let timer = null; export default { name: 'Ibp', @@ -237,37 +237,38 @@ export default { onKeyboardAction(e){ if (this.preResetBtn) { if (e.type === 'keydown' && e.key === 'Control') { - ctrlKeyPressed = true; - this.preResetBtn.open(); + pressedKeys.add(e.key) + this.preResetBtn.press(); } else if (e.type === 'keyup' && e.key === 'Control'){ - ctrlKeyPressed = false; - this.preResetBtn.close(); + pressedKeys.delete(e.key) + this.preResetBtn.release(); clearTimeout(timer); } } }, onMouseDown(em) { - if (em.deviceModel.mean && IbpOperation[em.deviceModel.mean] && em.deviceModel.mean === IbpOperation.AXLE_PRE_RESET.event) { - if (this.preResetBtn) { - if (ctrlKeyPressed) { - timer = setTimeout(() => { - handlerIbpEvent(this.$route.query.group, IbpOperation[em.deviceModel.mean].event, this.stationCode, em.deviceModel.sectionCode).then(() => {}).catch(error => { this.$message.error(error.message); }); - }, 3000); - } - } else { - handlerIbpEvent(this.$route.query.group, IbpOperation[em.deviceModel.mean].event, this.stationCode, em.deviceModel.sectionCode).then(() => {}).catch(error => { this.$message.error(error.message); }); - } - } else if ( em.deviceModel.mean && IbpOperation[em.deviceModel.mean]) { - handlerIbpEvent(this.$route.query.group, IbpOperation[em.deviceModel.mean].event, this.stationCode).then(() => { - }).catch(error => { this.$message.error(error.message); }); + if (em.deviceModel && em.deviceModel.mean && IbpOperation[em.deviceModel.mean]){ + // const mean = em.deviceModel.mean; + // if (mean === IbpOperation.AXLE_PRE_RESET.event) { + // if (this.preResetBtn) { + // if (pressedKeys.has('Control')) { + // timer = setTimeout(() => { + // handlerIbpEvent(this.$route.query.group, IbpOperation[mean].event, this.stationCode, em.deviceModel.sectionCode).then(() => {}).catch(error => { this.$message.error(error.message); }); + // }, em.deviceModel.delay || 3000); + // } + // } else { + // handlerIbpEvent(this.$route.query.group, IbpOperation[mean].event, this.stationCode, em.deviceModel.sectionCode).then(() => {}).catch(error => { this.$message.error(error.message); }); + // } + // } else { + // handlerIbpEvent(this.$route.query.group, IbpOperation[mean].event, this.stationCode).then(() => { + // }).catch(error => { this.$message.error(error.message); }); + // } + + handleIbpPress(this.$route.query.group, this.stationCode, em.deviceCode).catch(error => { this.$message.error(error.message); }); } }, onMouseUp(em) { - if (em.deviceModel.mean && IbpOperation[em.deviceModel.mean] && em.deviceModel.mean === IbpOperation.AXLE_PRE_RESET.event) { - if (this.preResetBtn) { - clearTimeout(timer); - } - } + // clearTimeout(timer) }, // 右键点击事件 onContextMenu(em) { @@ -325,8 +326,8 @@ export default { this.$ibp.dispose(); this.$ibp = ''; Vue.prototype.$ibp = ''; + this.preResetBtn = null; } - this.preResetBtn = null; }, handleViewLoaded() { this.loading = false; From 6965c2f9fd8cfc451bf83671361810941aa89ad2 Mon Sep 17 00:00:00 2001 From: yuan Date: Tue, 15 Jun 2021 17:43:23 +0800 Subject: [PATCH 06/30] =?UTF-8?q?bugfix-ibp=E7=9B=98=E5=A4=8D=E4=BD=8D?= =?UTF-8?q?=E6=8C=89=E9=92=AE=E7=BC=BA=E5=B0=91=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/scripts/ConstDic.js | 1 - src/utils/baseUrl.js | 4 ++-- src/views/ibp/ibpDraw/ibpOperate/ibpButton.vue | 4 ++-- src/views/ibp/ibpsystem/index.vue | 2 +- 4 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/scripts/ConstDic.js b/src/scripts/ConstDic.js index 42f3f1462..e2f5fe33b 100644 --- a/src/scripts/ConstDic.js +++ b/src/scripts/ConstDic.js @@ -129,7 +129,6 @@ export const IbpOperation = { SXKM: {operate: '10', event: 'SXKM', name: '上行屏蔽门开门'}, XXYS: {operate: '09', event: 'XXYS', name: '下行钥匙'}, SXYS: {operate: '11', event: 'SXYS', name: '上行钥匙'}, - PRERESET: {operate: '12', event: 'PRERESET', name: '计轴复位'}, AXLE_PRE_RESET: {operate: '13', event: 'AXLE_PRE_RESET', name: '计轴预复位'}, }; diff --git a/src/utils/baseUrl.js b/src/utils/baseUrl.js index 648fd20ce..11702c286 100644 --- a/src/utils/baseUrl.js +++ b/src/utils/baseUrl.js @@ -2,11 +2,11 @@ export function getBaseUrl() { let BASE_API; if (process.env.NODE_ENV === 'development') { // BASE_API = 'https://joylink.club/jlcloud'; - // BASE_API = 'https://test.joylink.club/jlcloud'; + BASE_API = 'https://test.joylink.club/jlcloud'; // BASE_API = 'http://192.168.8.107:9000'; // 袁琪 // BASE_API = 'http://192.168.3.83:9000'; // 旭强 有线 // BASE_API = 'http://192.168.8.114:9000'; // 旭强 无线 - BASE_API = 'http://192.168.3.120:9000'; // 张赛 + // BASE_API = 'http://192.168.3.120:9000'; // 张赛 // BASE_API = 'http://192.168.8.140:9000'; // 杜康 // BASE_API = 'http://b29z135112.zicp.vip'; // BASE_API = 'http://2925963m2a.zicp.vip'; // 杜康 diff --git a/src/views/ibp/ibpDraw/ibpOperate/ibpButton.vue b/src/views/ibp/ibpDraw/ibpOperate/ibpButton.vue index 0cfa8a9bc..f46304df0 100644 --- a/src/views/ibp/ibpDraw/ibpOperate/ibpButton.vue +++ b/src/views/ibp/ibpDraw/ibpOperate/ibpButton.vue @@ -34,7 +34,7 @@ /> - + {}).catch(error => { this.$message.error(error.message); }); } } else if ( em.deviceModel.mean && IbpOperation[em.deviceModel.mean]) { - handlerIbpEvent(this.$route.query.group, IbpOperation[em.deviceModel.mean].event, this.stationCode).then(() => { + handlerIbpEvent(this.$route.query.group, IbpOperation[em.deviceModel.mean].event, this.stationCode, em.deviceModel.sectionCode).then(() => { }).catch(error => { this.$message.error(error.message); }); } }, From 7ea966b539c5ea9ace514ef4ca12ef294ab5d5ad Mon Sep 17 00:00:00 2001 From: joylink_cuiweidong <364937672@qq.com> Date: Wed, 16 Jun 2021 10:30:17 +0800 Subject: [PATCH 07/30] =?UTF-8?q?=E8=A5=BF=E5=AE=89=E4=B8=89=20=E8=A1=8C?= =?UTF-8?q?=E8=B0=83=E6=B7=BB=E5=8A=A0=20=E5=BC=BA=E5=88=B6=E5=8F=96?= =?UTF-8?q?=E6=B6=88=E6=89=A3=E8=BD=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../theme/xian_01/menus/menuStationStand.vue | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/jmapNew/theme/xian_01/menus/menuStationStand.vue b/src/jmapNew/theme/xian_01/menus/menuStationStand.vue index 846d5bac9..acb8ab036 100644 --- a/src/jmapNew/theme/xian_01/menus/menuStationStand.vue +++ b/src/jmapNew/theme/xian_01/menus/menuStationStand.vue @@ -94,6 +94,11 @@ export default { handler: this.cancelDetainTrainAll, cmdType: CMD.Stand.CMD_STAND_WHOLE_LINE_CANCEL_HOLD_TRAIN }, + { + label: '强制取消扣车', + handler: this.cancelDetainTrainForce, + cmdType:CMD.Stand.CMD_STAND_FORCE_CANCEL_HOLD_TRAIN + }, { label: '设置跳停', handler: this.setJumpStop, @@ -185,8 +190,8 @@ export default { label: 'PSL', handler: this.openPsl } - ] - + ]; + } }, doShow(point) { @@ -309,8 +314,8 @@ export default { this.$store.dispatch('training/setTriggerFaultCount', this.selected); }, // 打开PSL面板 - openPsl(){ - this.$refs.psl.doShow(this.selected) + openPsl() { + this.$refs.psl.doShow(this.selected); } } }; From 6128cc8d509a9e16bdb0d80023b579c5f6eb4fea Mon Sep 17 00:00:00 2001 From: joylink_cuiweidong <364937672@qq.com> Date: Wed, 16 Jun 2021 11:15:31 +0800 Subject: [PATCH 08/30] =?UTF-8?q?=E5=9C=B0=E5=9B=BE=E5=8F=91=E5=B8=83=20?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=8F=8F=E8=BF=B0=E5=AD=97=E6=AE=B5=20?= =?UTF-8?q?=E5=8F=91=E5=B8=83=E5=9C=B0=E5=9B=BE=20=E5=8F=91=E5=B8=83?= =?UTF-8?q?=E5=8E=86=E5=8F=B2=E5=B1=95=E7=A4=BA=E6=8F=8F=E8=BF=B0=E5=AD=97?= =?UTF-8?q?=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/i18n/langs/en/publish.js | 1 + src/i18n/langs/en/rules.js | 1 + src/i18n/langs/zh/publish.js | 1 + src/i18n/langs/zh/rules.js | 1 + src/views/newMap/newDesignUser/mapmanage/publish.vue | 9 ++++++++- src/views/publish/publishMap/list.vue | 7 +++++++ 6 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/i18n/langs/en/publish.js b/src/i18n/langs/en/publish.js index ee6e0bd8b..f54954521 100644 --- a/src/i18n/langs/en/publish.js +++ b/src/i18n/langs/en/publish.js @@ -55,6 +55,7 @@ export default { publisherId: 'Publisher Id', publishTime: 'Time', publishVersion: 'Version', + publishDescription:'Description', lessonDeleteBtn: 'Delete', durationMinutes: ' minutes', copyRunPlan: 'Copy run plan', diff --git a/src/i18n/langs/en/rules.js b/src/i18n/langs/en/rules.js index fa9aceabb..c3d7b29b7 100644 --- a/src/i18n/langs/en/rules.js +++ b/src/i18n/langs/en/rules.js @@ -157,6 +157,7 @@ export default { strLengthNotExceed50: 'No more than 50 characters', pleaseEnterMapName: 'Please enter a map name', + pleaseEnterDescription:'Please enter description', pleaseChooseSkinCode: 'Please choose skin style', pleaseChooseLineCode:'Please Choose line type', pleaseSelectMapSource: 'Please select the map source', diff --git a/src/i18n/langs/zh/publish.js b/src/i18n/langs/zh/publish.js index d6e3cf067..55ad8fe50 100644 --- a/src/i18n/langs/zh/publish.js +++ b/src/i18n/langs/zh/publish.js @@ -57,6 +57,7 @@ export default { addEveryRunjihuaSuccess: '加载计划创建通用排班计划成功!', publisherId: '发布人id', publishTime: '时间', + publishDescription:'描述', publishVersion: '版本', lessonDeleteBtn: '删除', durationMinutes: '分钟', diff --git a/src/i18n/langs/zh/rules.js b/src/i18n/langs/zh/rules.js index ecfa4ce36..f36a5f876 100644 --- a/src/i18n/langs/zh/rules.js +++ b/src/i18n/langs/zh/rules.js @@ -156,6 +156,7 @@ export default { pleaseSelectCity: '请选择城市', pleaseEnterMapName: '请输入地图名称', + pleaseEnterDescription:'请输入描述', pleaseChooseSkinCode: '请选择皮肤风格', pleaseChooseLineCode:'请选择线路类型', pleaseSelectMapSource: '请选择地图来源', diff --git a/src/views/newMap/newDesignUser/mapmanage/publish.vue b/src/views/newMap/newDesignUser/mapmanage/publish.vue index 487903c83..929df325f 100644 --- a/src/views/newMap/newDesignUser/mapmanage/publish.vue +++ b/src/views/newMap/newDesignUser/mapmanage/publish.vue @@ -11,6 +11,9 @@ + + + @@ -39,7 +42,8 @@ export default { editModel: { id: '', name: '', - cityCode: '000000' + cityCode: '000000', + note:'' }, editRules: { cityCode: [ @@ -47,6 +51,9 @@ export default { ], name: [ { required: true, message: this.$t('rules.pleaseEnterMapName'), trigger: 'blur' } + ], + note:[ + { required: true, message: this.$t('rules.pleaseEnterDescription'), trigger: 'blur' } ] } }; diff --git a/src/views/publish/publishMap/list.vue b/src/views/publish/publishMap/list.vue index b710826d2..d72438a40 100644 --- a/src/views/publish/publishMap/list.vue +++ b/src/views/publish/publishMap/list.vue @@ -36,14 +36,21 @@ export default { { title: this.$t('publish.publisherId'), prop: 'userId' + // width:'300px' }, { title: this.$t('publish.publishTime'), prop: 'publishTime' + // width:'200px' }, { title: this.$t('publish.publishVersion'), prop: 'version' + // width:'200px' + }, + { + title: this.$t('publish.publishDescription'), + prop: 'note' } ] }, From 6cc2cfcbd2dd49e094874a9b46ca2c3ce859c53a Mon Sep 17 00:00:00 2001 From: yuan Date: Wed, 16 Jun 2021 11:23:55 +0800 Subject: [PATCH 09/30] =?UTF-8?q?IBP=E7=9B=98=E6=94=B9=E9=80=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/simulation.js | 6 ++-- src/ibp/ibpPan.js | 12 +++---- src/ibp/shape/button.js | 4 +++ src/ibp/shape/circularLamp.js | 13 ++++---- src/ibp/shape/elevator.js | 1 + src/ibp/shape/elevatorArrow.js | 1 + src/ibp/shape/key.js | 3 +- src/scripts/ConstDic.js | 3 +- src/utils/baseUrl.js | 4 +-- .../ibp/ibpDraw/ibpOperate/ibpButton.vue | 2 +- src/views/ibp/ibpsystem/index.vue | 31 +++++-------------- 11 files changed, 36 insertions(+), 44 deletions(-) diff --git a/src/api/simulation.js b/src/api/simulation.js index 93a8061a5..077a341da 100644 --- a/src/api/simulation.js +++ b/src/api/simulation.js @@ -232,14 +232,16 @@ export function handlerIbpEvent(group, button, stationCode, buttonCode) { export function handleIbpPress(group, stationCode, buttonCode) { return request({ - url: `/simulation/${group}/ibp/press/${stationCode}/${buttonCode}` + url: `/simulation/${group}/ibp/press/${stationCode}/${buttonCode}`, + method: 'put' }) } /** 处理ibp盘事件(松开) */ export function handleIbpRelease(group, stationCode, buttonCode) { return request({ - url: `/simulation/${group}/ibp/release/${stationCode}/${buttonCode}` + url: `/simulation/${group}/ibp/release/${stationCode}/${buttonCode}`, + method: 'put' }) } diff --git a/src/ibp/ibpPan.js b/src/ibp/ibpPan.js index c1b457c70..7addeedab 100644 --- a/src/ibp/ibpPan.js +++ b/src/ibp/ibpPan.js @@ -199,13 +199,11 @@ class IbpPan { } setDeviceStatus(val) { const deviceList = Object.values(this.ibpDevice); - deviceList.forEach(elem =>{ - for (var key in val) { - const mean = elem.model.mean || ''; - if (mean.toUpperCase() === key.toUpperCase()) { - const state = {}; - state[key] = val[key]; - elem.instance.setStatus(state); + deviceList.forEach(device =>{ + for (var key in val.statusMap) { + if (device.model.code === key) { + const state = {...val.statusMap[key]} + device.instance.setStatus instanceof Function && device.instance.setStatus(state); } } }); diff --git a/src/ibp/shape/button.js b/src/ibp/shape/button.js index c5ea9c4d8..0c5ec21d5 100644 --- a/src/ibp/shape/button.js +++ b/src/ibp/shape/button.js @@ -107,6 +107,10 @@ export default class button extends Group { } } } + + setStatus(model) { + model.on ? this.open() : this.close(); + } // 关闭 close() { diff --git a/src/ibp/shape/circularLamp.js b/src/ibp/shape/circularLamp.js index 66c528b69..e5207f0ab 100644 --- a/src/ibp/shape/circularLamp.js +++ b/src/ibp/shape/circularLamp.js @@ -2,6 +2,9 @@ import Group from 'zrender/src/container/Group'; import Circle from 'zrender/src/graphic/shape/Circle'; import {IbpShowCondition} from '@/scripts/ConstDic'; +const ACTIVE_COLOR = '#D8FCF2'; +const INACTIVE_COLOR = '#332C22'; + export default class CircularLamp extends Group { constructor(device) { super(); @@ -41,11 +44,7 @@ export default class CircularLamp extends Group { this.lamp.setStyle({fill: color}); } setStatus(state) { - if (state.xxkcLight || state.sxkcLight || state.jjtcLight || state.xxgmLight || state.xxkmLight || state.sxgmLight || state.sxkmLight ) { - this.setCircularLampColor('#D8FCF2'); - } else { - this.setCircularLampColor('#332C22'); - } + this.setCircularLampColor( state.on ? ACTIVE_COLOR : INACTIVE_COLOR ); } setModel(dx, dy) { this.model.point.x += dx; @@ -53,9 +52,9 @@ export default class CircularLamp extends Group { } setDefaultStatus(obj) { if (obj && obj.defaultStatus === 'close') { - this.setCircularLampColor('#332C22'); + this.setCircularLampColor(ACTIVE_COLOR); } else if (obj && obj.defaultStatus === 'open') { - this.setCircularLampColor('#D8FCF2'); + this.setCircularLampColor(INACTIVE_COLOR); } } } diff --git a/src/ibp/shape/elevator.js b/src/ibp/shape/elevator.js index 1a18cda83..ee8ab7c55 100644 --- a/src/ibp/shape/elevator.js +++ b/src/ibp/shape/elevator.js @@ -76,6 +76,7 @@ export default class elevator extends Group { } } setStatus(model) { + console.log('elevator--->', model); if (model.direction=='none') { this.elevatorArrowBottom.setStatus('off'); this.elevatorArrowTop.setStatus('off'); diff --git a/src/ibp/shape/elevatorArrow.js b/src/ibp/shape/elevatorArrow.js index a3e66ea1e..dd8199de4 100644 --- a/src/ibp/shape/elevatorArrow.js +++ b/src/ibp/shape/elevatorArrow.js @@ -74,6 +74,7 @@ export default class elevatorArrow extends Group { } setStatus(data) { + console.log('elevatorArrow--->', data); let imageBack; switch (data) { case 'on': { diff --git a/src/ibp/shape/key.js b/src/ibp/shape/key.js index ff40e26dc..3e4477e08 100644 --- a/src/ibp/shape/key.js +++ b/src/ibp/shape/key.js @@ -163,13 +163,14 @@ export default class key extends Group { } } setStatus(model) { - if (model.xxys || model.sxys) { + if (model.on) { this.keyImage.setStyle({image: keyPicOn}); this.model.status = 'on'; } else { this.keyImage.setStyle({image: keyPic}); this.model.status = 'off'; } + } setModel(dx, dy) { this.model.point.x += dx; diff --git a/src/scripts/ConstDic.js b/src/scripts/ConstDic.js index 42f3f1462..36f459d53 100644 --- a/src/scripts/ConstDic.js +++ b/src/scripts/ConstDic.js @@ -129,8 +129,9 @@ export const IbpOperation = { SXKM: {operate: '10', event: 'SXKM', name: '上行屏蔽门开门'}, XXYS: {operate: '09', event: 'XXYS', name: '下行钥匙'}, SXYS: {operate: '11', event: 'SXYS', name: '上行钥匙'}, - PRERESET: {operate: '12', event: 'PRERESET', name: '计轴复位'}, + AXLE_RESET: {operate: '12', event: 'AXLE_RESET', name: '计轴复位'}, AXLE_PRE_RESET: {operate: '13', event: 'AXLE_PRE_RESET', name: '计轴预复位'}, + PRERESET_Z: {operate: '14', event: 'PRERESET_Z', name: '计轴预复零'} }; /** diff --git a/src/utils/baseUrl.js b/src/utils/baseUrl.js index 11702c286..648fd20ce 100644 --- a/src/utils/baseUrl.js +++ b/src/utils/baseUrl.js @@ -2,11 +2,11 @@ export function getBaseUrl() { let BASE_API; if (process.env.NODE_ENV === 'development') { // BASE_API = 'https://joylink.club/jlcloud'; - BASE_API = 'https://test.joylink.club/jlcloud'; + // BASE_API = 'https://test.joylink.club/jlcloud'; // BASE_API = 'http://192.168.8.107:9000'; // 袁琪 // BASE_API = 'http://192.168.3.83:9000'; // 旭强 有线 // BASE_API = 'http://192.168.8.114:9000'; // 旭强 无线 - // BASE_API = 'http://192.168.3.120:9000'; // 张赛 + BASE_API = 'http://192.168.3.120:9000'; // 张赛 // BASE_API = 'http://192.168.8.140:9000'; // 杜康 // BASE_API = 'http://b29z135112.zicp.vip'; // BASE_API = 'http://2925963m2a.zicp.vip'; // 杜康 diff --git a/src/views/ibp/ibpDraw/ibpOperate/ibpButton.vue b/src/views/ibp/ibpDraw/ibpOperate/ibpButton.vue index 0cfa8a9bc..5db0a78d3 100644 --- a/src/views/ibp/ibpDraw/ibpOperate/ibpButton.vue +++ b/src/views/ibp/ibpDraw/ibpOperate/ibpButton.vue @@ -74,7 +74,7 @@ export default { { label: '报警切除', value: 'BJQC' }, { label: '下行屏蔽门开门', value: 'XXKM' }, { label: '上行屏蔽门开门', value: 'SXKM' }, - { label: '计轴复位', value: 'PRERESET' }, + { label: '计轴复位', value: 'AXLE_RESET' }, { label: '计轴预复位', value: 'AXLE_PRE_RESET' }, { label: '计轴预复零', value: 'PRERESET_Z' }, ], diff --git a/src/views/ibp/ibpsystem/index.vue b/src/views/ibp/ibpsystem/index.vue index e5d453e35..183912870 100644 --- a/src/views/ibp/ibpsystem/index.vue +++ b/src/views/ibp/ibpsystem/index.vue @@ -29,7 +29,6 @@ import BuzzerAudio from '@/assets/buzzer.mp3'; import { getStationList } from '@/api/runplan'; const pressedKeys = new Set(); -let timer = null; export default { name: 'Ibp', props: { @@ -172,14 +171,13 @@ export default { jsonData = jsonData.replace(/R/g, ''); } const ibpDatas = JSON.parse(jsonData).drawData; - console.log(JSON.stringify(ibpDatas)); this.stationCode = deviceCode; getIbpInitialState(this.$route.query.group, this.stationCode).then(resp => { if (resp.data) { this.statusMessage(resp.data); this.controlAudio(resp.data.jjtcBuzzer); } - }).catch(() => { + }).catch((e) => { this.$message.error('获取IBP盘初始状态异常!'); }); document.getElementById(this.ibpId).oncontextmenu = function (e) { @@ -197,7 +195,7 @@ export default { this.setIbp(data, ibpDatas); this.$store.dispatch('ibp/setIbpData', ibpDatas); this.handleBanOpenScreenDoorStatus(); - this.preResetBtn = this.$ibp.$painter.ibpInstanceLevel.SquareButton.children().find(e=>e.model.mean === 'PRERESET_Z'); + this.preResetBtn = this.$ibp.$painter.ibpInstanceLevel.SquareButton.children().find(e=>e.model.mean === IbpOperation.PRERESET_Z.event); } else { // 无数据 this.loading = false; @@ -240,36 +238,23 @@ export default { if (e.type === 'keydown' && e.key === 'Control') { pressedKeys.add(e.key) this.preResetBtn.press(); + handleIbpPress(this.$route.query.group, this.stationCode, this.preResetBtn._code).catch(error => { this.$message.error(error.message); }); } else if (e.type === 'keyup' && e.key === 'Control'){ pressedKeys.delete(e.key) this.preResetBtn.release(); - clearTimeout(timer); + handleIbpRelease(this.$route.query.group, this.stationCode, this.preResetBtn._code).catch(error => { this.$message.error(error.message); }); } } }, onMouseDown(em) { - if (em.deviceModel && em.deviceModel.mean && IbpOperation[em.deviceModel.mean]){ - // const mean = em.deviceModel.mean; - // if (mean === IbpOperation.AXLE_PRE_RESET.event) { - // if (this.preResetBtn) { - // if (pressedKeys.has('Control')) { - // timer = setTimeout(() => { - // handlerIbpEvent(this.$route.query.group, IbpOperation[mean].event, this.stationCode, em.deviceModel.sectionCode).then(() => {}).catch(error => { this.$message.error(error.message); }); - // }, em.deviceModel.delay || 3000); - // } - // } else { - // handlerIbpEvent(this.$route.query.group, IbpOperation[mean].event, this.stationCode, em.deviceModel.sectionCode).then(() => {}).catch(error => { this.$message.error(error.message); }); - // } - // } else { - // handlerIbpEvent(this.$route.query.group, IbpOperation[mean].event, this.stationCode).then(() => { - // }).catch(error => { this.$message.error(error.message); }); - // } - + if (["SquareButton", "Key"].includes(em.deviceType)){ handleIbpPress(this.$route.query.group, this.stationCode, em.deviceCode).catch(error => { this.$message.error(error.message); }); } }, onMouseUp(em) { - // clearTimeout(timer) + if (["SquareButton"].includes(em.deviceType)){ + handleIbpRelease(this.$route.query.group, this.stationCode, em.deviceCode).catch(error => { this.$message.error(error.message); }); + } }, // 右键点击事件 onContextMenu(em) { From 9c991484d7cd2d6ed9a5f74b697134f7daa67acc Mon Sep 17 00:00:00 2001 From: fan <18706759286@163.com> Date: Wed, 16 Jun 2021 13:23:15 +0800 Subject: [PATCH 10/30] =?UTF-8?q?=E8=A5=BF=E5=AE=89=E4=BB=BF=E7=9C=9F?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E5=8F=8D=E9=A6=8840=E3=80=8142=E8=B0=83?= =?UTF-8?q?=E6=95=B4=20=E6=89=A3=E8=BD=A6=E8=B7=B3=E5=81=9C=E6=A0=87?= =?UTF-8?q?=E5=BF=97=E6=98=BE=E7=A4=BA=E7=82=B9=E5=87=BB=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/StatusIcon/statusIcon.vue | 71 +++++++++++-------- .../newMap/jointTrainingNew/menuDemon.vue | 10 ++- 2 files changed, 51 insertions(+), 30 deletions(-) diff --git a/src/views/components/StatusIcon/statusIcon.vue b/src/views/components/StatusIcon/statusIcon.vue index d5f8350f0..c8a6bd787 100644 --- a/src/views/components/StatusIcon/statusIcon.vue +++ b/src/views/components/StatusIcon/statusIcon.vue @@ -1,17 +1,22 @@ diff --git a/src/views/publish/runPlanTemplate/index.vue b/src/views/publish/runPlanTemplate/index.vue index a09b8fdae..10e9a62f7 100644 --- a/src/views/publish/runPlanTemplate/index.vue +++ b/src/views/publish/runPlanTemplate/index.vue @@ -2,20 +2,23 @@
+
@@ -462,7 +681,16 @@ height:300px; overflow: hidden; position: absolute; - + text-align: center; + } + .pane-box2{ + right: 0px; + bottom: 10px; + width:120px; + height:300px; + overflow: hidden; + position: absolute; + text-align: center; } .lgimg{ width: 60px; @@ -502,5 +730,20 @@ font-size: 1px; position:absolute; } + .directbutton{ + width: 100px; + height: 100px; + position: absolute; + text-align: center; + cursor:pointer; + } + + .rightbuttonbcimg{ + width: 100%; + height: 100%; + position: absolute; + top:0; + left:0; + } diff --git a/src/views/jlmap3d/railwaydrive/drivecontrol/drivecontrol.vue b/src/views/jlmap3d/railwaydrive/drivecontrol/drivecontrol.vue index 7fc7ac786..ca46ce9ab 100644 --- a/src/views/jlmap3d/railwaydrive/drivecontrol/drivecontrol.vue +++ b/src/views/jlmap3d/railwaydrive/drivecontrol/drivecontrol.vue @@ -20,7 +20,7 @@ - + @@ -290,7 +290,7 @@ import axios from 'axios'; updateDriveValue(newvalue){ this.$refs.centercontrol.updateInitStatus(newvalue); - this.$refs.rightcontrol.updateInitStatus(newvalue); + // this.$refs.rightcontrol.updateInitStatus(newvalue); }, updatetrainlist(){ getMemberListCommon(this.$route.query.group,"DRIVER").then(netdata => { @@ -362,7 +362,7 @@ import axios from 'axios';