在Ant Design Vue 中使用图片预览的插件

在package.json中 安装 viewerjs

样式部门代码

复制代码
        <!-- 图片显示区域 - 使用Viewer.js -->
        <template slot="images" slot-scope="text, record">
          <div class="image-container">
            <div class="image_list" :id="'image-group-' + record.id">
              <div v-for="(img, index) in text" :key="index" class="imageInfo">
                <img :src="fixImageUrl(img)" class="image_item" />
              </div>
            </div>
            <div v-if="!text || text.length === 0" class="no-image">无图片</div>
          </div>
        </template>

Js部分代码

复制代码
 data() {
    return {
      viewerInstances: {}, // 存储Viewer实例
 // 表格列配置
      columns: [
        {
          title: "图片",
          dataIndex: "images",
          scopedSlots: { customRender: "images" },
          width: 400,
        },
          ]
   }
}

methods 方法部分

复制代码
 methods: {
    /**
     * 初始化Viewer.js实例
     */
    initViewers() {
      // 销毁现有的Viewer实例
      this.destroyAllViewers();

      // 为每个图片组创建Viewer实例
      this.orderData.forEach((item) => {
        if (item.images && item.images.length > 0) {
          const container = document.getElementById(`image-group-${item.id}`);
          if (container) {
            this.viewerInstances[item.id] = new Viewer(container, {
              toolbar: {
                zoomIn: 1, // 放大
                zoomOut: 1, // 缩小
                oneToOne: 1, // 1:1比例
                prev: 1, // 上一张
                next: 1, // 下一张
              },
              movable: true, // 允许拖拽图片
              zoomable: true, // 允许缩放
              rotatable: true, // 允许旋转
              scalable: true, // 允许拉伸
              transition: true, // 切换图片时使用过渡动画
              fullscreen: true, // 支持全屏
              keyboard: true, // 支持键盘操作(如箭头键切换图片)
            });
          }
        }
      });
    },

    /**
     * 销毁所有Viewer实例
     */
    destroyAllViewers() {
      Object.keys(this.viewerInstances).forEach((key) => {
        if (this.viewerInstances[key]) {
          this.viewerInstances[key].destroy();
        }
      });
      this.viewerInstances = {};
    },
}

最终效果

相关推荐
舒灿2 小时前
DeepSeek Harness——Agent自我进化的实现途径?
前端·ai编程·deepseek
嘟嘟07172 小时前
顺时针螺旋填充 n×n 矩阵:手撕 generateMatrix 的四个 for 循环
javascript·算法·面试
weixin_BYSJ19872 小时前
springboot技能与工具共享小程序---附源码29657
java·javascript·spring boot·python·小程序·django·php
cindershade2 小时前
React Server Components 在真实项目中的边界:哪些组件该放在服务端
前端
OpenTiny社区2 小时前
GenUI SDK v1.3.0 开发者深度解读:当生成式 UI 开始"长出"工程化骨架
前端·ai编程
前端粉刷匠2 小时前
2025 年是 Agent 的,2026 年是 Harness 的——AI 编程 Harness 架构深度解析
前端·人工智能
张元清2 小时前
React useSessionStorage Hook:刷新不丢、只属于当前标签页的状态 (2026)
前端·javascript·react.js
weixin_BYSJ19872 小时前
flask民族服饰饰品商城小程序---附源码37399
java·javascript·spring boot·python·小程序·django·php
xiaominlaopodaren2 小时前
three.js最小地图运行时(一):视图状态
javascript·gis·three.js
cindershade2 小时前
为 TypeScript 项目建立可靠的类型边界:API 响应、表单与第三方库
前端