index.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962
  1. <template>
  2. <view>
  3. <view class="textbox">
  4. <view class="inputs">
  5. <u-search placeholder="请输入设备名称/编号" v-model="device_id" placeholder-color="#909696" :show-action="false"
  6. search-icon-color="#909696" @input="searchinput">
  7. </u-search>
  8. </view>
  9. <view class="tab">
  10. <view class="tab-content">
  11. <view class="tab-box tab-box-top">
  12. <view v-for="(item,index) in menuList" :key="index" @click="change(index,item)"
  13. v-if="isShow(item)"
  14. :class="['tab-item',current==index?'active':'']">
  15. <image class="img-icon" :src="item.app_menu_icon" mode=""></image>
  16. <view class="text">{{ getSlice(item.purview_name) }}</view>
  17. </view>
  18. </view>
  19. </view>
  20. </view>
  21. <view class="listbox">
  22. <view class="second-tab">
  23. <view class="tab-box">
  24. <view
  25. v-for="(item,index) in list"
  26. :key="index"
  27. @click="changeDevice(item,index)"
  28. v-show="!item.url"
  29. :class="['tab-item',currents == index?'active':'']"
  30. >
  31. <text>{{item.purview_name}}</text>
  32. </view>
  33. </view>
  34. </view>
  35. <view class="third-tab">
  36. <view
  37. class="third-tab-item"
  38. @click="changeStatus('')"
  39. :class="{'active-tab' : device_status == ''}"
  40. >总计{{ counts }}</view>
  41. <view
  42. class="third-tab-item"
  43. @click="changeStatus('1')"
  44. :class="{'active-tab' : device_status == '1'}"
  45. >在线{{ online_counts }}</view>
  46. <view
  47. class="third-tab-item"
  48. @click="changeStatus('0')"
  49. :class="{'active-tab' : device_status == '0'}"
  50. >离线{{ offline_counts }}</view>
  51. </view>
  52. <scroll-view
  53. :scroll-top="0"
  54. :scroll-y="true"
  55. class="list scroll-Y"
  56. @scrolltoupper="upper"
  57. @scrolltolower="lower"
  58. @scroll="scroll"
  59. >
  60. <view class="list_item" v-for="(item, index) in eqlistdata" :key="index" @click="historys(item)">
  61. <view class="list_item_top">
  62. <p class="p1">
  63. <span class="title">{{ (item.name || '--' )}}</span>
  64. <span class="sub-title" @click.stop="modification(item)">信息修改</span>
  65. </p>
  66. <p class="online-status">
  67. <image
  68. v-if="item.status == 1 || item.is_online"
  69. :src="$imageURL+'/bigdata_app/newImg/home/online.png'"
  70. mode=""
  71. ></image>
  72. <image
  73. v-else
  74. :src="$imageURL+'/bigdata_app/newImg/home/outline.png'"
  75. mode=""
  76. ></image>
  77. </p>
  78. </view>
  79. <view class="list_item_text">
  80. <p v-if="item.imei">
  81. <span class="label">IMEI</span>{{ (item.dui || item.imei) }}
  82. </p>
  83. <p>
  84. <span class="label">设备ID</span>{{ item.only_for_show || item.id || item.device_id }}
  85. </p>
  86. <p>
  87. <span class="label">上报时间</span>{{ (item.report || item.uptime) | timeFormat() }}
  88. </p>
  89. <p style="display:flex;align-items: center;">
  90. <span class="label">设备位置</span>
  91. <span class="nav-label">{{ (item.address|| '无') }}</span>
  92. </p>
  93. </view>
  94. </view>
  95. </scroll-view>
  96. </view>
  97. </view>
  98. <view class="loading" v-if="loadingtf">
  99. <image src="../../static/images/ajax-loader.gif" mode="" class="img"></image>
  100. </view>
  101. <view class="top" v-if="isTop" @click="top">
  102. <image
  103. :src="
  104. $imageURL+'/bigdata_app' +
  105. '/image/6209a98f0cb3b5086f2ca36152c9269.png'
  106. " mode=""></image>
  107. </view>
  108. </view>
  109. </template>
  110. <script>
  111. import {
  112. Debounce,
  113. Throttle
  114. } from '../../util/anitthro.js';
  115. export default {
  116. data() {
  117. return {
  118. list: [],
  119. pur_id: '',
  120. currentPur_id:'',
  121. device_status: '',
  122. counts:0,
  123. online_counts:0,
  124. offline_counts:0,
  125. current: 0,
  126. currents: 0,
  127. total: 0,
  128. refreshData:'',
  129. page: 1,
  130. size: 10,
  131. eqlistdata: [],
  132. isTop: false,
  133. device_model: '',
  134. infoalter: false, // 权限设置,
  135. type_id: 0, //设备类型,
  136. imgpath: [],
  137. loadingtf: false,
  138. width: 0, //顶部搜索栏宽度
  139. device_id: '', //搜索设备ID
  140. menuList: []
  141. };
  142. },
  143. methods: {
  144. isShow(item){
  145. return item.pur_id != 422
  146. },
  147. getSlice(name){
  148. return name.slice(0,4)
  149. },
  150. modification(item) {
  151. uni.navigateTo({
  152. url:
  153. './seabox/modification?data=' +
  154. JSON.stringify(item) +
  155. '&id=' +
  156. this.type_id,
  157. });
  158. },
  159. changeStatus(status){
  160. this.device_status = status;
  161. Debounce(() => {
  162. this.page = 1;
  163. this.eqlist();
  164. }, 500)();
  165. },
  166. async getUserlogin() {
  167. this.list = [];
  168. const res = await this.$myRequest({
  169. url: '/api/api_gateway?method=user.login.user_login_info',
  170. method: 'POST',
  171. data: {
  172. is_app: 1,
  173. },
  174. });
  175. res.forEach(item=>{
  176. item.icon = '/bigdata_app/newImg/home/sqjd.png'
  177. })
  178. const menulist = res || [];
  179. const menuItem = menulist.find(item => item.purview_name == '智慧物联')
  180. this.menuList = menuItem.children || [];
  181. if(!this.pur_id){
  182. this.list = this.menuList[0].children || []
  183. this.pur_id = this.menuList[0].pur_id || '';
  184. this.current = 0;
  185. }else{
  186. this.list = this.menuList.find(item => item.pur_id == this.pur_id)?.children || []
  187. this.pur_id = this.menuList.find(item => item.pur_id == this.pur_id)?.pur_id || '';
  188. this.current = this.menuList.findIndex(item => item.pur_id == this.pur_id);
  189. }
  190. if(this.list[0].purview_name != '全部'){
  191. this.list.unshift({
  192. device_type_id: '',
  193. purview_name: '全部'
  194. })
  195. }
  196. this.type_id = this.list[0].device_type_id;
  197. this.initPage();
  198. },
  199. async eqlist(tf) {
  200. this.counts = 0;
  201. this.online_counts = 0;
  202. this.offline_counts = 0;
  203. this.loadingtf = true;
  204. let data = {
  205. device_type_id: this.type_id,
  206. page_num: this.page,
  207. page_size: this.size,
  208. pur_id: this.pur_id,
  209. device_status: this.device_status,
  210. device_id: this.device_id,
  211. device_model: this.device_model
  212. }
  213. const res = await this.$myRequest({
  214. url: '/api/api_gateway?method=device.app_device.app_device_list',
  215. data: data,
  216. });
  217. this.loadingtf = false;
  218. const status = res?.status || {};
  219. this.online_counts = status.online || 0;
  220. this.offline_counts = status.offline || 0;
  221. this.counts = (status.online || 0) + (status.offline || 0);
  222. this.total = res.total || 0;
  223. if (tf) {
  224. this.eqlistdata = this.eqlistdata.concat(res.data);
  225. } else {
  226. this.eqlistdata = res.data;
  227. }
  228. },
  229. change(index,itemData) {
  230. this.list = this.menuList[index].children || []
  231. if(this.list[0].purview_name != '全部'){
  232. this.list.unshift({
  233. device_type_id: '',
  234. purview_name: '全部'
  235. })
  236. }
  237. this.current = index;
  238. const item = this.list[0];
  239. this.pur_id = itemData.pur_id || '';
  240. this.changeDevice(item,0);
  241. },
  242. changeDevice(item,index){
  243. this.currents = index;
  244. this.currentPur_id = item.pur_id || '';
  245. const name = item.menu;
  246. if (name === 'cbd4') {
  247. this.device_model = 11;
  248. } else if(name === 'cbd1'){
  249. this.device_model = 12;
  250. } else if(name === 'cbd3'){
  251. this.device_model = '';
  252. } else if(name === 'cbd5'){
  253. this.device_model = 13;
  254. } else if(name === 'cbd6'){
  255. this.device_model = 14;
  256. }else if(name === 'gkcbd1'){
  257. this.device_model = 15;
  258. } else {
  259. this.device_model = item.device_model || '';
  260. }
  261. this.page = 1;
  262. this.eqlistdata = [];
  263. this.type_id = item.device_type_id;
  264. Debounce(() => {
  265. this.eqlist();
  266. }, 500)();
  267. },
  268. top() {
  269. uni.pageScrollTo({
  270. scrollTop: 0,
  271. duration: 500,
  272. });
  273. },
  274. initPage(){
  275. this.eqlistdata = [];
  276. this.currents = 0;
  277. this.page = 1;
  278. Debounce(() => {
  279. this.eqlist(true);
  280. }, 500)();
  281. this.width = 0;
  282. },
  283. historys(item) {
  284. const type_id = item.type_id;
  285. item.pur_id = this.currentPur_id;
  286. switch (type_id) {
  287. // 水肥新设备
  288. case 22:
  289. var obj = {};
  290. obj.d_id = item.d_id;
  291. obj.device_id = item.id;
  292. obj.is_online = item.status;
  293. obj.lat = item.lat;
  294. obj.lng = item.lng;
  295. obj.equip_name = item.name;
  296. obj.uptime = item.uptime;
  297. uni.navigateTo({
  298. url: '../waterandfernew/details?shebei=' + JSON.stringify(obj),
  299. });
  300. break;
  301. // 病虫害可视监测
  302. case 14:
  303. item.addtime = item.uptime;
  304. uni.navigateTo({
  305. url: '../cb/sy/detail?detail=' + JSON.stringify(item),
  306. });
  307. break;
  308. case 2:
  309. item.addtime = item.uptime;
  310. uni.navigateTo({
  311. url: '../prevention/equipmentdetails?shebei=' + JSON.stringify(item),
  312. });
  313. break;
  314. case 38:
  315. var obj = {};
  316. obj.d_id = item.d_id;
  317. obj.equip_id = item.id;
  318. obj.is_online = item.status;
  319. obj.lat = item.lat;
  320. obj.lng = item.lng;
  321. obj.equip_name = item.name;
  322. obj.uptime = item.uptime;
  323. uni.navigateTo({
  324. url: '../environment/equipment-new?shebei=' + JSON.stringify(obj),
  325. });
  326. break;
  327. case 5:
  328. var obj = {};
  329. obj.d_id = item.d_id;
  330. obj.equip_id = item.id;
  331. obj.is_online = item.status;
  332. obj.lat = item.lat;
  333. obj.lng = item.lng;
  334. obj.equip_name = item.name;
  335. obj.uptime = item.uptime;
  336. uni.navigateTo({
  337. url: '../environment/equipment?shebei=' + JSON.stringify(obj),
  338. });
  339. break;
  340. case 6:
  341. uni.navigateTo({
  342. url: '/pages/webview/webview?device_id=' +
  343. item.id +
  344. '&accessToken=' +
  345. this.accessToken,
  346. });
  347. break;
  348. case 44:
  349. uni.navigateTo({
  350. url:
  351. '/pages/webviewdgp/webviewdgp?device_id=' +
  352. item.id +
  353. '&accessToken=' +
  354. uni.getStorageSync('session_key') +
  355. '&type=dgp',
  356. });
  357. break;
  358. case 3:
  359. item.addtime = item.uptime;
  360. item.type = item.type_id;
  361. uni.navigateTo({
  362. url: '../cbd/detail?info=' + JSON.stringify(item),
  363. });
  364. break;
  365. case 28:
  366. item.addtime = item.uptime;
  367. item.type = item.type_id;
  368. uni.navigateTo({
  369. url: '../cb/smallPest/smallPest?info=' + JSON.stringify(item),
  370. });
  371. break;
  372. case 4:
  373. item.addtime = item.uptime;
  374. item.type = item.type_id;
  375. uni.navigateTo({
  376. url: '../cb/equip-detail/equip-detail?info=' + JSON.stringify(item),
  377. });
  378. break;
  379. case 32:
  380. case 33:
  381. case 34:
  382. case 35:
  383. item.addtime = item.uptime;
  384. item.type = item.type_id;
  385. uni.navigateTo({
  386. url: '../cb/equip-detail/equip-detail-new?info=' +
  387. JSON.stringify(item),
  388. });
  389. break;
  390. case 7:
  391. item.addtime = item.uptime;
  392. item.type = item.type_id;
  393. uni.navigateTo({
  394. url: '../cb/equip-detail/equip-detail?info=' + JSON.stringify(item),
  395. });
  396. break;
  397. case 8:
  398. uni.navigateTo({
  399. url: '../cb/thxydetail/thxydetail?imei=' + item.id,
  400. });
  401. break;
  402. case 29:
  403. uni.navigateTo({
  404. url: `../cb/nlNewXy/nlNewXy?imei=${item.id}&showId=${item.d_id}`,
  405. });
  406. break;
  407. case 24:
  408. uni.navigateTo({
  409. url: '../cb/zjxydetail/thxydetail?imei=' + item.id,
  410. });
  411. break;
  412. case 12:
  413. item.addtime = item.uptime;
  414. uni.navigateTo({
  415. url: '../cb/xctdetail/xctdetail?info=' + JSON.stringify(item),
  416. });
  417. break;
  418. case 13:
  419. var obj = {};
  420. obj.d_id = item.d_id;
  421. obj.device_id = item.id;
  422. obj.is_online = item.status;
  423. obj.lat = item.lat;
  424. obj.lng = item.lng;
  425. obj.equip_name = item.name;
  426. obj.uptime = item.uptime;
  427. uni.navigateTo({
  428. url: '../waterandfer/datails?shebei=' + JSON.stringify(obj),
  429. });
  430. break;
  431. case 15:
  432. var obj = {};
  433. obj.d_id = item.d_id;
  434. obj.device_id = item.id;
  435. obj.is_online = item.status;
  436. obj.lat = item.lat;
  437. obj.lng = item.lng;
  438. obj.equip_name = item.name;
  439. obj.uptime = item.uptime;
  440. obj.address = item.address || '无';
  441. uni.navigateTo({
  442. url: '../environment/gsequipment?shebei=' + JSON.stringify(obj),
  443. });
  444. break;
  445. case 17:
  446. break;
  447. case 18:
  448. var obj = {};
  449. obj.device_id = item.id;
  450. obj.is_online = item.status;
  451. uni.navigateTo({
  452. url: '../cb/shuifeiL/shuifeiL?detail=' + JSON.stringify(obj),
  453. });
  454. break;
  455. case 43:
  456. uni.navigateTo({
  457. url: "/pages/fmSys/details?info=" + JSON.stringify(item)
  458. })
  459. break;
  460. // case 44:
  461. // uni.navigateTo({
  462. // url: "/pages/webviewdgp/webview?device_id=" + item.id + "&accessToken=" + this.accessToken || uni
  463. // .getStorageSync('session_key') +
  464. // '&type=dgp'
  465. // })
  466. // break;
  467. case 11:
  468. var obj = {};
  469. obj.d_id = item.d_id;
  470. obj.device_id = item.id;
  471. obj.is_online = item.status;
  472. obj.lat = item.lat;
  473. obj.lng = item.lng;
  474. obj.equip_name = item.name;
  475. obj.uptime = item.uptime;
  476. obj.location = item.address;
  477. obj.type = 11;
  478. uni.navigateTo({
  479. url: '../disease/cmb?shebei=' + JSON.stringify(obj),
  480. });
  481. break;
  482. case 19:
  483. var obj = {};
  484. obj.d_id = item.d_id;
  485. obj.device_id = item.id;
  486. obj.is_online = item.status;
  487. obj.lat = item.lat;
  488. obj.lng = item.lng;
  489. obj.equip_name = item.name;
  490. obj.uptime = item.uptime;
  491. obj.location = item.address;
  492. obj.type = 19;
  493. uni.navigateTo({
  494. url: '../disease/cmb?shebei=' + JSON.stringify(obj),
  495. });
  496. break;
  497. case 20:
  498. var obj = {};
  499. obj.d_id = item.d_id;
  500. obj.device_id = item.id;
  501. obj.is_online = item.status;
  502. obj.lat = item.lat;
  503. obj.lng = item.lng;
  504. obj.equip_name = item.name;
  505. obj.uptime = item.uptime;
  506. obj.location = item.address;
  507. obj.type = 20;
  508. uni.navigateTo({
  509. url: '../disease/cmb?shebei=' + JSON.stringify(obj),
  510. });
  511. break;
  512. case 21:
  513. var obj = {};
  514. obj.d_id = item.d_id;
  515. obj.device_id = item.id;
  516. obj.is_online = item.status;
  517. obj.lat = item.lat;
  518. obj.lng = item.lng;
  519. obj.equip_name = item.name;
  520. obj.uptime = item.uptime;
  521. obj.location = item.address;
  522. obj.type = 21;
  523. uni.navigateTo({
  524. url: '../disease/cmb?shebei=' + JSON.stringify(obj),
  525. });
  526. break;
  527. case 26:
  528. var obj = {};
  529. obj.d_id = item.d_id;
  530. obj.device_id = item.id;
  531. obj.is_online = item.status;
  532. obj.lat = item.lat;
  533. obj.lng = item.lng;
  534. obj.equip_name = item.name;
  535. obj.uptime = item.uptime;
  536. obj.location = item.address;
  537. obj.type = 26;
  538. uni.navigateTo({
  539. url: '../disease/cmb?shebei=' + JSON.stringify(obj),
  540. });
  541. break;
  542. case 27:
  543. var obj = {};
  544. obj.d_id = item.d_id;
  545. obj.device_id = item.id;
  546. obj.is_online = item.status;
  547. obj.lat = item.lat;
  548. obj.lng = item.lng;
  549. obj.equip_name = item.name;
  550. obj.uptime = item.uptime;
  551. obj.location = item.address;
  552. obj.type = 26;
  553. uni.navigateTo({
  554. url: '../disease/mls/mls?shebei=' + JSON.stringify(obj),
  555. });
  556. break;
  557. case 25:
  558. item.addtime = item.uptime;
  559. uni.navigateTo({
  560. url: '../cb/xylps/detail/detail?detail=' + JSON.stringify(item),
  561. });
  562. break;
  563. case 40:
  564. item.addtime = item.uptime;
  565. uni.navigateTo({
  566. url: `../cb/shuifeizs/shuifeizs?devBid=${item.d_id}&devName=${item.name}&devStatus=${item.status}`,
  567. });
  568. break;
  569. case 42:
  570. item.addtime = item.uptime;
  571. uni.navigateTo({
  572. url: `../cb/wenshizs/wenshizs?devBid=${item.d_id}&devName=${item.name}&devStatus=${item.status}`,
  573. });
  574. break;
  575. case 45:
  576. item.addtime = item.uptime;
  577. uni.navigateTo({
  578. url: `../cb/shuifeizsFirst/shuifeizs?devBid=${item.d_id}&devName=${item.name}&devStatus=${item.status}`,
  579. });
  580. break;
  581. case 46:
  582. uni.navigateTo({
  583. url: `../deviceDetails/weatherStation/index?devBid=${item.id}&devName=${item.name}&devStatus=${item.status}&address=${item.address}&uptime=${item.uptime}&d_id=${item.d_id}&deviceType=46`,
  584. });
  585. break;
  586. case 47:
  587. uni.navigateTo({
  588. url: `../cb/zhamenFirst/zhamenzs?devBid=${item.d_id}&devName=${item.name}&devStatus=${item.status}`,
  589. });
  590. break;
  591. default:
  592. item.addtime = item.uptime;
  593. item.type = this.type_id;
  594. uni.navigateTo({
  595. url: '../cb/xy2.0/particulars?info=' + JSON.stringify(item),
  596. });
  597. break;
  598. }
  599. },
  600. searchinput() {
  601. Debounce(() => {
  602. this.eqlistdata = [];
  603. this.page = 1;
  604. this.eqlist();
  605. }, 1000)();
  606. },
  607. scrollTop(e) {},
  608. upper() {},
  609. lower() {
  610. if(this.eqlistdata.length >= this.total){
  611. return;
  612. }
  613. Debounce(() => {
  614. this.page++;
  615. this.eqlist(true);
  616. }, 500)();
  617. },
  618. scroll() {},
  619. },
  620. watch:{
  621. pur_id(){
  622. setTimeout(() => {
  623. this.getUserlogin();
  624. }, 100);
  625. },
  626. },
  627. onLoad() {
  628. const that = this;
  629. uni.$on('purId', (purId) => {
  630. that.pur_id = purId;
  631. });
  632. uni.$on('refreshData', (refreshData) => {
  633. this.eqlist();
  634. });
  635. this.getUserlogin();
  636. },
  637. onShow() {
  638. // 监听刷新数据事件
  639. const refreshData = uni.getStorageSync('refreshData');
  640. if(!this.refreshData){
  641. this.refreshData = refreshData;
  642. // 如果发生改变,刷新数据
  643. if(refreshData){
  644. Debounce(() => {
  645. this.getUserlogin();
  646. }, 500)();
  647. }
  648. }else if(this.refreshData != refreshData){
  649. this.refreshData = refreshData;
  650. Debounce(() => {
  651. this.getUserlogin();
  652. }, 500)();
  653. }
  654. },
  655. onTabItemTap(e) {
  656. },
  657. onReachBottom() {
  658. if(this.eqlistdata.length >= this.total){
  659. return;
  660. }
  661. Debounce(() => {
  662. this.page++;
  663. this.eqlist(true);
  664. }, 500)();
  665. },
  666. onPageScroll(e) {
  667. //nvue暂不支持滚动监听,可用bindingx代替
  668. if (e.scrollTop > 200) {
  669. //距离大于200时显示
  670. this.isTop = true;
  671. } else {
  672. //距离小于200时隐藏
  673. this.isTop = false;
  674. }
  675. },
  676. };
  677. </script>
  678. <style lang="scss">
  679. page {
  680. background: linear-gradient(180deg, #ffffff00 0%, #F5F6FA 23.64%, #F5F6FA 100%), linear-gradient(102deg, #BFEADD 6.77%, #B8F1E7 40.15%, #B9EEF5 84.02%);
  681. }
  682. /deep/.uni-icons {
  683. font-size: 40rpx !important;
  684. }
  685. input{
  686. background: transparent !important;
  687. }
  688. .textbox {
  689. width: 100%;
  690. height: calc(100vh - 82rpx);
  691. padding-top: 82rpx;
  692. box-sizing: border-box;
  693. }
  694. .inputs {
  695. width: 65%;
  696. margin-left: 12rpx;
  697. /deep/.u-content {
  698. background-color: #fff !important;
  699. }
  700. /deep/.uni-input-wrapper {
  701. background-color: #fff !important;
  702. }
  703. }
  704. .utabs_box {
  705. width: 100%;
  706. position: fixed;
  707. top: 88px;
  708. background-color: #ffffff;
  709. z-index: 100;
  710. .utabs {
  711. width: 95%;
  712. margin: 0 auto;
  713. }
  714. }
  715. .loading {
  716. position: fixed;
  717. top: 440px;
  718. width: 95%;
  719. left: 2.5%;
  720. text-align: center;
  721. .img {
  722. width: 300rpx;
  723. height: 40rpx;
  724. }
  725. }
  726. .active-tab{
  727. border-radius: 8rpx;
  728. background: linear-gradient(0deg, #0bbc580f 0%, #0bbc580f 100%), #00000005;
  729. }
  730. .tab-box {
  731. font-size: 30rpx;
  732. box-sizing: border-box;
  733. width: 100%;
  734. height: 100%;
  735. overflow-y: hidden;
  736. overflow-x: auto;
  737. white-space: nowrap;
  738. // 去掉滚动条
  739. -ms-overflow-style: none;
  740. scrollbar-width: none;
  741. .tab-item {
  742. cursor: pointer;
  743. position: relative;
  744. text-align: center;
  745. display: inline-block;
  746. padding: 16rpx 24rpx;
  747. box-sizing: border-box;
  748. span {
  749. display: inline-block;
  750. }
  751. }
  752. }
  753. .tab-box-top{
  754. .tab-item {
  755. width: 140rpx;
  756. text-align: center;
  757. }
  758. }
  759. .tab {
  760. // background-color: #0BBC58;
  761. margin-top: 42rpx;
  762. margin-bottom: 38rpx;
  763. padding: 0 32rpx;
  764. .img-icon {
  765. width: 80rpx;
  766. height: 80rpx;
  767. margin-bottom: 12rpx;
  768. }
  769. .text {
  770. color: #303133;
  771. font-size: 24rpx;
  772. }
  773. .tab-content {
  774. width: 100%;
  775. height: 162rpx;
  776. }
  777. .tab-item.active {
  778. border-radius: 24rpx;
  779. background: linear-gradient(0deg, #0bbc580f 0%, #0bbc580f 100%), #00000005;
  780. }
  781. }
  782. .second-tab {
  783. height: 80rpx;
  784. .tab-item{
  785. font-size: 28rpx;
  786. color: #999999;
  787. }
  788. .tab-item.active {
  789. color: #303133;
  790. font-weight: 700;
  791. }
  792. .tab-item.active::after {
  793. content: '';
  794. position: absolute;
  795. bottom: 0;
  796. left: 50%;
  797. transform: translateX(-50%);
  798. width: 18px; /* 比文字略宽 */
  799. height: 18px;
  800. border: 3px solid #0BBC58;
  801. border-radius: 50%;
  802. border-color: transparent; /* 隐藏其他部分 */
  803. border-bottom-color: #0BBC58; /* 组合成45度角 */
  804. // transform: rotate(0deg); /* 调整角度 */
  805. }
  806. }
  807. .third-tab {
  808. margin: 8rpx 0;
  809. height: 64rpx;
  810. line-height: 64rpx;
  811. display: flex;
  812. justify-content: space-between;
  813. .third-tab-item {
  814. flex: 1;
  815. text-align: center;
  816. }
  817. }
  818. .list {
  819. width: 100%;
  820. background-color: #F5F6FA;
  821. // margin-bottom: 100rpx;
  822. overflow-y: auto;
  823. padding: 0 32rpx;
  824. box-sizing: border-box;
  825. .list_item {
  826. width: 100%;
  827. margin: 0 auto 24rpx;
  828. padding: 32rpx;
  829. box-sizing: border-box;
  830. position: relative;
  831. background-color: #ffffff;
  832. border-radius: 16rpx;
  833. .list_item_top {
  834. .p1 {
  835. width: 86%;
  836. font-size: 28rpx;
  837. overflow: hidden;
  838. display: flex;
  839. align-items: center;
  840. .title{
  841. max-width: 75%;
  842. color: #333333;
  843. font-size: 28rpx;
  844. font-weight: 700;
  845. margin-right: 8rpx;
  846. overflow: hidden;
  847. text-overflow: ellipsis;
  848. white-space: nowrap;
  849. }
  850. .sub-title{
  851. border-radius: 32rpx;
  852. border:2rpx solid #0bbc58;
  853. padding: 4rpx 12rpx;
  854. font-size: 22rpx;
  855. font-weight: 400;
  856. overflow: hidden;
  857. text-overflow: ellipsis;
  858. white-space: nowrap;
  859. color:#0bbc58;
  860. margin-left: 20rpx;
  861. }
  862. }
  863. }
  864. .online-status{
  865. font-size: 28rpx;
  866. position: absolute;
  867. top:0rpx;
  868. text-align: center;
  869. right: 0rpx;
  870. width: 76px;
  871. height: 28px;
  872. // line-height: 28px;
  873. // border-radius: 0px 0px 0px 26px;
  874. // border: 1px solid #ffffff;
  875. image{
  876. width: 152rpx;
  877. height: 56rpx;
  878. }
  879. }
  880. // .p2 {
  881. // color: #0BBC58;
  882. // background: #0bbc581a;
  883. // }
  884. // .p_out {
  885. // color: #FB4E52;
  886. // background: #fb4e521a;
  887. // }
  888. .list_item_text {
  889. margin-top: 20rpx;
  890. p {
  891. font-size: 24rpx;
  892. color: #303133;
  893. margin-top: 10rpx;
  894. word-break: break-all;
  895. }
  896. .label{
  897. color: #999999;
  898. text-align: left;
  899. margin-right: 32rpx;
  900. font-size: 24rpx;
  901. min-width: 90rpx;
  902. display: inline-block;
  903. }
  904. .nav-label{
  905. //超出隐藏
  906. display: inline-block;
  907. width: 70%;
  908. overflow: hidden;
  909. text-overflow: ellipsis;
  910. white-space: nowrap;
  911. }
  912. }
  913. .list_item_btn {
  914. width: 126rpx;
  915. color: #42b983;
  916. height: 40rpx;
  917. text-align: center;
  918. border: 1rpx solid #42b983;
  919. border-radius: 25rpx;
  920. font-size: 24rpx;
  921. line-height: 35rpx;
  922. position: absolute;
  923. bottom: 15rpx;
  924. right: 20rpx;
  925. }
  926. }
  927. }
  928. .top {
  929. position: fixed;
  930. right: 30px;
  931. bottom: 100px;
  932. z-index: 100;
  933. image {
  934. width: 100rpx;
  935. height: 100rpx;
  936. }
  937. }
  938. </style>