11
This commit is contained in:
@@ -1,132 +0,0 @@
|
||||
<template>
|
||||
<view>
|
||||
<banklist :options="bankData" :hot="false" @change="change" @filter-method="search"></banklist>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
getList
|
||||
} from '@/api/bank.js'
|
||||
import banklist from '@/components/nyn-city-list/nyn-city-list.vue';
|
||||
const hot = [{
|
||||
id: 'h1',
|
||||
name: '建设银行'
|
||||
}, {
|
||||
id: 'h2',
|
||||
name: '河北省农村信用社联合社'
|
||||
}, {
|
||||
id: 'h3',
|
||||
name: '农业银行'
|
||||
}, {
|
||||
id: 'h4',
|
||||
name: '工商银行'
|
||||
}, {
|
||||
id: 'h5',
|
||||
name: '中国邮政储蓄银行'
|
||||
}, {
|
||||
id: 'h6',
|
||||
name: '中国银行'
|
||||
}, {
|
||||
id: 'h8',
|
||||
name: '交通银行'
|
||||
}, {
|
||||
id: 'h7',
|
||||
name: '河北银行'
|
||||
}, {
|
||||
id: 'h9',
|
||||
name: '招商银行'
|
||||
}, {
|
||||
id: 'h10',
|
||||
name: '光大银行'
|
||||
}, {
|
||||
id: 'h11',
|
||||
name: '浦发银行'
|
||||
}, {
|
||||
id: 'h12',
|
||||
name: '民生银行'
|
||||
}]
|
||||
|
||||
function getFirstLetter(str) {
|
||||
return str[0];
|
||||
}
|
||||
|
||||
function fortmat(data) {
|
||||
const dic = {}
|
||||
const banks = []
|
||||
|
||||
const constKey = (key) => {
|
||||
return dic.hasOwnProperty(key)
|
||||
}
|
||||
|
||||
for (let i = 0; i < data.length; i++) {
|
||||
let item = data[i]
|
||||
let key = getFirstLetter(item.quickQuery)
|
||||
if (!constKey(key)) {
|
||||
dic[key] = {
|
||||
banks: []
|
||||
}
|
||||
banks.push({
|
||||
key,
|
||||
value: dic[key].banks
|
||||
})
|
||||
}
|
||||
dic[key].banks.push(item)
|
||||
}
|
||||
return banks
|
||||
}
|
||||
|
||||
export default {
|
||||
components: {
|
||||
banklist
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
searchKey: '',
|
||||
banks: []
|
||||
}
|
||||
},
|
||||
onShow() {
|
||||
getList().then(resp => {
|
||||
this.banks = resp.data.data
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
change: function(e) {
|
||||
uni.navigateBack({
|
||||
delta: 1
|
||||
})
|
||||
uni.$emit('icCardSetBank', e)
|
||||
},
|
||||
search(value) {
|
||||
this.searchKey = value
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
bankData() {
|
||||
if (this.searchKey) {
|
||||
let searchKey = this.searchKey.toUpperCase()
|
||||
|
||||
let data = this.banks.filter(item => {
|
||||
return item.name.indexOf(searchKey) > -1 || item.quickQuery.toUpperCase().startsWith(searchKey) || item.simpleSpelling
|
||||
.toUpperCase()
|
||||
.startsWith(searchKey)
|
||||
})
|
||||
return fortmat(data)
|
||||
} else {
|
||||
const data = fortmat(this.banks)
|
||||
data.unshift({
|
||||
key: '热',
|
||||
value: hot
|
||||
})
|
||||
|
||||
return data
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
</style>
|
||||
@@ -1,119 +0,0 @@
|
||||
<template>
|
||||
<view style="background-color: #fefefe;">
|
||||
<view class="title">
|
||||
全部
|
||||
</view>
|
||||
<block v-for='(item,index) in city' :key="index">
|
||||
<view class="cityList" @click="chooseCity(item,index)">
|
||||
{{item.label}}
|
||||
<image src="../../static/img/correct.svg" v-if='cityId===item.value' mode=""></image>
|
||||
</view>
|
||||
<view class="border">
|
||||
|
||||
</view>
|
||||
|
||||
</block>
|
||||
<view class="" style="height: 200rpx;background-color: #f6f6f6;"></view>
|
||||
<view class="btn" v-if="cityId" @click="comfirm">
|
||||
<view class="bottombtn">
|
||||
确定
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getcoder} from "@/api/map.js";
|
||||
import {setCity} from '@/api/resume.js'
|
||||
|
||||
import {
|
||||
mapGetters
|
||||
} from 'vuex'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
index:'',
|
||||
id:'',
|
||||
cityId:'',
|
||||
city:[],
|
||||
}
|
||||
},
|
||||
onLoad:function(option){
|
||||
this.index=option.index;
|
||||
if(option.id){
|
||||
this.id = option.id;
|
||||
}
|
||||
this.city = this.area.data[this.index].children;
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['area'])
|
||||
},
|
||||
methods: {
|
||||
comfirm:function(e){
|
||||
if(this.cityId){
|
||||
setCity(this.id,this.cityId).then(res=>{
|
||||
uni.navigateTo({
|
||||
url:'../my/resume/index'
|
||||
})
|
||||
})
|
||||
}
|
||||
},
|
||||
chooseCity:function(item,index){
|
||||
this.cityId = item.value;
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.bottombtn{
|
||||
background-color: #1B66FF;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
border-radius: 10rpx;
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 32rpx;
|
||||
height: 90rpx;
|
||||
line-height: 90rpx;
|
||||
}
|
||||
.btn{
|
||||
background-color: #fefefe;
|
||||
width: 690rpx;
|
||||
padding: 30rpx;
|
||||
padding-bottom: 80rpx;
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
}
|
||||
.border{
|
||||
margin-left: 30rpx;
|
||||
width: 720rpx;
|
||||
border-bottom: 2rpx solid #dddddd;
|
||||
}
|
||||
.cityList{
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 32rpx;
|
||||
color: #333333;
|
||||
padding: 30rpx;
|
||||
/* padding-left: 0;
|
||||
margin-left: 30rpx; */
|
||||
|
||||
background-color: #fefefe;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.cityList image{
|
||||
width: 32rpx;
|
||||
height: 32rpx;
|
||||
/* margin-left: auto; */
|
||||
}
|
||||
.title{
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 28rpx;
|
||||
color: #999999;
|
||||
background-color: #f6f6f6;
|
||||
padding: 30rpx;
|
||||
}
|
||||
page{background-color: #f6f6f6;}
|
||||
</style>
|
||||
@@ -1,26 +0,0 @@
|
||||
<template>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
setStore
|
||||
} from '@/untils/store.js'
|
||||
import {
|
||||
setPlatform
|
||||
} from '@/untils/customized.js'
|
||||
|
||||
export default {
|
||||
onLoad({
|
||||
platformId,
|
||||
platformName
|
||||
}) {
|
||||
setPlatform(this.$store, platformId, platformName)
|
||||
uni.switchTab({
|
||||
url: './index'
|
||||
})
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
</style>
|
||||
@@ -1,738 +0,0 @@
|
||||
<template>
|
||||
<view class="home-body">
|
||||
<uni-nav-bar :shadow="false">
|
||||
<view class="headd">
|
||||
<image src="../../static/img/search.svg" style="width: 32rpx;height: 32rpx;" mode=""></image>
|
||||
<input type="text" confirm-type="搜索" @confirm="goSeach" v-model="keywords" placeholder="请搜索任务名称或公司名称" />
|
||||
</view>
|
||||
</uni-nav-bar>
|
||||
<view class="homeHead">
|
||||
<view class="headSwiper">
|
||||
<swiper :indicator-dots="true" indicator-active-color="#fff" indicator-color="rgba(255,255,255,0.80)" :autoplay="true"
|
||||
:interval="3000" :duration="1000" class="yswiper" :circular="true">
|
||||
<swiper-item v-for="(item,index) in swiperList" :key="index" v-if="item.isShow !== '2'">
|
||||
<view class="swiper-item">
|
||||
<image :src="item.image" mode="" class="swiperImg"></image>
|
||||
</view>
|
||||
</swiper-item>
|
||||
</swiper>
|
||||
</view>
|
||||
<view class="newPolicy" v-if="policyContentList.length!=0">
|
||||
<view class="policyContent">
|
||||
<view class="policyImgIndex">
|
||||
<image src="../../static/img/index/newPolicy.png"></image>
|
||||
</view>
|
||||
<swiper style="width: 100%;height: 100rpx; line-height: 100rpx;margin-left: 164rpx;" :indicator-dots="true" :autoplay="true" :interval="3000" :duration="1000" :vertical="true" :circular="true">
|
||||
<swiper-item v-for="(item,index) in policyContentList" :key="index" @click="goPolicyInfo(item.id)">
|
||||
<view class="swiper-item">
|
||||
<view class="policyText">
|
||||
<view class="textTitle">{{item.articleTitle}}</view>
|
||||
<view class="textDate">{{dateFormat(item.createTime)}}</view>
|
||||
<image src="../../static/img/right.svg" mode="" style="width: 18rpx;height: 32rpx;position:absolute;top: 12rpx;right:0;"></image>
|
||||
</view>
|
||||
</view>
|
||||
</swiper-item>
|
||||
</swiper>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="jobService">
|
||||
<view class="cardTips">就业服务</view>
|
||||
<view class="serviceItem" @click="goures()">
|
||||
<view class="serviceItemContent">
|
||||
<view class="itemIcon">
|
||||
<image src="../../static/img/index/jobRegister.png" mode=""></image>
|
||||
</view>
|
||||
<view class="itemText">
|
||||
<view class="font30">简历登记</view>
|
||||
<view class="font22">求职登记意向</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="serviceItem" @click="go('/pageMy/my/resume/setWskill')">
|
||||
<view class="serviceItemContent">
|
||||
<view class="itemIcon">
|
||||
<image src="../../static/img/index/skill.png" mode=""></image>
|
||||
</view>
|
||||
<view class="itemText">
|
||||
<view class="font30">技能学习</view>
|
||||
<view class="font22">提升个人技能</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="serviceItem" @click="swiperItemSrc()">
|
||||
<view class="serviceItemContent">
|
||||
<view class="itemIcon">
|
||||
<image src="../../static/img/index/union.png" mode=""></image>
|
||||
</view>
|
||||
<view class="itemText">
|
||||
<view class="font30">新业态工会</view>
|
||||
<view class="font22">构建和谐劳动关系</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="serviceItem" @click="goLocation()">
|
||||
<view class="serviceItemContent">
|
||||
<view class="itemIcon">
|
||||
<image src="../../static/img/index/near.png" mode=""></image>
|
||||
</view>
|
||||
<view class="itemText">
|
||||
<view class="font30">就近任务</view>
|
||||
<view class="font22">地图定位找工作</view>
|
||||
</view>
|
||||
<view class="hotFunction">
|
||||
<view class="text">
|
||||
热门功能
|
||||
</view>
|
||||
<image src="../../static/img/index/hotBg.png" class="hot_img" mode=""></image>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="helpSupport">
|
||||
<view class="cardTips">帮助与支持</view>
|
||||
<view class="helpCard">
|
||||
<button type="default" open-type="contact" plain style="width: 266rpx;
|
||||
text-align: center;
|
||||
border: none;
|
||||
border-right: 1px solid #F5F6F7;padding-left: 0;">
|
||||
<view class="helpCardItem" style="border-right: 1px solid #F5F6F7;">
|
||||
<view class="cardItemIcon">
|
||||
<image src="../../static/img/index/consult.png" mode=""></image>
|
||||
</view>
|
||||
<view class="font24" style="margin-top: 22rpx !important;">在线咨询</view>
|
||||
</view>
|
||||
</button>
|
||||
<view class="helpCardItem" style="border-right: 1px solid #F5F6F7;" @click="go('/pageMy/apply/rights')">
|
||||
<view class="cardItemIcon">
|
||||
<image src="../../static/img/index/legal.png" mode=""></image>
|
||||
</view>
|
||||
<view class="font24">法律咨询</view>
|
||||
</view>
|
||||
<view class="helpCardItem" @click="go('/pageMy/help/questions/questions')">
|
||||
<view class="cardItemIcon">
|
||||
<image src="../../static/img/index/question.png" mode=""></image>
|
||||
</view>
|
||||
<view class="font24">常见问题</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="latestMission">
|
||||
<view class="cardTips" style="margin-left: 16px;">最新任务</view>
|
||||
<view class="newPeojectList">
|
||||
<block v-if="companyList.length>0" v-for="(item, index) in companyList" :key="item.id">
|
||||
<view class="baddd"></view>
|
||||
<company-list :companyitem="item"></company-list>
|
||||
</block>
|
||||
<view v-if="companyList.length<=0">
|
||||
<image src="../../static/img/pic_notask.svg" class="nothing" mode=""></image>
|
||||
<view class="nothing_text">暂无最新任务</view>
|
||||
<view class="baddd"></view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
<view class="homeFooter">
|
||||
<view class="atBottom">已经到到底了</view>
|
||||
<image src="../../static/img/index/seeMore.png" mode="" @click="goMore()"></image>
|
||||
</view>
|
||||
<policy-content ref="pContent"></policy-content>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import uniNavBar from '@/components/uni-nav-bar/uni-nav-bar.vue';
|
||||
import uniSearchBar from '@/components/uni-search-bar/uni-search-bar.vue';
|
||||
import companyList from '@/components/companyList/companyList.vue';
|
||||
import policyContent from '../user/policyContent.vue'
|
||||
import {
|
||||
labourUnionInfo,
|
||||
labourUnionDetail
|
||||
} from '@/api/federation.js'
|
||||
import {
|
||||
newMission,
|
||||
recMission
|
||||
} from '@/api/mission.js';
|
||||
import {
|
||||
mapGetters
|
||||
} from 'vuex'
|
||||
import {
|
||||
setStore,
|
||||
getStore
|
||||
} from '@/untils/store.js'
|
||||
import {getSwiperList,getPolicyContent} from '@/api/newIndex.js'
|
||||
import {
|
||||
dateFormat
|
||||
} from "../../untils/format.js";
|
||||
export default {
|
||||
components: {
|
||||
uniNavBar,
|
||||
uniSearchBar,
|
||||
companyList,
|
||||
policyContent
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
companyList: [],
|
||||
recommendList: [],
|
||||
keywords: '',
|
||||
isLogin: false,
|
||||
open: false,
|
||||
swiperList:[],//轮播图图片地址
|
||||
policyContentList:[],//国家新政
|
||||
policyType:1,//国家新政类型
|
||||
swiperType:1,//轮播图类型:冀联:1、衡水3
|
||||
};
|
||||
},
|
||||
onLoad: function() {},
|
||||
onShow: function() {
|
||||
if (!this.$store.state.user.token) {
|
||||
uni.reLaunch({
|
||||
url: '/pages/login/login'
|
||||
})
|
||||
return
|
||||
}
|
||||
this.$store.dispatch('refreshAuthState').then((e) => {
|
||||
var auth = this.$store.state.auth
|
||||
if (!auth.bankCardState) {
|
||||
this.step()
|
||||
}
|
||||
})
|
||||
|
||||
this.download()
|
||||
this.getSwiperList()
|
||||
this.getPolicy()
|
||||
},
|
||||
onReady() {
|
||||
uni.setNavigationBarTitle({
|
||||
title: this.face.homeTitle
|
||||
});
|
||||
|
||||
},
|
||||
/*下拉刷新*/
|
||||
onPullDownRefresh: function() {
|
||||
this.download();
|
||||
setTimeout(function() {
|
||||
uni.stopPullDownRefresh();
|
||||
}, 1000);
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['face', 'authInfo'])
|
||||
},
|
||||
onShareAppMessage(obj) {
|
||||
return {
|
||||
title: '冀联用工',
|
||||
path: '/pages/index/index',
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
getPolicy(){
|
||||
getPolicyContent(this.policyType).then(res=>{
|
||||
this.policyContentList=res.data.data.records
|
||||
})
|
||||
},
|
||||
swiperItemSrc() {
|
||||
/*
|
||||
查看是否加入工会
|
||||
加入:数据记录长度不为0
|
||||
*/
|
||||
labourUnionDetail(this.authInfo.idNumber).then(res => {
|
||||
const data = res.data.data.records;
|
||||
if (data.length == 0) { //未查到数据,代表未加入工会
|
||||
this.go('/pageMy/federation/forMembership/Notice');
|
||||
} else {
|
||||
this.go('/pageMy/federation/vip/information');
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
step() {
|
||||
var that = this
|
||||
that.open = true
|
||||
uni.showModal({
|
||||
id: 'testModal',
|
||||
title: '实名认证',
|
||||
content: `检查到您还未实名认证,实名认证之后才可进行操作哦`,
|
||||
showCancel: false,
|
||||
confirmText: '立即认证',
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
that.goSign(0)
|
||||
} else if (res.cancel) {
|
||||
that.step()
|
||||
}
|
||||
that.open = false
|
||||
}
|
||||
});
|
||||
},
|
||||
// 步骤
|
||||
goSign(active) {
|
||||
uni.navigateTo({
|
||||
url: `/pages/projectInfo/signContract?active=${active}`
|
||||
})
|
||||
},
|
||||
go(url) {
|
||||
uni.navigateTo({
|
||||
url
|
||||
})
|
||||
},
|
||||
download: function() {
|
||||
this.isLogin = this.$store.state.user.token ? true : false;
|
||||
newMission().then(res => {
|
||||
this.companyList = res.data.data;
|
||||
});
|
||||
if (this.$store.state.user.token) {
|
||||
uni.$emit('newsReadChange')
|
||||
this.$store.dispatch("getUnreadNum");
|
||||
recMission().then(res => {
|
||||
this.recommendList = res.data.data;
|
||||
})
|
||||
};
|
||||
},
|
||||
goLocation: function() {
|
||||
if (!this.$store.state.user.token) {
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '您还未登录,点击确认去登录',
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
uni.redirectTo({
|
||||
url: "/pages/login/login"
|
||||
});
|
||||
} else if (res.cancel) {
|
||||
return
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
uni.navigateTo({
|
||||
url: '../mapSeach/mapSeach'
|
||||
});
|
||||
}
|
||||
},
|
||||
goResume: function() {
|
||||
uni.navigateTo({
|
||||
url: '/pageMy/my/resume/addSkill'
|
||||
})
|
||||
},
|
||||
goMore: function() {
|
||||
uni.setStorageSync('active', 2);
|
||||
uni.switchTab({
|
||||
url: '../project/project',
|
||||
});
|
||||
},
|
||||
goures: function() {
|
||||
if (!this.$store.state.user.token) {
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '您还未登录,点击确认去登录',
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
uni.redirectTo({
|
||||
url: "/pages/login/login"
|
||||
});
|
||||
} else if (res.cancel) {
|
||||
return
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
uni.navigateTo({
|
||||
url: '/pageMy/my/resume/index'
|
||||
});
|
||||
}
|
||||
},
|
||||
gouserSet: function() {
|
||||
if (!this.$store.state.user.token) {
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '您还未登录,点击确认去登录',
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
uni.redirectTo({
|
||||
url: "/pages/login/login"
|
||||
});
|
||||
} else if (res.cancel) {
|
||||
return
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
uni.navigateTo({
|
||||
url: '/pageMy/setUserBase/index'
|
||||
});
|
||||
}
|
||||
},
|
||||
goSeach: function() {
|
||||
if (!this.$store.state.user.token) {
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '您还未登录,点击确认去登录',
|
||||
success: function(res) {
|
||||
if (res.confirm) {
|
||||
uni.redirectTo({
|
||||
url: '/pages/login/login'
|
||||
})
|
||||
} else if (res.cancel) {
|
||||
return
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
if (this.keywords) {
|
||||
uni.navigateTo({
|
||||
url: '../seach/seach?keywords=' + this.keywords
|
||||
});
|
||||
this.keywords = ''
|
||||
}
|
||||
}
|
||||
},
|
||||
getSwiperList(){
|
||||
getSwiperList(this.swiperType).then(res=>{
|
||||
const data=res.data.data;
|
||||
this.swiperList=data;
|
||||
})
|
||||
},
|
||||
dateFormat,
|
||||
|
||||
goPolicyInfo(data){
|
||||
if(data){
|
||||
// var val=encodeURIComponent(data)
|
||||
|
||||
uni.navigateTo({
|
||||
url:`/pages/user/policyContent?id=${data}`
|
||||
})
|
||||
|
||||
}
|
||||
else{
|
||||
// uni.showToast({
|
||||
// title:'暂无内容',
|
||||
// icon:'none'
|
||||
// })
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.home-body {
|
||||
overflow-x: hidden;
|
||||
/* background-color: #FFFFFF; */
|
||||
}
|
||||
|
||||
page {
|
||||
background: #F5F6F7;
|
||||
padding: 0 !important;
|
||||
}
|
||||
|
||||
.homeHead {
|
||||
width: 100%;
|
||||
height: auto;
|
||||
background-color: #FFFFFF;
|
||||
margin-top: -20rpx;
|
||||
padding-bottom: 32rpx;
|
||||
}
|
||||
|
||||
.headd {
|
||||
background-color: #f6f6f6;
|
||||
border-radius: 200rpx;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
margin: 0 auto;
|
||||
width: 690rpx;
|
||||
margin-right: auto;
|
||||
height: 60rpx;
|
||||
|
||||
}
|
||||
|
||||
.headd input {
|
||||
width: 312rpx;
|
||||
font-size: 26rpx;
|
||||
}
|
||||
|
||||
.headSwiper {
|
||||
width: 690rpx;
|
||||
height: 260rpx;
|
||||
margin: 20rpx auto;
|
||||
}
|
||||
|
||||
.yswiper {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin: 0 auto;
|
||||
margin: 20rpx 0;
|
||||
}
|
||||
|
||||
.swiper-item {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border-radius: 12rpx;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.swiperImg {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.newPolicy {
|
||||
width: 690rpx;
|
||||
height: 100rpx;
|
||||
background: #FEFFFE;
|
||||
box-shadow: 0rpx 2rpx 20rpx 0rpx rgba(0, 0, 0, 0.06);
|
||||
border-radius: 16rpx;
|
||||
margin: 0 auto;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
|
||||
}
|
||||
|
||||
.newPolicy .policyContent {
|
||||
padding: 20rpx 20rpx 20rpx 34rpx;
|
||||
width: 580rpx;
|
||||
height: 100rpx;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.swiper-item{
|
||||
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.policyImgIndex{
|
||||
position: absolute;
|
||||
top: 48rpx;
|
||||
}
|
||||
.policyImgIndex image {
|
||||
width: 140rpx;
|
||||
height: 48rpx;
|
||||
}
|
||||
|
||||
.policyText {
|
||||
width: 466rpx;
|
||||
height: 58rpx;
|
||||
font-size: 24rpx;
|
||||
font-family: PingFangSC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: rgba(0, 0, 0, 0.8);
|
||||
line-height: 34rpx;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.textTitle {
|
||||
width: 416rpx;
|
||||
height: 34rpx;
|
||||
font-size: 24rpx;
|
||||
font-family: PingFangSC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: rgba(0, 0, 0, 0.8);
|
||||
line-height: 34rpx;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.textDate {
|
||||
width: 140rpx;
|
||||
height: 28rpx;
|
||||
font-size: 20rpx;
|
||||
font-family: PingFangSC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: rgba(0, 0, 0, 0.4);
|
||||
line-height: 28rpx;
|
||||
}
|
||||
|
||||
.jobService {
|
||||
width: 100%;
|
||||
height: 440rpx;
|
||||
background: #FEFFFE;
|
||||
margin-top: 16rpx;
|
||||
padding: 24rpx 0rpx 0rpx 32rpx;
|
||||
}
|
||||
|
||||
.cardTips {
|
||||
|
||||
height: 50rpx;
|
||||
font-size: 36rpx;
|
||||
font-family: PingFangSC-Semibold, PingFang SC;
|
||||
font-weight: 600;
|
||||
color: rgba(0, 0, 0, 0.8);
|
||||
line-height: 50rpx;
|
||||
margin-bottom: 16rpx;
|
||||
}
|
||||
|
||||
.serviceItem {
|
||||
width: 338rpx;
|
||||
height: 168rpx;
|
||||
background: #FEFFFE;
|
||||
box-shadow: 0rpx 2rpx 20rpx 0rpx rgba(0, 0, 0, 0.06);
|
||||
border-radius: 8rpx;
|
||||
float: left;
|
||||
margin-right: 8rpx;
|
||||
margin-bottom: 8rpx;
|
||||
|
||||
}
|
||||
|
||||
.serviceItem .serviceItemContent {
|
||||
padding: 42rpx 50rpx 42rpx 32rpx;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.serviceItemContent .itemText {
|
||||
width: 200rpx;
|
||||
margin-left: 16rpx;
|
||||
}
|
||||
|
||||
.hotFunction {
|
||||
font-size: 24rpx;
|
||||
font-family: PingFangSC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #FFFFFF;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
text-align: center;
|
||||
}
|
||||
.hotFunction .hot_img{
|
||||
width: 144rpx;
|
||||
height: 34rpx;
|
||||
}
|
||||
.hotFunction .text{
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 22rpx;
|
||||
z-index: 9;
|
||||
border-radius: 16rpx;
|
||||
}
|
||||
|
||||
|
||||
.serviceItem .itemIcon image,
|
||||
.serviceItem .itemIcon {
|
||||
width: 84rpx;
|
||||
height: 84rpx;
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
.font22 {
|
||||
font-size: 22rpx;
|
||||
font-family: PingFangSC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: rgba(0, 0, 0, 0.4);
|
||||
width: 200rpx;
|
||||
}
|
||||
|
||||
.font30 {
|
||||
font-size: 30rpx;
|
||||
font-family: PingFangSC-Semibold, PingFang SC;
|
||||
font-weight: 600;
|
||||
color: rgba(0, 0, 0, 0.85);
|
||||
|
||||
}
|
||||
|
||||
.helpSupport {
|
||||
width: 100%;
|
||||
height: auto;
|
||||
background: #FEFFFE;
|
||||
padding: 24rpx 0rpx 16rpx 32rpx;
|
||||
margin-top: 16rpx;
|
||||
}
|
||||
|
||||
.helpCard {
|
||||
width: 690rpx;
|
||||
height: 144rpx;
|
||||
background: #FEFFFF;
|
||||
box-shadow: 0rpx 2rpx 20rpx 0rpx rgba(0, 0, 0, 0.06);
|
||||
border-radius: 8px;
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.helpCardItem {
|
||||
width: 266rpx;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.helpCardItem .cardItemIcon image,
|
||||
.helpCardItem .cardItemIcon {
|
||||
width: 52rpx;
|
||||
height: 52rpx;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.font24 {
|
||||
height: 28rpx;
|
||||
font-size: 24rpx;
|
||||
font-family: PingFangSC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: rgba(0, 0, 0, 0.6);
|
||||
line-height: 34rpx;
|
||||
margin-top: 16rpx;
|
||||
}
|
||||
|
||||
.latestMission {
|
||||
width: 100%;
|
||||
height: auto;
|
||||
background: #FEFFFE;
|
||||
|
||||
}
|
||||
|
||||
.baddd {
|
||||
background: #f6f6f6;
|
||||
height: 2rpx;
|
||||
}
|
||||
|
||||
.nothing {
|
||||
width: 345px;
|
||||
height: 130px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.nothing_text {
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 28rpx;
|
||||
color: #666666;
|
||||
text-align: center;
|
||||
margin-bottom: 20rpx;
|
||||
width: 690rpx;
|
||||
}
|
||||
|
||||
.homeFooter {
|
||||
width: 690rpx;
|
||||
height: auto;
|
||||
margin: 0 auto;
|
||||
background-color: #f5f6f7;
|
||||
margin-top: 16rpx;
|
||||
margin-bottom: 60rpx;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.homeFooter .atBottom {
|
||||
width: 690rpx;
|
||||
height: 40rpx;
|
||||
font-size: 28rpx;
|
||||
font-family: PingFangSC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #cccdce;
|
||||
line-height: 40rpx;
|
||||
text-align: center;
|
||||
margin-bottom: 20rpx;
|
||||
|
||||
}
|
||||
|
||||
.homeFooter image {
|
||||
width: 200rpx;
|
||||
height: 64rpx;
|
||||
text-align: center;
|
||||
}
|
||||
</style>
|
||||
@@ -1,62 +0,0 @@
|
||||
<template>
|
||||
<jl-input type="text" v-model="code" placeholder="请输入图形验证码" @confirm="confirm">
|
||||
<image class="code-input-image" :src="image" mode="" @click="refushCode"></image>
|
||||
</jl-input>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import jlInput from '@/components/jl-input/main.vue'
|
||||
export default {
|
||||
components: {
|
||||
jlInput
|
||||
},
|
||||
props: {
|
||||
value: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
getCode: {
|
||||
type: Function,
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
image: ''
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.refushCode()
|
||||
},
|
||||
computed: {
|
||||
code: {
|
||||
get() {
|
||||
return this.value
|
||||
},
|
||||
set(val) {
|
||||
this.$emit('input', val)
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
refushCode() {
|
||||
this.code = ''
|
||||
this.getCode().then(resp => {
|
||||
const data = resp.data
|
||||
this.$emit('key-change', data.key)
|
||||
this.image = data.image
|
||||
})
|
||||
},
|
||||
confirm() {
|
||||
this.$emit('confirm')
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.code-input-image {
|
||||
width: 180rpx;
|
||||
height: 60rpx;
|
||||
margin-left: 20rpx;
|
||||
}
|
||||
</style>
|
||||
@@ -1,67 +0,0 @@
|
||||
page {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.bottomt text {
|
||||
color: #151515;
|
||||
}
|
||||
|
||||
.bottomt {
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 24rpx;
|
||||
color: #999999;
|
||||
position: fixed;
|
||||
bottom: 80rpx;
|
||||
left: 10%;
|
||||
}
|
||||
|
||||
.changeLogintype {
|
||||
margin: 0 auto;
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 28rpx;
|
||||
color: #1B66FF;
|
||||
margin-top: 30rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.titleText {
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 46rpx;
|
||||
color: #333333;
|
||||
font-weight: bold;
|
||||
margin: 0 auto;
|
||||
padding: 30rpx 0;
|
||||
}
|
||||
|
||||
.phoneDel {
|
||||
margin-left: auto !important;
|
||||
}
|
||||
|
||||
.nocheck {
|
||||
opacity: 0.6;
|
||||
}
|
||||
|
||||
.btn {
|
||||
margin: 0 auto;
|
||||
margin-top: 50rpx;
|
||||
background-color: #1B66FF;
|
||||
color: #fefefe;
|
||||
border-radius: 10rpx;
|
||||
text-align: center;
|
||||
font-size: 32rpx;
|
||||
height: 80rpx;
|
||||
line-height: 80rpx;
|
||||
}
|
||||
|
||||
.code {
|
||||
margin-left: auto;
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 28rpx;
|
||||
color: #1b66ff;
|
||||
}
|
||||
|
||||
page {
|
||||
background-color: #fefefe;
|
||||
}
|
||||
@@ -1,146 +0,0 @@
|
||||
<template>
|
||||
<login-template title="忘记密码">
|
||||
<jl-input type="number" v-model="phone" placeholder="请输入手机号" />
|
||||
<code-input ref="code" v-model="code" :getCode="getCaptcha" @key-change="keyChange" @confirm="goSetCode"></code-input>
|
||||
<view v-if="loading" class="btn nocheck">发送中</view>
|
||||
<view v-else-if="validate" class="btn" @click="goSetCode">获取验证码</view>
|
||||
<view v-else class="btn nocheck">获取验证码</view>
|
||||
<view class="changeLogintype">
|
||||
<navigator open-type="navigateBack">返回登录</navigator>
|
||||
</view>
|
||||
</login-template>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
isMobile
|
||||
} from '@/untils/validate.js'
|
||||
import codeInput from './codeInput.vue'
|
||||
import {
|
||||
forgetPW,
|
||||
accountsendValidate,
|
||||
getCaptcha,
|
||||
validateCode
|
||||
} from '@/api/forgetPW.js'
|
||||
import loginTemplate from './template.vue'
|
||||
import jlInput from '@/components/jl-input/main.vue'
|
||||
import {mapGetters} from 'vuex'
|
||||
export default {
|
||||
components: {
|
||||
jlInput,
|
||||
codeInput,
|
||||
loginTemplate
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
loading: false,
|
||||
phone: '',
|
||||
code: '',
|
||||
key: '',
|
||||
sms: '',
|
||||
defCount:5,//默认发送验证码次数
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
// 获取短信验证码
|
||||
uni.$off('accountsendValidate')
|
||||
uni.$on('accountsendValidate', (cb) => {
|
||||
accountsendValidate(this.phone, this.key, this.code).then(() => {
|
||||
cb()
|
||||
}).catch(() => {
|
||||
uni.navigateBack()
|
||||
uni.showToast({
|
||||
title: '图形验证码已过期',
|
||||
icon: 'none'
|
||||
});
|
||||
this.$refs.code.refushCode()
|
||||
})
|
||||
})
|
||||
// 设置密码页抬头
|
||||
uni.$off('passwordGetTitle')
|
||||
uni.$on('passwordGetTitle', (cb) => {
|
||||
cb('重置密码')
|
||||
})
|
||||
// 短信通过验证
|
||||
uni.$off('setSMS')
|
||||
uni.$on('setSMS', (sms) => {
|
||||
validateCode(this.phone, sms).then(res => {
|
||||
this.sms = sms
|
||||
uni.hideKeyboard()
|
||||
uni.navigateTo({
|
||||
url: `./setPassword`
|
||||
})
|
||||
})
|
||||
})
|
||||
// 设置密码
|
||||
uni.$off('setPassword')
|
||||
uni.$on('setPassword', ({
|
||||
password,
|
||||
cb
|
||||
}) => {
|
||||
forgetPW(this.phone, password, this.sms).then(() => {
|
||||
cb()
|
||||
uni.navigateBack({
|
||||
delta: 3
|
||||
})
|
||||
setTimeout(() => {
|
||||
uni.showToast({
|
||||
title: '操作成功',
|
||||
icon: 'none'
|
||||
});
|
||||
}, 1000)
|
||||
})
|
||||
})
|
||||
},
|
||||
onShow() {},
|
||||
methods: {
|
||||
goLogin(success) {
|
||||
uni.redirectTo({
|
||||
url: './login',
|
||||
success
|
||||
})
|
||||
},
|
||||
goSetCode(e) {
|
||||
if(!this.userChecked){
|
||||
uni.showToast({
|
||||
title:'请先阅读并同意《服务及隐私协议》',
|
||||
icon:'none'
|
||||
})
|
||||
}
|
||||
else{
|
||||
this.loading = true;
|
||||
accountsendValidate(this.phone, this.key, this.code).then((res) => {
|
||||
if(res.data.code==200){
|
||||
let count=res.data.data;
|
||||
this.$store.dispatch('UpdateUserSendTimes',count);
|
||||
if(count>=1 && count<=this.defCount){
|
||||
uni.navigateTo({
|
||||
url: `./setCode?phone=${this.phone}&count=${count}`
|
||||
})
|
||||
}
|
||||
}
|
||||
this.loading = false
|
||||
}).catch(() => {
|
||||
this.loading = false
|
||||
this.$refs.code.refushCode()
|
||||
})
|
||||
}
|
||||
},
|
||||
keyChange(val) {
|
||||
this.key = val
|
||||
},
|
||||
isMobile,
|
||||
getCaptcha
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['userChecked']),
|
||||
validate() {
|
||||
return isMobile(this.phone) && this.code
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
@import "./css";
|
||||
</style>
|
||||
@@ -1,167 +0,0 @@
|
||||
<template>
|
||||
<login-template title="账号登录">
|
||||
<!-- #ifdef H5 -->
|
||||
<!-- <view class="login-go-home" @click="goHome">
|
||||
<image class="login-go-home-image" src="@/static/img/home.svg"></image>
|
||||
</view> -->
|
||||
<!-- #endif -->
|
||||
<jl-input type="number" v-model="phone" placeholder="请输入手机号" @confirm="login"></jl-input>
|
||||
<jl-input type="text" v-model="password" placeholder="请输入登录密码" @confirm="login" showPassword clearable></jl-input>
|
||||
<!-- <code-input ref="code" v-model="code" :getCode="getCaptcha" @key-change="keyChange" @confirm="login"></code-input> -->
|
||||
<view v-if="loading" class="btn nocheck" loading="true">登录中</view>
|
||||
<view v-else-if="validate" class="btn" @click="login">立即登录</view>
|
||||
<view v-else class="btn nocheck">立即登录</view>
|
||||
<view class="changeLogintype">
|
||||
<view class="" @click="goReg">手机注册</view>
|
||||
<view class="" @click="goForget">忘记密码</view>
|
||||
</view>
|
||||
</login-template>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
mapGetters
|
||||
} from 'vuex'
|
||||
import {
|
||||
getCaptcha
|
||||
} from '@/api/user.js'
|
||||
import {
|
||||
isMobile
|
||||
} from '@/untils/validate.js'
|
||||
import website from '@/config/website.js'
|
||||
import codeInput from './codeInput.vue'
|
||||
import jlInput from '@/components/jl-input/main.vue'
|
||||
import loginTemplate from './template.vue'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
jlInput,
|
||||
codeInput,
|
||||
loginTemplate
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
phone: '',
|
||||
password: '',
|
||||
code: '1111',
|
||||
key: '',
|
||||
loading: false
|
||||
}
|
||||
},
|
||||
created() {
|
||||
if (this.userInfo.token) {
|
||||
uni.navigateBack()
|
||||
}
|
||||
},
|
||||
onShow() {
|
||||
// #ifdef MP-WEIXIN
|
||||
wx.hideHomeButton();
|
||||
//#endif
|
||||
this.password = ''
|
||||
if (this.$store.state.user.token) {
|
||||
this.$store.dispatch('LogOut').then(() => {
|
||||
this.$store.dispatch('clearAuthState')
|
||||
this.$store.dispatch('endRefreshNewsTimer')
|
||||
})
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
goHome() {
|
||||
uni.switchTab({
|
||||
url: '/pages/index/index'
|
||||
})
|
||||
},
|
||||
login(e) {
|
||||
if (this.validate) {
|
||||
if (!this.userChecked) {
|
||||
uni.showToast({
|
||||
title:'请先阅读并同意《服务及隐私协议》',
|
||||
icon:'none',
|
||||
})
|
||||
} else {
|
||||
var that = this
|
||||
this.loading = true
|
||||
this.$store.dispatch("LoginByUsername", {
|
||||
username: this.phone,
|
||||
password: this.password,
|
||||
key: this.key,
|
||||
code: this.code,
|
||||
type: "account",
|
||||
tenantId: website.tenantId
|
||||
}).then((resp) => {
|
||||
this.$store.dispatch('refreshAuthState').then(() => {
|
||||
that.loading = false
|
||||
var auth = this.auth
|
||||
if (!auth.bankCardState) {
|
||||
that.goSign(0)
|
||||
} else {
|
||||
uni.switchTab({
|
||||
url: '/pages/index/index'
|
||||
})
|
||||
}
|
||||
})
|
||||
}).catch((err) => {
|
||||
this.loading = false
|
||||
// this.$refs.code.refushCode()
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
// 步骤
|
||||
goSign(active) {
|
||||
uni.navigateTo({
|
||||
url: `/pages/projectInfo/signContract?active=${active}`
|
||||
})
|
||||
},
|
||||
keyChange(val) {
|
||||
this.key = val
|
||||
},
|
||||
goReg() {
|
||||
uni.navigateTo({
|
||||
url: './reg'
|
||||
})
|
||||
},
|
||||
goForget() {
|
||||
uni.navigateTo({
|
||||
url: './forgetPwd'
|
||||
})
|
||||
},
|
||||
getCaptcha
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['userInfo', 'auth', 'autograph', 'userChecked']),
|
||||
validate() {
|
||||
return isMobile(this.phone) && this.password && this.code
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
@import "./css.css";
|
||||
|
||||
/* #ifdef H5 */
|
||||
.login-go-home {
|
||||
position: absolute;
|
||||
top: 10rpx;
|
||||
left: 0;
|
||||
border-radius: 50%;
|
||||
width: 60rpx;
|
||||
height: 60rpx;
|
||||
background: rgb(217, 217, 217);
|
||||
border: 1px solid rgb(198, 198, 198);
|
||||
}
|
||||
|
||||
.login-go-home-image {
|
||||
width: 40rpx;
|
||||
height: 40rpx;
|
||||
margin: auto;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
/* #endif */
|
||||
</style>
|
||||
@@ -1,149 +0,0 @@
|
||||
<template>
|
||||
<login-template title="手机注册">
|
||||
<jl-input type="number" v-model="phone" placeholder="请输入手机号" />
|
||||
<code-input ref="code" v-model="code" :getCode="getCaptcha" @key-change="keyChange" @confirm="goSetCode"></code-input>
|
||||
<view v-if="loading" class="btn nocheck">发送中</view>
|
||||
<view v-else-if="validate" class="btn" @click="goSetCode">获取验证码</view>
|
||||
<view v-else class="btn nocheck">获取验证码</view>
|
||||
|
||||
<view class="changeLogintype">
|
||||
<navigator open-type="navigateBack">返回登录</navigator>
|
||||
</view>
|
||||
</login-template>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
isMobile
|
||||
} from '@/untils/validate.js'
|
||||
import codeInput from './codeInput.vue'
|
||||
import {
|
||||
accountsendValidate,
|
||||
getCaptcha,
|
||||
validateCode,
|
||||
reg
|
||||
} from '@/api/reg.js'
|
||||
import loginTemplate from './template.vue'
|
||||
import jlInput from '@/components/jl-input/main.vue'
|
||||
import {mapGetters} from 'vuex'
|
||||
export default {
|
||||
components: {
|
||||
jlInput,
|
||||
codeInput,
|
||||
loginTemplate
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
loading: false,
|
||||
phone: '',
|
||||
code: '',
|
||||
key: '',
|
||||
sms: '',
|
||||
defCount:5,//默认发送验证码次数
|
||||
}
|
||||
},
|
||||
onLoad(options) {
|
||||
// 获取短信验证码
|
||||
uni.$off('accountsendValidate')
|
||||
uni.$on('accountsendValidate', (cb) => {
|
||||
accountsendValidate(this.phone, this.key, this.code).then(() => {
|
||||
cb()
|
||||
}).catch((res) => {
|
||||
uni.navigateBack()
|
||||
uni.showToast({
|
||||
title: res.message,
|
||||
icon: 'none'
|
||||
});
|
||||
this.$refs.code.refushCode()
|
||||
})
|
||||
})
|
||||
// 设置密码页抬头
|
||||
uni.$off('passwordGetTitle')
|
||||
uni.$on('passwordGetTitle', (cb) => {
|
||||
cb('创建密码')
|
||||
})
|
||||
// 短信验证码输入完毕
|
||||
uni.$off('setSMS')
|
||||
uni.$on('setSMS', (sms) => {
|
||||
validateCode(this.phone, sms).then(res => {
|
||||
this.sms = sms
|
||||
uni.hideKeyboard()
|
||||
uni.navigateTo({
|
||||
url: `./setPassword`
|
||||
})
|
||||
})
|
||||
})
|
||||
// 设置密码
|
||||
uni.$off('setPassword')
|
||||
uni.$on('setPassword', ({
|
||||
password,
|
||||
cb
|
||||
}) => {
|
||||
reg(this.phone, password, this.sms).then(() => {
|
||||
cb()
|
||||
uni.navigateBack({
|
||||
delta: 3
|
||||
})
|
||||
setTimeout(() => {
|
||||
uni.showToast({
|
||||
title: '注册成功',
|
||||
icon: 'none'
|
||||
});
|
||||
}, 1000)
|
||||
})
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
goLogin(success) {
|
||||
uni.redirectTo({
|
||||
url: './login',
|
||||
success
|
||||
})
|
||||
},
|
||||
goSetCode(e) {
|
||||
if(!this.userChecked){
|
||||
uni.showToast({
|
||||
title:'请先阅读并同意《服务及隐私协议》',
|
||||
icon:'none'
|
||||
})
|
||||
}
|
||||
else{
|
||||
this.loading = true;
|
||||
accountsendValidate(this.phone, this.key, this.code).then((res) => {
|
||||
if(res.data.code==200){
|
||||
let count=res.data.data;
|
||||
this.$store.dispatch('UpdateUserSendTimes',count);
|
||||
if(count>=1 && count<=5){
|
||||
uni.navigateTo({
|
||||
url: `./setCode?phone=${this.phone}&count=${count}`
|
||||
})
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
this.loading=false;
|
||||
}).catch(() => {
|
||||
this.loading = false;
|
||||
this.$refs.code.refushCode()
|
||||
})
|
||||
}
|
||||
},
|
||||
keyChange(val) {
|
||||
this.key = val
|
||||
},
|
||||
isMobile,
|
||||
getCaptcha
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['userChecked']),
|
||||
validate() {
|
||||
return isMobile(this.phone) && this.code
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
@import "./css";
|
||||
</style>
|
||||
@@ -1,159 +0,0 @@
|
||||
<template>
|
||||
<view>
|
||||
<view class="" style="height: 100rpx;"></view>
|
||||
<view class="titleText">
|
||||
输入验证码
|
||||
</view>
|
||||
<view class="titlelabel">
|
||||
4位验证码已发送至 <text>{{phone}}</text>
|
||||
</view>
|
||||
<view class="codeBody">
|
||||
<valid-code ref="validCode" @finish="getInpCode"></valid-code>
|
||||
</view>
|
||||
<view v-if="action === 'can'" class="code_time" @click="getCode">
|
||||
重新发送
|
||||
</view>
|
||||
<view v-else-if="action === 'wait'" class="code_time nocheck">
|
||||
重新发送({{codeint}})
|
||||
</view>
|
||||
<view v-else-if="action === 'sending'" class="code_time">
|
||||
发送中...
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import validCode from '@/components/p-valid-code/p-valid-code.vue'
|
||||
import {
|
||||
mapGetters
|
||||
} from 'vuex'
|
||||
const resendTime = 120
|
||||
export default {
|
||||
components: {
|
||||
validCode
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['sendTimes']),
|
||||
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
phone: '',
|
||||
action: 'wait',
|
||||
codeint: resendTime,
|
||||
defCount:5,
|
||||
|
||||
}
|
||||
},
|
||||
onLoad({
|
||||
phone,count
|
||||
}) {
|
||||
this.phone = phone;
|
||||
this.count=count;
|
||||
this.setTimer();
|
||||
},
|
||||
onShow() {
|
||||
let diffCount=this.defCount-this.count
|
||||
if(this.count>=2){
|
||||
uni.showToast({
|
||||
title:`今日验证码已获取${this.count}次,还有${diffCount}次获取机会`,
|
||||
icon:'none',
|
||||
duration:3000
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
this.$refs.validCode.clear()
|
||||
},
|
||||
methods: {
|
||||
getInpCode: function(e) {
|
||||
uni.$emit('setSMS', e)
|
||||
},
|
||||
setTimer() {
|
||||
var sendCode = setInterval(() => {
|
||||
this.codeint -= 1;
|
||||
if (this.codeint <= 0) {
|
||||
this.action = 'can'
|
||||
this.codeint = resendTime;
|
||||
clearInterval(sendCode);
|
||||
return;
|
||||
}
|
||||
}, 1000)
|
||||
},
|
||||
getCode: function() {
|
||||
if (this.action !== 'can') {
|
||||
return;
|
||||
}
|
||||
this.action = 'sending';
|
||||
let nextCount=this.sendTimes*1+1;
|
||||
let realCount=this.defCount-nextCount
|
||||
if(nextCount>1 && nextCount<=this.defCount){
|
||||
uni.showToast({
|
||||
title:`今日验证码已获取${nextCount}次,还有${realCount}次获取机会`,
|
||||
icon:'none',
|
||||
duration:3000
|
||||
})
|
||||
this.$store.dispatch('UpdateUserSendTimes',nextCount);
|
||||
uni.$emit('accountsendValidate', () => {
|
||||
this.action = 'wait';
|
||||
this.setTimer()
|
||||
})
|
||||
}
|
||||
else {
|
||||
uni.showToast({
|
||||
title:`今日验证码已获取${this.defCount}次,请明日再来`,
|
||||
icon:'none',
|
||||
duration:3000
|
||||
})
|
||||
this.action='can';
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.code_time {
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 28rpx;
|
||||
color: #1B66FF;
|
||||
margin: 0 auto;
|
||||
width: 80%;
|
||||
margin-top: 30rpx;
|
||||
}
|
||||
|
||||
.codeBody {
|
||||
|
||||
width: 80%;
|
||||
margin: 0 auto;
|
||||
margin-top: 50rpx;
|
||||
}
|
||||
|
||||
.titlelabel text {
|
||||
color: #151515;
|
||||
}
|
||||
|
||||
.titlelabel {
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 24rpx;
|
||||
color: #999999;
|
||||
margin: 0 auto;
|
||||
width: 80%;
|
||||
}
|
||||
|
||||
.titleText {
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 46rpx;
|
||||
color: #333333;
|
||||
font-weight: bold;
|
||||
width: 80%;
|
||||
margin: 0 auto;
|
||||
padding: 30rpx 0;
|
||||
}
|
||||
|
||||
.nocheck {
|
||||
opacity: 0.6;
|
||||
}
|
||||
</style>
|
||||
@@ -1,67 +0,0 @@
|
||||
<template>
|
||||
<login-template :title="titleText" hide-bottom>
|
||||
<jl-input type="text" v-model="password" placeholder="设置长度6至20位的密码" @confirm="reg" showPassword clearable></jl-input>
|
||||
<view class="btn" v-if='loading'>处理中...</view>
|
||||
<view class="btn" v-else-if='password' @click="reg">确认</view>
|
||||
<view class="btn nocheck" v-else>确认</view>
|
||||
</login-template>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
reg,
|
||||
forgetPW
|
||||
} from '@/api/reg.js'
|
||||
import jlInput from '@/components/jl-input/main.vue'
|
||||
import loginTemplate from './template.vue'
|
||||
import {
|
||||
password
|
||||
} from '@/untils/validate.js'
|
||||
import md5 from 'js-md5'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
jlInput,
|
||||
loginTemplate
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
loading: false,
|
||||
titleText: '',
|
||||
password: '',
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
uni.$emit('passwordGetTitle', (title) => {
|
||||
this.titleText = title
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
reg() {
|
||||
if (password(this.password)) {
|
||||
uni.showToast({
|
||||
title: '请设置长度6至20位的密码',
|
||||
icon: 'none'
|
||||
});
|
||||
} else {
|
||||
uni.$emit('setPassword', {
|
||||
password: md5(this.password),
|
||||
cb: () => {
|
||||
this.loading = false
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
@import "./css";
|
||||
|
||||
.inPlaSmall {
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 19rpx;
|
||||
color: #d8d8d8;
|
||||
}
|
||||
</style>
|
||||
@@ -1,106 +0,0 @@
|
||||
<template>
|
||||
<view class="login-body">
|
||||
<view class="nothing" style="height: 100rpx;"></view>
|
||||
<view class="titleText">{{title}}</view>
|
||||
<slot></slot>
|
||||
<view v-if="!hideBottom" class="bottomt">
|
||||
<view class="bottomt-box">
|
||||
<view class="check-icon" @click="checkChanged">
|
||||
<image v-if="userChecked" src="../../static/img/checkOk.png" style="width: 30rpx;height:30rpx;"></image>
|
||||
<view class="noneCheck" v-else></view>
|
||||
</view>
|
||||
已阅读并同意<text class="bottomtText" @click="goMent">《服务及隐私协议》</text>
|
||||
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {mapGetters} from 'vuex'
|
||||
export default {
|
||||
|
||||
data(){
|
||||
return{
|
||||
|
||||
}
|
||||
},
|
||||
props: {
|
||||
title: String,
|
||||
hideBottom: Boolean
|
||||
},
|
||||
methods: {
|
||||
goMent() {
|
||||
uni.navigateTo({
|
||||
url: '/pages/user/agreement'
|
||||
})
|
||||
},
|
||||
checkChanged(){
|
||||
let checkedValue=!this.userChecked;
|
||||
this.$store.dispatch('UserCheckedBtn',checkedValue)
|
||||
|
||||
}
|
||||
},
|
||||
computed:{
|
||||
...mapGetters(['userChecked'])
|
||||
},
|
||||
mounted() {
|
||||
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.login-body {
|
||||
min-height: 880rpx;
|
||||
height: 100%;
|
||||
position: relative;
|
||||
width: 80%;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.titleText {
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 46rpx;
|
||||
color: #333333;
|
||||
font-weight: bold;
|
||||
padding: 30rpx 0;
|
||||
}
|
||||
|
||||
.bottomtText {
|
||||
color: #151515;
|
||||
}
|
||||
|
||||
.bottomt {
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 24rpx;
|
||||
color: #999999;
|
||||
position: absolute;
|
||||
bottom: 80rpx;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
.bottomt-box{
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
.check-icon{
|
||||
font-size: 28rpx;
|
||||
font-weight: 400;
|
||||
color: #999999;
|
||||
align-items: center;
|
||||
width: 30rpx;
|
||||
height: 30rpx;
|
||||
margin-right: 12rpx;
|
||||
.noneCheck{
|
||||
width: 26rpx;
|
||||
height: 26rpx;
|
||||
border-radius: 50%;
|
||||
border: 2rpx solid #999999;
|
||||
margin-right:12rpx;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -1,559 +0,0 @@
|
||||
<template>
|
||||
<view class="bodys">
|
||||
<view class="status_bar">
|
||||
<!-- 这里是状态栏 -->
|
||||
</view>
|
||||
<view class="head">
|
||||
<map id='midMap' ref='midMap' :latitude="latitude" :markers="markList" :longitude="longitude" @tap="changeMap" scale="10">
|
||||
</map>
|
||||
<view class="search">
|
||||
<view class="head_border">
|
||||
</view>
|
||||
<view class="controlss">
|
||||
<view class="controlss-back">
|
||||
<image src="../../static/img/left.svg" @click="backView" mode=""></image>
|
||||
</view>
|
||||
<view class="controlss-input" @click="goSearch">
|
||||
<input type="text" placeholder="搜索工作的地点" disabled="true" />
|
||||
<image src="../../static/img/search.svg" style="margin-left: auto;" mode=""></image>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="controlsPop">
|
||||
<view class="listTitle">
|
||||
附近任务
|
||||
</view>
|
||||
<view class="borderbom"></view>
|
||||
<scroll-view scroll-y lower-threshold="0" style="height: 92%;" @scrolltolower="upLoad" v-if="companyList.length>0">
|
||||
<block v-for="(item, index) in companyList" :key="item.id">
|
||||
<companyList :companyitem="item" :near="true"></companyList>
|
||||
<view class="baddd"></view>
|
||||
</block>
|
||||
</scroll-view>
|
||||
<view class="nothingArea" v-else>
|
||||
<image src="../../static/img/pic_notask.svg" mode="" class="nothing"></image>
|
||||
<view class="nothingContnt">
|
||||
暂无任务信息
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import companyList from '@/components/companyList/companyList.vue';
|
||||
import testData from '@/common/textdata.js';
|
||||
import {
|
||||
nearMission
|
||||
} from '@/api/mission.js';
|
||||
import {
|
||||
getcoder,
|
||||
querySearch
|
||||
} from "@/api/map.js";
|
||||
|
||||
export default {
|
||||
components: {
|
||||
companyList
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
longitude: 116.40,
|
||||
latitude: 39.90,
|
||||
key: 'FW3BZ-6JTK6-GCUS5-MZCRR-3GPR5-HJFEI',
|
||||
currentPoint: {},
|
||||
companyList: [],
|
||||
markList: [],
|
||||
inpoints: [],
|
||||
inputValue: '',
|
||||
searchResult: false,
|
||||
searchResultList: [],
|
||||
page: {
|
||||
current: 1,
|
||||
size: 10,
|
||||
total: 0
|
||||
},
|
||||
mapCtx: null,
|
||||
type: ""
|
||||
};
|
||||
},
|
||||
onLoad: function(option) {
|
||||
if (option.item) {
|
||||
const item = JSON.parse(decodeURIComponent(option.item));
|
||||
var point = {
|
||||
target: {
|
||||
latitude: item.lat,
|
||||
longitude: item.lng
|
||||
}
|
||||
};
|
||||
this.currentPoint = point;
|
||||
this.type = 'search';
|
||||
}
|
||||
},
|
||||
onShow: function() {
|
||||
if (this.type === 'search') {
|
||||
this.changeMap(this.currentPoint);
|
||||
} else {
|
||||
this.getLocation();
|
||||
}
|
||||
// that.inputValue='';
|
||||
//发起定位授权弹窗
|
||||
// uni.authorize({
|
||||
// scope: 'scope.userLocation',
|
||||
// success() {
|
||||
// that.getLocation()
|
||||
// },
|
||||
// fail() {
|
||||
// uni.showModal({
|
||||
// title: '提示',
|
||||
// content: '获取您的位置,以便为您推荐合适工作信息',
|
||||
// success: function (res) {
|
||||
// if (res.confirm) {
|
||||
// that.getLocation();
|
||||
// } else if (res.cancel) {
|
||||
// //默认位置
|
||||
// var point = {
|
||||
// target:{
|
||||
// latitude:that.latitude,
|
||||
// longitude:that.longitude
|
||||
// }
|
||||
// };
|
||||
// that.currentPoint = point;
|
||||
// that.changeMap(point);
|
||||
// }
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
// });
|
||||
// that.getLocation();
|
||||
},
|
||||
methods: {
|
||||
/*定位*/
|
||||
getLocation: function() {
|
||||
var that = this;
|
||||
uni.getLocation({
|
||||
type: 'gcj02',
|
||||
success: function(res) {
|
||||
//初始化当前点
|
||||
var point = {
|
||||
target: {
|
||||
latitude: res.latitude,
|
||||
longitude: res.longitude
|
||||
}
|
||||
};
|
||||
that.currentPoint = point;
|
||||
// that.latitude = res.latitude;
|
||||
// that.longitude = res.longitude;
|
||||
//设置当前点 并逆地址解析和获取任务
|
||||
that.changeMap(point);
|
||||
},
|
||||
fail: function() {
|
||||
//默认位置
|
||||
var point = {
|
||||
target: {
|
||||
latitude: that.latitude,
|
||||
longitude: that.longitude
|
||||
}
|
||||
};
|
||||
that.currentPoint = point;
|
||||
that.changeMap(point);
|
||||
},
|
||||
complete: function(e) {}
|
||||
});
|
||||
},
|
||||
/*设置当前点 并逆地址解析和获取任务*/
|
||||
changeMap: function(e) {
|
||||
this.page.current = 1;
|
||||
if (e) {
|
||||
var point = {
|
||||
target: {
|
||||
latitude: e.target.latitude,
|
||||
longitude: e.target.longitude
|
||||
}
|
||||
};
|
||||
this.currentPoint = point;
|
||||
this.latitude = e.target.latitude;
|
||||
this.longitude = e.target.longitude;
|
||||
this.markList = [];
|
||||
this.getAddrByPoint(e.target);
|
||||
this.getData(e.target);
|
||||
}
|
||||
},
|
||||
/*逆地址解析*/
|
||||
getAddrByPoint: function(point) {
|
||||
var that = this;
|
||||
var location = point.latitude + ',' + point.longitude
|
||||
that.setCurrentMarker(point); //设置当前marker
|
||||
getcoder(location, encodeURI(that.key), 0).then(res => {
|
||||
var address = res.data.result.address_component.city + res.data.result.formatted_addresses.recommend;
|
||||
this.markList.forEach(ele => { //给当前marker添加label
|
||||
if (ele.id === 0) {
|
||||
ele.title = address;
|
||||
ele['callout'] = {
|
||||
content: address,
|
||||
color: '#000000',
|
||||
fontSize: 12,
|
||||
borderRadius: 2,
|
||||
borderWidth: 0,
|
||||
borderColor: '#ffffff',
|
||||
bgColor: '#ffffff',
|
||||
padding: '5',
|
||||
display: 'ALWAYS',
|
||||
textAlign: 'center'
|
||||
}
|
||||
}
|
||||
})
|
||||
});
|
||||
},
|
||||
/*设置当前定位点marker*/
|
||||
setCurrentMarker: function(point) {
|
||||
this.markList.push({
|
||||
id: 0,
|
||||
latitude: point.latitude,
|
||||
longitude: point.longitude,
|
||||
title: '',
|
||||
zIndex: 2,
|
||||
iconPath: '/static/img/location.png',
|
||||
// width: 20,
|
||||
// height: 20
|
||||
})
|
||||
},
|
||||
/*设置任务点*/
|
||||
setmarkers: function() {
|
||||
// 设置任务点
|
||||
var inpoints = [];
|
||||
inpoints.push({
|
||||
latitude: this.currentPoint.target.latitude,
|
||||
longitude: this.currentPoint.target.longitude
|
||||
})
|
||||
if (this.companyList.length) {
|
||||
for (var i = 0; i < this.companyList.length && i < 10; i++) {
|
||||
inpoints.push({
|
||||
latitude: this.companyList[i].lat,
|
||||
longitude: this.companyList[i].lon
|
||||
})
|
||||
this.markList.push({
|
||||
id: i + 1,
|
||||
latitude: this.companyList[i].lat,
|
||||
longitude: this.companyList[i].lon,
|
||||
zIndex: 1,
|
||||
iconPath: '/static/img/point.png',
|
||||
// width: 30,
|
||||
// height: 30
|
||||
})
|
||||
}
|
||||
}
|
||||
this.inpoints = inpoints;
|
||||
},
|
||||
goSearch() {
|
||||
uni.navigateTo({
|
||||
url: '../seach/placeSearch'
|
||||
});
|
||||
},
|
||||
// search:function(){
|
||||
// if(this.inputValue){
|
||||
// this.querySearch(this.inputValue)
|
||||
// }else{
|
||||
// return
|
||||
// }
|
||||
// },
|
||||
// //关键词输入提示
|
||||
// querySearch:function(queryString) {
|
||||
// querySearch(queryString, encodeURI(this.key)).then(res => {
|
||||
// if (res.data.status === 0) {
|
||||
// this.searchResultList = res.data.data;
|
||||
// if(this.searchResultList.length){
|
||||
// this.searchResultList.forEach((item, index) => {
|
||||
// item.title = this.getInf(item.title, this.inputValue);
|
||||
// });
|
||||
// }
|
||||
// }
|
||||
// });
|
||||
// },
|
||||
// // 8-2、选择地址
|
||||
// handleSelect:function(item) {
|
||||
// this.page.current=1;
|
||||
// this.searchResult=false;
|
||||
// this.inputValue='';
|
||||
// this.searchResultList = [];
|
||||
// var point = {
|
||||
// target:{
|
||||
// latitude:item.location.lat,
|
||||
// longitude:item.location.lng
|
||||
// }
|
||||
// };
|
||||
// this.currentPoint = point;
|
||||
// this.changeMap(point);
|
||||
// },
|
||||
// //高亮
|
||||
// getInf(str, key) {
|
||||
// if (str && key) {
|
||||
// let replaceReg = new RegExp(key, 'g')// 匹配关键字正则
|
||||
// let replaceString = "<span style='color: #1b66ff;'>" + key + "</span>" // 高亮替换
|
||||
// return str.replace(replaceReg, replaceString);
|
||||
// }
|
||||
// },
|
||||
// cancel:function(){
|
||||
// this.inputValue = '';
|
||||
// this.searchResult = false;
|
||||
// },
|
||||
getData: function(obj) {
|
||||
nearMission(this.page.current, this.page.size, obj.latitude, obj.longitude, 50).then(res => {
|
||||
if (this.page.current === 1) {
|
||||
this.companyList = [];
|
||||
}
|
||||
this.page.current += 1;
|
||||
this.page.total = res.data.data.total;
|
||||
if (res.data.data && res.data.data.records.length) {
|
||||
this.companyList = this.companyList.concat(res.data.data.records);
|
||||
}
|
||||
//非上拉加载 即设置任务点
|
||||
if (obj !== 'upload') {
|
||||
this.setmarkers();
|
||||
}
|
||||
})
|
||||
},
|
||||
//上拉加载
|
||||
upLoad: function() {
|
||||
if (this.page.current <= Math.ceil(this.page.total / this.page.size)) {
|
||||
this.getData('upload');
|
||||
} else {
|
||||
uni.showToast({
|
||||
icon: "none",
|
||||
title: '已经是最后一页',
|
||||
})
|
||||
return
|
||||
}
|
||||
},
|
||||
backView: function() {
|
||||
uni.navigateBack({
|
||||
delta: 1
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.status_bar {
|
||||
height: var(--status-bar-height);
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.locationimg {
|
||||
width: 40rpx;
|
||||
height: 40rpx;
|
||||
position: fixed;
|
||||
left: 355rpx;
|
||||
top: 250rpx;
|
||||
}
|
||||
|
||||
.baddd {
|
||||
background: #f6f6f6;
|
||||
height: 20rpx;
|
||||
}
|
||||
|
||||
.head_border {
|
||||
width: 60rpx;
|
||||
height: 8rpx;
|
||||
border-radius: 30rpx;
|
||||
margin: 0 auto;
|
||||
background-color: #ddd;
|
||||
margin-bottom: 10rpx;
|
||||
}
|
||||
|
||||
.head {
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 30rpx;
|
||||
font-weight: bold;
|
||||
color: #333333;
|
||||
text-align: center;
|
||||
height: 50%;
|
||||
position: relative;
|
||||
/* border-bottom: 20rpx solid #f6f6f6; */
|
||||
}
|
||||
|
||||
map {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.head .search {
|
||||
position: absolute;
|
||||
top: 10rpx;
|
||||
left: 0;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
.head .search .controlss {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
flex-direction: row;
|
||||
margin: 0rpx 20rpx;
|
||||
}
|
||||
|
||||
.head .search .controlss .controlss-back {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
margin-right: 20rpx;
|
||||
padding: 5rpx;
|
||||
background-color: #ffffff;
|
||||
}
|
||||
|
||||
.head .search .controlss .controlss-input {
|
||||
flex: 1;
|
||||
padding: 10rpx 30rpx;
|
||||
background-color: #ffffff;
|
||||
border-radius: 200rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: flex-start;
|
||||
}
|
||||
|
||||
.head .search .controlss input {
|
||||
text-align: left;
|
||||
font-size: 28rpx;
|
||||
color: rgba(51, 51, 51, 1);
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.head .search .controlss image {
|
||||
width: 40rpx;
|
||||
height: 40rpx;
|
||||
}
|
||||
|
||||
.controlsPop {
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: 750rpx;
|
||||
height: 50%;
|
||||
background-color: #fefefe;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.controlsPop .listTitle {
|
||||
padding: 10rpx 20rpx;
|
||||
font-size: 24rpx;
|
||||
}
|
||||
|
||||
.controlsPop .nothingArea {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.controlsPop .nothingContnt {
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 28rpx;
|
||||
color: #333333;
|
||||
margin-top: 30rpx;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.controlsPop .nothing {
|
||||
width: 400rpx;
|
||||
height: 200rpx;
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
/*
|
||||
.searchPage .headSearch .search-view {
|
||||
border-bottom: 1rpx solid #dddddd;
|
||||
padding: 10rpx 30rpx;
|
||||
background: rgba(255, 255, 255, 1);
|
||||
position: relative;
|
||||
}
|
||||
.searchPage .headSearch .close{
|
||||
position: absolute;
|
||||
right: 24rpx;
|
||||
top: 0;
|
||||
height: 60rpx;
|
||||
padding: 5rpx 0;
|
||||
line-height: 60rpx;
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 32rpx;
|
||||
color: #333333;
|
||||
}
|
||||
.searchPage .headSearch .search-item{
|
||||
display: flex;
|
||||
width: 80%;
|
||||
padding: 0 24rpx;
|
||||
height: 60rpx;
|
||||
line-height: 60rpx;
|
||||
background: rgba(249, 249, 249, 1);
|
||||
border-radius: 200px;
|
||||
align-items: center;
|
||||
}
|
||||
.searchPage .headSearch .search-item input {
|
||||
padding: 0 24rpx;
|
||||
height: 80rpx;
|
||||
font-weight: 400;
|
||||
flex: 1;
|
||||
text-align: start;
|
||||
font-size: 28rpx;
|
||||
font-family: PingFang-SC-Bold, PingFang-SC;
|
||||
color: rgba(51, 51, 51, 1);
|
||||
}
|
||||
.searchPage .headSearch .search-item .placeholderClass {
|
||||
color: #CCCCCC;
|
||||
}
|
||||
.searchPage .headSearch .search-item image {
|
||||
height: 32rpx;
|
||||
width: 32rpx;
|
||||
}
|
||||
|
||||
.searchPage .scroll-view{
|
||||
flex:1;
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
top:80rpx;
|
||||
}
|
||||
|
||||
.searchPage .search-result {
|
||||
background-color: #fff;
|
||||
}
|
||||
.searchPage .search-result li{
|
||||
font-weight: normal;
|
||||
text-align: left;
|
||||
border-bottom:1rpx solid #f2f2f2;
|
||||
padding: 28rpx 30rpx;
|
||||
list-style:none;
|
||||
}
|
||||
.searchPage .search-result li .title{
|
||||
font-size:32rpx;
|
||||
} */
|
||||
|
||||
.highlight {
|
||||
color: #1b66ff;
|
||||
}
|
||||
|
||||
.searchPage .search-result li .address {
|
||||
font-size: 24rpx;
|
||||
color: #999999
|
||||
}
|
||||
|
||||
.borderbom {
|
||||
width: 100%;
|
||||
height: 1rpx;
|
||||
border-bottom: 1rpx solid #f2f2f2;
|
||||
}
|
||||
|
||||
page {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.bodys {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: relative;
|
||||
}
|
||||
</style>
|
||||
288
pages/my/my.vue
288
pages/my/my.vue
@@ -1,288 +0,0 @@
|
||||
<template>
|
||||
<view class="body">
|
||||
<view class="head">
|
||||
<view class="userTitle">
|
||||
<image v-if="userInfo.avatar" :src="userInfo.avatar" mode=""></image>
|
||||
<image v-else src="../../static/img/head.svg" mode=""></image>
|
||||
<view class="userRight">
|
||||
<view class="userTel" v-if="userInfo.user_name">
|
||||
{{phoneFilter(userInfo.user_name)}}
|
||||
</view>
|
||||
<view class="userTel" v-else> </view>
|
||||
<view class="userContent">
|
||||
<view style="margin-right: 40rpx;">实名认证:{{auth.realNameState?'已认证':'未认证'}}</view>
|
||||
<view>银行卡核验:{{auth.bankCardState?'已认证':'未认证'}}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="centerBar">
|
||||
<view class="BarList" @click="go('/pageMy/my/resume/index')">
|
||||
<image src="../../static/img/resumeMy.svg" mode=""></image>
|
||||
我的简历
|
||||
</view>
|
||||
<view class="BarList" @click="go('/pageMy/myProject/myProject')">
|
||||
<image src="../../static/img/job.svg" mode=""></image>
|
||||
我的任务
|
||||
</view>
|
||||
<view class="BarList" @click="go('/pageMy/my/sala')">
|
||||
<image src="../../static/img/salary.svg" mode=""></image>
|
||||
我的工资
|
||||
</view>
|
||||
<view class="BarList" @click="go('/pageMy/contract/index')">
|
||||
<image src="../../static/img/contract.png" mode=""></image>
|
||||
我的合同
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view style="height: 74rpx;"></view>
|
||||
<view class="federation">
|
||||
<view>新业态职工工会联合会</view>
|
||||
<view v-if="!federationStatus" class="forMembership" @click="go('/pageMy/federation/forMembership/Notice')">申请入会</view>
|
||||
<view v-else class="forMembership" @click="go('/pageMy/federation/vip/information')">已加入</view>
|
||||
</view>
|
||||
|
||||
<view class="btn">
|
||||
<view class="btnList" @click="go('/pageMy/setUserBase/index')">
|
||||
<image src="../../static/img/ID.svg" mode=""></image>
|
||||
认证信息
|
||||
<image src="../../static/img/right.svg" mode=""></image>
|
||||
</view>
|
||||
<view class="btnList" @click="go('/pageMy/comment/comment')">
|
||||
<image src="../../static/img/evaluate.png" mode=""></image>
|
||||
我的评价
|
||||
<image src="../../static/img/right.svg" mode=""></image>
|
||||
</view>
|
||||
<view class="btnList" @click="go('/pageMy/my/changePhone')">
|
||||
<image src="../../static/img/phone.svg" mode=""></image>
|
||||
变更手机号
|
||||
<image src="../../static/img/right.svg" mode=""></image>
|
||||
</view>
|
||||
<view class="btnList" @click="go('/pageMy/my/vip/index')">
|
||||
<image src="../../static/img/vip.svg" mode=""></image>
|
||||
VIP会员申请
|
||||
<image src="../../static/img/right.svg" mode=""></image>
|
||||
</view>
|
||||
<view class="btnList" @click="go('/pageMy/apply/applications')">
|
||||
<image src="../../static/img/apply.png" mode=""></image>
|
||||
我的申请
|
||||
<image src="../../static/img/right.svg" mode=""></image>
|
||||
</view>
|
||||
<view class="btnList" @click="go('/pageMy/my/set')">
|
||||
<image src="../../static/img/set.svg" mode=""></image>
|
||||
设置
|
||||
<image src="../../static/img/right.svg" mode=""></image>
|
||||
</view>
|
||||
<view class="btnList" @click="go('/pageMy/help/help')">
|
||||
<image src="../../static/img/help.svg" mode=""></image>
|
||||
帮助与反馈
|
||||
<image src="../../static/img/right.svg" mode=""></image>
|
||||
</view>
|
||||
</view>
|
||||
<view class="bottom" @click="makePhoneCall">
|
||||
客服电话 18500206848 工作时间 9:00-18:00
|
||||
</view>
|
||||
<cs-button></cs-button>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
mapGetters
|
||||
} from 'vuex'
|
||||
import {
|
||||
phoneFilter
|
||||
} from '@/untils/format.js'
|
||||
import {labourUnionInfo} from '@/api/federation.js'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
federationStatus: false
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
if (this.$store.state.user.token && this.authPass) {
|
||||
this.$store.dispatch('getVipCode')
|
||||
}
|
||||
},
|
||||
onShow() {
|
||||
if (!this.$store.state.user.token) {
|
||||
uni.redirectTo({
|
||||
url: '/pages/login/login'
|
||||
})
|
||||
} else {
|
||||
uni.$emit('newsReadChange')
|
||||
this.$store.dispatch('refreshAuthState')
|
||||
}
|
||||
this.labourUnionInfoInit()
|
||||
},
|
||||
methods: {
|
||||
labourUnionInfoInit(){
|
||||
labourUnionInfo().then(e=>{
|
||||
this.federationStatus = e.data.data.joined
|
||||
})
|
||||
},
|
||||
go(url) {
|
||||
uni.navigateTo({
|
||||
url
|
||||
})
|
||||
},
|
||||
makePhoneCall: function() {
|
||||
uni.makePhoneCall({
|
||||
phoneNumber: "18500206848"
|
||||
})
|
||||
},
|
||||
phoneFilter
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['userInfo', 'auth', 'authPass'])
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
page {
|
||||
height: 100%;
|
||||
background: #f6f6f6;
|
||||
}
|
||||
.federation{
|
||||
height: 48rpx;
|
||||
border-radius: 10rpx;
|
||||
padding: 28rpx 30rpx;
|
||||
margin: 30rpx;
|
||||
font-size: 32rpx;
|
||||
font-weight: 400;
|
||||
color: #6F5931;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
background: url(../../static/img/my/mybanner.png) no-repeat;
|
||||
background-size: cover;
|
||||
}
|
||||
.forMembership{
|
||||
width: 140rpx;
|
||||
height: 50rpx;
|
||||
background: linear-gradient(112deg, #EFE0BC 0%, #D29A5A 100%, #DDBA88 100%);
|
||||
box-shadow: 0px 0px 2px 1px rgba(231, 174, 85, 0.39);
|
||||
border-radius: 25rpx;
|
||||
font-size: 26rpx;
|
||||
font-weight: 400;
|
||||
color: #6F5931;
|
||||
line-height: 48rpx;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.bottom {
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 24rpx;
|
||||
color: #999999;
|
||||
/* position: absolute; */
|
||||
/* bottom: 120rpx; */
|
||||
/* width: 100%; */
|
||||
margin: 120rpx 0;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.btnList image:last-child {
|
||||
width: 19rpx;
|
||||
height: 32rpx;
|
||||
margin-left: auto;
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.btnList image {
|
||||
width: 52rpx;
|
||||
height: 52rpx;
|
||||
margin-right: 10rpx;
|
||||
}
|
||||
|
||||
.btnList {
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 32rpx;
|
||||
color: #333333;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: flex-start;
|
||||
padding: 30rpx 20rpx;
|
||||
}
|
||||
|
||||
.btn {
|
||||
width: 690rpx;
|
||||
margin: 0 auto;
|
||||
border-radius: 15rpx;
|
||||
background: #fefefe;
|
||||
}
|
||||
|
||||
.BarList {
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 28rpx;
|
||||
color: #666666;
|
||||
float: left;
|
||||
width: 25%;
|
||||
text-align: center;
|
||||
padding: 30rpx 0rpx;
|
||||
}
|
||||
|
||||
.BarList image {
|
||||
width: 52rpx;
|
||||
height: 52rpx;
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.centerBar {
|
||||
width: 690rpx;
|
||||
background-color: #fefefe;
|
||||
border-radius: 15rpx;
|
||||
overflow: hidden;
|
||||
position: absolute;
|
||||
bottom: -70rpx;
|
||||
left: 30rpx;
|
||||
}
|
||||
|
||||
.userContent {
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 26rpx;
|
||||
color: #FFFFFF;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.userTel {
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 36rpx;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
.userRight {
|
||||
float: left;
|
||||
height: 50rpx;
|
||||
line-height: 50rpx;
|
||||
}
|
||||
|
||||
.userTitle image {
|
||||
width: 100rpx;
|
||||
height: 100rpx;
|
||||
margin-right: 20rpx;
|
||||
float: left;
|
||||
border-radius: 200rpx;
|
||||
background-color: rgba(255, 255, 255, .3);
|
||||
}
|
||||
|
||||
.userTitle {
|
||||
padding: 0 30rpx;
|
||||
}
|
||||
|
||||
.head {
|
||||
background-color: #1B66FF;
|
||||
width: 100%;
|
||||
height: 200rpx;
|
||||
padding-top: 200rpx;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.body {
|
||||
background: #f6f6f6;
|
||||
height: 100%;
|
||||
position: relative;
|
||||
overflow: auto;
|
||||
}
|
||||
</style>
|
||||
@@ -1,163 +0,0 @@
|
||||
<template>
|
||||
<view class="body">
|
||||
<view v-for="(value,key) in data" class="newsList" @click="goList(value)" :key="key">
|
||||
<view class="newsIcon">
|
||||
<image :src="value.icon" mode=""></image>
|
||||
<view v-if="news.unread[value.id] > 0" class="point"></view>
|
||||
</view>
|
||||
<view class="newsListRight">
|
||||
<view class="head">
|
||||
<view class="head_left">
|
||||
{{value.title}}
|
||||
</view>
|
||||
<view class="head_right" v-if="value.data.length > 0">
|
||||
{{value.data[0][0][value.prop.time]}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="content" v-if="value.data.length > 0">
|
||||
{{value.prop.desc(value)}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<cs-button></cs-button>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
mapGetters
|
||||
} from 'vuex'
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
loading: false
|
||||
}
|
||||
},
|
||||
onLoad() {},
|
||||
onShow() {
|
||||
if (!this.$store.state.user.token) {
|
||||
uni.redirectTo({
|
||||
url: "/pages/login/login"
|
||||
})
|
||||
} else {
|
||||
uni.$emit('newsReadChange')
|
||||
}
|
||||
},
|
||||
onPullDownRefresh() {
|
||||
this.loading = true
|
||||
this.$store.dispatch("newsInit").then(() => {
|
||||
this.loading = false
|
||||
uni.stopPullDownRefresh();
|
||||
}).catch(() => {
|
||||
this.loading = false
|
||||
uni.stopPullDownRefresh();
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
goList(item) {
|
||||
if (item.data.length === 0) {
|
||||
uni.showToast({
|
||||
title: '暂无消息',
|
||||
icon: 'none'
|
||||
});
|
||||
return
|
||||
}
|
||||
uni.navigateTo({
|
||||
url: './newsList?type=' + item.id
|
||||
})
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['news']),
|
||||
data() {
|
||||
return this.news.data
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.content {
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 28rpx;
|
||||
color: #666666;
|
||||
width: 560rpx;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
/*不换行*/
|
||||
text-overflow: ellipsis;
|
||||
/*超出部分文字以...显示*/
|
||||
}
|
||||
|
||||
.head_right {
|
||||
float: right;
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 24rpx;
|
||||
color: #CCCCCC;
|
||||
}
|
||||
|
||||
.head_left {
|
||||
float: left;
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 36rpx;
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
.head {
|
||||
overflow: hidden;
|
||||
width: 560rpx;
|
||||
}
|
||||
|
||||
.newsListRight {
|
||||
float: left;
|
||||
width: 560rpx;
|
||||
height: 50rpx;
|
||||
line-height: 50rpx;
|
||||
padding-left: 30rpx;
|
||||
}
|
||||
|
||||
.newsList .newsIcon {
|
||||
position: relative;
|
||||
width: 100rpx;
|
||||
height: 100rpx;
|
||||
display: inline-block;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.newsList image {
|
||||
width: 100rpx;
|
||||
height: 100rpx;
|
||||
}
|
||||
|
||||
.newsList .point {
|
||||
position: absolute;
|
||||
top: 5rpx;
|
||||
right: 10rpx;
|
||||
width: 20rpx;
|
||||
height: 20rpx;
|
||||
background: red;
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
.newsList {
|
||||
border-bottom: 1rpx solid #dddddd;
|
||||
padding-bottom: 30rpx;
|
||||
padding-right: 30rpx;
|
||||
padding-top: 30rpx;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.body {
|
||||
background-color: #fefefe;
|
||||
padding-left: 30rpx;
|
||||
|
||||
width: 720rpx;
|
||||
}
|
||||
|
||||
page {
|
||||
background: #f6f6f6;
|
||||
}
|
||||
</style>
|
||||
@@ -1,100 +0,0 @@
|
||||
<template>
|
||||
<view>
|
||||
<view class="titlt">
|
||||
<view class="title_left">
|
||||
{{data.title}}
|
||||
</view>
|
||||
<view class="title_time">
|
||||
{{data.createTime}}
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="content">
|
||||
<rich-text :nodes="nodes"></rich-text>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
noticeDetail
|
||||
} from '@/api/news.js';
|
||||
import parseHtml from '@/untils/html-parser.js'
|
||||
import {
|
||||
mapGetters
|
||||
} from 'vuex'
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
content: {},
|
||||
data: {},
|
||||
nodes: []
|
||||
}
|
||||
},
|
||||
onLoad({
|
||||
type
|
||||
}) {
|
||||
this.id = type
|
||||
uni.setNavigationBarTitle({
|
||||
title: this.news.data[type].title
|
||||
});
|
||||
uni.$emit('getNewsDetail', (data) => {
|
||||
this.data = data
|
||||
})
|
||||
this.nodes = parseHtml(this.data.content)
|
||||
},
|
||||
onShow() {
|
||||
if (this.data.isRead === 0) {
|
||||
this.$store.dispatch('readNew', {
|
||||
key: this.id,
|
||||
id: this.data.id
|
||||
})
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['news']),
|
||||
list() {
|
||||
if (this.id) {
|
||||
return this.news.data[this.id].data
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.content {
|
||||
padding: 10rpx 30rpx;
|
||||
}
|
||||
|
||||
text {
|
||||
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 28rpx;
|
||||
color: #666666;
|
||||
}
|
||||
|
||||
.title_time {
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 24rpx;
|
||||
color: #CCCCCC;
|
||||
float: right;
|
||||
}
|
||||
|
||||
.titlt {
|
||||
overflow: hidden;
|
||||
padding: 10rpx 30rpx;
|
||||
|
||||
}
|
||||
|
||||
.title_left {
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 32rpx;
|
||||
color: #333333;
|
||||
float: left;
|
||||
}
|
||||
</style>
|
||||
@@ -1,202 +0,0 @@
|
||||
<template>
|
||||
<view>
|
||||
<view :key="group" v-for="(item,group) in list">
|
||||
<m-slide-list :prop="prop" :key="value.id" v-for="(value,index) in item" :value="value" :button="buttonList" @remove="click(value,group,index)"
|
||||
@controller-reg="controller.reg" @controller-moving="controller.moving" @controller-opened="controller.opened"
|
||||
@controller-closed="controller.closed">
|
||||
<view class="news-item">
|
||||
<view class="now-message-info" hover-class="uni-item--hover" @click="clickMethod(value)" :style="{width:windowWidth}">
|
||||
<view class="list-right">
|
||||
<view v-if="value[prop.isRead] === 0" class="point"></view>
|
||||
<view class="list-title">{{ value[prop.title] }}</view>
|
||||
<view class="list-detail">{{ value[prop.listDesc] }}</view>
|
||||
</view>
|
||||
<view class="list-right-1" v-if="value[prop.time]">{{ value[prop.time] }}</view>
|
||||
</view>
|
||||
<view style="clear:both"></view>
|
||||
</view>
|
||||
</m-slide-list>
|
||||
<!-- <view class="news-loading">
|
||||
加载中...
|
||||
</view> -->
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import mSlideList from '../../components/mark-slide-list/mark-slide-list.vue';
|
||||
import controller from '../../components/mark-slide-list/controller';
|
||||
import {
|
||||
mapGetters
|
||||
} from 'vuex'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
mSlideList
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
loading: false,
|
||||
id: '',
|
||||
controller: new controller(),
|
||||
buttonList: [{
|
||||
title: '删除',
|
||||
background: '#ff3b32',
|
||||
clickName: 'remove'
|
||||
}]
|
||||
};
|
||||
},
|
||||
onLoad({
|
||||
type
|
||||
}) {
|
||||
this.id = type
|
||||
uni.setNavigationBarTitle({
|
||||
title: this.news.data[type].title
|
||||
});
|
||||
},
|
||||
onPullDownRefresh() {
|
||||
this.loading = true
|
||||
this.$store.dispatch("newsReload", this.id).then(() => {
|
||||
this.loading = false
|
||||
uni.stopPullDownRefresh();
|
||||
}).catch(() => {
|
||||
this.loading = false
|
||||
uni.stopPullDownRefresh();
|
||||
})
|
||||
},
|
||||
// onPageScroll(obj) {},
|
||||
onReachBottom() {
|
||||
if (!this.loading) {
|
||||
this.loading = true
|
||||
this.$store.dispatch("newsGetNextPage", this.id).then(() => {
|
||||
this.loading = false
|
||||
})
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
//查看详情
|
||||
clickMethod(data) {
|
||||
this.news.data[this.id].navigateTo(data, this.$store.dispatch)
|
||||
},
|
||||
click(value, group, index) {
|
||||
this.$store.dispatch('removeNew', {
|
||||
id: value.id,
|
||||
key: this.id,
|
||||
group,
|
||||
index
|
||||
})
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['news']),
|
||||
list() {
|
||||
if (this.id) {
|
||||
return this.news.data[this.id].data
|
||||
}
|
||||
},
|
||||
prop() {
|
||||
if (this.id) {
|
||||
return this.news.data[this.id].prop
|
||||
}
|
||||
},
|
||||
windowWidth() {
|
||||
return uni.getSystemInfoSync().windowWidth + 'px';
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.uni-item--hover {
|
||||
background-color: #f1f1f1 !important;
|
||||
}
|
||||
|
||||
.news-item {
|
||||
height: 160rpx;
|
||||
}
|
||||
|
||||
.now-message-info {
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
/* justify-content: space-between; */
|
||||
font-size: 16px;
|
||||
clear: both;
|
||||
height: 160rpx;
|
||||
padding: 0 30rpx;
|
||||
// margin-bottom: 20rpx;
|
||||
background: #ffffff;
|
||||
float: left;
|
||||
border-bottom: 1px solid #f2f2f2;
|
||||
|
||||
.icon-image {
|
||||
border-radius: 10rpx;
|
||||
width: 100rpx;
|
||||
height: 100rpx;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.icon-circle {
|
||||
background: #3396fb;
|
||||
border-radius: 100%;
|
||||
width: 100rpx;
|
||||
height: 100rpx;
|
||||
line-height: 100rpx;
|
||||
text-align: center;
|
||||
color: #ffffff;
|
||||
font-weight: bold;
|
||||
font-size: 20px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.list-right {
|
||||
position: relative;
|
||||
float: left;
|
||||
margin-left: 25rpx;
|
||||
margin-right: 30rpx;
|
||||
|
||||
.point {
|
||||
position: absolute;
|
||||
top: 15rpx;
|
||||
left: -25rpx;
|
||||
width: 20rpx;
|
||||
height: 20rpx;
|
||||
background: red;
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
.list-title {
|
||||
width: 350rpx;
|
||||
line-height: 1.5;
|
||||
overflow: hidden;
|
||||
margin-bottom: 10rpx;
|
||||
color: #333;
|
||||
display: -webkit-box;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-line-clamp: 1;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.list-detail {
|
||||
width: 350rpx;
|
||||
font-size: 14px;
|
||||
color: #a9a9a9;
|
||||
display: -webkit-box;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-line-clamp: 1;
|
||||
overflow: hidden;
|
||||
}
|
||||
}
|
||||
|
||||
.list-right-1 {
|
||||
position: absolute;
|
||||
right: 30rpx;
|
||||
color: #a9a9a9;
|
||||
font-size: 24rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.news-loading {}
|
||||
</style>
|
||||
@@ -1,405 +0,0 @@
|
||||
<template>
|
||||
<view>
|
||||
<v-tabs :tabs="['最新','附近','推荐']" height="45px" v-model="activeTab" color="#999" activeColor="#000" fontSize="36rpx"
|
||||
activeFontSize="36rpx" @change='changeTab' />
|
||||
<image src="../../static/img/search.svg" @click="goSeach" class="topseach" mode=""></image>
|
||||
|
||||
<block v-if="activeTab==0">
|
||||
<view v-if="newList.length>0">
|
||||
<block v-for="(item, index) in newList" :key="index">
|
||||
<companyList :companyitem="item"></companyList>
|
||||
<view class="baddd"></view>
|
||||
</block>
|
||||
</view>
|
||||
<view v-else>
|
||||
<image src="../../static/img/pic_notask.svg" class="nothing" mode=""></image>
|
||||
<view class="nothing_text">暂无信息</view>
|
||||
</view>
|
||||
</block>
|
||||
|
||||
<block v-if="activeTab==1">
|
||||
<view>
|
||||
<view class="baddd"></view>
|
||||
<view class="location" @click="gomap">
|
||||
<image src="../../static/img/location.svg" mode=""></image>
|
||||
{{currentAddress}}(切换位置)
|
||||
<image src="../../static/img/right.svg" mode=""></image>
|
||||
</view>
|
||||
<view class="baddd"></view>
|
||||
</view>
|
||||
|
||||
<view v-if="companyList.length>0">
|
||||
<block v-for="(item, index) in companyList" :key="item.id">
|
||||
<companyList :companyitem="item" :near="activeTab===0"></companyList>
|
||||
<view class="baddd"></view>
|
||||
</block>
|
||||
</view>
|
||||
<view v-else>
|
||||
<image src="../../static/img/pic_notask.svg" mode="" class="nothing"></image>
|
||||
<view class="nothingContnt">
|
||||
暂无信息
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
|
||||
<block v-if="activeTab==2">
|
||||
<view v-if="recommendList.length>0">
|
||||
<block v-for="(item, index) in recommendList" :key="item.id">
|
||||
<companyList :companyitem="item"></companyList>
|
||||
<view class="baddd"></view>
|
||||
</block>
|
||||
</view>
|
||||
|
||||
<view v-else>
|
||||
<image src="../../static/img/pic_notask.svg" mode="" class="nothing"></image>
|
||||
<view class="nothingContnt">
|
||||
完善技能,获取精推荐
|
||||
</view>
|
||||
<view class="btn" @click="goResume">
|
||||
完善技能
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
|
||||
<cs-button></cs-button>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import vTabs from '@/components/v-tabs/v-tabs.vue';
|
||||
import testData from '@/common/textdata.js';
|
||||
import companyList from '@/components/companyList/companyList.vue';
|
||||
import {
|
||||
newMissionAll,
|
||||
recommendMission,
|
||||
nearMission
|
||||
} from '@/api/mission.js';
|
||||
import {
|
||||
getcoder
|
||||
} from "@/api/map.js";
|
||||
export default {
|
||||
components: {
|
||||
vTabs,
|
||||
companyList
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
activeTab: 0,
|
||||
companyList: [],
|
||||
recommendList: [],
|
||||
newList: [],
|
||||
nearPage: {
|
||||
current: 1,
|
||||
size: 10,
|
||||
total: 0
|
||||
},
|
||||
recommendPage: {
|
||||
current: 1,
|
||||
size: 10,
|
||||
total: 0
|
||||
},
|
||||
newPage: {
|
||||
current: 1,
|
||||
size: 10,
|
||||
total: 0
|
||||
},
|
||||
currentAddress: '',
|
||||
currentPoint: {
|
||||
latitude: 0,
|
||||
longitude: 0
|
||||
},
|
||||
key: 'FW3BZ-6JTK6-GCUS5-MZCRR-3GPR5-HJFEI',
|
||||
open:false
|
||||
}
|
||||
},
|
||||
onLoad:function(){
|
||||
this.getData()
|
||||
},
|
||||
onShow: function() {
|
||||
if (this.$store.state.user.token) {
|
||||
this.$store.dispatch('refreshAuthState').then((e) => {
|
||||
var auth = this.$store.state.auth
|
||||
if (!auth.bankCardState){
|
||||
this.step()
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
const value = uni.getStorageSync('active');
|
||||
if (value) {
|
||||
this.activeTab = value;
|
||||
uni.removeStorageSync('active')
|
||||
}
|
||||
},
|
||||
/*页面滚动到底部 换页*/
|
||||
onReachBottom: function() {
|
||||
this.upLoad()
|
||||
},
|
||||
/*下拉刷新*/
|
||||
onPullDownRefresh:function(){
|
||||
if (!this.$store.state.user.token) {
|
||||
uni.redirectTo({
|
||||
url: "/pages/login/login"
|
||||
});
|
||||
} else {
|
||||
this.download();
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
step(){
|
||||
var that = this
|
||||
that.open = true
|
||||
uni.showModal({
|
||||
title: '实名认证',
|
||||
content: `检查到您还未实名认证,实名认证之后才可进行操作哦`,
|
||||
showCancel: false,
|
||||
confirmText: '立即认证',
|
||||
success: function (res) {
|
||||
if (res.confirm) {
|
||||
that.goSign(0)
|
||||
} else if (res.cancel) {
|
||||
that.step()
|
||||
}
|
||||
that.open = false
|
||||
}
|
||||
});
|
||||
},
|
||||
// 步骤
|
||||
goSign(active){
|
||||
uni.navigateTo({
|
||||
url: `/pages/projectInfo/signContract?active=${active}`
|
||||
})
|
||||
},
|
||||
goResume: function() {
|
||||
uni.navigateTo({
|
||||
url: '/pageMy/my/resume/addSkill'
|
||||
})
|
||||
},
|
||||
/*定位*/
|
||||
getLocation: function() {
|
||||
var that = this;
|
||||
uni.getLocation({
|
||||
type: 'gcj02',
|
||||
success: function(res) {
|
||||
that.currentPoint = {
|
||||
latitude: res.latitude,
|
||||
longitude: res.longitude
|
||||
}
|
||||
that.getAddrByPoint(res);
|
||||
that.getNearList(that.currentPoint)
|
||||
},
|
||||
complete: function(e) {}
|
||||
});
|
||||
},
|
||||
/*逆地址解析*/
|
||||
getAddrByPoint: function(point) {
|
||||
var that = this;
|
||||
var location = point.latitude + ',' + point.longitude
|
||||
getcoder(location, encodeURI(that.key), 0).then(res => {
|
||||
that.currentAddress = res.data.result.address
|
||||
});
|
||||
},
|
||||
goSeach: function() {
|
||||
uni.navigateTo({
|
||||
url: '../seach/seach'
|
||||
})
|
||||
},
|
||||
gomap: function() {
|
||||
uni.navigateTo({
|
||||
url: '../mapSeach/mapSeach'
|
||||
})
|
||||
},
|
||||
changeTab: function(e) {
|
||||
this.activeTab = e;
|
||||
},
|
||||
//附近任务;
|
||||
getNearList: function(point) {
|
||||
nearMission(this.nearPage.current, this.nearPage.size, point.latitude, point.longitude, 50).then(res => {
|
||||
if (this.nearPage.current === 1) {
|
||||
this.companyList = [];
|
||||
}
|
||||
this.nearPage.current += 1;
|
||||
this.nearPage.total = res.data.data.total;
|
||||
if (res.data.data && res.data.data.records.length) {
|
||||
this.companyList = this.companyList.concat(res.data.data.records);
|
||||
}
|
||||
})
|
||||
},
|
||||
//推荐任务;
|
||||
getRecommendList: function() {
|
||||
recommendMission(this.recommendPage.current, this.recommendPage.size, '').then(res => {
|
||||
if (this.recommendPage.current === 1) {
|
||||
this.recommendList = [];
|
||||
}
|
||||
this.recommendPage.current += 1;
|
||||
this.recommendPage.total = res.data.data.total;
|
||||
if (res.data.data && res.data.data.records.length) {
|
||||
this.recommendList = this.recommendList.concat(res.data.data.records);
|
||||
}
|
||||
})
|
||||
},
|
||||
//最新任务;
|
||||
getNewList: function() {
|
||||
newMissionAll(this.newPage.current, this.newPage.size, '').then(res => {
|
||||
if (this.newPage.current === 1) {
|
||||
this.newList = [];
|
||||
}
|
||||
this.newPage.current += 1;
|
||||
this.newPage.total = res.data.data.total;
|
||||
if (res.data.data && res.data.data.records.length) {
|
||||
this.newList = this.newList.concat(res.data.data.records);
|
||||
}
|
||||
})
|
||||
},
|
||||
//上拉加载
|
||||
upLoad: function() {
|
||||
if (this.activeTab === 0) {
|
||||
if (this.nearPage.current <= Math.ceil(this.nearPage.total / this.nearPage.size)) {
|
||||
this.getNearList(this.currentPoint);
|
||||
} else {
|
||||
uni.showToast({
|
||||
icon: "none",
|
||||
title: '已经是最后一页',
|
||||
})
|
||||
}
|
||||
return
|
||||
}
|
||||
if (this.activeTab === 1) {
|
||||
if (this.recommendPage.current <= Math.ceil(this.recommendPage.total / this.recommendPage.size)) {
|
||||
this.getRecommendList();
|
||||
} else {
|
||||
uni.showToast({
|
||||
icon: "none",
|
||||
title: '已经是最后一页',
|
||||
})
|
||||
}
|
||||
return
|
||||
}
|
||||
if (this.activeTab === 2) {
|
||||
if (this.newPage.current <= Math.ceil(this.newPage.total / this.newPage.size)) {
|
||||
this.getNewList();
|
||||
} else {
|
||||
uni.showToast({
|
||||
icon: "none",
|
||||
title: '已经是最后一页',
|
||||
})
|
||||
}
|
||||
return
|
||||
}
|
||||
},
|
||||
//下拉刷新
|
||||
download: function() {
|
||||
if (this.activeTab === 0) {
|
||||
this.nearPage.current=1;
|
||||
this.getLocation();
|
||||
setTimeout(function () {
|
||||
uni.stopPullDownRefresh();
|
||||
}, 1000);
|
||||
return
|
||||
}
|
||||
if (this.activeTab === 1) {
|
||||
this.recommendPage.current=1;
|
||||
this.getRecommendList();
|
||||
setTimeout(function () {
|
||||
uni.stopPullDownRefresh();
|
||||
}, 1000);
|
||||
return
|
||||
}
|
||||
if (this.activeTab === 2) {
|
||||
this.newPage.current=1;
|
||||
this.getNewList();
|
||||
setTimeout(function () {
|
||||
uni.stopPullDownRefresh();
|
||||
}, 1000);
|
||||
return
|
||||
}
|
||||
},
|
||||
getData:function(){
|
||||
if (!this.$store.state.user.token) {
|
||||
uni.redirectTo({
|
||||
url: "/pages/login/login"
|
||||
});
|
||||
} else {
|
||||
uni.$emit('newsReadChange');
|
||||
this.nearPage.current = 1;
|
||||
this.recommendPage.current=1;
|
||||
this.newPage.current=1;
|
||||
this.getLocation();
|
||||
this.getRecommendList();
|
||||
this.getNewList();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.topseach {
|
||||
width: 25px;
|
||||
height: 25px;
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
right: 30rpx;
|
||||
}
|
||||
|
||||
.location image:last-child {
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
.location image {
|
||||
width: 40rpx;
|
||||
height: 40rpx;
|
||||
margin-right: 10rpx;
|
||||
}
|
||||
|
||||
.location {
|
||||
padding: 20rpx 30rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: flex-start;
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 28rpx;
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
.btn {
|
||||
margin: 0 auto;
|
||||
color: #999;
|
||||
border: 1rpx solid #999;
|
||||
font-size: 28rpx;
|
||||
height: 52rpx;
|
||||
line-height: 52rpx;
|
||||
text-align: center;
|
||||
width: 180rpx;
|
||||
border-radius: 5rpx;
|
||||
margin-top: 30rpx;
|
||||
}
|
||||
|
||||
.nothing_text {
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 28rpx;
|
||||
color: #666666;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.nothingContnt {
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 28rpx;
|
||||
color: #333333;
|
||||
margin-top: 30rpx;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.nothing {
|
||||
width: 400rpx;
|
||||
height: 200rpx;
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
margin-top: 300rpx;
|
||||
}
|
||||
|
||||
.baddd {
|
||||
background: #f6f6f6;
|
||||
height: 20rpx;
|
||||
}
|
||||
</style>
|
||||
@@ -1,504 +0,0 @@
|
||||
<template>
|
||||
<view v-if="showDetail">
|
||||
<view class="head">
|
||||
<view class="proname">
|
||||
{{info.missionTitle}}
|
||||
</view>
|
||||
<view class="prolist">
|
||||
任务编码:{{info.missionNo}}
|
||||
</view>
|
||||
<view class="prolist">
|
||||
任务日期:{{dateFormat((info.stime))}}至{{dateFormat((info.etime))}}
|
||||
</view>
|
||||
<view class="prolist">
|
||||
报名截止:{{dateFormat((info.etimePub))}}
|
||||
</view>
|
||||
<view class="prolist">
|
||||
行业类型:{{info.tradeNames}}
|
||||
</view>
|
||||
<view class="prolist">
|
||||
工种类型:{{info.worktypeNames}}
|
||||
</view>
|
||||
<view class="fee">
|
||||
{{info.wage}}{{wageUnit[info.wageUnitCategory]}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="head">
|
||||
<view class="proname proneed">
|
||||
任务要求
|
||||
</view>
|
||||
<view class="prolist">
|
||||
<view class="protype">
|
||||
年龄要求:{{age[info.ageDesc]}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="prolist">
|
||||
<view class="protype">
|
||||
学历要求:{{education[info.education]}}
|
||||
</view>
|
||||
<view class="protype">
|
||||
经验要求:{{experience[info.experienceDesc]}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="prolist proint">
|
||||
任务描述
|
||||
</view>
|
||||
<view class="prolist description">
|
||||
{{info.missionDesc}}
|
||||
</view>
|
||||
<!-- 技能标签 start -->
|
||||
<view class="ask">
|
||||
<view class="askList" v-for="(item,index) in skillNames" :key="index">
|
||||
{{item}}
|
||||
</view>
|
||||
</view>
|
||||
<!-- 技能标签 end -->
|
||||
</view>
|
||||
<view class="head">
|
||||
<view class="proname proneed">
|
||||
公司信息
|
||||
</view>
|
||||
<view class="prolist">
|
||||
{{info.companyName}}
|
||||
</view>
|
||||
<view class="prolist">
|
||||
公司地址:{{info.companyAddress}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="head">
|
||||
<view class="proname proneed">
|
||||
联系方式
|
||||
</view>
|
||||
<view class="prolist">
|
||||
<view class="protype">
|
||||
联系人:{{info.callName}}
|
||||
</view>
|
||||
<view class="protype">
|
||||
联系方式:{{info.callTel}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="prolist" v-if="info.callNumber">
|
||||
座机号:{{info.callNumber}}
|
||||
</view>
|
||||
<view class="prolist">
|
||||
任务地址:{{info.address}}
|
||||
</view>
|
||||
<map class="map" :latitude="latitude" :longitude="longitude" :markers="covers"></map>
|
||||
</view>
|
||||
<view class="" style="height:200rpx;background-color: #f6f6f6;" v-if="isShow!=='0'"></view>
|
||||
<view class="btn" @click="submit" v-if="isShow!=='0'&&status===0">
|
||||
<view class="bottombtn flexbtn">
|
||||
抢任务
|
||||
</view>
|
||||
</view>
|
||||
<view class="btn" v-if="isShow!=='0'&&status!==0">
|
||||
<!-- <view class="bottombtn lookContract" @click="lookMask">查看合同</view> -->
|
||||
<view class="bottombtn disabledBtn flexbtn">已抢任务</view>
|
||||
</view>
|
||||
<uniMask :maskShow="maskShow">
|
||||
<view class="contractMask">
|
||||
<!-- #ifdef H5 || APP-PLUS -->
|
||||
<view class="close" @click="close" style="top: 124rpx;">+</view>
|
||||
<!-- #endif -->
|
||||
<!-- #ifdef MP-WEIXIN -->
|
||||
<view class="close" @click="close">+</view>
|
||||
<!-- #endif -->
|
||||
<view style="height: 30px;"></view>
|
||||
<img :src="src" alt="" style="width:100%;height: 1000px;">
|
||||
<view v-if="nextBtn" class="down" @click="next">下一步</view>
|
||||
</view>
|
||||
</uniMask>
|
||||
</view>
|
||||
<view v-else-if="showCode" class="codeSealBox">
|
||||
<!-- #ifdef H5 || APP-PLUS -->
|
||||
<view class="closeCode" @click="closeShowCode" style="top: 124rpx;">+</view>
|
||||
<!-- #endif -->
|
||||
<!-- #ifdef MP-WEIXIN -->
|
||||
<view class="closeCode" @click="closeShowCode">+</view>
|
||||
<!-- #endif -->
|
||||
|
||||
<view class="title">
|
||||
<view class="name">签名密码</view>
|
||||
<view class="tip">6位数字签名密码</view>
|
||||
</view>
|
||||
<view style="height: 36px;"></view>
|
||||
<valid-code ref="validCode" @finish="getInpCode" :maxlength="maxlength"></valid-code>
|
||||
<view style="height: 36px;"></view>
|
||||
<view class="forget" @click="forget">忘记密码?</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {mapGetters} from 'vuex'
|
||||
import {missionDetail,submit} from '@/api/mission.js';
|
||||
import {GoLogin} from '@/untils/AxiosUtils.js';
|
||||
import {setRead} from '@/api/news.js';
|
||||
import {checkPass} from '@/api/auth.js';
|
||||
import dictionary from '@/common/textdata.js';
|
||||
import {dateFormat} from "../../untils/format.js";
|
||||
import uniMask from '@/components/uni-mask/mask.vue'
|
||||
import validCode from '@/components/p-valid-code/p-valid-code.vue'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
...dictionary,
|
||||
info: {},
|
||||
status: null,
|
||||
showDetail: false,
|
||||
showCode: false,
|
||||
maskShow: false,
|
||||
nextBtn: false,
|
||||
loading: false,
|
||||
latitude: 39.909, //中心点
|
||||
longitude: 116.39742,
|
||||
covers: [{ //marker标记位置
|
||||
id: 0,
|
||||
latitude: 0,
|
||||
longitude: 0,
|
||||
// width:30,
|
||||
// height:30,
|
||||
iconPath: '../../static/img/location.png'
|
||||
}],
|
||||
missionNo: "",
|
||||
isShow: '',
|
||||
type: '',
|
||||
id: '',
|
||||
src: 'https://jlfiles.oss-cn-zhangjiakou.aliyuncs.com/jobslink-api/doc/%E7%94%B5%E5%AD%90%E5%90%88%E5%90%8C%E9%A2%84%E8%A7%88%E5%9B%BE%E7%89%87.png',
|
||||
maxlength: 6
|
||||
}
|
||||
},
|
||||
components: {uniMask,validCode},
|
||||
onLoad: function(option) { //option为object类型,会序列化上个页面传递的参数
|
||||
this.$store.dispatch('setAutograph')
|
||||
if (option.missionNo) {
|
||||
this.missionNo = decodeURIComponent(option.missionNo);
|
||||
}
|
||||
if (option.isCan) {
|
||||
this.isShow = option.isCan; //isShow为'0'则为我的任务、我的评价过来的,需要隐藏抢任务按钮
|
||||
}
|
||||
if (option.type) {
|
||||
this.type = option.type; //type为1则为消息邀请过来的,需要设置消息已读;
|
||||
}
|
||||
if (option.id) {
|
||||
this.id = option.id; //消息id
|
||||
}
|
||||
},
|
||||
onShow: function() {
|
||||
this.showDetail = true
|
||||
this.getData();
|
||||
},
|
||||
onShareAppMessage(obj) {
|
||||
return {
|
||||
title: this.info.missionTitle,
|
||||
path: `/pages/projectInfo/projectInfo?missionNo=${this.info.missionNo}`
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
dateFormat,
|
||||
getData: function() {
|
||||
const self = this;
|
||||
missionDetail(self.missionNo).then(res => {
|
||||
self.info = res.data.data;
|
||||
self.status = res.data.data.detailStatus;
|
||||
self.latitude = self.info.lat;
|
||||
self.longitude = self.info.lon;
|
||||
self.covers[0].latitude = self.info.lat;
|
||||
self.covers[0].longitude = self.info.lon;
|
||||
self.showDetail = true;
|
||||
if (self.type === 1) {
|
||||
// 设置已读
|
||||
setRead(self.id).then(res => {
|
||||
self.$store.commit("SET_READ");
|
||||
})
|
||||
}
|
||||
}, error => {
|
||||
console.log(error);
|
||||
});
|
||||
},
|
||||
submit: function() {
|
||||
if (!this.$store.state.user.token) {
|
||||
GoLogin()
|
||||
return
|
||||
}
|
||||
if(this.loading) return
|
||||
const auth = this.auth
|
||||
const contractOn = this.info.contractOn
|
||||
const sealOk = this.autograph && this.autograph.data && this.autograph.data.signSrcUrl
|
||||
// if (sealOk) {
|
||||
// console.log('直接抢任务')
|
||||
// this.submitTask()
|
||||
// } else
|
||||
// if (!auth.realNameState || !auth.laborState || !auth.insureState) {
|
||||
// this.goSign(0)
|
||||
// } else if (!auth.bankCardState){
|
||||
// this.goSign(1)
|
||||
// } else
|
||||
if (contractOn && !sealOk) {
|
||||
this.goSign(2)
|
||||
} else if (sealOk && contractOn){
|
||||
this.nextBtn = true
|
||||
this.lookMask()
|
||||
} else {
|
||||
this.submitTask()
|
||||
}
|
||||
},
|
||||
// 查看合同
|
||||
lookMask(){
|
||||
this.maskShow = true
|
||||
},
|
||||
// 抢任务
|
||||
submitTask(){
|
||||
submit(this.missionNo).then(res => {
|
||||
uni.hideLoading()
|
||||
uni.showToast({
|
||||
title: '操作成功',
|
||||
icon: 'none'
|
||||
});
|
||||
this.status = null;
|
||||
this.loading = false
|
||||
}, error => {
|
||||
this.loading = false
|
||||
});
|
||||
},
|
||||
// 步骤
|
||||
goSign(active){
|
||||
uni.navigateTo({
|
||||
url: `/pages/projectInfo/signContract?active=${active}`
|
||||
})
|
||||
},
|
||||
// 关闭弹窗
|
||||
close(){
|
||||
this.maskShow = false
|
||||
},
|
||||
// 合同下一步
|
||||
next(){
|
||||
this.maskShow = false
|
||||
this.showDetail = false
|
||||
this.showCode = true
|
||||
},
|
||||
// 输入签名密码
|
||||
getInpCode(password){
|
||||
uni.showLoading({
|
||||
title:"请求中..."
|
||||
})
|
||||
this.loading = true
|
||||
var obj = {
|
||||
pass: password
|
||||
}
|
||||
checkPass(obj).then(res => {
|
||||
this.submitTask()
|
||||
this.closeShowCode()
|
||||
}).catch(err => {
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
// 关闭签名密码弹窗
|
||||
closeShowCode(){
|
||||
this.showCode = false
|
||||
this.showDetail = true
|
||||
},
|
||||
// 忘记密码
|
||||
forget(){
|
||||
uni.navigateTo({
|
||||
url: `/pageMy/setUserBase/seal/forget?forget=true`
|
||||
})
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['auth', 'autograph']),
|
||||
skillNames() {
|
||||
if (this.info.skillNames) {
|
||||
return this.info.skillNames.split(',')
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.codeSealBox{
|
||||
padding: 285rpx 72rpx 0 72rpx;
|
||||
.closeCode{
|
||||
position: absolute;
|
||||
right: 36rpx;
|
||||
top: 120rpx;
|
||||
color: #1B66FF;
|
||||
transform: rotate(45deg);
|
||||
font-size: 40px;
|
||||
}
|
||||
.title{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.name{
|
||||
height: 46rpx;
|
||||
font-size: 46rpx;
|
||||
font-family: PingFangSC-Medium, PingFang SC;
|
||||
font-weight: 500;
|
||||
color: #333333;
|
||||
line-height: 46rpx;
|
||||
margin-right: 28rpx;
|
||||
}
|
||||
.tip{
|
||||
height: 38rpx;
|
||||
font-size: 28rpx;
|
||||
font-family: PingFangSC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #999999;
|
||||
line-height: 38rpx;
|
||||
}
|
||||
.forget{
|
||||
height: 38rpx;
|
||||
font-size: 28rpx;
|
||||
font-family: PingFangSC-Regular, PingFang SC;
|
||||
font-weight: 400;
|
||||
color: #5AA0FA;
|
||||
line-height: 38rpx;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
}
|
||||
.contractMask{
|
||||
background-color: #FFFFFF;
|
||||
margin: 30rpx;
|
||||
position: relative;
|
||||
border-radius: 4px;
|
||||
height: 96%;
|
||||
overflow: auto;
|
||||
.close{
|
||||
width: 23px;
|
||||
height: 23px;
|
||||
color: #1B66FF;
|
||||
position: fixed;
|
||||
right: 60rpx;
|
||||
top: 60rpx;
|
||||
transform: rotate(45deg);
|
||||
font-size: 40px;
|
||||
}
|
||||
.down{
|
||||
position:fixed;
|
||||
bottom: 30px;
|
||||
left:14%;
|
||||
width: 545rpx;
|
||||
height: 90rpx;
|
||||
line-height: 90rpx;
|
||||
text-align: center;
|
||||
background: #1B66FF;
|
||||
font-size: 36rpx;
|
||||
font-weight: 400;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
}
|
||||
.lookContract{
|
||||
width: 30%;
|
||||
margin-right: 30rpx;
|
||||
}
|
||||
.flexbtn{
|
||||
flex:1;
|
||||
}
|
||||
.bottombtn {
|
||||
background-color: #1B66FF;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
border-radius: 10rpx;
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 32rpx;
|
||||
height: 90rpx;
|
||||
line-height: 90rpx;
|
||||
}
|
||||
|
||||
.btn {
|
||||
background-color: #fefefe;
|
||||
width: 690rpx;
|
||||
padding: 30rpx;
|
||||
padding-bottom: 80rpx;
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
display:flex;
|
||||
}
|
||||
|
||||
.disabledBtn {
|
||||
background-color: #c8c9cc;
|
||||
}
|
||||
|
||||
.map {
|
||||
width: 100%;
|
||||
height: 350rpx;
|
||||
margin-top: 30rpx;
|
||||
}
|
||||
|
||||
.askList {
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 24rpx;
|
||||
color: #666666;
|
||||
background-color: #f6f6f6;
|
||||
padding: 5rpx 15rpx;
|
||||
margin-right: 10rpx;
|
||||
margin-top: 15rpx;
|
||||
}
|
||||
|
||||
.ask {
|
||||
overflow: hidden;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex-wrap: wrap;
|
||||
justify-content: flex-start;
|
||||
margin: 20rpx 0;
|
||||
|
||||
}
|
||||
|
||||
.proint {
|
||||
margin-top: 30rpx;
|
||||
font-size: 30rpx !important;
|
||||
}
|
||||
|
||||
.proneed {
|
||||
font-size: 32rpx !important;
|
||||
|
||||
}
|
||||
|
||||
.fee {
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 32rpx;
|
||||
color: #F46161;
|
||||
margin-top: 30rpx;
|
||||
}
|
||||
|
||||
.protype {
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
.prolist {
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 28rpx;
|
||||
color: #666666;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
text-align: left;
|
||||
padding: 5rpx 0;
|
||||
}
|
||||
|
||||
.proname {
|
||||
font-weight: bold;
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 40rpx;
|
||||
color: #333333;
|
||||
width: 90%;
|
||||
overflow: hidden;
|
||||
padding-bottom: 20rpx;
|
||||
}
|
||||
|
||||
.head {
|
||||
padding: 30rpx;
|
||||
background: #fefefe;
|
||||
border-bottom: 20rpx solid #f6f6f6;
|
||||
}
|
||||
|
||||
.description {
|
||||
word-break: break-all;
|
||||
white-space: pre-line;
|
||||
}
|
||||
</style>
|
||||
@@ -1,90 +0,0 @@
|
||||
<template>
|
||||
<view>
|
||||
<view class="tips">为了更方便的为您服务,请先完善认证信息!</view>
|
||||
<!--<step-bar :stepList="stepList" :active="active"></step-bar>-->
|
||||
<first v-if="active === '0' || active === 0" ref="first" @firstSubmit="backSubmit"></first>
|
||||
<second v-if="active === '1' || active === 1" ref="second" @secondSubmit="backSubmit" :stepLength="stepLength"></second>
|
||||
<three v-if="active === '2' || active === 2"></three>
|
||||
<view class="backLogin" @click="logout">
|
||||
退出登录
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import stepBar from '@/components/step-bar/index.vue'
|
||||
import first from './step/first.vue'
|
||||
import second from './step/second.vue'
|
||||
import three from './step/three.vue'
|
||||
export default{
|
||||
data() {
|
||||
return {
|
||||
stepList: ['实名认证','银行卡认证'],
|
||||
active: 0,
|
||||
stepLength: 2
|
||||
}
|
||||
},
|
||||
onLoad(options){
|
||||
if (Number(options.active) === 2) {
|
||||
this.stepList.push('个人签名')
|
||||
this.stepLength = 3
|
||||
}
|
||||
this.active = options.active
|
||||
},
|
||||
components: {stepBar,first, second, three},
|
||||
methods: {
|
||||
logout() {
|
||||
this.$store.dispatch('LogOut').then(() => {
|
||||
uni.reLaunch({
|
||||
url: '/pages/login/login'
|
||||
})
|
||||
this.$store.dispatch('clearAuthState')
|
||||
this.$store.dispatch('endRefreshNewsTimer')
|
||||
})
|
||||
},
|
||||
backSubmit(){
|
||||
this.sign()
|
||||
},
|
||||
sign(){
|
||||
this.loading = false
|
||||
if (Number(this.active)+1 === this.stepList.length) {
|
||||
if (this.stepList.length === 2) {
|
||||
uni.switchTab({
|
||||
url: '/pages/index/index'
|
||||
})
|
||||
} else if (this.stepList.length === 3) {
|
||||
uni.navigateBack({
|
||||
delta: 1
|
||||
})
|
||||
}
|
||||
} else {
|
||||
this.active++
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
page{
|
||||
background-color: #FFFFFF;
|
||||
}
|
||||
.tips{
|
||||
font-size: 28rpx;
|
||||
font-weight: 400;
|
||||
color: #999999;
|
||||
line-height: 28rpx;
|
||||
margin: 45rpx 0 50rpx 30rpx;
|
||||
}
|
||||
.backLogin{
|
||||
width: 128rpx;
|
||||
height: 45rpx;
|
||||
font-size: 32rpx;
|
||||
font-weight: 400;
|
||||
color: #1C66FF;
|
||||
line-height: 45rpx;
|
||||
position: absolute;
|
||||
bottom: 100rpx;
|
||||
left: 40%;
|
||||
}
|
||||
</style>
|
||||
@@ -1,358 +0,0 @@
|
||||
<template>
|
||||
<view>
|
||||
<!--<view style="height: 70rpx;"></view>-->
|
||||
<view class="list border" style="padding-right: 32rpx;">
|
||||
<view class="name">
|
||||
姓名
|
||||
</view>
|
||||
<text v-if="auth.realNameState" style="color: #1B66FF;">{{auth.authInfo.realName}}</text>
|
||||
<input v-else type="text" :value="name" placeholder="请输入" @input="setName" placeholder-style="color:#cccccc;" />
|
||||
</view>
|
||||
<view class="border" style="padding-right: 32rpx;">
|
||||
<view class="list">
|
||||
<view class="name">
|
||||
身份证号
|
||||
</view>
|
||||
<text v-if="auth.realNameState" style="color: #1B66FF;">{{idNumberFilter(auth.authInfo.idNumber)}}</text>
|
||||
<input v-else type="idcard" :value="card" placeholder="请输入" @input="setCard" style="text-transform:uppercase"
|
||||
placeholder-style="color:#cccccc;" />
|
||||
</view>
|
||||
<view v-if="error" class="error">身份证号格式不正确</view>
|
||||
</view>
|
||||
<view class="list border">
|
||||
<view class="listLeft">
|
||||
开户银行
|
||||
</view>
|
||||
<view v-if="auth.bankCardState" class="listRight" style="margin-right:32rpx;">
|
||||
{{auth.authInfo.bankName}}
|
||||
</view>
|
||||
<view v-else class="listRight" @click="goBankList">
|
||||
{{bankName}}
|
||||
<image src="@/static/img/right.svg" mode=""></image>
|
||||
</view>
|
||||
</view>
|
||||
<view class="list border">
|
||||
<view class="name">
|
||||
银行卡号
|
||||
</view>
|
||||
<text v-if="auth.bankCardState" style="color: #1B66FF;">{{auth.authInfo.cardNumber}}</text>
|
||||
<input v-else type="number" v-model="cardNumber" placeholder="请输入银行卡号" placeholder-style="color:#cccccc;" @input="blur" />
|
||||
</view>
|
||||
<picker @change="bindPickerChange" :value="index" :range="laborType" class="border">
|
||||
<view class="list">
|
||||
<view class="listLeft">
|
||||
<view class="listTitle">身份信息</view>
|
||||
</view>
|
||||
<view class="listRight">
|
||||
<view class="rightContent nochoose">
|
||||
<view v-if="auth.laborState" class="uni-input">{{ laborType[0] }}</view>
|
||||
<view v-else class="uni-input">请选择</view>
|
||||
</view>
|
||||
<image src="@/static/img/right.svg" mode=""></image>
|
||||
</view>
|
||||
</view>
|
||||
</picker>
|
||||
<picker @change="bindPickerChangeBao" :value="indexbao" :range="insureType" class="border">
|
||||
<view class="list">
|
||||
<view class="listLeft">
|
||||
<view class="listTitle">社保信息</view>
|
||||
</view>
|
||||
<view class="listRight">
|
||||
<view class="rightContent nochoose">
|
||||
<view v-if="auth.insureState" class="uni-input">{{ insureType[indexbao] }}</view>
|
||||
<view v-else class="uni-input">请选择</view>
|
||||
</view>
|
||||
<image src="@/static/img/right.svg" mode=""></image>
|
||||
</view>
|
||||
</view>
|
||||
</picker>
|
||||
<view class="btn">
|
||||
<view v-if="auth.realNameState && auth.bankCardState" @click="next" class="bottombtn">
|
||||
完成
|
||||
</view>
|
||||
<view v-if="!loading && !status && !auth.bankCardState" class="bottombtn nocheck">
|
||||
完成
|
||||
</view>
|
||||
<view v-if="!loading && status && !auth.bankCardState" @click="next" class="bottombtn">
|
||||
完成
|
||||
</view>
|
||||
<view v-if="loading" class="bottombtn nocheck">
|
||||
提交中
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import textdata from '@/common/textdata.js'
|
||||
import {
|
||||
mapGetters
|
||||
} from 'vuex'
|
||||
import {
|
||||
idNumberFilter
|
||||
} from '@/untils/format.js'
|
||||
import {
|
||||
check18IdCardNo,
|
||||
validatenull
|
||||
} from '@/untils/validate.js'
|
||||
import {
|
||||
getStore
|
||||
} from '@/untils/store.js'
|
||||
import {
|
||||
newCertification,findAuth
|
||||
} from '@/api/auth.js'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
laborType: textdata.laborType,
|
||||
insureType: textdata.insureType,
|
||||
name: '',
|
||||
card: '',
|
||||
error: false,
|
||||
loading: false,
|
||||
index: 0,
|
||||
bankName: "选择银行",
|
||||
cardNumber: "",
|
||||
bankId: "",
|
||||
clickable: false,
|
||||
def: true, //银行卡是否为默认
|
||||
defCount: 5, //默认每日允许认证次数
|
||||
realCount:0,//已经认证的次数
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
const realName = getStore({
|
||||
name: 'realName'
|
||||
})
|
||||
const bankCard = getStore({
|
||||
name: 'bankCard'
|
||||
})
|
||||
if (bankCard && bankCard.bankName) {
|
||||
this.bankName = bankCard.bankName
|
||||
this.bankId = bankCard.bankId
|
||||
this.cardNumber = bankCard.cardNumber
|
||||
}
|
||||
if (realName && realName.name) {
|
||||
this.name = realName.name
|
||||
this.card = realName.card
|
||||
}
|
||||
|
||||
},
|
||||
methods: {
|
||||
idNumberFilter,
|
||||
next() {
|
||||
var auth = this.auth
|
||||
console.log(auth.realNameState,auth.laborState , auth.insureState)
|
||||
if (auth.realNameState && auth.laborState && auth.insureState && auth.bankCardState) {
|
||||
this.$emit('firstSubmit')
|
||||
} else {
|
||||
this.submit()
|
||||
}
|
||||
},
|
||||
setName: function(e) {
|
||||
this.name = e.detail.value;
|
||||
this.setFirstObj()
|
||||
},
|
||||
setCard: function(e) {
|
||||
this.card = e.detail.value.toUpperCase();
|
||||
this.error = !check18IdCardNo(this.card)
|
||||
this.setFirstObj()
|
||||
return e.detail.value.toUpperCase()
|
||||
},
|
||||
bindPickerChange: function(e) {
|
||||
uni.showLoading()
|
||||
this.$store.dispatch('authLabor').then(resp => {
|
||||
this.index = e.target.value;
|
||||
uni.hideLoading()
|
||||
}).catch(() => {
|
||||
uni.hideLoading()
|
||||
})
|
||||
},
|
||||
bindPickerChangeBao: function(e) {
|
||||
uni.showLoading()
|
||||
this.$store.dispatch('authInsure', e.target.value * 1 + 1).then(resp => {
|
||||
uni.hideLoading()
|
||||
}).catch(() => {
|
||||
uni.hideLoading()
|
||||
})
|
||||
},
|
||||
setFirstObj() {
|
||||
var obj = {
|
||||
name: this.name,
|
||||
card: this.card
|
||||
}
|
||||
this.$store.dispatch('setRealName', obj)
|
||||
},
|
||||
submit() {
|
||||
findAuth().then(res=>{
|
||||
let count = res.data.data.authCount; //每次点“提交”都先查询已经认证了几次
|
||||
let diffCount = this.defCount - count; //剩余认证机会
|
||||
this.loading = true;
|
||||
if (count <= this.defCount) {
|
||||
let name=this.auth.realNameState?this.auth.authInfo.realName:this.name;
|
||||
let card=this.auth.realNameState?this.auth.authInfo.idNumber:this.card;
|
||||
newCertification(this.indexbao + 1, name, card, this.cardNumber, this.bankId, this.def ? 1 : 0, this.bankName)
|
||||
.then( //认证成功则跳转到首页面
|
||||
res => {
|
||||
uni.showToast({
|
||||
title: res.data.msg,
|
||||
icon: 'none'
|
||||
})
|
||||
this.$store.commit('SET_AUTH_REALNAME', true)
|
||||
this.$store.dispatch('setRealName', {})
|
||||
this.$store.commit('SET_AUTH_BANKCARD', true)
|
||||
this.loading = false
|
||||
uni.switchTab({
|
||||
url: '/pages/index/index'
|
||||
})
|
||||
}).catch((err) => { //认证失败会提示还有几次认证机会
|
||||
if (count > 1 && count <= 5) {
|
||||
//uni.hideToast();
|
||||
setTimeout(() => {
|
||||
uni.showToast({
|
||||
title: `今日已认证${count}次,还有${diffCount}次认证机会`,
|
||||
icon: 'none',
|
||||
duration: 3000
|
||||
})
|
||||
}, 1000)
|
||||
|
||||
}
|
||||
this.loading = false;
|
||||
|
||||
})
|
||||
} else {
|
||||
if (count >= this.defCount) {
|
||||
uni.showToast({
|
||||
title: `今日已认证${this.defCount}次,请明日再来认证`,
|
||||
icon: 'none',
|
||||
duration: 3000
|
||||
})
|
||||
this.loading = false;
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
},
|
||||
goBankList: function() {
|
||||
uni.$once('icCardSetBank', (data) => {
|
||||
this.bankId = data.id;
|
||||
this.bankName = data.name;
|
||||
this.setBankName()
|
||||
})
|
||||
uni.navigateTo({
|
||||
url: '/pages/bankList/bankList'
|
||||
})
|
||||
},
|
||||
setBankName() {
|
||||
const obj = {
|
||||
bankName: this.bankName,
|
||||
bankId: this.bankId,
|
||||
cardNumber: this.cardNumber
|
||||
}
|
||||
this.$store.dispatch('setBankCard', obj)
|
||||
},
|
||||
blur() {
|
||||
this.setBankName();
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['auth', 'authInfo']),
|
||||
indexbao() {
|
||||
if (this.auth.insureState) {
|
||||
return this.authInfo.bakValue - 1
|
||||
} else {
|
||||
return 0
|
||||
}
|
||||
},
|
||||
status() {
|
||||
if (this.auth.authInfo.realName && this.auth.authInfo.idNumber) {
|
||||
if (!this.cardNumber || !this.bankId || !this.auth.laborState || !this.auth.insureState) {
|
||||
return false
|
||||
} else {
|
||||
return true
|
||||
}
|
||||
} else {
|
||||
if (!this.name || !this.card || !this.cardNumber || !this.bankId || !this.auth.laborState || !this.auth.insureState) {
|
||||
return false
|
||||
} else {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.nocheck {
|
||||
opacity: 0.3;
|
||||
}
|
||||
|
||||
.bottombtn {
|
||||
background-color: #1B66FF;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
border-radius: 10rpx;
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 32rpx;
|
||||
height: 90rpx;
|
||||
line-height: 90rpx;
|
||||
}
|
||||
|
||||
.btn {
|
||||
background-color: #fefefe;
|
||||
padding: 70rpx 80rpx;
|
||||
}
|
||||
|
||||
.error {
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 24rpx;
|
||||
color: red;
|
||||
position: absolute;
|
||||
right: 15px;
|
||||
top: 14px;
|
||||
height: 1px;
|
||||
}
|
||||
|
||||
input {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.border {
|
||||
border-bottom: 1px solid #DDDDDD;
|
||||
height: 88rpx;
|
||||
line-height: 88rpx;
|
||||
position: relative;
|
||||
margin: 0 30rpx;
|
||||
}
|
||||
|
||||
.listRight {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 28rpx;
|
||||
color: #999999;
|
||||
}
|
||||
|
||||
.listRight image {
|
||||
width: 19rpx;
|
||||
height: 32rpx;
|
||||
margin-left: 15rpx;
|
||||
}
|
||||
|
||||
.list .name {
|
||||
width: 200rpx;
|
||||
}
|
||||
|
||||
.list {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 32rpx;
|
||||
color: #333333;
|
||||
}
|
||||
</style>
|
||||
@@ -1,224 +0,0 @@
|
||||
<template>
|
||||
<view style="margin-top: 70rpx;">
|
||||
<view class="list">
|
||||
<view class="listName">
|
||||
开户银行
|
||||
</view>
|
||||
<view v-if="auth.bankCardState" class="listContent" style="margin-right:32rpx;">
|
||||
{{auth.authInfo.bankName}}
|
||||
</view>
|
||||
<view v-else class="listContent" @click="goBankList">
|
||||
{{bankName}}
|
||||
<image src="@/static/img/right.svg" mode=""></image>
|
||||
</view>
|
||||
</view>
|
||||
<view class="list">
|
||||
<view class="listName">
|
||||
银行卡号
|
||||
</view>
|
||||
<text v-if="auth.bankCardState" style="color: #999999;font-size: 14px;margin-right:32rpx;">{{auth.authInfo.cardNumber}}</text>
|
||||
<input v-else type="number" v-model="cardNumber" placeholder="请输入银行卡号" placeholder-style="color:#cccccc;" @input="blur"/>
|
||||
</view>
|
||||
<view class="cardTips">
|
||||
此银行卡信息仅作为发放工资使用;银行卡持卡人信息与基本信息一致。
|
||||
</view>
|
||||
<view v-if="stepLength === 2" class="btn">
|
||||
<view v-if="auth.bankCardState" @click="next" class="bottombtn">
|
||||
完成
|
||||
</view>
|
||||
<view v-if="!loading && !status && !auth.bankCardState" class="bottombtn nocheck">
|
||||
完成
|
||||
</view>
|
||||
<view v-if="!loading && status && !auth.bankCardState" @click="next" class="bottombtn">
|
||||
完成
|
||||
</view>
|
||||
<view v-if="loading" class="bottombtn nocheck">
|
||||
提交中
|
||||
</view>
|
||||
</view>
|
||||
<view v-if="stepLength === 3" class="btn">
|
||||
<view v-if="auth.bankCardState" @click="next" class="bottombtn">
|
||||
下一步
|
||||
</view>
|
||||
<view v-if="!loading && !status && !auth.bankCardState" class="bottombtn nocheck">
|
||||
下一步
|
||||
</view>
|
||||
<view v-if="!loading && status && !auth.bankCardState" @click="next" class="bottombtn">
|
||||
下一步
|
||||
</view>
|
||||
<view v-if="loading" class="bottombtn nocheck">
|
||||
提交中
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {bank} from '@/api/auth.js'
|
||||
import {mapGetters} from 'vuex'
|
||||
import {getStore} from '@/untils/store.js'
|
||||
export default{
|
||||
data () {
|
||||
return {
|
||||
loading: false,
|
||||
edit: false,
|
||||
def: true,
|
||||
bankId: '',
|
||||
bankName: '选择银行',
|
||||
cardNumber: '',
|
||||
}
|
||||
},
|
||||
props:{
|
||||
stepLength: {
|
||||
type: Number,
|
||||
default: 2
|
||||
}
|
||||
},
|
||||
mounted(){
|
||||
const bankCard = getStore({
|
||||
name: 'bankCard'
|
||||
})
|
||||
if (bankCard && bankCard.bankName) {
|
||||
this.bankName = bankCard.bankName
|
||||
this.bankId = bankCard.bankId
|
||||
this.cardNumber = bankCard.cardNumber
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
next(){
|
||||
var auth = this.auth
|
||||
if (auth.bankCardState){
|
||||
this.$emit('secondSubmit')
|
||||
}else {
|
||||
this.submit()
|
||||
}
|
||||
},
|
||||
goBankList: function() {
|
||||
uni.$once('icCardSetBank', (data) => {
|
||||
this.bankId = data.id;
|
||||
this.bankName = data.name;
|
||||
this.setBankName()
|
||||
})
|
||||
uni.navigateTo({
|
||||
url: '/pages/bankList/bankList'
|
||||
})
|
||||
},
|
||||
submit() {
|
||||
this.loading = true
|
||||
bank(this.bankName, this.auth.authInfo.realName, this.cardNumber, this.def ? 1 : 0).then(resp => {
|
||||
uni.showToast({
|
||||
title: resp.data.msg,
|
||||
icon: 'none'
|
||||
});
|
||||
this.loading = false
|
||||
this.$store.commit('SET_AUTH_BANKCARD', true)
|
||||
this.$emit('secondSubmit')
|
||||
}).catch(err => {
|
||||
this.loading = false
|
||||
// this.$emit('secondSubmit',false)
|
||||
})
|
||||
},
|
||||
blur(){
|
||||
this.setBankName()
|
||||
},
|
||||
setBankName(){
|
||||
const obj = {
|
||||
bankName: this.bankName,
|
||||
bankId: this.bankId,
|
||||
cardNumber: this.cardNumber
|
||||
}
|
||||
this.$store.dispatch('setBankCard', obj)
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['auth']),
|
||||
status(){
|
||||
if (!this.cardNumber || !this.bankName) {
|
||||
return false
|
||||
} else {
|
||||
return true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
||||
.cardTips{
|
||||
width: 590rpx;
|
||||
height: 68rpx;
|
||||
font-size: 24rpx;
|
||||
font-weight: 400;
|
||||
color: #999999;
|
||||
line-height: 34rpx;
|
||||
margin:71rpx 0 0 71rpx;
|
||||
}
|
||||
.nocheck {
|
||||
opacity: 0.3;
|
||||
}
|
||||
.bottombtn {
|
||||
background-color: #1B66FF;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
border-radius: 10rpx;
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 32rpx;
|
||||
height: 90rpx;
|
||||
line-height: 90rpx;
|
||||
}
|
||||
|
||||
.btn {
|
||||
background-color: #fefefe;
|
||||
padding: 70rpx 80rpx;
|
||||
}
|
||||
.list switch {
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
.nocheck {
|
||||
opacity: 0.3;
|
||||
}
|
||||
|
||||
.listName {
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 32rpx;
|
||||
color: #333333;
|
||||
width: 200rpx;
|
||||
}
|
||||
|
||||
.listContent image {
|
||||
width: 19rpx;
|
||||
height: 32rpx;
|
||||
margin-left: 15rpx;
|
||||
}
|
||||
|
||||
.listContent {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 28rpx;
|
||||
color: #999999;
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
.list input,
|
||||
.list text {
|
||||
margin-left: auto;
|
||||
text-align: right;
|
||||
}
|
||||
.list input{
|
||||
flex:1;
|
||||
}
|
||||
.list {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: flex-start;
|
||||
padding: 30rpx 0;
|
||||
padding-left: 0;
|
||||
border-bottom: 1rpx solid #f2f2f2;
|
||||
margin: 0 15px;
|
||||
}
|
||||
|
||||
</style>
|
||||
@@ -1,174 +0,0 @@
|
||||
<template>
|
||||
<view>
|
||||
<view class="sealBox">
|
||||
<view style="height: 70rpx;"></view>
|
||||
<view class="name">签名</view>
|
||||
<view v-if="src" class="sealContent">
|
||||
<image class="img" mode="aspectFit" :src="src"></image>
|
||||
</view>
|
||||
<view v-else class="sealContent" @click="go">
|
||||
<view class="contentFont">点击输入手写签名</view>
|
||||
</view>
|
||||
<view class="list" v-if="src">
|
||||
<view class="listLeft">
|
||||
<view class="listTitle">签名密码</view>
|
||||
</view>
|
||||
<view class="listRight">
|
||||
<view class="rightContent nochoose">
|
||||
<view v-if="src" class="uni-input">已设置</view>
|
||||
<view v-else class="uni-input">未设置</view>
|
||||
</view>
|
||||
<image src="@/static/img/right.svg" mode=""></image>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view v-if="!src" class="sealAgreement">
|
||||
<checkbox :checked="status" @click="checkClick"/>
|
||||
<view>我已阅读并同意</view>
|
||||
<view class="agreement" @click="goAgreement('/pages/user/sealAgreement')">《申请证书协议》</view>
|
||||
</view>
|
||||
<view class="btn">
|
||||
<view v-if="src" @click="next" class="bottombtn">完成</view>
|
||||
<view v-if="!src" class="bottombtn nocheck">完成</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {mapGetters} from 'vuex'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
status:false
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.$store.dispatch('setAutograph')
|
||||
},
|
||||
methods: {
|
||||
goAgreement (url) {
|
||||
uni.navigateTo({
|
||||
url
|
||||
})
|
||||
},
|
||||
checkClick(){
|
||||
this.status = !this.status
|
||||
},
|
||||
next () {
|
||||
uni.navigateBack()
|
||||
// uni.switchTab({
|
||||
// url: '/pages/index/index'
|
||||
// })
|
||||
},
|
||||
go(url){
|
||||
if (!this.status){
|
||||
uni.showToast({
|
||||
title: '请先阅读并同意《申请证书协议》',
|
||||
icon: 'none'
|
||||
})
|
||||
return
|
||||
}
|
||||
uni.navigateTo({
|
||||
url: `/pageMy/setUserBase/seal/sealCanvas?path=/pageMy/setUserBase/seal/sealCanvas`
|
||||
})
|
||||
},
|
||||
getInpCode: function(e) {
|
||||
console.log(e)
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['autograph']),
|
||||
src(){
|
||||
if (this.autograph.data && this.autograph.data.signSrcUrl){
|
||||
return this.autograph.data.signSrcUrl
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.sealAgreement{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin: 30rpx;
|
||||
font-size: 32rpx;
|
||||
.agreement{
|
||||
color: #007AFF;
|
||||
}
|
||||
/deep/ .uni-checkbox-input{
|
||||
border-radius: 22px!important;
|
||||
}
|
||||
}
|
||||
.nocheck {
|
||||
opacity: 0.3;
|
||||
}
|
||||
.bottombtn {
|
||||
background-color: #1B66FF;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
border-radius: 10rpx;
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 32rpx;
|
||||
height: 90rpx;
|
||||
line-height: 90rpx;
|
||||
}
|
||||
|
||||
.btn {
|
||||
background-color: #fefefe;
|
||||
padding: 70rpx 80rpx;
|
||||
}
|
||||
.sealBox{
|
||||
background-color: #FFFFFF;
|
||||
padding: 0 15px 0 15px;
|
||||
.name{
|
||||
font-size: 32rpx;
|
||||
font-weight: 400;
|
||||
color: #333333;
|
||||
line-height: 45rpx;
|
||||
|
||||
}
|
||||
.listRight {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 28rpx;
|
||||
color: #999999;
|
||||
}
|
||||
|
||||
.listRight image {
|
||||
width: 40rpx;
|
||||
height: 40rpx;
|
||||
margin-left: 15rpx;
|
||||
}
|
||||
.list {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 32rpx;
|
||||
color: #333333;
|
||||
height: 88rpx;
|
||||
}
|
||||
.sealContent{
|
||||
background: #F6F6F6;
|
||||
padding: 16rpx;
|
||||
margin-top: 14rpx;
|
||||
position:relative;
|
||||
.img{
|
||||
width: 100%;
|
||||
height: 312rpx;
|
||||
background-color: #FFFFFF;
|
||||
}
|
||||
.contentFont{
|
||||
height: 312rpx;
|
||||
line-height: 312rpx;
|
||||
font-size: 30rpx;
|
||||
color: #999999;
|
||||
background: #FFFFFF;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
@@ -1,186 +0,0 @@
|
||||
<template>
|
||||
<view>
|
||||
<view class="searchPage">
|
||||
<view class="headSearch">
|
||||
<view class="search-view">
|
||||
<view class="search-item">
|
||||
<image src="../../static/img/search.svg" style="width: 32rpx;height: 32rpx;" mode=""></image>
|
||||
<input type="text" confirm-type="搜索" v-model="inputValue" @confirm="search" placeholder="搜索工作的地点" />
|
||||
</view>
|
||||
<view class="close" @click="closeBack">
|
||||
取消
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<scroll-view scroll-y class="scroll-view">
|
||||
<view>
|
||||
<ul class="search-result">
|
||||
<li v-for="(item,index) in searchResultList" :key="item.id" @click="handleSelect(item)">
|
||||
<div class="title">
|
||||
<rich-text :nodes="item.title"></rich-text>
|
||||
</div>
|
||||
<div class="address">{{item.address}}</div>
|
||||
</li>
|
||||
</ul>
|
||||
</view>
|
||||
</scroll-view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
getcoder,
|
||||
querySearch
|
||||
} from "@/api/map.js";
|
||||
export default {
|
||||
components: {
|
||||
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
searchResultList: [],
|
||||
inputValue: '',
|
||||
key: 'FW3BZ-6JTK6-GCUS5-MZCRR-3GPR5-HJFEI'
|
||||
};
|
||||
},
|
||||
onLoad: function(option) {
|
||||
// this.keywords = option.keywords?option.keywords:''
|
||||
},
|
||||
onShow: function() {
|
||||
},
|
||||
methods: {
|
||||
search: function() {
|
||||
if (this.inputValue) {
|
||||
this.querySearch(this.inputValue)
|
||||
} else {
|
||||
return
|
||||
}
|
||||
},
|
||||
//关键词输入提示
|
||||
querySearch: function(queryString) {
|
||||
querySearch(queryString, encodeURI(this.key)).then(res => {
|
||||
if (res.data.status === 0) {
|
||||
this.searchResultList = res.data.data;
|
||||
if (this.searchResultList.length) {
|
||||
this.searchResultList.forEach((item, index) => {
|
||||
item.title = this.getInf(item.title, this.inputValue);
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
// 8-2、选择地址
|
||||
handleSelect: function(item) {
|
||||
uni.navigateTo({
|
||||
url: '../mapSeach/mapSeach?item=' + encodeURIComponent(JSON.stringify(item.location))
|
||||
});
|
||||
this.inputValue = '';
|
||||
this.searchResultList = [];
|
||||
},
|
||||
//高亮
|
||||
getInf(str, key) {
|
||||
if (str && key) {
|
||||
let replaceReg = new RegExp(key, 'g') // 匹配关键字正则
|
||||
let replaceString = "<span style='color: #1b66ff;'>" + key + "</span>" // 高亮替换
|
||||
return str.replace(replaceReg, replaceString);
|
||||
}
|
||||
},
|
||||
closeBack() {
|
||||
uni.navigateBack({
|
||||
delta: 1
|
||||
})
|
||||
this.inputValue = '';
|
||||
this.searchResultList = [];
|
||||
},
|
||||
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.searchPage .headSearch .search-view {
|
||||
border-bottom: 1rpx solid #dddddd;
|
||||
padding: 10rpx 30rpx;
|
||||
background: rgba(255, 255, 255, 1);
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.searchPage .headSearch .close {
|
||||
position: absolute;
|
||||
right: 24rpx;
|
||||
top: 0;
|
||||
height: 60rpx;
|
||||
padding: 5rpx 0;
|
||||
line-height: 60rpx;
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 32rpx;
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
.searchPage .headSearch .search-item {
|
||||
display: flex;
|
||||
width: 80%;
|
||||
padding: 0 24rpx;
|
||||
height: 60rpx;
|
||||
line-height: 60rpx;
|
||||
background: rgba(249, 249, 249, 1);
|
||||
border-radius: 200px;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.searchPage .headSearch .search-item input {
|
||||
padding: 0 24rpx;
|
||||
height: 80rpx;
|
||||
font-weight: 400;
|
||||
flex: 1;
|
||||
text-align: start;
|
||||
font-size: 28rpx;
|
||||
font-family: PingFang-SC-Bold, PingFang-SC;
|
||||
color: rgba(51, 51, 51, 1);
|
||||
}
|
||||
|
||||
.searchPage .headSearch .search-item .placeholderClass {
|
||||
color: #CCCCCC;
|
||||
}
|
||||
|
||||
.searchPage .headSearch .search-item image {
|
||||
height: 32rpx;
|
||||
width: 32rpx;
|
||||
}
|
||||
|
||||
.searchPage .scroll-view {
|
||||
flex: 1;
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
/* top: 82rpx; */
|
||||
top: 182rpx;
|
||||
}
|
||||
|
||||
.searchPage .search-result {
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.searchPage .search-result li {
|
||||
font-weight: normal;
|
||||
text-align: left;
|
||||
border-bottom: 1rpx solid #f2f2f2;
|
||||
padding: 28rpx 30rpx;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.searchPage .search-result li .title {
|
||||
font-size: 32rpx;
|
||||
}
|
||||
|
||||
.highlight {
|
||||
color: #1b66ff;
|
||||
}
|
||||
|
||||
.searchPage .search-result li .address {
|
||||
font-size: 24rpx;
|
||||
color: #999999
|
||||
}
|
||||
</style>
|
||||
@@ -1,180 +0,0 @@
|
||||
<template>
|
||||
<view>
|
||||
<view class="headSearch">
|
||||
<view class="search-view">
|
||||
<view class="search-item">
|
||||
<image src="../../static/img/search.svg" style="width: 32rpx;height: 32rpx;" mode=""></image>
|
||||
<input type="text" confirm-type="搜索" v-model="keywords" @confirm="getList('search')" placeholder="请输入任务名称或公司名称"/>
|
||||
</view>
|
||||
<view class="close" @click="closeBack">
|
||||
取消
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view v-if="companyList.length>0">
|
||||
<block v-for="(item, index) in companyList" :key="item.id">
|
||||
<companyList :companyitem="item"></companyList>
|
||||
<view class="baddd"></view>
|
||||
</block>
|
||||
</view>
|
||||
<view v-else>
|
||||
<image src="../../static/img/pic_notask.svg" mode="" class="nothing"></image>
|
||||
<view class="nothingContnt">
|
||||
暂无任务信息
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {newMissionAll} from '@/api/mission.js';
|
||||
import companyList from '@/components/companyList/companyList.vue';
|
||||
import testData from '@/common/textdata.js';
|
||||
export default {
|
||||
components: {
|
||||
companyList
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
companyList: [],
|
||||
keywords:'',
|
||||
page:{
|
||||
current:1,
|
||||
size:10,
|
||||
total:0
|
||||
}
|
||||
};
|
||||
},
|
||||
onLoad:function(option) {
|
||||
this.keywords = option.keywords?option.keywords:''
|
||||
},
|
||||
onShow:function(){
|
||||
this.getList('search');
|
||||
},
|
||||
/*页面滚动到底部*/
|
||||
onReachBottom:function(){
|
||||
this.upLoad()
|
||||
},
|
||||
methods: {
|
||||
//最新任务;
|
||||
getList:function(type){
|
||||
//改变搜索条件,页码值变为1
|
||||
if(type==='search'){
|
||||
this.page.current = 1;
|
||||
};
|
||||
if(this.keywords){
|
||||
newMissionAll(this.page.current,this.page.size,this.keywords).then(res => {
|
||||
if(this.page.current===1){
|
||||
this.companyList=[];
|
||||
}
|
||||
this.page.current +=1;
|
||||
this.page.total = res.data.data.total;
|
||||
if(res.data.data&&res.data.data.records.length){
|
||||
this.companyList = this.companyList.concat(res.data.data.records);
|
||||
}
|
||||
//搜索关键词高亮
|
||||
if(this.companyList.length){
|
||||
this.companyList.forEach((item, index) => {
|
||||
item.missionTitle = this.getInf(item.missionTitle, this.keywords);
|
||||
});
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
//上拉加载
|
||||
upLoad:function(){
|
||||
if(this.page.current<=Math.ceil(this.page.total/this.page.size)){
|
||||
this.getList();
|
||||
}else{
|
||||
uni.showToast({
|
||||
icon: "none",
|
||||
title: '已经是最后一页',
|
||||
})
|
||||
return
|
||||
}
|
||||
},
|
||||
closeBack(){
|
||||
uni.navigateBack({
|
||||
delta:1
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 指定关键字高亮
|
||||
* @param {*} str 字符串
|
||||
* @param {*} key 关键字
|
||||
*/
|
||||
getInf(str, key) {
|
||||
if (str && key) {
|
||||
let replaceReg = new RegExp(key, 'g')// 匹配关键字正则
|
||||
let replaceString = "<span style='color: #1b66ff;'>" + key + "</span>" // 高亮替换
|
||||
return str.replace(replaceReg, replaceString);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.baddd{
|
||||
background-color: #f6f6f6;
|
||||
height: 20rpx;
|
||||
}
|
||||
.close{
|
||||
position: absolute;
|
||||
right: 24rpx;
|
||||
top: 0;
|
||||
height: 60rpx;
|
||||
padding: 5rpx 0;
|
||||
line-height: 60rpx;
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 32rpx;
|
||||
color: #333333;
|
||||
}
|
||||
.headSearch .search-view {
|
||||
border-bottom: 1rpx solid #dddddd;
|
||||
padding: 10rpx 32rpx;
|
||||
background: rgba(255, 255, 255, 1);
|
||||
}
|
||||
.headSearch .search-item{
|
||||
display: flex;
|
||||
width: 80%;
|
||||
padding: 0 24rpx;
|
||||
height: 60rpx;
|
||||
line-height: 60rpx;
|
||||
background: rgba(249, 249, 249, 1);
|
||||
border-radius: 200px;
|
||||
align-items: center;
|
||||
}
|
||||
.headSearch .search-item input {
|
||||
padding: 0 24rpx;
|
||||
height: 80rpx;
|
||||
font-weight: 400;
|
||||
flex: 1;
|
||||
text-align: start;
|
||||
font-size: 28rpx;
|
||||
font-family: PingFang-SC-Bold, PingFang-SC;
|
||||
color: rgba(51, 51, 51, 1);
|
||||
}
|
||||
.headSearch .search-item .placeholderClass {
|
||||
color: #CCCCCC;
|
||||
}
|
||||
.headSearch .search-item image {
|
||||
height: 32rpx;
|
||||
width: 32rpx;
|
||||
}
|
||||
.nothingContnt{
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 28rpx;
|
||||
color: #666;
|
||||
margin-top: 30rpx;
|
||||
text-align: center;
|
||||
}
|
||||
.nothing{
|
||||
width: 400rpx;
|
||||
height: 200rpx;
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
margin-top: 50%;
|
||||
}
|
||||
</style>
|
||||
@@ -1,166 +0,0 @@
|
||||
<template>
|
||||
<view>
|
||||
<view class="title">
|
||||
全部
|
||||
</view>
|
||||
<block v-for="item in city" :key="item.value">
|
||||
<view class="cityList" @click="cityClick(item)">
|
||||
{{item.label}}
|
||||
<image src="../../static/img/correct.svg" v-if='id === item.value' mode=""></image>
|
||||
<image v-else-if="layer !== maxLayer" src="../../static/img/right.svg" mode=""></image>
|
||||
</view>
|
||||
</block>
|
||||
<view class="" v-if="layer === maxLayer" style="height: 230rpx;background-color: #f6f6f6;"></view>
|
||||
<view class="btn" v-if="layer === maxLayer" @click="comfirm">
|
||||
<view class="bottombtn">
|
||||
确定
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
getcoder
|
||||
} from "@/api/map.js";
|
||||
|
||||
import {
|
||||
mapGetters
|
||||
} from 'vuex'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
choose: false,
|
||||
chooseIndex: '',
|
||||
parentId: undefined,
|
||||
layer: 1,
|
||||
maxLayer: 3,
|
||||
id: '',
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['area']),
|
||||
city() {
|
||||
if (this.parentId) {
|
||||
return this.area.children[this.parentId]
|
||||
} else {
|
||||
return []
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {},
|
||||
onLoad({
|
||||
parentId,
|
||||
layer,
|
||||
maxLayer
|
||||
}) {
|
||||
this.parentId = parentId || '0'
|
||||
this.layer = parseInt(layer || 1)
|
||||
this.maxLayer = parseInt(maxLayer || 3)
|
||||
},
|
||||
onShow: function() {},
|
||||
methods: {
|
||||
cityClick(item) {
|
||||
if (this.layer === this.maxLayer) {
|
||||
this.selectCity(item)
|
||||
} else {
|
||||
this.goCityInfo(item)
|
||||
}
|
||||
},
|
||||
selectCity(item) {
|
||||
this.id = item.value
|
||||
},
|
||||
goCityInfo(item) {
|
||||
uni.navigateTo({
|
||||
url: `./setCity?layer=${this.layer + 1}&maxLayer=${this.maxLayer}&parentId=${item.value}`
|
||||
})
|
||||
},
|
||||
comfirm: function() {
|
||||
if (this.id) {
|
||||
uni.$emit("setCity", this.id)
|
||||
uni.navigateBack({
|
||||
delta: this.layer
|
||||
})
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: "请选择地点",
|
||||
icon: "none"
|
||||
})
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.bottombtn {
|
||||
background-color: #1B66FF;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
border-radius: 10rpx;
|
||||
font-family: PingFangSC-Medium;
|
||||
font-size: 32rpx;
|
||||
height: 90rpx;
|
||||
line-height: 90rpx;
|
||||
}
|
||||
|
||||
.btn {
|
||||
background-color: #fefefe;
|
||||
width: 690rpx;
|
||||
padding: 30rpx;
|
||||
padding-bottom: 80rpx;
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.cityList image {
|
||||
width: 32rpx;
|
||||
height: 32rpx;
|
||||
}
|
||||
|
||||
.cityList {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 32rpx;
|
||||
color: #333333;
|
||||
padding: 30rpx;
|
||||
padding-left: 0;
|
||||
margin-left: 30rpx;
|
||||
width: 690rpx;
|
||||
border-bottom: 1rpx solid #dddddd;
|
||||
}
|
||||
|
||||
.location {
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 32rpx;
|
||||
color: #333333;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: flex-start;
|
||||
padding: 30rpx;
|
||||
}
|
||||
|
||||
.comfirm {
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
.location image {
|
||||
width: 40rpx;
|
||||
height: 40rpx;
|
||||
}
|
||||
|
||||
.title {
|
||||
font-family: PingFangSC-Regular;
|
||||
font-size: 28rpx;
|
||||
color: #999999;
|
||||
background-color: #f6f6f6;
|
||||
padding: 30rpx;
|
||||
}
|
||||
|
||||
page {
|
||||
background-color: #fefefe;
|
||||
}
|
||||
</style>
|
||||
@@ -1,20 +0,0 @@
|
||||
<template>
|
||||
<web-view :src="src"></web-view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
baseUrl
|
||||
} from '@/config/env.js'
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
src: baseUrl + '/blackboard/account/useragreement.html?v=' + Math.random()
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
</style>
|
||||
@@ -1,45 +0,0 @@
|
||||
<template>
|
||||
<view class="policy-content">
|
||||
<view v-html="strings"></view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {getPolicyContent} from '@/api/newIndex.js'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
strings:'',
|
||||
contentShow:false
|
||||
}
|
||||
},
|
||||
onLoad(option) {
|
||||
if(option.id){
|
||||
// #ifdef H5
|
||||
//h5中如果有% 会报错,需单独处理
|
||||
// option.val=this.percent2percent25(option.val)
|
||||
// #endif
|
||||
// this.strings=decodeURIComponent(option.val) ;
|
||||
getPolicyContent (1, option.id).then(res => {
|
||||
this.strings = res.data.data.records[0].note
|
||||
})
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
percent2percent25 (URI) {
|
||||
if(URI.indexOf('%') > -1) {
|
||||
return URI.replace(/%/g,'%25')
|
||||
}else{
|
||||
return URI;
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
page{
|
||||
padding: 20px 20px 20px 20px;
|
||||
overflow: auto;
|
||||
}
|
||||
</style>
|
||||
@@ -1,20 +0,0 @@
|
||||
<template>
|
||||
<web-view :src="src"></web-view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
baseUrl
|
||||
} from '@/config/env.js'
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
src: baseUrl + '/blackboard/account/sealAgreement.html?v=' + Math.random()
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
</style>
|
||||
Reference in New Issue
Block a user