index.vue 23 KB

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