yz3456
2024-05-10 fa3615d2dcad3eb020a7ac59581546a6560e37ae
ruoyi-ui/src/views/note/memo.vue
@@ -11,6 +11,7 @@
        <template slot-scope="scope">{{scope.row.happenTime? scope.row.happenTime: '————'}}</template>
      </el-table-column>
      <el-table-column label="内容" prop="content" sortable width="180px" />
      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
        <template slot-scope="scope" v-if="scope.row.roleId !== 1">
@@ -28,6 +29,9 @@
            @click="handleDelete(scope.row)"
            v-hasPermi="['system:role:remove']"
          > <sapn v-html="'\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'"></sapn></el-button>
          <el-dropdown size="mini" @command="(command) => handleCommand(command, scope.row)" v-hasPermi="['familymodel:property:info']">
            <el-button size="mini" type="text" icon="el-icon-d-arrow-right"  @click="handleCheck(scope.row)">查看详情</el-button>
          </el-dropdown>
        </template>
      </el-table-column>
    </el-table>
@@ -59,21 +63,278 @@
            </el-input>
          </el-form-item>
        <h4 class="form-header">相关图片 </h4>
          <el-upload
            action="#"
            list-type="picture-card"
            multiple
            :http-request="requestUpload"
            :file-list="fileList"
        :on-change="handleChange"
        :auto-upload="false"
          ref="upload"
          >
          <i slot="default" class="el-icon-plus"></i>
          <div slot="file" slot-scope="{file}">
            <img
              class="el-upload-list__item-thumbnail"
              :src="file.url"
              alt=""
              style="width: 126px; height: 126px"
              fit="cover"
              :preview-src-list="[file.url]"
            >
            <span class="el-upload-list__item-actions">
        <span
          class="el-upload-list__item-preview"
          @click="handlePictureCardPreview(file)"
        >
          <i class="el-icon-zoom-in"></i>
        </span>
        <span
          v-if="!disabled"
          class="el-upload-list__item-delete"
          @click="handleRemove2(file)"
        >
          <i class="el-icon-delete"></i>
        </span>
      </span>
          </div>
        </el-upload>
      <el-button
               style="margin-left: 10px"
               size="small"
               type="success"
               @click="picUpload"
             >上传到服务器</el-button>
        <h4 class="form-header">其他附件 </h4>
<el-upload
          action=""
          :file-list="fileListOther"
          class="upload-demo"
          multiple
          :on-remove="handleRemoveFile2"
          :show-file-list="true"
        ref="upload1"
        :on-change="handleChange1"
        :auto-upload="false"
        list-type="picture-card"
          :http-request="requestUpload1"
        >
          <!-- <el-button type="primary">点击上传</el-button> -->
          <template #tip>
            <div class="el-upload__tip">
            </div>
          </template>
          <i v-if="true" slot="default" class="el-icon-plus"></i>
          <div slot="file" slot-scope="{file}">
            <!-- 添加video元素用于显示视频 -->
            <video
              v-if="file.url.includes('.mp4')"
              class="el-upload-list__item-thumbnail"
              :src="file.url"
                 style="width: 147px; height: 147px"
              fit="fill"
            ></video>
            <img v-else
                 class="el-upload-list__item-thumbnail"
                 src="../../assets/images/deviceLis.png"
                 alt=""
                 style="width: 147px; height: 147px"
                 fit="cover">
            <span class="el-upload-list__item-actions">
                 <span class="el-upload-list__item-name">{{file.name}}</span>
                      <span
                        class="el-upload-list__item-preview"
                        @click="handleFileCardPreview(file)"
                      >
                        <i class="el-icon-zoom-in"></i>
                      </span>
                      <span
                        class="el-upload-list__item-delete"
                        @click="handleDownload(file.url)"
                      >
                   <i class="el-icon-download"></i>
                   </span>
                      <span
                        class="el-upload-list__item-delete"
                        @click="handleRemoveFile2(file)"
                      >
                        <i class="el-icon-delete"></i>
                      </span>
                </span>
               <!-- <div style="height: 50px;">
                {{file.name}}
                </div> -->
            <!-- <div style="position:absolute; z-index:2; left:0px; top:70%">{{file.name}}</div> -->
          </div>
        </el-upload>
        <el-button
          style="margin-left: 10px;"
          size="small"
          type="success"
          @click="fileUpload"
        >上传到服务器</el-button>
        </el-form>
      </el-col>
      <h4 class="form-header"> </h4>
      <div slot="footer" class="dialog-footer">
        <el-button type="primary" @click="submitDataScope6">保 存</el-button>
        <el-button @click="cancelData">取 消</el-button>
      </div>
    </el-dialog>
    <!-- 查看详情弹窗 -->
    <el-dialog title="详情" :visible.sync="open2" width="900px" append-to-body>
          <el-col >
            <el-form ref="elForm" :model="formDat" :rules="rules" size="medium" label-width="100px">
              <el-form-item label="时间" prop="happenTime">
                <el-date-picker
                  v-model='formDat.happenTime'
                  type='date'
                  placeholder='选择日期'
               value-format="yyyy-MM-dd"
            disabled
                ></el-date-picker>
              </el-form-item>
              <el-form-item label="内容" prop="content">
                <el-input v-model="formDat.content" placeholder="请输入内容" clearable :style="{width: '100%'}" disabled>
                </el-input>
              </el-form-item>
            <h4 class="form-header">相关图片 </h4>
              <el-upload
                action="#"
                list-type="picture-card"
                multiple
                :http-request="requestUpload"
                :file-list="fileList"
            :on-change="handleChange"
            disabled
            :auto-upload="false"
              ref="upload"
              :class="{ hide: no }"
              >
              <i slot="default" class="el-icon-plus"></i>
              <div slot="file" slot-scope="{file}">
               <img
                  class="el-upload-list__item-thumbnail"
                  :src="file.url"
                  alt=""
                  style="width: 126px; height: 126px"
                  fit="cover"
                  :preview-src-list="[file.url]"
                >
                <span class="el-upload-list__item-actions">
            <span
              class="el-upload-list__item-preview"
              @click="handlePictureCardPreview(file)"
            >
              <i class="el-icon-zoom-in"></i>
            </span>
            <span
              class="el-upload-list__item-delete"
              @click="handleDownload(file.url)"
            >
              <i class="el-icon-download"></i>
            </span>
          </span>
              </div>
            </el-upload>
            <h4 class="form-header">其他附件 </h4>
    <el-upload
              action=""
              :file-list="fileListOther"
              class="upload-demo"
              multiple
              disabled
              :on-remove="handleRemoveFile2"
              :show-file-list="true"
            ref="upload1"
            :on-change="handleChange1"
            :auto-upload="false"
            list-type="picture-card"
              :http-request="requestUpload1"
            :class="{ hide: no }"
            >
            <div slot="file" slot-scope="{file}">
              <!-- 添加video元素用于显示视频 -->
              <video
                v-if="file.url.includes('.mp4')"
                class="el-upload-list__item-thumbnail"
                :src="file.url"
                style="width: 147px; height: 147px"
                fit="cover"
              ></video>
              <img v-else
                   class="el-upload-list__item-thumbnail"
                   src="../../assets/images/deviceLis.png"
                   alt=""
                   style="width: 100%; height: 100%"
                   fit="cover">
              <span class="el-upload-list__item-actions">
                   <span class="el-upload-list__item-name">{{ file.name }}</span>
                        <span
                          class="el-upload-list__item-preview"
                          @click="handleFileCardPreview(file)"
                        >
                          <i class="el-icon-zoom-in"></i>
                        </span>
                        <span
                          class="el-upload-list__item-delete"
                          @click="handleDownload(file.url)"
                        >
                     <i class="el-icon-download"></i>
                     </span>
                  </span>
            </div>
            </el-upload>
            </el-form>
          </el-col>
          <h4 class="form-header"> </h4>
          <div slot="footer" class="dialog-footer">
            <!-- <el-button type="primary" @click="submitDataScope6">保 存</el-button> -->
            <el-button @click="cancelData">取 消</el-button>
          </div>
        </el-dialog>
    <!-- 分配角色数据权限对话框 -->
    <el-dialog :title="title" :visible.sync="openDataScope" width="500px" append-to-body>
    </el-dialog>
    <el-dialog  :visible.sync="dialogVisible">
      <img w-full :src="dialogImageUrl"    style="width: 100%; height: 100%" alt="Preview Image" />
    </el-dialog>
  </div>
@@ -86,8 +347,9 @@
//在system/note/index.js中导入接口函数  --接好了
import {addNote,listNote,updateNote,delNote, uploadPic} from "@/api/allmemo/index";
import {addNote,listNote,updateNote,delNote, uploadPic,download} from "@/api/allmemo/index";
import { TimeSelect } from "element-ui";
import {blobValidate} from "@/utils/ruoyi";
import {addAutobiography, updateAutobiography} from "@/api/self";
export default {
@@ -95,11 +357,21 @@
  dicts: ['sys_normal_disable'],
  data() {
    return {
      no:true,
      dialogImageUrl: '',
      dialogVisible: false,
      isEdit1:false,
      // 遮罩层
      disabled: false,
      loading: true,
      formData:[],
      formData:{
        id:undefined,
        content: undefined,
        happenTime: undefined,
        fid:2007,
        cid:undefined,
        url:''
      },
      // 选中数组
      ids: [],
      id:undefined,
@@ -117,11 +389,13 @@
        content: undefined,
        happenTime: undefined,
        fid:2007,
        cid:undefined,},
        cid:undefined,
        url:''},
      // 弹出层标题
      title: "",
      // 是否显示弹出层
      open: false,
      open2: false,
      // 是否显示弹出层(数据权限)
      openDataScope: false,
      menuExpand: false,
@@ -134,12 +408,12 @@
     // 数据范围选项
     fot:['.bmp','.jpg','.jpeg','.png','.tif','.gif','.pcx','.tga','.exif','.fpx',
       '.svg','.psd','.cdr','.pcd','.dxf','.ufo','.eps','.ai','.aw','.WMF','.webp','.apng'],
      fileList:[
      ],
      fileListOther:[
      ],
      fileList1:[],
      uploadFileList: [],
      uploadFileList1: [],
      fileListOther:[],
      dsb:true,
      btn:false,
      formDat: {
@@ -148,6 +422,7 @@
        happenTime: undefined,
        fid:2007,
        cid:undefined,
        url:''
      },
      // 菜单列表
      menuOptions: [],
@@ -203,39 +478,132 @@
  },
  methods: {
    //  弹窗
    handleShow(scope){
      this.openDataScope = true
      this.getList()
    },
    fileUpload(){
    //   var file = params.file;
       var formData = new FormData();
    //   this.$refs.upload1.submit();
       // formData.append('uploadFile', file);
       if(this.uploadFileList1.length==0){
            this.$modal.msgSuccess("文档上传列表不能为空!");
            return
       }
       this.uploadFileList1.forEach((elem)=>{
          formData.append("files", elem)
       })
       let _this = this
       this.uploading = true;
       uploadPic(formData).then(response => {
       _this.uploadFileList1 = []
       _this.formDat.url = _this.formDat.url+","+response.fileNames
       _this.$modal.msgSuccess("文件上传成功!");
         })
            // const cid = this.$route.params && this.$route.params.id;
            // this.getList(2007,cid);
    },
    // 查看文件
    handleFileCardPreview(file){
      this.dialogFileUrl = file.url;
      if(this.dialogFileUrl.includes("47.93.189.255")==true)
        this.dialogFileUrl = this.dialogFileUrl.replace("47.93.189.255","www.bendudu.com")
      //alert(this.dialogFileUrl)
      const Base64 = require('js-base64').Base64
      this.desurl = process.env.VUE_APP_BASE_OTHER_API+"preview/"+'onlinePreview?url='+encodeURIComponent(Base64.encode(this.dialogFileUrl));
      let myWindow=window.open(this.desurl,'','width=1200,height=800,top=150,left=300');
    },
    picUpload()
    {
      // alert('1321321')
       var formData = new FormData();
    if(this.uploadFileList.length==0){
         this.$modal.msgSuccess("图片上传列表不能为空!");
         return}
       this.uploadFileList.forEach((elem)=>{
          formData.append("files", elem)
       })
    const cid = this.$route.params && this.$route.params.id;
      const fid =2007;
      this.formDat.fid = 2007;
      this.formDat.cid = parseInt(cid) ;
       let _this = this
    if(this.isEdit1){
      uploadPic(formData).then(response => {
          _this.formDat.url = _this.formDat.url+","+response.fileNames
      // alert(_this.formDat.url)
        _this.uploadFileList = []
        console.log(_this.formDat)
        updateNote(_this.formDat).then(response => {
          alert('修改')
        _this.$modal.msgSuccess("图片上传成功");
        })
      });
    }else{
      uploadPic(formData).then(response => {
          _this.formDat.url = _this.formDat.url+","+response.fileNames
      // alert('新增')
      // alert(_this.formDat.url)
        _this.uploadFileList = []
        _this.$modal.msgSuccess("图片上传成功");
      });
    }
            console.log(this.formDat,'formDatformDatformDatformDat')
    },
    //个人自传的保存
    submitDataScope6: function() {
      const cid = this.$route.params && this.$route.params.id;
      const fid =2007;
      this.formDat.fid = 2007;
      this.formDat.cid = cid ;
      console.log(this.formDat)
      console.log(this.isEdit1)
      // console.log(this.formDat,'formDatformDatformDatformDat')
      // console.log(this.isEdit1)
      this.$refs["elForm"].validate(valid => {
        if (valid) {
          if (this.isEdit1) {
            // 执行修改操作
            updateNote(this.formDat).then(response => {
              console.log("1")
              // console.log("1")
              this.$modal.msgSuccess("修改成功");
              this.open = false;
              //清空formDat对象的数据
              Object.keys(this.formDat).forEach(key => {
                this.formDat[key] = '';
              });
              for(let i = 0; i <= this.fileList.length; i++)
              {
                this.handleRemove(this.fileList[0]);
              }
              for(let i = 0; i < this.fileListOther.length; i++){
                this.handleRemoveFile(this.fileListOther[0]);
              }
              this.isEdit1 = false;
              this.getList(2007,cid);
            }).catch(error => {
              console.log(error);
              console.log(error,'erroerro1');
              this.isEdit1 = false;
              this.open = false;
            });
          } else {
            // 执行新增操作
         console.log(this.formDat)
         // console.log(this.formDat)
            addNote(this.formDat).then(response => {
              // this.formDat.term = selectedOption.label;
              this.$modal.msgSuccess("新增成功");
@@ -244,9 +612,16 @@
              Object.keys(this.formDat).forEach(key => {
                this.formDat[key] = '';
              });
              for(let i = 0; i <= this.fileList.length; i++)
              {
                this.handleRemove(this.fileList[0]);
              }
              for(let i = 0; i < this.fileListOther.length; i++){
                this.handleRemoveFile(this.fileListOther[0]);
              }
              this.getList(2007,cid);
            }).catch(error => {
              console.log(error);
              console.log(error,'erroerro2');
              this.open = false;
            });
          }
@@ -259,20 +634,50 @@
    editAutobiography(row) {
      const id = row.id;
      console.log(id)
      console.log(row.content)
      // console.log(id)
      // console.log(row.content)
      this.isEdit1 = true;
      this.formDat.cid = row.cid;
      this.formDat.id = row.id;
      this.formDat.happenTime = row.happenTime;
      this.formDat.content = row.content;
      this.formDat.url = row.url
      this.open = true;
      console.log(this.formDat)
      //console.log(this.formDat)
      let paths = this.formDat.url.split(",");
      let _this = this
      _this.fileList = []
      _this.fileListOther = []
      for(let i = 0; i < paths.length; i++)
      {
        if(paths[i]!="") {
            let pth = paths[i].substr(paths[i].length - 4, paths[i].length)
        //   alert(pth)
            if (_this.fot.includes(pth) === true)
           {
              if(paths[i][0]=="/")
              _this.fileList.push({name:paths[i],url: process.env.VUE_APP_BASE_TRUE_API+paths[i].substr(1),res:false})
             else
                _this.fileList.push({name:paths[i],url: process.env.VUE_APP_BASE_TRUE_API+paths[i],res:false})
             }
            else {
              let nms = paths[i].split("\/")
              let nm = nms[nms.length - 1]
             if(paths[i][0]=="/")
              _this.fileListOther.push({name:nm, url: process.env.VUE_APP_BASE_TRUE_API+paths[i].substr(1),res:false})
              else
              _this.fileListOther.push({name:nm, url: process.env.VUE_APP_BASE_TRUE_API+paths[i],res:false})
           }
          }
      }
      },
    // 取消按钮
    cancelData() {
      this.open = false;
      this.open2=false;
      this.reset();
    },
@@ -297,16 +702,151 @@
      listNote(cid, 2007).then(response => {
          this.memoList = response.data;
          console.log(this.memoList)
          // console.log(response,'formDataformDataformDataformDataformData')
          this.loading = false;
        }
      );
    },
    handleRemove(file) {
handleRemove(file) {
      for(let i = 0; i < this.fileList.length; i++)
      {
        if(this.fileList[i].url==file.url)
        {
          this.$delete(this.fileList,i);
             this.$delete(this.uploadFileList,i);
             }
            //alert(this.formData.url)
      }
    },
    handleRemoveFile2(file) {
      this.formData=this.formDat
      //判读是否是之前的图片
      let res = false
        for(let i = 0; i < this.fileListOther.length; i++)
        {
          if(this.fileListOther[i].url==file.url)
       {
          if(this.fileListOther[i].res==false)
             res = true
          else
          {
             this.$delete(this.uploadFileList1, Math.abs(i - this.uploadFileList1.length-1))
          }
            this.$delete(this.fileListOther,i);
       }
        }
      let ul = ""
      this.fileList.map(function (elem){
            if(elem.res==false)
               ul = ul + ","+elem.url.replace(process.env.VUE_APP_BASE_TRUE_API,"")
      })
      let uls = ""
      this.fileListOther.map(function (elem){
        if(elem.res==false)
               uls = uls +","+elem.url.replace(process.env.VUE_APP_BASE_TRUE_API,"")
      })
      this.formData.url = ul+","+uls;
    //  alert(this.formData.url)
      if(res==true){
         updateNote(this.formData).then(response => {
          this.$modal.msgSuccess("删除成功");
          // this.open = false;
         });
      }
      },
    handleRemove2(file) {
      this.formData=this.formDat
           //判断是否是之前的图片
     let res = false
      for(let i = 0; i < this.fileList.length; i++)
      {
        if(this.fileList[i].url==file.url)
      {
         //原来图像标记为false
         //alert(this.fileList[i].res)
        if(this.fileList[i].res==false)
         res = true
        else
        {
          this.$delete(this.uploadFileList, Math.abs(i - this.uploadFileList.length-1))
          }
          this.$delete(this.fileList,i);
      }
     }
     let ul = ""
     this.fileList.map(function (elem){
      if(elem.res==false)
         ul = ul + ","+elem.url.replace(process.env.VUE_APP_BASE_TRUE_API,"")
     })
     let uls = ""
     this.fileListOther.map(function (elem){
       if(elem.res==false)
         uls = uls +","+elem.url.replace(process.env.VUE_APP_BASE_TRUE_API,"")
     })
     this.formData.url = ul+","+uls;
    console.log(this.fileList,'fileListfileListfileListfileListfileListfileList')
    console.log(this.fileListOther,'uploadFileListuploadFileListuploadFileListuploadFileList')
    console.log(this.formData,'formDataformDataformDataformDataformDataformDataformData222222222')
     if(res==true){
        updateNote(this.formData).then(response => {
         this.$modal.msgSuccess("删除成功");
        });
     }
    },
      handleCheck(row){
      const id = row.id;
      this.formDat.cid = row.cid;
      this.formDat.id = row.id;
      this.formDat.happenTime = row.happenTime;
      this.formDat.content = row.content;
      this.formDat.url = row.url
      this.open2 = true;
      //console.log(this.formDat)
      let paths = this.formDat.url.split(",");
      let _this = this
      _this.fileList = []
      _this.fileListOther = []
      for(let i = 0; i < paths.length; i++)
      {
        if(paths[i]!="") {
            let pth = paths[i].substr(paths[i].length - 4, paths[i].length)
        //   alert(pth)
            if (_this.fot.includes(pth) === true)
           {
              if(paths[i][0]=="/")
              _this.fileList.push({name:paths[i],url: process.env.VUE_APP_BASE_TRUE_API+paths[i].substr(1),res:false})
             else
                _this.fileList.push({name:paths[i],url: process.env.VUE_APP_BASE_TRUE_API+paths[i],res:false})
             }
            else {
              let nms = paths[i].split("\/")
              let nm = nms[nms.length - 1]
             if(paths[i][0]=="/")
              _this.fileListOther.push({name:nm, url: process.env.VUE_APP_BASE_TRUE_API+paths[i].substr(1),res:false})
              else
              _this.fileListOther.push({name:nm, url: process.env.VUE_APP_BASE_TRUE_API+paths[i],res:false})
           }
          }
      }
      },
    handleRemoveFile(file) {
      for(let i = 0; i < this.fileListOther.length; i++)
      {
        if(this.fileListOther[i].url==file.url)
       {
          this.$delete(this.fileListOther,i);
         this.$delete(this.uploadFileList1,i);
         }
      }
    },
@@ -333,6 +873,10 @@
      if (this.$refs.menu != undefined) {
        this.$refs.menu.setCheckedKeys([]);
      }
      // this.fileList = [],
      // this.fileListOther = [],
      // this.formDat.happenTime=undefined,
      // this.formDat.content=undefined,
      this.menuExpand = false,
        this.menuNodeAll = false,
        this.deptExpand = true,
@@ -371,9 +915,36 @@
      this.single = selection.length!=1
      this.multiple = !selection.length
    },
    // 下载按钮
    handleDownload(url) {
      var formData = {'path':"/"+url.replace(process.env.VUE_APP_BASE_TRUE_API,"")};
      let lens = formData.path.split(".")
      let suffix = lens[lens.length-1]
      download(formData).then(async (response) => {
        const isLogin = await blobValidate(response);
        let nt = new Date().getTime()
        let filename = 'familyevent_'+nt+'.'+suffix
        const blob = new Blob([response])
        saveAs(blob, filename)
      })
    },
    /** 新增按钮操作 */
    handleAdd() {
      for(let i=0;i<2;i++){
        //清空formDat对象的数据
        Object.keys(this.formDat).forEach(key => {
          this.formDat[key] = '';
        });
        for(let i = 0; i <= this.fileList.length; i++)
        {
          this.handleRemove(this.fileList[0]);
        }
        for(let i = 0; i < this.fileListOther.length; i++){
          this.handleRemoveFile(this.fileListOther[0]);
        }
      }
      this.reset();
      this.isEdit1=false;
      this.open = true;
@@ -424,29 +995,27 @@
      });
    },
    requestUpload(params)
    {
      var file = params.file;
      var formData = new FormData();
      formData.append('uploadFile', file);
      let _this = this
      uploadPic(formData).then(response => {
        let pth = response.data.originalFilename.substr(response.data.originalFilename.length-4, response.data.originalFilename.length)
        if(_this.fot.includes(pth) === true)
        {
          _this.fileList.push({name:response.data.fileName, "url":response.data.url})
        }
        else{
          _this.fileListOther.push({name:response.data.fileName, url:response.data.url})
        }
      })
    requestUpload(params) {
    //alert(98)
     //    this.uploadFileList.push(params.file);
    },
    requestUpload1(params)
    {
    //     this.uploadFileList1.push(params.file);
    },
    handleChange(file, fileList1) {
          //定义一个全局数组uploadFileList来做存储
         console.log("=========5555=========")
         console.log(file)
           this.uploadFileList.push(file.raw);
            this.fileList.push({name:file.name,url:file.url})
       },
       handleChange1(file, fileOtherList1) {
          //定义一个全局数组uploadFileList来做存储
       this.uploadFileList1.push(file.raw);
        this.fileListOther.push({name:file.name,url:file.url})
         console.log("=========5555=========")
       },
    /** 删除按钮操作 */
    handleDelete(row) {
      const id = row.id || this.id;
@@ -487,7 +1056,7 @@
      var formData = new FormData();
      formData.append('excelImport', file);
      let _this = this
      enload(formData).then(response => {
        _this.getList();
        Message({ message: "导入成功", type: 'warning' })
@@ -500,12 +1069,8 @@
    }
  },
  //  弹窗
  handleShow(scope){
    this.openDataScope = true
    this.getList()
  }
};
</script>
@@ -519,6 +1084,9 @@
  background: #FFEFF2;
}
.hide .el-upload--picture-card{
  display:none;   /* 上传按钮隐藏 */
}
.button1 {
  background:center no-repeat url('../../assets/icons/add1.png') ;