提交 cc1edb0b 编写于 作者: 杨广俊's avatar 杨广俊

排序优化

上级 34b3acfd
......@@ -56,6 +56,54 @@ export function deepCopy(obj) {
return result;
}
/**
*
* @param {Array} originData 初始数据
* @param {Boolean} isUp true: 升序 false: 降序
* @param {String} sortField 排序字段,如果没有,则直接排序
* @param {Function} converFun 字段转换函数
*/
export function arraySort(originData, isUp = true, sortedField, converFun) {
let sortedData = originData.slice(), swap, sourceA, sourceB;
for(let i = 0; i < sortedData.length - 1; i ++) {
for(let j = 0; j < sortedData.length - i -1; j++) {
sourceA = sortedData[j]
sourceB = sortedData[j + 1]
if(sortedField && !converFun) {
sourceA = sourceA[sortedField]
sourceB = sourceB[sortedField]
} else if(sortedField && converFun && typeof converFun === 'function'){
if(!sourceA[sortedField] || !sourceB[sortedField]) {
sourceA = 0
sourceB = 0
} else {
sourceA = converFun(sourceA[sortedField])
sourceB = converFun(sourceB[sortedField])
}
}
if(!sourceA || !sourceB) {
sourceA = 0
sourceB = 0
}
if(isUp) {
if(sourceA - 0 > sourceB - 0) {
swap = sortedData[j]
sortedData[j] = sortedData[j + 1]
sortedData[j + 1] = swap
}
} else {
if(sourceA - 0 < sourceB - 0) {
swap = sortedData[j]
sortedData[j] = sortedData[j + 1]
sortedData[j + 1] = swap
}
}
}
}
console.log(sortedData)
return sortedData
}
export function pageJumpUrl(){
let url = {
pageListUrl : 'https://test1-contents.yunqueyi.com/content_list',
......
......@@ -6,15 +6,15 @@
</div>
<div class="swiper">
<mt-swipe :auto="3000" :speed="speedSwiper" :stopPropagation="prevent">
<mt-swipe-item v-for="(item, index) in listSwiper" :key="index" >
<img :src="item.imageUrl" @click="goLinkByswiper(item)"/>
<mt-swipe-item v-for="(item, index) in listSwiper" :key="index">
<img :src="item.imageUrl" @click="goLinkByswiper(item)">
</mt-swipe-item>
</mt-swipe>
</div>
</section>
<!-- 热门讲师 -->
<YqyHotLecturer />
<YqyHotLecturer/>
<!-- 讲师标题 -->
<YqyLecturerTitle/>
......@@ -34,30 +34,27 @@
<YqyTeacherList :parmData="parmDataDoctList"/>
<!-- 讲师选择组件 - 弹框 -->
<YqyLecturerSelectContent
ref="lecturerSelContRef"
@selectedData="selectedLecturerList"
/>
<YqyLecturerSelectContent ref="lecturerSelContRef" @selectedData="selectedLecturerList"/>
<!--返回顶部-->
<BackTop v-if="searchFix"/>
</div>
</template>
<script>
import { Swipe, SwipeItem} from 'mint-ui';
import {mapState, mapMutations, mapActions} from 'vuex'
import BackTop from '@/components/business/backTop';
import YqyHomeHeader from '@/components/business/yqy-home-header';
import YqyLecturerTitle from '@/components/business/yqy-lecturer-title';
import YqyLecturerSelect from '@/components/business/yqy-lecturer-select';
import YqyLecturerOrder from '@/components/business/yqy-lecturer-order';
import YqyLecturerSelectContent from '@/components/business/yqy-lecturer-select-content';
import YqyHotLecturer from '@/components/business/yqy-hot-lecturer';
import YqyTeacherList from '@/components/business/yqy-teacher-list'
import { arraySort } from "@/utils/index";
import { Swipe, SwipeItem } from "mint-ui";
import { mapState, mapMutations, mapActions } from "vuex";
import BackTop from "@/components/business/backTop";
import YqyHomeHeader from "@/components/business/yqy-home-header";
import YqyLecturerTitle from "@/components/business/yqy-lecturer-title";
import YqyLecturerSelect from "@/components/business/yqy-lecturer-select";
import YqyLecturerOrder from "@/components/business/yqy-lecturer-order";
import YqyLecturerSelectContent from "@/components/business/yqy-lecturer-select-content";
import YqyHotLecturer from "@/components/business/yqy-hot-lecturer";
import YqyTeacherList from "@/components/business/yqy-teacher-list";
export default {
data(){
data() {
return {
showSelectedPage: true,
parmDataDoctList: [],
......@@ -67,32 +64,38 @@ export default {
isShowBackTop: false,
speedSwiper: 300,
//轮播图默认数据
listSwiper: [{
"imageUrl": require('../../images//banner-default.png')
},{
"imageUrl": require('../../images//banner-default.png')
},{
"imageUrl": require('../../images//banner-default.png')
},{
"imageUrl": require('../../images//banner-default.png')
},{
"imageUrl": require('../../images//banner-default.png')
}],
listSwiper: [
{
imageUrl: require("../../images//banner-default.png")
},
{
imageUrl: require("../../images//banner-default.png")
},
{
imageUrl: require("../../images//banner-default.png")
},
{
imageUrl: require("../../images//banner-default.png")
},
{
imageUrl: require("../../images//banner-default.png")
}
],
scrollTimer: null,
scrollTop: 0,
userToken: '',
userToken: "",
searchFix: false,
statusBarHeight: 0,
userMobile: '',
userMobile: "",
isFailSwiper: 1,
selectedTitleTitle: '全国',
selectedAreaName: '全国',
selectedAreaSubName: '',
selectedLevelName: '全部等级',
selectedDepartName: '全部科室',
}
selectedTitleTitle: "全国",
selectedAreaName: "全国",
selectedAreaSubName: "",
selectedLevelName: "全部等级",
selectedDepartName: "全部科室"
};
},
components:{
components: {
Swipe,
SwipeItem,
BackTop,
......@@ -102,43 +105,45 @@ export default {
YqyLecturerOrder,
YqyLecturerSelectContent,
YqyHotLecturer,
YqyTeacherList,
YqyTeacherList
},
computed: {
selectedTitle() {
return this.selectedTypeIndex === 1 ? '选择地区' : this.selectedTypeIndex === 2 ? '选择等级' : '选择科室'
return this.selectedTypeIndex === 1
? "选择地区"
: this.selectedTypeIndex === 2
? "选择等级"
: "选择科室";
}
},
beforeCreate() {
},
created () {
beforeCreate() {},
created() {
let _this = this;
_this.initAll()
_this.initAll();
_this.getUserInfo();
// window.__refresh = function(params){
// }
window.__getStatusBarHeight = function(parm){
window.__getStatusBarHeight = function(parm) {
// alert(JSON.stringify(parm))
_this.statusBarHeight = parm.statusBarHeight;
}
};
// alert("token之前");
window.__getUserInfo = function(parm){
window.__getUserInfo = function(parm) {
// _this.systemType = parm.systemType;
// _this.appVersion = parm.appVersion;
// _this.token = parm.userToken;
// _this.userToken = parm.userToken;
// _this.userMobile = parm.userMobile;
// _this.initByToken(parm.userToken);
}
};
// _this.getStatusHight()
// _this.initByToken('593F679F62964076AF1C7489DA3343ED');
// arraySort([1, 1, 1, 2, 2, 1, 1, 3, 4, 2, 5])
},
beforeMount() {
......@@ -146,114 +151,91 @@ export default {
// appBody.style.overflow = 'hidden'
// appBody.style.height = '0'
},
mounted(){
window.addEventListener('scroll', this.scrollFun);
mounted() {
window.addEventListener("scroll", this.scrollFun);
},
beforeDestroyed(){
window.removeEventListener('scroll', this.scrollFun)
},
watch:{
beforeDestroyed() {
window.removeEventListener("scroll", this.scrollFun);
},
watch: {},
methods: {
// 排序
orderAction(orderName, isSortUp) {
let orderType = isSortUp ? -1 : 1
let orderData = this.oldParmDataDoctList.slice()
orderData.sort((a, b)=> {
if (orderName === 'doctorFirstNameChar') {
if (!a[orderName] || !b[orderName]) {
return 0
}
if (a[orderName] > b[orderName]) {
return 1 * orderType
} else if (a[orderName] < b[orderName]) {
return -1 * orderType
} else {
return 0
}
} else if(orderName === 'newTime') {
if (!a[orderName] || !b[orderName]) {
return 0
}
let aTime = (new Date((a[orderName]).replace(/-/g, "/")).getTime())/1000
let bTime = (new Date((b[orderName]).replace(/-/g, "/")).getTime())/1000
if(aTime == bTime) return 0
if(isSortUp) {
return aTime > bTime ? 1 : -1
} else {
return aTime > bTime ? -1 : 1
}
} else {
if (a[orderName] > b[orderName]) {
return 1 * orderType
} else if (a[orderName] < b[orderName]) {
return -1 * orderType
let orderType = isSortUp ? -1 : 1;
let orderData = this.oldParmDataDoctList.slice();
if(orderName === "newTime") {
orderData = arraySort(orderData, isSortUp, orderName, (fieldValue) => {
return new Date(fieldValue.replace(/-/g, "/")).getTime() / 1000
})
} else {
return 0
}
orderData = arraySort(orderData, isSortUp, orderName)
}
})
this.parmDataDoctList = orderData
this.parmDataDoctList = orderData;
},
// 选择器组件回调
selectedLecturerList(paramList, selectedTitle, selectedLevelName, selectedDepartName) {
this.parmDataDoctList = paramList
this.oldParmDataDoctList = paramList
this.orderAction('doctorFirstNameChar', true)
this.$refs.lecturerOrderRef.reset()
this.selectedTitleTitle = selectedTitle
this.selectedLevelName = selectedLevelName
this.selectedDepartName = selectedDepartName
selectedLecturerList(
paramList,
selectedTitle,
selectedLevelName,
selectedDepartName
) {
this.parmDataDoctList = paramList;
this.oldParmDataDoctList = paramList;
this.orderAction("doctorFirstNameChar", true);
this.$refs.lecturerOrderRef.reset();
this.selectedTitleTitle = selectedTitle;
this.selectedLevelName = selectedLevelName;
this.selectedDepartName = selectedDepartName;
},
// 选择标题组件
selectedTypeFromTitle(index) {
this.selectedTypeIndex = index
this.$refs.lecturerSelContRef.selectedType(index)
this.$refs.lecturerSelContRef.show()
this.selectedTypeIndex = index;
this.$refs.lecturerSelContRef.selectedType(index);
this.$refs.lecturerSelContRef.show();
},
// 请求数据
initAll(){
this.getSwiper()
this.getYqDoctorDataByCD()
initAll() {
this.getSwiper();
this.getYqDoctorDataByCD();
},
//获取状态栏高度
getStatusHight(){
getStatusHight() {
rocNative.getStatusBarHeight({
__funcName: '__getStatusBarHeight'
})
__funcName: "__getStatusBarHeight"
});
},
//获取用户信息及版本号等()
getUserInfo(){
getUserInfo() {
rocNative.getUserInfo({
__funcName: '__getUserInfo'
})
__funcName: "__getUserInfo"
});
},
//轮播图跳转
goLinkByswiper(itemData){
goLinkByswiper(itemData) {
this.pageBurialPoin({
menuLevel:1,
menuCode:'m_home',
functionCode:'f_banner',
actionCode:'c_banner',
labelId:itemData.id,
labelValue:itemData.name
})
menuLevel: 1,
menuCode: "m_home",
functionCode: "f_banner",
actionCode: "c_banner",
labelId: itemData.id,
labelValue: itemData.name
});
let paramList = this.setEventByModuleCode(itemData);
rocNative.dispatchEventByModuleCode({
modeCode: itemData.appModuleInfo.code,
jsonString: paramList
})
});
},
//根据条件获取讲师列表
getYqDoctorDataByCD(){
getYqDoctorDataByCD() {
let _this = this,
para = {
provinceId: 0,
......@@ -261,237 +243,247 @@ export default {
countyId: 0,
levelGrade: 0,
departmentId: 0,
setEntry: 'headers'
}
this.GET('contents/courseDoctor/v1/getAllTeacher', para).then(res => {
if(res.code == '000000'){
_this.parmDataDoctList = res.data && res.data.list || []
_this.oldParmDataDoctList = res.data && res.data.list || []
_this.orderAction('doctorFirstNameChar', true)
}
})
setEntry: "headers"
};
this.GET("contents/courseDoctor/v1/getAllTeacher", para).then(res => {
if (res.code == "000000") {
_this.parmDataDoctList = (res.data && res.data.list) || [];
_this.oldParmDataDoctList = (res.data && res.data.list) || [];
_this.orderAction("doctorFirstNameChar", true);
}
});
},
scrollEndFun(){
let scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
scrollEndFun() {
let scrollTop =
document.body.scrollTop || document.documentElement.scrollTop;
// let newCourseTop = document.querySelector('#famus-teacher').offsetTop;
// let fivesTop = document.querySelector('#fiveBoxMenu').offsetTop;
},
// 响应滚动事件,截流处理
scrollFun() {
let isBusy = false
let isBusy = false;
if (!isBusy) {
isBusy = true
isBusy = true;
setTimeout(() => {
let scrollTop = document.body.scrollTop || document.documentElement.scrollTop
if(scrollTop > 20){
let scrollTop =
document.body.scrollTop || document.documentElement.scrollTop;
if (scrollTop > 20) {
this.searchFix = true;
}else{
} else {
this.searchFix = false;
}
isBusy = false
}, 100)
isBusy = false;
}, 100);
}
},
// 获取轮播图数据
getSwiper(){
getSwiper() {
let _this = this,
para = {
setEntry: 'headers',
}
this.GET('contents/courseDoctorBanner/queryList', para).then(res => {
if(res.code == '000000'){
setEntry: "headers"
};
this.GET("contents/courseDoctorBanner/queryList", para).then(res => {
if (res.code == "000000") {
_this.listSwiper = res.data.bannerList || [];
}
if( _this.listSwiper.length == 0){
if (_this.listSwiper.length == 0) {
_this.isFailSwiper += 1;
}
_this.isFailSwiper = _this.listSwiper.length == 0 ? 2 : 1 ;
})
},
_this.isFailSwiper = _this.listSwiper.length == 0 ? 2 : 1;
});
}
}
}
};
</script>
<style>
.mint-popup.mint-popup-top {
.mint-popup.mint-popup-top {
height: 100%;
z-index: 2001;
/* overflow: auto; */
}
.swiper .mint-swipe-indicators{
}
.swiper .mint-swipe-indicators {
right: 6px;
top:50%;
top: 50%;
bottom: inherit;
left:inherit;
width:10px;
left: inherit;
width: 10px;
text-align: center;
transform: translateX(0%);
transform: translateY(-50%);
}
.swiper .mint-swipe-item img{
}
.swiper .mint-swipe-item img {
width: 100%;
height: 100%;
}
.swiper .mint-swipe-indicator{
width:2px;
}
.swiper .mint-swipe-indicator {
width: 2px;
height: 8px;
background: #fff;
opacity: 0.4;
float: left;
margin-top:3px;
margin-top: 3px;
border-radius: 0;
}
.swiper .is-active{
}
.swiper .is-active {
opacity: 1;
}
.mint-loadmore-top .mint-loadmore-text{font-size: 12px;}
.banner-container.swiper-container-horizontal>.swiper-pagination-bullets{
}
.mint-loadmore-top .mint-loadmore-text {
font-size: 12px;
}
.banner-container.swiper-container-horizontal > .swiper-pagination-bullets {
width: 2px;
left: inherit;
transform: translateY(-50%);
position: absolute;
right: 6px;
top:50%;
}
.banner-container.swiper-container-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet{
top: 50%;
}
.banner-container.swiper-container-horizontal
> .swiper-pagination-bullets
.swiper-pagination-bullet {
width: 2px;
height: 7px;
background: #fff;
margin:6px 0 0 0;
margin: 6px 0 0 0;
float: left;
opacity: 0.4;
}
.banner-container.swiper-container-horizontal
> .swiper-pagination-bullets
.swiper-pagination-bullet-active {
opacity: 1;
}
}
.banner-container.swiper-container-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet-active{
opacity: 1
}
.banner-pagination{
.banner-pagination {
width: 2px;
z-index: 100;
right: 10px;
top:10px;
top: 10px;
position: absolute;
}
/* .swiper-pagination-bullet{
}
/* .swiper-pagination-bullet{
} */
.swiper-slide img{
.swiper-slide img {
width: 100%;
height: 100%;
}
}
</style>
<style lang="scss" scoped>
@import '../../style/mixin';
@import '../../style/swiper.min.css';
.banner-container{
height: px2rem(210px)
}
.main-body{
@import "../../style/mixin";
@import "../../style/swiper.min.css";
.banner-container {
height: px2rem(210px);
}
.main-body {
position: relative;
}
.box-BG{
}
.box-BG {
width: 100%;
height: 100%;
position: absolute;
top:0;
top: 0;
left: 0;
z-index: 10000
}
.mint-header {
background-color: rgba($color: #000000, $alpha: 0)
}
.font-style {
z-index: 10000;
}
.mint-header {
background-color: rgba($color: #000000, $alpha: 0);
}
.font-style {
@include sc(0.6rem, #666);
}
.top-evaluat {
}
@keyframes myPullDown {
from {
padding-top: 0;
}
.top-evaluat{
to {
padding-top: px2rem(225px);
}
@keyframes myPullDown{
from {padding-top: 0;}
to {padding-top:px2rem(225px)}
}
@keyframes myPullUp {
from {
padding-top: px2rem(225px);
}
@keyframes myPullUp{
from {padding-top: px2rem(225px);}
to {padding-top:0}
to {
padding-top: 0;
}
.pull-down{
}
.pull-down {
-webkit-animation: myPullDown 1.2s;
animation: myPullDown 1.2s;
padding-top:px2rem(225px)
}
.pull-up{
padding-top: px2rem(225px);
}
.pull-up {
-webkit-animation: myPullUp 1.2s;
animation: myPullUp 1.2s;
padding-top:0
}
.news-update{
padding-top: 0;
}
.news-update {
display: block;
position: fixed;
background: #F9F6EF;
background: #f9f6ef;
right: 0;
bottom: px2rem(140px);
height: px2rem(27px);
padding:0 px2rem(12px);;
padding: 0 px2rem(12px);
line-height: px2rem(27px);
border:1px solid RGBA(162, 129, 60, 0.2);
border: 1px solid RGBA(162, 129, 60, 0.2);
font-size: px2rem(13px);
box-shadow: 0 px2rem(2px) px2rem(3px) RGBA(202, 168, 97, 0.4);
border-radius: px2rem(14px) 0 0 px2rem(14px);
z-index: 101;
.news-info{
color: #A2813C;
.news-info {
color: #a2813c;
position: relative;
display: inline-block;
i{
i {
position: absolute;
right: -(px2rem(6px));
top:px2rem(4px);
top: px2rem(4px);
display: inline-block;
width: px2rem(4px);
height: px2rem(4px);
border-radius: 100%;
background: #F47A48
background: #f47a48;
}
}
}
.home-topMenu{
}
.home-topMenu {
width: 100%;
text-align:center;
top:0;
text-align: center;
top: 0;
position: absolute;
z-index: 10;
}
}
.home-header {
.home-header {
height: px2rem(234px); // banner图片变高了
// height: px2rem(210px);
.swiper{
.swiper {
height: 100%;
/* @include bis('../../../images//lect-bg.png');*/
}
.logo_img{
.logo_img {
height: px2rem(85px);
width: px2rem(345px);
text-align: center;
}
}
.home-body{
background: #fff
}
.pathologic-list{
}
.home-body {
background: #fff;
}
.pathologic-list {
width: 100%;
height: px2rem(52px);
padding: 0 px2rem(15px);
margin-top: px2rem(15px);
.pathologic-item{
.pathologic-item {
float: left;
width: 48%;
box-shadow: 0 px2rem(2px) px2rem(8px) rgba(49, 127, 119, 0.2);
......@@ -500,10 +492,10 @@ export default {
/* padding: px2rem(12px) 0 px2rem(12px) 0;*/
margin-right: 4%;
text-align: center;
.pathologic-icon{
.pathologic-icon {
height: px2rem(52px);
/* height: px2rem(20px);*/
img{
img {
width: 100%;
height: px2rem(52px);
padding-bottom: px2rem(8px);
......@@ -511,7 +503,7 @@ export default {
display: inline-block;
}
}
.pathologic-txt{
.pathologic-txt {
font-size: px2rem(14px);
line-height: px2rem(20px);
font-weight: 700;
......@@ -519,14 +511,13 @@ export default {
vertical-align: middle;
}
}
.clear{
.clear {
clear: both;
}
}
}
</style>
<style lang="scss" scoped>
@import '../../style/mixin.scss';
@import "../../style/mixin.scss";
.lect-selection-content {
position: absolute;
......@@ -548,9 +539,9 @@ export default {
&-left {
td {
padding-left: px2rem(15px);
border-bottom: 1px solid #F5F6F6;
border-bottom: 1px solid #f5f6f6;
}
background: #F5F6F6;
background: #f5f6f6;
}
tr {
height: px2rem(40px);
......@@ -614,7 +605,6 @@ export default {
}
}
.group-title {
position: absolute;
top: px2rem(80px);
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册