hiddenDangerRectification.vue 26 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012
  1. <!-- 检查项隐患项整改 -->
  2. <template>
  3. <view class="snapshotDetail">
  4. <scroll-view scroll-y @scrolltolower="scrollGet" class="info-max-box">
  5. <view class="tip">整改期限{{optionData.checkPlanSetVoList.rectifyDeadline}}{{optionData.checkPlanSetVoList.overdueUnrectify?'(逾期未完成整改关闭实验室)':''}}</view>
  6. <view class="items" v-if="newData.hazardCheckName!=''">
  7. <view class="items-t">
  8. <view class="items-t-r">{{newData.hazardCheckCode}} {{newData.hazardCheckName}}</view>
  9. </view>
  10. <view class="items-b">< {{newData.hazardCheckCode2}}
  11. {{newData.hazardCheckName2}} < {{newData.hazardCheckCode1}} {{newData.hazardCheckName1}}
  12. </view>
  13. </view>
  14. <view class="items-number" v-if="newData.hazardCheckName!=''" @click="hiddenDangerClick()">
  15. 此检查项在当前实验室累计出现<text>{{hazardCheckNum}}</text>次隐患</view>
  16. <view class="list">
  17. <view class="list-li" @click="checkCollapse()">
  18. <view>检查隐患</view>
  19. <view :id="newData.checkFlag?'fontColor-B':'fontColor-A'">
  20. {{newData.checkFlag?'符合':'不符合 '}}
  21. <img v-if="!newData.checkCollapse" :src="imagesUrl('commonality/icon_06.png')">
  22. <img v-if="newData.checkCollapse" :src="imagesUrl('commonality/icon_06_1.png')">
  23. </view>
  24. </view>
  25. <view v-if="newData.checkCollapse">
  26. <view class="hidden-content" v-if="!newData.checkFlag">{{newData.hazardDescribe}}
  27. </view>
  28. <view class="photo" @click="lockImg(newData.yhDtoList)">
  29. <img v-for="(item,index) in newData.yhDtoList" :src="baseUrl+item.fileUrl">
  30. </view>
  31. <!-- <view class="list-li">
  32. <view>姓名:</view>
  33. <view>{{newData.checkUserName}}</view>
  34. </view> -->
  35. <view class="list-li">
  36. <view>检查时间</view>
  37. <view>{{newData.checkTime}}</view>
  38. </view>
  39. <!-- <view class="voice">
  40. <view class="voice_t">
  41. <view class="voice_t_t" v-if="!newData.voiceList[0]"><text>语音备注:</text><text></text></view>
  42. <view class="voice_t_b" v-if="newData.voiceList[0]">语音备注:({{newData.voiceList.length}})
  43. </view>
  44. </view>
  45. <view class="voice_b" v-if="newData.voiceList[0]"
  46. v-for="(voiceItem,voiceIndex) in newData.voiceList" :key="voiceIndex">
  47. <view class="voice_b_l" @tap="voicePlay(voiceItem.fileUrl)">
  48. <img class="add-button" :src="imagesUrl('safetyCheck/icon_yybz_yy.png')" />
  49. {{voiceItem.fileLength}}″
  50. </view>
  51. </view>
  52. </view> -->
  53. </view>
  54. <view v-if="pageType==1 || pageType==2" v-for="(item,index) in newData.checkRectifyVoList" :key="index">
  55. <view class="list-li" v-if="item.rectifyTime" @click="rectifyCollapse(item)">
  56. <view>隐患整改</view>
  57. <view :id="item.rectifyResult?'fontColor-B':(item.rectifyResult?'fontColor-C':'')">
  58. {{item.rectifyResult?'已整改':(item.rectifyResult?'暂无法整改':'')}}
  59. <img v-if="!item.rectifyCollapse" :src="imagesUrl('commonality/icon_06.png')">
  60. <img v-if="item.rectifyCollapse" :src="imagesUrl('commonality/icon_06_1.png')">
  61. </view>
  62. </view>
  63. <view v-if="item.rectifyCollapse && item.rectifyTime">
  64. <view v-if="item.rectifyMeasure" class="hidden-content">{{item.rectifyMeasure}}
  65. </view>
  66. <view class="photo" @click="lockImg(item.rectifyUploadList)">
  67. <img v-for="(item2,index2) in item.rectifyUploadList" :src="baseUrl+item2.fileUrl">
  68. </view>
  69. <view class="list-li">
  70. <view>姓名:</view>
  71. <view>{{item.rectifyName}}</view>
  72. </view>
  73. <view class="list-li">
  74. <view>整改时间</view>
  75. <view>{{item.rectifyTime}}</view>
  76. </view>
  77. </view>
  78. <!----复查相关暂时注释----开始---->
  79. <!-- <view class="list-li" v-if="item.reviewTime" @click="reviewCollapse(item)">
  80. <view>复查验证</view>
  81. <view :id="item.examineResult?'fontColor-B':'fontColor-C'">
  82. {{item.examineResult?'复查完毕':'退回整改'}}
  83. <img v-if="!item.reviewCollapse" :src="imagesUrl('commonality/icon_06.png')">
  84. <img v-if="item.reviewCollapse" :src="imagesUrl('commonality/icon_06_1.png')">
  85. </view>
  86. </view>
  87. <view v-if="item.reviewCollapse && item.reviewTime">
  88. <view v-if="item.examineOpinion" class="hidden-content" >{{item.examineOpinion}}
  89. </view>
  90. <view class="photo" v-if="item.examineUploadList[0]" @click="lockImg(item.examineUploadList)">
  91. <img v-for="(item3,index3) in item.examineUploadList" :src="baseUrl+item3.fileUrl">
  92. </view>
  93. <view class="list-li">
  94. <view>复查时间</view>
  95. <view>{{item.reviewTime}}</view>
  96. </view>
  97. </view> -->
  98. <!----复查相关暂时注释----结束---->
  99. </view>
  100. <view class="list-li">
  101. <!----复查相关暂时注释----开始---->
  102. <!-- <view v-if="pageType==1">复查验证</view>
  103. <view v-if="pageType==2">隐患整改({{fontNum}}/500)</view> -->
  104. <!----复查相关暂时注释----结束---->
  105. <view>隐患整改({{fontNum}}/500)</view>
  106. <view>
  107. <img :src="imagesUrl('commonality/icon_06.png')">
  108. </view>
  109. </view>
  110. <!----复查相关暂时注释----开始---->
  111. <!-- <textarea v-if="pageType==1" class="describe" type="text" v-model="form.examineOpinion" maxlength="500"
  112. placeholder="请填写隐患描述"
  113. placeholder-style="font-size:24rpx;color:#999;"></textarea>
  114. <textarea v-if="pageType==2" class="describe" type="text" v-model="form.rectifyMeasure" maxlength="500"
  115. @input="sumfontnum" placeholder="立整立改的请填写相关文字及整改前后照片对比等,不能立整立改的请说明原因并附整改计划、措施等"
  116. placeholder-style="font-size:24rpx;color:#999;"></textarea> -->
  117. <!----复查相关暂时注释----结束---->
  118. <textarea class="describe" type="text" v-model="form.rectifyMeasure" maxlength="500"
  119. @input="sumfontnum" placeholder="立整立改的请填写相关文字及整改前后照片对比等,不能立整立改的请说明原因并附整改计划、措施等"
  120. placeholder-style="font-size:24rpx;color:#999;"></textarea>
  121. <view class="check-for-img-max-box">
  122. <view class="left-title-p"></view>
  123. <view class="right-img-box">
  124. <view class="img-box" v-for="(imgUrl,imgIndex) in form.imgDtoList" :key="imgIndex">
  125. <img class="img-data" :src="baseUrl+imgUrl.fileUrl">
  126. <img class="position-img" :src="imagesUrl('commonality/icon_ssp_closure.png')"
  127. @click="delImg(imgIndex)">
  128. </view>
  129. <img class="add-button" :src="imagesUrl('safetyCheck/img_ssp_pz@1x.png')"
  130. @click="selectImage()" v-if="form.imgDtoList.length<6">
  131. </view>
  132. </view>
  133. <!-- <view class="list-li-tow">
  134. <view>整改方案(上传文件)</view>
  135. <view @click="selectFile()">
  136. <img :src="imagesUrl('safetyCheck/icon_aqjc_sc.png')">
  137. </view>
  138. </view>
  139. <view class="file-li" v-if="form.rectifyProjectName">
  140. <img :src="imagesUrl('safetyCheck/icon_djc_wj.png')">
  141. <view>{{form.rectifyProjectName}}</view>
  142. <img :src="imagesUrl('safetyCheck/icon_yybz_sc.png')">
  143. </view> -->
  144. </view>
  145. </scroll-view>
  146. <view class="sub-btn">
  147. <!----复查相关暂时注释----开始---->
  148. <!-- <view @click="submitForm(2)">{{pageType==1?'退回整改':'暂无法整改'}}</view>
  149. <view @click="submitForm(1)">{{pageType==1?'复查完毕':'完成整改'}}</view> -->
  150. <!----复查相关暂时注释----结束---->
  151. <view @click="submitForm(2)">暂无法整改</view>
  152. <view @click="submitForm(1)">完成整改</view>
  153. </view>
  154. </view>
  155. </template>
  156. <script>
  157. const myaudio = uni.createInnerAudioContext();
  158. import {
  159. parseTime
  160. } from '@/component/public.js'
  161. import {
  162. config
  163. } from '@/api/request/config.js'
  164. import {
  165. securityAppCheckPhotoUpdate,
  166. securityAppCheckDangerGetCheckProDetail,
  167. securityAppCheckDangerCheckRectify,
  168. securityAppCheckDangerApprove,
  169. securityAppCheckPhotoGetCheckNumBySub,
  170. } from '@/pages_safetyCheck/api/index.js'
  171. export default {
  172. name: "snapshotDetail",
  173. components: {
  174. },
  175. data() {
  176. return {
  177. baseUrl: config.base_url,
  178. inspectionItems: 0, //0有检查项 1无检查项
  179. pageType:null,
  180. form: {
  181. imgDtoList: [],
  182. rectifyProjectName: '',
  183. rectifyProjectUrl: '',
  184. },
  185. hazardCheckNum: 0,
  186. newData: {},
  187. optionData: null,
  188. fontNum:0,
  189. rectifyId:null,
  190. editStatus:null,
  191. }
  192. },
  193. onLoad(option) {
  194. let optionData = JSON.parse(decodeURIComponent(option.infoData));
  195. console.log('测试整改',optionData)
  196. this.$set(this, 'pageType', optionData.pageType);
  197. this.$set(this, 'optionData', optionData);
  198. this.$set(this, 'editStatus', optionData.editStatus);
  199. },
  200. onShow() {
  201. },
  202. mounted() {
  203. this.securityAppCheckDangerGetCheckProDetail();
  204. this.securityAppCheckPhotoGetCheckNumBySub();
  205. },
  206. methods: {
  207. //语音备忘播放
  208. async voicePlay(item) {
  209. myaudio.src = config.base_url + item;
  210. myaudio.play();
  211. },
  212. //详情
  213. async securityAppCheckDangerGetCheckProDetail() {
  214. console.log(this.optionData);
  215. let self=this;
  216. let obj = {
  217. planId: this.optionData.checkPlanSetVoList.planId,
  218. planSetId: this.optionData.checkPlanSetVoList.planSetId,
  219. checkCategory: this.optionData.checkCategory,
  220. hazardCheckPro: this.optionData.hazardCheckPro,
  221. setOptionId: this.optionData.setOptionId,
  222. subId: this.optionData.subId,
  223. }
  224. const {
  225. data
  226. } = await securityAppCheckDangerGetCheckProDetail(obj);
  227. if (data.code == 200) {
  228. uni.setNavigationBarTitle({
  229. title: data.data.subName+'(' + data.data.roomNum + ')'
  230. })
  231. data.data.checkCollapse=false;
  232. data.data.inspectDot=false;
  233. data.data.checkTime= parseTime(data.data.checkTime, "{y}-{m}-{d}");
  234. if(data.data.checkRectifyVoList[0]){
  235. data.data.checkRectifyVoList.forEach(function(item,index){
  236. item.rectifyTime= parseTime(item.rectifyTime, "{y}-{m}-{d}");
  237. item.reviewTime= parseTime(item.reviewTime, "{y}-{m}-{d}");
  238. item.rectifyCollapse=false;
  239. item.reviewCollapse=false;
  240. if(index==data.data.checkRectifyVoList.length-1){
  241. self.$set(self, 'rectifyId', item.rectifyId);
  242. //编辑数据的时候数据回填
  243. if(self.pageType==1 && self.editStatus){
  244. item.rectifyCollapse=true;
  245. item.reviewTime=null;
  246. self.$set(self.form, 'examineOpinion', item.examineOpinion?item.examineOpinion:'');
  247. self.$set(self.form, 'imgDtoList', item.examineUploadList?item.examineUploadList:[]);
  248. }else if(self.pageType==2 && self.editStatus){
  249. item.reviewCollapse=true;
  250. item.rectifyTime=null;
  251. self.$set(self.form, 'rectifyMeasure', item.rectifyMeasure?item.rectifyMeasure:'');
  252. self.$set(self.form, 'imgDtoList', item.rectifyUploadList?item.rectifyUploadList:[]);
  253. }
  254. }
  255. })
  256. }
  257. this.$set(this, 'newData', data.data);
  258. this.$set(this.newData, 'voiceList', data.data.voiceList ? data.data.voiceList : []);
  259. }
  260. },
  261. // 限制文本框字数
  262. sumfontnum(e) {
  263. this.fontNum = e.detail.value.length
  264. },
  265. //获取检查项在当前实验室出现的次数
  266. async securityAppCheckPhotoGetCheckNumBySub() {
  267. let obj = {
  268. subId: this.optionData.subId,
  269. hazardCheckPro: this.optionData.hazardCheckPro,
  270. }
  271. const {
  272. data
  273. } = await securityAppCheckPhotoGetCheckNumBySub(obj);
  274. if (data.code == 200) {
  275. this.$set(this, 'hazardCheckNum', data.data);
  276. }
  277. },
  278. hiddenDangerClick(row) {
  279. let infoData = this.optionData;
  280. infoData.subName=this.newData.subName;
  281. infoData.roomNum=this.newData.roomNum;
  282. infoData.hiddenDangerRecordStatus = true;//判断是否跳转隐患列表
  283. uni.redirectTo({
  284. url: '/pages_safetyCheck/views/inspectManage/hiddenDangerRecord?infoData=' +
  285. encodeURIComponent(JSON.stringify(infoData))
  286. });
  287. },
  288. //图片预览
  289. lockImg(list) {
  290. if (!list[0]) {
  291. return
  292. }
  293. let urlList = [];
  294. for (let i = 0; i < list.length; i++) {
  295. urlList.push(config.base_url + list[i].fileUrl)
  296. }
  297. wx.previewImage({
  298. urls: urlList, //需要预览的图片http链接列表,多张的时候,url直接写在后面就行了
  299. current: '', // 当前显示图片的http链接,默认是第一个
  300. success: function(res) {},
  301. fail: function(res) {},
  302. complete: function(res) {},
  303. })
  304. },
  305. //滚动事件
  306. scrollGet() {},
  307. /******文件上传******/
  308. selectFile() {
  309. let self = this;
  310. wx.chooseMessageFile({
  311. count: 1,
  312. type: 'file',
  313. success(res) {
  314. console.log(res)
  315. // tempFilePath可以作为img标签的src属性显示图片
  316. const tempFilePaths = res.tempFiles[0].path
  317. self.form.rectifyProjectName = res.tempFiles[0].name
  318. self.uploadFile(tempFilePaths);
  319. }
  320. })
  321. },
  322. async uploadFile(tempFilePaths) {
  323. var self = this;
  324. uni.showLoading({
  325. title: '上传中',
  326. mask: true
  327. });
  328. uni.uploadFile({
  329. url: config.base_url + '/system/file/upload', //仅为示例,非真实的接口地址
  330. header: {
  331. 'Authorization': uni.getStorageSync('token')
  332. },
  333. filePath: tempFilePaths,
  334. name: 'file',
  335. formData: {
  336. 'user': 'test'
  337. },
  338. success: (uploadFileRes) => {
  339. let res = JSON.parse(uploadFileRes.data);
  340. console.log(res)
  341. if (res.code == 200) {
  342. self.form.rectifyProjectUrl = res.data.url;
  343. } else {
  344. uni.showToast({
  345. title: res.msg,
  346. icon: "none",
  347. mask: true,
  348. duration: 2000
  349. });
  350. }
  351. },
  352. fail: err => {},
  353. complete: () => {
  354. uni.hideLoading()
  355. }
  356. });
  357. },
  358. /******图片上传******/
  359. selectImage() {
  360. let self=this;
  361. let photoMaxNun = 0;
  362. if (this.form.imgDtoList.length > 5) {
  363. uni.showToast({
  364. title: '最多上传6张图片',
  365. icon: "none",
  366. mask: true,
  367. duration: 2000
  368. });
  369. return
  370. }
  371. photoMaxNun = 6 - this.form.imgDtoList.length;
  372. wx.chooseImage({
  373. count: photoMaxNun,
  374. sizeType: ["original", "compressed"],
  375. sourceType: ["album", "camera"],
  376. success: function(res) {
  377. if (res.tempFilePaths[0]) {
  378. res.tempFilePaths.forEach(function(item, index) {
  379. self.uploadImg(item);
  380. })
  381. }
  382. }
  383. });
  384. },
  385. async uploadImg(tempFilePaths) {
  386. var self = this;
  387. uni.showLoading({
  388. title: '上传中',
  389. mask: true
  390. });
  391. uni.uploadFile({
  392. url: config.base_url + '/system/file/upload', //仅为示例,非真实的接口地址
  393. header: {
  394. 'Authorization': uni.getStorageSync('token')
  395. },
  396. filePath: tempFilePaths,
  397. name: 'file',
  398. formData: {
  399. 'user': 'test'
  400. },
  401. success: (uploadFileRes) => {
  402. let res = JSON.parse(uploadFileRes.data);
  403. if (res.code == 200) {
  404. this.form.imgDtoList.push({
  405. 'fileUrl': res.data.url,
  406. 'fileName': res.data.name,
  407. 'fileType': 2,
  408. });
  409. console.log(res.data.url)
  410. } else {
  411. uni.showToast({
  412. title: res.msg,
  413. icon: "none",
  414. mask: true,
  415. duration: 2000
  416. });
  417. }
  418. },
  419. fail: err => {},
  420. complete: () => {
  421. uni.hideLoading()
  422. }
  423. });
  424. },
  425. //删除图片
  426. delImg(minIndex) {
  427. this.form.imgDtoList.splice(minIndex, 1);
  428. this.$forceUpdate();
  429. },
  430. //折叠展开
  431. inspectDot(){
  432. this.newData.inspectDot=!this.newData.inspectDot
  433. },
  434. checkCollapse(row){
  435. this.newData.checkCollapse=!this.newData.checkCollapse
  436. },
  437. rectifyCollapse(row){
  438. row.rectifyCollapse=!row.rectifyCollapse
  439. },
  440. reviewCollapse(row){
  441. row.reviewCollapse=!row.reviewCollapse
  442. },
  443. //提交
  444. async submitForm(status) {
  445. let self = this;
  446. if(self.pageType==1){
  447. // if(!this.form.examineOpinion && status==2){
  448. // uni.showToast({
  449. // title: '请填写复查验证描述!',
  450. // icon: "none",
  451. // mask: true,
  452. // duration: 2000
  453. // });
  454. // return
  455. // }
  456. // if(!this.form.imgDtoList[0] && status==2){
  457. // uni.showToast({
  458. // title: '请选择现场照片!',
  459. // icon: "none",
  460. // mask: true,
  461. // duration: 2000
  462. // });
  463. // return
  464. // }
  465. //复查
  466. let obj = {
  467. rectifyId: this.rectifyId,
  468. examineOpinion: this.form.examineOpinion,
  469. examineResult: status == 1 ? 1 : 0, //1是通过,0是驳回
  470. examineUploadList: this.form.imgDtoList,
  471. }
  472. const {
  473. data
  474. } = await securityAppCheckDangerApprove(obj);
  475. if (data.code == 200) {
  476. uni.showToast({
  477. title: '提交成功',
  478. icon: "none",
  479. mask: true,
  480. duration: 2000
  481. });
  482. let infoData = this.optionData;
  483. uni.redirectTo({
  484. url: '/pages_safetyCheck/views/itemsManage/hiddenDangerItemsDetail?infoData=' +
  485. encodeURIComponent(JSON.stringify(infoData))
  486. });
  487. }
  488. }else if(self.pageType==2){
  489. if(!this.form.rectifyMeasure){
  490. uni.showToast({
  491. title: '请填写隐患整改描述!',
  492. icon: "none",
  493. mask: true,
  494. duration: 2000
  495. });
  496. return
  497. }
  498. if(!this.form.imgDtoList[0]){
  499. uni.showToast({
  500. title: '请选择现场照片!',
  501. icon: "none",
  502. mask: true,
  503. duration: 2000
  504. });
  505. return
  506. }
  507. //整改
  508. let obj = {
  509. checkCategory: this.optionData.checkCategory,
  510. dangerId: this.newData.dangerId,
  511. rectifyMaterialName: '', //待定字段
  512. rectifyMaterialUrl: '', //待定字段
  513. rectifyMeasure: this.form.rectifyMeasure,
  514. rectifyResult: status == 1 ? true : false, //true已整改false暂无法整改
  515. rectifyUploadList: this.form.imgDtoList,
  516. }
  517. const {
  518. data
  519. } = await securityAppCheckDangerCheckRectify(obj);
  520. if (data.code == 200) {
  521. uni.showToast({
  522. title: '提交成功',
  523. icon: "none",
  524. mask: true,
  525. duration: 2000
  526. });
  527. let infoData = this.optionData;
  528. uni.redirectTo({
  529. url: '/pages_safetyCheck/views/itemsManage/hiddenDangerItemsDetail?infoData=' +
  530. encodeURIComponent(JSON.stringify(infoData))
  531. });
  532. }
  533. }
  534. },
  535. }
  536. }
  537. </script>
  538. <style lang="stylus" scoped>
  539. .snapshotDetail {
  540. height: 100%;
  541. display flex;
  542. box-sizing: border-box;
  543. padding-bottom: 160rpx;
  544. box-sizing: border-box;
  545. #bgColor-A {
  546. color: #FFD400;
  547. }
  548. #bgColor-B {
  549. color: #FF8C00;
  550. }
  551. #bgColor-C {
  552. color: #E11608;
  553. }
  554. #fontColor-A {
  555. color: #FF8C00;
  556. }
  557. #fontColor-B {
  558. color: #16B531;
  559. }
  560. .tip {
  561. width: 750rpx;
  562. height: 80rpx;
  563. background: rgba(255, 140, 0, 0.2);
  564. font-weight: normal;
  565. font-size: 28rpx;
  566. color: #FF8C00;
  567. line-height: 80rpx;
  568. text-align: center;
  569. }
  570. .items {
  571. width: 690rpx;
  572. min-height: 165rpx;
  573. background: #FFFFFF;
  574. border-radius: 20rpx 20rpx 20rpx 20rpx;
  575. margin: 20rpx 0 0 30rpx;
  576. .items-li {
  577. display: flex;
  578. justify-content: space-between;
  579. align-items: center;
  580. padding: 0 30rpx;
  581. box-sizing: border-box;
  582. border-bottom: 1rpx solid #E0E0E0;
  583. >view:nth-of-type(1) {
  584. font-size: 30rpx;
  585. color: #333333;
  586. line-height: 80rpx;
  587. text-align: left;
  588. }
  589. >view:nth-of-type(2) {
  590. font-size: 28rpx;
  591. color: #666666;
  592. line-height: 80rpx;
  593. text-align: left;
  594. display: flex;
  595. justify-content: space-between;
  596. align-items: center;
  597. }
  598. }
  599. .items-t {
  600. border-bottom: 1rpx solid #E0E0E0;
  601. height: 80rpx;
  602. display: flex;
  603. justify-content: flex-start;
  604. align-items: center;
  605. padding: 0 30rpx;
  606. box-sizing: border-box;
  607. .items-t-l {
  608. width: 175rpx;
  609. height: 50rpx;
  610. background: #E11608;
  611. border-radius: 50rpx 50rpx 50rpx 50rpx;
  612. font-size: 30rpx;
  613. color: #FFFFFF;
  614. line-height: 50rpx;
  615. text-align: center;
  616. margin-right: 14rpx;
  617. }
  618. .items-t-r {
  619. font-size: 30rpx;
  620. color: #333333;
  621. line-height: 42rpx;
  622. text-align: left;
  623. }
  624. }
  625. .items-b {
  626. padding: 0 30rpx;
  627. box-sizing: border-box;
  628. height: 80rpx;
  629. font-size: 28rpx;
  630. color: #666666;
  631. line-height: 80rpx;
  632. text-align: left;
  633. }
  634. }
  635. .items-number {
  636. font-size: 24rpx;
  637. color: #3D3D3D;
  638. line-height: 34rpx;
  639. text-align: right;
  640. margin: 20rpx 60rpx 0 0;
  641. >text {
  642. font-size: 24rpx;
  643. color: #FF0000;
  644. line-height: 34rpx;
  645. text-align: right;
  646. }
  647. }
  648. .list {
  649. width: 690rpx;
  650. margin: 20rpx 30rpx 0;
  651. background: #FFFFFF;
  652. border-radius: 20rpx 20rpx 20rpx 20rpx;
  653. .list-li {
  654. display: flex;
  655. justify-content: space-between;
  656. align-items: center;
  657. padding: 0 30rpx;
  658. box-sizing: border-box;
  659. border-bottom: 1rpx solid #E0E0E0;
  660. >view:nth-of-type(1) {
  661. font-size: 30rpx;
  662. color: #333333;
  663. line-height: 80rpx;
  664. text-align: left;
  665. }
  666. >view:nth-of-type(2) {
  667. font-size: 28rpx;
  668. color: #666666;
  669. line-height: 80rpx;
  670. text-align: left;
  671. display: flex;
  672. justify-content: space-between;
  673. align-items: center;
  674. >img {
  675. width: 24rpx;
  676. height: 12rpx;
  677. margin-left: 10rpx;
  678. }
  679. }
  680. }
  681. .list-li-tow {
  682. display: flex;
  683. justify-content: space-between;
  684. align-items: center;
  685. padding: 0 30rpx;
  686. box-sizing: border-box;
  687. border-top: 1rpx solid #E0E0E0;
  688. border-bottom: 1rpx solid #E0E0E0;
  689. >view:nth-of-type(1) {
  690. font-size: 30rpx;
  691. color: #333333;
  692. line-height: 80rpx;
  693. text-align: left;
  694. }
  695. >view:nth-of-type(2) {
  696. font-size: 28rpx;
  697. color: #666666;
  698. line-height: 80rpx;
  699. text-align: left;
  700. display: flex;
  701. justify-content: space-between;
  702. align-items: center;
  703. >img {
  704. width: 30rpx;
  705. height: 28rpx;
  706. margin-left: 10rpx;
  707. }
  708. }
  709. }
  710. .file-li {
  711. display: flex;
  712. justify-content: space-between;
  713. align-items: center;
  714. padding: 0 30rpx;
  715. box-sizing: border-box;
  716. >img:nth-of-type(1) {
  717. width: 30rpx;
  718. height: 30rpx;
  719. }
  720. >view {
  721. flex: 1;
  722. font-size: 28rpx;
  723. color: #333333;
  724. line-height: 80rpx;
  725. text-align: left;
  726. margin: 0 92rpx 0 16rpx;
  727. overflow: hidden;
  728. text-overflow: ellipsis;
  729. white-space: nowrap;
  730. }
  731. >img:nth-of-type(2) {
  732. width: 30rpx;
  733. height: 30rpx;
  734. }
  735. }
  736. .hidden-content {
  737. width: 630rpx;
  738. min-height: 200rpx;
  739. background: #F5F5F5;
  740. border-radius: 20rpx 20rpx 20rpx 20rpx;
  741. margin: 20rpx 30rpx 0;
  742. padding: 20rpx;
  743. box-sizing: border-box;
  744. font-size: 28rpx;
  745. color: #666666;
  746. line-height: 39rpx;
  747. text-align: left;
  748. }
  749. .photo {
  750. display: flex;
  751. justify-content: flex-start;
  752. flex-wrap: wrap;
  753. margin-top: 20rpx;
  754. padding: 0 30rpx;
  755. box-sizing: border-box;
  756. >img {
  757. width: 150rpx;
  758. height: 150rpx;
  759. border-radius: 10rpx 10rpx 10rpx 10rpx;
  760. margin: 0 10rpx 10rpx 0;
  761. }
  762. >img:nth-of-type(4) {
  763. margin-right: 0;
  764. }
  765. }
  766. .describe {
  767. width: 636rpx;
  768. height: 120rpx;
  769. border-radius: 10rpx 10rpx 10rpx 10rpx;
  770. border: 1rpx solid #E0E0E0;
  771. margin: 20rpx 0 0 28rpx;
  772. padding: 12rpx 16rpx;
  773. box-sizing: border-box;
  774. }
  775. .check-for-img-max-box {
  776. margin: 20px 28rpx;
  777. .left-title-p {
  778. width: 100%;
  779. text-align: left;
  780. font-size: 30rpx;
  781. font-family: PingFang SC-Medium, PingFang SC;
  782. font-weight: 400;
  783. color: #333333;
  784. line-height: 80rpx;
  785. }
  786. .right-img-box {
  787. .img-box {
  788. display inline-block;
  789. height: 150rpx;
  790. width: 150rpx;
  791. position relative;
  792. margin: 0 10rpx 20rpx 0;
  793. border-radius 10rpx;
  794. overflow hidden;
  795. .img-data {
  796. height: 150rpx;
  797. width: 150rpx;
  798. }
  799. .position-img {
  800. position absolute;
  801. right: 0;
  802. top: 0;
  803. width: 36rpx;
  804. height: 36rpx;
  805. }
  806. }
  807. .img-box:nth-of-type(4n+4) {
  808. margin-right: 0rpx;
  809. }
  810. .add-button {
  811. margin: 0 0rpx 20rpx 0;
  812. border-radius 10rpx;
  813. overflow hidden;
  814. display inline-block;
  815. height: 150rpx;
  816. width: 150rpx;
  817. }
  818. }
  819. }
  820. /* .list-li:last-of-type {
  821. border: none;
  822. } */
  823. }
  824. }
  825. /* 语音备注 */
  826. .voice {
  827. width: 690rpx;
  828. min-height: 100rpx;
  829. background: #FFFFFF;
  830. border-radius: 20rpx 20rpx 20rpx 20rpx;
  831. padding: 0 30rpx;
  832. box-sizing: border-box;
  833. overflow: hidden;
  834. .voice_t {
  835. height: 100rpx;
  836. display: flex;
  837. justify-content: space-between;
  838. align-items: center;
  839. .voice_t_t {
  840. width: 100%;
  841. font-size: 30rpx;
  842. font-family: PingFang SC-Medium, PingFang SC;
  843. font-weight: 400;
  844. color: #333333;
  845. line-height: 100rpx;
  846. }
  847. .voice_t_b {
  848. width: 100%;
  849. font-size: 30rpx;
  850. font-family: PingFang SC-Medium, PingFang SC;
  851. font-weight: 400;
  852. color: #333333;
  853. line-height: 100rpx;
  854. text-align: left;
  855. }
  856. }
  857. .voice_b {
  858. display flex;
  859. justify-content flex-start;
  860. align-items center;
  861. margin-bottom: 20rpx;
  862. .voice_b_l {
  863. width: 400rpx;
  864. height: 40rpx;
  865. background: #0183FA;
  866. border-radius: 10rpx;
  867. display flex;
  868. justify-content flex-start;
  869. align-items center;
  870. font-size: 24rpx;
  871. color: #FFFFFF;
  872. line-height: 30rpx;
  873. text-align: left;
  874. >img {
  875. width: 20rpx;
  876. height: 20rpx;
  877. margin-left: 16rpx;
  878. margin-right: 20rpx;
  879. }
  880. }
  881. .voice_b_r {
  882. width: 28rpx;
  883. height: 28rpx;
  884. margin-left: 20rpx;
  885. }
  886. }
  887. .voice-btn {
  888. width: 150rpx;
  889. height: 150rpx;
  890. position: fixed;
  891. right: 24rpx;
  892. bottom: 176rpx;
  893. >img {
  894. width: 150rpx;
  895. height: 150rpx;
  896. position: absolute;
  897. }
  898. >text {
  899. font-size: 24rpx;
  900. color: #999999;
  901. line-height: 30rpx;
  902. text-align: center;
  903. position: absolute;
  904. top: 84rpx;
  905. left: 26rpx;
  906. }
  907. }
  908. }
  909. .sub-btn {
  910. display: flex;
  911. justify-content: center;
  912. position: fixed;
  913. left: 30rpx;
  914. bottom: 30rpx;
  915. >view:nth-of-type(1) {
  916. width: 345rpx;
  917. height: 100rpx;
  918. background: #FF8C00;
  919. border-radius: 50rpx 0rpx 0rpx 50rpx;
  920. font-size: 30rpx;
  921. color: #FFFFFF;
  922. line-height: 100rpx;
  923. text-align: center;
  924. }
  925. >view:nth-of-type(2) {
  926. width: 345rpx;
  927. height: 100rpx;
  928. background: #0183FA;
  929. border-radius: 0rpx 50rpx 50rpx 0rpx;
  930. font-size: 30rpx;
  931. color: #FFFFFF;
  932. line-height: 100rpx;
  933. text-align: center;
  934. }
  935. }
  936. </style>