vue-IVIEW 导出 excel

  <div style="background:#eee;  height: 100%;">

    <Row style="background:#eee; height:100%">

      <Col span="24">

        <Card :bordered="false" style="background:#eee;padding:0;  height: 100%;">

          <p slot="title">

            {{sblxname}}-巡视设备


         

          <a href="javascript:;" slot="extra">

            <Tooltip content="点击返回上一页" placement="left" @click.native="ibuttonclass">

              <Icon :type="$iconConfig.RETURN" size="20"/>

          <Form :model="form" :label-width="110"

                style="background: #F8F8F9; padding: 15px 5px 0px 5px;margin-bottom: 10px;">

              <Col span="5" style="height: 40px;">

                <FormItem label="时间">

                  <DatePicker v-model="form.startTime" type="datetime" placeholder="请选择开始时间"

                              style="width:127%">

              <Col span="5" style="height: 40px;">

                <FormItem label="--">

                  <DatePicker v-model="form.endTime" type="datetime" placeholder="请选择结束时间"

                              style="width:127%">

              <Col span="6" offset="1" style="height: 40px;">

                <FormItem label="单位">

                  <Select v-model="form.whdwsjbm" clearable :disabled="disabled">

                    <Option v-for="whdwsjbm1 inwhdwsjbmList" :value="whdwsjbm1.whdwid" :key="whdwsjbm1.whdwid">{{

whdwsjbm1.whdwmc }}

              <Col span="6" offset="1" style="height: 40px;">

                <FormItem label="站线类型">

                  <Select v-model="form.xzlx" clearable>

                    <Option v-for="xzlx1 inxzlxList" :value="xzlx1.value" :key="xzlx1.value">{{ xzlx1.label }}

              <Col span="6" style="height: 40px;">

                <FormItem label="站线名称">

                  <Input v-model="form.xzmc" placeholder="请输入站线名称"/>

              <Col span="6" style="height: 40px;">

                <FormItem label="工单类型">

                  <Select v-model="form.gdlx" clearable clearable>

                    <Option v-for="gdlx1 ingdlxList" :value="gdlx1.value" :key="gdlx1.value">{{ gdlx1.label }}

              <Col span="6" style="height: 40px;">

                <FormItem label="巡视班组">

                  <Input v-model="form.bz" placeholder="请输入巡视班组"/>

              <Col span="6" style="height: 40px;">

                <FormItem label="巡视人员">

                  <Input v-model="form.jdrname" placeholder="请输入巡视人员"/>

              <Col span="6" style="height: 40px;">

                <FormItem label="设备巡视状态">

                  <Select v-model="form.xszt" clearable clearable>

                    <Option v-for="xszt1 inxsztList" :value="xszt1.value" :key="xszt1.value">{{ xszt1.label }}

              <Col span="17" style="margin-top:1px;margin-left:1%;text-align: right">

                <Tooltip content="搜索" placement="bottom">

                  <Button @click="listSearch" type="primary" :loading="isSearchLoading"

                          style="background:#4A6FD7; width: 80px; color:#FFFFFF !important;border:none;padding-left: 12px; margin-left: 10px; !important;">

                    <Icon :type="$iconConfig.SEARCH" style="margin-right: 5px;">

                    搜索

                <Tooltip :content="exportExcelContent" placement="bottom">

                  <Button :disabled="exportExcelButtonIsDisabled" @click="exportExcel" type="primary"

                          style="margin-left: 10px;">

                    <Icon :type="$iconConfig.DOWNLOAD" style="margin-right: 2px;">

                    导出EXCEL

          <Row style="background:#eee;  height: 100%;">

            <Col span="24">

              <Table border

                    @on-sort-change="onSortChange"

                    :columns="tableA.tableColumns"

                    :data="tableA.tableData"

                    :height="height"

                    ref="currentRowTable"

                    :percent="percent"

                    style="white-space: nowrap;word-break: keep-all"

              >

              <Page align="right" :total="tableParams.total" :current="tableParams.pageNo"

                    @on-change="onPageChange"

                    @on-page-size-change="onPageSizeChange"

                    :page-size="tableParams.pageSize"

                    :page-size-opts="tableA.pageSizeOpts"

                    show-sizer show-elevator show-total>


              <xsxDetail ref="xsxDetailModal">

              <fxwtDetail ref="fxwtDetailModal">

    <Spin fix v-if="spinShow" style="font-size: 20px;background:rgba(7,18,38,.5);color:#FFFFFF">加载中...

  import {getLastTimeBefore, timeFormatter}from '@/libs/tools'

  import excelfrom '@/libs/excel'

  import {

getTableConfig,

    objectCopy

}from '@/libs/util'

  import homeyfrom '@/api/homey'

  import xsxDetailfrom './xsxDetail'

  import fxwtDetailfrom './fxwtDetail'

  //时间

  import momentfrom 'moment'

  export default {

name:"task_bd_page",

    components: {xsxDetail, fxwtDetail},

    data() {

return {

exportExcelButtonIsDisabled:false,

        exportExcelContent:'导出列表查询数据为excel文件',

        percent:0.87,

        height:100,

        isFirst:true,

        spinShow:false,

        form: {

startTime:moment().subtract(1, 'days').format('YYYY-MM-DD HH:mm:ss'), //  开始时间

          endTime:moment().format('YYYY-MM-DD HH:mm:ss'),  //  结束时间

          start:moment().subtract(1, 'days').format('YYYY-MM-DD HH:mm:ss'), //  开始时间

          end:moment().format('YYYY-MM-DD HH:mm:ss'),  //  结束时间

          whdwsjbm:'',    //单位

          xzlx:'',    //站/线类型

          xzmc:'',      //站/线名称

          gdlx:'',      //工单类型

          bz:'',  //巡视班组

          jdrname:'',      // 巡视人员

          xszt:'',    //设备巡视状态

          ksxssj:'',  //巡视开始时间

          key:'xswcsj',    //巡视完成时间

// pageNo:this.$pageConfig.DEFAULT_PAGE_NO,      //当前页

// pageSize:this.$pageConfig.DEFAULT_PAGE_SIZE, //每页显示多少条

// pageSize:'2',

          pageCurrent:'1',//当前页

          total:'',

          // sorter: 'name desc , age asc',

          nodata:''

        },

        disabled:false,

        //输电线路

        sblxname:'',

        // sdxl:this.sdrw+"输电线路",

        datetimerangeValue: [],

        theTime:'',

        tableConfig: {},

        isSearchLoading:false,

        selectData:this.$dictConfig.getSelectData(102),

        gender:3,

        tableParams: {

total:0,

          pageNo:this.$pageConfig.DEFAULT_PAGE_NO,

          pageSize:this.$pageConfig.DEFAULT_PAGE_SIZE,

          sorter:'',

          nodata:1,

        },

        queryParam: {

name:''

        },

        whdwsjbmList: [],    //单位

        xzlxList:this.$dictConfig.getSelectData(128),    //站/线类型

        gdlxList:this.$dictConfig.getSelectData(129),      //工单类型

        xsztList:this.$dictConfig.getSelectData(130),    //设备巡视状态

        tableA: {

pageSizeOpts:this.$pageConfig.DEFAULT_TABLE_PAGE_SIZE,

          tableColumns: [

{

type:'index',

              width:60,

              align:'center',

              title:'序号',

              key:'num',

            },

            {

title:'单位',

              align:'center',

              sortable:true,

              width:100,

              key:'whdwjc'

            },

            {

title:'电压等级',

              align:'center',

              width:100,

              key:'dydj'

            },

            {

title:'站/线类型',

              align:'center',

              width:100,

              key:'xzlx'

            },

            {

title:'站/线名称',

              align:'center', width:120,

              key:'xzmc'

            },

            {

title:'工单编号',

              align:'center', width:140,

              key:'gdbh'

            },

            {

title:'工单名称',

              align:'center', width:200,

              key:'gdmc'

            },

            {

title:'工单类型',

              align:'center', width:120,

              key:'gdlx'

            },

            {

title:'巡视班组',

              align:'center', width:160,

              key:'xsbzname'

            },

            {

title:'巡视人员',

              align:'center', width:90,

              key:'xsry'

            },

            {

title:'设备巡视状态',

              align:'center', width:120,

              key:'xszt'

            },

            {

title:'巡视开始时间',

              align:'center', width:160,

              key:"ksxssj",

            },

            {

title:'巡视完成时间', width:160,

              align:'center',

              key:'xswcsj',

            },

            {

title:'巡视项',

              align:'left', width:90,

              key:'xsx',

              render: (h, params) => {

return h('div', [

h('Button', {

props: {

type:'text',

                        // icon: this.$iconConfig.LOCK,

                        size:'small',

                        disabled: (params.row.xsx <=0)

},

                      style: {

marginRight:'5px',

                        color:'rgb(122,173,234)',

                      },

                      on: {

click: () => {

// this.$router.push('/tour_details')

                          this.onXsx(params);

                        }

}

},

                    (params.row.xsx)

),

                ])

}

},

            {

title:'发现问题',

              align:'left',

              key:'fxwt',

              className:'demo-table-info-column', width:100,

              render: (h, params) => {

return h('div', [

h('Button', {

props: {

type:'text',

                        // icon: this.$iconConfig.LOCK,

                        size:'small',

                        disabled: (params.row.fxwt <=0)

},

                      style: {

marginRight:'5px',

                        color:'rgb(122,173,234)',

                      },

                      on: {

click: () => {

this.onFxwt(params);

                        }

}

},

                    (params.row.fxwt)

),

                ])

}

}

],

          tableData: [],

          tableDatalist: [],

        },

      }

},

    methods: {

//自动设置列表的高度

      RowResize() {

let me =this;

        const deviceHeight = document.documentElement.clientHeight

        if (me.$refs.currentRowTable) {

me.height = Number(deviceHeight) *0.65

        }

},

      //获取单位

      gittask1() {

let me =this;

        homey.gettask().then(res => {

let data = res.data.data

          me.whdwsjbmList = data.whdwList

if (data.hasAlldata =="owner") {

me.disabled =true

          }

}).catch(() => {

//出错后,取消进度条啥的

        })

},

      // 巡视项

      onXsx(param) {

this.$refs.xsxDetailModal.show(param.row)

},

      //发现问题

      onFxwt(param) {

this.$refs.fxwtDetailModal.show(param.row)

},

      showSuccess() {

this.$systemMessage.success('你操作成功了')

},

      /**

* 窗口关闭回调

*/

      handleModalClose() {

this.$Message.info('你把弹窗关闭了')

},

      onPageChange(page) {

// this.$Message.info('页码:' + page)

        this.tableParams.pageNo = page;

        //此处执行列表数据刷新请求

        this.getUserListData();

      },

      //每页数量改变

      onPageSizeChange(size) {

// this.$Message.info('每页条数:' + size)

        this.tableParams.pageSize = size

this.getUserListData();

        //此处执行列表数据刷新请求

      },

      //table排序点击事件

      onSortChange(sort) {

if (sort) {

this.tableParams.sorter =' ' + sort.key +' ' + sort.order;

          this.getUserListData()

}

},

      /**

* 成功post

*/

      handleSuccessPost() {

},

      /**

* 失败post

*/

      handleFailPost() {

},

      /**

* 获取列表数据

*/

      handleListData() {

},

      beforeMount() {

//挂在前

      },

      //点击返回上一次流浪路由

      ibuttonclass() {

this.$router.go(-1)

},

      // 搜索

      listSearch() {

let me =this

        if (me.form.startTime.valueOf() /1000 > me.form.endTime.valueOf() /1000) {

me.$systemMessage.success('结束时间不能小于开始时间')

}else {

me.isFirst =false

          me.isSearchLoading =true

          me.tableParams = Object.assign(this.tableParams, this.queryParam);

          me.tableParams.pageNo =1

          me.getUserListData()

}

},

      // 首次加载  查询

      getUserListData() {

let me =this;

        me.spinShow =true

        let pramsA = {

pageSize: me.tableParams.pageSize,

          pageNo: me.tableParams.pageNo,

          whdwsjbm: me.form.whdwsjbm,  //单位编码

          xzlx: me.form.xzlx, //线站类型(参数传递:变电站、输电线路、配电站室)

          xzmc: me.form.xzmc,  ////站/线名称

          gdlx: me.form.gdlx,    //工单类型

          bz: me.form.bz,      ///班组

          jdrname: me.form.jdrname,    ///  巡视人员

          xszt: me.form.xszt,    //巡视状态(传递参数:1或2或3,1:待巡视,2:巡视中,3:已巡视)

          start:moment(me.form.startTime).format(me.$pageConfig.SECOND_FORMAT),

          end:moment(me.form.endTime).format(me.$pageConfig.SECOND_FORMAT),

        }

let pramsB = {

pageSize: me.tableParams.pageSize,

          pageNo: me.tableParams.pageNo,

          whdwsjbm: me.form.whdwsjbm,  //单位编码

          xzlx: me.form.xzlx, //线站类型(参数传递:变电站、输电线路、配电站室)

          xzmc: me.form.xzmc,  ////站/线名称

          gdlx: me.form.gdlx,    //工单类型

          bz: me.form.bz,      ///班组

          jdrname: me.form.jdrname,    ///  巡视人员

          xszt: me.form.xszt,    //巡视状态(传递参数:1或2或3,1:待巡视,2:巡视中,3:已巡视)

          startTime:moment(me.form.startTime).format(me.$pageConfig.SECOND_FORMAT),

          endTime:moment(me.form.endTime).format(me.$pageConfig.SECOND_FORMAT)

}

homey.getrw(me.isFirst ? pramsA : pramsB).then(res => {

me.tableA.tableData = res.data.data.list

          me.tableParams.total = res.data.data.count

          me.isSearchLoading =false

          if (me.tableParams.total >0) {

me.exportExcelButtonIsDisabled =false

            me.exportExcelContent ='导出列表查询数据为excel文件'

          }else {

me.exportExcelButtonIsDisabled =true

            me.exportExcelContent ='暂无可导出数据,请修改查询条件后再试'

          }

}).catch(() => {

}).finally(() => {

me.spinShow =false

        })

},

      handleCancelSearch() {

this.$refs['searchFrom'].resetFields()

this.handleSearch()

},

      handleRefresh() {

this.tableParams.pageNo =1

        this.getUserListData()

},

      //导出excel

      exportExcel() {

let me =this;

        //当前页面的搜索条件下,先从页面拿一下总数,然后再判断总数情况

        let pramsTotalA = {

pageSize: me.tableParams.pageSize,

          pageNo: me.tableParams.pageNo,

          whdwsjbm: me.form.whdwsjbm,  //单位编码

          xzlx: me.form.xzlx, //线站类型(参数传递:变电站、输电线路、配电站室)

          xzmc: me.form.xzmc,  ////站/线名称

          gdlx: me.form.gdlx,    //工单类型

          bz: me.form.bz,      ///班组

          jdrname: me.form.jdrname,    ///  巡视人员

          xszt: me.form.xszt,    //巡视状态(传递参数:1或2或3,1:待巡视,2:巡视中,3:已巡视)

          start:moment(me.form.startTime).format(me.$pageConfig.SECOND_FORMAT),

          end:moment(me.form.endTime).format(me.$pageConfig.SECOND_FORMAT),

        }

let pramsTotalB = {

pageSize: me.tableParams.pageSize,

          pageNo: me.tableParams.pageNo,

          whdwsjbm: me.form.whdwsjbm,  //单位编码

          xzlx: me.form.xzlx, //线站类型(参数传递:变电站、输电线路、配电站室)

          xzmc: me.form.xzmc,  ////站/线名称

          gdlx: me.form.gdlx,    //工单类型

          bz: me.form.bz,      ///班组

          jdrname: me.form.jdrname,    ///  巡视人员

          xszt: me.form.xszt,    //巡视状态(传递参数:1或2或3,1:待巡视,2:巡视中,3:已巡视)

          startTime:moment(me.form.startTime).format(me.$pageConfig.SECOND_FORMAT),

          endTime:moment(me.form.endTime).format(me.$pageConfig.SECOND_FORMAT)

}

//先使用列表查询接口获取当前查询条件下有多少数据可导出

        homey.getrw(me.isFirst ? pramsTotalA : pramsTotalB).then(res => {

//没导出数据,提示并返回

          if (res.data.data.count <=0) {

me.$systemMessage.alert({

title:'提示',

              content:'当前查询条件下无可导出数据,请修改查询条件后再试'

            })

return false

          }

//超过10000条,提示并返回

          if (res.data.data.count >10000) {

me.$systemMessage.alert({

title:'提示',

              content:'单次导出数据最多10000条,请修改查询条件后再试'

            })

return false

          }

//弹出确认导出询问框

          me.$systemMessage.confirm({

title:'确认导出?',

            content:'本次共导出数据:' + res.data.data.count +' 条,点击"导出"开始导出数据.',

            okText:'导出',

            //确认导出

            onOk:function () {

let paramA = {

start:moment(me.form.startTime).format(me.$pageConfig.SECOND_FORMAT),

                end:moment(me.form.endTime).format(me.$pageConfig.SECOND_FORMAT),

                whdwsjbm: me.form.whdwsjbm, //单位ID

                xzlx: me.form.xzlx,//战线类型

                xszt: me.form.xszt,//巡视状态

                xzmc: me.form.xzmc,//战线名称

                gdlx: me.form.gdlx,//工单类型

                bz: me.form.bz,//巡视班组

                jdrname: me.form.jdrname,//巡视人员

                pageNo:1,//把pageNo变成1,pageSize变成total就可以了

                pageSize: res.data.data.count

              }

let paramB = {

startTime:moment(me.form.startTime).format(me.$pageConfig.SECOND_FORMAT),

                endTime:moment(me.form.endTime).format(me.$pageConfig.SECOND_FORMAT),

                whdwsjbm: me.form.whdwsjbm, //单位ID

                xzlx: me.form.xzlx,//战线类型

                xszt: me.form.xszt,//巡视状态

                xzmc: me.form.xzmc,//战线名称

                gdlx: me.form.gdlx,//工单类型

                bz: me.form.bz,//巡视班组

                jdrname: me.form.jdrname,//巡视人员

                pageNo:1,//把pageNo变成1,pageSize变成total就可以了

                pageSize: res.data.data.count

              }

//显示loading

              me.$Spin.show({

render: (h) => {

return h('div', [

h('Icon', {

'class':'demo-spin-icon-load',

                      props: {

type:'ios-loading',

                        size:18

                      }

}),

                    h('div', '正在导出,请稍后...')

])

}

});

              //跟列表使用一个接口即可,把pageNo变成1,pageSize变成total就可以了

              homey.getrw(me.isFirst ? paramA : paramB).then(res => {

let data = res.data.data.list;//获取到数据

                if (data) {

let newData = []

let num =1;

                  data.filter(function (item) {

item.num = num

newData.push(item)

num++

})

const params = {

title: ['序号', '单位', '电压等级', '站/线类型', '站/线名称', '工单编号', '工单名称', '工单类型', '巡视班组', '巡视人员', '设备巡视状态', '巡视开始时间', '巡视完成时间', '巡视项', '发现问题'],

                    key: ['num', 'whdwjc', 'dydj', 'xzlx', 'xzmc', 'gdbh', 'gdlx', 'gdlx', 'xsbzname', 'xsry', 'xszt', 'ksxssj', 'xswcsj', 'xsx', 'fxwt'],

                    data: newData,

                    autoWidth:true,

                    filename:'设备列表导出'

                  };

                  excel.export_array_to_excel(params)

}else {

me.$systemMessage.alert('当前无可导出数据!')

}

}).catch(() => {

}).finally(() => {

me.isFirst =false

                //隐藏loading

                me.$Spin.hide()

})

}

})

}).catch(() => {

}).finally(() => {

})

},

    },

    mounted() {

let me =this

      me.RowResize();

      //监听窗口大小变化

      window.onresize =function () {

me.RowResize();

      }

// console.log(currentUser.companyCode)

//vue组件传参

      let routeParams =this.$route.params

      //url query传参

      let routeQuery =this.$route.query

      if (routeParams && routeQuery) {

me.sblxname = routeParams.xzlx || routeQuery.xzlx

        //先从Params取,没有就从query取,还没有,就默认一天

        me.form.startTime = routeParams.startTime || routeQuery.startTime ||moment().subtract(1, 'days').format(me.$pageConfig.SECOND_FORMAT)

me.form.endTime = routeParams.endTime || routeQuery.endTime ||moment().format(me.$pageConfig.SECOND_FORMAT)

me.form.xzlx = routeParams.xzlx || routeQuery.xzlx

        //单位如果不传,默认就是currentUser的

        me.form.whdwsjbm = routeParams.whdwsjbm || routeQuery.whdwsjbm || currentUser.companyCode

        me.form.xszt = routeParams.xszt || routeQuery.xszt

      }

me.getUserListData()

me.gittask1()

},

    //页面渲染完毕后初始化表格数据

    created() {

// this.getUserListData();

    }

}

  .demo-spin-icon-load {

font-size:16px;

    font-weight:900;

    animation:ani-demo-spin 1s linear infinite;

  }

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,616评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,020评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,078评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,040评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,154评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,265评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,298评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,072评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,491评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,795评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,970评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,654评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,272评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,985评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,223评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,815评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,852评论 2 351

推荐阅读更多精彩内容