safetyExamineWorkbench.vue 48 KB

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