191 lines
4.1 KiB
Vue
191 lines
4.1 KiB
Vue
<template>
|
||
<view>
|
||
<view class="news-details">
|
||
<view class="header">
|
||
<view class="title xxl m-b-20">{{ demandDetail.name }}</view>
|
||
<view class="flex row-between">
|
||
<view class="xs lighter">发布时间:{{ demandDetail.create_time }}</view>
|
||
<view class="flex">
|
||
<image class="icon-sm" src="/static/images/icon_see.png"></image>
|
||
<view class="m-l-10 xs muted">{{ demandDetail.reports_count }}人报名</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
|
||
<view class="main">
|
||
<u-parse :html="demandDetail.content "/>
|
||
</view>
|
||
</view>
|
||
|
||
<view class="downloadHeight"></view>
|
||
|
||
<view class="download">
|
||
<button class="bg-primary br60 white btn" size="mini"
|
||
@tap="show = true">立即报名</button>
|
||
</view>
|
||
|
||
|
||
<u-popup v-model="show" mode="bottom">
|
||
<view class="address-edit">
|
||
<view class="form bg-white">
|
||
<view class="tit">立即报名</view>
|
||
<u-field v-model="addressObj.name" label="姓名" placeholder="请填写姓名">
|
||
</u-field>
|
||
<u-field v-model="addressObj.phone" label="电话" placeholder="请填写手机号码">
|
||
</u-field>
|
||
<u-field v-model="addressObj.company" label="公司名称" placeholder="请填写公司名称">
|
||
</u-field>
|
||
<u-field v-model="addressObj.price" label="报价" placeholder="请填写报价">
|
||
</u-field>
|
||
<view>
|
||
<u-field v-model="addressObj.remarks" type="textarea" label="其他" placeholder="请填写备注"
|
||
:field-style="{flex: 1, height: '200rpx'}" />
|
||
</view>
|
||
</view>
|
||
<button class="my-btn bg-primary white br60" @tap="formSubmit()">完成</button>
|
||
</view>
|
||
</u-popup>
|
||
|
||
<loading-view v-if="showLoading"></loading-view>
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
|
||
import { getDemandDetail,demandSubmit } from '@/api/store';
|
||
export default {
|
||
data() {
|
||
return {
|
||
showLoading: true,
|
||
addressObj: {
|
||
name: '',
|
||
phone: '',
|
||
company: '',
|
||
price: '',
|
||
remarks: '',
|
||
},
|
||
demandId:'',
|
||
demandDetail: {},
|
||
show:false,
|
||
};
|
||
},
|
||
onLoad: function(options) {
|
||
this.demandId = parseInt(options.id);
|
||
this.getDemandDetailFun();
|
||
},
|
||
methods: {
|
||
getDemandDetailFun() {
|
||
getDemandDetail({
|
||
id: this.demandId
|
||
}).then(res => {
|
||
if (res.code == 1) {
|
||
this.demandDetail = res.data
|
||
setTimeout(() => {
|
||
this.article_content = res.data.content;
|
||
this.showLoading = false
|
||
}, 200);
|
||
}
|
||
});
|
||
},
|
||
|
||
|
||
async formSubmit() {
|
||
let {
|
||
addressObj: {
|
||
name,
|
||
phone,
|
||
company,
|
||
price,
|
||
remarks,
|
||
},
|
||
demandId,
|
||
} = this;
|
||
if (!name) return this.$toast({
|
||
title: '请填写姓名'
|
||
});
|
||
if (!phone) return this.$toast({
|
||
title: '请填写手机号码'
|
||
});
|
||
if (!company) return this.$toast({
|
||
title: '请填写公司名称'
|
||
});
|
||
if (!price) return this.$toast({
|
||
title: '请填写报价'
|
||
});
|
||
const params = {
|
||
name,
|
||
phone,
|
||
company,
|
||
price,
|
||
remarks,
|
||
demand_id: demandId,
|
||
}
|
||
const {
|
||
data,
|
||
code,
|
||
msg
|
||
} = await demandSubmit(params)
|
||
if(code == 1) {
|
||
this.show = false;
|
||
this.getDemandDetailFun();
|
||
this.$toast({
|
||
title: msg
|
||
})
|
||
}
|
||
},
|
||
}
|
||
};
|
||
</script>
|
||
<style lang="scss">
|
||
page {
|
||
background-color: #fff;
|
||
}
|
||
.news-details .header{
|
||
padding: 20rpx 15px;
|
||
border-bottom: $-solid-border;
|
||
}
|
||
.news-details .main {
|
||
padding: 40rpx 15px;
|
||
}
|
||
|
||
.address-edit {
|
||
padding-top: 10rpx;
|
||
|
||
.my-btn {
|
||
margin: 30rpx 26rpx;
|
||
text-align: center;
|
||
}
|
||
}
|
||
.download {
|
||
position: fixed;
|
||
left:0%;
|
||
bottom:0;
|
||
z-index: 99;
|
||
width: 100%;
|
||
padding:14rpx 0;
|
||
background-color: #fff;
|
||
border-top: 1px solid #ececec;
|
||
box-shadow: 0 0 30rpx rgba(0,0,0,0.1);
|
||
.btn {
|
||
width: 88%;
|
||
margin: 0 auto;
|
||
font-size: 30rpx;
|
||
display: block;
|
||
background: linear-gradient(to right, rgb(255, 96, 52), rgb(238, 10, 36));
|
||
}
|
||
}
|
||
|
||
.downloadHeight {
|
||
height: 120rpx;
|
||
display: block;
|
||
width: 100%;
|
||
}
|
||
|
||
.form .tit {
|
||
text-align: center;
|
||
font-size: 34rpx;
|
||
font-weight: bold;
|
||
padding: 24rpx 0 20rpx 0;
|
||
}
|
||
</style>
|