details.vue 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864
  1. <template>
  2. <view class="fm-page">
  3. <!-- <view class="status_bar"></view> -->
  4. <uni-nav-bar left-icon="back" background-color='rgba(0,0,0,0)' title="闸门" @clickLeft="clickLeft">
  5. <!-- <view class="self-title">标题栏</view>
  6. <template v-slot:left><view class="self-back"><uni-icons type="arrowleft" size="24"></uni-icons></view></template>
  7. -->
  8. </uni-nav-bar>
  9. <view class="fm-content">
  10. <view class="info">
  11. <view class="device-id" @click="copy(equipInfo)">
  12. <image class="logo"
  13. :src="`${$imageURL}/bigdata_pc/equipdistribute/${equipInfo.type}.png`" mode="">
  14. </image>
  15. {{equipInfo.imei||equipInfo.device_id}}
  16. <image :src="$imageURL+'/bigdata_app/image/environment/fuzhi.png'" mode=""
  17. class="tishi">
  18. </image>
  19. <view
  20. :class="['float-right','yficonfont',equipInfo.is_online==1?'on icon-zaixian':'off icon-lixian']">
  21. {{equipInfo.is_online==1?'在线':'离线'}}
  22. </view>
  23. </view>
  24. <view class="info-list">
  25. <span class="float-left">设备名称:</span> <span class="float-right">{{equipInfo.device_name}}</span>
  26. </view>
  27. <view class="info-list">
  28. <span class="float-left">上报时间:</span> <span
  29. class="float-right">{{equipInfo.addtime||equipInfo.uptime | timeFormat}}</span>
  30. </view>
  31. <view class="info-list">
  32. <span class="float-left">设备地址:</span> <span
  33. class="float-right">{{equipInfo.address?equipInfo.address:"--"}}</span>
  34. </view>
  35. <u-calendar v-model="calendar_show" mode="date" :max-date="date" @change="timeChange($event)">
  36. </u-calendar>
  37. <u-toast ref="toast" />
  38. </view>
  39. <view class="title"></view>
  40. <view class="newState">
  41. <view class="top">
  42. <view class="left">
  43. <image class="img"
  44. :src="$imageURL+'/bigdata_app/image/irrigate/fm.png'"
  45. ></image>
  46. <view>
  47. <p> <span class="num">{{deviceData.nowHeight}}</span> mm</p>
  48. <p>{{deviceData.deviceStatus}}</p>
  49. </view>
  50. </view>
  51. <view class="btn" style="width:170rpx">
  52. <u-button text="设置开度" size="mini" @click="kdShow = true">设置开度</u-button>
  53. </view>
  54. <view class="right btn">
  55. <u-button text="刷新" size="mini" @click="zfControl('refresh')">刷新</u-button>
  56. </view>
  57. </view>
  58. <view class="up-down">
  59. <view class="bottom">
  60. <view class="opt">
  61. <image
  62. :src="$imageURL+'/bigdata_app/image/irrigate/fm-up.png'"
  63. ></image>
  64. <!-- <p class="num">到位</p>
  65. <p>顶到位</p> -->
  66. </view>
  67. <view class="btn">
  68. <u-button text="上升" size="mini" @click="zfControl('up')">上升</u-button>
  69. </view>
  70. </view>
  71. <view class="bottom">
  72. <view class="opt">
  73. <image :src="$imageURL+'/bigdata_app/image/irrigate/fm-down.png'"
  74. ></image>
  75. <!-- <p class="num">未到位</p>
  76. <p>底到位</p> -->
  77. </view>
  78. <view class="btn">
  79. <u-button class="active" text="下降" size="mini" @click="zfControl('down')">下降</u-button>
  80. </view>
  81. </view>
  82. </view>
  83. <view class="btn">
  84. <button text="停止" @click="zfControl('stop')">停止</button>
  85. </view>
  86. </view>
  87. <!-- 操作记录 -->
  88. <view class="consoleList">
  89. <view class="title">操作记录</view>
  90. <view class="histimeBox">
  91. <u-icon name="calendar" color="#C1C1C1" size="24"></u-icon>
  92. <view class="time" @click="consoleshow = true">
  93. {{consoleTime.startDate ? consoleTime.startDate : '开始'}}
  94. </view>
  95. <view class="">至</view>
  96. <view class="time" @click="consoleshow = true">{{consoleTime.endDate ? consoleTime.endDate : '结束'}}
  97. </view>
  98. <u-icon name="close-circle" color="#C1C1C1" size="28" @click="clearContime"
  99. v-if="consoleTime.startDate"></u-icon>
  100. </view>
  101. <u-calendar @maxDate="maxDate" v-model="consoleshow" mode="range" @change="changeConsoleDate"></u-calendar>
  102. <view class="tableList tableTitle">
  103. <view>时间</view>
  104. <view>操作内容</view>
  105. <view>操作结果</view>
  106. <view>操作人</view>
  107. </view>
  108. <view class="tableList" v-for="(item, index) in tableData" :key="item.addtime + index">
  109. <view>{{item.addtime}}</view>
  110. <view :class="item.status=='成功' ? 'success' : 'error'">{{item.order}}</view>
  111. <view>{{item.status}}</view>
  112. <view>{{item.user}}</view>
  113. </view>
  114. <u-loadmore style="margin-top: 16rpx;" :status="status" />
  115. </view>
  116. <u-popup v-model="kdShow" mode="center" width="600rpx">
  117. <view style="padding: 40rpx;">
  118. <slider style="margin-top: 20rpx;" :value="kdValue" show-value="true" :min="0" :max="1000"
  119. block-color="#57C878" activeColor="#57C878" step="1" />
  120. <view class="btn-box">
  121. <u-button @click="kdSubmit" size="mini" type="success">确定</u-button>
  122. </view>
  123. </view>
  124. </u-popup>
  125. </view>
  126. </view>
  127. </template>
  128. <script>
  129. import {
  130. QueryPermission,
  131. getPermissionById,
  132. getUserPermission
  133. } from "../../util/QueryPermission.js"
  134. export default {
  135. data() {
  136. return {
  137. maxDate: '2050-12-31',
  138. city: "",
  139. type: null, //设备类型
  140. device_status: null,
  141. equipInfo: {},
  142. cbd: [
  143. ],
  144. newState: {}, //设备最新状态
  145. setTimeShow: false,
  146. calendar_show: false,
  147. culErr: '',
  148. decoy: '',
  149. newtishitf: false, //暂无数据提示
  150. dataloadingtf: true, //加载中提示
  151. date: "", //日历最大可选日期
  152. operateType: '',
  153. status: '', //是否加载更多
  154. page: 1,
  155. tableData: [],
  156. deviceData: {},
  157. consoleshow: false,
  158. consoleTime: {},
  159. kdValue: 0,
  160. kdShow: false
  161. }
  162. },
  163. computed: {
  164. },
  165. filters: {
  166. equipType(type) {
  167. switch (type) {
  168. case 3:
  169. return "虫情测报灯";
  170. case 7:
  171. return "孢子仪";
  172. case 4:
  173. return "性诱测报"
  174. }
  175. },
  176. formatValue(val, a1, a2) {
  177. if (a2 == 4 && a1 == "电池状态") {
  178. switch (Number(val)) {
  179. case 0:
  180. return '正常';
  181. break;
  182. case 1:
  183. return '欠压';
  184. break;
  185. case 2:
  186. return '过压';
  187. break;
  188. }
  189. } else {
  190. return val ? val : '无'
  191. }
  192. }
  193. },
  194. onReachBottom() {
  195. if (this.status == 'loadmore') {
  196. this.page++;
  197. this.getEquipcontroldata()
  198. }
  199. },
  200. onLoad(option) {
  201. this.equipInfo = JSON.parse(option.info)
  202. console.log(this.equipInfo)
  203. this.getEquipcontroldata()
  204. this.getDeviceList()
  205. // this.getDeviceStatus()
  206. // this.type = Number(this.equipInfo.type) || Number(this.equipInfo.equip_type) || Number(this.equipInfo
  207. // .device_type_id)
  208. // this.equipInfo.type = this.type
  209. // this.getState()
  210. // // this.selectaddress(Number(this.equipInfo.lat), Number(this.equipInfo.lng))
  211. // var times = new Date()
  212. // this.date = times.getFullYear() + 1 + "-" + Number(times.getMonth() + 1) + "-" + times.getDate()
  213. },
  214. methods: {
  215. clickLeft() {
  216. uni.navigateBack({
  217. delta: 1
  218. })
  219. },
  220. kdSubmit() {
  221. this.kdShow = false
  222. this.zfControl('value')
  223. },
  224. // 指令下发
  225. zfControl(cmd) {
  226. this.$myRequest({
  227. method: 'POST',
  228. url: '/api/api_gateway?method=hran.view.hran_order',
  229. data: {
  230. d_id: this.equipInfo.d_id,
  231. order: cmd,
  232. controlValue: this.kdValue
  233. }
  234. }).then((res) => {
  235. console.log('指令', res)
  236. if (res == true) {
  237. uni.showToast({
  238. title: '指令下发成功!',
  239. duration: 2000,
  240. });
  241. setTimeout(() => {
  242. this.tableData = [];
  243. this.page = 1;
  244. this.getEquipcontroldata()
  245. }, 2000)
  246. } else {
  247. uni.showToast({
  248. title: '指令下发失败!',
  249. duration: 2000,
  250. });
  251. }
  252. })
  253. },
  254. changeConsoleDate(e) {
  255. console.log(e)
  256. this.consoleTime = e;
  257. this.tableData = [];
  258. this.page = 1;
  259. this.getEquipcontroldata();
  260. },
  261. clearContime() {
  262. this.consoleTime = {};
  263. this.tableData = [];
  264. this.page = 1;
  265. this.getEquipcontroldata();
  266. },
  267. //操作记录
  268. async getEquipcontroldata() {
  269. uni.showLoading({
  270. title: '加载中'
  271. });
  272. const {
  273. consoleTime
  274. } = this;
  275. let begin = consoleTime.startDate ? new Date(consoleTime.startDate+ ' 00:00:00').getTime() / 1000 : '';
  276. let end = consoleTime.endDate ? new Date(consoleTime.endDate+ ' 23:59:59').getTime() / 1000 : '';
  277. //操作记录
  278. let res = await this.$myRequest({
  279. method: "POST",
  280. url: "/api/api_gateway?method=hran.view.hran_order_list",
  281. data: {
  282. d_id: this.equipInfo.d_id,
  283. page: this.page,
  284. page_size: 15,
  285. start: begin,
  286. end: end
  287. },
  288. })
  289. console.log(res)
  290. uni.hideLoading();
  291. // this.tableData = [];
  292. const record = res.data;
  293. this.tableData = [...this.tableData, ...record];
  294. this.total = res.total;
  295. if (this.page * 15 > this.total) {
  296. this.status = 'nomore'
  297. } else {
  298. this.status = 'loadmore'
  299. }
  300. // console.log(this.tableData);
  301. },
  302. // 获取设备数据
  303. getDeviceList() {
  304. this.devicetf = true
  305. const {
  306. consoleTime
  307. } = this;
  308. let begin = consoleTime.startDate ? new Date(consoleTime.startDate+ ' 00:00:00').getTime() / 1000 : '';
  309. let end = consoleTime.endDate ? new Date(consoleTime.endDate+ ' 23:59:59').getTime() / 1000 : '';
  310. try {
  311. this.$myRequest({
  312. method: 'POST',
  313. url: '/api/api_gateway?method=hran.view.hran_data',
  314. data: {
  315. d_id: this.equipInfo.d_id,
  316. start: begin,
  317. end: end,
  318. page: 1,
  319. page_size: 1
  320. }
  321. }).then((res) => {
  322. this.devicetf = false
  323. console.log('设备数据', res)
  324. if (res.data.length > 0) {
  325. const {
  326. data,
  327. title
  328. } = res
  329. // console.log(data, title, total)
  330. this.deviceData = data[0]
  331. // this.deviceTitle = title
  332. } else {
  333. this.deviceData = {}
  334. }
  335. })
  336. } catch (error) {
  337. console.log('+++++', error)
  338. }
  339. },
  340. async getDeviceStatus() {
  341. const res = await this.$myRequest({
  342. url: '/api/api_gateway?method=new_gateway.device_info.devices_list',
  343. data: {
  344. device_type_id: this.equipInfo.type,
  345. id: this.equipInfo.imei || this.equipInfo.device_id,
  346. page: 1,
  347. size: 999
  348. }
  349. })
  350. let newRes = res.device[0]
  351. this.equipInfo = {
  352. ...this.equipInfo,
  353. ...newRes
  354. }
  355. console.log('响应', this.equipInfo)
  356. },
  357. async getState() {
  358. this.dataloadingtf = true
  359. const res = await this.$myRequest({
  360. url: '/api/api_gateway?method=new_gateway.device_info.device_status',
  361. data: {
  362. device_type_id: this.equipInfo.type,
  363. id: this.equipInfo.d_id
  364. }
  365. })
  366. this.newState = res
  367. this.dataloadingtf = false
  368. console.log('res', res)
  369. },
  370. partClick(path) {
  371. console.log(path)
  372. var device_id = this.equipInfo.device_id || this.equipInfo.imei
  373. uni.navigateTo({
  374. url: path + '?d_id=' + this.equipInfo.d_id + "&device_id=" + device_id + "&device_type=" + this
  375. .type
  376. });
  377. },
  378. operate(type) {
  379. this.calendar_show = true
  380. this.operateType = type
  381. },
  382. timeChange(e, filed) {
  383. // // 根据type_id,执行相应的操作
  384. // let typeId = this.equipInfo.type
  385. // let postData = {}
  386. // if(typeId===32){
  387. // // 添加诱芯
  388. // }else if(typeId === 33){
  389. // // 添加诱芯,更换色板
  390. // this.sbSubmit(e.result)
  391. // }else if(typeId === 34){
  392. // // 添加诱芯,更换卷带
  393. // this.jdSubmit(e.result)
  394. // }
  395. this.yxSubmit(e.result)
  396. },
  397. async yxSubmit(time) {
  398. let {
  399. title,
  400. url,
  401. field
  402. } = this.operateOptions[this.operateType]
  403. if (!time) {
  404. this.$refs.toast.show({
  405. title: '请填写' + title + '到期时间!',
  406. type: 'warning',
  407. })
  408. return false
  409. }
  410. let postData = {
  411. device_type_id: this.equipInfo.type,
  412. id: this.equipInfo.device_id
  413. }
  414. postData[field] = +new Date(time) / 1000
  415. const res = await this.$myRequest({
  416. url: url,
  417. data: postData
  418. })
  419. if (res) {
  420. this.$refs.toast.show({
  421. title: title + '时间设置成功!',
  422. type: 'success',
  423. })
  424. this.getDeviceStatus()
  425. }
  426. },
  427. // 色板
  428. async sbSubmit(time) {
  429. if (!time) {
  430. this.$refs.toast.show({
  431. title: '请填写色板到期时间!',
  432. type: 'warning',
  433. })
  434. return false
  435. }
  436. const res = await this.$myRequest({
  437. url: '/api/api_gateway?method=new_gateway.device_info.sban',
  438. data: {
  439. device_type_id: this.equipInfo.type,
  440. id: this.equipInfo.device_id,
  441. sban_expire_time: +new Date(time) / 1000
  442. }
  443. })
  444. if (res) {
  445. this.$refs.toast.show({
  446. title: '设置成功!',
  447. type: 'success',
  448. })
  449. this.getDeviceStatus()
  450. }
  451. },
  452. async jdSubmit(time) {
  453. if (!time) {
  454. this.$refs.toast.show({
  455. title: '请填写卷带到期时间!',
  456. type: 'warning',
  457. })
  458. return false
  459. }
  460. const res = await this.$myRequest({
  461. url: '/api/api_gateway?method=new_gateway.device_info.syone_jd',
  462. data: {
  463. device_type_id: this.equipInfo.type,
  464. id: this.equipInfo.device_id,
  465. jd_expire_time: +new Date(time) / 1000
  466. }
  467. })
  468. if (res) {
  469. this.$refs.toast.show({
  470. title: '设置成功!',
  471. type: 'success',
  472. })
  473. this.getDeviceStatus()
  474. }
  475. },
  476. selectaddress(lat, lng) { //获取分布位置
  477. uni.request({
  478. type: "GET",
  479. url: "https://restapi.amap.com/v3/geocode/regeo?output=JSON&location=" + lng + "," + lat +
  480. "&key=27273b81090f78759e4057f94474516f&radius=1000&extensions=all",
  481. dataType: "json",
  482. complete: res => {
  483. console.log(res)
  484. this.city = res.data.regeocode.formatted_address
  485. }
  486. });
  487. },
  488. copy(item) {
  489. console.log(item)
  490. uni.setClipboardData({
  491. data: item.imei || item.device_id,
  492. success: function() {
  493. console.log('success');
  494. }
  495. });
  496. }
  497. },
  498. }
  499. </script>
  500. <style lang='scss'>
  501. page {
  502. height: 100%;
  503. .fm-page {
  504. width: 100%;
  505. min-height: 100%;
  506. background: linear-gradient(180deg, #f5f6fa00 0%, #F5F6FA 23.64%, #F5F6FA 100%), linear-gradient(102deg, #BFEADD 6.77%, #B8F1E7 40.15%, #B9EEF5 84.02%);
  507. padding-top: 44rpx;
  508. }
  509. .fm-content {
  510. padding: 0rpx 32rpx;
  511. box-sizing: border-box;
  512. }
  513. .title {
  514. color: #999999;
  515. margin: 32rpx 0;
  516. }
  517. .logo {
  518. width: 36rpx;
  519. height: 36rpx;
  520. margin-right: 12rpx;
  521. position: relative;
  522. top: 8rpx;
  523. }
  524. .device-id {
  525. height: 60rpx;
  526. line-height: 60rpx;
  527. margin-bottom: 18rpx;
  528. color: #5C5C5C;
  529. .float-right {
  530. float: right;
  531. width: 88px;
  532. height: 30px;
  533. text-align: center;
  534. position: absolute;
  535. top: 0;
  536. right: 0;
  537. border-top-right-radius: 24rpx;
  538. }
  539. }
  540. .on {
  541. background-image: url('/static/images/cb/online.png');
  542. color: #fff;
  543. }
  544. .off {
  545. background-image: url('/static/images/cb/outline.png');
  546. color: #999999;
  547. }
  548. .info {
  549. position: relative;
  550. padding: 8rpx 32rpx 32rpx 32rpx;
  551. line-height: 50rpx;
  552. font-size: 26rpx;
  553. border-radius: 24rpx;
  554. background-color: #fff;
  555. box-sizing: border-box;
  556. width: 100%;
  557. .info-list {
  558. overflow: hidden;
  559. font-size: 12px;
  560. .float-right {
  561. float: right;
  562. color: #666;
  563. .arrow {
  564. margin-left: 10rpx;
  565. }
  566. }
  567. .float-left {
  568. float: left;
  569. color: #999;
  570. }
  571. }
  572. .tishi {
  573. width: 28rpx;
  574. height: 28rpx;
  575. margin: 0rpx 0 0 12rpx;
  576. position: relative;
  577. top: 6rpx;
  578. }
  579. }
  580. .tit {
  581. font-weight: 800;
  582. height: 50rpx;
  583. font-size: 30rpx;
  584. margin-bottom: 20rpx;
  585. display: flex;
  586. justify-content: space-between;
  587. .span {
  588. color: #6e6c76;
  589. font-size: 24rpx;
  590. display: flex;
  591. justify-content: space-between;
  592. /* margin-top: 12rpx; */
  593. }
  594. }
  595. .newState {
  596. padding: 32rpx;
  597. border-radius: 16rpx;
  598. background: #FFF;
  599. .top {
  600. height: 112rpx;
  601. display: flex;
  602. justify-content: space-between;
  603. align-items: center;
  604. .left {
  605. width: 40%;
  606. display: flex;
  607. align-items: center;
  608. }
  609. .right {
  610. width: 160rpx;
  611. }
  612. .img {
  613. float: left;
  614. width: 110rpx;
  615. height: 110rpx;
  616. margin-right: 32rpx;
  617. }
  618. p:nth-child(2) {
  619. color: #687A74;
  620. }
  621. .num {
  622. font-size: 40rpx;
  623. font-weight: 700;
  624. color: #042118;
  625. }
  626. }
  627. .up-down {
  628. height: 222rpx;
  629. margin: 32rpx 0;
  630. display: flex;
  631. gap: 18rpx;
  632. justify-content: space-between;
  633. }
  634. .bottom {
  635. box-sizing: border-box;
  636. height: 100%;
  637. display: flex;
  638. padding: 32rpx 0;
  639. flex-direction: column;
  640. justify-content: center;
  641. align-items: center;
  642. gap: 30rpx;
  643. flex: 1 0 0;
  644. border-radius: 16rpx;
  645. background: linear-gradient(180deg, #14a4781a 0%, #14a47800 100%), #FFF;
  646. .opt {
  647. width: 70rpx;
  648. height: 70rpx;
  649. font-size: 24rpx;
  650. color: #687A74;
  651. image {
  652. width: 64rpx;
  653. height: 64rpx;
  654. float: left;
  655. margin-right: 16rpx;
  656. }
  657. .num {
  658. color: #042118;
  659. font-weight: 700;
  660. font-size: 28rpx;
  661. }
  662. }
  663. }
  664. .btn {
  665. button {
  666. font-size: 28rpx;
  667. width: 100%;
  668. background: #EEF0F8;
  669. height: 63rpx;
  670. line-height: 63rpx;
  671. border: none;
  672. outline: none;
  673. border-radius: 16rpx;
  674. &:after {
  675. border: none;
  676. }
  677. &.active {
  678. color: #fff;
  679. background: #14A478;
  680. }
  681. }
  682. }
  683. }
  684. }
  685. /deep/.u-calendar__action {
  686. display: flex;
  687. justify-content: space-around;
  688. .u-calendar__action__text {
  689. line-height: 25px;
  690. }
  691. }
  692. .red {
  693. color: rgb(235, 103, 101);
  694. }
  695. .consoleList {
  696. padding: 32rpx;
  697. background: #fff;
  698. border-radius: 16rpx;
  699. margin-top: 32rpx;
  700. min-height: calc(100vh - 1020rpx);
  701. .title {
  702. margin: 0;
  703. margin-bottom: 16rpx;
  704. color: #042118;
  705. font-weight: 600;
  706. }
  707. .histimeBox {
  708. margin: 32rpx 0;
  709. }
  710. .tableList {
  711. font-size: 28rpx;
  712. height: 93rpx;
  713. color: #042118;
  714. display: flex;
  715. justify-content: space-between;
  716. align-items: center;
  717. border-bottom: 2rpx solid var(--neutral-color-border-base, #DCE6E3);
  718. view {
  719. text-align: center;
  720. }
  721. .success {
  722. color: #14A478;
  723. }
  724. .error {
  725. color: #FF5951;
  726. }
  727. view:nth-child(1) {
  728. width: 160rpx;
  729. text-align: left;
  730. }
  731. view:nth-child(2) {
  732. width: 170rpx;
  733. }
  734. view:nth-child(3) {
  735. width: 120rpx;
  736. }
  737. }
  738. .tableTitle {
  739. /* background: #E8F3F0; */
  740. color: #042118;
  741. font-weight: 500;
  742. height: 78rpx;
  743. }
  744. }
  745. .histimeBox {
  746. display: flex;
  747. align-items: center;
  748. justify-content: space-between;
  749. height: 56rpx;
  750. padding: 6rpx 24rpx;
  751. box-sizing: border-box;
  752. border-radius: 8rpx;
  753. margin-top: 54rpx;
  754. border: 2rpx solid var(--neutral-color-border-light, #e4edea);
  755. .u-icon {
  756. z-index: 10;
  757. }
  758. .time {
  759. width: 280rpx;
  760. color: #c1c1c1;
  761. }
  762. view {
  763. color: #333333;
  764. text-align: center;
  765. }
  766. }
  767. .btn-box {
  768. text-align: center;
  769. }
  770. </style>