From d4d6363bd3506b2b38d4039df09ed5ed855b5ff6 Mon Sep 17 00:00:00 2001
From: lion <120344285@qq.com>
Date: Fri, 26 Sep 2025 18:40:17 +0800
Subject: [PATCH] =?UTF-8?q?=E5=8F=8D=E9=A6=88=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
components/calendar-grid/calendar-grid.vue | 195 ++-
.../calendar-widget/calendar-widget.vue | 260 ++++
packages/avatarUpload/index.vue | 168 ++-
packages/hr/index.vue | 26 +
packages/my/index.vue | 52 +-
packages/schoolmate/index.vue | 237 +++-
packages/supply/detail.vue | 72 +-
packages/supply/index.vue | 16 +-
packages/supply/my-posts.vue | 12 +-
packages/supply/publish.vue | 101 +-
pages.json | 7 +-
pages/book/index.vue | 72 +-
pages/course/index.vue | 80 +-
pages/index/index.vue | 1122 +++++++++--------
14 files changed, 1660 insertions(+), 760 deletions(-)
create mode 100644 components/calendar-widget/calendar-widget.vue
create mode 100644 packages/hr/index.vue
diff --git a/components/calendar-grid/calendar-grid.vue b/components/calendar-grid/calendar-grid.vue
index 4907efc..2f200cb 100644
--- a/components/calendar-grid/calendar-grid.vue
+++ b/components/calendar-grid/calendar-grid.vue
@@ -4,7 +4,7 @@
‹
{{ displayYear }}年{{ displayMonthText }}月
›
- 今天
+
@@ -16,8 +16,8 @@
{{ cell.date }}
-
-
+
+
{{ formatTitle(ev.title) }}
@@ -26,7 +26,7 @@
-
+
{{ formatTitle(seg.title) }}
@@ -43,6 +43,7 @@ export default {
type: String,
required: true
},
+
events: { // [{ id, title, type, start_time, end_time }]
type: Array,
default: () => []
@@ -137,7 +138,7 @@ export default {
return ['日','一','二','三','四','五','六']
},
weeks() {
- // 6x7 网格
+ // 动态计算需要的行数
const firstDay = new Date(this.baseDate)
if (!(firstDay instanceof Date) || isNaN(firstDay.getTime())) return []
const startDow = firstDay.getDay()
@@ -145,8 +146,16 @@ export default {
const gridStart = new Date(firstDay)
gridStart.setDate(1 - offset)
+ // 计算当月最后一天
+ const lastDay = new Date(this.baseDate.getFullYear(), this.baseDate.getMonth() + 1, 0)
+ const lastDayOfMonth = lastDay.getDate()
+
+ // 计算需要的行数
+ const totalDays = offset + lastDayOfMonth
+ const neededWeeks = Math.ceil(totalDays / 7)
+
const weeks = []
- for (let w = 0; w < 6; w += 1) {
+ for (let w = 0; w < neededWeeks; w += 1) {
const row = []
for (let d = 0; d < 7; d += 1) {
const cur = new Date(gridStart)
@@ -164,8 +173,9 @@ export default {
return weeks
},
gridHeightPx() {
- // 返回 rpx 数值
- return this.headerHeight + this.weekHeaderHeight + this.cellHeight * 6
+ // 返回 rpx 数值,根据实际行数计算
+ const actualWeeks = this.weeks.length
+ return this.headerHeight + this.weekHeaderHeight + this.cellHeight * actualWeeks
},
continuousSegments() {
// 拆分跨天事件为每周分段
@@ -226,8 +236,23 @@ export default {
}
})
+ // 统计跨天分段对每日的覆盖数量
+ const segCountByDate = {}
+ const addDateKey = (ms) => {
+ const d = new Date(ms)
+ d.setHours(0,0,0,0)
+ const key = `${d.getFullYear()}-${this.pad2(d.getMonth()+1)}-${this.pad2(d.getDate())}`
+ segCountByDate[key] = (segCountByDate[key] || 0) + 1
+ }
+ segs.forEach(seg => {
+ for (let t = seg.segStartMs; t <= seg.segEndMs; t += 86400000) {
+ addDateKey(t)
+ }
+ })
+
// 为每周的分段分配 lane,避免重叠
const byWeek = {}
+ const laneCountByDate = {}
segs.forEach(s => {
const key = s.weekStartISO
if (!byWeek[key]) byWeek[key] = []
@@ -251,6 +276,12 @@ export default {
seg.laneIndex = laneEnd.length
laneEnd.push(seg.endCol)
}
+ // 记录该分段覆盖到的每日所需预留层数
+ for (let t = seg.segStartMs; t <= seg.segEndMs; t += 86400000) {
+ const d = new Date(t)
+ const key = `${d.getFullYear()}-${this.pad2(d.getMonth()+1)}-${this.pad2(d.getDate())}`
+ laneCountByDate[key] = Math.max(laneCountByDate[key] || 0, seg.laneIndex + 1)
+ }
})
})
@@ -289,20 +320,58 @@ export default {
const widthPct = seg.spanCols * cellWidthPct
const vOffset = (seg.laneIndex || 0) * (this.barHeight + this.barSpacing)
const innerTopPadding = 8 // 额外内边距,避免贴近格子顶部
- const topRpx = (row * this.cellHeight) + this.dateNumberHeight + innerTopPadding + vOffset - 10
+ const topRpx = (row * this.cellHeight) + this.dateNumberHeight + innerTopPadding + vOffset - 3
+
+ // 确保事件不会超出日历边界
+ const maxLeftPct = 100 - widthPct
+ const finalLeftPct = Math.min(leftPct, maxLeftPct)
seg._style = {
- left: leftPct + '%',
+ left: finalLeftPct + '%',
width: widthPct + '%',
top: topRpx + 'rpx',
height: heightRpx + 'rpx'
}
+
+ // 判断该跨天分段在其覆盖的日期是否独占(无单天事件、无其它跨天分段)
+ let onlyOne = true
+ for (let t = seg.segStartMs; t <= seg.segEndMs; t += 86400000) {
+ const d = new Date(t)
+ const key = `${d.getFullYear()}-${this.pad2(d.getMonth()+1)}-${this.pad2(d.getDate())}`
+ const segCnt = segCountByDate[key] || 0
+ const singleCnt = (this.eventsForDate(key) || []).length // 单天事件数量
+ if (!(segCnt === 1 && singleCnt === 0)) { onlyOne = false; break }
+ }
+ seg._isOnlyOne = onlyOne
})
+ // 暴露给实例:为单日事件预留空间 & 判定与跨天冲突
+ this.laneCountByDate = laneCountByDate
+ this.segCountByDate = segCountByDate
return segs
}
},
methods: {
+ getCellPadding(fullDate) {
+ // 根据覆盖该日期的跨天事件层数,为单日事件预留顶部空间,避免与跨天条重叠
+ const lanes = this.laneCountByDate && this.laneCountByDate[fullDate] ? this.laneCountByDate[fullDate] : 0
+ if (!lanes) return 0
+ return lanes * (this.barHeight + this.barSpacing)
+ },
+ isSingleEvent(fullDate) {
+ try {
+ const list = this.eventsForDate(fullDate) || []
+ return list.length === 1
+ } catch (_) {
+ return false
+ }
+ },
+ hasSpanConflict(fullDate) {
+ // 有跨天覆盖且该日也有单日事件
+ const hasMulti = !!(this.segCountByDate && this.segCountByDate[fullDate] > 0)
+ const hasSingle = (this.eventsForDate(fullDate) || []).length > 0
+ return hasMulti && hasSingle
+ },
onEventClick(ev) {
this.$emit('eventClick', ev)
},
@@ -413,30 +482,33 @@ export default {
diff --git a/components/calendar-widget/calendar-widget.vue b/components/calendar-widget/calendar-widget.vue
new file mode 100644
index 0000000..0ba0b10
--- /dev/null
+++ b/components/calendar-widget/calendar-widget.vue
@@ -0,0 +1,260 @@
+
+
+
+
+
+
+ 学院日历
+
+
+
+
+
+
+
+
+
diff --git a/packages/avatarUpload/index.vue b/packages/avatarUpload/index.vue
index cace664..5e35fe5 100644
--- a/packages/avatarUpload/index.vue
+++ b/packages/avatarUpload/index.vue
@@ -30,26 +30,26 @@
@confirm="confirmCrop"
/> -->
-
-
-
-
- 小尺寸
-
-
-
- 中尺寸
-
-
-
- 大尺寸
-
+
+
+
+
+ 小尺寸
+
+
+
+ 中尺寸
+
+
+
+ 大尺寸
+
-
-
- 提交
+
+
+ 提交
-
+
@@ -60,8 +60,8 @@
+
+
\ No newline at end of file
diff --git a/packages/my/index.vue b/packages/my/index.vue
index 5ebd2f2..1d3d9f9 100644
--- a/packages/my/index.vue
+++ b/packages/my/index.vue
@@ -2,6 +2,12 @@
+
+
+
+
+
+
{{form.username}}
@@ -19,10 +25,10 @@
-
-
-
+
+
+
@@ -35,7 +41,7 @@
-
+
{{item}}
@@ -50,7 +56,7 @@
提交
-
+
@@ -103,6 +109,7 @@
},
data() {
return {
+ userAvatar: '',
showMobile: false,
myMobile: '',
myCode: '',
@@ -120,15 +127,15 @@
'height': '80rpx',
'border': '1rpx solid #dad8d8;',
'border-radius': '20rpx 0 0 20rpx'
- },
- dateShow: false,
- dateParams: {
- year: true,
- month: true,
- day: true,
- hour: false,
- minute: false,
- second: false
+ },
+ dateShow: false,
+ dateParams: {
+ year: true,
+ month: true,
+ day: true,
+ hour: false,
+ minute: false,
+ second: false
},
form: {
@@ -195,10 +202,15 @@
this.sendTimer = null
}
},
- methods: {
- // 日期
- dateConfirm(e) {
- this.form.birthday = e.year + '-' + e.month + '-' + e.day
+ methods: {
+ changeAvatar(){
+ uni.navigateTo({
+ url:'/packages/avatarUpload/index'
+ })
+ },
+ // 日期
+ dateConfirm(e) {
+ this.form.birthday = e.year + '-' + e.month + '-' + e.day
},
addMobile() {
this.myMobile = this.form.mobile
@@ -269,6 +281,8 @@
console.log("res", res)
// this.form = this.base.requestToForm(res.user, this.form)
this.form = this.base.deepCopy(res.user)
+ // 头像
+ this.userAvatar = res.user && res.user.headimgurl ? res.user.headimgurl : ''
if (res.user.plate) {
this.plateList = res.user.plate.split(',')
this.plateList.map((item, index) => {
diff --git a/packages/schoolmate/index.vue b/packages/schoolmate/index.vue
index 2111f35..6c78abe 100644
--- a/packages/schoolmate/index.vue
+++ b/packages/schoolmate/index.vue
@@ -1,10 +1,12 @@
-
+
@@ -27,11 +29,17 @@
- 按照姓名首字母顺序排列,排名不分先后
- 如需校友联系方式,可咨询班主任
+
+
+ 校友地图
+
+
+
+ 设置
+
-
+
@@ -44,6 +52,10 @@
style="font-size:28rpx;color:#666;margin-bottom:10rpx">
{{mess['company_position']?'职务:'+mess['company_position']:''}}
+
+ {{mess['mobile']?'联系方式:'+mess['mobile']:''}}
+
{{mess['company_product']?"主营业务:"+mess['company_product']:''}}
@@ -112,6 +124,42 @@
+
+
+
+
@@ -151,14 +199,43 @@
current_page: 1,
total_page: 0,
hasData: true,
- letterList:["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"]
+ letterList:["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"],
+ courseType: [],
+ showSetting: false,
+ selectedCourseTypes: [] // 选中的课程类型ID数组
}
},
onLoad() {
+ this.getUserInfo()
this.getMyCourseTxl()
this.getIndustry()
+ this.getCourseType()
},
methods: {
+ // 获取可授权的课程体系
+ async getCourseType() {
+ const res = await this.$u.api.otherConfig()
+ if(res.course_types_open_mobile && res.course_types_open_mobile.length>0){
+ this.courseType = res.course_types_open_mobile
+ }
+ },
+ async getUserInfo() {
+ const res = await this.$u.api.user()
+ this.$u.vuex('vuex_user', res.user)
+
+ // 设置初始选中状态
+ if(res.user.open_course_types) {
+ this.selectedCourseTypes = res.user.open_course_types.split(',').map(id => parseInt(id)).filter(id => !isNaN(id))
+ } else {
+ this.selectedCourseTypes = []
+ }
+
+ if(res.user.open_course_types){
+ this.showSetting = false
+ }else{
+ this.showSetting = true
+ }
+ },
goToMap() {
uni.navigateTo({
url: '/packages/schoolmate/map'
@@ -290,6 +367,40 @@
this.list = []
this.hasData = true
this.getMyCourseTxl()
+ },
+ // 切换课程类型选择
+ toggleCourseType(courseId) {
+ const index = this.selectedCourseTypes.indexOf(courseId)
+ if (index > -1) {
+ this.selectedCourseTypes.splice(index, 1)
+ } else {
+ this.selectedCourseTypes.push(courseId)
+ }
+ },
+ // 保存设置
+ async saveSettings() {
+ try {
+ const open_course_types = this.selectedCourseTypes.join(',')
+ await this.$u.api.saveUser({
+ open_course_types: open_course_types
+ })
+
+ // 保存成功后重新获取用户信息
+ await this.getUserInfo()
+
+ uni.showToast({
+ title: '设置保存成功',
+ icon: 'success'
+ })
+
+ this.showSetting = false
+ } catch (error) {
+ console.error('保存设置失败:', error)
+ uni.showToast({
+ title: '保存失败,请重试',
+ icon: 'none'
+ })
+ }
}
}
@@ -311,16 +422,20 @@
height: 100vh;
}
.map-btn{
- position: fixed;
- top: 110rpx;
- right: 20rpx;
- z-index: 999;
- background-color: #b89155;
- padding: 10rpx 20rpx;
- border-radius: 40rpx;
- display: flex;
- align-items: center;
- justify-content: center;
+ // position: fixed;
+ // top: 110rpx;
+ // right: 20rpx;
+ z-index: 999;
+ background-color: #b89155;
+ padding: 15rpx 20rpx;
+ border-radius: 40rpx;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width:60%;
+ }
+ .map-setting{
+ width:30%;
}
.map-text{
font-size: 28rpx;
@@ -374,11 +489,14 @@
.tips{
font-size: 24rpx;
text-align: left;
- padding-left:30rpx;
+ // padding-left:30rpx;
color:#999999;
margin-bottom:30rpx;
border-bottom:1rpx solid #cfd5d9;
padding-bottom:20rpx;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
}
.left-item-card {
width: 100%;
@@ -531,6 +649,91 @@
}
}
+
+ // 设置弹窗样式
+ .setting-popup {
+ padding: 40rpx;
+ background: #fff;
+ border-radius: 20rpx;
+
+ .setting-title {
+ font-size: 36rpx;
+ font-weight: 600;
+ color: #333;
+ text-align: center;
+ margin-bottom: 20rpx;
+ }
+
+ .setting-tip {
+ font-size: 28rpx;
+ color: #666;
+ text-align: center;
+ margin-bottom: 40rpx;
+ line-height: 1.5;
+ }
+
+ .setting-list {
+ max-height: 500rpx;
+ overflow-y: auto;
+ margin-bottom: 40rpx;
+
+ .setting-item {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: 24rpx 0;
+ border-bottom: 1rpx solid #f0f0f0;
+
+ &:last-child {
+ border-bottom: none;
+ }
+
+ &.setting-item-fixed {
+ background: #f8f9fa;
+ padding: 24rpx 20rpx;
+ margin: 0 -20rpx 0 -20rpx;
+ border-radius: 12rpx 12rpx 0 0;
+ border-bottom: 2rpx solid #e9ecef;
+
+ .setting-item-name {
+ color: #666;
+ font-weight: 500;
+ }
+ }
+
+ .setting-item-name {
+ font-size: 30rpx;
+ color: #333;
+ flex: 1;
+ }
+ }
+ }
+
+ .setting-buttons {
+ display: flex;
+ justify-content: space-between;
+ gap: 20rpx;
+
+ .setting-btn {
+ flex: 1;
+ text-align: center;
+ padding: 24rpx;
+ border-radius: 12rpx;
+ font-size: 30rpx;
+ font-weight: 500;
+
+ &-cancel {
+ background: #f5f5f5;
+ color: #666;
+ }
+
+ &-confirm {
+ background: linear-gradient(to right, #e4cdb4, #c69c6d);
+ color: #fff;
+ }
+ }
+ }
+ }
}
\ No newline at end of file
diff --git a/packages/supply/detail.vue b/packages/supply/detail.vue
index 85e23fd..04875ce 100644
--- a/packages/supply/detail.vue
+++ b/packages/supply/detail.vue
@@ -8,14 +8,41 @@
{{ detail.created_at }}
- {{ detail.type === 1 ? '供应' : '需求' }}
+ {{ detail.type === 1 ? '供应' : detail.type === 2 ? '需求' : detail.type === 3 ? '投融资' : '' }}
{{ detail.contact_count }}人私信 {{ detail.view_count }}浏览
-
- {{ detail.title }}
- {{ detail.content }}
+
+ {{ detail.title }}
+
+
+
+ 资金类型
+ {{ detail.fund_type || '-' }}
+
+
+ 金额
+ {{ formatAmount(detail.amount) }}
+
+
+ 融资阶段
+ {{ detail.fund_stage }}
+
+
+ 期望资金属性
+ {{ detail.expect_fund_attr }}
+
+
+ 行业类型
+ {{ detail.industry_type }}
+
+
+ 主要产品
+ {{ detail.product }}
+
+
+ {{ detail.type === 3 ? (detail.desc || detail.content) : detail.content }}
@@ -31,7 +58,7 @@
-
+
{{ tag }}
@@ -169,6 +196,12 @@
this.fetchDetailData(options.id);
},
methods: {
+ formatAmount(val){
+ if(val==null||val==='') return '-'
+ const num = Number(val)
+ if(isNaN(num)) return String(val)
+ return num.toLocaleString(undefined,{minimumFractionDigits:2, maximumFractionDigits:2})
+ },
fetchDetailData(id) {
this.$u.api.supplyDemandDetail({ id: id }).then(res => {
console.log('详情数据:', res);
@@ -411,6 +444,16 @@
color: #007aff;
}
+ .type-badge.finance {
+ background-color: #e6f0ff;
+ color: #007aff;
+ }
+
+ .type-badge.industry {
+ background-color: #e6f0ff;
+ color: #007aff;
+ }
+
.views {
font-size: 24rpx;
color: #909399;
@@ -424,6 +467,25 @@
border-radius: 20rpx;
}
+/* 投融资信息块 */
+.finance-info {
+ background: #fffaf3;
+ border: 1rpx solid #f5e6cd;
+ border-radius: 14rpx;
+ padding: 20rpx;
+ margin-bottom: 20rpx;
+}
+.finance-row {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: 12rpx 0;
+ border-bottom: 1rpx solid #f5f0e6;
+}
+.finance-row:last-child { border-bottom: none; }
+.finance-row .label { color: #8a6d3b; font-size: 26rpx; }
+.finance-row .value { color: #333; font-weight: 500; font-size: 28rpx; }
+
.title {
font-size: 36rpx;
font-weight: bold;
diff --git a/packages/supply/index.vue b/packages/supply/index.vue
index 3429120..5523f06 100644
--- a/packages/supply/index.vue
+++ b/packages/supply/index.vue
@@ -19,7 +19,7 @@
{{ item.title }}
@@ -76,6 +76,8 @@
name: '供应'
}, {
name: '需求'
+ }, {
+ name: '投融资'
}],
list: [],
page: 1,
@@ -141,6 +143,8 @@
params.type = 1; // 供应
} else if (this.currentTab === 2) {
params.type = 2; // 需求
+ } else if (this.currentTab === 3) {
+ params.type = 3; // 融资
}
// 如果有搜索关键词
@@ -279,6 +283,16 @@
color: #007aff;
}
+ .finance {
+ background-color: #e6f0ff;
+ color: #007aff;
+ }
+
+ .industry {
+ background-color: #e6f0ff;
+ color: #007aff;
+ }
+
.time {
font-size: 24rpx;
color: #999;
diff --git a/packages/supply/my-posts.vue b/packages/supply/my-posts.vue
index e31295f..f186ebf 100644
--- a/packages/supply/my-posts.vue
+++ b/packages/supply/my-posts.vue
@@ -16,7 +16,7 @@
@@ -250,6 +250,16 @@
color: #007aff;
}
+ .finance {
+ background-color: #e6f0ff;
+ color: #007aff;
+ }
+
+ .industry {
+ background-color: #e6f0ff;
+ color: #007aff;
+ }
+
.status-badge {
font-size: 24rpx;
padding: 8rpx 15rpx;
diff --git a/packages/supply/publish.vue b/packages/supply/publish.vue
index 9539f92..0cbfe90 100644
--- a/packages/supply/publish.vue
+++ b/packages/supply/publish.vue
@@ -11,8 +11,12 @@
需求
+
+
+ 投融资
+
-
+
基本信息
@@ -21,21 +25,53 @@
-
-
-
-
-
-
-
-
- {{ tag }}
-
+
+
+
+
+
+ 投资
+ 融资
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ tag }}
+
+
-
- 建议添加相关行业标签, 方便其他校友找到你
+ 建议添加相关行业标签, 方便其他校友找到你
+
@@ -141,9 +177,17 @@
tagInput: '',
header: {}, // 添加header对象
form: {
- type: 'supply', // supply or demand
+ type: 'supply', // supply or demand or finance or industry
title: '',
description: '',
+ // 投融资字段
+ fund_type: '投资',
+ amount: '',
+ fund_stage: '',
+ expect_fund_attr: '',
+ industry_type: '',
+ product: '',
+ finance_desc: '',
tags: [],
contactType: 'wechat', // wechat, phone, email
contactValue: '',
@@ -264,10 +308,10 @@
this.$u.toast('请输入标题');
return;
}
- if (!this.form.description.trim()) {
- this.$u.toast('请输入详细描述');
- return;
- }
+ // if (!this.form.description.trim()) {
+ // this.$u.toast('请输入详细描述');
+ // return;
+ // }
if (!this.form.contactName.trim()) {
this.$u.toast('请输入联系人');
return;
@@ -311,9 +355,9 @@
// 构建请求参数
const params = {
title: this.form.title,
- type: this.form.type === 'supply' ? 1 : 2,
- content: this.form.description,
- tag: this.form.tags.join(','),
+ type: this.form.type === 'supply' ? 1 : this.form.type === 'demand' ? 2 : this.form.type === 'finance' ? 3 : 4,
+ content: this.form.type === 'finance' ? this.form.finance_desc : this.form.description,
+ tag: this.form.type === 'finance' ? '' : this.form.tags.join(','),
wechat: this.form.contactType === 'wechat' ? this.form.contactValue : '',
mobile: this.form.contactType === 'phone' ? this.form.contactValue : '',
email: this.form.contactType === 'email' ? this.form.contactValue : '',
@@ -322,6 +366,17 @@
file_ids: fileIds, // 直接使用数组,不转换为字符串
};
+ // 投融资字段追加
+ if (this.form.type === 'finance') {
+ params.fund_type = this.form.fund_type || ''
+ params.amount = this.form.amount || ''
+ params.fund_stage = this.form.fund_stage || ''
+ params.expect_fund_attr = this.form.expect_fund_attr || ''
+ params.industry_type = this.form.industry_type || ''
+ params.product = this.form.product || ''
+ params.desc = this.form.finance_desc || ''
+ }
+
// 只有选择具体日期时才传expire_time
if (this.form.expiryType === 'specific' && this.form.expiryDate) {
params.expire_time = this.form.expiryDate + ' 23:59:59'; // 设置为当天结束时间
diff --git a/pages.json b/pages.json
index 4be4f04..9f5171b 100644
--- a/pages.json
+++ b/pages.json
@@ -160,7 +160,7 @@
},{
"path": "supply/index",
"style": {
- "navigationBarTitleText": "供需发布"
+ "navigationBarTitleText": "供需对接"
}
},{
"path": "supply/publish",
@@ -192,6 +192,11 @@
"style": {
"navigationBarTitleText": "校友地图"
}
+ },{
+ "path": "hr/index",
+ "style": {
+ "navigationBarTitleText": "人才招聘"
+ }
}]
}],
"preloadRule": {
diff --git a/pages/book/index.vue b/pages/book/index.vue
index cc2b7cb..22f0658 100644
--- a/pages/book/index.vue
+++ b/pages/book/index.vue
@@ -4,32 +4,40 @@
-
-
+
+
-
-
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
@@ -111,6 +119,11 @@
url: '/packages/library/index'
})
break;
+ case 'hr':
+ uni.navigateTo({
+ url: '/packages/hr/index'
+ })
+ break;
}
}
},
@@ -148,26 +161,39 @@
.button-grid {
display: grid;
- grid-template-columns: repeat(2, 1fr);
- gap: 20rpx;
+ grid-template-columns: repeat(2, 368rpx);
+ // grid-column-gap: 20rpx;
+ // grid-row-gap: 20rpx;
width: 100%;
+ justify-content: center;
padding: 0 40rpx;
box-sizing: border-box;
}
.grid-item {
position: relative;
- width: 100%;
- padding-top: 127.8125%;
- /* Creates a 320:409 aspect ratio */
+ width: 368rpx;
+ height: 380rpx;
+ }
+
+ /* 最后一张横向大图 */
+ .grid-item-wide {
+ grid-column: span 2;
+ width: 729rpx;
+ height: 239rpx;
}
.item-bg {
position: absolute;
top: 0;
left: 0;
- width: 100%;
- height: 100%;
+ width: 368rpx;
+ height: 380rpx;
+ }
+
+ .item-bg-wide {
+ width: 729rpx;
+ height: 239rpx;
}
.item-content {
diff --git a/pages/course/index.vue b/pages/course/index.vue
index f2cc29b..f298699 100644
--- a/pages/course/index.vue
+++ b/pages/course/index.vue
@@ -4,11 +4,35 @@
-
-
-
+
+
+ 课程体系
+
+
+
+
+
+
+
+ ‹
+ ›
+
+
+
+
-
+
@@ -115,6 +139,14 @@
return {
showRegister: false,
banner_list: [],
+ bannerImages: [
+ this.base.imgHost('type1.png'),
+ this.base.imgHost('type2.png'),
+ this.base.imgHost('type3.png'),
+ this.base.imgHost('type4.png'),
+ this.base.imgHost('type5.png')
+ ],
+ swiperCurrent: 0,
hasMobile: false,
go_course_id: '',
hasData: true,
@@ -156,6 +188,17 @@
},
methods: {
+ onSwiperChange(e){
+ this.swiperCurrent = e.detail.current || 0
+ },
+ prevSlide(){
+ const total = this.bannerImages.length
+ this.swiperCurrent = (this.swiperCurrent - 1 + total) % total
+ },
+ nextSlide(){
+ const total = this.bannerImages.length
+ this.swiperCurrent = (this.swiperCurrent + 1) % total
+ },
goCourse() {
uni.navigateTo({
url: '/packages/mycourse/index'
@@ -308,6 +351,26 @@
height: 100vh;
}
+.swiper-with-arrows {
+ position: relative;
+}
+.arrow {
+ position: absolute;
+ top: 50%;
+ transform: translateY(-50%);
+ width: 56rpx;
+ height: 56rpx;
+ line-height: 56rpx;
+ text-align: center;
+ border-radius: 56rpx;
+ background: rgba(0,0,0,0.3);
+ color: #fff;
+ z-index: 10;
+ font-size: 40rpx;
+}
+.arrow-left { left: 10rpx; }
+.arrow-right { right: 10rpx; }
+
.list {
@@ -328,6 +391,15 @@
width: 95%;
display: block;
margin-bottom: 30rpx;
+ &-text{
+ margin-bottom: 40rpx;
+ &-title{
+ color:#97714c;
+ margin:30rpx;
+ margin-top:0;
+ font-size: 32rpx;
+ }
+ }
}
&-img {
width: calc(100% - 60rpx);
diff --git a/pages/index/index.vue b/pages/index/index.vue
index 463d470..d493853 100644
--- a/pages/index/index.vue
+++ b/pages/index/index.vue
@@ -1,546 +1,578 @@
-
-
-
-
-
-
-
-
-
-
-
- 点击“”添加到我的小程序,下次访问更快捷
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 资讯
- 查看全部
-
-
-
-
-
-
-
-
-
- {{ item.title }}
-
-
- {{ item.newstime }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file