6558c4e9159bcd916062761da74c3f9e2c027b94.svn-base 33 KB

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