hiddenDangerRectification.vue 25 KB

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