重要知识点

  • 页面渲染
  • 搜索条件过滤
  • 本地存储搜索记录

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vp7BIRxN-1605265233013)(%E9%97%B2%E4%BA%91%E6%80%BB%E7%AC%94%E8%AE%B0/%E6%9C%BA%E7%A5%A8%E6%90%9C%E7%B4%A2%E5%88%97%E8%A1%A8%E9%A1%B5.png)]

基本布局

新建机票列表页pages/air/flights.vue,代码如下

<template><section class="contianer"><el-row  type="flex" justify="space-between"><!-- 顶部过滤列表 --><div class="flights-content"><!-- 过滤条件 --><div></div><!-- 航班头部布局 --><div></div><!-- 航班信息 --><div></div></div><!-- 侧边栏 --><div class="aside"><!-- 侧边栏组件 --></div></el-row></section>
</template><script>import moment from "moment";export default {data(){return {}}
}
</script><style scoped lang="less">.contianer{width:1000px;margin:20px auto;}.flights-content{width:745px;font-size:14px;}.aside{width:240px;} 
</style>

航班列表

思路

  1. 列表头部组件

  2. 列表组件布局

  3. 无数据提示

实现步骤

列表头部组件

预览效果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3KRRBYOA-1605265233017)(%E9%97%B2%E4%BA%91%E6%80%BB%E7%AC%94%E8%AE%B0/1560756900783.png)]

1.新建列表头部组件components/air/flightsListHead.vue,并添加以下内容:

<template><el-row class="flight-title"><el-col :span="5">航空信息</el-col><el-col :span="14"><el-row type="flex" justify="space-between"><el-col :span="12">起飞时间</el-col><el-col :span="12">到达时间</el-col></el-row></el-col><el-col :span="5">价格</el-col></el-row>
</template><script>
export default {}
</script><style scoped lang="less">.flight-title{padding:0 15px;border:1px #ddd solid;background:#f6f6f6;height:38px;line-height: 38px;color:#666;font-size:12px;margin-bottom: 10px;> div{text-align: center}}
</style>

2.在pages/air/fights.vue中引入组件

<template><section class="contianer"><el-row  type="flex" justify="space-between"><!-- 顶部过滤列表 --><div class="flights-content"><!-- 其他代码.. --><!-- 航班头部布局 --><FlightsListHead/><!--  其他代码... -->  </div><!--  其他代码... --></el-row></section>
</template><script>
import FlightsListHead from "@/components/air/flightsListHead.vue"export default {// 其他代码...components: {FlightsListHead}
}
</script>

机票列表组件

预览效果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uF1jbQVE-1605265233019)(%E9%97%B2%E4%BA%91%E6%80%BB%E7%AC%94%E8%AE%B0/1560758294093.png)]

1.新建机票列表组件components/air/flightsItem.vue,并添加以下内容:

<template><div class="flight-item"><div><!-- 显示的机票信息 --><el-row type="flex" align="middle" class="flight-info"><el-col :span="6"><span>东航 </span> MU5316</el-col><el-col :span="12"><el-row type="flex" justify="space-between" class="flight-info-center"><el-col :span="8" class="flight-airport"><strong>20:30</strong><span>白云机场T1</span></el-col><el-col :span="8" class="flight-time"><span>2时20分</span></el-col><el-col :span="8" class="flight-airport"><strong>22:50</strong><span>虹桥机场T2</span></el-col></el-row></el-col><el-col :span="6" class="flight-info-right"><span class="sell-price">810</span></el-col></el-row></div><div class="flight-recommend"><!-- 隐藏的座位信息列表 --><el-row type="flex"  justify="space-between" align="middle"><el-col :span="4">低价推荐</el-col><el-col :span="20"><el-row type="flex" justify="space-between" align="middle" class="flight-sell"><el-col :span="16" class="flight-sell-left"><span>经济舱</span> | 上海一诺千金航空服务有限公司</el-col><el-col :span="5" class="price">¥1345</el-col><el-col :span="3" class="choose-button"><el-button type="warning" size="mini">选定</el-button><p>剩余:83</p></el-col></el-row></el-col></el-row></div></div>
</template><script>
export default {props: {// 数据data: {type: Object,// 默认是空数组default: {}}}
}
</script><style scoped lang="less">.flight-item{border:1px #ddd solid;margin-bottom: 10px;.flight-info{padding:15px;cursor: pointer;> div{&:first-child, &:last-child{text-align: center;}}}.flight-info-center{padding:0 30px;text-align: center;.flight-airport{strong{display: block;font-size:24px;font-weight: normal;}span{font-size: 12px;color:#999;}}.flight-time{span{display: inline-block;padding:10px 0;border-bottom: 1px #eee solid;color:#999;}}}.flight-info-right{.sell-price{font-size: 24px;color:orange;margin:0 2px;}}}.flight-recommend{background: #f6f6f6;border-top:1px #eee solid;padding:0 20px;.flight-sell{border-bottom:1px #eee solid;padding:10px 0;&:last-child{border-bottom: none;}.flight-sell-left{font-size: 12px;span{color:green;}} .price{font-size: 20px;color:orange;}.choose-button{text-align: center;color:#666;button{display: block;width:100%;margin-bottom:5px;}}}}
</style>

组件接收一个名为data的机票数据,但是目前还没请求后台接口,所以预留到后面再使用。

2.在pages/air/fights.vue中引入组件

<template><section class="contianer"><el-row  type="flex" justify="space-between"><!-- 顶部过滤列表 --><div class="flights-content"><!-- 其他代码 --><!-- 航班信息 --><div><!-- 航班列表 --><FlightsItem/></div></div><!-- 其他代码... --></el-row></section>
</template><script>
import FlightsListHead from "@/components/air/flightsListHead.vue";
import FlightsItem from "@/components/air/flightsItem.vue"export default {data(){return {}},components: {FlightsListHead,FlightsItem}
}
</script>

航班列表渲染

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QaAh4EHZ-1605265233022)(%E9%97%B2%E4%BA%91%E6%80%BB%E7%AC%94%E8%AE%B0/1561172786454.png)]

思路

  1. 渲染列表数据
  2. 计算相差时间
  3. 控制列表展开
  4. 分页

实现步骤

渲染列表数据

1.请求接口数据

pages/air/flights.vue

<template><section class="contianer"><!-- 其他代码... --><!-- 航班信息 --><div><!-- 航班列表 --><flightsItem v-for="(item, index) in dataList" :key="index" :data="item"/></div><!-- 其他代码... -->   </section>
</template>
<script>
// 其他代码...
export default {data(){return {flightsData: {}, // 航班总数据dataList: []     // 航班列表数据,用于循环flightsItem组件,单独出来是因为要分页}},// 其他代码...methods: {// 获取航班总数据getData(){this.$axios({url: `airs`,params: this.$route.query // 来自URL的5个参数}).then(res => {this.flightsData = res.data;this.dataList = this.flightsData.flights;});}},mounted(){this.getData();}
}
</script>

2.渲染列表组件

components/air/flightsItem.vue

<template><div class="flight-item"><div><!-- 显示的机票信息 --><el-row type="flex" align="middle" class="flight-info"><el-col :span="6"><span>{{data.airline_name}}</span> {{data.flight_no}}</el-col><el-col :span="12"><el-row type="flex" justify="space-between" class="flight-info-center"><el-col :span="8" class="flight-airport"><strong>{{data.dep_time}}</strong><span>{{data.org_airport_name}}{{data.org_airport_quay}}</span></el-col><el-col :span="8" class="flight-time"><span>2时20分</span></el-col><el-col :span="8" class="flight-airport"><strong>{{data.arr_time}}</strong><span>{{data.dst_airport_name}}{{data.dst_airport_quay}}</span></el-col></el-row></el-col><el-col :span="6" class="flight-info-right"><span class="sell-price">{{data.seat_infos[0].org_settle_price_child}}</span></el-col></el-row></div><div class="flight-recommend"><!-- 隐藏的座位信息列表 --><el-row type="flex"  justify="space-between" align="middle"><el-col :span="4">低价推荐</el-col><el-col :span="20"><el-row type="flex" justify="space-between" align="middle" class="flight-sell"v-for="(item, index) in data.seat_infos":key="index"><el-col :span="16" class="flight-sell-left"><span>{{item.name}}</span> | {{item.supplierName}}</el-col><el-col :span="5" class="price">¥{{item.org_settle_price}}</el-col><el-col :span="3" class="choose-button"><el-button type="warning" size="mini">选定</el-button><p>剩余:{{item.discount}}</p></el-col></el-row></el-col></el-row></div></div>
</template>

代码虽然很多,但都是很简单的字段替换,其中有一个起飞时间到达时间的时间间隔是接口没有返回的,需要我们在前端自己计算,这是一道数学题,和Vue无关.

计算相差时间

计算起飞时间到达时间的时间间隔。

components/air/flightsItem.vue

<template><div class="flight-item"><!-- 其他代码... --><el-col :span="8" class="flight-time"><span>{{rankTime}}</span></el-col><!-- 其他代码... -->           </div>
</template><script>
export default {// 其他代码...computed: {// 计算出相差时间rankTime(){// 转化为分钟const dep = this.data.dep_time.split(":");const arr = this.data.arr_time.split(":");const depVal = dep[0] * 60 + +dep[1];const arrVal = arr[0] * 60 + +arr[1];// 到达时间相减得到分钟let dis = arrVal - depVal;// 如果是第二天凌晨时间段,需要加24小时if(dis < 0){dis = arrVal + 24 * 60 - depVal;}// 得到相差时间return `${ Math.floor(dis / 60)}${dis % 60}分`}}
}
</script>

控制列表展开

给组件添加一个开关控制展开收起,比较通用的解决办法。

components/air/flightsItem.vue

<template><div class="flight-item"><div @click="handleShowRecommend"><!-- 其他代码... --></div><div class="flight-recommend" v-if="showRecommend"><!-- 其他代码... --></div></div>
</template><script>
export default {data(){return {showRecommend: false // 列表默认收起}},// 其他代码...methods: {// 控制推荐列表的展开收起handleShowRecommend(){this.showRecommend = !this.showRecommend;}}
}
</script>

分页

处理分页的两个关键元素,pageIndexpageSize

pages/air/flights.vue

<template><section class="contianer"><el-row  type="flex" justify="space-between"><!-- 其他代码... --><!-- 航班信息 --><div><!-- 航班列表 --><flightsItem v-for="(item, index) in dataList" :key="index" :data="item"/><!-- 分页 --><el-row type="flex" justify="center" style="margin-top:10px;"><!-- size-change:切换条数时候触发 --><!-- current-change:选择页数时候触发 --><!-- current-page: 当前页数 --><!-- page-size:当前条数 --><!-- total:总条数 --><el-pagination@size-change="handleSizeChange"@current-change="handleCurrentChange":current-page="pageIndex":page-sizes="[5, 10, 15, 20]":page-size="pageSize"layout="total, sizes, prev, pager, next, jumper":total="flightsData.total"></el-pagination></el-row></div></div><!-- 其他代码... --></el-row></section>
</template><script>
// 其他代码...export default {data(){return {// 其他代码...pageIndex: 1, // 当前页数pageSize: 5,  // 显示条数}},// 其他代码...methods: {// 获取航班总数据getData(){this.$axios({url: `airs`,params: this.$route.query // 来自URL的5个参数}).then(res => {this.flightsData = res.data;// this.dataList = this.flightsData.flights;this.setDataList(); // 初始化dataList数据,获取1 - 10条});},// 设置dataList数据setDataList(){const start = (this.pageIndex - 1) * this.pageSize; const end = start + this.pageSize; this.dataList = this.flightsData.flights.slice(start, end);},// 切换条数时触发handleSizeChange(value){this.pageSize = value;this.pageIndex = 1;this.setDataList();},// 切换页数时触发handleCurrentChange(value){this.pageIndex = value;this.setDataList();},},// 其他代码...
}
</script>

因为分页的数据是手算的,所以这里将分页数据计算函数封装成一个计算属性,

整改数据:

data(){return {flightsData: {}, // 航班总数据// dataList: []     // 航班列表数据,用于循环flightsItem组件,单独出来是因为要分页}computed:{// 因为分页的数据是手算的,// 所以这里将分页数据计算函数封装成一个计算属性dataList(){// 因为这里面是页面进入时就执行, 不像之前可以在// 获取数据 .then 之后执行z// 加一个判断, 有数据,就切割, 没数据就返回默认空数组即可if(!this.filterList){return []}let start=(this.pageIndex-1)*this.pageSizelet end=this.pageSize+startreturn this.filterList.slice(start,end)}},

总结

  1. 请求机票列表接口,获取到数据
  2. 循环机票列表数据,并且把每一项数据传给flightsItem.vue组件
  3. 计算出发时间和到达时间的相差值
  4. 使用变量控制列表的展开收起
  5. 分页数据的切换

条件过滤

思路

  1. 条件过滤的布局
  2. 渲染过滤数据
  3. 过滤列表
  4. 撤销条件

实现步骤

条件过滤的布局

页面效果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4oQRxqYy-1605265233024)(%E9%97%B2%E4%BA%91%E6%80%BB%E7%AC%94%E8%AE%B0/1560767899094-1605244555446.png)]

1.新建过滤组件components/air/flightsFilters.vue,并添加以下内容:

<template><div class="filters"><el-row type="flex" class="filters-top" justify="space-between" align="middle"><el-col :span="8">单程: 广州 - 上海 / 2019-06-17</el-col><el-col :span="4"><el-select size="mini" v-model="airport" placeholder="起飞机场" @change="handleAirport"><el-optionlabel="白云机场"value="白云机场"></el-option></el-select></el-col><el-col :span="4"><el-select size="mini" v-model="flightTimes"  placeholder="起飞时间" @change="handleFlightTimes"><el-optionlabel="00:00 - 06:00"value="1"></el-option></el-select></el-col><el-col :span="4"><el-select size="mini" v-model="company"  placeholder="航空公司" @change="handleCompany"><el-optionlabel="厦门航空"value="厦门航空"></el-option></el-select></el-col><el-col :span="4"><el-select size="mini" v-model="airSize" placeholder="机型" @change="handleAirSize"><el-optionlabel=""value=""></el-option></el-select></el-col></el-row><div class="filter-cancel">筛选:<el-button type="primary" round plain size="mini" @click="handleFiltersCancel">撤销</el-button></div></div>
</template><script>
export default {data(){return {airport: "",        // 机场flightTimes: "",    // 出发时间company: "",        // 航空公司airSize: "",        // 机型大小}},methods: {// 选择机场时候触发handleAirport(value){},// 选择出发时间时候触发handleFlightTimes(value){},// 选择航空公司时候触发handleCompany(value){},// 选择机型时候触发handleAirSize(value){},// 撤销条件时候触发handleFiltersCancel(){},}
}
</script>

2.在pages/air/fights.vue中引入组件

<template><section class="contianer"><!-- 其他代码... --><!-- 过滤条件 --><FlightsFilters/><!-- 其他代码... --></section>
</template>
<script>
// 其他代码...
import FlightsFilters from "@/components/air/flightsFilters.vue"export default {// 其他代码...components: {// 其他代码...FlightsFilters}
}
</script> 

渲染过滤数据

在请求列表数据时列表接口已经把过滤的数据信息带过来了,现在只需要把值传给组件就可以了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6qVOF6mf-1605265233026)(%E9%97%B2%E4%BA%91%E6%80%BB%E7%AC%94%E8%AE%B0/1560770172921-1605244555446.png)]

1.先在pages/air/flights.vue中初始化数据,并传值

<template><section class="contianer"><!-- 其他代码... --><!-- 过滤条件 等options有数据了再传值--><flightsFilters v-if="flightsData.options" :data=flightsData /><!-- 其他代码... --></section>
</template>
<script>
// 其他代码...
import FlightsFilters from "@/components/air/FlightsFilters.vue" export default {data(){return {flightsData: { // 航班总数据   flights: [],info: {},options: {}}, // 其他代码...}},components: {FlightsListHead,FlightsItem,FlightsFilters},// 其他代码...
}
</script> 

2.在components/air/flightsFilters.vue中渲染过滤数据

<template><div class="filters"><el-row type="flex" class="filters-top" justify="space-between" align="middle"><el-col :span="8">单程: {{data.info.departCity}} - {{data.info.destCity}} / {{data.info.departDate}}</el-col><el-col :span="4"><el-select size="mini" v-model="airport" placeholder="起飞机场" @change="runFilters"><el-option:label="v":value="v"v-for="(v,i) in data.options.airport" :key='i'></el-option></el-select></el-col><el-col :span="4"><el-select size="mini" v-model="flightTimes"  placeholder="起飞时间" @change="runFilters"><!-- 由于我们的筛选不经过后台, 这里的 value 可以随便定只要后面写筛选, 根据这里的 value 值去过滤即可 --><el-option:label="`${v.from}:00-${v.to}:00`":value="`${v.from},${v.to}`"v-for="(v,i) in data.options.flightTimes" :key='i'></el-option></el-select></el-col><el-col :span="4"><el-select size="mini" v-model="company"  placeholder="航空公司" @change="runFilters"><el-option:label="v":value="v" v-for="(v,i) in data.options.company" :key='i'></el-option></el-select></el-col><el-col :span="4"><!-- 这个大中小型号没有数据,需要自己编 --><el-select size="mini" v-model="airSize" placeholder="机型" @change="runFilters"><el-option:label="v.label":value="v.value"v-for="(v,i) in sizeOptions" :key='i'></el-option></el-select></el-col></el-row><div class="filter-cancel">筛选:<el-button type="primary" round plain size="mini" @click="handleFiltersCancel">撤销</el-button></div></div>
</template><script>
export default {data(){return {sizeOptions: [{name: "大", size: "L"},{name: "中", size: "M"},{name: "小", size: "S"},],// 其他代码}},props: {data: {type: Object,default: {}}},// 其他代码
}
</script>

过滤列表!

1.过滤条件触发时候需要修改数组列表flightsData.flights,这样原来的列表就会被覆盖了,所以需要缓存一份列表用于根据条件提取数据

修改pages/air/flights.vue代码如下:

<template><section class="contianer"><!-- 其他代码... --><!-- 过滤条件 --><!-- data 是不会被修改的列表数据 --><!-- 过滤条件 等options有数据了再传值--><flightsFilters v-if="flightsData.options" :data=flightsData @setDAataList='setDAataList' /><!-- 其他代码... --></section>
</template><script>
// 其他代码...export default {data(){return {// 其他代码...filterList: [], //存放筛选过后的数据// 其他代码...}},// 其他代码...methods: {// 获取航班总数据getData(){this.$axios({url: `airs`,params: this.$route.query}).then(res => {this.flightsData = res.data;// 缓存一份新的列表数据数据,这个列表不会被修改// 而flightsData会被修改this.filterList =[...this.flightsData.flights]});},//监听过滤的新数据setDAataList(newList){this.filterList=newListconsole.log(this.filterList);},// 其他代码...},// 其他代码...
}
</script>

分页的总页修改

:total="filterList.length"

2.在过滤事件中修改列表数据

components/air/flightsFilters.vue

<template><div class="filters"><!-- 其他代码 --></div>
</template><script>
export default {// 其他代码...methods: {// 选择机场时候触发handleAirport(value){const arr = this.data.flights.filter(v => v.org_airport_name === value);this.$emit("setDataList", arr);},// 选择出发时间时候触发handleFlightTimes(value){const [from, to] = value.split(","); // [6,12]const arr = this.data.flights.filter(v => {// 出发时间小时const start = +v.dep_time.split(":")[0];return start >= from && start < to;});this.$emit("setDataList", arr);},// 选择航空公司时候触发handleCompany(value){const arr = this.data.flights.filter(v => v.airline_name === value);this.$emit("setDataList", arr);},// 选择机型时候触发handleAirSize(value){const arr = this.data.flights.filter(v => v.plane_size === value);this.$emit("setDataList", arr);},// 撤销条件时候触发handleFiltersCancel(){},}
}
</script>

撤销条件

初始化所有条件,还原数据列表。

		// 撤销条件时候触发handleFiltersCancel(){this.airport = "";this.flightTimes = "";this.company = "";this.airSize = "";this.$emit("setDataList", this.data.flights);},

封装一下过滤代码:把过滤放到data里面变成过滤属性

    rules:{// 纯函数, 不依赖当前环境// 不对当前数据造成副作用// 相同的输入, 每次都能够得到相同的输出// 🚩🚩🚩📦📦定义每个选项的过滤方法// 参数:参数要过滤的方法,这里只是定义数据,方法,用于下面的方法airport:(flights,userOption)=>{return flights.filter(v=>{return v.org_airport_name===userOption})},flightTimes:(flights,userOption)=>{// 分割选出来的时间:0-6const from = Number(userOption.split(',')[0])const to = Number(userOption.split(',')[1])console.log(from,to);return flights.filter(v=>{// 过滤出 在上面分割时间内的数据:0<=time<=6let time=Number(v.dep_time.split(':')[0]) console.log(time,typeof time);return time >= from && time < to})   },company:(flights,userOption)=>{return flights.filter(v=>{return v.airline_name===userOption})},airSize:(flights,userOption)=>{return flights.filter(v=>{return v.plane_size===userOption})},}
 methods: {// 解决每次过滤都会使用原始数据, 每一个过滤器都会覆盖上一个过滤器的结果runFilters(){let flights=[...this.data.flights]console.log(flights);for(let item in this.rules){// item要加thislet userOption=this[item]let  handleFn=this.rules[item]if(userOption){// 带上参数执行过滤方法flights=handleFn(flights,userOption)}}this.$emit('setDAataList',flights)}, 

总结

本节重点在过滤列表的实现,但是实现并非只有这一种方法,目的是想在缓存数据的方法中能达到举一反三,这也是编程开发时常见的手段。

跳转到创建订单页

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S5ypb3LS-1605265233028)(%E9%97%B2%E4%BA%91%E6%80%BB%E7%AC%94%E8%AE%B0/1560773545973-1605244555446.png)]

选定按钮跳转到订单页,订单页需要的参数idseat_xid

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7dWBZhPF-1605265233029)(%E9%97%B2%E4%BA%91%E6%80%BB%E7%AC%94%E8%AE%B0/1560773748576-1605244555446.png)]

选定按钮添加点击事件实现跳转,即使目前还没订单页,但不影响查看url的参数。

components/air/flightsItem.vue

<template>
<!-- 其他代码... --><el-col :span="3" class="choose-button"><el-button type="warning" size="mini"@click="handleChoose(data.id, item.seat_xid)">选定</el-button></el-col><!-- 其他代码... -->
</template>
<script>
export default {// 其他代码...methods: {// 其他代码...// 选定按钮触发跳转handleChoose(id, seatId){this.$router.push({path: "/air/order", query: {id,seat_xid: seatId}})},}
}
</script> 

历史查询记录

思路

  1. 侧边栏布局
  2. 添加记录到本地
  3. 读取本地数据
  4. 监听url的变化

实现步骤

侧边栏布局

页面效果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uOj5vm8i-1605265233030)(%E9%97%B2%E4%BA%91%E6%80%BB%E7%AC%94%E8%AE%B0/1560774193680-1605244555447.png)]

1.新建侧边栏组件components/air/flightsAside.vue,并添加以下内容:

<template><div class="aside"><div class="statement"><el-row type="flex" justify="space-between" class="statement-list"><el-col :span="8"><i class="iconfont iconweibiaoti-_huabanfuben" style="color:#409EFF;"></i><span>航协认证</span></el-col><el-col :span="8"><i class="iconfont iconbaozheng" style="color:green;"></i><span>出行保证</span></el-col><el-col :span="8"><i class="iconfont icondianhua" style="color:#409EFF;"></i><span>7x24</span></el-col></el-row><p class="service-tel">免费客服电话:4006345678转2</p></div><div class="history"><h5>历史查询</h5><nuxt-link to="#"><el-row type="flex" justify="space-between" align="middle"class="history-item"><div class="air-info"><div class="to-from">广州 - 上海</div><p>2019-06-16</p></div><span>选择</span></el-row></nuxt-link></div></div>
</template><script>
export default {}
</script><style scoped lang="less">
.statement{border:1px #ddd solid;.statement-list{padding: 10px 0;> div{text-align: center;i{display: block;font-size: 40px;}span{font-size:12px;}}}.service-tel{height: 32px;line-height: 32px;padding:0 10px;background: #f6f6f6;font-size: 14px;}
}.history{border:1px #ddd solid;padding:10px;margin-top:10px;h5{font-size: 16px;font-weight: normal;padding-bottom: 10px;border-bottom:1px #eee solid;}.history-item{padding:10px 0;font-size: 14px;border-bottom: 1px #eee solid;&:last-child{border:none;}.to-from{margin-bottom: 5px;}p{font-size: 12px;color:#666;}span{color:#fff;display: block;padding:2px 10px;background: orange;border-radius: 4px;font-size:12px;cursor: pointer;}}
}
</style>

2.在pages/air/fights.vue中引入组件

<template><section class="contianer"><!-- 其他代码... --><!-- 侧边栏 --><div class="aside"><!-- 侧边栏组件 --><FlightsAside/></div><!-- 其他代码... --></section>
</template>
<script>
// 其他代码...
import FlightsAside from "@/components/air/flightsAside.vue"export default {// 其他代码...components: {// 其他代码...FlightsAside}
}
</script> 

添加记录到本地

添加的操作需要回到机票首页的搜索表单中,搜索跳转时把搜索的记录添加到本地。

components/air/searchForm.vue

// 提交表单是触发
handleSubmit(){// 其他代码...// 添加到本地存储const airs = JSON.parse(localStorage.getItem('airs') || `[]`);airs.push(this.form);localStorage.setItem("airs", JSON.stringify(airs));this.$router.push({path: "/air/flights",query: this.form})
}

读取本地数据

从本地读取记录列表并且渲染到页面。

components/air/flightsAside.vue

<template><div class="aside"><!-- 其他代码 --><div class="history"><h5>历史查询</h5><nuxt-link :to="`/air/flights?departCity=${item.departCity}&departCode=${item.departCode}&destCity=${item.destCity}&destCode=${item.destCode}&departDate=${item.departDate}`"  v-for="(item, index) in airsLog":key="index"><el-row type="flex" justify="space-between" align="middle"class="history-item"><div class="air-info"><div class="to-from">{{item.departCity}} - {{item.destCity}}</div><p>{{item.departDate}}</p></div><span>选择</span></el-row></nuxt-link></div></div>
</template><script>
export default {data(){return {airsLog: []}},mounted(){// 获取历史记录this.airsLog = JSON.parse(localStorage.getItem("airs") || `[]`);}
}
</script>

但是现在点击历史记录并不会刷新页面,需要监听url的变化,重新发起请求。

监听url的变化

pages/air/flights.vue

<script>
export default {watch: {$route(){//手动改回当前页this.pageIndex=1this.getData();}},// 其他代码...
}
</script>

方法2:利用vuex存储数据

步骤:

新建一个新的仓库history设置state和mutations用于存储表单信息在机票搜索页

点击搜索时提交表单时,this.$store.commit(‘history/addHistory’,this.form)存储表单信息,

在组件中遍历数组$store.state.history.historyList渲染到侧边栏组件中。

//新建一个新的仓库history.js
export const state = () => ({historyList: []
})export const mutations = {addHistory(state, data) {state.historyList.unshift(data)}
};
//--------------------------------------
//点击搜索时提交表单时,存储数据this.$store.commit('history/addHistory',this.form)//-------------flightsAside.vue-------------------------<div class="history"><h5>历史查询</h5><nuxt-link :to="`/air/flights?departCity=${item.departCity}&departCode=${item.departCode}&destCity=${item.destCity}&destCode=${item.destCode}&departDate=${item.departDate}`" v-for="(item,index) in $store.state.history.historyList" :key="index"><el-row type="flex" justify="space-between" align="middle"class="history-item"><div class="air-info"><div class="to-from">{{item.departCity}} - {{item.destCity}}</div><p>{{item.departDate}}</p></div><span>选择</span></el-row></nuxt-link></div>

总结

1.主要功能在于如何存储数据到本地,和读取本地的数据

2.监听url的变化

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 【Linux】PKG_CONFIG_PATH

    目录 [ERROR]为了解决以下部署问题 一、什么是configure 二、什么是pkg-config 1、pkg-config介绍 2、pkg-config功能 3、glib-2.0的.pc文件内容举例 4、 环境变量PKG_CONFIG_PATH 三、运行时库的连接 [ERROR]为了解决以下部署问题 Package sentencepiece was not foun…...

    2024/5/1 7:42:36
  2. redux持久化(<PersistGate loading={null} persistor={persistStore(store)}></PersistGate>)

    //引入标题括号中的 PersistGate 这一句在Provider标签里面 //import { PersistGate } from ‘redux-persist/lib/integration/react’ import { createStore, compose, combineReducers, applyMiddleware } from ‘redux’ import promise from ‘redux-promise’ // 中间件 …...

    2024/5/1 5:26:45
  3. Excel已检测到.txt文件是SYLK文件,但是不能将其加载

    今天处理数据&#xff0c;当我打开一个文本文件时&#xff0c; 解释如下&#xff1a; 当您打开一个文本文件、 CSV 文件和文件的前两个字符是将大写字母"I"&#xff0c;"D"时&#xff0c;会发生此问题。 例如文本文件可能包含以下文本&#xff1a; ID, ST…...

    2024/3/23 11:14:47
  4. 数组或list查找单个实体元素

    从后台拿到的list数据之后&#xff0c;在前端做处理时&#xff0c;比如根据name查询单条实体&#xff0c;此时用find即可 注&#xff1a;findindex 也可用来查找&#xff0c;只不过不是返回实体&#xff0c;而是返回下标&#xff08;从0开始&#xff09; 如&#xff1a; //数…...

    2024/4/25 3:11:16
  5. #C++#封装2

    #C#封装2 #include <iostream> #include <string> using namespace std; //设计一个学生类&#xff0c;属性有姓名和学号&#xff0c;可以给姓名和学号赋值&#xff0c;可以显示学生的姓名和学号 class Student{ public://类中的属性和行为同一称为成员 string na…...

    2024/3/23 11:14:46
  6. R语言函数-twoClassSummary

    所属package&#xff1a;caret 作用&#xff1a;计算两分类的灵敏度&#xff0c;特异性和ROC曲线下面积。 应用场景&#xff1a; 作为caret中trainControl中的summaryFunction的input # 划分的重数&#xff0c;repeats确定了反复的次数 fitControl trainControl(method &quo…...

    2024/4/21 13:38:40
  7. 精通弹唱第一课(使用节奏变化弹好chord谱)

    本篇文章将使用吉他谱制作软件guitar pro软件向大家介绍如何改造来自网上的chord谱。在各位日常的弹唱之中&#xff0c;应该会常常遇到朋友点歌的情况&#xff0c;如果点唱的这首歌我们听过&#xff0c;那我们尚可以靠以往的记忆来应付。如果这首歌我们只是曾经听到过听过&…...

    2024/4/28 0:43:12
  8. 十进制整数如何转二进制形式和十六进制形式

    进制转换 注&#xff1a;二进制数的最高位为符号位&#xff0c;0表示正数&#xff0c;1表示负数&#xff0c;正数的补码和反码是其本身。 **源码&#xff1a;**1000 0000 0001 **反码&#xff1a;**1111 1111 1110&#xff08;符号位不变, 其余各位取反&#xff09; **补码&am…...

    2024/3/23 11:14:44
  9. 关于Transformer的细节的讨论

    Transformer 细节的讨论 Transformer 能力已经得到普遍性的认可&#xff0c;尤其是其中 注意机制&#xff08;attention mechanism&#xff09;更是备受推崇&#xff0c;有非常多的博文已经对transformer进行深入的剖析, 比方说 The Illustrated Transformer。 在读了很多不同…...

    2024/3/23 11:14:43
  10. 设计模式学习笔记-适配器模式

    适配器模式对这个模式我自己的理解是&#xff0c;如果在你的类结构中&#xff0c;你希望引入一个现有的类&#xff0c;且这个类又无法修改&#xff0c;这时候就需要用到适配器&#xff0c;模式了&#xff0c;所以适配器模式是一种补救措施。例如在之前的观察者模式中&#xff0…...

    2024/3/23 11:14:40
  11. Fiddler开机启动并缩小至右下角

    Fiddler开机启动并缩小至右下角 之前看的onenote同步问题解决方案这篇文章解决了onenote同步问题&#xff0c;但是每次开机都要手动启动Fiddler着实麻烦&#xff0c;下面介绍一下让Fiddler开机最小化启动的方法。 1)首先找到一个Fiddler的快捷方式 在小娜搜索Fiddler&#xf…...

    2024/4/20 9:19:21
  12. 腾讯云AI人脸识别到底是什么

    人工智能是最近几年特别火的概念&#xff0c;人脸识别作为AI中一种相对应用较多的技术&#xff0c;也广泛被人提及&#xff0c;但是人脸识别到底是什么呢&#xff1f;我们从腾讯云的产品角度来看下&#xff1a; 腾讯云人脸识别&#xff08;Face Recognition&#xff09;是基于…...

    2024/4/25 21:48:59
  13. 经典Java面试题

    大家好&#xff0c;我是酱油君。这是互联网技术岗的分享专题&#xff0c;废话少说&#xff0c;进入正题&#xff1a; 每个篇章的最后都有答案的链接&#xff0c;都在这个文章里回答&#xff0c;太长了~所以另外切了子文章&#xff08;这就是模块和子模块的关系&#xff09; 以…...

    2024/3/19 23:01:52
  14. 深入解析JVM(十一):栈帧结构

    大纲 前言 之前讲解了运行时数据区和类加载的过程&#xff0c;现在我们看下虚拟机中栈帧都是啥样子的&#xff0c;这个应该算是运行时数据区(JVM内存结构的补充)&#xff0c;如果不了解可以参考我的这篇博文 JVM内存结构 运行时栈帧结构 运行时栈帧中存储了以下内容 局部变…...

    2024/3/19 23:01:51
  15. Filecoin网络中的反馈机制探讨

    任何一个稳定运行的系统都需要一个各种控制回路&#xff0c;通过反馈机制保障系统稳定有效的运行。在区块链项目中同样如此&#xff0c;Filecoin的系统比较以往的区块链系统更加复杂&#xff0c;其中经济模型的设计更是如此。V|jasonbody 反馈机制在生活中的普遍性 反馈系统在…...

    2024/3/30 5:24:10
  16. Java面向对象之电商管理系统

    Java面向对象之电商管理系统 tip /完成一个电商系统的商品库存管理&#xff0c;包含两个类&#xff1a; 商品类&#xff08;编号&#xff0c;名称&#xff0c;类别&#xff0c;单价&#xff0c;库存量&#xff0c;生产地&#xff09; 商品管理类 要求在管理类中完成如下功能…...

    2024/3/27 14:42:35
  17. 寻找云上法律,云游戏合规边界何在?

    【深几度产业报道系列】 撰稿&#xff5c;商武度 编辑&#xff5c;吴俊宇 「摘要&#xff1a;云游戏的技术革新对现行法律保护体系&#xff0c;特别是知识产权保护体系提出了诸多新的挑战&#xff0c;版权保护、合理使用、法定许可等相关法律语境也亟待扩充。」 2019年被业…...

    2024/3/19 23:01:47
  18. 第三章--(总线)

    【 什么是总线? 使用总线能解决什么&#xff1f; 总线的分类 性能指标 总线结构 总线控制 】 总线连接各个部件之间的信息传输线 类似电源线。 2. 双总线 --面向CPU 3. 双总线 --以存储器为中心 4. 总线的分类 5. 总线的性能指标 6. 总线结构 除了上述的 单、双总线结构 还有…...

    2024/3/19 23:01:47
  19. C++之VS链接数据库的方法

    1、把架构从X86改成X64&#xff1b; 2、查看:\Program Files\MySQL\MySQL Server 8.0目录下面是否存在include和lib两个文件&#xff0c;打开项目属性&#xff0c;选择VC目录&#xff0c;选择包含目录&#xff0c;点击 &#xff0c;添加C:\Program Files\MySQL\MySQL Server 8.…...

    2024/3/19 23:01:46
  20. ida, ollydbg, windbg,visual studio 2019调试符号环境配置

    ida, ollydbg, windbg,visual studio 2019等调试符号服务器配置 windows环境调试符号配置&#xff0c;如果你只设置_NT_SYMBOL_PATH可能会很慢很慢&#xff0c;甚至不能加载&#xff0c;原因你懂的&#xff0c;解决方案就是配置_NT_SYMBOL_PROXY进行流量转发&#xff0c;前提是…...

    2024/4/21 17:11:05

最新文章

  1. k8s 日常维护命令简介

    基础信息 1、查看客户端和服务器版本 如果 kubectl 客户端版本低于 k8s 服务端版本太多&#xff0c;使用 kubectl 管理 k8s 时可能会出现未知异常。如果升级了 k8s 版本记得也要更新下使用的 kubectl 版本。 [roothaiouc ~]# kubectl version -ojson | jq -r {client:.clien…...

    2024/5/1 9:32:01
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 【3GPP】【核心网】【5G-A】5G-A三载波聚合介绍

    1. 欢迎大家订阅和关注&#xff0c;3GPP通信协议精讲&#xff08;2G/3G/4G/5G/IMS&#xff09;知识点&#xff0c;专栏会持续更新中.....敬请期待&#xff01; 目录 1. 5G-A概念 2. 什么是3CC 3. 3CC的技术看点 4. 3CC的应用场景 5. 3CC支持的终端 1. 5G-A概念 5G-A全称5G…...

    2024/4/24 8:10:16
  4. 【APUE】网络socket编程温度采集智能存储与上报项目技术------多路复用

    作者简介&#xff1a; 一个平凡而乐于分享的小比特&#xff0c;中南民族大学通信工程专业研究生在读&#xff0c;研究方向无线联邦学习 擅长领域&#xff1a;驱动开发&#xff0c;嵌入式软件开发&#xff0c;BSP开发 作者主页&#xff1a;一个平凡而乐于分享的小比特的个人主页…...

    2024/4/30 7:26:52
  5. Topaz Video AI for Mac v5.0.0激活版 视频画质增强软件

    Topaz Video AI for Mac是一款功能强大的视频处理软件&#xff0c;专为Mac用户设计&#xff0c;旨在通过人工智能技术为视频编辑和增强提供卓越的功能。这款软件利用先进的算法和深度学习技术&#xff0c;能够自动识别和分析视频中的各个元素&#xff0c;并进行智能修复和增强&…...

    2024/4/30 4:45:36
  6. 416. 分割等和子集问题(动态规划)

    题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义&#xff1a;dp[i][j]表示当背包容量为j&#xff0c;用前i个物品是否正好可以将背包填满&#xff…...

    2024/4/30 9:36:27
  7. 【Java】ExcelWriter自适应宽度工具类(支持中文)

    工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...

    2024/4/30 0:57:52
  8. Spring cloud负载均衡@LoadBalanced LoadBalancerClient

    LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon&#xff0c;直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件&#xff0c;我们讨论Spring负载均衡以Spring Cloud2020之后版本为主&#xff0c;学习Spring Cloud LoadBalance&#xff0c;暂不讨论Ribbon…...

    2024/4/29 18:43:42
  9. TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案

    一、背景需求分析 在工业产业园、化工园或生产制造园区中&#xff0c;周界防范意义重大&#xff0c;对园区的安全起到重要的作用。常规的安防方式是采用人员巡查&#xff0c;人力投入成本大而且效率低。周界一旦被破坏或入侵&#xff0c;会影响园区人员和资产安全&#xff0c;…...

    2024/5/1 4:07:45
  10. VB.net WebBrowser网页元素抓取分析方法

    在用WebBrowser编程实现网页操作自动化时&#xff0c;常要分析网页Html&#xff0c;例如网页在加载数据时&#xff0c;常会显示“系统处理中&#xff0c;请稍候..”&#xff0c;我们需要在数据加载完成后才能继续下一步操作&#xff0c;如何抓取这个信息的网页html元素变化&…...

    2024/4/30 23:32:22
  11. 【Objective-C】Objective-C汇总

    方法定义 参考&#xff1a;https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...

    2024/4/30 23:16:16
  12. 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】

    &#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】&#x1f30f;题目描述&#x1f30f;输入格…...

    2024/5/1 6:35:25
  13. 【ES6.0】- 扩展运算符(...)

    【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数&#xff0…...

    2024/4/29 21:25:29
  14. 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?

    文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕&#xff0c;各大品牌纷纷晒出优异的成绩单&#xff0c;摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称&#xff0c;在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁&#xff0c;多个平台数据都表现出极度异常…...

    2024/5/1 4:35:02
  15. Go语言常用命令详解(二)

    文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令&#xff0c;这些命令可以帮助您在Go开发中进行编译、测试、运行和…...

    2024/4/30 14:53:47
  16. 用欧拉路径判断图同构推出reverse合法性:1116T4

    http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b&#xff0c;我们在 a i a_i ai​ 和 a i 1 a_{i1} ai1​ 之间连边&#xff0c; b b b 同理&#xff0c;则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然&#xff0…...

    2024/4/30 22:14:26
  17. 【NGINX--1】基础知识

    1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息&#xff0c;并安装一些有助于配置官方 NGINX 软件包仓库的软件包&#xff1a; apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...

    2024/5/1 6:34:45
  18. Hive默认分割符、存储格式与数据压缩

    目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限&#xff08;ROW FORMAT&#xff09;配置标准HQL为&#xff1a; ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...

    2024/4/30 22:57:18
  19. 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法

    文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中&#xff0c;传感器和控制器产生大量周…...

    2024/4/30 20:39:53
  20. --max-old-space-size=8192报错

    vue项目运行时&#xff0c;如果经常运行慢&#xff0c;崩溃停止服务&#xff0c;报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中&#xff0c;通过JavaScript使用内存时只能使用部分内存&#xff08;64位系统&…...

    2024/5/1 4:45:02
  21. 基于深度学习的恶意软件检测

    恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞&#xff0c;例如可以被劫持的合法软件&#xff08;例如浏览器或 Web 应用程序插件&#xff09;中的错误。 恶意软件渗透可能会造成灾难性的后果&#xff0c;包括数据被盗、勒索或网…...

    2024/5/1 8:32:56
  22. JS原型对象prototype

    让我简单的为大家介绍一下原型对象prototype吧&#xff01; 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定&#xff0c;每一个构造函数都有一个 prototype 属性&#xff0c;指向另一个对象&#xff0c;所以我们也称为原型对象…...

    2024/4/29 3:42:58
  23. C++中只能有一个实例的单例类

    C中只能有一个实例的单例类 前面讨论的 President 类很不错&#xff0c;但存在一个缺陷&#xff1a;无法禁止通过实例化多个对象来创建多名总统&#xff1a; President One, Two, Three; 由于复制构造函数是私有的&#xff0c;其中每个对象都是不可复制的&#xff0c;但您的目…...

    2024/4/29 19:56:39
  24. python django 小程序图书借阅源码

    开发工具&#xff1a; PyCharm&#xff0c;mysql5.7&#xff0c;微信开发者工具 技术说明&#xff1a; python django html 小程序 功能介绍&#xff1a; 用户端&#xff1a; 登录注册&#xff08;含授权登录&#xff09; 首页显示搜索图书&#xff0c;轮播图&#xff0…...

    2024/5/1 5:23:20
  25. 电子学会C/C++编程等级考试2022年03月(一级)真题解析

    C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...

    2024/4/30 20:52:33
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57