workbench.vue 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952
  1. <!-- 管理端工作台 -->
  2. <template>
  3. <view class="manage-workbench">
  4. <!-- <img class="top-big-img" src="@/images/Version2.2/ing_bg_banner.png"> -->
  5. <img class="top-big-img" :src="homepageBanner">
  6. <top-warn></top-warn>
  7. <view class="min-icon-button-box" style="margin-bottom: 0;">
  8. <view @click="goPage('casuallyPat')">
  9. <img src="@/images/Version2.2/icon_sy_ssp.png">
  10. <view>随手拍</view>
  11. </view>
  12. <view @click="goPage('safetyInspect')">
  13. <img src="@/images/Version2.2/icon_sy_aqjc.png">
  14. <view>安全检查</view>
  15. </view>
  16. <!-- <view class="position-button" style="position: relative;" v-if="buttonArray[1]">
  17. <picker @change="buttonChange" :range-key="'name'" :value="id" :range="buttonArray">
  18. <img src="@/images/Version2.2/icon_sy_aqjc.png">
  19. <view>安全检查</view>
  20. <view v-if="userInfo.list>0" style="position: absolute;top:40rpx;right:56rpx;height:15rpx;width:15rpx;border-radius:50%;background: red;"></view>
  21. </picker>
  22. </view>
  23. <view style="position: relative;" @click="goCheckPage" v-if="!buttonArray[1]">
  24. <img src="@/images/Version2.2/icon_sy_aqjc.png">
  25. <view>安全检查</view>
  26. <view v-if="userInfo.list>0" style="position: absolute;top:40rpx;right:56rpx;height:15rpx;width:15rpx;border-radius:50%;background: red;"></view>
  27. </view> -->
  28. <view @click="goPage('photoInspection')">
  29. <img src="@/images/icon_dzt_pzjc.png">
  30. <view>拍照检查</view>
  31. </view>
  32. <view @click="goPage('accessQualification')">
  33. <img src="@/images/Version2.2/icon_sy_zrsq.png">
  34. <view>准入审核</view>
  35. </view>
  36. <!-- <view @click="goPage('alarm')">
  37. <img src="@/images/Version2.2/icon_sy_aqbj.png">
  38. <view>安全报警</view>
  39. </view> -->
  40. </view>
  41. <!-- <view class="min-icon-button-box" style="margin-top: 0;"> -->
  42. <!-- <view @click="goPage('emergencyEvacuation')">
  43. <img src="@/images/Version2.3/icon_sy_yjss.png">
  44. <view>应急疏散</view>
  45. </view> -->
  46. <!-- </view> -->
  47. <view class=big-icon-button-box>
  48. <!-- 安全报警 -->
  49. <img src="@/images/Version2.3/button_1.png" @click="goPage('alarm')">
  50. <!-- 应急疏散 -->
  51. <img src="@/images/Version2.3/button_2.png" @click="goPage('emergencyEvacuation')">
  52. </view>
  53. <!-- 分级管控 -->
  54. <view class="grading">
  55. <img class="grading_l" src="@/images/icon_sy_fjgk.png"/>
  56. <view class="grading_c">分级管控</view>
  57. <view class="grading_r" @click="goPage('grading')">{{gradingCount>0?gradingCount+'项工作待完成':''}}<img src="@/images/icon_wdwg_gd.png"/></view>
  58. </view>
  59. <view class="for-title-p" @click="goSecurityAlertList" v-if="alarmList[0]">
  60. <img class="left-img" src="@/images/Version2.2/icon_aqbj.png">
  61. <view class="name-view">安全报警</view>
  62. <view class="num-view">{{securityAlertNum}}</view>
  63. <view class="null-view"></view>
  64. <img class="right-img" src="@/images/icon_04.png">
  65. </view>
  66. <view class="for-max-box-one" v-if="alarmList[0]">
  67. <view class="for-box" v-for="(item,index) in alarmList" :key="index">
  68. <view class="title-box">
  69. <view :style="'border:1rpx solid '+item.subDiyVo.fiedColor+';background:#fff;color:'+item.subDiyVo.fiedColor+';'">{{item.subDiyVo.levelName}}</view>
  70. <view>{{item.subDiyVo.name}}</view>
  71. </view>
  72. <view class="address-box"><span>{{item.subDiyVo.typeName}}</span>{{item.subDiyVo.deptName}}</view>
  73. <view class="address-box-two">
  74. <img src="@/images/icon_14.png">
  75. <view>{{item.subDiyVo.subAddrrStr}}</view>
  76. </view>
  77. <view class="for-img-box">
  78. <view class="for-img-min-box" v-for="(minItem,index) in item.sensorSet" :key="index">
  79. <img src="@/images/icon_15.png">
  80. <view>{{minItem}}</view>
  81. </view>
  82. </view>
  83. <view class="button-view" @click="laboratoryInfo(item)">查看详情</view>
  84. </view>
  85. </view>
  86. <view class="for-title-p" v-if="dataList[0]">
  87. <img class="left-img" src="@/images/Version2.2/icon_sy_wdsys.png">
  88. <view class="name-view">我的实验室</view>
  89. </view>
  90. <view class="for-max-box" v-if="dataList[0]">
  91. <img class="null-img" v-if="!dataList[0]" src="@/images/null-data-1.png">
  92. <view class="for-box" v-for="(item,index) in dataList" :key="index" @click="laboratoryInfoOne(item)">
  93. <view class="title-box">
  94. <view :style="'border:1rpx solid '+item.fiedColor+';background:#fff;color:'+item.fiedColor+';'">{{item.levelName}}</view>
  95. <view>{{item.name}}</view>
  96. <img src="@/images/icon_04.png">
  97. </view>
  98. <view class="address-box"><span>{{item.typeName}}</span>{{item.deptName}}</view>
  99. <view class="address-box-two">
  100. <img src="@/images/icon_14.png">
  101. <view>{{item.subAddrrStr}}</view>
  102. </view>
  103. </view>
  104. </view>
  105. <tab-bar></tab-bar>
  106. </view>
  107. </template>
  108. <script>
  109. import $mqtt from '@/utils/mqtt.min.js';
  110. import { config } from '@/api/request/config.js'
  111. import { appReceivePhotoNote,getApprovalCount,subject_class,getSafeWarnList,laboratoryInfo,laboratoryList,getLoginUserInfo,outSubjectPhoto,gradingControl} from '@/api/index.js'
  112. import { tabBar } from '@/component/tabBar.vue'
  113. import { topWarn } from '@/component/topWarn.vue'
  114. export default {
  115. components: {
  116. tabBar,
  117. topWarn
  118. },
  119. data() {
  120. return {
  121. //随手拍数量
  122. appReceivePhotoNoteNum:0,
  123. //准入数量
  124. passedNum:"",
  125. subject_classData:[],
  126. securityAlertNum:"",
  127. //MQTT请求参数
  128. mtopic:"lab/bigview",
  129. mtopicOne:"lab/function/data",
  130. msg:"",
  131. client:{},
  132. //报警数据
  133. alarmList:[],
  134. //实验室数据
  135. dataList:[],
  136. //用户信息数据(用来决定是否可以跳转检查项)
  137. userInfo:{
  138. isadmin:null,
  139. ischeck:null,
  140. list:null,
  141. },
  142. buttonArray:[],
  143. gradingCount:0,//分级管控未完成总数
  144. homepageBanner:uni.getStorageSync('homepageBanner'),
  145. }
  146. },
  147. created() {
  148. },
  149. mounted(){
  150. this.appReceivePhotoNote();
  151. this.getApprovalCount();
  152. this.subject_class();
  153. this.laboratoryList();
  154. this.getSafeWarnList();
  155. this.getLoginUserInfo();
  156. this.getGrading();
  157. //监听报警信息
  158. getApp().watch(this.getSafeWarnList,'mqttAlarmData');
  159. //监听传感器信息
  160. getApp().watch(this.getMqttSensorData,'mqttSensorData');
  161. },
  162. methods: {
  163. //跳转选择器
  164. buttonChange(e){
  165. /* if(this.buttonArray[e.detail.value].id == 1){
  166. //检查记录
  167. uni.navigateTo({
  168. url: '/pages_manage/workbench/securityCheck/inspectionRecords'
  169. });
  170. }else if(this.buttonArray[e.detail.value].id == 2){
  171. //问题整改
  172. uni.navigateTo({
  173. url: '/pages_manage/workbench/problemRectification/rectifyList'
  174. });
  175. } */
  176. },
  177. //暂无提示
  178. goCheckPage(){
  179. if(this.userInfo.isadmin){
  180. uni.navigateTo({
  181. url: '/pages_manage/workbench/problemRectification/rectifyList'
  182. });
  183. }else if(this.userInfo.ischeck == 1){
  184. uni.navigateTo({
  185. url: '/pages_manage/workbench/securityCheck/inspectionRecords'
  186. });
  187. }else{
  188. uni.showToast({
  189. title: '您没有该权限',
  190. icon:"none",
  191. mask:true,
  192. duration: 2000
  193. });
  194. }
  195. },
  196. //监听传感器信息
  197. getMqttSensorData(val){
  198. let self = this;
  199. // console.log('页面获取的-传感器信息',val)
  200. if(val.subId){
  201. for(let i=0;i<self.dataList.length;i++){
  202. if(self.dataList[i].id == val.subId){
  203. self.$set(self.dataList[i],'sensorFunctionList',val.functionStatuses);
  204. }
  205. }
  206. }
  207. },
  208. //获取分级管控未完成总数
  209. async getGrading(){
  210. let obj = {
  211. }
  212. const {data} = await gradingControl(obj)
  213. if(data.code==200){
  214. this.gradingCount=data.count;
  215. }
  216. },
  217. async getLoginUserInfo(){
  218. const {data} = await getLoginUserInfo();
  219. if(data.code == 200){
  220. this.userInfo = data.data;
  221. let list = [];
  222. if(data.data.isadmin){
  223. //实验室负责人
  224. let obj = {
  225. id:"1",
  226. name:"检查记录",
  227. }
  228. list.push(obj)
  229. }
  230. if(data.data.ischeck == 1){
  231. //检查者
  232. let obj = {
  233. id:"2",
  234. name:"问题整改",
  235. }
  236. list.push(obj)
  237. }
  238. this.$set(this,'buttonArray',list);
  239. console.log("data",data)
  240. }
  241. },
  242. //获取报警信息详情
  243. async laboratoryInfo(item){
  244. const {data} = await laboratoryInfo(item.subDiyVo.id);
  245. if(data.code == 200){
  246. let obj = data.data[0];
  247. obj.subClassVO = item.subDiyVo.subClassVO;
  248. obj.name = item.subDiyVo.name;
  249. obj.subTypeLable = item.subDiyVo.subTypeLable;
  250. obj.deptName = item.subDiyVo.deptName;
  251. obj.subAddrrStr = item.subDiyVo.subAddrrStr;
  252. uni.navigateTo({
  253. url: '/pages_manage/workbench/laboratory/laboratoryInfo?item='+encodeURIComponent(JSON.stringify(obj))
  254. });
  255. }
  256. },
  257. //获取实验室详情
  258. async laboratoryInfoOne(item){
  259. const {data} = await laboratoryInfo(item.id);
  260. if(data.code == 200){
  261. let obj = data.data[0];
  262. obj.subClassVO = item.subClassVO;
  263. obj.name = item.name;
  264. obj.subTypeLable = item.subTypeLable;
  265. obj.deptName = item.deptName;
  266. obj.subAddrrStr = item.subAddrrStr;
  267. obj.sensorFunctionList = item.sensorFunctionList;
  268. uni.navigateTo({
  269. url: '/pages_manage/workbench/laboratory/laboratoryInfo?item='+encodeURIComponent(JSON.stringify(obj))+'&deptId='+item.deptId
  270. });
  271. }
  272. },
  273. //获取报警信息列表
  274. async getSafeWarnList(){
  275. let obj = {
  276. pageNum:1,
  277. pageSize:1,
  278. count:0,
  279. groupStatus:1,
  280. };
  281. const {data} = await getSafeWarnList(obj);
  282. if(data.code == 200){
  283. this.alarmList = data.rows;
  284. if(data.rows[0]){
  285. this.securityAlertNum = data.rows[0].todayHappenCount;
  286. }else{
  287. this.securityAlertNum = 0;
  288. }
  289. }
  290. },
  291. //获取实验室列表
  292. async laboratoryList(){
  293. let self = this;
  294. let obj = {
  295. deptId:this.facultyIndex?this.facultyList[this.facultyIndex].deptId:'',
  296. subDept:this.subjectIndex?this.subjectList[this.subjectIndex].dictValue:'',
  297. level:this.levelIndex?this.levelList[this.levelIndex].dictValue:'',
  298. };
  299. const {data} = await laboratoryList(obj);
  300. if(data.code == 200){
  301. for(let o=0;o<data.data.length;o++){
  302. if(data.data[o].labHardwareVOList){
  303. data.data[o].hardwareList = [];
  304. for(let i=0;i<data.data[o].labHardwareVOList.length;i++){
  305. if(data.data[o].labHardwareVOList[i].hardwareTypeEnum.code == 4 &&data.data[o].labHardwareVOList[i].hardwareNUM){
  306. if(data.data[o].hardwareNUM){
  307. data.data[o].hardwareNUM = data.data[o].hardwareNUM + ',' + data.data[o].labHardwareVOList[i].hardwareNUM
  308. }else{
  309. data.data[o].hardwareNUM = data.data[o].labHardwareVOList[i].hardwareNUM
  310. }
  311. }else{
  312. let obj = {
  313. name:"",
  314. type:"",
  315. };
  316. obj.name = data.data[o].labHardwareVOList[i].hardwareTypeEnum.hardwareTypeName
  317. obj.type = data.data[o].labHardwareVOList[i].state.code;
  318. obj.id = data.data[o].labHardwareVOList[i].id;
  319. data.data[o].hardwareList.push(obj);
  320. }
  321. }
  322. }
  323. }
  324. this.dataList = data.data;
  325. }
  326. },
  327. //获取输入数量
  328. async getApprovalCount(){
  329. const {data} = await getApprovalCount()
  330. if(data.code == 200){
  331. this.passedNum = data.data.passed + '人已获得';
  332. }
  333. },
  334. //获取管理员工作台随手拍数量数据
  335. async appReceivePhotoNote(){
  336. const {data} = await appReceivePhotoNote();
  337. if(data.code == 200){
  338. this.appReceivePhotoNoteNum = data.data.photoCount;
  339. }
  340. },
  341. //获取学科字典
  342. async subject_class(){
  343. const {data} = await subject_class();
  344. if(data.code == 200){
  345. this.subject_classData = data.data;
  346. }
  347. },
  348. //去安全警报
  349. goSecurityAlertList(){
  350. uni.navigateTo({
  351. url: '/pages_manage/workbench/securityAlert/securityAlertList',//安全警报
  352. });
  353. },
  354. //页面跳转
  355. goPage(type){
  356. if(type=='casuallyPat'){
  357. uni.navigateTo({
  358. url: '/pages/casuallyPat',//随手拍
  359. });
  360. }else if(type=='receiveCasuallyPat'){//收到随手拍
  361. uni.navigateTo({
  362. url: '/pages_manage/workbench/receiveCasuallyPat/receiveCasuallyPat',
  363. });
  364. }else if(type=='accessQualification'){//收到随手拍
  365. uni.navigateTo({
  366. url: '/pages_manage/workbench/accessQualification/accessQualification',
  367. });
  368. }else if(type == 'safetyInspect'){//安全检查
  369. uni.navigateTo({
  370. url: '/pages_manage/workbench/securityCheck/safetyInspect',//安全警报
  371. });
  372. }
  373. else if(type == 'alarm'){
  374. uni.navigateTo({
  375. url: '/pages_manage/workbench/securityAlert/securityAlertList',//安全警报
  376. });
  377. }else if(type == 'emergencyEvacuation'){
  378. uni.navigateTo({
  379. url: '/pages/emergencyEvacuationBig',//安全警报
  380. });
  381. }else if(type == 'photoInspection'){
  382. this.outSubjectPhoto();
  383. }else if(type == 'grading'){
  384. uni.navigateTo({
  385. url: '/pages/gradingControl/gradingControl',//分级管控
  386. });
  387. }
  388. },//获取拍照检查配置
  389. async outSubjectPhoto(){
  390. const {data} = await outSubjectPhoto();
  391. if(data.code == 200){
  392. if(data.data == null){
  393. //需要检查(重新填写)
  394. let obj = {
  395. sub:"实验室照片",
  396. subUrl:"",
  397. garbage:"垃圾桶清理后照片",
  398. garbageUrl:"",
  399. dangerous:"使用危险设备照片(选填)",
  400. dangerousUrl:"",
  401. sourceRisk:"危险源设备使用登记本照片(选填)",
  402. sourceRiskUrl:"",
  403. };
  404. uni.navigateTo({
  405. url: '/pages_student/workbench/photoInspection?newData='+encodeURIComponent(JSON.stringify(obj)),
  406. });
  407. }else if(data.data == false){
  408. //不需要检查
  409. uni.showToast({
  410. title: '暂无检查数据',
  411. icon:"none",
  412. mask:true,
  413. duration: 2000
  414. });
  415. }else{
  416. //需要检查(修改内容)
  417. let obj = {
  418. id:data.data.id,
  419. sub:"实验室照片",
  420. subUrl:data.data.subUrl,
  421. garbage:"垃圾桶清理后照片",
  422. garbageUrl:data.data.garbageUrl,
  423. dangerous:"使用危险设备照片(选填)",
  424. dangerousUrl:data.data.dangerousUrl,
  425. sourceRisk:"危险源设备使用登记本照片(选填)",
  426. sourceRiskUrl:data.data.sourceRiskUrl,
  427. };
  428. uni.navigateTo({
  429. url: '/pages_student/workbench/photoInspection?newData='+encodeURIComponent(JSON.stringify(obj)),
  430. });
  431. }
  432. }
  433. },
  434. },
  435. beforeDestroy(){
  436. //删除报警监听
  437. getApp().deleteAlarmWatch();
  438. //删除传感器监听
  439. getApp().deleteSensorWatch();
  440. }
  441. }
  442. </script>
  443. <style lang="stylus" scoped>
  444. .manage-workbench{
  445. height:100%;
  446. width:100%;
  447. overflow-y:scroll;
  448. .top-big-img{
  449. height:342rpx;
  450. width:750rpx;
  451. }
  452. .min-icon-button-box{
  453. display flex
  454. width:710rpx;
  455. margin:20rpx;
  456. background :#ffffff;
  457. border-radius:20rpx;
  458. height:170rpx;
  459. view{
  460. flex:1;
  461. img{
  462. height:75rpx;
  463. width:75rpx;
  464. margin:30rpx auto 10rpx;
  465. }
  466. view{
  467. text-align center
  468. font-size:24rpx;
  469. }
  470. }
  471. }
  472. .big-icon-button-box{
  473. display flex;
  474. margin:20rpx;
  475. img{
  476. width:350rpx;
  477. height:150rpx;
  478. }
  479. img:nth-child(2){
  480. margin-left:10rpx;
  481. }
  482. }
  483. /* 分级管控 */
  484. .grading{
  485. width :712rpx;
  486. height :80rpx;
  487. background: #FFFFFF;
  488. border-radius: 20rpx;
  489. margin-left:20rpx;
  490. margin-bottom :20rpx;
  491. display:flex;
  492. justify-content :flex-start;
  493. align-items :center;
  494. .grading_l{
  495. width :34rpx;
  496. height :34rpx;
  497. margin-left:16rpx;
  498. }
  499. .grading_c{
  500. font-size: 28rpx;
  501. font-family: PingFang SC;
  502. font-weight: 500;
  503. color: #333333;
  504. margin-left:16rpx;
  505. }
  506. .grading_r{
  507. width :504rpx;
  508. height :80rpx;
  509. font-size: 26rpx;
  510. font-family: PingFang SC;
  511. font-weight: 500;
  512. color: #EE3A3A;
  513. display :flex;
  514. justify-content :flex-end;
  515. align-items: center;
  516. >img{
  517. width: 20rpx;
  518. height: 20rpx;
  519. margin-left :20rpx;
  520. margin-top :8rpx;
  521. }
  522. }
  523. }
  524. .top-max-box{
  525. height:300rpx;
  526. .top-min-box{
  527. display: flex
  528. margin:20rpx;
  529. .left-box{
  530. background #fff
  531. height:130rpx;
  532. width:345rpx;
  533. border-radius: 10px;
  534. display flex
  535. .left-img{
  536. height:80rpx;
  537. width:80rpx;
  538. margin:25rpx 30rpx;
  539. }
  540. view{
  541. line-height:130rpx;
  542. font-size: 28rpx;
  543. color:#333;
  544. flex:1;
  545. }
  546. .right-img{
  547. width:20rpx;
  548. height:20rpx;
  549. margin:55rpx 30rpx 0 0;
  550. }
  551. }
  552. .right-box{
  553. background #fff
  554. height:130rpx;
  555. width:345rpx;
  556. margin-left:20rpx;
  557. border-radius: 10rpx;
  558. display flex
  559. .left-img{
  560. height:80rpx;
  561. width:80rpx;
  562. margin:25rpx 30rpx;
  563. }
  564. .right-min-view{
  565. flex:1;
  566. .right-min-title{
  567. line-height:28rpx;
  568. font-size: 28rpx;
  569. margin-top:32rpx;
  570. color: #333333;
  571. }
  572. .right-bottom-min-box{
  573. display flex
  574. view{
  575. flex:1;
  576. text-align right
  577. margin:25rpx 14rpx 0 0;
  578. font-size: 22rpx;
  579. color: #999999;
  580. line-height: 22rpx;
  581. }
  582. img{
  583. width:20rpx;
  584. height:20rpx;
  585. margin:27rpx 80rpx 0 0;
  586. }
  587. }
  588. }
  589. }
  590. }
  591. .bottom-min-box{
  592. background #fff
  593. height:130rpx;
  594. width:710rpx;
  595. border-radius: 10px;
  596. margin:0 20rpx;
  597. display flex
  598. .left-img{
  599. height:80rpx;
  600. width:80rpx;
  601. margin:25rpx 30rpx;
  602. }
  603. view{
  604. flex:1;
  605. line-height:130rpx;
  606. }
  607. view:nth-child(2){
  608. font-size: 28rpx;
  609. color:#333;
  610. }
  611. view:nth-child(3){
  612. text-align right
  613. font-size: 22rpx;
  614. color:#999;
  615. margin-right:12rpx;
  616. }
  617. .right-img{
  618. width:20rpx;
  619. height:20rpx;
  620. margin:55rpx 30rpx 0 0;
  621. }
  622. }
  623. }
  624. .for-title-p{
  625. border-top-left-radius 20rpx
  626. border-top-right-radius 20rpx
  627. background #fff
  628. padding-left:25rpx;
  629. display flex
  630. margin:0 20rpx;
  631. border-bottom:1rpx solid #e0e0e0;
  632. .left-img{
  633. height:34rpx;
  634. width:34rpx;
  635. margin:22rpx 10rpx 0 0;
  636. }
  637. .name-view{
  638. line-height:77rpx;
  639. font-size:30rpx;
  640. color:#333;
  641. }
  642. .num-view{
  643. width:28rpx;
  644. height:28rpx;
  645. font-size:20rpx;
  646. background:#EE3A3A;
  647. border-radius:50%;
  648. text-align :center;
  649. line-height:24rpx;
  650. color:#fff;
  651. margin:26rpx 0 0 10rpx;
  652. }
  653. .null-view{
  654. flex:1;
  655. }
  656. .right-img{
  657. height:20rpx;
  658. width:10rpx;
  659. margin:28rpx 19rpx 0 0;
  660. }
  661. }
  662. .for-max-box-one{
  663. margin:0 20rpx;
  664. border-bottom-left-radius 20rpx
  665. border-bottom-right-radius 20rpx
  666. .for-box:nth-child(1){
  667. border-top:none;
  668. }
  669. .for-box{
  670. border-top:4rpx solid #dedede;
  671. background #fff
  672. margin-bottom:20rpx;
  673. overflow: hidden
  674. .title-box{
  675. margin:20rpx 20rpx 0;
  676. display flex
  677. view:nth-child(1){
  678. height:40rpx;
  679. line-height:40rpx;
  680. font-size:20rpx;
  681. border-radius:10rpx;
  682. padding:0 20rpx;
  683. color:#fff;
  684. margin-right:20rpx;
  685. }
  686. view:nth-child(2){
  687. line-height:42rpx;
  688. font-size:30rpx;
  689. color:#333;
  690. max-width:600rpx;
  691. flex:1;
  692. }
  693. .colorA{
  694. background:#aa2315;
  695. }
  696. .colorB{
  697. background:#ff9b09;
  698. }
  699. .colorC{
  700. background:#3ea3e9;
  701. }
  702. .colorD{
  703. background:#3ea34c;
  704. }
  705. }
  706. .address-box{
  707. margin:20rpx 20rpx;
  708. font-size:26rpx;
  709. color:#999999;
  710. span{
  711. margin-right:60rpx;
  712. }
  713. }
  714. .address-box-two{
  715. display flex
  716. margin:0 20rpx 20rpx 20rpx;
  717. img{
  718. width:28rpx;
  719. height:30rpx;
  720. margin-right:18rpx;
  721. }
  722. view{
  723. line-height:30rpx;
  724. font-size:24rpx;
  725. color:#999999;
  726. }
  727. }
  728. .for-img-box{
  729. border-top:1rpx solid #e0e0e0;
  730. margin:0 20rpx;
  731. .for-img-min-box{
  732. display flex
  733. img{
  734. width:30rpx;
  735. height:27rpx;
  736. margin-top:24rpx;
  737. margin-right:10rpx;
  738. }
  739. view{
  740. line-height:74rpx;
  741. text-align center
  742. font-size:28rpx;
  743. color:#EE3A3A;
  744. }
  745. }
  746. }
  747. .button-view{
  748. margin:0 20rpx;
  749. border-top:1rpx dashed #e0e0e0;
  750. line-height:90rpx;
  751. text-align :center;
  752. font-size:26rpx;
  753. color:#333;
  754. }
  755. }
  756. .get-null-box{
  757. height:100rpx;
  758. line-height:100rpx;
  759. color:#999;
  760. text-align center
  761. }
  762. }
  763. .for-max-box{
  764. margin:0 20rpx 120rpx;
  765. background: #fff
  766. overflow: hidden
  767. border-bottom-left-radius 20rpx
  768. border-bottom-right-radius 20rpx
  769. .null-img{
  770. display block
  771. width:276rpx;
  772. height:321rpx;
  773. margin:40rpx auto;
  774. }
  775. .for-box:nth-child(1){
  776. border-top:none;
  777. }
  778. .for-box{
  779. border-top:4rpx solid #dedede;
  780. overflow hidden
  781. background #ffffff
  782. margin-bottom:20rpx;
  783. .title-box{
  784. margin:20rpx 20rpx 0;
  785. display flex
  786. view:nth-child(1){
  787. height:40rpx;
  788. line-height:40rpx;
  789. font-size:20rpx;
  790. border-radius:10rpx;
  791. padding:0 20rpx;
  792. color:#fff;
  793. margin-right:20rpx;
  794. }
  795. view:nth-child(2){
  796. line-height:42rpx;
  797. font-size:30rpx;
  798. color:#333;
  799. max-width:600rpx;
  800. flex:1;
  801. }
  802. img{
  803. width:12rpx;
  804. height:20rpx;
  805. margin-top:11rpx;
  806. }
  807. .colorA{
  808. background:#aa2315;
  809. }
  810. .colorB{
  811. background:#ff9b09;
  812. }
  813. .colorC{
  814. background:#3ea3e9;
  815. }
  816. .colorD{
  817. background:#3ea34c;
  818. }
  819. }
  820. .address-box{
  821. margin:20rpx 20rpx;
  822. font-size:26rpx;
  823. color:#999999;
  824. span{
  825. margin-right:60rpx;
  826. }
  827. }
  828. .address-box-two{
  829. display flex
  830. margin:0 20rpx 20rpx 20rpx;
  831. img{
  832. width:28rpx;
  833. height:30rpx;
  834. margin-right:18rpx;
  835. }
  836. view{
  837. line-height:30rpx;
  838. font-size:24rpx;
  839. color:#999999;
  840. }
  841. }
  842. .text-box{
  843. /*border-top:1rpx dashed #e0e0e0;*/
  844. border-top:1rpx solid #E0E0E0;
  845. padding:0 20rpx;
  846. /*
  847. overflow-x:scroll;
  848. overflow-y:hidden;
  849. white-space: nowrap;
  850. */
  851. .min-box{
  852. display inline-block
  853. /*padding:0 30rpx 0 10rpx;*/
  854. width:355rpx;
  855. .min-min-box{
  856. display: flex
  857. img{
  858. width:30rpx;
  859. height:27rpx;
  860. margin-top:24rpx;
  861. margin-right:10rpx;
  862. }
  863. view{
  864. line-height:74rpx;
  865. text-align center
  866. font-size:28rpx;
  867. color:#333;
  868. }
  869. .colorA{
  870. color:#EE3A3A;
  871. }
  872. }
  873. }
  874. }
  875. .sensor-max-box{
  876. margin:0 20rpx;
  877. border-top:1rpx solid #e0e0e0;
  878. border-bottom:1rpx solid #e0e0e0;
  879. display flex
  880. .for-sensor-box{
  881. flex:1;
  882. display flex
  883. font-size:28rpx;
  884. line-height:94rpx;
  885. view{
  886. margin-left:20rpx;
  887. font-size:25rpx;
  888. line-height:94rpx;
  889. color:#0183FA;
  890. }
  891. }
  892. }
  893. .button-max-box{
  894. .button-box{
  895. display flex
  896. view:nth-child(1){
  897. flex:1;
  898. line-height:90rpx;
  899. color:#333333;
  900. margin-left:30rpx;
  901. font-size:28rpx;
  902. }
  903. view:nth-child(2){
  904. width:142rpx;
  905. line-height:42rpx;
  906. border:4rpx solid #0183FA;
  907. border-radius:25rpx;
  908. color: #0183FA;
  909. font-size: 30rpx;
  910. text-align center;
  911. margin:20rpx 20rpx 20rpx 0;
  912. }
  913. }
  914. .for-button-box{
  915. display flex
  916. view{
  917. flex:1;
  918. line-height:90rpx;
  919. color:#333333;
  920. margin-left:30rpx;
  921. font-size:28rpx;
  922. }
  923. img{
  924. height:50rpx;
  925. width:100rpx;
  926. margin:20rpx 20rpx 20rpx 0;
  927. }
  928. view:nth-child(2){
  929. text-align right
  930. color:#999;
  931. margin-right:30rpx;
  932. }
  933. }
  934. }
  935. }
  936. }
  937. }
  938. </style>