82649f6af4fad6034c1067cdcc3145febebbd479.svn-base 33 KB

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