examineDetail.vue 26 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042
  1. <!-- 安全检查-检查详情 -->
  2. <template>
  3. <view class="examine">
  4. <scroll-view scroll-y @scrolltolower="scrollGet" class="info-max-box">
  5. <view class="basics">
  6. <view class="basics_li">
  7. <text>学院:</text>
  8. <text>{{infoData.collegeName}}</text>
  9. </view>
  10. <view class="basics_li">
  11. <text>实验室:</text>
  12. <text>{{infoData.subjectName}}-{{infoData.roomNumber}}</text>
  13. </view>
  14. <view class="basics_li">
  15. <text>楼栋:</text>
  16. <text>{{infoData.buildName?infoData.buildName:'-'}}</text>
  17. </view>
  18. <view class="basics_li">
  19. <text>检查组织:</text>
  20. <text>{{infoData.checkType==1?'校园巡查':(infoData.checkType==2?'实验室自查':'')}}</text>
  21. </view>
  22. <view class="basics_li">
  23. <text>检查类型:</text>
  24. <text>{{infoData.checkCategory==1?'综合检查':(infoData.checkCategory==2?'专项检查':'')}}</text>
  25. </view>
  26. <view class="basics_li">
  27. <text>检查范围:</text>
  28. <text>{{infoData.checkRange==1?'全校':(infoData.checkRange==2?'学院':'实验室')}}</text>
  29. </view>
  30. <view class="basics_li">
  31. <text>计划标题:</text>
  32. <text>{{infoData.title}}</text>
  33. </view>
  34. <view class="demand" style="border:none;">
  35. <text>检查要求:</text>
  36. <text>{{infoData.checkDemand?infoData.checkDemand:''}}</text>
  37. </view>
  38. </view>
  39. <view class="attachment" v-if="infoData.isAttachment==1">
  40. <view class="attachment_t">
  41. <text>材料附件</text>
  42. <text>点击文件标题查看</text>
  43. </view>
  44. <view class="attachment_li" v-for="(item,index) in attachmentList" :key="index">
  45. <img src="@/pages_safetyExamine/images/icon_djc_wj.png" />
  46. <text @click="attachmentPreview(item)">{{item.fileName}}</text>
  47. <!-- <img class="attachment_li_del" src="@/images/Version3.3.3/icon_fjgk_sc.png"/> -->
  48. </view>
  49. </view>
  50. <view class="basics" v-if="manageStatus==2">
  51. <view class="basics_li">
  52. <text>检查结果:</text>
  53. <text>{{infoData.checkResult==0?'不符合':(infoData.checkResult==1?'符合':'')}}</text>
  54. </view>
  55. <view class="basics_li" v-if="infoData.checkResult==0">
  56. <text>整改期限:</text>
  57. <text>{{infoData.rectifyDeadline}}</text>
  58. </view>
  59. <view class="basics_li" v-if="infoData.checkResult==0">
  60. <text>整改通知:</text>
  61. <text style="color: #0183FA;"
  62. @click="rectifyInform">{{infoData.rectifyNotice == 1?'整改告知书':(infoData.rectifyNotice == 2?'整改通知书':'')}}</text>
  63. </view>
  64. <view class="basics_li">
  65. <text>检查者:</text>
  66. <text>{{infoData.checkUser}}</text>
  67. </view>
  68. <view class="basics_li" style="border:none;">
  69. <text>检查时间:</text>
  70. <text>{{infoData.checkTime}}</text>
  71. </view>
  72. </view>
  73. <!-- 综合检查 -->
  74. <viw v-if="infoData.checkCategory==1">
  75. <view class="inconformity" @click="inconformityFun()" v-if="manageStatus==2 && infoData.checkResult==0">
  76. 不符合项<img v-if="inconformityStatus" src="@/pages_safetyExamine/images/icon_bfhx_xq.png" /><img
  77. v-if="!inconformityStatus" src="@/pages_safetyExamine/images/icon_bfhx_sq.png" /></view>
  78. <view v-for="(item,index) in infoData.checkHazardDtoList" :key="index"
  79. v-if="manageStatus==2 && infoData.checkResult==0">
  80. <view class="danger">
  81. <view class="sort">{{index+1}}</view>
  82. <view class="grade" :style="item.switch?'border-bottom: 1rpx solid #D8D8D8;':'border:none;'">
  83. <text>第{{index+1}}项隐患</text>
  84. <text style="color: #0183FA;"
  85. @click="dangerItem(item)">
  86. {{item.rectifyStatus==1?'已完成':(item.rectifyStatus==2?'待整改':(item.rectifyStatus==3?'待复核':(item.rectifyStatus==4?'暂无法整改':'')))}}>></text>
  87. </view>
  88. <view v-if="item.switch">
  89. <view class="grade">
  90. <text>隐患等级:</text>
  91. <text>{{item.hazardLevel==2?'一般隐患':(item.hazardLevel==1?'重大隐患':(item.hazardLevel==3?'管理问题':''))}}</text>
  92. </view>
  93. <view class="project">
  94. <view class="project_t">检查项目:</view>
  95. <view class="project_b">{{item.hazardCheckProStr}}</view>
  96. <view class="project_b2" v-if="item.hazardCheckCount>0">
  97. 此检查项在当前实验室累计出现{{item.hazardCheckCount}}次隐患</view>
  98. </view>
  99. <view class="project">
  100. <view class="project_t">检查要点:</view>
  101. <view class="project_b">{{item.hazardCheckPoint}}</view>
  102. </view>
  103. <view class="project">
  104. <view class="project_t">隐患描述:</view>
  105. <view class="project_b">{{item.hazardDescribe}}</view>
  106. </view>
  107. <view class="picture">
  108. <view class="picture_t">隐患照片</view>
  109. <view class="picture_b" @click="lockImg(item.uploadDtoList)">
  110. <img :src="baseUrl+imgItem.fileUrl" v-for="(imgItem,imgIndex) in item.uploadDtoList"
  111. :key="imgIndex" />
  112. </view>
  113. </view>
  114. </view>
  115. </view>
  116. <view class="pack_up" @click="switchFun(item)">{{item.switch?'收起':'展开'}}<img v-if="item.switch"
  117. src="@/pages_safetyExamine/images/icon_06_1.png" /><img v-if="!item.switch"
  118. src="@/pages_safetyExamine/images/icon_06.png" /></view>
  119. </view>
  120. </viw>
  121. <!-- 专项检查 -->
  122. <view v-if="infoData.checkCategory==2 && manageStatus==2"
  123. v-for="(itemAll,indexAll) in infoData.checkHazardInfoVoList" :key="indexAll">
  124. <view class="inconformity_tow" @click="inconformityFun2(itemAll)">{{itemAll.hazardName}}<img
  125. v-if="inconformityStatus2" src="@/pages_safetyExamine/images/icon_bfhx_xq.png" /><img
  126. v-if="!inconformityStatus2" src="@/pages_safetyExamine/images/icon_bfhx_sq.png" /></view>
  127. <view class="danger_border">
  128. <view class="ident">检查项目</view>
  129. <view class="danger special_danger" v-for="(item,index) in itemAll.checkHazardDtoList" :key="index">
  130. <view class="grade" :style="item.switch?'border-bottom: 1rpx solid #D8D8D8;':'border:none;'">
  131. <view class="sort">{{index+1}}</view>
  132. <text>第{{index+1}}项隐患</text>
  133. <viwe :class="item.checkFlag==0?'noConform':'isConform'">{{item.checkFlag==0?'不符合':'符合'}}
  134. </viwe>
  135. <text style="color: #0183FA;" v-if="item.checkFlag==0"
  136. @click="dangerItem(item)">
  137. {{item.rectifyStatus==1?'已完成':(item.rectifyStatus==2?'待整改':(item.rectifyStatus==3?'待复核':(item.rectifyStatus==4?'暂无法整改':'')))}}>></text>
  138. </view>
  139. <view class="small_items">{{item.hazardCheckProStr}}</view>
  140. <view v-if="item.switch">
  141. <view class="frequency" v-if="item.hazardCheckCount>0">
  142. 此检查项在当前实验室累计出现{{item.hazardCheckCount}}次隐患</view>
  143. <view class="grading">
  144. <text>隐患等级:</text>
  145. <text>{{item.hazardLevel==2?'一般隐患':(item.hazardLevel==1?'重大隐患':(item.hazardLevel==3?'管理问题':''))}}</text>
  146. </view>
  147. <view class="project">
  148. <view class="project_t">隐患描述:</view>
  149. <view class="project_b">{{item.hazardDescribe}}</view>
  150. </view>
  151. <view class="picture">
  152. <view class="picture_t">隐患照片</view>
  153. <view class="picture_b" @click="lockImg(item.uploadDtoList)">
  154. <img :src="baseUrl+imgItem.fileUrl" v-for="(imgItem,imgIndex) in item.uploadDtoList"
  155. :key="imgIndex" />
  156. </view>
  157. </view>
  158. </view>
  159. <view class="pack_up" v-if="item.checkFlag==0" @click="switchFun(item)">
  160. {{item.switch?'收起':'展开'}}<img v-if="item.switch"
  161. src="@/pages_safetyExamine/images/icon_06_1.png" /><img v-if="!item.switch"
  162. src="@/pages_safetyExamine/images/icon_06.png" /></view>
  163. </view>
  164. </view>
  165. </view>
  166. </scroll-view>
  167. <view class="report" @click="rectifyReport" v-if="isEndProcess==1 && infoData.checkResult==0">整改报告</view>
  168. <view class="bottom_btn" v-if="manageStatus==0 && isSelfData==1" @click="handleClick('','startInspect')">开始检查
  169. </view>
  170. </view>
  171. </template>
  172. <script>
  173. import {
  174. config
  175. } from '@/api/request/config.js'
  176. import {
  177. findCheckManage,
  178. findByPlanIdAttachment
  179. } from '@/pages_safetyExamine/api/index.js'
  180. export default {
  181. name: "rectifyList",
  182. components: {
  183. },
  184. data() {
  185. return {
  186. baseUrl: config.base_url,
  187. manageStatus: 0, //0 待检查 1 检查中 2已检查
  188. pageType: 0,
  189. inconformityStatus: false,
  190. infoData: {},
  191. isSelfData: '',
  192. attachmentList: [],
  193. checkCategory: '2', //检查类型 1综合检查 2专项检查
  194. inconformityStatus2: false,
  195. isEndProcess: '',
  196. }
  197. },
  198. onLoad(option) {
  199. if (option.id) {
  200. this.id = option.id
  201. this.isEndProcess = option.isEndProcess
  202. this.findCheckManage()
  203. }
  204. if (option.manageStatus) { //检查状态
  205. this.manageStatus = option.manageStatus;
  206. }
  207. if (option.isSelfData) { //0没有权限 1 有权限
  208. this.isSelfData = option.isSelfData;
  209. }
  210. if (option.manageStatus == 0 || option.manageStatus == 1) {
  211. uni.setNavigationBarTitle({
  212. title: '待检查'
  213. })
  214. } else if (option.manageStatus == 2) {
  215. uni.setNavigationBarTitle({
  216. title: '已检查'
  217. })
  218. }
  219. },
  220. onShow() {
  221. },
  222. mounted() {
  223. },
  224. methods: {
  225. //滚动事件
  226. scrollGet() {
  227. },
  228. //开展检查
  229. handleClick(row, doType) {
  230. if (doType == 'startInspect') {
  231. uni.navigateTo({
  232. url: '/pages_safetyExamine/views/examineManage/examineAdd?id=' + this.id
  233. });
  234. }
  235. },
  236. //根据计划id查询附件列表
  237. async findByPlanIdAttachment() {
  238. let _this = this;
  239. const {
  240. data
  241. } = await findByPlanIdAttachment({
  242. checkPlanId: this.infoData.checkPlanId
  243. });
  244. if (data.code == 200) {
  245. _this.attachmentList = data.data;
  246. }
  247. },
  248. //详情
  249. async findCheckManage() {
  250. let _this = this;
  251. const {
  252. data
  253. } = await findCheckManage({
  254. id: this.id
  255. });
  256. if (data.code == 200) {
  257. if (data.data.checkCategory == 1) { //综合检查
  258. data.data.checkHazardDtoList.forEach(function(item) {
  259. item.switch = false;
  260. })
  261. } else if (data.data.checkCategory == 2) { //专项检查
  262. data.data.checkHazardInfoVoList.forEach(function(item) {
  263. item.checkHazardDtoList.forEach(function(item2) {
  264. item2.switch = false;
  265. })
  266. })
  267. }
  268. this.infoData = data.data;
  269. if (data.data.isAttachment == 1) { //0没有附件 1有附件
  270. this.findByPlanIdAttachment()
  271. }
  272. }
  273. },
  274. //附件查看
  275. attachmentPreview(item) {
  276. uni.showLoading({
  277. title: '下载中'
  278. });
  279. wx.downloadFile({
  280. url: config.base_url + item.fileUrl,
  281. header: {
  282. Authorization: uni.getStorageSync('token')
  283. },
  284. success: function(res) {
  285. uni.hideLoading();
  286. const filePath = res.tempFilePath
  287. wx.openDocument({
  288. filePath: filePath,
  289. success: function(res) {
  290. console.log('打开文档成功')
  291. }
  292. })
  293. },
  294. fail: function(res) {
  295. uni.hideLoading();
  296. uni.showToast({
  297. title: '下载失败',
  298. icon: "none",
  299. mask: true,
  300. duration: 2000
  301. });
  302. }
  303. })
  304. },
  305. //查看图片
  306. lockImg(list) {
  307. console.log(list)
  308. if (!list[0]) {
  309. return
  310. }
  311. let urlList = [];
  312. for (let i = 0; i < list.length; i++) {
  313. urlList.push(this.baseUrl + list[i].fileUrl)
  314. }
  315. wx.previewImage({
  316. urls: urlList, //需要预览的图片http链接列表,多张的时候,url直接写在后面就行了
  317. current: '', // 当前显示图片的http链接,默认是第一个
  318. success: function(res) {},
  319. fail: function(res) {},
  320. complete: function(res) {},
  321. })
  322. },
  323. //隐患项跳转详情
  324. dangerItem(row) {
  325. uni.navigateTo({
  326. url: '/pages_safetyExamine/views/dangerManage/dangerDetail?item=' + encodeURIComponent(JSON
  327. .stringify(row))
  328. })
  329. },
  330. //隐患项收起展开
  331. inconformityFun() {
  332. this.inconformityStatus = !this.inconformityStatus;
  333. if (this.inconformityStatus) {
  334. this.infoData.checkHazardDtoList.forEach(function(item) {
  335. item.switch = true;
  336. })
  337. } else {
  338. this.infoData.checkHazardDtoList.forEach(function(item) {
  339. item.switch = false;
  340. })
  341. }
  342. },
  343. //专项隐患项收起展开
  344. inconformityFun2(itemAll) {
  345. this.inconformityStatus2 = !this.inconformityStatus2;
  346. if (this.inconformityStatus2) {
  347. itemAll.checkHazardDtoList.forEach(function(item) {
  348. item.switch = true;
  349. })
  350. } else {
  351. itemAll.checkHazardDtoList.forEach(function(item) {
  352. item.switch = false;
  353. })
  354. }
  355. },
  356. //隐患小项收起展开
  357. switchFun(item) {
  358. item.switch = !item.switch
  359. },
  360. //整改通知
  361. rectifyInform() { //rectifyNotice 整改通知(1整改告知书 2整改通知书)
  362. if (this.infoData.rectifyNotice == 1) { //1整改告知书
  363. this.genReport(this.infoData.id)
  364. } else if (this.infoData.rectifyNotice == 2) { //2整改通知书
  365. this.genNotice(this.infoData.id)
  366. }
  367. },
  368. //整改报告
  369. rectifyReport() {
  370. uni.showLoading({
  371. title: '下载中'
  372. });
  373. wx.downloadFile({
  374. url: config.base_url + '/zd-security/checkRectify/genReport/?id='+this.infoData.id+'&fileUrl='+uni.getStorageSync('fileBrowseEnvironment'),
  375. header: {
  376. Authorization: uni.getStorageSync('token')
  377. },
  378. success: function(res) {
  379. const fileManager = wx.getFileSystemManager()
  380. const filePath = wx.env.USER_DATA_PATH + '/(整改报告).docx'
  381. fileManager.saveFile({
  382. tempFilePath: res.tempFilePath,
  383. filePath,
  384. success: () => {
  385. uni.hideLoading();
  386. wx.openDocument({
  387. filePath: filePath,
  388. showMenu: true,
  389. fileType: 'docx'
  390. })
  391. },
  392. fail: function(res) {
  393. uni.hideLoading();
  394. uni.showToast({
  395. title: '下载失败',
  396. icon: "none",
  397. mask: true,
  398. duration: 2000
  399. });
  400. }
  401. })
  402. },
  403. fail: function(res) {
  404. uni.hideLoading();
  405. uni.showToast({
  406. title: '下载失败',
  407. icon: "none",
  408. mask: true,
  409. duration: 2000
  410. });
  411. }
  412. })
  413. },
  414. //整改通知书
  415. genNotice(id) {
  416. uni.showLoading({
  417. title: '下载中'
  418. });
  419. wx.downloadFile({
  420. url: config.base_url + '/zd-security/checkManage/getRectifyAdviceNote/?checkMangeId='+this.infoData.id+'&fileUrl='+uni.getStorageSync('fileBrowseEnvironment'),
  421. header: {
  422. Authorization: uni.getStorageSync('token')
  423. },
  424. success: function(res) {
  425. const fileManager = wx.getFileSystemManager()
  426. const filePath = wx.env.USER_DATA_PATH + '/(整改通知书).docx'
  427. fileManager.saveFile({
  428. tempFilePath: res.tempFilePath,
  429. filePath,
  430. success: () => {
  431. uni.hideLoading();
  432. wx.openDocument({
  433. filePath: filePath,
  434. showMenu: true,
  435. fileType: 'docx'
  436. })
  437. },
  438. fail: function(res) {
  439. uni.hideLoading();
  440. uni.showToast({
  441. title: '下载失败',
  442. icon: "none",
  443. mask: true,
  444. duration: 2000
  445. });
  446. }
  447. })
  448. },
  449. fail: function(res) {
  450. uni.hideLoading();
  451. uni.showToast({
  452. title: '下载失败',
  453. icon: "none",
  454. mask: true,
  455. duration: 2000
  456. });
  457. }
  458. })
  459. },
  460. //整改告知书
  461. genReport(id) {
  462. uni.showLoading({
  463. title: '下载中'
  464. });
  465. wx.downloadFile({
  466. url: config.base_url + '/zd-security/checkManage/getRectifyNotification/?checkMangeId='+this.infoData.id+'&fileUrl='+uni.getStorageSync('fileBrowseEnvironment'),
  467. header: {
  468. Authorization: uni.getStorageSync('token')
  469. },
  470. success: function(res) {
  471. const fileManager = wx.getFileSystemManager()
  472. const filePath = wx.env.USER_DATA_PATH + '/整改报告.docx'
  473. fileManager.saveFile({
  474. tempFilePath: res.tempFilePath,
  475. filePath,
  476. success: () => {
  477. uni.hideLoading();
  478. wx.openDocument({
  479. filePath: filePath,
  480. showMenu: true,
  481. fileType: 'docx'
  482. })
  483. },
  484. fail: function(res) {
  485. uni.hideLoading();
  486. uni.showToast({
  487. title: '下载失败',
  488. icon: "none",
  489. mask: true,
  490. duration: 2000
  491. });
  492. }
  493. })
  494. },
  495. fail: function(res) {
  496. uni.hideLoading();
  497. uni.showToast({
  498. title: '下载失败',
  499. icon: "none",
  500. mask: true,
  501. duration: 2000
  502. });
  503. }
  504. })
  505. },
  506. }
  507. }
  508. </script>
  509. <style lang="stylus" scoped>
  510. .examine {
  511. height: 100%;
  512. display flex;
  513. .info-max-box {
  514. flex: 1;
  515. overflow: scroll;
  516. padding-bottom: 140rpx;
  517. }
  518. .basics {
  519. width: 690rpx;
  520. background: #FFFFFF;
  521. border-radius: 20rpx;
  522. padding: 30rpx 30rpx 32rpx;
  523. box-sizing: border-box;
  524. margin: 20rpx 30rpx;
  525. .basics_li {
  526. height: 80rpx;
  527. display: flex;
  528. justify-content: space-between;
  529. border-bottom: 1rpx solid #D8D8D8;
  530. >text:nth-of-type(1) {
  531. font-size: 28rpx;
  532. font-family: PingFang SC-Medium, PingFang SC;
  533. font-weight: 400;
  534. color: #666666;
  535. line-height: 80rpx;
  536. width: 140rpx;
  537. }
  538. >text:nth-of-type(2) {
  539. flex: 1;
  540. font-size: 28rpx;
  541. font-family: PingFang SC-Medium, PingFang SC;
  542. font-weight: 400;
  543. color: #333333;
  544. line-height: 80rpx;
  545. text-align: right;
  546. white-space: nowrap;
  547. overflow: hidden;
  548. text-overflow: ellipsis;
  549. }
  550. }
  551. .demand {
  552. >text {
  553. display: block;
  554. }
  555. >text:nth-of-type(1) {
  556. font-size: 28rpx;
  557. font-family: PingFang SC-Medium, PingFang SC;
  558. font-weight: 400;
  559. color: #666666;
  560. line-height: 70rpx;
  561. width: 140rpx;
  562. }
  563. >text:nth-of-type(2) {
  564. font-size: 28rpx;
  565. font-family: PingFang SC-Medium, PingFang SC;
  566. font-weight: 400;
  567. color: #333333;
  568. line-height: 40rpx;
  569. text-align: left;
  570. }
  571. }
  572. }
  573. .attachment {
  574. width: 690rpx;
  575. background: #FFFFFF;
  576. border-radius: 20rpx;
  577. margin: 20rpx 30rpx 0;
  578. padding-bottom: 32rpx;
  579. box-sizing: border-box;
  580. .attachment_t {
  581. border-bottom: 1rpx solid #D8D8D8;
  582. >text:nth-of-type(1) {
  583. font-size: 30rpx;
  584. font-family: PingFang SC-Medium, PingFang SC;
  585. font-weight: 400;
  586. color: #333333;
  587. line-height: 110rpx;
  588. margin-left: 28rpx;
  589. }
  590. >text:nth-of-type(2) {
  591. font-size: 30rpx;
  592. font-family: PingFang SC-Medium, PingFang SC;
  593. font-weight: 400;
  594. color: #999999;
  595. line-height: 110rpx;
  596. margin-left: 24rpx;
  597. }
  598. }
  599. .attachment_li {
  600. height: 40rpx;
  601. display: flex;
  602. justify-content: flex-start;
  603. align-items: center;
  604. margin-top: 32rpx;
  605. >img {
  606. width: 30rpx;
  607. height: 26rpx;
  608. margin-right: 20rpx;
  609. margin-left: 50rpx;
  610. }
  611. >text {
  612. flex: 1;
  613. font-size: 28rpx;
  614. font-family: PingFang SC-Medium, PingFang SC;
  615. font-weight: 400;
  616. color: #0183FA;
  617. line-height: 40rpx;
  618. white-space: nowrap;
  619. overflow: hidden;
  620. text-overflow: ellipsis;
  621. }
  622. .attachment_li_del {
  623. width: 30rpx;
  624. height: 30rpx;
  625. }
  626. }
  627. }
  628. .inconformity {
  629. width: 690rpx;
  630. height: 100rpx;
  631. background: #FFFFFF;
  632. border-radius: 20rpx 20rpx 20rpx 20rpx;
  633. margin: 20rpx 30rpx;
  634. font-size: 30rpx;
  635. font-family: PingFang SC-Medium, PingFang SC;
  636. font-weight: 400;
  637. color: #333333;
  638. line-height: 100rpx;
  639. text-align: center;
  640. display: flex;
  641. justify-content: center;
  642. align-items: center;
  643. >img {
  644. width: 30rpx;
  645. height: 26rpx;
  646. margin-left: 20rpx;
  647. }
  648. }
  649. /* 专项检查 */
  650. .inconformity_tow {
  651. width: 690rpx;
  652. height: 100rpx;
  653. background: #FFFFFF;
  654. border-radius: 20rpx 20rpx 20rpx 20rpx;
  655. margin: 20rpx 30rpx;
  656. font-size: 30rpx;
  657. font-family: PingFang SC-Medium, PingFang SC;
  658. font-weight: 400;
  659. color: #333333;
  660. line-height: 100rpx;
  661. text-align: center;
  662. display: flex;
  663. justify-content: space-between;
  664. align-items: center;
  665. padding: 0 30rpx;
  666. box-sizing: border-box;
  667. >img {
  668. width: 30rpx;
  669. height: 26rpx;
  670. margin-left: 20rpx;
  671. }
  672. }
  673. .danger {
  674. width: 690rpx;
  675. background: #FFFFFF;
  676. border-radius: 20rpx;
  677. padding: 15rpx 30rpx 15rpx;
  678. box-sizing: border-box;
  679. margin: 20rpx 30rpx;
  680. position: relative;
  681. .sort {
  682. width: 40rpx;
  683. height: 40rpx;
  684. background: #0183FA;
  685. border-radius: 20rpx 0rpx 10rpx 0rpx;
  686. font-size: 30rpx;
  687. font-family: PingFang SC-Medium, PingFang SC;
  688. font-weight: 400;
  689. color: #FFFFFF;
  690. line-height: 40rpx;
  691. text-align: center;
  692. position: absolute;
  693. left: 0;
  694. top: 0;
  695. }
  696. .danger_title {
  697. font-size: 30rpx;
  698. font-family: PingFang SC-Medium, PingFang SC;
  699. font-weight: 400;
  700. color: #333333;
  701. line-height: 80rpx;
  702. border-bottom: 1rpx solid #D8D8D8;
  703. }
  704. .grade {
  705. height: 80rpx;
  706. display: flex;
  707. justify-content: space-between;
  708. border-bottom: 1rpx solid #D8D8D8;
  709. >text:nth-of-type(1) {
  710. font-size: 28rpx;
  711. font-family: PingFang SC-Medium, PingFang SC;
  712. font-weight: 400;
  713. color: #666666;
  714. line-height: 80rpx;
  715. width: 140rpx;
  716. }
  717. >text:nth-of-type(2) {
  718. flex: 1;
  719. font-size: 28rpx;
  720. font-family: PingFang SC-Medium, PingFang SC;
  721. font-weight: 400;
  722. color: #333333;
  723. line-height: 80rpx;
  724. text-align: right;
  725. }
  726. }
  727. .grading {
  728. height: 80rpx;
  729. display: flex;
  730. justify-content: space-between;
  731. >text:nth-of-type(1) {
  732. font-size: 28rpx;
  733. font-family: PingFang SC-Medium, PingFang SC;
  734. font-weight: 400;
  735. color: #666666;
  736. line-height: 80rpx;
  737. width: 140rpx;
  738. }
  739. >text:nth-of-type(2) {
  740. flex: 1;
  741. font-size: 28rpx;
  742. font-family: PingFang SC-Medium, PingFang SC;
  743. font-weight: 400;
  744. color: #333333;
  745. line-height: 80rpx;
  746. text-align: left;
  747. background: #F5F5F5;
  748. border-radius: 10rpx 10rpx 10rpx 10rpx;
  749. padding-left: 20rpx;
  750. box-sizing: border-box;
  751. }
  752. }
  753. .small_items {
  754. min-height: 158rpx;
  755. font-size: 28rpx;
  756. font-family: PingFang SC-Medium, PingFang SC;
  757. font-weight: 400;
  758. color: #333333;
  759. line-height: 40rpx;
  760. padding: 20rpx 14rpx;
  761. box-sizing: border-box;
  762. border-radius: 0rpx 0rpx 20rpx 20rpx;
  763. opacity: 1;
  764. border: 1rpx solid #E0E0E0;
  765. border-top: none;
  766. }
  767. .frequency {
  768. font-size: 26rpx;
  769. font-family: PingFang SC-Medium, PingFang SC;
  770. font-weight: 400;
  771. color: #666666;
  772. line-height: 26rpx;
  773. margin-top: 14rpx;
  774. text-align: right;
  775. margin-bottom: 14rpx;
  776. }
  777. .project {
  778. .project_t {
  779. font-size: 30rpx;
  780. font-family: PingFang SC-Medium, PingFang SC;
  781. font-weight: 400;
  782. color: #333333;
  783. line-height: 80rpx;
  784. }
  785. .project_b {
  786. min-height: 158rpx;
  787. font-size: 28rpx;
  788. font-family: PingFang SC-Medium, PingFang SC;
  789. font-weight: 400;
  790. color: #333333;
  791. line-height: 40rpx;
  792. padding: 20rpx 14rpx;
  793. box-sizing: border-box;
  794. background: #F5F5F5;
  795. border-radius: 20rpx 20rpx 20rpx 20rpx;
  796. }
  797. .project_b2 {
  798. font-size: 26rpx;
  799. font-family: PingFang SC-Medium, PingFang SC;
  800. font-weight: 400;
  801. color: #666666;
  802. line-height: 26rpx;
  803. margin-top: 14rpx;
  804. text-align: right;
  805. }
  806. }
  807. .picture {
  808. .picture_t {
  809. font-size: 30rpx;
  810. font-family: PingFang SC-Medium, PingFang SC;
  811. font-weight: 400;
  812. color: #333333;
  813. line-height: 80rpx;
  814. }
  815. .picture_b {
  816. display: flex;
  817. justify-content: flex-start;
  818. flex-wrap: wrap;
  819. >img {
  820. width: 200rpx;
  821. height: 200rpx;
  822. border-radius: 10rpx 10rpx 10rpx 10rpx;
  823. margin-right: 14rpx;
  824. margin-bottom: 10rpx;
  825. }
  826. >img:nth-of-type(3n+3) {
  827. margin-right: 0rpx;
  828. }
  829. }
  830. }
  831. }
  832. .danger_border {
  833. border-radius: 20rpx;
  834. width: 690rpx;
  835. background: #FFFFFF;
  836. margin: 0rpx 30rpx 20rpx;
  837. overflow: hidden;
  838. }
  839. .special_danger {
  840. width: auto;
  841. background: #FFFFFF;
  842. padding: 0;
  843. box-sizing: border-box;
  844. margin: 0 30rpx 12rpx;
  845. border-radius: 0;
  846. .grade {
  847. height: 80rpx;
  848. display: flex;
  849. justify-content: flex-start;
  850. border-bottom: 1rpx solid #D8D8D8;
  851. position: relative;
  852. background: #F5F5F5;
  853. border-radius: 20rpx 20rpx 0rpx 0rpx;
  854. .sort {
  855. width: 40rpx;
  856. height: 40rpx;
  857. background: #0183FA;
  858. border-radius: 20rpx 0rpx 10rpx 0rpx;
  859. font-size: 30rpx;
  860. font-family: PingFang SC-Medium, PingFang SC;
  861. font-weight: 400;
  862. color: #FFFFFF;
  863. line-height: 40rpx;
  864. text-align: center;
  865. position: absolute;
  866. left: 0;
  867. top: 0;
  868. }
  869. .isConform {
  870. width: 100rpx;
  871. height: 40rpx;
  872. font-size: 24rpx;
  873. font-family: PingFang SC-Medium, PingFang SC;
  874. font-weight: 400;
  875. color: #0183FA;
  876. line-height: 36rpx;
  877. background: #C4DEF6;
  878. text-align: center;
  879. border-radius: 20rpx;
  880. margin-left: 12rpx;
  881. margin-top: 20rpx;
  882. }
  883. .noConform {
  884. width: 100rpx;
  885. height: 40rpx;
  886. font-size: 24rpx;
  887. font-family: PingFang SC-Medium, PingFang SC;
  888. font-weight: 400;
  889. color: #FF0000;
  890. line-height: 36rpx;
  891. background: #F7C4C4;
  892. text-align: center;
  893. border-radius: 20rpx;
  894. margin-left: 12rpx;
  895. margin-top: 20rpx;
  896. }
  897. >text:nth-of-type(1) {
  898. font-size: 28rpx;
  899. font-family: PingFang SC-Medium, PingFang SC;
  900. font-weight: 400;
  901. color: #666666;
  902. line-height: 80rpx;
  903. width: 140rpx;
  904. margin-left: 66rpx;
  905. }
  906. >text:nth-of-type(2) {
  907. flex: 1;
  908. font-size: 28rpx;
  909. font-family: PingFang SC-Medium, PingFang SC;
  910. font-weight: 400;
  911. color: #333333;
  912. line-height: 80rpx;
  913. text-align: right;
  914. margin-right: 30rpx;
  915. }
  916. }
  917. }
  918. .ident {
  919. font-size: 30rpx;
  920. font-family: PingFang SC-Medium, PingFang SC;
  921. font-weight: 400;
  922. color: #666666;
  923. line-height: 42rpx;
  924. margin: 34rpx 30rpx;
  925. }
  926. .pack_up {
  927. font-size: 30rpx;
  928. font-family: PingFang SC-Medium, PingFang SC;
  929. font-weight: 400;
  930. color: #666666;
  931. line-height: 80rpx;
  932. display: flex;
  933. justify-content: center;
  934. align-items: center;
  935. >img {
  936. width: 14rpx;
  937. height: 8rpx;
  938. margin-left: 22rpx;
  939. }
  940. }
  941. .report {
  942. width: 153rpx;
  943. height: 50rpx;
  944. background: #0183FA;
  945. border-radius: 25rpx 0rpx 0rpx 25rpx;
  946. font-size: 26rpx;
  947. font-family: Source Han Sans CN-Regular, Source Han Sans CN;
  948. font-weight: 400;
  949. color: #FFFFFF;
  950. line-height: 50rpx;
  951. position: fixed;
  952. top: 180rpx;
  953. right: 0;
  954. text-align: center;
  955. }
  956. .bottom_btn {
  957. position: fixed;
  958. bottom: 26rpx;
  959. left: 30rpx;
  960. font-size: 30rpx;
  961. font-family: PingFang SC-Medium, PingFang SC;
  962. font-weight: 400;
  963. color: #FFFFFF;
  964. line-height: 90rpx;
  965. width: 690rpx;
  966. height: 90rpx;
  967. background: #0183FA;
  968. border-radius: 20rpx;
  969. text-align: center;
  970. }
  971. }
  972. </style>