zoukankan      html  css  js  c++  java
  • 下载列表组件

    <template>
      <div>
      <el-dialog :title="dialogTaskTitle" :visible.sync="dialogTaskShow" width="960px" 
      top="5vh" :close-on-click-modal='false'
        :before-close="closeTaskDialog">
        <div style="margin-bottom:10px;100%;height:32px;">
          <el-button type="operate" size="small" @click="refreshExportList" icon="el-icon-refresh" style="float:right;padding: 4px 10px;">刷新</el-button>
        </div>
        <el-table :data="taskListData" style=" 100%" v-loading="loading">
          <el-table-column prop="downloadFileName" label="任务类型" width="180"> </el-table-column>
          <el-table-column prop="downloadState" label="任务处理装态" align="center" width="120"></el-table-column>
          <el-table-column prop="gmtCreated" align="center" label="创建时间" width="160"></el-table-column>
          <el-table-column prop="startDate" align="center" label="处理开始时间" width="160"></el-table-column>
          <el-table-column prop="endDate" align="center" label="处理结束时间" width="160"></el-table-column>
          <el-table-column prop="downloadPath" label="路径" align="center">
            <template slot-scope="scope">
              <a class="download-link" v-if="scope.row.downloadPath!='' && scope.row.downloadPath!=null" href="javascript:void(0)" @click="downloadExcelFile(scope.row.downloadPath,scope.row.downloadFileName)">下载</a>
            </template>
          </el-table-column>
        </el-table>
      </el-dialog>
      </div>
    </template>
    <script>
      export default {
        name: 'downloadTable',
          props: [
          'dialogTaskTitle',//下载任务列表标题
          'executeCode',//任务导出id
          ],
          data() {
         return {
           taskListData:[],
           dialogTaskShow:false,
           loading:false,
         }
          },
        created(){
          //console.log(this.executeCode+this.dialogTaskShow)
        },
        methods:{
           closeTaskDialog(){
             this.dialogTaskShow=false;
           },
           showTaskDialog(){
             this.refreshExportList();
             this.dialogTaskShow=true;
           },
           refreshExportList(){
              this.taskListData=[];
              this.loading=true;
              this.$request.post('/air-open-cms/asyncDownload/listByPage',{"downloadCode":this.executeCode,"downloadType":"1"})
                           .then((response) => {
                   var res = response.result;
                   this.taskListData=res.records;
                   this.loading=false;
              });
           },
           downloadExcelFile(url,fileName){
             this.$request({
               method:"get",
               url:"/air-open-base/ossfile/download/"+url,
               responseType: 'blob'
             }).then(function(response) {
                var blob = new Blob([response.result])
                var downloadElement = document.createElement('a');
               var href = window.URL.createObjectURL(blob); //创建下载的链接
               downloadElement.href = href;
               downloadElement.download = fileName+".xlsx";//下载后文件名
               document.body.appendChild(downloadElement);
               downloadElement.click(); //点击下载
               document.body.removeChild(downloadElement); //下载完成移除元素
               window.URL.revokeObjectURL(href); //释放掉blob对象
               })
               .catch(function(error) {
                 console.log(error);
               });
          },
        }
       }
    </script>
    
    <style scoped="scoped">
        a.download-link{
            color:#409EFF!important;
            text-decoration:underline!important;
        }
        .el-table tr td div.cell{font-size:12px !important;}
    </style>
    <template>
      <div>
      <el-dialog :title="dialogTaskTitle" :visible.sync="dialogTaskShow" width="960px" top="5vh" :close-on-click-modal='false'
        :before-close="closeTaskDialog">
        <div style="margin-bottom:10px;100%;height:32px;">
          <el-button type="main" size="small" @click="refreshExportList" icon="el-icon-refresh" style="float:right;padding: 4px 10px;">刷新</el-button>
        </div>
        <el-table :data="taskListData" style=" 100%">
          <el-table-column prop="downloadFileName" label="任务类型" width="160" :show-overflow-tooltip="true"> </el-table-column>
          <el-table-column prop="statusStr" label="任务处理装态" align="center" width="120" :show-overflow-tooltip="true"></el-table-column>
          <el-table-column prop="createTime" align="center" label="创建时间" :show-overflow-tooltip="true"></el-table-column>
          <el-table-column prop="beginTime" align="center" label="处理开始时间" width="160" :show-overflow-tooltip="true"></el-table-column>
          <el-table-column prop="endTime" align="center" label="处理结束时间" width="160" :show-overflow-tooltip="true"></el-table-column>
          <el-table-column prop="downloadPath" label="路径">
            <template slot-scope="scope">
              <a style="text-decoration:underline;color:#5e74a5" v-if="scope.row.state==6" href="javascript:void(0)" @click="downloadExcelFile(scope.row.downloadPath,scope.row.downloadFileName)">下载</a>
            </template>
          </el-table-column>
        </el-table>
        <!--<el-pagination id="exportPagenation" small @size-change="pageTaskSizeChange" @current-change="currentTaskPageChange" :current-page="taskPagenation.currentPage" :page-sizes="[10,20]"
            :page-size="taskPagenation.pageSize" layout="->,prev, pager, next, jumper, sizes,total" :total="taskPagenation.totalSize" :pagerCount="5"  background>
          </el-pagination>-->
      </el-dialog>
      </div>
    </template>
    
    <script>
      import { isAtmsFun } from '@/utils/auth'
      export default {
        name: 'downloadTable',
          props: [
          'dialogTaskTitle',
          'executeCode',
          ],
          data() {
         const isAtms = isAtmsFun()
         return {
           isAtms,
           taskListData:[],
           dialogTaskShow:false,
           downloadPreUrl:""
         }
          },
        created(){
          //console.log(this.executeCode+this.dialogTaskShow)
          // 兼容open的下载接口
         this.downloadPreUrl = this.isAtms ? '' : '/air-atms-core-service';
         //this.downloadPreUrl = '/air-atms-core-service';
        },
        methods:{
           closeTaskDialog(){
             this.dialogTaskShow=false;
           },
           showTaskDialog(){
             this.refreshExportList();
             this.dialogTaskShow=true;
           },
           refreshExportList(){
              this.taskListData=[];
              this.$request.get('/air-atms-core-base/exportTask/list/'+this.executeCode)
                 .then((response) => {
                   let res = response.result;
                   this.taskListData=res.records;
                   //this.taskPagenation.totalSize=res.total;
              });
           },
           downloadExcelFile(url,fileName){
             this.$request({
               method:"get",
               url:this.downloadPreUrl+"/ossfile/download/"+url,
               responseType: 'blob'
             }).then(function(response) {
                let blob = new Blob([response.result]);
                let downloadElement = document.createElement('a');
                let href = window.URL.createObjectURL(blob); //创建下载的链接
                downloadElement.href = href;
                downloadElement.download = fileName+".xlsx";//下载后文件名
                document.body.appendChild(downloadElement);
                downloadElement.click(); //点击下载
                document.body.removeChild(downloadElement); //下载完成移除元素
                window.URL.revokeObjectURL(href); //释放掉blob对象
               })
               .catch(function(error) {
                 console.log(error);
               });
          },
        }
       }
    </script>
    
    <style>
    </style>

    3.日历

    <template>
            <el-popover
              ref="popover4"
              placement="bottom-start"
              popper-class="popperCalendar"
              width="412"
              trigger="click" v-model="showCalenderFlag">
              <div class="list" id="list" @click="showCalender">
            <div class="myDate-month">
                <div class="year-inner">
                    <span class="calendar-menu-prev" @click="preItem()"><i class="el-icon-caret-left"></i></span>
                    <span class="yearText">{{yearText}}</span>
                    <span class="calendar-menu-next" @click="nextItem()"><i class="el-icon-caret-right"></i></span>
                </div>
                <div class="month-inner">
                    <div class="monthBox">
                        <transition name="fade">
                          <ul v-show="leftMonthBox" :key="currentFlag">
                            <li class="calendar-menu-month" v-for="(item,index) in monthArray" :key="index"
                                :class="{'month-selected':hasMonth(item,preYearNumber)}"
                                @click="checkItem(item,preYearNumber)" :code="preYearNumber+item.monthNumber">{{item.name}}</li>
                        </ul>
                        </transition>
                        <transition name="fade">
                        <ul v-show="centerMonthBox" :key="currentFlag+1">
                            <li class="calendar-menu-month" v-for="(item,index) in monthArray" :key="index"
                                :class="{'month-selected':hasMonth(item,nowYearNumber)}"
                                @click="checkItem(item,nowYearNumber)" :code="nowYearNumber+item.monthNumber">{{item.name}}</li>
                        </ul>
                        </transition>
                        <transition name="fade">
                        <ul v-show="rightMonthBox" :key="currentFlag+2">
                            <li class="calendar-menu-month" v-for="(item,index) in monthArray" :key="index"
                                :class="{'month-selected':hasMonth(item,nextYearNumber)}"
                                @click="checkItem(item,nextYearNumber)" :code="nextYearNumber+item.monthNumber">{{item.name}}</li>
                        </ul>
                        </transition>
                    </div>
                 </div>
            </div>
        </div>
        </el-popover>
    </template>
    <script>
        export default {
          name: 'calendarComponet',
          props: {
              selectMonths: {
                  type: Array,
                  default: () => []
              },
              yearNumber: {
            type: Number,
            default: 0
          }
          },
          data () {
              return {
                 showCalenderFlag:false,
                 leftMonthBox:false,
                 centerMonthBox:true,
                 rightMonthBox:false,
                 currentFlag:1,
                 yearText:0,
                 nowYearNumber:0,
                 preYearNumber:0,
                 nextYearNumber:0,
                 monthArray:[
                        {
                          "name":"一月",
                          "monthNumber":'01'
                        },
                        {
                          "name":"二月",
                          "monthNumber":'02'
                        },
                        {
                          "name":"三月",
                          "monthNumber":'03'
                        },{
                          "name":"四月",
                          "monthNumber":'04'
                        },
                        {
                          "name":"五月",
                          "monthNumber":'05'
                        },
                        {
                          "name":"六月",
                          "monthNumber":'06'
                        },
                        {
                          "name":"七月",
                          "monthNumber":'07'
                        },{
                          "name":"八月",
                          "monthNumber":'08'
                        },
                        {
                          "name":"九月",
                          "monthNumber":'09'
                        },
                        {
                          "name":"十月",
                          "monthNumber":'10',
                        },
                        {
                          "name":"十一月",
                          "monthNumber":'11',
                        },{
                          "name":"十二月",
                          "monthNumber":'12',
                        }
                 ],
              }
            },
            created(){
          debugger;
            this.yearText=parseInt(this.yearNumber);
              this.nowYearNumber=parseInt(this.yearNumber)
              this.preYearNumber=parseInt(this.nowYearNumber)-1;
              this.nextYearNumber=parseInt(this.nowYearNumber)+1;
              this.leftMonthBox=false;
              this.centerMonthBox=true;
              this.rightMonthBox=false;
              this.currentFlag=1;
            },
            mounted() {
    
            },
             watch:{
                "yearNumber":function(val){
                  this.yearText=parseInt(val)
                  this.nowYearNumber=parseInt(val)
                  this.preYearNumber=parseInt(this.nowYearNumber)-1;
                  this.nextYearNumber=parseInt(this.nowYearNumber)+1;
                },
            },
            methods: {
                showCalender(e){
                  e.stopPropagation();
                },
                changeCalender(){
            debugger;
                  this.leftMonthBox=false;
                  this.centerMonthBox=true;
                  this.rightMonthBox=false;
                  this.currentFlag=1;
                  this.yearText=parseInt(this.yearNumber);
                this.showCalenderFlag=!this.showCalenderFlag;
                },
                hideCalender(){
                  this.showCalenderFlag=false;
                },
                hasMonth(item,yearNumber){
                  if(this.selectMonths.indexOf(yearNumber+item.monthNumber)!=-1){
                    return true;
                  }
                  return false;
                },
                checkItem(item,yearNumber){
                  if(this.hasMonth(item,yearNumber)){
                    let index=this.selectMonths.indexOf(yearNumber+item.monthNumber);
                    this.selectMonths.splice(index,1);
                  }else{
                    this.selectMonths.push(yearNumber+item.monthNumber);
                  }
                  console.log(this.selectMonths);
                  this.$emit("setSelectMonths",this.selectMonths);
                },
                preItem(){
                  if(this.currentFlag==2){
                     this.leftMonthBox=false;
                     this.rightMonthBox=false;
                     this.currentFlag=1;
                     this.centerMonthBox=true;
                     this.yearText=this.yearText-1;
                  }else{
                    if(this.currentFlag==1){
                        this.centerMonthBox=false;
                        this.rightMonthBox=false;
                        this.currentFlag=0;
                        this.leftMonthBox=true;
                        this.yearText=this.yearText-1;
                    }
                  }
                },
                nextItem(){
                  if(this.currentFlag==0){
                     this.currentFlag=1;
                     this.centerMonthBox=true;
                     this.leftMonthBox=false;
                     this.rightMonthBox=false;
                     this.yearText=parseInt(this.yearText)+1;
                  }    else{
                    if(this.currentFlag==1){
                        this.currentFlag=2;
                        this.rightMonthBox=true;
                        this.centerMonthBox=false;
                        this.leftMonthBox=false;
                        this.yearText=parseInt(this.yearText)+1;
                    }
                  }
                },
            },
            beforeDestory(){
                this.leftMonthBox=false;
                this.centerMonthBox=true;
                this.rightMonthBox=false;
                this.currentFlag=1;
                this.yearText=0;
                this.yearNumber=0;
                this.nowYearNumber=0;
                this.preYearNumber=0;
                this.nextYearNumber=0;
            }
        }
    </script>
    
    <style>
        *{margin:0;padding:0}
         ul li{padding:0}
        .myDate-month{404px;height:auto;border:1px solid #ddd;margin:auto;background-color: #F2F5F7;z-index:999}
        .year-inner{64%;height:40px;margin:0px auto;line-height:40px;text-align: center;}
        .year-inner .yearText{60%;margin:0 4px}
        .monthBox{position: relative;100%;height:160px;overflow: hidden;}
        .monthBox ul{100%;height:180px;font-size:13px;position: absolute;top:0;padding:2%}
        .monthBox ul li{
            21%;height:30px;border-radius:4px;
            float:left;text-align:center;line-height:30px;
            margin-right:1%;margin-left:1%;margin-top:10px;
            border:1px solid #ddd;cursor:pointer}
        .monthBox ul.l_table{left:0}
        .monthBox ul.m_table{left:100%}
        .monthBox ul.r_table{left:200%}
        .month-selected{background: #409eff;color:#fff;}
        .year-inner>span{font-weight: 700;}
        .year-inner>span>i{cursor: pointer;font-size:18px}
    
        .fade-enter-active, .fade-leave-active {
        transition: opacity .5s
        }
        .fade-enter, .fade-leave-active {
        opacity: 0
        }
    
      .popperCalendar{
          padding:0px!important;
          height:204px!important;
        padding-top: 2px!important;
          padding-bottom: 0px!important;
      }
    </style>
  • 相关阅读:
    推荐几款Vue后台管理系统的框架,以便备用
    vue常用开发ui框架(app,后台管理系统,移动端)及插件
    CSS的flex布局看完这篇你就懂了
    network中的js和xhr
    使用better-scroll插件 点击事件失效
    javaScript -- touch事件详解(touchstart、touchmove和touchend)
    BetterScroll在vue中v-for渲染数据后滚动失效
    布局总结四:利用行高来撑开高度
    git中Please enter a commit message to explain why this merge is necessary.
    Vue中使用Ajax与后台交互
  • 原文地址:https://www.cnblogs.com/xmyfsj/p/15212842.html
Copyright © 2011-2022 走看看