| @ -0,0 +1,9 @@ | |||
| { | |||
| "version" : "1.0", | |||
| "configurations" : [ | |||
| { | |||
| "playground" : "custom", | |||
| "type" : "uni-app:app-android" | |||
| } | |||
| ] | |||
| } | |||
| @ -0,0 +1,17 @@ | |||
| <script> | |||
| export default { | |||
| onLaunch: function() { | |||
| console.log('App Launch') | |||
| }, | |||
| onShow: function() { | |||
| console.log('App Show') | |||
| }, | |||
| onHide: function() { | |||
| console.log('App Hide') | |||
| } | |||
| } | |||
| </script> | |||
| <style> | |||
| /*每个页面公共css */ | |||
| </style> | |||
| @ -0,0 +1,215 @@ | |||
| <template> | |||
| <view class="carInfo"> | |||
| <view class="carContent"> | |||
| <view> | |||
| <view class="carTitle"> | |||
| 1号支架车 | |||
| </view> | |||
| <view class="carDetail"> | |||
| <view v-for="item,index in carDetail1" :key="index" :class="item.width==0?'optionWidth':''"> | |||
| <span>{{item.name}}</span> | |||
| <span style="padding-right:4px ;">{{item.val}}</span> | |||
| <span>{{index==7||index==11?'mm':index==9?'°':''}}</span> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| <view> | |||
| <view class="carTitle"> | |||
| 2号支架车 | |||
| </view> | |||
| <view class="carDetail"> | |||
| <view v-for="item,index in carDetail2" :key="index" :class="item.width==0?'optionWidth':''"> | |||
| <span>{{item.name}}</span> | |||
| <span style="padding-right:4px ;">{{item.val}}</span> | |||
| <span>{{index==7||index==11?'mm':index==9?'°':''}}</span> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| <view> | |||
| <view class="carTitle"> | |||
| 3号支架车 | |||
| </view> | |||
| <view class="carDetail"> | |||
| <view v-for="item,index in carDetail3" :key="index" :class="item.width==0?'optionWidth':''"> | |||
| <span>{{item.name}}</span> | |||
| <span style="padding-right:4px ;">{{item.val}}</span> | |||
| <span>{{index==7||index==11?'mm':index==9?'°':''}}</span> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| export default{ | |||
| props:{ | |||
| carData1:{ | |||
| type:Array | |||
| }, | |||
| carData2:{ | |||
| type:Array | |||
| }, | |||
| carData3:{ | |||
| type:Array | |||
| }, | |||
| }, | |||
| data(){ | |||
| return{ | |||
| dataInter:[ | |||
| { | |||
| name:'支架车在线状态:', | |||
| width:0, | |||
| val:'离线' | |||
| },{ | |||
| name:'左横移限位:', | |||
| width:1, | |||
| val:'2' | |||
| },{ | |||
| name:'右横移限位:', | |||
| width:1, | |||
| val:'3' | |||
| },{ | |||
| name:'上限位:', | |||
| width:1, | |||
| val:'3' | |||
| },{ | |||
| name:'下限位:', | |||
| width:1, | |||
| val:'3' | |||
| },{ | |||
| name:'左滚转限位:', | |||
| width:1, | |||
| val:'3' | |||
| },{ | |||
| name:'右滚转限位:', | |||
| width:1, | |||
| val:'3' | |||
| },{ | |||
| name:'行进位置:', | |||
| width:1, | |||
| val:'3' | |||
| },{ | |||
| name:'横移位置:', | |||
| width:1, | |||
| val:'3' | |||
| },{ | |||
| name:'滚转位置:', | |||
| width:1, | |||
| val:'3' | |||
| },{ | |||
| name:'超重限位:', | |||
| width:1, | |||
| val:'3' | |||
| },{ | |||
| name:'升降位置:', | |||
| width:0, | |||
| val:'3' | |||
| } | |||
| ], | |||
| carDetail1:[], | |||
| carDetail2:[], | |||
| carDetail3:[], | |||
| } | |||
| }, | |||
| watch:{ | |||
| carData1:{ | |||
| handler(newVal,oldVal){ | |||
| if(newVal){ | |||
| this.carDetail1=newVal | |||
| } | |||
| } | |||
| }, | |||
| carData2:{ | |||
| handler(newVal,oldVal){ | |||
| if(newVal){ | |||
| this.carDetail2=newVal | |||
| } | |||
| } | |||
| }, | |||
| carData3:{ | |||
| handler(newVal,oldVal){ | |||
| if(newVal){ | |||
| this.carDetail3=newVal | |||
| } | |||
| } | |||
| } | |||
| }, | |||
| mounted() { | |||
| this.carDetail1=this.dataInter; //初始化1号车数据 | |||
| this.carDetail2=this.dataInter; //初始化2号车数据 | |||
| this.carDetail3=this.dataInter; //初始化3号车数据 | |||
| } | |||
| } | |||
| </script> | |||
| <style scoped> | |||
| .optionWidth{ | |||
| width: 92% !important; | |||
| } | |||
| .carInfo{ | |||
| width: 100%; | |||
| height: 90%; | |||
| position: absolute; | |||
| bottom: 0; | |||
| display: flex; | |||
| justify-content: center; | |||
| align-items: center; | |||
| } | |||
| .carContent{ | |||
| width: 98%; | |||
| height: 98%; | |||
| display: flex; | |||
| justify-content: space-between; | |||
| align-items: center; | |||
| } | |||
| .carContent>view{ | |||
| width: 33%; | |||
| height: 100%; | |||
| border-radius: 10px; | |||
| background-color: #ffffff; | |||
| } | |||
| .carTitle{ | |||
| display: flex; | |||
| justify-content: center; | |||
| align-items: center; | |||
| border-bottom: 1px solid #ccc; | |||
| width: 100%; | |||
| height: 8%; | |||
| font-size: 24px; | |||
| background-color: rgb(204, 204, 204,0.4); | |||
| border-radius: 10px 10px 0 0; | |||
| } | |||
| .carDetail{ | |||
| width: 100%; | |||
| height: 92%; | |||
| display: flex; | |||
| justify-content: space-around; | |||
| align-items: center; | |||
| flex-wrap: wrap; | |||
| } | |||
| .carDetail>view{ | |||
| width: 42%; | |||
| height: 8%; | |||
| border-radius: 10px; | |||
| border: 1px solid #ccc; | |||
| box-shadow: 1px 1px 3px 1px rgba(0, 0, 0, 0.12); | |||
| display: flex; | |||
| justify-content: start; | |||
| align-items: center; | |||
| padding-left: 4%; | |||
| font-size: 18px; | |||
| } | |||
| .carDetail>view>span{ | |||
| display: flex; | |||
| height: 50%; | |||
| align-items: end; | |||
| } | |||
| </style> | |||
| @ -0,0 +1,497 @@ | |||
| <template> | |||
| <view class="deviceInfo"> | |||
| <view class="deviceContent"> | |||
| <view class="infoShow"> | |||
| <view class="deviceitle info">设备数据</view> | |||
| <view class="deivceData"> | |||
| <view class='left'> | |||
| <view class="left_top"> | |||
| <view> | |||
| <span>设备状态:</span> | |||
| <image class="Icon" :src="deviceData.lightFlag==0?normalIcon:errorIcon"/> | |||
| </view> | |||
| <view> | |||
| <span>自动对接:</span> | |||
| <image class="Icon" :src="deviceData.autoDockLightFlag==0?errorIcon:normalIcon"/> | |||
| </view> | |||
| <view> | |||
| <span>急停有效:</span> | |||
| <image class="Icon" :src="deviceData.stopLightFlag==0?errorIcon:normalIcon"/> | |||
| </view> | |||
| <view> | |||
| <span>自动装填:</span> | |||
| <image class="Icon" :src="deviceData.autoFillLightFlag==0?errorIcon:normalIcon"/> | |||
| </view> | |||
| <view> | |||
| <span>控制模式:</span> | |||
| <span>{{deviceData.ctrlFlag==1?'自动':'手动'}}</span> | |||
| </view> | |||
| <view> | |||
| <span>自动退货:</span> | |||
| <image class="Icon" :src="deviceData.autoReturnLightFlag==0?errorIcon:normalIcon"/> | |||
| </view> | |||
| </view> | |||
| <view class="left-bottom"> | |||
| <view> | |||
| <view style="width: 25%;">设备状态:</view> | |||
| <view> | |||
| <image class="Icon" :src="normalIcon"/>: | |||
| <span>正常</span> | |||
| </view> | |||
| <view> | |||
| <image class="Icon" :src="errorIcon"/>: | |||
| <span>异常</span> | |||
| </view> | |||
| </view> | |||
| <view> | |||
| <view style="width: 25%;">急停有效:</view> | |||
| <view > | |||
| <image class="Icon" :src="normalIcon"/>: | |||
| <span>有效</span> | |||
| </view> | |||
| <view > | |||
| <image class="Icon" :src="errorIcon"/>: | |||
| <span>无效</span> | |||
| </view> | |||
| </view> | |||
| <view> | |||
| <view style="width: 25%;">自动对接:</view> | |||
| <view> | |||
| <image class="Icon" :src="normalIcon"/>: | |||
| <span>有动作</span> | |||
| </view> | |||
| <view > | |||
| <image class="Icon" :src="errorIcon"/>: | |||
| <span>无动作</span> | |||
| </view> | |||
| </view> | |||
| <view> | |||
| <view style="width: 25%;">自动装填:</view> | |||
| <view > | |||
| <image class="Icon" :src="normalIcon"/>: | |||
| <span>有动作</span> | |||
| </view> | |||
| <view > | |||
| <image class="Icon" :src="errorIcon"/>: | |||
| <span>无动作</span> | |||
| </view> | |||
| </view> | |||
| <view> | |||
| <view style="width: 25%;">自动退货:</view> | |||
| <view > | |||
| <image class="Icon" :src="normalIcon"/>: | |||
| <span>有动作</span> | |||
| </view> | |||
| <view > | |||
| <image class="Icon" :src="errorIcon"/>: | |||
| <span>无动作</span> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| <view class="right"> | |||
| <view class="cameraInfo"> | |||
| <view style="width: 22%;"> | |||
| <span class="infoTitle">设备在线状态:</span> | |||
| <span class="detail">{{deviceData.isOnline?'在线':'不在线'}}</span> | |||
| </view> | |||
| <view style="width: 22%;"> | |||
| <span class="infoTitle">相机1状态:</span> | |||
| <span class="detail">{{cameraState(deviceData.cameraOneState)}}</span> | |||
| </view> | |||
| <view style="width: 22%;"> | |||
| <span class="infoTitle">相机2状态:</span> | |||
| <span class="detail">{{cameraState(deviceData.cameraTwoState)}}</span> | |||
| </view> | |||
| </view> | |||
| <view class="directionInfo"> | |||
| <view style="width: 22%;"> | |||
| <span class="infoTitle">X方向距离:</span> | |||
| <span class="detail">{{deviceData.xAxisDistance}}mm</span> | |||
| </view> | |||
| <view style="width: 22%;"> | |||
| <span class="infoTitle">Y方向距离:</span> | |||
| <span class="detail">{{deviceData.yAxisDistance}}mm</span> | |||
| </view> | |||
| <view style="width: 22%;"> | |||
| <span class="infoTitle">Z方向距离:</span> | |||
| <span class="detail">{{deviceData.zAxisDistance}}mm</span> | |||
| </view> | |||
| </view> | |||
| <view class="angleInfo"> | |||
| <view style="width: 22%;"> | |||
| <span class="infoTitle" >滚转角度:</span> | |||
| <span >{{deviceData.horizontalTurnAngle?deviceData.horizontalTurnAngle:'0'}}°</span> | |||
| </view> | |||
| <view style="width: 22%;"> | |||
| <span class="infoTitle" >俯仰角度:</span> | |||
| <span >{{deviceData.upDownAngle?deviceData.upDownAngle:'0'}}°</span> | |||
| </view> | |||
| <view style="width: 22%;"> | |||
| <span class="infoTitle" >方位角度:</span> | |||
| <span class="detail">{{deviceData.directionAngle?deviceData.directionAngle:'0'}}°</span> | |||
| </view> | |||
| </view> | |||
| <view class="encoderInfo"> | |||
| <view style="width: 28%;"> | |||
| <span class="infoTitle" >编码器在线状态:</span> | |||
| <span class="detail">{{deviceData.encoderOnlineState==1?'在线':'离线'}}</span> | |||
| </view> | |||
| <view style="width: 24%;"> | |||
| <span class="infoTitle">编码器位置:</span> | |||
| <span class="detail">{{deviceData.encoderPosition}}mm</span> | |||
| </view> | |||
| <view style="width: 10%;opacity: 0;"> | |||
| </view> | |||
| </view> | |||
| <view class="encoderInfo"> | |||
| <view style="width: 28%;"> | |||
| <span class="infoTitle">变频器在线状态:</span> | |||
| <span class="detail">{{deviceData.vfdOnlineState==1?'在线':'离线'}}</span> | |||
| </view> | |||
| <view style="width: 24%;"> | |||
| <span class="infoTitle">变频器故障码:</span> | |||
| <span class="detail">{{deviceData.vfdFaultCode}}</span> | |||
| </view> | |||
| <view style="width: 10%;opacity: 0;"> | |||
| </view> | |||
| </view> | |||
| <view class="angleInfo"> | |||
| <view style="width: 28%;"> | |||
| <span class="infoTitle">电机实际运行电流:</span> | |||
| <span class="detail">{{deviceData.trueEleCurrent}}</span> | |||
| </view> | |||
| <view style="opacity: 0;"> | |||
| </view> | |||
| <view style="opacity: 0;"> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| <view class="controlButton"> | |||
| <view class="deviceitle control">设备控制</view> | |||
| <view class="controlContent"> | |||
| <view @click="controlDevice(1)">对接</view> | |||
| <view @click="controlDevice(2)">装填</view> | |||
| <view @click="controlDevice(3)">退货</view> | |||
| <view @click="controlDevice(4)">急停</view> | |||
| <view @click="controlDevice(5)">恢复</view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| import {httpPost} from '../../utils/requset.js'; | |||
| export default{ | |||
| props:{ | |||
| Data:{ | |||
| type:Object | |||
| } | |||
| }, | |||
| data(){ | |||
| return{ | |||
| deviceData:{ | |||
| trueEleCurrent:'', //电机实际运行电流 | |||
| vfdOnlineState:'', //变频器在线状态 | |||
| vfdFaultCode: 1,//变频器故障码 | |||
| encoderPosition: 100,//编码器位置,单位mm | |||
| encoderOnlineState: 0,//编码器在线状态:0-离线,1-在线 | |||
| upDownAngle:'', //俯仰角度 | |||
| directionAngle: 100,//方位角度,单位° | |||
| horizontalTurnAngle: 100,//滚装角度,单位° | |||
| cameraOneState: 1,//相机1状态:0:正常,1:通讯异常,2:无图像,3:光强饱和,4:缺少目标点 | |||
| cameraTwoState: 1,//相机2状态:0:正常,1:通讯异常,2:无图像,3:光强饱和,4:缺少目标点 | |||
| yAxisDistance: 100,//Y方向距离,单位mm | |||
| xAxisDistance: 100,//X方向距离,单位mm | |||
| zAxisDistance: 100,//Z方向距离,单位mm | |||
| isOnline: false,//在线状态:true-在线、false | |||
| autoDockLightFlag: 0,//自动对接:0:无动作、1:有动作 | |||
| stopLightFlag: 0,//急停有效:0:无效、1:有效 | |||
| autoReturnLightFlag: 0,//自动退货: 0:无动作、1:有动作 | |||
| autoFillLightFlag: 0,//自动装填: 0:无动作、1:有动作 | |||
| ctrlFlag: 0,//控制模式:0-手动、1-自动 | |||
| lightFlag: 1,//设备状态:0-正常、1-异常 | |||
| }, | |||
| errorIcon:'/static/image/error.png', | |||
| normalIcon:'/static/image/normal.png' | |||
| } | |||
| }, | |||
| methods:{ | |||
| controlDevice(value){ | |||
| console.log(value) | |||
| httpPost({ | |||
| url:`/zhxx/dt/horizonLoadIControl/${value}`, | |||
| data:{} | |||
| }).then((res)=>{ | |||
| if(res.code==200){ | |||
| uni.showToast({ | |||
| title: res.msg, | |||
| icon: "success", | |||
| duration: 1000 | |||
| }) | |||
| }else{ | |||
| uni.showToast({ | |||
| title: res.msg?res.msg:'请求失败', | |||
| icon: "error", | |||
| duration: 1000 | |||
| }) | |||
| } | |||
| }).catch((Error)=>{ | |||
| // console.log(Error) | |||
| uni.showToast({ | |||
| title: Error, | |||
| icon: "error", | |||
| duration: 1000 | |||
| }) | |||
| }) | |||
| } | |||
| }, | |||
| computed:{ | |||
| cameraState(){ | |||
| return function(value){ | |||
| let cameraData=''; | |||
| switch(value){ | |||
| case 0: | |||
| cameraData='正常'; | |||
| break; | |||
| case 1: | |||
| cameraData='通讯异常'; | |||
| break; | |||
| case 2: | |||
| cameraData='无图像'; | |||
| break; | |||
| case 3: | |||
| cameraData='光强饱和'; | |||
| break; | |||
| case 4: | |||
| cameraData='缺少目标点'; | |||
| break; | |||
| } | |||
| return cameraData; | |||
| } | |||
| } | |||
| }, | |||
| watch:{ | |||
| Data:{ | |||
| handler(newVal,oldVal){ | |||
| if(newVal){ | |||
| this.deviceData=newVal | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| </script> | |||
| <style scoped> | |||
| .deviceInfo{ | |||
| width: 100%; | |||
| height: 90%; | |||
| position: absolute; | |||
| bottom: 0; | |||
| display: flex; | |||
| justify-content: center; | |||
| align-items: center; | |||
| } | |||
| .deviceContent{ | |||
| width: 98%; | |||
| height: 98%; | |||
| display: flex; | |||
| flex-direction: column; | |||
| justify-content: space-between; | |||
| align-items: center; | |||
| } | |||
| .infoShow{ | |||
| width: 100%; | |||
| height: 72%; | |||
| border-radius: 10px; | |||
| background-color: #ffffff; | |||
| } | |||
| .controlButton{ | |||
| width: 100%; | |||
| height: 26%; | |||
| border-radius: 10px; | |||
| background-color: #ffffff; | |||
| } | |||
| .deviceitle{ | |||
| width: 100%; | |||
| border-bottom: 1px solid #ccc; | |||
| display: flex; | |||
| justify-content: center; | |||
| align-items: center; | |||
| font-size: 28px; | |||
| font-weight: bold; | |||
| letter-spacing: 10px; | |||
| background-color: rgb(204, 204, 204,0.4); | |||
| border-radius: 10px 10px 0 0; | |||
| } | |||
| .info{ | |||
| height: 10%; | |||
| } | |||
| .control{ | |||
| height: 28%; | |||
| } | |||
| .deivceData{ | |||
| width: 100%; | |||
| height: 88%; | |||
| display: flex; | |||
| align-items: center; | |||
| } | |||
| .left{ | |||
| width: 32%; | |||
| height: 100%; | |||
| border-right: 1px solid #ccc; | |||
| font-size: 18px; | |||
| } | |||
| .left_top{ | |||
| width: 100%; | |||
| height: 58%; | |||
| display: flex; | |||
| justify-content: space-around; | |||
| flex-wrap: wrap; | |||
| align-items: center; | |||
| border-bottom: 1px solid #ccc; | |||
| } | |||
| .left_top>view{ | |||
| width: 40%; | |||
| height: 20%; | |||
| display: flex; | |||
| justify-content: center; | |||
| align-items: center; | |||
| border:1px solid #ccc; | |||
| border-radius: 10px; | |||
| box-shadow: 1px 1px 3px 1px rgba(0, 0, 0, 0.12); | |||
| } | |||
| .Icon{ | |||
| width: 24px; | |||
| height: 24px; | |||
| } | |||
| .left-bottom{ | |||
| width: 100%; | |||
| height: 36%; | |||
| display: flex; | |||
| flex-direction: column; | |||
| justify-content: space-around; | |||
| align-items: center; | |||
| font-size: 16px; | |||
| padding-top: 2%; | |||
| } | |||
| .left-bottom>view{ | |||
| width: 70%; | |||
| display: flex; | |||
| justify-content: space-between; | |||
| align-items: center; | |||
| } | |||
| .left-bottom>view>view{ | |||
| width: 32%; | |||
| display: flex; | |||
| justify-content: start; | |||
| align-items: center; | |||
| } | |||
| .controlContent{ | |||
| width: 100%; | |||
| height: 74%; | |||
| display: flex; | |||
| justify-content: space-around; | |||
| align-items: center; | |||
| } | |||
| .controlContent>view{ | |||
| width: 12%; | |||
| height: 40%; | |||
| background-color: #42B983; | |||
| color: #ffffff; | |||
| font-size: 24px; | |||
| display: flex; | |||
| justify-content: center; | |||
| align-items: center; | |||
| border-radius: 10px; | |||
| } | |||
| .controlContent>view:active{ | |||
| opacity: 0.6; | |||
| } | |||
| .right{ | |||
| width: 68%; | |||
| height: 100%; | |||
| display: flex; | |||
| flex-direction: column; | |||
| justify-content: space-around; | |||
| align-items: center; | |||
| font-size: 18px; | |||
| } | |||
| .cameraInfo,.directionInfo,.angleInfo,.encoderInfo{ | |||
| width: 96%; | |||
| height: 11%; | |||
| display: flex; | |||
| justify-content: space-between; | |||
| align-items: center; | |||
| } | |||
| .cameraInfo>view,.directionInfo>view,.angleInfo>view,.encoderInfo>view{ | |||
| width: 20%; | |||
| height: 100%; | |||
| display: flex; | |||
| justify-content: start; | |||
| align-items: center; | |||
| border-radius: 10px; | |||
| border: 1px solid #ccc; | |||
| box-shadow: 1px 1px 3px 1px rgba(0, 0, 0, 0.12); | |||
| padding: 0 3%; | |||
| } | |||
| .infoTitle{ | |||
| /* width: 52%; */ | |||
| display: flex; | |||
| justify-content: center; | |||
| align-items: center | |||
| } | |||
| .detail{ | |||
| /* width: 28%; */ | |||
| /* background-color: #ccc; */ | |||
| } | |||
| </style> | |||
| @ -0,0 +1,9 @@ | |||
| // 配置地址 | |||
| let debug = true | |||
| export const CONFIG = {} | |||
| if (debug) { | |||
| CONFIG['API_BASE_URL'] = 'http://192.168.150.29:10086'; | |||
| } else { | |||
| CONFIG['API_BASE_URL'] = 'http://192.168.150.29:10086'; | |||
| } | |||
| @ -0,0 +1,20 @@ | |||
| <!DOCTYPE html> | |||
| <html lang="en"> | |||
| <head> | |||
| <meta charset="UTF-8" /> | |||
| <script> | |||
| var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') || | |||
| CSS.supports('top: constant(a)')) | |||
| document.write( | |||
| '<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' + | |||
| (coverSupport ? ', viewport-fit=cover' : '') + '" />') | |||
| </script> | |||
| <title></title> | |||
| <!--preload-links--> | |||
| <!--app-context--> | |||
| </head> | |||
| <body> | |||
| <div id="app"><!--app-html--></div> | |||
| <script type="module" src="/main.js"></script> | |||
| </body> | |||
| </html> | |||
| @ -0,0 +1,38 @@ | |||
| import App from './App' | |||
| import mitt from "mitt"; | |||
| // #ifndef VUE3 | |||
| import Vue from 'vue' | |||
| import './uni.promisify.adaptor' | |||
| Vue.config.productionTip = false | |||
| App.mpType = 'app' | |||
| const app = new Vue({ | |||
| ...App | |||
| }) | |||
| const eventBus = mitt(); | |||
| eventBus.$on = eventBus.on; | |||
| eventBus.$off = eventBus.off; | |||
| eventBus.$emit = eventBus.emit; | |||
| app.config.globalProperties.$eventBus = eventBus; | |||
| app.$mount() | |||
| // #endif | |||
| // #ifdef VUE3 | |||
| import { createSSRApp } from 'vue' | |||
| export function createApp() { | |||
| const app = createSSRApp(App) | |||
| const eventBus = mitt(); | |||
| eventBus.$on = eventBus.on; | |||
| eventBus.$off = eventBus.off; | |||
| eventBus.$emit = eventBus.emit; | |||
| app.config.globalProperties.$eventBus = eventBus; | |||
| return { | |||
| app | |||
| } | |||
| } | |||
| // #endif | |||
| @ -0,0 +1,79 @@ | |||
| { | |||
| "name" : "ATIA", | |||
| "appid" : "__UNI__17D2062", | |||
| "description" : "", | |||
| "versionName" : "1.0.0", | |||
| "versionCode" : "100", | |||
| "transformPx" : false, | |||
| /* 5+App特有相关 */ | |||
| "app-plus" : { | |||
| "usingComponents" : true, | |||
| "nvueStyleCompiler" : "uni-app", | |||
| "compilerVersion" : 3, | |||
| "splashscreen" : { | |||
| "alwaysShowBeforeRender" : true, | |||
| "waiting" : true, | |||
| "autoclose" : true, | |||
| "delay" : 0 | |||
| }, | |||
| /* 模块配置 */ | |||
| "modules" : {}, | |||
| /* 应用发布信息 */ | |||
| "distribute" : { | |||
| /* android打包配置 */ | |||
| "android" : { | |||
| "permissions" : [ | |||
| "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>", | |||
| "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>", | |||
| "<uses-permission android:name=\"android.permission.VIBRATE\"/>", | |||
| "<uses-permission android:name=\"android.permission.READ_LOGS\"/>", | |||
| "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>", | |||
| "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>", | |||
| "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>", | |||
| "<uses-permission android:name=\"android.permission.CAMERA\"/>", | |||
| "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>", | |||
| "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>", | |||
| "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>", | |||
| "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>", | |||
| "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>", | |||
| "<uses-feature android:name=\"android.hardware.camera\"/>", | |||
| "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>" | |||
| ] | |||
| }, | |||
| /* ios打包配置 */ | |||
| "ios" : { | |||
| "dSYMs" : false | |||
| }, | |||
| /* SDK配置 */ | |||
| "sdkConfigs" : {}, | |||
| "icons" : { | |||
| "android" : { | |||
| "xxxhdpi" : "static/image/logo.png" | |||
| } | |||
| } | |||
| } | |||
| }, | |||
| /* 快应用特有相关 */ | |||
| "quickapp" : {}, | |||
| /* 小程序特有相关 */ | |||
| "mp-weixin" : { | |||
| "appid" : "", | |||
| "setting" : { | |||
| "urlCheck" : false | |||
| }, | |||
| "usingComponents" : true | |||
| }, | |||
| "mp-alipay" : { | |||
| "usingComponents" : true | |||
| }, | |||
| "mp-baidu" : { | |||
| "usingComponents" : true | |||
| }, | |||
| "mp-toutiao" : { | |||
| "usingComponents" : true | |||
| }, | |||
| "uniStatistics" : { | |||
| "enable" : false | |||
| }, | |||
| "vueVersion" : "3" | |||
| } | |||
| @ -0,0 +1,13 @@ | |||
| { | |||
| "name": "SpztPad", | |||
| "lockfileVersion": 3, | |||
| "requires": true, | |||
| "packages": { | |||
| "node_modules/mitt": { | |||
| "version": "3.0.1", | |||
| "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", | |||
| "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", | |||
| "license": "MIT" | |||
| } | |||
| } | |||
| } | |||
| @ -0,0 +1,21 @@ | |||
| MIT License | |||
| Copyright (c) 2021 Jason Miller | |||
| Permission is hereby granted, free of charge, to any person obtaining a copy | |||
| of this software and associated documentation files (the "Software"), to deal | |||
| in the Software without restriction, including without limitation the rights | |||
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |||
| copies of the Software, and to permit persons to whom the Software is | |||
| furnished to do so, subject to the following conditions: | |||
| The above copyright notice and this permission notice shall be included in all | |||
| copies or substantial portions of the Software. | |||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |||
| SOFTWARE. | |||
| @ -0,0 +1,205 @@ | |||
| <p align="center"> | |||
| <img src="https://i.imgur.com/BqsX9NT.png" width="300" height="300" alt="mitt"> | |||
| <br> | |||
| <a href="https://www.npmjs.org/package/mitt"><img src="https://img.shields.io/npm/v/mitt.svg" alt="npm"></a> | |||
| <img src="https://github.com/developit/mitt/workflows/CI/badge.svg" alt="build status"> | |||
| <a href="https://unpkg.com/mitt/dist/mitt.js"><img src="https://img.badgesize.io/https://unpkg.com/mitt/dist/mitt.js?compression=gzip" alt="gzip size"></a> | |||
| </p> | |||
| # Mitt | |||
| > Tiny 200b functional event emitter / pubsub. | |||
| - **Microscopic:** weighs less than 200 bytes gzipped | |||
| - **Useful:** a wildcard `"*"` event type listens to all events | |||
| - **Familiar:** same names & ideas as [Node's EventEmitter](https://nodejs.org/api/events.html#events_class_eventemitter) | |||
| - **Functional:** methods don't rely on `this` | |||
| - **Great Name:** somehow [mitt](https://npm.im/mitt) wasn't taken | |||
| Mitt was made for the browser, but works in any JavaScript runtime. It has no dependencies and supports IE9+. | |||
| ## Table of Contents | |||
| - [Install](#install) | |||
| - [Usage](#usage) | |||
| - [Examples & Demos](#examples--demos) | |||
| - [API](#api) | |||
| - [Contribute](#contribute) | |||
| - [License](#license) | |||
| ## Install | |||
| This project uses [node](http://nodejs.org) and [npm](https://npmjs.com). Go check them out if you don't have them locally installed. | |||
| ```sh | |||
| $ npm install --save mitt | |||
| ``` | |||
| Then with a module bundler like [rollup](http://rollupjs.org/) or [webpack](https://webpack.js.org/), use as you would anything else: | |||
| ```javascript | |||
| // using ES6 modules | |||
| import mitt from 'mitt' | |||
| // using CommonJS modules | |||
| var mitt = require('mitt') | |||
| ``` | |||
| The [UMD](https://github.com/umdjs/umd) build is also available on [unpkg](https://unpkg.com): | |||
| ```html | |||
| <script src="https://unpkg.com/mitt/dist/mitt.umd.js"></script> | |||
| ``` | |||
| You can find the library on `window.mitt`. | |||
| ## Usage | |||
| ```js | |||
| import mitt from 'mitt' | |||
| const emitter = mitt() | |||
| // listen to an event | |||
| emitter.on('foo', e => console.log('foo', e) ) | |||
| // listen to all events | |||
| emitter.on('*', (type, e) => console.log(type, e) ) | |||
| // fire an event | |||
| emitter.emit('foo', { a: 'b' }) | |||
| // clearing all events | |||
| emitter.all.clear() | |||
| // working with handler references: | |||
| function onFoo() {} | |||
| emitter.on('foo', onFoo) // listen | |||
| emitter.off('foo', onFoo) // unlisten | |||
| ``` | |||
| ### Typescript | |||
| Set `"strict": true` in your tsconfig.json to get improved type inference for `mitt` instance methods. | |||
| ```ts | |||
| import mitt from 'mitt'; | |||
| type Events = { | |||
| foo: string; | |||
| bar?: number; | |||
| }; | |||
| const emitter = mitt<Events>(); // inferred as Emitter<Events> | |||
| emitter.on('foo', (e) => {}); // 'e' has inferred type 'string' | |||
| emitter.emit('foo', 42); // Error: Argument of type 'number' is not assignable to parameter of type 'string'. (2345) | |||
| ``` | |||
| Alternatively, you can use the provided `Emitter` type: | |||
| ```ts | |||
| import mitt, { Emitter } from 'mitt'; | |||
| type Events = { | |||
| foo: string; | |||
| bar?: number; | |||
| }; | |||
| const emitter: Emitter<Events> = mitt<Events>(); | |||
| ``` | |||
| ## Examples & Demos | |||
| <a href="http://codepen.io/developit/pen/rjMEwW?editors=0110"> | |||
| <b>Preact + Mitt Codepen Demo</b> | |||
| <br> | |||
| <img src="https://i.imgur.com/CjBgOfJ.png" width="278" alt="preact + mitt preview"> | |||
| </a> | |||
| * * * | |||
| ## API | |||
| <!-- Generated by documentation.js. Update this documentation by updating the source code. --> | |||
| #### Table of Contents | |||
| - [mitt](#mitt) | |||
| - [all](#all) | |||
| - [on](#on) | |||
| - [Parameters](#parameters) | |||
| - [off](#off) | |||
| - [Parameters](#parameters-1) | |||
| - [emit](#emit) | |||
| - [Parameters](#parameters-2) | |||
| ### mitt | |||
| Mitt: Tiny (~200b) functional event emitter / pubsub. | |||
| Returns **Mitt** | |||
| ### all | |||
| A Map of event names to registered handler functions. | |||
| ### on | |||
| Register an event handler for the given type. | |||
| #### Parameters | |||
| - `type` **([string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) \| [symbol](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Symbol))** Type of event to listen for, or `'*'` for all events | |||
| - `handler` **[Function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** Function to call in response to given event | |||
| ### off | |||
| Remove an event handler for the given type. | |||
| If `handler` is omitted, all handlers of the given type are removed. | |||
| #### Parameters | |||
| - `type` **([string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) \| [symbol](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Symbol))** Type of event to unregister `handler` from, or `'*'` | |||
| - `handler` **[Function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)?** Handler function to remove | |||
| ### emit | |||
| Invoke all handlers for the given type. | |||
| If present, `'*'` handlers are invoked after type-matched handlers. | |||
| Note: Manually firing '\*' handlers is not supported. | |||
| #### Parameters | |||
| - `type` **([string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) \| [symbol](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Symbol))** The event type to invoke | |||
| - `evt` **Any?** Any value (object is recommended and powerful), passed to each handler | |||
| ## Contribute | |||
| First off, thanks for taking the time to contribute! | |||
| Now, take a moment to be sure your contributions make sense to everyone else. | |||
| ### Reporting Issues | |||
| Found a problem? Want a new feature? First of all see if your issue or idea has [already been reported](../../issues). | |||
| If don't, just open a [new clear and descriptive issue](../../issues/new). | |||
| ### Submitting pull requests | |||
| Pull requests are the greatest contributions, so be sure they are focused in scope, and do avoid unrelated commits. | |||
| - Fork it! | |||
| - Clone your fork: `git clone https://github.com/<your-username>/mitt` | |||
| - Navigate to the newly cloned directory: `cd mitt` | |||
| - Create a new branch for the new feature: `git checkout -b my-new-feature` | |||
| - Install the tools necessary for development: `npm install` | |||
| - Make your changes. | |||
| - Commit your changes: `git commit -am 'Add some feature'` | |||
| - Push to the branch: `git push origin my-new-feature` | |||
| - Submit a pull request with full remarks documenting your changes. | |||
| ## License | |||
| [MIT License](https://opensource.org/licenses/MIT) © [Jason Miller](https://jasonformat.com/) | |||
| @ -0,0 +1,2 @@ | |||
| module.exports=function(n){return{all:n=n||new Map,on:function(e,t){var i=n.get(e);i?i.push(t):n.set(e,[t])},off:function(e,t){var i=n.get(e);i&&(t?i.splice(i.indexOf(t)>>>0,1):n.set(e,[]))},emit:function(e,t){var i=n.get(e);i&&i.slice().map(function(n){n(t)}),(i=n.get("*"))&&i.slice().map(function(n){n(e,t)})}}}; | |||
| //# sourceMappingURL=mitt.js.map | |||
| @ -0,0 +1 @@ | |||
| {"version":3,"file":"mitt.js","sources":["../src/index.ts"],"sourcesContent":["export type EventType = string | symbol;\n\n// An event handler can take an optional event argument\n// and should not return a value\nexport type Handler<T = unknown> = (event: T) => void;\nexport type WildcardHandler<T = Record<string, unknown>> = (\n\ttype: keyof T,\n\tevent: T[keyof T]\n) => void;\n\n// An array of all currently registered event handlers for a type\nexport type EventHandlerList<T = unknown> = Array<Handler<T>>;\nexport type WildCardEventHandlerList<T = Record<string, unknown>> = Array<\n\tWildcardHandler<T>\n>;\n\n// A map of event types and their corresponding event handlers.\nexport type EventHandlerMap<Events extends Record<EventType, unknown>> = Map<\n\tkeyof Events | '*',\n\tEventHandlerList<Events[keyof Events]> | WildCardEventHandlerList<Events>\n>;\n\nexport interface Emitter<Events extends Record<EventType, unknown>> {\n\tall: EventHandlerMap<Events>;\n\n\ton<Key extends keyof Events>(type: Key, handler: Handler<Events[Key]>): void;\n\ton(type: '*', handler: WildcardHandler<Events>): void;\n\n\toff<Key extends keyof Events>(\n\t\ttype: Key,\n\t\thandler?: Handler<Events[Key]>\n\t): void;\n\toff(type: '*', handler: WildcardHandler<Events>): void;\n\n\temit<Key extends keyof Events>(type: Key, event: Events[Key]): void;\n\temit<Key extends keyof Events>(\n\t\ttype: undefined extends Events[Key] ? Key : never\n\t): void;\n}\n\n/**\n * Mitt: Tiny (~200b) functional event emitter / pubsub.\n * @name mitt\n * @returns {Mitt}\n */\nexport default function mitt<Events extends Record<EventType, unknown>>(\n\tall?: EventHandlerMap<Events>\n): Emitter<Events> {\n\ttype GenericEventHandler =\n\t\t| Handler<Events[keyof Events]>\n\t\t| WildcardHandler<Events>;\n\tall = all || new Map();\n\n\treturn {\n\t\t/**\n\t\t * A Map of event names to registered handler functions.\n\t\t */\n\t\tall,\n\n\t\t/**\n\t\t * Register an event handler for the given type.\n\t\t * @param {string|symbol} type Type of event to listen for, or `'*'` for all events\n\t\t * @param {Function} handler Function to call in response to given event\n\t\t * @memberOf mitt\n\t\t */\n\t\ton<Key extends keyof Events>(type: Key, handler: GenericEventHandler) {\n\t\t\tconst handlers: Array<GenericEventHandler> | undefined = all!.get(type);\n\t\t\tif (handlers) {\n\t\t\t\thandlers.push(handler);\n\t\t\t} else {\n\t\t\t\tall!.set(type, [handler] as EventHandlerList<Events[keyof Events]>);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Remove an event handler for the given type.\n\t\t * If `handler` is omitted, all handlers of the given type are removed.\n\t\t * @param {string|symbol} type Type of event to unregister `handler` from (`'*'` to remove a wildcard handler)\n\t\t * @param {Function} [handler] Handler function to remove\n\t\t * @memberOf mitt\n\t\t */\n\t\toff<Key extends keyof Events>(type: Key, handler?: GenericEventHandler) {\n\t\t\tconst handlers: Array<GenericEventHandler> | undefined = all!.get(type);\n\t\t\tif (handlers) {\n\t\t\t\tif (handler) {\n\t\t\t\t\thandlers.splice(handlers.indexOf(handler) >>> 0, 1);\n\t\t\t\t} else {\n\t\t\t\t\tall!.set(type, []);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Invoke all handlers for the given type.\n\t\t * If present, `'*'` handlers are invoked after type-matched handlers.\n\t\t *\n\t\t * Note: Manually firing '*' handlers is not supported.\n\t\t *\n\t\t * @param {string|symbol} type The event type to invoke\n\t\t * @param {Any} [evt] Any value (object is recommended and powerful), passed to each handler\n\t\t * @memberOf mitt\n\t\t */\n\t\temit<Key extends keyof Events>(type: Key, evt?: Events[Key]) {\n\t\t\tlet handlers = all!.get(type);\n\t\t\tif (handlers) {\n\t\t\t\t(handlers as EventHandlerList<Events[keyof Events]>)\n\t\t\t\t\t.slice()\n\t\t\t\t\t.map((handler) => {\n\t\t\t\t\t\thandler(evt!);\n\t\t\t\t\t});\n\t\t\t}\n\n\t\t\thandlers = all!.get('*');\n\t\t\tif (handlers) {\n\t\t\t\t(handlers as WildCardEventHandlerList<Events>)\n\t\t\t\t\t.slice()\n\t\t\t\t\t.map((handler) => {\n\t\t\t\t\t\thandler(type, evt!);\n\t\t\t\t\t});\n\t\t\t}\n\t\t}\n\t};\n}\n"],"names":["all","Map","on","type","handler","handlers","get","push","set","off","splice","indexOf","emit","evt","slice","map"],"mappings":"wBA8CCA,GAOA,MAAO,CAINA,IANDA,EAAMA,GAAO,IAAIC,IAchBC,YAA6BC,EAAWC,GACvC,IAAMC,EAAmDL,EAAKM,IAAIH,GAC9DE,EACHA,EAASE,KAAKH,GAEdJ,EAAKQ,IAAIL,EAAM,CAACC,KAWlBK,aAA8BN,EAAWC,GACxC,IAAMC,EAAmDL,EAAKM,IAAIH,GAC9DE,IACCD,EACHC,EAASK,OAAOL,EAASM,QAAQP,KAAa,EAAG,GAEjDJ,EAAKQ,IAAIL,EAAM,MAelBS,cAA+BT,EAAWU,GACzC,IAAIR,EAAWL,EAAKM,IAAIH,GACpBE,GACFA,EACCS,QACAC,IAAI,SAACX,GACLA,EAAQS,MAIXR,EAAWL,EAAKM,IAAI,OAElBD,EACCS,QACAC,IAAI,SAACX,GACLA,EAAQD,EAAMU"} | |||
| @ -0,0 +1,2 @@ | |||
| export default function(n){return{all:n=n||new Map,on:function(t,e){var i=n.get(t);i?i.push(e):n.set(t,[e])},off:function(t,e){var i=n.get(t);i&&(e?i.splice(i.indexOf(e)>>>0,1):n.set(t,[]))},emit:function(t,e){var i=n.get(t);i&&i.slice().map(function(n){n(e)}),(i=n.get("*"))&&i.slice().map(function(n){n(t,e)})}}} | |||
| //# sourceMappingURL=mitt.mjs.map | |||
| @ -0,0 +1 @@ | |||
| {"version":3,"file":"mitt.mjs","sources":["../src/index.ts"],"sourcesContent":["export type EventType = string | symbol;\n\n// An event handler can take an optional event argument\n// and should not return a value\nexport type Handler<T = unknown> = (event: T) => void;\nexport type WildcardHandler<T = Record<string, unknown>> = (\n\ttype: keyof T,\n\tevent: T[keyof T]\n) => void;\n\n// An array of all currently registered event handlers for a type\nexport type EventHandlerList<T = unknown> = Array<Handler<T>>;\nexport type WildCardEventHandlerList<T = Record<string, unknown>> = Array<\n\tWildcardHandler<T>\n>;\n\n// A map of event types and their corresponding event handlers.\nexport type EventHandlerMap<Events extends Record<EventType, unknown>> = Map<\n\tkeyof Events | '*',\n\tEventHandlerList<Events[keyof Events]> | WildCardEventHandlerList<Events>\n>;\n\nexport interface Emitter<Events extends Record<EventType, unknown>> {\n\tall: EventHandlerMap<Events>;\n\n\ton<Key extends keyof Events>(type: Key, handler: Handler<Events[Key]>): void;\n\ton(type: '*', handler: WildcardHandler<Events>): void;\n\n\toff<Key extends keyof Events>(\n\t\ttype: Key,\n\t\thandler?: Handler<Events[Key]>\n\t): void;\n\toff(type: '*', handler: WildcardHandler<Events>): void;\n\n\temit<Key extends keyof Events>(type: Key, event: Events[Key]): void;\n\temit<Key extends keyof Events>(\n\t\ttype: undefined extends Events[Key] ? Key : never\n\t): void;\n}\n\n/**\n * Mitt: Tiny (~200b) functional event emitter / pubsub.\n * @name mitt\n * @returns {Mitt}\n */\nexport default function mitt<Events extends Record<EventType, unknown>>(\n\tall?: EventHandlerMap<Events>\n): Emitter<Events> {\n\ttype GenericEventHandler =\n\t\t| Handler<Events[keyof Events]>\n\t\t| WildcardHandler<Events>;\n\tall = all || new Map();\n\n\treturn {\n\t\t/**\n\t\t * A Map of event names to registered handler functions.\n\t\t */\n\t\tall,\n\n\t\t/**\n\t\t * Register an event handler for the given type.\n\t\t * @param {string|symbol} type Type of event to listen for, or `'*'` for all events\n\t\t * @param {Function} handler Function to call in response to given event\n\t\t * @memberOf mitt\n\t\t */\n\t\ton<Key extends keyof Events>(type: Key, handler: GenericEventHandler) {\n\t\t\tconst handlers: Array<GenericEventHandler> | undefined = all!.get(type);\n\t\t\tif (handlers) {\n\t\t\t\thandlers.push(handler);\n\t\t\t} else {\n\t\t\t\tall!.set(type, [handler] as EventHandlerList<Events[keyof Events]>);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Remove an event handler for the given type.\n\t\t * If `handler` is omitted, all handlers of the given type are removed.\n\t\t * @param {string|symbol} type Type of event to unregister `handler` from (`'*'` to remove a wildcard handler)\n\t\t * @param {Function} [handler] Handler function to remove\n\t\t * @memberOf mitt\n\t\t */\n\t\toff<Key extends keyof Events>(type: Key, handler?: GenericEventHandler) {\n\t\t\tconst handlers: Array<GenericEventHandler> | undefined = all!.get(type);\n\t\t\tif (handlers) {\n\t\t\t\tif (handler) {\n\t\t\t\t\thandlers.splice(handlers.indexOf(handler) >>> 0, 1);\n\t\t\t\t} else {\n\t\t\t\t\tall!.set(type, []);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Invoke all handlers for the given type.\n\t\t * If present, `'*'` handlers are invoked after type-matched handlers.\n\t\t *\n\t\t * Note: Manually firing '*' handlers is not supported.\n\t\t *\n\t\t * @param {string|symbol} type The event type to invoke\n\t\t * @param {Any} [evt] Any value (object is recommended and powerful), passed to each handler\n\t\t * @memberOf mitt\n\t\t */\n\t\temit<Key extends keyof Events>(type: Key, evt?: Events[Key]) {\n\t\t\tlet handlers = all!.get(type);\n\t\t\tif (handlers) {\n\t\t\t\t(handlers as EventHandlerList<Events[keyof Events]>)\n\t\t\t\t\t.slice()\n\t\t\t\t\t.map((handler) => {\n\t\t\t\t\t\thandler(evt!);\n\t\t\t\t\t});\n\t\t\t}\n\n\t\t\thandlers = all!.get('*');\n\t\t\tif (handlers) {\n\t\t\t\t(handlers as WildCardEventHandlerList<Events>)\n\t\t\t\t\t.slice()\n\t\t\t\t\t.map((handler) => {\n\t\t\t\t\t\thandler(type, evt!);\n\t\t\t\t\t});\n\t\t\t}\n\t\t}\n\t};\n}\n"],"names":["all","Map","on","type","handler","handlers","get","push","set","off","splice","indexOf","emit","evt","slice","map"],"mappings":"wBA8CCA,GAOA,MAAO,CAINA,IANDA,EAAMA,GAAO,IAAIC,IAchBC,YAA6BC,EAAWC,GACvC,IAAMC,EAAmDL,EAAKM,IAAIH,GAC9DE,EACHA,EAASE,KAAKH,GAEdJ,EAAKQ,IAAIL,EAAM,CAACC,KAWlBK,aAA8BN,EAAWC,GACxC,IAAMC,EAAmDL,EAAKM,IAAIH,GAC9DE,IACCD,EACHC,EAASK,OAAOL,EAASM,QAAQP,KAAa,EAAG,GAEjDJ,EAAKQ,IAAIL,EAAM,MAelBS,cAA+BT,EAAWU,GACzC,IAAIR,EAAWL,EAAKM,IAAIH,GACpBE,GACFA,EACCS,QACAC,IAAI,SAACX,GACLA,EAAQS,MAIXR,EAAWL,EAAKM,IAAI,OAElBD,EACCS,QACAC,IAAI,SAACX,GACLA,EAAQD,EAAMU"} | |||
| @ -0,0 +1,2 @@ | |||
| !function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e=e||self).mitt=n()}(this,function(){return function(e){return{all:e=e||new Map,on:function(n,t){var f=e.get(n);f?f.push(t):e.set(n,[t])},off:function(n,t){var f=e.get(n);f&&(t?f.splice(f.indexOf(t)>>>0,1):e.set(n,[]))},emit:function(n,t){var f=e.get(n);f&&f.slice().map(function(e){e(t)}),(f=e.get("*"))&&f.slice().map(function(e){e(n,t)})}}}}); | |||
| //# sourceMappingURL=mitt.umd.js.map | |||
| @ -0,0 +1 @@ | |||
| {"version":3,"file":"mitt.umd.js","sources":["../src/index.ts"],"sourcesContent":["export type EventType = string | symbol;\n\n// An event handler can take an optional event argument\n// and should not return a value\nexport type Handler<T = unknown> = (event: T) => void;\nexport type WildcardHandler<T = Record<string, unknown>> = (\n\ttype: keyof T,\n\tevent: T[keyof T]\n) => void;\n\n// An array of all currently registered event handlers for a type\nexport type EventHandlerList<T = unknown> = Array<Handler<T>>;\nexport type WildCardEventHandlerList<T = Record<string, unknown>> = Array<\n\tWildcardHandler<T>\n>;\n\n// A map of event types and their corresponding event handlers.\nexport type EventHandlerMap<Events extends Record<EventType, unknown>> = Map<\n\tkeyof Events | '*',\n\tEventHandlerList<Events[keyof Events]> | WildCardEventHandlerList<Events>\n>;\n\nexport interface Emitter<Events extends Record<EventType, unknown>> {\n\tall: EventHandlerMap<Events>;\n\n\ton<Key extends keyof Events>(type: Key, handler: Handler<Events[Key]>): void;\n\ton(type: '*', handler: WildcardHandler<Events>): void;\n\n\toff<Key extends keyof Events>(\n\t\ttype: Key,\n\t\thandler?: Handler<Events[Key]>\n\t): void;\n\toff(type: '*', handler: WildcardHandler<Events>): void;\n\n\temit<Key extends keyof Events>(type: Key, event: Events[Key]): void;\n\temit<Key extends keyof Events>(\n\t\ttype: undefined extends Events[Key] ? Key : never\n\t): void;\n}\n\n/**\n * Mitt: Tiny (~200b) functional event emitter / pubsub.\n * @name mitt\n * @returns {Mitt}\n */\nexport default function mitt<Events extends Record<EventType, unknown>>(\n\tall?: EventHandlerMap<Events>\n): Emitter<Events> {\n\ttype GenericEventHandler =\n\t\t| Handler<Events[keyof Events]>\n\t\t| WildcardHandler<Events>;\n\tall = all || new Map();\n\n\treturn {\n\t\t/**\n\t\t * A Map of event names to registered handler functions.\n\t\t */\n\t\tall,\n\n\t\t/**\n\t\t * Register an event handler for the given type.\n\t\t * @param {string|symbol} type Type of event to listen for, or `'*'` for all events\n\t\t * @param {Function} handler Function to call in response to given event\n\t\t * @memberOf mitt\n\t\t */\n\t\ton<Key extends keyof Events>(type: Key, handler: GenericEventHandler) {\n\t\t\tconst handlers: Array<GenericEventHandler> | undefined = all!.get(type);\n\t\t\tif (handlers) {\n\t\t\t\thandlers.push(handler);\n\t\t\t} else {\n\t\t\t\tall!.set(type, [handler] as EventHandlerList<Events[keyof Events]>);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Remove an event handler for the given type.\n\t\t * If `handler` is omitted, all handlers of the given type are removed.\n\t\t * @param {string|symbol} type Type of event to unregister `handler` from (`'*'` to remove a wildcard handler)\n\t\t * @param {Function} [handler] Handler function to remove\n\t\t * @memberOf mitt\n\t\t */\n\t\toff<Key extends keyof Events>(type: Key, handler?: GenericEventHandler) {\n\t\t\tconst handlers: Array<GenericEventHandler> | undefined = all!.get(type);\n\t\t\tif (handlers) {\n\t\t\t\tif (handler) {\n\t\t\t\t\thandlers.splice(handlers.indexOf(handler) >>> 0, 1);\n\t\t\t\t} else {\n\t\t\t\t\tall!.set(type, []);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Invoke all handlers for the given type.\n\t\t * If present, `'*'` handlers are invoked after type-matched handlers.\n\t\t *\n\t\t * Note: Manually firing '*' handlers is not supported.\n\t\t *\n\t\t * @param {string|symbol} type The event type to invoke\n\t\t * @param {Any} [evt] Any value (object is recommended and powerful), passed to each handler\n\t\t * @memberOf mitt\n\t\t */\n\t\temit<Key extends keyof Events>(type: Key, evt?: Events[Key]) {\n\t\t\tlet handlers = all!.get(type);\n\t\t\tif (handlers) {\n\t\t\t\t(handlers as EventHandlerList<Events[keyof Events]>)\n\t\t\t\t\t.slice()\n\t\t\t\t\t.map((handler) => {\n\t\t\t\t\t\thandler(evt!);\n\t\t\t\t\t});\n\t\t\t}\n\n\t\t\thandlers = all!.get('*');\n\t\t\tif (handlers) {\n\t\t\t\t(handlers as WildCardEventHandlerList<Events>)\n\t\t\t\t\t.slice()\n\t\t\t\t\t.map((handler) => {\n\t\t\t\t\t\thandler(type, evt!);\n\t\t\t\t\t});\n\t\t\t}\n\t\t}\n\t};\n}\n"],"names":["all","Map","on","type","handler","handlers","get","push","set","off","splice","indexOf","emit","evt","slice","map"],"mappings":"6LA8CCA,GAOA,MAAO,CAINA,IANDA,EAAMA,GAAO,IAAIC,IAchBC,YAA6BC,EAAWC,GACvC,IAAMC,EAAmDL,EAAKM,IAAIH,GAC9DE,EACHA,EAASE,KAAKH,GAEdJ,EAAKQ,IAAIL,EAAM,CAACC,KAWlBK,aAA8BN,EAAWC,GACxC,IAAMC,EAAmDL,EAAKM,IAAIH,GAC9DE,IACCD,EACHC,EAASK,OAAOL,EAASM,QAAQP,KAAa,EAAG,GAEjDJ,EAAKQ,IAAIL,EAAM,MAelBS,cAA+BT,EAAWU,GACzC,IAAIR,EAAWL,EAAKM,IAAIH,GACpBE,GACFA,EACCS,QACAC,IAAI,SAACX,GACLA,EAAQS,MAIXR,EAAWL,EAAKM,IAAI,OAElBD,EACCS,QACAC,IAAI,SAACX,GACLA,EAAQD,EAAMU"} | |||
| @ -0,0 +1,21 @@ | |||
| export declare type EventType = string | symbol; | |||
| export declare type Handler<T = unknown> = (event: T) => void; | |||
| export declare type WildcardHandler<T = Record<string, unknown>> = (type: keyof T, event: T[keyof T]) => void; | |||
| export declare type EventHandlerList<T = unknown> = Array<Handler<T>>; | |||
| export declare type WildCardEventHandlerList<T = Record<string, unknown>> = Array<WildcardHandler<T>>; | |||
| export declare type EventHandlerMap<Events extends Record<EventType, unknown>> = Map<keyof Events | '*', EventHandlerList<Events[keyof Events]> | WildCardEventHandlerList<Events>>; | |||
| export interface Emitter<Events extends Record<EventType, unknown>> { | |||
| all: EventHandlerMap<Events>; | |||
| on<Key extends keyof Events>(type: Key, handler: Handler<Events[Key]>): void; | |||
| on(type: '*', handler: WildcardHandler<Events>): void; | |||
| off<Key extends keyof Events>(type: Key, handler?: Handler<Events[Key]>): void; | |||
| off(type: '*', handler: WildcardHandler<Events>): void; | |||
| emit<Key extends keyof Events>(type: Key, event: Events[Key]): void; | |||
| emit<Key extends keyof Events>(type: undefined extends Events[Key] ? Key : never): void; | |||
| } | |||
| /** | |||
| * Mitt: Tiny (~200b) functional event emitter / pubsub. | |||
| * @name mitt | |||
| * @returns {Mitt} | |||
| */ | |||
| export default function mitt<Events extends Record<EventType, unknown>>(all?: EventHandlerMap<Events>): Emitter<Events>; | |||
| @ -0,0 +1,85 @@ | |||
| { | |||
| "name": "mitt", | |||
| "version": "3.0.1", | |||
| "description": "Tiny 200b functional Event Emitter / pubsub.", | |||
| "module": "dist/mitt.mjs", | |||
| "main": "dist/mitt.js", | |||
| "jsnext:main": "dist/mitt.mjs", | |||
| "umd:main": "dist/mitt.umd.js", | |||
| "source": "src/index.ts", | |||
| "typings": "index.d.ts", | |||
| "exports": { | |||
| "types": "./index.d.ts", | |||
| "module": "./dist/mitt.mjs", | |||
| "import": "./dist/mitt.mjs", | |||
| "require": "./dist/mitt.js", | |||
| "default": "./dist/mitt.mjs" | |||
| }, | |||
| "scripts": { | |||
| "test": "npm-run-all --silent typecheck lint mocha test-types", | |||
| "mocha": "mocha test", | |||
| "test-types": "tsc test/test-types-compilation.ts --noEmit --strict", | |||
| "lint": "eslint src test --ext ts --ext js", | |||
| "typecheck": "tsc --noEmit", | |||
| "bundle": "microbundle -f es,cjs,umd", | |||
| "build": "npm-run-all --silent clean -p bundle -s docs", | |||
| "clean": "rimraf dist", | |||
| "docs": "documentation readme src/index.ts --section API -q --parse-extension ts", | |||
| "release": "npm run -s build -s && npm t && git commit -am $npm_package_version && git tag $npm_package_version && git push && git push --tags && npm publish" | |||
| }, | |||
| "repository": "developit/mitt", | |||
| "keywords": [ | |||
| "events", | |||
| "eventemitter", | |||
| "emitter", | |||
| "pubsub" | |||
| ], | |||
| "homepage": "https://github.com/developit/mitt", | |||
| "authors": [ | |||
| "Jason Miller <jason@developit.ca>" | |||
| ], | |||
| "license": "MIT", | |||
| "files": [ | |||
| "dist", | |||
| "index.d.ts" | |||
| ], | |||
| "mocha": { | |||
| "extension": [ | |||
| "ts" | |||
| ], | |||
| "require": [ | |||
| "ts-node/register", | |||
| "esm" | |||
| ], | |||
| "spec": [ | |||
| "test/*_test.ts" | |||
| ] | |||
| }, | |||
| "prettier": { | |||
| "singleQuote": true, | |||
| "trailingComma": "none" | |||
| }, | |||
| "devDependencies": { | |||
| "@types/chai": "^4.2.11", | |||
| "@types/mocha": "^7.0.2", | |||
| "@types/sinon": "^9.0.4", | |||
| "@types/sinon-chai": "^3.2.4", | |||
| "@typescript-eslint/eslint-plugin": "^5.61.0", | |||
| "@typescript-eslint/parser": "^5.61.0", | |||
| "chai": "^4.2.0", | |||
| "documentation": "^14.0.2", | |||
| "eslint": "^7.32.0", | |||
| "eslint-config-developit": "^1.2.0", | |||
| "eslint-plugin-compat": "^4.1.4", | |||
| "esm": "^3.2.25", | |||
| "microbundle": "^0.12.3", | |||
| "mocha": "^8.0.1", | |||
| "npm-run-all": "^4.1.5", | |||
| "prettier": "^2.8.8", | |||
| "rimraf": "^3.0.2", | |||
| "sinon": "^9.0.2", | |||
| "sinon-chai": "^3.5.0", | |||
| "ts-node": "^10.9.1", | |||
| "typescript": "^4.9.5" | |||
| } | |||
| } | |||
| @ -0,0 +1,18 @@ | |||
| { | |||
| "name": "SpztPad", | |||
| "lockfileVersion": 3, | |||
| "requires": true, | |||
| "packages": { | |||
| "": { | |||
| "dependencies": { | |||
| "mitt": "^3.0.1" | |||
| } | |||
| }, | |||
| "node_modules/mitt": { | |||
| "version": "3.0.1", | |||
| "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", | |||
| "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", | |||
| "license": "MIT" | |||
| } | |||
| } | |||
| } | |||
| @ -0,0 +1,5 @@ | |||
| { | |||
| "dependencies": { | |||
| "mitt": "^3.0.1" | |||
| } | |||
| } | |||
| @ -0,0 +1,32 @@ | |||
| { | |||
| "pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages | |||
| { | |||
| "path": "pages/login/LoginPage", | |||
| "style": { | |||
| "navigationBarTitleText": "", | |||
| "navigationStyle": "custom", | |||
| "app-plus" : { | |||
| "background" : "#0F2265" | |||
| } | |||
| } | |||
| }, | |||
| { | |||
| "path": "pages/index/index", | |||
| "style": { | |||
| "navigationBarTitleText": "", | |||
| "navigationStyle": "custom", | |||
| "app-plus" : { | |||
| "background" : "#0F2265" | |||
| } | |||
| } | |||
| } | |||
| ], | |||
| "globalStyle": { | |||
| "navigationBarTextStyle": "black", | |||
| "navigationBarTitleText": "uni-app", | |||
| "navigationBarBackgroundColor": "#F8F8F8", | |||
| "navigationStyle": "custom", | |||
| "backgroundColor": "#F8F8F8" | |||
| }, | |||
| "uniIdRouter": {} | |||
| } | |||
| @ -0,0 +1,249 @@ | |||
| <template> | |||
| <view class="content" style='background-color:#09154F;height: 784px;'> | |||
| <image src="../../static/image/taitou.png" style="width: 100%;height:7%;position: absolute;"></image> | |||
| <view class="title"> | |||
| <text>控制终端</text> | |||
| </view> | |||
| <view class="optionButton"> | |||
| <span :class="optionIndex==0?'pitch':''" @click="cutOption(0)">控制面板</span> | |||
| <span :class="optionIndex==1?'pitch':''" @click="cutOption(1)">车辆面板</span> | |||
| </view> | |||
| <view class="outButton"> | |||
| <span :class="optionIndex==2?'pitch':''" @click="outLogin()">退出</span> | |||
| </view> | |||
| <controlPage v-if="optionIndex==0" :Data='deviceData'></controlPage> | |||
| <carPage v-if="optionIndex==1" :carData1='carData1' :carData2='carData2' :carData3='carData3'></carPage> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| import controlPage from '/components/controlPage/index.vue'; | |||
| import carPage from '/components/carPage/index.vue'; | |||
| import {httpPost} from '../../utils/requset.js'; | |||
| export default { | |||
| components: { | |||
| controlPage, | |||
| carPage | |||
| }, | |||
| data() { | |||
| return { | |||
| optionIndex:1, | |||
| dataInter:[ | |||
| { | |||
| name:'支架车在线状态:', | |||
| width:0, | |||
| val:'' | |||
| },{ | |||
| name:'左横移限位:', | |||
| width:1, | |||
| val:'' | |||
| },{ | |||
| name:'右横移限位:', | |||
| width:1, | |||
| val:'' | |||
| },{ | |||
| name:'上限位:', | |||
| width:1, | |||
| val:'' | |||
| },{ | |||
| name:'下限位:', | |||
| width:1, | |||
| val:'' | |||
| },{ | |||
| name:'左滚转限位:', | |||
| width:1, | |||
| val:'' | |||
| },{ | |||
| name:'右滚转限位:', | |||
| width:1, | |||
| val:'' | |||
| },{ | |||
| name:'行进位置:', | |||
| width:1, | |||
| val:'' | |||
| },{ | |||
| name:'横移位置:', | |||
| width:1, | |||
| val:'' | |||
| },{ | |||
| name:'滚转位置:', | |||
| width:1, | |||
| val:'' | |||
| },{ | |||
| name:'超重限位:', | |||
| width:1, | |||
| val:'' | |||
| },{ | |||
| name:'升降位置:', | |||
| width:0, | |||
| val:'' | |||
| } | |||
| ], | |||
| carData1:[], | |||
| carData2:[], | |||
| carData3:[], | |||
| deviceData:{}, | |||
| } | |||
| }, | |||
| methods: { | |||
| cutOption(value){ | |||
| this.optionIndex=value | |||
| }, | |||
| outLogin(){ | |||
| uni.showModal({ | |||
| title: '提示', | |||
| content: '是否退出', | |||
| success: (res)=>{ | |||
| if (res.confirm) { | |||
| httpPost({ | |||
| url:'/logout', | |||
| data:{} | |||
| }).then((res)=>{ | |||
| console.log(res) | |||
| uni.reLaunch({ | |||
| url:"/pages/login/LoginPage" | |||
| }) | |||
| }) | |||
| } else if (res.cancel) { | |||
| console.log('用户点击取消'); | |||
| } | |||
| } | |||
| }); | |||
| }, | |||
| deviceAjax(){ | |||
| httpPost({ | |||
| url:'/zhxx/dt/horizonLoadInfo', | |||
| data:{} | |||
| }).then((res)=>{ | |||
| if(res.code==200){ | |||
| this.deviceData=res.data; | |||
| this.carData1=this.carEntsorgen(res.data,1); | |||
| this.carData2=this.carEntsorgen(res.data,2); | |||
| this.carData3=this.carEntsorgen(res.data,3); | |||
| } | |||
| // this.deviceData=this.mock.data; | |||
| // this.carData1=this.carEntsorgen(this.mock.data,1); | |||
| // this.carData2=this.carEntsorgen(this.mock.data,2); | |||
| // this.carData3=this.carEntsorgen(this.mock.data,3); | |||
| // else{ | |||
| // uni.showToast({ | |||
| // title:'接口错误', | |||
| // icon:'error', | |||
| // duration:1200 | |||
| // }) | |||
| // } | |||
| }) | |||
| }, | |||
| carEntsorgen(value,type){ | |||
| let data=value; | |||
| let arrData=this.dataInter; | |||
| if(type==1){ | |||
| arrData[0].val=value.online==1?'在线':'离线'; | |||
| arrData[1].val=value.leftHorizontalLimit; | |||
| arrData[2].val=value.rightHorizontalLimit; | |||
| arrData[3].val=value.downLimit; | |||
| arrData[4].val=value.upLimit; | |||
| arrData[5].val=value.leftTurnLimit; | |||
| arrData[6].val=value.rightTurnLimit; | |||
| arrData[7].val=value.walkAxisPosition; | |||
| arrData[8].val=value.horizontalAxisPosition; | |||
| arrData[9].val=value.turnPosition; | |||
| arrData[10].val=value.overWeightLimit; | |||
| arrData[11].val=value.liftPosition; | |||
| }else if(type==2){ | |||
| arrData[0].val=value.onlineTwo==1?'在线':'离线'; | |||
| arrData[1].val=value.leftHorizontalLimitTwo; | |||
| arrData[2].val=value.rightHorizontalLimitTwo; | |||
| arrData[3].val=value.downLimitTwo; | |||
| arrData[4].val=value.upLimitTwo; | |||
| arrData[5].val=value.leftTurnLimitTwo; | |||
| arrData[6].val=value.rightTurnLimitTwo; | |||
| arrData[7].val=value.walkAxisPositionTwo; | |||
| arrData[8].val=value.horizontalAxisPositionTwo; | |||
| arrData[9].val=value.turnPositionTwo; | |||
| arrData[10].val=value.overWeightLimitTwo; | |||
| arrData[11].val=value.liftPositionTwo; | |||
| }else{ | |||
| arrData[0].val=value.onlineThree==1?'在线':'离线'; | |||
| arrData[1].val=value.leftHorizontalLimitThree; | |||
| arrData[2].val=value.rightHorizontalLimitThree; | |||
| arrData[3].val=value.downLimitThree; | |||
| arrData[4].val=value.upLimitThree; | |||
| arrData[5].val=value.leftTurnLimitThree; | |||
| arrData[6].val=value.rightTurnLimitThree; | |||
| arrData[7].val=value.walkAxisPositionThree; | |||
| arrData[8].val=value.horizontalAxisPositionThree; | |||
| arrData[9].val=value.turnPositionThree; | |||
| arrData[10].val=value.overWeightLimitThree; | |||
| arrData[11].val=value.liftPositionThree; | |||
| } | |||
| return arrData; | |||
| } | |||
| }, | |||
| watch: { | |||
| }, | |||
| onLoad() { | |||
| plus.screen.lockOrientation('landscape-primary'); //强制横屏 | |||
| uni.getSystemInfo({ | |||
| success: (info) => { | |||
| this.screenHeight = info.windowHeight; | |||
| } | |||
| }); | |||
| }, | |||
| mounted() { | |||
| this.deviceAjax(); | |||
| setInterval(()=>{ | |||
| this.deviceAjax(); | |||
| },1000) | |||
| } | |||
| } | |||
| </script> | |||
| <style scoped> | |||
| .pitch { | |||
| color: #0372D7; | |||
| } | |||
| .content { | |||
| position: relative; | |||
| width: 100%; | |||
| } | |||
| .title { | |||
| position: absolute; | |||
| left: 50%; | |||
| transform: translateX(-50%); | |||
| color: #ffffff; | |||
| top: 0; | |||
| font-size: 34px; | |||
| letter-spacing: 4px; | |||
| z-index: 99; | |||
| } | |||
| .optionButton{ | |||
| width: 20%; | |||
| height: 5%; | |||
| position: absolute; | |||
| top: 5.6%; | |||
| font-size: 24px; | |||
| display: flex; | |||
| justify-content: space-around; | |||
| align-items: center; | |||
| color: #ffffff; | |||
| } | |||
| .outButton{ | |||
| font-size: 24px; | |||
| color: #ffffff; | |||
| position: absolute; | |||
| top: 5.6%; | |||
| right: 2%; | |||
| } | |||
| </style> | |||
| @ -0,0 +1,154 @@ | |||
| <template> | |||
| <view class="content"> | |||
| <image class="logo" src="../../static/image/login.png"></image> | |||
| <view class="text-area"> | |||
| <text class="title">管理终端</text> | |||
| </view> | |||
| <view class="user"> | |||
| <input type="text" placeholder="账号" v-model="username" name="username"> | |||
| <input type="password" placeholder="密码" v-model="password" name="password"> | |||
| </view> | |||
| <view class="btn" @tap="skip">登录</view> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| import {httpPost} from '../../utils/requset.js'; | |||
| import {getItem,setItem} from "../util/storageHelper"; | |||
| export default { | |||
| data() { | |||
| return { | |||
| title: 'Hello', | |||
| username: "admin", | |||
| password: "admin123", | |||
| } | |||
| }, | |||
| onLoad() { | |||
| uni.removeStorageSync('NUM', 'message'); | |||
| plus.screen.lockOrientation('landscape-primary'); //强制横屏 | |||
| }, | |||
| methods: { | |||
| skip() { | |||
| let username = this.username; | |||
| let password = this.password; | |||
| let password1='666666'; | |||
| if (username && password) { | |||
| console.log(username, password) | |||
| httpPost({ | |||
| url: '/login', | |||
| data: { | |||
| username, | |||
| password | |||
| } | |||
| }).then((res) => { | |||
| console.log(res) | |||
| if (res.data.code == 200) { | |||
| console.log(res.data) | |||
| let token = res.data.token; | |||
| setItem('token1', token); | |||
| setItem('username', username); | |||
| this.goSystem(); | |||
| }else if(res.data.status == 403){ | |||
| httpPost({ | |||
| url:'/logout', | |||
| data:{} | |||
| }).then((res)=>{ | |||
| console.log(res) | |||
| }) | |||
| } | |||
| }).catch((err) => { | |||
| uni.showToast({ | |||
| title:'无法连接到服务', | |||
| icon:'error' | |||
| }) | |||
| console.log(err) | |||
| uni.showToast({ | |||
| icon:'error', | |||
| title:'连接服务器失败' | |||
| }) | |||
| }) | |||
| } else if (!username) { | |||
| uni.showToast({ | |||
| title: "请输入用户名", | |||
| icon: "error", | |||
| duration: 1000 | |||
| }) | |||
| } else { | |||
| uni.showToast({ | |||
| title: "请输入密码", | |||
| icon: "error", | |||
| duration: 1000 | |||
| }) | |||
| } | |||
| }, | |||
| goSystem() { | |||
| uni.reLaunch({ | |||
| url: "/pages/index/index" | |||
| }) | |||
| } | |||
| }, | |||
| mounted() { | |||
| } | |||
| } | |||
| </script> | |||
| <style> | |||
| .content { | |||
| display: flex; | |||
| flex-direction: column; | |||
| align-items: center; | |||
| background-image: url(../../static/image/login_bg.png); | |||
| background-size: 100% 100%; | |||
| color: #fff; | |||
| width: 100%; | |||
| height: 100%; | |||
| } | |||
| .logo { | |||
| width: 400px; | |||
| height: 320px; | |||
| } | |||
| .text-area { | |||
| display: flex; | |||
| justify-content: center; | |||
| align-items: center; | |||
| margin-bottom: 2%; | |||
| } | |||
| .title { | |||
| font-size: 36px; | |||
| } | |||
| .user { | |||
| width: 90%; | |||
| height: 25%; | |||
| display: flex; | |||
| flex-direction: column; | |||
| align-items: center; | |||
| } | |||
| .user input { | |||
| width: 400px; | |||
| height: 50px; | |||
| border: 1rpx solid #567192; | |||
| outline: none; | |||
| padding-left: 20px; | |||
| margin: 20px 0; | |||
| } | |||
| .btn { | |||
| width: 250px; | |||
| height: 40px; | |||
| background-color: #879FBE; | |||
| color: #0A62CF; | |||
| border: 1rpx solid #567192; | |||
| outline: none; | |||
| margin: 20px 0; | |||
| border-radius: 50px; | |||
| text-align: center; | |||
| line-height: 40px; | |||
| font-size: 20px; | |||
| } | |||
| </style> | |||
| @ -0,0 +1,15 @@ | |||
| export function removeItem(key) { | |||
| uni.removeStorageSync(key) | |||
| } | |||
| export function getItem(key) { | |||
| return uni.getStorageSync(key); | |||
| } | |||
| export function setItem(key, value) { | |||
| uni.setStorageSync(key, value); | |||
| } | |||
| export function clear() { | |||
| uni.clearStorageSync(); | |||
| } | |||
| @ -0,0 +1,13 @@ | |||
| uni.addInterceptor({ | |||
| returnValue (res) { | |||
| if (!(!!res && (typeof res === "object" || typeof res === "function") && typeof res.then === "function")) { | |||
| return res; | |||
| } | |||
| return new Promise((resolve, reject) => { | |||
| res.then((res) => { | |||
| if (!res) return resolve(res) | |||
| return res[0] ? reject(res[0]) : resolve(res[1]) | |||
| }); | |||
| }); | |||
| }, | |||
| }); | |||
| @ -0,0 +1,76 @@ | |||
| /** | |||
| * 这里是uni-app内置的常用样式变量 | |||
| * | |||
| * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量 | |||
| * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App | |||
| * | |||
| */ | |||
| /** | |||
| * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能 | |||
| * | |||
| * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件 | |||
| */ | |||
| /* 颜色变量 */ | |||
| /* 行为相关颜色 */ | |||
| $uni-color-primary: #007aff; | |||
| $uni-color-success: #4cd964; | |||
| $uni-color-warning: #f0ad4e; | |||
| $uni-color-error: #dd524d; | |||
| /* 文字基本颜色 */ | |||
| $uni-text-color:#333;//基本色 | |||
| $uni-text-color-inverse:#fff;//反色 | |||
| $uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息 | |||
| $uni-text-color-placeholder: #808080; | |||
| $uni-text-color-disable:#c0c0c0; | |||
| /* 背景颜色 */ | |||
| $uni-bg-color:#ffffff; | |||
| $uni-bg-color-grey:#f8f8f8; | |||
| $uni-bg-color-hover:#f1f1f1;//点击状态颜色 | |||
| $uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色 | |||
| /* 边框颜色 */ | |||
| $uni-border-color:#c8c7cc; | |||
| /* 尺寸变量 */ | |||
| /* 文字尺寸 */ | |||
| $uni-font-size-sm:12px; | |||
| $uni-font-size-base:14px; | |||
| $uni-font-size-lg:16px; | |||
| /* 图片尺寸 */ | |||
| $uni-img-size-sm:20px; | |||
| $uni-img-size-base:26px; | |||
| $uni-img-size-lg:40px; | |||
| /* Border Radius */ | |||
| $uni-border-radius-sm: 2px; | |||
| $uni-border-radius-base: 3px; | |||
| $uni-border-radius-lg: 6px; | |||
| $uni-border-radius-circle: 50%; | |||
| /* 水平间距 */ | |||
| $uni-spacing-row-sm: 5px; | |||
| $uni-spacing-row-base: 10px; | |||
| $uni-spacing-row-lg: 15px; | |||
| /* 垂直间距 */ | |||
| $uni-spacing-col-sm: 4px; | |||
| $uni-spacing-col-base: 8px; | |||
| $uni-spacing-col-lg: 12px; | |||
| /* 透明度 */ | |||
| $uni-opacity-disabled: 0.3; // 组件禁用态的透明度 | |||
| /* 文章场景相关 */ | |||
| $uni-color-title: #2C405A; // 文章标题颜色 | |||
| $uni-font-size-title:20px; | |||
| $uni-color-subtitle: #555555; // 二级标题颜色 | |||
| $uni-font-size-subtitle:26px; | |||
| $uni-color-paragraph: #3F536E; // 文章段落颜色 | |||
| $uni-font-size-paragraph:15px; | |||
| @ -0,0 +1,24 @@ | |||
| <!DOCTYPE html> | |||
| <html lang="en"> | |||
| <head> | |||
| <meta charset="UTF-8" /> | |||
| <title>View</title> | |||
| <link rel="icon" href="data:,"> | |||
| <link rel="stylesheet" href="app.css" /> | |||
| <script>var __uniConfig = {"globalStyle":{},"darkmode":false}</script> | |||
| <script> | |||
| var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') || | |||
| CSS.supports('top: constant(a)')) | |||
| document.write( | |||
| '<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' + | |||
| (coverSupport ? ', viewport-fit=cover' : '') + '" />') | |||
| </script> | |||
| </head> | |||
| <body> | |||
| <div id="app"></div> | |||
| <script src="uni-app-view.umd.js"></script> | |||
| </body> | |||
| </html> | |||
| @ -0,0 +1,11 @@ | |||
| ;(function(){ | |||
| let u=void 0,isReady=false,onReadyCallbacks=[],isServiceReady=false,onServiceReadyCallbacks=[]; | |||
| const __uniConfig = {"pages":[],"globalStyle":{"backgroundColor":"#F8F8F8","navigationBar":{"backgroundColor":"#F8F8F8","titleText":"uni-app","style":"custom","type":"default","titleColor":"#000000"},"isNVue":false},"nvue":{"compiler":"uni-app","styleCompiler":"uni-app","flex-direction":"column"},"renderer":"auto","appname":"ATIA","splashscreen":{"alwaysShowBeforeRender":true,"autoclose":true},"compilerVersion":"4.66","entryPagePath":"pages/index/index","entryPageQuery":"","realEntryPagePath":"","networkTimeout":{"request":60000,"connectSocket":60000,"uploadFile":60000,"downloadFile":60000},"locales":{},"darkmode":false,"themeConfig":{}}; | |||
| const __uniRoutes = [{"path":"pages/index/index","meta":{"isQuit":true,"isEntry":true,"background":"#0F2265","navigationBar":{"titleText":"","style":"custom","type":"default"},"isNVue":false}}].map(uniRoute=>(uniRoute.meta.route=uniRoute.path,__uniConfig.pages.push(uniRoute.path),uniRoute.path='/'+uniRoute.path,uniRoute)); | |||
| __uniConfig.styles=[];//styles | |||
| __uniConfig.onReady=function(callback){if(__uniConfig.ready){callback()}else{onReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"ready",{get:function(){return isReady},set:function(val){isReady=val;if(!isReady){return}const callbacks=onReadyCallbacks.slice(0);onReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}}); | |||
| __uniConfig.onServiceReady=function(callback){if(__uniConfig.serviceReady){callback()}else{onServiceReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"serviceReady",{get:function(){return isServiceReady},set:function(val){isServiceReady=val;if(!isServiceReady){return}const callbacks=onServiceReadyCallbacks.slice(0);onServiceReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}}); | |||
| service.register("uni-app-config",{create(a,b,c){if(!__uniConfig.viewport){var d=b.weex.config.env.scale,e=b.weex.config.env.deviceWidth,f=Math.ceil(e/d);Object.assign(__uniConfig,{viewport:f,defaultFontSize:16})}return{instance:{__uniConfig:__uniConfig,__uniRoutes:__uniRoutes,global:u,window:u,document:u,frames:u,self:u,location:u,navigator:u,localStorage:u,history:u,Caches:u,screen:u,alert:u,confirm:u,prompt:u,fetch:u,XMLHttpRequest:u,WebSocket:u,webkit:u,print:u}}}}); | |||
| })(); | |||
| @ -0,0 +1 @@ | |||
| (function(){})(); | |||
| @ -0,0 +1 @@ | |||
| if("undefined"==typeof Promise||Promise.prototype.finally||(Promise.prototype.finally=function(e){const t=this.constructor;return this.then((n=>t.resolve(e()).then((()=>n))),(n=>t.resolve(e()).then((()=>{throw n}))))}),"undefined"!=typeof uni&&uni&&uni.requireGlobal){const e=uni.requireGlobal();ArrayBuffer=e.ArrayBuffer,Int8Array=e.Int8Array,Uint8Array=e.Uint8Array,Uint8ClampedArray=e.Uint8ClampedArray,Int16Array=e.Int16Array,Uint16Array=e.Uint16Array,Int32Array=e.Int32Array,Uint32Array=e.Uint32Array,Float32Array=e.Float32Array,Float64Array=e.Float64Array,BigInt64Array=e.BigInt64Array,BigUint64Array=e.BigUint64Array}uni.restoreGlobal&&uni.restoreGlobal(Vue,weex,plus,setTimeout,clearTimeout,setInterval,clearInterval),function(e){"use strict";function t(e,t,...n){uni.__log__?uni.__log__(e,t,...n):console[e].apply(console,[...n,t])}__definePage("pages/index/index",((e,t)=>{const n=e.__vccOpts||e;for(const[o,r]of t)n[o]=r;return n})({data:()=>({screenHeight:""}),methods:{},watch:{},onLoad(){plus.screen.lockOrientation("landscape-primary"),uni.getSystemInfo({success:e=>{this.screenHeight=e.windowHeight}})},onShow(){},onUnload(){}},[["render",function(t,n,o,r,a,i){return e.openBlock(),e.createElementBlock("view",{class:"content",style:{"background-color":"#09154F",height:"784px"}},[e.createElementVNode("image",{src:"/static/image/taitou.png",style:{width:"100%",height:"7%",position:"absolute"}}),e.createElementVNode("view",{class:"title"},[e.createElementVNode("text",null,"spzt控制终端")]),e.createElementVNode("view",{class:"deviceInfo"},[e.createElementVNode("view",{class:"infoDetail"}),e.createElementVNode("view",{class:"buttonContent"},[e.createElementVNode("view",null,[e.createElementVNode("view",{class:"button"},"装填")]),e.createElementVNode("view",null,[e.createElementVNode("view",{class:"button"},"分离")]),e.createElementVNode("view",null,[e.createElementVNode("view",{class:"button"},"组装")]),e.createElementVNode("view",null,[e.createElementVNode("view",{class:"button"})]),e.createElementVNode("view",null,[e.createElementVNode("view",{class:"button"})]),e.createElementVNode("view",null,[e.createElementVNode("view",{class:"button"})])])])])}],["__scopeId","data-v-e640a569"]]));const n={onLaunch:function(){t("log","at App.vue:4","App Launch")},onShow:function(){t("log","at App.vue:7","App Show")},onHide:function(){t("log","at App.vue:10","App Hide")}};const{app:o,Vuex:r,Pinia:a}={app:e.createVueApp(n)};uni.Vuex=r,uni.Pinia=a,o.provide("__globalStyles",__uniConfig.styles),o._component.mpType="app",o._component.render=()=>{},o.mount("#app")}(Vue); | |||
| @ -0,0 +1 @@ | |||
| {"@platforms":["android","iPhone","iPad"],"id":"__UNI__17D2062","name":"ATIA","version":{"name":"1.0.0","code":"100"},"description":"","developer":{"name":"","email":"","url":""},"permissions":{"UniNView":{"description":"UniNView原生渲染"}},"plus":{"useragent":{"value":"uni-app","concatenate":true},"splashscreen":{"autoclose":true,"delay":0,"target":"id:1","waiting":true},"popGesture":"close","launchwebview":{"render":"always","id":"1","kernel":"WKWebview"},"usingComponents":true,"nvueStyleCompiler":"uni-app","compilerVersion":3,"distribute":{"icons":{"android":{"xxxhdpi":"icon-android-xxxhdpi.png"}},"google":{"permissions":["<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>","<uses-permission android:name=\"android.permission.VIBRATE\"/>","<uses-permission android:name=\"android.permission.READ_LOGS\"/>","<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>","<uses-feature android:name=\"android.hardware.camera.autofocus\"/>","<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.CAMERA\"/>","<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>","<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>","<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>","<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>","<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>","<uses-feature android:name=\"android.hardware.camera\"/>","<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"],"packagename":"uni.app.UNI17D2062","custompermissions":true},"apple":{"dSYMs":false,"plistcmds":["Add :UIFileSharingEnabled bool true"],"devices":"universal"},"plugins":{"audio":{"mp3":{"description":"Android平台录音支持MP3格式文件"}}},"debug":true,"syncDebug":true,"orientation":"portrait-primary"},"statusbar":{"immersed":"supportedDevice","style":"dark","background":"#F8F8F8"},"uniStatistics":{"enable":false},"allowsInlineMediaPlayback":true,"uni-app":{"control":"uni-v3","vueVersion":"3","compilerVersion":"4.66","nvueCompiler":"uni-app","renderer":"auto","nvue":{"flex-direction":"column"},"nvueLaunchMode":"normal","webView":{"minUserAgentVersion":"49.0"}},"adid":"124310290005"},"app-harmony":{"useragent":{"value":"uni-app","concatenate":true},"uniStatistics":{"enable":false}},"launch_path":"__uniappview.html"} | |||
| @ -0,0 +1 @@ | |||
| .content[data-v-e640a569]{position:relative;width:100%}.title[data-v-e640a569]{position:absolute;left:50%;transform:translate(-50%);color:#fff;top:0;font-size:34px;letter-spacing:4px;z-index:99}.deviceInfo[data-v-e640a569]{width:100%;height:92%;position:absolute;bottom:0}.infoDetail[data-v-e640a569]{width:100%;height:60%}.buttonContent[data-v-e640a569]{display:flex;flex-wrap:wrap;justify-content:space-around;align-items:center;width:100%;height:40%}.buttonContent>uni-view[data-v-e640a569]{width:30%;height:40%;display:flex;justify-content:center;align-items:center}.button[data-v-e640a569]{width:70%;height:90%;background-color:#0a62cf;border-radius:15px;display:flex;justify-content:center;align-items:center;font-size:30px;color:#fff}.button[data-v-e640a569]:active{opacity:.4} | |||
| @ -0,0 +1,11 @@ | |||
| var __getOwnPropNames = Object.getOwnPropertyNames; | |||
| var __commonJS = (cb, mod) => function __require() { | |||
| return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; | |||
| }; | |||
| var require_app_css = __commonJS({ | |||
| "app.css.js"(exports) { | |||
| const _style_0 = {}; | |||
| exports.styles = [_style_0]; | |||
| } | |||
| }); | |||
| export default require_app_css(); | |||
| @ -0,0 +1,2 @@ | |||
| Promise.resolve("./app.css.js").then(() => { | |||
| }); | |||
| @ -0,0 +1,24 @@ | |||
| <!DOCTYPE html> | |||
| <html lang="en"> | |||
| <head> | |||
| <meta charset="UTF-8" /> | |||
| <title>View</title> | |||
| <link rel="icon" href="data:,"> | |||
| <link rel="stylesheet" href="app.css" /> | |||
| <script>var __uniConfig = {"globalStyle":{},"darkmode":false}</script> | |||
| <script> | |||
| var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') || | |||
| CSS.supports('top: constant(a)')) | |||
| document.write( | |||
| '<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' + | |||
| (coverSupport ? ', viewport-fit=cover' : '') + '" />') | |||
| </script> | |||
| </head> | |||
| <body> | |||
| <div id="app"></div> | |||
| <script src="uni-app-view.umd.js"></script> | |||
| </body> | |||
| </html> | |||
| @ -0,0 +1,11 @@ | |||
| ;(function(){ | |||
| let u=void 0,isReady=false,onReadyCallbacks=[],isServiceReady=false,onServiceReadyCallbacks=[]; | |||
| const __uniConfig = {"pages":[],"globalStyle":{"backgroundColor":"#F8F8F8","navigationBar":{"backgroundColor":"#F8F8F8","titleText":"uni-app","style":"custom","type":"default","titleColor":"#000000"},"isNVue":false},"nvue":{"compiler":"uni-app","styleCompiler":"uni-app","flex-direction":"column"},"renderer":"auto","appname":"ATIA","splashscreen":{"alwaysShowBeforeRender":true,"autoclose":true},"compilerVersion":"4.66","entryPagePath":"pages/index/index","entryPageQuery":"","realEntryPagePath":"","networkTimeout":{"request":60000,"connectSocket":60000,"uploadFile":60000,"downloadFile":60000},"locales":{},"darkmode":false,"themeConfig":{}}; | |||
| const __uniRoutes = [{"path":"pages/index/index","meta":{"isQuit":true,"isEntry":true,"background":"#0F2265","navigationBar":{"titleText":"","style":"custom","type":"default"},"isNVue":false}}].map(uniRoute=>(uniRoute.meta.route=uniRoute.path,__uniConfig.pages.push(uniRoute.path),uniRoute.path='/'+uniRoute.path,uniRoute)); | |||
| __uniConfig.styles=[];//styles | |||
| __uniConfig.onReady=function(callback){if(__uniConfig.ready){callback()}else{onReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"ready",{get:function(){return isReady},set:function(val){isReady=val;if(!isReady){return}const callbacks=onReadyCallbacks.slice(0);onReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}}); | |||
| __uniConfig.onServiceReady=function(callback){if(__uniConfig.serviceReady){callback()}else{onServiceReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"serviceReady",{get:function(){return isServiceReady},set:function(val){isServiceReady=val;if(!isServiceReady){return}const callbacks=onServiceReadyCallbacks.slice(0);onServiceReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}}); | |||
| service.register("uni-app-config",{create(a,b,c){if(!__uniConfig.viewport){var d=b.weex.config.env.scale,e=b.weex.config.env.deviceWidth,f=Math.ceil(e/d);Object.assign(__uniConfig,{viewport:f,defaultFontSize:16})}return{instance:{__uniConfig:__uniConfig,__uniRoutes:__uniRoutes,global:u,window:u,document:u,frames:u,self:u,location:u,navigator:u,localStorage:u,history:u,Caches:u,screen:u,alert:u,confirm:u,prompt:u,fetch:u,XMLHttpRequest:u,WebSocket:u,webkit:u,print:u}}}}); | |||
| })(); | |||
| @ -0,0 +1 @@ | |||
| (function(){})(); | |||
| @ -0,0 +1 @@ | |||
| if("undefined"==typeof Promise||Promise.prototype.finally||(Promise.prototype.finally=function(e){const t=this.constructor;return this.then((n=>t.resolve(e()).then((()=>n))),(n=>t.resolve(e()).then((()=>{throw n}))))}),"undefined"!=typeof uni&&uni&&uni.requireGlobal){const e=uni.requireGlobal();ArrayBuffer=e.ArrayBuffer,Int8Array=e.Int8Array,Uint8Array=e.Uint8Array,Uint8ClampedArray=e.Uint8ClampedArray,Int16Array=e.Int16Array,Uint16Array=e.Uint16Array,Int32Array=e.Int32Array,Uint32Array=e.Uint32Array,Float32Array=e.Float32Array,Float64Array=e.Float64Array,BigInt64Array=e.BigInt64Array,BigUint64Array=e.BigUint64Array}uni.restoreGlobal&&uni.restoreGlobal(Vue,weex,plus,setTimeout,clearTimeout,setInterval,clearInterval),function(e){"use strict";function t(e,t,...n){uni.__log__?uni.__log__(e,t,...n):console[e].apply(console,[...n,t])}__definePage("pages/index/index",((e,t)=>{const n=e.__vccOpts||e;for(const[o,r]of t)n[o]=r;return n})({data:()=>({screenHeight:""}),methods:{},watch:{},onLoad(){plus.screen.lockOrientation("landscape-primary"),uni.getSystemInfo({success:e=>{this.screenHeight=e.windowHeight}})},onShow(){},onUnload(){}},[["render",function(t,n,o,r,a,i){return e.openBlock(),e.createElementBlock("view",{class:"content",style:{"background-color":"#09154F",height:"784px"}},[e.createElementVNode("image",{src:"/static/image/taitou.png",style:{width:"100%",height:"7%",position:"absolute"}}),e.createElementVNode("view",{class:"title"},[e.createElementVNode("text",null,"spzt控制终端")]),e.createElementVNode("view",{class:"deviceInfo"},[e.createElementVNode("view",{class:"infoDetail"}),e.createElementVNode("view",{class:"buttonContent"},[e.createElementVNode("view",null,[e.createElementVNode("view",{class:"button"},"装填")]),e.createElementVNode("view",null,[e.createElementVNode("view",{class:"button"},"分离")]),e.createElementVNode("view",null,[e.createElementVNode("view",{class:"button"},"组装")]),e.createElementVNode("view",null,[e.createElementVNode("view",{class:"button"})]),e.createElementVNode("view",null,[e.createElementVNode("view",{class:"button"})]),e.createElementVNode("view",null,[e.createElementVNode("view",{class:"button"})])])])])}],["__scopeId","data-v-e640a569"]]));const n={onLaunch:function(){t("log","at App.vue:4","App Launch")},onShow:function(){t("log","at App.vue:7","App Show")},onHide:function(){t("log","at App.vue:10","App Hide")}};const{app:o,Vuex:r,Pinia:a}={app:e.createVueApp(n)};uni.Vuex=r,uni.Pinia=a,o.provide("__globalStyles",__uniConfig.styles),o._component.mpType="app",o._component.render=()=>{},o.mount("#app")}(Vue); | |||
| @ -0,0 +1,114 @@ | |||
| { | |||
| "@platforms": [ | |||
| "android", | |||
| "iPhone", | |||
| "iPad" | |||
| ], | |||
| "id": "__UNI__17D2062", | |||
| "name": "ATIA", | |||
| "version": { | |||
| "name": "1.0.0", | |||
| "code": "100" | |||
| }, | |||
| "description": "", | |||
| "developer": { | |||
| "name": "", | |||
| "email": "", | |||
| "url": "" | |||
| }, | |||
| "permissions": { | |||
| "UniNView": { | |||
| "description": "UniNView原生渲染" | |||
| } | |||
| }, | |||
| "plus": { | |||
| "useragent": { | |||
| "value": "uni-app", | |||
| "concatenate": true | |||
| }, | |||
| "splashscreen": { | |||
| "target": "id:1", | |||
| "autoclose": true, | |||
| "waiting": true, | |||
| "delay": 0 | |||
| }, | |||
| "popGesture": "close", | |||
| "launchwebview": { | |||
| "render": "always", | |||
| "id": "1", | |||
| "kernel": "WKWebview" | |||
| }, | |||
| "usingComponents": true, | |||
| "nvueStyleCompiler": "uni-app", | |||
| "compilerVersion": 3, | |||
| "distribute": { | |||
| "icons": { | |||
| "android": { | |||
| "xxxhdpi": "static/image/logo.png" | |||
| } | |||
| }, | |||
| "google": { | |||
| "permissions": [ | |||
| "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>", | |||
| "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>", | |||
| "<uses-permission android:name=\"android.permission.VIBRATE\"/>", | |||
| "<uses-permission android:name=\"android.permission.READ_LOGS\"/>", | |||
| "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>", | |||
| "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>", | |||
| "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>", | |||
| "<uses-permission android:name=\"android.permission.CAMERA\"/>", | |||
| "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>", | |||
| "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>", | |||
| "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>", | |||
| "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>", | |||
| "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>", | |||
| "<uses-feature android:name=\"android.hardware.camera\"/>", | |||
| "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>" | |||
| ] | |||
| }, | |||
| "apple": { | |||
| "dSYMs": false | |||
| }, | |||
| "plugins": { | |||
| "audio": { | |||
| "mp3": { | |||
| "description": "Android平台录音支持MP3格式文件" | |||
| } | |||
| } | |||
| } | |||
| }, | |||
| "statusbar": { | |||
| "immersed": "supportedDevice", | |||
| "style": "dark", | |||
| "background": "#F8F8F8" | |||
| }, | |||
| "uniStatistics": { | |||
| "enable": false | |||
| }, | |||
| "allowsInlineMediaPlayback": true, | |||
| "uni-app": { | |||
| "control": "uni-v3", | |||
| "vueVersion": "3", | |||
| "compilerVersion": "4.66", | |||
| "nvueCompiler": "uni-app", | |||
| "renderer": "auto", | |||
| "nvue": { | |||
| "flex-direction": "column" | |||
| }, | |||
| "nvueLaunchMode": "normal", | |||
| "webView": { | |||
| "minUserAgentVersion": "49.0" | |||
| } | |||
| } | |||
| }, | |||
| "app-harmony": { | |||
| "useragent": { | |||
| "value": "uni-app", | |||
| "concatenate": true | |||
| }, | |||
| "uniStatistics": { | |||
| "enable": false | |||
| } | |||
| }, | |||
| "launch_path": "__uniappview.html" | |||
| } | |||
| @ -0,0 +1 @@ | |||
| .content[data-v-e640a569]{position:relative;width:100%}.title[data-v-e640a569]{position:absolute;left:50%;transform:translate(-50%);color:#fff;top:0;font-size:34px;letter-spacing:4px;z-index:99}.deviceInfo[data-v-e640a569]{width:100%;height:92%;position:absolute;bottom:0}.infoDetail[data-v-e640a569]{width:100%;height:60%}.buttonContent[data-v-e640a569]{display:flex;flex-wrap:wrap;justify-content:space-around;align-items:center;width:100%;height:40%}.buttonContent>uni-view[data-v-e640a569]{width:30%;height:40%;display:flex;justify-content:center;align-items:center}.button[data-v-e640a569]{width:70%;height:90%;background-color:#0a62cf;border-radius:15px;display:flex;justify-content:center;align-items:center;font-size:30px;color:#fff}.button[data-v-e640a569]:active{opacity:.4} | |||
| @ -0,0 +1,11 @@ | |||
| var __getOwnPropNames = Object.getOwnPropertyNames; | |||
| var __commonJS = (cb, mod) => function __require() { | |||
| return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; | |||
| }; | |||
| var require_app_css = __commonJS({ | |||
| "app.css.js"(exports) { | |||
| const _style_0 = {}; | |||
| exports.styles = [_style_0]; | |||
| } | |||
| }); | |||
| export default require_app_css(); | |||
| @ -0,0 +1,2 @@ | |||
| Promise.resolve("./app.css.js").then(() => { | |||
| }); | |||
| @ -0,0 +1,24 @@ | |||
| <!DOCTYPE html> | |||
| <html lang="en"> | |||
| <head> | |||
| <meta charset="UTF-8" /> | |||
| <title>View</title> | |||
| <link rel="icon" href="data:,"> | |||
| <link rel="stylesheet" href="app.css" /> | |||
| <script>var __uniConfig = {"globalStyle":{},"darkmode":false}</script> | |||
| <script> | |||
| var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') || | |||
| CSS.supports('top: constant(a)')) | |||
| document.write( | |||
| '<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' + | |||
| (coverSupport ? ', viewport-fit=cover' : '') + '" />') | |||
| </script> | |||
| </head> | |||
| <body> | |||
| <div id="app"></div> | |||
| <script src="uni-app-view.umd.js"></script> | |||
| </body> | |||
| </html> | |||
| @ -0,0 +1,11 @@ | |||
| ;(function(){ | |||
| let u=void 0,isReady=false,onReadyCallbacks=[],isServiceReady=false,onServiceReadyCallbacks=[]; | |||
| const __uniConfig = {"pages":[],"globalStyle":{"backgroundColor":"#F8F8F8","navigationBar":{"backgroundColor":"#F8F8F8","titleText":"uni-app","style":"custom","type":"default","titleColor":"#000000"},"isNVue":false},"nvue":{"compiler":"uni-app","styleCompiler":"uni-app","flex-direction":"column"},"renderer":"auto","appname":"ATIA","splashscreen":{"alwaysShowBeforeRender":true,"autoclose":true},"compilerVersion":"4.66","entryPagePath":"pages/login/LoginPage","entryPageQuery":"","realEntryPagePath":"","networkTimeout":{"request":60000,"connectSocket":60000,"uploadFile":60000,"downloadFile":60000},"locales":{},"darkmode":false,"themeConfig":{}}; | |||
| const __uniRoutes = [{"path":"pages/login/LoginPage","meta":{"isQuit":true,"isEntry":true,"background":"#0F2265","navigationBar":{"titleText":"","style":"custom","type":"default"},"isNVue":false}},{"path":"pages/index/index","meta":{"background":"#0F2265","navigationBar":{"titleText":"","style":"custom","type":"default"},"isNVue":false}}].map(uniRoute=>(uniRoute.meta.route=uniRoute.path,__uniConfig.pages.push(uniRoute.path),uniRoute.path='/'+uniRoute.path,uniRoute)); | |||
| __uniConfig.styles=[];//styles | |||
| __uniConfig.onReady=function(callback){if(__uniConfig.ready){callback()}else{onReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"ready",{get:function(){return isReady},set:function(val){isReady=val;if(!isReady){return}const callbacks=onReadyCallbacks.slice(0);onReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}}); | |||
| __uniConfig.onServiceReady=function(callback){if(__uniConfig.serviceReady){callback()}else{onServiceReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"serviceReady",{get:function(){return isServiceReady},set:function(val){isServiceReady=val;if(!isServiceReady){return}const callbacks=onServiceReadyCallbacks.slice(0);onServiceReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}}); | |||
| service.register("uni-app-config",{create(a,b,c){if(!__uniConfig.viewport){var d=b.weex.config.env.scale,e=b.weex.config.env.deviceWidth,f=Math.ceil(e/d);Object.assign(__uniConfig,{viewport:f,defaultFontSize:16})}return{instance:{__uniConfig:__uniConfig,__uniRoutes:__uniRoutes,global:u,window:u,document:u,frames:u,self:u,location:u,navigator:u,localStorage:u,history:u,Caches:u,screen:u,alert:u,confirm:u,prompt:u,fetch:u,XMLHttpRequest:u,WebSocket:u,webkit:u,print:u}}}}); | |||
| })(); | |||
| @ -0,0 +1 @@ | |||
| (function(){})(); | |||
| @ -0,0 +1,114 @@ | |||
| { | |||
| "@platforms": [ | |||
| "android", | |||
| "iPhone", | |||
| "iPad" | |||
| ], | |||
| "id": "__UNI__17D2062", | |||
| "name": "ATIA", | |||
| "version": { | |||
| "name": "1.0.0", | |||
| "code": "100" | |||
| }, | |||
| "description": "", | |||
| "developer": { | |||
| "name": "", | |||
| "email": "", | |||
| "url": "" | |||
| }, | |||
| "permissions": { | |||
| "UniNView": { | |||
| "description": "UniNView原生渲染" | |||
| } | |||
| }, | |||
| "plus": { | |||
| "useragent": { | |||
| "value": "uni-app", | |||
| "concatenate": true | |||
| }, | |||
| "splashscreen": { | |||
| "target": "id:1", | |||
| "autoclose": true, | |||
| "waiting": true, | |||
| "delay": 0 | |||
| }, | |||
| "popGesture": "close", | |||
| "launchwebview": { | |||
| "render": "always", | |||
| "id": "1", | |||
| "kernel": "WKWebview" | |||
| }, | |||
| "usingComponents": true, | |||
| "nvueStyleCompiler": "uni-app", | |||
| "compilerVersion": 3, | |||
| "distribute": { | |||
| "icons": { | |||
| "android": { | |||
| "xxxhdpi": "static/image/logo.png" | |||
| } | |||
| }, | |||
| "google": { | |||
| "permissions": [ | |||
| "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>", | |||
| "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>", | |||
| "<uses-permission android:name=\"android.permission.VIBRATE\"/>", | |||
| "<uses-permission android:name=\"android.permission.READ_LOGS\"/>", | |||
| "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>", | |||
| "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>", | |||
| "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>", | |||
| "<uses-permission android:name=\"android.permission.CAMERA\"/>", | |||
| "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>", | |||
| "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>", | |||
| "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>", | |||
| "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>", | |||
| "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>", | |||
| "<uses-feature android:name=\"android.hardware.camera\"/>", | |||
| "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>" | |||
| ] | |||
| }, | |||
| "apple": { | |||
| "dSYMs": false | |||
| }, | |||
| "plugins": { | |||
| "audio": { | |||
| "mp3": { | |||
| "description": "Android平台录音支持MP3格式文件" | |||
| } | |||
| } | |||
| } | |||
| }, | |||
| "statusbar": { | |||
| "immersed": "supportedDevice", | |||
| "style": "dark", | |||
| "background": "#F8F8F8" | |||
| }, | |||
| "uniStatistics": { | |||
| "enable": false | |||
| }, | |||
| "allowsInlineMediaPlayback": true, | |||
| "uni-app": { | |||
| "control": "uni-v3", | |||
| "vueVersion": "3", | |||
| "compilerVersion": "4.66", | |||
| "nvueCompiler": "uni-app", | |||
| "renderer": "auto", | |||
| "nvue": { | |||
| "flex-direction": "column" | |||
| }, | |||
| "nvueLaunchMode": "normal", | |||
| "webView": { | |||
| "minUserAgentVersion": "49.0" | |||
| } | |||
| } | |||
| }, | |||
| "app-harmony": { | |||
| "useragent": { | |||
| "value": "uni-app", | |||
| "concatenate": true | |||
| }, | |||
| "uniStatistics": { | |||
| "enable": false | |||
| } | |||
| }, | |||
| "launch_path": "__uniappview.html" | |||
| } | |||
| @ -0,0 +1,265 @@ | |||
| .deviceInfo[data-v-d6733cbd]{ | |||
| width: 100%; | |||
| height: 90%; | |||
| position: absolute; | |||
| bottom: 0; | |||
| display: flex; | |||
| justify-content: center; | |||
| align-items: center; | |||
| } | |||
| .deviceContent[data-v-d6733cbd]{ | |||
| width: 98%; | |||
| height: 98%; | |||
| display: flex; | |||
| flex-direction: column; | |||
| justify-content: space-between; | |||
| align-items: center; | |||
| } | |||
| .infoShow[data-v-d6733cbd]{ | |||
| width: 100%; | |||
| height: 72%; | |||
| border-radius: 10px; | |||
| background-color: #ffffff; | |||
| } | |||
| .controlButton[data-v-d6733cbd]{ | |||
| width: 100%; | |||
| height: 26%; | |||
| border-radius: 10px; | |||
| background-color: #ffffff; | |||
| } | |||
| .deviceitle[data-v-d6733cbd]{ | |||
| width: 100%; | |||
| border-bottom: 1px solid #ccc; | |||
| display: flex; | |||
| justify-content: center; | |||
| align-items: center; | |||
| font-size: 28px; | |||
| font-weight: bold; | |||
| letter-spacing: 10px; | |||
| background-color: rgb(204, 204, 204,0.4); | |||
| border-radius: 10px 10px 0 0; | |||
| } | |||
| .info[data-v-d6733cbd]{ | |||
| height: 10%; | |||
| } | |||
| .control[data-v-d6733cbd]{ | |||
| height: 28%; | |||
| } | |||
| .deivceData[data-v-d6733cbd]{ | |||
| width: 100%; | |||
| height: 88%; | |||
| display: flex; | |||
| align-items: center; | |||
| } | |||
| .left[data-v-d6733cbd]{ | |||
| width: 32%; | |||
| height: 100%; | |||
| border-right: 1px solid #ccc; | |||
| font-size: 18px; | |||
| } | |||
| .left_top[data-v-d6733cbd]{ | |||
| width: 100%; | |||
| height: 58%; | |||
| display: flex; | |||
| justify-content: space-around; | |||
| flex-wrap: wrap; | |||
| align-items: center; | |||
| border-bottom: 1px solid #ccc; | |||
| } | |||
| .left_top>uni-view[data-v-d6733cbd]{ | |||
| width: 40%; | |||
| height: 20%; | |||
| display: flex; | |||
| justify-content: center; | |||
| align-items: center; | |||
| border:1px solid #ccc; | |||
| border-radius: 10px; | |||
| box-shadow: 1px 1px 3px 1px rgba(0, 0, 0, 0.12); | |||
| } | |||
| .Icon[data-v-d6733cbd]{ | |||
| width: 24px; | |||
| height: 24px; | |||
| } | |||
| .left-bottom[data-v-d6733cbd]{ | |||
| width: 100%; | |||
| height: 36%; | |||
| display: flex; | |||
| flex-direction: column; | |||
| justify-content: space-around; | |||
| align-items: center; | |||
| font-size: 16px; | |||
| padding-top: 2%; | |||
| } | |||
| .left-bottom>uni-view[data-v-d6733cbd]{ | |||
| width: 70%; | |||
| display: flex; | |||
| justify-content: space-between; | |||
| align-items: center; | |||
| } | |||
| .left-bottom>uni-view>uni-view[data-v-d6733cbd]{ | |||
| width: 32%; | |||
| display: flex; | |||
| justify-content: start; | |||
| align-items: center; | |||
| } | |||
| .controlContent[data-v-d6733cbd]{ | |||
| width: 100%; | |||
| height: 74%; | |||
| display: flex; | |||
| justify-content: space-around; | |||
| align-items: center; | |||
| } | |||
| .controlContent>uni-view[data-v-d6733cbd]{ | |||
| width: 12%; | |||
| height: 40%; | |||
| background-color: #42B983; | |||
| color: #ffffff; | |||
| font-size: 24px; | |||
| display: flex; | |||
| justify-content: center; | |||
| align-items: center; | |||
| border-radius: 10px; | |||
| } | |||
| .controlContent>uni-view[data-v-d6733cbd]:active{ | |||
| opacity: 0.6; | |||
| } | |||
| .right[data-v-d6733cbd]{ | |||
| width: 68%; | |||
| height: 100%; | |||
| display: flex; | |||
| flex-direction: column; | |||
| justify-content: space-around; | |||
| align-items: center; | |||
| font-size: 18px; | |||
| } | |||
| .cameraInfo[data-v-d6733cbd],.directionInfo[data-v-d6733cbd],.angleInfo[data-v-d6733cbd],.encoderInfo[data-v-d6733cbd]{ | |||
| width: 96%; | |||
| height: 11%; | |||
| display: flex; | |||
| justify-content: space-between; | |||
| align-items: center; | |||
| } | |||
| .cameraInfo>uni-view[data-v-d6733cbd],.directionInfo>uni-view[data-v-d6733cbd],.angleInfo>uni-view[data-v-d6733cbd],.encoderInfo>uni-view[data-v-d6733cbd]{ | |||
| width: 20%; | |||
| height: 100%; | |||
| display: flex; | |||
| justify-content: start; | |||
| align-items: center; | |||
| border-radius: 10px; | |||
| border: 1px solid #ccc; | |||
| box-shadow: 1px 1px 3px 1px rgba(0, 0, 0, 0.12); | |||
| padding: 0 3%; | |||
| } | |||
| .infoTitle[data-v-d6733cbd]{ | |||
| /* width: 52%; */ | |||
| display: flex; | |||
| justify-content: center; | |||
| align-items: center | |||
| } | |||
| .detail[data-v-d6733cbd]{ | |||
| /* width: 28%; */ | |||
| /* background-color: #ccc; */ | |||
| } | |||
| .optionWidth[data-v-5961d202]{ | |||
| width: 92% !important; | |||
| } | |||
| .carInfo[data-v-5961d202]{ | |||
| width: 100%; | |||
| height: 90%; | |||
| position: absolute; | |||
| bottom: 0; | |||
| display: flex; | |||
| justify-content: center; | |||
| align-items: center; | |||
| } | |||
| .carContent[data-v-5961d202]{ | |||
| width: 98%; | |||
| height: 98%; | |||
| display: flex; | |||
| justify-content: space-between; | |||
| align-items: center; | |||
| } | |||
| .carContent>uni-view[data-v-5961d202]{ | |||
| width: 33%; | |||
| height: 100%; | |||
| border-radius: 10px; | |||
| background-color: #ffffff; | |||
| } | |||
| .carTitle[data-v-5961d202]{ | |||
| display: flex; | |||
| justify-content: center; | |||
| align-items: center; | |||
| border-bottom: 1px solid #ccc; | |||
| width: 100%; | |||
| height: 8%; | |||
| font-size: 24px; | |||
| background-color: rgb(204, 204, 204,0.4); | |||
| border-radius: 10px 10px 0 0; | |||
| } | |||
| .carDetail[data-v-5961d202]{ | |||
| width: 100%; | |||
| height: 92%; | |||
| display: flex; | |||
| justify-content: space-around; | |||
| align-items: center; | |||
| flex-wrap: wrap; | |||
| } | |||
| .carDetail>uni-view[data-v-5961d202]{ | |||
| width: 42%; | |||
| height: 8%; | |||
| border-radius: 10px; | |||
| border: 1px solid #ccc; | |||
| box-shadow: 1px 1px 3px 1px rgba(0, 0, 0, 0.12); | |||
| display: flex; | |||
| justify-content: start; | |||
| align-items: center; | |||
| padding-left: 4%; | |||
| font-size: 18px; | |||
| } | |||
| .carDetail>uni-view>span[data-v-5961d202]{ | |||
| display: flex; | |||
| height: 50%; | |||
| align-items: end; | |||
| } | |||
| .pitch[data-v-1cf27b2a] { | |||
| color: #0372D7; | |||
| } | |||
| .content[data-v-1cf27b2a] { | |||
| position: relative; | |||
| width: 100%; | |||
| } | |||
| .title[data-v-1cf27b2a] { | |||
| position: absolute; | |||
| left: 50%; | |||
| transform: translateX(-50%); | |||
| color: #ffffff; | |||
| top: 0; | |||
| font-size: 34px; | |||
| letter-spacing: 4px; | |||
| z-index: 99; | |||
| } | |||
| .optionButton[data-v-1cf27b2a]{ | |||
| width: 20%; | |||
| height: 5%; | |||
| position: absolute; | |||
| top: 5.6%; | |||
| font-size: 24px; | |||
| display: flex; | |||
| justify-content: space-around; | |||
| align-items: center; | |||
| color: #ffffff; | |||
| } | |||
| .outButton[data-v-1cf27b2a]{ | |||
| font-size: 24px; | |||
| color: #ffffff; | |||
| position: absolute; | |||
| top: 5.6%; | |||
| right: 2%; | |||
| } | |||
| @ -0,0 +1,52 @@ | |||
| .content { | |||
| display: flex; | |||
| flex-direction: column; | |||
| align-items: center; | |||
| background-image: url(../../static/image/login_bg.png); | |||
| background-size: 100% 100%; | |||
| color: #fff; | |||
| width: 100%; | |||
| height: 100%; | |||
| } | |||
| .logo { | |||
| width: 400px; | |||
| height: 320px; | |||
| } | |||
| .text-area { | |||
| display: flex; | |||
| justify-content: center; | |||
| align-items: center; | |||
| margin-bottom: 2%; | |||
| } | |||
| .title { | |||
| font-size: 36px; | |||
| } | |||
| .user { | |||
| width: 90%; | |||
| height: 25%; | |||
| display: flex; | |||
| flex-direction: column; | |||
| align-items: center; | |||
| } | |||
| .user uni-input { | |||
| width: 400px; | |||
| height: 50px; | |||
| border: 0.03125rem solid #567192; | |||
| outline: none; | |||
| padding-left: 20px; | |||
| margin: 20px 0; | |||
| } | |||
| .btn { | |||
| width: 250px; | |||
| height: 40px; | |||
| background-color: #879FBE; | |||
| color: #0A62CF; | |||
| border: 0.03125rem solid #567192; | |||
| outline: none; | |||
| margin: 20px 0; | |||
| border-radius: 50px; | |||
| text-align: center; | |||
| line-height: 40px; | |||
| font-size: 20px; | |||
| } | |||