疯狂的狮子li
2022-05-12 af6a08398e2bc22f3c8a3a615cbd9e23190be906
ruoyi-ui/src/components/ImageUpload/index.vue
@@ -44,7 +44,7 @@
<script>
import { getToken } from "@/utils/auth";
import { delOss } from "@/api/system/oss";
import { listByIds, delOss } from "@/api/system/oss";
export default {
  props: {
@@ -87,19 +87,21 @@
  },
  watch: {
    value: {
      handler(val) {
      async handler(val) {
        if (val) {
          // 首先将值转为数组
          const list = Array.isArray(val) ? val : this.value.split(',');
          let list;
          if (Array.isArray(val)) {
            list = val;
          } else {
            await listByIds(val).then(res => {
              list = res.data;
            })
          }
          // 然后将数组转为对象数组
          this.fileList = list.map(item => {
            // 字符串回显处理 如果此处存的是url可直接回显 如果存的是id需要调用接口查出来
            if (typeof item === "string") {
              item = { name: item, url: item };
            } else {
              // 此处name使用ossId 防止删除出现重名
              item = { name: item.ossId, url: item.url, ossId: item.ossId };
            }
            // 此处name使用ossId 防止删除出现重名
            item = { name: item.ossId, url: item.url, ossId: item.ossId };
            return item;
          });
        } else {
@@ -125,7 +127,7 @@
        let ossId = this.fileList[findex].ossId;
        delOss(ossId);
        this.fileList.splice(findex, 1);
        this.$emit("input", this.fileList);
        this.$emit("input", this.listToString(this.fileList));
      }
    },
    // 上传成功回调
@@ -136,7 +138,7 @@
          this.fileList = this.fileList.concat(this.uploadList);
          this.uploadList = [];
          this.number = 0;
          this.$emit("input", this.fileList);
          this.$emit("input", this.listToString(this.fileList));
          this.$modal.closeLoading();
        }
      } else {
@@ -189,6 +191,15 @@
      this.dialogImageUrl = file.url;
      this.dialogVisible = true;
    },
    // 对象转成指定字符串分隔
    listToString(list, separator) {
      let strs = "";
      separator = separator || ",";
      for (let i in list) {
        strs += list[i].ossId + separator;
      }
      return strs != "" ? strs.substr(0, strs.length - 1) : "";
    },
  }
};
</script>