first commit

This commit is contained in:
2024-01-06 10:35:41 +08:00
commit bf3a62d426
61 changed files with 1464 additions and 0 deletions

66
pages/assist/assist.js Normal file
View File

@@ -0,0 +1,66 @@
// pages/assist/assist.js
Page({
/**
* 页面的初始数据
*/
data: {
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})

5
pages/assist/assist.json Normal file
View File

@@ -0,0 +1,5 @@
{
"usingComponents": {},
"navigationBarTextStyle": "white",
"navigationBarTitleText": "帮扶信息"
}

2
pages/assist/assist.wxml Normal file
View File

@@ -0,0 +1,2 @@
<!--pages/assist/assist.wxml-->
<text>pages/assist/assist.wxml</text>

1
pages/assist/assist.wxss Normal file
View File

@@ -0,0 +1 @@
/* pages/assist/assist.wxss */

100
pages/home/home.js Normal file
View File

@@ -0,0 +1,100 @@
// pages/personal/personal.js
import { requestUrl } from '../../utils/config.js';
Page({
/**
* 页面的初始数据
*/
data: {
menuItems: [],
swiperList:[]
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
this.getMenu();
this.getSwiperList();
},
getMenu(){
wx.request({
url: requestUrl + '/api/get-menu', // 更改为你的实际API地址
success: (res) => {
console.log(res.data)
this.setData({ menuItems: res.data.data });
}
});
},
getSwiperList(){
let that = this; // 在回调中使用this所以需要先保存它的引用
wx.request({
url: requestUrl + '/api/get-swiper-list', // 确保requestUrl已定义且正确
method: "GET",
success(res) {
console.log(res.data); // 打印响应内容
// 假设返回的数据结构是{ image_ids: [...] }
if(res.data.code == 0 && res.data.msg == "ok"){
console.log("请求成功")
that.setData({swiperList:res.data.data})
} else {
// 处理错误或空数据的情况
console.log("Received empty or incorrect format data");
}
},
fail(error) {
// 请求失败的处理
console.error("Request failed", error);
}
});
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})

3
pages/home/home.json Normal file
View File

@@ -0,0 +1,3 @@
{
"usingComponents": {}
}

20
pages/home/home.wxml Normal file
View File

@@ -0,0 +1,20 @@
<view class="page-body">
<view>
<!-- 轮播图组件 -->
<swiper indicator-dots="true" autoplay="true" interval="3000" duration="500" indicator-color="rgba(128,128,128,1)" indicator-active-color="rgba(255,255,255,1)" circular="true">
<swiper-item wx:for="{{swiperList}}" wx:key="unique">
<image src="{{item.path}}" class="slide-image" mode="widthFix"></image>
</swiper-item>
</swiper>
</view>
<!-- 四宫格容器 -->
<view class="grid-container">
<view class="card">
<navigator wx:for="{{menuItems}}" wx:key="id" url="{{item.url}}" class="grid-item">
<image src="data:image/png;base64,{{item.base64EncodedImage}}"></image>
<text>{{item.menu_name}}</text>
</navigator>
</view>
</view>
</view>

43
pages/home/home.wxss Normal file
View File

@@ -0,0 +1,43 @@
.page-body {
display: flex;
flex-direction: column;
}
.slide-image {
width: 100%;
height: 100%;
}
/* 四宫格布局样式 */
.grid-container {
display: flex;
justify-content: center;
}
.card {
width: 96%; /* 根据实际情况调整 */
height: 290rpx;
border-radius: 30rpx; /* 圆角大小 */
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2); /* 阴影效果,根据需要调整 */
display: flex;
flex-wrap: wrap;
justify-content: space-around; /* 子项在主轴线上的对齐方式 */
margin: 20px 0; /* 卡片外边距 */
}
.grid-item {
width: 48%; /* 每个项目占据一行的48%,两列布局 */
text-align: center; /* 文本居中 */
margin-bottom: 20px; /* 底部外边距 */
margin-top: 20rpx;
}
.grid-item image {
width: 40rpx; /* 图像大小,根据需要调整 */
height: 40rpx;
margin-bottom: 5rpx; /* 图像与文本之间的间距,根据需要调整 */
}
.grid-item text {
display: block; /* 让文本独占一行 */
}

111
pages/login/login.js Normal file
View File

@@ -0,0 +1,111 @@
import { requestUrl } from '../../utils/config.js';
function showTost(title){
wx.showToast({
title: title,
icon: "none",
duration: 2000
});
}
Page({
/**
* 页面的初始数据
*/
data: {
phoneNumber: '', // 手机号
password: '' // 密码
},
handlePhoneInput(event) {
this.setData({ phoneNumber: event.detail.value });
},
handlePasswordInput(event) {
this.setData({ password: event.detail.value });
},
handleLogin() {
wx.request({
url: requestUrl + '/user/login', // 你的接口地址
method: 'POST',
data: {
username: this.data.phoneNumber,
password: this.data.password
},
header: {
'Content-Type': 'application/json'
},
success(res) {
if (res.data.code == 0 && res.data.msg == "ok"){
console.log("登录成功",res.data.code)
showTost("登录成功")
// wx.redirectTo({
// url: 'pages/home/home',
// })
wx.switchTab({
url: 'pages/home/home'
})
} else {
showTost(res.data.msg)
console.log("登录失败",res.data)
}
},
fail(error) {
console.log('登录失败', error);
}
});
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})

1
pages/login/login.json Normal file
View File

@@ -0,0 +1 @@
{}

48
pages/login/login.wxml Normal file
View File

@@ -0,0 +1,48 @@
<view class="login">
<!-- 登录卡片容器 -->
<view class="login-card">
<view class="login-text">登录</view>
<!-- 手机号输入区 -->
<view class="phone">
<image src="/assets/images/icon/Phone.svg" class="phone-icon"></image>
<input bindinput ="handlePhoneInput" placeholder="请输入手机号" />
</view>
<!-- 密码输入区 -->
<view class="password">
<image src="/assets/images/icon/password.svg" class="password-icon"></image>
<input type="password" bindinput="handlePasswordInput" placeholder="请输入密码" />
<image src="/assets/images/icon/eye.svg" class="eye-icon"></image>
</view>
<!-- 忘记密码链接 -->
<view class="forget-password">
<navigator>忘记密码?</navigator>
</view>
<!-- 登录按钮 -->
<view class="login-btn">
<button class="btn-dl" bind:tap="handleLogin" type="primary">登录</button>
</view>
<!-- 协议区 -->
<view class="agreement-area">
<checkbox class="agreement"></checkbox>
<view class="agreement-text">同意小程序的《使用协议》</view>
</view>
</view>
<!-- 登录提示框 -->
<view class="prompt-box">
<view class="line"></view>
<view class="lText">您还可以使用以下方式登录</view>
<view class="line"></view>
</view>
<!-- 其他登录方式 -->
<view class="other-login">
<image src="/assets/images/icon/weixin.svg"></image>
</view>
</view>

167
pages/login/login.wxss Normal file
View File

@@ -0,0 +1,167 @@
/* 最大的父元素 */
.login{
display: block;
position:absolute;
height: 100%;
width: 100%;
background:#778899;
/* 换图片 */
}
/* 白色区域 */
.login .login-card{
position: relative;
margin-top: 150rpx;
left: 100rpx;
width: 545rpx;
height: 750rpx;
background: #FFFFFF;
border-radius: 50rpx;
}
/* 白色区域内的登录文本 */
.login .login-card .login-text{
margin-top: 50rpx;
position: absolute;
margin-left:80rpx;
width: 150rpx;
height: 100rpx;
font-size: 60rpx;
font-family: Helvetica;
color: #000000;
line-height: 100rpx;
letter-spacing: 2rpx;
}
/* 手机图片+输入框+下划线的父容器view */
.login .login-card .phone{
margin-top: 200rpx;
margin-left: 35rpx;
position: absolute;
display: flex;
width:450rpx ;
height: 80rpx ;
border-bottom: 3rpx solid rgb(58, 57, 57);
}
/* 手机图标 */
.login .login-card .phone .phone-icon{
margin-top: 5rpx;
margin-left: 30rpx;
width: 55rpx;
height: 55rpx;
}
/* 手机号输入框 */
.login .login-card .phone input{
width: 200rpx;
font-size: 25rpx ;
margin-top: 15rpx;
margin-left: 30rpx;
}
/* 密码图标+输入框+小眼睛图标+下划线父容器view */
.login .login-card .password{
margin-top: 400rpx;
margin-left: 35rpx;
position: absolute;
display: flex;
width:450rpx ;
height: 80rpx ;
border-bottom: 3rpx solid rgb(58, 57, 57);
}
/* 密码图标 */
.login .login-card .password .password-icon{
margin-top: 5rpx;
margin-left: 30rpx;
width: 55rpx;
height: 55rpx;
}
/* 眼睛 图标*/
.login .login-card .password .eye-icon{
margin-top: 5rpx;
margin-left: 65rpx;
width: 55rpx;
height: 55rpx;
}
/* 密码输入框 */
.login .login-card .password input{
width: 200rpx;
font-size: 25rpx ;
margin-top: 15rpx;
margin-left: 30rpx;
}
/* 注册+忘记密码父容器 */
.login .login-card .forget-password{
font-size: 25rpx;
margin-left: 85rpx;
width: 370rpx;
margin-top: 540rpx;
position: absolute;
display: flex;
justify-content: space-between;
}
/* 登录按钮容器view */
.login .login-card .login-btn{
width: 350rpx;
height: 50rpx;
position: absolute;
margin-top: 600rpx;
margin-left: 85rpx;
}
/* 登录按钮 */
.login .login-card .login-btn button{
padding: 0rpx;
line-height: 50rpx;
font-size: 25rpx;
width: 100%;
height: 100%;
border-radius: 30rpx;
}
/* 复选框+协议文字容器view */
.login .login-card .agreement-area{
margin-left: 10rpx;
margin-top: 680rpx;
width: 400rpx;
display: flex;
position: absolute;
}
/* 复选框 */
.login .login-card .agreement-area .agreement{
margin-left: 85rpx;
/* 修改复选框的大小 */
transform:scale(.6);
}
/* 协议文本 */
.login .login-card .agreement-area .agreement-text{
margin-left: 10rpx;
margin-top: 10rpx;
color: #000000;
font-size:20rpx;
}
/* 提示文本 */
.prompt-box{
padding-left: 100rpx;
display: flex;
position: relative;
width: 100%;
height: 60rpx;
padding-top: 50rpx;
}
.prompt-box .line{
margin-left: 5rpx;
margin-top: 18rpx;
width: 120rpx;
height: 3rpx;
background-color:#FFFFFF;
}
.prompt-box .lText{
color: #FFFFFF;
font-size: 25rpx;
}
.other-login {
display: flex; /* 启用flex布局 */
justify-content: center; /* 水平居中 */
align-items: center; /* 垂直居中 */
}
.other-login image{
width: 80rpx;
height: 80rpx;
}

View File

@@ -0,0 +1,66 @@
// pages/messageEdit/messageEdit.js
Page({
/**
* 页面的初始数据
*/
data: {
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})

View File

@@ -0,0 +1,5 @@
{
"usingComponents": {},
"navigationBarTextStyle": "white",
"navigationBarTitleText": "问答"
}

View File

@@ -0,0 +1,16 @@
<view class="leave-message-page">
<!-- 留言标题输入区域 -->
<view class="input-group">
<text class="label">留言标题</text>
<input class="input" type="text" placeholder="请输入留言标题" maxlength="30"/>
</view>
<!-- 留言内容输入区域 -->
<view class="input-group">
<text class="label">留言内容</text>
<textarea class="textarea" placeholder="请输入留言内容最多500字" maxlength="500"></textarea>
</view>
<!-- 提交按钮 -->
<button class="submit-btn" bindtap="onSubmitMessage">提交留言</button>
</view>

View File

@@ -0,0 +1,40 @@
.leave-message-page {
padding: 20px;
background-color: #f0f0f0; /* 页面背景色 */
}
.input-group {
margin-bottom: 20px; /* 间距 */
background-color: white; /* 输入区域背景色 */
padding: 10px;
border-radius: 10px; /* 圆角 */
}
.label {
font-size: 16px;
color: #333;
margin-bottom: 5px;
}
.input,
.textarea {
width: 100%;
padding: 10px;
border: 1px solid #ddd; /* 边框 */
border-radius: 5px; /* 圆角 */
}
.textarea {
height: 150px; /* 文本区域高度 */
}
.submit-btn {
width: calc(100% - 40px); /* 减去padding */
margin: 0 auto; /* 水平居中 */
padding: 10px;
background-color: #1aad19; /* 微信绿 */
color: white;
border-radius: 5px; /* 圆角 */
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); /* 轻微阴影 */
font-size: 18px; /* 字号 */
}

View File

@@ -0,0 +1,66 @@
// pages/personal/personal.js
Page({
/**
* 页面的初始数据
*/
data: {
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})

View File

@@ -0,0 +1,3 @@
{
"usingComponents": {}
}

View File

@@ -0,0 +1,2 @@
<!--pages/personal/personal.wxml-->
<text>pages/personal/personal.wxml</text>

View File

@@ -0,0 +1 @@
/* pages/personal/personal.wxss */

86
pages/policy/policy.js Normal file
View File

@@ -0,0 +1,86 @@
// pages/policy/policy.js
Page({
/**
* 页面的初始数据
*/
data: {
policies: [
{ title: "政策标题1", date: "2024-01-01" },
{ title: "政策标题2", date: "2023-01-02" },
{ title: "政策标题3", date: "2022-01-02" },
{ title: "政策标题4", date: "2023-01-02" },
{ title: "政策标题5", date: "2022-01-02" },
{ title: "政策标题6", date: "2023-01-02" },
{ title: "政策标题7", date: "2021-01-02" },
{ title: "政策标题8", date: "2021-01-02" },
{ title: "政策标题9", date: "2024-02-02" },
{ title: "政策标题10", date: "2024-03-02" },
{ title: "政策标题11", date: "2024-04-02" },
{ title: "政策标题12", date: "2024-01-02" },
{ title: "政策标题13", date: "2024-01-02" },
{ title: "政策标题14", date: "2024-01-02" },
{ title: "政策标题15", date: "2024-01-02" },
{ title: "政策标题16", date: "2024-01-02" },
{ title: "政策标题17", date: "2024-01-02" },
// 更多政策数据...
]
// 更多数据...
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})

5
pages/policy/policy.json Normal file
View File

@@ -0,0 +1,5 @@
{
"usingComponents": {},
"navigationBarTextStyle": "white",
"navigationBarTitleText": "政策查询"
}

21
pages/policy/policy.wxml Normal file
View File

@@ -0,0 +1,21 @@
<view class="policy-page">
<!-- 搜索框 -->
<view class="search-bar">
<input type="text" placeholder="请输入关键字搜索" confirm-type="search" />
</view>
<!-- 政策列表 -->
<view class="policy-list">
<!-- 循环遍历政策数据 -->
<block wx:for="{{policies}}" wx:key="unique">
<!-- 每项政策使用圆角矩形卡片展示 -->
<view class="policy-card">
<view class="policy-item">
<view class="title">{{item.title}}
</view>
<view class="date">发布时间:{{item.date}}</view>
</view>
</view>
</block>
</view>
</view>

36
pages/policy/policy.wxss Normal file
View File

@@ -0,0 +1,36 @@
.policy-page {
display: flex;
flex-direction: column;
}
.search-bar input {
width: 90%;
padding: 10px;
border: 1px solid #ccc; /* 轻微边框 */
border-radius: 5px; /* 圆角 */
margin:0 auto; /* 上下保持0左右自动实现水平居中 */
}
.policy-list .policy-item {
padding: 10px;
}
.policy-item .title {
font-size: 18px;
color: #333;
}
.policy-item .date {
font-size: 14px; /* 日期字体大小 */
color: #666; /* 日期颜色 */
margin-top: 5px;
}
.policy-card {
background-color: white; /* 卡片背景色 */
border-radius: 10px; /* 圆角 */
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); /* 阴影效果 */
margin: 10px; /* 外边距,根据需要调整 */
padding: 15px; /* 内边距,根据需要调整 */
}

104
pages/qa/qa.js Normal file
View File

@@ -0,0 +1,104 @@
// pages/messageEdit/messageEdit.js
Page({
/**
* 页面的初始数据
*/
data: {
messages: [
{
id: 1, // unique identifier for each message
title: "留言标题1",
date: "2024-01-01"
},
{
id: 1, // unique identifier for each message
title: "留言标题1",
date: "2024-01-01"
},
{
id: 1, // unique identifier for each message
title: "留言标题1",
date: "2024-01-01"
},
{
id: 1, // unique identifier for each message
title: "留言标题1",
date: "2024-01-01"
},
{
id: 1, // unique identifier for each message
title: "留言标题1",
date: "2024-01-01"
},
{
id: 1, // unique identifier for each message
title: "留言标题1",
date: "2024-01-01"
},
// 更多留言...
]
},
goToMessageEdit: function () {
wx.navigateTo({
url: '/pages/messageEdit/messageEdit'
});
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})

5
pages/qa/qa.json Normal file
View File

@@ -0,0 +1,5 @@
{
"usingComponents": {},
"navigationBarTextStyle": "white",
"navigationBarTitleText": "问答"
}

14
pages/qa/qa.wxml Normal file
View File

@@ -0,0 +1,14 @@
<view class="messages-page">
<!-- 留言列表 -->
<view class="message-list">
<block wx:for="{{messages}}" wx:key="unique">
<navigator url="/pages/messageDetail/messageDetail?id={{item.id}}" class="message-card">
<view class="message-title">{{item.title}}</view>
<view class="message-date">{{item.date}}</view>
</navigator>
</block>
</view>
<button class="leave-message-btn" bindtap="goToMessageEdit">我要留言</button>
</view>

38
pages/qa/qa.wxss Normal file
View File

@@ -0,0 +1,38 @@
.messages-page {
position: relative; /* 为子元素绝对定位提供参考 */
padding: 20rpx;
padding-bottom: 100rpx; /* 留出足够的空间给底部的按钮 */
}
.message-list .message-card {
background-color: white;
border-radius: 10px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
margin: 10px 0;
padding: 20px;
}
.message-title {
font-size: 18px;
font-weight: bold;
margin-bottom: 5px;
}
.message-date {
font-size: 14px;
color: #666;
}
.leave-message-btn {
position: fixed; /* 固定位置 */
bottom: 20px; /* 距离底部20px */
left: 50%; /* 水平居中 */
transform: translateX(-50%); /* 与left配合使其完全居中 */
width: 90%;
padding: 10px;
border-radius: 20px; /* 增加圆角 */
font-size: 16px;
color: black; /* 字体颜色为红色 */
background-color: white; /* 按钮背景色,可以根据需要调整 */
border: 1px solid #ccc; /* 轻微边框,可以根据需要调整 */
}

78
pages/recruit/recruit.js Normal file
View File

@@ -0,0 +1,78 @@
// pages/recruit/recruit.js
Page({
/**
* 页面的初始数据
*/
data: {
jobs: [
{
title: "软件工程师",
salary: "10k-15k",
date: "2024-01-01",
detail: "技术栈JAVA、Golang"
},
{
title: "产品经理",
salary: "12k-20k",
date: "2024-01-02",
detail: "产品经理"
},
]
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})

View File

@@ -0,0 +1,5 @@
{
"usingComponents": {},
"navigationBarTextStyle": "white",
"navigationBarTitleText": "招聘"
}

View File

@@ -0,0 +1,18 @@
<view class="jobs-page">
<!-- 招聘列表 -->
<view class="job-list">
<!-- 循环遍历招聘数据 -->
<block wx:for="{{jobs}}" wx:key="unique">
<view class="job-card">
<view class="job-header">
<text class="job-title">{{item.title}}</text>
<text class="job-salary">{{item.salary}}</text>
</view>
<view class="job-info">
<text class="job-date">发布日期:{{item.date}}</text>
<text class="job-detail">概述:{{item.detail}}</text>
</view>
</view>
</block>
</view>
</view>

View File

@@ -0,0 +1,39 @@
.jobs-page {
padding: 20rpx;
}
.job-list .job-card {
background-color: white;
border-radius: 10px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
margin: 10px 0;
padding: 20px;
}
.job-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 10px;
}
.job-title {
font-size: 18px;
font-weight: bold;
}
.job-salary {
font-size: 16px;
color: #ff5722;
}
.job-info .job-date {
font-size: 14px;
color: #999;
}
.job-info .job-detail {
font-size: 14px;
color: #666;
margin-top: 5px;
}