adDevice.vue 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946
  1. <template>
  2. <view>
  3. <view class="home-warp" v-if="nextTip == 'one'">
  4. <view class="header">
  5. <view class="item">
  6. <image src="../../static/activePod.png" alt=""> </image>
  7. <text>1</text>
  8. </view>
  9. <view class="line"></view>
  10. <view class="item"
  11. ><image src="../../static/inactivePod.png" alt=""></image>
  12. <text>2</text>
  13. </view>
  14. <view class="line"></view>
  15. <view class="item"
  16. ><image src="../../static/inactivePod.png" alt=""></image>
  17. <text>3</text>
  18. </view>
  19. </view>
  20. <view class="bodyContent">
  21. <view
  22. class="deviceInfo"
  23. v-if="clientId"
  24. @click="scanCode"
  25. :class="{ 'fade-in': showDeviceInfo }"
  26. >
  27. <image src="../../static/ln_small.png" alt=""></image>
  28. <text>{{ clientId }}</text>
  29. </view>
  30. <view class="wifiScan" @click="scanCode" v-if="!clientId">
  31. <image src="../../static/wifiScan.png" alt=""></image>
  32. </view>
  33. <view class="wifiText" v-if="!clientId"
  34. >点击扫一扫识别设备</view
  35. >
  36. <view class="wifItem" style="margin-top: 90rpx">
  37. <image src="../../static/wifiIcon.png" alt=""></image>
  38. <text>无线网账户</text>
  39. <input
  40. v-model="wifiName"
  41. placeholder="请选择wifi"
  42. readonly
  43. disabled
  44. style="width: 50%"
  45. />
  46. <view class="refresh" @click="refreshWifi">刷新</view>
  47. </view>
  48. <view class="wifItem" style="margin-top: 38rpx">
  49. <image src="../../static/wifiPs.png" alt=""></image
  50. ><text>无线网密码</text>
  51. <input
  52. v-model="wifiPassword"
  53. placeholder="请输入wifi密码"
  54. style="width: 60%"
  55. />
  56. </view>
  57. <view class="btn" @click="startDisNet">开始配网</view>
  58. </view>
  59. <view class="clientInfo">
  60. <view class="wifItem">
  61. <text>设备名称</text>
  62. <input v-model="devName" placeholder="请输入设备名称" />
  63. </view>
  64. <view class="wifItem" style="margin-top: 30rpx">
  65. <text>安装位置</text>
  66. <picker
  67. @change="bindPickerChange"
  68. :value="installPositionIndex"
  69. :range="selectArray"
  70. style="margin-left: auto"
  71. >
  72. <view class="uni-input">{{
  73. selectArray[installPositionIndex]
  74. }}</view>
  75. </picker>
  76. <image
  77. src="../../static/rightArrow.png"
  78. alt=""
  79. @click="showPicker"
  80. ></image>
  81. </view>
  82. </view>
  83. <view class="bottom">
  84. <view class="nextTip" @click="goNextTip">下一步</view>
  85. </view>
  86. </view>
  87. <view class="home-warpTwo" v-if="nextTip == 'two'">
  88. <view class="header_two">
  89. <view class="header">
  90. <view class="item">
  91. <image src="../../static/activePod.png" alt=""> </image>
  92. <text>1</text>
  93. </view>
  94. <view class="line"></view>
  95. <view class="item"
  96. ><image src="../../static/activePod.png" alt=""></image>
  97. <text>2</text>
  98. </view>
  99. <view class="line"></view>
  100. <view class="item"
  101. ><image
  102. src="../../static/inactivePod.png"
  103. alt=""
  104. ></image>
  105. <text>3</text>
  106. </view>
  107. </view>
  108. <view class="airCantInfo" v-if="environmentJudge">
  109. <text>暂未配置环境数据...</text>
  110. </view>
  111. <view class="airbody">
  112. <view class="airTitle">环境配置</view>
  113. <view class="wifItem" style="margin-top: 30rpx">
  114. <text>X轴范围(cm)</text>
  115. <view class="inputBox">
  116. <input
  117. style="width: 30%"
  118. v-model="xxStart"
  119. placeholder="X开始"
  120. /><text>—</text>
  121. <input
  122. type="number"
  123. style="width: 30%"
  124. v-model="xxEnd"
  125. placeholder="X结束"
  126. />
  127. </view>
  128. </view>
  129. <view class="wifItem" style="margin-top: 30rpx">
  130. <text>Y轴范围(cm)</text>
  131. <view class="inputBox">
  132. <input
  133. style="width: 30%"
  134. v-model="yyStart"
  135. placeholder="Y开始"
  136. /><text>—</text>
  137. <input
  138. type="number"
  139. style="width: 30%"
  140. v-model="yyEnd"
  141. placeholder="Y结束"
  142. />
  143. </view>
  144. </view>
  145. <view class="wifItem" style="margin-top: 30rpx">
  146. <text>Z轴范围(cm)</text>
  147. <view class="inputBox">
  148. <input
  149. style="width: 30%"
  150. v-model="zzStart"
  151. placeholder="Z开始"
  152. /><text>—</text>
  153. <input
  154. type="number"
  155. style="width: 30%"
  156. v-model="zzEnd"
  157. placeholder="Z结束"
  158. />
  159. </view>
  160. </view>
  161. <view class="wifItem" style="margin-top: 30rpx">
  162. <text>安装高度(cm)</text>
  163. <view class="inputBox">
  164. <input
  165. type="number"
  166. v-model="height"
  167. placeholder="请输入安装高度"
  168. />
  169. </view>
  170. </view>
  171. <view class="wifItem" style="margin-top: 30rpx">
  172. <text>正北向夹角(°)</text>
  173. <view class="inputBox">
  174. <picker
  175. @change="bindPickerChangeTwo"
  176. :value="northAngle"
  177. :range="angleArray"
  178. style="margin-left: auto"
  179. >
  180. <view class="uni-input">{{
  181. angleArray[northAngleIndex]
  182. }}</view>
  183. </picker>
  184. </view>
  185. </view>
  186. <view class="wifItem" style="margin-top: 30rpx">
  187. <text>安装方式</text>
  188. <view class="inputBox">
  189. <picker
  190. @change="bindPickerChangeThree"
  191. :value="mountPlainIndex"
  192. :range="mountPlainArray"
  193. style="margin-left: auto"
  194. >
  195. <view class="uni-input">{{
  196. mountPlainArray[mountPlainIndex]
  197. }}</view>
  198. </picker>
  199. </view>
  200. </view>
  201. <!-- <view class="wifItem" style="margin-top: 30rpx">
  202. <text>指示灯开关</text>
  203. <view class="inputBox">
  204. <switch
  205. :value="statusLight"
  206. @change="onChange"
  207. :active-value="1"
  208. :inactive-value="0"
  209. size="24px"
  210. active-color="#07c160"
  211. inactive-color="#eeeff1"
  212. style="transform: scale(0.8); margin-left: auto"
  213. />
  214. </view>
  215. </view> -->
  216. </view>
  217. <view class="bottomTwo">
  218. <view class="previousTip" @click="goPrevious">上一步</view>
  219. <view class="nextTip" @click="bindDevice">下一步</view>
  220. </view>
  221. </view>
  222. </view>
  223. </view>
  224. </template>
  225. <script>
  226. const airkiss = requirePlugin("airkiss");
  227. export default {
  228. name: "my",
  229. data() {
  230. return {
  231. editFlag: false,
  232. selectArray: ["卫生间", "客厅", "餐厅", "卧室"],
  233. angleArray: ["0", "90", "180", "270"],
  234. mountPlainArray: ["墙装", "顶装"],
  235. installPositionIndex: 0,
  236. northAngleIndex: 0,
  237. mountPlainIndex: 0,
  238. pickModel: false,
  239. environmentJudge: true,
  240. nextTip: "one",
  241. // 设备信息参数
  242. clientId: "",
  243. userId: uni.getStorageSync("userId"),
  244. devName: "",
  245. width: "",
  246. length: "",
  247. height: "",
  248. wifiName: "",
  249. wifiPassword: "",
  250. northAngle: "0",
  251. mountPlain: "Wall",
  252. installPosition: "Toilet",
  253. xxStart: "",
  254. xxEnd: "",
  255. yyStart: "",
  256. yyEnd: "",
  257. zzStart: "",
  258. zzEnd: "",
  259. // statusLight: 1,
  260. showDeviceInfo: false,
  261. devInfo: "",
  262. };
  263. },
  264. watch: {
  265. clientId(newVal) {
  266. if (newVal) {
  267. this.$nextTick(() => {
  268. this.showDeviceInfo = true;
  269. });
  270. } else {
  271. this.showDeviceInfo = false;
  272. }
  273. },
  274. },
  275. computed: {},
  276. methods: {
  277. scanCode() {
  278. wx.scanCode({
  279. success: (res) => {
  280. this.clientId = res.result;
  281. },
  282. });
  283. },
  284. showPicker() {
  285. this.pickModel = true;
  286. },
  287. bindPickerChange(e) {
  288. this.installPositionIndex = e.detail.value;
  289. if (this.installPositionIndex == "0") {
  290. this.installPosition = "Toilet";
  291. } else if (this.installPositionIndex == "1") {
  292. this.installPosition = "LivingRoom";
  293. } else if (this.installPositionIndex == "2") {
  294. this.installPosition = "Restaurant";
  295. } else if (this.installPositionIndex == "3") {
  296. this.installPosition = "Bedroom";
  297. }
  298. },
  299. bindPickerChangeTwo(e) {
  300. this.northAngleIndex = e.detail.value;
  301. this.northAngle = this.angleArray[e.detail.value];
  302. },
  303. bindPickerChangeThree(e) {
  304. this.mountPlainIndex = e.detail.value;
  305. this.mountPlain = this.mountPlainArray[e.detail.value];
  306. if (this.mountPlainArray[e.detail.value] == "墙装") {
  307. this.mountPlain = "Wall";
  308. } else {
  309. this.mountPlain = "Ceiling";
  310. }
  311. },
  312. // onChange({ detail }) {
  313. // this.statusLight = detail;
  314. // if(detail){
  315. // }
  316. // console.log(this.statusLight, 9999);
  317. // },
  318. goNextTip() {
  319. if (!this.devName.length > 10) {
  320. uni.showModal({
  321. content: "设备名称过长!",
  322. showCancel: 1500,
  323. });
  324. return;
  325. }
  326. if (!this.clientId) {
  327. uni.showModal({
  328. content: "请先开始扫码!",
  329. showCancel: 1500,
  330. });
  331. return;
  332. }
  333. if (!this.wifiPassword) {
  334. uni.showModal({
  335. content: "请先开始配网!",
  336. showCancel: 1500,
  337. });
  338. return;
  339. }
  340. if (!this.devName) {
  341. uni.showModal({
  342. content: "请输入设备名称!",
  343. showCancel: 1500,
  344. });
  345. return;
  346. }
  347. this.nextTip = "two";
  348. },
  349. goPrevious() {
  350. this.nextTip = "one";
  351. },
  352. bindDevice() {
  353. if (this.xxStart > this.xxEnd || this.yyStart > this.yyEnd) {
  354. uni.showModal({
  355. content: "X,Y检测范围有误",
  356. showCancel: false,
  357. });
  358. return;
  359. }
  360. // if (
  361. // -200 > this.xxStart ||
  362. // this.xxEnd > 200 ||
  363. // -200 > this.yyStart ||
  364. // this.yyEnd > 200
  365. // ) {
  366. // uni.showModal({
  367. // content: "检测范围在-200~200之间",
  368. // showCancel: false,
  369. // });
  370. // return;
  371. // }
  372. // if (
  373. // 5 < this.zzStart ||
  374. // this.zzStart < 0 ||
  375. // 300 < this.zzEnd ||
  376. // this.zzEnd < 200
  377. // ) {
  378. // uni.showModal({
  379. // content: "Z轴检测范围不正确",
  380. // showCancel: false,
  381. // });
  382. // return;
  383. // }
  384. // if (200 > this.height || this.height > 370) {
  385. // uni.showModal({
  386. // content: "安装高度在200~270之间",
  387. // showCancel: false,
  388. // });
  389. // return;
  390. // }
  391. let deviceBandingParams = {
  392. clientId: this.clientId,
  393. userId: uni.getStorageSync("userId"),
  394. devName: this.devName,
  395. height: parseInt(this.height),
  396. wifiName: this.wifiName,
  397. wifiPassword: this.wifiPassword,
  398. northAngle: this.northAngle,
  399. mountPlain:
  400. this.mountPlain == "" ? "mountPlain" : this.mountPlain,
  401. installPosition: this.installPosition,
  402. xxStart: parseInt(this.xxStart),
  403. xxEnd: parseInt(this.xxEnd),
  404. yyStart: parseInt(this.yyStart),
  405. yyEnd: parseInt(this.yyEnd),
  406. zzStart: parseInt(this.zzStart),
  407. zzEnd: parseInt(this.zzEnd),
  408. // statusLight: this.statusLight,
  409. };
  410. if (this.editFlag) {
  411. this.$http
  412. .post("wap/device/updateDevice", deviceBandingParams, {
  413. header: {
  414. "Content-Type": "application/json;charset=UTF-8",
  415. },
  416. })
  417. .then((res) => {
  418. if (res.data.code == 200) {
  419. uni.showToast({
  420. title: "绑定成功",
  421. icon: "success",
  422. duration: 1500,
  423. });
  424. uni.setStorageSync("devId", res.data.data.devId);
  425. uni.reLaunch({
  426. url:
  427. "/pagesA/roomSetting/roomSetting?devId=" +
  428. res.data.data.devId,
  429. });
  430. } else {
  431. uni.showToast({
  432. title: res.data.message,
  433. icon: "none",
  434. duration: 1500,
  435. });
  436. }
  437. });
  438. } else {
  439. this.$http
  440. .post("wap/device/deviceBinding", deviceBandingParams, {
  441. header: {
  442. "Content-Type": "application/json;charset=UTF-8",
  443. },
  444. })
  445. .then((res) => {
  446. if (res.data.code == 200) {
  447. uni.showToast({
  448. title: "绑定成功",
  449. icon: "success",
  450. duration: 1500,
  451. });
  452. uni.setStorageSync("devId", res.data.data.devId);
  453. uni.reLaunch({
  454. url:
  455. "/pagesA/roomSetting/roomSetting?devId=" +
  456. res.data.data.devId,
  457. });
  458. } else {
  459. uni.showToast({
  460. title: res.data.message,
  461. icon: "none",
  462. duration: 1500,
  463. });
  464. }
  465. });
  466. }
  467. },
  468. refreshWifi() {
  469. const that = this;
  470. uni.startWifi({
  471. success(res) {
  472. uni.getConnectedWifi({
  473. success: (res) => {
  474. that.wifiName = res.wifi.SSID;
  475. },
  476. fail: (res) => {
  477. that.wifiName = "";
  478. uni.showModal({
  479. content: "请先连接家庭无线网络",
  480. showCancel: false,
  481. });
  482. },
  483. });
  484. },
  485. fail(err) {
  486. console.error("启动WIFI模块失败:", err);
  487. },
  488. });
  489. },
  490. startDisNet() {
  491. if (!this.clientId) {
  492. uni.showModal({
  493. content: "请先扫描设备二维码",
  494. showCancel: false,
  495. });
  496. return;
  497. }
  498. if (!this.wifiName) {
  499. uni.showModal({
  500. content: "请连接无线网络,连接后点击刷新",
  501. showCancel: false,
  502. });
  503. return;
  504. }
  505. if (this.wifiPassword.length < 8) {
  506. uni.showModal({
  507. content: "请输入不少于8位的密码",
  508. showCancel: false,
  509. });
  510. return;
  511. }
  512. uni.showLoading({
  513. title: "配网中",
  514. mask: true,
  515. });
  516. airkiss.startAirkiss(this.wifiName, this.wifiPassword, (res) => {
  517. uni.hideLoading();
  518. switch (res.code) {
  519. case 0:
  520. uni.showModal({
  521. title: "初始化失败",
  522. content: res.result || "未知错误",
  523. showCancel: false,
  524. });
  525. break;
  526. case 1:
  527. uni.showModal({
  528. title: "配网成功",
  529. content: `设备IP:${res.ip}\n设备Mac:${res.bssid}`,
  530. showCancel: false,
  531. success: () => {},
  532. });
  533. break;
  534. case 2:
  535. uni.showModal({
  536. title: "配网失败",
  537. content: "请检查密码是否正确",
  538. showCancel: false,
  539. });
  540. break;
  541. default:
  542. console.warn("未知响应码:", res.code);
  543. }
  544. });
  545. },
  546. setDevInfo(devInfo) {
  547. this.clientId = devInfo.clientId;
  548. this.devName = devInfo.devName;
  549. this.height = devInfo.height;
  550. this.wifiName = devInfo.wifiName;
  551. this.wifiPassword = devInfo.wifiPassword;
  552. this.northAngle = devInfo.northAngle;
  553. if (this.northAngle == 0) {
  554. this.northAngleIndex = 0;
  555. } else if (this.northAngle == 90) {
  556. this.northAngleIndex = 1;
  557. } else if (this.northAngle == 180) {
  558. this.northAngleIndex = 2;
  559. } else if (this.northAngle == 270) {
  560. this.northAngleIndex = 3;
  561. }
  562. this.mountPlain = devInfo.mountPlain;
  563. if (this.northAngle == "Wall") {
  564. this.mountPlainIndex = 0;
  565. } else if (this.northAngle == 90) {
  566. this.mountPlainIndex = 1;
  567. }
  568. this.installPosition = devInfo.installPosition;
  569. if (this.installPosition == "Toilet") {
  570. this.installPositionIndex = 0;
  571. } else if (this.installPosition == "LivingRoom") {
  572. this.installPositionIndex = 1;
  573. } else if (this.installPosition == "Restaurant") {
  574. this.installPositionIndex = 2;
  575. } else if (this.installPosition == "Bedroom") {
  576. this.installPositionIndex = 3;
  577. }
  578. this.xxStart = devInfo.xxStart;
  579. this.xxEnd = devInfo.xxEnd;
  580. this.yyStart = devInfo.yyStart;
  581. this.yyEnd = devInfo.yyEnd;
  582. this.zzStart = devInfo.zzStart;
  583. this.zzEnd = devInfo.zzEnd;
  584. // this.statusLight = devInfo.statusLight;
  585. },
  586. },
  587. onLoad(options) {
  588. this.refreshWifi();
  589. if (JSON.stringify(options) != "{}") {
  590. this.devInfo = JSON.parse(options.devInfo);
  591. this.setDevInfo(this.devInfo);
  592. this.editFlag = true;
  593. } else {
  594. console.log("没有参数");
  595. }
  596. // this.$refs.alarModel.connectMQTTwo();
  597. },
  598. onUnload(options) {
  599. airkiss.stopAirkiss();
  600. },
  601. onShow() {},
  602. };
  603. </script>
  604. <style lang="less" scoped>
  605. .home-warp {
  606. position: relative;
  607. height: 100vh;
  608. background: linear-gradient(180deg, #faede2 0%, #f4f4f4 100%);
  609. .header {
  610. display: flex;
  611. align-items: center;
  612. justify-content: space-between;
  613. padding: 0rpx 120rpx;
  614. padding-top: 30rpx;
  615. .item {
  616. position: relative;
  617. text-align: center;
  618. width: 90rpx;
  619. height: 90rpx;
  620. image {
  621. width: 85rpx;
  622. height: 90rpx;
  623. }
  624. text {
  625. position: absolute;
  626. top: 50%;
  627. left: 50%;
  628. transform: translate(-50%, -50%);
  629. font-weight: 700;
  630. color: #ffffff;
  631. font-size: 38rpx;
  632. text-align: center;
  633. }
  634. }
  635. .line {
  636. width: 56rpx;
  637. height: 4rpx;
  638. background-color: #e4c5b9;
  639. }
  640. }
  641. .bodyContent {
  642. width: 700rpx;
  643. height: 740rpx;
  644. margin: 20rpx auto 0 auto;
  645. background: #ffffff;
  646. border-radius: 38rpx;
  647. box-sizing: border-box;
  648. padding: 0 30rpx;
  649. .deviceInfo {
  650. display: flex;
  651. flex-direction: column;
  652. padding: 0 auto;
  653. padding-top: 40rpx;
  654. width: 200rpx;
  655. margin: 0 auto;
  656. transition: all 0.8s ease;
  657. opacity: 0;
  658. transform: translateY(20rpx);
  659. image {
  660. width: 200rpx;
  661. height: 200rpx;
  662. }
  663. text {
  664. margin-top: 20rpx;
  665. text-align: center;
  666. font-weight: 500;
  667. }
  668. }
  669. .deviceInfo.fade-in {
  670. opacity: 1;
  671. transform: translateY(0);
  672. }
  673. .wifiScan {
  674. margin: 0 auto;
  675. padding-top: 75rpx;
  676. width: 188rpx;
  677. height: 188rpx;
  678. image {
  679. width: 188rpx;
  680. height: 188rpx;
  681. }
  682. }
  683. .wifiText {
  684. margin-top: 20rpx;
  685. color: #95a4b3;
  686. font-size: 24rpx;
  687. text-align: center;
  688. }
  689. .wifItem {
  690. width: 640rpx;
  691. height: 40rpx;
  692. display: flex;
  693. align-content: center;
  694. border-bottom: 2rpx solid #ebeff5;
  695. padding-bottom: 38rpx;
  696. image {
  697. width: 40rpx;
  698. height: 40rpx;
  699. }
  700. text {
  701. margin-left: 20rpx;
  702. color: #111111;
  703. font-size: 32rpx;
  704. }
  705. input {
  706. margin-left: auto;
  707. text-align: right;
  708. }
  709. .refresh {
  710. width: 80rpx;
  711. height: 50rpx;
  712. margin-left: 10rpx;
  713. border-radius: 10rpx;
  714. background-color: #f3e2dd;
  715. color: #151515;
  716. text-align: center;
  717. }
  718. }
  719. .btn {
  720. margin: 0 auto;
  721. margin-top: 38rpx;
  722. width: 240rpx;
  723. height: 75rpx;
  724. background: #f3e2dd;
  725. border-radius: 60rpx;
  726. text-align: center;
  727. line-height: 75rpx;
  728. color: #111111;
  729. font-size: 32rpx;
  730. }
  731. }
  732. .clientInfo {
  733. width: 700rpx;
  734. height: 140px;
  735. margin: 20rpx auto 0 auto;
  736. background: #ffffff;
  737. border-radius: 38rpx;
  738. box-sizing: border-box;
  739. padding: 30rpx 30rpx;
  740. .wifItem {
  741. width: 640rpx;
  742. height: 40rpx;
  743. display: flex;
  744. border-bottom: 2rpx solid #ebeff5;
  745. padding-bottom: 38rpx;
  746. text {
  747. margin-left: 20rpx;
  748. color: #111111;
  749. font-size: 32rpx;
  750. }
  751. input {
  752. margin-left: auto;
  753. // width: 70%;
  754. text-align: right;
  755. }
  756. image {
  757. width: 30rpx;
  758. height: 30rpx;
  759. margin-top: 10rpx;
  760. }
  761. }
  762. }
  763. .bottom {
  764. position: fixed;
  765. bottom: 0;
  766. left: 0;
  767. width: 750rpx;
  768. height: 170rpx;
  769. background: #ffffff;
  770. box-shadow: 0rpx 1.17rpx 0rpx #eaeaea inset;
  771. .nextTip {
  772. width: 675rpx;
  773. height: 95rpx;
  774. background: linear-gradient(97.91deg, #a27867 0%, #74483d 100%);
  775. border-radius: 28rpx;
  776. box-shadow: 0rpx 4.69rpx 18.75rpx rgba(72, 41, 29, 0.15),
  777. 0rpx 9.38rpx 9.38rpx rgba(154, 132, 89, 0.2),
  778. 0rpx -4.69rpx 28.13rpx 4.69rpx #a16647 inset;
  779. font-weight: 500;
  780. color: #ffffff;
  781. font-size: 32rpx;
  782. text-align: center;
  783. margin: 30rpx auto;
  784. line-height: 95rpx;
  785. }
  786. }
  787. }
  788. .home-warpTwo {
  789. position: relative;
  790. height: 100vh;
  791. background: #f4f4f4;
  792. .header_two {
  793. width: 750rpx;
  794. height: 700rpx;
  795. border-bottom-left-radius: 35rpx;
  796. border-bottom-right-radius: 35rpx;
  797. background: linear-gradient(180deg, #faede2 0%, #ffffff 100%);
  798. .header {
  799. display: flex;
  800. align-items: center;
  801. justify-content: space-between;
  802. padding: 0rpx 120rpx;
  803. padding-top: 30rpx;
  804. .item {
  805. position: relative;
  806. text-align: center;
  807. width: 90rpx;
  808. height: 90rpx;
  809. image {
  810. width: 85rpx;
  811. height: 90rpx;
  812. }
  813. text {
  814. position: absolute;
  815. top: 50%;
  816. left: 50%;
  817. transform: translate(-50%, -50%);
  818. font-weight: 700;
  819. color: #ffffff;
  820. font-size: 38rpx;
  821. text-align: center;
  822. }
  823. }
  824. .line {
  825. width: 56rpx;
  826. height: 4rpx;
  827. background-color: #e4c5b9;
  828. }
  829. }
  830. .airCantInfo {
  831. margin: 40rpx auto 0 auto;
  832. opacity: 20%;
  833. width: 400rpx;
  834. height: 400rpx;
  835. border: 18rpx solid;
  836. border-color: #333333;
  837. display: flex;
  838. align-items: center;
  839. justify-content: center;
  840. text {
  841. color: #999999;
  842. font-size: 38rpx;
  843. text-align: center;
  844. }
  845. }
  846. .airbody {
  847. margin: 140rpx auto 0 auto;
  848. width: 700rpx;
  849. height: 540rpx;
  850. background: #ffffff;
  851. border-radius: 38rpx;
  852. padding: 38rpx 38rpx;
  853. box-sizing: border-box;
  854. overflow-y: scroll;
  855. .airTitle {
  856. font-weight: 500;
  857. color: #784c41;
  858. font-size: 32rpx;
  859. }
  860. .wifItem {
  861. width: 640rpx;
  862. height: 40rpx;
  863. display: flex;
  864. align-items: space-between;
  865. border-bottom: 2rpx solid #ebeff5;
  866. padding-bottom: 38rpx;
  867. text {
  868. margin-left: 20rpx;
  869. color: #111111;
  870. font-size: 32rpx;
  871. }
  872. input {
  873. margin-left: auto;
  874. // width: 70%;
  875. text-align: right;
  876. }
  877. .inputBox {
  878. margin-left: auto;
  879. width: 50%;
  880. display: flex;
  881. align-items: space-between;
  882. }
  883. }
  884. }
  885. .bottomTwo {
  886. display: flex;
  887. align-items: space-around;
  888. position: fixed;
  889. bottom: 0;
  890. left: 0;
  891. width: 750rpx;
  892. height: 170rpx;
  893. background: #ffffff;
  894. box-shadow: 0rpx 1.17rpx 0rpx #eaeaea inset;
  895. .previousTip {
  896. width: 350rpx;
  897. height: 95rpx;
  898. background: #f3e2dd;
  899. border-radius: 28rpx;
  900. font-weight: 500;
  901. color: #111111;
  902. font-size: 32rpx;
  903. text-align: center;
  904. margin: 30rpx auto;
  905. line-height: 95rpx;
  906. }
  907. .nextTip {
  908. width: 350rpx;
  909. height: 95rpx;
  910. background: linear-gradient(97.91deg, #a27867 0%, #74483d 100%);
  911. border-radius: 28rpx;
  912. box-shadow: 0rpx 4.69rpx 18.75rpx rgba(72, 41, 29, 0.15),
  913. 0rpx 9.38rpx 9.38rpx rgba(154, 132, 89, 0.2),
  914. 0rpx -4.69rpx 28.13rpx 4.69rpx #a16647 inset;
  915. font-weight: 500;
  916. color: #ffffff;
  917. font-size: 32rpx;
  918. text-align: center;
  919. margin: 30rpx auto;
  920. line-height: 95rpx;
  921. }
  922. }
  923. }
  924. }
  925. </style>