index.vue 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965
  1. <template>
  2. <view class="app-content">
  3. <!-- <img src="../../static/beijing.png" alt="" class="tuku"> -->
  4. <Navs :navname.sync="navname" @fall="fall" :index='index'></Navs>
  5. <view class="content">
  6. <view class="content_top">
  7. <view class="craid" v-if="flightDetail&&flightDetail.carrierFlights">
  8. <view class="craid_data">
  9. <p>{{flightDetail.carrierFlights}}</p>
  10. <span>{{flightDetail.carrierFlightsDate}}</span>
  11. </view>
  12. <view class="craid_data">
  13. <p>{{flightDetail.outAirport}}</p>
  14. <span>{{flightDetail.scheduleTakeOffTime?flightDetail.scheduleTakeOffTime:"-"}}</span>
  15. </view>
  16. <view class="fight_center">
  17. <view class="type">
  18. {{flightDetail.normalState}}
  19. </view>
  20. <view class="aircraft"></view>
  21. </view>
  22. <view class="craid_data">
  23. <p>{{flightDetail.landAirport}}</p>
  24. <span>{{flightDetail.scheduleLandInTime?flightDetail.scheduleLandInTime:"-"}}</span>
  25. </view>
  26. </view>
  27. <view class="craids" v-if="!flightDetail.carrierFlights">
  28. <p>暂无航班信息</p>
  29. </view>
  30. <view class="scanning">
  31. <view :class="getFooterClass">
  32. <input class="input" v-model.trim="stratvalue" type="text"
  33. placeholder-style="font-size:.8125rem;color:rgb(189, 214, 231);display:flex;justify-content: start;"
  34. placeholder="请输入操作位置" />
  35. <view class="log_l"></view>
  36. <view class="log" @tap="scan('1')"></view>
  37. </view>
  38. <view :class="getFooterClasser" v-if="navname == '装车'">
  39. <input class="input" v-model.trim="container_ID" type="text"
  40. placeholder-style="font-size:.8125rem;color:rgb(189, 214, 231);display:flex;justify-content: start;"
  41. placeholder="请输入容器编号" />
  42. <view class="log_l"></view>
  43. <view class="log" @tap="scan('2')"></view>
  44. </view>
  45. <view :class="getlooterClass">
  46. <input class="input" v-model.trim="currentLuggageNum" disabled="true" @tap="baggageEntry" type="text"
  47. placeholder-style="font-size:.8125rem;color:rgb(189, 214, 231);display:flex;justify-content: start;"
  48. placeholder="请输入行李号" />
  49. <view class="log_l"></view>
  50. <view class="log" @tap="scan('3')"></view>
  51. </view>
  52. </view>
  53. </view>
  54. <view class="content_bootom" :style="{top:dataheight}">
  55. <view class="choice" @touchmove="movetran">
  56. <view :class="action === true ?'handle':'handles'" @tap="clicker(true)">已处理</view>
  57. <view :class="action !== true ?'handle':'handles'" @tap="clicker(false)">未处理</view>
  58. </view>
  59. <scroll-view scroll-y="true" class="scroll-Y">
  60. <view v-if="action === true" :class="item.types ? 'ups':'up'" v-for="(item, index) in listdate1" :key="index"
  61. @touchstart="start" @touchend="(e)=>end(e,item)">
  62. <view class="list" @tap="toDetail(item.luggageNum)">行李编号:{{ item.luggageNum }}</view>
  63. <view :class="item.abnormalState!=null?'error':'normal'">{{item.abnormalState!=null?item.abnormalName:"正常"}}</view>
  64. <view class="down_up" v-if="pagename == 'LOAD' && item.abnormalState!='OFF'" @tap="up(item,index)"></view>
  65. <view class="delete" v-if="pagename == 'LOAD' && item.abnormalState!='OFF'">
  66. <view class="log" @click="()=>up(item,index)"></view>
  67. </view>
  68. </view>
  69. <view v-if="action !== true" :class="item.types ? 'ups':'up'" v-for="(item, index) in listdate2" :key="index">
  70. <view class="list" @tap="toDetail(item.luggageNum)">行李编号:{{ item.luggageNum }}</view>
  71. <view :class="item.abnormalState!=null?'error':'normal'">{{item.abnormalState!=null?item.abnormalName:"正常"}}</view>
  72. <!-- <view class="down_up" @tap="up"></view> -->
  73. </view>
  74. </scroll-view>
  75. <view class="but" v-if="!action&&listdate2.length>0" @tap="clickOrder">一键处理</view>
  76. </view>
  77. </view>
  78. <!-- 提示信息和下拉弹窗 -->
  79. <mask-model :headername="headername" :typeShow="typeShow" :tabname="tabname" ref="showMask" btnType="1"
  80. @confirm="confirm" @next="next" @load="load" @cancel="cancel" titleColoe="#666666" cancelColor="#666666" confirmColor="#007AFF"
  81. :maskTitle="maskTitle"></mask-model>
  82. <!-- 一键弹窗 -->
  83. <mask-model :headername="headername" :typeShow="typeShow" ref="showMask2" btnType="1"
  84. @confirm="confirm2" @cancel="cancel" titleColoe="#666666" cancelColor="#666666" confirmColor="#007AFF"
  85. :maskTitle="maskTitle2"></mask-model>
  86. <!-- 航班开始操作弹窗 -->
  87. <mask-model :headername="headername" :typeShow="typeShow" ref="showMask3" btnType="1"
  88. @confirm="confirm3" @cancel="cancel3" titleColoe="#666666" cancelColor="#666666" confirmColor="#007AFF"
  89. :maskTitle="maskTitle3"></mask-model>
  90. </view>
  91. </template>
  92. <script>
  93. import Navs from '../../components/header/navs.vue'
  94. import maskModel from '../../components/mask-model/mask-model.vue'
  95. import {
  96. Format
  97. } from '@/components/utils/validate'
  98. export default {
  99. data() {
  100. return {
  101. isShow: true,
  102. dataheight: '20.75rem',
  103. scrollTop: 0,
  104. input: '',
  105. arr: [],
  106. navname: '',
  107. action: true,
  108. listdate:[],
  109. listdate1: [],
  110. loadNumber:0,
  111. listdate2: [],
  112. startData: {
  113. clientX: 0,
  114. clientY: 0
  115. },
  116. stratvalue: '', //开始位置
  117. container_ID:'',
  118. endvalue: '', //结束位置
  119. maskTitle: '该行李不属于当前航班,请选择处理方式。',
  120. maskTitle2:"",
  121. maskTitle3:"",
  122. tabname: '', //航班名称
  123. typeShow: true,
  124. headername: '提示信息',
  125. flightNO:null,
  126. flightDate:null,
  127. onFlightDate:null,
  128. flightDetail:{},
  129. index:0,
  130. currentLuggageNum:null,
  131. pagename:"",
  132. currentLuggage:null,
  133. currentIndex:null,
  134. abnormalList:[
  135. {
  136. "type":null,
  137. "name":"无"
  138. },
  139. {
  140. "type":"NAL",
  141. "name":"未被授权的装载"
  142. },
  143. {
  144. "type":"OFF",
  145. "name":"已卸载"
  146. },
  147. {
  148. "type":"UNS",
  149. "name":"未找到"
  150. },
  151. {
  152. "type":"OND",
  153. "name":"在场未装载,未被授权"
  154. },
  155. {
  156. "type":"ONA",
  157. "name":"在场未装载,已授权"
  158. }
  159. ],
  160. }
  161. },
  162. created(option) {},
  163. onLoad(option) {
  164. this.pagename = option.item
  165. this.flightNO = option.flightNO
  166. this.flightDate = option.date
  167. this.getNode()
  168. switch (this.pagename){
  169. case "SORT":
  170. this.navname = "分拣"
  171. break;
  172. case "LOAD":
  173. this.navname = "装车"
  174. break;
  175. case "INFL":
  176. this.navname = "装机"
  177. break;
  178. case "UNLOAD":
  179. this.navname = "卸机"
  180. break;
  181. case "ARRIVED":
  182. this.navname = "到达"
  183. break;
  184. default:
  185. break;
  186. }
  187. if(this.flightNO!="null"&&this.flightNO){
  188. this.getFlightData()
  189. this.getluggageList()
  190. }
  191. },
  192. onUnload() {
  193. uni.$off("scancodemsg");
  194. // this.$refs.showMask.show();
  195. },
  196. onShow() {
  197. uni.$on("scancodemsg", (data) => {
  198. if (data.msg.length > 9) {
  199. this.currentLuggageNum = data.msg.trim()
  200. this.getluggage(this.currentLuggageNum,true)
  201. }
  202. });
  203. if (this.$storage.getJson('airport')) {
  204. this.index = this.$storage.getJson('airport')
  205. }
  206. },
  207. onHide() {
  208. },
  209. mounted() {
  210. // this.$refs.showMask.show();
  211. // console.log(this.stratvalue.length)
  212. },
  213. computed: {
  214. getFooterClass() {
  215. return this.stratvalue ? 'scanning_cds' : 'scanning_cd'
  216. },
  217. getlooterClass() {
  218. return this.currentLuggageNum ? 'scanning_cds' : 'scanning_cd'
  219. },
  220. getFooterClasser() {
  221. return this.container_ID ? 'scanning_cds' : 'scanning_cd'
  222. },
  223. },
  224. components: {
  225. Navs,
  226. maskModel: maskModel,
  227. },
  228. methods: {
  229. scan(type){
  230. let that = this
  231. uni.scanCode({
  232. onlyFromCamera: true,
  233. success: function (res) {
  234. if(type=="1"){
  235. that.stratvalue = res.result;
  236. }
  237. else if(type=="2"){
  238. that.container_ID = res.result;
  239. }
  240. else{
  241. that.currentLuggageNum = res.result
  242. that.getluggage(that.currentLuggageNum,true)
  243. }
  244. }
  245. });
  246. },
  247. async getNode() {
  248. let data = {
  249. "serviceId": 3003,
  250. "dataContent": {},
  251. "event": "0"
  252. }
  253. await this.$http.httpPost('/openApi/query', data).then(res => {
  254. if (res.code == "0") {
  255. res.returnData.map(item => {
  256. if(item.nodeCode == this.pagename){
  257. this.stratvalue = item.nodeDescribe;
  258. }
  259. })
  260. }
  261. })
  262. },
  263. next(data){
  264. this.flightNO = this.currentLuggage.flightNo;
  265. this.flightDate = this.currentLuggage.flightDate;
  266. this.getFlightData()
  267. this.getluggageList()
  268. this.$refs.showMask.hide();
  269. },
  270. load(){
  271. this.listdate1.unshift({
  272. "luggageNum" : this.currentLuggage.luggageNum
  273. })
  274. this.setLuggage()
  275. },
  276. async getFlightData() {
  277. let data = {
  278. "serviceId": 3000,
  279. "page": 1,
  280. "pageSize": 10,
  281. "dataContent": [{
  282. "carrierFlights":this.flightNO
  283. }],
  284. "event": "0"
  285. }
  286. await this.$http.httpPost('/openApi/query', data).then(res => {
  287. if (res.code == "0"&&res.returnData.length>0) {
  288. this.flightDetail = []
  289. if(this.flightDate&&this.flightDate!="null"){
  290. res.returnData.map(item =>{
  291. if(this.flightDate == item.carrierFlightsDate){
  292. this.flightDetail = item
  293. }
  294. })
  295. }
  296. else{
  297. this.flightDetail = res.returnData[0]
  298. }
  299. if(this.flightDetail.scheduleTakeOffTime){
  300. this.flightDetail.scheduleTakeOffTime = this.flightDetail.scheduleTakeOffTime.split("T")[1]
  301. }
  302. else{
  303. item.scheduleTakeOffTime = "-"
  304. }
  305. if(this.flightDetail.scheduleLandInTime){
  306. this.flightDetail.scheduleLandInTime = this.flightDetail.scheduleLandInTime.split("T")[1]
  307. }
  308. else{
  309. item.scheduleLandInTime = "-"
  310. }
  311. }
  312. else{
  313. uni.showToast({
  314. icon:'none',
  315. title: "未查询到"+this.flightNO+"航班信息",
  316. duration: 5000
  317. });
  318. }
  319. })
  320. },
  321. async getluggageList(){
  322. let data = {
  323. "serviceId": 3001,
  324. "dataContent": {
  325. "carrierFlights": this.flightNO,
  326. "carrierFlightsDate":this.flightDate
  327. },
  328. "event": "0"
  329. }
  330. await this.$http.httpPost('/openApi/query', data).then(res => {
  331. console.log(res)
  332. this.listdate1 = []
  333. this.listdate2 = []
  334. if (res.code == "0") {
  335. this.listdate = res.returnData;
  336. res.returnData.map(item => {
  337. this.abnormalList.map(item2 => {
  338. if(item.abnormalState == item2.type){
  339. item.abnormalName = item2.name
  340. }
  341. })
  342. switch (this.pagename){
  343. case "SORT":
  344. if(item.sorting_time!=null){
  345. this.listdate1.push(item)
  346. }
  347. else{
  348. this.listdate2.push(item)
  349. }
  350. break;
  351. case "LOAD":
  352. if(item.loading_time!=null){
  353. this.listdate1.push(item)
  354. }
  355. else{
  356. this.listdate2.push(item)
  357. }
  358. break;
  359. case "INFL":
  360. if(item.installation_time!=null){
  361. this.listdate1.push(item)
  362. }
  363. else{
  364. this.listdate2.push(item)
  365. }
  366. break;
  367. case "UNLOAD":
  368. if(item.unloadtime!=null){
  369. this.listdate1.push(item)
  370. }
  371. else{
  372. this.listdate2.push(item)
  373. }
  374. break;
  375. case "ARRIVED":
  376. if(item.arrivedtime!=null){
  377. this.listdate1.push(item)
  378. }
  379. else{
  380. this.listdate2.push(item)
  381. }
  382. break;
  383. default:
  384. break;
  385. }
  386. })
  387. this.loadNumber = this.listdate2.length;
  388. this.setLuggage()
  389. }
  390. })
  391. },
  392. async getluggage(num,isSend){
  393. let data = {
  394. "serviceId": 3002,
  395. "page": 1,
  396. "pageSize": 10,
  397. "dataContent": {
  398. "luggageNum":num,//行李号
  399. },
  400. "event": "0"
  401. }
  402. await this.$http.httpPost('/openApi/query', data).then(res => {
  403. if(res.code == "0"&&res.returnData.length>0){
  404. this.currentLuggage = res.returnData[0];
  405. console.log(this.flightNO)
  406. if(this.flightNO !="null"&&this.flightNO&&this.flightNO == res.returnData[0].flightNo&&isSend==true){
  407. this.setLuggage()
  408. }
  409. else if(this.flightNO !="null"&&this.flightNO&&this.flightNO != res.returnData[0].flightNo){
  410. this.tabname = res.returnData[0].flightNo
  411. this.typeShow = true
  412. this.$refs.showMask.show();
  413. }
  414. else if(this.flightNO =="null"){
  415. this.typeShow = false
  416. this.maskTitle3 = '是否对航班:'+ res.returnData[0].flightNo + "行李进行"+this.navname+"操作?"
  417. this.headername = '提示'
  418. this.$refs.showMask3.show();
  419. }
  420. }
  421. else{
  422. uni.showToast({
  423. icon:'none',
  424. title: "未查询到"+this.currentLuggageNum+"行李信息",
  425. duration: 5000
  426. });
  427. }
  428. })
  429. },
  430. setLuggage(){
  431. this.currentLuggage.nodeCode = this.pagename;
  432. this.currentLuggage.nodeName = this.navname;
  433. this.currentLuggage.location_code = this.stratvalue;
  434. this.currentLuggage.processing_time = this.datatime();
  435. switch (this.pagename){
  436. case "SORT":
  437. this.listdate2.map((item,index) => {
  438. if(item.luggageNum == this.currentLuggageNum && item.sorting_time == null){
  439. this.listdate2.splice(index,1)
  440. item.sorting_time = this.datatime();
  441. item.sortState = true;
  442. this.listdate1.unshift(item);
  443. }
  444. })
  445. break;
  446. case "LOAD":
  447. this.currentLuggage.container_ID = this.container_ID
  448. this.currentLuggage.loadNumber = this.loadNumber;
  449. this.listdate2.map((item,index) => {
  450. if(item.luggageNum == this.currentLuggageNum){
  451. if(item.loading_time == null){
  452. this.listdate2.splice(index,1)
  453. item.loading_time = this.datatime();
  454. item.loadState = true;
  455. this.listdate1.unshift(item);
  456. }
  457. }
  458. })
  459. break;
  460. case "INFL":
  461. this.listdate2.map((item,index) => {
  462. if(item.luggageNum == this.currentLuggageNum){
  463. if(item.installation_time == null){
  464. this.listdate2.splice(index,1)
  465. item.installation_time = this.datatime();
  466. this.listdate1.unshift(item);
  467. }
  468. }
  469. })
  470. break;
  471. case "UNLOAD":
  472. this.listdate2.map((item,index) => {
  473. if(item.luggageNum == this.currentLuggageNum){
  474. if(item.unloadtime == null){
  475. this.listdate2.splice(index,1)
  476. item.unloadtime = this.datatime();
  477. this.listdate1.unshift(item);
  478. }
  479. }
  480. })
  481. break;
  482. case "ARRIVED":
  483. this.listdate2.map((item,index) => {
  484. if(item.luggageNum == this.currentLuggageNum){
  485. if(item.arrivedtime == null){
  486. this.listdate2.splice(index,1)
  487. item.arrivedtime = this.datatime();
  488. this.listdate1.unshift(item);
  489. }
  490. }
  491. })
  492. break;
  493. default:
  494. break;
  495. }
  496. this.sendData()
  497. },
  498. async sendData(type){
  499. this.currentLuggage.sourceAirport = this.$storage.get('airportName');
  500. this.currentLuggage.ID = null;
  501. this.currentLuggage.dataType = "BPM";
  502. this.currentLuggage.agentNumber = this.$storage.getJson("users").user_name;
  503. this.currentLuggage.device_ID = uni.getDeviceInfo().deviceId;
  504. let data = {
  505. "serviceId": 3005,
  506. "dataContent": [
  507. this.currentLuggage
  508. ],
  509. "event": "0"
  510. }
  511. await this.$http.httpPost('/openApi/query', data).then(res => {
  512. console.log(res)
  513. if (res.code == "0") {
  514. uni.showToast({
  515. icon:'none',
  516. title: "操作行李:"+this.currentLuggageNum+"成功",
  517. duration: 5000
  518. });
  519. }
  520. else{
  521. uni.showToast({
  522. icon:'none',
  523. title: "操作失败",
  524. duration: 5000
  525. });
  526. }
  527. })
  528. },
  529. datatime() {
  530. let dataTime = Format("yyyy-MM-dd hh:mm:ss", new Date());
  531. return dataTime
  532. },
  533. //下拉
  534. up(item,index) {
  535. this.currentLuggageNum = item.luggageNum;
  536. this.getluggage(this.currentLuggageNum,false);
  537. this.currentIndex = index
  538. this.typeShow = false
  539. this.maskTitle = '是否确定要拉下该件行李?'
  540. this.headername = '下拉提示'
  541. this.$refs.showMask.show();
  542. },
  543. confirm: function(e) { //确定按钮
  544. this.currentLuggage.abnormalState="OFF"
  545. this.currentLuggage.abnormalName="拉下"
  546. let arr = JSON.parse(JSON.stringify(this.listdate1))
  547. arr[this.currentIndex]=JSON.parse(JSON.stringify(this.currentLuggage))
  548. this.listdate1 = arr;
  549. this.sendData()
  550. },
  551. confirm2: function(e) { //确定一键操作按钮
  552. this.cancel()
  553. this.listdate2.map((item,index) =>{
  554. this.currentLuggage = item;
  555. this.currentLuggageNum = item.luggageNum;
  556. this.setLuggage();
  557. this.listdate1.unshift(item)
  558. })
  559. this.listdate2 = [];
  560. },
  561. confirm3: function(e) { //确定按钮
  562. this.flightNO = this.currentLuggage.flightNo
  563. this.flightDate = this.currentLuggage.flightDate
  564. this.getFlightData();
  565. this.getluggageList();
  566. },
  567. cancel3: function() { //取消按钮
  568. this.flightNO=null
  569. },
  570. cancel: function() { //取消按钮
  571. console.log('您点击了取消按钮');
  572. },
  573. toDetail(num){
  574. uni.navigateTo({
  575. // url: "/pages/detail/index?luggageNum=" + data.msg
  576. url: "/pages/detail/index?luggageNum="+num
  577. })
  578. },
  579. clickOrder() {
  580. this.typeShow = false
  581. this.maskTitle2 = '是否确定要一键'+this.navname+'全部行李?'
  582. this.headername = '操作提示'
  583. this.$refs.showMask2.show();
  584. },
  585. baggageEntry() {
  586. uni.navigateTo({
  587. url: "/pages/baggageEntry/index"
  588. })
  589. },
  590. locationEntry() {
  591. uni.navigateTo({
  592. url: "/pages/locationEntry/index"
  593. })
  594. },
  595. fall() {
  596. uni.navigateBack({
  597. delta:1
  598. })
  599. },
  600. clicker(e) {
  601. this.action = !this.action
  602. if(e != this.action){
  603. this.action = e
  604. }
  605. },
  606. movetran(e) {
  607. let arr = uni.getSystemInfoSync().windowHeight;
  608. this.dataheight = (e.changedTouches[0].clientY / 16) + 'rem'
  609. if (e.changedTouches[0].clientY / 16 > 20.75) {
  610. this.dataheight = 20.75 + 'rem'
  611. } else if (e.changedTouches[0].clientY / 16 < 7.3125) {
  612. this.dataheight = 6.3125 + 'rem'
  613. }
  614. },
  615. start(e) {
  616. this.startData.clientX = e.changedTouches[0].clientX;
  617. },
  618. end(e, item) {
  619. const subX = e.changedTouches[0].clientX - this.startData.clientX;
  620. if (subX > 50) {
  621. // console.log('右滑')
  622. item.types = false
  623. } else if (subX < -50) {
  624. item.types = true
  625. // console.log('左滑')
  626. }
  627. },
  628. checkMore(item) {
  629. console.log(item)
  630. }
  631. },
  632. }
  633. </script>
  634. <style lang="scss" scoped>
  635. .app-content {
  636. position: relative;
  637. background: rgb(49, 85, 99);
  638. >.content {
  639. width: 100%;
  640. height: calc(100vh - 5.375rem);
  641. position: relative;
  642. // overflow: hidden;
  643. // background: rgb(49, 85, 99);
  644. >.content_top {
  645. width: 100%;
  646. // background: rgb(49, 85, 99);
  647. padding-bottom: 1.3125rem;
  648. >.craid {
  649. // width: 100%;
  650. height: 5.625rem;
  651. padding: 0 2.5625rem 0 2.5625rem;
  652. display: flex;
  653. justify-content: space-between;
  654. flex-wrap: wrap;
  655. align-items: center;
  656. >.craid_data {
  657. display: flex;
  658. flex-direction: column;
  659. justify-content: center;
  660. align-items: start;
  661. >p {
  662. color: rgb(255, 255, 255);
  663. font-family: Noto Sans SC;
  664. font-size: 18px;
  665. font-weight: 700;
  666. }
  667. >span {
  668. color: rgb(255, 255, 255);
  669. font-family: Noto Sans SC;
  670. font-size: 13px;
  671. font-weight: 500;
  672. }
  673. }
  674. .fight_center{
  675. width: 3rem;
  676. display: flex;
  677. flex-direction: column;
  678. align-items: center;
  679. justify-content: center;
  680. color: rgb(255, 255, 255);
  681. font-family: Noto Sans SC;
  682. font-size: 16px;
  683. line-height: 24px;
  684. font-weight: 700;
  685. >.aircraft {
  686. width: 1.75rem;
  687. height: 1.75rem;
  688. background: url('../../static/hang.png') no-repeat;
  689. background-size: 100% 100%;
  690. }
  691. }
  692. }
  693. >.craids{
  694. height: 5.625rem;
  695. padding: 0 2.5625rem 0 2.5625rem;
  696. display: flex;
  697. justify-content: center;
  698. align-items: center;
  699. >p{
  700. color: rgb(189, 214, 231);
  701. font-family: Noto Sans SC;
  702. font-size: 13px;
  703. font-weight: 500;
  704. }
  705. }
  706. >.scanning {
  707. height: 12rem;
  708. padding: 0 1.5rem 0 1.5rem;
  709. opacity: 1;
  710. transition: all 3s;
  711. .scanning_cd {
  712. width: 100%;
  713. height: 3rem;
  714. opacity: 1;
  715. transition: all 3s;
  716. background: rgb(59, 103, 123);
  717. margin-top: 1rem;
  718. margin-bottom: .5rem;
  719. border-radius: 4px;
  720. display: flex;
  721. justify-content: center;
  722. align-items: center;
  723. color: rgb(255, 255, 255);
  724. font-family: Noto Sans SC;
  725. font-size: 16px;
  726. >.log {
  727. width: .875rem;
  728. height: .875rem;
  729. background: url('../../static/saoma.png') no-repeat;
  730. background-size: 100% 100%;
  731. margin-left: 1rem;
  732. }
  733. >.log_l {
  734. width: .125rem;
  735. height: 1.3125rem;
  736. margin-left: 4rem;
  737. background: rgb(255, 255, 255);
  738. }
  739. }
  740. .scanning_cds {
  741. width: 100%;
  742. height: 3rem;
  743. opacity: 1;
  744. transition: all 3s;
  745. background: rgb(51, 161, 165);
  746. margin-top: 1rem;
  747. margin-bottom: .5rem;
  748. border-radius: 4px;
  749. display: flex;
  750. justify-content: center;
  751. align-items: center;
  752. color: rgb(255, 255, 255);
  753. font-family: Noto Sans SC;
  754. font-size: 16px;
  755. >.log {
  756. width: .875rem;
  757. height: .875rem;
  758. background: url('../../static/saoma.png') no-repeat;
  759. background-size: 100% 100%;
  760. margin-left: 1rem;
  761. }
  762. >.log_l {
  763. width: .125rem;
  764. height: 1.3125rem;
  765. margin-left: 4rem;
  766. background: rgb(255, 255, 255);
  767. }
  768. }
  769. }
  770. }
  771. >.content_bootom {
  772. width: 100%;
  773. // height: calc(100vh - 20.9375rem - 4.375rem);
  774. padding-bottom: 0;
  775. position: absolute;
  776. bottom: 0;
  777. top: 20.75rem;
  778. border-radius: 6px 6px 0px 0px;
  779. overflow: hidden;
  780. background: rgb(255, 255, 255);
  781. >.choice {
  782. width: 100%;
  783. height: 2.5rem;
  784. display: flex;
  785. background: rgb(240, 241, 243);
  786. >.handle {
  787. width: 50%;
  788. display: flex;
  789. align-items: center;
  790. justify-content: center;
  791. color: rgb(0, 0, 0);
  792. font-family: Noto Sans SC;
  793. font-size: 15px;
  794. font-weight: 700;
  795. border-radius: 6px 6px 0px 0px;
  796. background: rgb(255, 255, 255);
  797. }
  798. >.handles {
  799. width: 50%;
  800. display: flex;
  801. align-items: center;
  802. justify-content: center;
  803. color: rgb(0, 0, 0);
  804. font-family: Noto Sans SC;
  805. font-size: 15px;
  806. font-weight: 700;
  807. }
  808. }
  809. .up {
  810. width: 100%;
  811. display: flex;
  812. align-items: center;
  813. margin-left: 1rem;
  814. border-bottom: 1px solid rgb(238, 238, 238);
  815. // transform: all 3s;
  816. >.down_up {
  817. width: .875rem;
  818. height: .875rem;
  819. background: url('../../static/xia.png') no-repeat;
  820. background-size: 100% 100%;
  821. }
  822. >.error{
  823. width: 20%;
  824. color:red
  825. }
  826. >.normal{
  827. width: 20%;
  828. color:#4682b4
  829. }
  830. >.list {
  831. width: 70%;
  832. position: relative;
  833. height: 3.75rem;
  834. display: flex;
  835. align-items: center;
  836. transform: all 3s;
  837. right: 0;
  838. color: rgb(0, 0, 0);
  839. font-family: Noto Sans SC;
  840. font-size: 13px;
  841. font-weight: 500;
  842. }
  843. >.delete {
  844. width: 3.75rem;
  845. height: 3.75rem;
  846. background: rgb(237, 101, 101);
  847. display: flex;
  848. align-items: center;
  849. justify-content: center;
  850. position: relative;
  851. right: -3.75rem;
  852. transform: all 3s;
  853. >.log {
  854. width: .875rem;
  855. height: .875rem;
  856. background: url('../../static/vector@1x.png') no-repeat;
  857. background-size: 100% 100%;
  858. }
  859. }
  860. }
  861. .ups {
  862. width: 100%;
  863. display: flex;
  864. align-items: center;
  865. margin-left: 1rem;
  866. border-bottom: 1px solid rgb(238, 238, 238);
  867. // transform: all 3s;
  868. >.down_up {
  869. width: .875rem;
  870. height: .875rem;
  871. position: relative;
  872. right: 1.875rem;
  873. background: url('../../static/xia.png') no-repeat;
  874. background-size: 100% 100%;
  875. }
  876. >.list {
  877. width: 97%;
  878. position: relative;
  879. height: 3.75rem;
  880. display: flex;
  881. align-items: center;
  882. right: 3.75rem;
  883. // right: 0;
  884. color: rgb(0, 0, 0);
  885. font-family: Noto Sans SC;
  886. font-size: 13px;
  887. font-weight: 500;
  888. transform: all 3s;
  889. }
  890. >.delete {
  891. width: 3.75rem;
  892. height: 3.75rem;
  893. background: rgb(237, 101, 101);
  894. display: flex;
  895. align-items: center;
  896. justify-content: center;
  897. position: relative;
  898. right: 1rem;
  899. transform: all 3s;
  900. // right: -3.75rem;
  901. >.log {
  902. width: .875rem;
  903. height: .875rem;
  904. background: url('../../static/vector@1x.png') no-repeat;
  905. background-size: 100% 100%;
  906. }
  907. }
  908. }
  909. .scroll-Y {
  910. // height: calc(100% - 2.5rem - 2.75rem - 2.25rem - 2.25rem);
  911. height: calc(100% - 2.5rem - 2.75rem);
  912. }
  913. .but {
  914. width: 20.5625rem;
  915. height: 2.5rem;
  916. background: linear-gradient(179.10deg, rgba(51, 161, 165, 1.00) 11.326%, rgba(59, 111, 142, 1.00) 119.032%, rgba(59, 111, 142, 1.00) 119.032%, rgba(59, 111, 142, 1.00) 119.032%);
  917. border-radius: .25rem;
  918. color: rgb(255, 255, 255);
  919. font-family: Noto Sans SC;
  920. font-size: 1rem;
  921. margin: 0 auto;
  922. display: flex;
  923. align-items: center;
  924. justify-content: center;
  925. margin-top: 0.25rem;
  926. margin-bottom: 2.25rem;
  927. }
  928. }
  929. }
  930. }
  931. </style>