You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

349 lines
7.8 KiB

<template>
<view class="main">
<view class="topCard flex jcsb">
<view class="leftBox flex">
<view class="txt">
<view class="txtItem">置顶权益</view>
<view style="color: #999999;font-size: 28upx;">每次可以选择一条职位</view>
<view style="color: #999999;font-size: 28upx;">生效后会自动扣除天数</view>
</view>
</view>
<view class="rightBox">
<image :src="imageRootNew+'Topping.png'"></image>
</view>
</view>
<view>
<view v-if="true" class="selectBox">
<view class="title">
选择职位
</view>
<view class="selectItem" v-for="(item ,index) in jobList" :class="item.recruit_id == selectType ? 'sType' : 'dType'"
:key="index" @click="clickItem(item.recruit_id)">
{{ item.recruit_title }}
</view>
<view style="margin-bottom: 40upx;align-items: center;" class="flex">
<view style="margin-right: 20upx;font-size: 28upx;">使用天数:</view>
<input class="inputNum" type="number" v-model="useDay" placeholder-style="color: #CACACA" placeholder="请输入使用天数" />
</view>
<view style="font-size: 32upx;" class="selectBtn" @click="useEquity">确认使用</view>
</view>
<view v-else style="text-align: center;font-size: 30upx;margin: 60upx; 0;color: #999;">暂无职位</view>
</view>
<view class="buyBox">
<view class="flex jcsb mb40">
<view class="title">购买天数</view>
<view style="color: #BBBBBB;font-size: 30upx;">剩余: {{dayNum}}{{diyUnit}}</view>
</view>
<view style="margin-bottom: 40upx;align-items: center;" class="flex">
<view style="margin-right: 20upx;font-size: 28upx;">自定义天数:</view>
<input style="text-align: left;padding-left: 18upx;width: 72%;" class="inputNum" type="number" @input="changeOrderPrice" v-model="diySelect" placeholder-style="color: #CACACA" placeholder="请输入购买天数" />
</view>
<view class="selectDay flex jcsb">
<view class="dayItem" :class="item == selectOption ? 'sType' : 'dType'" v-for="(item) in selectOptLs" :key="item" @click="clickOption(item)">
{{item}}
</view>
</view>
</view>
<view class="submitBtn" @click="buy">
立即支付 ¥{{selectOptPrice}}/{{selectOptTxt}}
</view>
<view style="height: 50upx;"></view>
</view>
</template>
<script>
let _this;
import App from '@/common/js/app.js';
export default {
data() {
return {
jobList: [],
selectType: "",
useDay: '',
selectOption: 1,
selectOptTxt: '一天',
selectOptPrice: '100.00',
selectOptLs: {},
diySelect: '',
diyUnit: '',
diyPrice: '',
dayNum: 0,
rights_id: null,
lock_1: false,
lock_2: false
};
},
onLoad(e){
_this = this;
this.rights_id = e.rights_id;
},
onShow() {
this.diySelect = '';
this.getData();
},
watch: {
useDay(nVal){
clearTimeout(this.lock_1);
this.lock_1 = setTimeout(()=>{
nVal = Math.floor(nVal);
console.log(nVal);
this.useDay = nVal || '';
}, 500)
},
diySelect(nVal){
clearTimeout(this.lock_2);
this.lock_2 = setTimeout(()=>{
nVal = Math.floor(nVal);
console.log(nVal, 1111);
this.diySelect = nVal || '';
}, 500)
},
},
methods: {
clickItem(val){
this.selectType = val
},
clickOption(val){
if(typeof val == 'string'){
this.selectOptTxt = val;
this.selectOption = val;
for(let key in this.selectOptLs){
if(this.selectOptLs[key]==val){
this.selectOptPrice = key * this.diyPrice;
}
}
return;
}
},
getData(){
App._post_form(
`&p=rights&do=getRightsTypeInfo`, { rights_id: this.rights_id },
res => {
// console.log(res);
this.dayNum = res.data.remaining_amount;
this.diyUnit = res.data.amount_unit;
this.diyPrice = res.data.price;
this.jobList = res.data.filter_data.recruit;
this.selectType = this.jobList[0] ? this.jobList[0].recruit_id : '';
this.selectOptLs = res.data.num_data;
for(let key in this.selectOptLs){
this.selectOptPrice = key * res.data.price;
this.selectOption = this.selectOptLs[key];
this.selectOptTxt = this.selectOptLs[key];
return;
}
},
() => {},() => {}
);
},
changeOrderPrice(e){
// console.log(e.detail.value, this.diySelect, +(this.diyPrice));
if(!!e.detail.value){
this.selectOptPrice = (Math.floor(e.detail.value) * +(this.diyPrice)).toFixed(2);
this.selectOptTxt = Math.floor(e.detail.value) + '天';
this.selectOption = '';
}else{
for(let key in this.selectOptLs){
this.selectOptPrice = (key * this.diyPrice).toFixed(2);
this.selectOption = this.selectOptLs[key];
this.selectOptTxt = this.selectOptLs[key];
return;
}
}
},
useEquity(){
let data = {
rights_id: this.rights_id,
position: JSON.stringify([{recruit_id: this.selectType,num:this.useDay}])
}
console.log(data);
App._post_form('&p=rights&do=memberUseRights', data, res => {
console.log(res);
uni.showToast({
title: res.message
})
this.getData();
},(err)=>{},(com)=>{})
},
buy(){
let user = uni.getStorageSync('userinfo');
let num;
for(let key in this.selectOptLs){
if(this.selectOptLs[key]==this.selectOption){
num = key;
}
}
let data = {
rights_id: this.rights_id,
type: 1,
num: num || this.diySelect,
contacts: user.nickname,
contact_phone: user.truemobile
};
console.log(data)
App._post_form('&p=rights&do=createRightsPay', data, res => {
uni.navigateTo({
url: '/pages/mainPages/payment/payment?orderid=' + res.data.orderid + '&plugin=' + res.data.type
})
console.log(res.data)
})
}
}
}
</script>
<style lang="less" scoped>
.main{
padding-top: 40upx;
}
page{
background-color: white;
}
.flex{
display: flex;
}
.jcsb{
justify-content: space-between;
}
.mb40{
margin-bottom: 40upx;
}
.topCard{
width: 94%;
height: 300upx;
// border: 1px solid red;
margin: 0 auto;
border-radius: 20upx;
box-shadow:#C9E4FF 0px 0px 5px;
background-color: white;
.leftBox{
width: 50%;
height: 300upx;
// border: 1px solid red;
align-items: center;
.txt{
width: 100%;
// padding: 0% ;
padding-left: 40upx;
line-height: 55upx;
}
.txtItem{
font-weight: bold;
font-size: 40upx;
font-family: 'PingFangSC-semiBold';
color: #444444;
margin-bottom: 10upx;
}
}
.rightBox{
width: 42%;
height: 300upx;
// border: 1px solid blue;
display: flex;
align-items: center;
image{
width: 240upx;
height: 150upx;
// margin-top: -30upx;
}
}
}
.selectBox{
width: 94%;
margin: 0 auto;
margin-top: 9%;
// border: 1px solid red;
.title{
color: #484848;
font-size: 32upx;
margin-bottom: 40upx;
}
.selectItem{
width: 60%;
height: 80upx;
border-radius: 10upx;
margin-bottom: 40upx;
text-align: center;
line-height: 80upx;
font-size: 26upx;
}
.selectBtn{
width: 60%;
height: 80upx;
line-height: 80upx;
border-radius: 10upx;
color: white;
text-align: center;
background-color: #509DFD;
margin: 0 auto;
}
}
.inputNum{
background-color: #FAFAFA;
font-size: 26upx;
height: 80upx;
text-align: center;
border-radius: 10upx;
width: 80%;
}
.sType{
color: #6DADFD;
background-color: #F2F8FF;
}
.dType{
background-color: #FAFAFA;
color: #CACACA;
}
.buyBox{
width: 94%;
margin: 0 auto;
margin-top: 9%;
// border: 1px solid red;
.title{
color: #484848;
font-size: 32upx;
}
.selectDay{
.dayItem{
width: 22%;
height: 70upx;
border-radius: 10upx;
text-align: center;
line-height: 70upx;
font-size: 30upx;
}
}
}
.submitBtn{
width: 94%;
height: 90upx;
border: 1px solid #65A9FD;
margin: 0 auto;
margin-top: 40upx;
border-radius: 50upx;
text-align: center;
line-height: 90upx;
color: #64A8FD;
font-size: 30upx;
}
</style>