safetyExamineWorkbench.vue 48 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839
  1. <!-- 安全检查-工作台 -->
  2. <template>
  3. <view class="examine">
  4. <scroll-view scroll-y @scrolltolower="scrollGet" class="info-max-box">
  5. <view>
  6. <view class="statistics" v-if="pageType==1 || pageType==2">
  7. <view class="statistics_li" v-for="(item,index) in statisticsList" :key="index">
  8. <text>{{item.name}}</text>
  9. <text>{{item.value}}</text>
  10. </view>
  11. </view>
  12. <viwe class="inspect_btn" v-if="pageType==1 || pageType==2">
  13. <view class="inspect_btn_li" @click="handleClick('','patrolPlan')">
  14. <img src="@/images/Version3.3.3/icon_xyxc_xyxc.png"/>
  15. <text>校院巡查</text>
  16. </view>
  17. <text class="line"></text>
  18. <view class="inspect_btn_li" @click="handleClick('','selfPlan')">
  19. <img src="@/images/Version3.3.3/icon_xyxc_syszc.png"/>
  20. <text>实验室自查</text>
  21. </view>
  22. <text class="line"></text>
  23. <view class="inspect_btn_li" @click="handleClick('','dangerPlan')">
  24. <img src="@/images/Version3.3.3/icon_xyxc_aqyh.png"/>
  25. <text>安全隐患</text>
  26. </view>
  27. <text class="line"></text>
  28. <view class="inspect_btn_li" @click="handleClick('','snapshot')">
  29. <img src="@/images/Version3.3.3/icon_aqjc_ssp.png"/>
  30. <text>随手拍</text>
  31. </view>
  32. </viwe>
  33. <!--管理员------------- -->
  34. <view class="tabTitle" v-if="pageType==1">
  35. <view class="tabTitle_li" @tap="tabClick(index)" :key="index" v-for="(item,index) in tabText">
  36. <view :class="{on:curTab==index}" class="tabTitle_text">{{item.name}}<text>{{item.num}}</text></view>
  37. <view :class="{on:curTab==index}" class="tabTitle_across"></view>
  38. </view>
  39. </view>
  40. <view class="list" v-if="pageType==1">
  41. <view class="list_li" v-for="(item,index) in dataList" :key="index" @click="handleClick(item,'edit')">
  42. <view class="list_li_t">
  43. <view class="list_li_t_l">
  44. <img v-if="item.checkRange==1" src="@/images/Version3.3.3/icon_xyxc_qx.png"/>
  45. <img v-if="item.checkRange==2" src="@/images/Version3.3.3/icon_xyxc_xy.png"/>
  46. <img v-if="item.checkRange==3" src="@/images/Version3.3.3/icon_xyxc_sys.png"/>
  47. <text></text>
  48. </view>
  49. <view class="list_li_t_c">{{item.title}}</view>
  50. <view class="list_li_t_r"></view>
  51. </view>
  52. <view class="list_li_m">
  53. <view class="list_li_m_t">计划周期:{{item.cycleStartTime}}至{{item.cycleEndTime}}</view>
  54. <view class="list_li_m_b">
  55. <text class="blue_color" v-if="item.checkStatus==1">未开始</text>
  56. <text class="red_color" v-if="item.checkStatus==2">进行中</text>
  57. <text>{{item.checkType==1?'校院巡查':'实验室自查'}}</text>
  58. </view>
  59. </view>
  60. <view class="list_li_b">
  61. <img src="@/images/Version3.3.3/icon_djcsys.png"/>
  62. <text v-if="item.checkStatus==1">待检查实验室:</text>
  63. <text v-if="item.checkStatus==1">{{item.subjectNum}}间</text>
  64. <text v-if="item.checkStatus==2">检查进度:</text>
  65. <text v-if="item.checkStatus==2">{{item.checkSchedule}}间</text>
  66. </view>
  67. </view>
  68. </view>
  69. <!--检查者------------- -->
  70. <view class="tabTitle_tow" v-if="pageType==2">
  71. <view class="tabTitle_tow_li" @tap="tabClickTow(index)" :key="index" v-for="(item,index) in tabTextTow">
  72. <view :class="{on:curTabTow==index}" class="tabTitle_tow_text">{{item.name}}<text>{{item.num}}</text></view>
  73. <view :class="{on:curTabTow==index}" class="tabTitle_tow_across"></view>
  74. </view>
  75. </view>
  76. <view class="list_tow" v-if="pageType==2">
  77. <view class="list_tow_li" v-for="(item,index) in dataList2" :key="index">
  78. <view class="list_tow_li_t">
  79. <view class="list_tow_li_t_l">
  80. <img v-if="item.checkRange==1" src="@/images/Version3.3.3/icon_xyxc_qx.png"/>
  81. <img v-if="item.checkRange==2" src="@/images/Version3.3.3/icon_xyxc_xy.png"/>
  82. <img v-if="item.checkRange==3" src="@/images/Version3.3.3/icon_xyxc_sys.png"/>
  83. <text></text>
  84. </view>
  85. <view class="list_tow_li_t_c" v-if="curTabTow==0 || curTabTow==1">{{item.subjectName}}-{{item.roomNumber}}</view>
  86. <view class="list_tow_li_t_c" v-if="curTabTow==2 && item.rectifyStatus==3">{{item.subRoom}}</view>
  87. <view class="list_tow_li_t_c2" v-if="(curTabTow==0 || curTabTow==1) && item.isOverdue==1">已逾期</view>
  88. <view class="list_tow_li_t_c2" v-if="curTabTow==2 && item.overdueStatus==3">已逾期</view>
  89. <view class="list_tow_li_t_r"></view>
  90. </view>
  91. <view class="list_tow_li_m">
  92. <view class="list_tow_li_m_t">{{item.title}}</view>
  93. <view class="list_tow_li_m_b">
  94. <text class="blue_color" v-if="item.manageStatus==0">待检查</text>
  95. <text class="red_color" v-if="item.manageStatus==1">检查中</text>
  96. <text class="green_color" v-if="item.manageStatus==2">已检查</text>
  97. <text class="orange_color" v-if="curTabTow==2 && item.rectifyStatus==3">待审核</text>
  98. <text>{{item.checkType==1?'校院巡查':'实验室自查'}}</text>
  99. <text>{{item.collegeName}}</text>
  100. </view>
  101. </view>
  102. <!-- 开始检查 -->
  103. <view v-if="curTabTow==2 && item.rectifyStatus==3" class="list_tow_li_b" @click="handleTowClick(item,'check')">复核</view>
  104. <view v-if="item.buttonHide && item.isSelfData==1">
  105. <view v-if="(curTabTow==0 || curTabTow==1) && item.manageStatus==0 && item.notStarted" class="list_tow_li_b" @click="handleTowClick(item,'add')">开始检查</view>
  106. <view v-if="(curTabTow==0 || curTabTow==1) &&item.manageStatus==1 && item.notStarted" class="list_tow_li_b" @click="handleTowClick(item,'edit')">编辑</view>
  107. <view v-if="(curTabTow==0 || curTabTow==1) &&!item.notStarted" class="list_tow_li_b_tow"><img src="@/images/Version3.3.3/icon_xyxcgl_jhwks.png"/>计划未开始</view>
  108. <view v-if="(curTabTow==0 || curTabTow==1) &&item.manageStatus==2 && item.notStarted" class="list_tow_li_b_three">
  109. <img src="@/images/Version3.3.3/icon_djcsys.png"/>
  110. <text>整改进度:</text>
  111. <text>{{item.rectifySchedule}}</text>
  112. <text class="report">整改报告</text>
  113. </view>
  114. </view>
  115. </view>
  116. </view>
  117. <!-- 整改人----------- -->
  118. <view class="statistics_three" v-if="pageType==3">
  119. <view class="statistics_three_li" v-for="(item,index) in statisticsListThree" :key="index">
  120. <text>{{item.name}}</text>
  121. <text>{{item.value}}</text>
  122. </view>
  123. </view>
  124. <viwe class="inspect_btn_three" v-if="pageType==3">
  125. <view class="inspect_btn_three_li" @click="handleClick('','schoolDanger')">
  126. <img src="@/images/Version3.3.3/icon_xyxc_xyxc.png"/>
  127. <text>校院巡查隐患</text>
  128. </view>
  129. <text class="line"></text>
  130. <view class="inspect_btn_three_li" @click="handleClick('','labDanger')">
  131. <img src="@/images/Version3.3.3/icon_xyxc_syszc.png"/>
  132. <text>实验室自查隐患</text>
  133. </view>
  134. <text class="line"></text>
  135. <view class="inspect_btn_three_li" @click="handleClick('','snapshot')">
  136. <img src="@/images/Version3.3.3/icon_aqjc_ssp.png"/>
  137. <text>随手拍</text>
  138. </view>
  139. </viwe>
  140. <view class="tabTitle_three" v-if="pageType==3">
  141. <view class="tabTitle_three_li" @tap="tabClickThree(index)" :key="index" v-for="(item,index) in tabTextThree">
  142. <view :class="{on:curTabThree==index}" class="tabTitle_three_text">{{item.name}}<text>{{item.num}}</text></view>
  143. <view :class="{on:curTabThree==index}" class="tabTitle_three_across"></view>
  144. </view>
  145. </view>
  146. <view class="list_three" v-if="pageType==3">
  147. <view class="list_three_li" v-for="(item,index) in dataList3" :key="index" @click="handleThreeClick(item,'detail')">
  148. <view class="list_three_li_t">
  149. <view class="list_three_li_t_l">
  150. <img v-if="item.checkRange==1" src="@/images/Version3.3.3/icon_xyxc_qx.png"/>
  151. <img v-if="item.checkRange==2" src="@/images/Version3.3.3/icon_xyxc_xy.png"/>
  152. <img v-if="item.checkRange==3" src="@/images/Version3.3.3/icon_xyxc_sys.png"/>
  153. <text></text>
  154. </view>
  155. <!-- 隐患 -->
  156. <view class="list_three_li_t_c" v-if="curTabThree==0">{{item.subRoom}}</view>
  157. <!-- 随手拍 -->
  158. <view class="list_three_li_t_c" v-if="curTabThree==1">{{item.subName}}</view>
  159. <view class="list_three_li_t_c2" v-if="item.overdueStatus==1">已逾期</view>
  160. <view class="list_three_li_t_r"></view>
  161. </view>
  162. <view class="list_three_li_m">
  163. <!-- 隐患 -->
  164. <view class="list_three_li_m_t" v-if="curTabThree==0">{{item.hazardDescribe}}</view>
  165. <!-- 随手拍 -->
  166. <view class="list_three_li_m_t" v-if="curTabThree==1">{{item.hazardDescribe}}</view>
  167. <view class="list_three_li_m_b">
  168. <!-- 隐患 -->
  169. <text class="green_color" v-if="curTabThree==0 && item.rectifyStatus==1">已完成</text>
  170. <text class="blue_color" v-if="curTabThree==0 && item.rectifyStatus==2">待整改</text>
  171. <text class="orange_color" v-if="curTabThree==0 && curTabThree==0 && item.rectifyStatus==3">待复核</text>
  172. <text class="gray_color" v-if="curTabThree==0 && item.rectifyStatus==4">暂无法整改</text>
  173. <text class="type" v-if="curTabThree==0">{{item.hazardType==1?'校院巡查':'实验室自查'}}</text>
  174. <text class="college" v-if="curTabThree==0">{{item.collegeName}}</text>
  175. <!-- 随手拍 -->
  176. <text class="blue_color" v-if="curTabThree==1 && item.rectifyStatus==0">待整改</text>
  177. <text class="green_color" v-if="curTabThree==1 && item.rectifyStatus==1">已整改</text>
  178. <text class="orange_color" v-if="curTabThree==1 && item.rectifyStatus==2">暂无法整改</text>
  179. <text class="college" v-if="curTabThree==1">{{item.deptName}}</text>
  180. </view>
  181. </view>
  182. <!-- 隐患 -->
  183. <view class="list_three_li_b" v-if="curTabThree==0">
  184. <text >整改期限:{{item.rectifyDeadline}}</text>
  185. </view>
  186. <!-- 随手拍 -->
  187. <view class="list_three_li_b2" v-if="curTabThree==1">
  188. <view class="list_three_li_b_l">
  189. <img src="@/images/Version3.3.3/icon_ssp_ry.png"/>
  190. <text>上报人:{{item.createName}}</text>
  191. </view>
  192. <view class="list_three_li_b_r">{{item.timeFlag}}</view>
  193. </view>
  194. </view>
  195. </view>
  196. </view>
  197. </scroll-view>
  198. <!-- <view class="bottom_btn" v-if="pageType==1" @click="handleClick('','start')">开展检查</view> -->
  199. <img class="scan_btn" @click.stop="saoCode" src="@/images/Version3.3.3/icon_xyxc_sm.png"/>
  200. <!-- 选择学院-->
  201. <view class="shade" v-if="dialogVisible">
  202. <view class="null-box" @click="dialogClose()"></view>
  203. <view class="shade_n">
  204. <view class="shade_n_title"><text>选择该实验室隐患项</text><text @click="hiddenConfirm">确定</text></view>
  205. <view class="shade_n_b">
  206. <view class="shade_n_b_li" v-for="(item,index) in hiddenList" :key="index" @click="hiddenSelete(index)">
  207. <text :class="item.type?'color_B':'color_A'">{{item.hazardDescribe}}</text>
  208. <img v-if="item.type" src="@/images/Version3.3.3/icon_xzwt_xz.png">
  209. </view>
  210. </view>
  211. </view>
  212. </view>
  213. <tab-bar></tab-bar>
  214. </view>
  215. </template>
  216. <script>
  217. import { config } from '@/api/request/config.js'
  218. import { tabBar } from '@/component/tabBar.vue'
  219. import {checkPlanList,getCheckStatusCount,getManageStatusCount,dataStatistics,checkManageList,checkHazardAppList,checkClapList,getCheckPlanBySubId} from '@/api/index.js'
  220. export default {
  221. name: "rectifyList",
  222. components: {
  223. tabBar
  224. },
  225. data() {
  226. return {
  227. pageType:uni.getStorageSync('gentleIdentifier'),//人员类型 3整改人 2检查人 1管理员
  228. //列表请求参数
  229. getData:{
  230. pageNum:1,
  231. pageSize:20,
  232. checkStatus:1,
  233. },
  234. getData2:{
  235. pageNum:1,
  236. pageSize:20,
  237. checkType:'',
  238. manageStatus:0,//管理状态(-1全部 0待检查,1检查中,2已检查)
  239. rectifyStatus:'',
  240. },
  241. getData3:{
  242. pageNum:1,
  243. pageSize:20,
  244. hazardType:'',//1是院校巡查,2是实验室自查
  245. rectifyStatus:'',//1已完成 2待整改 3待复核 4 暂无法整改
  246. },
  247. userType:1,//人员类型 3整改人 2检查人 1管理员
  248. statisticsList:[
  249. {name:'本月已检查',value:'0'},
  250. {name:'本月检查隐患',value:'0'},
  251. {name:'本月已整改',value:'0'},
  252. {name:'本月检查合格率',value:'0%'},
  253. {name:'本月已检查',value:'0'},
  254. {name:'本月复核通过率',value:'0%'},
  255. ],
  256. statisticsListThree:[
  257. {name:'本月已检查',value:'0'},
  258. {name:'本月已整改',value:'0%'},
  259. {name:'本月复核通过率',value:'0%'},
  260. ],
  261. tabText:[{name:'未开始',num:0,},{name:'进行中',num:0}],
  262. curTab:0,
  263. tabTextTow:[{name:'待检查',num:0,},{name:'检查中',num:0,},{name:'待复核',num:0,}],
  264. curTabTow:0,
  265. tabTextThree:[{name:'隐患待整改',num:0,},{name:'随手拍整改',num:0,}],
  266. curTabThree:0,
  267. total:0,
  268. dataList:[],//管理员
  269. total2:0,
  270. dataList2:[],//检查者
  271. total3:0,
  272. dataList3:[],//整改者
  273. currentDate:'',
  274. dangerAllNum:0,
  275. snapshotAllNum:0,
  276. isSubPlan:false,//判断管理员和检查者扫码的实验室是否有检查计划
  277. dialogVisible:false,
  278. hiddenList:[],
  279. myApplyGentle:'',//自查身份 校院巡查管理 里操作按钮隐藏
  280. applyGentle:'',//检查组身份 实验室自查管理 里操作按钮隐藏
  281. buttonHide:false,//判断按钮显示隐藏
  282. }
  283. },
  284. onLoad() {
  285. this.myApplyGentle=uni.getStorageSync('gentleIdentifierData').myApplyGentle
  286. this.applyGentle=uni.getStorageSync('gentleIdentifierData').applyGentle
  287. },
  288. onShow() {
  289. },
  290. beforeCreate() {
  291. },
  292. mounted(){
  293. //获取当前日期
  294. this.currentDate=this.getNowFormatDate()
  295. this.getCheckStatusCount();
  296. this.getManageStatusCount();
  297. this.dataStatistics();
  298. this.checkClapListAllNum();//随手拍待整改总数
  299. if(this.pageType==1){//管理员
  300. this.getList();
  301. }else if(this.pageType==2){//检查者
  302. this.getList2();
  303. }else if(this.pageType==3){//整改者
  304. this.checkHazardAppList();
  305. }
  306. },
  307. methods: {
  308. //滚动事件
  309. scrollGet(){
  310. let self=this;
  311. if(this.pageType==1){//管理员
  312. if(self.total/self.getData.pageSize<=self.getData.pageNum){
  313. console.log('没有更多数据!')
  314. }else{
  315. setTimeout(function(){
  316. self.getData.pageNum += 1;
  317. self.getList();
  318. },1000)
  319. }
  320. }else if(this.pageType==2){//检查者
  321. if(self.total2/self.getData2.pageSize<=self.getData2.pageNum){
  322. console.log('没有更多数据!')
  323. }else{
  324. setTimeout(function(){
  325. self.getData2.pageNum += 1;
  326. if(self.curTabTow==2){//待复核
  327. self.checkHazardAppList()
  328. }else {
  329. self.getList2();
  330. }
  331. },1000)
  332. }
  333. }else if(this.pageType==3){//整改者
  334. if(self.total3/self.getData3.pageSize<=self.getData3.pageNum){
  335. console.log('没有更多数据!')
  336. }else{
  337. setTimeout(function(){
  338. self.getData3.pageNum += 1;
  339. if(self.curTabThree==0){//隐患
  340. self.checkHazardAppList()
  341. }else {//随手拍
  342. self.checkClapList()
  343. }
  344. },1000)
  345. }
  346. }
  347. },
  348. //管理员
  349. tabClick(index) {
  350. this.curTab = index;
  351. this.getData.pageNum=1;
  352. this.dataList=[];
  353. if(index==0){//未开始
  354. this.getData.checkStatus=1
  355. this.getList()
  356. }else if(index==1){//进行中
  357. this.getData.checkStatus=2
  358. this.getList()
  359. }
  360. },
  361. tabClickTow(index) {
  362. this.curTabTow = index;
  363. this.getData2.pageNum=1;
  364. this.dataList2=[];
  365. if(index==0){//未开始
  366. this.getData2.manageStatus=0
  367. this.getList2()
  368. }else if(index==1){//进行中
  369. this.getData2.manageStatus=1
  370. this.getList2()
  371. }else if(index==2){//待复核
  372. this.getData2.rectifyStatus=3
  373. this.checkHazardAppList()
  374. }
  375. },
  376. tabClickThree(index) {//整改者
  377. this.curTabThree = index;
  378. this.getData3.pageNum=1;
  379. this.dataList3=[];
  380. if(index==0){//隐患待整改
  381. this.getData3.rectifyStatus=2
  382. this.checkHazardAppList()
  383. }else if(index==1){//随手拍待整改
  384. this.checkClapList();
  385. }
  386. },
  387. handleClick(row,doType){
  388. let self=this;
  389. if(self.pageType==1 && doType=='patrolPlan'){//校院巡查-计划
  390. uni.navigateTo({
  391. url: '/pages_safetyExamine/patrolPlan/patrolPlanList?pageType=1'
  392. });
  393. }else if(self.pageType==1 && doType=='selfPlan'){//实验室自查-计划
  394. uni.navigateTo({
  395. url: '/pages_safetyExamine/patrolPlan/patrolPlanList?pageType=2'
  396. });
  397. }else if(self.pageType==1 && doType=='dangerPlan'){//安全隐患-计划
  398. uni.navigateTo({
  399. url: '/pages_safetyExamine/dangerManage/dangerManage?pageType=1'
  400. });
  401. }else if(self.pageType==2 && doType=='patrolPlan'){//校院巡查-检查
  402. uni.navigateTo({
  403. url: '/pages_safetyExamine/examineManage/examineList?pageType=1'
  404. });
  405. }else if(self.pageType==2 && doType=='selfPlan'){//实验室自查-检查
  406. uni.navigateTo({
  407. url: '/pages_safetyExamine/examineManage/examineList?pageType=2'
  408. });
  409. }else if(self.pageType==2 && doType=='dangerPlan'){//安全隐患-检查
  410. uni.navigateTo({
  411. url: '/pages_safetyExamine/dangerManage/dangerManage?pageType=2'
  412. });
  413. }else if(self.pageType==3 && doType=='schoolDanger'){//校院巡查隐患
  414. uni.navigateTo({
  415. url: '/pages_safetyExamine/dangerManage/dangerList?pageType=1'
  416. });
  417. }else if(self.pageType==3 && doType=='labDanger'){//实验室自查隐患
  418. uni.navigateTo({
  419. url: '/pages_safetyExamine/dangerManage/dangerList?pageType=2'
  420. });
  421. }else if(doType=='edit'){//编辑
  422. uni.navigateTo({
  423. url: '/pages_safetyExamine/patrolPlan/patrolPlanEdit?pageType='+row.checkType+'&id='+row.id
  424. });
  425. }else if(doType=='snapshot'){//随手拍
  426. uni.navigateTo({
  427. url: '/pages_safetyExamine/snapshotManage/snapshotAdd'
  428. });
  429. }else if(doType=='start'){//开展检查
  430. uni.navigateTo({
  431. url: '/pages_safetyExamine/examineManage/examineAdd'
  432. });
  433. }
  434. },
  435. //检查者
  436. handleTowClick(row,doType){
  437. if(doType=='add'){//开始检查
  438. uni.navigateTo({
  439. url: '/pages_safetyExamine/examineManage/examineAdd?id='+row.id
  440. });
  441. }else if(doType=='edit'){//编辑
  442. uni.navigateTo({
  443. url: '/pages_safetyExamine/examineManage/examineAdd?id='+row.id
  444. });
  445. }else if(doType=='check'){//复核
  446. uni.navigateTo({
  447. url: '/pages_safetyExamine/dangerManage/dangerDetail?item='+encodeURIComponent(JSON.stringify(row))
  448. })
  449. }
  450. },
  451. //整改者
  452. handleThreeClick(row,doType){
  453. if(doType=='detail'){
  454. if(this.curTabThree==0){//隐患待整改详情
  455. uni.navigateTo({
  456. url: '/pages_safetyExamine/dangerManage/dangerDetail?item='+encodeURIComponent(JSON.stringify(row))
  457. })
  458. }else if(this.curTabThree==1){
  459. uni.navigateTo({
  460. url: '/pages_safetyExamine/snapshotManage/snapshotDetail?id='+row.id+'&rectifyStatus='+this.getData3.rectifyStatus
  461. })
  462. }
  463. }
  464. },
  465. /* 扫一扫*/
  466. saoCode(){
  467. let self = this;
  468. uni.scanCode({
  469. onlyFromCamera: true,
  470. success: function (res) {
  471. console.log(res)
  472. if(res.result.indexOf("code") != -1 && res.result.indexOf("-") != -1 && res.result.indexOf("&") != -1){
  473. let subId = "";
  474. let newList = res.result.split("?")[1].split("&")
  475. let list = newList[0].split("=")[1].split("-")
  476. subId = list[0];
  477. if(subId){
  478. if(self.pageType==1 || self.pageType==2){//管理员和检查者
  479. self.getCheckPlanBySubId(subId)
  480. }else if(self.pageType==3){//整改者
  481. let obj={
  482. pageNum:1,
  483. pageSize:100,
  484. subId:subId,
  485. }
  486. self.checkHazardAppList2(obj);
  487. }
  488. }else{
  489. uni.showToast({
  490. title: '请扫描正确的二维码',
  491. icon:"none",
  492. mask:true,
  493. duration: 2000
  494. });
  495. }
  496. }else{
  497. uni.showToast({
  498. title: '请扫描正确的二维码',
  499. icon:"none",
  500. mask:true,
  501. duration: 2000
  502. });
  503. }
  504. }
  505. });
  506. },
  507. //根据实验室id查询该实验室有关计划
  508. async getCheckPlanBySubId(subId){
  509. let _this = this;
  510. let id=subId;
  511. const {data} = await getCheckPlanBySubId({'subId':id});
  512. if(data.code == 200){
  513. if(data.data){
  514. uni.navigateTo({
  515. url: '/pages_safetyExamine/examineManage/examineAdd?subId='+id
  516. });
  517. }else{
  518. let id = uni.setStorageSync('saoCodeId',id);
  519. uni.redirectTo({
  520. url: '/pages_safetyExamine/inforSign'
  521. })
  522. }
  523. }
  524. },
  525. //根据实验室id查询隐患
  526. async checkHazardAppList2(obj){
  527. let self = this;
  528. const {data} = await checkHazardAppList(obj);
  529. if(data.code==200){
  530. if(data.data.records){
  531. data.data.records.forEach(function(item){
  532. item.type=false;
  533. })
  534. this.hiddenList=data.data.records
  535. this.dialogVisible=true;
  536. }else{
  537. let id = uni.setStorageSync('saoCodeId',id);
  538. uni.redirectTo({
  539. url: '/pages_safetyExamine/inforSign'
  540. })
  541. }
  542. }
  543. },
  544. //选择学院弹窗关闭
  545. dialogClose(){
  546. this.dialogVisible=false;
  547. },
  548. //学院选择
  549. hiddenSelete(index){
  550. let _this=this;
  551. this.hiddenList[index].type = !this.hiddenList[index].type
  552. if (_this.hiddenList[index].type == true) {
  553. _this.hiddenList.forEach(function(item2) {
  554. if (item2.id == _this.hiddenList[index].id) {
  555. item2.type = true
  556. } else {
  557. item2.type = false
  558. }
  559. })
  560. }
  561. },
  562. hiddenConfirm(){
  563. let _this=this;
  564. _this.hiddenList.forEach(function(item){
  565. if(item.type==true){
  566. uni.redirectTo({
  567. url: '/pages_safetyExamine/dangerManage/dangerDetail?item='+encodeURIComponent(JSON.stringify(item))
  568. })
  569. }
  570. })
  571. },
  572. //数据统计
  573. async dataStatistics(){
  574. let self = this;
  575. const {data} = await dataStatistics();
  576. if(data.code==200){
  577. if(data.data.userType==1 || data.data.userType==2){//管理员和检查者
  578. this.statisticsList=[
  579. {name:'本月已检查',value:data.data.checkTotal},
  580. {name:'本月检查隐患',value:data.data.hazardTotal},
  581. {name:'本月已整改',value:data.data.rectifyTotal},
  582. {name:'本月检查合格率',value:data.data.qualifyRate},
  583. {name:'本月整改率',value:data.data. rectificationRate},
  584. {name:'本月复核通过率',value:data.data.passRate},
  585. ]
  586. }else if(data.data.userType==3){//整改者
  587. this.statisticsListThree=[
  588. {name:'本月已检查',value:data.data.checkTotal},
  589. {name:'本月已整改',value:data.data.rectifyTotal},
  590. {name:'本月复核通过率',value:data.data.passRate},
  591. ]
  592. }
  593. }
  594. },
  595. //获取当前日期函数
  596. getNowFormatDate() {
  597. let date = new Date(),
  598. year = date.getFullYear(), //获取完整的年份(4位)
  599. month = date.getMonth() + 1, //获取当前月份(0-11,0代表1月)
  600. strDate = date.getDate() // 获取当前日(1-31)
  601. if (month < 10) month = `0${month}` // 如果月份是个位数,在前面补0
  602. if (strDate < 10) strDate = `0${strDate}` // 如果日是个位数,在前面补0
  603. return `${year}-${month}-${strDate}`
  604. },
  605. //是否可以开始检查
  606. compareTime(date1){
  607. if(!date1){
  608. return false
  609. } else {
  610. const oDate1 = new Date(date1);
  611. const oDate2 = new Date(this.currentDate)
  612. if(oDate1.getTime() <= oDate2.getTime()){
  613. return true; //可以开始
  614. } else {
  615. return false; //不能开始
  616. }
  617. }
  618. },
  619. //检查计划各检查状态数据数量
  620. async getCheckStatusCount(){
  621. let self = this;
  622. const {data} = await getCheckStatusCount();
  623. if(data.code==200){
  624. this.tabText[0].num=data.data.noStart;
  625. this.tabText[1].num=data.data.start;
  626. }
  627. },
  628. //检查各检查状态数据数量
  629. async getManageStatusCount(){
  630. let self = this;
  631. const {data} = await getManageStatusCount();
  632. if(data.code==200){
  633. this.tabTextTow[0].num=data.data.noCheck;
  634. this.tabTextTow[1].num=data.data.checking;
  635. this.tabTextTow[2].num=data.data.applyNum;
  636. }
  637. },
  638. //管理员
  639. async getList(){
  640. let self = this;
  641. const {data} = await checkPlanList(this.getData);
  642. if(data.code==200){
  643. this.dataList=[...this.dataList,...data.data.records]
  644. this.total=data.data.total;
  645. }
  646. },
  647. //检查者
  648. async getList2(){
  649. let self = this;
  650. const {data} = await checkManageList(this.getData2);
  651. if(data.code==200){
  652. //判断计划是否开始
  653. self.buttonHide=false;
  654. for(let i=0;i<data.data.records.length;i++){
  655. data.data.records[i].notStarted=self.compareTime(data.data.records[i].cycleStartTime)
  656. if(data.data.records[i].checkType==1){
  657. if(self.myApplyGentle && !self.applyGentle){
  658. data.data.records[i].buttonHide=false
  659. }if(!self.myApplyGentle && !self.applyGentle){
  660. data.data.records[i].buttonHide=false
  661. }else{
  662. data.data.records[i].buttonHide=true;
  663. }
  664. }else if(data.data.records[i].checkType==2){
  665. if(!self.myApplyGentle && self.applyGentle){
  666. data.data.records[i].buttonHide=false
  667. }if(!self.myApplyGentle && !self.applyGentle){
  668. data.data.records[i].buttonHide=false
  669. }else{
  670. data.data.records[i].buttonHide=true;
  671. }
  672. }
  673. }
  674. self.dataList2=[...self.dataList2,...data.data.records]
  675. self.total2=data.data.total;
  676. }
  677. },
  678. //待复核列表
  679. async checkHazardAppList(){
  680. let self = this;
  681. let obj={};
  682. if(this.pageType==2){//检查者
  683. obj={
  684. pageNum:this.getData2.pageNum,
  685. pageSize:this.getData2.pageSize,
  686. hazardType:'',
  687. rectifyStatus:'3',
  688. };
  689. }else if(this.pageType==3){//整改者
  690. obj={
  691. pageNum:this.getData3.pageNum,
  692. pageSize:this.getData3.pageSize,
  693. hazardType:'',
  694. rectifyStatus:'2',
  695. };
  696. }
  697. const {data} = await checkHazardAppList(obj);
  698. if(data.code==200){
  699. if(self.pageType==2){//检查者
  700. this.dataList2=[...this.dataList2,...data.data.records]
  701. this.total2=data.data.total;
  702. }else if(self.pageType==3){
  703. this.dataList3=[...this.dataList3,...data.data.records]
  704. this.total3=data.data.total;
  705. this.tabTextThree[0].num=data.data.total;
  706. }
  707. }
  708. },
  709. //随手拍待整改
  710. async checkClapList(){
  711. let self = this;
  712. let obj={
  713. pageNum:this.getData3.pageNum,
  714. pageSize:this.getData3.pageSize,
  715. rectifyStatus:0,
  716. };
  717. const {data} = await checkClapList(obj);
  718. if(data.code==200){
  719. this.dataList3=[...this.dataList3,...data.data.records]
  720. this.total3=data.data.total;
  721. }
  722. },
  723. //随手拍待整改总数
  724. async checkClapListAllNum(){
  725. let self = this;
  726. let obj={
  727. pageNum:this.getData3.pageNum,
  728. pageSize:this.getData3.pageSize,
  729. rectifyStatus:0,
  730. };
  731. const {data} = await checkClapList(obj);
  732. if(data.code==200){
  733. this.tabTextThree[1].num=data.data.total;
  734. }
  735. },
  736. }
  737. }
  738. </script>
  739. <style lang="stylus" scoped>
  740. .examine{
  741. height:100%;
  742. display flex;
  743. .info-max-box{
  744. flex: 1;
  745. overflow: scroll;
  746. padding-bottom: 128rpx;
  747. }
  748. .blue_color{
  749. color: #0183FA;
  750. border: 1rpx solid #0183FA;
  751. }
  752. .red_color{
  753. color: #FF4545;
  754. border: 1rpx solid #FF4545;
  755. }
  756. .green_color{
  757. color: #1FA50D;
  758. border: 1rpx solid #1FA50D;
  759. }
  760. .orange_color{
  761. color: #FA8E1B;
  762. border: 1rpx solid #FA8E1B;
  763. }
  764. .gray_color{
  765. color: #A2A2A2;
  766. border: 1rpx solid #A2A2A2;
  767. }
  768. .statistics{
  769. background: #fff;
  770. display: flex;
  771. justify-content: flex-start;
  772. flex-wrap: wrap;
  773. padding: 38rpx 26rpx;
  774. box-sizing: border-box;
  775. .statistics_li{
  776. width: 230rpx;
  777. border-right: 1rpx solid #D8D8D8;
  778. border-bottom: 1rpx solid #D8D8D8;
  779. >text{
  780. display: block;
  781. text-align: center;
  782. }
  783. >text:nth-of-type(1){
  784. font-size: 26rpx;
  785. font-family: PingFang SC-Medium, PingFang SC;
  786. font-weight: 400;
  787. color: #666666;
  788. line-height: 26rpx;
  789. margin-top: 24rpx;
  790. }
  791. >text:nth-of-type(2){
  792. font-size: 34rpx;
  793. font-family: PingFang SC-Heavy, PingFang SC;
  794. font-weight: 400;
  795. color: #1FA50D;
  796. line-height: 34rpx;
  797. margin-top: 28rpx;
  798. }
  799. }
  800. >view:nth-of-type(1){
  801. >text:nth-of-type(1){
  802. margin-top: 4rpx;
  803. }
  804. >text:nth-of-type(2){
  805. margin-bottom: 18rpx;
  806. color: #1FA50D;
  807. }
  808. }
  809. >view:nth-of-type(2){
  810. >text:nth-of-type(1){
  811. margin-top: 4rpx;
  812. }
  813. >text:nth-of-type(2){
  814. margin-bottom: 18rpx;
  815. color: #FA8201;
  816. }
  817. }
  818. >view:nth-of-type(3){
  819. border-right:none;
  820. >text:nth-of-type(1){
  821. margin-top: 4rpx;
  822. }
  823. >text:nth-of-type(2){
  824. margin-bottom: 18rpx;
  825. color: #0183FA;
  826. }
  827. }
  828. >view:nth-of-type(4){
  829. border-bottom:none;
  830. >text:nth-of-type(2){
  831. color: #1FA50D;
  832. }
  833. }
  834. >view:nth-of-type(5){
  835. border-bottom:none;
  836. >text:nth-of-type(2){
  837. color: #FA8201;
  838. }
  839. }
  840. >view:nth-of-type(6){
  841. border-right:none;border-bottom:none;
  842. >text:nth-of-type(2){
  843. color: #0183FA;
  844. }
  845. }
  846. }
  847. .inspect_btn{
  848. height: 150rpx;
  849. background: #fff;
  850. display: flex;
  851. justify-content: space-between;
  852. align-items: center;
  853. margin-top: 20rpx;
  854. padding: 0 30rpx;
  855. box-sizing: border-box;
  856. .inspect_btn_li{
  857. >img{
  858. width: 60rpx;
  859. height: 60rpx;
  860. margin:0 auto;
  861. }
  862. >text{
  863. font-size: 28rpx;
  864. font-family: PingFang SC-Medium, PingFang SC;
  865. font-weight: 400;
  866. color: #333333;
  867. line-height: 28rpx;
  868. margin-top: 14rpx;
  869. }
  870. }
  871. .line{
  872. display: inline-block;
  873. height: 60rpx;
  874. width: 1rpx;
  875. background: #E0E0E0;
  876. }
  877. }
  878. /* 切换按钮 */
  879. .tabTitle{
  880. width:100%;
  881. height: 100rpx;
  882. background: #fff;
  883. display flex;
  884. justify-content: center;
  885. align-items: center;
  886. margin-top: 20rpx;
  887. position: sticky;
  888. top: 0;
  889. z-index: 100;
  890. box-shadow: 0rpx 3rpx 8rpx 0rpx rgba(0,0,0,0.16);
  891. .tabTitle_li{
  892. position: relative;
  893. width:372rpx;
  894. text-align center;
  895. .tabTitle_text{
  896. display: inline-block;
  897. font-size: 30rpx;
  898. font-family: PingFang SC;
  899. font-weight: 500;
  900. color: #333333;
  901. line-height: 46rpx;
  902. position: relative;
  903. >text{
  904. position:absolute;
  905. min-width: 30rpx;
  906. min-height: 30rpx;
  907. border-radius:54%;
  908. background: #E80000;
  909. font-size: 18rpx;
  910. font-family: PingFang SC-Medium, PingFang SC;
  911. font-weight: 400;
  912. color: #FFFFFF;
  913. text-align: center;
  914. line-height: 30rpx;
  915. margin-left: 6rpx;
  916. padding:2rpx;
  917. box-sizing: border-box;
  918. }
  919. &.on{
  920. color:#0183FA;
  921. }
  922. }
  923. .tabTitle_across{
  924. width: 50rpx;
  925. height: 4rpx;
  926. background: #0183FA;
  927. border-radius: 2rpx;
  928. margin-left 162rpx;
  929. display none;
  930. &.on{
  931. display block;
  932. }
  933. }
  934. }
  935. .tabTitle_li:nth-of-type(1)::after{
  936. content: '';
  937. position: absolute;
  938. top: 0rpx;
  939. right: 0rpx;
  940. width: 1rpx;
  941. height: 50rpx;
  942. background: #E0E0E0;
  943. }
  944. }
  945. .list{
  946. padding: 0 30rpx;
  947. box-sizing: border-box;
  948. margin-top: 20rpx;
  949. .list_li{
  950. position: relative;
  951. width: 690rpx;
  952. height: 360rpx;
  953. background: #fff;
  954. border-radius: 10rpx;
  955. overflow: hidden;
  956. margin-bottom: 20rpx;
  957. .list_li_t{
  958. width: 100%;
  959. position: absolute;
  960. left: 0;
  961. top: 0;
  962. .list_li_t_l{
  963. >img{
  964. width: 70rpx;
  965. height: 70rpx;
  966. }
  967. >text{
  968. position: absolute;
  969. left: -15rpx;
  970. top: 76rpx;
  971. display: inline-block;
  972. width: 30rpx;
  973. height: 30rpx;
  974. background: #F5F5F5;
  975. border-radius: 15rpx;
  976. }
  977. }
  978. .list_li_t_c{
  979. width: 630rpx;
  980. height: 110rpx;
  981. position: absolute;
  982. left: 30rpx;
  983. top: 0;
  984. font-size: 30rpx;
  985. font-family: PingFang SC-Medium, PingFang SC;
  986. font-weight: 400;
  987. color: #333333;
  988. line-height: 110rpx;
  989. border-bottom: 1rpx dashed #D8D8D8;
  990. overflow: hidden;
  991. text-overflow:ellipsis;
  992. white-space: nowrap;
  993. }
  994. .list_li_t_r{
  995. position: absolute;
  996. right:-15rpx;
  997. top: 76rpx;
  998. width: 30rpx;
  999. height: 30rpx;
  1000. background:#F5F5F5;
  1001. border-radius: 15rpx;
  1002. }
  1003. }
  1004. .list_li_m{
  1005. position: absolute;
  1006. top: 110rpx;
  1007. left: 0;
  1008. width: 690rpx;
  1009. height: 168rpx;
  1010. border-bottom: 1rpx solid #E0E0E0;
  1011. padding-left: 30rpx;
  1012. box-sizing: border-box;
  1013. .list_li_m_t{
  1014. font-size: 28rpx;
  1015. font-family: PingFang SC-Medium, PingFang SC;
  1016. font-weight: 400;
  1017. color: #666666;
  1018. line-height: 40rpx;
  1019. margin-top:22rpx;
  1020. }
  1021. .list_li_m_b{
  1022. margin-top:26rpx;
  1023. >text:nth-of-type(1){
  1024. font-size: 26rpx;
  1025. font-family: PingFang SC-Medium, PingFang SC;
  1026. font-weight: 400;
  1027. line-height: 40rpx;
  1028. border-radius: 6rpx;
  1029. padding: 0 20rpx;
  1030. margin-right: 14rpx;
  1031. }
  1032. >text:nth-of-type(2){
  1033. font-size: 26rpx;
  1034. font-family: PingFang SC-Medium, PingFang SC;
  1035. font-weight: 400;
  1036. color: #0183FA;
  1037. line-height: 40rpx;
  1038. padding: 0 8rpx;
  1039. border-radius: 6rpx;
  1040. background: rgba(1,131,250,0.1);
  1041. }
  1042. }
  1043. }
  1044. .list_li_b{
  1045. height: 80rpx;
  1046. position: absolute;
  1047. top: 278rpx;
  1048. left: 0;
  1049. display: flex;
  1050. justify-content: flex-start;
  1051. align-items: center;
  1052. >img{
  1053. width: 24rpx;
  1054. height: 30rpx;
  1055. margin-right: 26rpx;
  1056. margin-left: 30rpx;
  1057. }
  1058. >text:nth-of-type(1){
  1059. font-size: 28rpx;
  1060. font-family: PingFang SC-Medium, PingFang SC;
  1061. font-weight: 400;
  1062. color: #333333;
  1063. line-height: 28rpx;
  1064. }
  1065. >text:nth-of-type(2){
  1066. font-size: 28rpx;
  1067. font-family: PingFang SC-Medium, PingFang SC;
  1068. font-weight: 400;
  1069. color: #0183FA;
  1070. line-height: 28rpx;
  1071. }
  1072. }
  1073. }
  1074. }
  1075. /* 检查者 */
  1076. .tabTitle_tow{
  1077. width:100%;
  1078. height: 100rpx;
  1079. background: #fff;
  1080. display flex;
  1081. justify-content: flex-start;
  1082. align-items: center;
  1083. margin-top: 20rpx;
  1084. position: sticky;
  1085. top: 0;
  1086. z-index: 100;
  1087. box-shadow: 0rpx 3rpx 8rpx 0rpx rgba(0,0,0,0.16);
  1088. .tabTitle_tow_li{
  1089. position: relative;
  1090. width:162rpx;
  1091. text-align center;
  1092. .tabTitle_tow_text{
  1093. display: inline-block;
  1094. font-size: 30rpx;
  1095. font-family: PingFang SC;
  1096. font-weight: 500;
  1097. color: #333333;
  1098. line-height: 46rpx;
  1099. position: relative;
  1100. >text{
  1101. position:absolute;
  1102. min-width: 30rpx;
  1103. min-height: 30rpx;
  1104. border-radius:54%;
  1105. background: #E80000;
  1106. font-size: 18rpx;
  1107. font-family: PingFang SC-Medium, PingFang SC;
  1108. font-weight: 400;
  1109. color: #FFFFFF;
  1110. text-align: center;
  1111. line-height: 30rpx;
  1112. margin-left: 6rpx;
  1113. padding:2rpx;
  1114. box-sizing: border-box;
  1115. }
  1116. &.on{
  1117. color:#0183FA;
  1118. }
  1119. }
  1120. .tabTitle_tow_across{
  1121. width: 50rpx;
  1122. height: 4rpx;
  1123. background: #0183FA;
  1124. border-radius: 2rpx;
  1125. margin-left 56rpx;
  1126. display none;
  1127. &.on{
  1128. display block;
  1129. }
  1130. }
  1131. }
  1132. }
  1133. .list_tow{
  1134. padding: 0 30rpx;
  1135. box-sizing: border-box;
  1136. margin-top: 20rpx;
  1137. .list_tow_li{
  1138. position: relative;
  1139. width: 690rpx;
  1140. height: auto;
  1141. background: #fff;
  1142. border-radius: 10rpx;
  1143. overflow: hidden;
  1144. margin-bottom: 20rpx;
  1145. .list_tow_li_t{
  1146. width: 100%;
  1147. height: 110rpx;
  1148. position: relative;
  1149. left: 0;
  1150. top: 0;
  1151. .list_tow_li_t_l{
  1152. >img{
  1153. width: 70rpx;
  1154. height: 70rpx;
  1155. }
  1156. >text{
  1157. position: absolute;
  1158. left: -15rpx;
  1159. top: 76rpx;
  1160. display: inline-block;
  1161. width: 30rpx;
  1162. height: 30rpx;
  1163. background: #F5F5F5;
  1164. border-radius: 15rpx;
  1165. }
  1166. }
  1167. .list_tow_li_t_c{
  1168. width: 630rpx;
  1169. height: 110rpx;
  1170. position: absolute;
  1171. left: 30rpx;
  1172. top: 0;
  1173. font-size: 30rpx;
  1174. font-family: PingFang SC-Medium, PingFang SC;
  1175. font-weight: 400;
  1176. color: #333333;
  1177. line-height: 110rpx;
  1178. border-bottom: 1rpx dashed #D8D8D8;
  1179. overflow: hidden;
  1180. text-overflow:ellipsis;
  1181. white-space: nowrap;
  1182. padding-right: 120rpx;
  1183. box-sizing: border-box;
  1184. }
  1185. .list_tow_li_t_c2{
  1186. position: absolute;
  1187. right: 20rpx;
  1188. top: 38rpx;
  1189. width: 120rpx;
  1190. height: 40rpx;
  1191. font-size: 28rpx;
  1192. font-family: PingFang SC-Medium, PingFang SC;
  1193. font-weight: 400;
  1194. color: #FF5757;
  1195. line-height: 40rpx;
  1196. border: 1rpx solid #FF5757;
  1197. border-radius: 6rpx;
  1198. text-align: center;
  1199. }
  1200. .list_tow_li_t_r{
  1201. position: absolute;
  1202. right:-15rpx;
  1203. top: 76rpx;
  1204. width: 30rpx;
  1205. height: 30rpx;
  1206. background:#F5F5F5;
  1207. border-radius: 15rpx;
  1208. }
  1209. }
  1210. .list_tow_li_m{
  1211. // position: absolute;
  1212. // top: 110rpx;
  1213. // left: 0;
  1214. width: 690rpx;
  1215. height: 168rpx;
  1216. padding-left: 30rpx;
  1217. box-sizing: border-box;
  1218. .list_tow_li_m_t{
  1219. font-size: 28rpx;
  1220. font-family: PingFang SC-Medium, PingFang SC;
  1221. font-weight: 400;
  1222. color: #666666;
  1223. line-height: 40rpx;
  1224. margin-top:22rpx;
  1225. overflow: hidden;
  1226. text-overflow:ellipsis;
  1227. white-space: nowrap;
  1228. }
  1229. .list_tow_li_m_b{
  1230. margin-top:26rpx;
  1231. >text:nth-of-type(1){
  1232. font-size: 26rpx;
  1233. font-family: PingFang SC-Medium, PingFang SC;
  1234. font-weight: 400;
  1235. line-height: 40rpx;
  1236. border-radius: 6rpx;
  1237. padding: 0 20rpx;
  1238. margin-right: 14rpx;
  1239. }
  1240. >text:nth-of-type(2){
  1241. font-size: 26rpx;
  1242. font-family: PingFang SC-Medium, PingFang SC;
  1243. font-weight: 400;
  1244. color: #0183FA;
  1245. line-height: 40rpx;
  1246. padding: 0 8rpx;
  1247. border-radius: 6rpx;
  1248. background: rgba(1,131,250,0.1);
  1249. margin-right: 24rpx;
  1250. }
  1251. >text:nth-of-type(3){
  1252. display: inline-block;
  1253. width: 350rpx;
  1254. font-size: 26rpx;
  1255. font-family: PingFang SC-Medium, PingFang SC;
  1256. font-weight: 400;
  1257. color: #333333;
  1258. line-height: 26rpx;
  1259. overflow: hidden;
  1260. text-overflow:ellipsis;
  1261. white-space: nowrap;
  1262. }
  1263. }
  1264. }
  1265. .list_tow_li_b{
  1266. height: 80rpx;
  1267. width: 100%;
  1268. // position: absolute;
  1269. // top: 278rpx;
  1270. // left: 0;
  1271. border-top: 1rpx solid #E0E0E0;
  1272. font-size: 28rpx;
  1273. font-family: PingFang SC-Medium, PingFang SC;
  1274. font-weight: 400;
  1275. color: #0183FA;
  1276. line-height: 80rpx;
  1277. text-align: center;
  1278. }
  1279. .list_tow_li_b_tow{
  1280. height: 80rpx;
  1281. width: 100%;
  1282. // position: absolute;
  1283. // top: 278rpx;
  1284. // left: 0;
  1285. border-top: 1rpx solid #E0E0E0;
  1286. font-size: 28rpx;
  1287. font-family: PingFang SC-Medium, PingFang SC;
  1288. font-weight: 400;
  1289. color: #0183FA;
  1290. line-height: 80rpx;
  1291. display: flex;
  1292. justify-content: center;
  1293. align-items: center;
  1294. >img{
  1295. width: 28rpx;
  1296. height: 30rpx;
  1297. margin-right: 12rpx;
  1298. }
  1299. }
  1300. .list_tow_li_b_three{
  1301. height: 80rpx;
  1302. // position: absolute;
  1303. // top: 278rpx;
  1304. // left: 0;
  1305. display: flex;
  1306. justify-content: flex-start;
  1307. align-items: center;
  1308. width: 100%;
  1309. border-top: 1rpx solid #E0E0E0;
  1310. >img{
  1311. width: 24rpx;
  1312. height: 30rpx;
  1313. margin-right: 26rpx;
  1314. margin-left: 30rpx;
  1315. }
  1316. >text:nth-of-type(1){
  1317. font-size: 28rpx;
  1318. font-family: PingFang SC-Medium, PingFang SC;
  1319. font-weight: 400;
  1320. color: #333333;
  1321. line-height: 28rpx;
  1322. }
  1323. >text:nth-of-type(2){
  1324. flex:1;
  1325. font-size: 28rpx;
  1326. font-family: PingFang SC-Medium, PingFang SC;
  1327. font-weight: 400;
  1328. color: #0183FA;
  1329. line-height: 28rpx;
  1330. white-space: nowrap;
  1331. overflow: hidden;
  1332. text-overflow: ellipsis;
  1333. }
  1334. .report{
  1335. font-size: 28rpx;
  1336. font-family: PingFang SC-Medium, PingFang SC;
  1337. font-weight: 400;
  1338. color: #0183FA;
  1339. line-height: 28rpx;
  1340. margin-right: 40rpx;
  1341. }
  1342. }
  1343. }
  1344. }
  1345. /* 整改人 */
  1346. .statistics_three{
  1347. background: #fff;
  1348. display: flex;
  1349. justify-content: flex-start;
  1350. flex-wrap: wrap;
  1351. padding: 38rpx 30rpx;
  1352. box-sizing: border-box;
  1353. .statistics_three_li{
  1354. width: 230rpx;
  1355. position: relative;
  1356. >text{
  1357. display: block;
  1358. text-align: center;
  1359. }
  1360. >text:nth-of-type(1){
  1361. font-size: 26rpx;
  1362. font-family: PingFang SC-Medium, PingFang SC;
  1363. font-weight: 400;
  1364. color: #666666;
  1365. line-height: 26rpx;
  1366. }
  1367. >text:nth-of-type(2){
  1368. font-size: 34rpx;
  1369. font-family: PingFang SC-Heavy, PingFang SC;
  1370. font-weight: 400;
  1371. color: #1FA50D;
  1372. line-height: 34rpx;
  1373. margin-top: 28rpx;
  1374. }
  1375. }
  1376. .statistics_three_li::after{
  1377. content:'';
  1378. position: absolute;
  1379. top: 20rpx;
  1380. right:0rpx;
  1381. width: 1rpx;
  1382. height: 60rpx;
  1383. background: #D8D8D8;
  1384. }
  1385. .statistics_three_li:nth-of-type(3)::after{
  1386. display: none;
  1387. }
  1388. >view:nth-of-type(1){
  1389. >text:nth-of-type(2){
  1390. color: #1FA50D;
  1391. }
  1392. }
  1393. >view:nth-of-type(2){
  1394. >text:nth-of-type(2){
  1395. color: #FA8201;
  1396. }
  1397. }
  1398. >view:nth-of-type(3){
  1399. >text:nth-of-type(2){
  1400. color: #0183FA;
  1401. }
  1402. }
  1403. }
  1404. .inspect_btn_three{
  1405. height: 150rpx;
  1406. background: #fff;
  1407. display: flex;
  1408. justify-content: space-between;
  1409. align-items: center;
  1410. margin-top: 20rpx;
  1411. padding: 0 74rpx;
  1412. box-sizing: border-box;
  1413. .inspect_btn_three_li{
  1414. >img{
  1415. width: 60rpx;
  1416. height: 60rpx;
  1417. margin:0 auto;
  1418. }
  1419. >text{
  1420. font-size: 28rpx;
  1421. font-family: PingFang SC-Medium, PingFang SC;
  1422. font-weight: 400;
  1423. color: #333333;
  1424. line-height: 28rpx;
  1425. margin-top: 14rpx;
  1426. }
  1427. }
  1428. .line{
  1429. display: inline-block;
  1430. height: 60rpx;
  1431. width: 1rpx;
  1432. background: #E0E0E0;
  1433. }
  1434. }
  1435. /* 切换按钮 */
  1436. .tabTitle_three{
  1437. width:100%;
  1438. height: 100rpx;
  1439. background: #fff;
  1440. display flex;
  1441. justify-content: center;
  1442. align-items: center;
  1443. margin-top: 20rpx;
  1444. position: sticky;
  1445. top: 0;
  1446. z-index: 100;
  1447. box-shadow: 0rpx 3rpx 8rpx 0rpx rgba(0,0,0,0.16);
  1448. .tabTitle_three_li{
  1449. position: relative;
  1450. width:372rpx;
  1451. text-align center;
  1452. .tabTitle_three_text{
  1453. display: inline-block;
  1454. font-size: 30rpx;
  1455. font-family: PingFang SC;
  1456. font-weight: 500;
  1457. color: #333333;
  1458. line-height: 46rpx;
  1459. position: relative;
  1460. >text{
  1461. position:absolute;
  1462. min-width: 30rpx;
  1463. min-height: 30rpx;
  1464. border-radius:54%;
  1465. background: #E80000;
  1466. font-size: 18rpx;
  1467. font-family: PingFang SC-Medium, PingFang SC;
  1468. font-weight: 400;
  1469. color: #FFFFFF;
  1470. text-align: center;
  1471. line-height: 30rpx;
  1472. margin-left: 6rpx;
  1473. padding:2rpx;
  1474. box-sizing: border-box;
  1475. }
  1476. &.on{
  1477. color:#0183FA;
  1478. }
  1479. }
  1480. .tabTitle_three_across{
  1481. width: 50rpx;
  1482. height: 4rpx;
  1483. background: #0183FA;
  1484. border-radius: 2rpx;
  1485. margin-left 162rpx;
  1486. display none;
  1487. &.on{
  1488. display block;
  1489. }
  1490. }
  1491. }
  1492. .tabTitle_three_li:nth-of-type(1)::after{
  1493. content: '';
  1494. position: absolute;
  1495. top: 0rpx;
  1496. right: 0rpx;
  1497. width: 1rpx;
  1498. height: 50rpx;
  1499. background: #E0E0E0;
  1500. }
  1501. }
  1502. .list_three{
  1503. padding: 0 30rpx;
  1504. box-sizing: border-box;
  1505. margin-top: 20rpx;
  1506. .list_three_li{
  1507. position: relative;
  1508. width: 690rpx;
  1509. height: 348rpx;
  1510. background: #fff;
  1511. border-radius: 10rpx;
  1512. overflow: hidden;
  1513. margin-bottom: 20rpx;
  1514. .list_three_li_t{
  1515. width: 100%;
  1516. position: absolute;
  1517. left: 0;
  1518. top: 0;
  1519. .list_three_li_t_l{
  1520. >img{
  1521. width: 70rpx;
  1522. height: 70rpx;
  1523. }
  1524. >text{
  1525. position: absolute;
  1526. left: -15rpx;
  1527. top: 76rpx;
  1528. display: inline-block;
  1529. width: 30rpx;
  1530. height: 30rpx;
  1531. background: #F5F5F5;
  1532. border-radius: 15rpx;
  1533. }
  1534. }
  1535. .list_three_li_t_c{
  1536. width: 630rpx;
  1537. height: 110rpx;
  1538. position: absolute;
  1539. left: 30rpx;
  1540. top: 0;
  1541. font-size: 30rpx;
  1542. font-family: PingFang SC-Medium, PingFang SC;
  1543. font-weight: 400;
  1544. color: #333333;
  1545. line-height: 110rpx;
  1546. border-bottom: 1rpx dashed #D8D8D8;
  1547. overflow: hidden;
  1548. text-overflow:ellipsis;
  1549. white-space: nowrap;
  1550. padding-right: 60rpx;
  1551. box-sizing: border-box;
  1552. }
  1553. .list_three_li_t_c2{
  1554. position: absolute;
  1555. right: 20rpx;
  1556. top: 38rpx;
  1557. width: 120rpx;
  1558. height: 40rpx;
  1559. font-size: 28rpx;
  1560. font-family: PingFang SC-Medium, PingFang SC;
  1561. font-weight: 400;
  1562. color: #FF5757;
  1563. line-height: 40rpx;
  1564. border: 1rpx solid #FF5757;
  1565. border-radius: 6rpx;
  1566. text-align: center;
  1567. }
  1568. .list_three_li_t_r{
  1569. position: absolute;
  1570. right:-15rpx;
  1571. top: 76rpx;
  1572. width: 30rpx;
  1573. height: 30rpx;
  1574. background:#F5F5F5;
  1575. border-radius: 15rpx;
  1576. }
  1577. }
  1578. .list_three_li_m{
  1579. position: absolute;
  1580. top: 110rpx;
  1581. left: 0;
  1582. width: 690rpx;
  1583. height: 158rpx;
  1584. padding-left: 30rpx;
  1585. box-sizing: border-box;
  1586. .list_three_li_m_t{
  1587. font-size: 28rpx;
  1588. font-family: PingFang SC-Medium, PingFang SC;
  1589. font-weight: 400;
  1590. color: #666666;
  1591. line-height: 40rpx;
  1592. margin-top:22rpx;
  1593. overflow: hidden;
  1594. text-overflow:ellipsis;
  1595. white-space: nowrap;
  1596. }
  1597. .list_three_li_m_b{
  1598. margin-top:26rpx;
  1599. >text:nth-of-type(1){
  1600. font-size: 26rpx;
  1601. font-family: PingFang SC-Medium, PingFang SC;
  1602. font-weight: 400;
  1603. line-height: 40rpx;
  1604. border-radius: 6rpx;
  1605. padding: 0 20rpx;
  1606. margin-right: 14rpx;
  1607. }
  1608. .type{
  1609. font-size: 26rpx;
  1610. font-family: PingFang SC-Medium, PingFang SC;
  1611. font-weight: 400;
  1612. color: #0183FA;
  1613. line-height: 40rpx;
  1614. padding: 0 8rpx;
  1615. border-radius: 6rpx;
  1616. background: rgba(1,131,250,0.1);
  1617. margin-right: 24rpx;
  1618. }
  1619. .college{
  1620. display: inline-block;
  1621. width: 280rpx;
  1622. font-size: 26rpx;
  1623. font-family: PingFang SC-Medium, PingFang SC;
  1624. font-weight: 400;
  1625. color: #333333;
  1626. line-height: 26rpx;
  1627. overflow: hidden;
  1628. text-overflow:ellipsis;
  1629. white-space: nowrap;
  1630. }
  1631. }
  1632. }
  1633. .list_three_li_b{
  1634. height: 80rpx;
  1635. width: 100%;
  1636. position: absolute;
  1637. top: 268rpx;
  1638. left: 0;
  1639. padding-left: 30rpx;
  1640. box-sizing: border-box;
  1641. >text:nth-of-type(1){
  1642. font-size: 26rpx;
  1643. font-family: PingFang SC-Medium, PingFang SC;
  1644. font-weight: 400;
  1645. color: #333333;
  1646. line-height: 26rpx;
  1647. }
  1648. }
  1649. .list_three_li_b2{
  1650. height: 76rpx;
  1651. width: 100%;
  1652. position: absolute;
  1653. top: 258rpx;
  1654. left: 0;
  1655. padding:0 30rpx;
  1656. box-sizing: border-box;
  1657. display: flex;
  1658. justify-content: space-between;
  1659. align-items: center;
  1660. .list_three_li_b_l{
  1661. display: flex;
  1662. justify-content: space-between;
  1663. align-items: center;
  1664. >img{
  1665. width: 28rpx;
  1666. height: 30rpx;
  1667. margin-right: 14rpx;
  1668. }
  1669. >text{
  1670. font-size: 28rpx;
  1671. font-family: PingFang SC-Medium, PingFang SC;
  1672. font-weight: 400;
  1673. color: #666666;
  1674. line-height: 76rpx;
  1675. }
  1676. }
  1677. .list_three_li_b_r{
  1678. font-size: 24rpx;
  1679. font-family: PingFang SC-Medium, PingFang SC;
  1680. font-weight: 400;
  1681. color: #999999;
  1682. line-height: 76rpx;
  1683. }
  1684. }
  1685. }
  1686. }
  1687. .bottom_btn{
  1688. position: fixed;
  1689. bottom: 20rpx;
  1690. left: 30rpx;
  1691. font-size: 30rpx;
  1692. font-family: PingFang SC-Medium, PingFang SC;
  1693. font-weight: 400;
  1694. color: #FFFFFF;
  1695. line-height: 90rpx;
  1696. width: 690rpx;
  1697. height: 90rpx;
  1698. background: #0183FA;
  1699. border-radius: 20rpx;
  1700. text-align: center;
  1701. }
  1702. .scan_btn{
  1703. position: fixed;
  1704. bottom: 210rpx;
  1705. right: 0rpx;
  1706. width: 130rpx;
  1707. height: 130rpx;
  1708. }
  1709. /* 根据实验室id查询隐患列表 */
  1710. .shade {
  1711. height: 100%;
  1712. width: 100%;
  1713. position: fixed;
  1714. display: flex;
  1715. flex-direction: column;
  1716. z-index: 100;
  1717. background: rgba(0, 0, 0, 0.2);
  1718. .null-box {
  1719. flex: 1;
  1720. }
  1721. .shade_n {
  1722. position: absolute;
  1723. bottom: 0;
  1724. left: 0;
  1725. width: 750rpx;
  1726. height: 560rpx;
  1727. background: #FFFFFF;
  1728. border-radius: 20rpx 20rpx 0rpx 0rpx;
  1729. .shade_n_title{
  1730. height: 100rpx;
  1731. padding: 0 30rpx;
  1732. box-sizing: border-box;
  1733. display: flex;
  1734. justify-content:space-between;
  1735. border-bottom: 1rpx solid #E0E0E0;
  1736. >text:nth-of-type(1){
  1737. font-size: 30rpx;
  1738. font-family: PingFang SC-Medium, PingFang SC;
  1739. font-weight: 400;
  1740. color: #333333;
  1741. line-height: 100rpx;
  1742. }
  1743. >text:nth-of-type(2){
  1744. font-size: 30rpx;
  1745. font-family: PingFang SC-Medium, PingFang SC;
  1746. font-weight: 400;
  1747. color: #0183FA;
  1748. line-height: 100rpx;
  1749. }
  1750. }
  1751. .shade_n_b{
  1752. height: 460rpx;
  1753. padding: 0 30rpx;
  1754. box-sizing: border-box;
  1755. overflow-y: auto;
  1756. .shade_n_b_li{
  1757. display: flex;
  1758. justify-content:space-between;
  1759. align-items: center;
  1760. height: 80rpx;
  1761. border-bottom: 1rpx solid #E0E0E0;
  1762. >text{
  1763. font-size: 28rpx;
  1764. font-family: PingFang SC-Medium, PingFang SC;
  1765. font-weight: 400;
  1766. line-height: 80rpx;
  1767. overflow: hidden;
  1768. text-overflow:ellipsis;
  1769. white-space: nowrap;
  1770. }
  1771. >img{
  1772. width: 24rpx;
  1773. height: 16rpx;
  1774. margin-right: 14rpx;
  1775. }
  1776. }
  1777. .color_A{
  1778. color: #333333;
  1779. }
  1780. .color_B{
  1781. color: #0183FA;
  1782. }
  1783. }
  1784. }
  1785. }
  1786. }
  1787. </style>