f24111e609900ed5d8be1dd9de7bbe3f00cfa10b.svn-base 24 KB

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