Merge remote-tracking branch 'origin/master'
# Conflicts: # newPages/newIndex/index.vue # pages/login/login.vue
This commit is contained in:
commit
b741f1140a
@ -21,7 +21,7 @@
|
||||
</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
|
||||
@ -34,7 +34,7 @@
|
||||
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>
|
||||
@ -128,7 +128,7 @@ export default {
|
||||
// this.getTenantIdByInviteId()
|
||||
this.getSwiperList()
|
||||
this.getTextList()
|
||||
|
||||
|
||||
const q = decodeURIComponent(query.q) // 获取到二维码原始链接内容
|
||||
let theRequest = this.getUrlValue(q)
|
||||
if(theRequest.hasOwnProperty("inviteId")){
|
||||
@ -188,7 +188,7 @@ export default {
|
||||
pageSize: this.pageSize,
|
||||
serviceCodes: 'jiaxiao',
|
||||
};
|
||||
|
||||
|
||||
if (this.qTenantId) {
|
||||
params.tenantId = this.qTenantId;
|
||||
}
|
||||
@ -336,7 +336,7 @@ export default {
|
||||
}
|
||||
}
|
||||
});
|
||||
return;
|
||||
return;
|
||||
}
|
||||
uni.navigateTo({
|
||||
url: '/pagesA/appointment/index'
|
||||
@ -356,7 +356,7 @@ export default {
|
||||
}
|
||||
}
|
||||
});
|
||||
return;
|
||||
return;
|
||||
}
|
||||
uni.navigateTo({
|
||||
url: '/pagesA/examinationList/index'
|
||||
@ -376,7 +376,7 @@ export default {
|
||||
}
|
||||
}
|
||||
});
|
||||
return;
|
||||
return;
|
||||
}
|
||||
uni.navigateTo({
|
||||
url: '/pagesA/evaluate/index'
|
||||
|
@ -1,305 +1,312 @@
|
||||
<template>
|
||||
<view class="page flex-col">
|
||||
<view style="width: 100%;background: #f4f5f6;box-sizing: border-box;padding-top: 88px;">
|
||||
<headers titles="驾校">
|
||||
<uni-icons type="left" color="#000000" size="22px"></uni-icons>
|
||||
</headers>
|
||||
</view>
|
||||
<view class="group_4 flex-col">
|
||||
<image
|
||||
style="width: 100%; height: 100%;"
|
||||
referrerpolicy="no-referrer"
|
||||
:src="imagesUrl + '/' + schoolInfo.photo"
|
||||
/>
|
||||
<!-- src="/static/lanhu_jiaxiaoxiangqing/FigmaDDSSlicePNGcd54efcc9a8c89af0ef99c8275464828.png" -->
|
||||
</view>
|
||||
<view class="group_5 flex-col">
|
||||
<text class="text_3">{{ schoolInfo.corpName }}</text>
|
||||
<text class="text_3_2">地址:{{ schoolInfo.address }}</text>
|
||||
<view class="text-wrapper_1 flex-row justify-between">
|
||||
<text class="text_4">营业时间</text>
|
||||
<text class="text_5" v-if=" schoolInfo.businessStartTime && schoolInfo.businessEndTime ">{{ schoolInfo.businessStartTime }} - {{ schoolInfo.businessEndTime }}</text>
|
||||
<text class="text_5" v-else>08:00-18:00</text>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
<view class="page flex-col">
|
||||
<view style="width: 100%;background: #f4f5f6;box-sizing: border-box;padding-top: 88px;">
|
||||
<headers titles="驾校">
|
||||
<uni-icons type="left" color="#000000" size="22px"></uni-icons>
|
||||
</headers>
|
||||
</view>
|
||||
<view class="group_4 flex-col">
|
||||
<image style="width: 100%; height: 100%;" referrerpolicy="no-referrer"
|
||||
:src="imagesUrl + '/' + schoolInfo.photo" />
|
||||
<!-- src="/static/lanhu_jiaxiaoxiangqing/FigmaDDSSlicePNGcd54efcc9a8c89af0ef99c8275464828.png" -->
|
||||
</view>
|
||||
<view class="group_5 flex-col">
|
||||
<text class="text_3">{{ schoolInfo.corpName }}</text>
|
||||
<text class="text_3_2">地址:{{ schoolInfo.address }}</text>
|
||||
<!-- <view class="text-wrapper_1 flex-row justify-between">
|
||||
<text class="text_4">营业时间</text>
|
||||
<text class="text_5"
|
||||
v-if=" schoolInfo.businessStartTime && schoolInfo.businessEndTime ">{{ schoolInfo.businessStartTime }}
|
||||
- {{ schoolInfo.businessEndTime }}</text>
|
||||
<text class="text_5" v-else>08:00-18:00</text>
|
||||
</view> -->
|
||||
|
||||
<view class="group_6 flex-col">
|
||||
<view class="box_4 flex-row justify-between">
|
||||
<view class="box_5 flex-col"></view>
|
||||
<text class="text_8">报名类型</text>
|
||||
</view>
|
||||
<view v-if="schoolClassList.length > 0">
|
||||
<view class="box_6 flex-row" v-for="(item, index) in schoolClassList" :key="index" @click="goToDetail(item.id)">
|
||||
<view class="image-text_1 flex-row">
|
||||
<image
|
||||
class="image_2"
|
||||
referrerpolicy="no-referrer"
|
||||
:src="imagesUrl + '/' + item.photo"
|
||||
/>
|
||||
<view class="text-group_2 flex-col justify-between">
|
||||
<text class="text_9">{{ item.name }}</text>
|
||||
<view class="text-wrapper_2 flex-row justify-between">
|
||||
<text class="text_10">¥{{ item.price }}</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="text-wrapper_4 flex-col">
|
||||
<view style="display: flex">
|
||||
<text class="text_13" style="background-color: rgba(223, 235, 255, 1);padding: 5rpx 15rpx">{{
|
||||
</view>
|
||||
|
||||
<view class="group_6 flex-col">
|
||||
<view class="box_4 flex-row justify-between">
|
||||
<view class="box_5 flex-col"></view>
|
||||
<text class="text_8">报名类型</text>
|
||||
</view>
|
||||
<view v-if="schoolClassList.length > 0">
|
||||
<view class="box_6 flex-row" v-for="(item, index) in schoolClassList" :key="index"
|
||||
@click="goToDetail(item.id)">
|
||||
<view class="image-text_1 flex-row">
|
||||
<image class="image_2" referrerpolicy="no-referrer" :src="imagesUrl + '/' + item.photo" />
|
||||
<view class="text-group_2 flex-col justify-between">
|
||||
<text class="text_9">{{ item.name }}</text>
|
||||
<view class="text-wrapper_2 flex-row justify-between">
|
||||
<text class="text_10">¥{{ item.price }}</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="text-wrapper_4 flex-col">
|
||||
<view style="display: flex">
|
||||
<text class="text_13"
|
||||
style="background-color: rgba(223, 235, 255, 1);padding: 5rpx 15rpx">{{
|
||||
item.tittle
|
||||
}}
|
||||
</text>
|
||||
<text class="text-wrapper_3 text_13" style="color: black;padding: 5rpx 10rpx">{{ item.type }}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</text>
|
||||
<text class="text-wrapper_3 text_13"
|
||||
style="color: black;padding: 5rpx 10rpx">{{ item.type }}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="box_12 flex-row">
|
||||
<view class="image-text_2 flex-row justify-between" @click="goClassList()">
|
||||
<text class="text-group_3">查看全部班型({{ schoolAllClassList.length }})</text>
|
||||
<image
|
||||
class="thumbnail_2"
|
||||
referrerpolicy="no-referrer"
|
||||
src="/static/lanhu_jiaxiaoxiangqing/FigmaDDSSlicePNGb5045194768d2baa618848ea60e5a9e4.png"
|
||||
/>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view v-else>
|
||||
<u-empty
|
||||
mode="data"
|
||||
text="该驾校没有课程..."
|
||||
>
|
||||
</u-empty>
|
||||
</view>
|
||||
</view>
|
||||
<view class="box_12 flex-row">
|
||||
<view class="image-text_2 flex-row justify-between" @click="goClassList()">
|
||||
<text class="text-group_3">查看全部班型({{ schoolAllClassList.length }})</text>
|
||||
<image class="thumbnail_2" referrerpolicy="no-referrer"
|
||||
src="/static/lanhu_jiaxiaoxiangqing/FigmaDDSSlicePNGb5045194768d2baa618848ea60e5a9e4.png" />
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view v-else>
|
||||
<u-empty mode="data" text="该驾校没有课程...">
|
||||
</u-empty>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="group_8 flex-col">
|
||||
<view class="group_9 flex-row justify-between">
|
||||
<view class="block_3 flex-col"></view>
|
||||
<text class="text_24">团队教练</text>
|
||||
</view>
|
||||
<view v-if="schoolCoachList.length > 0">
|
||||
<view class="group_10 flex-row justify-between" v-for="(item, index) in schoolCoachList" :key="index">
|
||||
<view class="image-text_3 flex-row justify-between">
|
||||
<image
|
||||
class="label_3"
|
||||
referrerpolicy="no-referrer"
|
||||
:src="imagesUrl + '/' + item.image"
|
||||
/>
|
||||
<view class="text-group_4 flex-col justify-between">
|
||||
<text class="text_25">{{ item.name }}</text>
|
||||
<text class="text_27">教龄 {{ item.seniority }}年</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view v-else>
|
||||
<u-empty
|
||||
mode="list"
|
||||
text="该驾校没有团队教练..."
|
||||
>
|
||||
</u-empty>
|
||||
</view>
|
||||
<view class="group_8 flex-col">
|
||||
<view class="group_9 flex-row justify-between">
|
||||
<view class="block_3 flex-col"></view>
|
||||
<text class="text_24">团队教练</text>
|
||||
</view>
|
||||
<view v-if="schoolCoachList.length > 0">
|
||||
<view class="group_10 flex-row justify-between" v-for="(item, index) in schoolCoachList" :key="index">
|
||||
<view class="image-text_3 flex-row justify-between">
|
||||
<image class="label_3" referrerpolicy="no-referrer" :src="imagesUrl + '/' + item.image" />
|
||||
<view class="text-group_4 flex-col justify-between">
|
||||
<text class="text_25">{{ item.name }}</text>
|
||||
<text class="text_27">教龄 {{ item.seniority }}年</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view v-else>
|
||||
<u-empty mode="list" text="该驾校没有团队教练...">
|
||||
</u-empty>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
<script>
|
||||
import request from "@/utils/request";
|
||||
import config from "@/config.js"
|
||||
import headers from "@/components/header/headers.vue";
|
||||
import request from "@/utils/request";
|
||||
import config from "@/config.js"
|
||||
import headers from "@/components/header/headers.vue";
|
||||
import * as auth from '@/utils/auth';
|
||||
|
||||
export default {
|
||||
components: {headers},
|
||||
data() {
|
||||
return {
|
||||
imagesUrl: config.imagesUrl,
|
||||
constants: {},
|
||||
schoolId: undefined,
|
||||
tenantId: undefined,
|
||||
schoolName: undefined,
|
||||
schoolDetails: {},
|
||||
schoolInfo: [],
|
||||
schoolClassList: [],
|
||||
schoolAllClassList: [],
|
||||
schoolCoachList: [],
|
||||
export default {
|
||||
components: {
|
||||
headers
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
imagesUrl: config.imagesUrl,
|
||||
constants: {},
|
||||
schoolId: undefined,
|
||||
tenantId: undefined,
|
||||
schoolName: undefined,
|
||||
schoolDetails: {},
|
||||
schoolInfo: [],
|
||||
schoolClassList: [],
|
||||
schoolAllClassList: [],
|
||||
schoolCoachList: [],
|
||||
|
||||
};
|
||||
},
|
||||
async onShow() {
|
||||
// const res = await this.getLocation();
|
||||
// console.log('位置信息',res)
|
||||
};
|
||||
},
|
||||
async onShow() {
|
||||
// const res = await this.getLocation();
|
||||
// console.log('位置信息',res)
|
||||
|
||||
},
|
||||
onLoad(options) {
|
||||
this.schoolId = options.id;
|
||||
this.tenantId = options.tenantId;
|
||||
this.schoolName = options.schoolName;
|
||||
// this.getSchoolDetails();
|
||||
this.getSchoolInfo()
|
||||
this.getSchoolClass();
|
||||
this.getSchoolAllClass()
|
||||
this.getSchoolCoach()
|
||||
},
|
||||
methods: {
|
||||
handleBack() {
|
||||
uni.navigateBack({
|
||||
delta: 1
|
||||
});
|
||||
},
|
||||
getSchoolDetails() {
|
||||
request({
|
||||
url: '/userClient/base/companySmallProgram/noTenantIdGet',
|
||||
method: 'GET',
|
||||
params: {
|
||||
id: this.schoolId
|
||||
},
|
||||
tenantIdFlag: false
|
||||
}).then(res => {
|
||||
this.schoolDetails = res.data;
|
||||
this.tenantId = res.data.tenantId
|
||||
}).catch(err => {
|
||||
console.error('获取驾校详情失败', err);
|
||||
});
|
||||
},
|
||||
getSchoolInfo(){
|
||||
request({
|
||||
url:'/userClient/base/companySmallProgram/getCompanyByTenantId',
|
||||
method: 'GET',
|
||||
params: {
|
||||
tenantId: this.tenantId,
|
||||
systemCode: 'jiaxiao',
|
||||
}
|
||||
}).then(res => {
|
||||
this.schoolInfo = res.data
|
||||
})
|
||||
},
|
||||
getSchoolClass() {
|
||||
request({
|
||||
url: '/app-api/dl-drive-school-course-small/noTenantIdPage',
|
||||
method: 'GET',
|
||||
params: {
|
||||
pageNo: 1,
|
||||
pageSize: 3,
|
||||
tenantId: this.tenantId,
|
||||
},
|
||||
tenantIdFlag: false
|
||||
}).then(res => {
|
||||
this.schoolClassList = res.data.records;
|
||||
this.total = res.data.total;
|
||||
})
|
||||
},
|
||||
//获取当前位置
|
||||
getLocation() {
|
||||
let location = {
|
||||
lat: 0,
|
||||
lng: 0,
|
||||
}
|
||||
return new Promise((reserve, reject) => {//因为获取位置是异步接口所以需要使用promise
|
||||
uni.getLocation({
|
||||
success(res) {
|
||||
console.log('成功')
|
||||
location.lat = res.latitude
|
||||
location.lng = res.longitude,
|
||||
reserve(location);
|
||||
},
|
||||
fail(err) {
|
||||
console.log('失败', err)
|
||||
reject(location);//获取失败则返回经纬坐标为0
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
// 计算两点间距离(单位:米)
|
||||
calculateDistance(loc1, loc2) {
|
||||
const {latitude: lat1, longitude: lng1} = loc1;
|
||||
const {latitude: lat2, longitude: lng2} = loc2;
|
||||
},
|
||||
onLoad(options) {
|
||||
this.schoolId = options.id;
|
||||
this.tenantId = options.tenantId;
|
||||
this.schoolName = options.schoolName;
|
||||
// this.getSchoolDetails();
|
||||
this.getSchoolInfo()
|
||||
this.getSchoolClass();
|
||||
this.getSchoolAllClass()
|
||||
this.getSchoolCoach()
|
||||
},
|
||||
methods: {
|
||||
handleBack() {
|
||||
uni.navigateBack({
|
||||
delta: 1
|
||||
});
|
||||
},
|
||||
getSchoolDetails() {
|
||||
request({
|
||||
url: '/userClient/base/companySmallProgram/noTenantIdGet',
|
||||
method: 'GET',
|
||||
params: {
|
||||
id: this.schoolId
|
||||
},
|
||||
tenantIdFlag: false
|
||||
}).then(res => {
|
||||
this.schoolDetails = res.data;
|
||||
this.tenantId = res.data.tenantId
|
||||
}).catch(err => {
|
||||
console.error('获取驾校详情失败', err);
|
||||
});
|
||||
},
|
||||
getSchoolInfo() {
|
||||
request({
|
||||
url: '/userClient/base/companySmallProgram/getCompanyByTenantId',
|
||||
method: 'GET',
|
||||
params: {
|
||||
tenantId: this.tenantId,
|
||||
systemCode: 'jiaxiao',
|
||||
}
|
||||
}).then(res => {
|
||||
this.schoolInfo = res.data
|
||||
})
|
||||
},
|
||||
getSchoolClass() {
|
||||
request({
|
||||
url: '/app-api/dl-drive-school-course-small/noTenantIdPage',
|
||||
method: 'GET',
|
||||
params: {
|
||||
pageNo: 1,
|
||||
pageSize: 3,
|
||||
tenantId: this.tenantId,
|
||||
},
|
||||
tenantIdFlag: false
|
||||
}).then(res => {
|
||||
this.schoolClassList = res.data.records;
|
||||
this.total = res.data.total;
|
||||
})
|
||||
},
|
||||
//获取当前位置
|
||||
getLocation() {
|
||||
let location = {
|
||||
lat: 0,
|
||||
lng: 0,
|
||||
}
|
||||
return new Promise((reserve, reject) => { //因为获取位置是异步接口所以需要使用promise
|
||||
uni.getLocation({
|
||||
success(res) {
|
||||
console.log('成功')
|
||||
location.lat = res.latitude
|
||||
location.lng = res.longitude,
|
||||
reserve(location);
|
||||
},
|
||||
fail(err) {
|
||||
console.log('失败', err)
|
||||
reject(location); //获取失败则返回经纬坐标为0
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
// 计算两点间距离(单位:米)
|
||||
calculateDistance(loc1, loc2) {
|
||||
const {
|
||||
latitude: lat1,
|
||||
longitude: lng1
|
||||
} = loc1;
|
||||
const {
|
||||
latitude: lat2,
|
||||
longitude: lng2
|
||||
} = loc2;
|
||||
|
||||
const rad = (d) => d * Math.PI / 180.0;
|
||||
const radLat1 = rad(lat1);
|
||||
const radLat2 = rad(lat2);
|
||||
const a = radLat1 - radLat2;
|
||||
const b = rad(lng1) - rad(lng2);
|
||||
const rad = (d) => d * Math.PI / 180.0;
|
||||
const radLat1 = rad(lat1);
|
||||
const radLat2 = rad(lat2);
|
||||
const a = radLat1 - radLat2;
|
||||
const b = rad(lng1) - rad(lng2);
|
||||
|
||||
const distance = 2 * Math.asin(Math.sqrt(
|
||||
Math.pow(Math.sin(a / 2), 2) +
|
||||
Math.cos(radLat1) *
|
||||
Math.cos(radLat2) *
|
||||
Math.pow(Math.sin(b / 2), 2)
|
||||
));
|
||||
const distance = 2 * Math.asin(Math.sqrt(
|
||||
Math.pow(Math.sin(a / 2), 2) +
|
||||
Math.cos(radLat1) *
|
||||
Math.cos(radLat2) *
|
||||
Math.pow(Math.sin(b / 2), 2)
|
||||
));
|
||||
|
||||
const EARTH_RADIUS = 6378.137; // 地球半径(千米)
|
||||
// 修改计算结果(原米制 → 公里制)
|
||||
const result = (distance * EARTH_RADIUS).toFixed(2); // 直接得到公里,保留2位小数
|
||||
console.log('距离:', result + 'km');
|
||||
return result;
|
||||
},
|
||||
wxGeocoder(address) {
|
||||
return new Promise((resolve, reject) => {
|
||||
// 需要先通过chooseLocation获取坐标(用户交互触发)
|
||||
uni.chooseLocation({
|
||||
success: (res) => {
|
||||
resolve({
|
||||
latitude: res.latitude,
|
||||
longitude: res.longitude
|
||||
});
|
||||
},
|
||||
fail: (err) => reject(err)
|
||||
});
|
||||
});
|
||||
},
|
||||
const EARTH_RADIUS = 6378.137; // 地球半径(千米)
|
||||
// 修改计算结果(原米制 → 公里制)
|
||||
const result = (distance * EARTH_RADIUS).toFixed(2); // 直接得到公里,保留2位小数
|
||||
console.log('距离:', result + 'km');
|
||||
return result;
|
||||
},
|
||||
wxGeocoder(address) {
|
||||
return new Promise((resolve, reject) => {
|
||||
// 需要先通过chooseLocation获取坐标(用户交互触发)
|
||||
uni.chooseLocation({
|
||||
success: (res) => {
|
||||
resolve({
|
||||
latitude: res.latitude,
|
||||
longitude: res.longitude
|
||||
});
|
||||
},
|
||||
fail: (err) => reject(err)
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
|
||||
getSchoolAllClass() {
|
||||
request({
|
||||
url: '/app-api/dl-drive-school-course-small/list',
|
||||
method: 'GET',
|
||||
params: {
|
||||
tenantId: this.tenantId,
|
||||
},
|
||||
tenantIdFlag: false
|
||||
}).then(res => {
|
||||
this.schoolAllClassList = res.data;
|
||||
this.total = res.data.total;
|
||||
})
|
||||
},
|
||||
getSchoolAllClass() {
|
||||
request({
|
||||
url: '/app-api/dl-drive-school-course-small/list',
|
||||
method: 'GET',
|
||||
params: {
|
||||
tenantId: this.tenantId,
|
||||
},
|
||||
tenantIdFlag: false
|
||||
}).then(res => {
|
||||
this.schoolAllClassList = res.data;
|
||||
this.total = res.data.total;
|
||||
})
|
||||
},
|
||||
|
||||
getSchoolCoach() {
|
||||
request({
|
||||
url: '/app-api/dl-drive-school-coach-small/page',
|
||||
method: 'GET',
|
||||
params: {
|
||||
tenantId: this.tenantId,
|
||||
},
|
||||
tenantIdFlag: false
|
||||
}).then(res => {
|
||||
// 对数据进行排序
|
||||
const sortedList = res.data.records.sort((a, b) => b.seniority - a.seniority);
|
||||
// 取排序后的前三条数据
|
||||
this.schoolCoachList = sortedList.slice(0, 3);
|
||||
this.total = res.data.total;
|
||||
})
|
||||
},
|
||||
getSchoolCoach() {
|
||||
console.log('执行');
|
||||
request({
|
||||
url: '/app-api/dl-drive-school-coach-small/page',
|
||||
method: 'GET',
|
||||
params: {
|
||||
tenantId: this.tenantId,
|
||||
pageNo: 1,
|
||||
pageSize: 100000
|
||||
},
|
||||
tenantIdFlag: false
|
||||
}).then(res => {
|
||||
// 对数据进行排序
|
||||
const sortedList = res.data.records.sort((a, b) => b.seniority - a.seniority);
|
||||
const coachId = auth.getCoachId()
|
||||
console.log(coachId, 'coachId');
|
||||
const coach = res.data.records.find(item => item.userId == coachId)
|
||||
console.log(coach, 'coach');
|
||||
if (coach) {
|
||||
this.schoolCoachList.push(coach)
|
||||
} else {
|
||||
// 取排序后的前三条数据
|
||||
this.schoolCoachList = sortedList.slice(0, 3);
|
||||
this.total = res.data.total;
|
||||
}
|
||||
}).catch(e => {
|
||||
console.log(e);
|
||||
})
|
||||
},
|
||||
|
||||
goClassList() {
|
||||
uni.navigateTo({
|
||||
url: '/newPages/courseList/index?tenantId=' + this.tenantId,
|
||||
});
|
||||
},
|
||||
// 跳转到详情页
|
||||
goToDetail(courseId) {
|
||||
uni.navigateTo({
|
||||
url: `/pagesA/courseDetail/index?courseId=${courseId}&tenantId=${this.tenantId}`,
|
||||
});
|
||||
},
|
||||
goClassList() {
|
||||
uni.navigateTo({
|
||||
url: '/newPages/courseList/index?tenantId=' + this.tenantId,
|
||||
});
|
||||
},
|
||||
// 跳转到详情页
|
||||
goToDetail(courseId) {
|
||||
uni.navigateTo({
|
||||
url: `/pagesA/courseDetail/index?courseId=${courseId}&tenantId=${this.tenantId}`,
|
||||
});
|
||||
},
|
||||
|
||||
}
|
||||
};
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<style lang='scss'>
|
||||
@import '../common/common.scss';
|
||||
@import './assets/style/index.rpx.scss';
|
||||
</style>
|
||||
@import '../common/common.scss';
|
||||
@import './assets/style/index.rpx.scss';
|
||||
</style>
|
@ -1,178 +1,199 @@
|
||||
<template>
|
||||
<view class="content">
|
||||
<view class="container">
|
||||
<headers :titles="titles">
|
||||
<uni-icons type="arrow-left" color="#000000" size="22px"></uni-icons>
|
||||
</headers>
|
||||
<view class="f-box">
|
||||
<u-parse :content="content"></u-parse>
|
||||
</view>
|
||||
<view class="content">
|
||||
<view class="container">
|
||||
<headers :titles="titles">
|
||||
<uni-icons type="arrow-left" color="#000000" size="22px"></uni-icons>
|
||||
</headers>
|
||||
<view class="f-box">
|
||||
<u-parse :content="content"></u-parse>
|
||||
</view>
|
||||
|
||||
<jushi-signature :settings="settings" base64 @cancel="signatureCancel"
|
||||
@change="signatureChange"></jushi-signature>
|
||||
</view>
|
||||
<jushi-signature :settings="settings" base64 @cancel="signatureCancel"
|
||||
@change="signatureChange"></jushi-signature>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import headers from '../../components/header/headers.vue'
|
||||
import request from '@/utils/request.js'
|
||||
import headers from '../../components/header/headers.vue'
|
||||
import upload from '../../utils/upload';
|
||||
import request from '@/utils/request.js'
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
titles: "合同",
|
||||
settings: { //签名设置
|
||||
width: '750', //签名区域的宽
|
||||
height: '500', //签名区域的高
|
||||
lineWidth: 4, //签名时线宽
|
||||
textColor: '#000' //签名文字颜色
|
||||
},
|
||||
contentTemp: '',
|
||||
content: '',
|
||||
List: [],
|
||||
show: false,
|
||||
status: 'loading',
|
||||
name: '',
|
||||
Address: '',
|
||||
tenantId: '',
|
||||
contractData: {},
|
||||
userData: {},
|
||||
callback: null,
|
||||
}
|
||||
},
|
||||
onLoad(options) {
|
||||
/*this.name = option.name
|
||||
this.Address = option.Address
|
||||
this.tenantId = option.tenantId
|
||||
console.log('name',this.name)
|
||||
console.log('Address',this.Address)
|
||||
console.log('tenantId',this.tenantId)*/
|
||||
if (options.data) {
|
||||
this.contractData = JSON.parse(decodeURIComponent(options.data));
|
||||
this.callback = options.callback;
|
||||
}
|
||||
this.callback = options.callback;
|
||||
this.userData = uni.getStorageSync('userInfo');
|
||||
},
|
||||
onShow() {
|
||||
this.getdriveSchool()
|
||||
// this.actList = ["1", "1", "1", "1", "1", ]
|
||||
// this.status = "nomore" 底部刷新结束
|
||||
},
|
||||
onPullDownRefresh() {
|
||||
console.log("刷新");
|
||||
uni.stopPullDownRefresh()
|
||||
},
|
||||
onReachBottom() {
|
||||
// this.show = true
|
||||
setTimeout(() => {
|
||||
console.log("加载执行");
|
||||
}, 2000)
|
||||
},
|
||||
components: {
|
||||
headers
|
||||
},
|
||||
methods: {
|
||||
async getdriveSchool() {
|
||||
let res = await request({
|
||||
url: `/app-api/small/driveSchool/obtainContract/tenantId/${this.contractData.tenantId}`,
|
||||
method: 'get',
|
||||
})
|
||||
this.content = res.data.content
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
titles: "合同",
|
||||
settings: { //签名设置
|
||||
width: '750', //签名区域的宽
|
||||
height: '500', //签名区域的高
|
||||
lineWidth: 4, //签名时线宽
|
||||
textColor: '#000' //签名文字颜色
|
||||
},
|
||||
contentTemp: '',
|
||||
content: '',
|
||||
userUrl: '',
|
||||
List: [],
|
||||
show: false,
|
||||
status: 'loading',
|
||||
name: '',
|
||||
Address: '',
|
||||
tenantId: '',
|
||||
contractData: {},
|
||||
userData: {},
|
||||
callback: null,
|
||||
}
|
||||
},
|
||||
onLoad(options) {
|
||||
/*this.name = option.name
|
||||
this.Address = option.Address
|
||||
this.tenantId = option.tenantId
|
||||
console.log('name',this.name)
|
||||
console.log('Address',this.Address)
|
||||
console.log('tenantId',this.tenantId)*/
|
||||
if (options.data) {
|
||||
this.contractData = JSON.parse(decodeURIComponent(options.data));
|
||||
this.callback = options.callback;
|
||||
}
|
||||
this.callback = options.callback;
|
||||
this.userData = uni.getStorageSync('userInfo');
|
||||
// 监听 tempFilePath 事件
|
||||
uni.$off('tempFilePath');
|
||||
uni.$on('tempFilePath', (data) => {
|
||||
console.log('Received tempFilePath:', data);
|
||||
//上传图片
|
||||
upload({
|
||||
url: '/app-api/small-upload/common/upload',
|
||||
filePath: data,
|
||||
}).then((res) => {
|
||||
this.userUrl = res.data.url
|
||||
console.log(this.userUrl, 'userUrl');
|
||||
this.signatureChange()
|
||||
})
|
||||
});
|
||||
|
||||
// 执行替换
|
||||
for (const [key, value] of Object.entries(this.contractData)) {
|
||||
this.content = this.content.replace(
|
||||
new RegExp(` ${key} |${key}`, 'g'),
|
||||
value
|
||||
);
|
||||
}
|
||||
},
|
||||
onShow() {
|
||||
this.getdriveSchool()
|
||||
// this.actList = ["1", "1", "1", "1", "1", ]
|
||||
// this.status = "nomore" 底部刷新结束
|
||||
},
|
||||
onPullDownRefresh() {
|
||||
console.log("刷新");
|
||||
uni.stopPullDownRefresh()
|
||||
},
|
||||
onReachBottom() {
|
||||
// this.show = true
|
||||
setTimeout(() => {
|
||||
console.log("加载执行");
|
||||
}, 2000)
|
||||
},
|
||||
components: {
|
||||
headers
|
||||
},
|
||||
methods: {
|
||||
async getdriveSchool() {
|
||||
let res = await request({
|
||||
url: `/app-api/small/driveSchool/obtainContract/tenantId/${this.contractData.tenantId}`,
|
||||
method: 'get',
|
||||
})
|
||||
this.content = res.data.content
|
||||
|
||||
// 处理特殊格式的占位符(如下划线格式)
|
||||
this.content = this.content.replace(/<u[^>]*>([^<]*)name([^<]*)<\/u>/g, `<u>$1${this.contractData.name}$2</u>`);
|
||||
this.content = this.content.replace(/<u[^>]*>([^<]*)type([^<]*)<\/u>/g, `<u>$1${this.contractData.type}$2</u>`);
|
||||
// 执行替换
|
||||
for (const [key, value] of Object.entries(this.contractData)) {
|
||||
this.content = this.content.replace(
|
||||
new RegExp(` ${key} |${key}`, 'g'),
|
||||
value
|
||||
);
|
||||
}
|
||||
|
||||
// 处理特殊格式的占位符(如下划线格式)
|
||||
this.content = this.content.replace(/<u[^>]*>([^<]*)name([^<]*)<\/u>/g,
|
||||
`<u>$1${this.contractData.name}$2</u>`);
|
||||
this.content = this.content.replace(/<u[^>]*>([^<]*)type([^<]*)<\/u>/g,
|
||||
`<u>$1${this.contractData.type}$2</u>`);
|
||||
|
||||
|
||||
},
|
||||
},
|
||||
|
||||
signatureCancel() {
|
||||
uni.navigateBack()
|
||||
},
|
||||
async signatureChange(e) {
|
||||
this.imgUrl = e
|
||||
let res = await request({
|
||||
url: '/app-api/small/driveSchool/obtainContract',
|
||||
method: 'post',
|
||||
data: {
|
||||
userName: this.contractData.name,
|
||||
tenantId: this.tenantId,
|
||||
userId: this.userData.id,
|
||||
content: this.content,
|
||||
}
|
||||
})
|
||||
console.log(res);
|
||||
uni.showToast({
|
||||
title: '报名成功',
|
||||
duration: 3000
|
||||
|
||||
});
|
||||
|
||||
const pages = getCurrentPages();
|
||||
const prevPage = pages[pages.length - 2];
|
||||
|
||||
if (prevPage && (prevPage.route === 'pagesA/register/index' || prevPage.route === '/pagesA/register/index')) {
|
||||
if (this.callback) { // 从onLoad中获取的callback
|
||||
try {
|
||||
const callback = decodeURIComponent(this.callback);
|
||||
if (prevPage.$vm && typeof prevPage.$vm[callback] === 'function') {
|
||||
prevPage.$vm[callback]();
|
||||
}
|
||||
} catch (e) {
|
||||
console.error('回调执行失败:', e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
setTimeout(function () {
|
||||
// 在这里写需要延迟执行的代码
|
||||
uni.navigateTo({
|
||||
url: '/newPages/newIndex/index'
|
||||
})
|
||||
}, 2600); // 3000毫秒即为3秒
|
||||
signatureCancel() {
|
||||
uni.navigateBack()
|
||||
},
|
||||
async signatureChange(e) {
|
||||
this.imgUrl = e
|
||||
let res = await request({
|
||||
url: '/app-api/small/driveSchool/obtainContract',
|
||||
method: 'post',
|
||||
data: {
|
||||
userName: this.contractData.name,
|
||||
tenantId: this.tenantId,
|
||||
userId: this.userData.id,
|
||||
content: this.content,
|
||||
userUrl: this.userUrl,
|
||||
}
|
||||
})
|
||||
console.log(res);
|
||||
uni.showToast({
|
||||
title: '报名成功',
|
||||
duration: 3000
|
||||
|
||||
// const index = e.lastIndexOf("/")
|
||||
// let fileName = e.substring(index + 1, e.length)
|
||||
// this.uploadFile(this.imgUrl, fileName)
|
||||
});
|
||||
|
||||
},
|
||||
|
||||
goback() {
|
||||
uni.navigateBack()
|
||||
},
|
||||
const pages = getCurrentPages();
|
||||
const prevPage = pages[pages.length - 2];
|
||||
|
||||
}
|
||||
}
|
||||
if (prevPage && (prevPage.route === 'pagesA/register/index' || prevPage.route ===
|
||||
'/pagesA/register/index')) {
|
||||
if (this.callback) { // 从onLoad中获取的callback
|
||||
try {
|
||||
const callback = decodeURIComponent(this.callback);
|
||||
if (prevPage.$vm && typeof prevPage.$vm[callback] === 'function') {
|
||||
prevPage.$vm[callback]();
|
||||
}
|
||||
} catch (e) {
|
||||
console.error('回调执行失败:', e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
setTimeout(function() {
|
||||
// 在这里写需要延迟执行的代码
|
||||
uni.navigateTo({
|
||||
url: '/newPages/newIndex/index'
|
||||
})
|
||||
}, 2600); // 3000毫秒即为3秒
|
||||
|
||||
// const index = e.lastIndexOf("/")
|
||||
// let fileName = e.substring(index + 1, e.length)
|
||||
// this.uploadFile(this.imgUrl, fileName)
|
||||
|
||||
},
|
||||
|
||||
goback() {
|
||||
uni.navigateBack()
|
||||
},
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.content {
|
||||
background: #f4f5f6;
|
||||
.content {
|
||||
background: #f4f5f6;
|
||||
|
||||
height: 100vh;
|
||||
}
|
||||
height: 100vh;
|
||||
}
|
||||
|
||||
.container {
|
||||
width: 100%;
|
||||
background: #f4f5f6;
|
||||
box-sizing: border-box;
|
||||
padding-top: 88px;
|
||||
}
|
||||
.container {
|
||||
width: 100%;
|
||||
background: #f4f5f6;
|
||||
box-sizing: border-box;
|
||||
padding-top: 88px;
|
||||
}
|
||||
|
||||
.f-box {
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
padding: 15px;
|
||||
}
|
||||
</style>
|
||||
.f-box {
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
padding: 15px;
|
||||
}
|
||||
</style>
|
File diff suppressed because it is too large
Load Diff
@ -41,8 +41,9 @@
|
||||
</view>
|
||||
<!-- 新增内容容器 -->
|
||||
<view class="box_2 flex-col" v-if="curNow === 1">
|
||||
<view class="box_4 flex-col" v-for="item in appointmentList" @click="goDetail(item,'train')"
|
||||
<view class="box_4 flex-col" v-for="item in appointmentList"
|
||||
:key="item.id">
|
||||
<view @click="goDetail(item,'train')">
|
||||
<view class="group_5 flex-row justify-between">
|
||||
<view class="block_3 flex-col justify-between">
|
||||
<text class="text_2">{{ item.trainDay }}</text>
|
||||
@ -72,6 +73,7 @@
|
||||
<text class="text_8">教练名称:</text>
|
||||
<text class="text_9">{{ item.coachName }}</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="block_5 box_10 flex-row" style="justify-content: flex-end; margin: 0 20rpx 15rpx 0;"
|
||||
v-if="!item.ifEvaluate" @click="goEvaluateAdd(item)">
|
||||
<view
|
||||
|
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
@ -141,7 +141,7 @@
|
||||
success: function(res) {
|
||||
console.log(res, '签名');
|
||||
//强制返回base64
|
||||
that.emit(res.tempFilePath)
|
||||
uni.$emit('tempFilePath', res.tempFilePath)
|
||||
},
|
||||
fail(e) {
|
||||
console.log(JSON.stringify(e))
|
||||
@ -149,20 +149,20 @@
|
||||
}, this)
|
||||
},
|
||||
reset() {
|
||||
let that = this
|
||||
uni.getSystemInfo({
|
||||
success: function(res) {
|
||||
ctx.clearRect(0, 0, res.windowWidth, res.windowHeight)
|
||||
ctx.draw(true)
|
||||
// #ifdef MP-WEIXIN
|
||||
that.setCanvasBg()
|
||||
// #endif
|
||||
that.setPaintStyle()
|
||||
},
|
||||
})
|
||||
tempPoint = []
|
||||
// 注意:这里不触发任何emit事件
|
||||
},
|
||||
let that = this
|
||||
uni.getSystemInfo({
|
||||
success: function(res) {
|
||||
ctx.clearRect(0, 0, res.windowWidth, res.windowHeight)
|
||||
ctx.draw(true)
|
||||
// #ifdef MP-WEIXIN
|
||||
that.setCanvasBg()
|
||||
// #endif
|
||||
that.setPaintStyle()
|
||||
},
|
||||
})
|
||||
tempPoint = []
|
||||
// 注意:这里不触发任何emit事件
|
||||
},
|
||||
emit(tempFilePath) {
|
||||
this.$emit('change', tempFilePath)
|
||||
},
|
||||
@ -226,11 +226,11 @@
|
||||
}
|
||||
|
||||
.clear {}
|
||||
|
||||
|
||||
.reset {
|
||||
background: #FF9900;
|
||||
color: white;
|
||||
}
|
||||
background: #FF9900;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.sign-area {
|
||||
position: absolute;
|
||||
@ -240,5 +240,4 @@
|
||||
font-size: 130rpx;
|
||||
transform: rotate(-20deg);
|
||||
}
|
||||
|
||||
</style>
|
Loading…
Reference in New Issue
Block a user