cbwarn.vue 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843
  1. <template>
  2. <view class="content">
  3. <view class="cbwtop">
  4. <image :src="bannersrc" mode="" class="image">
  5. </image>
  6. <view class="tab-box">
  7. <view v-for="(item, index) in equipArr" :key="index" @click="tabClick(index)"
  8. :class="['tab-item', active == index ? 'active' : '']">
  9. <text>{{ item }}</text>
  10. <text class="bottom-line"></text>
  11. </view>
  12. </view>
  13. <view class="timeandtype" v-if="active==0 && wranlistdata.length > 0">
  14. <view class="timebox">
  15. <view class="firsttime" @click="timeshow=true">
  16. {{start_time==""?'请选择开始时间':start_time}}
  17. </view>
  18. <view class="jiange">
  19. -
  20. </view>
  21. <view class="endtime" @click="timeshow=true">
  22. {{end_time==""?'请选择结束时间':end_time}}
  23. </view>
  24. <view class="jiange" @click="closetime">
  25. <u-icon name="close-circle" color="#999999"></u-icon>
  26. </view>
  27. </view>
  28. </view>
  29. </view>
  30. <view class="" v-show="active==0">
  31. <view class="warmlistbox" v-if="wranlistdata.length > 0">
  32. <view class="warmlistbox_item" v-for="item in wranlistdata" :key="item.id" @click="singleread(item)">
  33. <view class="warmlistbox_item_title" :style="{'border-color':item.status==1?'#14A478':'#fd4646'}">
  34. <!-- {{recordtypelist[item.warning_type].label}} -->
  35. {{device_type == 5 ? '气象' : '墒情'}}预警
  36. </view>
  37. <view class="warmlistbox_item_text">
  38. <view class="item_text_item">
  39. <view class="item_text_item_f">
  40. 设备编号:
  41. </view>
  42. <view class="item_text_item_e">
  43. {{item.device_id}}
  44. </view>
  45. </view>
  46. <view class="item_text_item">
  47. <view class="item_text_item_f">
  48. 设备位置:
  49. </view>
  50. <view class="item_text_item_e" style="display: flex;">
  51. <u-icon name="map-fill" color="#14A478" @click.stop="tomap(item)"></u-icon>
  52. <view class="" style="margin-left: 10rpx;color: #14A478;" @click.stop="tomap(item)">
  53. 查看
  54. </view>
  55. </view>
  56. </view>
  57. <view class="item_text_item">
  58. <view class="item_text_item_f">
  59. 设备预警:
  60. </view>
  61. <view class="item_text_item_e">
  62. {{item.warning_content}}
  63. </view>
  64. </view>
  65. <view class="item_text_sta">
  66. <view class="" style="color: #959699;">
  67. {{item.upl_time | timeFormat()}}
  68. </view>
  69. <view class="" :style="{'margin-left':'10rpx','color':item.status==1?'#959699':'#FD4646'}">
  70. {{item.status==1?'已读':'未读'}}
  71. </view>
  72. </view>
  73. </view>
  74. </view>
  75. </view>
  76. <view class="warmlistbox empty" v-else>
  77. 暂无数据
  78. </view>
  79. </view>
  80. <view class="warmissuebox" v-show="active == 1">
  81. <view class="warmissue">
  82. <view class="warmissue_itemone">
  83. <view class="">
  84. 短信剩余条数:
  85. </view>
  86. <view class="">
  87. {{total_sms_counts}}
  88. </view>
  89. </view>
  90. <view class="warmissue_item">
  91. <view class="warmissue_item_title">
  92. 短信内容:
  93. </view>
  94. <view class="warmissue_item_text">
  95. <view class="">
  96. 尊敬的用户您好,管理员 提醒您,结合近期设备上报的数据,
  97. </view>
  98. <view class="" style="margin: 20rpx 0 ;">
  99. <u-input v-model="wormvalue" type="textarea" :border="true" maxlength="30" />
  100. </view>
  101. <view class="">
  102. 请注意防范。
  103. </view>
  104. </view>
  105. </view>
  106. <view class="">
  107. <view class="warmissue_itemone">
  108. <view class="">
  109. 短信接受人:
  110. </view>
  111. <view class="" style="color: #14A478;" @click="tobook">
  112. 预警通讯录编辑
  113. </view>
  114. </view>
  115. <view class="warmissue_itemtwo" @click="accServiceShow = true">
  116. <view class="itemtwo_left" v-show="!userphone.length">
  117. 请选择短信接收人
  118. </view>
  119. <view class="itemtwo_left" v-show="userphone.length">
  120. <view class="" style="margin-right: 20rpx;" v-for="item in userphone" :key="item.value">
  121. {{item.name}}
  122. </view>
  123. </view>
  124. <u-icon name="arrow-down" class="icon" color="#999999"></u-icon>
  125. </view>
  126. </view>
  127. </view>
  128. <view class="sendbox" @click="send">
  129. 发送预警
  130. </view>
  131. </view>
  132. <view class="wornsetbox" v-show="active == 2">
  133. <view class="empty" v-if="configlist.length == 0">
  134. 暂无数据
  135. </view>
  136. <u-swipe-action :show="item.show" :index="index" v-for="(item, index) in configlist" :key="item.id"
  137. @click="delconfig(item.id)" :options="options" style="margin-bottom: 30rpx;">
  138. <view class="wornsetbox_item" @click="toset(item.id)">
  139. <view class="">
  140. {{item.title}}
  141. </view>
  142. <view class="" @click.stop>
  143. <u-switch v-model="item.statustf" size="40" style="margin-top: 13rpx;"
  144. @change="swichchange($event,item.id)"></u-switch>
  145. </view>
  146. </view>
  147. </u-swipe-action>
  148. </view>
  149. <view class="addwarnlist" v-show="active == 2" @click="addwarning_config">
  150. 添 加
  151. </view>
  152. <view class="">
  153. <u-mask :show="accServiceShow" z-index="998"></u-mask>
  154. <u-calendar v-model="timeshow" :mode="mode" @change="timechange" range-color="#999"
  155. btn-type="success"
  156. active-bg-color="#0BBC58"
  157. range-bg-color="rgba(11,188,88,0.13)"></u-calendar>
  158. <multiple-select v-model="accServiceShow" :value="accServiceShow" :data="serviceList"
  159. :default-selected="defaultSelected" @confirm="accServiceConfirm"></multiple-select>
  160. <u-modal v-model="modalshow" title="短信预警详情" :content="content" @confirm="singlereadsure"></u-modal>
  161. <u-modal v-model="addshow" title="添加预警" :show-cancel-button="true" @confirm="addwarning_config">
  162. <view class="addinfobox">
  163. <view class="addinfobox_title">
  164. <span>*</span>
  165. <span>预警名称</span>
  166. </view>
  167. <u-input v-model="addvalue" maxlength="10" />
  168. </view>
  169. </u-modal>
  170. </view>
  171. <view class="top" v-if="active!=1">
  172. <view class="backtop" @click="top" v-if="isTop">
  173. <image :src="src" mode=""></image>
  174. </view>
  175. <view class="more" @click="allread" v-show="active==0">
  176. <view class="">
  177. 一键
  178. </view>
  179. <view class="">
  180. 已读
  181. </view>
  182. </view>
  183. </view>
  184. </view>
  185. </template>
  186. <script>
  187. import multipleSelect from "../../components/multiple-select.vue";
  188. export default {
  189. components: {
  190. multipleSelect,
  191. },
  192. data() {
  193. return {
  194. bannersrc:this.$imageURL+'/bigdata_app/image/cbyj/banner2.png',
  195. device_type:'',
  196. date: "",
  197. active: 0,
  198. equipArr: ["预警记录", "预警发布", "预警设置"],
  199. timeshow: false,
  200. mode: 'range',
  201. start_time: "",
  202. end_time: "",
  203. wranlistdata: [],
  204. listpage: 1,
  205. defaultSelected: [], //默认选中项
  206. serviceList: [{
  207. value: "1",
  208. name: "目标种类预警",
  209. },
  210. {
  211. value: "2",
  212. name: "指定害虫数量预警",
  213. },
  214. {
  215. value: "3",
  216. name: "害虫数量总和预警",
  217. },
  218. {
  219. value: "4",
  220. name: "综合预警",
  221. },
  222. ], //传递给子组件的数据
  223. accServiceShow: false,
  224. wormvalue: "",
  225. userphone: [],
  226. total_sms_counts: "",
  227. isTop: false,
  228. src: '../../static/images/1.png',
  229. src1: '../../static/images/b0bcdb0e3fe8690520f743aa8303bf2.png',
  230. filtrateTF: false,
  231. modalshow: false,
  232. content: '',
  233. warmstatus: {
  234. },
  235. //预警设置
  236. configlist: [],
  237. addvalue: "",
  238. addshow: false,
  239. options: [{
  240. text: '删除',
  241. style: {
  242. backgroundColor: '#dd524d'
  243. }
  244. }],
  245. confpage:1
  246. }
  247. },
  248. methods: {
  249. tabClick(index) {
  250. this.active = index
  251. if (index == 0) {
  252. this.listpage = 1
  253. this.wranlistdata = []
  254. this.getwranlistdata()
  255. } else if (index == 1) {
  256. this.getmessagescounts()
  257. } else if (index == 2) {
  258. this.confpage = 1
  259. this.configlist = []
  260. this.getconfiglist()
  261. }
  262. },
  263. timechange(e) {
  264. console.log(e)
  265. this.start_time = e.startDate
  266. this.end_time = e.endDate
  267. this.listpage = 1
  268. this.wranlistdata = []
  269. this.getwranlistdata()
  270. },
  271. closetime() {
  272. this.start_time = ""
  273. this.end_time = ""
  274. this.listpage = 1
  275. this.wranlistdata = []
  276. this.getwranlistdata()
  277. },
  278. async getwranlistdata() {
  279. var end_time = ""
  280. var start_time = ""
  281. if(this.end_time!=""){
  282. end_time = Math.floor(+new Date(this.end_time)/1000)
  283. }else{
  284. end_time = ""
  285. }
  286. if(this.start_time!=""){
  287. start_time = Math.floor(+new Date(this.start_time)/1000)
  288. }else{
  289. start_time = ""
  290. }
  291. const res = await this.$myRequest({
  292. url: '/api/api_gateway?method=device.device_sms_alert.user_qxz_warning_list',
  293. data: {
  294. end_time: end_time,
  295. page: this.listpage,
  296. page_size: "10",
  297. start_time: start_time,
  298. device_type: this.device_type
  299. }
  300. })
  301. console.log(res)
  302. this.wranlistdata = this.wranlistdata.concat(res.data)
  303. },
  304. tomap(data) {
  305. uni.navigateTo({
  306. url: "../cbqxyj/basemap?device_id=" + data.device_id,
  307. })
  308. },
  309. accServiceConfirm(e) {
  310. console.log(e)
  311. this.userphone = e
  312. },
  313. async getuseriphonelist() {
  314. const res = await this.$myRequest({
  315. url: '/api/api_gateway?method=device.device_sms_alert.user_warning_liaisons_list',
  316. data: {
  317. page: 1,
  318. device_type: this.device_type,
  319. page_size: 9999999,
  320. }
  321. })
  322. console.log(res)
  323. this.serviceList = []
  324. for (var i = 0; i < res.data.length; i++) {
  325. var obj = {
  326. value: res.data[i].d_id,
  327. name: res.data[i].liaisons + "/" + res.data[i].phone,
  328. }
  329. this.serviceList.push(obj)
  330. }
  331. },
  332. async getmessagescounts() {
  333. const res = await this.$myRequest({
  334. url: '/api/api_gateway?method=device.device_sms_alert.remaining_messages_counts',
  335. data: {
  336. device_type: this.device_type
  337. }
  338. })
  339. console.log(res)
  340. this.total_sms_counts = res.total_sms_counts
  341. },
  342. async send() {
  343. if (this.wormvalue == "") {
  344. uni.showToast({
  345. title: "请填写短信预警信息",
  346. icon: "none"
  347. })
  348. } else if (this.userphone.length == 0) {
  349. uni.showToast({
  350. title: "请选择短信接收人",
  351. icon: "none"
  352. })
  353. } else {
  354. var list = []
  355. for (var i = 0; i < this.userphone.length; i++) {
  356. list.push(this.userphone[i].value)
  357. }
  358. const res = await this.$myRequest({
  359. url: '/api/api_gateway?method=device.device_sms_alert.user_pest_warning_release',
  360. data: {
  361. send_user: list.join(","),
  362. content: this.wormvalue,
  363. device_type_id: this.device_type,
  364. device_type: this.device_type
  365. }
  366. })
  367. console.log(res)
  368. if (res) {
  369. uni.showToast({
  370. title: "发送成功",
  371. icon: "none"
  372. })
  373. } else {
  374. uni.showToast({
  375. title: "发送失败",
  376. icon: "none"
  377. })
  378. }
  379. }
  380. },
  381. tobook() {
  382. uni.navigateTo({
  383. url: "../cbqxyj/addressbook"
  384. })
  385. },
  386. async allread() {
  387. const res = await this.$myRequest({
  388. url: '/api/api_gateway?method=device.device_sms_alert.user_qxz_warning_record_read',
  389. data: {
  390. req: "all",
  391. device_type: this.device_type
  392. }
  393. })
  394. if (res) {
  395. uni.showToast({
  396. title: "已完成一键已读",
  397. icon: "none"
  398. })
  399. }
  400. },
  401. singleread(data) {
  402. console.log(data)
  403. this.modalshow = true
  404. this.content = data.warning_content
  405. this.warmstatus = data
  406. },
  407. async singlereadsure() {
  408. if (this.warmstatus.status == 0) {
  409. const res = await this.$myRequest({
  410. url: '/api/api_gateway?method=device.device_sms_alert.user_qxz_warning_record_read',
  411. data: {
  412. id: this.warmstatus.id
  413. }
  414. })
  415. if (res) {
  416. uni.showToast({
  417. title: "此条预警已读",
  418. icon: "none"
  419. })
  420. this.listpage = 1
  421. this.wranlistdata = []
  422. this.getwranlistdata()
  423. }
  424. }
  425. },
  426. top() {
  427. uni.pageScrollTo({
  428. scrollTop: 0,
  429. duration: 500,
  430. });
  431. },
  432. async getconfiglist() {
  433. const res = await this.$myRequest({
  434. url: '/api/api_gateway?method=device.device_sms_alert.user_warning_config_list',
  435. data: {
  436. device_type_id: this.device_type,
  437. page: this.confpage,
  438. device_type: this.device_type,
  439. page_size: "10",
  440. }
  441. })
  442. console.log(res.data)
  443. this.configlist = []
  444. for (var i = 0; i < res.data.length; i++) {
  445. res.data[i]["statustf"] = res.data[i].status == 1 ? true : false
  446. }
  447. this.configlist = this.configlist.concat(res.data)
  448. console.log(this.configlist)
  449. },
  450. async swichchange(e, id) {
  451. // console.log(e, id)
  452. // console.log(this.configlist)
  453. const res = await this.$myRequest({
  454. url: '/api/api_gateway?method=device.device_sms_alert.modify_user_warning_config_status',
  455. data: {
  456. id: id,
  457. status: e ? 1 : 0,
  458. }
  459. })
  460. if (res) {
  461. uni.showToast({
  462. title: "状态修改成功",
  463. icon: "none"
  464. })
  465. }
  466. this.confpage = 1
  467. this.getconfiglist()
  468. },
  469. toset(id) {
  470. console.log(id)
  471. uni.navigateTo({
  472. url: "./warnset?id=" + id + '&typeId=' + this.device_type
  473. })
  474. },
  475. async addwarning_config() {
  476. uni.navigateTo({
  477. url: "./warnset?type=new" + '&typeId=' + this.device_type
  478. })
  479. // this.addshow = true
  480. // if (this.addvalue == "") {
  481. // uni.showToast({
  482. // title: "请填写预警名称",
  483. // icon: "none"
  484. // })
  485. // } else {
  486. // const res = await this.$myRequest({
  487. // url: '/api/api_gateway?method=device.device_sms_alert.create_user_warning_config',
  488. // data: {
  489. // title: this.addvalue,
  490. // device_type: this.device_type,
  491. // device_type_id: this.device_type
  492. // }
  493. // })
  494. // console.log(res)
  495. // if (res) {
  496. // this.addshow = false
  497. // this.configlist = []
  498. // this.confpage = 1
  499. // this.getconfiglist()
  500. // }
  501. // }
  502. },
  503. async delconfig(id){
  504. const res = await this.$myRequest({
  505. url: '/api/api_gateway?method=device.device_sms_alert.del_user_warning_config_status',
  506. data: {
  507. id:id
  508. }
  509. })
  510. console.log(res)
  511. if (res) {
  512. this.configlist = []
  513. this.confpage = 1
  514. this.getconfiglist()
  515. }
  516. }
  517. },
  518. onLoad(option) {
  519. console.log(option)
  520. this.device_type = option.typeId;
  521. if(option.typeId == 15) {
  522. uni.setNavigationBarTitle({title:'墒情预警'})
  523. this.bannersrc = 'https://webstaticimg.oss-cn-hangzhou.aliyuncs.com/bigdata_app/image/cbyj/banner15.png'
  524. }
  525. this.getwranlistdata()
  526. // this.getmessagescounts()
  527. // this.getconfiglist()
  528. },
  529. onShow() {
  530. this.getuseriphonelist();
  531. this.getconfiglist();
  532. },
  533. onReachBottom() {
  534. if (this.active == 0) {
  535. this.listpage++
  536. this.getwranlistdata()
  537. } else if (this.ctive == 2) {
  538. this.confpage++
  539. this.getconfiglist()
  540. }
  541. },
  542. onPageScroll(e) {
  543. //nvue暂不支持滚动监听,可用bindingx代替
  544. if (e.scrollTop > 200) {
  545. //距离大于200时显示
  546. this.isTop = true;
  547. } else {
  548. //距离小于200时隐藏
  549. this.isTop = false;
  550. }
  551. },
  552. }
  553. </script>
  554. <style lang="less">
  555. page {
  556. background-color: #F6F6FB;
  557. }
  558. .cbwtop {
  559. position: fixed;
  560. top: 0px;
  561. width: 100%;
  562. z-index: 555;
  563. background-color: #fff;
  564. .image {
  565. width: 100%;
  566. height: 160rpx;
  567. }
  568. .tab-box {
  569. font-size: 30rpx;
  570. line-height: 80rpx;
  571. background-color: #ffffff;
  572. width: 100%;
  573. overflow: hidden;
  574. overflow-x: scroll;
  575. white-space: nowrap;
  576. .tab-item {
  577. cursor: pointer;
  578. position: relative;
  579. width: 25%;
  580. text-align: center;
  581. display: inline-block;
  582. }
  583. .tab-item.active {
  584. .bottom-line {
  585. bottom: 0;
  586. position: absolute;
  587. display: inline-block;
  588. width: 90rpx;
  589. height: 6rpx;
  590. left: 0;
  591. right: 0;
  592. margin: auto;
  593. background: #57C878;
  594. }
  595. }
  596. }
  597. .timeandtype {
  598. background-color: #F6F6FB;
  599. padding: 20rpx;
  600. box-sizing: border-box;
  601. .timebox {
  602. display: flex;
  603. background-color: #fff;
  604. padding: 10px;
  605. border-top-right-radius: 5px;
  606. border-top-left-radius: 5px;
  607. .jiange {
  608. width: 5%;
  609. text-align: center;
  610. }
  611. .firsttime,
  612. .endtime {
  613. width: 45%;
  614. text-align: center;
  615. }
  616. }
  617. .warntypebox {
  618. display: flex;
  619. justify-content: space-between;
  620. background-color: #fff;
  621. padding: 10px;
  622. border-top: 1px solid #F6F6FB;
  623. border-bottom-right-radius: 5px;
  624. border-bottom-left-radius: 5px;
  625. }
  626. }
  627. }
  628. .warmlistbox {
  629. width: 95%;
  630. margin: 0 auto;
  631. padding-top: 370rpx;
  632. .warmlistbox_item {
  633. padding: 20rpx 0;
  634. box-sizing: border-box;
  635. background-color: #fff;
  636. border-radius: 10rpx;
  637. margin-bottom: 20rpx;
  638. .warmlistbox_item_title {
  639. border-left: 8rpx solid #14A478;
  640. padding-left: 30rpx;
  641. }
  642. .warmlistbox_item_text {
  643. width: 90%;
  644. margin: 0 auto;
  645. margin-top: 20rpx;
  646. border-top: 1px solid #F2F2F2;
  647. padding: 20rpx 0;
  648. .item_text_item {
  649. margin-bottom: 7px;
  650. display: flex;
  651. .item_text_item_f {
  652. width: 140rpx;
  653. }
  654. .item_text_item_e {
  655. width: calc(100% - 140rpx);
  656. display: -webkit-box; //谷歌
  657. -webkit-box-orient: vertical;
  658. -webkit-line-clamp: 4; //显示几行
  659. overflow: hidden;
  660. }
  661. }
  662. .item_text_sta {
  663. display: flex;
  664. justify-content: flex-end;
  665. }
  666. }
  667. }
  668. }
  669. .empty{
  670. display: flex;
  671. justify-content: center;
  672. align-items: center;
  673. }
  674. .warmissuebox {
  675. width: 95%;
  676. margin: 0 auto;
  677. padding-top: 270rpx;
  678. .warmissue {
  679. width: 95%;
  680. margin: 0 auto;
  681. padding: 20rpx;
  682. background-color: #fff;
  683. border-radius: 5px;
  684. .warmissue_itemone {
  685. margin-bottom: 60rpx;
  686. display: flex;
  687. justify-content: space-between;
  688. }
  689. .warmissue_item {
  690. margin-bottom: 60rpx;
  691. display: flex;
  692. .warmissue_item_title {
  693. width: 160rpx;
  694. }
  695. .warmissue_item_text {
  696. width: calc(100% - 160rpx);
  697. }
  698. }
  699. .warmissue_itemtwo {
  700. display: flex;
  701. .itemtwo_left {
  702. width: calc(100% - 40rpx);
  703. display: flex;
  704. flex-wrap: wrap;
  705. }
  706. .icon {
  707. width: 40rpx;
  708. }
  709. }
  710. }
  711. .sendbox {
  712. margin: 40rpx auto;
  713. width: 80%;
  714. background-color: #14A478;
  715. padding: 20rpx 0;
  716. border-radius: 59px;
  717. text-align: center;
  718. color: #fff;
  719. }
  720. }
  721. .wornsetbox {
  722. width: 95%;
  723. margin: 0 auto;
  724. padding-top: 270rpx;
  725. .wornsetbox_item {
  726. padding: 30rpx 20rpx;
  727. background-color: #fff;
  728. width: 100%;
  729. display: flex;
  730. justify-content: space-between;
  731. box-sizing: border-box;
  732. line-height: 64rpx;
  733. height: 124rpx;
  734. // margin-bottom: 30rpx;
  735. }
  736. }
  737. .addwarnlist {
  738. position: absolute;
  739. bottom: 20rpx;
  740. left: 10%;
  741. margin: 40rpx auto;
  742. width: 80%;
  743. background-color: #14A478;
  744. padding: 20rpx 0;
  745. border-radius: 59px;
  746. text-align: center;
  747. color: #fff;
  748. }
  749. .addinfobox {
  750. display: flex;
  751. margin: 30rpx 0;
  752. .addinfobox_title {
  753. line-height: 70rpx;
  754. width: 30%;
  755. text-align: center;
  756. span:first-child {
  757. color: red;
  758. }
  759. }
  760. /deep/.u-input__right-icon {
  761. line-height: 35px;
  762. }
  763. }
  764. /deep/.u-calendar__action {
  765. display: flex;
  766. justify-content: space-around;
  767. .u-calendar__action__text {
  768. line-height: 25px;
  769. }
  770. }
  771. .top {
  772. position: fixed;
  773. right: 10px;
  774. bottom: 40px;
  775. z-index: 100;
  776. image {
  777. width: 100rpx;
  778. height: 100rpx;
  779. }
  780. .backtop {
  781. display: flex;
  782. justify-content: flex-end;
  783. margin-bottom: 10rpx;
  784. }
  785. .more {
  786. width: 100rpx;
  787. height: 100rpx;
  788. background-color: rgba(161, 161, 161, 0.45);
  789. border-radius: 50%;
  790. text-align: center;
  791. padding-top: 10rpx;
  792. line-height: 40rpx;
  793. box-sizing: border-box;
  794. margin: 14rpx 0 0 0;
  795. color: #fff;
  796. }
  797. }
  798. </style>