hookehuyr

✨ feat: 用户资料页面API联调

1 <!-- 1 <!--
2 * @Date: 2022-09-29 16:32:03 2 * @Date: 2022-09-29 16:32:03
3 * @LastEditors: hookehuyr hookehuyr@gmail.com 3 * @LastEditors: hookehuyr hookehuyr@gmail.com
4 - * @LastEditTime: 2022-10-21 18:18:46 4 + * @LastEditTime: 2022-10-24 16:48:30
5 * @FilePath: /swx/src/pages/userInfo/index.vue 5 * @FilePath: /swx/src/pages/userInfo/index.vue
6 * @Description: 用户资料 6 * @Description: 用户资料
7 --> 7 -->
8 <template> 8 <template>
9 <view class="user-info-page"> 9 <view class="user-info-page">
10 - <view class="bg-header"> 10 + <view id="top-header" class="bg-header">
11 <view style="height: 4rem; padding: 1rem;"> 11 <view style="height: 4rem; padding: 1rem;">
12 <van-row> 12 <van-row>
13 <van-col span="17"> 13 <van-col span="17">
...@@ -49,61 +49,49 @@ ...@@ -49,61 +49,49 @@
49 </view> 49 </view>
50 </view> 50 </view>
51 <view class="list-wrapper" style="margin: 1rem;"> 51 <view class="list-wrapper" style="margin: 1rem;">
52 - <view style="background-color: white; border-radius: 0.65rem; padding: 1rem;overflow: auto; margin-bottom: 1px;"> 52 + <view id="list-header" style="background-color: white; border-radius: 0.65rem; padding: 1rem;overflow: auto; margin-bottom: 1px;">
53 <view style="display: inline-block; margin-right: 1rem; line-height: 60rpx;"> 53 <view style="display: inline-block; margin-right: 1rem; line-height: 60rpx;">
54 <view class="bg-gradient" style="font-size: 1.15rem;">陪伴记录</view> 54 <view class="bg-gradient" style="font-size: 1.15rem;">陪伴记录</view>
55 </view> 55 </view>
56 - <view @tap="show_status_popup=true" style="float: right; color: #FFFFFF; font-size: 0.9rem; border-radius: 1rem; padding: 0.3rem 1rem 0.3rem 1rem; background-color: #199A74;"> 56 + <view @tap="show_partner_popup=true" style="float: right; color: #FFFFFF; font-size: 0.9rem; border-radius: 1rem; padding: 0.3rem 1rem 0.3rem 1rem; background-color: #199A74;">
57 - &nbsp;{{ status_type === '' ? '全部' : status_type }}&nbsp;&nbsp; 57 + &nbsp;{{ partner === '' ? '全部' : partner }}&nbsp;&nbsp;
58 <van-icon :name="icon_sel3" size="0.8rem" color="" style="vertical-align: middle;" /> 58 <van-icon :name="icon_sel3" size="0.8rem" color="" style="vertical-align: middle;" />
59 </view> 59 </view>
60 <view style="float: right; margin-top: 0.25rem;"> 60 <view style="float: right; margin-top: 0.25rem;">
61 陪伴者: 61 陪伴者:
62 </view> 62 </view>
63 </view> 63 </view>
64 - <view> 64 + <view id="partner-list">
65 - <view style="background-color: white; padding: 1rem; border-radius: 1rem; margin-bottom: 1rem;"> 65 + <view v-for="(item, index) in partner_list" :key="index" style="background-color: white; padding: 1rem; border-radius: 1rem; margin-bottom: 1rem;">
66 - <view style="overflow: auto;">
67 - <view style="float: left; font-size: 1.15rem;">
68 - <text style="color: #999999;">状态:</text><text style="color: #199A74;">跟进</text>
69 - </view>
70 - <view style="float: right; margin-top: 0.2rem; font-size: 0.9rem; color: #222222;">
71 - 净弘 2022-08-11 14:22
72 - </view>
73 - </view>
74 - <view style="margin-top: 1rem;">
75 - 对比上次净妙这次参与活动明显的能够融入进去了,与其他学员间的交流也比较多了,期待越来越好!
76 - </view>
77 - </view>
78 - <view style="background-color: white; padding: 1rem; border-radius: 1rem; margin-bottom: 1rem;">
79 <view style="overflow: auto;"> 66 <view style="overflow: auto;">
80 <view style="float: left; font-size: 1.15rem;"> 67 <view style="float: left; font-size: 1.15rem;">
81 - <text style="color: #999999;">状态:</text><text style="color: #199A74;">跟进</text> 68 + <text style="color: #999999;">状态:</text><text style="color: #199A74;">{{ item.status }}</text>
82 </view> 69 </view>
83 <view style="float: right; margin-top: 0.2rem; font-size: 0.9rem; color: #222222;"> 70 <view style="float: right; margin-top: 0.2rem; font-size: 0.9rem; color: #222222;">
84 - 净弘 2022-08-11 14:22 71 + {{ item.created_by_name }} {{ formatDate(item.created_time) }}
85 </view> 72 </view>
86 </view> 73 </view>
87 <view style="margin-top: 1rem;"> 74 <view style="margin-top: 1rem;">
88 - 对比上次净妙这次参与活动明显的能够融入进去了,与其他学员间的交流也比较多了,期待越来越好! 75 + {{ item.note }}
89 </view> 76 </view>
90 </view> 77 </view>
91 </view> 78 </view>
79 + <view style="height: 6rem;"></view>
92 </view> 80 </view>
93 - <view style="height: 2rem;"></view>
94 <bottom-button @on-submit="onSubmit">添加记录</bottom-button> 81 <bottom-button @on-submit="onSubmit">添加记录</bottom-button>
95 82
96 </view> 83 </view>
97 84
98 <!-- 切换状态弹出框 --> 85 <!-- 切换状态弹出框 -->
99 - <van-popup :show="show_status_popup" position="bottom" custom-style="height: 40%;" :lock-scroll="true"> 86 + <van-popup :show="show_partner_popup" position="bottom" custom-style="height: 50%;" :lock-scroll="true">
100 - <van-picker :show-toolbar="true" title="" confirm-button-text="确定" :columns="status_type_columns" 87 + <van-picker :show-toolbar="true" title="" confirm-button-text="确定" :columns="partner_columns"
101 - toolbar-class="picker-toolbar" @confirm="onStatusTypeConfirm" @cancel="onStatusTypeCancel" @change="onStatusTypeChange" /> 88 + :default-index="partner_index"
89 + toolbar-class="picker-toolbar" @confirm="onPartnerConfirm" @cancel="onPartnerCancel" />
102 </van-popup> 90 </van-popup>
103 </template> 91 </template>
104 92
105 <script setup> 93 <script setup>
106 -import { ref } from "vue"; 94 +import { ref, getCurrentInstance, onMounted } from "vue";
107 import icon_vip from '@/images/icon/vip@2x.png' 95 import icon_vip from '@/images/icon/vip@2x.png'
108 import Taro from '@tarojs/taro' 96 import Taro from '@tarojs/taro'
109 import { AtAvatar } from 'taro-ui-vue3' 97 import { AtAvatar } from 'taro-ui-vue3'
...@@ -112,31 +100,16 @@ import icon_join from '@/images/icon/baoming@2x.png' ...@@ -112,31 +100,16 @@ import icon_join from '@/images/icon/baoming@2x.png'
112 import icon_sel3 from '@/images/icon/sel03@2x.png' 100 import icon_sel3 from '@/images/icon/sel03@2x.png'
113 import bottomButton from "@/components/bottom-button"; 101 import bottomButton from "@/components/bottom-button";
114 102
115 -const show_status_popup = ref(false); 103 +const internalInstance = getCurrentInstance();
116 -const status_type = ref('');
117 -const status_type_columns = ref(['净弘']);
118 -const onStatusTypeChange = (event) => {
119 - const { picker, value, index } = event.detail;
120 -}
121 -const onStatusTypeConfirm = (event) => {
122 - const { picker, value, index } = event.detail;
123 - show_status_popup.value = false;
124 - status_type.value = value;
125 - console.warn('查询新数据');
126 -}
127 -const onStatusTypeCancel = (event) => {
128 - show_status_popup.value = false;
129 -}
130 -
131 const editInfo = (val) => { 104 const editInfo = (val) => {
132 Taro.navigateTo({ 105 Taro.navigateTo({
133 - url: '../editInfo/index' 106 + url: '../editInfo/index?member_id=' + getCurrentPageParam().member_id + '&host_id=' + internalInstance.data.host_id
134 }) 107 })
135 } 108 }
136 109
137 const onSubmit = (val) => { 110 const onSubmit = (val) => {
138 Taro.navigateTo({ 111 Taro.navigateTo({
139 - url: '../addRecord/index' 112 + url: '../addRecord/index?id=' + internalInstance.data.id + '&host_id=' + internalInstance.data.host_id + '&name=' + JSON.stringify(internalInstance.data.name)
140 }) 113 })
141 } 114 }
142 </script> 115 </script>
...@@ -145,9 +118,12 @@ const onSubmit = (val) => { ...@@ -145,9 +118,12 @@ const onSubmit = (val) => {
145 import "./index.less"; 118 import "./index.less";
146 import { infoMemberAPI } from '@/api/Member/index'; 119 import { infoMemberAPI } from '@/api/Member/index';
147 import { getCurrentPageParam } from "@/utils/weapp"; 120 import { getCurrentPageParam } from "@/utils/weapp";
121 +import mixin from '@/utils/mixin';
122 +import * as dayjs from 'dayjs'
148 123
149 export default { 124 export default {
150 name: "userInfoPage", 125 name: "userInfoPage",
126 + mixins: [mixin.init],
151 data () { 127 data () {
152 return { 128 return {
153 avatar: '', 129 avatar: '',
...@@ -155,6 +131,16 @@ export default { ...@@ -155,6 +131,16 @@ export default {
155 reg_count: '', 131 reg_count: '',
156 age_group: '', 132 age_group: '',
157 gender: '', 133 gender: '',
134 + id: '',
135 + host_id: '',
136 + phone: '',
137 + partner_list: [],
138 + partner_user_list: [],
139 + show_partner_popup: false,
140 + partner: '',
141 + partner_id: '',
142 + partner_columns: [],
143 + partner_index: 0
158 } 144 }
159 }, 145 },
160 async onShow () { 146 async onShow () {
...@@ -165,6 +151,38 @@ export default { ...@@ -165,6 +151,38 @@ export default {
165 this.reg_count = data.reg_count; 151 this.reg_count = data.reg_count;
166 this.age_group = data.member.age_group; 152 this.age_group = data.member.age_group;
167 this.gender = data.member.gender === 'man' ? '男士' : '女士'; 153 this.gender = data.member.gender === 'man' ? '男士' : '女士';
154 + this.id = data.member.id;
155 + this.host_id = data.member.host_id;
156 + this.phone = data.member.phone;
157 + this.partner_list = data.partner_list;
158 + // 生成陪伴者显示列表
159 + const user_list = [];
160 + data.partner_user_list.forEach(item => {
161 + user_list.push({
162 + text: item.name,
163 + key: item.user_id,
164 + })
165 + });
166 + this.partner_columns = [{ text: '全部', key: '' }, ...user_list];
167 + }
168 + },
169 + methods: {
170 + async onPartnerConfirm (event) {
171 + const { picker, value, index } = event.detail;
172 + this.show_partner_popup = false;
173 + this.partner_id = value.key;
174 + this.partner = value.text;
175 + //
176 + const { code, data } = await infoMemberAPI({ i: getCurrentPageParam().member_id, created_by: this.partner_id });
177 + if (code) {
178 + this.partner_list = data.partner_list;
179 + }
180 + },
181 + onPartnerCancel (event) {
182 + this.show_partner_popup = false;
183 + },
184 + formatDate (date) {
185 + return dayjs(date).format('YYYY-MM-DD HH:mm')
168 } 186 }
169 } 187 }
170 }; 188 };
......