对齐offer

This commit is contained in:
A1300399510 2025-02-26 12:14:59 +08:00
parent 5ec53fc464
commit 58c62dc535
29 changed files with 565 additions and 575 deletions

View File

@ -9,7 +9,8 @@
"pages/projectMy/projectMy",
"pages/projectDetails/projectDetails",
"pages/search/search",
"pages/webview/webview"
"pages/webview/webview",
"pages/setAvatarNickname/setAvatarNickname"
],
"window": {
"navigationBarTextStyle": "black",

View File

@ -166,7 +166,7 @@
</view>
<view wx:if="{{ isShowEmoji }}" class="vote-item-bottom-right" style="display: flex;margin-left: 15rpx;">
<view class="emoji-item" wx:for="{{ items }}" wx:key="index">
<rich-text class="emoji-item-icon" nodes="&#x{{ item }};" />
<rich-text class="emoji-item-icon" nodes="{{ '&#x' + item + ';' }}" />
</view>
</view>
<view wx:else class="vote-item-bottom-right flexacenter">
@ -218,7 +218,7 @@
</view>
<view wx:if="{{ isShowEmoji }}" class="mj-item-bottom-right" style="display: flex;margin-left: 15rpx;">
<view class="emoji-item" wx:for="{{ items }}" wx:key="index">
<rich-text class="emoji-item-icon" nodes="&#x{{ item }};" />
<rich-text class="emoji-item-icon" nodes="{{ '&#x' + item + ';' }}" />
</view>
</view>
<view wx:else class="mj-item-bottom-right flexacenter">
@ -308,7 +308,7 @@
</view>
<view wx:if="{{ isShowEmoji }}" class="summary-offer-bottom-rigth" style="display: flex;margin-left: 15rpx;">
<view class="emoji-item" wx:for="{{ items }}" wx:key="index">
<rich-text class="emoji-item-icon" nodes="&#x{{ item }};" />
<rich-text class="emoji-item-icon" nodes="{{ '&#x' + item + ';' }}" />
</view>
</view>
<view wx:else class="summary-offer-bottom-rigth flexacenter">
@ -381,7 +381,7 @@
</view>
<view wx:if="{{ isShowEmoji }}" class="numerical-box" style="display: flex;margin-left: 15rpx;">
<view class="emoji-item" wx:for="{{ items }}" wx:key="index">
<rich-text class="emoji-item-icon" nodes="&#x{{ item }};" />
<rich-text class="emoji-item-icon" nodes="{{ '&#x' + item + ';' }}" />
</view>
</view>
<!-- 数值 -->
@ -551,7 +551,7 @@
</view>
<view wx:if="{{ isShowEmoji }}" class="find-flyer-bottom-right" style="display: flex;margin-left: 15rpx;">
<view class="emoji-item" wx:for="{{ items }}" wx:key="index">
<rich-text class="emoji-item-icon" nodes="&#x{{ item }};" />
<rich-text class="emoji-item-icon" nodes="{{ '&#x' + item + ';' }}" />
</view>
</view>
<view wx:else class="find-flyer-bottom-right flexacenter">
@ -630,7 +630,7 @@
</view>
<view wx:if="{{ isShowEmoji }}" class="thread-bottom-right" style="display: flex;margin-left: 15rpx;">
<view class="emoji-item" wx:for="{{ items }}" wx:key="index">
<rich-text class="emoji-item-icon" nodes="&#x{{ item }};" />
<rich-text class="emoji-item-icon" nodes="{{ '&#x' + item + ';' }}" />
</view>
</view>
<view wx:else class="thread-bottom-right flexacenter">

View File

@ -70,7 +70,6 @@ Component({
})
})
// console.log("urls", urls);
// urls[0]['date'] = "2025-01-20 15:35"
urls.sort((a, b) => b.rank - a.rank)
@ -95,7 +94,6 @@ Component({
urls = urls.filter(item => item.timestamp);
console.log("urls", urls);
urls.push({
mold: 4,
timestamp: "",

BIN
img/defaultAvatar.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -14,6 +14,8 @@ Page({
screen_data: {},
totalTopHeight: 86,
islogin: false,
isloginBtnState: false, // 登录弹窗的状态
informationState: false, // 授权后可能需要弹出完成信息框 个人背景那些
briefness: false, // 是否开启头部的简单模式
isquick: false, // 快速保存按钮显示
@ -40,8 +42,17 @@ Page({
/**
* 生命周期函数--监听页面加载
*/
options: {},
ids: [],
onLoad(options) {
this.options = options
if (options.ids) {
let decodedUrl = options.ids;
while (decodedUrl !== decodeURIComponent(decodedUrl)) {
decodedUrl = decodeURIComponent(decodedUrl);
}
options.ids = decodedUrl
}
this.ids = options.ids.split(",") || [];
miucms.pageStart(app).then(() => {
@ -86,7 +97,6 @@ Page({
let allArr = []
list.forEach(element => allArr.push(common.decodeKey(element)))
const obj = this.data.disciplineObj
// console.log("discipline", obj);
Promise.allSettled(allArr).then(res => {
console.log("res", res);
let list = []
@ -256,6 +266,12 @@ Page({
// 点击保存
save() {
if (!this.data.islogin) {
this.setData({
isloginBtnState: true
})
return
}
util.wxpost("/api/project.contrast/addQuick", {
projectid: this.ids
}).then(res => {
@ -276,6 +292,31 @@ Page({
showObj,
})
},
userClickLogin(e) {
let data = e.detail.data
this.setData({
islogin: true,
isloginBtnState: false,
oneselfUser: app.globalData.user,
informationState: data.regdatastep == 'success' ? false : true,
})
this.onLoad(this.options)
},
// 关闭授权登录事件
popClose() {
this.setData({
isloginBtnState: !this.data.isloginBtnState
})
},
// 子组件传值 修改 完善信息组件的状态
revampInformationState() {
this.setData({
informationState: false
})
},
/**
* 生命周期函数--监听页面初次渲染完成

View File

@ -1,5 +1,7 @@
{
"usingComponents": {
"go-login": "/component/goLogin/goLogin",
"perfect-information": "/component/perfectInformation/perfectInformation",
"header-nav": "/component/headerNav/headerNav",
"index-sidebar": "/component/indexSidebar/indexSidebar"
}

View File

@ -1,6 +1,10 @@
<!--pages/projectComparison/projectComparison.wxml-->
<header-nav>项目对比</header-nav>
<view class="container" wx:if="{{ !loading }}">
<perfect-information wx:if="{{ informationState }}" bindrevampInformationState="revampInformationState"></perfect-information>
<go-login wx:if="{{ isloginBtnState }}" islogin="{{ islogin }}" binduserClickLogin="userClickLogin" bindpopClose="popClose"></go-login>
<block wx:key="index">
<view class="block head-box flexflex {{ briefness ? 'briefness' : '' }}" style="top: {{ totalTopHeight }}px;">
<view class="item flex1 " wx:for="{{ list }}" wx:key="index">
@ -40,7 +44,7 @@
<view class="title">学校排名</view>
<view class="block flexflex">
<view class="item flex1" wx:for="{{ list }}" wx:key="index">
<template is="mode2" data="{{ text: item.schoolranking || '-' }}"></template>
<template is="mode2" data="{{ text: item.schoolranking || '-' }}"></template>
</view>
</view>
</view>

View File

@ -90,6 +90,7 @@ Page({
rpx30: 30,
user: {},
offerList: [],
offerPage: 1,
sideNum: {},
answerType: 0, // 招生管显示类型 0不显示 1长期答疑 2即将开始
countDown: {
@ -148,25 +149,17 @@ Page({
const data = res.data
let admissionofficerin = data.admissionofficerin || []
// console.log("data", data);
// admissionofficerin[0]['date'] = "2025-01-21 19:00"
if (admissionofficerin.length > 0) {
admissionofficerin.forEach(element => {
const date = new Date(element.date);
// let answerType = 1
if (!isNaN(date.getTime())) {
if (Date.now() < date.getTime()) {
this.startCountdown(date.getTime() - Date.now() || 0)
// answerType = 2
this.setData({
answerType: 2,
})
}
}
// this.setData({
// answerType,
// })
})
}
@ -184,7 +177,7 @@ Page({
const info = data.info || {}
const fields = ['tuition_fee', ];
const fields = ['tuition_fee'];
fields.forEach(field => {
const textKey = `${field}_text`;
info[textKey] = common.formatNumberWithSpaces(info[field] || '');
@ -241,40 +234,9 @@ Page({
if ((year < semester.year) || (year === semester.year && month < semester.month)) info['semesterState'] = true
let scores = info.language_proficiency_scores || []
const scoresList = scores
.map(element => {
let text = ""
if (["GMAT", "GMAT Focus Edition"].includes(element.name_zh)) text = `Verbal Reasoning ${element.verbal_reasoning} 分以上`
else if (["IELTS Academic", "TOEFL-iBT", "TOEFL-pBT"].includes(element.name_en)) {
const fields = {
total: "总分",
reading: "阅读",
speaking: "口语",
writing: "写作",
listening: "听力",
}
info["scoresList"] = common.scoresList(scores)
let scores = [element.reading, element.speaking, element.writing, element.listening]
if (scores.length == 4 && scores.every(score => score !== undefined && score > 0 && score === scores[0])) text = `总分 ${element.total} 分以上,各项分数不低于 ${scores[0]}`
else {
for (const [key, label] of Object.entries(fields)) {
if (element[key]) text += `${label} ${element[key]} 分以上、`
}
if (text.endsWith("、")) text = text.slice(0, -1)
}
} else if (element.total && element.total == 'Pass') text = `等级 ${element.total}`
else if (element.total && /^[A-Za-z]+$/.test(element.total)) text = `等级 ${element.total} 以上`
else if (element.total) text = `总分 ${element.total} 分以上`
return text ? {
name: element.name_zh,
text
} : null
})
.filter(item => item !== null)
info["scoresList"] = scoresList
// info["scoresList"] = scoresList
this.getOfferData(info.id)
@ -342,11 +304,8 @@ Page({
// 计算出外地申请截止时间
calculateApplicaDeadline(obj) {
// 初始化变量来存储最大时间点的属性和日期
let maxDate = null;
// 遍历对象的属性
for (const item in obj) {
// 如果当前日期是最大日期或是第一个日期,则更新最大日期和属性
if (maxDate === null || obj[item] > maxDate) maxDate = obj[item];
}
return maxDate
@ -401,26 +360,38 @@ Page({
sideHeight: {},
getHeadHeight() {
const query = wx.createSelectorQuery();
query.selectAll('.details-box .side-item').boundingClientRect(rect => {
query.selectAll('.head-box').boundingClientRect()
query.selectAll('.details-box .side-item').boundingClientRect()
query.exec(rect => {
if (!rect) return
const headBox = rect[0][0] || {}
const side = rect[1]
let sideHeight = {}
rect.forEach(element => {
let height = headBox.height - this.data.rpx30
side.forEach(element => {
const type = element.dataset.type
sideHeight[type] = element.top
sideHeight[type] = height
height += element.height || 0
})
this.sideHeight = sideHeight
}).exec();
})
},
onPageScroll(e) {
// if (Math.random() > 0.5) return
const scrollTop = e.scrollTop
const sideHeight = this.sideHeight
const sideHeightList = Object.keys(sideHeight) || []
if (sideHeightList.length == 0) return
let closestValue = sideHeightList.reduce((a, b) => Math.abs(sideHeight[b] - scrollTop) < Math.abs(sideHeight[a] - scrollTop) ? b : a);
// 获取对象的所有键
const keys = Object.keys(sideHeight);
// 对键数组进行倒序排列
let closestValue = keys.reduce((acc, key) => {
const diff = sideHeight[key] - scrollTop;
if (diff <= this.data.totalTopHeight) return key
return acc;
}, null);
const sideKey = closestValue || 'pivotal'
if (sideKey != this.data.sideKey) {
@ -514,8 +485,10 @@ Page({
handSide(e) {
const sideKey = e.currentTarget.dataset.key
const sideHeight = this.sideHeight
let value = sideHeight[sideKey] - this.data.totalTopHeight || 0
if (this.data.offerPage && ["issue", "links"].includes(sideKey)) value = 10000000
wx.pageScrollTo({
scrollTop: sideHeight[sideKey] - this.data.totalTopHeight || 0,
scrollTop: value,
})
},
@ -601,7 +574,8 @@ Page({
},
getOfferData(projectid) {
util.wxget("/api/project.other/offerList?limit=2000&projectid=" + projectid, ).then(res => {
if (this.data.offerPage == 0) return
util.wxget(`/api/project.other/offerList?limit=2000&projectid=${ projectid || this.data.info.id }&page=${ this.data.offerPage }`).then(res => {
const data = res.data
const list = data.list || []
let side = this.data.side
@ -614,9 +588,14 @@ Page({
let sideNum = this.data.sideNum
sideNum['consult'] = data.count
this.setData({
offerList: list,
offerList: this.data.offerList.concat(list),
side,
sideNum,
offerPage: data.count > data.limit * data.page ? this.data.offerPage + 1 : 0,
}, () => {
setTimeout(() => {
this.getHeadHeight()
}, 500)
})
})
},
@ -670,7 +649,7 @@ Page({
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
if (this.data.offerPage != 0) this.getOfferData()
},
/**
* 页面相关事件处理函数--监听用户下拉动作

View File

@ -200,8 +200,9 @@ navigator {
}
.borderTop {
border-top: 1rpx dotted #d9d9d9;
margin-left: 36rpx;
border-top: 1rpx solid #ebebeb;
// margin-left: 36rpx;
width: calc(100% + 15rpx);
}
.item-header {
@ -503,72 +504,33 @@ navigator {
position: relative;
min-height: 160rpx;
.left {
display: flex;
// flex-direction: column;
justify-content: center;
align-items: center;
.unit {
padding: 0 10.5rpx;
width: fit-content;
height: 30rpx;
line-height: 30rpx;
background-color: rgba(249, 93, 93, 1);
border-radius: 22.5rpx;
font-family: 'PingFangSC-Regular', 'PingFang SC', sans-serif;
font-weight: 400;
font-size: 21rpx;
color: #FFFFFF;
position: absolute;
top: 15rpx;
left: 15rpx;
}
.number {
font-family: 'Arial', 'Arial-Black', 'Arial Black', sans-serif;
font-weight: 900;
font-size: 30rpx;
color: #000000;
// margin-bottom: 12rpx;
}
.text {
font-size: 24rpx;
color: #555555;
margin-right: 20rpx;
}
.unit {
padding: 0 10.5rpx;
width: fit-content;
height: 30rpx;
line-height: 30rpx;
background-color: rgba(249, 93, 93, 1);
border-radius: 22.5rpx;
font-family: 'PingFangSC-Regular', 'PingFang SC', sans-serif;
font-weight: 400;
font-size: 21rpx;
color: #FFFFFF;
position: absolute;
top: 15rpx;
left: 15rpx;
}
.right {
width: 300rpx;
background-color: rgba(246, 246, 246, 1);
border-radius: 9rpx;
padding: 24rpx 15rpx;
min-height: 130rpx;
display: flex;
justify-content: center;
flex-direction: column;
.number {
font-family: 'Arial', 'Arial-Black', 'Arial Black', sans-serif;
font-weight: 900;
font-size: 30rpx;
color: #000000;
}
.item {
font-size: 24rpx;
justify-content: space-between;
&:not(:last-of-type) {
margin-bottom: 16.5rpx;
}
.key {
color: #555555;
}
.value {
font-family: 'Arial', 'Arial-Black', 'Arial Black', sans-serif;
font-weight: 900;
font-style: normal;
color: #000000;
}
}
.text {
font-size: 24rpx;
color: #555555;
margin-right: 20rpx;
}
}
@ -1412,141 +1374,6 @@ navigator {
}
.remark {
width: 315rpx;
height: 72rpx;
background-color: rgba(246, 246, 246, 1);
border: 1rpx solid rgba(235, 235, 235, 1);
border-radius: 312rpx;
padding: 0 24rpx;
.icon {
width: 30rpx;
height: 30rpx;
margin-right: 15rpx;
}
.text {
font-size: 24rpx;
color: #555555;
width: 217.5rpx;
&.placeholder {
color: #AAAAAA;
}
}
}
.state-mask {
position: fixed;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
z-index: 1;
}
.state {
width: 171rpx;
height: 117rpx;
position: relative;
z-index: 2;
.state-box {
border-radius: 12rpx;
position: absolute;
bottom: 0;
border: 1rpx solid transparent;
transition: all .3s;
&.show {
background-color: rgba(245, 252, 253, 1);
border: 1rpx solid rgba(242, 242, 242, 1);
-moz-box-shadow: 0 0 7.5rpx rgba(0, 0, 0, 0.2);
-webkit-box-shadow: 0 0 7.5rpx rgba(0, 0, 0, 0.2);
box-shadow: 0 0 7.5rpx rgba(0, 0, 0, 0.2);
.state-list {
height: 313.5rpx;
border-bottom-color: #d7d7d7;
}
.delete {
padding: 31.5rpx 0;
height: 111rpx;
border-bottom-color: #d7d7d7;
}
}
&.undetermined {
.state-pitch {
background-color: rgba(249, 93, 93, 1);
}
.state-list {
.state-item {
&.pitch {
color: #F95D5D;
}
}
}
}
.state-pitch {
width: 135rpx;
height: 72rpx;
background-color: rgba(4, 176, 213, 1);
border-radius: 52.5rpx;
font-size: 24rpx;
color: #FFFFFF;
margin: 22.5rpx 18rpx;
.icon {
width: 16.5rpx;
height: 9rpx;
margin-left: 8rpx;
}
}
.state-list {
padding: 0 22.5rpx 13.5rpx;
border-bottom: 1rpx dotted transparent;
height: 0;
overflow: hidden;
transition: all .3s;
.state-item {
height: 75rpx;
font-size: 24rpx;
color: #555555;
&.pitch {
color: #04B0D5;
}
}
}
.delete {
height: 0;
overflow: hidden;
border-bottom: 1rpx dotted transparent;
transition: all .3s;
.delete-btn {
width: 48rpx;
height: 48rpx;
background-color: #f2f2f2;
border-radius: 50%;
.icon {
width: 21rpx;
height: 22.5rpx;
}
}
}
}
}
.btns {
.item {
.icon {
@ -1938,19 +1765,18 @@ navigator {
}
.left {
// width: 453rpx;
height: 120rpx;
// background: inherit;
// background-color: rgba(255, 255, 255, 0.898039215686275);
background-color: rgba(253, 250, 247, 1);
box-sizing: border-box;
border: 1.5rpx solid rgba(242, 242, 242, 1);
border-radius: 4.5rpx 0 0 4.5rpx;
border-radius: 6rpx 0 0 6rpx;
font-size: 25.5rpx;
color: #000000;
line-height: 36rpx;
padding: 10.5rpx 15rpx;
.left-text {
display: -webkit-box;
-webkit-box-orient: vertical;
@ -1989,7 +1815,9 @@ navigator {
height: 100%;
justify-content: center;
padding-right: 22rpx;
border-radius: 0 4.5rpx 4.5rpx 0;
border-radius: 0 6rpx 6rpx 0;
position: relative;
z-index: 1;
.text {
width: 145.5rpx;
@ -2036,10 +1864,18 @@ navigator {
color: #FFFFFF;
}
}
.aperture {
position: absolute;
left: 0;
bottom: 0;
width: 223.5rpx;
height: 120rpx;
z-index: -1;
}
}
}
.quick-answer {
width: 564rpx;
height: 190.5rpx;

View File

@ -47,6 +47,7 @@
</view>
<view class="right flexflex ">
<image class="aperture" src="https://app.gter.net/image/miniApp/offer/aperture-icon.png" mode="widthFix"></image>
<view class="text">
<image class="icon icon2" src="https://app.gter.net/image/miniApp/offer/about-start-text-w.png" mode="widthFix"></image>
<image class="icon" src="https://app.gter.net/image/miniApp/offer/about-start-text.png" mode="widthFix"></image>
@ -75,7 +76,7 @@
</view>
</view>
</view>
<view style="height: 100%" class="details-box flex1" scroll-y="{{ true }}" scroll-with-animation="{{ scrollAnimation }}">
<view style="height: 100%" class="details-box flex1">
<!-- 招生官 -->
<view class="side-item" data-type="pivotal">
<block wx:if="{{ urls.length != 0 && answerType == 0 }}">
@ -114,12 +115,10 @@
</view>
<!-- 总学费 -->
<view class="tuition block">
<view class="left flex1 flexacenter">
<view class="unit">{{ info.tuition_currency || 'HK$' }}</view>
<view class="text">总学费</view>
<view class="number">{{ info.tuition_fee_text || '待确认' }}</view>
</view>
<view class="tuition block flexcenter">
<view class="unit">{{ info.tuition_currency || 'HK$' }}</view>
<view class="text">总学费</view>
<view class="number">{{ info.tuition_fee_text || '待确认' }}</view>
</view>
<!-- 语言和奖金 -->
@ -150,15 +149,7 @@
</view>
<view class="demand block" wx:if="{{ info.scoresList.length != 0 }}">
<view class="title">英语能力要求</view>
<view class="hint">满足以下其中一项即可</view>
<view class="list">
<view class="item" wx:for="{{ info.scoresList }}" wx:key="index">
<image class="triangle" src="https://app.gter.net/image/miniApp/offer/triangle-red.svg" mode="widthFix"></image>
<view class="name">{{ item.name }}</view>
<view class="value">{{ item.text }}</view>
</view>
</view>
<template is="demand" data="{{ list: info.scoresList }}"></template>
</view>
</view>
@ -241,19 +232,7 @@
<template is="item-header" data="{{ text: '最低入学要求' }}"></template>
<view class="demand block">
<view class="text">{{ info.entrance_requirements || '-' }}</view>
<block wx:if="{{ info.scoresList.length != 0 }}">
<view class="title">英语能力要求</view>
<view class="hint">满足以下其中一项即可</view>
<view class="list">
<block wx:for="{{ info.scoresList }}" wx:key="index">
<view class="item">
<image class="triangle" src="https://app.gter.net/image/miniApp/offer/triangle-red.svg" mode="widthFix"></image>
<view class="name">{{ item.name }}</view>
<view class="value">{{ item.text }}</view>
</view>
</block>
</view>
</block>
<template is="demand" wx:if="{{ info.scoresList.length != 0 }}" data="{{ list: info.scoresList }}"></template>
</view>
<block wx:if="{{ info.documents_required }}">
@ -265,12 +244,10 @@
</block>
<template is="item-header" data="{{ text: '费用' }}"></template>
<view class="tuition block">
<view class="left flex1 flexacenter">
<view class="unit">{{ info.tuition_currency || 'HK$' }}</view>
<view class="text">总学费</view>
<view class="number">{{ info.tuition_fee_text || '待确认' }}</view>
</view>
<view class="tuition block flexcenter">
<view class="unit">{{ info.tuition_currency || 'HK$' }}</view>
<view class="text">总学费</view>
<view class="number">{{ info.tuition_fee_text || '待确认' }}</view>
</view>
<block wx:if="{{ info.scholarships }}">
@ -343,46 +320,9 @@
<template wx:if="{{ course.required.length != 0 || course.required.length != 0 }}" is="item-header" data="{{ text: '课程设置' }}"></template>
<view wx:if="{{ course.required.length != 0 }}" class="course block">
<image class="icon" src="https://app.gter.net/image/miniApp/offer/triangle-red.svg" mode="widthFix"></image>
<view class="title">必修课程</view>
<view class="hint" wx:if="{{ course.requiredCount }}">(共 {{ course.requiredCount }} 学分)</view>
<view class="table-head flexacenter">
<view class="item number">课程编号</view>
<view class="item name flex1">课程名称</view>
<view class="item credit">学分</view>
</view>
<view class="table-body">
<view class="list" wx:for="{{ course.required }}" wx:key="index">
<view class="item number flexcenter">{{ item.course_code || '-' }}</view>
<view class="item name flex1">
<view class="text">{{ item.course_name_zh }}</view>
<view class="english">{{ item.course_name_en }}</view>
</view>
<view class="item credit flexcenter">{{ item.credit || '-' }}</view>
</view>
</view>
</view>
<template wx:if="{{ course.required.length != 0 }}" is="table" data="{{ data: course.required, title: '必修课程', count: course.requiredCount }}"></template>
<view wx:if="{{ course.elective.length != 0 }}" class="course block">
<image class="icon" src="https://app.gter.net/image/miniApp/offer/triangle-red.svg" mode="widthFix"></image>
<view class="title">选修课程</view>
<view class="table-head flexacenter">
<view class="item number">课程编号</view>
<view class="item name flex1">课程名称</view>
<view class="item credit">学分</view>
</view>
<view class="table-body">
<view class="list" wx:for="{{ course.elective }}" wx:key="index">
<view class="item number flexcenter">{{ item.course_code || '-' }}</view>
<view class="item name flex1">
<view class="text">{{ item.course_name_zh }}</view>
<view class="english">{{ item.course_name_en }}</view>
</view>
<view class="item credit flexcenter">{{ item.credit || '-' }}</view>
</view>
</view>
</view>
<template wx:if="{{ course.elective.length != 0 }}" is="table" data="{{ data: course.elective, title: '选修课程' }}"></template>
<view class="link block" wx:if="{{ info.catalog_url }}">
<view class="title">申请页项目详情</view>
@ -427,7 +367,6 @@
<view class="block" wx:if="{{ info.positions }}">
<project-show-text titleName="职业岗位" className="positions" text="{{ info.positions || '- 暂无 -' }}"></project-show-text>
</view>
<!-- </block> -->
</view>
<view class="side-item" data-type="answers" wx:if="{{ answerquestions.length != 0 }}">
@ -469,7 +408,7 @@
<view wx:if="{{ offerList.length != 0 }}" class="side-item" data-type="consult">
<template is="item-header" data="{{ text: '寄托录取参考', type: 'consult' }}"></template>
<view class="consult-list">
<navigator class="consult-item" wx:for="{{ offerList }}" wx:key="index" url="/pages/victoryDetails/victoryDetails?id={{ item.id || item.uniqid }}" hover-class="none">
<navigator class="consult-item" wx:for="{{ offerList }}" wx:key="index" target="miniProgram" app-id="wxa9296b07391c2bc7" url="/pages/victoryDetails/victoryDetails?id={{ item.id || item.uniqid }}" hover-class="none">
<view class="school flexacenter">
<image class="img" src="{{ item.schoolimage }}" mode="widthFix"></image>
<view class="flex1">{{ item.schoolname }}</view>
@ -509,7 +448,7 @@
</view>
<view wx:if="{{ isShowEmoji }}" class="numerical-box" style="display: flex;margin-left: 15rpx;">
<view class="emoji-item" wx:for="{{ items }}" wx:key="index">
<rich-text class="emoji-item-icon" nodes="&#x{{ item }};" />
<rich-text class="emoji-item-icon" nodes="{{ '&#x' + item + ';' }}" />
</view>
</view>
<!-- 数值 -->
@ -536,7 +475,7 @@
</view>
</view>
<view class="side-item" data-type="issue" wx:if="{{ info.faq && info.faq.length != 0 }}">
<view class="side-item" data-type="issue" wx:if="{{ offerPage == 0 && (info.faq && info.faq.length != 0) }}">
<view class="issue-bj" wx:for="{{ info.faq }}" wx:key="index">
<view class="issue block">
<view class="index flexcenter">{{ item.num }}</view>
@ -547,7 +486,7 @@
</view>
</view>
<view wx:if="{{ info.leaflet_url || info.program_url || info.catalog_url }}" class="side-item" data-type="links">
<view wx:if="{{ offerPage == 0 && (info.leaflet_url || info.program_url || info.catalog_url) }}" class="side-item" data-type="links">
<view class="pdf block" wx:if="{{ info.leaflet_url }}">
<image class="icon" src="https://app.gter.net/image/miniApp/offer/pdf-icon.svg" mode="widthFix"></image>
<view class="title">官方宣传册</view>
@ -598,8 +537,8 @@
</block>
<view wx:else class="btns flex1 flexacenter">
<view class="item flexcenter flex1 {{ contras.status == 1 ? 'already' : '' }}" bind:tap="addComparison">
<image wx:if="{{ contras.status == 1 }}" class="icon" src="https://app.gter.net/image/miniApp/offer/tick-grey.svg"></image>
<image wx:else class="icon" src="https://app.gter.net/image/miniApp/offer/add-deep-blue.svg"></image>
<image wx:if="{{ contras.status == 1 }}" class="icon" mode="widthFix" src="https://app.gter.net/image/miniApp/offer/tick-grey.svg"></image>
<image wx:else class="icon" mode="widthFix" src="https://app.gter.net/image/miniApp/offer/add-deep-blue.svg"></image>
{{ contras.status == 1 ? '已' : '' }}加入对比单
</view>
<view class="item flexcenter flex1 {{ contras.ismanage == 1 ? 'already' : '' }}" bind:tap="addComparison">
@ -659,19 +598,6 @@
</view>
</view>
<!-- 输入备注弹窗 -->
<view wx:if="{{ remarkState }}" class="remark-mask flexflex" style="height: calc(100vh - {{ keyboardHeight }}px);" bind:tap="closeRemark" catchtouchmove="return">
<view class="remark" catch:tap="return">
<textarea class="remark-input" cursor-spacing="{{ 5 }}" placeholder="添加备注…" maxlength="{{ 100 }}" focus="{{ remarkFocus }}" auto-focus="{{ remarkFocus }}" model:value="{{ remarkInput }}" adjust-position="{{ false }}" show-confirm-bar="{{ false }}" bindkeyboardheightchange="bindkeyboardheightchange" bind:blur="bindblur"></textarea>
<view class="remark-bottom flexacenter">
<view class="remark-limit">{{ remarkInput.length }}/100</view>
<view class="remark-btn flexcenter" bindtap="confirmRemark">
<image class="remark-icon" mode="widthFix" src="https://app.gter.net/image/miniApp/offer/arrows-deep-blue-green.svg"></image>
</view>
</view>
</view>
</view>
<template name="item-header">
<view class="item-header flexacenter">
<view class="flexacenter">
@ -682,10 +608,10 @@
榜单
<image class="icon" mode="widthFix" src="https://app.gter.net/image/miniApp/offer/arrow-circle-gray.png"></image>
</view>
<view wx:if="{{ type == 'consult' }}" class="list-btn flexacenter" bind:tap="goPage" data-url="/pages/victoryList/victoryList">
<navigator target="miniProgram" app-id="wxa9296b07391c2bc7" wx:if="{{ type == 'consult' }}" class="list-btn flexacenter" url="/pages/victoryList/victoryList">
Offer榜
<image class="icon" mode="widthFix" src="https://app.gter.net/image/miniApp/offer/arrow-circle-gray.png"></image>
</view>
</navigator>
</view>
</template>
@ -695,6 +621,41 @@
<index-sidebar id="index-sidebar" class="index-sidebar" sidebarType="xg" isInitFinish="{{ isInitFinish }}" bind:openLogin="openLoginBtnState" islogin="{{ islogin }}"></index-sidebar>
<template name="table">
<view class="course block">
<image class="icon" src="https://app.gter.net/image/miniApp/offer/triangle-red.svg" mode="widthFix"></image>
<view class="title">{{ title }}</view>
<view class="hint" wx:if="{{ count }}">(共 {{ count }} 学分)</view>
<view class="table-head flexacenter">
<view class="item number">课程编号</view>
<view class="item name flex1">课程名称</view>
<view class="item credit">学分</view>
</view>
<view class="table-body">
<view class="list" wx:for="{{ data }}" wx:key="index">
<view class="item number flexcenter">{{ item.course_code || '-' }}</view>
<view class="item name flex1">
<view class="text">{{ item.course_name_zh }}</view>
<view class="english">{{ item.course_name_en }}</view>
</view>
<view class="item credit flexcenter">{{ item.credit || '-' }}</view>
</view>
</view>
</view>
</template>
<template name="demand">
<view class="title">英语能力要求</view>
<view class="hint">满足以下其中一项即可</view>
<view class="list">
<view class="item" wx:for="{{ list }}" wx:key="index">
<image class="triangle" src="https://app.gter.net/image/miniApp/offer/triangle-red.svg" mode="widthFix"></image>
<view class="name">{{ item.name }}</view>
<view class="value">{{ item.text }}</view>
</view>
</view>
</template>
<view class="quick-answer-pop" wx:if="{{ quickAnswerState }}" catch:touchmove="return" bind:tap="cutQuickAnswer">
<view class="quick-answer-box" catch:tap="return">
<image class="quick-answer-img" src="https://app.gter.net/image/miniApp/offer/quick-answer-pop.png" mode="widthFix"></image>

View File

@ -164,8 +164,8 @@ navigator {
border-bottom: 1rpx solid #d9d9d9;
}
.details-box .borderTop {
border-top: 1rpx dotted #d9d9d9;
margin-left: 36rpx;
border-top: 1rpx solid #ebebeb;
width: calc(100% + 15rpx);
}
.details-box .item-header {
margin-left: 36rpx;
@ -415,12 +415,7 @@ navigator {
position: relative;
min-height: 160rpx;
}
.details-box .tuition .left {
display: flex;
justify-content: center;
align-items: center;
}
.details-box .tuition .left .unit {
.details-box .tuition .unit {
padding: 0 10.5rpx;
width: fit-content;
height: 30rpx;
@ -435,43 +430,17 @@ navigator {
top: 15rpx;
left: 15rpx;
}
.details-box .tuition .left .number {
.details-box .tuition .number {
font-family: 'Arial', 'Arial-Black', 'Arial Black', sans-serif;
font-weight: 900;
font-size: 30rpx;
color: #000000;
}
.details-box .tuition .left .text {
.details-box .tuition .text {
font-size: 24rpx;
color: #555555;
margin-right: 20rpx;
}
.details-box .tuition .right {
width: 300rpx;
background-color: #f6f6f6;
border-radius: 9rpx;
padding: 24rpx 15rpx;
min-height: 130rpx;
display: flex;
justify-content: center;
flex-direction: column;
}
.details-box .tuition .right .item {
font-size: 24rpx;
justify-content: space-between;
}
.details-box .tuition .right .item:not(:last-of-type) {
margin-bottom: 16.5rpx;
}
.details-box .tuition .right .item .key {
color: #555555;
}
.details-box .tuition .right .item .value {
font-family: 'Arial', 'Arial-Black', 'Arial Black', sans-serif;
font-weight: 900;
font-style: normal;
color: #000000;
}
.details-box .language-bonuses {
justify-content: space-between;
margin-left: 36rpx;
@ -1171,115 +1140,6 @@ navigator {
height: 24rpx;
margin-right: 12rpx;
}
.bottom-base .right .remark {
width: 315rpx;
height: 72rpx;
background-color: #f6f6f6;
border: 1rpx solid #ebebeb;
border-radius: 312rpx;
padding: 0 24rpx;
}
.bottom-base .right .remark .icon {
width: 30rpx;
height: 30rpx;
margin-right: 15rpx;
}
.bottom-base .right .remark .text {
font-size: 24rpx;
color: #555555;
width: 217.5rpx;
}
.bottom-base .right .remark .text.placeholder {
color: #AAAAAA;
}
.bottom-base .right .state-mask {
position: fixed;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
z-index: 1;
}
.bottom-base .right .state {
width: 171rpx;
height: 117rpx;
position: relative;
z-index: 2;
}
.bottom-base .right .state .state-box {
border-radius: 12rpx;
position: absolute;
bottom: 0;
border: 1rpx solid transparent;
transition: all 0.3s;
}
.bottom-base .right .state .state-box.show {
background-color: #f5fcfd;
border: 1rpx solid #f2f2f2;
-moz-box-shadow: 0 0 7.5rpx rgba(0, 0, 0, 0.2);
-webkit-box-shadow: 0 0 7.5rpx rgba(0, 0, 0, 0.2);
box-shadow: 0 0 7.5rpx rgba(0, 0, 0, 0.2);
}
.bottom-base .right .state .state-box.show .state-list {
height: 313.5rpx;
border-bottom-color: #d7d7d7;
}
.bottom-base .right .state .state-box.show .delete {
padding: 31.5rpx 0;
height: 111rpx;
border-bottom-color: #d7d7d7;
}
.bottom-base .right .state .state-box.undetermined .state-pitch {
background-color: #f95d5d;
}
.bottom-base .right .state .state-box.undetermined .state-list .state-item.pitch {
color: #F95D5D;
}
.bottom-base .right .state .state-box .state-pitch {
width: 135rpx;
height: 72rpx;
background-color: #04b0d5;
border-radius: 52.5rpx;
font-size: 24rpx;
color: #FFFFFF;
margin: 22.5rpx 18rpx;
}
.bottom-base .right .state .state-box .state-pitch .icon {
width: 16.5rpx;
height: 9rpx;
margin-left: 8rpx;
}
.bottom-base .right .state .state-box .state-list {
padding: 0 22.5rpx 13.5rpx;
border-bottom: 1rpx dotted transparent;
height: 0;
overflow: hidden;
transition: all 0.3s;
}
.bottom-base .right .state .state-box .state-list .state-item {
height: 75rpx;
font-size: 24rpx;
color: #555555;
}
.bottom-base .right .state .state-box .state-list .state-item.pitch {
color: #04B0D5;
}
.bottom-base .right .state .state-box .delete {
height: 0;
overflow: hidden;
border-bottom: 1rpx dotted transparent;
transition: all 0.3s;
}
.bottom-base .right .state .state-box .delete .delete-btn {
width: 48rpx;
height: 48rpx;
background-color: #f2f2f2;
border-radius: 50%;
}
.bottom-base .right .state .state-box .delete .delete-btn .icon {
width: 21rpx;
height: 22.5rpx;
}
.bottom-base .right .btns .item {
background-color: #cff7ff;
border: 1rpx solid #badee6;
@ -1605,7 +1465,7 @@ navigator {
background-color: #fdfaf7;
box-sizing: border-box;
border: 1.5rpx solid #f2f2f2;
border-radius: 4.5rpx 0 0 4.5rpx;
border-radius: 6rpx 0 0 6rpx;
font-size: 25.5rpx;
color: #000000;
line-height: 36rpx;
@ -1644,7 +1504,9 @@ navigator {
height: 100%;
justify-content: center;
padding-right: 22rpx;
border-radius: 0 4.5rpx 4.5rpx 0;
border-radius: 0 6rpx 6rpx 0;
position: relative;
z-index: 1;
}
.about-start .right .text {
width: 145.5rpx;
@ -1685,6 +1547,14 @@ navigator {
font-size: 19.5rpx;
color: #FFFFFF;
}
.about-start .right .aperture {
position: absolute;
left: 0;
bottom: 0;
width: 223.5rpx;
height: 120rpx;
z-index: -1;
}
.quick-answer {
width: 564rpx;
height: 190.5rpx;

View File

@ -270,6 +270,7 @@ view {
border-radius: 34.5rpx 0 34.5rpx 0;
padding: 16rpx 16rpx 37.5rpx;
}
&::after {
content: "";
width: calc(100% - 10rpx);
@ -280,7 +281,7 @@ view {
top: -8rpx;
left: 0;
z-index: -1;
border-radius: 34.5rpx 0 34.5rpx 0;
border-radius: 40rpx 0 34.5rpx 0;
}
&:not(:first-of-type) {
@ -354,8 +355,7 @@ view {
}
.text {
width: 313.5rpx;
width: 340rpx;
}
}
}
@ -364,10 +364,8 @@ view {
width: 132rpx;
height: 60rpx;
font-weight: 650;
background-color: #f95d5d;
background-color: rgb(249, 93, 93);
border-radius: 172.5rpx;
font-size: 24rpx;
color: #FFFFFF;
}
@ -545,6 +543,13 @@ view {
align-items: flex-start;
margin: 0 22.5rpx 80rpx;
.img {
width: 345rpx;
border-radius: 18rpx;
margin-bottom: 15rpx;
display: block;
}
.waterfall-left {
.more {
margin: 0 auto 30rpx;
@ -708,13 +713,6 @@ view {
margin-bottom: 50rpx;
}
.img {
width: 345rpx;
border-radius: 18rpx;
margin-bottom: 15rpx;
display: block;
}
.more {
width: 42rpx;
height: 42rpx;

View File

@ -3,7 +3,7 @@
<block wx:if="{{ banner.length != 0 }}">
<header-nav bgcolor="{{ isFirstPattern ? 'transparent' : '#f5f5f5' }}" user="{{ user }}" isIndexPage="{{ true }}">港校项目库</header-nav>
<view class="slideshow-box">
<swiper wx:if="{{ isShow }}" class="swiper" autoplay="{{ true }}" circular style="height: {{(swiperHeightList[swiperCurrent] + 5) || 124 }}px;" current="{{ swiperCurrent || 0 }}" bindchange="bindchangeSwiper">
<swiper wx:if="{{ isShow }}" class="swiper" autoplay="{{ true }}" circular style="height: {{(swiperHeightList[swiperCurrent] + 5) || 124 }}px;" current="{{ swiperCurrent || 0 }}" bindanimationfinish="bindchangeSwiper">
<swiper-item class="swiper-item" wx:for="{{ banner }}" wx:key="index">
<image class="slideshow-img" src="{{ item.imageurl }}" mode="widthFix" bindload="loadHeadSwiper" bind:tap="handleSwiper" data-index="{{ index }}" show-menu-by-longpress="{{ true }}"></image>
</swiper-item>
@ -82,7 +82,6 @@
<image class="icon-red" src="https://app.gter.net/image/miniApp/offer/triangle-red-r.svg" mode="widthFix"></image>
<image class="icon-thin" src="https://app.gter.net/image/miniApp/offer/triangle-red-thin.svg" mode="widthFix"></image>
</view>
{{ item.name }}
</view>
<view class="content flexacenter">
@ -90,7 +89,7 @@
<view class="project-item flexacenter" wx:for="{{ item.data }}" wx:key="index">
<image class="icon" src="{{ item.schoollogo }}"></image>
{{ item.schoolalias }}
<image class="arrows" src="https://app.gter.net/image/miniApp/offer/arrows-circle-blue.svg" mode="widthFix"></image>
<image class="arrows" src="https://app.gter.net/image/miniApp/offer/arrows-circle-black.svg" mode="widthFix"></image>
<view class="text one-line-display">{{ item.name_zh }}</view>
</view>
</view>
@ -110,7 +109,7 @@
</view>
</view>
<view class="box">
<swiper class="swiper" current="{{ current }}" bindchange="swiperchange" circular="{{ true }}">
<swiper class="swiper" circular="{{ true }}" current="{{ current }}" bindanimationfinish="swiperchange">
<swiper-item class="swiper-item" wx:for="{{ admissionList }}" wx:key="index">
<view class="item flexflex" wx:for="{{ item }}" wx:for-index="i" wx:key="i" bind:tap="goDetails" data-uniqid="{{ item.uniqid }}">
<image class="img" src="{{ item.schoollogo }}"></image>

View File

@ -240,7 +240,7 @@ view {
top: -8rpx;
left: 0;
z-index: -1;
border-radius: 34.5rpx 0 34.5rpx 0;
border-radius: 40rpx 0 34.5rpx 0;
}
.fate .fate-box .fate-item:not(:first-of-type) {
margin-top: 30rpx;
@ -300,7 +300,7 @@ view {
margin: 0 13.5rpx;
}
.fate .fate-box .fate-item .content .project-list .project-item .text {
width: 313.5rpx;
width: 340rpx;
}
.fate .fate-box .fate-item .content .btn {
width: 132rpx;
@ -446,6 +446,12 @@ view {
align-items: flex-start;
margin: 0 22.5rpx 80rpx;
}
.waterfall .img {
width: 345rpx;
border-radius: 18rpx;
margin-bottom: 15rpx;
display: block;
}
.waterfall .waterfall-left .more {
margin: 0 auto 30rpx;
}
@ -574,12 +580,6 @@ view {
width: 100%;
margin-bottom: 50rpx;
}
.img {
width: 345rpx;
border-radius: 18rpx;
margin-bottom: 15rpx;
display: block;
}
.more {
width: 42rpx;
height: 42rpx;

View File

@ -204,6 +204,7 @@ view {
.text {
font-size: 21rpx;
color: #AAAAAA;
margin-left: 5rpx;
}
}
}

View File

@ -173,6 +173,7 @@ view {
.chunk .list .item .head .mark .text {
font-size: 21rpx;
color: #AAAAAA;
margin-left: 5rpx;
}
.chunk .list .item .english {
font-size: 21rpx;

View File

@ -13,7 +13,6 @@ Page({
islogin: false,
isloginBtnState: false,
isFirstPattern: true,
classify: "vs", // vs manage '' 代表都没有数据
move: 0,
manageHintState: false, // 底部的提示的显示状态
@ -513,7 +512,6 @@ Page({
focusfocus(e) {
const index = e.currentTarget.dataset.index
let list = this.data.list
console.log("list", list[index]);
this.remarks = list[index]['remarks']
},
@ -539,9 +537,7 @@ Page({
util.wxpost("/api/project.user/remarks", {
token,
remarks,
}).then(res => {
common.toast(res.message)
})
}).then(res => common.toast(res.message))
},
// 备注输入

View File

@ -1,6 +1,6 @@
<!--pages/projectMy/projectMy.wxml-->
<view class="container {{ classify == '' ? 'no-data-bj' : '' }}">
<header-nav class="header-nav" bgcolor="{{ isFirstPattern ? 'transparent' : '#f5f5f5' }}">我的项目</header-nav>
<header-nav class="header-nav" bgcolor="transparent">我的项目</header-nav>
<view class="header-box"></view>
<view class="no-data flexcenter" wx:if="{{ classify == '' }}">
<image class="icon" src="https://app.gter.net/image/miniApp/offer/empty-icon.png" mode="widthFix"></image>
@ -162,7 +162,7 @@
</view>
<block wx:if="{{ item.input }}">
<textarea class="input flex1" focus="{{ true }}" auto-focus="{{ true }}" auto-height="{{ true }}" placeholder="添加备注…" maxlength="100" cursor-spacing="10" bindinput="inputRemark" bindlinechange="linechange" bindblur="bindblur" data-index="{{ index }}" value="{{ item.remarks }}"></textarea>
<textarea class="input flex1" focus="{{ true }}" auto-focus="{{ true }}" auto-height="{{ true }}" placeholder="添加备注…" maxlength="100" cursor-spacing="10" bindinput="inputRemark" bindlinechange="linechange" bindblur="bindblur" bindfocus="focusfocus" data-index="{{ index }}" value="{{ item.remarks }}"></textarea>
</block>
<block wx:else>
<view wx:if="{{ item.remarks }}" class="input flex1 text " bind:tap="openInput" data-index="{{ index }}">{{ item.remarks }}</view>

View File

@ -89,6 +89,7 @@ Page({
this.getinit()
this.getProjectData()
})
},
@ -204,9 +205,7 @@ Page({
const disciplineid = screen['disciplineid']
const university = screen['university']
let listAll = this.listAll
screen['pitch'] = screen.key
let screenList = this.screenList
let list = []
@ -214,6 +213,7 @@ Page({
else if (university) screenList = listAll.filter(item => item.department === university);
else screenList = this.listAll
if (sort == 0) {
screenList.sort((a, b) => {
// a 排在后面
@ -335,7 +335,6 @@ Page({
y: data.top + data.height / 2 - this.rpx15,
}
})
});
}

View File

@ -222,7 +222,6 @@ view {
.line {
width: 526rpx;
height: 285rpx;
margin-right: 15rpx;
display: inline-block;
overflow: hidden;

View File

@ -9,7 +9,7 @@
<view class="right flex1 flexflex">
<view class="name">{{ info.name }}</view>
<view class="english">{{ info.enname }}</view>
<view wx:if="{{ info.ranks.length != 0 }}" class="world" >
<view wx:if="{{ info.ranks.length != 0 }}" class="world">
<view class="head flexcenter">
<view class="icon flexcenter">
<image class="img" src="https://app.gter.net/image/miniApp/offer/world-ranking-icon.png" mode="widthFix"></image>
@ -44,7 +44,7 @@
<view class="hot">
<scroll-view class="hot-box" scroll-x="{{ true }}" bindscroll="hotscroll">
<view class="line" wx:for="{{ hotList }}" wx:key="index">
<view class="item flexacenter" bind:tap="goDetails" data-uniqid="{{ item.uniqid }}" wx:for="{{ item }}" wx:for-index="i" wx:key="i">
<view class="item flexacenter" wx:for="{{ item }}" wx:for-index="i" wx:key="i" bind:tap="goDetails" data-uniqid="{{ item.uniqid }}">
<view class="box">
<view class="name one-line-display">{{ item.name_zh }}</view>
<view class="english one-line-display">{{ item.name_en }}</view>
@ -102,7 +102,6 @@
<view class="total">共 {{ count }} 个项目</view>
<view class="item" wx:for="{{ list }}" wx:key="index" bind:tap="goDetails" data-uniqid="{{ item.uniqid }}">
<!-- <image wx:if="{{ item.admissionsproject }}" class="angle" src="https://app.gter.net/image/miniApp/offer/admission-angle.svg"></image> -->
<view class="title flexflex">
<view class="name flex1">{{ item.name_zh }}</view>
<view>
@ -125,7 +124,7 @@
</view>
</view>
</view>
<view wx:else class="join flexflex" catch:tap="handleClick" data-index="{{ item.random }}" data-type="list" data-random="{{ item.random }}" data-id="{{ item.id }}" data-index="{{ index }}" data-status="{{ item.contraststatus }}">
<view wx:else class="join flexflex" catch:tap="handleClick" data-type="list" data-random="{{ item.random }}" data-id="{{ item.id }}" data-index="{{ index }}" data-status="{{ item.contraststatus }}">
<view class="add flexcenter" id="add{{ item.random }}">
<image class="icon" src="https://app.gter.net/image/miniApp/offer/plus-icon.svg"></image>
</view>

View File

@ -189,7 +189,6 @@ view {
}
.hot .hot-box .line {
width: 526rpx;
height: 285rpx;
margin-right: 15rpx;
display: inline-block;
overflow: hidden;

View File

@ -142,15 +142,6 @@ scroll-view {
padding-right: 22.5rpx;
position: relative;
// .angle {
// position: absolute;
// top: 0;
// right: 0;
// width: 60rpx;
// height: 60rpx;
// transform: rotate(-90deg);
// }
.name {
font-family: 'PingFangSC-Semibold', 'PingFang SC Semibold', 'PingFang SC', sans-serif;
font-weight: 650;

View File

@ -37,7 +37,6 @@
</view>
<view class="list" scroll-y="{{ true }}" style="height: calc(100vh - {{ contentHeight }}px);" bindscrolltolower="scrolltolower">
<view class="item" wx:for="{{ list }}" wx:key="index" bind:tap="goPage" data-url="/pages/projectDetails/projectDetails?uniqid={{ item.uniqid }}" style="z-index: {{ item.moreState ? 2 : '' }};">
<!-- <image wx:if="{{ item.admissionsproject }}" class="angle" src="https://app.gter.net/image/miniApp/offer/admission-angle.svg"></image> -->
<view class="operate flexacenter">
<view class="school flexacenter">
<image class="icon" src="{{ item.schoollogo }}" mode="widthFix"></image>

View File

@ -0,0 +1,173 @@
// pages/setAvatarNickname/setAvatarNickname.js
var miucms = require('../../utils/miucms.js');
const app = getApp()
Page({
/**
* 页面的初始数据
*/
data: {
avatarUrl: '',
nickname: "",
islogin: false,
isloginBtnState: false,
informationState: false,
},
/**
* 生命周期函数--监听页面加载
*/
options: {},
onLoad: function (options) {
this.options = options
miucms.pageStart(app).then(() => {
const globalData = app.globalData || {}
const user = globalData.user || {}
this.setData({
avatarUrl: user.avatar || '../../img/defaultAvatar.png',
nickname: user.nickname || '',
isIndex: options.isIndex ? true : false, // 判断是否顶部返回键的
token: options.token,
islogin: app.globalData.user.uid > 0 ? true : false,
})
})
},
onChooseAvatar(e) {
let avatarUrl = e.detail.avatarUrl
avatarUrl = 'data:image/jpeg;base64,' + wx.getFileSystemManager().readFileSync(avatarUrl, "base64")
this.setData({
avatarUrl
})
miucms.request("https://passport.gter.net/api/user/uploadAvatar", {
data: avatarUrl
}).then(res => {
if (res.code == 401) {
wx.showToast({
title: res.message,
icon: "none"
})
this.openLoginBtnState()
return
}
let data = res.data
app.globalData.user = data.user
app.globalData['setSate'] = true
})
},
submitNickname() {
miucms.request("https://passport.gter.net/api/user/updateNickname", {
nickname: this.data.nickname
}).then(res => {
if (res.code == 401) {
wx.showToast({
title: res.message,
icon: "none"
})
this.openLoginBtnState()
return
}
if (res.code == 200) {
let data = res.data
app.globalData.user = data.user
app.globalData.setSate = true
if (this.data.isIndex) {
wx.navigateBack({
delta: 1,
fail: function () {
wx.navigateTo({
url: '/pages/projectLibrary/projectLibrary',
})
}
})
return
}
if (data.status == 1 || data.status == 2) {
wx.redirectTo({
url: '/pagesSquare/pages/PCAuthorization/PCAuthorization?token=' + this.data.token + "&status=" + data.status,
})
} else {
wx.navigateBack({
delta: 1,
fail: function () {
wx.navigateTo({
url: '/pages/projectLibrary/projectLibrary',
})
}
})
}
} else {
wx.showToast({
icon: "none",
title: res.message,
})
}
})
},
// 关闭授权登录事件
popClose() {
this.setData({
isloginBtnState: !this.data.isloginBtnState
})
},
// 打开 登录弹窗
openLoginBtnState() {
this.setData({
isloginBtnState: true
})
},
userClickLogin(e) {
let data = e.detail.data
this.setData({
islogin: true,
isloginBtnState: false,
informationState: data.regdatastep == 'success' ? false : true,
})
this.onLoad(this.options)
},
// 子组件传值 修改 完善信息组件的状态
revampInformationState() {
this.setData({
informationState: false
})
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {},
})

View File

@ -0,0 +1,7 @@
{
"usingComponents": {
"header-nav": "/component/headerNav/headerNav",
"go-login": "/component/goLogin/goLogin",
"perfect-information": "/component/perfectInformation/perfectInformation"
}
}

View File

@ -0,0 +1,26 @@
<!--pages/setAvatarNickname/setAvatarNickname.wxml-->
<view class="container">
<header-nav bgcolor="#f6f6f6" isIndexPage="{{ !isIndex }}" notShowIndex="true">设置头像昵称</header-nav>
<view class="box">
<view class="item">
<view class="left">头像</view>
<view class="right">
<button class="avatar-wrapper" open-type="chooseAvatar" bind:chooseavatar="onChooseAvatar">
<image class="head" src="{{ avatarUrl || '/img/defaultAvatar.png' }}"></image>
</button>
</view>
</view>
<view class="item">
<view class="left">昵称</view>
<view class="right">
<input type="nickname" class="nickname" model:value="{{nickname}}" maxlength="50" />
</view>
</view>
</view>
<view class="save" bindtap="submitNickname">保存</view>
<go-login wx:if="{{ isloginBtnState }}" islogin="{{ islogin }}" binduserClickLogin="userClickLogin" bindpopClose="popClose"></go-login>
<perfect-information wx:if="{{ informationState }}" bindrevampInformationState="revampInformationState"></perfect-information>
</view>

View File

@ -0,0 +1,83 @@
/* pages/setAvatarNickname/setAvatarNickname.wxss */
.container {
min-height: 100vh;
background-color: rgb(245, 245, 245);
padding: 24rpx 22.5rpx 0;
}
.box {
width: 705rpx;
background-color: #ffffff;
border-radius: 30rpx;
border: 1rpx solid #f2f2f2;
}
.box .item {
display: flex;
justify-content: space-between;
align-items: center;
height: 132rpx;
padding: 0 24rpx;
font-size: 24rpx;
color: #555555;
}
.box .item:not(:last-of-type) {
border-bottom: 1rpx solid #ebebeb;
}
.box .item .right {
flex: 1;
display: flex;
justify-content: flex-end;
}
.box .item .right .nickname {
text-align: right;
height: 132rpx;
width: 100%;
}
.box .head {
width: 72rpx;
height: 72rpx;
border-radius: 50%;
}
.avatar-wrapper {
padding: 0;
width: 100% !important;
border-radius: 8px;
background: transparent;
border: none;
outline: none;
display: flex;
justify-content: flex-end;
align-items: center;
margin: 0;
}
.avatar-wrapper::after {
border: none;
}
.save {
width: 705rpx;
height: 97.5rpx;
border-radius: 60rpx;
background-color: rgba(207, 247, 255, 1);
border: 1rpx solid #badee6;
display: flex;
justify-content: center;
align-items: center;
color: #000;
font-weight: 650;
font-size: 30rpx;
margin-top: 60rpx;
font-weight: 650;
font-size: 32rpx;
color: #026277;
line-height: 45rpx;
font-family: 'PingFangSC-Semibold', 'PingFang SC Semibold', 'PingFang SC', sans-serif;
}

View File

@ -8,6 +8,41 @@
"condition": {
"miniprogram": {
"list": [
{
"name": "pages/projectSubjectList/projectSubjectList",
"pathName": "pages/projectSubjectList/projectSubjectList",
"query": "id=2",
"launchMode": "default",
"scene": null
},
{
"name": "pages/projectComparison/projectComparison",
"pathName": "pages/projectComparison/projectComparison",
"query": "ids=9%2C773",
"launchMode": "default",
"scene": null
},
{
"name": "pages/projectMy/projectMy",
"pathName": "pages/projectMy/projectMy",
"query": "",
"launchMode": "default",
"scene": null
},
{
"name": "pages/projectSchoolHomepage/projectSchoolHomepage",
"pathName": "pages/projectSchoolHomepage/projectSchoolHomepage",
"query": "id=310",
"launchMode": "default",
"scene": null
},
{
"name": "pages/projectDetails/projectDetails",
"pathName": "pages/projectDetails/projectDetails",
"query": "uniqid=jOfD40rjKzfC",
"launchMode": "default",
"scene": null
},
{
"name": "pages/projectList/projectList",
"pathName": "pages/projectList/projectList",
@ -22,13 +57,6 @@
"launchMode": "default",
"scene": null
},
{
"name": "pages/projectDetails/projectDetails",
"pathName": "pages/projectDetails/projectDetails",
"query": "uniqid=rD0Sj0auDPzX",
"launchMode": "default",
"scene": null
},
{
"name": "pages/projectDetails/projectDetails",
"pathName": "pages/projectDetails/projectDetails",