inspectList.vue 25 KB

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