特易招,招聘小程序
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

11 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
11 months ago
11 months ago
10 months ago
11 months ago
10 months ago
11 months ago
10 months ago
11 months ago
10 months ago
11 months ago
10 months ago
11 months ago
10 months ago
10 months ago
10 months ago
10 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>