c95ae07916ecabd07b5deff3e20b2d6940e90f34.svn-base 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735
  1. <template>
  2. <!-- 修改弹框 -->
  3. <el-dialog
  4. width="60%"
  5. class="outerDialog custom_dialog"
  6. title="修改督查问题"
  7. @close="closeModal"
  8. append-to-body
  9. :visible.sync="changeSupervisionVisible">
  10. <div class="scroll_wrapper">
  11. <div
  12. style="width:49%;overflow-y:auto;max-height:58vh;float:left;border:1px solid #d5d5ff;margin-right:5px;">
  13. <p style="font-weight:bolder;background-color:#d5d5ff;padding:3px;">基本信息</p>
  14. <el-form ref="changeSupFrom" :rules="rules1" :model="changeSupervision" label-width="120px">
  15. <el-form-item label="工程名称" prop="nm">
  16. <el-input v-model="changeSupervision.nm" clearable :readonly="true"></el-input>
  17. </el-form-item>
  18. <el-form-item label="问题类别" prop="inspPblmsName">
  19. <el-select v-model="t1" value-key="inspPblmsName" placeholder="请选择" @change="problemListChange">
  20. <el-option v-for="(item,index) in problemList" :key="index" :label="item.inspPblmsName" :value="item">
  21. </el-option>
  22. </el-select>
  23. </el-form-item>
  24. <el-form-item label="检查项目" prop="checkPoint" style="text-align:left">
  25. <el-select v-model="t2" placeholder="请选择" value-key="checkPointName" @change="currentCheckPointListChange">
  26. <el-option v-for="(item,index) in currentCheckPointList" :key="index" :label="item.checkPointName" :value="item">
  27. </el-option>
  28. </el-select>
  29. </el-form-item>
  30. <el-form-item label="问题描述" prop="pblmDesc" style="text-align:left">
  31. <el-select v-model="t3" placeholder="请选择" value-key="pblmDesc" @change="currentProblemDescListChange" style="max-width: 500px">
  32. <el-option v-for="(item,index) in currentProblemDescList" :key="index" :label="item.pblmDesc" :value="item" :title="item.pblmDesc" style="max-width: 500px">
  33. </el-option>
  34. </el-select>
  35. </el-form-item>
  36. <el-form-item label="责任单位名称" prop="inspPblmOrgName">
  37. <el-input type="text" v-model="changeSupervision.inspPblmOrgName" clearable></el-input>
  38. </el-form-item>
  39. <el-form-item label="详细描述" prop="inspPblmDesc">
  40. <el-input type="textarea" :rows="2" v-model="changeSupervision.inspPblmDesc" clearable></el-input>
  41. </el-form-item>
  42. <el-form-item label="是否为典型问题:">
  43. <el-select v-model="changeSupervision.ifCasePblm" clearable placeholder="请选择">
  44. <el-option
  45. v-for="item in supervision"
  46. :key="item.value"
  47. :label="item.label"
  48. :value="item.value"
  49. ></el-option>
  50. </el-select>
  51. </el-form-item>
  52. <el-form-item label="严重程度:">
  53. <el-select
  54. v-model="changeSupervision.inspPblmCate"
  55. disabled
  56. clearable
  57. disable
  58. placeholder="请选择"
  59. >
  60. <el-option
  61. v-for="item in supervisionState"
  62. :key="item.value"
  63. :label="item.label"
  64. :value="item.value"
  65. ></el-option>
  66. </el-select>
  67. </el-form-item>
  68. <el-form-item label="备注" prop="note">
  69. <el-input type="textarea" :rows="2" v-model.trim="changeSupervision.note" clearable></el-input>
  70. </el-form-item>
  71. <el-form-item label="上报人" prop="persName">
  72. <el-input
  73. resize="none"
  74. type="input"
  75. :rows="3"
  76. readonly
  77. placeholder="请输入"
  78. v-model.trim="changeSupervision.persName"
  79. ></el-input>
  80. </el-form-item>
  81. <el-form-item label="上报时间" prop="collTime">
  82. <el-date-picker v-model="changeSupervision.collTime" readonly type="date"></el-date-picker>
  83. </el-form-item>
  84. </el-form>
  85. </div>
  86. <div
  87. style="width: 49%;float: left;border: 1px solid rgb(213, 213, 255);margin-right: 5px;overflow-y: auto;max-height: 58vh;">
  88. <p style="font-weight:bolder;background-color:#d5d5ff;padding:3px;">多媒体信息</p>
  89. <el-tabs style="margin:0px 5px">
  90. <el-tab-pane :label="picturetabName">
  91. <el-row style="text-align:right;">
  92. <el-button
  93. :v-if="!addPicPanel?addPicPanel:addPicPanel"
  94. size="mini"
  95. type="text"
  96. :icon="!addPicPanel?'el-icon-circle-plus-outline':'el-icon-circle-close-outline'"
  97. @click="addPic"
  98. >{{!addPicPanel?"添加":"取消"}}</el-button>
  99. </el-row>
  100. <el-row v-if="addPicPanel">
  101. <upload
  102. ref="uploadFile"
  103. :url="`/pdcApi/file/insert?bizId=`"
  104. @uploadOver="removeNewSupervision"
  105. ></upload>
  106. </el-row>
  107. <el-row>
  108. <div style="overflow-y:auto;overflow-x:hidden;max-height:30vh;padding:10px;">
  109. <div class="upload-container" id="imgView">
  110. <div
  111. v-for="(item, index) in pictureArray"
  112. :key="index"
  113. class="image-preview image-app-preview"
  114. >
  115. <div class="image-preview-wrapper">
  116. <img :src="`${hostUrl}/${item.filePath}`">
  117. <div class="image-preview-action">
  118. <i @click="removeFile(item.id)" class="el-icon-delete"></i>
  119. </div>
  120. </div>
  121. </div>
  122. </div>
  123. </div>
  124. </el-row>
  125. </el-tab-pane>
  126. <el-tab-pane :label="audiotabName">
  127. <el-table border :data="audioArray" style="width: 100%;margin: 0 auto;">
  128. <el-table-column header-align="center" align="center" label="音频">
  129. <template slot-scope="scope">
  130. <elaudio
  131. style="margin-left:15%;width:100px;height:30px;"
  132. :theUrl="`${hostUrl}/${scope.row.filePath}`"
  133. ></elaudio>
  134. </template>
  135. </el-table-column>
  136. <el-table-column header-align="center" align="center" label="操作">
  137. <template slot-scope="scope">
  138. <el-button
  139. size="mini"
  140. @click="removeFile(scope.row.id,scope.$index)"
  141. type="danger"
  142. >删除</el-button>
  143. </template>
  144. </el-table-column>
  145. </el-table>
  146. </el-tab-pane>
  147. <el-tab-pane :label="videotabName">
  148. <el-table border :data="videoArray" style="width: 100%;margin: 0 auto;">
  149. <el-table-column header-align="center" align="center" label="视频">
  150. <template slot-scope="scope">
  151. <video-player
  152. class="vjs-custom-skin"
  153. ref="videoPlayer"
  154. :options="scope.row"
  155. :playsinline="true"
  156. ></video-player>
  157. </template>
  158. </el-table-column>
  159. <el-table-column header-align="center" align="center" label="操作">
  160. <template slot-scope="scope">
  161. <el-button
  162. size="mini"
  163. @click="removeFile(scope.row.id,scope.$index)"
  164. type="danger"
  165. >删除</el-button>
  166. </template>
  167. </el-table-column>
  168. </el-table>
  169. </el-tab-pane>
  170. <el-tab-pane :label="filetabName">
  171. <el-table border :data="fileArray" style="width: 100%;margin: 0 auto;">
  172. <el-table-column header-align="center" align="center" label="文档">
  173. <template slot-scope="scope">
  174. <p>
  175. <a :href="`${hostUrl}/${scope.row.filePath}`" target="_blank" rel="noopener noreferrer">
  176. {{scope.row.fileName}}
  177. </a>
  178. </p>
  179. </template>
  180. </el-table-column>
  181. <el-table-column header-align="center" align="center" label="操作">
  182. <template slot-scope="scope">
  183. <el-button
  184. size="mini"
  185. @click="removeFile(scope.row.id,scope.$index)"
  186. type="danger"
  187. >删除</el-button>
  188. </template>
  189. </el-table-column>
  190. </el-table>
  191. </el-tab-pane>
  192. </el-tabs>
  193. </div>
  194. </div>
  195. <span slot="footer">
  196. <el-button type="primary" @click="changeSupervisionInfo">保存</el-button>
  197. <el-button @click="changeSupervisionVisiblefalse">取消</el-button>
  198. </span>
  199. </el-dialog>
  200. </template>
  201. <script>
  202. import {showDetailsXq,updatelist,deleteFileById} from "../../api/duChaAPI.js";
  203. import request from "../../utils/gw_ajax_request.js";
  204. import { hostUrl } from "@util/global_variable.js";
  205. import Viewer from 'viewerjs';
  206. import 'viewerjs/dist/viewer.css';
  207. export default {
  208. props: ['editId'],
  209. data(){
  210. return{
  211. changeSupervisionVisible: true,
  212. changeSupervisionLoading: false,
  213. changeSupervision: {},
  214. rules1: {
  215. inspPblmName: [
  216. {
  217. required: true,
  218. message: "请输入问题名称",
  219. trigger: "blur"
  220. },
  221. {
  222. min: 1,
  223. max: 999,
  224. message: "不超过100字符",
  225. trigger: "blur"
  226. }
  227. ],
  228. inspPblmDesc: [
  229. {
  230. required: true,
  231. message: "请输入问题描述",
  232. trigger: "blur"
  233. }
  234. ],
  235. recPers: [
  236. {
  237. required: true,
  238. message: "请输入记录人",
  239. trigger: "blur"
  240. },
  241. {
  242. min: 1,
  243. max: 999,
  244. message: "不超过100字符",
  245. trigger: "blur"
  246. }
  247. ],
  248. objType: [
  249. {
  250. required: true,
  251. message: "请选择督查对象类型",
  252. trigger: "change"
  253. }
  254. ],
  255. objId: [
  256. {
  257. required: true,
  258. message: "请选择督查对象类型",
  259. trigger: "change"
  260. }
  261. ],
  262. inspPblmType: [
  263. {
  264. required: true,
  265. message: "请选择督查问题类型",
  266. trigger: "change"
  267. }
  268. ],
  269. dataStat: [
  270. {
  271. required: true,
  272. message: "请选择数据状态",
  273. trigger: "change"
  274. }
  275. ],
  276. collTime: [
  277. {
  278. required: true,
  279. message: "请选择采集时间",
  280. trigger: "change"
  281. }
  282. ],
  283. ifCasePblm: [
  284. {
  285. required: true,
  286. message: "请选择是否典型",
  287. trigger: "change"
  288. }
  289. ],
  290. pblmStat: [
  291. {
  292. required: true,
  293. message: "请选择问题类型",
  294. trigger: "change"
  295. }
  296. ],
  297. inspPblmCate: [
  298. {
  299. required: true,
  300. message: "请选择问题程度",
  301. trigger: "change"
  302. },
  303. {
  304. trigger: "change"
  305. }
  306. ]
  307. },
  308. supervisionState: [
  309. {
  310. value: "0",
  311. label: "一般"
  312. },
  313. {
  314. value: "1",
  315. label: "较重"
  316. },
  317. {
  318. value: "2",
  319. label: "严重"
  320. },
  321. {
  322. value: "3",
  323. label: "特别严重"
  324. }
  325. ],
  326. supervision: [
  327. {
  328. value: "1",
  329. label: "是"
  330. },
  331. {
  332. value: "0",
  333. label: "否"
  334. }
  335. ],
  336. addPicPanel: false,
  337. gwComFiles: [],
  338. picturetabName: "",
  339. audiotabName: "",
  340. videotabName: "",
  341. filetabName: "",
  342. pictureArray: [],
  343. audioArray: [],
  344. videoArray: [],
  345. fileArray:[],
  346. updateIdXiuGai: "",
  347. pblmId: "",
  348. t1: {},
  349. t2: {},
  350. t3: {},
  351. problemList: [],
  352. currentCheckPointList: [],
  353. currentProblemDescList: [],
  354. xiangqingmiaoshu: '',
  355. wenTiLeiBie:"",
  356. jianChaXiangMu:"",
  357. }
  358. },
  359. components:{
  360. upload: resolve => {
  361. require(["../../widgets/uploadFile.vue"], resolve);
  362. },
  363. },
  364. computed:{
  365. hostUrl(){
  366. return hostUrl
  367. },
  368. persId() {
  369. return localStorage.getItem("userid") ? localStorage.getItem("userid") : "1098101939614724096";
  370. }
  371. },
  372. mounted(){
  373. this.getproblemSmallType();
  374. },
  375. methods:{
  376. // 修改弹窗显示
  377. changeSup(id) {
  378. this.pictureArray = [];
  379. this.audioArray = [];
  380. this.videoArray = [];
  381. this.fileArray = [];
  382. this.updateIdXiuGai = id;
  383. let _this = this
  384. showDetailsXq(this.updateIdXiuGai).then(res => {
  385. // if(this.usersId==)
  386. this.changeSupervision = res.data;
  387. this.t1['inspPblmsName'] = this.changeSupervision.inspPblmsName
  388. this.problemList.forEach(ele=>{
  389. if(ele.inspPblmsName == _this.t1.inspPblmsName){
  390. _this.problemListChange(ele)
  391. }
  392. })
  393. this.t2['checkPointName'] = this.changeSupervision.checkPoint
  394. this.currentCheckPointList.forEach(ele=>{
  395. if(ele.checkPointName == _this.t2.checkPointName){
  396. _this.currentCheckPointListChange(ele)
  397. }
  398. })
  399. this.t3['pblmDesc'] = this.changeSupervision.pblmDesc
  400. res.data.gwComFiles.forEach(item => {
  401. if (
  402. item.fileExt == "mp3" ||
  403. item.fileExt == "MP3" ||
  404. item.fileExt == "m4a"
  405. ) {
  406. this.audioArray.push(item);
  407. } else if (
  408. item.fileExt == "jpg" ||
  409. item.fileExt == "JPG" ||
  410. item.fileExt == "png" ||
  411. item.fileExt == "PNG" ||
  412. item.fileExt == "JPEG" ||
  413. item.fileExt == "jpeg"
  414. ) {
  415. this.pictureArray.push(item);
  416. } else if (item.fileExt == "mp4" || item.fileExt == "MP4") {
  417. this.videoArray.push({
  418. id: item.id,
  419. bizId: item.bizId,
  420. width: "130",
  421. height: "130",
  422. autoplay: false,
  423. muted: true,
  424. language: "en",
  425. playbackRates: [0.7, 1.0, 1.5, 2.0],
  426. sources: [
  427. {
  428. type: "video/mp4",
  429. src: this.hostUrl + item.filePath
  430. }
  431. ]
  432. });
  433. }else{
  434. this.fileArray.push(item);
  435. }
  436. });
  437. _this.$nextTick(function(){
  438. var ViewerDom = document.getElementById('imgView');
  439. var viewer = new Viewer(ViewerDom, {})
  440. });
  441. this.picturetabName = "图片资料(" + this.pictureArray.length + ")";
  442. this.audiotabName = "音频资料(" + this.audioArray.length + ")";
  443. this.videotabName = "视频资料(" + this.videoArray.length + ")";
  444. this.filetabName = "其它资料(" + this.fileArray.length + ")";
  445. });
  446. },
  447. // 提交修改信息
  448. changeSupervisionInfo() {
  449. this.$refs.changeSupFrom.validate(valid => {
  450. if (valid) {
  451. this.changeSupervisionLoading = true;
  452. this.changeSupervision.inspPblmsName = this.wenTiLeiBie
  453. this.changeSupervision.checkPoint = this.jianChaXiangMu
  454. this.changeSupervision.inspPblmName = this.xiangqingmiaoshu
  455. this.changeSupervision.inspPlbmType = this.t2.sort2;
  456. this.changeSupervision.inspPblmCode = this.t3.sn;
  457. this.changeSupervision.pblmsTypeId = this.t3.guid;
  458. let data = this.changeSupervision;
  459. updatelist(data).then(res => {
  460. this.pblmId = res.data.pblmId;
  461. this.gwComFiles = res.data.gwComFiles;
  462. if (res.success) {
  463. this.successInfo();
  464. if (this.$refs.uploadFile.submitUpload(data.pblmId)) {
  465. this.removeNewSupervision();
  466. this.successInfo();
  467. this.addPicPanel = false;
  468. this.changeSupervisionLoading = false;
  469. }
  470. } else {
  471. this.failInfo();
  472. this.$emit('closeEditDialog','success')
  473. }
  474. });
  475. }
  476. });
  477. },
  478. removeNewSupervision(arg) {
  479. if (arg) {
  480. var args = this.gwComFiles.concat(arg);
  481. }
  482. this.changeSup(this.editId)
  483. this.gwComFiles = [];
  484. },
  485. changeSupervisionVisiblefalse() {
  486. this.$emit('closeEditDialog','success')
  487. this.$refs.uploadFile.init();
  488. this.addPicPanel = false;
  489. },
  490. addPic() {
  491. this.addPicPanel = !this.addPicPanel;
  492. },
  493. // 删除图片文件
  494. removeFile(id, index) {
  495. // this.updateIdXiuGai = this.updateIdXiuGai;
  496. var _self = this;
  497. this.$confirm("此操作将永久删除该文件, 是否继续?", "提示", {
  498. confirmButtonText: "确定",
  499. cancelButtonText: "返回",
  500. type: "warning"
  501. }).then(
  502. res => {
  503. if (res === "confirm") {
  504. deleteFileById(id, this.persId).then(res => {
  505. if (res.success) {
  506. this.changeSupervision.gwComFiles.forEach(item => {
  507. if (
  508. item.fileExt == "mp3" ||
  509. item.fileExt == "MP3" ||
  510. item.fileExt == "m4a"
  511. ) {
  512. this.audiotabName.splice(index, 1);
  513. } else if (
  514. item.fileExt == "jpg" ||
  515. item.fileExt == "JPG" ||
  516. item.fileExt == "png" ||
  517. item.fileExt == "PNG" ||
  518. item.fileExt == "JPEG" ||
  519. item.fileExt == "jpeg"
  520. ) {
  521. this.pictureArray.splice(index, 1);
  522. } else if (item.fileExt == "mp4" || item.fileExt == "MP4") {
  523. this.videoArray.splice(index, 1);
  524. }
  525. });
  526. _self.changeSup(this.updateIdXiuGai);
  527. } else {
  528. this.failInfo();
  529. }
  530. });
  531. }
  532. },
  533. res => {
  534. console.log("返回");
  535. }
  536. )
  537. },
  538. // 操作成功反馈
  539. successInfo() {
  540. this.$message({
  541. type: "success",
  542. message: "操作成功!"
  543. });
  544. },
  545. // 操作失败反馈
  546. failInfo(val) {
  547. this.$message.error(val);
  548. },
  549. // 文件上传
  550. submitUpload() {
  551. this.$refs.upload.submit();
  552. },
  553. closeModal(){
  554. this.$emit('closeEditDialog','success')
  555. },
  556. getproblemSmallType() {
  557. let result = [];
  558. request.get('/dc/insp/pblms/getPblmType', {
  559. params: {
  560. type: 19
  561. }
  562. }).then(res => {
  563. if (res.success) {
  564. res.data.forEach((ele) => {
  565. let haveinspPblmsName = false;
  566. result.forEach((inspPblm) => {
  567. if (inspPblm['inspPblmsName'] == ele.inspPblmsName) {
  568. //
  569. let havechekPoint = false;
  570. inspPblm['checkPoints'].forEach((chekPoint) => {
  571. if (chekPoint['checkPointName'] == ele.checkPoint) {
  572. //
  573. chekPoint['pblmDescs'].push({
  574. pblmDesc: ele.pblmDesc,
  575. sn: ele.sn,
  576. guid: ele.guid,
  577. });
  578. havechekPoint = true;
  579. }
  580. });
  581. if (!havechekPoint) {
  582. let newCheckPoint = {};
  583. newCheckPoint['checkPointName'] = ele.checkPoint;
  584. newCheckPoint['sort2'] = ele.sort2;
  585. newCheckPoint['pblmDescs'] = [{
  586. pblmDesc: ele.pblmDesc,
  587. sn: ele.sn,
  588. guid: ele.guid,
  589. }]
  590. inspPblm['checkPoints'].push(newCheckPoint);
  591. }
  592. haveinspPblmsName = true;
  593. }
  594. });
  595. if (!haveinspPblmsName) {
  596. let haveinspPblmsObj = {};
  597. haveinspPblmsObj['inspPblmsName'] = ele.inspPblmsName;
  598. haveinspPblmsObj['sort1'] = ele.sort1;
  599. haveinspPblmsObj['checkPoints'] = [{
  600. checkPointName: ele.checkPoint,
  601. sort2: ele.sort2,
  602. pblmDescs: [{
  603. pblmDesc: ele.pblmDesc,
  604. sn: ele.sn,
  605. guid: ele.guid,
  606. }]
  607. }];
  608. result.push(haveinspPblmsObj);
  609. }
  610. })
  611. this.problemList = result;
  612. this.changeSup(this.editId)
  613. }
  614. })
  615. },
  616. getYanZhongChengDu(){
  617. request.post('/dc/insp/pblms/getByPblms', {
  618. inspPblmsName:this.wenTiLeiBie,
  619. checkPoint:this.jianChaXiangMu,
  620. pblmDesc:this.xiangqingmiaoshu
  621. }).then(res => {
  622. if (res.success) {
  623. this.changeSupervision.inspPblmCate=res.data.inspPblmCate;
  624. }
  625. })
  626. },
  627. problemListChange: function (item) {
  628. this.t1 = item
  629. this.wenTiLeiBie = item.inspPblmsName;
  630. this.currentCheckPointList = item.checkPoints;
  631. },
  632. currentCheckPointListChange: function (item) {
  633. this.jianChaXiangMu = item.checkPointName;
  634. this.currentProblemDescList = item.pblmDescs;
  635. },
  636. currentProblemDescListChange: function (item) {
  637. this.xiangqingmiaoshu = item.pblmDesc;
  638. console.log(item);
  639. },
  640. },
  641. watch:{
  642. editId(val){
  643. this.changeSup(val)
  644. },
  645. 't3': {
  646. handler: function (val, oldVal) {
  647. this.getYanZhongChengDu()
  648. },
  649. deep: true
  650. },
  651. }
  652. }
  653. </script>
  654. <style scoped lang="scss">
  655. .scroll_wrapper{
  656. overflow: hidden;
  657. }
  658. .scroll_wrapper .el-form{
  659. padding-top: 5px;
  660. padding-right: 5px;
  661. }
  662. .upload-container {
  663. width: 100%;
  664. position: relative;
  665. .image-uploader {
  666. width: 35%;
  667. float: left;
  668. }
  669. .image-preview {
  670. width: 200px;
  671. height: 200px;
  672. position: relative;
  673. border: 1px dashed #d9d9d9;
  674. float: left;
  675. // margin-left: 50px;
  676. .image-preview-wrapper {
  677. position: relative;
  678. width: 100%;
  679. height: 100%;
  680. img {
  681. width: 100%;
  682. height: 100%;
  683. }
  684. }
  685. .image-preview-action {
  686. position: absolute;
  687. width: 100%;
  688. height: 30px;
  689. left: 0;
  690. bottom: 0;
  691. color: #fff;
  692. opacity: 0;
  693. font-size: 20px;
  694. background-color: rgba(0, 0, 0, 0.5);
  695. transition: opacity 0.3s;
  696. cursor: pointer;
  697. text-align: center;
  698. line-height: 30px;
  699. .el-icon-delete {
  700. font-size: 25px;
  701. }
  702. }
  703. &:hover {
  704. .image-preview-action {
  705. opacity: 1;
  706. }
  707. }
  708. }
  709. .image-app-preview {
  710. margin-bottom: 10px;
  711. width: 40vh;
  712. height: 180px;
  713. position: relative;
  714. border: 1px dashed #d9d9d9;
  715. float: left;
  716. // margin-left: 50px;
  717. .app-fake-conver {
  718. height: 44px;
  719. position: absolute;
  720. width: 100%; // background: rgba(0, 0, 0, .1);
  721. text-align: center;
  722. line-height: 64px;
  723. color: #fff;
  724. }
  725. }
  726. }
  727. </style>