|
|
- <template>
- <view class="page__view">
- <navbar title="选择角色" leftClick @leftClick="$utils.navigateBack" bgColor="transparent" color="#191919" />
-
- <view class="main">
- <view class="card">
- <view class="card-header">角色信息</view>
- <view class="card-content">
- <uv-radio-group
- v-model="role"
- placement="column"
- size="36rpx"
- iconSize="36rpx"
- activeColor="#00A9FF"
- >
- <view class="flex option" v-for="item in roleOptions" :key="item.id" @click="onSelect(item.value)">
- <view>
- <uv-radio :name="item.value"></uv-radio>
- </view>
- <view>{{ item.label }}</view>
- </view>
-
- </uv-radio-group>
- </view>
- </view>
- </view>
-
- <view class="flex bottom">
- <view class="flex bar">
- <button class="btn" @click="onConfirm">确定</button>
- </view>
- </view>
- </view>
- </template>
-
- <script>
- export default {
- data() {
- return {
- role: null,
- roleOptions: [],
- }
- },
- onLoad() {
- this.roleOptions = [
- { id: '001', label: '家长', value: '0' },
- { id: '002', label: '学生', value: '1' },
- ]
- this.role = this.roleOptions[0].value
- },
- methods: {
- onSelect(val) {
- this.role = val
- },
- async onConfirm() {
- try {
- const {
- nickName,
- phone,
- } = this.userInfo
-
- const params = {
- nickName,
- phone,
- role: this.role
- }
-
- await this.$fetch('updateInfo', params, false)
-
- uni.showToast({
- icon: 'success',
- title: '保存成功',
- });
-
- this.$store.commit('getUserInfo')
-
- setTimeout(() => {
- uni.reLaunch({
- url:'/pages/index/index'
- })
- }, 800)
- } catch (err) {
-
- }
-
- },
- },
- }
- </script>
-
- <style scoped lang="scss">
- .page__view {
- background-image: linear-gradient(#DAF3FF, #F3F3F3 200rpx, #F3F3F3);
- }
-
- .main {
- padding: 24rpx 40rpx;
- }
-
- .card {
- width: 100%;
- height: 100%;
- padding: 32rpx 32rpx 450rpx 32rpx;
- box-sizing: border-box;
- background: #FFFFFF;
- border-radius: 24rpx;
-
- &-header {
- font-size: 32rpx;
- font-weight: 500;
- color: #181818;
- }
-
- }
-
- .option {
- margin-top: 32rpx;
- width: 100%;
- height: 252rpx;
- justify-content: flex-start;
- column-gap: 24rpx;
- padding: 24rpx;
- box-sizing: border-box;
- background: #F5F8FF;
- border-radius: 24rpx;
-
- &:nth-child(2n) {
- background: #F9F9F9;
- }
- }
-
- .bottom {
- position: fixed;
- left: 0;
- bottom: 0;
- width: 100vw;
- height: 146rpx;
- padding-bottom: env(safe-area-inset-bottom);
- background: #FFFFFF;
-
- .bar {
- width: 100%;
- padding: 0 40rpx;
- box-sizing: border-box;
- }
-
- .btn {
- width: 100%;
- padding: 16rpx 0;
- box-sizing: border-box;
- font-size: 36rpx;
- color: #FFFFFF;
- background-image: linear-gradient(to right, #21FEEC, #019AF9);
- border: 2rpx solid $uni-color;
- border-radius: 42rpx;
- }
- }
- </style>
|