product-draw-detail-dialog.vue 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <template>
  2. <div>
  3. <el-dialog title="图纸详情" width="70%" :close-on-click-modal="false" :visible.sync="visible">
  4. <!-- <div class="my-title">图纸详情</div>-->
  5. <div>
  6. <template v-for="(item, index) in dataList">
  7. <e-desc :title="item.drawingName" column="3" style="margin-bottom: 20px">
  8. <e-desc-item label="附件" span="2">
  9. <div v-for="(item, index) in item.attachList" style="display: inline">
  10. <span v-if="index > 0">,</span>
  11. <a :key="item.fileName + index" type="primary" href="#" @click="previewFile(item.fileName, item.url)">{{
  12. item.fileName }}</a>
  13. </div>
  14. </e-desc-item>
  15. </e-desc>
  16. </template>
  17. <div></div>
  18. </div>
  19. <span slot="footer">
  20. <el-button @click="onChose">返回</el-button>
  21. </span>
  22. </el-dialog>
  23. <!-- 文件预览 -->
  24. <preview-component v-if="previewVisible" ref="preview" />
  25. </div>
  26. </template>
  27. <script>
  28. import EDesc from '../common/e-desc'
  29. import EDescItem from '../common/e-desc-item'
  30. import { downloadUrl } from '@/api/file'
  31. import UploadComponent from '../common/upload-component'
  32. import PreviewComponent from '../common/preview-component'
  33. export default {
  34. name: 'product-draw-detail-dialog',
  35. components: {
  36. PreviewComponent,
  37. UploadComponent,
  38. EDesc,
  39. EDescItem
  40. },
  41. data() {
  42. return {
  43. visible: false,
  44. previewVisible: false,
  45. dataList: [],
  46. downloadUrl: downloadUrl
  47. }
  48. },
  49. methods: {
  50. onChose() {
  51. this.visible = false
  52. },
  53. async init(drawList) {
  54. this.visible = true
  55. this.dataList = drawList
  56. },
  57. // 预览
  58. previewFile(fileName, url) {
  59. this.previewVisible = true
  60. this.$nextTick(() => {
  61. this.$refs.preview.init(fileName, url)
  62. })
  63. }
  64. }
  65. }
  66. </script>
  67. <style scoped></style>