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

296 lines
5.4 KiB

6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
  1. <template>
  2. <!-- 会员充值 -->
  3. <view class="page">
  4. <navbar title="会员充值" bgColor="#3796F8" leftClick color="#fff" @leftClick="$utils.navigateBack" />
  5. <view class="head">
  6. <view class="headImage">
  7. <image :src="headImage" mode="aspectFill"></image>
  8. </view>
  9. <view class="info">
  10. <view class="name">
  11. 倾心.
  12. <view>
  13. <uv-icon name="edit-pen" size="40rpx" color="#fff"></uv-icon>
  14. 修改资料
  15. </view>
  16. </view>
  17. <view class="tips">
  18. 手机号1300000000
  19. </view>
  20. </view>
  21. </view>
  22. <view class="openvip">开通VIP</view>
  23. <view class="options">
  24. <view
  25. @click="vipId = item.id"
  26. :class="{option : true, act : vipId == item.id}"
  27. v-for="(item,index) in list" :key="index">
  28. <view style="font-weight: 600;">{{ item.name }}</view>
  29. <view style="color: #FF2E2E;">
  30. <text style="font-size: 20rpx;"></text>
  31. <text style="font-size: 36rpx;">{{ item.price }}</text>
  32. </view>
  33. <view>{{ item.remark }}</view>
  34. </view>
  35. </view>
  36. <view class="block" v-if="vip.id">
  37. <view class="privilege">{{ vip.name }}</view>
  38. <view class="cells">
  39. <view class="cell"
  40. v-for="(item, index) in vip.keys">
  41. <image src="../static/mine/characteristic.png" mode="aspectFill" />
  42. <view class="text">
  43. <view>{{ item[0] }}</view>
  44. <view style="font-size: 24rpx;">{{ item[1] }}</view>
  45. </view>
  46. </view>
  47. <!-- <view class="cell">
  48. <image src="../static/mine/integral.png" mode="aspectFill" />
  49. <view class="text">
  50. <view>特权二</view>
  51. <view style="font-size: 24rpx;">快速发布优先审核</view>
  52. </view>
  53. </view> -->
  54. </view>
  55. <view class="tail">
  56. <view>
  57. <uv-radio-group v-model="radiovalue">
  58. <uv-radio size="30rpx">
  59. </uv-radio>
  60. </uv-radio-group>
  61. </view>
  62. <view>开通前请阅读会员服务协议</view>
  63. </view>
  64. </view>
  65. <view class="confirm">
  66. <view class="box">
  67. <view>
  68. 总计金额{{ vip.price }}
  69. </view>
  70. <view>
  71. 确认协议并支付
  72. </view>
  73. </view>
  74. </view>
  75. </view>
  76. </template>
  77. <script>
  78. import mixinList from '@/mixins/list.js'
  79. import { mapState } from 'vuex'
  80. export default {
  81. mixins : [mixinList],
  82. data() {
  83. return {
  84. radiovalue: false,
  85. mixinsListApi : 'commonQueryVipType',
  86. vipId : ''
  87. }
  88. },
  89. computed: {
  90. headImage() {
  91. return '/static/image/center/headImage.png'
  92. },
  93. ...mapState([
  94. 'role',
  95. ]),
  96. vip(){
  97. let vip = {}
  98. this.list.forEach(n => {
  99. if(n.id == this.vipId){
  100. let keys = n.perquisite.split('##')
  101. keys.forEach((s, i) => {
  102. keys[i] = s.split('$$')
  103. })
  104. n.keys = keys
  105. vip = n
  106. }
  107. })
  108. return vip
  109. },
  110. },
  111. methods: {
  112. submit(){
  113. },
  114. getDataThen(list){
  115. this.vipId = list[0] && list[0].id
  116. },
  117. },
  118. }
  119. </script>
  120. <style scoped lang="scss">
  121. .page {
  122. background-color: #fff;
  123. height: 100vh;
  124. .head {
  125. display: flex;
  126. background-color: $uni-color;
  127. padding: 40rpx 20rpx;
  128. align-items: center;
  129. position: relative;
  130. color: #fff;
  131. padding-bottom: 70rpx;
  132. .headImage {
  133. width: 120rpx;
  134. height: 120rpx;
  135. background-size: 100% 100%;
  136. overflow: hidden;
  137. border-radius: 50%;
  138. margin-right: 40rpx;
  139. image {
  140. height: 100%;
  141. width: 100%;
  142. }
  143. }
  144. .info {
  145. font-size: 28rpx;
  146. .name {
  147. font-size: 32rpx;
  148. display: flex;
  149. padding-bottom: 10rpx;
  150. view {
  151. display: flex;
  152. font-size: 20rpx;
  153. align-items: center;
  154. padding-left: 20rpx;
  155. }
  156. }
  157. .tips {
  158. font-size: 26rpx;
  159. color: #fff;
  160. }
  161. }
  162. }
  163. .openvip {
  164. width: 100%;
  165. text-align: center;
  166. padding: 40rpx 0;
  167. font-size: 36rpx;
  168. font-weight: 500;
  169. }
  170. .options {
  171. display: flex;
  172. flex-wrap: wrap;
  173. .option {
  174. display: flex;
  175. justify-content: center;
  176. align-items: center;
  177. flex-direction: column;
  178. border: 2rpx solid #3796F8;
  179. width: 220rpx;
  180. height: 240rpx;
  181. border-radius: 16rpx;
  182. box-sizing: border-box;
  183. margin: 12rpx;
  184. view {
  185. margin-top: 15rpx;
  186. font-size: 28rpx;
  187. }
  188. }
  189. .act{
  190. border: 4rpx solid $uni-color;
  191. box-shadow: 0 0 10rpx 10rpx rgba($uni-color, 0.2);
  192. }
  193. }
  194. .block {
  195. width: 90%;
  196. margin-left: 5%;
  197. .privilege {
  198. font-size: 34rpx;
  199. padding: 60rpx 0rpx 40rpx;
  200. }
  201. .cells {
  202. display: flex;
  203. flex-direction: column;
  204. .cell {
  205. display: flex;
  206. align-items: center;
  207. margin: 20rpx 0;
  208. .text {
  209. margin-left: 20rpx;
  210. color: #707070;
  211. font-size: 28rpx;
  212. }
  213. image {
  214. height: 70rpx;
  215. width: 70rpx;
  216. }
  217. }
  218. }
  219. .tail {
  220. display: flex;
  221. align-items: center;
  222. margin-top: 30rpx;
  223. view:nth-child(2) {
  224. margin-left: 10rpx;
  225. color: #707070;
  226. font-size: 24rpx;
  227. }
  228. }
  229. }
  230. .confirm {
  231. display: flex;
  232. position: fixed;
  233. bottom: 0px;
  234. width: 100%;
  235. justify-content: center;
  236. align-items: center;
  237. padding: 8rpx 0;
  238. box-shadow: 0 -2rpx 6rpx 0 #d9d9d9 ;
  239. .box {
  240. display: flex;
  241. align-items: center;
  242. justify-content: space-between;
  243. width: 92%;
  244. font-size: 28rpx;
  245. view:nth-child(1) {
  246. color: #999999;
  247. }
  248. view:nth-child(2) {
  249. padding: 25rpx 60rpx;
  250. color: #FFFFFF;
  251. background-color: #3796F8;
  252. border-radius: 12rpx;
  253. }
  254. view:nth-child(1) {
  255. color: #999999;
  256. }
  257. }
  258. }
  259. }
  260. </style>