提交 6f3aa683 authored 作者: 王鹏飞's avatar 王鹏飞

update

上级 9c6a9fcd
...@@ -287,3 +287,13 @@ export function readMessage(id) { ...@@ -287,3 +287,13 @@ export function readMessage(id) {
export function getPopular() { export function getPopular() {
return httpRequest.get('/api/alumni/v1/organization/recommend') return httpRequest.get('/api/alumni/v1/organization/recommend')
} }
// 提交推荐信息
export function submitRecommend(data) {
return httpRequest.post('/api/zws/v1/enrollment/applications', data)
}
// 推荐记录
export function getMyRecommendList() {
return httpRequest.get('/api/zws/v1/enrollment/applications/get-recommend-records')
}
差异被折叠。
...@@ -254,6 +254,20 @@ const routes = [ ...@@ -254,6 +254,20 @@ const routes = [
path: '/vote/apply', path: '/vote/apply',
name: 'voteApply', name: 'voteApply',
component: () => import('@/views/vote/Apply.vue') component: () => import('@/views/vote/Apply.vue')
},
// 推荐学生
{
path: '/recommend',
component: () => import('@/views/recommend/Recommend.vue')
},
// 我的推荐
{
path: '/my/recommend',
component: () => import('@/views/recommend/MyRecommend.vue')
},
{
path: '/my/recommend/:id',
component: () => import('@/views/recommend/MyRecommendDetail.vue')
} }
] ]
......
<template> <template>
<div> <div>
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/www/h5/images/banner_0530_content.jpg" alt=""> <img src="/img/zjh.jpg" />
</div> </div>
</template> </template>
<script> <script>
export default { export default {}
}
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
img{ img {
display: block; display: block;
width: 100%; width: 100%;
} }
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<div class="banner"> <div class="banner">
<van-swipe :autoplay="3000" indicator-color="white"> <van-swipe :autoplay="3000" indicator-color="white">
<van-swipe-item> <van-swipe-item>
<router-link to="/coins"><img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/www/h5/images/banner_new_0530.jpg" /></router-link> <router-link to="/coins"><img src="img/home_banner_001.jpg" /></router-link>
</van-swipe-item> </van-swipe-item>
<van-swipe-item> <van-swipe-item>
<router-link to="/vote/index"><img src="img/banner_vote_2_2.jpg" /></router-link> <router-link to="/vote/index"><img src="img/banner_vote_2_2.jpg" /></router-link>
......
<template> <template>
<div class="main my"> <div class="my">
<div class="my-header"> <div class="my-header">
<div class="tools"> <div class="tools">
<ul class="tools-list"> <ul class="tools-list">
...@@ -18,29 +18,43 @@ ...@@ -18,29 +18,43 @@
<div class="user-content"> <div class="user-content">
<div class="user-content__name">{{ user.personal_name }}</div> <div class="user-content__name">{{ user.personal_name }}</div>
<div class="user-content__info">{{ user.class_name }}</div> <div class="user-content__info">{{ user.class_name }}</div>
<div class="user-content__info">紫荆币:0</div> <div class="user-content__info">紫荆花:0 <span @click="show = true">提现</span></div>
</div> </div>
<!-- <van-icon name="arrow" class="arrow-right"/> --> <!-- <van-icon name="arrow" class="arrow-right"/> -->
<!-- <div class="user-aside"> </div>
<div class="user-aside">
<dl @click="$router.push({ name: 'myGroup' })"> <dl @click="$router.push({ name: 'myGroup' })">
<dt>{{ detail.org_stu_total }}</dt> <dt>{{ detail.org_stu_total }}</dt>
<dd>组织</dd> <dd>我的组织</dd>
</dl> </dl>
<dl @click="$router.push({ name: 'myActivity' })"> <dl @click="$router.push({ name: 'myActivity' })">
<dt>{{ detail.act_stu_total }}</dt> <dt>{{ detail.act_stu_total }}</dt>
<dd>活动</dd> <dd>我的活动</dd>
</dl>
<dl @click="$router.push({ name: 'myApprove' })">
<dt>
{{ detail.act_check_total }}
<span class="badge" v-if="hasBadge"></span>
</dt>
<dd>审批</dd>
</dl> </dl>
</div>--> <!-- <dl @click="$router.push({ name: 'myApprove' })">
<dt>
{{ detail.act_check_total }}
<span class="badge" v-if="hasBadge"></span>
</dt>
<dd>审批</dd>
</dl> -->
</div> </div>
</div> </div>
<van-tabs v-model="tabActive" class="my-tab" :ellipsis="false"> <ul class="my-cell-list">
<li @click="handleTips">
<img src="@/assets/img/my_icon_01.png" /><span>我要缴费</span><van-icon name="arrow" />
</li>
<li @click="handleTips">
<img src="@/assets/img/my_icon_02.png" /><span>我要捐赠</span><van-icon name="arrow" />
</li>
<li @click="$router.push('/recommend')">
<img src="@/assets/img/my_icon_03.png" /><span>推荐学生</span><van-icon name="arrow" />
</li>
<li @click="handleTips">
<img src="@/assets/img/my_icon_04.png" /><span>我的建议</span><van-icon name="arrow" />
</li>
</ul>
<!-- <van-tabs v-model="tabActive" class="my-tab" :ellipsis="false">
<van-tab name="0"> <van-tab name="0">
<template #title> <template #title>
<div class="name">我的组织</div> <div class="name">我的组织</div>
...@@ -55,32 +69,48 @@ ...@@ -55,32 +69,48 @@
</template> </template>
<my-activity-list></my-activity-list> <my-activity-list></my-activity-list>
</van-tab> </van-tab>
<!-- <van-tab title="我的审批" name="2"> <van-tab title="我的审批" name="2">
<template #title <template #title
>我的审批 >我的审批
<span class="badge" style="top:-10px;" v-if="hasBadge"></span> <span class="badge" style="top:-10px;" v-if="hasBadge"></span>
</template> </template>
<my-approve-list></my-approve-list> <my-approve-list></my-approve-list>
</van-tab>--> </van-tab>
</van-tabs> </van-tabs> -->
<tab-bar></tab-bar> <tab-bar></tab-bar>
<van-dialog v-model="show" :showConfirmButton="false" class="dialog">
<div class="dialog-hd">
<h4 class="dialog-hd__title">提示</h4>
<van-icon name="cross" @click="show = false" />
</div>
<div class="dialog-bd">
<p>温馨提示:</p>
<p>账户余额达到<span>1000</span>朵紫荆花可以申请提现</p>
</div>
<div class="dialog-ft">
<van-button type="primary" @click="show = false">确定</van-button>
<van-button type="default" @click="show = false">取消</van-button>
</div>
</van-dialog>
</div> </div>
</template> </template>
<script> <script>
// components // components
import TabBar from '@/components/TabBar' import TabBar from '@/components/TabBar'
import MyGroupList from '@/components/MyGroupList' // import MyGroupList from '@/components/MyGroupList'
import MyActivityList from '@/components/MyActivityList' // import MyActivityList from '@/components/MyActivityList'
import * as api from '@/api' import * as api from '@/api'
export default { export default {
name: 'MyIndex', name: 'MyIndex',
components: { TabBar, MyGroupList, MyActivityList }, // components: { TabBar, MyGroupList, MyActivityList },
components: { TabBar },
data() { data() {
return { return {
tabActive: '0', tabActive: '0',
detail: {} detail: {},
show: false
} }
}, },
watch: { watch: {
...@@ -109,6 +139,9 @@ export default { ...@@ -109,6 +139,9 @@ export default {
api.getMy().then(response => { api.getMy().then(response => {
this.detail = response this.detail = response
}) })
},
handleTips() {
this.$toast('暂未开放,敬请期待')
} }
}, },
beforeMount() { beforeMount() {
...@@ -119,8 +152,6 @@ export default { ...@@ -119,8 +152,6 @@ export default {
<style lang="scss"> <style lang="scss">
.my-header { .my-header {
margin-left: -15px;
margin-right: -15px;
padding: 0 20px; padding: 0 20px;
height: 190px; height: 190px;
background: url('~@/assets/img/my_bg.png') no-repeat center top; background: url('~@/assets/img/my_bg.png') no-repeat center top;
...@@ -138,7 +169,7 @@ export default { ...@@ -138,7 +169,7 @@ export default {
.user { .user {
display: flex; display: flex;
align-items: center; align-items: center;
margin-bottom: 30px; margin-bottom: 15px;
} }
.user-avatar { .user-avatar {
width: 60px; width: 60px;
...@@ -168,19 +199,24 @@ export default { ...@@ -168,19 +199,24 @@ export default {
.user-content__info { .user-content__info {
margin-top: 6px; margin-top: 6px;
font-size: 12px; font-size: 12px;
span {
margin-left: 30px;
font-weight: bold;
}
} }
.user-aside { .user-aside {
display: flex; display: flex;
dl { dl {
flex: 1;
text-align: center; text-align: center;
margin-left: 10px; margin-left: 10px;
} }
dt { dt {
font-size: 17px; font-size: 17px;
color: #222; color: #fff;
} }
dd { dd {
color: #999; color: #fff;
} }
.badge { .badge {
top: -15px; top: -15px;
...@@ -230,8 +266,78 @@ export default { ...@@ -230,8 +266,78 @@ export default {
background: rgba(255, 103, 103, 1); background: rgba(255, 103, 103, 1);
border-radius: 50%; border-radius: 50%;
} }
.arrow-right{ .arrow-right {
font-size: .24rem; font-size: 0.24rem;
color: #fff; color: #fff;
} }
.my-cell-list {
padding: 20px 0;
li {
position: relative;
display: flex;
align-items: center;
padding: 16px 15px 16px 25px;
color: #555;
&::after {
position: absolute;
box-sizing: border-box;
content: ' ';
pointer-events: none;
right: 0;
bottom: 0;
left: 50px;
border-bottom: 1px solid #ededed;
transform: scaleY(0.5);
}
}
img {
width: 15px;
margin-right: 10px;
}
span {
flex: 1;
}
}
.dialog {
border-radius: 6px;
}
.dialog-hd {
padding: 12px 20px;
display: flex;
align-items: center;
color: #fff;
background-color: #ad0440;
}
.dialog-hd__title {
flex: 1;
font-size: 16px;
font-weight: normal;
}
.dialog-bd {
padding: 20px 40px;
p {
margin: 5px 0;
color: #5c5c5c;
line-height: 1.5;
}
span {
color: #ad0440;
}
}
.dialog-ft {
padding: 16px 0;
display: flex;
align-items: center;
justify-content: center;
border-top: 1px solid #dedede;
.van-button {
height: 30px;
margin: 0 10px;
border-radius: 6px;
}
.van-button--primary {
background-color: #ad0440;
border-color: #ad0440;
}
}
</style> </style>
<template>
<div class="main">
<ul class="recommend-list">
<li v-for="item in list" :key="item.id" @click="$router.push(`/my/recommend/${item.id}`)">
<span class="name">推荐学生:{{ item.user_name }}</span>
<span class="date">{{ dateFormat(item.created_time) }}</span>
<van-icon name="arrow" />
</li>
</ul>
</div>
</template>
<script>
import * as api from '@/api/index'
export default {
data() {
return {
list: []
}
},
methods: {
dateFormat(value) {
return value.split(' ')[0]
},
getMyRecommendList() {
api.getMyRecommendList().then(response => {
this.list = response
})
}
},
beforeMount() {
this.getMyRecommendList()
}
}
</script>
<style lang="scss">
.recommend-list {
padding: 20px 0;
li {
position: relative;
display: flex;
align-items: center;
padding: 16px 0;
color: #000030;
&::after {
position: absolute;
box-sizing: border-box;
content: ' ';
pointer-events: none;
right: 0;
bottom: 0;
left: 0;
border-bottom: 1px solid #ededed;
transform: scaleY(0.5);
}
.name {
flex: 1;
}
.date {
margin-right: 10px;
}
}
}
</style>
\ No newline at end of file
<template>
<div class="main" v-if="detail">
<ul class="field-list">
<li v-for="(item, index) in fields" :key="index">
<span class="label">{{ item.label }}</span>
<span class="content">{{ detail[item.name] }}</span>
</li>
</ul>
</div>
</template>
<script>
import * as api from '@/api/index'
export default {
data() {
return {
list: [],
fields: [
{ name: 'project_name', label: '项目' },
{ name: 'user_name', label: '姓名' },
{ name: 'phone_number', label: '手机号' },
{ name: 'wechat', label: '微信号' },
{ name: 'company', label: '工作单位' },
{ name: 'title', label: '职务' },
{ name: 'comment', label: '推荐理由' },
{ name: 'created_time', label: '提交时间' },
{ name: 'application_status', label: '学员状态' }
]
}
},
computed: {
pid() {
return this.$route.params.id
},
detail() {
const detail = this.list.find(item => item.id === this.pid)
if (!detail) {
return null
}
const projectMap = {
1001: '金融硕士(MSF)',
1006: '应用心理学硕士(MAP)',
1005: '教育学硕士(MED)',
1000: '金融工商管理硕士(FMBA)',
1008: '酒店及旅游业工商管理硕士(HMBA)',
1012: '工商管理硕士(MBA)'
}
detail.project_name = projectMap[detail.project_id]
return detail
}
},
methods: {
dateFormat(value) {
return value.split(' ')[0]
},
getMyRecommendList() {
api.getMyRecommendList().then(response => {
this.list = response
})
}
},
beforeMount() {
this.getMyRecommendList()
}
}
</script>
<style lang="scss" scoped>
.field-list {
padding: 20px 0;
li {
position: relative;
display: flex;
align-items: center;
padding: 16px 0;
color: #000030;
&::after {
position: absolute;
box-sizing: border-box;
content: ' ';
pointer-events: none;
right: 0;
bottom: 0;
left: 0;
border-bottom: 1px solid #ededed;
transform: scaleY(0.5);
}
.label {
width: 100px;
}
.content {
flex: 1;
overflow: hidden;
}
}
}
</style>
\ No newline at end of file
<template>
<div class="main">
<p class="recommend-history"><router-link to="/my/recommend">推荐记录</router-link></p>
<card title="我要推荐">
<v-form
ref="form"
className="recommend"
:hasFieldBorder="true"
:model="formModel"
:fields="fields"
@submit="onSubmit"
>
<input type="button" value="立即推荐" class="submit-button" @click="handleSubmit" />
</v-form>
</card>
</div>
</template>
<script>
import Card from '@/components/Card'
import VForm from '@/components/Form'
import * as api from '@/api/index'
export default {
components: { Card, VForm },
data() {
return {
formModel: {},
fields: [
{
fieldType: 'nativeSelect',
name: 'project_id',
label: '项目',
required: true,
placeholder: '请选择项目',
rules: [{ required: true, message: '请选择项目' }],
values: [
{ name: '1001', text: '金融硕士(MSF)' },
{ name: '1006', text: '应用心理学硕士(MAP)' },
{ name: '1005', text: '教育学硕士(MED)' },
{ name: '1000', text: '金融工商管理硕士(FMBA)' },
{ name: '1008', text: '酒店及旅游业工商管理硕士(HMBA)' },
{ name: '1012', text: '工商管理硕士(MBA)' }
],
valueKey: 'name'
},
{
name: 'name',
label: '姓名',
required: true,
rules: [{ required: true, message: '请输入姓名' }]
},
{
name: 'phone',
label: '手机号',
required: true,
rules: [{ required: true, message: '请输入手机号' }]
},
{
name: 'wechat',
label: '微信号',
required: true,
rules: [{ required: true, message: '请输入微信号' }]
},
{
name: 'company',
label: '工作单位',
required: true,
rules: [{ required: true, message: '请输入工作单位' }]
},
{
name: 'title',
label: '职务',
required: true,
rules: [{ required: true, message: '请输入职务' }]
},
{
type: 'textarea',
name: 'comment',
label: '推荐理由'
}
]
}
},
methods: {
handleSubmit() {
this.$refs.form.submit()
},
onSubmit(data) {
data.channel = '19963'
api.submitRecommend(data).then(() => {
this.$dialog
.alert({
confirmButtonText: '确定',
message: '推荐成功'
})
.then(() => {
this.$router.push('/my/recommend')
})
})
}
}
}
</script>
<style lang="scss" scoped>
.recommend-history {
padding-top: 20px;
text-align: right;
color: #5c5c5c;
}
.recommend {
margin-left: -16px;
margin-right: -16px;
}
.submit-button {
width: 200px;
margin: 40px auto;
}
</style>
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论