driverSchool/newPages/newIndex/index.vue

463 lines
12 KiB
Vue
Raw Normal View History

2025-03-15 17:32:23 +08:00
<template>
2025-04-16 17:41:03 +08:00
<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">
2025-03-17 16:19:32 +08:00
2025-04-16 17:41:03 +08:00
<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>
2025-04-16 17:13:42 +08:00
2025-04-16 17:41:03 +08:00
<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>
2025-04-17 15:38:34 +08:00
2025-04-16 17:41:03 +08:00
<view class="itemContent">
<!-- 使用 scroll-view 包裹 SchoolInfo 组件 -->
2025-04-24 17:54:31 +08:00
<scroll-view class="scroll-view" scroll-y :style="{ height: scrollHeight + 'px' }"
@scrolltolower="onReachBottomCus" refresher-enabled @refresherrefresh="onRefresherrefresh"
:refresher-triggered="isTriggered">
2025-04-16 17:41:03 +08:00
<SchoolInfo style="" v-for="(school, index) in schoolList" :key="index" :schoolInfo="school"
@click="goSchoolDetail(school)" />
</scroll-view>
</view>
2025-03-17 16:19:32 +08:00
2025-04-16 17:41:03 +08:00
</view>
<!-- <tabbar :msg='msg'></tabbar> -->
</view>
2025-03-15 17:32:23 +08:00
</template>
<script>
2025-04-16 17:41:03 +08:00
import SchoolInfo from './SchoolInfo.vue';
import request from "@/utils/request";
import {
getCoachId,
getInviteId,
getLocalUserInfo,
2025-04-17 10:01:13 +08:00
getStaffType,
2025-04-16 17:41:03 +08:00
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: '评价'
},
2025-04-24 17:47:43 +08:00
{
url: '/static/lanhu_shouye2gai/pj.png',
text: '业务办理指南'
},
2025-04-16 17:41:03 +08:00
],
swiperList: [],
msg: "1",
constants: {},
schoolList: [],
//下来刷新状态
isTriggered: false,
pageNo: 1,
pageSize: 10,
total: 0,
imageUrl: this.$imagesUrl,
textList: [],
noticeList: [],
qTenantId: null,
qCoachId: null,
2025-04-17 14:49:28 +08:00
scrollHeight: 0,
2025-04-16 17:41:03 +08:00
};
},
onLoad(query) {
console.log('query', query)
// setInviteId('JLPXF1')
// this.getTenantIdByInviteId()
2025-04-17 14:49:28 +08:00
console.log('userInfo', getLocalUserInfo())
console.log('token', getToken())
2025-04-16 17:41:03 +08:00
this.getSwiperList()
this.getTextList()
2025-04-16 17:13:42 +08:00
2025-04-16 17:41:03 +08:00
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()
2025-04-14 17:11:28 +08:00
this.getList()
2025-04-16 17:41:03 +08:00
/* uni.reLaunch({
url: '/pages-home/home/home'
}) */
2025-04-14 17:11:28 +08:00
}
2025-04-16 17:41:03 +08:00
},
2025-04-17 14:49:28 +08:00
onReady() {
// 动态计算滚动区域高度
this.calculateScrollHeight();
},
2025-04-16 17:41:03 +08:00
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
2025-04-17 10:01:13 +08:00
console.log('tenantId', this.qTenantId)
console.log('coachId', this.qCoachId)
2025-04-16 17:41:03 +08:00
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')
}
2025-04-17 10:01:13 +08:00
console.log('getCoachId', getCoachId())
console.log('getStaffType', getStaffType())
2025-04-16 17:41:03 +08:00
}
})
},
getList() {
console.log('getInviteId', getInviteId())
const params = {
pageNo: this.pageNo,
pageSize: this.pageSize,
serviceCodes: 'jiaxiao',
};
2025-04-16 17:41:03 +08:00
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() {
2025-04-09 11:42:08 +08:00
let res = await request({
2025-04-15 17:47:29 +08:00
url: '/app-api/base/notice/pageList',
2025-04-09 11:42:08 +08:00
method: 'get',
params: {
pageNum: 1,
2025-04-15 17:47:29 +08:00
pageSize: 10000,
parentServer: 'jiaxiao',
server: 'wx'
2025-04-09 11:42:08 +08:00
}
})
2025-04-14 17:11:28 +08:00
this.textList = []
2025-04-09 11:42:08 +08:00
res.data.records.forEach(item => {
this.textList.push(item.title)
})
2025-04-15 17:47:29 +08:00
}, */
2025-04-16 17:41:03 +08:00
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',
});
},
2025-04-07 18:08:13 +08:00
2025-04-17 14:49:28 +08:00
calculateScrollHeight() {
2025-04-17 15:38:34 +08:00
/* // 获取屏幕高度
2025-04-17 14:49:28 +08:00
const screenHeight = uni.getSystemInfoSync().windowHeight;
// 获取顶部区域高度
const topHeight = 490;
// 计算滚动区域高度
2025-04-17 15:38:34 +08:00
this.scrollHeight = screenHeight - topHeight; */
const systemInfo = uni.getSystemInfoSync();
const windowHeight = systemInfo.windowHeight;
const rpxToPx = systemInfo.windowWidth / 750;
const topOccupiedHeight = 960 * rpxToPx;
this.scrollHeight = windowHeight - topOccupiedHeight;
2025-04-17 14:49:28 +08:00
},
2025-04-17 15:38:34 +08:00
/* calculateScrollHeight() {
// 获取屏幕高度
const screenHeight = uni.getSystemInfoSync().windowHeight;
// 使用选择器获取顶部区域实际高度
const query = uni.createSelectorQuery().in(this);
query.select('.top_').boundingClientRect(data => {
const topHeight = data ? data.height : 0;
query.select('.section_2').boundingClientRect(data => {
const sectionHeight = data ? data.height : 0;
// 转换为 rpx (假设 1px = 2rpx根据实际情况调整)
this.scrollHeight = (screenHeight - topHeight - sectionHeight) * 2;
}).exec();
}).exec();
}, */
2025-04-17 14:49:28 +08:00
2025-04-16 17:41:03 +08:00
handleItemClick(item) {
// 根据 item.text 判断点击的是哪一项
switch (item.text) {
case '学车报名':
uni.navigateTo({
url: '/newPages/schoolList/index'
2025-05-12 17:13:46 +08:00
// url: `/pagesA/guideContent/index?tenantId=${180}`
2025-04-16 17:41:03 +08:00
});
break;
case '预约训练':
if (!getToken()) {
/* uni.showToast({
2025-04-12 17:52:46 +08:00
title: '请先登录',
icon: 'none',
duration: 2000
}); */
2025-04-16 17:41:03 +08:00
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;
2025-04-12 17:52:46 +08:00
}
2025-04-16 17:41:03 +08:00
}
2025-04-07 18:08:13 +08:00
2025-04-16 17:41:03 +08:00
}
};
2025-03-15 17:32:23 +08:00
</script>
<style lang='scss'>
2025-04-16 17:41:03 +08:00
@import '../common/common.scss';
@import './assets/style/index.rpx.scss';
2025-03-15 17:32:23 +08:00
2025-04-16 17:41:03 +08:00
// 新增样式,使文字居中显示
.text-group_1 {
text-align: center;
}
// 修改 image-text_1 样式,使其内容垂直排列并居中
.image-text_1 {
display: flex;
flex-direction: column;
align-items: center; // 使内容水平居中
justify-content: center; // 可根据需要使内容垂直居中
}
2025-03-15 17:32:23 +08:00
2025-04-16 17:41:03 +08:00
// 新增 scroll-view 样式
.school-scroll-view {
2025-04-17 15:38:34 +08:00
/* height: 500rpx; // 设置一个固定高度,根据需要调整 */
2025-04-16 17:41:03 +08:00
overflow-y: auto;
margin-left: 22rpx;
}
2025-03-17 16:19:32 +08:00
2025-04-16 17:41:03 +08:00
.itemContent {
2025-04-17 15:38:34 +08:00
margin-top: 20rpx;
/* padding: 10rpx 0; */
2025-04-16 17:41:03 +08:00
display: flex;
flex-direction: column;
2025-04-17 15:38:34 +08:00
/* row-gap: 10rpx; */
margin-bottom: 200rpx;
2025-04-16 17:41:03 +08:00
}
2025-04-07 18:08:13 +08:00
2025-04-16 17:41:03 +08:00
.top_ {
//padding-top: 200rpx;
}
</style>