| @ -0,0 +1,2 @@ | |||
| /node_modules | |||
| /unpackage | |||
| @ -0,0 +1,16 @@ | |||
| { // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/ | |||
| // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数 | |||
| "version": "0.0", | |||
| "configurations": [{ | |||
| "default" : | |||
| { | |||
| "launchtype" : "remote" | |||
| }, | |||
| "mp-weixin" : | |||
| { | |||
| "launchtype" : "remote" | |||
| }, | |||
| "type" : "uniCloud" | |||
| } | |||
| ] | |||
| } | |||
| @ -0,0 +1,50 @@ | |||
| <script> | |||
| export default { | |||
| onLaunch: function() { | |||
| console.log('App Launch') | |||
| }, | |||
| onShow: function() { | |||
| // let checkIsWechatBrowser = () => { | |||
| // return ( | |||
| // navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == | |||
| // "micromessenger" | |||
| // ); | |||
| // }; | |||
| // // #ifdef MP-WEIXIN | |||
| // uni.getSetting({ | |||
| // success(res) { | |||
| // console.log("授权:", res); | |||
| // if (!res.authSetting['scope.userInfo']) { | |||
| // //这里调用授权 | |||
| // console.log("当前未授权"); | |||
| // uni.reLaunch({ | |||
| // url: '/pages/help/certificate' | |||
| // }) | |||
| // return | |||
| // } else { | |||
| // //用户已经授权过了 | |||
| // uni.redirectTo({ | |||
| // url: '/pages/home/home' | |||
| // }) | |||
| // console.log("当前已授权"); | |||
| // } | |||
| // } | |||
| // }) | |||
| // // #endif | |||
| // console.log('App Show') | |||
| }, | |||
| onHide: function() { | |||
| console.log('App Hide') | |||
| }, | |||
| methods:{ | |||
| } | |||
| } | |||
| </script> | |||
| <style lang="scss"> | |||
| /*每个页面公共css */ | |||
| @import url("@/styles/common.css"); | |||
| @import url("@/styles/init.css"); | |||
| @import "uview-ui/index.scss"; | |||
| </style> | |||
| @ -1,3 +1,3 @@ | |||
| # JianjianStreet-H5 | |||
| # bin-yuan-uniapp | |||
| 兼兼街公众号代码 | |||
| 兼职招聘信息公众号 | |||
| @ -0,0 +1,13 @@ | |||
| export default{ | |||
| displayNav(){ | |||
| let iswx = navigator.userAgent.toLowerCase().indexOf('micromessenger') != -1; | |||
| //#ifdef H5 | |||
| if (iswx) { | |||
| let pageNav = document.getElementsByTagName("uni-page-head"); | |||
| if (pageNav && pageNav[0]) { | |||
| pageNav[0].style.display = "none"; | |||
| } | |||
| } | |||
| //#endif | |||
| } | |||
| } | |||
| @ -0,0 +1,5 @@ | |||
| import Vue from 'vue' | |||
| // import Navbar from '@/components/comm-navbar/comm-navbar.vue' | |||
| // Vue.component('comm-navbar', Navbar) | |||
| @ -0,0 +1,147 @@ | |||
| <template> | |||
| <view class="active-card"> | |||
| <view class="active-title">【人找车】{{item.title}}</view> | |||
| <view class="active-time flex align-center"> | |||
| <text>【始发终点】{{item.outGo}} - {{item.toGo}}</text> | |||
| </view> | |||
| <view class="active-add flex align-center"> | |||
| <text>【乘坐人数】{{item.sum}} 位</text> | |||
| </view> | |||
| <view class="active-time2 flex align-center"> | |||
| <text>【出发时间】{{item.outGoTime}}</text> | |||
| </view> | |||
| <view class="active-menu flex align-center justify-between"> | |||
| <view class="menu-price"> | |||
| <!-- <text class="unit"></text> | |||
| <text class="price">{{item.money}}</text> --> | |||
| <!-- <text>价格面议</text> --> | |||
| </view> | |||
| <view class="menu-btn" @click="seeDetail">{{text}}</view> | |||
| </view> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| export default{ | |||
| props:{ | |||
| text:{ | |||
| type:String, | |||
| default:'查看详情' | |||
| }, | |||
| item:{ | |||
| type:Object, | |||
| }, | |||
| i:{ | |||
| type:Number, | |||
| } | |||
| }, | |||
| data(){ | |||
| return{ | |||
| } | |||
| }, | |||
| methods:{ | |||
| seeDetail(){ | |||
| this.$emit('seeDetail',this.item) | |||
| } | |||
| } | |||
| } | |||
| </script> | |||
| <style lang="scss" scoped> | |||
| .active-card { | |||
| background: #ffffff; | |||
| border-radius: 12rpx; | |||
| box-shadow: 3rpx 3rpx 6rpx 5rpx rgba(0,0,0,0.16); | |||
| overflow: hidden; | |||
| padding-bottom: 10rpx; | |||
| margin-bottom: 20rpx; | |||
| .active-title { | |||
| word-wrap:break-word; | |||
| word-break:break-all; | |||
| font-size: 32rpx; | |||
| color: #000; | |||
| font-weight: 700; | |||
| margin-top: 20rpx; | |||
| line-height: 60rpx; | |||
| /* 文本不会换行显示 */ | |||
| white-space: nowrap; | |||
| /* 超出盒子部分隐藏 */ | |||
| overflow: hidden; | |||
| /* 文本超出的部分打点显示 */ | |||
| text-overflow: ellipsis; | |||
| } | |||
| .active-time { | |||
| word-wrap:break-word; | |||
| word-break:break-all; | |||
| color: #707070; | |||
| font-size: 28rpx; | |||
| margin: 20rpx 0; | |||
| image { | |||
| width: 33rpx; | |||
| height: 33rpx; | |||
| margin-right: 27rpx; | |||
| } | |||
| /* 文本不会换行显示 */ | |||
| white-space: nowrap; | |||
| /* 超出盒子部分隐藏 */ | |||
| overflow: hidden; | |||
| /* 文本超出的部分打点显示 */ | |||
| text-overflow: ellipsis; | |||
| } | |||
| .active-add { | |||
| color: #707070; | |||
| font-size: 28rpx; | |||
| word-wrap:break-word; | |||
| word-break:break-all; | |||
| /* 文本不会换行显示 */ | |||
| white-space: nowrap; | |||
| /* 超出盒子部分隐藏 */ | |||
| overflow: hidden; | |||
| /* 文本超出的部分打点显示 */ | |||
| text-overflow: ellipsis; | |||
| // overflow: hidden;/*这个参数根据需求来决定要不要*/ | |||
| image { | |||
| width: 30rpx; | |||
| height: 35rpx; | |||
| margin-right: 27rpx; | |||
| } | |||
| } | |||
| .active-time2 { | |||
| color: #707070; | |||
| font-size: 28rpx; | |||
| margin: 20rpx 0; | |||
| image { | |||
| width: 33rpx; | |||
| height: 33rpx; | |||
| margin-right: 27rpx; | |||
| } | |||
| } | |||
| .active-menu { | |||
| margin-top: 21rpx; | |||
| padding: 0 10rpx; | |||
| .menu-price { | |||
| font-size: 32rpx; | |||
| .price { | |||
| color: #D33D3E; | |||
| font-size: 40rpx; | |||
| } | |||
| } | |||
| .menu-btn { | |||
| width: 213rpx; | |||
| height: 79rpx; | |||
| display: flex; | |||
| align-items: center; | |||
| justify-content: center; | |||
| //background-color: #00CCCC; | |||
| //border-radius: 40rpx; | |||
| color: #00CCCC; | |||
| font-size: 32rpx; | |||
| } | |||
| } | |||
| } | |||
| </style> | |||
| @ -0,0 +1,168 @@ | |||
| <template> | |||
| <view class="active-card"> | |||
| <view > | |||
| <u--image :showLoading="true" :src="item.image" ></u--image> | |||
| </view> | |||
| <view class="active-title">{{item.title}}</view> | |||
| <view class="active-time flex align-center"> | |||
| <text>{{item.longTitle}}</text> | |||
| </view> | |||
| <view class="active-time2 flex align-center"> | |||
| <text > | |||
| 【库存】{{item.num}} | |||
| </text> | |||
| </view> | |||
| <view class="active-time2 flex align-center"> | |||
| <text> | |||
| 【浏览量】{{item.clickNum}} | |||
| </text> | |||
| </view> | |||
| <view class="active-time2 flex align-center"> | |||
| <text> | |||
| 【价格】{{item.price}} | |||
| </text> | |||
| </view> | |||
| <view class="active-menu flex align-center justify-between"> | |||
| <view class="menu-price"> | |||
| <text class="price">积分: {{item.intgerPrice}}</text> | |||
| </view> | |||
| <view class="menu-btn" @click="seeDetail">{{text}}</view> | |||
| </view> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| export default{ | |||
| props:{ | |||
| text:{ | |||
| type:String, | |||
| default:'查看详情' | |||
| }, | |||
| item:{ | |||
| type:Object, | |||
| }, | |||
| i:{ | |||
| type:Number, | |||
| } | |||
| }, | |||
| data(){ | |||
| return{ | |||
| } | |||
| }, | |||
| methods:{ | |||
| seeDetail(){ | |||
| this.$emit('seeDetail',this.item) | |||
| } | |||
| } | |||
| } | |||
| </script> | |||
| <style lang="scss" scoped> | |||
| .active-card { | |||
| background: #ffffff; | |||
| border-radius: 24rpx; | |||
| box-shadow: 13rpx 13rpx 16rpx 15rpx rgba(0,0,0,0.16); | |||
| overflow: hidden; | |||
| padding-bottom: 10rpx; | |||
| margin-bottom: 20rpx; | |||
| font-size: 28rpx; | |||
| padding: 16rpx 16rpx; | |||
| .active-title { | |||
| word-wrap:break-word; | |||
| word-break:break-all; | |||
| font-size: 32rpx; | |||
| color: #000; | |||
| font-weight: 700; | |||
| margin-top: 20rpx; | |||
| line-height: 60rpx; | |||
| /* 文本不会换行显示 */ | |||
| white-space: nowrap; | |||
| /* 超出盒子部分隐藏 */ | |||
| overflow: hidden; | |||
| /* 文本超出的部分打点显示 */ | |||
| text-overflow: ellipsis; | |||
| } | |||
| .active-time { | |||
| word-wrap:break-word; | |||
| word-break:break-all; | |||
| color: #707070; | |||
| font-size: 28rpx; | |||
| margin: 20rpx 0; | |||
| image { | |||
| width: 33rpx; | |||
| height: 33rpx; | |||
| margin-right: 27rpx; | |||
| } | |||
| /* 文本不会换行显示 */ | |||
| white-space: nowrap; | |||
| /* 超出盒子部分隐藏 */ | |||
| overflow: hidden; | |||
| /* 文本超出的部分打点显示 */ | |||
| text-overflow: ellipsis; | |||
| } | |||
| .active-add { | |||
| color: #707070; | |||
| font-size: 28rpx; | |||
| word-wrap:break-word; | |||
| word-break:break-all; | |||
| /* 文本不会换行显示 */ | |||
| white-space: nowrap; | |||
| /* 超出盒子部分隐藏 */ | |||
| overflow: hidden; | |||
| /* 文本超出的部分打点显示 */ | |||
| text-overflow: ellipsis; | |||
| // overflow: hidden;/*这个参数根据需求来决定要不要*/ | |||
| image { | |||
| width: 30rpx; | |||
| height: 35rpx; | |||
| margin-right: 27rpx; | |||
| } | |||
| } | |||
| .active-time2 { | |||
| color: #707070; | |||
| font-size: 28rpx; | |||
| margin: 20rpx 0; | |||
| image { | |||
| width: 33rpx; | |||
| height: 33rpx; | |||
| margin-right: 27rpx; | |||
| } | |||
| } | |||
| .active-menu { | |||
| margin-top: 21rpx; | |||
| padding: 0 10rpx; | |||
| .menu-price { | |||
| font-size: 32rpx; | |||
| .price { | |||
| color: #D33D3E; | |||
| font-size: 40rpx; | |||
| } | |||
| } | |||
| .menu-btn { | |||
| width: 213rpx; | |||
| height: 79rpx; | |||
| display: flex; | |||
| align-items: center; | |||
| justify-content: center; | |||
| //background-color: #00CCCC; | |||
| //border-radius: 40rpx; | |||
| color: #00CCCC; | |||
| font-size: 32rpx; | |||
| } | |||
| } | |||
| } | |||
| </style> | |||
| @ -0,0 +1,164 @@ | |||
| <template> | |||
| <view class="active-card"> | |||
| <view class="active-title">【{{item.name}}】</view> | |||
| <view class="active-time flex align-center"> | |||
| <text>【招聘时间】{{item.startTime}} - {{item.endTime}}</text> | |||
| </view> | |||
| <view class="active-add flex align-center"> | |||
| <text>【招聘地址】{{item.money}}</text> | |||
| </view> | |||
| <view class="active-add flex align-center"> | |||
| <text>【招聘地区】{{item.vsClass}}</text> | |||
| </view> | |||
| <view class="active-add flex align-center"> | |||
| <text>【联系方式】{{item.phone}}</text> | |||
| </view> | |||
| <view class="active-add flex align-center"> | |||
| <text>【联系微信】{{item.wx}}</text> | |||
| </view> | |||
| <view class="active-time2 flex align-center"> | |||
| <text>【发布时间】{{item.createTime}}</text> | |||
| </view> | |||
| <view class="active-menu flex align-center justify-between"> | |||
| <view class="menu-price" > | |||
| <text class="price">{{item.money}}</text> | |||
| <text class="price">/{{item.unit}}</text> | |||
| </view> | |||
| </view> | |||
| <view class="active-add flex align-center"> | |||
| <text>【招聘内容】{{item.value}}</text> | |||
| </view> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| export default{ | |||
| props:{ | |||
| text:{ | |||
| type:String, | |||
| default:'查看详情' | |||
| }, | |||
| item:{ | |||
| type:Object, | |||
| }, | |||
| i:{ | |||
| type:Number, | |||
| } | |||
| }, | |||
| data(){ | |||
| return{ | |||
| } | |||
| }, | |||
| methods:{ | |||
| seeDetail(){ | |||
| this.$emit('seeDetail',this.item) | |||
| } | |||
| } | |||
| } | |||
| </script> | |||
| <style lang="scss" scoped> | |||
| .active-card { | |||
| background: #ffffff; | |||
| border-radius: 12rpx; | |||
| box-shadow: 3rpx 3rpx 6rpx 5rpx rgba(0,0,0,0.16); | |||
| overflow: hidden; | |||
| padding-bottom: 10rpx; | |||
| margin-bottom: 20rpx; | |||
| .active-title { | |||
| word-wrap:break-word; | |||
| word-break:break-all; | |||
| font-size: 32rpx; | |||
| color: #000; | |||
| font-weight: 700; | |||
| margin-top: 20rpx; | |||
| line-height: 60rpx; | |||
| white-space: nowrap; | |||
| overflow: hidden; | |||
| text-overflow: ellipsis; | |||
| } | |||
| .active-time { | |||
| word-wrap:break-word; | |||
| word-break:break-all; | |||
| color: #707070; | |||
| font-size: 28rpx; | |||
| margin: 20rpx 0; | |||
| image { | |||
| width: 33rpx; | |||
| height: 33rpx; | |||
| margin-right: 27rpx; | |||
| } | |||
| /* 文本不会换行显示 */ | |||
| white-space: nowrap; | |||
| /* 超出盒子部分隐藏 */ | |||
| overflow: hidden; | |||
| /* 文本超出的部分打点显示 */ | |||
| text-overflow: ellipsis; | |||
| } | |||
| .active-add { | |||
| color: #707070; | |||
| font-size: 28rpx; | |||
| word-wrap:break-word; | |||
| word-break:break-all; | |||
| /* 文本不会换行显示 */ | |||
| white-space: nowrap; | |||
| /* 超出盒子部分隐藏 */ | |||
| overflow: hidden; | |||
| /* 文本超出的部分打点显示 */ | |||
| text-overflow: ellipsis; | |||
| // overflow: hidden;/*这个参数根据需求来决定要不要*/ | |||
| image { | |||
| width: 30rpx; | |||
| height: 35rpx; | |||
| margin-right: 27rpx; | |||
| } | |||
| } | |||
| .active-time2 { | |||
| color: #707070; | |||
| font-size: 28rpx; | |||
| margin: 20rpx 0; | |||
| image { | |||
| width: 33rpx; | |||
| height: 33rpx; | |||
| margin-right: 27rpx; | |||
| } | |||
| } | |||
| .active-menu { | |||
| margin-top: 21rpx; | |||
| padding: 0 10rpx; | |||
| .menu-price { | |||
| font-size: 32rpx; | |||
| .price { | |||
| color: #D33D3E; | |||
| font-size: 34rpx; | |||
| font-weight: 500; | |||
| } | |||
| } | |||
| .menu-btn { | |||
| width: 213rpx; | |||
| height: 79rpx; | |||
| display: flex; | |||
| align-items: center; | |||
| justify-content: center; | |||
| color: #00CCCC; | |||
| font-size: 30rpx; | |||
| font-weight: 500; | |||
| } | |||
| .menu-btn::after { | |||
| content: " "; | |||
| width: 15rpx; | |||
| height: 15rpx; | |||
| border-bottom: 3rpx solid #00CCCC; | |||
| border-right: 3rpx solid #00CCCC; | |||
| transform: rotate(-45deg); | |||
| margin-left: 8rpx; | |||
| } | |||
| } | |||
| } | |||
| </style> | |||
| @ -0,0 +1,159 @@ | |||
| <template> | |||
| <view class="active-card"> | |||
| <view class="active-title">【{{item.title}}】</view> | |||
| <view class="active-time flex align-center"> | |||
| <text>【招聘时间】{{item.startTime}} - {{item.endTime}}</text> | |||
| </view> | |||
| <view class="active-add flex align-center"> | |||
| <text>【招聘地址】{{item.place}}</text> | |||
| </view> | |||
| <view class="active-time2 flex align-center"> | |||
| <text>【发布时间】{{item.createTime}}</text> | |||
| </view> | |||
| <view class="active-menu flex align-center justify-between"> | |||
| <view class="menu-price" v-if="item.money !== null"> | |||
| <text class="unit"></text> | |||
| <text class="price" v-if="item.isHot !==null">急聘*</text> | |||
| <text class="price">{{item.money}}</text> | |||
| <text>/{{item.company}}</text> | |||
| </view> | |||
| <view class="menu-price" v-if="item.money == null"> | |||
| <text class="unit"></text> | |||
| <text class="price" v-if="item.isHot !==null">急聘*</text> | |||
| <text class="price">面议</text> | |||
| </view> | |||
| <view class="menu-btn" @click="seeDetail">{{text}}</view> | |||
| </view> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| export default{ | |||
| props:{ | |||
| text:{ | |||
| type:String, | |||
| default:'查看详情' | |||
| }, | |||
| item:{ | |||
| type:Object, | |||
| }, | |||
| i:{ | |||
| type:Number, | |||
| } | |||
| }, | |||
| data(){ | |||
| return{ | |||
| } | |||
| }, | |||
| methods:{ | |||
| seeDetail(){ | |||
| this.$emit('seeDetail',this.item) | |||
| } | |||
| } | |||
| } | |||
| </script> | |||
| <style lang="scss" scoped> | |||
| .active-card { | |||
| background: #ffffff; | |||
| border-radius: 12rpx; | |||
| box-shadow: 3rpx 3rpx 6rpx 5rpx rgba(0,0,0,0.16); | |||
| overflow: hidden; | |||
| padding-bottom: 10rpx; | |||
| margin-bottom: 20rpx; | |||
| .active-title { | |||
| word-wrap:break-word; | |||
| word-break:break-all; | |||
| font-size: 32rpx; | |||
| color: #000; | |||
| font-weight: 700; | |||
| margin-top: 20rpx; | |||
| line-height: 60rpx; | |||
| white-space: nowrap; | |||
| overflow: hidden; | |||
| text-overflow: ellipsis; | |||
| } | |||
| .active-time { | |||
| word-wrap:break-word; | |||
| word-break:break-all; | |||
| color: #707070; | |||
| font-size: 28rpx; | |||
| margin: 20rpx 0; | |||
| image { | |||
| width: 33rpx; | |||
| height: 33rpx; | |||
| margin-right: 27rpx; | |||
| } | |||
| /* 文本不会换行显示 */ | |||
| white-space: nowrap; | |||
| /* 超出盒子部分隐藏 */ | |||
| overflow: hidden; | |||
| /* 文本超出的部分打点显示 */ | |||
| text-overflow: ellipsis; | |||
| } | |||
| .active-add { | |||
| color: #707070; | |||
| font-size: 28rpx; | |||
| word-wrap:break-word; | |||
| word-break:break-all; | |||
| /* 文本不会换行显示 */ | |||
| white-space: nowrap; | |||
| /* 超出盒子部分隐藏 */ | |||
| overflow: hidden; | |||
| /* 文本超出的部分打点显示 */ | |||
| text-overflow: ellipsis; | |||
| // overflow: hidden;/*这个参数根据需求来决定要不要*/ | |||
| image { | |||
| width: 30rpx; | |||
| height: 35rpx; | |||
| margin-right: 27rpx; | |||
| } | |||
| } | |||
| .active-time2 { | |||
| color: #707070; | |||
| font-size: 28rpx; | |||
| margin: 20rpx 0; | |||
| image { | |||
| width: 33rpx; | |||
| height: 33rpx; | |||
| margin-right: 27rpx; | |||
| } | |||
| } | |||
| .active-menu { | |||
| margin-top: 21rpx; | |||
| padding: 0 10rpx; | |||
| .menu-price { | |||
| font-size: 32rpx; | |||
| .price { | |||
| color: #D33D3E; | |||
| font-size: 34rpx; | |||
| font-weight: 500; | |||
| } | |||
| } | |||
| .menu-btn { | |||
| width: 213rpx; | |||
| height: 79rpx; | |||
| display: flex; | |||
| align-items: center; | |||
| justify-content: center; | |||
| color: #00CCCC; | |||
| font-size: 30rpx; | |||
| font-weight: 500; | |||
| } | |||
| .menu-btn::after { | |||
| content: " "; | |||
| width: 15rpx; | |||
| height: 15rpx; | |||
| border-bottom: 3rpx solid #00CCCC; | |||
| border-right: 3rpx solid #00CCCC; | |||
| transform: rotate(-45deg); | |||
| margin-left: 8rpx; | |||
| } | |||
| } | |||
| } | |||
| </style> | |||
| @ -0,0 +1,61 @@ | |||
| <template> | |||
| <view class="comm-navbar position-fixed top-0 w-100 left-0" :style="{background: backgroundColor, zIndex: zIndex}"> | |||
| <!-- 状态栏 --> | |||
| <view class="statusBarHeight"></view> | |||
| <view class="navbar flex justify-center align-center"> | |||
| <view class="nav-icon"> | |||
| <slot></slot> | |||
| <u-icon size="40" v-if="back" class="bakc" :style="{color: textColor}" @click="handleBack" name="arrow-left"></u-icon> | |||
| </view> | |||
| <view class="nav-text" :style="{color: textColor}">{{ text }}</view> | |||
| </view> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| export default { | |||
| props: { | |||
| text: { | |||
| type: String | |||
| }, | |||
| textColor: { | |||
| type: String, | |||
| default: '#333' | |||
| }, | |||
| backgroundColor: { | |||
| type: String, | |||
| default: 'transparent' | |||
| }, | |||
| back: { | |||
| type: Boolean, | |||
| default: false | |||
| }, | |||
| backNum: { | |||
| type: Number, | |||
| default: 1 | |||
| }, | |||
| zIndex: { | |||
| type: [Number, String], | |||
| default: 999 | |||
| } | |||
| }, | |||
| methods: { | |||
| handleBack () { | |||
| uni.navigateBack({ | |||
| delta: this.backNum | |||
| }) | |||
| } | |||
| } | |||
| } | |||
| </script> | |||
| <style lang="scss" scoped> | |||
| .comm-navbar {z-index: 999; | |||
| .statusBarHeight {width: 100%;height: var(--status-bar-height);} | |||
| .navbar {height: 80rpx;width: 100%;padding: 0 32rpx;} | |||
| .nav-text {font-size: 36rpx;} | |||
| .nav-icon {position: absolute;left: 10rpx;} | |||
| .bakc {font-size: 36rpx} | |||
| } | |||
| </style> | |||
| @ -0,0 +1,64 @@ | |||
| <template> | |||
| <view class="new-card flex justify-between" @click="seeDetail"> | |||
| <view class="new-card-l flex flex-column justify-between"> | |||
| <view class="title">{{item.title}}</view> | |||
| <view>{{item.createTime}}</view> | |||
| </view> | |||
| <view class="new-card-r"> | |||
| <u--image :showLoading="true" :src="item.photo" width="216rpx" height="216rpx"></u--image> | |||
| </view> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| export default{ | |||
| props:{ | |||
| item:{ | |||
| type:Object, | |||
| } | |||
| }, | |||
| data(){ | |||
| return{ | |||
| } | |||
| }, | |||
| methods:{ | |||
| seeDetail(){ | |||
| this.$emit('seeDetail',this.item) | |||
| } | |||
| } | |||
| } | |||
| </script> | |||
| <style lang="scss" scoped> | |||
| .new-card { | |||
| //border-bottom: 1px solid #C8C8C8; | |||
| margin-bottom: 24rpx; | |||
| background-color: #FFFFFF; | |||
| .new-card-l { | |||
| font-size: 28rpx; | |||
| color: #C8C8C8; | |||
| padding: 16rpx 16rpx; | |||
| .title { | |||
| font-size: 32rpx; | |||
| color: #000000; | |||
| line-height: 40rpx; | |||
| font-weight: 600; | |||
| overflow: hidden; | |||
| display: -webkit-box; | |||
| -webkit-box-orient: vertical; | |||
| -webkit-line-clamp: 2; | |||
| font-family: SimSun; | |||
| } | |||
| } | |||
| .new-card-r{ | |||
| uni-image>img { | |||
| border-top-right-radius: 4rpx; | |||
| border-bottom-right-radius: 4rpx; | |||
| } | |||
| } | |||
| } | |||
| </style> | |||
| @ -0,0 +1,76 @@ | |||
| <template> | |||
| <!-- <view class="btn-box transp"> | |||
| <view class="left-content">该页面部分功能需要关注公众号获取,点击前往关注,更有海量独家兼职信息每日放送</view> | |||
| <view class="right-box"> | |||
| <view class="font-btn" @click="onclick">使用完整功能</view> | |||
| <view class="font-btn-after"></view> | |||
| </view> | |||
| </view> --> | |||
| </template> | |||
| <script> | |||
| export default{ | |||
| props:{ | |||
| }, | |||
| data(){ | |||
| return { | |||
| } | |||
| }, | |||
| methods:{ | |||
| onclick:() => { | |||
| window.location = "https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=Mzg3NzkzMTg3NQ==#wechat_redirect" | |||
| } | |||
| } | |||
| } | |||
| </script> | |||
| <style lang="scss" scoped> | |||
| .transp{ | |||
| width: 100vw; | |||
| height: 154rpx; | |||
| z-index: 99999; | |||
| box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); | |||
| background-color: #000; | |||
| display: flex; | |||
| flex-wrap: wrap; | |||
| } | |||
| .left-content { | |||
| color: #777; | |||
| font-size: 26rpx; | |||
| width: 480rpx; | |||
| line-height: 30rpx; | |||
| padding: 25rpx; | |||
| } | |||
| .right-box{ | |||
| color: #aaa; | |||
| font-size: 30rpx; | |||
| padding: 35rpx 0; | |||
| width: 220rpx; | |||
| } | |||
| .font-btn-after { | |||
| content: " "; | |||
| width: 12rpx; | |||
| height: 12rpx; | |||
| border-bottom: 3rpx solid #aaa; | |||
| border-right: 3rpx solid #aaa; | |||
| transform: rotate(-45deg); | |||
| position: absolute; | |||
| right: 25rpx; | |||
| top: 42rpx; | |||
| } | |||
| .btn-box { | |||
| position: fixed; | |||
| bottom: 0; | |||
| left: 0; | |||
| right: 0; | |||
| } | |||
| </style> | |||
| @ -0,0 +1,45 @@ | |||
| <template> | |||
| <view class="page"> | |||
| <view class="box"> | |||
| <image class="img" :src="src"></image> | |||
| 正在为您拉起微信授权... | |||
| </view> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| export default{ | |||
| props:{ | |||
| src: require('@/static/img/wechat-icon.png') | |||
| }, | |||
| data(){ | |||
| return { | |||
| } | |||
| }, | |||
| methods:{ | |||
| } | |||
| } | |||
| </script> | |||
| <style lang="scss" scoped> | |||
| .page { | |||
| width: 100vw; | |||
| background-color: #fff; | |||
| } | |||
| .box { | |||
| width: 500rpx; | |||
| height: 800rpx; | |||
| margin: 80rpx auto; | |||
| text-align: center; | |||
| } | |||
| .img{ | |||
| width: 500rpx; | |||
| height: 500rpx; | |||
| } | |||
| </style> | |||
| @ -0,0 +1,64 @@ | |||
| <template> | |||
| <view class="new-card flex justify-between"> | |||
| <view style="margin: 10rpx 24rpx; display: flex;"> | |||
| <image :showLoading="true" :src="item.headImage" style="width: 100rpx;height: 100rpx;border-radius: 50%;"></image> | |||
| <view style="padding: 28rpx;"> | |||
| <view style="font-size: 28rpx;font-weight: 500">{{getName(item.nickName)}}</view> | |||
| <view style="font-size: 24rpx;margin-top: 20rpx;">{{item.createTime}}</view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| export default{ | |||
| props:{ | |||
| item:{ | |||
| type:Object, | |||
| } | |||
| }, | |||
| data(){ | |||
| return{ | |||
| } | |||
| }, | |||
| methods:{ | |||
| getName(str){ | |||
| if(str.length > 10) { | |||
| return str.substr(0,10) + "..." | |||
| } | |||
| return str | |||
| } | |||
| } | |||
| } | |||
| </script> | |||
| <style lang="scss" scoped> | |||
| .new-card { | |||
| margin-bottom: 12rpx; | |||
| background-color: #FFFFFF; | |||
| .new-card-l { | |||
| font-size: 28rpx; | |||
| color: #C8C8C8; | |||
| padding: 16rpx 16rpx; | |||
| .title { | |||
| font-size: 32rpx; | |||
| color: #000000; | |||
| line-height: 40rpx; | |||
| font-weight: 600; | |||
| overflow: hidden; | |||
| display: -webkit-box; | |||
| -webkit-box-orient: vertical; | |||
| -webkit-line-clamp: 2; | |||
| } | |||
| } | |||
| .new-card-r{ | |||
| uni-image>img { | |||
| border-radius: 50%; | |||
| } | |||
| } | |||
| } | |||
| </style> | |||
| @ -0,0 +1,26 @@ | |||
| // .env.js 文件 | |||
| // 不同环境访问不同的路径 | |||
| // import store from '@/common/store/index' | |||
| // const ENV_API_URL = { | |||
| // development: 'https://jobadmin.java996.icu', //开发环境 | |||
| // production: 'https://jobadmin.java996.icu', //生产环境 | |||
| // } | |||
| // const ENV_BASE_URL = { | |||
| // development: 'https://jobadmin.java996.icu', //开发环境 | |||
| // production: 'https://jobadmin.java996.icu', //生产环境 | |||
| // } | |||
| const ENV_API_URL = { | |||
| development: 'http://localhost:8091', //开发环境 | |||
| production: 'http://localhost:8091', //生产环境 | |||
| } | |||
| const ENV_BASE_URL = { | |||
| development: 'http://localhost:8091', //开发环境 | |||
| production: 'http://localhost:8091', //生产环境 | |||
| } | |||
| export const BASE_URL = ENV_BASE_URL[process.env.NODE_ENV || 'development']; //后台根域名 | |||
| export const API_URL = ENV_API_URL[process.env.NODE_ENV || 'development']; //后台接口域名 | |||
| export const HAS_LIVE = false; //后台是否开通直播权限,根据情况在manifest.json中,开启注释相应组件的引入。 | |||
| @ -0,0 +1,48 @@ | |||
| import Vue from 'vue' | |||
| import App from './App' | |||
| import '@/common/components' | |||
| // import util from '@/common/utils/common' | |||
| import { | |||
| API_URL | |||
| } from './env.js'//这里是接口api | |||
| import api from '@/request/index' | |||
| import com from '@/common/com.js' | |||
| Vue.prototype.$api = api; | |||
| Vue.prototype.$API_URL = API_URL; | |||
| Vue.prototype.$com = com; | |||
| Vue.config.productionTip = false | |||
| import uView from "uview-ui"; | |||
| import store from './store/index.js' | |||
| import jweixin from 'jweixin-module' | |||
| Vue.prototype.$jweixin = jweixin | |||
| Vue.prototype.$store = store | |||
| Vue.prototype.$base_img = 'https://bag.3iot.top' | |||
| // Vue.prototype.$util = util | |||
| Vue.use(uView); | |||
| Vue.prototype.$Toast = function(title) { | |||
| return uni.showToast({ | |||
| title:title, | |||
| icon:'none' | |||
| }) | |||
| } | |||
| //全局混入 | |||
| Vue.mixin({ | |||
| data() { | |||
| return { | |||
| } | |||
| }, | |||
| onTabItemTap(e){ | |||
| let token = uni.getStorageSync('userToken') | |||
| }, | |||
| }) | |||
| App.mpType = 'app' | |||
| const app = new Vue({ | |||
| store, | |||
| ...App | |||
| }) | |||
| app.$mount() | |||
| @ -0,0 +1,98 @@ | |||
| { | |||
| "name" : "兼兼街", | |||
| "appid" : "__UNI__278B20D", | |||
| "description" : "", | |||
| "versionName" : "1.0.0", | |||
| "versionCode" : "100", | |||
| "transformPx" : false, | |||
| /* 5+App特有相关 */ | |||
| "app-plus" : { | |||
| "usingComponents" : true, | |||
| "nvueCompiler" : "uni-app", | |||
| "compilerVersion" : 3, | |||
| "splashscreen" : { | |||
| "alwaysShowBeforeRender" : true, | |||
| "waiting" : true, | |||
| "autoclose" : true, | |||
| "delay" : 0 | |||
| }, | |||
| /* 模块配置 */ | |||
| "modules" : {}, | |||
| /* 应用发布信息 */ | |||
| "distribute" : { | |||
| /* android打包配置 */ | |||
| "android" : { | |||
| "permissions" : [ | |||
| "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>", | |||
| "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>", | |||
| "<uses-permission android:name=\"android.permission.READ_CONTACTS\"/>", | |||
| "<uses-permission android:name=\"android.permission.VIBRATE\"/>", | |||
| "<uses-permission android:name=\"android.permission.READ_LOGS\"/>", | |||
| "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>", | |||
| "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>", | |||
| "<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>", | |||
| "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>", | |||
| "<uses-permission android:name=\"android.permission.CAMERA\"/>", | |||
| "<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>", | |||
| "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>", | |||
| "<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>", | |||
| "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>", | |||
| "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>", | |||
| "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>", | |||
| "<uses-permission android:name=\"android.permission.CALL_PHONE\"/>", | |||
| "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>", | |||
| "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>", | |||
| "<uses-feature android:name=\"android.hardware.camera\"/>", | |||
| "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>", | |||
| "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>" | |||
| ] | |||
| }, | |||
| /* ios打包配置 */ | |||
| "ios" : {}, | |||
| /* SDK配置 */ | |||
| "sdkConfigs" : {} | |||
| } | |||
| }, | |||
| /* 快应用特有相关 */ | |||
| "quickapp" : {}, | |||
| /* 小程序特有相关 */ | |||
| "mp-weixin" : { | |||
| "appid" : "wx6fb4a17b28186d58", | |||
| "setting" : { | |||
| "urlCheck" : false, | |||
| "es6" : true, | |||
| "minified" : true | |||
| }, | |||
| "usingComponents" : true, | |||
| "permission" : { | |||
| "scope.userLocation" : { | |||
| "desc" : "获取地理位置" | |||
| } | |||
| } | |||
| }, | |||
| "h5" : { | |||
| "optimization" : { | |||
| "treeShaking" : { | |||
| "enable" : true //启用摇树优化 | |||
| } | |||
| }, | |||
| "devServer" : { | |||
| "disableHostCheck" : true | |||
| }, | |||
| "router" : { | |||
| "mode" : "history" | |||
| } | |||
| }, | |||
| "mp-alipay" : { | |||
| "usingComponents" : true | |||
| }, | |||
| "mp-baidu" : { | |||
| "usingComponents" : true | |||
| }, | |||
| "mp-toutiao" : { | |||
| "usingComponents" : true | |||
| }, | |||
| "uniStatistics" : { | |||
| "enable" : false | |||
| } | |||
| } | |||
| @ -0,0 +1,59 @@ | |||
| { | |||
| "requires": true, | |||
| "lockfileVersion": 1, | |||
| "dependencies": { | |||
| "base64-arraybuffer": { | |||
| "version": "1.0.2", | |||
| "resolved": "https://registry.npmmirror.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", | |||
| "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==" | |||
| }, | |||
| "css-line-break": { | |||
| "version": "2.1.0", | |||
| "resolved": "https://registry.npmmirror.com/css-line-break/-/css-line-break-2.1.0.tgz", | |||
| "integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==", | |||
| "requires": { | |||
| "utrie": "^1.0.2" | |||
| } | |||
| }, | |||
| "html2canvas": { | |||
| "version": "1.4.1", | |||
| "resolved": "https://registry.npmmirror.com/html2canvas/-/html2canvas-1.4.1.tgz", | |||
| "integrity": "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==", | |||
| "requires": { | |||
| "css-line-break": "^2.1.0", | |||
| "text-segmentation": "^1.0.3" | |||
| } | |||
| }, | |||
| "jweixin-module": { | |||
| "version": "1.6.0", | |||
| "resolved": "https://registry.npmjs.org/jweixin-module/-/jweixin-module-1.6.0.tgz", | |||
| "integrity": "sha512-dGk9cf+ipipHmtzYmKZs5B2toX+p4hLyllGLF6xuC8t+B05oYxd8fYoaRz0T30U2n3RUv8a4iwvjhA+OcYz52w==" | |||
| }, | |||
| "text-segmentation": { | |||
| "version": "1.0.3", | |||
| "resolved": "https://registry.npmmirror.com/text-segmentation/-/text-segmentation-1.0.3.tgz", | |||
| "integrity": "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==", | |||
| "requires": { | |||
| "utrie": "^1.0.2" | |||
| } | |||
| }, | |||
| "utrie": { | |||
| "version": "1.0.2", | |||
| "resolved": "https://registry.npmmirror.com/utrie/-/utrie-1.0.2.tgz", | |||
| "integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==", | |||
| "requires": { | |||
| "base64-arraybuffer": "^1.0.2" | |||
| } | |||
| }, | |||
| "uview-ui": { | |||
| "version": "2.0.34", | |||
| "resolved": "https://registry.npmjs.org/uview-ui/-/uview-ui-2.0.34.tgz", | |||
| "integrity": "sha512-usJHnPCtk45yLTWTXTpLX9Vuqhzjth/+4t/m+S3J5bZuahv49mVQ126rtSnuAWWVkOUtKCX4CU83gFHZj8nP5g==" | |||
| }, | |||
| "weixin-js-sdk": { | |||
| "version": "1.6.0", | |||
| "resolved": "https://registry.npmjs.org/weixin-js-sdk/-/weixin-js-sdk-1.6.0.tgz", | |||
| "integrity": "sha512-3IYQH7aalJGFJrwdT3epvTdR1MboMiH7vIZ5BRL2eYOJ12BNah7csoMkmSZzkq1+l92sSq29XdTCVjCJoK2sBQ==" | |||
| } | |||
| } | |||
| } | |||
| @ -0,0 +1,8 @@ | |||
| { | |||
| "dependencies": { | |||
| "html2canvas": "^1.4.1", | |||
| "jweixin-module": "^1.6.0", | |||
| "uview-ui": "^2.0.31", | |||
| "weixin-js-sdk": "^1.6.0" | |||
| } | |||
| } | |||
| @ -0,0 +1,183 @@ | |||
| { | |||
| "easycom": { | |||
| "autoscan": true, | |||
| "^u-(.*)": "uview-ui/components/u-$1/u-$1.vue" | |||
| }, | |||
| "pages": [ | |||
| { | |||
| "path": "pages/home/index", | |||
| "name": "home", | |||
| "style": { | |||
| "navigationBarTitleText": "兼兼街" | |||
| } | |||
| }, | |||
| { | |||
| "path": "pages/car/index", | |||
| "style": { | |||
| "navigationBarTitleText": "江华信息" | |||
| } | |||
| }, | |||
| { | |||
| "path": "pages/news/index", | |||
| "style": { | |||
| "navigationBarTitleText": "大学家教", | |||
| "enablePullDownRefresh": true | |||
| } | |||
| }, | |||
| { | |||
| "path": "pages/my/index", | |||
| "style": { | |||
| "navigationBarTitleText": "个人中心" | |||
| } | |||
| }, | |||
| { | |||
| "path": "pages/home/course-detial", | |||
| "style": { | |||
| "navigationBarTitleText": "招聘详情" | |||
| } | |||
| }, | |||
| { | |||
| "path": "pages/home/new-detail", | |||
| "style": { | |||
| "navigationBarTitleText": "详情" | |||
| } | |||
| }, | |||
| { | |||
| "path": "pages/my/list-fensi", | |||
| "style": { | |||
| "navigationBarTitleText": "我的粉丝" | |||
| } | |||
| }, | |||
| { | |||
| "path": "pages/my/list-renzhen", | |||
| "style": { | |||
| "navigationBarTitleText": "实名认证" | |||
| } | |||
| }, | |||
| { | |||
| "path": "pages/my/my-xiansuo", | |||
| "style": { | |||
| "navigationBarTitleText": "邀请二维码", | |||
| "enablePullDownRefresh": true | |||
| } | |||
| }, | |||
| { | |||
| "path": "pages/my/my-xiansuo-new", | |||
| "style": { | |||
| "navigationBarTitleText": "我要推荐" | |||
| } | |||
| }, | |||
| { | |||
| "path": "pages/my/my-xiansuo-now", | |||
| "style": { | |||
| "navigationBarTitleText": "告用户书" | |||
| } | |||
| }, | |||
| { | |||
| "path": "pages/my/xiansuo-detail", | |||
| "style": { | |||
| "navigationBarTitleText": "我的线索" | |||
| } | |||
| }, | |||
| { | |||
| "path": "pages/my/xieyi", | |||
| "style": { | |||
| "navigationBarTitleText": "用户协议与隐私政策" | |||
| } | |||
| }, | |||
| { | |||
| "path": "pages/my/my-fabujianzhi", | |||
| "style": { | |||
| "navigationBarTitleText": "我要发布" | |||
| } | |||
| }, | |||
| { | |||
| "path": "pages/my/my-fabujianzhi-list", | |||
| "style": { | |||
| "navigationBarTitleText": "发布信息" | |||
| } | |||
| }, | |||
| { | |||
| "path": "pages/my/edit-user", | |||
| "style": { | |||
| "navigationBarTitleText": "个人信息" | |||
| } | |||
| }, | |||
| { | |||
| "path": "pages/my/login-kehu", | |||
| "style": { | |||
| "navigationBarTitleText": "登录" | |||
| } | |||
| }, | |||
| { | |||
| "path": "pages/my/my-baoming", | |||
| "style": { | |||
| "navigationBarTitleText": "我的报名" | |||
| } | |||
| }, | |||
| { | |||
| "path": "pages/my/baoming-detail", | |||
| "style": { | |||
| "navigationBarTitleText": "我的报名" | |||
| } | |||
| }, | |||
| { | |||
| "path": "pages/my/canyu-detail", | |||
| "style": { | |||
| "navigationBarTitleText": "往期参与" | |||
| } | |||
| }, | |||
| { | |||
| "path": "pages/car/course-detial", | |||
| "style": { | |||
| "navigationBarTitleText": "信息详情" | |||
| } | |||
| } | |||
| ], | |||
| "globalStyle": { | |||
| "navigationBarTextStyle": "black", | |||
| "navigationBarTitleText": "", | |||
| "navigationBarBackgroundColor": "#F8F8F8", | |||
| "backgroundColor": "#F8F8F8" | |||
| }, | |||
| "condition" : { | |||
| "current": 0, | |||
| "list": [ | |||
| { | |||
| "name": "", | |||
| "path": "pages/student-information/student-information", | |||
| "query": "" | |||
| } | |||
| ] | |||
| }, | |||
| "tabBar": { | |||
| "borderStyle": "white", | |||
| "color": "#4D4D4D", | |||
| "selectedColor": "#00CCCC;", | |||
| "backgroundColor": "#ffffff", | |||
| "list": [{ | |||
| "pagePath": "pages/home/index", | |||
| "iconPath": "static/img/tabbar/icon-home.png", | |||
| "selectedIconPath": "static/img/tabbar/icon-home-active.png", | |||
| "text": "最新兼职" | |||
| }, | |||
| { | |||
| "pagePath": "pages/car/index", | |||
| "iconPath": "static/img/tabbar/icon-new.png", | |||
| "selectedIconPath": "static/img/tabbar/icon-new-active.png", | |||
| "text": "江华信息" | |||
| }, { | |||
| "pagePath": "pages/news/index", | |||
| "iconPath": "static/img/tabbar/zxq.png", | |||
| "selectedIconPath": "static/img/tabbar/zx.png", | |||
| "text": "大学家教" | |||
| }, { | |||
| "pagePath": "pages/my/index", | |||
| "iconPath": "static/img/tabbar/icon-my.png", | |||
| "selectedIconPath": "static/img/tabbar/icon-my-active.png", | |||
| "text": "个人中心" | |||
| }] | |||
| } | |||
| } | |||
| @ -0,0 +1,489 @@ | |||
| <template> | |||
| <view> | |||
| <view class="active-card"> | |||
| <view> | |||
| <view class="active-title">{{dataInfo.title}}</view> | |||
| <view class="active-time"> | |||
| <text>{{dataInfo.longTitle}} </text> | |||
| </view> | |||
| <view class="active-add2"> | |||
| <text>【库存】{{dataInfo.num}} </text> | |||
| </view> | |||
| <view class="active-add"> | |||
| <text>【销量】{{dataInfo.payNum}} </text> | |||
| </view> | |||
| </view> | |||
| <view> | |||
| <view class="hide-context" >可用{{dataInfo.intgerPrice}}积分进行兑换该商品</view> | |||
| <!-- <view style="padding: 25rpx 0;" v-if="erop == true"> | |||
| <view class="active-title">联系方式</view> | |||
| <view class="active-time"> | |||
| <view class="menu-price"> | |||
| <text class="tips">{{dataInfo.phone}}</text> | |||
| </view> | |||
| </view> | |||
| </view> --> | |||
| </view> | |||
| </view> | |||
| <view class="contnet"> | |||
| <u-parse :content="dataInfo.details"></u-parse> | |||
| </view> | |||
| <view v-if="!showp" class="btn-box"> | |||
| <u-button v-if="fromPage && fromPage == 'tuijian'" text="我要推荐" @click="share" :customStyle="baomingStyle" | |||
| :hairline="false" color="#00BBFF"></u-button> | |||
| <view style="display: flex; background-color: #FFFFFF;"> | |||
| <view | |||
| style="width: 266rpx; height: 72rpx; border: 1rpx solid #00BBFF; color: #00BBFF; line-height: 72rpx;text-align: center;margin: 20rpx 60rpx;" | |||
| @click="getCreteClick">立即购买({{dataInfo.price}})</view> | |||
| <view | |||
| style="width: 266rpx; height: 72rpx; border: 1rpx solid #00BBFF; background-color: #00BBFF; color: #FFFFFF; line-height: 72rpx;text-align: center;margin: 20rpx 60rpx; margin-left: auto;" | |||
| @click="wechatMoments">积分兑换({{dataInfo.intgerPrice}})</view> | |||
| </view> | |||
| </view> | |||
| <view class="share-box" v-show="shareShow" @click="shareShow=false"> | |||
| <view class="jiantou"> | |||
| <image src="@/static/img/jiantou-icon.png" mode=""></image> | |||
| </view> | |||
| <view class="title"> | |||
| <image src="@/static/img/title-icon.png" mode=""></image> | |||
| </view> | |||
| </view> | |||
| <!-- <view v-if="showp"> | |||
| <view | |||
| style="position: fixed;left: 0; top: 0;width: 100vw;height: 100vh;background-color: rgba(0, 0, 0, 0.2);"> | |||
| <view | |||
| style="margin: 200rpx auto;width: 600rpx;height: 818rpx;background-color: #FFFFFF;padding: 0 32rpx;position: relative;"> | |||
| <view style="font-size: 28rpx; | |||
| font-family: Microsoft YaHei, Microsoft YaHei-Bold; | |||
| font-weight: 700; | |||
| text-align: left; | |||
| color: #191919; | |||
| line-height: 120rpx; | |||
| border-bottom: 1rpx solid #e7e7e7; | |||
| position: relative;"> | |||
| <text>{{dataInfo.title}}</text> | |||
| <view style="position: absolute; right: 20rpx; top: 0"> | |||
| </view> | |||
| </view> | |||
| <view style="font-size: 24rpx;line-height: 60rpx;margin-top: 30rpx;"> | |||
| <view class="active-time"> | |||
| <text>发车时间:{{dataInfo.outGoTime}}</text> | |||
| </view> | |||
| <view class="active-add"> | |||
| <text>始发终点: {{dataInfo.outGo}} - {{dataInfo.toGo}}</text> | |||
| </view> | |||
| <view class="active-add"> | |||
| <text> | |||
| 剩余位置:{{dataInfo.sum}} 位 | |||
| </text> | |||
| </view> | |||
| </view> | |||
| <view style="position: absolute; bottom: 50rpx;display: flex;"> | |||
| <image style="width: 60rpx; height: 60rpx; border-radius: 50%;" src="../../static/qrcode.jpg"> | |||
| </iimage> | |||
| <view style="padding: 18rpx;font-size: 28rpx;">兼兼街</view> | |||
| </view> | |||
| <view style="position: absolute; bottom: 50rpx; right: 32rpx;"> | |||
| <canvas canvas-id="qrcode" style="width: 140rpx; height: 140rpx;" /> | |||
| <view style="padding: 18rpx;font-size: 24rpx;text-align: center;">国联智聘</view> | |||
| </view> | |||
| </view> | |||
| <view style="position: absolute; bottom: 0; left: 0;"> | |||
| <view style="display: flex; background-color: #CCCCCC;"> | |||
| <view | |||
| style="width: 266rpx; height: 72rpx; border: 1rpx solid #00BBFF; color: #00BBFF; line-height: 72rpx;text-align: center;margin: 20rpx 60rpx;" | |||
| @click="showp=false">取消</view> | |||
| <view | |||
| style="width: 266rpx; height: 72rpx; border: 1rpx solid #00BBFF; background-color: #00BBFF; color: #FFFFFF; line-height: 72rpx;text-align: center;margin: 20rpx 60rpx; margin-left: auto;" | |||
| @click="">保存海报</view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </view> --> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| import uQRCode from '@/common/uqrcode.js' | |||
| export default { | |||
| data() { | |||
| return { | |||
| shareShow: false, | |||
| fromPage: null, | |||
| dataInfo: {}, | |||
| showp: false, | |||
| userInfo: {}, | |||
| id: '', | |||
| erop: false, | |||
| src: '',//require('@/static/img/course-img.png'), | |||
| baomingStyle: { | |||
| fontSize: "30rpx", | |||
| fontWeight: "700", | |||
| height: "100rpx" | |||
| } | |||
| } | |||
| }, | |||
| onLoad(e) { | |||
| if (e.fromPage) this.fromPage = e.fromPage; | |||
| this.id = e.id; | |||
| this.getactivityFindById(e.id); | |||
| }, | |||
| onReady() { | |||
| this.$com.displayNav() | |||
| }, | |||
| methods: { | |||
| getmyInfo() { | |||
| this.$api('myInfo') | |||
| .then(res => { | |||
| if (res.code == 200) { | |||
| this.role = res.result.role; | |||
| this.userInfo = res.result; | |||
| this.$store.commit('set_userInfo', res.result) | |||
| this.qrFun('https://xinxiong.java996.icu/pages/my/login-kehu?vid=' + this.userInfo.id + | |||
| "&did=" + this.id) | |||
| } else { | |||
| this.userInfo = null | |||
| } | |||
| }) | |||
| }, | |||
| getCreteClick() { | |||
| let that = this; | |||
| this.$api('carClick', { | |||
| newId: this.dataInfo.id | |||
| }) | |||
| .then(res => { | |||
| if (res.code == 200) { | |||
| that.erop = true; | |||
| } | |||
| if (res.code == 500) { | |||
| that.$api('create', { | |||
| id: that.dataInfo.id | |||
| }) | |||
| .then(res => { | |||
| that.$jweixin.config({ | |||
| debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 | |||
| appId: 'wxdabccf5a0110cfab', // 必填,公众号的唯一标识 | |||
| timestamp: res.result.timestamp, // 必填,生成签名的时间戳 | |||
| nonceStr: res.result.noncestr, // 必填,生成签名的随机串 | |||
| signature: res.result.sgture, // 必填,签名 | |||
| jsApiList: ['updateAppMessageShareData', 'updateTimelineShareData', | |||
| 'onMenuShareTimeline', 'onMenuShareAppMessage', | |||
| 'chooseWXPay' | |||
| ] | |||
| }); | |||
| that.$jweixin.chooseWXPay({ | |||
| appId: 'wxdabccf5a0110cfab', | |||
| timestamp: res.result | |||
| .timeStamp, // 支付签名时间戳,注意微信 jssdk 中的所有使用 timestamp 字段均为小写。但最新版的支付后台生成签名使用的 timeStamp 字段名需大写其中的 S 字符 | |||
| nonceStr: res.result.nonceStr, // 支付签名随机串,不长于 32 位 | |||
| package: res.result | |||
| .packageValue, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=\*\*\*) | |||
| signType: res.result | |||
| .signType, // 微信支付V3的传入 RSA ,微信支付V2的传入格式与V2统一下单的签名格式保持一致 | |||
| paySign: res.result.paySign, // 支付签名 | |||
| success: function(res) { | |||
| that.erop = true; | |||
| } | |||
| }); | |||
| }) | |||
| } | |||
| }) | |||
| }, | |||
| qrFun(text) { | |||
| this.qrShow = true | |||
| uQRCode.make({ | |||
| canvasId: 'qrcode', | |||
| componentInstance: this, | |||
| text: text, | |||
| size: 65, | |||
| margin: 0, | |||
| backgroundColor: '#FFFFFF', | |||
| foregroundColor: '#000000', | |||
| fileType: 'png', | |||
| errorCorrectLevel: uQRCode.errorCorrectLevel.H, | |||
| success: res => { | |||
| console.log("ercode", text) | |||
| } | |||
| }) | |||
| }, | |||
| apply() { | |||
| if (!this.$store.state.userToken) { | |||
| this.$Toast('请先登录!') | |||
| setTimeout(() => { | |||
| uni.navigateTo({ | |||
| url: '/pages/my/login-kehu' | |||
| }) | |||
| }, 1000) | |||
| return | |||
| } | |||
| this.share(1) | |||
| uni.navigateTo({ | |||
| url: `/pages/home/buy-course?id=${this.id}` | |||
| }) | |||
| }, | |||
| wechatMoments() { | |||
| this.$api('creteFenxian', { | |||
| url: location.href.split('#')[0] | |||
| }) | |||
| .then(res => { | |||
| if (res.code == 200) { | |||
| this.$jweixin.config({ | |||
| debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 | |||
| appId: 'wxdabccf5a0110cfab', // 必填,公众号的唯一标识 | |||
| timestamp: res.result.timestamp, // 必填,生成签名的时间戳 | |||
| nonceStr: res.result.noncestr, // 必填,生成签名的随机串 | |||
| signature: res.result.sgture, // 必填,签名 | |||
| jsApiList: ['updateAppMessageShareData', 'updateTimelineShareData', | |||
| 'onMenuShareTimeline', 'onMenuShareAppMessage', 'chooseWXPay' | |||
| ] | |||
| }); | |||
| this.$jweixin.ready(ress => { | |||
| this.$jweixin.updateTimelineShareData({ | |||
| title: this.dataInfo.title, | |||
| link: `https://xinxiong.java996.icu/pages/home/course-detial?id=${this.id}`, // 分享链接,该链接域名或路径必须与当前页面对应的公众号 JS 安全域名一致 | |||
| }) | |||
| }); | |||
| } | |||
| }) | |||
| }, | |||
| share(type) { //1为支付 | |||
| if (!type) { | |||
| this.shareShow = true; | |||
| } | |||
| this.$api('creteFenxian', { | |||
| url: location.href.split('#')[0] | |||
| }) | |||
| .then(res => { | |||
| if (res.code == 200) { | |||
| this.$jweixin.config({ | |||
| debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 | |||
| appId: 'wxdabccf5a0110cfab', // 必填,公众号的唯一标识 | |||
| timestamp: res.result.timestamp, // 必填,生成签名的时间戳 | |||
| nonceStr: res.result.noncestr, // 必填,生成签名的随机串 | |||
| signature: res.result.sgture, // 必填,签名 | |||
| jsApiList: ['updateAppMessageShareData', 'updateTimelineShareData', | |||
| 'onMenuShareTimeline', 'onMenuShareAppMessage', 'chooseWXPay' | |||
| ] | |||
| }); | |||
| this.$jweixin.ready(ress => { | |||
| this.$jweixin.onMenuShareTimeline({ | |||
| title: this.dataInfo.title, | |||
| desc: this.dataInfo.title, // 分享描述 | |||
| link: `http://liyuyu.xzaiyp.top/pages/home/course-detial?id=${this.id}`, // 分享链接,该链接域名或路径必须与当前页面对应的公众号 JS 安全域名一致 | |||
| success: function() { | |||
| // 用户点击了分享后执行的回调函数 | |||
| } | |||
| }) | |||
| this.$jweixin.onMenuShareAppMessage({ | |||
| title: this.dataInfo.title, | |||
| desc: this.dataInfo.title, // 分享描述 | |||
| link: `http://liyuyu.xzaiyp.top/pages/home/course-detial?id=${this.id}`, // 分享链接,该链接域名或路径必须与当前页面对应的公众号 JS 安全域名一致 | |||
| success: function() { | |||
| // 用户点击了分享后执行的回调函数 | |||
| } | |||
| }) | |||
| }) | |||
| this.$jweixin.error(err => { | |||
| // uni.showModal({ | |||
| // content:'err:' + JSON.stringify(err) | |||
| // }) | |||
| // config信息验证失败会执行 error 函数,如签名过期导致验证失败,具体错误信息可以打开 config 的debug模式查看,也可以在返回的 res 参数中查看,对于 SPA 可以在这里更新签名。 | |||
| }); | |||
| // uni.navigateTo({ | |||
| // url:`/pages/home/buy-course?id=${this.id}` | |||
| // }) | |||
| } | |||
| }) | |||
| }, | |||
| getactivityFindById(id) { | |||
| uni.showLoading() | |||
| this.$api('getShopDetailsById', { | |||
| id | |||
| }) | |||
| .then(res => { | |||
| uni.hideLoading() | |||
| if (res.code == 200) { | |||
| this.dataInfo = res.result; | |||
| } | |||
| }) | |||
| }, | |||
| poster() { | |||
| this.showp = true; | |||
| this.getmyInfo() | |||
| } | |||
| } | |||
| } | |||
| </script> | |||
| <style lang="scss" scoped> | |||
| .hide-context { | |||
| margin: 20rpx 0; | |||
| padding: 30rpx 30rpx; | |||
| outline: 0px; | |||
| width: 100%; | |||
| max-width: 100%; | |||
| box-sizing: border-box; | |||
| overflow-wrap: break-word; | |||
| display: inline-block; | |||
| vertical-align: top; | |||
| background-image: linear-gradient(#dceefc 0%, #fefeff 100%); | |||
| height: auto; | |||
| overflow: hidden; | |||
| border: 0px none; | |||
| color: #B0B0B0; | |||
| text-align: center; | |||
| font-size: 26rpx; | |||
| } | |||
| .active-card { | |||
| background: #ffffff; | |||
| padding: 20rpx 29rpx 13rpx; | |||
| border-bottom: 20rpx solid #F5F5F5; | |||
| .active-title { | |||
| font-size: 36rpx; | |||
| color: #000; | |||
| font-weight: 700; | |||
| margin-top: 20rpx; | |||
| line-height: 40rpx; | |||
| } | |||
| .active-time { | |||
| color: #707070; | |||
| font-size: 30rpx; | |||
| margin: 30rpx 0; | |||
| } | |||
| .active-add { | |||
| color: #707070; | |||
| font-size: 30rpx; | |||
| margin: 30rpx 0; | |||
| } | |||
| .active-add2 { | |||
| color: #707070; | |||
| font-size: 30rpx; | |||
| } | |||
| .menu-price { | |||
| font-weight: 700; | |||
| font-size: 40rpx; | |||
| color: #D33D3E; | |||
| .unit { | |||
| font-size: 40rpx; | |||
| } | |||
| .tips { | |||
| font-size: 30rpx; | |||
| } | |||
| } | |||
| .copy { | |||
| padding-left: 20rpx; | |||
| font-size: 26rpx; | |||
| color: #1b2bbc; | |||
| cursor: pointer; | |||
| } | |||
| .active-menu { | |||
| margin-top: 31rpx; | |||
| .menu-btn { | |||
| width: 213rpx; | |||
| height: 79rpx; | |||
| display: flex; | |||
| align-items: center; | |||
| justify-content: center; | |||
| background-color: #ED1450; | |||
| color: #FFFFFF; | |||
| font-size: 26rpx; | |||
| border-radius: 40rpx; | |||
| } | |||
| } | |||
| } | |||
| .contnet { | |||
| padding: 20rpx 20rpx 150rpx 20rpx; | |||
| font-weight: 500; | |||
| font-size: 40rpx; | |||
| } | |||
| .btn-box { | |||
| position: fixed; | |||
| bottom: 0; | |||
| left: 0; | |||
| right: 0; | |||
| } | |||
| .share-box { | |||
| width: 100%; | |||
| height: 100vh; | |||
| position: fixed; | |||
| top: 0; | |||
| left: 0; | |||
| background-color: rgba(0, 0, 0, .8); | |||
| .jiantou { | |||
| position: absolute; | |||
| top: 140rpx; | |||
| right: 40rpx; | |||
| image { | |||
| width: 138rpx; | |||
| height: 138rpx; | |||
| } | |||
| } | |||
| .title { | |||
| position: absolute; | |||
| top: 50%; | |||
| left: 50%; | |||
| transform: translate(-50%, -50%); | |||
| image { | |||
| width: 526rpx; | |||
| height: 212rpx; | |||
| } | |||
| } | |||
| } | |||
| </style> | |||
| @ -0,0 +1,269 @@ | |||
| <template> | |||
| <view class="home-pages"> | |||
| <u-swiper | |||
| :list="swpList" | |||
| keyName="image" | |||
| indicator | |||
| height="180" | |||
| indicatorActiveColor="#FFFFFF" | |||
| indicatorMode="dot" | |||
| circular | |||
| @click="swpClick" | |||
| ></u-swiper> | |||
| <view style="color: #707070; | |||
| font-size: 28rpx;"> | |||
| </view> | |||
| <view class="home-content"> | |||
| <u-tabs | |||
| :list="tabList" | |||
| lineWidth="70" | |||
| lineHeight="3" | |||
| lineColor= "#00CCCC" | |||
| :activeStyle="{ | |||
| color: '#000000', | |||
| fontWeight: 'bold', | |||
| transform: 'scale(1.35)' | |||
| }" | |||
| :inactiveStyle="{ | |||
| color: '#000000', | |||
| transform: 'scale(1)' | |||
| }" | |||
| itemStyle="padding-left: 15px; padding-right: 15px; height: 34px;" | |||
| @click="tabClick" | |||
| > | |||
| </u-tabs> | |||
| <scroll-view scroll-y="true" class="scroll-y" | |||
| <template v-if="params.labelClass == '-1'"> | |||
| <card v-for="(item,i) in studyList" :item="item" :key="i" :i="i" @seeDetail="seeDetail"></card> | |||
| </template> | |||
| <template v-if="params.labelClass == '0'"> | |||
| <active-card v-for="(item,i) in studyList" :item="item" :key="i" :i="i" @seeDetail="seeDetail"></active-card> | |||
| </template> | |||
| <template v-if="params.labelClass == '1'"> | |||
| <activeCardMan v-for="(item,i) in studyList" :item="item" :key="i" :i="i" @seeDetail="seeDetail"></activeCardMan> | |||
| </template> | |||
| </scroll-view> | |||
| </view> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| import card from '@/components/active-card/index.vue' | |||
| import activeCard from '@/components/active-card/index-car.vue' | |||
| import activeCardMan from '@/components/active-card/index-car-man.vue' | |||
| export default{ | |||
| components:{ | |||
| card, | |||
| activeCard, | |||
| activeCardMan | |||
| }, | |||
| data(){ | |||
| return{ | |||
| list:[ | |||
| '寒雨连江夜入吴', | |||
| '平明送客楚山孤', | |||
| '洛阳亲友如相问', | |||
| '一片冰心在玉壶' | |||
| ], | |||
| params:{ | |||
| pageNo:1, | |||
| labelClass:'0', | |||
| pageSize:10, | |||
| total: null, | |||
| isLock: true | |||
| }, | |||
| current:0, | |||
| studyList:[], | |||
| swpList: [ | |||
| ], | |||
| tabList: [ | |||
| { | |||
| id:'-1', | |||
| name:'招聘信息' | |||
| }, | |||
| { | |||
| id:'0', | |||
| name:'兑换商城' | |||
| }, | |||
| ] | |||
| } | |||
| }, | |||
| onLoad() { | |||
| this.studyList = []; | |||
| this.params.labelClass = "-1"; | |||
| this.params.pageNo = 1; | |||
| this.params.total = null; | |||
| this.params.isLock = true; | |||
| this.getstudy(); | |||
| // this.getknowledge(); | |||
| this.getbannerList() | |||
| this.getJobAddressList(); | |||
| }, | |||
| // 隐藏微信h5的标题栏 | |||
| onReady() { | |||
| this.$com.displayNav() | |||
| }, | |||
| onPullDownRefresh() { | |||
| this.studyList = []; | |||
| this.params.pageNo = 1; | |||
| this.params.total = null; | |||
| this.params.isLock = true; | |||
| this.getstudy() | |||
| }, | |||
| onReachBottom() { | |||
| if(this.params.isLock){ | |||
| this.params.isLock = false; | |||
| if(this.params.total !== null && this.params.pageNo * this.params.pageSize >= this.params.total){ | |||
| this.$Toast('没有更多数据了哦!'); | |||
| setTimeout(()=>{ | |||
| this.params.isLock = true; | |||
| },3000) | |||
| return | |||
| } | |||
| this.params.pageNo+=1; | |||
| this.$Toast('数据加载成功!'); | |||
| this.getstudy(); | |||
| } | |||
| }, | |||
| methods:{ | |||
| lower(){ | |||
| }, | |||
| getbannerList(){ | |||
| this.$api('bannerListJiangHua') | |||
| .then(res=>{ | |||
| if(res.code == 200){ | |||
| this.swpList = res.result | |||
| } | |||
| }) | |||
| }, | |||
| //得到兼职地区分类 | |||
| getJobAddressList(){ | |||
| }, | |||
| getstudy(){//学习列表 | |||
| uni.showLoading() | |||
| if(this.params.labelClass == "-1"){ | |||
| this.$api('JobList',this.params) | |||
| .then(res=>{ | |||
| uni.hideLoading(); | |||
| if(res.code == 200){ | |||
| if(this.params.total== null) { | |||
| this.params.total = res.result.total | |||
| } | |||
| if(this.params.pageNo>1){ | |||
| uni.hideLoading(); | |||
| } | |||
| this.studyList = this.studyList.concat(res.result.records); | |||
| this.params.isLock = true; | |||
| }else { | |||
| if(this.params.pageNo>1){ | |||
| uni.hideLoading(); | |||
| } | |||
| this.params.isLock = true; | |||
| } | |||
| }) | |||
| }else{ | |||
| this.$api('getJobShopList',this.params) | |||
| .then(res=>{ | |||
| uni.hideLoading(); | |||
| if(res.code == 200){ | |||
| if(this.params.total== null) { | |||
| this.params.total = res.result.total | |||
| } | |||
| if(this.params.pageNo>1){ | |||
| uni.hideLoading(); | |||
| } | |||
| this.studyList = this.studyList.concat(res.result.records); | |||
| this.params.isLock = true; | |||
| }else { | |||
| if(this.params.pageNo>1){ | |||
| uni.hideLoading(); | |||
| } | |||
| this.params.isLock = true; | |||
| } | |||
| }) | |||
| } | |||
| }, | |||
| swpClick(){ | |||
| }, | |||
| tabClick(e){ | |||
| this.params.labelClass = e.id; | |||
| this.params.pageNo =1; | |||
| this.studyList = []; | |||
| this.getstudy(); | |||
| }, | |||
| seeDetail(item){//查看详情 | |||
| this.$api('myInfo') | |||
| .then(res=>{ | |||
| if(res.code == 200){ | |||
| this.role = res.result.role; | |||
| this.userInfo = res.result; | |||
| this.$store.commit('set_userInfo',res.result) | |||
| if(this.params.labelClass=='-1'){ | |||
| uni.navigateTo({ | |||
| url:`/pages/home/course-detial?id=${item.id}` | |||
| }) | |||
| }else{ | |||
| uni.navigateTo({ | |||
| url:`/pages/car/course-detial?id=${item.id}` | |||
| }) | |||
| } | |||
| }else{ | |||
| this.$Toast('请先登录!') | |||
| setTimeout(()=>{ | |||
| uni.navigateTo({ | |||
| url:'/pages/my/login-kehu' | |||
| }) | |||
| },1000) | |||
| return | |||
| this.userInfo = null | |||
| } | |||
| }) | |||
| }, | |||
| } | |||
| } | |||
| </script> | |||
| <style lang="scss" scoped> | |||
| .home-pages { | |||
| padding: 28rpx 29rpx 0; | |||
| background-color: #F7F7F7; | |||
| .swiper{ | |||
| position: relative; | |||
| height: calc(100% -7vh); | |||
| width: 100%; | |||
| height: 1800px; | |||
| } | |||
| .scroll-Y { | |||
| height: calc(300vh - 660rpx); | |||
| padding-top: 20rpx; | |||
| } | |||
| .home-content { | |||
| .active-card{ | |||
| margin-top: 20rpx;; | |||
| border-radius: 0; | |||
| border: none; | |||
| border-style: none; | |||
| box-shadow: none; | |||
| } | |||
| } | |||
| } | |||
| </style> | |||
| @ -0,0 +1,267 @@ | |||
| <template> | |||
| <view class="buy-course"> | |||
| <view class="course-box "> | |||
| <view class="course-box-item flex"> | |||
| <u--image :showLoading="true" :src="dataInfo.photo" width="281rpx" height="178rpx"></u--image> | |||
| <view class="box-right"> | |||
| <view class="active-title">{{dataInfo.title}}[{{dataInfo.money}}元/小时]</view> | |||
| <view class="active-time"> | |||
| <text>{{dataInfo.startTime}} - {{dataInfo.endTime}}</text> | |||
| </view> | |||
| <view class="active-add"> | |||
| <text>{{dataInfo.place}}</text> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| <view class="from-box"> | |||
| <view class="from-title">填写报名人信息</view> | |||
| <u--form | |||
| labelPosition="left" | |||
| :model="userInfo" | |||
| ref="form1" | |||
| labelWidth="80" | |||
| :labelStyle="formLabelStyle" | |||
| > | |||
| <u-form-item | |||
| label="姓名:" | |||
| borderBottom | |||
| ref="item1" | |||
| > | |||
| <u--input | |||
| v-model="userInfo.name" | |||
| border="none" | |||
| placeholder="请输入姓名" | |||
| ></u--input> | |||
| </u-form-item> | |||
| <u-form-item | |||
| label="联系电话:" | |||
| borderBottom | |||
| ref="item1" | |||
| > | |||
| <u--input | |||
| v-model="userInfo.phone" | |||
| border="none" | |||
| placeholder="请输入手机号码" | |||
| type="number" | |||
| ></u--input> | |||
| </u-form-item> | |||
| </u--form> | |||
| </view> | |||
| <view class="pay-box"> | |||
| <view class="pay-price flex align-center justify-between"> | |||
| <view class="pay-price-tip">费用</view> | |||
| <view> | |||
| <text class="unit">¥</text> | |||
| <text>{{dataInfo.price}}</text> | |||
| </view> | |||
| </view> | |||
| <view class="pay-type"> | |||
| <view class="pay-type-item flex justify-between align-center" v-for="item in payList" :key="item.id" @click="choosePay(item)"> | |||
| <view class="flex align-center"> | |||
| <image class="type-img" :src="item.src" mode=""></image> | |||
| <text class="ml-1">{{item.text}}</text> | |||
| </view> | |||
| <image class="choose-img" :src="chooseType == item.id? '../../static/img/choose-act.png' : '../../static/img/choose.png'" mode=""></image> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| <view class="btn-box"> | |||
| <u-button text="立即报名" @click="apply" :customStyle="baomingStyle" :hairline="false" color="#00BBFF"></u-button> | |||
| </view> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| export default{ | |||
| data(){ | |||
| return{ | |||
| chooseType: 0, | |||
| id:'', | |||
| dataInfo: {}, | |||
| userInfo:{ | |||
| name:'', | |||
| companyName:'', | |||
| phone:'', | |||
| companyPost:'' | |||
| }, | |||
| formLabelStyle:{ | |||
| color: '#707070', | |||
| fontSize: '30rpx' | |||
| }, | |||
| baomingStyle: { | |||
| fontSize:"30rpx", | |||
| fontWeight:"700", | |||
| height: "100rpx" | |||
| }, | |||
| payList: [ | |||
| { | |||
| id:0, | |||
| text:'微信支付', | |||
| src:require('@/static/img/wechat-icon.png') | |||
| }, | |||
| ] | |||
| } | |||
| }, | |||
| // 隐藏微信h5的标题栏 | |||
| onReady() { | |||
| this.$com.displayNav() | |||
| }, | |||
| onLoad(e) { | |||
| this.getactivityFindById(e.id); | |||
| this.id = e.id; | |||
| }, | |||
| methods:{ | |||
| choosePay(item){ | |||
| this.chooseType = item.id; | |||
| }, | |||
| apply(){//添加报名信息 | |||
| if(this.userInfo.phone.length != 11){ | |||
| this.$Toast('请输入正确手机号!') | |||
| return | |||
| } | |||
| let params = { | |||
| activityId:this.id, | |||
| payType:this.chooseType, | |||
| ...this.userInfo, | |||
| } | |||
| this.$api('saveEnroll',params) | |||
| .then(res=>{ | |||
| if(res.code == 200){ | |||
| this.wxPay(res.result) | |||
| }else{ | |||
| this.$Toast(res.message) | |||
| } | |||
| }) | |||
| }, | |||
| wxPay(id){ | |||
| let that = this; | |||
| that.$api('create',{id}) | |||
| .then(res=>{ | |||
| that.$jweixin.chooseWXPay({ | |||
| appId: res.result.appId, | |||
| timestamp: res.result.timeStamp, // 支付签名时间戳,注意微信 jssdk 中的所有使用 timestamp 字段均为小写。但最新版的支付后台生成签名使用的 timeStamp 字段名需大写其中的 S 字符 | |||
| nonceStr: res.result.nonceStr, // 支付签名随机串,不长于 32 位 | |||
| package: res.result.packageValue, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=\*\*\*) | |||
| signType: res.result.signType, // 微信支付V3的传入 RSA ,微信支付V2的传入格式与V2统一下单的签名格式保持一致 | |||
| paySign: res.result.paySign, // 支付签名 | |||
| success: function (res) { | |||
| // 支付成功后的回调函数 | |||
| } | |||
| }); | |||
| }) | |||
| }, | |||
| getactivityFindById(id){ | |||
| uni.showLoading() | |||
| this.$api('activityFindById',{id}) | |||
| .then(res=>{ | |||
| uni.hideLoading() | |||
| if(res.code == 200){ | |||
| this.dataInfo = res.result; | |||
| } | |||
| }) | |||
| } | |||
| } | |||
| } | |||
| </script> | |||
| <style lang="scss" scoped> | |||
| .buy-course { | |||
| .course-box { | |||
| padding: 0 26rpx; | |||
| .course-box-item { | |||
| background: #ffffff; | |||
| border-radius: 12rpx; | |||
| box-shadow: 3rpx 3rpx 6rpx 3rpx rgba(0,0,0,0.16); | |||
| padding: 33rpx 13rpx; | |||
| .box-right { | |||
| margin-left: 16rpx; | |||
| .active-title { | |||
| font-size: 30rpx; | |||
| color: #000; | |||
| line-height: 40rpx; | |||
| overflow: hidden; | |||
| display: -webkit-box; | |||
| -webkit-box-orient: vertical; | |||
| -webkit-line-clamp: 2; | |||
| } | |||
| .active-time { | |||
| color: #707070; | |||
| font-size: 26rpx; | |||
| margin: 10rpx 0 14rpx 0; | |||
| } | |||
| .active-add { | |||
| color: #707070; | |||
| font-size: 26rpx; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| .from-box { | |||
| padding: 0 26rpx; | |||
| .from-title { | |||
| font-size: 30rpx; | |||
| color: #000; | |||
| margin-top: 35rpx; | |||
| margin-bottom: 15rpx; | |||
| } | |||
| } | |||
| .pay-box { | |||
| border-top: 20rpx solid #F5F5F5; | |||
| padding: 0 26rpx; | |||
| .pay-price { | |||
| color: #D33D3E; | |||
| font-size: 40rpx; | |||
| font-weight: 700; | |||
| padding: 47rpx 0 20rpx 0; | |||
| border-bottom: 1px solid #E6E6E6; | |||
| .pay-price-tip { | |||
| color: #000000; | |||
| font-size: 30rpx; | |||
| font-weight: 400; | |||
| } | |||
| .unit { | |||
| font-size: 30rpx; | |||
| font-weight: 400; | |||
| } | |||
| } | |||
| .pay-type { | |||
| padding-top: 22rpx; | |||
| .pay-type-item { | |||
| margin-bottom: 42rpx; | |||
| .type-img { | |||
| width: 70rpx; | |||
| height: 70rpx; | |||
| } | |||
| .choose-img { | |||
| width: 46rpx; | |||
| height: 46rpx; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| .btn-box { | |||
| position: fixed; | |||
| bottom: 0; | |||
| left: 0; | |||
| right: 0; | |||
| } | |||
| } | |||
| </style> | |||
| @ -0,0 +1,430 @@ | |||
| <template> | |||
| <view> | |||
| <view class="active-card"> | |||
| <view> | |||
| <view class="active-title">{{dataInfo.title}}</view> | |||
| <view class="active-time"> | |||
| <text>招聘时间: {{dataInfo.startTime}} - {{dataInfo.endTime}}</text> | |||
| </view> | |||
| <view class="active-add"> | |||
| <text>招聘地址: {{dataInfo.place}}</text> | |||
| </view> | |||
| <view class="active-menu"> | |||
| <view class="menu-price"> | |||
| <text class="unit">¥</text> | |||
| <text>{{dataInfo.money}}</text> | |||
| <text class="tips">/{{dataInfo.company}}</text> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| <view> | |||
| <view class="hide-context" v-if="erop == false" @click="getCreteClick">点击查看联系方式</view> | |||
| <view style="padding: 25rpx 0;" v-if="erop == true"> | |||
| <view class="active-title">联系方式</view> | |||
| <view class="active-time"> | |||
| <view class="menu-price"> | |||
| <text class="tips">{{dataInfo.phoneDetails}}</text> | |||
| <text class="copy">点击复制</text> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| <view class="contnet"> | |||
| <u-parse :content="dataInfo.details"></u-parse> | |||
| </view> | |||
| <view v-if="!showp" class="btn-box"> | |||
| <u-button v-if="fromPage && fromPage == 'tuijian'" text="我要推荐" @click="share" :customStyle="baomingStyle" :hairline="false" color="#00BBFF"></u-button> | |||
| <!-- <view style="display: flex; background-color: #FFFFFF;"> | |||
| <view style="width: 266rpx; height: 72rpx; border: 1rpx solid #00BBFF; color: #00BBFF; line-height: 72rpx;text-align: center;margin: 20rpx 60rpx;" @click="poster">生成海报</view> | |||
| <view style="width: 266rpx; height: 72rpx; border: 1rpx solid #00BBFF; background-color: #00BBFF; color: #FFFFFF; line-height: 72rpx;text-align: center;margin: 20rpx 60rpx; margin-left: auto;" @click="wechatMoments">分享到朋友圈</view> | |||
| </view> --> | |||
| </view> | |||
| <wx-b-card></wx-b-card> | |||
| <view class="share-box" v-show="shareShow" @click="shareShow=false"> | |||
| <view class="jiantou"> | |||
| <image src="@/static/img/jiantou-icon.png" mode=""></image> | |||
| </view> | |||
| <view class="title"> | |||
| <image src="@/static/img/title-icon.png" mode=""></image> | |||
| </view> | |||
| </view> | |||
| <view v-if="showp"> | |||
| <view style="position: fixed;left: 0; top: 0;width: 100vw;height: 100vh;background-color: rgba(0, 0, 0, 0.2);"> | |||
| <view style="margin: 200rpx auto;width: 600rpx;height: 818rpx;background-color: #FFFFFF;padding: 0 32rpx;position: relative;"> | |||
| <view style="font-size: 28rpx; | |||
| font-family: Microsoft YaHei, Microsoft YaHei-Bold; | |||
| font-weight: 700; | |||
| text-align: left; | |||
| color: #191919; | |||
| line-height: 120rpx; | |||
| border-bottom: 1rpx solid #e7e7e7; | |||
| position: relative;"> | |||
| <text>{{dataInfo.title}}</text> | |||
| <view style="position: absolute; right: 20rpx; top: 0"> | |||
| <view style="color: red;"> | |||
| <text class="unit">¥</text> | |||
| <text>{{dataInfo.money}}</text> | |||
| <text class="tips">/{{dataInfo.company}}</text> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| <view style="font-size: 24rpx;line-height: 60rpx;margin-top: 30rpx;"> | |||
| <view class="active-time"> | |||
| <text>时间: {{dataInfo.startTime}} - {{dataInfo.endTime}}</text> | |||
| </view> | |||
| <view class="active-add"> | |||
| <text>地址: {{dataInfo.place}}</text> | |||
| </view> | |||
| <view class="active-add"> | |||
| <text>注意: | |||
| 1.时间地点要留心 | |||
| 2.兼职期间要注意安全 | |||
| 3.提前收费不可信 | |||
| 4. 口头协议不可信 | |||
| 5.购物网站刷单工作需谨慎 | |||
| </text> | |||
| </view> | |||
| </view> | |||
| <view style="position: absolute; bottom: 50rpx;display: flex;"> | |||
| <image style="width: 60rpx; height: 60rpx; border-radius: 50%;" src="../../static/qrcode.jpg"></iimage> | |||
| <view style="padding: 18rpx;font-size: 28rpx;">兼兼街</view> | |||
| </view> | |||
| <view style="position: absolute; bottom: 50rpx; right: 32rpx;"> | |||
| <canvas canvas-id="qrcode" style="width: 140rpx; height: 140rpx;"/> | |||
| <view style="padding: 18rpx;font-size: 24rpx;text-align: center;">国联智聘</view> | |||
| </view> | |||
| </view> | |||
| <view style="position: absolute; bottom: 0; left: 0;"> | |||
| <view style="display: flex; background-color: #CCCCCC;"> | |||
| <view style="width: 266rpx; height: 72rpx; border: 1rpx solid #00BBFF; color: #00BBFF; line-height: 72rpx;text-align: center;margin: 20rpx 60rpx;" @click="showp=false">取消</view> | |||
| <view style="width: 266rpx; height: 72rpx; border: 1rpx solid #00BBFF; background-color: #00BBFF; color: #FFFFFF; line-height: 72rpx;text-align: center;margin: 20rpx 60rpx; margin-left: auto;" @click="">保存海报</view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| import uQRCode from '@/common/uqrcode.js' | |||
| import WxBCard from '@/components/run-component/wx-b-card.vue' | |||
| export default{ | |||
| components: { | |||
| WxBCard | |||
| }, | |||
| data(){ | |||
| return{ | |||
| shareShow:false, | |||
| fromPage:null, | |||
| dataInfo:{}, | |||
| showp: false, | |||
| userInfo: {}, | |||
| id:'', | |||
| erop: false, | |||
| src: '', // require('@/static/img/course-img.png'), | |||
| baomingStyle: { | |||
| fontSize: "30rpx", | |||
| fontWeight: "700", | |||
| height: "100rpx" | |||
| } | |||
| } | |||
| }, | |||
| onLoad(e) { | |||
| if(e.fromPage) this.fromPage = e.fromPage; | |||
| this.id = e.id; | |||
| this.getactivityFindById(e.id); | |||
| }, | |||
| onReady() { | |||
| this.$com.displayNav() | |||
| }, | |||
| methods:{ | |||
| getmyInfo(){ | |||
| this.$api('myInfo') | |||
| .then(res=>{ | |||
| if(res.code == 200){ | |||
| this.role = res.result.role; | |||
| this.userInfo = res.result; | |||
| this.$store.commit('set_userInfo',res.result) | |||
| this.qrFun('https://xinxiong.java996.icu/pages/my/login-kehu?vid=' + this.userInfo.id + "&did=" + this.id) | |||
| }else{ | |||
| this.userInfo = null | |||
| } | |||
| }) | |||
| }, | |||
| getCreteClick(){ | |||
| let that = this; | |||
| this.$api('creteClick',{title: this.dataInfo.title,newId:this.dataInfo.id}) | |||
| .then(res=>{ | |||
| if(res.code == 200){ | |||
| that.erop = true; | |||
| }else{ | |||
| this.$Toast(res.message) | |||
| //跳转到实名认证页面进行实名认证 | |||
| setTimeout(()=>{ //设置延迟执行 | |||
| uni.navigateTo({ | |||
| url:'/pages/my/list-renzhen' | |||
| }) | |||
| },2000); | |||
| } | |||
| }) | |||
| }, | |||
| qrFun(text) { | |||
| this.qrShow = true | |||
| uQRCode.make({ | |||
| canvasId: 'qrcode', | |||
| componentInstance: this, | |||
| text: text, | |||
| size: 65, | |||
| margin: 0, | |||
| backgroundColor: '#FFFFFF', | |||
| foregroundColor: '#000000', | |||
| fileType: 'png', | |||
| errorCorrectLevel: uQRCode.errorCorrectLevel.H, | |||
| success: res => { | |||
| console.log("ercode", text) | |||
| } | |||
| }) | |||
| }, | |||
| apply(){ | |||
| if(!this.$store.state.userToken){ | |||
| this.$Toast('请先登录!') | |||
| setTimeout(()=>{ | |||
| uni.navigateTo({ | |||
| url:'/pages/my/login-kehu' | |||
| }) | |||
| },1000) | |||
| return | |||
| } | |||
| this.share(1) | |||
| uni.navigateTo({ | |||
| url:`/pages/home/buy-course?id=${this.id}` | |||
| }) | |||
| }, | |||
| wechatMoments() { | |||
| this.$api('creteFenxian',{url: location.href.split('#')[0]}) | |||
| .then(res=>{ | |||
| if (res.code == 200) { | |||
| this.$jweixin.config({ | |||
| debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 | |||
| appId: 'wxdabccf5a0110cfab', // 必填,公众号的唯一标识 | |||
| timestamp: res.result.timestamp, // 必填,生成签名的时间戳 | |||
| nonceStr: res.result.noncestr, // 必填,生成签名的随机串 | |||
| signature: res.result.sgture, // 必填,签名 | |||
| jsApiList: ['updateAppMessageShareData','updateTimelineShareData','onMenuShareTimeline','onMenuShareAppMessage','chooseWXPay'] | |||
| }); | |||
| this.$jweixin.ready(ress=> { | |||
| this.$jweixin.updateTimelineShareData({ | |||
| title: this.dataInfo.title, | |||
| link: `https://xinxiong.java996.icu/pages/home/course-detial?id=${this.id}`, // 分享链接,该链接域名或路径必须与当前页面对应的公众号 JS 安全域名一致 | |||
| }) | |||
| }); | |||
| } | |||
| }) | |||
| }, | |||
| share(type){//1为支付 | |||
| if(!type){ | |||
| this.shareShow = true; | |||
| } | |||
| this.$api('creteFenxian',{url: location.href.split('#')[0]}) | |||
| .then(res=>{ | |||
| if (res.code == 200) { | |||
| this.$jweixin.config({ | |||
| debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 | |||
| appId: 'wxdabccf5a0110cfab', // 必填,公众号的唯一标识 | |||
| timestamp: res.result.timestamp, // 必填,生成签名的时间戳 | |||
| nonceStr: res.result.noncestr, // 必填,生成签名的随机串 | |||
| signature: res.result.sgture, // 必填,签名 | |||
| jsApiList: ['updateAppMessageShareData','updateTimelineShareData','onMenuShareTimeline','onMenuShareAppMessage','chooseWXPay'] | |||
| }); | |||
| this.$jweixin.ready(ress=> { | |||
| this.$jweixin.onMenuShareTimeline({ | |||
| title: this.dataInfo.title, | |||
| desc: this.dataInfo.title, // 分享描述 | |||
| link: `http://liyuyu.xzaiyp.top/pages/home/course-detial?id=${this.id}`, // 分享链接,该链接域名或路径必须与当前页面对应的公众号 JS 安全域名一致 | |||
| success: function () { | |||
| // 用户点击了分享后执行的回调函数 | |||
| } | |||
| }) | |||
| this.$jweixin.onMenuShareAppMessage({ | |||
| title: this.dataInfo.title, | |||
| desc: this.dataInfo.title, // 分享描述 | |||
| link: `http://liyuyu.xzaiyp.top/pages/home/course-detial?id=${this.id}`, // 分享链接,该链接域名或路径必须与当前页面对应的公众号 JS 安全域名一致 | |||
| success: function () { | |||
| // 用户点击了分享后执行的回调函数 | |||
| } | |||
| }) | |||
| }) | |||
| this.$jweixin.error(err=>{ | |||
| // uni.showModal({ | |||
| // content:'err:' + JSON.stringify(err) | |||
| // }) | |||
| // config信息验证失败会执行 error 函数,如签名过期导致验证失败,具体错误信息可以打开 config 的debug模式查看,也可以在返回的 res 参数中查看,对于 SPA 可以在这里更新签名。 | |||
| }); | |||
| // uni.navigateTo({ | |||
| // url:`/pages/home/buy-course?id=${this.id}` | |||
| // }) | |||
| } | |||
| }) | |||
| }, | |||
| getactivityFindById(id){ | |||
| uni.showLoading() | |||
| this.$api('activityFindById',{id}) | |||
| .then(res=>{ | |||
| uni.hideLoading() | |||
| if(res.code == 200){ | |||
| this.dataInfo = res.result; | |||
| } | |||
| }) | |||
| }, | |||
| poster (){ | |||
| this.showp = true; | |||
| this.getmyInfo() | |||
| } | |||
| } | |||
| } | |||
| </script> | |||
| <style lang="scss" scoped> | |||
| .hide-context { | |||
| margin: 20rpx 0; | |||
| padding: 30rpx 30rpx; | |||
| outline: 0px; | |||
| width: 100%; | |||
| max-width: 100%; | |||
| box-sizing: border-box; | |||
| overflow-wrap: break-word; | |||
| display: inline-block; | |||
| vertical-align: top; | |||
| background-image: linear-gradient(#dceefc 0%, #fefeff 100%); | |||
| height: auto; | |||
| overflow: hidden; | |||
| border: 0px none; | |||
| color: #B0B0B0; | |||
| text-align: center; | |||
| font-size: 26rpx; | |||
| } | |||
| .active-card { | |||
| background: #ffffff; | |||
| padding: 20rpx 29rpx 13rpx; | |||
| border-bottom: 20rpx solid #F5F5F5; | |||
| .active-title { | |||
| font-size: 36rpx; | |||
| color: #000; | |||
| font-weight: 700; | |||
| margin-top: 20rpx; | |||
| line-height: 40rpx; | |||
| } | |||
| .active-time { | |||
| color: #707070; | |||
| font-size: 30rpx; | |||
| margin: 30rpx 0; | |||
| } | |||
| .active-add { | |||
| color: #707070; | |||
| font-size: 30rpx; | |||
| } | |||
| .menu-price { | |||
| font-weight: 700; | |||
| font-size: 40rpx; | |||
| color: #D33D3E; | |||
| .unit { | |||
| font-size: 40rpx; | |||
| } | |||
| .tips { | |||
| font-size: 30rpx; | |||
| } | |||
| } | |||
| .copy { | |||
| padding-left: 20rpx; | |||
| font-size: 26rpx; | |||
| color: #1b2bbc; | |||
| cursor: pointer; | |||
| } | |||
| .active-menu { | |||
| margin-top: 31rpx; | |||
| .menu-btn { | |||
| width: 213rpx; | |||
| height: 79rpx; | |||
| display: flex; | |||
| align-items: center; | |||
| justify-content: center; | |||
| background-color: #ED1450; | |||
| color: #FFFFFF; | |||
| font-size: 26rpx; | |||
| border-radius: 40rpx; | |||
| } | |||
| } | |||
| } | |||
| .contnet { | |||
| padding: 20rpx 20rpx 150rpx 20rpx ; | |||
| font-weight: 500; | |||
| font-size: 40rpx; | |||
| } | |||
| .btn-box { | |||
| position: fixed; | |||
| bottom: 0; | |||
| left: 0; | |||
| right: 0; | |||
| } | |||
| .share-box { | |||
| width: 100%; | |||
| height: 100vh; | |||
| position: fixed; | |||
| top: 0; | |||
| left: 0; | |||
| background-color: rgba(0,0,0,.8); | |||
| .jiantou { | |||
| position: absolute; | |||
| top: 140rpx; | |||
| right: 40rpx; | |||
| image { | |||
| width: 138rpx; | |||
| height: 138rpx; | |||
| } | |||
| } | |||
| .title { | |||
| position: absolute; | |||
| top: 50%; | |||
| left: 50%; | |||
| transform: translate(-50%,-50%); | |||
| image { | |||
| width: 526rpx; | |||
| height: 212rpx; | |||
| } | |||
| } | |||
| } | |||
| </style> | |||
| @ -0,0 +1,214 @@ | |||
| <template> | |||
| <view class="home-pages"> | |||
| <u-swiper | |||
| :list="swpList" | |||
| keyName="image" | |||
| indicator | |||
| height="220" | |||
| indicatorActiveColor="#FFFFFF" | |||
| indicatorMode="dot" | |||
| circular | |||
| @click="swpClick" | |||
| ></u-swiper> | |||
| <view class="home-content"> | |||
| <u-tabs | |||
| :list="tabList" | |||
| lineWidth="70" | |||
| lineHeight="3" | |||
| lineColor= "#00CCCC" | |||
| :activeStyle="{ | |||
| color: '#000000', | |||
| fontWeight: 'bold', | |||
| transform: 'scale(1.35)' | |||
| }" | |||
| :inactiveStyle="{ | |||
| color: '#000000', | |||
| transform: 'scale(1)' | |||
| }" | |||
| itemStyle="padding-left: 15px; padding-right: 15px; height: 34px;" | |||
| @click="tabClick" | |||
| > | |||
| </u-tabs> | |||
| <scroll-view scroll-y="true" class="scroll-y" | |||
| <template> | |||
| <active-card v-for="(item,i) in studyList" :item="item" :key="i" :i="i" @seeDetail="seeDetail"></active-card> | |||
| </template> | |||
| </scroll-view> | |||
| </view> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| import activeCard from '@/components/active-card/index.vue' | |||
| import newCard from '@/components/new-card/index.vue' | |||
| export default{ | |||
| components:{ | |||
| activeCard, | |||
| newCard | |||
| }, | |||
| data(){ | |||
| return{ | |||
| params:{ | |||
| pageNo:1, | |||
| labelClass:'1616491855729131521', | |||
| pageSize:10, | |||
| total: null, | |||
| isLock: true | |||
| }, | |||
| current:0, | |||
| studyList:[], | |||
| swpList: [], | |||
| tabList: [] | |||
| } | |||
| }, | |||
| onLoad() { | |||
| this.studyList = []; | |||
| this.params.pageNo = 1; | |||
| this.params.total = null; | |||
| this.params.isLock = true; | |||
| this.getstudy(); | |||
| // this.getknowledge(); | |||
| this.getbannerList() | |||
| this.getJobAddressList(); | |||
| }, | |||
| // 隐藏微信h5的标题栏 | |||
| onReady() { | |||
| this.$com.displayNav() | |||
| }, | |||
| onPullDownRefresh() { | |||
| this.studyList = []; | |||
| this.params.pageNo = 1; | |||
| this.params.total = null; | |||
| this.params.isLock = true; | |||
| this.getstudy() | |||
| }, | |||
| onReachBottom() { | |||
| if(this.params.isLock){ | |||
| this.params.isLock = false; | |||
| if(this.params.total !== null && this.params.pageNo * this.params.pageSize >= this.params.total){ | |||
| this.$Toast('没有更多数据了哦!'); | |||
| setTimeout(()=>{ | |||
| this.params.isLock = true; | |||
| },3000) | |||
| return | |||
| } | |||
| this.params.pageNo+=1; | |||
| //this.$Toast('数据加载成功!'); | |||
| this.getstudy(); | |||
| } | |||
| }, | |||
| methods:{ | |||
| lower(){ | |||
| }, | |||
| getbannerList(){ | |||
| this.$api('bannerList') | |||
| .then(res=>{ | |||
| if(res.code == 200){ | |||
| this.swpList = res.result | |||
| } | |||
| }) | |||
| }, | |||
| //得到兼职地区分类 | |||
| getJobAddressList(){ | |||
| this.$api('IndexJobAddress').then(res=>{ | |||
| if(res.code == 200){ | |||
| this.tabList = res.result; | |||
| } | |||
| }) | |||
| }, | |||
| getstudy(){//学习列表 | |||
| if(this.pageNo>1){ | |||
| uni.showLoading({}) | |||
| } | |||
| this.$api('JobList',this.params) | |||
| .then(res=>{ | |||
| if(res.code == 200){ | |||
| if(this.params.total== null) { | |||
| this.params.total = res.result.total | |||
| } | |||
| if(this.params.pageNo>1){ | |||
| uni.hideLoading(); | |||
| } | |||
| this.studyList = this.studyList.concat(res.result.records); | |||
| this.params.isLock = true; | |||
| }else { | |||
| if(this.params.pageNo>1){ | |||
| uni.hideLoading(); | |||
| } | |||
| this.params.isLock = true; | |||
| } | |||
| }) | |||
| }, | |||
| swpClick(){ | |||
| }, | |||
| tabClick(e){ | |||
| this.params.labelClass = e.id; | |||
| this.params.pageNo =1; | |||
| console.log(this.params.labelClass) | |||
| this.studyList = []; | |||
| this.getstudy(); | |||
| }, | |||
| seeDetail(item){//查看详情 | |||
| this.$api('myInfo') | |||
| .then(res=>{ | |||
| if(res.code == 200){ | |||
| this.role = res.result.role; | |||
| this.userInfo = res.result; | |||
| this.$store.commit('set_userInfo',res.result) | |||
| uni.navigateTo({ | |||
| url:`/pages/home/course-detial?id=${item.id}` | |||
| }) | |||
| }else{ | |||
| this.$Toast('请先登录!') | |||
| setTimeout(()=>{ | |||
| uni.navigateTo({ | |||
| url:'/pages/my/login-kehu' | |||
| }) | |||
| },1000) | |||
| return | |||
| this.userInfo = null | |||
| } | |||
| }) | |||
| }, | |||
| newDetail(item){//知识查看详情 | |||
| uni.navigateTo({ | |||
| url:`/pages/home/new-detail?id=${item.id}` | |||
| }) | |||
| } | |||
| } | |||
| } | |||
| </script> | |||
| <style lang="scss" scoped> | |||
| .home-pages { | |||
| padding: 28rpx 29rpx 0; | |||
| background-color: #F7F7F7; | |||
| .swiper{ | |||
| position: relative; | |||
| height: calc(100% -7vh); | |||
| width: 100%; | |||
| height: 1800px; | |||
| } | |||
| .scroll-Y { | |||
| height: calc(300vh - 660rpx); | |||
| padding-top: 20rpx; | |||
| } | |||
| .home-content { | |||
| .active-card{ | |||
| margin-top: 20rpx;; | |||
| border-radius: 0; | |||
| border: none; | |||
| border-style: none; | |||
| box-shadow: none; | |||
| } | |||
| } | |||
| } | |||
| </style> | |||
| @ -0,0 +1,53 @@ | |||
| <template> | |||
| <view class="new-detail"> | |||
| <view class="title">{{informData.title}}</view> | |||
| <view class="time">{{informData.createTime}}</view> | |||
| <u-parse :content="informData.context"></u-parse> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| export default{ | |||
| data(){ | |||
| return{ | |||
| informData: {} | |||
| } | |||
| }, | |||
| // 隐藏微信h5的标题栏 | |||
| onReady() { | |||
| this.$com.displayNav() | |||
| }, | |||
| onLoad(e) { | |||
| this.getinformFindById(e.id) | |||
| }, | |||
| methods:{ | |||
| getinformFindById(id){ | |||
| uni.showLoading() | |||
| this.$api('informFindById',{id}) | |||
| .then(res=>{ | |||
| uni.hideLoading() | |||
| if(res.code == 200){ | |||
| this.informData = res.result; | |||
| } | |||
| }) | |||
| } | |||
| } | |||
| } | |||
| </script> | |||
| <style lang="scss" scoped> | |||
| .new-detail { | |||
| padding: 38rpx 40rpx 50rpx; | |||
| .title { | |||
| font-size: 34rpx; | |||
| color: #000000; | |||
| font-weight: 700; | |||
| } | |||
| .time { | |||
| font-size: 22rpx; | |||
| color: #C8C8C8; | |||
| margin: 40rpx 0; | |||
| } | |||
| } | |||
| </style> | |||
| @ -0,0 +1,28 @@ | |||
| <template> | |||
| <view class="pay-success"> | |||
| <image src="../../static/img/pay-success.png" mode=""></image> | |||
| <view class="mt-2 mb-2">支付成功!</view> | |||
| <view>请到 我的-我的报名 中查看详情</view> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| </script> | |||
| <style lang="scss" scoped> | |||
| .pay-success { | |||
| width: 100%; | |||
| font-size: 34rpx; | |||
| color: #20D76D; | |||
| display: flex; | |||
| flex-direction: column; | |||
| align-items: center; | |||
| padding-top: 262rpx; | |||
| image { | |||
| width: 128rpx; | |||
| height: 128rpx; | |||
| } | |||
| } | |||
| </style> | |||
| @ -0,0 +1,282 @@ | |||
| <template> | |||
| <view class="buy-course"> | |||
| <view class="course-box "> | |||
| <view class="course-box-item flex"> | |||
| <u--image :showLoading="true" :src="dataInfo.photo" width="281rpx" height="178rpx"></u--image> | |||
| <view class="box-right"> | |||
| <view class="active-title">{{dataInfo.title}}</view> | |||
| <view class="active-time"> | |||
| <!-- <u-icon size="40" name="https://cdn.uviewui.com/uview/example/button.png"></u-icon> --> | |||
| <text>{{dataInfo.activityTime}}</text> | |||
| </view> | |||
| <view class="active-add"> | |||
| <text>{{dataInfo.place}}</text> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| <view class="from-box"> | |||
| <view class="from-title">填写报名人信息</view> | |||
| <u--form | |||
| labelPosition="left" | |||
| :model="userInfo" | |||
| ref="form1" | |||
| labelWidth="80" | |||
| :labelStyle="formLabelStyle" | |||
| > | |||
| <u-form-item | |||
| label="姓名:" | |||
| borderBottom | |||
| ref="item1" | |||
| > | |||
| <u--input | |||
| v-model="userInfo.name" | |||
| border="none" | |||
| placeholder="请输入姓名" | |||
| ></u--input> | |||
| </u-form-item> | |||
| <u-form-item | |||
| label="联系电话:" | |||
| borderBottom | |||
| ref="item1" | |||
| > | |||
| <u--input | |||
| v-model="userInfo.phone" | |||
| border="none" | |||
| placeholder="请输入手机号码" | |||
| type="number" | |||
| ></u--input> | |||
| </u-form-item> | |||
| <u-form-item | |||
| label="公司名称:" | |||
| borderBottom | |||
| ref="item1" | |||
| > | |||
| <u--input | |||
| v-model="userInfo.companyName" | |||
| border="none" | |||
| placeholder="请输入公司名称" | |||
| ></u--input> | |||
| </u-form-item> | |||
| <u-form-item | |||
| label="公司职务" | |||
| borderBottom | |||
| ref="item1" | |||
| > | |||
| <u--input | |||
| v-model="userInfo.companyPost" | |||
| border="none" | |||
| placeholder="请输入所在公司职务名称" | |||
| ></u--input> | |||
| </u-form-item> | |||
| </u--form> | |||
| </view> | |||
| <view class="pay-box"> | |||
| <view class="pay-price flex align-center justify-between"> | |||
| <view class="pay-price-tip">费用</view> | |||
| <view> | |||
| <text class="unit">¥</text> | |||
| <text>{{dataInfo.money}}</text> | |||
| </view> | |||
| </view> | |||
| <view class="pay-type flex flex-column align-center"> | |||
| <image src="../../static/img/pay-success.png" mode=""></image> | |||
| <view>支付成功</view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| export default{ | |||
| data(){ | |||
| return{ | |||
| chooseType: 0, | |||
| dataInfo: {}, | |||
| userInfo:{ | |||
| name:'', | |||
| companyName:'', | |||
| phone:'', | |||
| companyPost:'' | |||
| }, | |||
| formLabelStyle:{ | |||
| color: '#707070', | |||
| fontSize: '30rpx' | |||
| }, | |||
| baomingStyle: { | |||
| fontSize:"30rpx", | |||
| fontWeight:"700", | |||
| height: "100rpx" | |||
| }, | |||
| payList: [ | |||
| { | |||
| id:0, | |||
| src:require('@/static/img/wechat-icon.png') | |||
| }, | |||
| // { | |||
| // id:1, | |||
| // src:require('@/static/img/alipy-icon.png') | |||
| // } | |||
| ] | |||
| } | |||
| }, | |||
| onLoad(e) { | |||
| this.getactivityFindById('1584923974407417857') | |||
| }, | |||
| // 隐藏微信h5的标题栏 | |||
| onReady() { | |||
| this.$com.displayNav() | |||
| }, | |||
| methods:{ | |||
| choosePay(item){ | |||
| this.chooseType = item.id; | |||
| }, | |||
| // apply(){ | |||
| // uni.redirectTo({ | |||
| // url:'/pages/home/pay-success' | |||
| // }) | |||
| // }, | |||
| apply(){//添加报名信息 | |||
| let params = { | |||
| activityId:'1565169118319157250', | |||
| payType:this.chooseType, | |||
| ...this.userInfo, | |||
| } | |||
| this.$api('saveEnroll',params) | |||
| .then(res=>{ | |||
| if(res.code == 200){ | |||
| this.wxPay(res.result) | |||
| } | |||
| }) | |||
| }, | |||
| wxPay(id){ | |||
| this.$api('recharge',{id}) | |||
| .then(res=>{ | |||
| this.$jweixin.invoke( | |||
| "getBrandWCPayRequest", { | |||
| appId: res.result.appId, //公众号名称,由商户传入 | |||
| timeStamp: res.result.timeStamp, //时间戳,自1970年以来的秒数 | |||
| nonceStr: res.result.nonceStr, //随机串 | |||
| package: res.result.packageValue, //这个package是比较坑的他的格式必须是 prepay_id=wx22104854834640694c34f15a1066605800,是必须!!!!!!!!!!!!!! | |||
| signType: res.result.signType, //微信签名方式 | |||
| paySign: res.result.paySign,//微信签名 | |||
| }, | |||
| function(res) { | |||
| if (res.err_msg == "get_brand_wcpay_request:ok") { | |||
| uni.showToast({ | |||
| title: '支付成功', | |||
| icon: 'none', | |||
| duration: 1500 | |||
| }) | |||
| // 使用以上方式判断前端返回,微信团队郑重提示: | |||
| //res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。 | |||
| } | |||
| } | |||
| ); | |||
| }) | |||
| }, | |||
| getactivityFindById(id){ | |||
| uni.showLoading() | |||
| this.$api('activityFindById',{id}) | |||
| .then(res=>{ | |||
| uni.hideLoading() | |||
| if(res.code == 200){ | |||
| this.dataInfo = res.result; | |||
| } | |||
| }) | |||
| } | |||
| } | |||
| } | |||
| </script> | |||
| <style lang="scss" scoped> | |||
| .buy-course { | |||
| .course-box { | |||
| padding: 0 26rpx; | |||
| .course-box-item { | |||
| background: #ffffff; | |||
| border-radius: 12rpx; | |||
| box-shadow: 0px 3rpx 6rpx 0px rgba(0,0,0,0.16); | |||
| padding: 33rpx 13rpx; | |||
| .box-right { | |||
| margin-left: 16rpx; | |||
| .active-title { | |||
| font-size: 30rpx; | |||
| color: #000; | |||
| line-height: 40rpx; | |||
| overflow: hidden; | |||
| display: -webkit-box; | |||
| -webkit-box-orient: vertical; | |||
| -webkit-line-clamp: 2; | |||
| } | |||
| .active-time { | |||
| color: #707070; | |||
| font-size: 26rpx; | |||
| margin: 10rpx 0 14rpx 0; | |||
| } | |||
| .active-add { | |||
| color: #707070; | |||
| font-size: 26rpx; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| .from-box { | |||
| padding: 0 26rpx; | |||
| .from-title { | |||
| font-size: 30rpx; | |||
| color: #000; | |||
| margin-top: 35rpx; | |||
| margin-bottom: 15rpx; | |||
| } | |||
| } | |||
| .pay-box { | |||
| border-top: 20rpx solid #F5F5F5; | |||
| padding: 0 26rpx; | |||
| .pay-price { | |||
| color: #D33D3E; | |||
| font-size: 40rpx; | |||
| font-weight: 700; | |||
| padding: 47rpx 0 20rpx 0; | |||
| border-bottom: 1px solid #E6E6E6; | |||
| .pay-price-tip { | |||
| color: #000000; | |||
| font-size: 30rpx; | |||
| font-weight: 400; | |||
| } | |||
| .unit { | |||
| font-size: 30rpx; | |||
| font-weight: 400; | |||
| } | |||
| } | |||
| .pay-type { | |||
| color: #20D76D; | |||
| font-size: 30rpx; | |||
| padding-top: 40rpx; | |||
| image { | |||
| width: 165rpx; | |||
| height: 165rpx; | |||
| margin-bottom: 42rpx; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| </style> | |||
| @ -0,0 +1,125 @@ | |||
| <template> | |||
| <view> | |||
| <view class="active-card"> | |||
| <u--image :showLoading="true" :src="dataInfo.photo" width="100%" height="314rpx"></u--image> | |||
| <view class="active-title">{{dataInfo.title}}</view> | |||
| <view class="active-time"> | |||
| <!-- <u-icon size="40" name="https://cdn.uviewui.com/uview/example/button.png"></u-icon> --> | |||
| <text>{{dataInfo.activityTime}}</text> | |||
| </view> | |||
| <view class="active-add"> | |||
| <text>{{dataInfo.place}}</text> | |||
| </view> | |||
| <view class="active-menu"> | |||
| <view class="menu-price"> | |||
| <text class="unit">¥</text> | |||
| <text>{{dataInfo.money}}</text> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| <view class="contnet"> | |||
| <u-parse :content="dataInfo.details"></u-parse> | |||
| </view> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| export default{ | |||
| data(){ | |||
| return{ | |||
| fromPage:null, | |||
| dataInfo:{}, | |||
| id:'', | |||
| src: '', //require('@/static/img/course-img.png'), | |||
| baomingStyle: { | |||
| fontSize:"30rpx", | |||
| fontWeight:"700", | |||
| height: "100rpx" | |||
| } | |||
| } | |||
| }, | |||
| onLoad(e) { | |||
| this.getactivityFindById('1584923974407417857'); | |||
| }, | |||
| // 隐藏微信h5的标题栏 | |||
| onReady() { | |||
| this.$com.displayNav() | |||
| }, | |||
| methods:{ | |||
| getactivityFindById(id){ | |||
| uni.showLoading() | |||
| this.$api('activityFindById',{id}) | |||
| .then(res=>{ | |||
| uni.hideLoading() | |||
| if(res.code == 200){ | |||
| this.dataInfo = res.result; | |||
| } | |||
| }) | |||
| } | |||
| } | |||
| } | |||
| </script> | |||
| <style lang="scss" scoped> | |||
| .active-card { | |||
| background: #ffffff; | |||
| padding: 20rpx 29rpx 13rpx; | |||
| border-bottom: 20rpx solid #F5F5F5; | |||
| .active-title { | |||
| font-size: 30rpx; | |||
| color: #000; | |||
| font-weight: 700; | |||
| margin-top: 20rpx; | |||
| line-height: 40rpx; | |||
| } | |||
| .active-time { | |||
| color: #707070; | |||
| font-size: 26rpx; | |||
| margin: 20rpx 0; | |||
| } | |||
| .active-add { | |||
| color: #707070; | |||
| font-size: 26rpx; | |||
| } | |||
| .active-menu { | |||
| margin-top: 21rpx; | |||
| padding: 0 10rpx; | |||
| .menu-price { | |||
| font-weight: 700; | |||
| font-size: 40rpx; | |||
| color: #D33D3E; | |||
| .unit { | |||
| font-size: 30rpx; | |||
| } | |||
| } | |||
| .menu-btn { | |||
| width: 213rpx; | |||
| height: 79rpx; | |||
| display: flex; | |||
| align-items: center; | |||
| justify-content: center; | |||
| background-color: #ED1450; | |||
| color: #FFFFFF; | |||
| font-size: 26rpx; | |||
| border-radius: 40rpx; | |||
| } | |||
| } | |||
| } | |||
| .contnet { | |||
| padding: 20rpx 20rpx 100rpx; | |||
| } | |||
| .btn-box { | |||
| position: fixed; | |||
| bottom: 0; | |||
| left: 0; | |||
| right: 0; | |||
| } | |||
| </style> | |||
| @ -0,0 +1,152 @@ | |||
| <template> | |||
| <view> | |||
| <view style="margin-bottom: 50rpx;"> | |||
| <view class="user-from"> | |||
| <view class="user-from-line"> | |||
| <view class="line-lable">头像:</view> | |||
| <view class="line-value" @click="upImg"> | |||
| <image class="user-img" :src="userData.headImage" mode=""></image> | |||
| </view> | |||
| </view> | |||
| <view class="user-from-line"> | |||
| <view class="line-lable">名称:</view> | |||
| <view class="line-value"> | |||
| <u--input | |||
| placeholder="请输入名称" | |||
| v-model="userData.nickName" | |||
| border="none" | |||
| inputAlign="right" | |||
| ></u--input> | |||
| </view> | |||
| </view> | |||
| <view class="user-from-line"> | |||
| <view class="line-lable">手机号:</view> | |||
| <view class="line-value"> | |||
| <u--input | |||
| placeholder="请输入手机号" | |||
| v-model="userData.phone" | |||
| border="none" | |||
| inputAlign="right" | |||
| ></u--input> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| <view class="modify-but"> | |||
| <u-button :custom-style="modifyStyle" shape="circle" hover-class="none" @click="submit">保存</u-button> | |||
| <u-button :custom-style="modifyStyleQuxiao" shape="circle" hover-class="none" @click="outLogin">退出登陆</u-button> | |||
| </view> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| export default { | |||
| data() { | |||
| return { | |||
| value:'', | |||
| modifyStyle: { | |||
| width: '670rpx', | |||
| height: '85rpx', | |||
| background: '#00CCCC', | |||
| color: '#fff', | |||
| fontSize: '32rpx' | |||
| }, | |||
| modifyStyleQuxiao: { | |||
| width: '670rpx', | |||
| height: '85rpx', | |||
| background: '#f4f4f4', | |||
| color: '#333', | |||
| fontSize: '32rpx', | |||
| marginTop: '40rpx' | |||
| }, | |||
| userData:{} | |||
| } | |||
| }, | |||
| onLoad() { | |||
| }, | |||
| onShow() { | |||
| this.getMyInfo() | |||
| }, | |||
| // 隐藏微信h5的标题栏 | |||
| onReady() { | |||
| this.$com.displayNav() | |||
| }, | |||
| methods: { | |||
| upImg(){ | |||
| uni.chooseImage({ | |||
| count: 1, // 只选一张,目前 SDK 不支持一次发送多张图片 | |||
| success: (res) => { | |||
| uni.uploadFile({ | |||
| url: 'https://api.chemu90.com/xcx/oss/upload', //仅为示例,非真实的接口地址 | |||
| filePath: res.tempFilePaths[0], | |||
| name: 'file', | |||
| success: (uploadFileRes) => { | |||
| this.form.pic = JSON.parse(uploadFileRes.data).result | |||
| } | |||
| }); | |||
| } | |||
| }) | |||
| }, | |||
| getMyInfo(){ | |||
| this.$api('myInfo') | |||
| .then(res=>{ | |||
| if(res.code == 200){ | |||
| this.userData = res.result; | |||
| } | |||
| }) | |||
| }, | |||
| outLogin(){ | |||
| uni.clearStorageSync(); | |||
| this.$Toast('退出成功!') | |||
| setTimeout(()=>{ | |||
| uni.switchTab({ | |||
| url:'/pages/my/index' | |||
| }) | |||
| },500) | |||
| } | |||
| } | |||
| } | |||
| </script> | |||
| <style lang="scss" scoped> | |||
| .user-from { | |||
| padding: 0 24rpx; | |||
| .user-from-line { | |||
| display: flex; | |||
| align-items: center; | |||
| justify-content: space-between; | |||
| border-bottom: 1px solid #f4f4f4; | |||
| height: 100rpx; | |||
| .line-lable { | |||
| font-size: 30rpx; | |||
| } | |||
| .line-value { | |||
| .user-img { | |||
| width: 70rpx; | |||
| height: 70rpx; | |||
| } | |||
| .erweima { | |||
| width: 333rpx; | |||
| height: 333rpx; | |||
| } | |||
| } | |||
| } | |||
| .heightAuto { | |||
| height: auto; | |||
| border: none; | |||
| align-items: flex-start; | |||
| padding-top: 30rpx; | |||
| } | |||
| } | |||
| .modify-but { | |||
| } | |||
| </style> | |||
| @ -0,0 +1,235 @@ | |||
| <template> | |||
| <view class="my-pages"> | |||
| <view class="temps-box"> | |||
| <view class="head-mode" @click="toLogin"> | |||
| <u--image shape="circle" :src="userInfo?userInfo.headImage : morenSrc" width="149rpx" height="149rpx" ></u--image> | |||
| <view class="head-name">{{userInfo?userInfo.nickName : '未登录'}}</view> | |||
| <view> {{userInfo?'余额:'+userInfo.price : ''}}</view> | |||
| <view>{{userInfo?'积分:'+userInfo.integerPrice : ''}}</view> | |||
| </view> | |||
| <view class="btns"> | |||
| <view class="btns-context" v-for="(item,i) in cellList" :key="i" @click="toUrl(item.pages,item.name)"> | |||
| <image style="width: 60rpx;height: 60rpx; padding: 40rpx 40rpx;" :src="item.src" mode=""></image> | |||
| <view style="padding: 54rpx 0;">{{item.name}}</view> | |||
| <view style="margin-left: auto; padding: 55rpx 40rpx;"> | |||
| <view class="menu-after"></view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| <view class="kefu-box"> | |||
| <view class="kefu"> | |||
| <view class="image"> | |||
| <image class="image-img" src="../../static/kefu.png" @click="previewImg('../../static/kefu.png')" mode=""></image> | |||
| </view> | |||
| </view> | |||
| <view class="kefufont"> @湖南瀚海黎明信息科技有限公司提供技术支持 </view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| export default{ | |||
| data(){ | |||
| return{ | |||
| userInfo:null, | |||
| role:0,//2销售商 | |||
| morenSrc:require('@/static/img/logon-icon.png'), | |||
| cellList: [ | |||
| { | |||
| name:'邀请二维码', | |||
| src:require('@/static/img/info/code.png'), | |||
| role:'0', | |||
| pages:'/pages/my/my-xiansuo-new' | |||
| }, | |||
| { | |||
| name:'我的粉丝', | |||
| src:require('@/static/img/info/fans.png'), | |||
| role:'0', | |||
| pages:'/pages/my/list-fensi' | |||
| }, | |||
| { | |||
| name:'我要发布', | |||
| src:require('@/static/img/tabbar/fabu-xuan.png'), | |||
| role:'0', | |||
| pages:'/pages/my/my-fabujianzhi' | |||
| }, | |||
| { | |||
| name:'发布信息', | |||
| src:require('@/static/img/tabbar/fabu-xuan.png'), | |||
| role:'0', | |||
| pages:'/pages/my/my-fabujianzhi-list' | |||
| }, | |||
| ] | |||
| } | |||
| }, | |||
| onShow() { | |||
| this.getmyInfo() | |||
| }, | |||
| // 隐藏微信h5的标题栏 | |||
| onReady() { | |||
| this.$com.displayNav() | |||
| }, | |||
| methods:{ | |||
| previewImg(imageUrl){ | |||
| var images = []; | |||
| images.push(imageUrl); | |||
| console.log(images) // ["http://192.168.100.251:8970/6_1597822634094.png"] | |||
| uni.previewImage({ // 预览图片 图片路径必须是一个数组 => ["http://192.168.100.251:8970/6_1597822634094.png"] | |||
| current:0, | |||
| urls:images, | |||
| longPressActions: { //长按保存图片到相册 | |||
| itemList: ['保存图片'], | |||
| success: (data)=> { | |||
| console.log(data); | |||
| uni.saveImageToPhotosAlbum({ //保存图片到相册 | |||
| filePath: payUrl, | |||
| success: function () { | |||
| uni.showToast({icon:'success',title:'保存成功'}) | |||
| }, | |||
| fail: (err) => { | |||
| uni.showToast({icon:'none',title:'保存失败,请重新尝试'}) | |||
| } | |||
| }); | |||
| }, | |||
| fail: (err)=> { | |||
| console.log(err.errMsg); | |||
| } | |||
| } | |||
| }); | |||
| }, | |||
| getmyInfo(){ | |||
| this.$api('myInfo') | |||
| .then(res=>{ | |||
| if(res.code == 200){ | |||
| this.role = res.result.role; | |||
| this.userInfo = res.result; | |||
| this.$store.commit('set_userInfo',res.result) | |||
| }else{ | |||
| this.userInfo = null | |||
| } | |||
| }) | |||
| }, | |||
| toUrl(url,name){ | |||
| this.$api('myInfo') | |||
| .then(res=>{ | |||
| if(res.code == 200){ | |||
| this.role = res.result.role; | |||
| this.userInfo = res.result; | |||
| this.$store.commit('set_userInfo',res.result) | |||
| uni.navigateTo({ | |||
| url | |||
| }) | |||
| // if(name=='邀请二维码' || name=='我的粉丝' || name=='实名认证' || name=='我要发布'){ | |||
| // }else{ | |||
| // this.$Toast('未开放,敬请期待!') | |||
| // } | |||
| }else{ | |||
| this.$Toast('请先登录!') | |||
| setTimeout(()=>{ | |||
| uni.navigateTo({ | |||
| url:'/pages/my/login-kehu' | |||
| }) | |||
| },1000) | |||
| return | |||
| this.userInfo = null | |||
| } | |||
| }) | |||
| }, | |||
| toLogin(){ | |||
| if(!this.userInfo){ | |||
| uni.navigateTo({ | |||
| url:"/pages/my/login-kehu" | |||
| }) | |||
| }else{ | |||
| uni.navigateTo({ | |||
| url:'/pages/my/edit-user' | |||
| }) | |||
| } | |||
| } | |||
| } | |||
| } | |||
| </script> | |||
| <style lang="scss" scoped> | |||
| .my-pages { | |||
| background: url("@/static/2.png"); | |||
| background-size: 100% 100%; | |||
| width: 100vw; | |||
| height: calc(100vh - 80rpx); | |||
| } | |||
| .temps-box { | |||
| //background-color: #00CCCC; | |||
| height: 538rpx; | |||
| .head-mode { | |||
| display: flex; | |||
| justify-items: center; | |||
| height:168rpx; | |||
| padding: 50rpx 20rpx 20rpx 20rpx; | |||
| //background-color: #00CCCC; | |||
| .head-name { | |||
| padding: 38rpx; | |||
| font-size: 40rpx; | |||
| font-weight: 600; | |||
| font-family: SimSun; | |||
| } | |||
| } | |||
| .btns { | |||
| margin-top: 15rpx; | |||
| background-color: #FFFFFF; | |||
| .btns-context { | |||
| height: 120rpx; | |||
| display:flex; | |||
| border-bottom:1px solid #F7F7F7; | |||
| } | |||
| } | |||
| .kefu-box { | |||
| position: absolute; | |||
| bottom: 50rpx; | |||
| .kefu{ | |||
| width: 100vw; | |||
| display: flex; | |||
| text-align: center; | |||
| justify-items: center; | |||
| .image{ | |||
| display: flex; | |||
| margin: 0 auto; | |||
| text-align: center; | |||
| justify-items: center; | |||
| } | |||
| } | |||
| .kefufont{ | |||
| padding: 20rpx 0; | |||
| width: 100%; | |||
| position: absolute; | |||
| font-size: 20rpx; | |||
| text-align:center; | |||
| color: #5E5E5E; | |||
| } | |||
| .image-img { | |||
| width: 147rpx; | |||
| height: 147rpx; | |||
| } | |||
| } | |||
| .menu-after { | |||
| width: 15rpx; | |||
| height: 15rpx; | |||
| border-right: 3rpx solid #808080; | |||
| border-bottom: 3rpx solid #808080; | |||
| transform:rotate(-45deg); | |||
| } | |||
| } | |||
| </style> | |||
| @ -0,0 +1,213 @@ | |||
| <template> | |||
| <view> | |||
| <view class="home-pages"> | |||
| <view style="position: absolute;top: 0; left: 0; height: 188rpx; width: 100%; z-index: 100; background-color: #FFFFFF; box-shadow: 0px 15px 10px -15px #E8E8E8;"> | |||
| <view style="margin: 28rpx 24rpx; display: flex;"> | |||
| <image :showLoading="true" :src="userInfo?userInfo.headImage : ''" style="width: 148rpx;height: 148rpx;border-radius: 50%;"></image> | |||
| <view style="padding: 28rpx;"> | |||
| <view style="font-size: 32rpx;font-weight: 600">{{userInfo?userInfo.nickName : '点击登录'}}</view> | |||
| <view style="font-size: 30rpx;margin-top: 20rpx;">粉丝数量:{{params.total}}</view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| <view class="home-content"> | |||
| <user-card v-for="(item,i) in informationList" :key="i" :item="item"></user-card> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| import userCard from '@/components/user-card/index.vue' | |||
| export default{ | |||
| components:{ | |||
| userCard | |||
| }, | |||
| data(){ | |||
| return{ | |||
| userInfo:null, | |||
| current:1, | |||
| activiteList:[], | |||
| informationList:[], | |||
| params:{ | |||
| pageNo:1, | |||
| pageSize:10, | |||
| total: null, | |||
| isLock: true | |||
| }, | |||
| } | |||
| }, | |||
| onShow() { | |||
| this.getmyInfo() | |||
| }, | |||
| onLoad() { | |||
| this.getinformation() | |||
| // if(this.current == 0){ | |||
| // this.getActivity(); | |||
| // }else{ | |||
| // this.getinformation() | |||
| // } | |||
| }, | |||
| onPullDownRefresh() { | |||
| this.activiteList = []; | |||
| this.params.pageNo = 1; | |||
| this.params.total = null; | |||
| this.params.isLock = true; | |||
| this.getinformation() | |||
| }, | |||
| onReachBottom() { | |||
| if(this.params.isLock){ | |||
| this.params.isLock = false; | |||
| if(this.params.total !== null && this.params.pageNo * this.params.pageSize >= this.params.total){ | |||
| this.$Toast('没有更多数据!'); | |||
| setTimeout(()=>{ | |||
| this.params.isLock = true; | |||
| },3000) | |||
| return | |||
| } | |||
| this.params.pageNo+=1; | |||
| this.$Toast('数据加载成功!'); | |||
| this.getinformation() | |||
| } | |||
| }, | |||
| onPullDownRefresh() { | |||
| this.params.pageNo = 1; | |||
| this.getinformation() | |||
| // if(this.current == 0){ | |||
| // this.getActivity(); | |||
| // }else{ | |||
| // this.getinformation() | |||
| // } | |||
| }, | |||
| // 隐藏微信h5的标题栏 | |||
| onReady() { | |||
| this.$com.displayNav() | |||
| }, | |||
| methods:{ | |||
| getmyInfo(){ | |||
| this.$api('myInfo') | |||
| .then(res=>{ | |||
| if(res.code == 200){ | |||
| this.role = res.result.role; | |||
| this.userInfo = res.result; | |||
| this.$store.commit('set_userInfo',res.result) | |||
| }else{ | |||
| this.userInfo = null | |||
| } | |||
| }) | |||
| }, | |||
| // tabClick(e){ | |||
| // this.current = e.index; | |||
| // this.params.pageNo = 1; | |||
| // if(this.current == 0){ | |||
| // this.getActivity(2); | |||
| // }else{ | |||
| // this.getinformation(2) | |||
| // } | |||
| // }, | |||
| // getActivity(type){ | |||
| // uni.showLoading() | |||
| // this.$api('activity',this.params) | |||
| // .then(res=>{ | |||
| // uni.hideLoading() | |||
| // if(res.code == 200){ | |||
| // if(this.params.total== null) { | |||
| // this.params.total = res.result.total | |||
| // } | |||
| // if(this.params.pageNo>1){ | |||
| // uni.hideLoading(); | |||
| // } | |||
| // this.pages = this.pages.concat(res.result.pages); | |||
| // this.params.isLock = true; | |||
| // }else { | |||
| // if(this.params.pageNo>1){ | |||
| // uni.hideLoading(); | |||
| // } | |||
| // this.params.isLock = true; | |||
| // } | |||
| // }) | |||
| // }, | |||
| getinformation(type){ | |||
| if(this.pageNo>1){ | |||
| uni.showLoading({}) | |||
| } | |||
| this.$api('getFans',this.params) | |||
| .then(res=>{ | |||
| if(res.code == 200){ | |||
| if(this.params.total== null) { | |||
| this.params.total = res.result.total | |||
| } | |||
| if(this.params.pageNo>1){ | |||
| uni.hideLoading(); | |||
| } | |||
| this.informationList = this.informationList.concat(res.result.records); | |||
| this.params.isLock = true; | |||
| }else { | |||
| if(this.params.pageNo>1){ | |||
| uni.hideLoading(); | |||
| } | |||
| this.params.isLock = true; | |||
| } | |||
| }) | |||
| // uni.showLoading() | |||
| // this.$api('getFans',this.params) | |||
| // .then(res=>{ | |||
| // uni.hideLoading() | |||
| // if(res.code == 200){ | |||
| // this.pages = res.result.pages; | |||
| // if(type == 2){ | |||
| // this.informationList = [...this.informationList,...res.result.records]; | |||
| // }else{ | |||
| // this.informationList = res.result.records; | |||
| // uni.stopPullDownRefresh(); | |||
| // } | |||
| // } | |||
| // }) | |||
| }, | |||
| seeDetail(item){//查看详情 | |||
| uni.navigateTo({ | |||
| url:`/pages/home/course-detial?id=${item.id}` | |||
| }) | |||
| }, | |||
| newDetail(item){//知识查看详情 | |||
| uni.navigateTo({ | |||
| url:`/pages/home/new-detail?id=${item.id}` | |||
| }) | |||
| }, | |||
| lower(){ | |||
| if(this.params.pageNo >= this.pages) return; | |||
| this.params.pageNo ++; | |||
| if(this.current == 0){ | |||
| this.getActivity(2); | |||
| }else{ | |||
| this.getinformation(2) | |||
| } | |||
| }, | |||
| } | |||
| } | |||
| </script> | |||
| <style lang="scss" scoped> | |||
| .home-content { | |||
| margin-top: 20rpx; | |||
| } | |||
| .home-pages { | |||
| padding: 188rpx 29rpx 0; | |||
| background-color: #F7F7F7; | |||
| .scroll-Y { | |||
| height: calc(100vh - 200rpx); | |||
| padding-top: 20rpx; | |||
| } | |||
| } | |||
| </style> | |||
| @ -0,0 +1,168 @@ | |||
| <template> | |||
| <view> | |||
| <view v-if="userInfo.isPay === 0"> | |||
| <view class="from"> | |||
| <view class="call-title"> | |||
| 会员权益: | |||
| </view> | |||
| <view class="call-title"> | |||
| 1.每天不限制查看兼职联系方式次数。 | |||
| </view> | |||
| <view class="call-title"> | |||
| 2.一经开通永久有效. | |||
| </view> | |||
| </view> | |||
| <view v-if="userInfo.isPay === 0" class="pay-btn" @click="wxPay()"> | |||
| 支付6.66元开通永久会员 | |||
| </view> | |||
| <view v-if="userInfo.isPay === 1" class="pay-btn disabled"> | |||
| 您已成为会员 | |||
| </view> | |||
| </view> | |||
| <view v-if="userInfo.isPay === 1" class="scuescc"></view> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| import userCard from '@/components/user-card/index.vue' | |||
| export default{ | |||
| components:{ | |||
| userCard | |||
| }, | |||
| data(){ | |||
| return{ | |||
| userInfo:{ | |||
| name:"开通会员", | |||
| cardId:"成为VIP", | |||
| isPay: 0 | |||
| }, | |||
| current:1, | |||
| activiteList:[], | |||
| informationList:[], | |||
| params:{ | |||
| pageNo:1, | |||
| pageSize:10, | |||
| total: null, | |||
| isLock: true | |||
| }, | |||
| } | |||
| }, | |||
| onShow() { | |||
| this.getmyInfo() | |||
| }, | |||
| onLoad() { | |||
| }, | |||
| onReady() { | |||
| this.$com.displayNav() | |||
| }, | |||
| methods:{ | |||
| getmyInfo(){ | |||
| this.$api('myInfo') | |||
| .then(res=>{ | |||
| if(res.code == 200){ | |||
| this.role = res.result.role; | |||
| this.userInfo = res.result; | |||
| this.$store.commit('set_userInfo',res.result) | |||
| }else{ | |||
| this.userInfo = null | |||
| } | |||
| }) | |||
| }, | |||
| wxPay(){ | |||
| let that = this; | |||
| that.$api('create',{name:"成为会员",card:"开通会员"}) | |||
| .then(res=>{ | |||
| that.$jweixin.config({ | |||
| debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 | |||
| appId: 'wx6fb4a17b28186d58', // 必填,公众号的唯一标识 | |||
| timestamp: res.result.timestamp, // 必填,生成签名的时间戳 | |||
| nonceStr: res.result.noncestr, // 必填,生成签名的随机串 | |||
| signature: res.result.sgture, // 必填,签名 | |||
| jsApiList: ['updateAppMessageShareData','updateTimelineShareData','onMenuShareTimeline','onMenuShareAppMessage','chooseWXPay'] | |||
| }); | |||
| that.$jweixin.chooseWXPay({ | |||
| appId: 'wx6fb4a17b28186d58', | |||
| timestamp: res.result.timeStamp, // 支付签名时间戳,注意微信 jssdk 中的所有使用 timestamp 字段均为小写。但最新版的支付后台生成签名使用的 timeStamp 字段名需大写其中的 S 字符 | |||
| nonceStr: res.result.nonceStr, // 支付签名随机串,不长于 32 位 | |||
| package: res.result.packageValue, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=\*\*\*) | |||
| signType: res.result.signType, // 微信支付V3的传入 RSA ,微信支付V2的传入格式与V2统一下单的签名格式保持一致 | |||
| paySign: res.result.paySign, // 支付签名 | |||
| success: function (res) { | |||
| // 支付成功后的回调函数 | |||
| uni.switchTab({ | |||
| url:'/pages/my/index' | |||
| }) | |||
| } | |||
| }); | |||
| }) | |||
| }, | |||
| } | |||
| } | |||
| </script> | |||
| <style lang="scss" scoped> | |||
| .from { | |||
| margin-top: 120rpx; | |||
| margin-right: 20rpx; | |||
| margin-left: 100rpx; | |||
| } | |||
| .call-title { | |||
| font-size: 30rpx; | |||
| color: #000000; | |||
| position: relative; | |||
| line-height: 40rpx; | |||
| padding: 15rpx 0 32rpx; | |||
| &::after{ | |||
| content: ''; | |||
| position: absolute; | |||
| display: block; | |||
| width: 148rpx; | |||
| height: 15rpx; | |||
| border-radius: 8px; | |||
| top: 46rpx; | |||
| } | |||
| } | |||
| .from-line { | |||
| height: 128rpx; | |||
| display: flex; | |||
| .label-class{ | |||
| text-align: justify; | |||
| text-align-last: justify; | |||
| line-height: 128rpx; | |||
| width: 108rpx; | |||
| padding: 0 24rpx; | |||
| } | |||
| input{ | |||
| padding-left: 20rpx; | |||
| height: 128rpx; | |||
| line-height: 128rpx; | |||
| } | |||
| } | |||
| .pay-btn{ | |||
| margin:160rpx auto; | |||
| width: 487rpx; | |||
| border-radius: 8rpx; | |||
| text-align: center; | |||
| height: 88rpx; | |||
| line-height: 88rpx; | |||
| background-color: #00CCCC; | |||
| font-size: 36rpx; | |||
| color: #FFFFFF; | |||
| } | |||
| .disabled { | |||
| background-color: #999; | |||
| } | |||
| .scuescc { | |||
| background: url("@/static/3.png"); | |||
| background-size: 100% 100%; | |||
| width: 100vw; | |||
| height: calc(100vh - 88rpx); | |||
| } | |||
| </style> | |||
| @ -0,0 +1,195 @@ | |||
| <template> | |||
| <view> | |||
| <WxBLogin v-if="code === ''"/> | |||
| <view v-else class="login"> | |||
| <!-- <view class="login"> --> | |||
| <view class="login-img flex align-center justify-center"> | |||
| <image src="@/static/img/logon-icon.png" mode=""></image> | |||
| </view> | |||
| <view class="login-title">兼职尽在兼兼街</view> | |||
| <view class="btn-box"> | |||
| <u-button v-if="code !== ''" text="微信授权登录" :round="true" openType="getUserInfo" @click="logionClick" :customStyle="baomingStyle" :hairline="false" color="#00CCCC"></u-button> | |||
| <u-button v-else="code === ''" text="获取登录权限" :round="true" openType="getUserInfo" @click="logionClick" :customStyle="baomingStyle" :hairline="false" color="#00CCCC"></u-button> | |||
| </view> | |||
| <view class="tips flex align-center justify-between" @click="xieyiChoose = !xieyiChoose"> | |||
| <view> | |||
| 注册/登录即代表同意 | |||
| <text class="xieyi" @click.stop="seeXieyi">《用户协议与隐私政策》</text> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| import WxBLogin from '@/components/run-component/wx-b-login.vue' | |||
| export default{ | |||
| components: { | |||
| WxBLogin | |||
| }, | |||
| data(){ | |||
| return{ | |||
| xieyiChoose:true, | |||
| code: '', | |||
| did: '', | |||
| vid:'', | |||
| baomingStyle: { | |||
| fontSize:"30rpx", | |||
| fontWeight:"700", | |||
| height: "100rpx", | |||
| width: "480rpx" | |||
| }, | |||
| baomingStyleQuxiao:{ | |||
| fontSize:"30rpx", | |||
| fontWeight:"700", | |||
| height: "100rpx", | |||
| width: "480rpx", | |||
| marginTop : "40rpx" | |||
| } | |||
| } | |||
| }, | |||
| onLoad(err){ | |||
| if (err.vid) { | |||
| this.$store.commit('set_ivcode', err.vid); | |||
| } | |||
| if (err.did) { | |||
| uni.setStorageSync("did", err.did); | |||
| } | |||
| this.code = this.GetQueryString('code'); | |||
| if(!this.code){ | |||
| this.getwx_authorize(); | |||
| } | |||
| }, | |||
| // 隐藏微信h5的标题栏 | |||
| onReady() { | |||
| this.$com.displayNav(); | |||
| }, | |||
| methods:{ | |||
| seeXieyi(){ | |||
| uni.navigateTo({ | |||
| url:'/pages/my/xieyi' | |||
| }) | |||
| }, | |||
| logionClick(){ | |||
| let actoken ="eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2OTAxNzI3NjAsInVzZXJuYW1lIjoib2ROdHc2dEJVNmMxenlnU1lmb2d4ZWdTX2xxbyJ9.btUCZf5Jhx6XZIDLqI8TVTa00edZ989sxzNXe0V0eiw"; | |||
| this.$store.commit('set_userToken', actoken); | |||
| uni.switchTab({ | |||
| url:'/pages/my/index' | |||
| }) | |||
| let did = uni.getStorageSync("did"); | |||
| if (did) { | |||
| uni.navigateTo({ | |||
| url:'/pages/home/course-detial?id=' + did | |||
| }) | |||
| } else { | |||
| uni.switchTab({ | |||
| url:'/pages/my/index' | |||
| }) | |||
| } | |||
| // if(this.code){ | |||
| // //直接去登录发起请求 | |||
| // this.toWxLogin() | |||
| // } else { | |||
| // //获取code 静默授权 | |||
| // this.getwx_authorize(); | |||
| // } | |||
| }, | |||
| toWxLogin(code){ | |||
| this.vid= uni.getStorageSync("ivcode"); | |||
| this.$api('wxLogin',{code:this.code, vid: this.vid}) | |||
| .then(res=>{ | |||
| if(res.code == 200){ | |||
| this.$store.commit('set_userToken',res.result.token); | |||
| this.$store.commit('set_userInfo',res.result.userInfo); | |||
| let did = uni.getStorageSync("did"); | |||
| if (did) { | |||
| uni.setStorageSync("did", null); | |||
| uni.navigateTo({ | |||
| url:'/pages/home/course-detial?id=' + did | |||
| }) | |||
| } else { | |||
| uni.navigateTo({ | |||
| url:'/pages/my/my-xiansuo-now' | |||
| }) | |||
| } | |||
| }else{ | |||
| this.$Toast(res.message) | |||
| } | |||
| }).catch(error=>{ | |||
| uni.showModal({ | |||
| content:JSON.stringify(error) | |||
| }) | |||
| }) | |||
| }, | |||
| getwx_authorize(){ | |||
| console.log("进入了这") | |||
| this.logionClick() | |||
| // let vid = uni.getStorageSync("ivcode"); | |||
| // //授权的回调地址 | |||
| // let redirect_uri = encodeURIComponent('https://job.java996.icu/pages/my/login-kehu'); | |||
| // //这是我们公众号的appid | |||
| // let appid = 'wx6fb4a17b28186d58'; | |||
| // //修改授权参数 | |||
| // window.location.href="https://open.weixin.qq.com/connect/oauth2/authorize?appid="+appid+'&redirect_uri='+redirect_uri+'&response_type=code&scope=snsapi_userinfo&state='+vid+'&connect_redirect=1#wechat_redirect'; | |||
| }, | |||
| //获取url中参数的方法 | |||
| GetQueryString(name) { | |||
| var url = window.location.href; | |||
| try { | |||
| var cs = url.split('?')[1]; //获取?之后的参数字符串 | |||
| var cs_arr = cs.split('&'); //参数字符串分割为数组 | |||
| for (var i = 0; i < cs_arr.length; i++) { //遍历数组,拿到json对象 | |||
| if (cs_arr[i].split('=')[0] == name) { | |||
| return cs_arr[i].split('=')[1]; | |||
| } | |||
| } | |||
| return ""; | |||
| } catch { | |||
| return ""; | |||
| } | |||
| }, | |||
| } | |||
| } | |||
| </script> | |||
| <style lang="scss" scoped> | |||
| .login { | |||
| background-size: 100% 100%; | |||
| height: 70vh; | |||
| padding-top: 154rpx; | |||
| .login-title { | |||
| margin-top: 40rpx; | |||
| font-size: 34rpx; | |||
| font-weight: 700; | |||
| text-align: center; | |||
| padding-bottom: 30rpx; | |||
| } | |||
| .login-img { | |||
| image { | |||
| border-radius: 50%; | |||
| width:248rpx; | |||
| height: 248rpx; | |||
| } | |||
| } | |||
| .btn-box { | |||
| margin-top: 136rpx; | |||
| } | |||
| .tips { | |||
| width: 500rpx; | |||
| position: fixed; | |||
| bottom: 52rpx; | |||
| left: 51%; | |||
| transform: translate(-50%,0); | |||
| font-size: 24rpx; | |||
| color: #707070; | |||
| .xieyi { | |||
| color: #00CCFF; | |||
| } | |||
| } | |||
| } | |||
| </style> | |||
| @ -0,0 +1,115 @@ | |||
| <template> | |||
| <view class="my-baoming"> | |||
| <view class="search-box flex align-center justify-between"> | |||
| <u-search placeholder="输入活动主标题进行搜索" @search="searchClick" searchIconSize="16" :showAction="false" :searchIcon="searchIcon" v-model="params.search"></u-search> | |||
| </view> | |||
| <view class="content"> | |||
| <view class="course-box-item flex" @click="seeDetail(item)" v-for="(item,i) in 3" :key="i"> | |||
| <!-- <u--image :showLoading="true" src="@/static/img/my/dianhua-bg.png" width="281rpx" height="256rpx"></u--image> --> | |||
| <view class="box-right"> | |||
| <view class="active-title">2021 想象力大会 想象力智造 数字板块位移</view> | |||
| <view class="active-time"> | |||
| <text>2021/03/22 13:30</text> | |||
| </view> | |||
| <view class="active-add"> | |||
| <text>湖南省长沙市雨花区人民东路111号</text> | |||
| </view> | |||
| <view class="user-img flex justify-end"> | |||
| <view class="menu-btn" @click="seeDetail">报名详情</view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| export default{ | |||
| data(){ | |||
| return{ | |||
| searchIcon: require('@/static/img/search-icon.png'), | |||
| params:{ | |||
| pageNo:1, | |||
| pageSize:10, | |||
| search:'' | |||
| } | |||
| } | |||
| }, | |||
| // 隐藏微信h5的标题栏 | |||
| onReady() { | |||
| this.$com.displayNav() | |||
| }, | |||
| methods:{ | |||
| seeDetail(){ | |||
| uni.navigateTo({ | |||
| url:`/pages/my/baoming-detail` | |||
| }) | |||
| } | |||
| } | |||
| } | |||
| </script> | |||
| <style lang="scss"> | |||
| page { | |||
| background-color: #EEEEEE; | |||
| } | |||
| </style> | |||
| <style lang="scss" scoped> | |||
| .my-baoming { | |||
| .search-box { | |||
| margin-bottom: 22rpx; | |||
| background-color: #fff; | |||
| height: 128rpx; | |||
| padding: 0 56rpx; | |||
| } | |||
| .content { | |||
| padding: 0 12rpx; | |||
| .course-box-item { | |||
| background: #ffffff; | |||
| border-radius: 12rpx; | |||
| box-shadow: 0px 3rpx 6rpx 0px rgba(0,0,0,0.16); | |||
| padding: 33rpx 13rpx; | |||
| margin-bottom:17rpx; | |||
| .box-right { | |||
| margin-left: 16rpx; | |||
| .active-title { | |||
| font-size: 30rpx; | |||
| color: #000; | |||
| line-height: 40rpx; | |||
| overflow: hidden; | |||
| display: -webkit-box; | |||
| -webkit-box-orient: vertical; | |||
| -webkit-line-clamp: 2; | |||
| } | |||
| .active-time { | |||
| color: #707070; | |||
| font-size: 26rpx; | |||
| margin: 10rpx 0 14rpx 0; | |||
| } | |||
| .active-add { | |||
| color: #707070; | |||
| font-size: 26rpx; | |||
| } | |||
| .user-img { | |||
| .menu-btn { | |||
| width: 213rpx; | |||
| height: 79rpx; | |||
| display: flex; | |||
| align-items: center; | |||
| justify-content: center; | |||
| background-color: #ED1450; | |||
| color: #FFFFFF; | |||
| font-size: 26rpx; | |||
| border-radius: 40rpx; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| </style> | |||
| @ -0,0 +1,172 @@ | |||
| <template> | |||
| <view class="home-pages"> | |||
| <view style="color: #707070; | |||
| font-size: 28rpx;"> | |||
| </view> | |||
| <view class="home-content"> | |||
| <u-tabs | |||
| :list="tabList" | |||
| lineWidth="70" | |||
| lineHeight="3" | |||
| lineColor= "#00CCCC" | |||
| :activeStyle="{ | |||
| color: '#000000', | |||
| fontWeight: 'bold', | |||
| transform: 'scale(1.35)' | |||
| }" | |||
| :inactiveStyle="{ | |||
| color: '#000000', | |||
| transform: 'scale(1)' | |||
| }" | |||
| itemStyle="padding-left: 15px; padding-right: 15px; height: 34px;" | |||
| @click="tabClick" | |||
| > | |||
| </u-tabs> | |||
| <scroll-view scroll-y="true" class="scroll-y" | |||
| <card v-for="(item,i) in studyList" :item="item" :key="i" :i="i" @seeDetail="seeDetail"></card> | |||
| </scroll-view> | |||
| </view> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| import card from '@/components/active-card/index-list.vue' | |||
| export default{ | |||
| components:{ | |||
| card, | |||
| }, | |||
| data(){ | |||
| return{ | |||
| params:{ | |||
| pageNo:1, | |||
| labelClass:'0', | |||
| pageSize:10, | |||
| total: null, | |||
| isLock: true | |||
| }, | |||
| current:0, | |||
| studyList:[], | |||
| tabList: [ | |||
| { | |||
| id:'0', | |||
| name:'未审核' | |||
| }, | |||
| { | |||
| id:'1', | |||
| name:'已审核' | |||
| }, | |||
| { | |||
| id:'2', | |||
| name:'已发布' | |||
| }, | |||
| { | |||
| id:'3', | |||
| name:'已驳回' | |||
| } | |||
| ] | |||
| } | |||
| }, | |||
| onLoad() { | |||
| this.studyList = []; | |||
| this.params.labelClass = "0"; | |||
| this.params.pageNo = 1; | |||
| this.params.total = null; | |||
| this.params.isLock = true; | |||
| this.queryPageListJobRelease(); | |||
| }, | |||
| // 隐藏微信h5的标题栏 | |||
| onReady() { | |||
| this.$com.displayNav() | |||
| }, | |||
| onPullDownRefresh() { | |||
| this.studyList = []; | |||
| this.params.pageNo = 1; | |||
| this.params.total = null; | |||
| this.params.isLock = true; | |||
| this.queryPageListJobRelease() | |||
| }, | |||
| onReachBottom() { | |||
| if(this.params.isLock){ | |||
| this.params.isLock = false; | |||
| if(this.params.total !== null && this.params.pageNo * this.params.pageSize >= this.params.total){ | |||
| this.$Toast('没有更多数据了哦!'); | |||
| setTimeout(()=>{ | |||
| this.params.isLock = true; | |||
| },3000) | |||
| return | |||
| } | |||
| this.params.pageNo+=1; | |||
| this.$Toast('数据加载成功!'); | |||
| this.queryPageListJobRelease(); | |||
| } | |||
| }, | |||
| methods:{ | |||
| queryPageListJobRelease(){//学习列表 | |||
| if(this.pageNo>1){ | |||
| uni.showLoading({}) | |||
| } | |||
| this.$api('queryPageListJobRelease',this.params) | |||
| .then(res=>{ | |||
| if(res.code == 200){ | |||
| if(this.params.total== null) { | |||
| this.params.total = res.result.total | |||
| } | |||
| if(this.params.pageNo>1){ | |||
| uni.hideLoading(); | |||
| } | |||
| this.studyList = this.studyList.concat(res.result.records); | |||
| this.params.isLock = true; | |||
| }else { | |||
| if(this.params.pageNo>1){ | |||
| uni.hideLoading(); | |||
| } | |||
| this.params.isLock = true; | |||
| } | |||
| }) | |||
| }, | |||
| tabClick(e){ | |||
| this.params.labelClass = e.id; | |||
| this.params.pageNo =1; | |||
| this.studyList = []; | |||
| this.queryPageListJobRelease(); | |||
| }, | |||
| } | |||
| } | |||
| </script> | |||
| <style lang="scss" scoped> | |||
| .home-pages { | |||
| padding: 28rpx 29rpx 0; | |||
| background-color: #F7F7F7; | |||
| .swiper{ | |||
| position: relative; | |||
| height: calc(100% -7vh); | |||
| width: 100%; | |||
| height: 1800px; | |||
| } | |||
| .scroll-Y { | |||
| height: calc(300vh - 660rpx); | |||
| padding-top: 20rpx; | |||
| } | |||
| .home-content { | |||
| .active-card{ | |||
| margin-top: 20rpx;; | |||
| border-radius: 0; | |||
| border: none; | |||
| border-style: none; | |||
| box-shadow: none; | |||
| } | |||
| } | |||
| } | |||
| </style> | |||
| @ -0,0 +1,213 @@ | |||
| <template> | |||
| <view> | |||
| <view class="from"> | |||
| <view class="from-line"> | |||
| <span class="label-class">岗位名称:</span> | |||
| <view><input v-model="release.name" placeholder="请输入岗位名称"/></view> | |||
| </view> | |||
| <view class="from-line"> | |||
| <span class="label-class">地址信息:</span> | |||
| <view><input v-model="release.address" placeholder="请输入岗位地址"/></view> | |||
| </view> | |||
| <view class="from-line"> | |||
| <span class="label-class">招聘地区:</span> | |||
| <view><input v-model="release.vsClass" placeholder="请输入招聘地区:长沙街/江华街/深圳街/广州街等 目前开发区域可发布"/></view> | |||
| </view> | |||
| <view class="from-line"> | |||
| <span class="label-class">招聘工资:</span> | |||
| <view><input v-model="release.money" placeholder="请输入招聘工资"/></view> | |||
| </view> | |||
| <view class="from-line"> | |||
| <span class="label-class">工资单位:</span> | |||
| <view><input v-model="release.unit" placeholder="请输入工资单位:月/天/小时"/></view> | |||
| </view> | |||
| <view class="from-line"> | |||
| <span class="label-class">开始时间:</span> | |||
| <view><input v-model="release.startTime" placeholder="请输入开始时间 年/月/日"/></view> | |||
| </view> | |||
| <view class="from-line"> | |||
| <span class="label-class">结束时间:</span> | |||
| <view><input v-model="release.endTime" placeholder="请输入结束时间 年/月/日"/></view> | |||
| </view> | |||
| <view class="from-line"> | |||
| <span class="label-class">联系方式:</span> | |||
| <view><input v-model="release.phone" placeholder="请输入联系方式"/></view> | |||
| </view> | |||
| <view class="from-line"> | |||
| <span class="label-class">联系微信:</span> | |||
| <view><input v-model="release.wx" placeholder="请输入联系微信"/></view> | |||
| </view> | |||
| <view class="from-line-box"> | |||
| <span class="label-class">招聘内容:</span> | |||
| <u--textarea height="482rpx" v-model="release.myValue" placeholder="请输入兼职信息" count confirmType="done" ></u--textarea> | |||
| </view> | |||
| </view> | |||
| <view class="pay-btn" @click="fabujianzhi()"> | |||
| 确认提交审核 | |||
| </view> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| import userCard from '@/components/user-card/index.vue' | |||
| export default{ | |||
| components:{ | |||
| userCard | |||
| }, | |||
| data(){ | |||
| return{ | |||
| release:{ | |||
| name:"", | |||
| address:"", | |||
| vsClass:"", | |||
| money:"", | |||
| unit:"", | |||
| startTime:"", | |||
| endTime:"", | |||
| phone:"", | |||
| wx:"", | |||
| myValue:"" | |||
| } | |||
| } | |||
| }, | |||
| onShow() { | |||
| this.getmyInfo() | |||
| }, | |||
| onLoad() { | |||
| }, | |||
| onReady() { | |||
| this.$com.displayNav() | |||
| }, | |||
| methods:{ | |||
| getmyInfo(){ | |||
| this.$api('myInfo') | |||
| .then(res=>{ | |||
| if(res.code == 200){ | |||
| this.role = res.result.role; | |||
| this.userInfo = res.result; | |||
| this.$store.commit('set_userInfo',res.result) | |||
| }else{ | |||
| this.userInfo = null | |||
| } | |||
| }) | |||
| }, | |||
| fabujianzhi(){ | |||
| let that = this; | |||
| if(that.release.name == ''){ | |||
| this.$Toast("姓名不能为空"); | |||
| return | |||
| } | |||
| if(that.release.address == null){ | |||
| this.$Toast("招聘地址不能为空") | |||
| return | |||
| } | |||
| if(that.release.vsClass == ''){ | |||
| this.$Toast("招聘区域不能为空") | |||
| return | |||
| } | |||
| if(that.release.money == null){ | |||
| this.$Toast("招聘工资不能为空") | |||
| return | |||
| } | |||
| if(that.release.unit == null){ | |||
| this.$Toast("招聘单位不能为空") | |||
| return | |||
| } | |||
| if(that.release.startTime == null){ | |||
| this.$Toast("开始时间不能为空") | |||
| return | |||
| } | |||
| if(that.release.endTime == null){ | |||
| this.$Toast("结束时间不能为空") | |||
| return | |||
| } | |||
| if(that.release.phone == null){ | |||
| this.$Toast("联系方式不能为空") | |||
| return | |||
| } | |||
| if(that.release.myValue == null){ | |||
| this.$Toast("招聘内容不能为空") | |||
| return | |||
| } | |||
| let params = { | |||
| name:that.release.name, | |||
| address:that.release.address, | |||
| vsClass:that.release.vsClass, | |||
| money:that.release.money, | |||
| unit:that.release.unit, | |||
| startTime:that.release.startTime, | |||
| endTime:that.release.endTime, | |||
| phone:that.release.phone, | |||
| wx:that.release.wx, | |||
| myValue:that.release.myValue, | |||
| } | |||
| that.$api('saveJobRelease',params).then(res=>{ | |||
| this.$Toast(res.message); | |||
| setTimeout(()=>{ | |||
| uni.navigateTo({ | |||
| url:'/pages/my/my-fabujianzhi-list' | |||
| }) | |||
| },1500) | |||
| }); | |||
| }, | |||
| } | |||
| } | |||
| </script> | |||
| <style lang="scss" scoped> | |||
| .from { | |||
| margin-top: 20rpx; | |||
| } | |||
| .from-line { | |||
| height: 138rpx; | |||
| display: flex; | |||
| .label-class{ | |||
| text-align: justify; | |||
| text-align-last: justify; | |||
| line-height: 128rpx; | |||
| width: 128rpx; | |||
| padding: 0 24rpx; | |||
| } | |||
| input{ | |||
| padding-left: 10rpx; | |||
| height: 128rpx; | |||
| line-height: 128rpx; | |||
| } | |||
| } | |||
| .from-line-box { | |||
| height: 328rpx; | |||
| margin-right: 50rpx; | |||
| display: flex; | |||
| .label-class{ | |||
| text-align: justify; | |||
| text-align-last: justify; | |||
| line-height: 128rpx; | |||
| width: 128rpx; | |||
| padding: 0 24rpx; | |||
| } | |||
| input{ | |||
| padding-left: 20rpx; | |||
| height: 228rpx; | |||
| line-height: 128rpx; | |||
| } | |||
| } | |||
| .pay-btn{ | |||
| margin:190rpx auto; | |||
| width: 387rpx; | |||
| text-align: center; | |||
| border-radius: 12rpx; | |||
| height: 78rpx; | |||
| line-height: 78rpx; | |||
| background-color: #00CCCC; | |||
| color: #FFFFFF; | |||
| } | |||
| </style> | |||
| @ -0,0 +1,183 @@ | |||
| <template> | |||
| <view class="page-wapper"> | |||
| <view class="a-card"> | |||
| <view class="title"></view> | |||
| <view class="context"> | |||
| <view class="content-around"> | |||
| <view class="con-title">关注</view> | |||
| <view>关注可查看每日兼职更新,超多本地兼职正在筹备</view> | |||
| </view> | |||
| <view class="content-around"> | |||
| <view class="con-title">成为会员</view> | |||
| <view>成为会员即可查看海量兼职信息,超多在线兼职等你来挑战,更有超酷客服小姐姐等你来撩</view> | |||
| </view> | |||
| </view> | |||
| <view class="bottom-bgr"> | |||
| <view style="width: 100%; height: 100%; position: relative;"> | |||
| <view class="foot-font"> | |||
| <p>联系微信:jianjianjie_1688</p> | |||
| <p>合作联系:湖南瀚海黎明信息科技</p> | |||
| </view> | |||
| <canvas canvas-id="qrcode" class="qrcode"/> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| import html2canvas from 'html2canvas'; | |||
| import uQRCode from '@/common/uqrcode.js' | |||
| export default{ | |||
| data(){ | |||
| return{ | |||
| userInfo: {}, | |||
| role:0, | |||
| cellList: [], | |||
| base64: '' | |||
| } | |||
| }, | |||
| onShow() { | |||
| this.getmyInfo() | |||
| }, | |||
| onReady() { | |||
| this.$com.displayNav() | |||
| }, | |||
| methods:{ | |||
| getmyInfo(){ | |||
| this.$api('myInfo').then(res=>{ | |||
| if(res.code == 200){ | |||
| this.role = res.result.role; | |||
| this.userInfo = res.result; | |||
| this.$store.commit('set_userInfo',res.result) | |||
| this.qrFun('https://xinxiong.java996.icu/pages/my/login-kehu?vid=' + this.userInfo.id) | |||
| }else{ | |||
| this.userInfo = null | |||
| } | |||
| }) | |||
| }, | |||
| qrFun: function(text) { | |||
| this.qrShow = true | |||
| uQRCode.make({ | |||
| canvasId: 'qrcode', | |||
| componentInstance: this, | |||
| text: text, | |||
| size: 135, | |||
| margin: 0, | |||
| backgroundColor: '#FFFFFF', | |||
| foregroundColor: '#000000', | |||
| fileType: 'png', | |||
| errorCorrectLevel: uQRCode.errorCorrectLevel.H, | |||
| success: res => {} | |||
| }) | |||
| }, | |||
| } | |||
| } | |||
| </script> | |||
| <style lang="scss"> | |||
| .page-wapper { | |||
| width: 100vw; | |||
| height: 100vh; | |||
| background-color: #3da8ff; | |||
| background: url("@/static/6.png"); | |||
| background-size: 100% 100%; | |||
| .a-card { | |||
| width: 660rpx; | |||
| height: 980rpx; | |||
| background-color: #fff; | |||
| position: absolute; | |||
| top: calc(50vh - 560rpx); | |||
| left: calc(50vw - 330rpx); | |||
| border-radius: 20rpx; | |||
| box-shadow: 20rpx 10rpx 20rpx 10rpx #345dc7; | |||
| .title { | |||
| width: 60%; | |||
| height: 150rpx; | |||
| position: absolute; | |||
| left: 140rpx; | |||
| top: 60rpx; | |||
| background: url("@/static/5.jpg"); | |||
| background-size: 100% 100% ; | |||
| background-position: 40% 75%; | |||
| } | |||
| .context { | |||
| position: absolute; | |||
| left: 40rpx; | |||
| top: 248rpx; | |||
| width: 380rpx; | |||
| .content-around { | |||
| color: #999; | |||
| font-size: 24rpx; | |||
| line-height: 34rpx; | |||
| .con-title { | |||
| background-color: #3871ce; | |||
| color: #FFF; | |||
| width: 140rpx; | |||
| height: 45rpx; | |||
| line-height: 45rpx; | |||
| border-bottom-right-radius: 70rpx; | |||
| border-top-left-radius: 70rpx; | |||
| font-size: 32rpx; | |||
| font-weight: 500; | |||
| margin: 20rpx 0; | |||
| padding: 0 40rpx; | |||
| } | |||
| } | |||
| } | |||
| .bottom-bgr { | |||
| width: 100%; | |||
| height: 180rpx; | |||
| position: absolute; | |||
| left: 0; | |||
| bottom: 0; | |||
| background: url("@/static/4.png"); | |||
| background-size: 160% 100% ; | |||
| background-position: 40% 75%; | |||
| .foot-font { | |||
| position: absolute; | |||
| bottom: 20rpx; | |||
| left: 40rpx; | |||
| font-size: 20rpx; | |||
| line-height: 24rpx; | |||
| color: #222; | |||
| } | |||
| .qrcode { | |||
| position: absolute; | |||
| bottom: 15rpx; | |||
| right: 20rpx; | |||
| width: 280rpx !important; | |||
| height: 280rpx !important; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| //.page-wapper { | |||
| // background: linear-gradient(to bottom, #345dc7, #00FFFF, #3da8ff); | |||
| // background-size: 200% 200%; | |||
| // animation: gradient 20s ease infinite; | |||
| //} | |||
| // | |||
| //@keyframes gradient { | |||
| // 0% { background-position: 0% 0%; } /* 背景位置从左上角开始 */ | |||
| // 50% { background-position: 100% 100%; } /* 背景位置变化到右下角 */ | |||
| // 100% { background-position: 0% 0%; } /* 背景位置回到左上角 */ | |||
| //} | |||
| </style> | |||
| @ -0,0 +1,177 @@ | |||
| <template> | |||
| <view class="page-wapper"> | |||
| <view class="a-card"> | |||
| <view class="title"></view> | |||
| <view class="context"> | |||
| <view class="content-around"> | |||
| <view class="con-title">致用户书</view> | |||
| <p>欢迎登陆和使用 @兼兼街 本地化兼职信息服务平台,您可以在这里查看到每日最新的兼职信息更新,最新的哦 : ( </p> | |||
| <p>本台分设长沙街超多本地兼职正在筹备,值得一提的是西安街和广州街是新上花旦福利更多哦!</p> | |||
| <p>当然,如果您在找兼职的过程中存在什么疑惑,遇到了什么问题,请您第一时间联系我们的客服,都是可爱又温柔的小姐级哦!</p> | |||
| <p>最后一步,请您关注我们的公众号,或者微信搜索 兼兼街,看完点关注回家不迷路!更多精彩,我们来日方长</p> | |||
| </view> | |||
| </view> | |||
| <view class="bottom-bgr"> | |||
| <view style="width: 100%; height: 100%; position: relative;"> | |||
| <view class="foot-font"> | |||
| <p>联系微信:jianjianjie_1688</p> | |||
| <p>合作联系:湖南瀚海黎明信息科技</p> | |||
| </view> | |||
| <view class="qrcode"> | |||
| <view class="cool-button" @click="onclick()">👉去关注</view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| import html2canvas from 'html2canvas'; | |||
| import uQRCode from '@/common/uqrcode.js' | |||
| export default{ | |||
| data(){ | |||
| return{ | |||
| userInfo: {}, | |||
| role:0, | |||
| cellList: [], | |||
| base64: '' | |||
| } | |||
| }, | |||
| onShow() { | |||
| }, | |||
| onReady() { | |||
| this.$com.displayNav() | |||
| }, | |||
| methods:{ | |||
| onclick:() => { | |||
| window.location = "https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzkzMzI2NDc1Ng==#wechat_redirect" | |||
| } | |||
| } | |||
| } | |||
| </script> | |||
| <style lang="scss"> | |||
| .page-wapper { | |||
| width: 100vw; | |||
| height: 100vh; | |||
| background-color: #3da8ff; | |||
| .a-card { | |||
| width: 600rpx; | |||
| height: 880rpx; | |||
| background-color: #fff; | |||
| position: absolute; | |||
| top: calc(50vh - 484rpx); | |||
| left: calc(50vw - 300rpx); | |||
| border-radius: 20rpx; | |||
| box-shadow: 20rpx 10rpx 20rpx 10rpx #345dc7; | |||
| .title { | |||
| width: 36%; | |||
| height: 80rpx; | |||
| position: absolute; | |||
| left: 200rpx; | |||
| top: 60rpx; | |||
| // background: url("@/static/5.jpg"); | |||
| background-size: 100% 100% ; | |||
| background-position: 40% 75%; | |||
| } | |||
| .context { | |||
| position: absolute; | |||
| left: 40rpx; | |||
| top: 178rpx; | |||
| width: 480rpx; | |||
| p { | |||
| text-indent: 2em; | |||
| } | |||
| .content-around { | |||
| color: #999; | |||
| font-size: 24rpx; | |||
| line-height: 34rpx; | |||
| .con-title { | |||
| background-color: #3871ce; | |||
| color: #FFF; | |||
| width: 120rpx; | |||
| height: 45rpx; | |||
| line-height: 45rpx; | |||
| border-bottom-right-radius: 70rpx; | |||
| border-top-left-radius: 70rpx; | |||
| box-shadow: 10rpx 5rpx 20rpx 10rpx rgba(0, 0, 0, .1); | |||
| font-size: 30rpx; | |||
| font-weight: 500; | |||
| margin: 20rpx 0; | |||
| padding: 0 40rpx; | |||
| } | |||
| } | |||
| } | |||
| .bottom-bgr { | |||
| width: 100%; | |||
| height: 180rpx; | |||
| position: absolute; | |||
| left: 0; | |||
| bottom: 0; | |||
| background: url("@/static/4.png"); | |||
| background-size: 160% 100% ; | |||
| background-position: 40% 75%; | |||
| .foot-font { | |||
| position: absolute; | |||
| bottom: 20rpx; | |||
| left: 40rpx; | |||
| font-size: 20rpx; | |||
| line-height: 24rpx; | |||
| color: #222; | |||
| } | |||
| .qrcode { | |||
| position: absolute; | |||
| bottom: 20rpx; | |||
| right: -200rpx; | |||
| width: 400rpx !important; | |||
| } | |||
| } | |||
| .cool-button { | |||
| font-weight: 900; | |||
| font-size: 40rpx; | |||
| color: white; | |||
| background-color: rgba(1, 1, 1, .0); | |||
| border: none; | |||
| text-align: left; | |||
| text-decoration: none; | |||
| display: inline-block; | |||
| margin: 4px 2px; | |||
| cursor: pointer; | |||
| transition-duration: 0.4s; | |||
| } | |||
| .cool-button:active { | |||
| transform: translateX(30rpx); | |||
| } | |||
| } | |||
| } | |||
| .page-wapper { | |||
| background: linear-gradient(to bottom, #345dc7, #00FFFF, #3da8ff); | |||
| background-size: 200% 200%; | |||
| animation: gradient 20s ease infinite; | |||
| } | |||
| @keyframes gradient { | |||
| 0% { background-position: 0% 0%; } /* 背景位置从左上角开始 */ | |||
| 50% { background-position: 100% 100%; } /* 背景位置变化到右下角 */ | |||
| 100% { background-position: 0% 0%; } /* 背景位置回到左上角 */ | |||
| } | |||
| </style> | |||
| @ -0,0 +1,215 @@ | |||
| <template> | |||
| <view class="my-pages" @click="toImg" > | |||
| <view class="top-box"> | |||
| <view class="head"> | |||
| <u--image shape="circle" :src="userInfo?userInfo.headImage:''" width="169rpx" height="169rpx"></u--image> | |||
| <view style="padding: 56rpx; font-size: 45rpx; font-weight: bold;">{{userInfo?userInfo.nickName : '�����¼����'}}</view> | |||
| </view> | |||
| </view> | |||
| <view class="contnet-box" id="poster"> | |||
| <view class="cell-box" id="poster"> | |||
| <view class="cell-item flex justify-between align-center"> | |||
| <view class="flex align-center"> | |||
| <canvas canvas-id="qrcode" class="qrcode"/> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| import html2canvas from 'html2canvas'; | |||
| import uQRCode from '@/common/uqrcode.js' | |||
| export default{ | |||
| data(){ | |||
| return{ | |||
| userInfo:null, | |||
| role:0, | |||
| cellList: [], | |||
| base64: '' | |||
| } | |||
| }, | |||
| onShow() { | |||
| this.getmyInfo() | |||
| }, | |||
| onReady() { | |||
| this.$com.displayNav() | |||
| }, | |||
| methods:{ | |||
| getmyInfo(){ | |||
| this.$api('myInfo') | |||
| .then(res=>{ | |||
| if(res.code == 200){ | |||
| this.role = res.result.role; | |||
| this.userInfo = res.result; | |||
| this.$store.commit('set_userInfo',res.result) | |||
| this.qrFun('https://xinxiong.java996.icu/pages/my/login-kehu?vid=' + this.userInfo.id) | |||
| }else{ | |||
| this.userInfo = null | |||
| } | |||
| }) | |||
| }, | |||
| toUrl(url,name){ | |||
| if(name==''){ | |||
| uni.navigateTo({ | |||
| url | |||
| }) | |||
| }else{ | |||
| this.$Toast('') | |||
| } | |||
| }, | |||
| toLogin(){ | |||
| if(!this.userInfo){ | |||
| uni.navigateTo({ | |||
| url:"/pages/my/login-kehu" | |||
| }) | |||
| }else{ | |||
| uni.navigateTo({ | |||
| url:'/pages/my/edit-user' | |||
| }) | |||
| } | |||
| }, | |||
| qrFun: function(text) { | |||
| this.qrShow = true | |||
| uQRCode.make({ | |||
| canvasId: 'qrcode', | |||
| componentInstance: this, | |||
| text: text, | |||
| size: 300, | |||
| margin: 0, | |||
| backgroundColor: '#FFFFFF', | |||
| foregroundColor: '#000000', | |||
| fileType: 'png', | |||
| errorCorrectLevel: uQRCode.errorCorrectLevel.H, | |||
| success: res => {} | |||
| }) | |||
| }, | |||
| saveHeadImgFile(base64) { | |||
| const bitmap = new plus.nativeObj.Bitmap("test"); | |||
| bitmap.loadBase64Data(base64, function() { | |||
| const url = "_doc/" + new Date().getTime() + ".png"; // urlΪʱ���������ʽ | |||
| console.log('saveHeadImgFile', url) | |||
| bitmap.save(url, { | |||
| overwrite: true, // �Ƿ� | |||
| // quality: 'quality' // ͼƬ������ | |||
| }, (i) => { | |||
| uni.saveImageToPhotosAlbum({ | |||
| filePath: url, | |||
| success: function() { | |||
| uni.showToast({ | |||
| title: 'ͼƬ����ɹ�', | |||
| icon: 'none' | |||
| }) | |||
| bitmap.clear() | |||
| } | |||
| }); | |||
| }, (e) => { | |||
| uni.showToast({ | |||
| title: 'ͼƬ����ʧ��', | |||
| icon: 'none' | |||
| }) | |||
| bitmap.clear() | |||
| }); | |||
| }, (e) => { | |||
| uni.showToast({ | |||
| title: 'ͼƬ����ʧ��', | |||
| icon: 'none' | |||
| }) | |||
| bitmap.clear() | |||
| }); | |||
| }, | |||
| toImg() { | |||
| // ����ͼƬ�������⣬��̨����һ���ӿڣ���Ҫ������ͼƬ����ת��base64���Լ����ӿڣ����Ͳ�д�ˡ� | |||
| let dom = document.querySelector('#poster'); // ��ȡdomԪ�� | |||
| html2canvas(dom, { | |||
| width: dom.clientWidth, //dom ԭʼ��� | |||
| height: dom.clientHeight, | |||
| scrollY: 0,// html2canvasĬ�ϻ�����ͼ�ڵ�ҳ�棬��Ҫ��scrollY��scrollX����Ϊ0 | |||
| scrollX: 0, | |||
| useCORS: true,//֧�ֿ�������ûʲô�� | |||
| }).then((canvas) => { | |||
| this.base64 = canvas.toDataURL('image/png', 1); | |||
| console.log(this.base64) | |||
| this.saveHeadImgFile(this.base64); | |||
| uni.showToast({ | |||
| icon: 'success', | |||
| title: '�����', | |||
| }); | |||
| // this.$http.post("/api/upload/image_by_base64", { | |||
| // image: this.base64 | |||
| // }).then(res => { | |||
| // if (res.status == 200) { | |||
| // this.downImg = res.data.data; | |||
| // uni.showToast({ | |||
| // icon: 'success', | |||
| // mask: true, | |||
| // title: '�����', | |||
| // }); | |||
| // } | |||
| // }) | |||
| }); | |||
| }, | |||
| } | |||
| } | |||
| </script> | |||
| <style lang="scss" scoped> | |||
| .qrcode { | |||
| width: 600rpx; | |||
| height: 600rpx; | |||
| margin: 50rpx auto; | |||
| } | |||
| .head { | |||
| display: flex; | |||
| justify-items: center; | |||
| height: 168rpx; | |||
| padding: 60rpx 20rpx 20rpx 40rpx; | |||
| background-color: #00CCCC; | |||
| } | |||
| .my-pages { | |||
| .top-box { | |||
| height: 372rpx; | |||
| background-color: #00CCCC; | |||
| background-size: 100% 100%; | |||
| } | |||
| .contnet-box { | |||
| height: 907rpx; | |||
| background: #ffffff; | |||
| border-radius: 79rpx 79rpx 0px 0px; | |||
| box-shadow: 0px 3rpx 6rpx 0px rgba(0,0,0,0.16); | |||
| margin: -80rpx 26rpx 0; | |||
| position: relative; | |||
| .user-box { | |||
| font-size: 32rpx; | |||
| color: #000000; | |||
| font-weight: 700; | |||
| position: absolute; | |||
| left: 50%; | |||
| top: -100rpx; | |||
| transform: translate(-50% , 0); | |||
| .user-name { | |||
| text-align: center; | |||
| margin-top: 20rpx; | |||
| } | |||
| } | |||
| .cell-box { | |||
| padding: 20rpx 34rpx 34rpx; | |||
| } | |||
| } | |||
| } | |||
| </style> | |||
| @ -0,0 +1,171 @@ | |||
| <template> | |||
| <view class="my-xiansuo"> | |||
| <view class="course-box-item flex"> | |||
| <u--image :showLoading="true" :src="saleData.photo" width="281rpx" height="256rpx"></u--image> | |||
| <view class="box-right"> | |||
| <view class="active-title">{{saleData.title}}</view> | |||
| <view class="active-time"> | |||
| <text>{{saleData.activityTime}}</text> | |||
| </view> | |||
| <view class="active-add"> | |||
| <text>{{saleData.place}}</text> | |||
| </view> | |||
| <view class="user-img flex align-center"> | |||
| <u--image class="user-img-sing" v-for="(val,i) in saleData.members" :key="i" :showLoading="true" shape="circle" :src="val.headImage" width="51rpx" height="51rpx"></u--image> | |||
| <view class="duode flex align-center justify-center">···</view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| <view class="liulan"> | |||
| <view class="liulan-title flex align-center justify-between"> | |||
| <text>浏览总数</text> | |||
| <text class="num">{{saleData.members.length}}</text> | |||
| </view> | |||
| <view class="user-from"> | |||
| <view class="from-line flex align-center" v-for="(val,i) in saleData.members" :key="i"> | |||
| <view class="dot"></view> | |||
| <view class="line-r flex align-center"> | |||
| <u--image class="mr-2" :showLoading="true" shape="circle" :src="val.headImage" width="88rpx" height="88rpx"></u--image> | |||
| <view class="name-time"> | |||
| <view>{{val.nickName}}</view> | |||
| <view class="time">{{val.createTime}}</view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| export default{ | |||
| data(){ | |||
| return{ | |||
| activityId: '', | |||
| saleData:{} | |||
| } | |||
| }, | |||
| onLoad(e) { | |||
| this.activityId = e.id; | |||
| this.getsaleClueById(e.id) | |||
| }, | |||
| // 隐藏微信h5的标题栏 | |||
| onReady() { | |||
| this.$com.displayNav() | |||
| }, | |||
| methods:{ | |||
| getsaleClueById(activityId){ | |||
| this.$api('saleClueById',{activityId}) | |||
| .then(res=>{ | |||
| if(res.code == 200){ | |||
| this.saleData = res.result; | |||
| } | |||
| }) | |||
| } | |||
| } | |||
| } | |||
| </script> | |||
| <style lang="scss" scoped> | |||
| .my-xiansuo { | |||
| padding: 17rpx 19rpx 0 13rpx; | |||
| .course-box-item { | |||
| background: #ffffff; | |||
| border-radius: 12rpx; | |||
| box-shadow: 0px 3rpx 6rpx 0px rgba(0,0,0,0.16); | |||
| padding: 33rpx 13rpx; | |||
| .box-right { | |||
| margin-left: 16rpx; | |||
| .active-title { | |||
| font-size: 30rpx; | |||
| color: #000; | |||
| line-height: 40rpx; | |||
| overflow: hidden; | |||
| display: -webkit-box; | |||
| -webkit-box-orient: vertical; | |||
| -webkit-line-clamp: 2; | |||
| } | |||
| .active-time { | |||
| color: #707070; | |||
| font-size: 26rpx; | |||
| margin: 10rpx 0 14rpx 0; | |||
| } | |||
| .active-add { | |||
| color: #707070; | |||
| font-size: 26rpx; | |||
| } | |||
| .user-img { | |||
| margin-top: 26rpx; | |||
| .user-img-sing { | |||
| margin-right: 10rpx; | |||
| &:nth-child(6){ | |||
| margin-right: 0; | |||
| } | |||
| } | |||
| .duode { | |||
| width: 51rpx; | |||
| height: 51rpx; | |||
| border-radius: 50%; | |||
| background-color: #C6C6C6; | |||
| color: #ffffff; | |||
| font-size: 44rpx; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| .liulan { | |||
| background: #ffffff; | |||
| border-radius: 12rpx; | |||
| box-shadow: 0px 3rpx 6rpx 0px rgba(0,0,0,0.16); | |||
| padding: 0 25rpx 88rpx; | |||
| margin-top: 12rpx; | |||
| .liulan-title { | |||
| font-size: 30rpx; | |||
| color: #000000; | |||
| border-bottom: 1px solid #E6E6E6; | |||
| padding: 33rpx 0 19rpx; | |||
| .num{ | |||
| color: #D33D3E; | |||
| } | |||
| } | |||
| .user-from { | |||
| .from-line { | |||
| border-bottom: 1px solid #ECECEC; | |||
| padding: 20rpx 0 8rpx 0; | |||
| .dot { | |||
| width: 10rpx; | |||
| height: 10rpx; | |||
| border-radius: 50%; | |||
| background-color: #ED1450; | |||
| margin-right: 13rpx; | |||
| } | |||
| .line-r { | |||
| .name-time { | |||
| font-size: 24rpx; | |||
| color: #3B3B3B; | |||
| } | |||
| .time { | |||
| font-size: 20rpx; | |||
| color: #929292; | |||
| margin-top: 13rpx; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| </style> | |||
| @ -0,0 +1,36 @@ | |||
| <template> | |||
| <view class="xieyi-page"> | |||
| <u-parse :content="dataInfo.value"></u-parse> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| export default{ | |||
| data(){ | |||
| return{ | |||
| dataInfo:{} | |||
| } | |||
| }, | |||
| onLoad() { | |||
| this.getfindAgree() | |||
| }, | |||
| // 隐藏微信h5的标题栏 | |||
| onReady() { | |||
| this.$com.displayNav() | |||
| }, | |||
| methods:{ | |||
| getfindAgree(){ | |||
| this.$api('findAgree') | |||
| .then(res=>{ | |||
| this.dataInfo = res.result; | |||
| }) | |||
| } | |||
| } | |||
| } | |||
| </script> | |||
| <style lang="scss" scoped> | |||
| .xieyi-page { | |||
| padding: 10rpx 20rpx; | |||
| } | |||
| </style> | |||
| @ -0,0 +1,188 @@ | |||
| <template> | |||
| <view class="home-pages"> | |||
| <view class="home-content"> | |||
| <u-tabs | |||
| :list="tabList" | |||
| lineWidth="70" | |||
| lineHeight="3" | |||
| lineColor= "#00CCCC" | |||
| :activeStyle="{ | |||
| color: '#000000', | |||
| fontWeight: 'bold', | |||
| transform: 'scale(1.35)' | |||
| }" | |||
| :inactiveStyle="{ | |||
| color: '#000000', | |||
| transform: 'scale(1)' | |||
| }" | |||
| itemStyle="padding-left: 15px; padding-right: 15px; height: 34px;" | |||
| @click="tabClick" | |||
| > | |||
| </u-tabs> | |||
| <scroll-view scroll-y="true" class="scroll-Y" @scrolltolower="lower"> | |||
| <template v-if="current == 0"> | |||
| <active-card v-for="(item,i) in studyList" :item="item" :key="i" :i="i" @seeDetail="seeDetail"></active-card> | |||
| </template> | |||
| <template v-if="current == 1"> | |||
| <new-card v-for="(item,i) in informationList" :key="i" :item="item" @seeDetail="newDetail"></new-card> | |||
| </template> | |||
| </scroll-view> | |||
| </view> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| import activeCard from '@/components/active-card/index.vue' | |||
| import newCard from '@/components/new-card/index.vue' | |||
| export default{ | |||
| components:{ | |||
| activeCard, | |||
| newCard | |||
| }, | |||
| data(){ | |||
| return{ | |||
| current:0, | |||
| studyList:[], | |||
| activiteList:[], | |||
| informationList:[], | |||
| tabList: [ | |||
| { | |||
| name: '家教街' | |||
| }, | |||
| { | |||
| name: '校园墙' | |||
| } | |||
| ], | |||
| params:{ | |||
| pageNo:1, | |||
| pageSize:10, | |||
| total: null, | |||
| isLock: true | |||
| }, | |||
| } | |||
| }, | |||
| onLoad() { | |||
| if(this.current == 0){ | |||
| this.getActivity(); | |||
| }else{ | |||
| this.getinformation() | |||
| } | |||
| }, | |||
| onPullDownRefresh() { | |||
| this.activiteList = []; | |||
| this.params.pageNo = 1; | |||
| this.params.total = null; | |||
| this.params.isLock = true; | |||
| this.getActivity(); | |||
| }, | |||
| onReachBottom() { | |||
| if(this.params.isLock){ | |||
| this.params.isLock = false; | |||
| if(this.params.total !== null && this.params.pageNo * this.params.pageSize >= this.params.total){ | |||
| this.$Toast('没有更多数据!'); | |||
| setTimeout(()=>{ | |||
| this.params.isLock = true; | |||
| },3000) | |||
| return | |||
| } | |||
| this.params.pageNo+=1; | |||
| this.$Toast('数据加载成功!'); | |||
| this.getActivity(); | |||
| } | |||
| }, | |||
| onPullDownRefresh() { | |||
| this.params.pageNo = 1; | |||
| if(this.current == 0){ | |||
| this.getActivity(); | |||
| }else{ | |||
| this.getinformation() | |||
| } | |||
| }, | |||
| // 隐藏微信h5的标题栏 | |||
| onReady() { | |||
| this.$com.displayNav() | |||
| }, | |||
| methods:{ | |||
| tabClick(e){ | |||
| this.current = e.index; | |||
| this.params.pageNo = 1; | |||
| if(this.current == 0){ | |||
| this.getActivity(2); | |||
| }else{ | |||
| this.getinformation(2) | |||
| } | |||
| }, | |||
| getActivity(type){ | |||
| uni.showLoading() | |||
| this.$api('JobList',this.params) | |||
| .then(res=>{ | |||
| uni.hideLoading() | |||
| if(res.code == 200){ | |||
| if(this.params.total== null) { | |||
| this.params.total = res.result.total | |||
| } | |||
| if(this.params.pageNo>1){ | |||
| uni.hideLoading(); | |||
| } | |||
| this.studyList = this.studyList.concat(res.result.records); | |||
| this.params.isLock = true; | |||
| }else { | |||
| if(this.params.pageNo>1){ | |||
| uni.hideLoading(); | |||
| } | |||
| this.params.isLock = true; | |||
| } | |||
| }) | |||
| }, | |||
| getinformation(type){ | |||
| uni.showLoading() | |||
| this.$api('information',this.params) | |||
| .then(res=>{ | |||
| uni.hideLoading() | |||
| if(res.code == 200){ | |||
| this.pages = res.result.pages; | |||
| if(type == 2){ | |||
| this.informationList = [...this.informationList,...res.result.records]; | |||
| }else{ | |||
| this.informationList = res.result.records; | |||
| uni.stopPullDownRefresh(); | |||
| } | |||
| } | |||
| }) | |||
| }, | |||
| seeDetail(item){//查看详情 | |||
| uni.navigateTo({ | |||
| url:`/pages/home/course-detial?id=${item.id}` | |||
| }) | |||
| }, | |||
| newDetail(item){//知识查看详情 | |||
| uni.navigateTo({ | |||
| url:`/pages/home/new-detail?id=${item.id}` | |||
| }) | |||
| }, | |||
| lower(){ | |||
| if(this.params.pageNo >= this.pages) return; | |||
| this.params.pageNo ++; | |||
| if(this.current == 0){ | |||
| this.getActivity(2); | |||
| }else{ | |||
| this.getinformation(2) | |||
| } | |||
| }, | |||
| } | |||
| } | |||
| </script> | |||
| <style lang="scss" scoped> | |||
| .home-pages { | |||
| padding: 18rpx 29rpx 0; | |||
| background-color: #F7F7F7; | |||
| .scroll-Y { | |||
| height: calc(100vh - 210rpx); | |||
| padding-top: 20rpx; | |||
| } | |||
| } | |||
| </style> | |||
| @ -0,0 +1,69 @@ | |||
| import Request from './request' | |||
| import apiList from './shopro' | |||
| // import store from '@/common/store/index.js' | |||
| export default function api(url, data = {}) { | |||
| const request = new Request(); | |||
| let api = getApiObj(url); | |||
| request.interceptor.request((config, cancel) => { /* 请求之前拦截器 */ | |||
| if (api.auth) { | |||
| let userToken = uni.getStorageSync('userToken'); | |||
| if (!userToken) { | |||
| // store.commit('LOGIN_TIP', true) | |||
| // store.commit('OUT_LOGIN'); | |||
| throw('暂未登录,已阻止此次API请求~'); | |||
| } | |||
| } | |||
| if (uni.getStorageSync('userToken')) { | |||
| config.header['X-Access-Token'] = uni.getStorageSync('userToken'); | |||
| } | |||
| return config | |||
| }); | |||
| request.interceptor.response((response) => { /* 请求之后拦截器 */ | |||
| // if (response.data.code === 0) { // 服务端返回的状态码不等于200,则reject() | |||
| // uni.showToast({ | |||
| // title: response.data.msg || '请求出错,稍后重试', | |||
| // icon: 'none', | |||
| // duration: 1000, | |||
| // mask: true | |||
| // }); | |||
| // } | |||
| if (response.data.status === 7001) { // 服务端返回的状态码不等于200,则reject() | |||
| uni.clearStorageSync() | |||
| uni.showToast({ | |||
| title: '登录过期,请重新登录' | |||
| }) | |||
| uni.reLaunch({ | |||
| url: '/pages/login/login' | |||
| }) | |||
| // store.commit('LOGIN_TIP', true) | |||
| } | |||
| // if (response.config.custom.verification) { // 演示自定义参数的作用 | |||
| // return response.data | |||
| // } | |||
| return response | |||
| }, (response) => { // 预留可以日志上报 | |||
| return response | |||
| }) | |||
| let option = { | |||
| url: api.url, | |||
| data, | |||
| method: api.method | |||
| } | |||
| if (api.headers!=null){ | |||
| option.header = api.headers | |||
| } | |||
| return request.request(option) | |||
| } | |||
| function getApiObj(url) { | |||
| let apiArray = url.split("."); | |||
| let api = apiList; | |||
| apiArray.forEach(v => { | |||
| api = api[v]; | |||
| }); | |||
| return api; | |||
| } | |||
| @ -0,0 +1,280 @@ | |||
| import { | |||
| API_URL | |||
| } from '@/env' | |||
| export default class Request { | |||
| config = { | |||
| baseUrl: API_URL, | |||
| header: { | |||
| 'content-type': 'application/x-www-form-urlencoded', | |||
| 'platform': uni.getStorageSync('platform'), | |||
| }, | |||
| method: 'GET', | |||
| dataType: 'json', | |||
| // #ifndef MP-ALIPAY || APP-PLUS | |||
| responseType: 'text', | |||
| // #endif | |||
| custom: {}, | |||
| // #ifdef MP-ALIPAY | |||
| timeout: 30000, | |||
| // #endif | |||
| // #ifdef APP-PLUS | |||
| sslVerify: true | |||
| // #endif | |||
| } | |||
| static posUrl(url) { /* 判断url是否为绝对路径 */ | |||
| return /(http|https):\/\/([\w.]+\/?)\S*/.test(url) | |||
| } | |||
| static addQueryString(params) { | |||
| let paramsData = '' | |||
| Object.keys(params).forEach(function(key) { | |||
| paramsData += key + '=' + encodeURIComponent(params[key]) + '&' | |||
| }) | |||
| return paramsData.substring(0, paramsData.length - 1) | |||
| } | |||
| /** | |||
| * @property {Function} request 请求拦截器 | |||
| * @property {Function} response 响应拦截器 | |||
| * @type {{request: Request.interceptor.request, response: Request.interceptor.response}} | |||
| */ | |||
| interceptor = { | |||
| /** | |||
| * @param {Request~requestCallback} cb - 请求之前拦截,接收一个函数(config, cancel)=> {return config}。第一个参数为全局config,第二个参数为函数,调用则取消本次请求。 | |||
| */ | |||
| request: (cb) => { | |||
| if (cb) { | |||
| this.requestBeforeFun = cb | |||
| } | |||
| }, | |||
| /** | |||
| * @param {Request~responseCallback} cb 响应拦截器,对响应数据做点什么 | |||
| * @param {Request~responseErrCallback} ecb 响应拦截器,对响应错误做点什么 | |||
| */ | |||
| response: (cb, ecb) => { | |||
| if (cb && ecb) { | |||
| this.requestComFun = cb | |||
| this.requestComFail = ecb | |||
| } | |||
| } | |||
| } | |||
| requestBeforeFun(config) { | |||
| return config | |||
| } | |||
| requestComFun(response) { | |||
| return response | |||
| } | |||
| requestComFail(response) { | |||
| return response | |||
| } | |||
| /** | |||
| * 自定义验证器,如果返回true 则进入响应拦截器的响应成功函数(resolve),否则进入响应拦截器的响应错误函数(reject) | |||
| * @param { Number } statusCode - 请求响应体statusCode(只读) | |||
| * @return { Boolean } 如果为true,则 resolve, 否则 reject | |||
| */ | |||
| validateStatus(statusCode) { | |||
| return statusCode === 200 | |||
| } | |||
| /** | |||
| * @Function | |||
| * @param {Request~setConfigCallback} f - 设置全局默认配置 | |||
| */ | |||
| setConfig(f) { | |||
| this.config = f(this.config) | |||
| } | |||
| /** | |||
| * @Function | |||
| * @param {Object} options - 请求配置项 | |||
| * @prop {String} options.url - 请求路径 | |||
| * @prop {Object} options.data - 请求参数 | |||
| * @prop {Object} [options.responseType = config.responseType] [text|arraybuffer] - 响应的数据类型 | |||
| * @prop {Object} [options.dataType = config.dataType] - 如果设为 json,会尝试对返回的数据做一次 JSON.parse | |||
| * @prop {Object} [options.header = config.header] - 请求header | |||
| * @prop {Object} [options.method = config.method] - 请求方法 | |||
| * @returns {Promise<unknown>} | |||
| */ | |||
| async request(options = {}) { | |||
| options.baseUrl = this.config.baseUrl | |||
| options.dataType = options.dataType || this.config.dataType | |||
| // #ifndef MP-ALIPAY || APP-PLUS | |||
| options.responseType = options.responseType || this.config.responseType | |||
| // #endif | |||
| // #ifdef MP-ALIPAY | |||
| options.timeout = options.timeout || this.config.timeout | |||
| // #endif | |||
| options.url = options.url || '' | |||
| options.data = options.data || {} | |||
| options.params = options.params || {} | |||
| options.header = options.header || this.config.header | |||
| options.method = options.method || this.config.method | |||
| options.custom = { ...this.config.custom, | |||
| ...(options.custom || {}) | |||
| } | |||
| // #ifdef APP-PLUS | |||
| options.sslVerify = options.sslVerify === undefined ? this.config.sslVerify : options.sslVerify | |||
| // #endif | |||
| // uni.showToast({ | |||
| // icon: "loading", | |||
| // image: "/static/imgs//logo/logo.gif" | |||
| // }) | |||
| return new Promise((resolve, reject) => { | |||
| let next = true | |||
| let handleRe = {} | |||
| options.complete = (response) => { | |||
| response.config = handleRe | |||
| if (this.validateStatus(response.statusCode)) { // 成功 | |||
| response = this.requestComFun(response) | |||
| resolve(response.data) | |||
| } else if (401 === response.statusCode) { | |||
| response = this.requestComFun(response) | |||
| resolve(response.data) | |||
| } else if (500 === response.statusCode) { | |||
| resolve(response.data) | |||
| } else { | |||
| response = this.requestComFail(response) | |||
| reject(response) | |||
| } | |||
| } | |||
| const cancel = (t = 'handle cancel', config = options) => { | |||
| const err = { | |||
| errMsg: t, | |||
| config: config | |||
| } | |||
| reject(err) | |||
| next = false | |||
| } | |||
| handleRe = { ...this.requestBeforeFun(options, cancel) | |||
| } | |||
| const _config = { ...handleRe | |||
| } | |||
| if (!next) return | |||
| delete _config.custom | |||
| let mergeUrl = Request.posUrl(_config.url) ? _config.url : (_config.baseUrl + _config.url) | |||
| if (JSON.stringify(_config.params) !== '{}') { | |||
| const paramsH = Request.addQueryString(_config.params); | |||
| mergeUrl += mergeUrl.indexOf('?') === -1 ? `?${paramsH}` : `&${paramsH}` | |||
| } | |||
| _config.url = mergeUrl | |||
| uni.request(_config) | |||
| }) | |||
| } | |||
| get(url, options = {}) { | |||
| return this.request({ | |||
| url, | |||
| method: 'GET', | |||
| ...options | |||
| }) | |||
| } | |||
| post(url, data, options = {}) { | |||
| return this.request({ | |||
| url, | |||
| data, | |||
| method: 'POST', | |||
| ...options | |||
| }) | |||
| } | |||
| upload(url, { | |||
| // #ifdef APP-PLUS | |||
| files, | |||
| // #endif | |||
| // #ifdef MP-ALIPAY | |||
| fileType, | |||
| // #endif | |||
| filePath, | |||
| name, | |||
| header, | |||
| formData, | |||
| custom | |||
| }) { | |||
| return new Promise((resolve, reject) => { | |||
| let next = true | |||
| let handleRe = {} | |||
| const globalHeader = { ...this.config.header | |||
| } | |||
| delete globalHeader['content-type'] | |||
| const pubConfig = { | |||
| baseUrl: this.config.baseUrl, | |||
| url, | |||
| // #ifdef APP-PLUS | |||
| files, | |||
| // #endif | |||
| // #ifdef MP-ALIPAY | |||
| fileType, | |||
| // #endif | |||
| filePath, | |||
| method: 'UPLOAD', | |||
| name, | |||
| header: header || globalHeader, | |||
| formData, | |||
| custom: { ...this.config.custom, | |||
| ...(custom || {}) | |||
| }, | |||
| complete: (response) => { | |||
| response.config = handleRe | |||
| if (response.statusCode === 200) { // 成功 | |||
| response = this.requestComFun(response) | |||
| resolve(response) | |||
| } else { | |||
| response = this.requestComFail(response) | |||
| reject(response) | |||
| } | |||
| } | |||
| } | |||
| const cancel = (t = 'handle cancel', config = pubConfig) => { | |||
| const err = { | |||
| errMsg: t, | |||
| config: config | |||
| } | |||
| reject(err) | |||
| next = false | |||
| } | |||
| handleRe = { ...this.requestBeforeFun(pubConfig, cancel) | |||
| } | |||
| const _config = { ...handleRe | |||
| } | |||
| if (!next) return | |||
| delete _config.custom | |||
| _config.url = Request.posUrl(_config.url) ? _config.url : (_config.baseUrl + _config.url) | |||
| uni.uploadFile(_config) | |||
| }) | |||
| } | |||
| } | |||
| /** | |||
| * setConfig回调 | |||
| * @return {Object} - 返回操作后的config | |||
| * @callback Request~setConfigCallback | |||
| * @param {Object} config - 全局默认config | |||
| */ | |||
| /** | |||
| * 请求拦截器回调 | |||
| * @return {Object} - 返回操作后的config | |||
| * @callback Request~requestCallback | |||
| * @param {Object} config - 全局config | |||
| * @param {Function} [cancel] - 取消请求钩子,调用会取消本次请求 | |||
| */ | |||
| /** | |||
| * 响应拦截器回调 | |||
| * @return {Object} - 返回操作后的response | |||
| * @callback Request~responseCallback | |||
| * @param {Object} response - 请求结果 response | |||
| */ | |||
| /** | |||
| * 响应错误拦截器回调 | |||
| * @return {Object} - 返回操作后的response | |||
| * @callback Request~responseErrCallback | |||
| * @param {Object} response - 请求结果 response | |||
| */ | |||
| @ -0,0 +1,91 @@ | |||
| /** | |||
| * 接口列表文件 | |||
| */ | |||
| export default { | |||
| //首页兼职地区分类 | |||
| IndexJobAddress: {url:'/job-dev/job/index/address',auth:false,method:'GET'}, | |||
| //首页兼职信息 | |||
| JobList: {url:'/job-dev/job/index/list',auth:false,method:'GET'}, | |||
| // 登录 | |||
| loginAccount: {url:'/job-dev/binYuan/login/account',auth:false,method:'POST'}, | |||
| // gerenxinxi | |||
| myInfo: {url:'/job-dev/binYuan/my/info',auth:false,method:'GET'}, | |||
| // 查看我的客户 | |||
| myCustomer: {url:'/job-dev/binYuan/my/myCustomer',auth:false,method:'GET'}, | |||
| //添加 修改 客户 | |||
| operateCustomer: {url:'/job-dev/binYuan/my/operateCustomer',auth:false,method:'POST'}, | |||
| //查看客户信息 | |||
| customerMassage: {url:'/job-dev/binYuan/my/customerMassage',auth:false,method:'GET'}, | |||
| //分享到公用池 | |||
| openCustomer: {url:'/job-dev/binYuan/my/openCustomer',auth:false,method:'GET'}, | |||
| //查看客户服务记录 | |||
| customerRecord: {url:'/job-dev/binYuan/my/customerRecord',auth:false,method:'GET'}, | |||
| //查看共用资源 | |||
| findOpen: {url:'/job-dev/binYuan/my/findOpen',auth:false,method:'GET'}, | |||
| //添加为我的用户 | |||
| openAddCustomer: {url:'/job-dev/binYuan/my/openAddCustomer',auth:false,method:'POST'}, | |||
| //我的线索列表 | |||
| saleClue: {url:'/job-dev/binYuan/my/saleClue',auth:false,method:'GET'}, | |||
| //我要推荐 | |||
| savePush: {url:'/job-dev/binYuan/my/savePush',auth:false,method:'POST'}, | |||
| //查看最新活动 | |||
| activity: {url:'/job-dev/binYuan/index/activity',auth:false,method:'GET'}, | |||
| //查看课程 | |||
| study: {url:'/job-dev/binYuan/index/study',auth:false,method:'GET'}, | |||
| //查看课程或活动详情 | |||
| activityFindById: {url:'/job-dev/binYuan/index/activityFindById',auth:false,method:'GET'}, | |||
| //查看知识库 | |||
| knowledge: {url:'/job-dev/binYuan/index/knowledge',auth:false,method:'GET'}, | |||
| //查看知识库 | |||
| informFindById: {url:'/job-dev/binYuan/index/informFindById',auth:false,method:'GET'}, | |||
| //查看资讯 | |||
| information: {url:'/job-dev/binYuan/index/information',auth:false,method:'GET'}, | |||
| //banner | |||
| bannerList: {url:'/job-dev/binYuan/index/bannerList',auth:false,method:'GET'}, | |||
| bannerListJiangHua: {url:'/job-dev/binYuan/index/bannerListJiangHua',auth:false,method:'GET'}, | |||
| //添加报名信息 | |||
| saveEnroll: {url:'/job-dev/binYuan/index/saveEnroll',auth:false,method:'POST'}, | |||
| //协议 | |||
| findAgree: {url:'/job-dev/binYuan/index/findAgree',auth:false,method:'GET'}, | |||
| //添加服务记录 | |||
| saveService: {url:'/job-dev/binYuan/my/saveService',auth:false,method:'POST'}, | |||
| //联系我们 | |||
| contactUs: {url:'/job-dev/binYuan/my/contactUs',auth:false,method:'GET'}, | |||
| //根据活动表示查看线索- | |||
| saleClueById: {url:'/job-dev/binYuan/my/saleClueById',auth:false,method:'GET'}, | |||
| //联系我们增加留言 | |||
| contactAdd: {url:'/job-dev/binYuan/my/contactAdd',auth:false,method:'GET'}, | |||
| //用户-微信公众号授权登录 | |||
| wxLogin: {url:'/job-dev/binYuan/login/wxLogin',auth:false,method:'POST'}, | |||
| //微信支付 | |||
| create: {url:'/job-dev/job/pay/create',auth:false,method:'GET'}, | |||
| //creteFenxian | |||
| creteFenxian: {url:'/job-dev/binYuan/pay/creteFenXian',auth:false,method:'POST'}, | |||
| // | |||
| getFans: {url:'/job-dev/job/index/fans',auth:false,method:'GET'}, | |||
| creteClick: {url:'/job-dev/job/index/click',auth:false,method:'GET'}, | |||
| carClick: {url:'/job-dev/job/index/carClick',auth:false,method:'GET'}, | |||
| getCarList: {url:'/job-dev/job/index/carList',auth:false,method:'GET'}, | |||
| getCarById: {url:'/job-dev/job/index/carById',auth:false,method:'GET'}, | |||
| //获取发布信息列表 | |||
| queryPageListJobRelease: {url:'/job-dev/binYuan/index/jobReleaseList',auth:false,method:'GET'}, | |||
| //增加发布信息 | |||
| saveJobRelease: {url:'/job-dev/binYuan/index/saveJobRelease',auth:false,method:'POST'}, | |||
| //修改发布信息 | |||
| editJobRelease: {url:'/job-dev/binYuan/index/editJobRelease',auth:false,method:'POST'}, | |||
| //获取商城商品信息 | |||
| getJobShopList: {url:'/job-dev/job/shop/getShopList',auth:false,method:'GET'}, | |||
| //获取商品详情信息 | |||
| getShopDetailsById: {url:'/job-dev/job/shop/getShopDetailsById',auth:false,method:'GET'}, | |||
| }; | |||
| @ -0,0 +1,37 @@ | |||
| import Vue from 'vue' | |||
| import Router from 'uni-simple-router' | |||
| import store from '../store' | |||
| Vue.use(Router) | |||
| //初始化 | |||
| const router = new Router({ | |||
| APP: { | |||
| animation: { | |||
| animationType: 'pop-in', | |||
| animationDuration: 300 | |||
| } | |||
| }, | |||
| encodeURI: false, | |||
| routes: ROUTES //路由表 | |||
| }); | |||
| //全局路由前置守卫 | |||
| // router.beforeEach((to, from, next) => { | |||
| // // 有两个个判断条件,一个是token,还有一个路由元信息 | |||
| // let userInfo = Boolean(uni.getStorageSync('userInfo')); | |||
| // let token = uni.getStorageSync('userToken'); | |||
| // // 权限控制 | |||
| // if(!token){ | |||
| // uni.reLaunch({ | |||
| // url: '/pages/login/login' | |||
| // }); | |||
| // } | |||
| // next() | |||
| // // if (to.meta && to.meta.auth && !userInfo) { | |||
| // // store.commit('LOGIN_TIP', true) | |||
| // // } else { | |||
| // // } | |||
| // }) | |||
| // 全局路由后置守卫 | |||
| router.afterEach((to, from) => {}) | |||
| export default router; | |||
| @ -0,0 +1 @@ | |||
| export default {} | |||
| @ -0,0 +1 @@ | |||
| export default {} | |||
| @ -0,0 +1,16 @@ | |||
| import Vue from "vue" | |||
| import Vuex from "vuex" | |||
| import state from './state.js' | |||
| import actions from './actions.js' | |||
| import getters from './getters.js' | |||
| import mutations from './mutations.js' | |||
| Vue.use(Vuex) | |||
| export default new Vuex.Store({ | |||
| state, | |||
| actions, | |||
| getters, | |||
| mutations, | |||
| modules:{ | |||
| } | |||
| }) | |||
| @ -0,0 +1,18 @@ | |||
| export default { | |||
| 'set_userToken' (state, userToken) {//存储 userToken | |||
| state.userToken = userToken | |||
| uni.setStorageSync('userToken', userToken) | |||
| }, | |||
| 'set_userInfo' (state, userInfo) {//存储 userToken | |||
| state.userInfo = JSON.stringify(userInfo) | |||
| uni.setStorageSync('userInfo', JSON.stringify(userInfo)) | |||
| }, | |||
| 'set_geographyStatus' (state, flag) { | |||
| state.geographyStatus = flag | |||
| uni.setStorageSync('geographyStatus', flag) | |||
| }, | |||
| 'set_ivcode' (state, ivcode) { | |||
| state.ivcode = ivcode | |||
| uni.setStorageSync('ivcode', ivcode) | |||
| } | |||
| } | |||
| @ -0,0 +1,6 @@ | |||
| export default { | |||
| userToken: uni.getStorageSync('userToken') || '', | |||
| userInfo: uni.getStorageSync('userInfo') || '', | |||
| ivcode: uni.getStorageSync('ivcode') || '', | |||
| geographyStatus: uni.getStorageSync('geographyStatus') || '', | |||
| } | |||
| @ -0,0 +1,453 @@ | |||
| /* 1. 页面背景色 */ | |||
| .page{ | |||
| background-color: #EDEDED; | |||
| /* #ifndef APP-PLUS-NVUE */ | |||
| min-height: 100%; | |||
| height: auto; | |||
| /* #endif */ | |||
| /* #ifdef APP-PLUS-NVUE */ | |||
| flex: 1; | |||
| /* #endif */ | |||
| } | |||
| /* 2. 主背景色(原谅绿) */ | |||
| .main-bg-color{ | |||
| background-color: #F6F7F8 !important; | |||
| } | |||
| /* 3. 主文字色(原谅绿) */ | |||
| .main-text-color{ | |||
| color: #333333; | |||
| } | |||
| /* 4. 主边框颜色(原谅绿) */ | |||
| .border-main{ | |||
| border-color: #08C060 !important; | |||
| } | |||
| /* 防止图片闪一下 */ | |||
| image{will-change: transform;width: 100%; } | |||
| /* scroll-view 横向 */ | |||
| .scroll-row{ width: 100%;white-space: nowrap; } | |||
| .scroll-row-item{ display: inline-block; } | |||
| /* 图标 */ | |||
| .iconfont{ | |||
| font-family:iconfont; | |||
| } | |||
| .view,.text{ | |||
| font-size:24rpx; | |||
| line-height:1.8; | |||
| color:#0E151D; | |||
| } | |||
| /* 宽度 */ | |||
| .w-100{ width: 750rpx; } | |||
| .h-100 {height: 100%;} | |||
| .min-h-100 {min-height: 100vh;} | |||
| /* flex 布局 */ | |||
| .flex{ | |||
| /* #ifndef APP-PLUS-NVUE */ | |||
| display:flex; | |||
| /* #endif */ | |||
| flex-direction:row; | |||
| } | |||
| .flex-row{ flex-direction:row!important; } | |||
| .flex-column{ flex-direction:column!important; } | |||
| .flex-row-reverse{ flex-direction:row-reverse!important; } | |||
| .flex-column-reverse{ flex-direction:column-reverse!important; } | |||
| .flex-wrap{ flex-wrap:wrap;} | |||
| .flex-nowrap{ flex-wrap:nowrap;} | |||
| .justify-start{justify-content:flex-start;} | |||
| .justify-end{justify-content:flex-end;} | |||
| .justify-between{justify-content:space-between;} | |||
| .justify-center{justify-content:center;} | |||
| .align-center{ align-items: center; } | |||
| .align-stretch{ align-items: stretch; } | |||
| .align-start{ align-items: flex-start; } | |||
| .align-end{ align-items: flex-end; } | |||
| /* #ifndef APP-PLUS-NVUE */ | |||
| .content-start {align-content: flex-start;} | |||
| .content-end {align-content: flex-end;} | |||
| .content-center {align-content: center;} | |||
| .content-between {align-content: space-between;} | |||
| .content-around {align-content: space-around;} | |||
| .content-stretch {align-content: stretch;} | |||
| /* #endif */ | |||
| .flex-1{ flex: 1 !important; } | |||
| .flex-2{ flex: 2 !important; } | |||
| .flex-3{ flex: 3 !important; } | |||
| .flex-4{ flex: 4 !important; } | |||
| .flex-5{ flex: 5 !important; } | |||
| .flex-6{ flex: 6 !important; } | |||
| .flex-7{ flex: 7 !important; } | |||
| .flex-8{ flex: 8 !important; } | |||
| .flex-9{ flex: 9 !important; } | |||
| /* #ifndef APP-PLUS-NVUE */ | |||
| .flex-shrink{ flex-shrink: 0; } | |||
| /* #endif */ | |||
| .container { | |||
| padding-right: 20rpx; | |||
| padding-left: 20rpx; | |||
| } | |||
| /* -- 内外边距 -- */ | |||
| .m-0 { margin: 0; } | |||
| /* #ifndef APP-PLUS-NVUE */ | |||
| .m-auto{ margin: auto; } | |||
| /* #endif */ | |||
| .m-1 { margin: 10rpx; } | |||
| .m-2 { margin: 20rpx; } | |||
| .m-3 { margin: 30rpx; } | |||
| .m-4 { margin: 40rpx; } | |||
| .m-5 { margin: 50rpx; } | |||
| .mt-0 { margin-top: 0; } | |||
| /* #ifndef APP-PLUS-NVUE */ | |||
| .mt-auto { margin-top: auto; } | |||
| /* #endif */ | |||
| .mt-1 { margin-top: 10rpx; } | |||
| .mt-2 { margin-top: 20rpx; } | |||
| .mt-3 { margin-top: 30rpx; } | |||
| .mt-4 { margin-top: 40rpx; } | |||
| .mt-5 { margin-top: 50rpx; } | |||
| .mb-0 { margin-bottom: 0; } | |||
| /* #ifndef APP-PLUS-NVUE */ | |||
| .mb-auto { margin-bottom: auto; } | |||
| /* #endif */ | |||
| .mb-1 { margin-bottom: 10rpx; } | |||
| .mb-2 { margin-bottom: 20rpx; } | |||
| .mb-3 { margin-bottom: 30rpx; } | |||
| .mb-4 { margin-bottom: 40rpx; } | |||
| .mb-5 { margin-bottom: 50rpx; } | |||
| .ml-0 { margin-left: 0; } | |||
| /* #ifndef APP-PLUS-NVUE */ | |||
| .ml-auto { margin-left: auto; } | |||
| /* #endif */ | |||
| .ml-1 { margin-left: 10rpx; } | |||
| .ml-2 { margin-left: 20rpx; } | |||
| .ml-3 { margin-left: 30rpx; } | |||
| .ml-4 { margin-left: 40rpx; } | |||
| .ml-5 { margin-left: 50rpx; } | |||
| .mr-0 { margin-right: 0; } | |||
| /* #ifndef APP-PLUS-NVUE */ | |||
| .mr-auto { margin-right: auto; } | |||
| /* #endif */ | |||
| .mr-1 { margin-right: 10rpx; } | |||
| .mr-2 { margin-right: 20rpx; } | |||
| .mr-3 { margin-right: 30rpx; } | |||
| .mr-4 { margin-right: 40rpx; } | |||
| .mr-5 { margin-right: 50rpx; } | |||
| .my-0 { margin-top: 0; margin-bottom: 0; } | |||
| /* #ifndef APP-PLUS-NVUE */ | |||
| .my-auto { margin-top: auto; margin-bottom: auto; } | |||
| /* #endif */ | |||
| .my-1 { margin-top: 10rpx; margin-bottom: 10rpx; } | |||
| .my-2 { margin-top: 20rpx; margin-bottom: 20rpx; } | |||
| .my-3 { margin-top: 30rpx; margin-bottom: 30rpx; } | |||
| .my-4 { margin-top: 40rpx; margin-bottom: 40rpx; } | |||
| .my-5 { margin-top: 50rpx; margin-bottom: 50rpx; } | |||
| .mx-0 { margin-left: 0; margin-right: 0; } | |||
| /* #ifndef APP-PLUS-NVUE */ | |||
| .mx-auto { margin-left: auto; margin-right: auto; } | |||
| /* #endif */ | |||
| .mx-1 { margin-left: 10rpx; margin-right: 10rpx;} | |||
| .mx-2 { margin-left: 20rpx; margin-right: 20rpx;} | |||
| .mx-3 { margin-left: 30rpx; margin-right: 30rpx;} | |||
| .mx-4 { margin-left: 40rpx; margin-right: 40rpx;} | |||
| .mx-5 { margin-left: 50rpx; margin-right: 50rpx;} | |||
| .p-0 { padding: 0; } | |||
| .p { padding: 5rpx; } | |||
| .p-1 { padding: 10rpx; } | |||
| .p-2 { padding: 20rpx; } | |||
| .p-3 { padding: 30rpx; } | |||
| .p-4 { padding: 40rpx; } | |||
| .p-5 { padding: 50rpx; } | |||
| .pt-0 { padding-top: 0; } | |||
| .pt { padding-top: 5rpx; } | |||
| .pt-1 { padding-top: 10rpx; } | |||
| .pt-2 { padding-top: 20rpx; } | |||
| .pt-3 { padding-top: 30rpx; } | |||
| .pt-4 { padding-top: 40rpx; } | |||
| .pt-5 { padding-top: 50rpx; } | |||
| .pb-0 { padding-bottom: 0; } | |||
| .pb-1 { padding-bottom: 10rpx; } | |||
| .pb { padding-bottom: 5rpx; } | |||
| .pb-2 { padding-bottom: 20rpx; } | |||
| .pb-3 { padding-bottom: 30rpx; } | |||
| .pb-4 { padding-bottom: 40rpx; } | |||
| .pb-5 { padding-bottom: 50rpx; } | |||
| .pl-0 { padding-left: 0; } | |||
| .pl { padding-left: 5rpx; } | |||
| .pl-1 { padding-left: 10rpx; } | |||
| .pl-2 { padding-left: 20rpx; } | |||
| .pl-3 { padding-left: 30rpx; } | |||
| .pl-4 { padding-left: 40rpx; } | |||
| .pl-5 { padding-left: 50rpx; } | |||
| .pr-0 { padding-right: 0; } | |||
| .pr { padding-right: 5rpx; } | |||
| .pr-1 { padding-right: 10rpx; } | |||
| .pr-2 { padding-right: 20rpx; } | |||
| .pr-3 { padding-right: 30rpx; } | |||
| .pr-4 { padding-right: 40rpx; } | |||
| .pr-5 { padding-right: 50rpx; } | |||
| .py-0 { padding-top: 0; padding-bottom: 0; } | |||
| .py { padding-top: 5rpx; padding-bottom: 5rpx; } | |||
| .py-1 { padding-top: 10rpx; padding-bottom: 10rpx; } | |||
| .py-2 { padding-top: 20rpx; padding-bottom: 20rpx; } | |||
| .py-3 { padding-top: 30rpx; padding-bottom: 30rpx; } | |||
| .py-4 { padding-top: 40rpx; padding-bottom: 40rpx; } | |||
| .py-5 { padding-top: 50rpx; padding-bottom: 50rpx; } | |||
| .px-0 { padding-left: 0; padding-right: 0; } | |||
| .px-1 { padding-left: 10rpx; padding-right: 10rpx;} | |||
| .px { padding-left: 5rpx; padding-right: 5rpx;} | |||
| .px-2 { padding-left: 20rpx; padding-right: 20rpx;} | |||
| .px-3 { padding-left: 30rpx; padding-right: 30rpx;} | |||
| .px-4 { padding-left: 40rpx; padding-right: 40rpx;} | |||
| .px-5 { padding-left: 50rpx; padding-right: 50rpx;} | |||
| /* 文字大小 */ | |||
| .font-lg { font-size: 40rpx;} | |||
| .font-38 { font-size: 38rpx;} | |||
| .font-36 { font-size: 36rpx;} | |||
| .font-md { font-size: 35rpx;} | |||
| .font-34 { font-size: 34rpx;} | |||
| .font-32 {font-size: 32rpx} | |||
| .font { font-size: 30upx;} | |||
| .font-main {font-size: 28rpx;} | |||
| .font-26 {font-size: 26rpx} | |||
| .font-sm { font-size: 25upx;} | |||
| .font-24 {font-size: 24rpx} | |||
| .font-22 {font-size: 22rpx} | |||
| .font-small { font-size: 20upx;} | |||
| .font-10 {font-size: 24rpx; transform:scale(0.81);} | |||
| .h1{font-size:80upx; line-height:1.8;} | |||
| .h2{font-size:60upx; line-height:1.8;} | |||
| .h3{font-size:45upx; line-height:1.8;} | |||
| .h4{font-size:32upx; line-height:1.8;} | |||
| .h5{font-size:30upx; line-height:1.8;} | |||
| .h6{font-size:28upx; line-height:1.8;} | |||
| /* 文字缩进 */ | |||
| /* #ifndef APP-PLUS-NVUE */ | |||
| .text-indent{text-indent:2;} | |||
| /* #endif */ | |||
| /* 文字划线 */ | |||
| .text-through{text-decoration:line-through;} | |||
| /* 文字对齐 */ | |||
| .text-left { text-align: left;} | |||
| .text-right { text-align: right;} | |||
| .text-center { text-align: center;} | |||
| /* 文字换行溢出处理 */ | |||
| .text-ellipsis { | |||
| /* #ifndef APP-PLUS-NVUE */ | |||
| overflow: hidden;text-overflow: ellipsis;white-space: nowrap; | |||
| /* #endif */ | |||
| /* #ifdef APP-PLUS-NVUE */ | |||
| lines: 1; | |||
| /* #endif */ | |||
| } | |||
| /* 文字粗细和斜体 */ | |||
| .font-weight-light {font-weight: 300;} /*细*/ | |||
| .font-weight-lighter {font-weight: 100;}/*更细*/ | |||
| .font-weight-normal { font-weight: 500;} /*正常*/ | |||
| .font-weight-bold { font-weight: 700;} /*粗*/ | |||
| .font-weight-bolder { font-weight: bold;} /*更粗*/ | |||
| .font-italic { font-style: italic;} /*斜体*/ | |||
| /* 文字颜色 */ | |||
| .text-red {color: #FF0000} | |||
| .text-white {color: #ffffff;} | |||
| .text-primary {color: #007bff;} | |||
| .text-hover-primary { color: #0056b3;} | |||
| .text-secondary {color: #6c757d;} | |||
| .text-hover-secondary { color: #494f54;} | |||
| .text-success {color: #28a745;} | |||
| .text-hover-success{color: #19692c;} | |||
| .text-info { color: #17a2b8;} | |||
| .text-hover-info {color: #0f6674;} | |||
| .text-warning {color: #ffc107;} | |||
| .text-hover-warning { color: #ba8b00;} | |||
| .text-danger { color: #dc3545;} | |||
| .text-hover-danger { color: #a71d2a;} | |||
| .text-light { color: #f8f9fa;} | |||
| .text-hover-light { color: #cbd3da;} | |||
| .text-dark { color: #343a40;} | |||
| .text-hover-dark{ color: #121416;} | |||
| .text-body { color: #212529;} | |||
| .text-muted { color: #999999;} | |||
| .text-EE8414 {color: #EE8414;} | |||
| .text-FE6347 {color:#FE6347} | |||
| .text-blue {color: #0175FF} | |||
| .text-black {color: #000} | |||
| .text-light-muted { color: #A9A5A0;} | |||
| .text-light-black { color: rgba(0, 0, 0, 0.5);} | |||
| .text-light-white { color: rgba(255, 255, 255, 0.5);} | |||
| /* 背景颜色 */ | |||
| .bg-primary { background-color: #007bff;} | |||
| .bg-hover-primary:hover{ background-color: #0062cc !important;} | |||
| .bg-secondary { background-color: #6c757d;} | |||
| .bg-hover-secondary:hover{ background-color: #545b62 !important;} | |||
| .bg-success { background-color: #28a745;} | |||
| .bg-hover-success { background-color: #1e7e34 !important;} | |||
| .bg-info { background-color: #17a2b8;} | |||
| .bg-hover-info { background-color: #117a8b !important;} | |||
| .bg-warning { background-color: #ffc107;} | |||
| .bg-FFE9E5 {background-color:#FFE9E5 !important;} | |||
| .bg-hover-warning { background-color: #d39e00 !important;} | |||
| .bg-hover-f1f1f1 {background-color: #f1f1f1 !important;} | |||
| .bg-hover-dc563e {background-color: #ef5d43 !important;} | |||
| .bg-danger { background-color: #dc3545;} | |||
| .bg-FE6347 {background-color: #FE6347 !important;} | |||
| .bg-hover-danger{ background-color: #bd2130 !important;} | |||
| .bg-light { background-color: #f8f9fa;} | |||
| .bg-hover-light{ background-color: #dae0e5 !important;} | |||
| .bg-dark { background-color: #343a40;} | |||
| .bg-hover-dark { background-color: #1d2124 !important;} | |||
| .bg-white { background-color: #ffffff;} | |||
| .bg-hover-main {background-color: #F6F7F8 !important;} | |||
| .bg-transparent { background-color: transparent;} | |||
| /* 边框 */ | |||
| .border { border-width: 1rpx;border-style: solid;border-color: #dee2e6;} | |||
| .border-top { | |||
| border-top-width: 1rpx; | |||
| border-top-style: solid; | |||
| border-top-color: #dee2e6; | |||
| } | |||
| .border-right { | |||
| border-right-width: 1rpx; | |||
| border-right-style: solid; | |||
| border-right-color: #dee2e6; | |||
| } | |||
| .border-bottom { | |||
| border-bottom-width: 1rpx; | |||
| border-bottom-style: solid; | |||
| border-bottom-color: #dee2e6; | |||
| } | |||
| .border-bottom-ee { | |||
| border-bottom-width: 1rpx; | |||
| border-bottom-style: solid; | |||
| border-bottom-color: #EEEEEE; | |||
| } | |||
| .border-bottom-dashed { | |||
| border-bottom-width: 2rpx; | |||
| border-bottom-style: dashed; | |||
| border-bottom-color: #F2F2F2; | |||
| } | |||
| .border-top-dashed { | |||
| border-top-width: 2rpx; | |||
| border-top-style: dashed; | |||
| border-top-color: #F2F2F2; | |||
| } | |||
| .border-left { | |||
| border-left-width: 1rpx; | |||
| border-left-style: solid; | |||
| border-left-color: #dee2e6; | |||
| } | |||
| .border-0 { border-width: 0!important;} | |||
| .border-top-0 { border-top-width: 0!important;} | |||
| .border-right-0 {border-right-width: 0!important;} | |||
| .border-bottom-0 {border-bottom-width: 0!important;} | |||
| .border-left-0 {border-left-width: 0!important;} | |||
| .border-primary { border-color: #007bff;} | |||
| .border-secondary {border-color: #6c757d;} | |||
| .border-light-secondary {border-color: #E9E8E5;} | |||
| .border-success {border-color: #28a745;} | |||
| .border-info {border-color: #17a2b8;} | |||
| .border-warning {border-color: #ffc107;} | |||
| .border-danger {border-color: #dc3545;} | |||
| .border-light {border-color: #f8f9fa;} | |||
| .border-dark {border-color: #343a40;} | |||
| .border-white {border-color: #FFFFFF;} | |||
| /* 圆角 */ | |||
| .rounded { border-radius: 8rpx;} | |||
| .rounded-top { | |||
| border-top-left-radius: 8rpx; | |||
| border-top-right-radius: 8rpx; | |||
| } | |||
| .rounded-right { | |||
| border-top-right-radius: 8rpx; | |||
| border-bottom-right-radius: 8rpx; | |||
| } | |||
| .rounded-bottom { | |||
| border-bottom-right-radius: 8rpx; | |||
| border-bottom-left-radius: 8rpx; | |||
| } | |||
| .rounded-left { | |||
| border-top-left-radius: 8rpx; | |||
| border-bottom-left-radius: 8rpx; | |||
| } | |||
| .rounded-circle { border-radius: 100rpx;} | |||
| .rounded-0 { border-radius: 0;} | |||
| /* 显示 */ | |||
| /* #ifndef APP-PLUS-NVUE */ | |||
| .d-none{ display: none; } | |||
| .d-inline-block{ display: inline-block; } | |||
| .d-block{ display: block; } | |||
| /* #endif */ | |||
| /* 内容溢出 */ | |||
| .overflow-hidden { overflow: hidden;} | |||
| /* 定位 */ | |||
| .position-relative { position: relative;} | |||
| .position-absolute { position: absolute;} | |||
| .position-fixed { position: fixed;} | |||
| /* 定位 - 固定顶部 */ | |||
| .fixed-top { | |||
| position: fixed !important; | |||
| top: 0; | |||
| right: 0; | |||
| left: 0; | |||
| z-index: 1030; | |||
| } | |||
| /* 定位 - 固定底部 */ | |||
| .fixed-bottom { | |||
| position: fixed; | |||
| right: 0; | |||
| bottom: 0; | |||
| left: 0; | |||
| z-index: 1030; | |||
| } | |||
| .top-0 { top: 0; } | |||
| .left-0 { left: 0; } | |||
| .right-0 { right: 0; } | |||
| .bottom-0 { bottom: 0; } | |||
| /* 阴影 */ | |||
| /* #ifndef APP-PLUS-NVUE */ | |||
| .shadow { box-shadow: 0 2upx 12upx rgba(0, 0, 0, 0.15);} | |||
| .shadow-lg { box-shadow: 0upx 40upx 100upx 0upx rgba(0, 0, 0, 0.175);} | |||
| .shadow-none { box-shadow: none !important;} | |||
| .shadow-sm { | |||
| box-shadow: 0 2upx 4upx rgba(114, 130, 138, 0.2)!important; | |||
| } | |||
| .shadow { | |||
| box-shadow: 0 8upx 16upx rgba(114, 130, 138, 0.2)!important; | |||
| } | |||
| .shadow-md { | |||
| box-shadow: 0 12upx 20upx rgba(114, 130, 138, 0.2)!important; | |||
| } | |||
| .shadow-lg { | |||
| box-shadow: 0 16upx 48upx rgba(114, 130, 138, 0.2)!important; | |||
| } | |||
| .shadow-qm { | |||
| box-shadow: 10rpx 10rpx 10rpx rgba(0, 0, 0, 0.02), 10rpx -10rpx 10rpx rgba(0, 0, 0, 0.02), -10rpx 10rpx 10rpx rgba(0, 0, 0, 0.02), -10rpx -10rpx 10rpx rgba(0, 0, 0, 0.02) !important; | |||
| } | |||
| /* #endif */ | |||
| .user-msg-r{ | |||
| width: 150rpx; | |||
| height: 60rpx; | |||
| background: #F0F0F7; | |||
| border-radius: 30rpx; | |||
| text-align: center; | |||
| line-height: 60rpx; | |||
| font-weight: bold; | |||
| font-size: 30rpx; | |||
| color: #0175FF; | |||
| margin-top: 13rpx; | |||
| } | |||
| @ -0,0 +1,44 @@ | |||
| html, body, div, span, applet, object, iframe, | |||
| h1, h2, h3, h4, h5, h6, p, blockquote, pre, | |||
| a, abbr, acronym, address, big, cite, code, | |||
| del, dfn, em, img, ins, kbd, q, s, samp, | |||
| small, strike, strong, sub, sup, tt, var, | |||
| b, u, i, center, | |||
| dl, dt, dd, ol, ul, li, | |||
| fieldset, form, label, legend, | |||
| table, caption, tbody, tfoot, thead, tr, th, td, | |||
| article, aside, canvas, details, embed, | |||
| figure, figcaption, footer, header, hgroup, | |||
| menu, nav, output, ruby, section, summary, | |||
| time, mark, audio, video { | |||
| margin: 0; | |||
| padding: 0; | |||
| border: 0; | |||
| font-size: 100%; | |||
| font: inherit; | |||
| vertical-align: baseline; | |||
| font-family: PingFang SC; | |||
| } | |||
| /* HTML5 display-role reset for older browsers */ | |||
| article, aside, details, figcaption, figure, | |||
| footer, header, hgroup, menu, nav, section { | |||
| display: block; | |||
| } | |||
| body { | |||
| line-height: 1; | |||
| } | |||
| ol, ul { | |||
| list-style: none; | |||
| } | |||
| blockquote, q { | |||
| quotes: none; | |||
| } | |||
| blockquote:before, blockquote:after, | |||
| q:before, q:after { | |||
| content: ''; | |||
| content: none; | |||
| } | |||
| table { | |||
| border-collapse: collapse; | |||
| border-spacing: 0; | |||
| } | |||
| @ -0,0 +1,75 @@ | |||
| /** | |||
| * 这里是uni-app内置的常用样式变量 | |||
| * | |||
| * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量 | |||
| * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App | |||
| * | |||
| */ | |||
| /** | |||
| * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能 | |||
| * | |||
| * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件 | |||
| */ | |||
| /* 颜色变量 */ | |||
| /* 行为相关颜色 */ | |||
| $uni-color-primary: #007aff; | |||
| $uni-color-success: #4cd964; | |||
| $uni-color-warning: #f0ad4e; | |||
| $uni-color-error: #dd524d; | |||
| /* 文字基本颜色 */ | |||
| $uni-text-color:#333;//基本色 | |||
| $uni-text-color-inverse:#fff;//反色 | |||
| $uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息 | |||
| $uni-text-color-placeholder: #808080; | |||
| $uni-text-color-disable:#c0c0c0; | |||
| /* 背景颜色 */ | |||
| $uni-bg-color:#ffffff; | |||
| $uni-bg-color-grey:#f8f8f8; | |||
| $uni-bg-color-hover:#f1f1f1;//点击状态颜色 | |||
| $uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色 | |||
| /* 边框颜色 */ | |||
| $uni-border-color:#c8c7cc; | |||
| /* 尺寸变量 */ | |||
| /* 文字尺寸 */ | |||
| $uni-font-size-sm:24rpx; | |||
| $uni-font-size-base:28rpx; | |||
| $uni-font-size-lg:32rpx; | |||
| /* 图片尺寸 */ | |||
| $uni-img-size-sm:40rpx; | |||
| $uni-img-size-base:52rpx; | |||
| $uni-img-size-lg:80rpx; | |||
| /* Border Radius */ | |||
| $uni-border-radius-sm: 4rpx; | |||
| $uni-border-radius-base: 6rpx; | |||
| $uni-border-radius-lg: 12rpx; | |||
| $uni-border-radius-circle: 50%; | |||
| /* 水平间距 */ | |||
| $uni-spacing-row-sm: 10px; | |||
| $uni-spacing-row-base: 20rpx; | |||
| $uni-spacing-row-lg: 30rpx; | |||
| /* 垂直间距 */ | |||
| $uni-spacing-col-sm: 8rpx; | |||
| $uni-spacing-col-base: 16rpx; | |||
| $uni-spacing-col-lg: 24rpx; | |||
| /* 透明度 */ | |||
| $uni-opacity-disabled: 0.3; // 组件禁用态的透明度 | |||
| /* 文章场景相关 */ | |||
| $uni-theme-color: #0175FF; | |||
| $uni-text-color: #FF0000; | |||
| @import 'uview-ui/theme.scss'; | |||