el-table表头搜索--表格内进行子组件调用的形式进行表头搜索-(表头搜索--区间搜索,输入框搜索,日期时间区间搜索,下拉选择多选搜索)(前面一篇文章写表格里直接进行某一列的搜索)

点击查看 → vue el-table 表头搜索(筛选)功能 实现分析(零)
在这里插入图片描述

父组件调用

在这里插入图片描述

  data () {
  	return {
		headerData: [
	        {
	          label: '机构编号',
	          prop: 'orgCode',
	          seach: true,
	          seachSetting: {
	            type: 'Input',
	            value: ''
	          }
	        },
	        {
	          label: '机构名称',
	          prop: 'orgName',
	          seach: true,
	          seachSetting: {
	            type: 'Input',
	            value: ''
	          }
	        },
	        {
	          label: '项目数量上限',
	          prop: 'projectUperLimit',
	          seach: true,
	          seachSetting: {
	            type: 'Input',
	            value: ''
	          }
	        },
	        {
	          label: '有效期/年',
	          prop: 'period',
	          seach: true,
	          seachSetting: {
	            type: 'Input',
	            value: ''
	          }
	        },
	        {
	          label: '使用开始时间',
	          prop: 'useDateStart',
	          seach: true, // 带搜索就为true,写上下方seachSetting对象(有搜索必写),不要表头搜索可以直接不写此行和seachSetting配置
	          seachSetting: { // 表头搜索的配置项
	            type: 'SingleDateTimePicker', // Input为输入框;Range为区间输入;Cascader为级联选择器;DatePicker年月日区间;TimePicker时分秒区间;DateTimePicker年月日时分秒区间
	            value: '', // 搜索框的值,必填!一般都用value;只有Range区间使用下面的最大值和最小值,不用value
	            // value: [], // 只在Cascader级联搜索时使用
	            // minVal: '', // 只在Range区间时使用
	            // maxVal: '', // 只在Range区间时使用
	            rename: 'minVal' // 修改搜索条件传给后台的名称
	          }
	        },
	        {
	          label: '使用结束时间',
	          prop: 'useDateEnd',
	          seach: true, // 带搜索就为true,写上下方seachSetting对象(有搜索必写),不要表头搜索可以直接不写此行和seachSetting配置
	          seachSetting: { // 表头搜索的配置项
	            type: 'SingleDateTimePicker', // Input为输入框;Range为区间输入;Cascader为级联选择器;DatePicker年月日区间;TimePicker时分秒区间;DateTimePicker年月日时分秒区间
	            value: '', // 搜索框的值,必填!一般都用value;只有Range区间使用下面的最大值和最小值,不用value
	            // value: [], // 只在Cascader级联搜索时使用
	            // minVal: '', // 只在Range区间时使用
	            // maxVal: '', // 只在Range区间时使用
	            rename: 'maxVal' // 修改搜索条件传给后台的名称
	          }
	        }
	      ],
	    }
	 },
	 methods:{
		todoSearch (val) {
	      console.log('搜索', val)
	      this.page.pageNum = 1
	      this.page.pageSize = 10
	      this.seachForm = JSON.parse(JSON.stringify(val))
	      this.seachForm.date = {
	        minVal: val.minVal,
	        maxVal: val.maxVal
	      }
	      delete this.seachForm.minVal
	      delete this.seachForm.maxVal
	      this.searchSubmit()
	    },
	    clearSearch (val) {
	      this.page.pageNum = 1
	      this.page.pageSize = 10
	      this.seachForm = val
	      this.searchSubmit()
	    },
	}
}

清除表头查询的方法

this.headerData.forEach(itemHeader => {
	this.$refs.edcSearch.clearSearch(itemHeader)
})

附上整个表头搜索的子组件的代码

<template>
  <div>
    <template v-for="(headerItem, headerIndex) in headerData">
      <el-table-column v-if="headerItem.type&&headerItem.type!==''" :label="headerItem.type==='index'?'序号':''" :type="headerItem.type" :width="headerItem.width"></el-table-column>
      <el-table-column v-else show-overflow-tooltip :label="headerItem.label" :prop="headerItem.prop" :key="headerIndex" :width="headerItem.width">
        <template #header v-if="headerItem.seach">
          <el-popover v-if="headerItem.seachSetting.type==='Input'" placement="bottom" trigger="click" width="200" v-model="headerItem.visible">
            <el-input autofocus clearable @clear="clearSearch(headerItem)" style="width: 200px" size="small" v-model="headerItem.seachSetting.value" :placeholder="'请输入'+headerItem.label" @keyup.enter.native="todoSearch(headerItem)" />
            <el-button size="small" style="margin-top: 10px;float: left;width: 47%" @click="clearSearch(headerItem)">重 置</el-button>
            <el-button size="small" type="primary" style="margin-top: 10px;float: right;width: 47%" @click="todoSearch(headerItem)">搜 索</el-button>
            <div style="display: flex;align-items: center" slot="reference">
              <span class="search-title">{{ headerItem.label }}</span>
              <img style="width: 13px;margin-left: 10px;cursor: pointer" :src="headerItem.seachSetting.value&&headerItem.seachSetting.value!==''?img2:img1" />
            </div>
          </el-popover>
          <el-popover v-if="headerItem.seachSetting.type==='Range'" placement="bottom" trigger="click" width="250" v-model="headerItem.visible">
            <div style="display:flex;align-items:center">
              <el-input autofocus clearable @clear="clearSearch(headerItem)" placeholder="最小值" v-model="headerItem.seachSetting.minVal" style="width:108px;" size="small" @keyup.enter.native="todoSearch(headerItem)"></el-input>
              <span style="padding:0 10px"></span>
              <el-input autofocus clearable @clear="clearSearch(headerItem)" placeholder="最大值" v-model="headerItem.seachSetting.maxVal" style="width:108px;" size="small" @keyup.enter.native="todoSearch(headerItem)"></el-input>
            </div>
            <el-button size="small" style="margin-top: 10px;float: left;width: 47%" @click="clearSearch(headerItem)">重 置</el-button>
            <el-button size="small" type="primary" style="margin-top: 10px;float: right;width: 47%" @click="todoSearch(headerItem)">搜 索</el-button>
            <div style="display: flex;align-items: center" slot="reference">
              <span class="search-title">{{ headerItem.label }}</span>
              <img style="width: 13px;margin-left: 10px;cursor: pointer" :src="(headerItem.seachSetting.maxVal&&headerItem.seachSetting.maxVal!=='')||(headerItem.seachSetting.minVal&&headerItem.seachSetting.minVal!=='')?img2:img1" />
            </div>
          </el-popover>
          <el-popover v-if="headerItem.seachSetting.type==='DatePicker'" placement="bottom" trigger="click" width="350" v-model="headerItem.visible">
            <el-date-picker v-model="headerItem.seachSetting.value" type="daterange" align="right" unlink-panels key="date-picker" range-separator="" start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd" @change="todoSearch(headerItem)" :picker-options="pickerOptions">
            </el-date-picker>
            <el-button size="small" style="margin-top: 10px;float: left;width: 47%" @click="clearSearch(headerItem)">重 置</el-button>
            <el-button size="small" type="primary" style="margin-top: 10px;float: right;width: 47%" @click="todoSearch(headerItem)">搜 索</el-button>
            <div style="display: flex;align-items: center" slot="reference">
              <span class="search-title">{{ headerItem.label }}</span>
              <img style="width: 13px;margin-left: 10px;cursor: pointer" :src="headerItem.seachSetting.value&&headerItem.seachSetting.value!==''?img2:img1" />
            </div>
          </el-popover>
          <el-popover v-if="headerItem.seachSetting.type==='TimePicker'" placement="bottom" trigger="click" width="350" v-model="headerItem.visible">
            <el-time-picker is-range v-model="headerItem.seachSetting.value" range-separator="" start-placeholder="开始时间" end-placeholder="结束时间" value-format="HH:mm:ss" @change="todoSearch(headerItem)">
            </el-time-picker>
            <el-button size="small" style="margin-top: 10px;float: left;width: 47%" @click="clearSearch(headerItem)">重 置</el-button>
            <el-button size="small" type="primary" style="margin-top: 10px;float: right;width: 47%" @click="todoSearch(headerItem)">搜 索</el-button>
            <div style="display: flex;align-items: center" slot="reference">
              <span class="search-title">{{ headerItem.label }}</span>
              <img style="width: 13px;margin-left: 10px;cursor: pointer" :src="headerItem.seachSetting.value&&headerItem.seachSetting.value!==''?img2:img1" />
            </div>
          </el-popover>
          <el-popover v-if="headerItem.seachSetting.type==='DateTimePicker'" placement="bottom" trigger="click" width="400" v-model="headerItem.visible">
            <el-date-picker v-model="headerItem.seachSetting.value" type="datetimerange" align="right" range-separator="" start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd HH:mm:ss" @change="todoSearch(headerItem)" :picker-options="pickerOptions">
            </el-date-picker>
            <el-button size="small" style="margin-top: 10px;float: left;width: 47%" @click="clearSearch(headerItem)">重 置</el-button>
            <el-button size="small" type="primary" style="margin-top: 10px;float: right;width: 47%" @click="todoSearch(headerItem)">搜 索</el-button>
            <div style="display: flex;align-items: center" slot="reference">
              <span class="search-title">{{ headerItem.label }}</span>
              <img style="width: 13px;margin-left: 10px;cursor: pointer" :src="headerItem.seachSetting.value&&headerItem.seachSetting.value!==''?img2:img1" />
            </div>
          </el-popover>
          <!-- 单独选择时间的 -->
          <el-popover v-if="headerItem.seachSetting.type==='SingleDateTimePicker'" placement="bottom" trigger="click" width="220" v-model="headerItem.visible">
            <el-date-picker v-model="headerItem.seachSetting.value" type="date" align="center" placeholder="选择日期" @change="todoSearch(headerItem)" format="yyyy-MM-dd" value-format="yyyy-MM-dd"></el-date-picker>
            <el-button size="small" style="margin-top: 10px;float: left;width: 47%" @click="clearSearch(headerItem)">重 置</el-button>
            <el-button size="small" type="primary" style="margin-top: 10px;float: right;width: 47%" @click="todoSearch(headerItem)">搜 索</el-button>
            <div style="display: flex;align-items: center" slot="reference">
              <span class="search-title">{{ headerItem.label }}</span>
              <img style="width: 13px;margin-left: 10px;cursor: pointer" :src="headerItem.seachSetting.value&&headerItem.seachSetting.value!==''?img2:img1" />
            </div>
          </el-popover>
          <!--  -->
          <el-popover v-if="headerItem.seachSetting.type==='Cascader'" placement="bottom" trigger="click" width="200" v-model="headerItem.visible" style="position: relative">
            <el-cascader clearable ref="cascaderHandle" style="width: 200px" size="small" filterable key="cascader" :options="headerItem.seachSetting.options" v-model="headerItem.seachSetting.value" @change="todoSearch(headerItem)" :props="headerItem.seachSetting.props">
            </el-cascader>
            <el-button size="small" style="margin-top: 10px;float: left;width: 47%" @click="clearSearch(headerItem)">重 置</el-button>
            <el-button size="small" type="primary" style="margin-top: 10px;float: right;width: 47%" @click="todoSearch(headerItem)">搜 索</el-button>
            <div style="display: flex;align-items: center" slot="reference">
              <span class="search-title">{{ headerItem.label }}</span>
              <img style="width: 13px;margin-left: 10px;cursor: pointer" :src="headerItem.seachSetting.value&&headerItem.seachSetting.value.length>0?img2:img1" />
            </div>
          </el-popover>
          <el-popover v-if="headerItem.seachSetting.type==='Select'" placement="bottom" trigger="click" width="200" v-model="headerItem.visible" style="position: relative">
            <el-select ref="cascaderHandle" style="width: 200px" size="small" filterable key="select" v-model="headerItem.seachSetting.value">
              <el-option
                v-for="item in headerItem.seachSetting.options"
                :key="item.value"
                :label="item.label"
                :value="item.value">
              </el-option>
            </el-select>
            <el-button size="small" style="margin-top: 10px;float: left;width: 47%" @click="clearSearch(headerItem)">重 置</el-button>
            <el-button size="small" type="primary" style="margin-top: 10px;float: right;width: 47%" @click="todoSearch(headerItem)">搜 索</el-button>
            <div style="display: flex;align-items: center" slot="reference">
              <span class="search-title">{{ headerItem.label }}</span>
              <img style="width: 13px;margin-left: 10px;cursor: pointer" :src="headerItem.seachSetting.value&&headerItem.seachSetting.value.length>0?img2:img1" />
            </div>
          </el-popover>
          <el-popover v-if="headerItem.seachSetting.type==='Selects'" placement="bottom" trigger="click" width="200" v-model="headerItem.visible" style="position: relative">
            <el-select ref="cascaderHandle" style="width: 200px" size="small" filterable multiple key="select" v-model="headerItem.seachSetting.value">
              <el-option
                v-for="item in headerItem.seachSetting.options"
                :key="item.value"
                :label="item.label"
                :value="item.value">
              </el-option>
            </el-select>
            <el-button size="small" style="margin-top: 10px;float: left;width: 47%" @click="clearSearch(headerItem)">重 置</el-button>
            <el-button size="small" type="primary" style="margin-top: 10px;float: right;width: 47%" @click="todoSearch(headerItem)">搜 索</el-button>
            <div style="display: flex;align-items: center" slot="reference">
              <span class="search-title">{{ headerItem.label }}</span>
              <img style="width: 13px;margin-left: 10px;cursor: pointer" :src="headerItem.seachSetting.value&&headerItem.seachSetting.value.length>0?img2:img1" />
            </div>
          </el-popover>
<!--          <el-popover v-if="headerItem.seachSetting.type==='Select'" placement="bottom" trigger="click" width="200" v-model="headerItem.visible" style="position: relative">-->
<!--            <el-cascader clearable ref="cascaderHandle" style="width: 200px" size="small" filterable key="cascader" :options="headerItem.seachSetting.options" v-model="headerItem.seachSetting.value" @change="todoSearch(headerItem)" :props="headerItem.seachSetting.props">-->
<!--            </el-cascader>-->
<!--            <el-button size="small" style="margin-top: 10px;float: left;width: 47%" @click="clearSearch(headerItem)">重 置</el-button>-->
<!--            <el-button size="small" type="primary" style="margin-top: 10px;float: right;width: 47%" @click="todoSearch(headerItem)">搜 索</el-button>-->
<!--            <div style="display: flex;align-items: center" slot="reference">-->
<!--              <span class="search-title">{{ headerItem.label }}</span>-->
<!--              <img style="width: 13px;margin-left: 10px;cursor: pointer" :src="headerItem.seachSetting.value&&headerItem.seachSetting.value.length>0?img2:img1" />-->
<!--            </div>-->
<!--          </el-popover>-->
        </template>
<!--        <template  slot="header" slot-scope="scope">-->
<!--          <template>-->
<!--                <span class="customize_filter" style="display:inline-block">-->
<!--                  <span style="padding-right:3px;">{{headerItem.label}}</span>-->
<!--                </span>-->
<!--          </template>-->
<!--          <template slot-scope="scope">-->
<!--            ...-->
<!--          </template>-->
<!--        </template>-->
      </el-table-column>
    </template>
  </div>
</template>
<script>
export default {
  props: ['tableData'],
  data () {
    return {
      seachForm: {},
      headerData: [],
      img1: require('./image/seachIcon.png'),
      img2: require('./image/seachLive.png'),
      pickerOptions: {
        shortcuts: [{
          text: '最近一周',
          onClick (picker) {
            const end = new Date()
            const start = new Date()
            start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
            picker.$emit('pick', [start, end])
          }
        }, {
          text: '最近一个月',
          onClick (picker) {
            const end = new Date()
            const start = new Date()
            start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
            picker.$emit('pick', [start, end])
          }
        }, {
          text: '最近三个月',
          onClick (picker) {
            const end = new Date()
            const start = new Date()
            start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
            picker.$emit('pick', [start, end])
          }
        }]
      }
    }
  },
  mounted () {
    this.$nextTick(() => {
      this.first()
    })
  },
  methods: {
    first () {
      this.headerData = this.tableData
    },
    todoSearch (headerItem) {
      headerItem.visible = false
      if (headerItem.seachSetting.type === 'Range') {
        this.seachForm[headerItem.seachSetting.rename && headerItem.seachSetting.rename !== '' ? headerItem.seachSetting.rename : headerItem.prop] = {
          minVal: headerItem.seachSetting.minVal,
          maxVal: headerItem.seachSetting.maxVal
        }
      } else if (headerItem.seachSetting.type === 'Input') {
        this.seachForm[headerItem.seachSetting.rename && headerItem.seachSetting.rename !== '' ? headerItem.seachSetting.rename : headerItem.prop] = headerItem.seachSetting.value
      } else if (headerItem.seachSetting.type === 'DatePicker' || headerItem.seachSetting.type === 'DateTimePicker' || headerItem.seachSetting.type === 'TimePicker') {
        console.log('headerItem.seachSetting.value', headerItem.seachSetting.value)
        console.log('headerItem.seachSetting.rename', headerItem.seachSetting.rename)
        if (headerItem.seachSetting.value == null) {
          headerItem.seachSetting.value = ''
          this.seachForm[headerItem.seachSetting.rename && headerItem.seachSetting.rename !== '' ? headerItem.seachSetting.rename : headerItem.prop] = {
            maxVal: '',
            minVal: ''
          }
        } else {
          this.seachForm[headerItem.seachSetting.rename && headerItem.seachSetting.rename !== '' ? headerItem.seachSetting.rename : headerItem.prop] = {
            minVal: headerItem.seachSetting.value[0],
            maxVal: headerItem.seachSetting.value[1]
          }
        }
      } else if (headerItem.seachSetting.type === 'SingleDateTimePicker') {
        console.log('headerItem.seachSetting.value', headerItem.seachSetting.value)
        console.log('headerItem.seachSetting.rename', headerItem.seachSetting.rename)
        if (headerItem.seachSetting.value == null) {
          headerItem.seachSetting.value = ''
          this.seachForm[headerItem.seachSetting.rename && headerItem.seachSetting.rename !== '' ? headerItem.seachSetting.rename : headerItem.prop] = ''
        } else {
          this.seachForm[headerItem.seachSetting.rename && headerItem.seachSetting.rename !== '' ? headerItem.seachSetting.rename : headerItem.prop] = headerItem.seachSetting.value
        }
      } else if (headerItem.seachSetting.type === 'Cascader') {
        this.$refs.cascaderHandle[0].dropDownVisible = false
        if (headerItem.seachSetting.value && headerItem.seachSetting.value.length > 0) {
          this.seachForm[headerItem.seachSetting.rename && headerItem.seachSetting.rename !== '' ? headerItem.seachSetting.rename : headerItem.prop] = headerItem.seachSetting.value[headerItem.seachSetting.value.length - 1]
        } else {
          headerItem.seachSetting.value = []
          this.seachForm[headerItem.seachSetting.rename && headerItem.seachSetting.rename !== '' ? headerItem.seachSetting.rename : headerItem.prop] = ''
        }
      } else if (headerItem.seachSetting.type === 'Select') {
        if (headerItem.seachSetting.value && headerItem.seachSetting.value.length > 0) {
          this.seachForm[headerItem.seachSetting.rename && headerItem.seachSetting.rename !== '' ? headerItem.seachSetting.rename : headerItem.prop] = headerItem.seachSetting.value
        } else {
          headerItem.seachSetting.value = ''
          this.seachForm[headerItem.seachSetting.rename && headerItem.seachSetting.rename !== '' ? headerItem.seachSetting.rename : headerItem.prop] = ''
        }
      } else if (headerItem.seachSetting.type === 'Selects') {
        if (headerItem.seachSetting.value && headerItem.seachSetting.value.length > 0) {
          this.seachForm[headerItem.seachSetting.rename && headerItem.seachSetting.rename !== '' ? headerItem.seachSetting.rename : headerItem.prop] = headerItem.seachSetting.value
        } else {
          headerItem.seachSetting.value = []
          this.seachForm[headerItem.seachSetting.rename && headerItem.seachSetting.rename !== '' ? headerItem.seachSetting.rename : headerItem.prop] = []
        }
      }
      this.$emit('search', this.seachForm, headerItem)
    },
    clearSearch (headerItem) {
      if (headerItem.seachSetting && headerItem.seachSetting.type) {
        headerItem.visible = false
        if (headerItem.seachSetting.type === 'Range') {
          headerItem.seachSetting.minVal = ''
          headerItem.seachSetting.maxVal = ''
          this.seachForm[headerItem.seachSetting.rename && headerItem.seachSetting.rename !== '' ? headerItem.seachSetting.rename : headerItem.prop] = {
            maxVal: '',
            minVal: ''
          }
        } else if (headerItem.seachSetting.type === 'Input') {
          headerItem.seachSetting.value = ''
          this.seachForm[headerItem.seachSetting.rename && headerItem.seachSetting.rename !== '' ? headerItem.seachSetting.rename : headerItem.prop] = ''
        } else if (headerItem.seachSetting.type === 'DatePicker' || headerItem.seachSetting.type === 'DateTimePicker' || headerItem.seachSetting.type === 'TimePicker') {
          headerItem.seachSetting.value = ''
          this.seachForm[headerItem.seachSetting.rename && headerItem.seachSetting.rename !== '' ? headerItem.seachSetting.rename : headerItem.prop] = {
            maxVal: '',
            minVal: ''
          }
        } else if (headerItem.seachSetting.type === 'SingleDateTimePicker') {
          headerItem.seachSetting.value = ''
          this.seachForm[headerItem.seachSetting.rename && headerItem.seachSetting.rename !== '' ? headerItem.seachSetting.rename : headerItem.prop] = ''
        } else if (headerItem.seachSetting.type === 'Cascader') {
          this.$refs.cascaderHandle[0].dropDownVisible = false
          headerItem.seachSetting.value = []
          this.seachForm[headerItem.seachSetting.rename && headerItem.seachSetting.rename !== '' ? headerItem.seachSetting.rename : headerItem.prop] = ''
        } else if (headerItem.seachSetting.type === 'Select') {
          headerItem.seachSetting.value = ''
          this.seachForm[headerItem.seachSetting.rename && headerItem.seachSetting.rename !== '' ? headerItem.seachSetting.rename : headerItem.prop] = ''
        } else if (headerItem.seachSetting.type === 'Selects') {
          headerItem.seachSetting.value = []
          this.seachForm[headerItem.seachSetting.rename && headerItem.seachSetting.rename !== '' ? headerItem.seachSetting.rename : headerItem.prop] = []
        }
        this.$emit('clearSearch', this.seachForm)
      }
    }
  }
}
</script>

<style scoped>
</style>

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为了在el-table表头中使用el-popover,您需要为每个popover绑定一个独特的变量。以下是一个例,展示了如何在el-table表头中使用el-popover: ```html <template> <el-table :data="tableData" style="width: 100%"> <el-table-column prop="date" label="日期" width="180"> <template slot="header"> <div> 日期 <el-popover placement="bottom" width="200" trigger="hover" v-model="popoverVisible1" > <p>这是一个日期选择器</p> <el-date-picker v-model="date" type="date" placeholder="选择日期"></el-date-picker> </el-popover> <el-button slot="reference" icon="el-icon-question" size="mini" @click="popoverVisible1 = true" ></el-button> </div> </template> </el-table-column> <el-table-column prop="name" label="姓名" width="180"> <template slot="header"> <div> 姓名 <el-popover placement="bottom" width="200" trigger="hover" v-model="popoverVisible2" > <p>这是一个输入框</p> <el-input v-model="name" placeholder="请输入姓名"></el-input> </el-popover> <el-button slot="reference" icon="el-icon-question" size="mini" @click="popoverVisible2 = true" ></el-button> </div> </template> </el-table-column> </el-table> </template> <script> export default { data() { return { tableData: [ { date: '2022-01-01', name: '张三' }, { date: '2022-01-02', name: '李四' }, { date: '2022-01-03', name: '王五' } ], popoverVisible1: false, popoverVisible2: false, date: '', name: '' }; } }; </script> ``` 在这个例中,我们为每个el-popover绑定了一个独特的变量(popoverVisible1和popoverVisible2),这样每个popover就可以正常渲染了。同时,我们还为每个popover添加了一个el-button,当用户将鼠标悬停在这个按钮上时,popover就会显示出来。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值