428 lines
11 KiB
Vue
428 lines
11 KiB
Vue
<template>
|
||
<view class="page flex-col">
|
||
<view class="top_">
|
||
<u-swiper class="lunbo_" :list="swiperList" keyName="swiperPicture" radius="10" height="300" indicator
|
||
indicatorMode="line"></u-swiper>
|
||
</view>
|
||
<view class="section_2 flex-col">
|
||
<view class="list_1 flex-row">
|
||
<view
|
||
class="image-text_1 flex-col align-items-center justify-content-center;"
|
||
v-for="(item, index) in loopData0"
|
||
:key="index"
|
||
@click="handleItemClick(item)"
|
||
>
|
||
<image
|
||
class="label_1"
|
||
referrerpolicy="no-referrer"
|
||
:src="item.url"
|
||
/>
|
||
<text class="text-group_1" v-text="item.text"></text>
|
||
</view>
|
||
</view>
|
||
<view class="box_4 flex-row justify-between">
|
||
|
||
<view class="image-text_2 flex-row justify-between">
|
||
<!-- <u-notice-bar direction="column" duration="10000" bgColor="#e9f1ff" color="black" :text="textList.map(item => item.title)" @click="handleNoticeClick" icon="/static/lanhu_shouye2gai/FigmaDDSSlicePNGd2c17b5f24182e597acbfa50481040c1.png"></u-notice-bar> -->
|
||
<u-notice-bar
|
||
direction="column"
|
||
duration="10000"
|
||
bgColor="#e9f1ff"
|
||
color="black"
|
||
:text="textList"
|
||
@click="handleNoticeClick"
|
||
icon="/static/lanhu_shouye2gai/FigmaDDSSlicePNGd2c17b5f24182e597acbfa50481040c1.png"
|
||
/>
|
||
</view>
|
||
|
||
<view class="group_3 flex-col justify-between">
|
||
<view class="block_5 flex-col"></view>
|
||
<view class="block_6 flex-col"></view>
|
||
<view class="block_7 flex-col"></view>
|
||
</view>
|
||
</view>
|
||
<view class="box_5 flex-row justify-between">
|
||
<text class="text_2">优质驾校</text>
|
||
<view class="image-text_3 flex-row justify-between">
|
||
<text class="text-group_3" @click="goSchoolList()">查看更多</text>
|
||
<image
|
||
class="thumbnail_2"
|
||
referrerpolicy="no-referrer"
|
||
src="/static/lanhu_shouye2gai/FigmaDDSSlicePNGc8586e4d9e76802e4b93ae8fb3654b38.png"
|
||
/>
|
||
</view>
|
||
</view>
|
||
<view class="itemContent">
|
||
<!-- 使用 scroll-view 包裹 SchoolInfo 组件 -->
|
||
<scroll-view class="school-scroll-view" scroll-y @scrolltolower="onReachBottomCus"
|
||
refresher-enabled @refresherrefresh="onRefresherrefresh" :refresher-triggered="isTriggered">
|
||
<SchoolInfo style="" v-for="(school, index) in schoolList" :key="index" :schoolInfo="school"
|
||
@click="goSchoolDetail(school)"/>
|
||
</scroll-view>
|
||
</view>
|
||
|
||
</view>
|
||
<tabbar :msg='msg'></tabbar>
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
import SchoolInfo from './SchoolInfo.vue';
|
||
import request from "@/utils/request";
|
||
import {
|
||
getCoachId,
|
||
getInviteId,
|
||
getLocalUserInfo,
|
||
getToken,
|
||
removeCoachId,
|
||
removeInviteId,
|
||
removeTenantId,
|
||
setCoachId,
|
||
setInviteId,
|
||
setLocalUserInfo,
|
||
setStaffType,
|
||
setTenantId
|
||
} from '@/utils/auth'
|
||
export default {
|
||
components: {
|
||
SchoolInfo
|
||
},
|
||
data() {
|
||
return {
|
||
loopData0: [
|
||
{
|
||
url: '/static/lanhu_shouye2gai/xcbm.png',
|
||
text: '学车报名'
|
||
},
|
||
{
|
||
url: '/static/lanhu_shouye2gai/yyxl.png',
|
||
text: '预约训练'
|
||
},
|
||
{
|
||
url: '/static/lanhu_shouye2gai/kslr.png',
|
||
text: '考试结果录入'
|
||
},
|
||
{
|
||
url: '/static/lanhu_shouye2gai/pj.png',
|
||
text: '评价'
|
||
},
|
||
],
|
||
swiperList: [],
|
||
msg: "1",
|
||
constants: {},
|
||
schoolList: [],
|
||
//下来刷新状态
|
||
isTriggered: false,
|
||
pageNo: 1,
|
||
pageSize: 10,
|
||
total: 0,
|
||
imageUrl: this.$imagesUrl,
|
||
textList:[],
|
||
noticeList: [],
|
||
qTenantId: null,
|
||
qCoachId: null,
|
||
};
|
||
},
|
||
onLoad(query) {
|
||
// setInviteId('JLPXF1')
|
||
// this.getTenantIdByInviteId()
|
||
this.getSwiperList()
|
||
this.getTextList()
|
||
|
||
const q = decodeURIComponent(query.q) // 获取到二维码原始链接内容
|
||
let theRequest = this.getUrlValue(q)
|
||
if(theRequest.hasOwnProperty("inviteId")){
|
||
//扫码邀请过来的,设置邀请者code
|
||
setInviteId(theRequest['inviteId'])
|
||
this.getTenantIdByInviteId()
|
||
//先登录
|
||
uni.reLaunch({
|
||
url: '/pages/login/login'
|
||
})
|
||
}else{
|
||
removeInviteId()
|
||
removeCoachId()
|
||
removeTenantId()
|
||
this.getList()
|
||
/* uni.reLaunch({
|
||
url: '/pages-home/home/home'
|
||
}) */
|
||
}
|
||
},
|
||
methods: {
|
||
getTenantIdByInviteId(){
|
||
console.log('1122', getInviteId())
|
||
if(!getInviteId()){
|
||
console.log(1)
|
||
this.getList()
|
||
return
|
||
}
|
||
request({
|
||
url: '/app-api/dl-drive-school-coach-small/getCoachByUniqueCode',
|
||
method: 'GET',
|
||
params: {
|
||
uniqueCode: getInviteId()
|
||
}
|
||
}).then(res => {
|
||
console.log(123)
|
||
if(res.data != null){
|
||
this.qTenantId = res.data.tenantId
|
||
this.qCoachId = res.data.userId
|
||
setTenantId(res.data.tenantId)
|
||
this.getList()
|
||
if(res.data.type == 'jl'){
|
||
setCoachId(res.data.userId)
|
||
setStaffType('02')
|
||
}
|
||
if(res.data.type == 'yg'){
|
||
setCoachId(res.data.userId)
|
||
setStaffType('01')
|
||
}
|
||
}
|
||
})
|
||
},
|
||
getList() {
|
||
const params = {
|
||
pageNo: this.pageNo,
|
||
pageSize: this.pageSize,
|
||
serviceCodes: 'jiaxiao',
|
||
};
|
||
|
||
if (this.qTenantId) {
|
||
params.tenantId = this.qTenantId;
|
||
}
|
||
console.log('params', params)
|
||
request({
|
||
url: '/userClient/base/companySmallProgram/pageNoTenantId',
|
||
method: 'GET',
|
||
params: params,
|
||
tenantIdFlag: false
|
||
}).then(res => {
|
||
res.data.records.forEach(item => {
|
||
item.features = ['有接送', '规模大']
|
||
item.imageUrl = this.imageUrl + '/' + item.photo
|
||
})
|
||
this.schoolList = this.schoolList.concat(res.data.records)
|
||
this.isTriggered = false
|
||
this.total = res.data.total
|
||
console.log(res)
|
||
})
|
||
},
|
||
getUrlValue(url) {
|
||
var theRequest = new Object();
|
||
if (url.indexOf("?") != -1) {
|
||
//有参数
|
||
var str = url.split("?")[1];
|
||
var strs = str.split("&");
|
||
for (var i = 0; i < strs.length; i++) {
|
||
theRequest[strs[i].split("=")[0]] = (strs[i].split("=")[1]);
|
||
}
|
||
}
|
||
return theRequest
|
||
},
|
||
/**
|
||
* 实时讯息
|
||
*/
|
||
/* async getTextList() {
|
||
let res = await request({
|
||
url: '/app-api/base/notice/pageList',
|
||
method: 'get',
|
||
params: {
|
||
pageNum: 1,
|
||
pageSize: 10000,
|
||
parentServer: 'jiaxiao',
|
||
server: 'wx'
|
||
}
|
||
})
|
||
this.textList = []
|
||
res.data.records.forEach(item => {
|
||
this.textList.push(item.title)
|
||
})
|
||
}, */
|
||
async getTextList() {
|
||
let res = await request({
|
||
url: '/app-api/base/notice/pageList',
|
||
method: 'get',
|
||
params: {
|
||
pageNum: 1,
|
||
pageSize: 10000,
|
||
parentServer: 'jiaxiao',
|
||
server: 'wx'
|
||
}
|
||
})
|
||
this.noticeList = res.data.records // 保留原始数据
|
||
this.textList = res.data.records.map(item => item.title) // 提取 title 用于展示
|
||
},
|
||
handleNoticeClick(index) {
|
||
const currentNotice = this.noticeList[index]
|
||
if (currentNotice && currentNotice.id) {
|
||
uni.navigateTo({
|
||
url: `/pagesA/noticeContent/index?id=${currentNotice.id}`
|
||
})
|
||
}
|
||
},
|
||
getSwiperList() {
|
||
request({
|
||
url: '/app-api/drivingSchool/text/swiper/list',
|
||
method: 'GET'
|
||
}).then(res => {
|
||
res.data.forEach(item => {
|
||
item.swiperPicture = this.imageUrl + item.swiperPicture
|
||
})
|
||
this.swiperList = res.data
|
||
})
|
||
},
|
||
/**
|
||
* 上滑加载数据
|
||
*/
|
||
onReachBottomCus() {
|
||
//判断 如果页码*页容量大于等于总条数,提示该页数据加载完毕
|
||
if (this.pageNo * this.pageSize >= this.total) {
|
||
uni.$u.toast('没有更多数据了')
|
||
return
|
||
}
|
||
//页码+1,调用获取数据的方法获取第二页数据
|
||
this.pageNo++
|
||
//此处调用自己获取数据列表的方法
|
||
this.getList()
|
||
},
|
||
/**
|
||
* 下拉刷新数据
|
||
*/
|
||
onRefresherrefresh() {
|
||
this.isTriggered = true
|
||
this.pageNo = 1
|
||
this.total = 0
|
||
this.schoolList = []
|
||
this.getList()
|
||
},
|
||
goSchoolList() {
|
||
uni.navigateTo({
|
||
url: '/newPages/schoolList/index',
|
||
});
|
||
},
|
||
goSchoolDetail(data) {
|
||
uni.navigateTo({
|
||
url: `/newPages/schoolDetail/index?id=${data.id}&tenantId=${data.tenantId}&schoolName=${data.corpName}`,
|
||
// url: '/newPages/schoolDetail/index',
|
||
});
|
||
},
|
||
|
||
handleItemClick(item) {
|
||
// 根据 item.text 判断点击的是哪一项
|
||
switch (item.text) {
|
||
case '学车报名':
|
||
uni.navigateTo({
|
||
url: '/newPages/schoolList/index'
|
||
});
|
||
break;
|
||
case '预约训练':
|
||
if (!getToken()) {
|
||
/* uni.showToast({
|
||
title: '请先登录',
|
||
icon: 'none',
|
||
duration: 2000
|
||
}); */
|
||
uni.showModal({
|
||
title: '未登录',
|
||
content: '请先登录',
|
||
confirmText: '去登录',
|
||
success: (res) => {
|
||
if (res.confirm) {
|
||
uni.navigateTo({
|
||
url: '/pages/login/login'
|
||
});
|
||
}
|
||
}
|
||
});
|
||
return;
|
||
}
|
||
uni.navigateTo({
|
||
url: '/pagesA/appointment/index'
|
||
});
|
||
break;
|
||
case '考试结果录入':
|
||
if (!getToken()) {
|
||
uni.showModal({
|
||
title: '未登录',
|
||
content: '请先登录',
|
||
confirmText: '去登录',
|
||
success: (res) => {
|
||
if (res.confirm) {
|
||
uni.navigateTo({
|
||
url: '/pages/login/login'
|
||
});
|
||
}
|
||
}
|
||
});
|
||
return;
|
||
}
|
||
uni.navigateTo({
|
||
url: '/pagesA/examinationList/index'
|
||
});
|
||
break;
|
||
case '评价':
|
||
if (!getToken()) {
|
||
uni.showModal({
|
||
title: '未登录',
|
||
content: '请先登录',
|
||
confirmText: '去登录',
|
||
success: (res) => {
|
||
if (res.confirm) {
|
||
uni.navigateTo({
|
||
url: '/pages/login/login'
|
||
});
|
||
}
|
||
}
|
||
});
|
||
return;
|
||
}
|
||
uni.navigateTo({
|
||
url: '/pagesA/evaluate/index'
|
||
});
|
||
break;
|
||
default:
|
||
console.warn('未知的点击项:', item.text);
|
||
break;
|
||
}
|
||
}
|
||
|
||
}
|
||
};
|
||
</script>
|
||
|
||
<style lang='scss'>
|
||
@import '../common/common.scss';
|
||
@import './assets/style/index.rpx.scss';
|
||
// 新增样式,使文字居中显示
|
||
.text-group_1 {
|
||
text-align: center;
|
||
}
|
||
|
||
// 修改 image-text_1 样式,使其内容垂直排列并居中
|
||
.image-text_1 {
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: center; // 使内容水平居中
|
||
justify-content: center; // 可根据需要使内容垂直居中
|
||
}
|
||
|
||
// 新增 scroll-view 样式
|
||
.school-scroll-view {
|
||
height: 500rpx; // 设置一个固定高度,根据需要调整
|
||
overflow-y: auto;
|
||
margin-left: 22rpx;
|
||
}
|
||
|
||
.itemContent {
|
||
padding: 30rpx 0;
|
||
display: flex;
|
||
flex-direction: column;
|
||
row-gap: 20rpx;
|
||
}
|
||
|
||
.top_ {
|
||
//padding-top: 200rpx;
|
||
}
|
||
</style>
|