inspectList.vue 27 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123
  1. <!-- 检查和自查列表 -->
  2. <template>
  3. <view class="snapshotList">
  4. <scroll-view scroll-y @scrolltolower="scrollGet" class="info-max-box">
  5. <view class="title" @click="planClick()">
  6. <view class="title-l">
  7. <view class="title-l-t">{{optionData.planTitle}}</view>
  8. <view class="title-l-b">
  9. <view v-if="optionData.checkCategory">
  10. {{optionData.checkCategory==1?'校院巡查':(optionData.checkCategory==2?'学院自查':'')}}
  11. </view>
  12. <view v-if="optionData.checkTypeName">{{optionData.checkTypeName}}</view>
  13. <view v-if="optionData.crossCheck==1">交叉互检</view>
  14. </view>
  15. </view>
  16. <img class="title-r" src="@/pages_safetyCheck/images/icon_wd_gd@1x.png">
  17. </view>
  18. <view class="tabTitleTow">
  19. <view :class="tabIndexTow==index?'tab-C':'tab-D'" v-for="(item,index) in tabListTow"
  20. @click="tabClickTow(index)">{{item}}</view>
  21. </view>
  22. <view>
  23. <view class="level">
  24. <view class="level-li"
  25. :style="levelId==item.levelId?'border:1rpx solid '+item.levelColor+';background:'+item.levelColorTow+';':'levelColor-B'"
  26. @click="levelClick(item.levelId)" v-for="(item,index) in levelList">{{item.levelName}}</view>
  27. <view class="level-r" v-if="pageType == 0">
  28. <view :class="manageStatus == 1 ?'level-r-B':'level-r-A'" @click="checkFlagChange(1)">未完成</view>
  29. <view :class="manageStatus == 0 ?'level-r-B':'level-r-A'" @click="checkFlagChange(0)">已完成</view>
  30. </view>
  31. </view>
  32. <view class="srearch">
  33. <view class="srearch-n" @click="srearchClick()">
  34. <view class="srearch-l">
  35. <img src="@/pages_safetyCheck/images/icon_aqjc_ss.png">
  36. </view>
  37. <input class="srearch-c" type="text" v-model="searchValue" placeholder="搜索实验室" disabled />
  38. </view>
  39. </view>
  40. </view>
  41. <view class="hidden">
  42. <view class="lab-info" @click="listClick(item)" v-for="(item,index) in dataList">
  43. <img v-if="pageType!=0" class="lab-info-l" src="@/pages_safetyCheck/images/icon_aqjc_shiyanshi.png">
  44. <view :class="item.manageStatus==2?'finished':'notFinished'" v-if="pageType==0">
  45. {{item.manageStatus==2?'已完成':'未完成'}}</view>
  46. <view class="lab-info-c">
  47. <view class="lab-info-c-t">
  48. <view class="lab-info-c-t-l">{{item.subName}}</view>
  49. <view class="lab-info-c-t-r"
  50. :style="'border:1rpx solid '+item.classLevelColor+';background:'+item.classLevelColorTow+';'">
  51. <text
  52. :style="'border-right:1rpx solid '+item.classLevelColor+';color:'+item.classLevelColor+';'">{{item.classLevelName?item.classLevelName:''}}</text>
  53. <text
  54. :style="'color:'+item.classLevelColor+';'">{{item.classTypeNames?item.classTypeNames:''}}</text>
  55. </view>
  56. </view>
  57. <view class="lab-info-c-b">
  58. <text>{{tabIndexTow==0?(item.roomNum?item.roomNum:'-'):(item.subRoom?item.subRoom:'-')}}房间&{{item.buildName}}</text>
  59. <text>{{item.deptName}}</text>
  60. </view>
  61. </view>
  62. </view>
  63. <view class="get-data-null-p" v-if="getDataType">- 没有更多数据 -</view>
  64. </view>
  65. <img class="saoCode" @click="saoCode()" src="@/pages_safetyCheck/images/icon_aqjc_saoma.png">
  66. </scroll-view>
  67. </view>
  68. </template>
  69. <script>
  70. import {
  71. config
  72. } from '@/api/request/config.js'
  73. import {
  74. systemDeptDropList,
  75. } from '@/pages/api/index.js'
  76. import {
  77. laboratorySubRelInfoGetRelList,
  78. laboratoryLevelConfigGetWebLevelTitleList,
  79. securityAppCheckManageList,
  80. securityAppCheckDangerGetCheckDangerSubList,
  81. securityAppCheckDangerReviewSubList,
  82. securityAppCheckSetOptionList,
  83. } from '@/pages_safetyCheck/api/index.js'
  84. export default {
  85. name: "snapshotList",
  86. components: {
  87. },
  88. data() {
  89. return {
  90. baseUrl: config.base_url,
  91. pageType: 0,
  92. userType: 1,
  93. tabListTow: ['检查任务', '复查验证', '隐患整改'],
  94. tabIndexTow: 0,
  95. //学院选择
  96. deptData: {
  97. index: null,
  98. list: [],
  99. id: null,
  100. name: null
  101. },
  102. deptIndex: null,
  103. deptList: [],
  104. //弹层实验室数据
  105. popupType: false,
  106. roomList: [],
  107. //级别
  108. levelList: [],
  109. levelId: null,
  110. optionData: null,
  111. //实验室/房间号
  112. searchValue: '',
  113. subId: '',
  114. planSetId: null,
  115. // 查询参数
  116. queryParams: {
  117. page: 1,
  118. pageSize: 20,
  119. },
  120. dataList: [],
  121. total: 0,
  122. getDataType: false,
  123. manageStatus: null,
  124. }
  125. },
  126. onLoad(option) {
  127. let optionData = JSON.parse(decodeURIComponent(option.infoData))
  128. console.log(optionData)
  129. uni.setNavigationBarTitle({
  130. title: optionData.checkPlanSetVoList.checkName
  131. })
  132. this.$set(this, 'tabListTow',
  133. optionData.checkCategory == 1 ? ['检查任务', '复查验证', '隐患整改'] :
  134. (optionData.checkCategory == 2 ? ['自查任务', '复查验证', '隐患整改'] : [])
  135. )
  136. this.$set(this, 'optionData', optionData);
  137. this.$set(this, 'planSetId', optionData.checkPlanSetVoList.planSetId);
  138. },
  139. created() {
  140. this.systemDeptDropList();
  141. this.laboratoryLevelConfigGetWebLevelTitleList();
  142. },
  143. mounted() {
  144. let self = this;
  145. setTimeout(() => {
  146. self.getList();
  147. }, 100);
  148. },
  149. methods: {
  150. //滚动事件
  151. scrollGet() {
  152. let self = this;
  153. if (self.total / self.queryParams.pageSize <= self.queryParams.page) {
  154. this.$set(this, 'getDataType', true);
  155. } else {
  156. this.queryParams.page += 1;
  157. this.$nextTick(() => {
  158. this.getList();
  159. })
  160. }
  161. },
  162. //级别切换
  163. levelClick(id) {
  164. if (this.levelId == id) {
  165. this.$set(this, 'levelId', null);
  166. } else {
  167. this.$set(this, 'levelId', id);
  168. }
  169. this.$set(this, 'getDataType', false);
  170. this.$set(this.queryParams, 'page', 1);
  171. this.getList();
  172. },
  173. //符合/不符合
  174. checkFlagChange(type) {
  175. if (this.manageStatus == type) {
  176. this.$set(this, 'manageStatus', null);
  177. } else {
  178. this.$set(this, 'manageStatus', type);
  179. }
  180. this.$set(this.queryParams, 'page', 1);
  181. this.getList()
  182. },
  183. //查询类型切换
  184. tabClickTow(index) {
  185. this.$set(this.queryParams, 'page', 1);
  186. this.$set(this, 'deptData', {
  187. index: null,
  188. list: this.deptData.list,
  189. id: null,
  190. name: null
  191. });
  192. this.$set(this, 'searchValue', null);
  193. this.$set(this, 'levelId', null);
  194. this.$set(this, 'getDataType', false);
  195. this.$set(this, 'dataList', []);
  196. this.$set(this, 'total', 0);
  197. this.$set(this, 'tabIndexTow', index);
  198. this.$nextTick(() => {
  199. this.getList();
  200. })
  201. },
  202. //实验室搜索框跳转
  203. srearchClick() {
  204. let infoData = {};
  205. infoData.pageType = this.tabIndexTow;
  206. infoData.laboratoryStatus = this.tabIndexTow;
  207. infoData.planTitle = this.optionData.planTitle;
  208. infoData.checkCategory = this.optionData.checkCategory;
  209. infoData.checkTypeName = this.optionData.checkTypeName;
  210. infoData.crossCheck = this.optionData.crossCheck;
  211. infoData.checkPlanSetVoList = this.optionData.checkPlanSetVoList;
  212. uni.navigateTo({
  213. url: '/pages_safetyCheck/views/snapshotManage/laboratorySearch?form=' + encodeURIComponent(
  214. JSON.stringify(infoData))
  215. });
  216. },
  217. //计划详情
  218. planClick() {
  219. let infoData = {
  220. planId: this.optionData.planId
  221. };
  222. uni.navigateTo({
  223. url: '/pages_safetyCheck/views/planDetail?infoData=' + encodeURIComponent(JSON.stringify(
  224. infoData))
  225. });
  226. },
  227. //实验室列表数据选择
  228. listClick(row) {
  229. let infoData = row;
  230. infoData.pageType = this.tabIndexTow;
  231. infoData.planTitle = this.optionData.planTitle;
  232. infoData.checkCategory = this.optionData.checkCategory;
  233. infoData.checkTypeName = this.optionData.checkTypeName;
  234. infoData.crossCheck = this.optionData.crossCheck;
  235. infoData.checkPlanSetVoList = this.optionData.checkPlanSetVoList;
  236. uni.navigateTo({
  237. url: '/pages_safetyCheck/views/itemsManage/hiddenDangerItems?infoData=' + encodeURIComponent(
  238. JSON.stringify(infoData))
  239. });
  240. },
  241. //搜索房间接口
  242. async buildBySub() {
  243. let self = this;
  244. const {
  245. data
  246. } = await laboratorySubRelInfoGetRelList({
  247. 'searchValue': this.form.searchValue,
  248. });
  249. if (data.code == 200) {
  250. if (data.data[0]) {
  251. this.roomList = data.data;
  252. } else {
  253. uni.showToast({
  254. title: '未找到相关实验室',
  255. icon: "none",
  256. mask: true,
  257. duration: 2000
  258. });
  259. }
  260. }
  261. },
  262. /******调用摄像头******/
  263. saoCode() {
  264. let self = this;
  265. uni.scanCode({
  266. onlyFromCamera: true,
  267. success: function(res) {
  268. let list = res.result.split("?")[1].split("&");
  269. let codeData = {};
  270. list.forEach((item) => {
  271. codeData[item.split("=")[0]] = item.split("=")[1];
  272. })
  273. if (codeData.code) {
  274. self.saoList(codeData.subId);
  275. } else {
  276. uni.showToast({
  277. title: '请扫描正确的二维码',
  278. icon: "none",
  279. mask: true,
  280. duration: 2000
  281. });
  282. }
  283. }
  284. });
  285. },
  286. //查询检查项
  287. async securityAppCheckSetOptionList(item) {
  288. let self = this;
  289. let upData = item;
  290. let obj = {
  291. page: 1,
  292. pageSize: 20,
  293. checkStatus: '0',
  294. manageId: upData.manageId,
  295. }
  296. const {
  297. data
  298. } = await securityAppCheckSetOptionList(obj);
  299. if (data.code == 200) {
  300. if (data.data.records[0]) {
  301. let infoData = self.optionData;
  302. infoData.pageType = self.tabIndexTow;;
  303. infoData.itemsStatus = 0;
  304. infoData.subName = upData.subName;
  305. infoData.roomNum = upData.roomNum;
  306. infoData.subId = data.data.records[0].subId;
  307. infoData.manageId = data.data.records[0].manageId;
  308. infoData.setOptionId = data.data.records[0].setOptionId;
  309. infoData.hazardCheckPro = data.data.records[0].hazardCheckPro;
  310. uni.navigateTo({
  311. url: '/pages_safetyCheck/views/inspectManage/conductInspections?infoData=' +
  312. encodeURIComponent(
  313. JSON
  314. .stringify(infoData))
  315. });
  316. } else {
  317. self.dialogStatus = 0;
  318. self.dialogVisible = false;
  319. uni.showToast({
  320. title: '该实验室暂无检查项!',
  321. icon: "none",
  322. mask: true,
  323. duration: 2000
  324. });
  325. return
  326. }
  327. }
  328. },
  329. //扫一扫查询数据
  330. async saoList(subId) {
  331. let obj = {
  332. planSetId: this.planSetId,
  333. subId: subId,
  334. }
  335. if (this.tabIndexTow == 0) {
  336. //检查计划
  337. const {
  338. data
  339. } = await securityAppCheckManageList(obj);
  340. if (data.code == 200) {
  341. if (data.data.records[0]) {
  342. this.securityAppCheckSetOptionList(data.data.records[0])
  343. //跳转检查项列表页面
  344. /* let infoData = data.data.records[0];
  345. infoData.pageType = this.tabIndexTow;
  346. infoData.checkPlanSetVoList = this.optionData.checkPlanSetVoList;
  347. uni.navigateTo({
  348. url: '/pages_safetyCheck/views/itemsManage/hiddenDangerItems?infoData=' +
  349. encodeURIComponent(
  350. JSON.stringify(infoData))
  351. }); */
  352. } else {
  353. //未找到数据提示
  354. uni.showToast({
  355. title: '未找到该实验室与本计划批次关联的数据',
  356. icon: "none",
  357. mask: true,
  358. duration: 2000
  359. });
  360. }
  361. }
  362. } else if (this.tabIndexTow == 1) {
  363. //复查计划
  364. obj.planId = this.optionData.planId;
  365. const {
  366. data
  367. } = await securityAppCheckDangerReviewSubList(obj);
  368. if (data.code == 200) {
  369. if (data.data[0] && data.data[0].stayExamineCheckNum != 0) {
  370. //跳转检查项列表页面
  371. let infoData = data.data[0];
  372. infoData.pageType = this.tabIndexTow;
  373. infoData.checkPlanSetVoList = this.optionData.checkPlanSetVoList;
  374. uni.navigateTo({
  375. url: '/pages_safetyCheck/views/itemsManage/hiddenDangerItems?infoData=' +
  376. encodeURIComponent(
  377. JSON.stringify(infoData))
  378. });
  379. } else {
  380. //未找到数据提示
  381. uni.showToast({
  382. title: '未找到该实验室与本计划批次关联的数据',
  383. icon: "none",
  384. mask: true,
  385. duration: 2000
  386. });
  387. }
  388. }
  389. } else if (this.tabIndexTow == 2) {
  390. //整改计划
  391. obj.planId = this.optionData.planId;
  392. obj.userId = uni.getStorageSync('userId');
  393. const {
  394. data
  395. } = await securityAppCheckDangerGetCheckDangerSubList(obj);
  396. if (data.code == 200) {
  397. if (data.data[0]) {
  398. //跳转检查项列表页面
  399. let infoData = data.data[0];
  400. infoData.pageType = this.tabIndexTow;
  401. infoData.checkPlanSetVoList = this.optionData.checkPlanSetVoList;
  402. uni.navigateTo({
  403. url: '/pages_safetyCheck/views/itemsManage/hiddenDangerItems?infoData=' +
  404. encodeURIComponent(
  405. JSON.stringify(infoData))
  406. });
  407. } else {
  408. //未找到数据提示
  409. uni.showToast({
  410. title: '未找到该实验室与本计划批次关联的数据',
  411. icon: "none",
  412. mask: true,
  413. duration: 2000
  414. });
  415. }
  416. }
  417. }
  418. },
  419. //学院选择
  420. deptChange(e) {
  421. let self = this;
  422. self.deptData.list.forEach(function(item, index) {
  423. if (index == e.detail.value) {
  424. if (!item.deptId) {
  425. self.$set(self.deptData, 'id', null)
  426. self.$set(self.deptData, 'name', null)
  427. } else {
  428. self.$set(self.deptData, 'id', item.deptId)
  429. self.$set(self.deptData, 'name', item.deptName)
  430. }
  431. }
  432. })
  433. this.$set(this, 'getDataType', false);
  434. this.$set(this.queryParams, 'page', 1);
  435. this.getList();
  436. },
  437. //获取院系
  438. async systemDeptDropList() {
  439. const {
  440. data
  441. } = await systemDeptDropList({
  442. deptName: '',
  443. level: 2,
  444. deptType: 1
  445. });
  446. if (data.code == 200) {
  447. data.data.unshift({
  448. deptid: null,
  449. deptName: '全部'
  450. })
  451. this.$set(this.deptData, 'list', data.data);
  452. }
  453. },
  454. //获取分级
  455. async laboratoryLevelConfigGetWebLevelTitleList() {
  456. let self = this;
  457. const {
  458. data
  459. } = await laboratoryLevelConfigGetWebLevelTitleList({});
  460. if (data.code == 200) {
  461. data.data.forEach(function(item) {
  462. item.levelName = item.levelName.split('/')[0]
  463. if (item.levelColor) {
  464. item.levelColorTow = self.hexToRgb(item.levelColor, 0.2)
  465. }
  466. })
  467. this.$set(this, 'levelList', data.data);
  468. }
  469. },
  470. //回车触发
  471. carriageReturnRequest() {
  472. this.$set(this, 'getDataType', false);
  473. this.$set(this.queryParams, 'page', 1);
  474. this.getList();
  475. },
  476. //检查任务
  477. async getList() {
  478. let self = this;
  479. let obj = JSON.parse(JSON.stringify(this.queryParams));
  480. obj.planSetId = this.planSetId;
  481. obj.deptId = this.deptData.id ? this.deptData.id : '';
  482. obj.searchValue = this.searchValue ? this.searchValue : '';
  483. obj.levelId = this.levelId ? this.levelId : '';
  484. obj.manageStatus = this.manageStatus ? this.manageStatus : '';
  485. if (this.tabIndexTow == 0) {
  486. //检查计划
  487. const {
  488. data
  489. } = await securityAppCheckManageList(obj);
  490. if (data.code == 200) {
  491. data.data.records.forEach(function(item) {
  492. if (item.classLevelColor) {
  493. item.classLevelColorTow = self.hexToRgb(item.classLevelColor, 0.2)
  494. }
  495. })
  496. if (self.queryParams.page == 1) {
  497. this.dataList = data.data.records;
  498. this.total = data.data.total;
  499. if (data.data.total / self.queryParams.pageSize <= self.queryParams.page) {
  500. this.$set(this, 'getDataType', true);
  501. }
  502. } else {
  503. this.dataList = [...this.dataList, ...data.data.records]
  504. this.total = data.data.total;
  505. if (data.data.total / self.queryParams.pageSize <= self.queryParams.page) {
  506. this.$set(this, 'getDataType', true);
  507. }
  508. }
  509. }
  510. } else if (this.tabIndexTow == 1) {
  511. //复查计划
  512. obj.planId = this.optionData.planId;
  513. const {
  514. data
  515. } = await securityAppCheckDangerReviewSubList(obj);
  516. if (data.code == 200) {
  517. this.dataList = data.data;
  518. this.$set(this, 'getDataType', true);
  519. // 后台接口暂时不支持分页
  520. // if (self.queryParams.page == 1) {
  521. // this.dataList = data.data.records;
  522. // this.total = data.data.total;
  523. // if (data.data.total / self.queryParams.pageSize <= self.queryParams.page) {
  524. // this.$set(this, 'getDataType', true);
  525. // }
  526. // } else {
  527. // this.dataList = [...this.dataList, ...data.data.records]
  528. // this.total = data.data.total;
  529. // if (data.data.total / self.queryParams.pageSize <= self.queryParams.page) {
  530. // this.$set(this, 'getDataType', true);
  531. // }
  532. // }
  533. }
  534. } else if (this.tabIndexTow == 2) {
  535. //整改计划
  536. obj.planId = this.optionData.planId;
  537. obj.userId = uni.getStorageSync('userId');
  538. const {
  539. data
  540. } = await securityAppCheckDangerGetCheckDangerSubList(obj);
  541. if (data.code == 200) {
  542. this.dataList = data.data;
  543. this.$set(this, 'getDataType', true);
  544. // 后台接口暂时不支持分页
  545. // if (self.queryParams.page == 1) {
  546. // this.dataList = data.data.records;
  547. // this.total = data.data.total;
  548. // if (data.data.total / self.queryParams.pageSize <= self.queryParams.page) {
  549. // this.$set(this, 'getDataType', true);
  550. // }
  551. // } else {
  552. // this.dataList = [...this.dataList, ...data.data.records]
  553. // this.total = data.data.total;
  554. // if (data.data.total / self.queryParams.pageSize <= self.queryParams.page) {
  555. // this.$set(this, 'getDataType', true);
  556. // }
  557. // }
  558. }
  559. }
  560. },
  561. //十六进制颜色值和RGB格式转换
  562. hexToRgb(hex, opacity = 1) {
  563. // 去除#号
  564. var color = hex.replace("#", "");
  565. // 分割成红、绿、蓝三部分的16进制字符串
  566. var red = parseInt(color.substring(0, 2), 16);
  567. var green = parseInt(color.substring(2, 4), 16);
  568. var blue = parseInt(color.substring(4, 6), 16);
  569. return `RGB(${red}, ${green}, ${blue},${opacity})`;
  570. },
  571. }
  572. }
  573. </script>
  574. <style lang="stylus" scoped>
  575. .snapshotList {
  576. height: 100%;
  577. display flex;
  578. overflow: hidden;
  579. .info-max-box {
  580. padding-top: 20rpx;
  581. }
  582. .title {
  583. width: 690rpx;
  584. margin: 0 30rpx 20rpx;
  585. height: 150rpx;
  586. background: #FFFFFF;
  587. border-radius: 20rpx 20rpx 20rpx 20rpx;
  588. display: flex;
  589. justify-content: space-between;
  590. align-items: center;
  591. padding: 0 30rpx;
  592. box-sizing: border-box;
  593. .title-l {
  594. width: 594rpx;
  595. .title-l-t {
  596. font-size: 30rpx;
  597. color: #333333;
  598. line-height: 42rpx;
  599. text-align: left;
  600. overflow: hidden;
  601. text-overflow: ellipsis;
  602. white-space: nowrap;
  603. }
  604. .title-l-b {
  605. display: flex;
  606. justify-content: flex-start;
  607. margin-top: 16rpx;
  608. >view {
  609. width: 130rpx;
  610. height: 50rpx;
  611. background: rgba(1, 131, 250, 0.2);
  612. border-radius: 6rpx 6rpx 6rpx 6rpx;
  613. font-size: 24rpx;
  614. color: #0183FA;
  615. line-height: 50rpx;
  616. text-align: center;
  617. margin-right: 14rpx;
  618. }
  619. }
  620. }
  621. .title-r {
  622. width: 24rpx;
  623. height: 24rpx;
  624. }
  625. }
  626. .tabTitleTow {
  627. width: 690rpx;
  628. height: 80rpx;
  629. display: flex;
  630. justify-content: center;
  631. margin: 20rpx 0 0 30rpx;
  632. >view:nth-of-type(1) {
  633. width: 230rpx;
  634. height: 80rpx;
  635. border-radius: 50rpx 0rpx 0rpx 50rpx;
  636. }
  637. >view:nth-of-type(2) {
  638. width: 230rpx;
  639. height: 80rpx;
  640. border-radius: 0rpx 0rpx 0rpx 0rpx;
  641. }
  642. >view:nth-of-type(3) {
  643. width: 230rpx;
  644. height: 80rpx;
  645. border-radius: 0rpx 50rpx 50rpx 0rpx;
  646. }
  647. .tab-C {
  648. font-size: 30rpx;
  649. color: #FFFFFF;
  650. line-height: 80rpx;
  651. text-align: center;
  652. background: #0183FA;
  653. }
  654. .tab-D {
  655. font-size: 30rpx;
  656. color: #333333;
  657. line-height: 80rpx;
  658. text-align: center;
  659. background: #FFFFFF;
  660. }
  661. }
  662. .srearch {
  663. width: 750rpx;
  664. height: 100rpx;
  665. background: #FFFFFF;
  666. border-radius: 0rpx 0rpx 0rpx 0rpx;
  667. overflow: hidden;
  668. display: flex;
  669. display: flex;
  670. justify-content: space-between;
  671. align-items: center;
  672. padding: 0 30rpx;
  673. box-sizing: border-box;
  674. .college {
  675. width: 200rpx;
  676. height: 60rpx;
  677. border-radius: 50rpx 50rpx 50rpx 50rpx;
  678. border: 2rpx solid #E0E0E0;
  679. font-size: 24rpx;
  680. color: #333333;
  681. line-height: 60rpx;
  682. text-align: left;
  683. display: flex;
  684. justify-content: space-between;
  685. align-items: center;
  686. padding: 0 26rpx;
  687. box-sizing: border-box;
  688. overflow: hidden;
  689. text-overflow: ellipsis;
  690. white-space: nowrap;
  691. >view {
  692. width: 124rpx;
  693. display: block;
  694. overflow: hidden;
  695. text-overflow: ellipsis;
  696. white-space: nowrap;
  697. }
  698. >img {
  699. display: block;
  700. width: 24rpx;
  701. height: 12rpx;
  702. }
  703. }
  704. .srearch-n {
  705. width: 690rpx;
  706. height: 60rpx;
  707. border-radius: 50rpx 50rpx 50rpx 50rpx;
  708. border: 2rpx solid #E0E0E0;
  709. display: flex;
  710. justify-content: flex-start;
  711. align-items: center;
  712. .srearch-l {
  713. width: 60rpx;
  714. height: 60rpx;
  715. >img {
  716. width: 20rpx;
  717. height: 20rpx;
  718. margin: 20rpx 0 0 26rpx;
  719. }
  720. }
  721. .srearch-c {
  722. flex: 1;
  723. height: 58rpx;
  724. font-size: 24rpx;
  725. color: #999999;
  726. line-height: 30rpx;
  727. text-align: left;
  728. }
  729. .srearch-r {
  730. width: 90rpx;
  731. height: 60rpx;
  732. >img {
  733. width: 30rpx;
  734. height: 30rpx;
  735. margin: 14rpx 22rpx 0 30rpx;
  736. }
  737. }
  738. }
  739. }
  740. .level {
  741. width: 750rpx;
  742. height: 80rpx;
  743. background: #FFFFFF;
  744. display: flex;
  745. justify-content: flex-start;
  746. padding: 30rpx 30rpx 0;
  747. box-sizing: border-box;
  748. margin-top: 20rpx;
  749. .level-li {
  750. width: 100rpx;
  751. height: 50rpx;
  752. background: #F5F5F5;
  753. border-radius: 50rpx 50rpx 50rpx 50rpx;
  754. border: 2rpx solid #E0E0E0;
  755. margin-right: 10rpx;
  756. font-size: 24rpx;
  757. color: #333333;
  758. line-height: 50rpx;
  759. text-align: center;
  760. }
  761. .level-r {
  762. display: flex;
  763. justify-content: flex-start;
  764. align-items: center;
  765. margin: 0 20rpx 0 30rpx;
  766. .level-r-A {
  767. border-radius: 50rpx 50rpx 50rpx 50rpx;
  768. border: 1rpx solid #E0E0E0;
  769. width: 100rpx;
  770. height: 60rpx;
  771. background: #E0E0E0;
  772. font-weight: normal;
  773. font-size: 24rpx;
  774. color: #333333;
  775. line-height: 60rpx;
  776. text-align: center;
  777. margin-right: 10rpx;
  778. }
  779. .level-r-B {
  780. border-radius: 50rpx 50rpx 50rpx 50rpx;
  781. border: 1rpx solid #0183FA;
  782. width: 100rpx;
  783. height: 60rpx;
  784. background: #0183FA;
  785. font-weight: normal;
  786. font-size: 24rpx;
  787. color: #FFFFFF;
  788. line-height: 60rpx;
  789. text-align: center;
  790. margin-right: 10rpx;
  791. }
  792. }
  793. #levelColor-A {
  794. background: rgba(255, 0, 0, 0.2);
  795. color: #FF0000;
  796. border: 1rpx solid #FF0000;
  797. }
  798. #levelColor-B {
  799. background: #F5F5F5;
  800. color: #333333;
  801. border: 2rpx solid #E0E0E0;
  802. }
  803. }
  804. .list {
  805. width: 690rpx;
  806. min-height: 765rpx;
  807. background: #FFFFFF;
  808. border-radius: 20rpx 20rpx 20rpx 20rpx;
  809. margin: 20rpx 0 0 30rpx;
  810. .list-li {
  811. display: flex;
  812. justify-content: space-between;
  813. border-bottom: 1rpx solid #E0E0E0;
  814. padding: 0 22rpx 0 28rpx;
  815. box-sizing: border-box;
  816. >view:nth-of-type(1) {
  817. font-size: 30rpx;
  818. color: #333333;
  819. line-height: 80rpx;
  820. text-align: left;
  821. }
  822. >view:nth-of-type(2) {
  823. font-size: 28rpx;
  824. color: #666666;
  825. line-height: 80rpx;
  826. text-align: left;
  827. display: flex;
  828. justify-content: flex-start;
  829. align-items: center;
  830. >img {
  831. width: 24rpx;
  832. height: 24rpx;
  833. margin-left: 8rpx;
  834. }
  835. }
  836. .project_r {
  837. width: 510rpx;
  838. min-height: 80rpx;
  839. display: flex;
  840. justify-content: flex-end;
  841. align-items: center;
  842. padding-left: 20rpx;
  843. box-sizing: border-box;
  844. color: #666;
  845. }
  846. }
  847. .describe {
  848. width: 636rpx;
  849. height: 120rpx;
  850. border-radius: 10rpx 10rpx 10rpx 10rpx;
  851. border: 2rpx solid #E0E0E0;
  852. margin: 20rpx 0 0 28rpx;
  853. padding: 12rpx 16rpx;
  854. box-sizing: border-box;
  855. }
  856. .check-for-img-max-box {
  857. margin: 20px 28rpx;
  858. .left-title-p {
  859. width: 100%;
  860. text-align: left;
  861. font-size: 30rpx;
  862. font-family: PingFang SC-Medium, PingFang SC;
  863. font-weight: 400;
  864. color: #333333;
  865. line-height: 80rpx;
  866. }
  867. .right-img-box {
  868. .img-box {
  869. display inline-block;
  870. height: 150rpx;
  871. width: 150rpx;
  872. position relative;
  873. margin: 0 14rpx 20rpx 0;
  874. border-radius 10rpx;
  875. overflow hidden;
  876. .img-data {
  877. height: 150rpx;
  878. width: 150rpx;
  879. }
  880. .position-img {
  881. position absolute;
  882. right: 0;
  883. top: 0;
  884. width: 36rpx;
  885. height: 36rpx;
  886. }
  887. }
  888. .img-box:nth-of-type(3n+3) {
  889. margin-right: 0rpx;
  890. }
  891. .add-button {
  892. margin: 0 0rpx 20rpx 0;
  893. border-radius 10rpx;
  894. overflow hidden;
  895. display inline-block;
  896. height: 150rpx;
  897. width: 150rpx;
  898. }
  899. }
  900. }
  901. }
  902. /* 隐患整改 */
  903. .hidden {
  904. box-sizing: border-box;
  905. margin: 20rpx 0;
  906. .hidden-li:nth-child(1) {
  907. border-top: none;
  908. }
  909. .lab-info {
  910. background: #FFFFFF;
  911. display: flex;
  912. justify-content: space-between;
  913. border: 2rpx dashed #D8D8D8;
  914. .lab-info-l {
  915. width: 80rpx;
  916. height: 80rpx;
  917. background: #0183FA;
  918. border-radius: 10rpx 10rpx 10rpx 10rpx;
  919. margin-left: 30rpx;
  920. margin-top: 30rpx;
  921. margin-bottom: 42rpx;
  922. }
  923. .finished {
  924. width: 90rpx;
  925. height: 90rpx;
  926. background: #0183FA;
  927. border-radius: 100rpx 100rpx 100rpx 100rpx;
  928. font-size: 24rpx;
  929. color: #FFFFFF;
  930. line-height: 90rpx;
  931. text-align: center;
  932. margin-left: 30rpx;
  933. margin-top: 30rpx;
  934. margin-bottom: 32rpx;
  935. }
  936. .notFinished {
  937. width: 90rpx;
  938. height: 90rpx;
  939. background: #E0E0E0;
  940. border-radius: 100rpx 100rpx 100rpx 100rpx;
  941. font-size: 24rpx;
  942. color: #999999;
  943. line-height: 90rpx;
  944. text-align: center;
  945. margin-left: 30rpx;
  946. margin-top: 30rpx;
  947. margin-bottom: 32rpx;
  948. }
  949. .lab-info-c {
  950. margin: 24rpx 30rpx 0 20rpx;
  951. flex: 1;
  952. .lab-info-c-t {
  953. display: flex;
  954. justify-content: space-between;
  955. .lab-info-c-t-l {
  956. font-size: 30rpx;
  957. color: #333333;
  958. line-height: 42rpx;
  959. text-align: left;
  960. overflow: hidden;
  961. text-overflow: ellipsis;
  962. white-space: nowrap;
  963. }
  964. .lab-info-c-t-r {
  965. display: flex;
  966. justify-content: flex-start;
  967. border-radius: 10rpx 10rpx 10rpx 10rpx;
  968. width: 180rpx;
  969. height: 40rpx;
  970. margin-left: 10rpx;
  971. >text {
  972. display: inline-block;
  973. flex: 1;
  974. text-align: center;
  975. font-size: 24rpx;
  976. line-height: 40rpx;
  977. text-align: center;
  978. }
  979. }
  980. }
  981. .lab-info-c-b {
  982. margin-top: 16rpx;
  983. display: flex;
  984. justify-content: space-between;
  985. >text{
  986. overflow: hidden;
  987. text-overflow: ellipsis;
  988. white-space: nowrap;
  989. }
  990. >text:nth-of-type(1) {
  991. font-size: 30rpx;
  992. color: #666666;
  993. line-height: 30rpx;
  994. text-align: left;
  995. }
  996. >text:nth-of-type(2) {
  997. font-size: 30rpx;
  998. color: #666666;
  999. line-height: 30rpx;
  1000. text-align: left;
  1001. }
  1002. }
  1003. }
  1004. }
  1005. .lab-info:last-of-type {
  1006. border: none;
  1007. }
  1008. .get-data-p {
  1009. height: 100rpx;
  1010. text-align: center;
  1011. .get-data-img {
  1012. width: 30rpx;
  1013. height: 30rpx;
  1014. margin: 0 auto;
  1015. margin-top: 15rpx;
  1016. }
  1017. .get-data-text {
  1018. text-align: center;
  1019. }
  1020. }
  1021. .get-data-null-p {
  1022. height: 100rpx;
  1023. line-height: 100rpx;
  1024. text-align: center;
  1025. }
  1026. }
  1027. #color-A {
  1028. color: #0183FA;
  1029. }
  1030. #color-B {
  1031. color: #FF8C00;
  1032. }
  1033. #color-C {
  1034. color: #16B531;
  1035. }
  1036. .saoCode {
  1037. position: fixed;
  1038. left: 288rpx;
  1039. bottom: 20rpx;
  1040. width: 130rpx;
  1041. height: 130rpx;
  1042. }
  1043. }
  1044. </style>