riku
2026-01-22 f14ea940fb32105de8b592992e3f53c62f31d84d
component/uploader/uploader.wxml
@@ -1,37 +1,125 @@
<view class="weui-uploader {{extClass}}">
    <view class="weui-uploader__hd">
      <view class="weui-uploader__overview">
          <view wx:if="{{title}}" class="weui-uploader__title {{titleClass}}" >{{title}}</view>
          <view wx:else><slot name="title"></slot></view>
          <view class="weui-uploader__info {{countInfo}}" wx:if="{{maxCount > 1}}">{{currentFiles.length}}/{{maxCount}}</view>
      </view>
        <view wx:if="{{tips}}" class="weui-uploader__tips">{{tips}}</view>
        <view wx:else><slot name="tips"></slot></view>
  <view class="weui-uploader__hd">
    <view class="weui-uploader__overview">
      <view wx:if="{{title}}" class="weui-uploader__title {{titleClass}}"
        >{{title}}</view
      >
      <view wx:else><slot name="title"></slot></view>
      <view class="weui-uploader__info {{countInfo}}" wx:if="{{maxCount > 1}}"
        >{{currentFiles.length}}/{{maxCount}}</view
      >
    </view>
    <view class="weui-uploader__bd">
        <view class="weui-uploader__files">
            <block wx:for="{{currentFiles}}" wx:key="*this">
                <view wx:if="{{item.error}}" data-index="{{index}}" bindtap="previewImage" class="weui-uploader__file weui-uploader__file_status">
                    <image class="weui-uploader__img" src="{{item.url}}" mode="aspectFill" />
                    <view class="weui-uploader__file-content">
                        <icon type="warn" size="23" color="#F43530"></icon>
                    </view>
                </view>
                <view wx:elif="{{item.loading}}" data-index="{{index}}" bindtap="previewImage" class="weui-uploader__file weui-uploader__file_status">
                    <image class="weui-uploader__img" src="{{item.url}}" mode="aspectFill" />
                    <view class="weui-uploader__file-content">
                    <view class="weui-loading"></view>
                    </view>
                </view>
                <view wx:else class="weui-uploader__file" data-index="{{index}}" bindtap="previewImage">
                    <image class="weui-uploader__img" src="{{item.url}}" mode="aspectFill" />
                </view>
            </block>
        </view>
        <view wx:if="{{currentFiles.length < maxCount}}" class="weui-uploader__input-box" hover-class="weui-active">
            <view class="weui-uploader__input" bindtap="chooseImage"></view>
        </view>
    <view wx:if="{{tips}}" class="weui-uploader__tips">{{tips}}</view>
    <view wx:else><slot name="tips"></slot></view>
  </view>
  <view class="weui-uploader__bd">
    <view class="weui-uploader__files">
      <block wx:for="{{currentFiles}}" wx:key="index">
        <!-- 图片 -->
        <block wx:if="{{item.type == 'image'}}">
          <view
            wx:if="{{item.error}}"
            data-index="{{index}}"
            bindtap="previewImage"
            class="weui-uploader__file weui-uploader__file_status"
          >
            <image
              class="weui-uploader__img"
              src="{{item.url}}"
              mode="aspectFill"
            />
            <view class="weui-uploader__file-content">
              <icon type="warn" size="23" color="#F43530"></icon>
            </view>
          </view>
          <view
            wx:elif="{{item.loading}}"
            data-index="{{index}}"
            bindtap="previewImage"
            class="weui-uploader__file weui-uploader__file_status"
          >
            <image
              class="weui-uploader__img"
              src="{{item.url}}"
              mode="aspectFill"
            />
            <view class="weui-uploader__file-content">
              <view class="weui-loading"></view>
            </view>
          </view>
          <view
            wx:else
            class="weui-uploader__file"
            data-index="{{index}}"
            bindtap="previewImage"
          >
            <image
              class="weui-uploader__img"
              src="{{item.url}}"
              mode="aspectFill"
            />
            <view class="close-btn">
              <t-icon
                name="close"
                size="36rpx"
                data-index="{{index}}"
                catch:tap="deleteFile"
              ></t-icon>
            </view>
          </view>
        </block>
        <block wx:elif="{{item.type == 'file'}}">
          <view
            data-index="{{index}}"
            bindtap="previewFile"
            class="weui-uploader__file"
          >
            <view
              class="{{'weui-uploader__img uploader-preview__file ' + item.styleClass}}"
            >
              <view class="wrap">
                <span class="{{'txt ' + item.styleClass}}">{{item.name}}</span>
                <!-- <span class="{{'filename ' + item.styleClass}}" data-title="{{item.name}}"
                  >{{item.name}}</span
                > -->
              </view>
              <text class="unit" data-ext="{{item.ext}}">{{item.size}}</text>
            </view>
            <view class="close-btn">
              <t-icon
                name="close"
                size="36rpx"
                data-index="{{index}}"
                catch:tap="deleteFile"
              ></t-icon>
            </view>
          </view>
        </block>
      </block>
    </view>
    <view
      wx:if="{{currentFiles.length < maxCount}}"
      class="weui-uploader__input-box"
      hover-class="weui-active"
    >
      <view class="weui-uploader__input" bindtap="showActionSheet"></view>
    </view>
  </view>
</view>
<mp-gallery class="gallery" hide-on-click="{{true}}" show-delete="{{showDelete}}" show="{{showPreview}}" binddelete="deletePic" img-urls="{{previewImageUrls}}" current="{{previewCurrent}}"></mp-gallery>
<mp-gallery
  class="gallery"
  hide-on-click="{{true}}"
  show-delete="{{showDelete}}"
  show="{{showPreview}}"
  binddelete="deletePic"
  img-urls="{{previewImageUrls}}"
  current="{{previewCurrent}}"
></mp-gallery>
<mp-actionSheet
  bindactiontap="actionClick"
  show="{{showSheet}}"
  actions="{{groups}}"
  showCancel="{{true}}"
  showClose="{{false}}"
>
</mp-actionSheet>