equip-detail-new.vue 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856
  1. <template>
  2. <view>
  3. <view class="title">基本信息</view>
  4. <view class="info">
  5. <view class="device-id" @click="copy(equipInfo)">
  6. <image
  7. class="logo"
  8. :src="`${$imageURL}/bigdata_app/image/fourMoodBase/${equipInfo.type}.png`"
  9. mode=""
  10. ></image>
  11. {{ equipInfo.imei || equipInfo.device_id }}
  12. <image
  13. :src="$imageURL+'/bigdata_app/image/environment/fuzhi.png'"
  14. mode=""
  15. class="tishi"
  16. >
  17. </image>
  18. <view
  19. :class="[
  20. 'float-right',
  21. 'yficonfont',
  22. equipInfo.is_online == 1 ? 'on icon-zaixian' : 'off icon-lixian',
  23. ]"
  24. >
  25. {{ equipInfo.is_online == 1 ? '在线' : '离线' }}
  26. </view>
  27. </view>
  28. <view class="info-list">
  29. <span class="float-left">设备名称:</span>
  30. <span class="float-right">{{ equipInfo.device_name }}</span>
  31. </view>
  32. <view class="info-list" v-if="equipInfo.type == 32">
  33. <span class="float-left">诱虫量:</span>
  34. <span class="float-right">{{
  35. equipInfo.bug_count ? equipInfo.bug_count.join('/') : '0/0/0'
  36. }}</span>
  37. </view>
  38. <view class="info-list">
  39. <span class="float-left">最新上报时间:</span>
  40. <span class="float-right">{{
  41. equipInfo.addtime || equipInfo.uptime | timeFormat
  42. }}</span>
  43. </view>
  44. <view class="info-list">
  45. <span class="float-left">设备地址:</span>
  46. <span class="float-right">{{
  47. equipInfo.address ? equipInfo.address : '--'
  48. }}</span>
  49. </view>
  50. <view
  51. class="info-list"
  52. v-if="equipInfo.type == 34"
  53. @click="operate('jd')"
  54. >
  55. <span class="float-left">卷带更换</span>
  56. <span> </span>
  57. <span class="float-right">
  58. <span>{{equipInfo.remain||0}}%</span>
  59. <!-- <span v-if="equipInfo.jd_expire_time > 0">
  60. {{ equipInfo.jd_expire_time | timeFormat }}
  61. </span>
  62. <span v-else> 暂未设置卷带 </span>
  63. <u-icon
  64. class="arrow"
  65. name="arrow-right"
  66. color="#666666"
  67. size="26"
  68. ></u-icon> -->
  69. </span>
  70. </view>
  71. <view
  72. class="info-list"
  73. v-if="equipInfo.type == 33"
  74. @click="operate('sb')"
  75. >
  76. <span class="float-left">色板到期时间</span>
  77. <span> </span>
  78. <span class="float-right">
  79. <span v-if="equipInfo.sban_expire_time > 0">
  80. {{ equipInfo.sban_expire_time | timeFormat('yyyy-MM-dd') }}
  81. </span>
  82. <span v-else> 暂未设置色板 </span>
  83. <u-icon
  84. class="arrow"
  85. name="arrow-right"
  86. color="#666666"
  87. size="26"
  88. ></u-icon>
  89. </span>
  90. </view>
  91. <view
  92. class="info-list"
  93. v-if="
  94. equipInfo.type == 32 || equipInfo.type == 33 || equipInfo.type == 34
  95. "
  96. @click="operate('yx')"
  97. >
  98. <span class="float-left">诱芯到期时间</span>
  99. <span> </span>
  100. <span class="float-right">
  101. <span v-if="equipInfo.xy_expire_time > 0">
  102. {{ equipInfo.xy_expire_time | timeFormat('yyyy-MM-dd') }}
  103. </span>
  104. <span v-else> 暂未设置诱芯 </span>
  105. <u-icon
  106. class="arrow"
  107. name="arrow-right"
  108. color="#666666"
  109. size="26"
  110. ></u-icon>
  111. </span>
  112. </view>
  113. <u-calendar
  114. v-model="calendar_show"
  115. mode="date"
  116. :max-date="date"
  117. @change="timeChange($event)"
  118. >
  119. </u-calendar>
  120. <u-toast ref="toast" />
  121. </view>
  122. <view class="title">基本操作</view>
  123. <view class="newState">
  124. <view class="item" v-for="item in curEquip" @click="partClick(item.path)">
  125. <view class="item_info_img">
  126. <image
  127. :src="$imageURL+'/bigdata_app' + item.icon"
  128. mode="widthFix"
  129. ></image>
  130. </view>
  131. <view class="info-text">
  132. {{ item.tex }}
  133. </view>
  134. </view>
  135. </view>
  136. <view class="title">实时状态</view>
  137. <view class="newtishi" v-if="dataloadingtf">
  138. <p class="dataloading">加载中</p>
  139. </view>
  140. <view class="newtishi" v-else-if="newtishitf"> 暂无数据 </view>
  141. <view class="newState" v-else>
  142. <view class="item" v-for="item in curState">
  143. <view class="item_info_img">
  144. <image
  145. :src="$imageURL+'/bigdata_app' + item.icon"
  146. mode="widthFix"
  147. ></image>
  148. </view>
  149. <view class="info-con">
  150. <view class="active">
  151. {{ item.value | formatValue(item.txt, type) }}
  152. </view>
  153. <view class="val">
  154. {{ item.txt }}
  155. </view>
  156. </view>
  157. </view>
  158. </view>
  159. </view>
  160. </template>
  161. <script>
  162. import equipState from '../../../static/js/equipState_dict.json';
  163. import {
  164. QueryPermission,
  165. getPermissionById,
  166. getUserPermission,
  167. } from '../../../util/QueryPermission.js';
  168. export default {
  169. data() {
  170. return {
  171. fieldstyle: {
  172. border: '2rpx solid #f6f6f6',
  173. 'border-radius': '24px',
  174. 'padding-left': '20rpx',
  175. 'background-color': '#f6f6f6',
  176. },
  177. city: '',
  178. type: null, //设备类型
  179. device_status: null,
  180. equipInfo: {},
  181. cbd: [],
  182. newState: {}, //设备最新状态
  183. setTimeShow: false,
  184. calendar_show: false,
  185. culErr: '',
  186. decoy: '',
  187. newtishitf: false, //暂无数据提示
  188. dataloadingtf: true, //加载中提示
  189. date: '', //日历最大可选日期
  190. operateType: '',
  191. };
  192. },
  193. computed: {
  194. curEquip() {
  195. this.cbd = [
  196. {
  197. icon: '/image/cb/4.png',
  198. tex: '设备控制',
  199. path: this.type==33?'/pages/cb/cbd/equip-set/equip-set-sy2': '/pages/cb/cbd/equip-set/equip-set-new',
  200. tf: true,
  201. },
  202. {
  203. icon: '/image/cb/6.png',
  204. tex: 'sim卡详情',
  205. path: '/pages/prevention/sim',
  206. tf: true,
  207. },
  208. {
  209. icon: '/image/environment/7.png',
  210. tex: '一键报修',
  211. path: '/pages/afterSale/addafter',
  212. tf: true,
  213. },
  214. ];
  215. let permission = getPermissionById(
  216. getUserPermission(),
  217. this.equipInfo.pur_id
  218. );
  219. permission&&permission.forEach((item) => {
  220. if (item.purview_name == '查看图片') {
  221. this.cbd.unshift({
  222. icon: '/image/cb/1.png',
  223. tex: item.purview_name,
  224. path: '/pages/cb/cbd/equip-set/photo',
  225. tf: true,
  226. });
  227. } else if (item.purview_name == '数据详情') {
  228. this.cbd.unshift({
  229. icon: '/image/cb/2.png',
  230. tex: item.purview_name,
  231. path: '/pages/cb/cbd/equip-set/newhistoryfile',
  232. tf: true,
  233. });
  234. } else if (item.purview_name == '分析') {
  235. // this.cbd.unshift({
  236. // icon: '/image/cb/3.png',
  237. // tex: item.purview_name,
  238. // path: '/pages/cb/cbd/equip-set/new-analyse',
  239. // tf: true,
  240. // });
  241. }
  242. });
  243. return this.cbd;
  244. },
  245. curState() {
  246. if(this.equipInfo.type==33){
  247. return [
  248. {
  249. icon: '/image/cb/icon06.png',
  250. txt: '电压',
  251. value: this.newState.voltage,
  252. },
  253. {
  254. icon: '/image/cb/icon05.png',
  255. txt: '照片上传频率',
  256. value: this.newState.takePhotoIntervalMinutes,
  257. },
  258. {
  259. icon: '/image/cb/icon02.png',
  260. txt: '在线状态',
  261. value: this.newState.status,
  262. },{
  263. icon: '/image/cb/icon18.png',
  264. txt: '控制模式',
  265. value: this.newState.ctrlMode,
  266. },
  267. {
  268. icon: '/image/cb/icon08.png',
  269. txt: '环境温度(℃)',
  270. value: this.newState.temperature,
  271. },
  272. {
  273. icon: '/image/cb/icon07.png',
  274. txt: '环境湿度(%)',
  275. value: this.newState.humidity,
  276. },
  277. {
  278. icon: '/image/prevention/icon16.png',
  279. txt: '信号强度',
  280. value: this.newState.rssi,
  281. },
  282. {
  283. icon: '/image/cb/icon12.png',
  284. txt: '设备版本',
  285. value: this.newState.dver_num,
  286. },
  287. ]
  288. }else if(this.equipInfo.type==34){
  289. return [
  290. {
  291. icon: '/image/cb/icon06.png',
  292. txt: '电量',
  293. value: this.newState.vbat,
  294. },{
  295. icon: '/image/cb/icon18.png',
  296. txt: '控制模式',
  297. value: this.newState.control,
  298. },
  299. {
  300. icon: '/image/cb/icon02.png',
  301. txt: '设备状态',
  302. value: this.newState.status,
  303. },
  304. {
  305. icon: '/image/cb/icon05.png',
  306. txt: '照片上传频率',
  307. value:this.newState.photo_fre +'min',
  308. },
  309. // {
  310. // icon: '/image/cb/icon08.png',
  311. // txt: '环境温度(℃)',
  312. // value: this.newState.tem,
  313. // },
  314. // {
  315. // icon: '/image/cb/icon07.png',
  316. // txt: '环境湿度(%)',
  317. // value: this.newState.hum,
  318. // },
  319. {
  320. icon: '/image/prevention/icon16.png',
  321. txt: '信号强度',
  322. value: this.newState.signal,
  323. },
  324. {
  325. icon: '/image/cb/icon12.png',
  326. txt: '设备版本',
  327. value: this.newState.dver_num,
  328. },
  329. // {
  330. // icon: '/image/cb/icon17.png',
  331. // txt: '雨控状态',
  332. // value: this.newState.rps,
  333. // },
  334. // {
  335. // icon: '/image/cb/icon14.png',
  336. // txt: '温控状态',
  337. // value: this.newState.tps,
  338. // },
  339. // {
  340. // icon: '/image/cb/icon06.png',
  341. // txt: '光控状态',
  342. // value: this.newState.lps,
  343. // },
  344. ]
  345. }else if(this.equipInfo.type==32){
  346. return [
  347. {
  348. icon: '/image/cb/icon06.png',
  349. txt: '电量',
  350. value: this.newState.voltage,
  351. },{
  352. icon: '/image/cb/icon18.png',
  353. txt: '控制模式',
  354. value: this.newState.control,
  355. },
  356. {
  357. icon: '/image/cb/icon02.png',
  358. txt: '设备状态',
  359. value: this.newState.status,
  360. },
  361. {
  362. icon: '/image/cb/icon05.png',
  363. txt: '照片上传频率',
  364. value:this.newState.photo_fre +'min',
  365. },
  366. {
  367. icon: '/image/cb/icon08.png',
  368. txt: '环境温度(℃)',
  369. value: this.newState.tem,
  370. },
  371. {
  372. icon: '/image/cb/icon07.png',
  373. txt: '环境湿度(%)',
  374. value: this.newState.hum,
  375. },
  376. {
  377. icon: '/image/prevention/icon16.png',
  378. txt: '信号强度',
  379. value: this.newState.signal,
  380. },
  381. {
  382. icon: '/image/cb/icon12.png',
  383. txt: '设备版本',
  384. value: this.newState.dver_num,
  385. },
  386. // {
  387. // icon: '/image/cb/icon17.png',
  388. // txt: '雨控状态',
  389. // value: this.newState.rps,
  390. // },
  391. // {
  392. // icon: '/image/cb/icon14.png',
  393. // txt: '温控状态',
  394. // value: this.newState.tps,
  395. // },
  396. // {
  397. // icon: '/image/cb/icon06.png',
  398. // txt: '光控状态',
  399. // value: this.newState.lps,
  400. // },
  401. ]
  402. }
  403. },
  404. operateOptions() {
  405. return {
  406. yx: {
  407. title: '诱芯',
  408. url: '/api/api_gateway?method=new_gateway.device_info.youxin',
  409. field: 'xy_expire_time',
  410. },
  411. sb: {
  412. title: '色板',
  413. url: '/api/api_gateway?method=new_gateway.device_info.sban',
  414. field: 'sban_expire_time',
  415. },
  416. jd: {
  417. title: '卷带',
  418. url: '/api/api_gateway?method=new_gateway.device_info.syone_jd',
  419. field: 'jd_expire_time',
  420. },
  421. };
  422. },
  423. },
  424. filters: {
  425. equipType(type) {
  426. switch (type) {
  427. case 3:
  428. return '虫情测报灯';
  429. case 7:
  430. return '孢子仪';
  431. case 4:
  432. return '性诱测报';
  433. }
  434. },
  435. formatValue(val, a1, a2) {
  436. if (a2 == 4 && a1 == '电池状态') {
  437. switch (Number(val)) {
  438. case 0:
  439. return '正常';
  440. break;
  441. case 1:
  442. return '欠压';
  443. break;
  444. case 2:
  445. return '过压';
  446. break;
  447. }
  448. } else {
  449. return val ? val : '无';
  450. }
  451. },
  452. },
  453. onLoad(option) {
  454. this.equipInfo = JSON.parse(option.info);
  455. this.getDeviceStatus();
  456. this.type =
  457. Number(this.equipInfo.type) ||
  458. Number(this.equipInfo.equip_type) ||
  459. Number(this.equipInfo.device_type_id);
  460. this.equipInfo.type = this.type;
  461. this.device_status = this.equipInfo.is_online;
  462. this.getState();
  463. // this.selectaddress(Number(this.equipInfo.lat), Number(this.equipInfo.lng))
  464. var times = new Date();
  465. this.date =
  466. times.getFullYear() +
  467. 1 +
  468. '-' +
  469. Number(times.getMonth() + 1) +
  470. '-' +
  471. times.getDate();
  472. },
  473. methods: {
  474. async getDeviceStatus() {
  475. const res = await this.$myRequest({
  476. url: '/api/api_gateway?method=new_gateway.device_info.devices_list',
  477. data: {
  478. device_type_id: this.equipInfo.type,
  479. id: this.equipInfo.imei || this.equipInfo.device_id,
  480. page: 1,
  481. size: 999,
  482. },
  483. });
  484. let newRes = res.device[0];
  485. this.equipInfo = { ...this.equipInfo, ...newRes };
  486. console.log('响应', this.equipInfo);
  487. },
  488. async getState() {
  489. this.dataloadingtf = true;
  490. const res = await this.$myRequest({
  491. url: '/api/api_gateway?method=new_gateway.device_info.device_status',
  492. data: {
  493. device_type_id: this.equipInfo.type,
  494. id: this.equipInfo.d_id,
  495. },
  496. });
  497. this.newState = res;
  498. this.dataloadingtf = false;
  499. console.log('res', res);
  500. },
  501. partClick(path) {
  502. console.log(path);
  503. var device_id = this.equipInfo.device_id || this.equipInfo.imei;
  504. uni.navigateTo({
  505. url:
  506. path +
  507. '?d_id=' +
  508. this.equipInfo.d_id +
  509. '&device_id=' +
  510. device_id +
  511. '&device_type=' +
  512. this.type,
  513. });
  514. },
  515. operate(type) {
  516. this.calendar_show = true;
  517. this.operateType = type;
  518. },
  519. timeChange(e, filed) {
  520. // // 根据type_id,执行相应的操作
  521. // let typeId = this.equipInfo.type
  522. // let postData = {}
  523. // if(typeId===32){
  524. // // 添加诱芯
  525. // }else if(typeId === 33){
  526. // // 添加诱芯,更换色板
  527. // this.sbSubmit(e.result)
  528. // }else if(typeId === 34){
  529. // // 添加诱芯,更换卷带
  530. // this.jdSubmit(e.result)
  531. // }
  532. this.yxSubmit(e.result);
  533. },
  534. async yxSubmit(time) {
  535. let { title, url, field } = this.operateOptions[this.operateType];
  536. if (!time) {
  537. this.$refs.toast.show({
  538. title: '请填写' + title + '到期时间!',
  539. type: 'warning',
  540. });
  541. return false;
  542. }
  543. let postData = {
  544. device_type_id: this.equipInfo.type,
  545. id: this.equipInfo.device_id,
  546. };
  547. postData[field] = +new Date(time) / 1000;
  548. const res = await this.$myRequest({
  549. url: url,
  550. data: postData,
  551. });
  552. if (res) {
  553. this.$refs.toast.show({
  554. title: title + '时间设置成功!',
  555. type: 'success',
  556. });
  557. this.getDeviceStatus();
  558. }
  559. },
  560. // 色板
  561. async sbSubmit(time) {
  562. if (!time) {
  563. this.$refs.toast.show({
  564. title: '请填写色板到期时间!',
  565. type: 'warning',
  566. });
  567. return false;
  568. }
  569. const res = await this.$myRequest({
  570. url: '/api/api_gateway?method=new_gateway.device_info.sban',
  571. data: {
  572. device_type_id: this.equipInfo.type,
  573. id: this.equipInfo.device_id,
  574. sban_expire_time: +new Date(time) / 1000,
  575. },
  576. });
  577. if (res) {
  578. this.$refs.toast.show({
  579. title: '设置成功!',
  580. type: 'success',
  581. });
  582. this.getDeviceStatus();
  583. }
  584. },
  585. async jdSubmit(time) {
  586. if (!time) {
  587. this.$refs.toast.show({
  588. title: '请填写卷带到期时间!',
  589. type: 'warning',
  590. });
  591. return false;
  592. }
  593. const res = await this.$myRequest({
  594. url: '/api/api_gateway?method=new_gateway.device_info.syone_jd',
  595. data: {
  596. device_type_id: this.equipInfo.type,
  597. id: this.equipInfo.device_id,
  598. jd_expire_time: +new Date(time) / 1000,
  599. },
  600. });
  601. if (res) {
  602. this.$refs.toast.show({
  603. title: '设置成功!',
  604. type: 'success',
  605. });
  606. this.getDeviceStatus();
  607. }
  608. },
  609. selectaddress(lat, lng) {
  610. //获取分布位置
  611. uni.request({
  612. type: 'GET',
  613. url:
  614. 'https://restapi.amap.com/v3/geocode/regeo?output=JSON&location=' +
  615. lng +
  616. ',' +
  617. lat +
  618. '&key=27273b81090f78759e4057f94474516f&radius=1000&extensions=all',
  619. dataType: 'json',
  620. complete: (res) => {
  621. console.log(res);
  622. this.city = res.data.regeocode.formatted_address;
  623. },
  624. });
  625. },
  626. copy(item) {
  627. console.log(item);
  628. uni.setClipboardData({
  629. data: item.imei || item.device_id,
  630. success: function () {
  631. console.log('success');
  632. },
  633. });
  634. },
  635. },
  636. };
  637. </script>
  638. <style lang="scss">
  639. page {
  640. padding: 0rpx 48rpx;
  641. box-sizing: border-box;
  642. background: #f7f7f7;
  643. .title {
  644. color: #999999;
  645. margin: 32rpx 0;
  646. }
  647. .logo {
  648. width: 36rpx;
  649. height: 36rpx;
  650. margin-right: 12rpx;
  651. position: relative;
  652. top: 8rpx;
  653. }
  654. .device-id {
  655. height: 60rpx;
  656. line-height: 60rpx;
  657. margin-bottom: 18rpx;
  658. color: #5c5c5c;
  659. .float-right {
  660. float: right;
  661. width: 88px;
  662. height: 30px;
  663. text-align: center;
  664. position: absolute;
  665. top: 0;
  666. right: 0;
  667. border-top-right-radius: 24rpx;
  668. }
  669. }
  670. .on {
  671. background-image: url('/static/images/cb/online.png');
  672. color: #fff;
  673. }
  674. .off {
  675. background-image: url('/static/images/cb/outline.png');
  676. color: #999999;
  677. }
  678. .info {
  679. position: relative;
  680. padding: 8rpx 32rpx 32rpx 32rpx;
  681. line-height: 50rpx;
  682. font-size: 26rpx;
  683. border-radius: 24rpx;
  684. background-color: #fff;
  685. box-sizing: border-box;
  686. width: 100%;
  687. .info-list {
  688. overflow: hidden;
  689. font-size: 12px;
  690. .float-right {
  691. float: right;
  692. color: #666;
  693. .arrow {
  694. margin-left: 10rpx;
  695. }
  696. }
  697. .float-left {
  698. float: left;
  699. color: #999;
  700. }
  701. }
  702. .tishi {
  703. width: 28rpx;
  704. height: 28rpx;
  705. margin: 0rpx 0 0 12rpx;
  706. position: relative;
  707. top: 6rpx;
  708. }
  709. }
  710. .tit {
  711. font-weight: 800;
  712. height: 50rpx;
  713. font-size: 30rpx;
  714. margin-bottom: 20rpx;
  715. display: flex;
  716. justify-content: space-between;
  717. .span {
  718. color: #6e6c76;
  719. font-size: 24rpx;
  720. display: flex;
  721. justify-content: space-between;
  722. /* margin-top: 12rpx; */
  723. }
  724. }
  725. .newtishi {
  726. width: 90%;
  727. margin: 0 auto;
  728. text-align: center;
  729. padding-top: 40rpx;
  730. font-size: 32rpx;
  731. .dataloading:after {
  732. overflow: hidden;
  733. display: inline-block;
  734. vertical-align: bottom;
  735. animation: ellipsis 2s infinite;
  736. content: '\2026';
  737. }
  738. @keyframes ellipsis {
  739. from {
  740. width: 2px;
  741. }
  742. to {
  743. width: 15px;
  744. }
  745. }
  746. }
  747. .newState {
  748. display: flex;
  749. flex-wrap: wrap;
  750. text-align: center;
  751. margin: 0 -10rpx;
  752. .item {
  753. display: flex;
  754. flex-wrap: nowrap;
  755. margin: 10rpx;
  756. width: 316rpx;
  757. justify-content: flex-start;
  758. padding: 20rpx 10rpx;
  759. box-sizing: border-box;
  760. border-radius: 4px;
  761. background-color: #fff;
  762. font-size: 24rpx;
  763. .info-text {
  764. line-height: 76rpx;
  765. padding-left: 30rpx;
  766. font-size: 14px;
  767. color: #666666;
  768. }
  769. .info-con {
  770. padding-left: 30rpx;
  771. text-align: left;
  772. line-height: 40rpx;
  773. color: #666666;
  774. .active {
  775. font-size: 36rpx;
  776. }
  777. .val {
  778. font-size: 24rpx;
  779. }
  780. }
  781. .item_info_img {
  782. width: 30%;
  783. text-align: center;
  784. image {
  785. width: 64rpx;
  786. height: 64rpx;
  787. margin-top: 10rpx;
  788. }
  789. }
  790. }
  791. }
  792. .btn-box {
  793. text-align: center;
  794. padding: 30rpx;
  795. }
  796. .field {
  797. ::v-deep .uni-input-input {
  798. border: 2rpx solid #ff0000;
  799. border-radius: 24rpx;
  800. width: 140px;
  801. padding-left: 10rpx;
  802. box-sizing: border-box;
  803. }
  804. }
  805. }
  806. ::v-deep .u-calendar__action {
  807. display: flex;
  808. justify-content: space-around;
  809. .u-calendar__action__text {
  810. line-height: 25px;
  811. }
  812. }
  813. .red {
  814. color: rgb(235, 103, 101);
  815. }
  816. </style>