feige
2023-11-10 bcac500a760877dc9140f1f381739793706c1af6
ruoyi-ui/src/views/travel/travelInfo.vue
@@ -1,31 +1,62 @@
<template>
  <div class="app-container">
  <div class="app-container" id="printable-content">
    <div class="form-header mt">
      <h4 class="dt h4">旅游经历详细信息 </h4>
      <h1 style="font-size:21px;padding-top:30px;display: flex;justify-content: space-between;align-items: center;" >
        <span>旅游经历详细信息</span>
        <div style="display: flex; align-items: center;">
          <el-button size="mini" type="text"  v-print="'#printable-content'" v-hasPermi="['person:information:memo']">
            <div class="form" ><el-icon  style="padding-right:100px;"></el-icon>
              <span class="text" style="width: 69px;height: 26px;font-size: 16px;
            font-family: Microsoft YaHei-Regular, Microsoft YaHei; color: #EBA4AA;">打印</span></div>
          </el-button></div>
      </h1>
    </div>
    <div >
      <el-form ref="elForm" :model="formData" :rules="rules" size="medium" label-width="100px" style="width: 60%;">
        <el-form-item label="发生时间" prop="happenTime">
          <el-input v-model="formData.happenTime" placeholder="请输入发生时间" clearable :style="{width: '100%'}" :disabled="dsb">
          </el-input>
        <el-form-item label="发生时间" prop="happenDate">
          <el-date-picker v-model="formData.happenDate" type="date" placeholder="请选择日期"
                          :editable="false" :clearable="false" :style="{width: '100%'}" :disabled="dsb" value-format="yyyy-MM-dd"
          ></el-date-picker>
        </el-form-item>
        <el-form-item label="地点" prop="address">
          <el-input v-model="formData.address" placeholder="请输入地点" clearable :style="{width: '100%'}" :disabled="dsb">
          </el-input>
        </el-form-item>
        <el-form-item label="人物" prop="people">
          <el-input v-model="formData.people" placeholder="请输入人物" clearable :style="{width: '100%'}" :disabled="dsb">
        <el-form-item label="建筑" prop="scenic">
          <el-input v-model="formData.scenic" placeholder="请输入建筑" clearable :style="{width: '100%'}" :disabled="dsb"></el-input>
        </el-form-item>
        <el-form-item label="门票" prop="entrance">
          <el-input v-model="formData.entrance" placeholder="请输入门票" type="number" clearable :style="{width: '100%'}" :disabled="dsb">
          </el-input>
        </el-form-item>
        <el-form-item label="标题" prop="title">
          <el-input v-model="formData.title" placeholder="请输入标题" clearable :style="{width: '100%'}" :disabled="dsb"></el-input>
        <el-form-item label="住宿酒店" prop="hotel">
          <el-input v-model="formData.hotel" placeholder="请输入住宿酒店" clearable :style="{width: '100%'}" :disabled="dsb">
          </el-input>
        </el-form-item>
        <el-form-item label="旅期" prop="travelPeriod">
          <el-input v-model="formData.travelPeriod" placeholder="请输入标题" clearable :style="{width: '100%'}" :disabled="dsb"></el-input>
        <el-form-item label="住宿费用" prop="stay">
        <el-input v-model="formData.stay" placeholder="请输入地点" type="number" clearable :style="{width: '100%'}" :disabled="dsb">
        </el-input>
      </el-form-item>
        <el-form-item label="餐费" prop="eat">
        <el-input v-model="formData.eat" placeholder="请输入地点"  type="number" clearable :style="{width: '100%'}" :disabled="dsb">
        </el-input>
      </el-form-item>
        <el-form-item label="交通费" prop="travel">
          <el-input v-model="formData.travel" placeholder="请输入交通费" type="number" clearable :style="{width: '100%'}" :disabled="dsb">
          </el-input>
        </el-form-item>
        <el-form-item label="持证旅游" prop="certificate">
          <el-select v-model="formData.certificate" placeholder="请选择证件" clearable :style="{width: '100%'}"  :disabled="dsb">
        <el-form-item label="出行方式" prop="travelMode">
          <el-input v-model="formData.travelMode" placeholder="请输入地点" clearable :style="{width: '100%'}" :disabled="dsb">
          </el-input>
        </el-form-item>
        <el-form-item label="车次/航班" prop="flight">
          <el-input v-model="formData.flight" placeholder="请输入地点" clearable :style="{width: '100%'}" :disabled="dsb">
          </el-input>
        </el-form-item>
        <el-form-item label="持证旅游" prop="document">
          <el-select v-model="formData.document" placeholder="请选择证件" clearable :style="{width: '100%'}"  :disabled="dsb">
            <el-option label="居民身份证" value="居民身份证"></el-option>
            <el-option label="临时身份证" value="临时身份证"></el-option>
            <el-option label="户口本" value="户口本"></el-option>
@@ -33,20 +64,10 @@
            <el-option label="学生证" value="学生证"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="费用" prop="totalPrice">
          <el-input v-model="formData.totalPrice" placeholder="请输入标题" clearable :style="{width: '100%'}" :disabled="true"></el-input>
        </el-form-item>
        <el-form-item label="是否公费旅游" prop="self">
          <el-select v-model="formData.self" placeholder="请选择是否" clearable :style="{width: '100%'}"  :disabled="dsb">
            <el-option label="是" value="1"></el-option>
            <el-option label="否" value="0"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="备注" prop="remark">
          <el-input v-model="formData.remark" placeholder="请输入备注" clearable :style="{width: '100%'}" :disabled="dsb"></el-input>
        </el-form-item>
<!--        <el-form-item label="备注" prop="remark">-->
<!--          <el-input v-model="formData.remark" placeholder="请输入备注" clearable :style="{width: '100%'}" :disabled="dsb"></el-input>-->
<!--        </el-form-item>-->
        <h4 class="form-header">电子文件 </h4>
@@ -56,6 +77,8 @@
          multiple
          :http-request="requestUpload"
          :file-list="fileList"
          :disabled="!btn"
          :class="{ hide: !btn }"
        >
          <div v-if="uploading" class="upload-status">正在上传...</div>
          <i v-if="!uploading" slot="default" class="el-icon-plus"></i>
@@ -107,41 +130,50 @@
          :on-remove="handleRemoveFile"
          :http-request="requestUpload"
          :show-file-list="true"
          :disabled="!btn"
          :class="{ hide: !btn }"
        >
          <div v-if="uploading" class="upload-status">正在上传...</div>
          <i v-if="!uploading" slot="default" class="el-icon-plus"></i>
          <div slot="file" slot-scope="{file}">
            <img
            <!-- 添加video元素用于显示视频 -->
            <video
              v-if="file.url.includes('.mp4')"
              class="el-upload-list__item-thumbnail"
              src="../../assets/401_images/401.gif"
              alt=""
              :src="file.url"
              style="width: 147px; height: 147px"
              fit="cover"
            >
            ></video>
            <img v-else
                 class="el-upload-list__item-thumbnail"
                 src="../../assets/401_images/401.gif"
                 alt=""
                 style="width: 100%; height: 100%"
                 fit="cover">
            <span class="el-upload-list__item-actions">
                  <span
               <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-preview"
                    @click="handleFileCardPreview(file)"
                  >
                    <i class="el-icon-zoom-in"></i>
                  </span>
                  <span
                    class="el-upload-list__item-delete"
                    @click="handleDownload(file.url)"
                  >
                      class="el-upload-list__item-delete"
                      @click="handleDownload(file.url)"
                    >
                 <i class="el-icon-download"></i>
                 </span>
                  <span
                    v-if="isShow"
                    class="el-upload-list__item-delete"
                    @click="handleRemoveFile(file)"
                  >
                    <i class="el-icon-delete"></i>
                  </span>
                </span>
                    <span
                      v-if="isShow"
                      class="el-upload-list__item-delete"
                      @click="handleRemoveFile(file)"
                    >
                      <i class="el-icon-delete"></i>
                    </span>
              </span>
          </div>
@@ -154,7 +186,7 @@
      </el-form>
    </div>
    <el-dialog  :visible.sync="dialogVisible">
      <img w-full :src="dialogImageUrl"    style="width: 700px; height: 700px" alt="Preview Image" />
      <img w-full :src="dialogImageUrl"    style="width: 100%; height: 100%" alt="Preview Image" />
    </el-dialog>
  </div>
</template>
@@ -187,19 +219,25 @@
      formData: {
        id: undefined,
        title: undefined,
        happenDate:undefined,
        entrance:undefined,
        hotel: undefined,
        people: undefined,
        address: undefined,
        remark: undefined,
        travelMode:undefined,
        stay:undefined,
        flight:undefined,
        document:undefined,
        url: undefined,
      },
      dialogImageUrl: '',
      dialogVisible: false,
      disabled: false,
      rules: {
        title: [{
          required: true,
          message: '请输入大事标题',
        flight: [{
          // required: true,
          message: '请输入车次/航班',
          trigger: 'blur'
        }],
        familyId: [{
@@ -245,6 +283,7 @@
      document.title = "旅游经历详细信息";
      this.$route.meta.title = "旅游经历详细信息";//列表的名称
      this.isShow=true
      this.btn = false;
    }
    let _this = this
@@ -283,8 +322,10 @@
      let uls = this.fileListOther.map(function (elem){
        return elem.url.replace(process.env.VUE_APP_BASE_TRUE_API,"")
      }).join(",")
      this.formData.id = this.$route.params && this.$route.params.id;
      this.formData.url = ul+","+uls
      console.log(this.formData)
      this.$refs['elForm'].validate(valid => {
@@ -335,9 +376,16 @@
    },
    handleFileCardPreview(file){
      this.dialogFileUrl = file.url;
      // alert(file.url)
      // this.dialogFileUrl = 'https://www.bendudu.com:8080/profile/upload/2023/10/18/20231018214647A011.doc'
      // this.dialogFileUrl = 'https://47.93.189.255:8080/profile/upload/2023/03/19/test7_20230319222030A007.jpg'
      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+'onlinePreview?url='+encodeURIComponent(Base64.encode(this.dialogFileUrl));
      myWindow=window.open(this.desurl,'','width=1200,height=800,top=150,left=300');
      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');
    },
    handlePictureCardPreview(file) {
      this.dialogImageUrl = file.url;
@@ -359,7 +407,7 @@
    handleEdit()
    {
      this.dsb = false
      // this.btn = true
      this.btn = true
      this.isShow=false
    },
    requestUpload(params)
@@ -417,4 +465,10 @@
  display: block;
  position: absolute;
}
.hide .el-upload--picture-card {
  display: none;
}
.form{
  background:center/11% no-repeat url('../../assets/icons/form.png') ;
}
</style>